{"_id":"@adddog/trivial-user-agent-detector","_rev":"8-ed5baa5a5496eb49fad8a78e003f74f4","name":"@adddog/trivial-user-agent-detector","dist-tags":{"latest":"0.0.10"},"versions":{"0.0.2":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.2","_id":"@adddog/trivial-user-agent-detector@0.0.2","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"dist":{"shasum":"3f73ef4be12638db476c9f89354067a1a63ce27f","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.2.tgz","fileCount":62,"integrity":"sha512-LUUNGt6BZSkeDwkRQV3vGDrhdYBl/ZJ1HftihTmhM7D9hau6vMxLF2PT6ImMbMZQbfQZFpiKfUQQePDRzuP50w==","signatures":[{"sig":"MEYCIQDhIuNtKARJS5z/eI7VnqvM1e4sfP+e6x8772TQ6D2uCAIhAJ8ZYSXkCBm/Fga2Wym1ms82m571PWNu0bsIK41/e6Au","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371450},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","require":"./dist/types.cjs"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","require":"./dist/client-hints.cjs"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","require":"./dist/device-detection.cjs"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","require":"./dist/android-detection.cjs"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs"}},"gitHead":"4be32118b4c5b4033e771d3205e07c6375740f57","scripts":{"dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","knip":"knip","lint":"eslint .","test":"vitest run","build":"tsup","types":"tsc -p tsconfig.typecheck.json","prepack":"pnpm run prepublishOnly","release":"bumpp --yes --no-push --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","prepublishOnly":"pnpm run test && pnpm run lint && pnpm run types && pnpm run build"},"_npmUser":{"name":"selie","email":"samradelie@gmail.com"},"_npmVersion":"11.4.2","description":"> Type-safe, functional user agent detection for modern browsers","directories":{},"_nodeVersion":"24.4.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bumpp":"^10.3.1","eslint":"^9.37.0","unbuild":"^3.6.1","typescript":"^5.9.3","@adddog/eslint":"^0.0.6","@adddog/build-configs":"^0.0.1","@adddog/config-defaults":"^0.0.3"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"_npmOperationalInternal":{"tmp":"tmp/trivial-user-agent-detector_0.0.2_1760402949253_0.9107949009938809","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.3","_id":"@adddog/trivial-user-agent-detector@0.0.3","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"dist":{"shasum":"494ca0d7240137adc03b8527ca0ee1a77a7ecc8a","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.3.tgz","fileCount":62,"integrity":"sha512-vaysXd5PypXQ5tbCylskMs779hXIzNQGQ5ApdGGaMP5fxW6nLgdKUxBdB3qLcAvFbJluSGhNaxZXs7c8aFJKnA==","signatures":[{"sig":"MEUCIQCmLcMurs0P6NZcanu9MZR2P1q9Tjs7nPTrl79wT1uQKQIgNBHUQoMOr/D+H0gXcpzeEqOPL2ONpGfzsEcyV6A5tkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381049},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-trivial-user-agent-detector-0.0.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.cjs"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","default":"./dist/client-hints.js","require":"./dist/client-hints.cjs"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","default":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","default":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","default":"./dist/device-detection.js","require":"./dist/device-detection.cjs"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","default":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","default":"./dist/android-detection.js","require":"./dist/android-detection.cjs"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","default":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","default":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs"}},"scripts":{"dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch"},"_npmUser":{"name":"selie","email":"samradelie@gmail.com"},"_resolved":"/private/var/folders/rp/3hs8d62d09x33sqq4jxfx8th0000gn/T/2e9a9f545ba903115456faf7b8678b05/adddog-trivial-user-agent-detector-0.0.3.tgz","_integrity":"sha512-vaysXd5PypXQ5tbCylskMs779hXIzNQGQ5ApdGGaMP5fxW6nLgdKUxBdB3qLcAvFbJluSGhNaxZXs7c8aFJKnA==","_npmVersion":"11.4.2","description":"> Type-safe, functional user agent detection for modern browsers","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.83.1","tsup":"^8.5.0","bumpp":"^10.4.1","eslint":"^10.0.0","vitest":"^4.0.18","unbuild":"^3.6.1","typescript":"^5.9.3","@adddog/build-configs":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/trivial-user-agent-detector_0.0.3_1771611273211_0.9891031530821011","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.4","_id":"@adddog/trivial-user-agent-detector@0.0.4","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"dist":{"shasum":"5f6425c2529e24ed07cb3ce365a39bd302d70b71","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.4.tgz","fileCount":62,"integrity":"sha512-185pRH1ch6UrryfvyfG2ArElsTHcZfbac6H6c2QZL8SCflla4heIjxm+Z8urBrCXoqm2id/nKEHoXJa0B3xHYw==","signatures":[{"sig":"MEUCIQC6ntzJqMldsGJezKiZQ3lIYc4gVYQhrqcl1aQXYEd6uwIgVNqpzpr13ota5Ei803ZS74tkQt69f2zHxjK6pCit08Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381049},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-trivial-user-agent-detector-0.0.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.cjs"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","default":"./dist/client-hints.js","require":"./dist/client-hints.cjs"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","default":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","default":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","default":"./dist/device-detection.js","require":"./dist/device-detection.cjs"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","default":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","default":"./dist/android-detection.js","require":"./dist/android-detection.cjs"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","default":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","default":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs"}},"scripts":{"dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8c963b31-281c-4c99-8f3b-7a3c58ae5242"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/trivial-user-agent-detector/adddog-trivial-user-agent-detector-0.0.4.tgz","_integrity":"sha512-185pRH1ch6UrryfvyfG2ArElsTHcZfbac6H6c2QZL8SCflla4heIjxm+Z8urBrCXoqm2id/nKEHoXJa0B3xHYw==","_npmVersion":"11.10.1","description":"> Type-safe, functional user agent detection for modern browsers","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.83.1","tsup":"^8.5.0","bumpp":"^10.4.1","eslint":"^10.0.0","vitest":"^4.0.18","unbuild":"^3.6.1","typescript":"^5.9.3","@adddog/build-configs":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/trivial-user-agent-detector_0.0.4_1771645088301_0.17591017467649483","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.6","_id":"@adddog/trivial-user-agent-detector@0.0.6","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"dist":{"shasum":"a9c65b550b7e1951925afd2634511fdc0fb2ffae","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.6.tgz","fileCount":62,"integrity":"sha512-1bsGpdnJ7U7KlIX4E6gt7OqhbiKWou6Y3hRSAHIpnQUZamu43p+goTsVPOBV+SBFIMQY5AkBLjzZYrgtcuznyA==","signatures":[{"sig":"MEUCIQDR3S6ul645FSdGLCDN4qXoKfvyXWY0HzAE8U7P4FMFAQIgbgXqxqcCuw0JjrvrjLF728G/xASDrLO5vp5IKTNeJfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381127},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-trivial-user-agent-detector-0.0.6.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.cjs"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","default":"./dist/client-hints.js","require":"./dist/client-hints.cjs"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","default":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","default":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","default":"./dist/device-detection.js","require":"./dist/device-detection.cjs"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","default":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","default":"./dist/android-detection.js","require":"./dist/android-detection.cjs"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","default":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","default":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs"}},"scripts":{"dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","version:patch":"npm version patch --no-git-tag-version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8c963b31-281c-4c99-8f3b-7a3c58ae5242"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/trivial-user-agent-detector/adddog-trivial-user-agent-detector-0.0.6.tgz","_integrity":"sha512-1bsGpdnJ7U7KlIX4E6gt7OqhbiKWou6Y3hRSAHIpnQUZamu43p+goTsVPOBV+SBFIMQY5AkBLjzZYrgtcuznyA==","_npmVersion":"11.10.1","description":"> Type-safe, functional user agent detection for modern browsers","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.85.0","tsup":"^8.5.1","bumpp":"^10.4.1","eslint":"^10.0.2","vitest":"^4.0.18","unbuild":"^3.6.1","typescript":"^5.9.3","@adddog/build-configs":"^0.0.6","@adddog/monorepo-consistency":"0.0.11"},"_npmOperationalInternal":{"tmp":"tmp/trivial-user-agent-detector_0.0.6_1771912684628_0.0830879038323864","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.7","_id":"@adddog/trivial-user-agent-detector@0.0.7","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"dist":{"shasum":"4e9f4a872ece277dc03715e671a773ff7e32a95c","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.7.tgz","fileCount":62,"integrity":"sha512-6/EcJp+srUQsshRkY4gJ22OB98cnT1IiQdo3JnVw3s1uyfVQKY3hBhij0AnkwYez5wDYbzkAHsx1hud4MXj0/Q==","signatures":[{"sig":"MEQCIFO/fog0vrI/Swrq/0Nz8Gce6Vqk4jy61ya0+fmlci0VAiAlV05Y5MY6MBlt5lswDba6rJ3BHw1gmpw39QXXrZPn6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381127},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-trivial-user-agent-detector-0.0.7.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.cjs"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","default":"./dist/client-hints.js","require":"./dist/client-hints.cjs"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","default":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","default":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","default":"./dist/device-detection.js","require":"./dist/device-detection.cjs"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","default":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","default":"./dist/android-detection.js","require":"./dist/android-detection.cjs"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","default":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","default":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs"}},"scripts":{"dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","version:patch":"npm version patch --no-git-tag-version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8c963b31-281c-4c99-8f3b-7a3c58ae5242"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/trivial-user-agent-detector/adddog-trivial-user-agent-detector-0.0.7.tgz","_integrity":"sha512-6/EcJp+srUQsshRkY4gJ22OB98cnT1IiQdo3JnVw3s1uyfVQKY3hBhij0AnkwYez5wDYbzkAHsx1hud4MXj0/Q==","_npmVersion":"11.10.1","description":"> Type-safe, functional user agent detection for modern browsers","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.85.0","tsup":"^8.5.1","bumpp":"^10.4.1","eslint":"^10.0.2","vitest":"^4.0.18","unbuild":"^3.6.1","typescript":"^5.9.3","@adddog/build-configs":"^0.0.6","@adddog/monorepo-consistency":"0.0.12"},"_npmOperationalInternal":{"tmp":"tmp/trivial-user-agent-detector_0.0.7_1771914327720_0.20093703753361591","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.8","_id":"@adddog/trivial-user-agent-detector@0.0.8","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"dist":{"shasum":"e3632ddea57b01e1d92ecab14183df7c660cef81","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.8.tgz","fileCount":62,"integrity":"sha512-Mhy/1drmRWKp+/oh06SONl9amncKCAxFHNmFXuFiga6M6uBPrb1zHCi9Bd3WMgD09ENUpcmcdGnA3y9t8vM/cg==","signatures":[{"sig":"MEYCIQCkGlFXOkxKwSWysCjKV9FgfcpOZstBja8sl/0ENOnt+gIhAJuwntcmdz9AFf5+XtsR1/D6l8poyNESpXZQHDdV2L9W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381127},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-trivial-user-agent-detector-0.0.8.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.cjs"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","default":"./dist/client-hints.js","require":"./dist/client-hints.cjs"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","default":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","default":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","default":"./dist/device-detection.js","require":"./dist/device-detection.cjs"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","default":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","default":"./dist/android-detection.js","require":"./dist/android-detection.cjs"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","default":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","default":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs"}},"scripts":{"dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","version:patch":"npm version patch --no-git-tag-version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8c963b31-281c-4c99-8f3b-7a3c58ae5242"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/trivial-user-agent-detector/adddog-trivial-user-agent-detector-0.0.8.tgz","_integrity":"sha512-Mhy/1drmRWKp+/oh06SONl9amncKCAxFHNmFXuFiga6M6uBPrb1zHCi9Bd3WMgD09ENUpcmcdGnA3y9t8vM/cg==","_npmVersion":"11.10.1","description":"> Type-safe, functional user agent detection for modern browsers","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.85.0","tsup":"^8.5.1","bumpp":"^10.4.1","eslint":"^10.0.2","vitest":"^4.0.18","unbuild":"^3.6.1","typescript":"^5.9.3","@adddog/build-configs":"^0.0.6","@adddog/monorepo-consistency":"0.0.13"},"_npmOperationalInternal":{"tmp":"tmp/trivial-user-agent-detector_0.0.8_1771947560594_0.09676700766617752","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.9","_id":"@adddog/trivial-user-agent-detector@0.0.9","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"dist":{"shasum":"c740cf1bad9ee08b274615c4da1d634511eeabc4","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.9.tgz","fileCount":62,"integrity":"sha512-kBi5caCf+EzLWf/HDgs1uoY1YrXu5kfeY8DgCGJGPDHGkZ6gBcewwGrwWsVt45/iheGobjYayGM3N1wemw4Z8g==","signatures":[{"sig":"MEUCIQDO6woDQdH6dloUVFFL4hZ/SCdOyIx1pJfRQcFPqpa0fQIgZv438SkCa3X6jJXa77/MYrbTBQ2SZirt0KAbPQGEl3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381127},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-trivial-user-agent-detector-0.0.9.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.cjs"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","default":"./dist/client-hints.js","require":"./dist/client-hints.cjs"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","default":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","default":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","default":"./dist/device-detection.js","require":"./dist/device-detection.cjs"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","default":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","default":"./dist/android-detection.js","require":"./dist/android-detection.cjs"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","default":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","default":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs"}},"scripts":{"dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","version:patch":"npm version patch --no-git-tag-version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8c963b31-281c-4c99-8f3b-7a3c58ae5242"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/trivial-user-agent-detector/adddog-trivial-user-agent-detector-0.0.9.tgz","_integrity":"sha512-kBi5caCf+EzLWf/HDgs1uoY1YrXu5kfeY8DgCGJGPDHGkZ6gBcewwGrwWsVt45/iheGobjYayGM3N1wemw4Z8g==","_npmVersion":"11.10.1","description":"> Type-safe, functional user agent detection for modern browsers","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.85.0","tsup":"^8.5.1","bumpp":"^10.4.1","eslint":"^10.0.2","vitest":"^4.0.18","unbuild":"^3.6.1","typescript":"^5.9.3","@adddog/build-configs":"^0.0.6","@adddog/monorepo-consistency":"0.0.14"},"_npmOperationalInternal":{"tmp":"tmp/trivial-user-agent-detector_0.0.9_1771952132162_0.9971335940677366","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@adddog/trivial-user-agent-detector","version":"0.0.10","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.js"},"./android-detection":{"types":"./dist/android-detection.d.ts","import":"./dist/android-detection.js","require":"./dist/android-detection.cjs","default":"./dist/android-detection.js"},"./browser-detection":{"types":"./dist/browser-detection.d.ts","import":"./dist/browser-detection.js","require":"./dist/browser-detection.cjs","default":"./dist/browser-detection.js"},"./capability-detection":{"types":"./dist/capability-detection.d.ts","import":"./dist/capability-detection.js","require":"./dist/capability-detection.cjs","default":"./dist/capability-detection.js"},"./client-hints":{"types":"./dist/client-hints.d.ts","import":"./dist/client-hints.js","require":"./dist/client-hints.cjs","default":"./dist/client-hints.js"},"./cpu-detection":{"types":"./dist/cpu-detection.d.ts","import":"./dist/cpu-detection.js","require":"./dist/cpu-detection.cjs","default":"./dist/cpu-detection.js"},"./device-detection":{"types":"./dist/device-detection.d.ts","import":"./dist/device-detection.js","require":"./dist/device-detection.cjs","default":"./dist/device-detection.js"},"./engine-detection":{"types":"./dist/engine-detection.d.ts","import":"./dist/engine-detection.js","require":"./dist/engine-detection.cjs","default":"./dist/engine-detection.js"},"./ios-detection":{"types":"./dist/ios-detection.d.ts","import":"./dist/ios-detection.js","require":"./dist/ios-detection.cjs","default":"./dist/ios-detection.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","require":"./dist/types.cjs","default":"./dist/types.js"}},"main":"./dist/index.cjs","types":"./dist/index.d.ts","devDependencies":{"@adddog/build-configs":"^0.0.6","bumpp":"^10.4.1","eslint":"^10.0.2","knip":"^5.85.0","tsup":"^8.5.1","tsx":"^4.21.0","typescript":"^5.9.3","unbuild":"^3.6.1","vitest":"^4.0.18","@adddog/monorepo-consistency":"0.0.15"},"engines":{"node":">= 22","pnpm":">= 10","npm":">= 11"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","lint":"eslint .","lint:fix":"eslint --fix .","types":"tsc -p tsconfig.typecheck.json","dev":"tsx src/cli.ts","demo":"python3 -m http.server 8765","release":"bumpp --yes --no-push --no-tag --release patch","build:watch":"unbuild --watch","test":"vitest --watch=false","knip":"knip","version:patch":"npm version patch --no-git-tag-version"},"_id":"@adddog/trivial-user-agent-detector@0.0.10","description":"> Type-safe, functional user agent detection for modern browsers","_integrity":"sha512-LmZKIDqTftS86CpVYoNmD5qSjl3naxxcHi/YOw3vRvqltsShoa1WGiIAL+RWSFoOo1JteT1lZ1k2+p2PsU5WdQ==","_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/trivial-user-agent-detector/adddog-trivial-user-agent-detector-0.0.10.tgz","_from":"file:adddog-trivial-user-agent-detector-0.0.10.tgz","_nodeVersion":"24.4.0","_npmVersion":"11.10.1","dist":{"integrity":"sha512-LmZKIDqTftS86CpVYoNmD5qSjl3naxxcHi/YOw3vRvqltsShoa1WGiIAL+RWSFoOo1JteT1lZ1k2+p2PsU5WdQ==","shasum":"498bf7c0a10e1860cf1770b183d170d5424d31f1","tarball":"https://registry.npmjs.org/@adddog/trivial-user-agent-detector/-/trivial-user-agent-detector-0.0.10.tgz","fileCount":62,"unpackedSize":381128,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCCBxi7X+sVWgmsniALAHq+jwjLDgNBbr+VVo9Z/vRWcgIgRfYz2DhGEF5zpg4Z2hJYBDDWT+olNnr9sUCGZtGWoMs="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8c963b31-281c-4c99-8f3b-7a3c58ae5242"}},"directories":{},"maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/trivial-user-agent-detector_0.0.10_1771954455496_0.8193158880260887"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-14T00:49:09.171Z","modified":"2026-02-24T17:34:15.796Z","0.0.2":"2025-10-14T00:49:09.425Z","0.0.3":"2026-02-20T18:14:33.356Z","0.0.4":"2026-02-21T03:38:08.444Z","0.0.6":"2026-02-24T05:58:04.850Z","0.0.7":"2026-02-24T06:25:27.865Z","0.0.8":"2026-02-24T15:39:20.751Z","0.0.9":"2026-02-24T16:55:32.321Z","0.0.10":"2026-02-24T17:34:15.660Z"},"description":"> Type-safe, functional user agent detection for modern browsers","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"readme":"# @adddog/trivial-user-agent-detector\n\n> Type-safe, functional user agent detection for modern browsers\n\nA comprehensive, zero-dependency library for detecting browsers, devices, capabilities, and features. Built with TypeScript, functional programming principles, and complete immutability.\n\n![Features](https://raw.githubusercontent.com/samradical/readme-images/refs/heads/main/crt-fs8.png)\n\n✨ **Browser Detection** - Chrome, Firefox, Safari, Edge, Opera with version numbers\n📱 **Device Detection** - Mobile, tablet, desktop, smart TV, console, wearable, XR, embedded\n🔧 **CPU Architecture** - AMD64, ARM64, ARM, ARMHF, IA32, SPARC\n🎨 **Rendering Engines** - Blink, WebKit, Gecko, Trident, EdgeHTML, Presto\n💪 **Capabilities** - Touch, Canvas, WebGL, History API, Fullscreen\n🎯 **iOS & Android** - Specific device and version detection\n🔢 **Version Comparison** - Built-in helpers for browser version checks\n🌐 **Client Hints** - Modern User-Agent Client Hints API support\n🎁 **100% Type-Safe** - Full TypeScript support with strict types\n🌳 **Tree-Shakeable** - Import only what you need\n🚫 **Zero Dependencies** - No external dependencies\n\n## Installation\n\n```bash\npnpm add @adddog/trivial-user-agent-detector\n# or\nnpm install @adddog/trivial-user-agent-detector\n# or\nyarn add @adddog/trivial-user-agent-detector\n```\n\n## Quick Start\n\n```typescript\nimport { createDetector } from \"@adddog/trivial-user-agent-detector\";\n\nconst detector = createDetector();\n\n// Get all detection results at once\nconst all = detector.detectAll();\nconsole.log(all);\n\n// Or use individual methods\nconst browser = detector.detectBrowser();\nconsole.log(browser.browserName);     // \"Chrome\"\nconsole.log(browser.isChrome);        // true\nconsole.log(browser.chromeVersion);   // 119\n\n// Or use the convenience method\nconsole.log(detector.getBrowserName()); // \"Chrome\" | \"Firefox\" | \"Safari\" | \"Edge\" | \"Opera\" | \"IE\" | \"unknown\"\n\nconst device = detector.detectDevice();\nconsole.log(device.isMobile);         // true\nconsole.log(device.device);           // \"mobile\"\n```\n\n## Browser Name\n\nGet the browser name as a simple string:\n\n```typescript\nconst detector = createDetector();\nconst browser = detector.detectBrowser();\n\n// Get browser name from detection result\nconsole.log(browser.browserName); // \"Chrome\" | \"Firefox\" | \"Safari\" | \"Edge\" | \"Opera\" | \"unknown\"\n\n// Or use the convenience method (includes IE detection)\nconsole.log(detector.getBrowserName()); // \"Chrome\" | \"Firefox\" | \"Safari\" | \"Edge\" | \"Opera\" | \"IE\" | \"unknown\"\n```\n\nThe `browserName` property on `BrowserDetectionResult` provides a clean way to get the detected browser name without checking multiple boolean flags. The `getBrowserName()` method also checks for Internet Explorer.\n\n## Browser Version Detection\n\nDetect major browser versions and compare them easily:\n\n```typescript\nconst detector = createDetector();\nconst browser = detector.detectBrowser();\n\n// Version properties\nconsole.log(browser.chromeVersion);   // 119 or false\nconsole.log(browser.firefoxVersion);  // 120 or false\nconsole.log(browser.safariVersion);   // 17 or false\nconsole.log(browser.edgeVersion);     // 119 or false\nconsole.log(browser.operaVersion);    // 105 or false\n\n// Version comparison helpers\nif (detector.isBrowserVersionGreaterThanOrEqual(browser.chromeVersion, 100)) {\n    console.log(\"Chrome 100+ detected - feature is supported!\");\n}\n\nif (detector.isBrowserVersionLessThan(browser.firefoxVersion, 90)) {\n    console.log(\"Loading polyfill for older Firefox\");\n}\n\nif (detector.isBrowserVersionInRange(browser.safariVersion, 14, 17)) {\n    console.log(\"Safari version is in supported range\");\n}\n\n// Check for specific version bugs\nif (browser.isEdge && detector.isBrowserVersionEqual(browser.edgeVersion, 18)) {\n    console.log(\"Apply Edge 18 workaround\");\n}\n```\n\n## Device Detection\n\nDetect a wide range of device types:\n\n```typescript\nconst device = detector.detectDevice();\n\nconsole.log(device.device); // \"desktop\" | \"mobile\" | \"tablet\" | \"smarttv\" | \"console\" | \"wearable\" | \"xr\" | \"embedded\"\nconsole.log(device.isMobile);   // boolean\nconsole.log(device.isTablet);   // boolean\nconsole.log(device.isDesktop);  // boolean\n```\n\n## CPU Architecture\n\nDetect the underlying CPU architecture:\n\n```typescript\nconst cpu = detector.detectCPU();\n\nconsole.log(cpu.architecture); // \"amd64\" | \"arm64\" | \"arm\" | \"armhf\" | \"ia32\" | \"sparc\" | \"unknown\"\n```\n\n## Rendering Engine\n\nDetect the browser's rendering engine:\n\n```typescript\nconst engine = detector.detectEngine();\n\nconsole.log(engine.engine); // \"Blink\" | \"WebKit\" | \"Gecko\" | \"Trident\" | \"EdgeHTML\" | \"Presto\" | \"unknown\"\n```\n\n## iOS & Android Detection\n\nSpecific detection for mobile operating systems:\n\n```typescript\nconst ios = detector.detectIOS();\nconsole.log(ios.isIOS);        // boolean\nconsole.log(ios.isIphone);     // boolean\nconsole.log(ios.isIpad);       // boolean\nconsole.log(ios.isIpod);       // boolean\nconsole.log(ios.IOSVersion);   // number or false\n\nconst android = detector.detectAndroid();\nconsole.log(android.isAndroid);      // boolean\nconsole.log(android.isAndroidOld);   // Android < 4.4\nconsole.log(android.isAndroidStock); // Stock Android browser\n```\n\n## Capabilities Detection\n\nDetect browser capabilities and features:\n\n```typescript\nconst caps = detector.detectCapabilities();\n\nconsole.log(caps.hasTouch);      // Touch events support\nconsole.log(caps.hasCanvas);     // Canvas API\nconsole.log(caps.hasWebgl);      // WebGL support\nconsole.log(caps.hasHistory);    // History API\nconsole.log(caps.hasFullscreen); // Fullscreen API\nconsole.log(caps.hasMouseMove);  // Mouse move events\n\nconst ratio = detector.detectPixelRatio();\nconsole.log(ratio.pixelRatio);   // number (e.g., 2)\nconsole.log(ratio.isRetina);     // boolean\n```\n\n## Client Hints (Modern API)\n\nUse the modern User-Agent Client Hints API:\n\n```typescript\nconst hints = await detector.detectClientHints();\n\nif (hints.supported) {\n    console.log(hints.data?.platform);        // \"Windows\"\n    console.log(hints.data?.architecture);    // \"x86\"\n    console.log(hints.data?.mobile);          // false\n    console.log(hints.data?.platformVersion); // \"10.0.0\"\n}\n```\n\n## Complete API\n\n### Detector Interface\n\n```typescript\ninterface Detector {\n    // Detection methods\n    detectAll(): Readonly<DetectorResult>;\n    detectIOS(): Readonly<IOSDetectionResult>;\n    detectAndroid(): Readonly<AndroidDetectionResult>;\n    detectDevice(): Readonly<DeviceDetectionResult>;\n    detectIE(): Readonly<IEDetectionResult>;\n    detectBrowser(): Readonly<BrowserDetectionResult>;\n    detectCapabilities(): Readonly<CapabilityDetectionResult>;\n    detectDOMFeatures(): Readonly<DOMFeatureDetectionResult>;\n    detectPixelRatio(): Readonly<PixelRatioResult>;\n    detectEngine(): Readonly<EngineDetectionResult>;\n    detectCPU(): Readonly<CPUDetectionResult>;\n    detectClientHints(): Promise<Readonly<ClientHintsResult>>;\n\n    // Version comparison helpers\n    isBrowserVersionGreaterThan(version: number | false, compare: number): boolean;\n    isBrowserVersionGreaterThanOrEqual(version: number | false, compare: number): boolean;\n    isBrowserVersionLessThan(version: number | false, compare: number): boolean;\n    isBrowserVersionLessThanOrEqual(version: number | false, compare: number): boolean;\n    isBrowserVersionEqual(version: number | false, compare: number): boolean;\n    isBrowserVersionInRange(version: number | false, min: number, max: number): boolean;\n\n    // Browser name helper\n    getBrowserName(): BrowserName; // Includes IE detection\n}\n```\n\n### Browser Detection Result\n\n```typescript\ninterface BrowserDetectionResult {\n    isFirefox: boolean;\n    isChrome: boolean;\n    isSafari: boolean;\n    isEdge: boolean;\n    isOpera: boolean;\n    webp: boolean;                    // WebP format support\n    browserName: BrowserName;          // \"Chrome\" | \"Firefox\" | \"Safari\" | \"Edge\" | \"Opera\" | \"unknown\"\n    chromeVersion: number | false;\n    firefoxVersion: number | false;\n    safariVersion: number | false;\n    edgeVersion: number | false;\n    operaVersion: number | false;\n}\n```\n\n## Tree-Shakeable Imports\n\nFor optimal bundle size, import only what you need:\n\n```typescript\n// Import specific detection functions\nimport { detectBrowser } from \"@adddog/trivial-user-agent-detector/browser-detection\";\nimport { detectDevice } from \"@adddog/trivial-user-agent-detector/device-detection\";\nimport { detectCPU } from \"@adddog/trivial-user-agent-detector/cpu-detection\";\n\n// Use with explicit parameters\nconst browser = detectBrowser(navigator.userAgent, window.chrome, navigator.vendor);\nconst device = detectDevice(navigator.userAgent, false, false);\nconst cpu = detectCPU(navigator.userAgent, navigator.platform);\n```\n\n## Available Subpath Imports\n\n- `@adddog/trivial-user-agent-detector/android-detection`\n- `@adddog/trivial-user-agent-detector/browser-detection`\n- `@adddog/trivial-user-agent-detector/capability-detection`\n- `@adddog/trivial-user-agent-detector/client-hints`\n- `@adddog/trivial-user-agent-detector/cpu-detection`\n- `@adddog/trivial-user-agent-detector/device-detection`\n- `@adddog/trivial-user-agent-detector/engine-detection`\n- `@adddog/trivial-user-agent-detector/ios-detection`\n- `@adddog/trivial-user-agent-detector/types`\n\n## Real-World Examples\n\n### Feature Detection\n\n```typescript\nconst detector = createDetector();\nconst browser = detector.detectBrowser();\n\n// Check if browser supports a modern API\nif (browser.isChrome && detector.isBrowserVersionGreaterThanOrEqual(browser.chromeVersion, 100)) {\n    // Use modern Chrome API\n    useModernAPI();\n} else {\n    // Use polyfill\n    usePolyfill();\n}\n```\n\n### Responsive Design\n\n```typescript\nconst device = detector.detectDevice();\nconst caps = detector.detectCapabilities();\n\nif (device.isMobile && caps.hasTouch) {\n    // Mobile touch interface\n    enableTouchControls();\n} else {\n    // Desktop mouse interface\n    enableMouseControls();\n}\n```\n\n### Browser-Specific Workarounds\n\n```typescript\nconst browser = detector.detectBrowser();\nconst engine = detector.detectEngine();\n\nif (engine.engine === \"WebKit\" && browser.isSafari) {\n    // Safari-specific CSS\n    applySafariWorkaround();\n}\n\nif (browser.isEdge && detector.isBrowserVersionEqual(browser.edgeVersion, 18)) {\n    // Legacy Edge bug workaround\n    applyEdge18Fix();\n}\n```\n\n### Progressive Enhancement\n\n```typescript\nconst caps = detector.detectCapabilities();\nconst ratio = detector.detectPixelRatio();\n\nif (caps.hasWebgl) {\n    render3DGraphics();\n} else if (caps.hasCanvas) {\n    render2DGraphics();\n} else {\n    renderStaticImage();\n}\n\nif (ratio.isRetina) {\n    loadHighResImages();\n}\n```\n\n## Performance Notes\n\n- **Lazy Evaluation** - Detection functions only run when you request them\n- **Caching** - Results are cached after first access\n- **Immutability** - All results are frozen (Object.freeze) for safety\n- **Tree-Shaking** - Use subpath imports to minimize bundle size\n- **Zero Runtime Overhead** - No classes, no inheritance, pure functions\n\n## TypeScript Support\n\nFull TypeScript support with strict types:\n\n```typescript\nimport type {\n    DetectorResult,\n    BrowserDetectionResult,\n    DeviceType,\n    CPUArchitecture,\n    RenderingEngine,\n    BrowserVersion,\n} from \"@adddog/trivial-user-agent-detector\";\n\nconst detector = createDetector();\nconst result: DetectorResult = detector.detectAll();\n```\n\n## Browser Support\n\nWorks in all modern browsers and Node.js environments:\n\n- ✅ Chrome/Edge (Chromium)\n- ✅ Firefox\n- ✅ Safari (macOS/iOS)\n- ✅ Opera\n- ✅ Legacy Edge (EdgeHTML)\n- ✅ Internet Explorer 8-11\n- ✅ Node.js (server-side rendering)\n\n## Why This Library?\n\n- **Type-Safe**: Built with strict TypeScript, no `any` types\n- **Functional**: Pure functions, no classes, fully immutable\n- **Modern**: Supports latest APIs like Client Hints\n- **Comprehensive**: Detects browsers, devices, engines, CPUs, and more\n- **Battle-Tested**: 180+ unit tests covering edge cases\n- **Zero Dependencies**: No external packages required\n- **Small Bundle**: Tree-shakeable, import only what you need\n\n## License\n\nMIT\n\n## Contributing\n\nIssues and PRs welcome!\n","readmeFilename":"README.md"}