{"_id":"postex-auth-sdk-stage","_rev":"27-3493ee685e068ab32742bd37989ac0d6","name":"postex-auth-sdk-stage","dist-tags":{"latest":"3.4.0"},"versions":{"1.0.0":{"name":"postex-auth-sdk-stage","version":"1.0.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.0.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"7d4ecd902afdda8e499b2fb82d2782652fb2b2cb","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.0.0.tgz","fileCount":12,"integrity":"sha512-kncvAZ3sPLdfI6w6Lrf++vHH1tmtkxDbMish2vRwcTnLn/x4a6rK3wiM2/T259cJSh1eCGOlFXH0RK2b65ZOVQ==","signatures":[{"sig":"MEUCIQD7LzEWUR7W54rsu2mva8QaKnpxpNsj68sH0dOimcJFSgIgJeUaMKeXyIlr8z7J/n0u0a/aiV5T1EwQWT2gi0HUTpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212983},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","dependencies":{"postex-auth-sdk-stage":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.0.0_1770708764991_0.8074987854633842","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"postex-auth-sdk-stage","version":"1.0.1","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.0.1","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"fbba17c8226bc67c8df803bfe000e71ddd425e9b","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.0.1.tgz","fileCount":12,"integrity":"sha512-8tBwqqqoWlsU/UVhigOxeTKqtdtz9ZJm3LWMVU4m1GY/fmpaJK4nz3f4n47WtfKOTXk3oQG3DqClKsCj3L2MEg==","signatures":[{"sig":"MEYCIQD2Rs84VGEnwxGHki/+koy8ecQeOax0EEWoJc3su8NLPgIhANON7culEiXZSWX5wW6f9VwLV5acIUEDXIXBh9KTNzCx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213043},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","dependencies":{"postex-auth-sdk-stage":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.0.1_1770710274438_0.10819689063237536","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"postex-auth-sdk-stage","version":"1.0.2","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.0.2","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"353d29e25d8ba0277285cd544084bcd9b3d658a8","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.0.2.tgz","fileCount":2,"integrity":"sha512-QV7dXKPkz2QbSw+/Vn5YWxDzOLyrKvzOJmEKvXAISbQO9aryHsMN2dPugFEIx1rLRDnJSbI84KTn91/ZFlr6nw==","signatures":[{"sig":"MEUCIQDnWDNBoQlGphWK0Vxi0yWeEFny4nonaYiI8NjhSR75IwIgWFLVdBjxbKle1OGQUySJun6r/f/+7pRT39/T/SQ7rNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16158},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","dependencies":{"postex-auth-sdk-stage":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.0.2_1770800694682_0.7422659768081588","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"postex-auth-sdk-stage","version":"1.0.3","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.0.3","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"5508c3e5e5f92beedcaa3f303ce0ce3e7af47593","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.0.3.tgz","fileCount":11,"integrity":"sha512-pReqUGDGCpt47/wDRPgLAh7A6Fh7lsDps1M++trgl2Ak/y7JWUQjHPgu1h7J41gEw5vTtBVgErOCllVYJ5ZF+w==","signatures":[{"sig":"MEQCIGjLTYmThNpXHb32yRwq4XZCY3lFHPF8qj1JwWmgmR8aAiBiTXlGSu/EqVZQkfj9VeZMyj9FUl44FNpWIW1xU/EQbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222009},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","dependencies":{"postex-auth-sdk-stage":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.0.3_1770903566333_0.11267734523949935","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"postex-auth-sdk-stage","version":"1.0.4","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.0.4","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"4c5eb5c8cd99eecf3399a290b0d38804e74ff6d7","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.0.4.tgz","fileCount":11,"integrity":"sha512-uLqHhYMnzfsIIDOX3Yv9u1bJQ7FM92mxsVzEX4Jo7lAfnK1d0IdNJD+lc31w5fgjRMjwTWYJejaZ2EnQ2GqPiA==","signatures":[{"sig":"MEQCIBGSCVvf0jVSgez+Wu+ql1x1Yv4K3HdEGOmw9RK9CupEAiADjqfg3OI9edEEUh1L6fi/ziNofrYhHRhYOio181eSWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226714},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.0.4_1770967921083_0.5487729497835225","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"postex-auth-sdk-stage","version":"1.1.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.1.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"ad12cf6a4381bbb97162e7fa486517ce63264fb6","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.1.0.tgz","fileCount":11,"integrity":"sha512-rXYN6VJeRusYaFevLSPLwbyEIN2r5uTbMEyy1YNCc2pnjfG8xG+IdTrirkLRctsa4A8RHNup1q8piWsLk2Te8Q==","signatures":[{"sig":"MEQCIAM19/8z/3f05LTClLNjjrIsEF4CIh+pvPE+GHvj8IfcAiBL2eUG9D3vy+nd+kgfwzOZ1lOiG/Er41v8Ju9ZzB4mQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229518},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.1.0_1771261192617_0.7091751186008319","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"postex-auth-sdk-stage","version":"1.2.1","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.2.1","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"b1487d4b725698799fc6db5c52516e3846db486a","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.2.1.tgz","fileCount":11,"integrity":"sha512-0HglIT0KfkJJj4oG2TrBnB0RKhvbZVk9BoMJbCNuBu/vEAlf1d1ND5oee9CN3dlfIVDm7T7szNMubvz5XUeT6Q==","signatures":[{"sig":"MEQCIH2sbpmiB6ZcHuidV6STRxImxBs4t7Au0Y+p+MUQRTVDAiBVNJmtC9hWK+xLsYvMiGH8SSs2pLPO23Z5MbumDcjK1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245158},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.2.1_1771581755714_0.06353699053377926","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"postex-auth-sdk-stage","version":"1.2.2","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.2.2","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"9cc4be7e660a04ca4a0777cf5b9a0c87132aac8b","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.2.2.tgz","fileCount":11,"integrity":"sha512-PSoZAZzq8Xo9X029EZdF1FL4AJeb1JL6poYC+piKknKU2QDgLBg/W4OscgfIMJAg6V77b18Z0wiOvUromZkOSg==","signatures":[{"sig":"MEUCIQDBivdsFSjVRbugIOOMAq5C5GeCbv2qG0wgWNKZN++3pwIgaQl89tzUJvN7zfYL/m/l95c9A2xeRRiekW7eG171gnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245302},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.2.2_1771582193240_0.5934157700239759","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"postex-auth-sdk-stage","version":"1.2.3","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.2.3","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"d88921fdcb21a55802698d0bff0074979cc608d2","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.2.3.tgz","fileCount":11,"integrity":"sha512-MswnAFD7DInZigCaDq/CKec8WxZOG3MfKH/qom5RmQ7r7AKgQzwkCsobQ8Y8+0y+l7rRqs2fb4Fry5CuhpuUMA==","signatures":[{"sig":"MEYCIQCZ/3AVs58MbcQtoFhYNJAFbqnZ8E+ztgWbOBExu594zAIhAMjNcKU6QNWrIrGLi8bSrCzroKVSufmfs7DYQn5oQq9G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262732},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"4dd1d963b5c306b285b44fce44a0ff318db32d8e","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.2.3_1771839299600_0.7177690611111871","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"postex-auth-sdk-stage","version":"1.2.4","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.2.4","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"b780342a9686b3de0eadc99ee31b8a076d9cef51","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.2.4.tgz","fileCount":11,"integrity":"sha512-F5fnqoXT79Gd0aVnnXTfDWUpWCCJdkDMDoHTH1w60Kep8HiK5zepMBc6RaECcFi0TPUnK95LLyX2Kdip8w9dmg==","signatures":[{"sig":"MEQCIFtn4/OzBJCR1LkiDMZ+vWXGUJU87Am0gZyhNNzfvN1MAiBvxb3lKH7luqJcFRaV3bZQsaLcGBTgpFnXRuJ3OkL11w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266260},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"4dd1d963b5c306b285b44fce44a0ff318db32d8e","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.2.4_1772168787054_0.5002642624115794","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"postex-auth-sdk-stage","version":"1.2.5","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.2.5","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"7fae5a5c3977e53dd34fac6aa5dee2ce4886bed5","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.2.5.tgz","fileCount":11,"integrity":"sha512-rlx3T9S4mwTbZ29tfa88q1kaWSZdMYyVE42dOXAJfabDnueRKOXESVCLS3yEiRgjIPHE7GltCfHoMxymi0p+6w==","signatures":[{"sig":"MEYCIQCIH+Fjdq/b/teqeLrmxIzErDzTMHI7d2hDQFQYx4pAIQIhANT70Ygcb5RrViF/9KsjPATRbZHCeuZ/Vpv/qZIYxpWe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266458},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"4dd1d963b5c306b285b44fce44a0ff318db32d8e","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.2.5_1772169212014_0.9354634188090953","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"postex-auth-sdk-stage","version":"1.3.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.3.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"04c8f465c995d00844c49b404a26a5ffee61132e","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.3.0.tgz","fileCount":11,"integrity":"sha512-tSe6jYZtcoi4/8UlLaHW+mFBknoRsnrycdHWWMaONfULJuL4qwnxJ1xZnwfHYgZDVCwWSyodsVDNU6j5jBWHMA==","signatures":[{"sig":"MEUCIDNZv/w6AivLAiJlkUPLx61q6zzHUSev+3tCxj/3bBJTAiEAgDBxstSMfDjq0iTMXzsUzOyeJMmGYbWmSq+zUpel198=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274101},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"4dd1d963b5c306b285b44fce44a0ff318db32d8e","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.3.0_1773297907634_0.19208944890907076","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"postex-auth-sdk-stage","version":"1.3.1","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.3.1","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"fd7ac2aa6cfbdd4e249c6b49298e237792c7acaa","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.3.1.tgz","fileCount":11,"integrity":"sha512-NsJSqdYRBW5wwXBgtkBo+RAXoBZ3kB1zgwrAm0Yq2McIOLHZWjLdpKYNv6+afhS7KATfkYkaBTcv0a9OpTOdug==","signatures":[{"sig":"MEUCIQDUBeV98ijVZdSNqBYUH937pxCHMbD3dBwowS65+ySMVQIgYWPi5Znj50U5V/18KbSheN/TAp/IA4fat+j1E+1oXrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273714},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"34e8223cd16db02d542808f353347ba370414480","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.3.1_1774523047160_0.6457972712244409","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"postex-auth-sdk-stage","version":"1.3.2","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.3.2","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"d4ab59b55644c0bc1de7f3aef6cd502e88734d2b","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.3.2.tgz","fileCount":11,"integrity":"sha512-zLYZeD/SKJAEI0j8sXWJg+Q/GJnOlQvZ1kbK6/aKPIzTJ64bs6IJUAD4IptF2sZeiOlwCbSwj767Z9OLBT9YtA==","signatures":[{"sig":"MEYCIQCjQOveAGBziNTW9MAfBJAgwunNuMOL+kDk08aaQJm6awIhAI7uqLiL6gL/kDlYCPtLcpiX9JejU2TBct9STepMoQxz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273714},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"34e8223cd16db02d542808f353347ba370414480","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.3.2_1774524890785_0.6798619439279707","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"postex-auth-sdk-stage","version":"1.4.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@1.4.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"104de436ee887c836411e6cac8fb7d963b1cae12","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-1.4.0.tgz","fileCount":11,"integrity":"sha512-TVxZ5SfCs8HMyDKnhvuU98tEJ7UPXPlN8AQatgLTRqLzQ/05BT1xX51BMA7hhpfyCI5DUU2K4rl5clu4RRxlcA==","signatures":[{"sig":"MEUCIQDoQAak67W3eluspQYJQvTnSY5/FZIqK0FPPW4haFUudAIgfr/O901PMwTVq/jIGNxF8a5GCCpuWQDc/O9UxGO7FkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273447},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"34e8223cd16db02d542808f353347ba370414480","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_1.4.0_1774533086540_0.3859584158241327","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"postex-auth-sdk-stage","version":"2.0.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@2.0.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"564d37ea318e244813ac32935a1a795dee77a4a6","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-2.0.0.tgz","fileCount":11,"integrity":"sha512-my1+rdspT+lakZZEm4LOOAcf3fdUoN9J1qAUd6VhaOsSGoMq91wQ7RpPvlPyhfH7wxgRnzT46Uk7qpaO5I4/KA==","signatures":[{"sig":"MEQCICdIf7msIEaj8VwGSfZfHhG5NxZh64cg6eMOBXG8Cg/GAiBaErxP8ABNk4v4VX4rouzKYhW/QaX7xs9hyMfamdagpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278893},"main":"./dist/postex-auth-sdk.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk.es.js","require":"./dist/postex-auth-sdk.umd.js"}},"gitHead":"a6abdc3eaad4a4a0fbeb44458e1ed0e36a4ba55b","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_2.0.0_1777298347167_0.06925963691229553","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"postex-auth-sdk-stage","version":"2.1.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@2.1.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"98d4fa8328f8dcf8a01f9dc6d76a7f55f33cdb4f","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-2.1.0.tgz","fileCount":8,"integrity":"sha512-5fo5k1MlgP++rmAuySxt2fiZbFd8UoRFSF8n7EaOT8Kp37ZuRn0Uf34lSuMSHZsU1KLvsHmV8E3U+P3JL2CxmA==","signatures":[{"sig":"MEUCIHgNJC1YN4H3wJfLCK4BtfW7mHrZzmWdFRnJkF6UeDkkAiEAp7C2g2HXu28xgwnwNjB2DN5rK6z07Ieo3L/Kgn/kshY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96561},"main":"./dist/postex-auth-sdk.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk.es.js","require":"./dist/postex-auth-sdk.umd.js"}},"gitHead":"1b5a54fb513119483af15085a05e0c9ddb772d4d","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_2.1.0_1778669598007_0.13980536413985312","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"postex-auth-sdk-stage","version":"2.2.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@2.2.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"920dc0d6d5d6cbf4ab4fe2ce9a984fa55c841d3e","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-2.2.0.tgz","fileCount":8,"integrity":"sha512-lqfojOphalcJ55/W0It2mV4AlXfOolsi3JW+vYQZaJ7dxjEKxHiZDY0eygne7G2so6CJ7cdjjZhwkYfB1hsjXg==","signatures":[{"sig":"MEQCIHCrnFSacDM883Hwm7R/+E1YFAAcAHI8T8UNQh5r3Cp8AiAH5CxW84My0ZbXTOWt3u490IHWIPyYB58AvVtO5OWHxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96585},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"1b5a54fb513119483af15085a05e0c9ddb772d4d","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_2.2.0_1778670039621_0.1629362532234242","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"postex-auth-sdk-stage","version":"2.3.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@2.3.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"5d18c63ad8e78c4467373ca95670468dfe233852","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-2.3.0.tgz","fileCount":8,"integrity":"sha512-a4NjVjTf/guaruqktIUAl7CCgw0To5Xu8R5bfTe84CK+62gKzf5qClum0lpUcdOvuzmF2C1ek25mwYiXL7qohQ==","signatures":[{"sig":"MEUCIQDKAT/8l8UWGkkzTY0jB3FL/dKD+NMkrBd8pu/5TaPG/wIgQGn4+2FfZwyv70dkMzM+1KTiDxS1DeKJenZKwJjFuIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94685},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"3c5ea26ad1cc86b38e38f0f8b2056f076ad24cd4","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_2.3.0_1779183694920_0.2636512330090388","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"postex-auth-sdk-stage","version":"2.3.1","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@2.3.1","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"1a0b16f048bd9aae788039ff6c7e406ad4085a88","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-2.3.1.tgz","fileCount":8,"integrity":"sha512-0msJbGIBSdXylD6w787QGqIdZfc2Mo34aTDQ2/pQBVEuCf4JDSdIvMlIetcLDuNAUk6a9n1Fd3090HFqQlP05Q==","signatures":[{"sig":"MEUCIG+X7R2Wny6JWuO8DmHQH38U8E1OU/EvYBrRQwP0dLewAiEAgFAHGXIOab4VQ/Zth4Of8NMhhwrO4YPfalR9hhGfYHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96383},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"3c5ea26ad1cc86b38e38f0f8b2056f076ad24cd4","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_2.3.1_1779346255593_0.5047045538265384","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"postex-auth-sdk-stage","version":"3.0.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@3.0.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"95967688c0d7aa2bd44a5515f1381572a778dd8e","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-3.0.0.tgz","fileCount":8,"integrity":"sha512-V3Yjrc6iBW0QCX/Hfb2FaVJNPa6Ls0yAt9jDgWMrjwExqM73tCxUdPBvdt7UNdbRZ/8m5WTtUDY6stR17spPPw==","signatures":[{"sig":"MEUCIQD3Rs3c7KxfkpsNVKCUKaRb7xO7/u38+bgOA3W8hSCW1gIgIHsHtJ9kHBv0Gwc9FO0sPzWz7n7qOz39zM3YDtsv8SY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97423},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"bf0caca54ae6e06eca30a55c77dbb5412397b0be","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_3.0.0_1779363422670_0.17400089990159406","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"postex-auth-sdk-stage","version":"3.1.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@3.1.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"5615919cd6da181ea604ec4ceabbda772f721587","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-3.1.0.tgz","fileCount":8,"integrity":"sha512-ynqhtbWsoIkpeOEab4a8k5sCI/f9shgC7huZe7GjOOK5LRK1WEFZem2yZ37ZXh3ghm6ydnbQR+QFUQhHvDVgwg==","signatures":[{"sig":"MEUCIH/WHfJOmXosGBJ7ai/lVOfNPDiOX25F9Y8FYQpwf6MUAiEAn2DDUinjNzfa6PiYNnvCWbwNPaF/HpFvcj1oiEBQUaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97697},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"bf0caca54ae6e06eca30a55c77dbb5412397b0be","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_3.1.0_1783527148327_0.5558091761146877","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"postex-auth-sdk-stage","version":"3.2.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@3.2.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"ed58a65561eec935dc641828bef8fb92bacae104","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-3.2.0.tgz","fileCount":8,"integrity":"sha512-i2mPWwKg311MYZ+J7Q8YVRutcpUBfEGlHUeGqlKAJGzmA/ELHY1ly8+gammqIqI3akQBT9qJeF1AaATh9eufzA==","signatures":[{"sig":"MEUCIQC0dXWIBQVhIGvxHQMt/fEgmG85KgUtUcwf4J1oBExzIgIgERIPvIciJ3JlJGxe1ljHITGnREJcxC4Eldj9V5hunhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98706},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"78f313e0c5cc1545be7c430fa8131147213f390d","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_3.2.0_1787055884868_0.6854652477701184","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"postex-auth-sdk-stage","version":"3.3.0","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","_id":"postex-auth-sdk-stage@3.3.0","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"dist":{"shasum":"616a11bb10ae19c7a5dc5278eddd42405a9d0213","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-3.3.0.tgz","fileCount":8,"integrity":"sha512-cOHnIb458U7hiM7tR5BoiXBd5fKt44C03lR87kEVAVcCqDVduui16MVBSwondFZIGzNYO4kB8UQcl7zXS+XP7A==","signatures":[{"sig":"MEQCIAwYobdEUbFz3clpdYVLAMZDIqra9PlXpwOyx9C50KyoAiA7//7rw/TgtRN1z76PN0cU/l6fAB0nbb/k5uqI0gzqRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81868},"main":"./dist/postex-auth-sdk-stage.umd.js","types":"./dist/main.d.ts","module":"./dist/postex-auth-sdk-stage.es.js","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"gitHead":"fa79967db72b8e65f25c733ceec54a82283aae4e","scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","directories":{},"_nodeVersion":"23.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/postex-auth-sdk-stage_3.3.0_1787234909511_0.1894795194909833","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"postex-auth-sdk-stage","version":"3.4.0","description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","main":"./dist/postex-auth-sdk-stage.umd.js","module":"./dist/postex-auth-sdk-stage.es.js","types":"./dist/main.d.ts","exports":{".":{"types":"./dist/main.d.ts","import":"./dist/postex-auth-sdk-stage.es.js","require":"./dist/postex-auth-sdk-stage.umd.js"}},"keywords":["auth","webauthn","passkey","otp","sdk","postex"],"author":"","license":"MIT","repository":{"type":"git","url":""},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"devDependencies":{"typescript":"~5.9.3","vite":"^7.3.1"},"_id":"postex-auth-sdk-stage@3.4.0","gitHead":"fa79967db72b8e65f25c733ceec54a82283aae4e","_nodeVersion":"23.7.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-5aP5FLUY9rXd+OR3MJgmjpuT2HYd5HzubY2NTyyfslVVUpcAYAQb8JsEbtGZShrVzmHuAmbSQog8UcIWzAuHkQ==","shasum":"102c657c215845cb200210aeb77e0d37e8699d79","tarball":"https://registry.npmjs.org/postex-auth-sdk-stage/-/postex-auth-sdk-stage-3.4.0.tgz","fileCount":8,"unpackedSize":81868,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHqv7bDDe559w0BHkNB5IFyiyc3PDtMU+6f8E8QJD2ckAiAx/01f5NqvNN3/xzp1lVqwjiLtUqdpf0Gb+l2tqMKf3Q=="}]},"_npmUser":{"name":"xstak","email":"admin-tools@xstak.com"},"directories":{},"maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/postex-auth-sdk-stage_3.4.0_1787656714034_0.6432779185280033"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-10T07:32:44.991Z","modified":"2026-08-25T11:18:34.329Z","1.0.0":"2026-02-10T07:32:45.133Z","1.0.1":"2026-02-10T07:57:54.580Z","1.0.2":"2026-02-11T09:04:54.820Z","1.0.3":"2026-02-12T13:39:26.471Z","1.0.4":"2026-02-13T07:32:01.245Z","1.1.0":"2026-02-16T16:59:52.771Z","1.2.0":"2026-02-20T09:57:27.465Z","1.2.1":"2026-02-20T10:02:35.894Z","1.2.2":"2026-02-20T10:09:53.394Z","1.2.3":"2026-02-23T09:34:59.748Z","1.2.4":"2026-02-27T05:06:27.224Z","1.2.5":"2026-02-27T05:13:32.173Z","1.3.0":"2026-03-12T06:45:07.785Z","1.3.1":"2026-03-26T11:04:07.294Z","1.3.2":"2026-03-26T11:34:50.958Z","1.4.0":"2026-03-26T13:51:26.690Z","2.0.0":"2026-04-27T13:59:07.311Z","2.1.0":"2026-05-13T10:53:18.176Z","2.2.0":"2026-05-13T11:00:39.762Z","2.3.0":"2026-05-19T09:41:35.099Z","2.3.1":"2026-05-21T06:50:55.716Z","3.0.0":"2026-05-21T11:37:02.839Z","3.1.0":"2026-07-08T16:12:28.459Z","3.2.0":"2026-08-18T12:24:45.003Z","3.3.0":"2026-08-20T14:08:29.659Z","3.4.0":"2026-08-25T11:18:34.187Z"},"license":"MIT","keywords":["auth","webauthn","passkey","otp","sdk","postex"],"repository":{"type":"git","url":""},"description":"PostEx Auth SDK for authentication flows: OTP, magic links, passkeys, and token management","maintainers":[{"name":"xstak","email":"admin-tools@xstak.com"}],"readme":"# PostEx Authentication SDK\n\n## Developer Documentation\n\n---\n\n## Overview\n\nThe PostEx Authentication SDK provides a comprehensive solution for implementing secure authentication in web applications. It supports multiple authentication methods including:\n\n- WebAuthn/Passkeys for passwordless authentication\n- One-Time Password (OTP) verification\n- Magic link authentication\n\n### Key Features\n\n- **Multi-factor authentication:** Support for passkeys, OTP, and magic links\n- **Token management:** Automatic token storage, refresh, and cleanup\n- **Trusted device support:** Cookie-based device recognition\n- **Browser compatibility:** Built-in feature detection and fallbacks\n\n---\n\n## Installation\n\nInstall the SDK via npm:\n\n```bash\nnpm install postex-auth-sdk-stage\n```\n\n---\n\n## Quick Start\n\n### Initialize the SDK\n\n```javascript\nimport { AuthSDK } from 'postex-auth-sdk-stage';\n\nconst auth = new AuthSDK({\n  apiKey: 'your-api-key',\n  appId: 'postexglobal'\n});\n```\n\n### Basic Authentication Flow\n\n```javascript\n// 1. Check authentication status\nconst status = await auth.getStatus({ email: 'user@example.com' });\n\n// 2. Initiate authentication\nconst result = await auth.initiateAuth({ email: 'user@example.com' });\n\n// 3. Handle authentication based on status\nif (result.status === 'webauthn_challenge') {\n  // Use passkey authentication\n  const authResponse = await auth.authenticateWithPasskey({\n    challenge: result.challenge,\n    rp: result.rp,\n    credentialIds: result.credentialIds\n  });\n} else if (result.status === 'otp_sent') {\n  // Verify OTP code\n  const response = await auth.verifyOTP(otpCode);\n}\n```\n\n---\n\n## API Reference\n\n### AuthSDK Class\n\nThe main class for interacting with the authentication service.\n\n#### Constructor\n\n```typescript\nnew AuthSDK(config: AuthSDKConfig)\n```\n\n**Parameters:**\n\n| Parameter | Description |\n|-----------|-------------|\n| `config.apiKey` | (Optional) Your API key for authentication |\n| `config.appId` | (Optional) Selects which Auth environment to use. Allowed values: `'xstak'`, `'postex'`, `'callcourier'`, `'postexglobal'`, `'postexsa'`. Default: `'postexglobal'` |\n\n---\n\n### Core Authentication Methods\n\n#### getStatus()\n\nCheck if the client has a trusted device session and what authentication method is available.\nAccepts either a direct email string or an identifier object.\n\n```typescript\nasync getStatus(\n  identifier: string | { email?: string; mobileNumber?: string; username?: string }\n): Promise<AuthStatusResponse>\n```\n\n**Supported input forms:**\n\n- `auth.getStatus('user@example.com')`\n- `auth.getStatus({ email: 'user@example.com' })`\n- `auth.getStatus({ mobileNumber: '03011266254' })`\n- `auth.getStatus({ username: 'user123' })`\n\n**Returns:**\n\n- `status`: `'no_session'` | `'session_found'` | `'webauthn_ready'`\n- `email`: User's email address\n- `webauthn`: Whether WebAuthn is available\n- `challenge`, `credentialIds`, `rp`: WebAuthn challenge data if available\n\n---\n\n#### initiateAuth()\n\nStart the authentication process. Returns either a WebAuthn challenge or confirms OTP was sent.\n\n```typescript\nasync initiateAuth(\n  identifier: string | { email?: string; mobileNumber?: string; username?: string }\n): Promise<InitiateAuthResponse>\n```\n\n**Supported input forms:**\n\n- `auth.initiateAuth('user@example.com')`\n- `auth.initiateAuth({ email: 'user@example.com' })`\n- `auth.initiateAuth({ mobileNumber: '03011266254' })`\n- `auth.initiateAuth({ username: 'user123' })`\n\n**Returns:**\n\n- `status`: `'webauthn_challenge'` | `'otp_sent'`\n- `message`: Backend initiation message\n- `delivery`: OTP delivery metadata when status is `'otp_sent'`\n- `challenge`, `credentialIds`, `rp`: WebAuthn data if status is `'webauthn_challenge'`\n\n---\n\n#### initiateOTP()\n\nStart OTP authentication directly via `/otp/initiate`.\nRequires at least one identifier: `email`, `mobileNumber`, or `username`.\n\n```typescript\nasync initiateOTP(\n  identifier: string | { email?: string; mobileNumber?: string; username?: string }\n): Promise<{\n  statusText?: string;\n  message?: string;\n  statusCode?: number;\n  success?: boolean;\n  data?: {\n    delivery?: {\n      channel: 'email' | 'sms';\n      target: string;\n    };\n  };\n}>\n```\n\n**Supported input forms:**\n- `auth.initiateOTP({ email: 'user@example.com' })`\n- `auth.initiateOTP({ mobileNumber: '03011266254' })`\n- `auth.initiateOTP({ username: 'user123' })`\n\n**Validation:**\n\n- Throws an error when `email`, `mobileNumber`, and `username` are all missing/empty.\n- Mobile numbers accept E.164 (`+923001234567`), Pakistani local (`03001234567`), and country-code (`923001234567`) formats without rewriting the supplied value.\n- `username` is trimmed, must be 64 characters or fewer, and must not contain control characters.\n\n---\n\n#### verifyOTP()\n\nVerify the OTP code entered by the user. Automatically stores tokens on success.\n\n```typescript\nasync verifyOTP(otp: string): Promise<OTPVerifyResponse>\n```\n\n**Returns:**\n\n- `access_token`: Bearer token for API requests\n- `refresh_token`: Token for refreshing access\n- `id_token`: User identity token\n- `expires_in`: Token expiration time in seconds\n- `verified`, `email`: Verification status and user email\n\n---\n\n#### resendOTP()\n\nResend OTP code for the standard login OTP flow.\n\n```typescript\nasync resendOTP(): Promise<{\n  message?: string;\n  success?: boolean;\n  data?: {\n    delivery?: {\n      channel: 'email' | 'sms';\n      target: string;\n    };\n  };\n}>\n```\n\n**Returns:**\n\n- `message`: Backend resend message\n- `success`: Whether resend request was accepted, when provided by the backend\n- `data.delivery`: OTP delivery channel and masked target\n\n---\n\n#### verifySignupOTP()\n\nVerify OTP for signup flow using mobile number and OTP. Automatically stores tokens on success.\n\n```typescript\nasync verifySignupOTP({\n  mobileNumber: string,\n  otp: string\n}): Promise<OTPVerifyResponse>\n```\n\n**Returns:**\n\n- `access_token`: Bearer token for API requests\n- `refresh_token`: Token for refreshing access\n- `id_token`: User identity token\n- `expires_in`: Token expiration time in seconds\n- `verified`, `email`: Verification status and user email\n\n---\n\n#### resendSignupOTP()\n\nResend OTP for signup flow using mobile number (and optional email).\n\n```typescript\nasync resendSignupOTP({\n  mobileNumber: string,\n  email?: string\n}): Promise<{ success: boolean; message?: string }>\n```\n\n**Returns:**\n\n- `success`: Whether resend request was accepted\n- `message`: Optional backend message\n\n---\n\n### WebAuthn/Passkey Methods\n\n#### registerPasskey()\n\nRegister a new passkey for the user. This enables passwordless authentication.\n\n```typescript\nasync registerPasskey(email: string): Promise<PasskeyRegisterResponse>\n```\n\n**Process:**\n\n- Initiates passkey registration challenge\n- Triggers browser's passkey creation flow\n- Automatically prevents duplicate registration\n- Returns registration confirmation\n\n---\n\n#### authenticateWithPasskey()\n\nAuthenticate using a registered passkey. Automatically stores tokens on success.\n\n```typescript\nasync authenticateWithPasskey({\n  challenge: string,\n  rp: { name: string; host: string },\n  credentialIds: string[]\n}): Promise<AuthResponse>\n```\n\n**Parameters:**\n\n- `challenge`: WebAuthn challenge from `initiateAuth()`\n- `rp`: Relying party information\n- `credentialIds`: List of allowed credential IDs\n\n---\n\n#### getPasskeyStatus()\n\nCheck if a user has registered passkeys.\n\n```typescript\nasync getPasskeyStatus(username: string): Promise<PasskeyStatusResponse>\n```\n\n**Returns:**\n\n- `hasCredentials`: Boolean indicating if user has passkeys\n- `credentialId`: The credential ID if available\n\n---\n\n#### removePasskey()\n\nRemove a user's registered passkey.\n\n```typescript\nasync removePasskey(username: string): Promise<void>\n```\n\n---\n\n### Magic Link Methods\n\n#### verifyMagicLink()\n\nVerify a magic link token. This sets the authentication session cookie.\n\n```typescript\nasync verifyMagicLink(token: string, email: string): Promise<void>\n```\n\n---\n\n#### completeMagicLink()\n\nComplete magic link authentication. Must be called after `verifyMagicLink()`. Automatically stores tokens.\n\n```typescript\nasync completeMagicLink(): Promise<OTPVerifyResponse>\n```\n\n---\n\n### Token Management Methods\n\n#### refreshToken()\n\nRefresh the access token using the server-stored refresh token. Requires a trusted device cookie. Rate limited to 10 requests per minute.\n\n```typescript\nasync refreshToken(): Promise<RefreshTokenResponse>\n```\n\n**Returns:**\n\n- `access_token`: New access token\n- `id_token`: New ID token\n- `expires_in`: Token expiration time\n\n---\n\n#### getAccessToken()\n\nRetrieve the stored access token.\n\n```typescript\nasync getAccessToken(): Promise<string | null>\n```\n\n---\n\n#### logout()\n\nLog out from the current device. Revokes the current token and trusted device, then clears local tokens.\n\n```typescript\nasync logout(): Promise<void>\n```\n\n---\n\n### Authentication Header Methods\n\n#### getRequestAuthHeaders()\n\nGet authentication headers (Authorization) for a request. Use this to attach auth to your own HTTP client.\n\n```typescript\nasync getRequestAuthHeaders(\n  method: string,\n  url: string\n): Promise<Record<string, string>>\n```\n\n**Example:**\n\n```javascript\nconst headers = await auth.getRequestAuthHeaders('GET', '/api/user');\n// headers = { Authorization: 'Bearer ...' }\n```\n\n---\n\n#### authenticatedFetch()\n\nDrop-in replacement for `fetch()` that automatically includes authentication headers.\n\n```typescript\nasync authenticatedFetch(\n  input: RequestInfo | URL,\n  init?: RequestInit\n): Promise<Response>\n```\n\n**Example:**\n\n```javascript\nconst response = await auth.authenticatedFetch('/api/protected', {\n  method: 'POST',\n  body: JSON.stringify({ data: 'value' })\n});\n```\n\n---\n\n## WebAuthn Utility Functions\n\nThe webauthn module provides utility functions for WebAuthn support detection, data encoding, and passkey email management.\n\n### Browser Support Detection\n\n#### isWebAuthnSupported()\n\nCheck if the browser supports WebAuthn.\n\n```typescript\nfunction isWebAuthnSupported(): boolean\n```\n\n---\n\n#### isConditionalUISupported()\n\nCheck if conditional UI (autofill passkeys) is supported.\n\n```typescript\nasync function isConditionalUISupported(): Promise<boolean>\n```\n\n---\n\n### Encoding Functions\n\nFunctions for converting between ArrayBuffer and base64 formats.\n\n```typescript\n// Convert ArrayBuffer to base64\nfunction arrayBufferToBase64(buffer: ArrayBuffer): string\n\n// Convert base64 to ArrayBuffer\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer\n\n// Convert ArrayBuffer to base64url (URL-safe)\nfunction arrayBufferToBase64url(buffer: ArrayBuffer): string\n\n// Convert string to ArrayBuffer\nfunction stringToArrayBuffer(str: string): ArrayBuffer\n```\n\n---\n\n### Passkey Identifier Management\n\nFunctions for storing and retrieving passkey identifiers (email and mobile number) in IndexedDB.\n\n```typescript\n// Store passkey email\nasync function setPasskeyEmail(email: string): Promise<void>\n\n// Retrieve passkey email\nasync function getPasskeyEmail(): Promise<string | null>\n\n// Clear stored passkey email\nasync function clearPasskeyEmail(): Promise<void>\n\n// Store passkey mobile number\nasync function setPasskeyMobileNumber(mobileNumber: string): Promise<void>\n\n// Retrieve passkey mobile number\nasync function getPasskeyMobileNumber(): Promise<string | null>\n\n// Clear stored passkey mobile number\nasync function clearPasskeyMobileNumber(): Promise<void>\n```\n\n---\n\n## Complete Examples\n\n### Passkey Registration Flow\n\n```javascript\nimport { AuthSDK, isWebAuthnSupported } from 'postex-auth-sdk-stage';\n\nasync function registerUserPasskey(email: string) {\n  // Check browser support\n  if (!isWebAuthnSupported()) {\n    alert('Passkeys not supported in this browser');\n    return;\n  }\n\n  const auth = new AuthSDK({ apiKey: 'your-api-key' });\n\n  try {\n    // Register passkey\n    const result = await auth.registerPasskey(email);\n\n    if (result.registered) {\n      console.log('Passkey registered successfully');\n    }\n  } catch (error) {\n    console.error('Passkey registration failed:', error);\n  }\n}\n```\n\n---\n\n### OTP Authentication Flow\n\n```javascript\nimport { AuthSDK } from 'postex-auth-sdk-stage';\n\nasync function loginWithOTP(email: string, otpCode: string) {\n  const auth = new AuthSDK({ apiKey: 'your-api-key' });\n\n  try {\n    // Initiate authentication\n    const initResult = await auth.initiateAuth(email);\n\n    if (initResult.status !== 'otp_sent') {\n      throw new Error('Expected OTP to be sent');\n    }\n\n    // Verify OTP\n    const verifyResult = await auth.verifyOTP(otpCode);\n\n    if (verifyResult.verified) {\n      console.log('Authentication successful');\n      console.log('Access token:', verifyResult.access_token);\n    }\n  } catch (error) {\n    console.error('Authentication failed:', error);\n  }\n}\n```\n\n---\n\n### Magic Link Authentication Flow\n\n```javascript\nimport { AuthSDK } from 'postex-auth-sdk-stage';\n\nasync function handleMagicLink(token: string, email: string) {\n  const auth = new AuthSDK({ apiKey: 'your-api-key' });\n\n  try {\n    // Step 1: Verify the magic link token\n    await auth.verifyMagicLink(token, email);\n\n    // Step 2: Complete authentication\n    const result = await auth.completeMagicLink();\n\n    console.log('Magic link authentication successful');\n    console.log('Access token:', result.access_token);\n  } catch (error) {\n    console.error('Magic link authentication failed:', error);\n  }\n}\n```\n\n---\n\n### Making Authenticated API Requests\n\n```javascript\nimport { AuthSDK } from 'postex-auth-sdk-stage';\n\nconst auth = new AuthSDK({ apiKey: 'your-api-key' });\n\n// Option 1: Use authenticatedFetch (recommended)\nconst response1 = await auth.authenticatedFetch('/api/user/profile');\nconst userData = await response1.json();\n\n// Option 2: Get headers for your own HTTP client\nconst headers = await auth.getRequestAuthHeaders(\n  'POST',\n  'https://api.example.com/data'\n);\n\nconst response2 = await fetch('https://api.example.com/data', {\n  method: 'POST',\n  headers: {\n    ...headers,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({ key: 'value' })\n});\n```\n\n---\n\n## Error Handling\n\nThe SDK throws `AuthSDKFetchError` for HTTP errors and `SDKValidationError` for client-side input validation failures before any network request is sent.\n\n```javascript\nimport { AuthSDK, AuthSDKFetchError, SDKValidationError } from 'postex-auth-sdk-stage';\n\ntry {\n  await auth.verifyOTP(otpCode);\n} catch (error) {\n  if (error instanceof SDKValidationError) {\n    console.error('Invalid field:', error.field);\n    console.error('Validation message:', error.message);\n  }\n  if (error instanceof AuthSDKFetchError) {\n    console.error('Status:', error.response.status);\n    console.error('Data:', error.response.data);\n\n    if (error.response.status === 401) {\n      // Token expired - attempt refresh\n      try {\n        await auth.refreshToken();\n      } catch (refreshError) {\n        // Refresh failed - redirect to login\n        window.location.href = '/login';\n      }\n    }\n  }\n}\n```\n\n---\n\n## Security Considerations\n\n### Token Storage\n\nTokens are stored in localStorage with the following keys:\n\n- `postex-auth-token`: Access token\n- `auth_sdk_refresh_token`: Refresh token\n- `auth_sdk_id_token`: ID token\n\n---\n\n### Trusted Device Cookies\n\nThe backend sets a secure, HTTP-only cookie (`td`) to identify trusted devices. This enables:\n\n- Token refresh without re-authentication\n- Session persistence across page reloads\n- Device-specific security policies\n\n---\n\n### Best Practices\n\n- **Always use HTTPS:** The SDK requires secure contexts for WebAuthn and cryptographic operations\n- **Handle token expiration:** Implement automatic token refresh before expiration\n- **Clear tokens on logout:** Always call `auth.logout()` when users sign out\n- **Validate on backend:** Never trust client-side authentication alone\n- **Monitor 401 errors:** The SDK automatically clears tokens on 401 responses\n\n---\n\n## Browser Compatibility\n\n### WebAuthn Support\n\nWebAuthn/Passkeys are supported in:\n\n- Chrome/Edge 67+\n- Firefox 60+\n- Safari 13+\n- Opera 54+\n\n### Fallback Authentication\n\nFor browsers without WebAuthn support, the SDK automatically falls back to OTP authentication. Always check browser support before attempting passkey operations:\n\n```javascript\nimport { isWebAuthnSupported } from 'postex-auth-sdk-stage';\n\nif (isWebAuthnSupported()) {\n  // Offer passkey registration/authentication\n} else {\n  // Use OTP or magic link\n}\n```\n\n---\n\n## TypeScript Support\n\nThe SDK is written in TypeScript and includes full type definitions. All interfaces are exported for your convenience:\n\n```typescript\nimport {\n  AuthSDK,\n  AuthSDKConfig,\n  AuthStatusResponse,\n  InitiateAuthResponse,\n  OTPVerifyResponse,\n  AuthResponse,\n  PasskeyRegisterResponse,\n  PasskeyStatusResponse,\n  RefreshTokenResponse,\n  AuthSDKFetchError,\n  SDKValidationError\n} from 'postex-auth-sdk-stage';\n```\n\n---\n\n## Support and Resources\n\n- **API Documentation:** https://auth.postexglobal.com/docs\n- **GitHub Repository:** (Add your repository link)\n- **Issue Tracker:** (Add your issue tracker link)\n- **Email Support:** (Add your support email)\n\n---\n\n## API overview\n\n- **AuthSDK** – Main client: `getStatus`, `initiateAuth`, `initiateOTP`, `verifyOTP`, `resendOTP`, `verifySignupOTP`, `resendSignupOTP`, `verifyMagicLink`, `completeMagicLink`, `authenticateWithPasskey`, `registerPasskey`, `getPasskeyStatus`, `removePasskey`, `getRequestAuthHeaders`, `authenticatedFetch`, `refreshToken`, `logout`, `getAccessToken`, `storeTokens`, `clearTokens`\n- **WebAuthn** – Helpers: `isWebAuthnSupported`, `isConditionalUISupported`, base64/ArrayBuffer conversion, and passkey email/mobile storage (`getPasskeyEmail`, `setPasskeyEmail`, `clearPasskeyEmail`, `getPasskeyMobileNumber`, `setPasskeyMobileNumber`, `clearPasskeyMobileNumber`)\n- **AuthSDKFetchError** – Error class with `response.status` and `response.data`\n- **SDKValidationError** – Error class with `field`, `code`, and a validation message for invalid client input\n\n## Versioning\n\nThis package follows [semantic versioning](https://semver.org/). CDN URLs support:\n\n- `@1` – latest 1.x.x\n- `@1.0` – latest 1.0.x\n- `@1.0.0` – exact version\n\n## License\n\nMIT\n# PostEx-Authentication-Service-SDK\n","readmeFilename":"README.md"}