{"_id":"@otplib/hotp","_rev":"10-c0a3e6f3c1ba8a0feef029bd9d8547b7","name":"@otplib/hotp","dist-tags":{"latest":"13.4.1"},"versions":{"13.0.0":{"name":"@otplib/hotp","version":"13.0.0","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.0.0","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"11a95d09f45f77124680c93d7ebd05c0e1fe59a2","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.0.0.tgz","fileCount":9,"integrity":"sha512-ldZIOcdNWV0aAyDu55OlPuVKoDnmd2RLKsvLjoWF9hA74v5W0QCfY6R2bdJK42NgY7phc32n93PBhAguYwrGbw==","signatures":[{"sig":"MEQCIDzHmqVlVoACq/H/pM7EbNWv3F1f+5QT6HK3mz+0EOZMAiBJC02AKQz4h6TiKX7e9qG/DK35PsUsK/GcNPYZFfz81A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68207},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"geraldyeo","email":"support@yeojz.dev"},"_resolved":"/tmp/a15745a8ef88b8193d8b645549b10986/otplib-hotp-13.0.0.tgz","_integrity":"sha512-ldZIOcdNWV0aAyDu55OlPuVKoDnmd2RLKsvLjoWF9hA74v5W0QCfY6R2bdJK42NgY7phc32n93PBhAguYwrGbw==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"10.8.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@otplib/uri":"13.0.0","@otplib/core":"13.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^4.0.16","typescript":"^5.3.3","@repo/testing":"13.0.0","@otplib/plugin-crypto-node":"13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.0.0_1768042029428_0.19622679826345846","host":"s3://npm-registry-packages-npm-production"}},"13.0.1":{"name":"@otplib/hotp","version":"13.0.1","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.0.1","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"37214f9c339f873ea74e6558c5ca8a48efe7964d","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.0.1.tgz","fileCount":9,"integrity":"sha512-7Hc0KEqvuVyZNTdYOSN6fIsbMGGHRplGkvyTUvAFZuhVYVyFkkKxq3dwKn3inSGIJ/Tz0sqO/ImQMxIdfRuvmw==","signatures":[{"sig":"MEYCIQCLFGy0+10ItyixXlXEdTj6hDSDliP+VkvuMO0zdNR8XwIhAIigVNJl6BxGS3CIlWu3RtG+Flj8uen+sNosrHTHlqZd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":68207},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"geraldyeo","email":"support@yeojz.dev"},"_resolved":"/tmp/4cdf4823354d2d62e41d6e332ea51bf2/otplib-hotp-13.0.1.tgz","_integrity":"sha512-7Hc0KEqvuVyZNTdYOSN6fIsbMGGHRplGkvyTUvAFZuhVYVyFkkKxq3dwKn3inSGIJ/Tz0sqO/ImQMxIdfRuvmw==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"10.8.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@otplib/uri":"13.0.1","@otplib/core":"13.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^4.0.16","typescript":"^5.3.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.0.1"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.0.1_1768062587693_0.08272635461451028","host":"s3://npm-registry-packages-npm-production"}},"13.0.2":{"name":"@otplib/hotp","version":"13.0.2","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.0.2","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"8eeb78b31b056534e2e7f73502926f93fc9ce0d2","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.0.2.tgz","fileCount":11,"integrity":"sha512-NSqHein2S0awB2O5T2/qBz6CBJsRDcH7r10FZZr2BKQNE4aM+f9SCc0KmSGeJaTPzUch7eHOAvigFHV947gvLw==","signatures":[{"sig":"MEUCIDyX1ABql+1DaU/B+E6qiYimZKwMahHZs7/1p36i6WEuAiEAkWTew9rCQ1JFMVSbGslESB0lC8n981J5VuLF13jsSDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":70379},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.0.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"geraldyeo","email":"support@yeojz.dev"},"_resolved":"/tmp/1aa9265fe34a27e2c8e52abb5e012c9d/otplib-hotp-13.0.2.tgz","_integrity":"sha512-NSqHein2S0awB2O5T2/qBz6CBJsRDcH7r10FZZr2BKQNE4aM+f9SCc0KmSGeJaTPzUch7eHOAvigFHV947gvLw==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"10.8.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@otplib/uri":"13.0.2","@otplib/core":"13.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^4.0.16","typescript":"^5.3.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.0.2"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.0.2_1768120926695_0.7081073766212833","host":"s3://npm-registry-packages-npm-production"}},"13.1.0":{"name":"@otplib/hotp","version":"13.1.0","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.1.0","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"8667745566a93f0b37b35eb91832664846646621","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.1.0.tgz","fileCount":11,"integrity":"sha512-lqeRLsUwpJ5l4RzhgSOw5uNmY19RayIf3SBnghHnP7uPhA0VccgaVzfk7QliiCkClkhyTpx4T+DTrgdnseOXEg==","signatures":[{"sig":"MEUCIH+CE/fFPaZg9cR5H2PGBVEp1SfQ0rOOdWp815irUhRIAiEAhgwQe95EvAp7M5QJYLx4H2Rl5+jLAdtDYHHsIZbcp1Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74081},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"geraldyeo","email":"support@yeojz.dev"},"_resolved":"/tmp/e9bf8f6600cb0e808ce69575196da647/otplib-hotp-13.1.0.tgz","_integrity":"sha512-lqeRLsUwpJ5l4RzhgSOw5uNmY19RayIf3SBnghHnP7uPhA0VccgaVzfk7QliiCkClkhyTpx4T+DTrgdnseOXEg==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"10.8.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@otplib/uri":"13.1.0","@otplib/core":"13.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^4.0.16","typescript":"^5.3.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.1.0"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.1.0_1768235699750_0.12596067739632288","host":"s3://npm-registry-packages-npm-production"}},"13.1.1":{"name":"@otplib/hotp","version":"13.1.1","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.1.1","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"a7596ed6d6f50f0f124e0debb46d6160ff9c58ee","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.1.1.tgz","fileCount":11,"integrity":"sha512-2Zht/w3kb9Cv/BPNWC/KvFspztFae38BlteW4KQOn1U+jBj02EMpO3V75OaLGFyz3ZCWzYdLoTRhMkVDCVklDw==","signatures":[{"sig":"MEYCIQCde9+IYA/OeAADevCq16vvXCjelmA6BKWLlueEnAQsXAIhAKAqX0oBwG5x5yQ0ljj3p4pl/6j/aIRcFJ0BjNnbpg80","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74253},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"geraldyeo","email":"support@yeojz.dev"},"_resolved":"/tmp/2a1e2a027d42abe4b3f0e3fb59ccf92f/otplib-hotp-13.1.1.tgz","_integrity":"sha512-2Zht/w3kb9Cv/BPNWC/KvFspztFae38BlteW4KQOn1U+jBj02EMpO3V75OaLGFyz3ZCWzYdLoTRhMkVDCVklDw==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"10.8.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@otplib/uri":"13.1.1","@otplib/core":"13.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^4.0.16","typescript":"^5.3.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.1.1","@otplib/plugin-base32-scure":"13.1.1"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.1.1_1768406231578_0.12423820947010111","host":"s3://npm-registry-packages-npm-production"}},"13.2.0":{"name":"@otplib/hotp","version":"13.2.0","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.2.0","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"da094dfcf8014da57ad56ae09fcb9cf0f6871acd","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.2.0.tgz","fileCount":11,"integrity":"sha512-LT6hAcS+iOWYANLw27BOyOvY/IOadHt8k3IE5GLhwsj7c0LggNVv3PCJaAcQISNostamxc8DceRqTHDsAGxoEQ==","signatures":[{"sig":"MEUCIQDJhY0mmyBGCmnfO06AhXvIvOcYA4bFckAGQyTSTUvFdAIgc82MDyDLYhJMsD2LG3W+AJmLwhMPSb9vfXlhQz3sSxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77125},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"geraldyeo","email":"support@yeojz.dev"},"_resolved":"/tmp/2df03a8ed028304eef7508bfb589b51e/otplib-hotp-13.2.0.tgz","_integrity":"sha512-LT6hAcS+iOWYANLw27BOyOvY/IOadHt8k3IE5GLhwsj7c0LggNVv3PCJaAcQISNostamxc8DceRqTHDsAGxoEQ==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"10.8.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","dependencies":{"@otplib/uri":"13.2.0","@otplib/core":"13.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^4.0.18","typescript":"^5.3.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.2.0","@otplib/plugin-base32-scure":"13.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.2.0_1769355447430_0.8923696531101761","host":"s3://npm-registry-packages-npm-production"}},"13.2.1":{"name":"@otplib/hotp","version":"13.2.1","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.2.1","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"6149c877e5a51fd1c527ada535fe75ca4f525eee","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.2.1.tgz","fileCount":11,"integrity":"sha512-iRKqvj0TnemtXXtEswzBX50Z0yMNa0lH9PSdr5N4CJc1mDEuUmFFZQqnu3PfA3fPd3WeAU+mHgmK/xq18+K1QA==","signatures":[{"sig":"MEUCIEp1yOsxWSEJzmGLexM1UlLfwIAm3PtJ7BNLq3rYGPf+AiEAvL87tmihH5vHIGQygkk62Jmz+a09KJ66Oro4THqCoXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77238},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"geraldyeo","email":"support@yeojz.dev"},"_resolved":"/tmp/a3c6ea1df39eb9fccd29f8741ad894c1/otplib-hotp-13.2.1.tgz","_integrity":"sha512-iRKqvj0TnemtXXtEswzBX50Z0yMNa0lH9PSdr5N4CJc1mDEuUmFFZQqnu3PfA3fPd3WeAU+mHgmK/xq18+K1QA==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"10.8.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","dependencies":{"@otplib/uri":"13.2.1","@otplib/core":"13.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^4.0.18","typescript":"^5.3.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.2.1","@otplib/plugin-base32-scure":"13.2.1"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.2.1_1769411110957_0.9574404781252526","host":"s3://npm-registry-packages-npm-production"}},"13.3.0":{"name":"@otplib/hotp","version":"13.3.0","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.3.0","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"135e45c6350ae60bbc1170a1801a6100e49794b8","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.3.0.tgz","fileCount":11,"integrity":"sha512-XJMZGz2bg4QJwK7ulvl1GUI2VMn/flaIk/E/BTKAejHsX2kUtPF1bRhlZ2+elq8uU5Fs9Z9FHcQK2CPZNQbbUQ==","signatures":[{"sig":"MEUCIQCEPDGNwyW3mc31MvvCoydwwHL/F1AWX3FsRly3kngoIAIgS15eG7HE0UM5a79fYC8/uA+aIiRwTGohe8rZWS55vHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79741},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3de45213-1dc9-4ef1-8a39-8e0c00ff3592"}},"_resolved":"/tmp/f8b337d50f7c95d077dd4abeb90f2ba9/otplib-hotp-13.3.0.tgz","_integrity":"sha512-XJMZGz2bg4QJwK7ulvl1GUI2VMn/flaIk/E/BTKAejHsX2kUtPF1bRhlZ2+elq8uU5Fs9Z9FHcQK2CPZNQbbUQ==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"11.6.2","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@otplib/uri":"13.3.0","@otplib/core":"13.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.3.0","@otplib/plugin-base32-scure":"13.3.0"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.3.0_1770906884950_0.2652162317488156","host":"s3://npm-registry-packages-npm-production"}},"13.4.0":{"name":"@otplib/hotp","version":"13.4.0","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","_id":"@otplib/hotp@13.4.0","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"homepage":"https://otplib.yeojz.dev","bugs":{"url":"https://github.com/yeojz/otplib/issues"},"dist":{"shasum":"e12a69cc54c000213e4bf2d92dc9741a6897d3a2","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.4.0.tgz","fileCount":11,"integrity":"sha512-MJjE0x06mn2ptymz5qZmQveb+vWFuaIftqE0b5/TZZqUOK7l97cV8lRTmid5BpAQMwJDNLW6RnYxGeCRiNdekw==","signatures":[{"sig":"MEUCIQCgiHmV6zvimpTRW8XEcFb553iw7luvYWT7egouTTpJzQIgbXtk7+sPDzke9xc89ZHMuKawWEnbN6OQV3RJplZqqvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80244},"main":"./dist/index.cjs","type":"module","_from":"file:otplib-hotp-13.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src/","test":"vitest","build":"tsup","clean":"rm -rf dist .tsbuildinfo","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3de45213-1dc9-4ef1-8a39-8e0c00ff3592"}},"_resolved":"/tmp/2379efe44459a6b7c38cbb8e3d3fbb42/otplib-hotp-13.4.0.tgz","_integrity":"sha512-MJjE0x06mn2ptymz5qZmQveb+vWFuaIftqE0b5/TZZqUOK7l97cV8lRTmid5BpAQMwJDNLW6RnYxGeCRiNdekw==","repository":{"url":"git+https://github.com/yeojz/otplib.git","type":"git","directory":"packages/hotp"},"_npmVersion":"11.9.0","description":"RFC 4226 HOTP implementation for otplib","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@otplib/uri":"13.4.0","@otplib/core":"13.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3","@repo/testing":"13.0.1","@otplib/plugin-crypto-node":"13.4.0","@otplib/plugin-base32-scure":"13.4.0"},"_npmOperationalInternal":{"tmp":"tmp/hotp_13.4.0_1773932449360_0.886555810150115","host":"s3://npm-registry-packages-npm-production"}},"13.4.1":{"name":"@otplib/hotp","version":"13.4.1","description":"RFC 4226 HOTP implementation for otplib","license":"MIT","author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"homepage":"https://otplib.yeojz.dev","repository":{"type":"git","url":"git+https://github.com/yeojz/otplib.git","directory":"packages/hotp"},"bugs":{"url":"https://github.com/yeojz/otplib/issues"},"keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"sideEffects":false,"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"dependencies":{"@otplib/core":"13.4.1","@otplib/uri":"13.4.1"},"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^4.1.5","@otplib/plugin-base32-scure":"13.4.1","@otplib/plugin-crypto-node":"13.4.1","@repo/testing":"13.0.1"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest","test:ci":"vitest run --coverage","typecheck":"tsc --noEmit","lint":"eslint src/","clean":"rm -rf dist .tsbuildinfo"},"_id":"@otplib/hotp@13.4.1","_integrity":"sha512-g9q04SwpG5ZtMnVkUcgcoAlwCH4YLROZN1qhyBwgkBzqYYVSYhpP6gSGaxGHwePLt1c+e6NqDlgIZN+e1/XPuA==","_resolved":"/tmp/dc20aa3417b9031e1b06a2b128a6d66e/otplib-hotp-13.4.1.tgz","_from":"file:otplib-hotp-13.4.1.tgz","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-g9q04SwpG5ZtMnVkUcgcoAlwCH4YLROZN1qhyBwgkBzqYYVSYhpP6gSGaxGHwePLt1c+e6NqDlgIZN+e1/XPuA==","shasum":"6bd231af6f9df91631d178b5afe3a88d7d8e4dd3","tarball":"https://registry.npmjs.org/@otplib/hotp/-/hotp-13.4.1.tgz","fileCount":11,"unpackedSize":80243,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@otplib%2fhotp@13.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCNfS3U2FbaXhZX3HIZ8lVA8K5OVnTH3QbiWgldyMYBlAIhAKiZve4EjmZZfc5QlROWBkr3hdsfDdOIFEG/tJYe7wLB"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3de45213-1dc9-4ef1-8a39-8e0c00ff3592"}},"directories":{},"maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hotp_13.4.1_1780134886117_0.6817322983247216"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-10T10:47:09.313Z","modified":"2026-05-30T09:54:46.541Z","13.0.0":"2026-01-10T10:47:09.593Z","13.0.1":"2026-01-10T16:29:47.848Z","13.0.2":"2026-01-11T08:42:06.823Z","13.1.0":"2026-01-12T16:34:59.895Z","13.1.1":"2026-01-14T15:57:11.713Z","13.2.0":"2026-01-25T15:37:27.584Z","13.2.1":"2026-01-26T07:05:11.113Z","13.3.0":"2026-02-12T14:34:45.108Z","13.4.0":"2026-03-19T15:00:49.493Z","13.4.1":"2026-05-30T09:54:46.259Z"},"bugs":{"url":"https://github.com/yeojz/otplib/issues"},"author":{"name":"Gerald Yeo","email":"support@yeojz.dev"},"license":"MIT","homepage":"https://otplib.yeojz.dev","keywords":["otp","hotp","rfc4226","2fa","mfa","hmac","one-time-password"],"repository":{"type":"git","url":"git+https://github.com/yeojz/otplib.git","directory":"packages/hotp"},"description":"RFC 4226 HOTP implementation for otplib","maintainers":[{"name":"geraldyeo","email":"support@yeojz.dev"}],"readme":"# @otplib/hotp\n\nRFC 4226 HOTP implementation for otplib.\n\n## Installation\n\n```bash\nnpm install @otplib/hotp\npnpm install @otplib/hotp\nyarn add @otplib/hotp\n```\n\n## Usage\n\n### generate\n\nGenerate an HOTP code for a specific counter:\n\n```typescript\nimport { generate } from \"@otplib/hotp\";\nimport { crypto } from \"@otplib/plugin-crypto-node\";\n\nconst secret = new Uint8Array([\n  0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,\n  0x37, 0x38, 0x39, 0x30,\n]); // 20-byte HMAC key\n\nconst token = await generate({\n  secret, // Required: Uint8Array or Base32 string\n  counter: 0, // Required: counter value\n  crypto, // Required: crypto plugin\n  algorithm: \"sha1\", // Optional: 'sha1' | 'sha256' | 'sha512'\n  digits: 6, // Optional: 6 | 7 | 8\n});\n```\n\n#### With Base32 secrets\n\nIf your secret is a Base32 string (e.g., from Google Authenticator), provide a `base32` plugin to decode it:\n\n```typescript\nimport { generate } from \"@otplib/hotp\";\nimport { crypto } from \"@otplib/plugin-crypto-node\";\nimport { base32 } from \"@otplib/plugin-base32-scure\";\n\nconst token = await generate({\n  secret: \"GEZDGNBVGY3TQOJQGEZDGNBVGY\",\n  counter: 0,\n  crypto,\n  base32, // Required when secret is a string\n});\n```\n\n### verify\n\nVerify an HOTP code:\n\n```typescript\nimport { verify } from \"@otplib/hotp\";\nimport { crypto } from \"@otplib/plugin-crypto-node\";\n\nconst result = await verify({\n  secret, // Required: Uint8Array or Base32 string\n  token: \"123456\", // Required: token to verify\n  counter: 0, // Required: expected counter\n  crypto, // Required: crypto plugin\n  algorithm: \"sha1\", // Optional: hash algorithm\n  digits: 6, // Optional: expected digits\n  counterTolerance: 5, // Optional: number or [past, future] tuple\n});\n\n// Returns: { valid: true, delta: number } | { valid: false }\n```\n\n`counterTolerance` accepts a plain number (creates a look-ahead-only window `[0, n]`, the secure default per RFC 4226) or a `[past, future]` tuple for explicit control (e.g., `[2, 5]`).\n\n### Sync Variants\n\n`generateSync` and `verifySync` are synchronous alternatives with the same signatures. They require a crypto plugin that supports sync HMAC operations, such as `@otplib/plugin-crypto-node` or `@otplib/plugin-crypto-noble`. Using them with `@otplib/plugin-crypto-web` will throw.\n\n```typescript\nimport { generateSync, verifySync } from \"@otplib/hotp\";\nimport { crypto } from \"@otplib/plugin-crypto-node\";\n\nconst secret = new Uint8Array([\n  0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,\n  0x37, 0x38, 0x39, 0x30,\n]);\n\nconst token = generateSync({ secret, counter: 0, crypto });\nconst result = verifySync({ secret, token, counter: 0, crypto });\n```\n\n## Documentation\n\nFull documentation available at [otplib.yeojz.dev](https://otplib.yeojz.dev):\n\n- [Getting Started Guide](https://otplib.yeojz.dev/guide/getting-started)\n- [API Reference](https://otplib.yeojz.dev/api/)\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}