{"_id":"@bambulabs/finedine-fingerprint-react","_rev":"6-0ce0e0fc97b3e735a5a804691c5f5f79","name":"@bambulabs/finedine-fingerprint-react","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@bambulabs/finedine-fingerprint-react","version":"1.0.0","keywords":["fingerprint","visitor-tracking","react","hooks","finedine"],"license":"MIT","_id":"@bambulabs/finedine-fingerprint-react@1.0.0","maintainers":[{"name":"emre.alparslan","email":"emre@finedinemenu.com"},{"name":"burakkilic","email":"burakkilic@gmail.com"},{"name":"utku-fd","email":"utku@finedinemenu.com"},{"name":"barisakdogan","email":"baris@finedinemenu.com"}],"homepage":"https://github.com/finedine/fingerprint-react#readme","bugs":{"url":"https://github.com/finedine/fingerprint-react/issues"},"dist":{"shasum":"d440d8041f210b7b2013f18c3a4f9735118c777b","tarball":"https://registry.npmjs.org/@bambulabs/finedine-fingerprint-react/-/finedine-fingerprint-react-1.0.0.tgz","fileCount":14,"integrity":"sha512-mn7fHIDScJkrSDZB2wF469WPGLQWGbrHh2Ti/lVPvQSADvOxSxsKK+lxpE1auwcpc02LE+6EY4utCAPNpq6WQQ==","signatures":[{"sig":"MEYCIQDbjLAky4Got2LM3P9zOW1KgTtV/54zybzJE/n1NHiNUgIhAKPBCq9wEjBoehRy9YzwBL61HkxgjImKHGyVX8fD7/4G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":312789},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"4a4a85bcb455f9388c32577ca1972e8320bf7a2d","scripts":{"dev":"rollup -c -w","build":"rollup -c rollup.config.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"emre.alparslan","email":"emre@finedinemenu.com"},"repository":{"url":"git+https://github.com/finedine/fingerprint-react.git","type":"git"},"_npmVersion":"6.14.12","description":"React hooks for Finedine visitor fingerprinting","directories":{},"_nodeVersion":"18.0.0","dependencies":{"@fingerprintjs/fingerprintjs":"^4.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","rollup":"^4.9.1","typescript":"^5.3.3","@types/react":"^18.2.45","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@rollup/plugin-node-resolve":"^15.2.3"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/finedine-fingerprint-react_1.0.0_1767776713085_0.022677623764346455","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bambulabs/finedine-fingerprint-react","version":"1.0.1","keywords":["fingerprint","visitor-tracking","react","hooks","finedine"],"license":"MIT","_id":"@bambulabs/finedine-fingerprint-react@1.0.1","maintainers":[{"name":"emre.alparslan","email":"emre@finedinemenu.com"},{"name":"burakkilic","email":"burakkilic@gmail.com"},{"name":"utku-fd","email":"utku@finedinemenu.com"},{"name":"barisakdogan","email":"baris@finedinemenu.com"}],"homepage":"https://github.com/finedine/fingerprint-react#readme","bugs":{"url":"https://github.com/finedine/fingerprint-react/issues"},"dist":{"shasum":"62a9e5f76b519d59b33c55f0b3206ecc1addbcaf","tarball":"https://registry.npmjs.org/@bambulabs/finedine-fingerprint-react/-/finedine-fingerprint-react-1.0.1.tgz","fileCount":15,"integrity":"sha512-gLdNmU+Zh5eP23KIfmKoHMwwJQhun3tTuEVXYfC8lxyS8WPOAKfYhJIE8ofZMm3hvaYkfbIe9mOCoRlggw79jw==","signatures":[{"sig":"MEYCIQDKvySLrlFsuoJrBjoDzLXPfFrqfB5LYOVxkYWnkaQo+wIhAJkzObyB/xv3JKhtuXHcFKHHFfvGsZD7AV8lRJsihAud","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":312232},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"63fbbd417d37ec1ab7d33a9b1c7297989e95f44d","scripts":{"dev":"rollup -c -w","test":"vitest run","build":"rollup -c rollup.config.mjs","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"emre.alparslan","email":"emre@finedinemenu.com"},"repository":{"url":"git+https://github.com/finedine/fingerprint-react.git","type":"git"},"_npmVersion":"6.14.12","description":"React hooks for Finedine visitor fingerprinting","directories":{},"_nodeVersion":"18.0.0","dependencies":{"@fingerprintjs/fingerprintjs":"^4.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","react":"^18.2.0","rollup":"^4.9.1","vitest":"^1.6.0","typescript":"^5.3.3","@types/react":"^18.2.45","@testing-library/react":"^14.3.1","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.4.6","@rollup/plugin-node-resolve":"^15.2.3"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/finedine-fingerprint-react_1.0.1_1767794857283_0.10302842609570995","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bambulabs/finedine-fingerprint-react","version":"1.0.2","keywords":["fingerprint","visitor-tracking","react","hooks","finedine"],"license":"MIT","_id":"@bambulabs/finedine-fingerprint-react@1.0.2","maintainers":[{"name":"emre.alparslan","email":"emre@finedinemenu.com"},{"name":"burakkilic","email":"burakkilic@gmail.com"},{"name":"utku-fd","email":"utku@finedinemenu.com"},{"name":"barisakdogan","email":"baris@finedinemenu.com"}],"homepage":"https://github.com/finedine/fingerprint-react#readme","bugs":{"url":"https://github.com/finedine/fingerprint-react/issues"},"dist":{"shasum":"b02db7ddcfbaaa69e493e387c5d971b1f8dbeeda","tarball":"https://registry.npmjs.org/@bambulabs/finedine-fingerprint-react/-/finedine-fingerprint-react-1.0.2.tgz","fileCount":15,"integrity":"sha512-NXOuoq38JWcUBASEgMcJIyKTfM0SEWiEL93qwibUZj46KBGYBvDuM1XEXin2GCtuRTj0+sXhmaKnNwLDjPaVIw==","signatures":[{"sig":"MEUCIQDjmLyd6SFeCFh/TUPFKKhbu+Yl/N3D794eOyLgRji1fAIgU+hIIEGCZvBzqtJYTZ6ySoFrZ8U1Mx+AwY6Is+yoT7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":312916},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"0e94f0d5adfe7559743a60739ddcae46401a739f","scripts":{"dev":"rollup -c -w","test":"vitest run","build":"rollup -c rollup.config.mjs","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"emre.alparslan","email":"emre@finedinemenu.com"},"repository":{"url":"git+https://github.com/finedine/fingerprint-react.git","type":"git"},"_npmVersion":"6.14.12","description":"React hooks for Finedine visitor fingerprinting","directories":{},"_nodeVersion":"18.0.0","dependencies":{"@fingerprintjs/fingerprintjs":"^4.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","react":"^18.2.0","rollup":"^4.9.1","vitest":"^1.6.0","typescript":"^5.3.3","@types/react":"^18.2.45","@testing-library/react":"^14.3.1","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.4.6","@rollup/plugin-node-resolve":"^15.2.3"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/finedine-fingerprint-react_1.0.2_1772442968026_0.8027619315974446","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bambulabs/finedine-fingerprint-react","version":"1.0.3","keywords":["fingerprint","visitor-tracking","react","hooks","finedine"],"license":"MIT","_id":"@bambulabs/finedine-fingerprint-react@1.0.3","maintainers":[{"name":"emre.alparslan","email":"emre@finedinemenu.com"},{"name":"burakkilic","email":"burakkilic@gmail.com"},{"name":"utku-fd","email":"utku@finedinemenu.com"},{"name":"barisakdogan","email":"baris@finedinemenu.com"}],"homepage":"https://github.com/finedine/fingerprint-react#readme","bugs":{"url":"https://github.com/finedine/fingerprint-react/issues"},"dist":{"shasum":"34dc99a014356c8ce72e973ac20490434c7adbe5","tarball":"https://registry.npmjs.org/@bambulabs/finedine-fingerprint-react/-/finedine-fingerprint-react-1.0.3.tgz","fileCount":15,"integrity":"sha512-4xzKyAz42LfZD+SqZzqQujqiZpUj6zCoRCgCa+SSUaA4gRdWaLa0uEKXloDrJc0rfKgus7tEmCXmH81lpe3tjQ==","signatures":[{"sig":"MEQCIA8wftGQ+ZGQ0D24Ian/x0D8ihaBMoGpZWkWrA/ZUOtuAiBtrLdvsDbM8+GAgahgvYIMxH3t9yWbp4ap47EROITR9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":311302},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"fcc6cb215bdebd9c56d8110798c9c65b5014a9b0","scripts":{"dev":"rollup -c -w","test":"vitest run","build":"rollup -c rollup.config.mjs","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"emre.alparslan","email":"emre@finedinemenu.com"},"repository":{"url":"git+https://github.com/finedine/fingerprint-react.git","type":"git"},"_npmVersion":"6.14.12","description":"React hooks for Finedine visitor fingerprinting","directories":{},"_nodeVersion":"18.0.0","dependencies":{"@fingerprintjs/fingerprintjs":"^4.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","react":"^18.2.0","rollup":"^4.9.1","vitest":"^1.6.0","typescript":"^5.3.3","@types/react":"^18.2.45","@testing-library/react":"^14.3.1","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.4.6","@rollup/plugin-node-resolve":"^15.2.3"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/finedine-fingerprint-react_1.0.3_1772444133987_0.77910834712275","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bambulabs/finedine-fingerprint-react","version":"1.0.4","keywords":["fingerprint","visitor-tracking","react","hooks","finedine"],"license":"MIT","_id":"@bambulabs/finedine-fingerprint-react@1.0.4","maintainers":[{"name":"emre.alparslan","email":"emre@finedinemenu.com"},{"name":"burakkilic","email":"burakkilic@gmail.com"},{"name":"utku-fd","email":"utku@finedinemenu.com"},{"name":"barisakdogan","email":"baris@finedinemenu.com"}],"homepage":"https://github.com/finedine/fingerprint-react#readme","bugs":{"url":"https://github.com/finedine/fingerprint-react/issues"},"dist":{"shasum":"72508082b3cfc971aec0f589ce7640d07009bafb","tarball":"https://registry.npmjs.org/@bambulabs/finedine-fingerprint-react/-/finedine-fingerprint-react-1.0.4.tgz","fileCount":15,"integrity":"sha512-dWQk5aoSYzSKd2IO6ZZIHJh5TusNu0enZ6HnM03x+z3GfGI35z30y32sXL66hfteieFc9+sE3t8glm44zfA2cA==","signatures":[{"sig":"MEUCIElf3E4H43jd2gBtUHI+RXvHLKtuGr3bXaewHwUdpLzeAiEAwkJPnv0LR9YjUF6xfh6Hhy7hJbFEVY8CCDAjnfiOC3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":311302},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"94484d1e4bd1e89a62e1557982b770c83fac2774","scripts":{"dev":"rollup -c -w","test":"vitest run","build":"rollup -c rollup.config.mjs","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"emre.alparslan","email":"emre@finedinemenu.com"},"repository":{"url":"git+https://github.com/finedine/fingerprint-react.git","type":"git"},"_npmVersion":"6.14.12","description":"React hooks for Finedine visitor fingerprinting","directories":{},"_nodeVersion":"18.0.0","dependencies":{"@fingerprintjs/fingerprintjs":"^4.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","react":"^18.2.0","rollup":"^4.9.1","vitest":"^1.6.0","typescript":"^5.3.3","@types/react":"^18.2.45","@testing-library/react":"^14.3.1","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.4.6","@rollup/plugin-node-resolve":"^15.2.3"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/finedine-fingerprint-react_1.0.4_1772444177557_0.6546592507541071","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bambulabs/finedine-fingerprint-react","version":"1.0.5","publishConfig":{"access":"public"},"description":"React hooks for Finedine visitor fingerprinting","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","scripts":{"build":"rollup -c rollup.config.mjs","dev":"rollup -c -w","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"peerDependencies":{"react":">=16.8.0"},"dependencies":{"@fingerprintjs/fingerprintjs":"^4.2.2"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.4.6","@testing-library/react":"^14.3.1","@types/react":"^18.2.45","jsdom":"^24.0.0","react":"^18.2.0","rollup":"^4.9.1","typescript":"^5.3.3","vitest":"^1.6.0"},"keywords":["fingerprint","visitor-tracking","react","hooks","finedine"],"repository":{"type":"git","url":"git+https://github.com/finedine/fingerprint-react.git"},"bugs":{"url":"https://github.com/finedine/fingerprint-react/issues"},"homepage":"https://github.com/finedine/fingerprint-react#readme","license":"MIT","gitHead":"5230e6135114c1d7b980647bb37bff11ca4a941c","_id":"@bambulabs/finedine-fingerprint-react@1.0.5","_nodeVersion":"18.0.0","_npmVersion":"6.14.12","dist":{"integrity":"sha512-BI8gFDjMzU3QE+qgLELFNscOXUDE9moFdAux69G8lBfCwl2yuR649qD4OoJPWZwd23DTTWii8x2D2MDsEBDdAQ==","shasum":"52028328ff9008ab5d7672182f62a2e76454a421","tarball":"https://registry.npmjs.org/@bambulabs/finedine-fingerprint-react/-/finedine-fingerprint-react-1.0.5.tgz","fileCount":15,"unpackedSize":314188,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDeceIqqnHM2ZB61kFEvUxuYKGByC3+brSJbKaOeyNxEQIhAJG2U6p90gFD1xVff+ho0JmCSLeVZQMR1Q0O99pdn9Yv"}]},"_npmUser":{"name":"emre.alparslan","email":"emre@finedinemenu.com"},"directories":{},"maintainers":[{"name":"emre.alparslan","email":"emre@finedinemenu.com"},{"name":"burakkilic","email":"burakkilic@gmail.com"},{"name":"utku-fd","email":"utku@finedinemenu.com"},{"name":"barisakdogan","email":"baris@finedinemenu.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/finedine-fingerprint-react_1.0.5_1772462735665_0.6135777059992971"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-07T09:05:13.005Z","modified":"2026-03-02T14:45:36.036Z","1.0.0":"2026-01-07T09:05:13.233Z","1.0.1":"2026-01-07T14:07:37.454Z","1.0.2":"2026-03-02T09:16:08.175Z","1.0.3":"2026-03-02T09:35:34.137Z","1.0.4":"2026-03-02T09:36:17.710Z","1.0.5":"2026-03-02T14:45:35.885Z"},"bugs":{"url":"https://github.com/finedine/fingerprint-react/issues"},"license":"MIT","homepage":"https://github.com/finedine/fingerprint-react#readme","keywords":["fingerprint","visitor-tracking","react","hooks","finedine"],"repository":{"type":"git","url":"git+https://github.com/finedine/fingerprint-react.git"},"description":"React hooks for Finedine visitor fingerprinting","maintainers":[{"name":"emre.alparslan","email":"emre@finedinemenu.com"},{"name":"burakkilic","email":"burakkilic@gmail.com"},{"name":"utku-fd","email":"utku@finedinemenu.com"},{"name":"barisakdogan","email":"baris@finedinemenu.com"}],"readme":"# @bambulabs/finedine-fingerprint-react\n\nReact hooks and components for Finedine visitor fingerprinting.\n\n## Installation\n\n```bash\nnpm install @bambulabs/finedine-fingerprint-react\n```\n\n## Quick Start\n\n### Option 1: Simple Hook\n\n```jsx\nimport { useVisitorId } from '@bambulabs/finedine-fingerprint-react';\n\nfunction App() {\n  const { visitorId, isLoading, error } = useVisitorId();\n\n  if (isLoading) return <div>Loading...</div>;\n  if (error) return <div>Error: {error}</div>;\n\n  return <div>Visitor ID: {visitorId}</div>;\n}\n```\n\n### Option 2: Full Visitor Data\n\n```jsx\nimport { useVisitorTracking } from '@bambulabs/finedine-fingerprint-react';\n\nfunction App() {\n  const { visitor, isLoading } = useVisitorTracking();\n\n  if (isLoading) return <div>Loading...</div>;\n\n  return (\n    <div>\n      <p>ID: {visitor?.id}</p>\n      <p>Visits: {visitor?.visitCount}</p>\n      <p>Browser: {visitor?.device?.browser?.name}</p>\n      <p>Device: {visitor?.device?.device?.type}</p>\n    </div>\n  );\n}\n```\n\n### Option 3: Context Provider (Recommended for Apps)\n\n```jsx\n// App.jsx\nimport { FingerprintProvider } from '@bambulabs/finedine-fingerprint-react';\n\nfunction App() {\n  return (\n    <FingerprintProvider>\n      <YourApp />\n    </FingerprintProvider>\n  );\n}\n\n// Any component\nimport { useFingerprint } from '@bambulabs/finedine-fingerprint-react';\n\nfunction Header() {\n  const { visitor, visitorId } = useFingerprint();\n  return <span>Welcome! Visit #{visitor?.visitCount}</span>;\n}\n```\n\n## API Reference\n\n### Hooks\n\n#### `useVisitorId(options?)`\n\nSimple hook returning just the visitor ID.\n\n```typescript\nconst { visitorId, isLoading, error, identify, clear } = useVisitorId({\n  apiUrl: 'https://track.finedinemenu.com/fingerprint', // optional\n  storageKey: 'fp_visitor_id', // optional\n  autoIdentify: true, // optional, default: true\n});\n```\n\n#### `useVisitorTracking(options?)`\n\nFull hook with complete visitor data.\n\n```typescript\nconst { visitor, isLoading, error, identify, clear } = useVisitorTracking({\n  apiUrl: 'https://track.finedinemenu.com/fingerprint',\n  storageKey: 'fp_visitor_id',\n  autoIdentify: true,\n});\n```\n\n#### `useFingerprint()`\n\nContext hook (use within `FingerprintProvider`).\n\n```typescript\nconst { visitor, visitorId, isLoading, error, identify, clear } = useFingerprint();\n```\n\n### Components\n\n#### `<FingerprintProvider>`\n\nContext provider for app-wide visitor tracking.\n\n```jsx\n<FingerprintProvider\n  apiUrl=\"https://track.finedinemenu.com/fingerprint\"\n  storageKey=\"fp_visitor_id\"\n  autoIdentify={true}\n>\n  {children}\n</FingerprintProvider>\n```\n\n### Standalone Client\n\nFor non-React usage:\n\n```javascript\nimport { createFingerprintClient } from '@bambulabs/finedine-fingerprint-react';\n\nconst client = createFingerprintClient({\n  apiUrl: 'https://track.finedinemenu.com/fingerprint',\n});\n\n// Identify visitor\nconst visitor = await client.identify();\nconsole.log(visitor.id, visitor.visitCount);\n\n// Get stored ID\nconst storedId = client.getStoredId();\n\n// Clear stored data\nclient.clear();\n```\n\n## Types\n\n```typescript\ninterface Visitor {\n  id: string;\n  fingerprint: string;\n  isNew: boolean;\n  firstSeen: Date;\n  visitCount: number;\n  device: {\n    browser: { name: string; version: string };\n    os: { name: string; version: string };\n    device: { type: string; vendor: string; model: string };\n  };\n}\n```\n\n## Configuration\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `apiUrl` | `string` | `https://track.finedinemenu.com/fingerprint` | API endpoint |\n| `storageKey` | `string` | `fp_visitor_id` | localStorage/cookie key |\n| `autoIdentify` | `boolean` | `true` | Auto-identify on mount |\n\n## How It Works\n\n1. **Check localStorage** - Fastest, checked first\n2. **Check cookie** - Fallback (server-set)\n3. **Generate fingerprint** - Ultimate fallback using FingerprintJS\n\nThis ensures visitors are always identified, even after clearing storage.\n\n## License\n\nMIT\n\n","readmeFilename":"README.md"}