{"_id":"@5seg/cateye","_rev":"3-31416730e3c98561aa1bbe1c5d7e4bab","name":"@5seg/cateye","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@5seg/cateye","version":"0.1.0","keywords":["fingerprint","browser","device","identification","wasm","webassembly"],"license":"MIT","_id":"@5seg/cateye@0.1.0","maintainers":[{"name":"5seg","email":"incrnum@proton.me"}],"dist":{"shasum":"7e211544e9350d92eae59e3540afba9f1185464c","tarball":"https://registry.npmjs.org/@5seg/cateye/-/cateye-0.1.0.tgz","fileCount":26,"integrity":"sha512-TgTkRbC0zvL/2cZTaunU1WhyIMhaNdd7IbrTfI7foZZh2kL+iwJZUYVEihcYXBRuWr9gm/9p/4gf4mjxHbhOGA==","signatures":[{"sig":"MEUCIQDiwhkuxKP6OE4AO7xdEn7dJdRg8nahr38saSjXkT7csQIgKEGU91eqeM+vYW65UfcphKpXIhqOcWezemo76ix7ik8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648127},"main":"dist/ts/index.js","types":"dist/ts/index.d.ts","gitHead":"335e517723a51ff9a881621796e7bba3d03a389c","scripts":{"demo":"echo 'Demo at http://localhost:8080/example/' && python3 -m http.server 8080","test":"npm run build:wasm && jest","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","build:wasm":"source /tmp/emsdk/emsdk_env.sh 2>/dev/null && mkdir -p build/wasm-es6 && cd build/wasm-es6 && emcmake cmake -S ../.. -B . -DCMAKE_BUILD_TYPE=Release -DEXPORT_ES6=ON && cmake --build . --target cateye && cd ../.. && mkdir -p dist/wasm && cp build/wasm-es6/cateye.js dist/wasm/ && cp build/wasm-es6/cateye.wasm dist/wasm/ && cp build/wasm-es6/cateye.js src/wasm/ && cp build/wasm-es6/cateye.wasm src/wasm/ && mkdir -p build/wasm-node && cd build/wasm-node && emcmake cmake -S ../.. -B . -DCMAKE_BUILD_TYPE=Release -DEXPORT_ES6=OFF && cmake --build . --target cateye && cd ../.. && mkdir -p dist/wasm-node && cp build/wasm-node/cateye.js dist/wasm-node/ && cp build/wasm-node/cateye.wasm dist/wasm-node/","prepublishOnly":"npm run build"},"_npmUser":{"name":"5seg","email":"incrnum@proton.me"},"_npmVersion":"11.16.0","description":"Browser device fingerprinting with weighted scoring engine","directories":{},"_nodeVersion":"26.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.0","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/cateye_0.1.0_1781441661617_0.7184640320130686","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@5seg/cateye","version":"0.1.1","keywords":["fingerprint","browser","device","identification","wasm","webassembly"],"license":"MIT","_id":"@5seg/cateye@0.1.1","maintainers":[{"name":"5seg","email":"incrnum@proton.me"}],"dist":{"shasum":"72efb0dbd691e3c70f4e18fb45bd4b622afc3b66","tarball":"https://registry.npmjs.org/@5seg/cateye/-/cateye-0.1.1.tgz","fileCount":26,"integrity":"sha512-NurZFsRk1C5lhpIVfCPCO2SCO50wpto5PVXHViceA8bI6zGwJ4y7l5/jcOcKDse90g+cyJ5ghIyU0YZTZ2d6Mw==","signatures":[{"sig":"MEUCIDb+57z3K2whmnHETd6W88dqxWbzhRb99n1JEiB9n6zWAiEAuzZbDSeBdYRcZcuvlQUxcMa0fHFdGDMKlkkUdP+AysQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648110},"main":"dist/ts/index.js","types":"dist/ts/index.d.ts","gitHead":"335e517723a51ff9a881621796e7bba3d03a389c","scripts":{"demo":"echo 'Demo at http://localhost:8080/example/' && python3 -m http.server 8080","test":"npm run build:wasm && jest","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc","build:wasm":"source /tmp/emsdk/emsdk_env.sh 2>/dev/null && mkdir -p build/wasm-es6 && cd build/wasm-es6 && emcmake cmake -S ../.. -B . -DCMAKE_BUILD_TYPE=Release -DEXPORT_ES6=ON && cmake --build . --target cateye && cd ../.. && mkdir -p dist/wasm && cp build/wasm-es6/cateye.js dist/wasm/ && cp build/wasm-es6/cateye.wasm dist/wasm/ && cp build/wasm-es6/cateye.js src/wasm/ && cp build/wasm-es6/cateye.wasm src/wasm/ && mkdir -p build/wasm-node && cd build/wasm-node && emcmake cmake -S ../.. -B . -DCMAKE_BUILD_TYPE=Release -DEXPORT_ES6=OFF && cmake --build . --target cateye && cd ../.. && mkdir -p dist/wasm-node && cp build/wasm-node/cateye.js dist/wasm-node/ && cp build/wasm-node/cateye.wasm dist/wasm-node/","prepublishOnly":"npm run build"},"_npmUser":{"name":"5seg","email":"incrnum@proton.me"},"_npmVersion":"11.16.0","description":"Browser device fingerprinting with weighted scoring engine","directories":{},"_nodeVersion":"26.1.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.0","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/cateye_0.1.1_1781441714808_0.822111879716547","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@5seg/cateye","version":"0.1.2","description":"Browser device fingerprinting with weighted scoring engine","main":"dist/ts/index.js","types":"dist/ts/index.d.ts","scripts":{"build:wasm":"source /tmp/emsdk/emsdk_env.sh 2>/dev/null && mkdir -p build/wasm-es6 && cd build/wasm-es6 && emcmake cmake -S ../.. -B . -DCMAKE_BUILD_TYPE=Release -DEXPORT_ES6=ON && cmake --build . --target cateye && cd ../.. && mkdir -p dist/wasm && cp build/wasm-es6/cateye.js dist/wasm/ && cp build/wasm-es6/cateye.wasm dist/wasm/ && cp build/wasm-es6/cateye.js src/wasm/ && cp build/wasm-es6/cateye.wasm src/wasm/ && mkdir -p build/wasm-node && cd build/wasm-node && emcmake cmake -S ../.. -B . -DCMAKE_BUILD_TYPE=Release -DEXPORT_ES6=OFF && cmake --build . --target cateye && cd ../.. && mkdir -p dist/wasm-node && cp build/wasm-node/cateye.js dist/wasm-node/ && cp build/wasm-node/cateye.wasm dist/wasm-node/","build:ts":"tsc","build":"npm run build:wasm && npm run build:ts","test":"npm run build:wasm && jest","demo":"echo 'Demo at http://localhost:8080/example/' && python3 -m http.server 8080","prepublishOnly":"npm run build"},"keywords":["fingerprint","browser","device","identification","wasm","webassembly"],"devDependencies":{"@types/jest":"^29.5.14","jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.0"},"gitHead":"04258bed7360486ff8ab40661c2daeeebaf98f8c","_id":"@5seg/cateye@0.1.2","_nodeVersion":"26.1.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-8FPPHcJCXzh16esz0p+HvHpBiNDcDzHpqh27o3yvx2OOff8d5e7Ce3HE7Hb1HBwIR+Kc2RrT1/hf0weKAdRIrA==","shasum":"ac6817e422aba3eb38afdea1b1703726b9f3cf22","tarball":"https://registry.npmjs.org/@5seg/cateye/-/cateye-0.1.2.tgz","fileCount":26,"unpackedSize":648090,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBor06CErVKGbCH86E8P9ynd8zKR5Ka+BV0S/YmEf6RbAiAZJZnq9ygMnYjSzrCaFKmnO+KfUjoO4bKgN/XbEqIc8g=="}]},"_npmUser":{"name":"5seg","email":"incrnum@proton.me"},"directories":{},"maintainers":[{"name":"5seg","email":"incrnum@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cateye_0.1.2_1781441759064_0.20776619545865094"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-14T12:54:21.428Z","modified":"2026-06-14T12:55:59.404Z","0.1.0":"2026-06-14T12:54:21.816Z","0.1.1":"2026-06-14T12:55:15.042Z","0.1.2":"2026-06-14T12:55:59.300Z"},"keywords":["fingerprint","browser","device","identification","wasm","webassembly"],"description":"Browser device fingerprinting with weighted scoring engine","maintainers":[{"name":"5seg","email":"incrnum@proton.me"}],"readme":"# cateye\n\nBrowser device fingerprinting with a weighted scoring engine (WASM-powered C++ core).\n\n## Installation\n\n```bash\nnpm install cateye\n```\n\n## Usage\n\n```typescript\nimport { Fingerprinter, serialize, deserialize } from \"cateye\";\n\nconst fp = new Fingerprinter({\n  stabilityThreshold: 0.85,\n  timeout: 5000,\n});\n\n// Collect fingerprint signals from the browser\nconst data = await fp.collect();\n\n// Get visitor ID (hashed fingerprint)\nconst { id, data: fpData } = await fp.getVisitorId();\n\n// Compare two fingerprints\nconst result = await fp.match(previousData, currentData);\nconsole.log(result.confidence); // 0.0 - 1.0\nconsole.log(result.isMatch); // true if confidence >= threshold\nconsole.log(result.componentScores); // per-signal breakdown\n\n// Serialize for storage/transmission\nconst json = serialize(data);\nconst restored = deserialize(json);\n```\n\n## Configuration\n\n```typescript\ninterface FingerprintConfig {\n  weights?: Record<string, number>; // per-signal weight (default: pre-tuned)\n  tolerances?: Record<string, number>; // per-signal match tolerance 0-1\n  stabilityThreshold?: number; // overall \"same device\" threshold (default: 0.85)\n  timeout?: number; // collection timeout ms (default: 5000)\n  customSignals?: Record<string, () => Promise<string>>; // user-defined signals\n}\n```\n","readmeFilename":"README.md"}