{"_id":"@rajesh896/broprint.js","_rev":"10-9e69603213b11d072c3115a4f6138731","name":"@rajesh896/broprint.js","dist-tags":{"latest":"3.0.0"},"versions":{"1.2.4":{"name":"@rajesh896/broprint.js","version":"1.2.4","keywords":["browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","nodejs","cryptography","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"author":{"name":"Rajesh-Royal"},"license":"MIT","_id":"@rajesh896/broprint.js@1.2.4","maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"bin":{"getDeviceId()":"lib/index.js"},"dist":{"shasum":"09559a075b73632811233c6280c310f7ea9ee655","tarball":"https://registry.npmjs.org/@rajesh896/broprint.js/-/broprint.js-1.2.4.tgz","fileCount":18,"integrity":"sha512-72r328zeW53grGdBmdlZxCGAnlyBcO0lhQqZek6VXHceD2zhSrtl8+4ffm8aUadWTV8W2Vqg/PLLCY9S4YF6Pg==","signatures":[{"sig":"MEQCIHcud+iuxquIatwnaJcxs+N8EVXG4cMq+1ZWgWSlJ2CiAiBuDOoz5PqH++VFsViYIAqqYI2zZDI3/qufiZKoSbyemg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihObUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7AA//b9/NsGMP+AUmYBz5s3Xc1iEtPY8B4faD9f7+p+E77QEChXnQ\r\n1RSfvqf03dIOGxbAJi7i+bTtqkal+PxFEkLcPo3jMVxBr6JWuPr/DtC+2cc7\r\nwqqHdhdW+PqAqNyriDlsFgUa0jvytU7mBxsnLr2wt0f6sCKyg+lX1STmDH3+\r\n2LI+5yS/hnwP6oF2qJMkHiI4enn2XpVyojH48am2um04K9sPZlunpgnKyMqb\r\n6qbu+CoUJMOhldq+j9U0GOaomsrIsISQbpPBEp9h4vKkMmzV8WuWv5FYa8OL\r\ncHAsQz/O5SerPzhekPFEcxJr26m9ATrY5N5fyDAG0vQkWMuTiN+Re10QiTaV\r\nAc1SRhzp5K7dWZoDksFW1OOA0AVfD7Q/6mmzPNah4IApKIlrMYAc8vejdl85\r\nTQo8dX6XAgcKL1qfugkbHF6i29WleTQXxNeHzzpRkaT7iTwBwMmCrDHbT/5F\r\nB/1RJdujKMqSA1FZLuYHIw5AAsg4/CdURvqzrw0H3WJ67HfO/6ry4wgOZun2\r\nC96ctg8hvf4QoN7OX7wyX8djjkrr6oogrFEq1PhyFLrbf0/GqHbL//JlaaTE\r\nYiu/OC1S8xVOJG0rK5XN4X8RFXkA0o0ol597R8NNg0EJ/psDm/rS4x5dslhy\r\niS62IYFEdECLh1VpVUdvj/oDNM7ltBD05xs=\r\n=fMgB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","types":"./lib/index.d.ts","gitHead":"7f1b100368e5f929d3efdd11d2d7522e2bc128d2","private":false,"scripts":{"test":"echo \"Error: no test specified\" && exit 1 ","build:npm":"tsc"},"_npmUser":{"name":"rajesh896","email":"rajeshroyal896@gmail.com"},"repository":{"url":"git+https://github.com/Rajesh-Royal/Broprint.js.git","type":"git"},"_npmVersion":"8.1.2","description":"The world's easiest, smallest and powerful visitor identifier for browsers.","directories":{},"_nodeVersion":"16.13.2","dependencies":{},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/broprint.js_1.2.4_1652877012243_0.38203517498921147","host":"s3://npm-registry-packages"}},"1.2.5":{"name":"@rajesh896/broprint.js","version":"1.2.5","keywords":["browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","nodejs","cryptography","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"author":{"name":"Rajesh-Royal"},"license":"MIT","_id":"@rajesh896/broprint.js@1.2.5","maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"bin":{"getDeviceId()":"lib/index.js"},"dist":{"shasum":"effabab8a103c834ab325710dce3fc4414418a7c","tarball":"https://registry.npmjs.org/@rajesh896/broprint.js/-/broprint.js-1.2.5.tgz","fileCount":18,"integrity":"sha512-LKQo+rps/I5136uqr0orVC6Y7JwD88t1LwZZK2ZZdj4OYOFnWnfcdCKHKBGZ05KCh+pVpES/eiDHAqL5v0N3vQ==","signatures":[{"sig":"MEYCIQCI32Bx8WRG0misy8yM0v0cbK9YLnTpeanDJcbjwp7PbwIhANuHM9Uskwm02vRFCD9ybu5XELFHS+x86HIGSdKLnVHa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihOrVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq95w//S9e74dsBUD1S/xCpC6/0qr0xm6sshj/UEwnbPbCCWt6cQGvS\r\n5iFp4OSEoWo02RqY5DcHMfRdu5BpXEPpvHxJAXGHEo7ACPCnbZA92dh6/sTH\r\nGyW1ylbKq5+C+/83xX/btSGvVEoUxPAgX3t5kqgW0RmzZRlRkfEjpWo9hGsG\r\nhs4//oinkqxB0KXQrfUyRK7vyd9plnJxsAkDXGbH3QfNu/t8z4+5gRS2z/tC\r\nx70HG2ZCuD8uaPSImTACjtbyld+ro21xO7f9V7K3Mc6vVQXWmf3Y5RHJQXA4\r\nuMPc0DWjUQqk9ZPRDKhFUaUBek1n7hEfaBy7jI9zzyJh3uUyrauNMpzxoYEi\r\nlKOSskvXw4V2z2ycZ95+icsY3do2jVF/QUCtooaf3nETVaE/aPmIWuKge22d\r\ntc69Oe2rTVMPGrhLDTBEeYF1ZpMqMKRtm42psKL+AO5FSCnHHyUNuZZzFw1c\r\nGeVfpJ+YoWTB9wWIep1SLdu590S5MFHHP460qHGXAJ8EHbb3wUA61B29ATdE\r\nDmj4a3D2nnAHQynbiKAZTeDHiRFm4PVGqpZY+AjSdq0vRY46vA8bhDj8XMJj\r\nPuEwv1qeVWQQwqNcxUXJNoX11pgBrJckUEASxoPw5LBZ8VZjjDyFSLT7dcKE\r\ny7TNr6B5keaMi5ROs/IJ5Niz5juo84pb70s=\r\n=R/SZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","types":"./lib/index.d.ts","gitHead":"dc6695247e169da54ff089bc281ec3ae7baf541d","private":false,"scripts":{"test":"echo \"Error: no test specified\" && exit 1 ","build:npm":"tsc"},"_npmUser":{"name":"rajesh896","email":"rajeshroyal896@gmail.com"},"repository":{"url":"git+https://github.com/Rajesh-Royal/Broprint.js.git","type":"git"},"_npmVersion":"8.1.2","description":"The world's easiest, smallest and powerful visitor identifier for browsers.","directories":{},"_nodeVersion":"16.13.2","dependencies":{},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/broprint.js_1.2.5_1652878037570_0.4597373333030874","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@rajesh896/broprint.js","version":"2.1.0","keywords":["browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","nodejs","cryptography","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"author":{"name":"Rajesh-Royal"},"license":"MIT","_id":"@rajesh896/broprint.js@2.1.0","maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"bin":{"getDeviceId()":"lib/index.js"},"dist":{"shasum":"175e0d8660de197e3c91ec9bf19c1ce58b38e24a","tarball":"https://registry.npmjs.org/@rajesh896/broprint.js/-/broprint.js-2.1.0.tgz","fileCount":18,"integrity":"sha512-7keRvHe8JHTXVy3ih+s9qHBNykoF88hTf8cJapS2BA+Q+gPD9LWWJxg15WyPLx0sxtTLRgoV9bcoGA6cslO/eA==","signatures":[{"sig":"MEQCIC+WczBVhd9HteKVsdpeCh2XKrf1IfVuFUtD8FCQvOsCAiBAveGGfJXxBDhq4ffFrNGl+o41FO2ypHVG+hRmdURHHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21647,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihO+2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrA8hAAlEANg85FDN6Ted95dzYVA3TFVZHJAikT1y2NjZXy0pzcXUh6\r\nLKEmaFZeIQGQwBau+h/n96X0vc9QnzKtBHUW8JMS+Zes0OdlQPSa50cVhiYV\r\nGZgz6q1Cw0LuEtKZnjyrGUX0IsK9ilX4tOGTxW2ybTFRYHnh7pFq4wUXh7xN\r\nKobWXMh8vo4ARXGkUdg1QzCjLYrfEPxe5bJDd2J17ynQRONowwQx9WmW6idO\r\ncnskRqwhcBJ7RNZVe8+vuDrjV68Iy9lyzwUPcvOC2YfXa9ujB+FhPH/IAiWF\r\ndlNsv3PDJvdhW0MqPFyTgd5OmcXHmnahyVL4MtbeG2mdEs1oFs2jDK29VK5f\r\nMCqk3Hg5qF0KRJPAw/kgDRV0VcbBcDmgW06qB7f2sKuSjVbbbuvIAodp9QLa\r\nPCaZhUCJykcO6dKSpGCPdPwDX7Ct5fX2LZj72ZajnDMqGy9S55JH3tseUwdg\r\n1k51mno977nqZ5+BKtSfSdRl4AMLDp4R1bL1gXwHKZOE5QTCKU08fPHkKjDW\r\nzptOHyCr+X0ydNdejZwow5PV+2jHLG1kcqa/Ha37PTKopj5IVN317q8rCLtQ\r\ni3wJV70wWtrjPEYovzO66WiysDwUvugCrmXpb+8ya+moAokOw62QcN/N2bCk\r\nAJhoBiFvzkaku188HUI6hk0g4xc+RcILqZc=\r\n=07fT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","types":"./lib/index.d.ts","gitHead":"f47f1be9c6e84196e5a3489490608160c6ce16c8","private":false,"scripts":{"test":"echo \"Error: no test specified\" && exit 1 ","build:npm":"tsc"},"_npmUser":{"name":"rajesh896","email":"rajeshroyal896@gmail.com"},"repository":{"url":"git+https://github.com/Rajesh-Royal/Broprint.js.git","type":"git"},"_npmVersion":"8.1.2","description":"The world's easiest, smallest and powerful visitor identifier for browsers.","directories":{},"_nodeVersion":"16.13.2","dependencies":{},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/broprint.js_2.1.0_1652879285942_0.058789994762264985","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"@rajesh896/broprint.js","version":"2.1.1","keywords":["browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","nodejs","cryptography","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"author":{"name":"Rajesh-Royal"},"license":"MIT","_id":"@rajesh896/broprint.js@2.1.1","maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"bin":{"getDeviceId()":"lib/index.js"},"dist":{"shasum":"f38870f62539035f318ebb9b6ba01fcc7ed76605","tarball":"https://registry.npmjs.org/@rajesh896/broprint.js/-/broprint.js-2.1.1.tgz","fileCount":18,"integrity":"sha512-34L0SFrOLHWAhF4ZU7QS32zItGOKdu3BY0DmMwoW6zekLuJWSuCIK07Xzgyy2AqCCUByd2VHMr2wbHousid+qg==","signatures":[{"sig":"MEQCIBzbK+oTCOs8hGwGc9piudrcMYqGuaGPNTDFMF1JR8SlAiApCenBxBnhUqCGQI4TOY9X9hOg/qAiXOCF/wMa0t9FrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21647,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuSuQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4qQ/9EFDQPePBNZ8syuRWwp2nyipsqjSPIQxUkDpLL+Wgoh4ZewQ6\r\nC1OTYjPuIHmWtVYPpI/nrsGAyZitJ+ThBmtixXJu9hh7z6mEZf2phF9Kgpdj\r\nqxUtCrU3+OFAC54I1ZoEUmKyC84VDEy9RzNNNjsCPSp5+G8JZdq1mvPgxjOe\r\nw3GP2ydaLgLzo+8PldaP393lpEBNFjmV7k9H3jptsHcyVySTBrDbA/7/3Tb+\r\nepV6tHHtgUSzdhfXzeL+t9zqHlTZHY8kB8YK4RhHEVwWwUJiSsJb6SV0zmBg\r\nU3ImfTzH6rfVgCC8wIHqRj8NYmF7MFLLXxdqWz0Q79fr45wQNihlQooHysgc\r\nj9bt8kVUL4pF479XUkQ3niY6hppedQeorUC+umJ6a6daZ/clTaaiaXTWh/3g\r\nGCvDEM1L3N7YcOVb4iNd2oFh07kCMdtfNvR0cK2L9IHI0EDnFVW1GXcMHRmm\r\nfm8+qjhA5hdBGTlc3zjVWkPVUf8bLqc2Ygjh0763Uqygw1DpxHn//huIzJbE\r\nr1QvkOPyzUw0bnmxMyV1gKNdW3U5+4rwUGECBv1+2kqd+nLTnwKJKhvWveRH\r\ngAxs68/Cu0Vi5foUNfvTGm62w5/xKoeMLdwHVaksFaPzAyXGnKSyNW5Go/yz\r\n9au7dQRjGFQs7l1yspFU2AymCq65vp9UHAs=\r\n=3X/C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","types":"./lib/index.d.ts","gitHead":"fe82a6e9ed735d215eb6c19b273cd8c71c7546b6","private":false,"scripts":{"test":"echo \"Error: no test specified\" && exit 1 ","build:npm":"tsc"},"_npmUser":{"name":"rajesh896","email":"rajeshroyal896@gmail.com"},"repository":{"url":"git+https://github.com/Rajesh-Royal/Broprint.js.git","type":"git"},"_npmVersion":"8.1.2","description":"The world's easiest, smallest and powerful visitor identifier for browsers.","directories":{},"_nodeVersion":"16.13.2","dependencies":{},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/broprint.js_2.1.1_1656302480298_0.45362313965500234","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@rajesh896/broprint.js","version":"2.2.0","keywords":["browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","nodejs","cryptography","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"author":{"name":"Rajesh-Royal"},"license":"MIT","_id":"@rajesh896/broprint.js@2.2.0","maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"bin":{"getDeviceId()":"lib/index.js"},"dist":{"shasum":"e6d5337957249cad52ce8dadd9c3e7fadb6d263b","tarball":"https://registry.npmjs.org/@rajesh896/broprint.js/-/broprint.js-2.2.0.tgz","fileCount":11,"integrity":"sha512-97TSrJLnSml7U+cUStH6FYcUs/sB1lnG8C7VkZ0ABAEnCZ41LtSFTruPSmOJQtuXhnK2aBU3BFcWiLVmKw9xHA==","signatures":[{"sig":"MEUCIQDW34BkhCoUbQ+nomPfqm2gv3st/czKYSk0iFUjbXaRwQIgV3VBO1vAFKUBq8vjy+3PM5tSX6v35iHX3DXEH7D+ZPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17681},"main":"./lib/index.js","types":"./lib/index.d.ts","module":"./lib/index.mjs","exports":{".":{"import":"./lib/index.mjs","default":"./lib/index.mjs","require":"./lib/index.js"},"./global":"./lib/index.global.js"},"gitHead":"b659d5b13257ae39708431a0c0a04d9338f4b285","private":false,"scripts":{"test":"echo \"Error: no test specified\" && exit 1 ","build":"npm run build:bundle && npm run build:types","build:npm":"npm run build:bundle && npm run build:types","build:types":"tsc --emitDeclarationOnly --declaration --outDir lib --declarationMap false","build:bundle":"tsup src/index.ts --format esm,cjs,iife --global-name Broprint --out-dir lib --minify --clean --silent"},"_npmUser":{"name":"rajesh896","email":"rajeshroyal896@gmail.com"},"repository":{"url":"git+https://github.com/Rajesh-Royal/Broprint.js.git","type":"git"},"_npmVersion":"10.8.2","description":"The world's easiest, smallest and powerful visitor identifier for browsers.","directories":{},"_nodeVersion":"20.19.4","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/broprint.js_2.2.0_1754892916985_0.159962079154907","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@rajesh896/broprint.js","version":"2.2.1","keywords":["browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","nodejs","cryptography","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"author":{"name":"Rajesh-Royal"},"license":"MIT","_id":"@rajesh896/broprint.js@2.2.1","maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"bin":{"getDeviceId()":"lib/index.js"},"dist":{"shasum":"39ef3adfbe139221f8c81b9ee6cfec6961610cea","tarball":"https://registry.npmjs.org/@rajesh896/broprint.js/-/broprint.js-2.2.1.tgz","fileCount":11,"integrity":"sha512-ntZxHI4mjCiEdKbtu2Ow7ktpFzu0UY0xbw7t2IxGECiJLaIwEC7/i+J9qjCAl9VW5RQKTrOmLZSAFOn6vZGNyw==","signatures":[{"sig":"MEUCIQCu0PbjYJ27qtUwYsusFIfcORw8gFL943rKPdokLpnZPAIgXY2WICb5orxW6vo143iLKXAlk67IMs5eEwMsM6oQP+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17718},"main":"./lib/index.js","types":"./lib/index.d.ts","module":"./lib/index.mjs","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.mjs","default":"./lib/index.mjs","require":"./lib/index.js"},"./global":"./lib/index.global.js"},"gitHead":"3e3eda98bf92f33bf886137ae2d891c90ee2a2f2","private":false,"scripts":{"test":"echo \"Error: no test specified\" && exit 1 ","build":"npm run build:bundle && npm run build:types","build:npm":"npm run build:bundle && npm run build:types","build:types":"tsc --emitDeclarationOnly --declaration --outDir lib --declarationMap false","build:bundle":"tsup src/index.ts --format esm,cjs,iife --global-name Broprint --out-dir lib --minify --clean --silent"},"_npmUser":{"name":"rajesh896","email":"rajeshroyal896@gmail.com"},"repository":{"url":"git+https://github.com/Rajesh-Royal/Broprint.js.git","type":"git"},"_npmVersion":"11.7.0","description":"The world's easiest, smallest and powerful visitor identifier for browsers.","directories":{},"_nodeVersion":"25.4.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/broprint.js_2.2.1_1777091160669_0.6585749230111386","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@rajesh896/broprint.js","version":"3.0.0","description":"The world's easiest, smallest and powerful visitor identifier for browsers.","main":"./lib/index.js","module":"./lib/index.mjs","types":"./lib/index.d.ts","exports":{".":{"import":"./lib/index.mjs","require":"./lib/index.js","default":"./lib/index.mjs","types":"./lib/index.d.ts"},"./global":"./lib/index.global.js"},"sideEffects":false,"engines":{"node":">=18"},"private":false,"scripts":{"build:types":"tsc --emitDeclarationOnly --declaration --outDir lib --declarationMap false","build:bundle":"tsup src/index.ts --format esm,cjs,iife --global-name Broprint --out-dir lib --minify --clean --silent","build":"npm run build:bundle && npm run build:types","build:npm":"npm run build:bundle && npm run build:types","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,json,md}\" \"*.{ts,tsx,json}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,json,md}\" \"*.{ts,tsx,json}\"","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","size":"size-limit","size:why":"size-limit --why","docs":"typedoc","prepare":"husky","prepublishOnly":"npm run build"},"size-limit":[{"path":"lib/index.mjs","limit":"2 KB"},{"path":"lib/index.js","limit":"2 KB"},{"path":"lib/index.global.js","limit":"2 KB"}],"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{js,json,md,yml,yaml}":["prettier --write"]},"repository":{"type":"git","url":"git+https://github.com/Rajesh-Royal/Broprint.js.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"keywords":["browser-fingerprint","browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","device-id","zero-dependency","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"author":{"name":"Rajesh-Royal"},"license":"MIT","bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","devDependencies":{"@size-limit/preset-small-lib":"^12.1.0","@vitest/coverage-v8":"^2.1.9","eslint":"^9.39.4","eslint-config-prettier":"^10.1.8","husky":"^9.1.7","jsdom":"^25.0.1","lint-staged":"^16.4.0","prettier":"^3.8.3","size-limit":"^12.1.0","tsup":"^8.5.0","typedoc":"^0.28.19","typescript":"^5.4.0","typescript-eslint":"^8.59.0","vitest":"^2.1.9"},"gitHead":"b9bebd261614546735d67fa1e736a424a9a7afa0","_id":"@rajesh896/broprint.js@3.0.0","_nodeVersion":"25.4.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-JGwC4sgo3CrLI/MpI4k4uUmBH4jV5wkTP38KeEBf7qE8ODOLO58XxAVj9wCSAbgkLhD6SA4RgvJ7iC62gyqw7w==","shasum":"ec454dee4bb0d535bf51a447b1eb6a0c140fecd7","tarball":"https://registry.npmjs.org/@rajesh896/broprint.js/-/broprint.js-3.0.0.tgz","fileCount":10,"unpackedSize":25138,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDYuRzO9ot7Y8VXoBu4xAWVqyGnp2PfeZi9L2lYufQoiAiACmXoLmuRwvPAfjGh1qeQFEg1vdFpaqfgbIICWQd7dOQ=="}]},"_npmUser":{"name":"rajesh896","email":"rajeshroyal896@gmail.com"},"directories":{},"maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/broprint.js_3.0.0_1777142320263_0.7654215087113172"},"_hasShrinkwrap":false}},"time":{"created":"2022-05-18T12:30:12.175Z","modified":"2026-04-25T18:38:40.533Z","1.2.0":"2022-04-22T01:05:17.672Z","1.2.1":"2022-04-22T01:30:00.433Z","1.2.4":"2022-05-18T12:30:12.407Z","1.2.5":"2022-05-18T12:47:17.810Z","2.1.0":"2022-05-18T13:08:06.088Z","2.1.1":"2022-06-27T04:01:20.484Z","2.2.0":"2025-08-11T06:15:17.224Z","2.2.1":"2026-04-25T04:26:00.803Z","3.0.0":"2026-04-25T18:38:40.427Z"},"bugs":{"url":"https://github.com/Rajesh-Royal/Broprint.js/issues"},"author":{"name":"Rajesh-Royal"},"license":"MIT","homepage":"https://github.com/Rajesh-Royal/Broprint.js#readme","keywords":["browser-fingerprint","browserfingerprint","fingerprinting","jsfingerprint","uniquebrowserid","device-id","zero-dependency","fraud-detection","canvas-fingerprinting","audio-fingerprinting","visitor-identifier","identification","reactjs","javascript","typescript"],"repository":{"type":"git","url":"git+https://github.com/Rajesh-Royal/Broprint.js.git"},"description":"The world's easiest, smallest and powerful visitor identifier for browsers.","maintainers":[{"name":"rajesh896","email":"rajeshroyal896@gmail.com"}],"readme":"<h1 align=\"center\">Broprint.js</h1>\n<p align=\"center\">The world's easiest, smallest and powerful visitor identifier for browsers.</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@rajesh896/broprint.js\">\n    <img src=\"https://img.shields.io/npm/v/@rajesh896/broprint.js\" alt=\"npm version\">\n  </a>\n  <a href=\"https://github.com/Rajesh-Royal/Broprint.js/actions/workflows/ci.yml\">\n    <img src=\"https://github.com/Rajesh-Royal/Broprint.js/actions/workflows/ci.yml/badge.svg?branch=develop\" alt=\"CI status\">\n  </a>\n  <a href=\"https://codecov.io/gh/Rajesh-Royal/Broprint.js\">\n    <img src=\"https://codecov.io/gh/Rajesh-Royal/Broprint.js/branch/develop/graph/badge.svg\" alt=\"Coverage\">\n  </a>\n  <a href=\"https://bundlephobia.com/package/@rajesh896/broprint.js\">\n    <img src=\"https://img.shields.io/bundlephobia/minzip/@rajesh896/broprint.js\" alt=\"Minzipped size\">\n  </a>\n  <a href=\"https://github.com/Rajesh-Royal/Broprint.js/blob/develop/LICENSE\">\n    <img src=\"https://img.shields.io/npm/l/@rajesh896/broprint.js\" alt=\"License\">\n  </a>\n  <a href=\"https://x.com/intent/tweet?text=The world's easiest, smallest and powerful visitor identifier for browsers.&url=https://github.com/Rajesh-Royal/Broprint.js&hashtags=javascript,opensource,js,webdev,developers\"><img src=\"http://randojs.com/images/tweetShield.svg\" alt=\"Tweet\" height=\"20\"/></a>\n</p>\n\n<p align=\"center\">\n  Generate a stable per-browser identifier from <strong>canvas</strong> + <strong>audio</strong> fingerprints, hashed with a fast, zero-dependency 53-bit hash. No tracking pixels, no third-party services, no runtime dependencies.\n</p>\n\n<p align=\"center\"><a href=\"https://github.com/Rajesh-Royal/Broprint.js\"><img src=\"https://user-images.githubusercontent.com/24524924/163906729-f34e193a-e202-43ae-ba4b-c460da6cc911.gif\" width=\"100%\"/></a></p>\n\n<p align=\"center\"><a href=\"https://codesandbox.io/s/browser-fingerprinting-generate-unique-device-id-or-browser-id-507n2v\" target=\"_blank\">CodeSandbox</a> · <a href=\"https://broprintjs.netlify.app/\" target=\"_blank\">Live Demo</a></p>\n\n> ⚠️ **Not a security primitive.** The hash (`cyrb53`) is a fast, non-cryptographic checksum. Use it for visitor identification, analytics, and fraud-signal heuristics — not for authentication, password storage, or anything that requires collision resistance.\n\n> 📦 **Migrating from v2?** See [`MIGRATION.md`](./MIGRATION.md) for the breaking changes in v3.0.0.\n\n---\n\n## Install\n\n```sh\nnpm i @rajesh896/broprint.js\n# or\nyarn add @rajesh896/broprint.js\n# or\npnpm add @rajesh896/broprint.js\n```\n\n### CDN (no install)\n\nESM (modern browsers):\n\n```html\n<script type=\"module\">\n    import { getCurrentBrowserFingerPrint } from 'https://cdn.jsdelivr.net/npm/@rajesh896/broprint.js@latest/lib/index.mjs';\n    getCurrentBrowserFingerPrint().then((fp) => console.log('Fingerprint:', fp));\n</script>\n```\n\nClassic global build (no module support needed):\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@rajesh896/broprint.js@latest/lib/index.global.js\"></script>\n<script>\n    Broprint.getCurrentBrowserFingerPrint().then((fp) => console.log('Fingerprint:', fp));\n</script>\n```\n\n## Quick start\n\n```js\nimport { getCurrentBrowserFingerPrint } from '@rajesh896/broprint.js';\n\nconst fingerprint = await getCurrentBrowserFingerPrint();\n// → \"1234567890123456\" — a stable numeric string for this browser\n```\n\n### Disable a signal\n\n```js\n// canvas-only (skip audio entirely)\nawait getCurrentBrowserFingerPrint({ useAudio: false });\n\n// audio-only\nawait getCurrentBrowserFingerPrint({ useCanvas: false });\n\n// custom seed (e.g. to namespace fingerprints per-app)\nawait getCurrentBrowserFingerPrint({ seed: 42 });\n```\n\n### Use the building blocks directly\n\nThe individual signal generators and the hash function are also exported, so you can compose your own pipeline:\n\n```js\nimport {\n    getCanvasFingerprint,\n    getAudioFingerprint,\n    cyrb53,\n    isCanvasSupported\n} from '@rajesh896/broprint.js';\n\nconst canvas = getCanvasFingerprint(); // sync, returns canvas dataURL\nconst audio = await getAudioFingerprint(); // async, returns numeric string\nconst hash = cyrb53(canvas + audio); // → number in [0, 2^53)\n```\n\n## API\n\n### `getCurrentBrowserFingerPrint(options?)`\n\n| Option       | Type      | Default | Description                                                                  |\n| ------------ | --------- | ------- | ---------------------------------------------------------------------------- |\n| `useAudio`   | `boolean` | `true`  | Include the audio fingerprint signal.                                        |\n| `useCanvas`  | `boolean` | `true`  | Include the canvas fingerprint signal.                                       |\n| `seed`       | `number`  | `0`     | Custom seed for the cyrb53 hash. Use to namespace fingerprints per-app.      |\n\n**Returns:** `Promise<string>` — a stable numeric string (53-bit hash, base-10).\n\n**Throws:**\n\n- If both `useAudio` and `useCanvas` are `false` (no signals selected).\n- If the only enabled signal fails (e.g. `useCanvas: false` on a browser that blocks `OfflineAudioContext`).\n- If audio fails **and** canvas also fails.\n\nIf audio is enabled but fails (e.g. privacy mode blocks `OfflineAudioContext`) and canvas is also enabled, the function automatically falls back to a canvas-only fingerprint.\n\n### Named exports\n\n- `getCanvasFingerprint(): string` — render the canvas + return its `toDataURL()`.\n- `isCanvasSupported(): boolean` — feature-detects HTML5 canvas with a 2D context.\n- `getAudioFingerprint(): Promise<string>` — render an OfflineAudioContext graph + return the float sum as a string.\n- `cyrb53(str: string, seed?: number): number` — fast, non-cryptographic 53-bit hash.\n- `BroprintOptions` — TypeScript type for the options object.\n\n## How it works\n\n```\n                    ┌────────────────────────────────┐\n                    │         getAudioFingerprint    │\n  Audio entropy ──▶ │  OfflineAudioContext renders   │ ──▶ float sum (string)\n                    │  500 frames through a          │\n                    │  DynamicsCompressor.           │\n                    └────────────────────────────────┘\n                                     │\n                                     ▼  base64-encode\n                    ┌────────────────────────────────┐\n                    │       getCanvasFingerprint     │\n  Canvas entropy ──▶│  Draw layered text + shapes    │ ──▶ canvas.toDataURL()\n                    │  and read back the data URI    │\n                    │  (varies by GPU / font stack). │\n                    └────────────────────────────────┘\n                                     │\n                                     ▼  concat\n                    ┌────────────────────────────────┐\n                    │              cyrb53            │ ──▶ 53-bit numeric hash\n                    │  (custom, no deps, ~10 lines)  │     coerced to string\n                    └────────────────────────────────┘\n                                     │\n                                     ▼\n                              fingerprint\n```\n\n## Browser compatibility\n\n| API                     | Required for                | Support                                                  |\n| ----------------------- | --------------------------- | -------------------------------------------------------- |\n| `HTMLCanvasElement`     | canvas signal               | All modern browsers                                      |\n| `OfflineAudioContext`   | audio signal                | All modern browsers (`webkitOfflineAudioContext` fallback for older Safari) |\n| `Promise` / `async`     | always                      | All modern browsers (ES2017+)                            |\n\nTested on the latest stable Chrome, Firefox, Safari, and Edge. Node ≥ 18 is required for the build/test toolchain.\n\n## Caveats\n\n- **Not unique forever.** A browser update, GPU driver change, OS upgrade, or \"ungoogled\" build can change the output. Treat the fingerprint as a stable signal *for a session/install*, not a permanent identity.\n- **Privacy modes can block signals.** Some privacy-focused browsers (Brave Strict, Tor, Firefox RFP) randomize or block the underlying APIs. The library falls back gracefully to the available signal, but the output will differ from the same user's \"normal\" browsing.\n- **Not for security.** The 53-bit `cyrb53` hash is fast and well-distributed but not cryptographically secure — collisions exist and the algorithm is reversible with effort. Don't use the output as a session token or password salt.\n\n## Contributing\n\nSee [`CONTRIBUTING.md`](./CONTRIBUTING.md) for the dev setup, test/lint loop, and PR process. Bug reports and feature requests are welcome via GitHub Issues; security-sensitive reports should follow [`SECURITY.md`](./SECURITY.md).\n\n## License\n\n[MIT](./LICENSE) © Rajesh Royal\n\n---\n\n[![Stargazers repo roster for @Rajesh-Royal/Broprint.js](https://reporoster.com/stars/Rajesh-Royal/Broprint.js)](https://github.com/Rajesh-Royal/Broprint.js/stargazers)\n[![Forkers repo roster for @Rajesh-Royal/Broprint.js](https://reporoster.com/forks/Rajesh-Royal/Broprint.js)](https://github.com/Rajesh-Royal/Broprint.js/network/members)\n\n<p align=\"center\"><a href=\"#broprintjs\"><img src=\"http://randojs.com/images/backToTopButtonTransparentBackground.png\" alt=\"Back to top\" height=\"29\"/></a></p>\n","readmeFilename":"README.MD"}