{"_id":"@fingerprintiq/js","_rev":"7-4da50ecb1db3e585bcdbe0d70fac4d51","name":"@fingerprintiq/js","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@fingerprintiq/js","version":"0.1.0","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection"],"author":{"url":"https://fingerprintiq.com","name":"FingerprintIQ","email":"hello@fingerprintiq.com"},"license":"MIT","_id":"@fingerprintiq/js@0.1.0","maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"homepage":"https://fingerprintiq.com","bugs":{"url":"https://github.com/seangeng/fingerprintiq/issues"},"dist":{"shasum":"9cee7ace4e02117320874144666a403ab5f22a77","tarball":"https://registry.npmjs.org/@fingerprintiq/js/-/js-0.1.0.tgz","fileCount":11,"integrity":"sha512-gFDyC0SQCPk1E3GBzsabMd7eVKJ2Q5FOm792IbbHUdbhcKOtZ076k4IuuPhYoKetGyUJoEH0shdPdDOwuHBXKg==","signatures":[{"sig":"MEUCIQDAMHQeXfwr+rBbo14Mx+t8nCDIfPUMrzNY44Ya83XVkwIgCprCJbhqDiuufJ5rUR2LKIybh+3B3p9dMKW9iiIk/MQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":857387},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"acc673d42b17aaa55cbc50e0b6936de46e04bbcc","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"seangeng","email":"seangeng94@gmail.com"},"repository":{"url":"git+https://github.com/seangeng/fingerprintiq.git","type":"git","directory":"sdk"},"_npmVersion":"11.11.1","description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","directories":{},"_nodeVersion":"25.8.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.1.0","typescript":"^5.8.0"},"_npmOperationalInternal":{"tmp":"tmp/js_0.1.0_1775867693559_0.3890109878475274","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@fingerprintiq/js","version":"0.2.0","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection"],"author":{"url":"https://fingerprintiq.com","name":"FingerprintIQ","email":"hello@fingerprintiq.com"},"license":"MIT","_id":"@fingerprintiq/js@0.2.0","maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"homepage":"https://fingerprintiq.com","bugs":{"url":"https://github.com/seangeng/fingerprintiq/issues"},"dist":{"shasum":"8f7095b7ba1cae75dd47e755ca645a89790f6472","tarball":"https://registry.npmjs.org/@fingerprintiq/js/-/js-0.2.0.tgz","fileCount":11,"integrity":"sha512-Hp6ipYfhU8z95TePGIAHsyZVShUE71WpFYDafVDZlSks31udMHN+1PcNgOMCLRV/3dtykVjjVRNAlZfdvzpkPA==","signatures":[{"sig":"MEYCIQCY1SgPwmGfTbJwsml97yah2D5YlXKQiQiKE1MLLOZABwIhAMWoe3oiVGE/7ZA85w0NRe2+t5SwczRhs1zvYjY9hbM4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":883463},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8840382ae55049ff2aa678663f98e1580e25570a","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"seangeng","email":"seangeng94@gmail.com"},"repository":{"url":"git+https://github.com/seangeng/fingerprintiq.git","type":"git","directory":"sdk"},"_npmVersion":"11.11.1","description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","directories":{},"_nodeVersion":"25.8.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.1.0","typescript":"^5.8.0"},"_npmOperationalInternal":{"tmp":"tmp/js_0.2.0_1775921994528_0.5664067086109756","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@fingerprintiq/js","version":"0.2.1","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection"],"author":{"url":"https://fingerprintiq.com","name":"FingerprintIQ","email":"hello@fingerprintiq.com"},"license":"MIT","_id":"@fingerprintiq/js@0.2.1","maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"homepage":"https://fingerprintiq.com","bugs":{"url":"https://github.com/seangeng/fingerprintiq/issues"},"dist":{"shasum":"5d7b288bb98031fe228e38f47ec9a8ffd8526291","tarball":"https://registry.npmjs.org/@fingerprintiq/js/-/js-0.2.1.tgz","fileCount":11,"integrity":"sha512-aSHAP/JF8hok8o20NNahUIaMfpJJ6Ud1fkCkhuWg4bxZGVIvTNMsV6G8ewqr4VecQmxt3NqrixAwXA5r+61uqw==","signatures":[{"sig":"MEYCIQCg3M82wcUC2whAbDnHRoDHTmeyryT9esOpiLX8gPDwagIhALx9RcPqOX4D3hlql4A5AWnqjxApfY/bLisdNXjZXjHm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":880968},"main":"./dist/index.cjs","type":"module","_from":"file:fingerprintiq-js-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"seangeng","email":"seangeng94@gmail.com"},"_resolved":"/private/var/folders/jj/8d8lqqz93pngs_y8h_shc5s80000gn/T/536b6384c93f756b20d5b0f79d67c56c/fingerprintiq-js-0.2.1.tgz","_integrity":"sha512-aSHAP/JF8hok8o20NNahUIaMfpJJ6Ud1fkCkhuWg4bxZGVIvTNMsV6G8ewqr4VecQmxt3NqrixAwXA5r+61uqw==","repository":{"url":"git+https://github.com/seangeng/fingerprintiq.git","type":"git","directory":"sdk"},"_npmVersion":"11.9.0","description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","directories":{},"_nodeVersion":"25.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.1.0","typescript":"^5.8.0"},"_npmOperationalInternal":{"tmp":"tmp/js_0.2.1_1775935254740_0.8532667729180723","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@fingerprintiq/js","version":"0.3.0","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection","react","vue","nextjs"],"author":{"url":"https://fingerprintiq.com","name":"FingerprintIQ","email":"hello@fingerprintiq.com"},"license":"MIT","_id":"@fingerprintiq/js@0.3.0","maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"homepage":"https://fingerprintiq.com","bugs":{"url":"https://github.com/seangeng/fingerprintiq/issues"},"dist":{"shasum":"6c97c53d30b38d6ab1c9fbc9a728f71443ff908b","tarball":"https://registry.npmjs.org/@fingerprintiq/js/-/js-0.3.0.tgz","fileCount":35,"integrity":"sha512-glr9YBsedAUQ3d+5+H94iPKCjAUhHZe/8tSdbl5Yh4NOsYUui0/OdauLwBQa/xwotTTQRlCUBZMnrgoG+FCN7g==","signatures":[{"sig":"MEQCIGixZxdxl4vDr82Ra+nn/R6ck7m3jkR68xhZBfQb0JE3AiB0C9Xx60nveRQKBlSsW2YTJ+OzOfWQODfQck+6wtv+1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2030889},"main":"./dist/index.cjs","type":"module","_from":"file:fingerprintiq-js-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./next":{"types":"./dist/next/index.d.ts","import":"./dist/next/index.js","require":"./dist/next/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"seangeng","email":"seangeng94@gmail.com"},"_resolved":"/private/var/folders/jj/8d8lqqz93pngs_y8h_shc5s80000gn/T/a4a7bc174ad052be8c49e8be5301f467/fingerprintiq-js-0.3.0.tgz","_integrity":"sha512-glr9YBsedAUQ3d+5+H94iPKCjAUhHZe/8tSdbl5Yh4NOsYUui0/OdauLwBQa/xwotTTQRlCUBZMnrgoG+FCN7g==","repository":{"url":"git+https://github.com/seangeng/fingerprintiq.git","type":"git","directory":"sdk"},"_npmVersion":"11.9.0","description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","directories":{},"_nodeVersion":"25.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.32","tsup":"^8.4.0","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.1.0","react-dom":"^19.2.5","typescript":"^5.8.0","@types/react":"^19.2.14","@vue/test-utils":"^2.4.6","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2"},"peerDependencies":{"vue":">=3.0.0","react":">=16.8.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/js_0.3.0_1776109634080_0.5809310065428515","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@fingerprintiq/js","version":"0.3.1","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection","react","vue","nextjs"],"author":{"url":"https://fingerprintiq.com","name":"FingerprintIQ","email":"hello@fingerprintiq.com"},"license":"MIT","_id":"@fingerprintiq/js@0.3.1","maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"homepage":"https://fingerprintiq.com","bugs":{"url":"https://github.com/fingerprintiq/js/issues"},"dist":{"shasum":"198508fe7badb3e3bb060e517d337c8b2b21b3fc","tarball":"https://registry.npmjs.org/@fingerprintiq/js/-/js-0.3.1.tgz","fileCount":35,"integrity":"sha512-YVMPPxGToNwkHqbPNSBK1x2xUHOHyC1CQEMq9QnZgrhIBIkrZF2nxLTIB4CVjdGA5hu5qYeOtPaYnMbASFo7BQ==","signatures":[{"sig":"MEQCIEk/m/UdVBU8uqa8slVZ7JUXCinUrxsciHx6mT3uAskEAiBG3KtKiOQMuTsp7NdC0bAVma6dSIxveVOcnv/XsK0bcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2036399},"main":"./dist/index.cjs","type":"module","_from":"file:fingerprintiq-js-0.3.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./next":{"types":"./dist/next/index.d.ts","import":"./dist/next/index.js","require":"./dist/next/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"seangeng","email":"seangeng94@gmail.com"},"_resolved":"/private/var/folders/jj/8d8lqqz93pngs_y8h_shc5s80000gn/T/2fffbb14a1b443422f65fec35abc0bc6/fingerprintiq-js-0.3.1.tgz","_integrity":"sha512-YVMPPxGToNwkHqbPNSBK1x2xUHOHyC1CQEMq9QnZgrhIBIkrZF2nxLTIB4CVjdGA5hu5qYeOtPaYnMbASFo7BQ==","repository":{"url":"git+https://github.com/fingerprintiq/js.git","type":"git"},"_npmVersion":"11.9.0","description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","directories":{},"_nodeVersion":"25.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.32","tsup":"^8.4.0","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.1.0","react-dom":"^19.2.5","typescript":"^5.8.0","@types/react":"^19.2.14","@vue/test-utils":"^2.4.6","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2"},"peerDependencies":{"vue":">=3.0.0","react":">=16.8.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/js_0.3.1_1776202247496_0.9063188878223736","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@fingerprintiq/js","version":"0.4.0","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection","react","vue","nextjs"],"author":{"url":"https://fingerprintiq.com","name":"FingerprintIQ","email":"hello@fingerprintiq.com"},"license":"MIT","_id":"@fingerprintiq/js@0.4.0","maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"homepage":"https://fingerprintiq.com","bugs":{"url":"https://github.com/fingerprintiq/js/issues"},"dist":{"shasum":"f139f5910ad082ed3b76f0f236b4e00c9ee4cc96","tarball":"https://registry.npmjs.org/@fingerprintiq/js/-/js-0.4.0.tgz","fileCount":35,"integrity":"sha512-cwZTnYSijOdyBz5hi3vKeSfB/BOiZuW64zcQWFX9XJFWxttthV/F7ClntHa6t9Ezj2Oqcq1+joWaEPMCeTzOdg==","signatures":[{"sig":"MEQCIHSuJu/alfZyEK4lg6hYz1O9R0EhQiyNbO12wmAJMII1AiBOgryxQUByR3DGAQoejbSxtb9LC9nnHpDiKkag3Llw/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2074922},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./next":{"types":"./dist/next/index.d.ts","import":"./dist/next/index.js","require":"./dist/next/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"eb8844141fce203683d225d86ae893bb636b2e8b","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"seangeng","email":"seangeng94@gmail.com"},"repository":{"url":"git+https://github.com/fingerprintiq/js.git","type":"git"},"_npmVersion":"11.9.0","description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","directories":{},"_nodeVersion":"25.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.32","tsup":"^8.4.0","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.1.0","react-dom":"^19.2.5","typescript":"^5.8.0","@types/react":"^19.2.14","@vue/test-utils":"^2.4.6","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2"},"peerDependencies":{"vue":">=3.0.0","react":">=16.8.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/js_0.4.0_1776212318253_0.22452270126960028","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@fingerprintiq/js","version":"0.5.0","description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","license":"MIT","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./next":{"types":"./dist/next/index.d.ts","import":"./dist/next/index.js","require":"./dist/next/index.cjs"}},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection","react","vue","nextjs"],"author":{"name":"FingerprintIQ","email":"hello@fingerprintiq.com","url":"https://fingerprintiq.com"},"homepage":"https://fingerprintiq.com","repository":{"type":"git","url":"git+https://github.com/fingerprintiq/js.git"},"bugs":{"url":"https://github.com/fingerprintiq/js/issues"},"publishConfig":{"access":"public"},"peerDependencies":{"react":">=16.8.0","vue":">=3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"vue":{"optional":true}},"devDependencies":{"@testing-library/react":"^16.3.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vue/test-utils":"^2.4.6","jsdom":"^26.1.0","react":"^19.2.5","react-dom":"^19.2.5","tsup":"^8.4.0","typescript":"^5.8.0","vitest":"^3.1.0","vue":"^3.5.32"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit","test":"vitest run"},"_id":"@fingerprintiq/js@0.5.0","_integrity":"sha512-8TNTmScakVbxwEMX7f01omakbrZ101SSPqG1HmQq4dE4b0VCAqyfcWDaW9zqL5BZ64kKVkfsVLt7+CAMy4EH2Q==","_resolved":"/private/var/folders/jj/8d8lqqz93pngs_y8h_shc5s80000gn/T/def40349be7fc8a4f74dd4893d3b81cb/fingerprintiq-js-0.5.0.tgz","_from":"file:fingerprintiq-js-0.5.0.tgz","_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-8TNTmScakVbxwEMX7f01omakbrZ101SSPqG1HmQq4dE4b0VCAqyfcWDaW9zqL5BZ64kKVkfsVLt7+CAMy4EH2Q==","shasum":"0defa966cf8dc0fc10a4c30f6c3d5b97c40a2dbd","tarball":"https://registry.npmjs.org/@fingerprintiq/js/-/js-0.5.0.tgz","fileCount":35,"unpackedSize":2141723,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC7eHNa57xGYDBmTtKcrymGLkvYy76fBV1Urop+IJmwXQIgJyu1fj10ifLwWUPMeQhktrpcbxtdEK5WE/ukSSoBvfs="}]},"_npmUser":{"name":"seangeng","email":"seangeng94@gmail.com"},"directories":{},"maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/js_0.5.0_1777472437602_0.050610620193803246"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-11T00:34:53.457Z","modified":"2026-04-29T14:20:37.962Z","0.1.0":"2026-04-11T00:34:53.796Z","0.2.0":"2026-04-11T15:39:54.735Z","0.2.1":"2026-04-11T19:20:54.950Z","0.3.0":"2026-04-13T19:47:14.283Z","0.3.1":"2026-04-14T21:30:47.779Z","0.4.0":"2026-04-15T00:18:38.500Z","0.5.0":"2026-04-29T14:20:37.825Z"},"bugs":{"url":"https://github.com/fingerprintiq/js/issues"},"author":{"name":"FingerprintIQ","email":"hello@fingerprintiq.com","url":"https://fingerprintiq.com"},"license":"MIT","homepage":"https://fingerprintiq.com","keywords":["fingerprint","browser-fingerprint","device-id","bot-detection","fraud-prevention","visitor-identification","web3","sybil-detection","react","vue","nextjs"],"repository":{"type":"git","url":"git+https://github.com/fingerprintiq/js.git"},"description":"Browser fingerprinting SDK — identify visitors with 99%+ accuracy using 41 client signals fused with server-side TLS/JA4 analysis","maintainers":[{"name":"seangeng","email":"seangeng94@gmail.com"}],"readme":"# @fingerprintiq/js\n\n[![npm](https://img.shields.io/npm/v/@fingerprintiq/js.svg)](https://www.npmjs.com/package/@fingerprintiq/js)\n[![npm downloads](https://img.shields.io/npm/dm/@fingerprintiq/js.svg)](https://www.npmjs.com/package/@fingerprintiq/js)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/@fingerprintiq/js)](https://bundlephobia.com/package/@fingerprintiq/js)\n[![license](https://img.shields.io/npm/l/@fingerprintiq/js.svg)](./LICENSE)\n\nBrowser fingerprinting SDK with 99%+ accuracy. 41 client signals fused with server-side TLS/JA4 analysis.\n\n- **Docs**: [docs.fingerprintiq.com](https://docs.fingerprintiq.com)\n- **SDK reference**: [docs.fingerprintiq.com/sdk/javascript](https://docs.fingerprintiq.com/sdk/javascript)\n- **npm**: [npmjs.com/package/@fingerprintiq/js](https://www.npmjs.com/package/@fingerprintiq/js)\n- **Issues**: [github.com/fingerprintiq/js/issues](https://github.com/fingerprintiq/js/issues)\n\n## Install\n\n```bash\nnpm install @fingerprintiq/js\n# or\npnpm add @fingerprintiq/js\n# or\nyarn add @fingerprintiq/js\n```\n\n## Quick Start\n\n```typescript\nimport FingerprintIQ from '@fingerprintiq/js';\n\nconst fiq = new FingerprintIQ({ apiKey: 'fiq_live_...' });\nconst result = await fiq.identify();\n\nconsole.log(result.visitorId);      // \"iq_01abc...\"\nconsole.log(result.confidence);     // 0.97\nconsole.log(result.botProbability); // 0.03\n```\n\nGrab an API key from the [FingerprintIQ dashboard](https://fingerprintiq.com/dashboard) — free tier includes 10,000 identifications/month.\n\n## Framework Integrations\n\n### React\n\n```tsx\nimport { useFingerprintIQ } from '@fingerprintiq/js/react';\n\nfunction Component() {\n  const { result, loading, error } = useFingerprintIQ({ apiKey: 'fiq_live_...' });\n\n  if (loading) return <p>Identifying…</p>;\n  if (error) return <p>Error: {error.message}</p>;\n  return <p>Visitor: {result?.visitorId}</p>;\n}\n```\n\n### Next.js (App Router)\n\n```tsx\n'use client';\nimport { useFingerprintIQ } from '@fingerprintiq/js/next';\n\nexport function VisitorGate() {\n  const { result } = useFingerprintIQ({ apiKey: 'fiq_live_...' });\n  return <p>Visitor: {result?.visitorId}</p>;\n}\n```\n\n### Vue 3\n\n```vue\n<script setup lang=\"ts\">\nimport { useFingerprintIQ } from '@fingerprintiq/js/vue';\n\nconst { result, loading, error } = useFingerprintIQ({ apiKey: 'fiq_live_...' });\n</script>\n\n<template>\n  <p v-if=\"loading\">Identifying…</p>\n  <p v-else-if=\"error\">Error: {{ error.message }}</p>\n  <p v-else>Visitor: {{ result?.visitorId }}</p>\n</template>\n```\n\nEach subpath auto-calls `identify()` on mount. Pass `manual: true` to skip and call `identify()` yourself when ready.\n\n## Signals Collected\n\n- Canvas 2D, WebGL, WebGPU\n- AudioContext timing\n- Font enumeration (650+ fonts)\n- WASM CPU microarchitecture\n- Navigator deep mining\n- CSS media queries\n- Screen & display\n- Prototype lie detection\n- Wallet extension detection (MetaMask, Phantom, etc.) — passive, never triggers popups\n- Storage persistence\n- WebRTC LAN IP\n- And more...\n\nServer-side signals (JA4 TLS, HTTP/2 settings, ASN classification, RTT coherence) are fused automatically at the edge.\n\n## Configuration\n\n```typescript\nconst fiq = new FingerprintIQ({\n  apiKey: 'fiq_live_...',     // Required\n  endpoint: 'https://...',    // Custom endpoint (default: fingerprintiq.com)\n  timeout: 5000,              // API timeout in ms (default: 5000)\n  detectWallets: true,        // Detect crypto wallets (default: true)\n});\n```\n\nSignal collectors are individually time-boxed so one slow browser API cannot hold up the full `identify()` call. User-Agent Client Hints bootstrap runs in the background and is reused on later calls.\n\n## Response\n\n```typescript\ninterface IdentifyResponse {\n  visitorId: string;\n  confidence: number;        // 0.0 - 1.0\n  botProbability: number;    // 0.0 - 1.0\n  visitCount: number;\n  signals: {\n    client: { ... };\n    server: { ... };\n  };\n}\n```\n\n## Sibling Packages\n\n| Package | Purpose |\n|---------|---------|\n| [`@fingerprintiq/js`](https://www.npmjs.com/package/@fingerprintiq/js) | Browser fingerprinting (this package) |\n| [`@fingerprintiq/server`](https://www.npmjs.com/package/@fingerprintiq/server) | Server-side caller classification (Hono, Express) |\n| [`@fingerprintiq/pulse`](https://www.npmjs.com/package/@fingerprintiq/pulse) | CLI usage analytics and machine fingerprinting |\n| [`fingerprintiq`](https://pypi.org/project/fingerprintiq/) (PyPI) | Python SDK — Identify, Sentinel, Pulse |\n\n## Contributing\n\nThis repo is a **read-only public mirror**. The master copy lives in the private FingerprintIQ monorepo and is synced here on every push to `main`. Please [file issues](https://github.com/fingerprintiq/js/issues) rather than PRs.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}