{"_id":"@absolutejs/devices","_rev":"10-a991ac419f587e8b9d5402db6a77a51c","name":"@absolutejs/devices","dist-tags":{"latest":"0.7.0"},"versions":{"0.0.1":{"name":"@absolutejs/devices","version":"0.0.1","author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/devices@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"521e70ce9f7afa3eb1976a584f235e829e589204","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.0.1.tgz","fileCount":19,"integrity":"sha512-2wDYz3vuZsh410Cp7gWteIpXrHRgokZBYp3dtT/aI2PDl+YQd97lR/ucgMbqAtV0e4S9pxkutHtEpOf3+T1zPA==","signatures":[{"sig":"MEQCIGiXzUcsEzDI2N0JplcfNo9/864UPRGAkkCFJg9KJQcBAiBhXjjhHwWEO2DiX9RF02t3rlBS7ANauq7IjiYgtCPSqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52074},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"521e70ce9f7afa3eb1976a584f235e829e589204","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-2wDYz3vuZsh410Cp7gWteIpXrHRgokZBYp3dtT/aI2PDl+YQd97lR/ucgMbqAtV0e4S9pxkutHtEpOf3+T1zPA==","repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.8.3","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.0.1_1787449527327_0.3294376186175638","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@absolutejs/devices","version":"0.0.2","author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/devices@0.0.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"98519b6d35239563b0f93105bbdf65e91bddf6b3","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.0.2.tgz","fileCount":19,"integrity":"sha512-XbLrD6YrKHT73V2LkPjjP/epidLbdMttJI3VNGzndGlgbypAYsvNn16Gv6bqDz+JkzUyW/ZPI+pbWWkVObYluA==","signatures":[{"sig":"MEQCIG3BH2OTH/RjccA++hBIm+mCUl4pPjz0C1VJpCx3LFdTAiBIWQ5Tfcp8UkUJGjnCKswc5xW9VfKsgA/XSNs1Viyo4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53470},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"98519b6d35239563b0f93105bbdf65e91bddf6b3","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-XbLrD6YrKHT73V2LkPjjP/epidLbdMttJI3VNGzndGlgbypAYsvNn16Gv6bqDz+JkzUyW/ZPI+pbWWkVObYluA==","repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.8.3","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.0.2_1787506490915_0.8907993157367222","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@absolutejs/devices","version":"0.0.3","author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/devices@0.0.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"051c794e80e1223957da352697f4a94445c109cc","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.0.3.tgz","fileCount":19,"integrity":"sha512-yxBvY/vMk+/4MSPjK04A4XpOMZxtaIKQ9IwzZe1jCNYgLAVJhDNSBsbjUdBNVDPFMnrbHNayAHdjDFrt1gAPqg==","signatures":[{"sig":"MEUCIAKx6tWtLd7cgGjOTGs3MNzK+K9Wngh4NPo1GbKvnDDCAiEAhM+I9z/vYRdmK6r4id74ZdEcJx/fGqSCfm2ne/PmYxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53618},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"051c794e80e1223957da352697f4a94445c109cc","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-yxBvY/vMk+/4MSPjK04A4XpOMZxtaIKQ9IwzZe1jCNYgLAVJhDNSBsbjUdBNVDPFMnrbHNayAHdjDFrt1gAPqg==","repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.8.3","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.0.3_1787679157904_0.33561943280927364","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@absolutejs/devices","version":"0.1.0","author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/devices@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"8687c2ab65605161f9be4d11c1da58436d78bacf","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.1.0.tgz","fileCount":19,"integrity":"sha512-Z+oTUfDacyyFfJO3hgnqNAgf+VduhOQw13wI9behgVRCHnWLB79W8Qq9jhEj2oNckoYF1WUem1s52+bNOMyntw==","signatures":[{"sig":"MEUCIQCnf2aZUqNBtyw58sQbgsw4aol88LgkpGSM1T+OIXDe8wIgaO9rixSBURqmkbikbuJx3AUoguOLitWGE4vyby/9QU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74059},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"gitHead":"2987a1efab25b41ae930e5d71c56b1b67e66ec55","scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.9.2","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.1.0_1787730701141_0.5149552131758306","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/devices","version":"0.2.0","author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/devices@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"09a5394e60dd746716fe473944d7a95f7f0eb6dd","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.2.0.tgz","fileCount":19,"integrity":"sha512-jGkjfRktWdiKgjz5rt0rdz3E11zy0cLx50+/esg5v4gC4ZhT5FyF3CtEU/MH1sBY18IvDEMzwLUm3RYzPJHGhg==","signatures":[{"sig":"MEQCIEhqGXBQrIc5JW/O2F7rNrnJeXSVUbU14jyOEe5uOAg1AiBhdSDIY/LXidhxv8ZYf3LM8xMq/3/KRodQgLOeoBRb4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90359},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"gitHead":"cd8ba088c5701d6c62add7bbf9263b07f2466237","scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.9.2","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.2.0_1787735073506_0.9179774704967043","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/devices","version":"0.3.0","author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/devices@0.3.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"d44402d6cdbf9e52a3288fd47d03f0553fb9bd4e","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.3.0.tgz","fileCount":19,"integrity":"sha512-N/KgsRnTls9rIHahovJhcmHXzKGj0pnJGKgQs2bRb1O5xMItHJEg97bhKBv6QB6pDpwf9IndVYw7IXL8wny7nQ==","signatures":[{"sig":"MEYCIQDMSnUsIz5epTHJfpoNuoe8vOZZ2ykzEUMxOQK1vh3dmAIhAIEkAQq0R4kHQ94O0s9aUoNmOc9S/r5dl2jFVNvEhorw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115503},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"d44402d6cdbf9e52a3288fd47d03f0553fb9bd4e","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-N/KgsRnTls9rIHahovJhcmHXzKGj0pnJGKgQs2bRb1O5xMItHJEg97bhKBv6QB6pDpwf9IndVYw7IXL8wny7nQ==","repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.8.3","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.3.0_1787753058151_0.9823651137123341","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@absolutejs/devices","version":"0.4.0","author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/devices@0.4.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"b5757279611c4c8bd6ce0e46bb8576c121bbca53","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.4.0.tgz","fileCount":19,"integrity":"sha512-71hIrLXjCSNQPdwS3rjyyJI9snG1e4nE4CFtOZ6mQLd/4WZRcJSfri7cSOOh7wmM8wn4rPB/lfPf19S3Syw8sQ==","signatures":[{"sig":"MEUCIAT0tom5khipyLCeF94kvthtZZVR3ddV04eVUYCCOBJhAiEArOOTkrX5AbVtj9sJ7maH8ccepJh6AD4aWMGseegABlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136087},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"b5757279611c4c8bd6ce0e46bb8576c121bbca53","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-71hIrLXjCSNQPdwS3rjyyJI9snG1e4nE4CFtOZ6mQLd/4WZRcJSfri7cSOOh7wmM8wn4rPB/lfPf19S3Syw8sQ==","repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.8.3","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.4.0_1787763675220_0.3306537028343224","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@absolutejs/devices","version":"0.5.0","author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/devices@0.5.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"6354bcb3cb375667fe63031ceba521d934f92635","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.5.0.tgz","fileCount":19,"integrity":"sha512-MHNh389aBEDstechCI17OxHofDgN94JWmJBe5tKv/6F907nZNsifNYaZ0U8k9ol9XAgi0k92VhWY79N05k7Ggw==","signatures":[{"sig":"MEYCIQD1IiyPMp7q+LcR0X/l3lapqybZhbdW7RbckpTUks00rwIhALBdz9Kbes+QuUkdEYe69IevjRqVRtnPN5rwWNR1NSEp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166312},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"6354bcb3cb375667fe63031ceba521d934f92635","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-MHNh389aBEDstechCI17OxHofDgN94JWmJBe5tKv/6F907nZNsifNYaZ0U8k9ol9XAgi0k92VhWY79N05k7Ggw==","repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.8.3","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.5.0_1787770639957_0.6834626148000964","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@absolutejs/devices","version":"0.6.0","author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/devices@0.6.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"dist":{"shasum":"9b3e60e4e244d1ace93ef06663891a608e7fbe56","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.6.0.tgz","fileCount":19,"integrity":"sha512-juNvYnuY/TCHPZJdgdTTuC8LjlTLoB2q2ueVgxkxeZjAt8rNbHLxSLscFAmD8ZPIG5YR8UGiSHDwj/WhXFMobQ==","signatures":[{"sig":"MEYCIQCkale4Y/SITaQNK3Ojq0V1D/bizQOCAghc5P2Odz+S9wIhAMiGzbLggMLpZZXD1tyE/UTqWXqsg4ngdgZR43wTXzQ6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172257},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"9b3e60e4e244d1ace93ef06663891a608e7fbe56","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"}},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-juNvYnuY/TCHPZJdgdTTuC8LjlTLoB2q2ueVgxkxeZjAt8rNbHLxSLscFAmD8ZPIG5YR8UGiSHDwj/WhXFMobQ==","repository":{"url":"git+https://github.com/absolutejs/devices.git","type":"git","directory":"packages/devices"},"_npmVersion":"10.8.3","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/devices_0.6.0_1787778139131_0.6660231541008972","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@absolutejs/devices","version":"0.7.0","description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","type":"module","license":"BSL-1.1","author":"Alex Kahn","repository":{"type":"git","url":"git+https://github.com/absolutejs/devices.git","directory":"packages/devices"},"homepage":"https://github.com/absolutejs/devices","bugs":{"url":"https://github.com/absolutejs/devices/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js"},"./ssr":{"types":"./dist/ssr.d.ts","import":"./dist/ssr.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"}},"publishConfig":{"access":"public"},"scripts":{"build":"bun build src/index.ts --outdir dist --target=browser && bun build src/runtime.ts --outdir dist --target=browser && bun build src/ssr.ts --outdir dist --target=browser && bun build src/testing.ts --outdir dist --target=browser && bun build src/web.ts --outdir dist --target=browser && tsc --emitDeclarationOnly -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_id":"@absolutejs/devices@0.7.0","_integrity":"sha512-yRMk/Fvyiv/n7btoDmS2YNos3uZ4URxpV6zsJ71bZaFVCR/rqwma1rhonluj15yBMWUhhwWF3jb2avfEZynzWw==","_nodeVersion":"24.3.0","_npmVersion":"10.8.3","shasum":"56d06e65fbdfb9693db09d2f0f6c950dfb720f06","dist":{"integrity":"sha512-yRMk/Fvyiv/n7btoDmS2YNos3uZ4URxpV6zsJ71bZaFVCR/rqwma1rhonluj15yBMWUhhwWF3jb2avfEZynzWw==","shasum":"56d06e65fbdfb9693db09d2f0f6c950dfb720f06","tarball":"https://registry.npmjs.org/@absolutejs/devices/-/devices-0.7.0.tgz","fileCount":19,"unpackedSize":185519,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCPXLwlHHHN2gt6aNYWjWugV0HckBOX3UXkQfg7czOtLgIgEjVsWN/PulsUbO2U90/9CKZ8uVrRf5L48PoxLj2fPWM="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/devices_0.7.0_1787797287800_0.5046317427015927"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T01:45:27.162Z","modified":"2026-08-27T02:21:28.179Z","0.0.1":"2026-08-23T01:45:27.490Z","0.0.2":"2026-08-23T17:34:51.060Z","0.0.3":"2026-08-25T17:32:38.050Z","0.1.0":"2026-08-26T07:51:41.276Z","0.2.0":"2026-08-26T09:04:33.632Z","0.3.0":"2026-08-26T14:04:18.283Z","0.4.0":"2026-08-26T17:01:15.366Z","0.5.0":"2026-08-26T18:57:20.107Z","0.6.0":"2026-08-26T21:02:19.253Z","0.7.0":"2026-08-27T02:21:27.961Z"},"bugs":{"url":"https://github.com/absolutejs/devices/issues"},"author":"Alex Kahn","license":"BSL-1.1","homepage":"https://github.com/absolutejs/devices","repository":{"type":"git","url":"git+https://github.com/absolutejs/devices.git","directory":"packages/devices"},"description":"Provider-neutral device capability contracts and web, SSR, and test adapters for AbsoluteJS","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/devices\n\nApplication-facing device capability contracts for AbsoluteJS. Runtime adapters\nare selected by AbsoluteJS; application code does not branch on its native\nprovider.\n\nThe pre-1.0 core includes:\n\n- discriminated capability availability and normalized device errors;\n- shared permission states without implicit permission requests;\n- platform, safe-area, reduced-motion, lifecycle, resume, restored-operation,\n  normalized link, network, and back contracts;\n- provider-neutral clipboard, system-share, safely degrading haptic, explicit\n  camera-permission, item-scoped photo-picker, and foreground location\n  contracts;\n- portable keyboard visibility/height/dismissal and modern edge-to-edge system\n  bar appearance/visibility contracts;\n- bounded document selection, export, and preview without exposing native\n  filesystem paths;\n- explicit-permission local notification scheduling, cancellation, pending\n  inspection, receipt events, and tap/action events;\n- explicit-permission remote push enable/disable and normalized receipt/action\n  events without exposing provider registration tokens;\n- separate ordinary and secure-storage surfaces;\n- SSR-safe, standards-based web, and deterministic test adapters;\n- a reusable adapter conformance harness.\n\nExplicit adapter entry points are available at `@absolutejs/devices/web`,\n`@absolutejs/devices/ssr`, and `@absolutejs/devices/testing`. Normal application\ncode imports from `@absolutejs/devices`; AbsoluteJS installs the target adapter\nduring bootstrap.\n\nNamed imports are also the native provisioning declaration:\n\n```ts\nimport {\n  camera,\n  clipboard,\n  documents,\n  haptics,\n  keyboard,\n  location,\n  localNotifications,\n  photos,\n  pushNotifications,\n  share,\n  systemBars,\n} from \"@absolutejs/devices\";\n\nawait clipboard.writeText(\"Copied\");\nawait share.share({ text: \"Hello from AbsoluteJS\" });\nawait haptics.impact(\"light\");\nconst removeKeyboard = await keyboard.onChange(({ visible, heightPx }) => {\n  document.documentElement.style.setProperty(\n    \"--absolute-keyboard-height\",\n    visible ? `${heightPx}px` : \"0px\",\n  );\n});\nawait systemBars.setAppearance(\"light\", \"status\");\nconst [document] = await documents.pick({\n  accept: [\"application/pdf\", \".csv\"],\n  limit: 1,\n});\nif (document) await upload(document.blob);\nawait documents.export({ content: \"Portable report\", name: \"report.txt\" });\nconst permission = await camera.requestPermission();\nif (permission.state === \"granted\") {\n  const capture = await camera.takePhoto({ direction: \"rear\" });\n  image.src = capture.webPath;\n}\n\n// Call from an intentional user action. The returned value contains no token;\n// AbsoluteJS registers the installation through its authenticated shell.\nawait pushNotifications.enable();\nconst removePushAction = await pushNotifications.onAction(\n  ({ notification }) => {\n    console.log(notification.data);\n  },\n);\nconst [chosen] = await photos.pick({ limit: 1 });\n\nconst notificationPermission = await localNotifications.requestPermission();\nif (notificationPermission.state === \"granted\") {\n  await localNotifications.schedule({\n    body: \"Your report is ready.\",\n    data: { route: \"/reports/42\" },\n    id: 42,\n    title: \"AbsoluteJS\",\n  });\n}\n\nconst locationPermission = await location.requestPermission({\n  precision: \"coarse\",\n});\nif (locationPermission.state === \"granted\") {\n  const current = await location.current();\n  const stop = await location.watch((event) => {\n    if (event.type === \"position\") console.log(event.position);\n  });\n  // Stop promptly when the owning view no longer needs location updates.\n  await stop();\n}\n```\n\nAbsoluteJS installs and wires the matching native provider slices during mobile\ninitialization. Browser and SSR behavior remains standards-based and safe without\napplication-side runtime branches.\n\nDocuments default to a 64 MiB per-file ceiling, which can be lowered or raised\nexplicitly with `maximumBytes`. Names must be leaf filenames: path separators,\ncontrol characters, `.` and `..` are rejected. Picked files are returned as\nBlob-backed metadata and never include a native path. Browser export uses a\ndownload and browser preview uses a temporary object URL.\n\nLocation is foreground-only. Capability and permission queries never prompt;\n`requestPermission()` must run from an intentional user action. The normalized\nstatus reports `coarse`, `precise`, or `unknown` precision, and watch callbacks\ndeliver typed position/error events. Background tracking is deliberately not\nincluded because it requires a separate privacy, battery, store-review, and\nnative-lifecycle contract.\n\nLocal notification IDs are stable positive 32-bit integers. Scheduling is\nbest-effort and deliberately excludes repeating, exact-alarm, critical-alert,\nand custom-action registration from this first portable contract. Browser\nscheduling is an emulated, page-lifetime fallback and reports that it is not\ndurable across reloads. Notification titles, bodies, and data may be visible on\na locked device and must not contain credentials or other secrets.\n\nRemote push registration credentials never cross the public devices contract.\nOn native AbsoluteJS builds the generated shell forwards them to the fixed,\nauthenticated Auth registration route; the server owns installation identity,\ntenant, topics, provider delivery, and retirement. Permission remains explicit:\nimporting the capability never prompts, and only `pushNotifications.enable()`\nmay request permission.\n\nThe installation registry is shared through the JavaScript realm, so\nindependently built shell and page bundles still observe the same selected\nadapter.\n\nOrdinary storage is not appropriate for refresh tokens, private keys, or other\ndurable credentials. `secureStorage` fails with a typed `unsupported` error until\nthe selected provider installs a real secure-storage adapter. Its test\nimplementation is an in-memory emulator, never a claim of cryptographic storage.\n","readmeFilename":"README.md"}