{"_id":"@dossier-wiki/fingerprint-core","_rev":"4-01af4f19e0c2baf146b817ed3c969f53","name":"@dossier-wiki/fingerprint-core","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@dossier-wiki/fingerprint-core","version":"0.1.0","_id":"@dossier-wiki/fingerprint-core@0.1.0","maintainers":[{"name":"nimeshaperi","email":"nimesha@dossiers.wiki"},{"name":"nisalp","email":"nisal@dossiers.wiki"},{"name":"kevinaugustin","email":"kevin@dossiers.wiki"}],"dist":{"shasum":"6fbc939c6b27ef54bf552b074debd587af1dacfe","tarball":"https://registry.npmjs.org/@dossier-wiki/fingerprint-core/-/fingerprint-core-0.1.0.tgz","fileCount":10,"integrity":"sha512-LPxxvyEna67VPd+K6/VcYXEmN+izQzgvb7C7KPgKQt4xnxOF3HqLUp3uj9Cq4vhIRVLcRbuj0QiHErDINV+i7g==","signatures":[{"sig":"MEYCIQDYrdGTe/8iEUNgnQ5HVpV4tv16siZp2Yq61CA0iRtW5AIhAMvyoQx2J+YkVSVwv/fD/9qYkcweMWkffl/hsbukdkOE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25512},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./memory":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kevinaugustin","email":"kevin@dossiers.wiki"},"directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"@dossier-wiki/fingerprint-shared":"0.1.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/fingerprint-core_0.1.0_1784287307465_0.7129122725777086","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dossier-wiki/fingerprint-core","version":"0.1.1","_id":"@dossier-wiki/fingerprint-core@0.1.1","maintainers":[{"name":"nimeshaperi","email":"nimesha@dossiers.wiki"},{"name":"nisalp","email":"nisal@dossiers.wiki"},{"name":"kevinaugustin","email":"kevin@dossiers.wiki"}],"dist":{"shasum":"1b658d793f0680f038ffdbb65d7fd52ad5f6d382","tarball":"https://registry.npmjs.org/@dossier-wiki/fingerprint-core/-/fingerprint-core-0.1.1.tgz","fileCount":11,"integrity":"sha512-krRUV5QNWfF4JUv4kSyLMFLLgeXbnZbRGbJO/mlOJI+ySPFgsFk84OyR3kGdvAupveqQshMIJmuwJmOW4edMFg==","signatures":[{"sig":"MEUCIEnu5WdDySA2oUZUNw1ibJi4shAb6k3FyIyIYjvK2z21AiEAg+4FQEyNJU2HF7fVAeiD7VtVReC0lJ8CEEsi5dI380I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27305},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts","./memory":"./src/memory.ts"},"gitHead":"25429de97cdbafaf5b7945124d2f9c0a7b7f5004","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kevinaugustin","email":"kevin@dossiers.wiki"},"_npmVersion":"11.12.1","description":"> Part of **[dossiers-fingerprint](https://github.com/justanotherkev/dossiers-fingerprint#readme)** — a > cookieless browser & device fingerprinting service that resolves a stable `visitorId`. > See the [repository root](https://github.com/justanotherkev/","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"@dossier-wiki/fingerprint-shared":"workspace:*"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./memory":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/fingerprint-core_0.1.1_1785154657526_0.5674720965225442","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dossier-wiki/fingerprint-core","version":"0.1.2","_id":"@dossier-wiki/fingerprint-core@0.1.2","maintainers":[{"name":"nimeshaperi","email":"nimesha@dossiers.wiki"},{"name":"nisalp","email":"nisal@dossiers.wiki"},{"name":"kevinaugustin","email":"kevin@dossiers.wiki"}],"dist":{"shasum":"ef4ef10aa8b2bbf38e9658b3e6b76684a6f15dad","tarball":"https://registry.npmjs.org/@dossier-wiki/fingerprint-core/-/fingerprint-core-0.1.2.tgz","fileCount":18,"integrity":"sha512-NChEQaadH1JsjXib7vLuQ5dCmiukSYtUVHKOeKY8UY7je/WYlCLI7JultymdWOq5YLo/oJTQBODGolxlCUc1lg==","signatures":[{"sig":"MEYCIQDpiTXGglX9tTDXYyFJf6MnEl8p+rcV63e2kJijbCC16gIhAMrImcvejFH2Qhx2SH0y0s2/XgM1X/poFgWUenr7EuyI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57768},"main":"./dist/index.cjs","type":"module","_from":"file:/var/folders/s1/kbx74s4s03d2d4tl4v4knglh0000gn/T/tmp.iA3jMoY0Yn/dossier-wiki-fingerprint-core-0.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./memory":{"types":"./dist/memory.d.ts","import":"./dist/memory.js","require":"./dist/memory.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"kevinaugustin","email":"kevin@dossiers.wiki"},"_resolved":"/var/folders/s1/kbx74s4s03d2d4tl4v4knglh0000gn/T/tmp.iA3jMoY0Yn/dossier-wiki-fingerprint-core-0.1.2.tgz","_integrity":"sha512-NChEQaadH1JsjXib7vLuQ5dCmiukSYtUVHKOeKY8UY7je/WYlCLI7JultymdWOq5YLo/oJTQBODGolxlCUc1lg==","_npmVersion":"11.12.1","description":"> Part of **[dossiers-fingerprint](https://github.com/justanotherkev/dossiers-fingerprint#readme)** — a > cookieless browser & device fingerprinting service that resolves a stable `visitorId`. > See the [repository root](https://github.com/justanotherkev/","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"@dossier-wiki/fingerprint-shared":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/fingerprint-core_0.1.2_1785413755578_0.2831299231684834","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dossier-wiki/fingerprint-core","version":"0.2.0","type":"module","sideEffects":false,"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./memory":{"types":"./dist/memory.d.ts","import":"./dist/memory.js","require":"./dist/memory.cjs"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"dependencies":{"@dossier-wiki/fingerprint-shared":"0.2.0"},"devDependencies":{"@types/node":"^22.9.0","tsup":"^8.3.5","typescript":"^5.6.3","vitest":"^2.1.8"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit","test":"vitest run"},"module":"./dist/index.js","_id":"@dossier-wiki/fingerprint-core@0.2.0","description":"> Part of **[dossiers-fingerprint](https://github.com/justanotherkev/dossiers-fingerprint#readme)** — a > cookieless browser & device fingerprinting service that resolves a stable `visitorId`. > See the [repository root](https://github.com/justanotherkev/","_integrity":"sha512-UPupi2f1n8qiv/FTKxT7bw+Sf68OTy+V1Ro05E9Ea3ORxX3WpwwvA850fkv4EpxasVszni1VFpCh0qLM9xc6Pg==","_resolved":"/Users/kevinaugustin/Desktop/Dossiers/dossiers-fingerprint/packages/core/dossier-wiki-fingerprint-core-0.2.0.tgz","_from":"file:dossier-wiki-fingerprint-core-0.2.0.tgz","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-UPupi2f1n8qiv/FTKxT7bw+Sf68OTy+V1Ro05E9Ea3ORxX3WpwwvA850fkv4EpxasVszni1VFpCh0qLM9xc6Pg==","shasum":"e969ab9ece9c864d59a20ba7128f386b4a7c941a","tarball":"https://registry.npmjs.org/@dossier-wiki/fingerprint-core/-/fingerprint-core-0.2.0.tgz","fileCount":18,"unpackedSize":63239,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGme62xdOBokg8e3spMUM2QVMOfoXRCTj69QzHKl1x5xAiEAgrU8ao2IglAAeZ41GRpwj53XcHoG0OClZpeuOwpoN9M="}]},"_npmUser":{"name":"kevinaugustin","email":"kevin@dossiers.wiki"},"directories":{},"maintainers":[{"name":"nimeshaperi","email":"nimesha@dossiers.wiki"},{"name":"nisalp","email":"nisal@dossiers.wiki"},{"name":"kevinaugustin","email":"kevin@dossiers.wiki"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fingerprint-core_0.2.0_1786097826376_0.678182698022213"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-17T11:21:47.326Z","modified":"2026-08-07T10:17:06.682Z","0.1.0":"2026-07-17T11:21:47.613Z","0.1.1":"2026-07-27T12:17:37.663Z","0.1.2":"2026-07-30T12:15:55.711Z","0.2.0":"2026-08-07T10:17:06.513Z"},"description":"> Part of **[dossiers-fingerprint](https://github.com/justanotherkev/dossiers-fingerprint#readme)** — a > cookieless browser & device fingerprinting service that resolves a stable `visitorId`. > See the [repository root](https://github.com/justanotherkev/","maintainers":[{"name":"nimeshaperi","email":"nimesha@dossiers.wiki"},{"name":"nisalp","email":"nisal@dossiers.wiki"},{"name":"kevinaugustin","email":"kevin@dossiers.wiki"}],"readme":"# @dossier-wiki/fingerprint-core\n\n> Part of **[dossiers-fingerprint](https://github.com/justanotherkev/dossiers-fingerprint#readme)** — a\n> cookieless browser & device fingerprinting service that resolves a stable `visitorId`.\n> See the [repository root](https://github.com/justanotherkev/dossiers-fingerprint#readme) for the full\n> architecture and the identify pipeline.\n\nThe framework-agnostic identification **brain**. It runs the full match pipeline\n(cache → exact → fuzzy → mint) but owns **no** storage: you provide `Store` and `Cache`\nimplementations and wire `identify()` into your own backend route.\n\n## Install\n\n```bash\nnpm install @dossier-wiki/fingerprint-core\n```\n\n## Usage\n\n```ts\nimport { identify, parseIdentifyRequest, type Store, type Cache } from '@dossier-wiki/fingerprint-core';\n\nconst parsed = parseIdentifyRequest(await request.json());\nif (!parsed.success) return reply.code(400).send(parsed.error);\n\nconst result = await identify(\n  { store, cache },                       // your Store + Cache adapters\n  { signals: parsed.data.signals, ip, userAgent },\n);\n// → { visitorId, requestId, confidence, visitorFound, visitCount, firstSeenAt, lastSeenAt }\n```\n\n## Storage adapters\n\nImplement the `Store` (Postgres, etc.) and `Cache` (Redis, etc.) interfaces exported from\nthe package. An in-memory reference implementation — `MemoryStore` and `MemoryCache`,\nhandy for tests — is available from the `@dossier-wiki/fingerprint-core/memory` subpath.\n\nSee [`packages/server`](https://github.com/justanotherkev/dossiers-fingerprint/tree/main/packages/server)\nfor a complete Postgres + Redis wiring.\n","readmeFilename":"README.md"}