{"_id":"@sentinel-password/core","_rev":"32-da370a397f9d4275dbdd69166cb4520e","name":"@sentinel-password/core","dist-tags":{"latest":"2.0.0"},"versions":{"0.1.0":{"name":"@sentinel-password/core","version":"0.1.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Alex Kankov","email":"alex@kankov.com"},"license":"MIT","_id":"@sentinel-password/core@0.1.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"2dfb758356456bfb55e4bd35eadf2f4a9f42c3de","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.1.0.tgz","fileCount":8,"integrity":"sha512-bTSwoJcVZaN58ZAWOphHcbLbWGg0a0YZmFATFdLlogtJBLwgHhUZWRf/Px81TKyz8Chd2FTI2ifYJU/Piwznww==","signatures":[{"sig":"MEYCIQDbezwiU5nzsRY2vR1EXrYdmNj0cgOZkRs3G88tSB39JAIhALGvCyDv9PSt6XTr6i+ot1oDv9P670QxHXRtmHs3bHDV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174360},"main":"./dist/index.cjs","type":"module","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"}}},"gitHead":"1841edbb6d29a51dd0df8edc34d6073106177df5","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"akankov","email":"akankov@gmail.com"},"repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.4","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.14","typescript":"^5.9.3","@vitest/coverage-v8":"^4.0.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1764524980993_0.20895366597289478","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@sentinel-password/core","version":"0.1.1","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.1.1","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"867ff1cad2fc2b425f9921afaa648ceece57a04e","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.1.1.tgz","fileCount":9,"integrity":"sha512-1wubRfzxEVEWKjZHefXbesBWhJZM6meE1f3ac2Vg+ZkRt2C0CzGinJKecLzihVJfF+0E8gd88hu3te4cSvAoPw==","signatures":[{"sig":"MEQCIHN+mwh3iah49YQzGALk7JNBlHLQ7T1rv35CSD28quslAiAcqYsQFDuhd/7aVRo6ktI7zPvnrf9VGZWBEu3csfov1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175438},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.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":{"lint":"eslint src","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/656d955fb42a0ffa1c6bf32f8b6888a9/sentinel-password-core-0.1.1.tgz","_integrity":"sha512-1wubRfzxEVEWKjZHefXbesBWhJZM6meE1f3ac2Vg+ZkRt2C0CzGinJKecLzihVJfF+0E8gd88hu3te4cSvAoPw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.14","typescript":"^5.9.3","@vitest/coverage-v8":"^4.0.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.1_1764613987956_0.7746308225027088","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@sentinel-password/core","version":"0.1.2","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.1.2","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"45fd53e5b5130bcd3d9695fc8680e4bb04728029","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.1.2.tgz","fileCount":9,"integrity":"sha512-dyd/6CMeIIG7nE6vGxwPiGQYSA+MWm1QVX8xtan2IUB9GBufaWc8D7yrE9yaKtYJbaZ33VwcghFzrK9do4Uteg==","signatures":[{"sig":"MEUCIC04/gNnnGoSyzgRpho5/BIyfg937FWQEkX1Rh5x8YQeAiEAl82aF/rqrxBhD3m0ltKNO3ZWTqzGy0LJYZhYTpbw4is=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175438},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.1.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":{"lint":"eslint src","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/9061a9022561772a38e0b8d606dae1e6/sentinel-password-core-0.1.2.tgz","_integrity":"sha512-dyd/6CMeIIG7nE6vGxwPiGQYSA+MWm1QVX8xtan2IUB9GBufaWc8D7yrE9yaKtYJbaZ33VwcghFzrK9do4Uteg==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.14","typescript":"^5.9.3","@vitest/coverage-v8":"^4.0.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.2_1764696249148_0.7051445969421306","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@sentinel-password/core","version":"0.1.3","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.1.3","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"44ff5611b66915745769441293f754a61d9c415c","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.1.3.tgz","fileCount":9,"integrity":"sha512-id+43S3y8tfzyrkexdx2Q1TmWkVzQjac3yzC1xPtsWZYf4fISnPDUCF6FTLV0H8KAUiZPWskYMzcgaSCqq9NYw==","signatures":[{"sig":"MEYCIQCrHxtb1h+jOgri5xEe86YsldSloiYmr0Ukt/rsCC+QtwIhAP36YovZkKO3G1P/sK266DwmE+KcHRtiaozco42kI4tP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175467},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.1.3.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"akankov","email":"akankov@gmail.com"},"_resolved":"/private/var/folders/lr/qs3ycr612338j48xcwsbc27c0000gn/T/7ecf9c5be7bdfb9940d349d2b4df7d58/sentinel-password-core-0.1.3.tgz","_integrity":"sha512-id+43S3y8tfzyrkexdx2Q1TmWkVzQjac3yzC1xPtsWZYf4fISnPDUCF6FTLV0H8KAUiZPWskYMzcgaSCqq9NYw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.4","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.14","typescript":"^5.9.3","@vitest/coverage-v8":"^4.0.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.3_1764798622170_0.7353626945313718","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@sentinel-password/core","version":"0.2.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.2.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"f47126698d4f7f37c5a0181b23e9fa974294946e","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.2.0.tgz","fileCount":9,"integrity":"sha512-8Kz4T/tULEsrWsLbkPV3mrt498r1Ady/7xvR30TWZ3pz1z/uC83KyXJxXfIpXhNTBaxkzORveXiY544Q26y/nw==","signatures":[{"sig":"MEYCIQChxbE9EfOUEKc/YW1X6O6bWIYXYyYLQrNzlavQS0oruwIhANDClyiDf7/MVXO9WkErq8g6+HJ8gmXJcm37TBU+qbXF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175516},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/f308658db17e30f3a71837ae572192a1/sentinel-password-core-0.2.0.tgz","_integrity":"sha512-8Kz4T/tULEsrWsLbkPV3mrt498r1Ady/7xvR30TWZ3pz1z/uC83KyXJxXfIpXhNTBaxkzORveXiY544Q26y/nw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1771447762752_0.9042635219118085","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@sentinel-password/core","version":"0.4.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.4.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"4975a78ea3a01f8a80bbfcedd5b22e5f49d923ae","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.4.0.tgz","fileCount":9,"integrity":"sha512-VgIPM68ZPjMZ2chT8dA7lKuItCttmSvdWd1O89NPZ/ZDLaH0U3MRSQ8NH9MRaEdx3jihjkJ9esFHBgJwOsSHEg==","signatures":[{"sig":"MEUCIQCOm/8bUW3a9BdHfOgWPtkwsCBTo71JOZ/REyXG72ZTaQIgM8ax1qdyQIr/9aTJCfZ/iiM5okvBGClxMDM0gUoNL1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175514},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/80907726de3ef65d1db17af62f5ad187/sentinel-password-core-0.4.0.tgz","_integrity":"sha512-VgIPM68ZPjMZ2chT8dA7lKuItCttmSvdWd1O89NPZ/ZDLaH0U3MRSQ8NH9MRaEdx3jihjkJ9esFHBgJwOsSHEg==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.0","typescript":"^5.9.3","@vitest/coverage-v8":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.0_1773734991976_0.6843902033098732","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@sentinel-password/core","version":"0.4.1","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.4.1","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"93619bffc9336bb6460f67ae7fe7181fc03509c6","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.4.1.tgz","fileCount":9,"integrity":"sha512-37y0NDnlsskGE+3ew/pOxuILk+oBb0VN9mA+2w2oNIoeMlK7AXsF07oztEktiV6ZWsBCAKe0IndWYs2a5O5Z/w==","signatures":[{"sig":"MEUCIQD1fbDcTTp8gtgVBQ+HXkJRRCX59gCBqbjTQJMEriH7swIgJXeDCh8noL0EfEnvG+JUPs9Ky29Haer59HDfGvoIMoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175514},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.4.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/44b6c61832c2b510d86b39babbd5d650/sentinel-password-core-0.4.1.tgz","_integrity":"sha512-37y0NDnlsskGE+3ew/pOxuILk+oBb0VN9mA+2w2oNIoeMlK7AXsF07oztEktiV6ZWsBCAKe0IndWYs2a5O5Z/w==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.1","typescript":"^5.9.3","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.1_1774459531980_0.6870461421432168","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@sentinel-password/core","version":"0.4.2","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.4.2","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://github.com/akankov/sentinel-password#readme","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"1c6c84fae1ab8d7f3a5bf78bccd88d91c133c8f0","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.4.2.tgz","fileCount":9,"integrity":"sha512-8Qcg3Vvdk05sHcET49ykZ16ReBfefNrtZ0TmCqKVniYLgySguRXvrZOsE9+U+TDNsKe+3PJfptlZcnSzTqrUUw==","signatures":[{"sig":"MEUCIQDVbHfkH6WIAI4Y4E4vc1Faj9kZ73Tjjv9QHPc5eA0OzwIgTnefr/F27GXDIMI00bWR5GkzK58CFmqedzJUZ03Y0sc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175514},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.4.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/9bed87d629333858741656d459548efb/sentinel-password-core-0.4.2.tgz","_integrity":"sha512-8Qcg3Vvdk05sHcET49ykZ16ReBfefNrtZ0TmCqKVniYLgySguRXvrZOsE9+U+TDNsKe+3PJfptlZcnSzTqrUUw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^5.9.3","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.2_1774887336453_0.48975630695624783","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@sentinel-password/core","version":"0.4.3","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.4.3","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"d7c70c4aa2c051333a7b739d6900dc618444f8da","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.4.3.tgz","fileCount":9,"integrity":"sha512-Ad4tyEhjscbusfncjrEJx0hw5kZAC8IywJEVscpWG7Lmsdp9Gyzwf0dzxDaZZ8TR8h3xtg/+XRshZDHFTW5p+g==","signatures":[{"sig":"MEYCIQCuZEV4Wq8FVVEi8NBxaIoQbg61ofetUdj0FfjgfK5BxAIhAJn7IHUYJ8wwlPjnIoXb8ioryynuDhLcSwmFtupMK0h+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175507},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.4.3.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/ea35f0799228d83510aa93cb145e9c4c/sentinel-password-core-0.4.3.tgz","_integrity":"sha512-Ad4tyEhjscbusfncjrEJx0hw5kZAC8IywJEVscpWG7Lmsdp9Gyzwf0dzxDaZZ8TR8h3xtg/+XRshZDHFTW5p+g==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^5.9.3","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.3_1774893107312_0.6747811304247622","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@sentinel-password/core","version":"0.4.4","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.4.4","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"34bfb0d6a42d049c0889e9512f2e6559277f8ea7","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.4.4.tgz","fileCount":9,"integrity":"sha512-DMy+w23Lo7a1y3P19uJ3pXul6VJUKqoP7g7Mn0wZm5zIX+VY9bCs3wgTlq+NlTHqBMB3jjynjlgrWI09Simevg==","signatures":[{"sig":"MEYCIQDlE2vYJ3w9VnNzTQD3x65wAKJ1QeZwuCU1ColCOyIN4gIhAPDdIeW9fYxKqVf8O9/v7J22Twdj+N2d1VmiyKePl5Tg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175507},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.4.4.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/79088cfa492edafe28f3a82b9c499ea8/sentinel-password-core-0.4.4.tgz","_integrity":"sha512-DMy+w23Lo7a1y3P19uJ3pXul6VJUKqoP7g7Mn0wZm5zIX+VY9bCs3wgTlq+NlTHqBMB3jjynjlgrWI09Simevg==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.4_1774940433992_0.4364332096623327","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@sentinel-password/core","version":"0.4.5","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.4.5","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"7176f4b1146e9b495b4394db92ec1a17f2095775","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.4.5.tgz","fileCount":9,"integrity":"sha512-TRHQLHtzIFq79uEYSHdEvM3CJHyhzKWLUg+zVYumR3OWDm+dnV+7Ed8QsMxiMOQSQXcui/zQANcD6b7kQM2MOg==","signatures":[{"sig":"MEUCIQDAWGYy0msaaa8Zayk2T32+iWJBFRK4SD6zzJJDLL30AAIgLKzlSAfpY3qhazcqb5A9H3Mzbho8ybq9PkUSb3NHhEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175960},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.4.5.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/216e436e63c7295fa26526f330c0bd32/sentinel-password-core-0.4.5.tgz","_integrity":"sha512-TRHQLHtzIFq79uEYSHdEvM3CJHyhzKWLUg+zVYumR3OWDm+dnV+7Ed8QsMxiMOQSQXcui/zQANcD6b7kQM2MOg==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.5_1774971250390_0.08765912809122645","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@sentinel-password/core","version":"0.4.6","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@0.4.6","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"0f22db91ba3461953bf067f796a9c276118157cc","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-0.4.6.tgz","fileCount":9,"integrity":"sha512-rSjcGkfG9j7DCrMtKf4HDdOVWKAXWqj0Og4ou9rkBV7gydDpe82YuNWy/FzhCa/+9n1o3TWpEBdwQurDO2y4Sw==","signatures":[{"sig":"MEYCIQD4Wtm9oWR4HnVhJh3ga0lOHm1mJ83BHfbbMls/JOk0+QIhAL2VcYqKTx3j3k7tH0auVX4GQHM5QbGhPiqdRY7njtIX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176197},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-0.4.6.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/9716ba38c2fdbd65c453bf420110e965/sentinel-password-core-0.4.6.tgz","_integrity":"sha512-rSjcGkfG9j7DCrMtKf4HDdOVWKAXWqj0Og4ou9rkBV7gydDpe82YuNWy/FzhCa/+9n1o3TWpEBdwQurDO2y4Sw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.2","zxcvbn":"^4.4.2","typescript":"^6.0.2","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.2","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.6_1774975009037_0.44973139947830254","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@sentinel-password/core","version":"1.0.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.0.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"b76c65574979d7cbbbf0ac6c8d094b1d9e7c58e0","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.0.0.tgz","fileCount":9,"integrity":"sha512-H+cWUC7UYhJbhacnguFDo6VXXWfHxeJMCRdAdRDxwT2I0GupB3zK953ThdBSeC2aCYLTCdPBHrGrgqw+MiDZFQ==","signatures":[{"sig":"MEYCIQD1NgRTeelTzTN/aummmc/e9/GhGQYAst95vLbLrZ5giQIhANdUAqBmT8df72obpnt/ae6GplbT2BPtjTYP1y0PJDTJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176197},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/7b197ec06e95812f48427a0ceb38c920/sentinel-password-core-1.0.0.tgz","_integrity":"sha512-H+cWUC7UYhJbhacnguFDo6VXXWfHxeJMCRdAdRDxwT2I0GupB3zK953ThdBSeC2aCYLTCdPBHrGrgqw+MiDZFQ==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.9.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.2","zxcvbn":"^4.4.2","typescript":"^6.0.2","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.2","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.0_1775030821153_0.8519152984843796","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@sentinel-password/core","version":"1.1.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.1.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"168bcc949af68d7017ad4127046c841bb9f6dc73","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.1.0.tgz","fileCount":9,"integrity":"sha512-olA/6VSFSti0qBDBRqKwNsIz1vtzIofAQa8MLSdUXbduLImht83mqVoN2zQRO3ZuGgSMRUaiEbEfAAvuLO+jFA==","signatures":[{"sig":"MEUCICkTrbpp2/CjFGUhzoNDore1iYnBt39z3hankHcBxNWwAiEA5y8HiB7szDQ+O4KINAQrhOagOTH+SGEMnZENIx9HGtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176197},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/56b0d93252af07fbb3411d3b74883c31/sentinel-password-core-1.1.0.tgz","_integrity":"sha512-olA/6VSFSti0qBDBRqKwNsIz1vtzIofAQa8MLSdUXbduLImht83mqVoN2zQRO3ZuGgSMRUaiEbEfAAvuLO+jFA==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.2","zxcvbn":"^4.4.2","typescript":"^6.0.2","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.2","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.0_1776859903083_0.28124043422277967","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@sentinel-password/core","version":"1.1.1","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.1.1","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"c911bb658251f3fcf000968513759fd0f350fde3","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.1.1.tgz","fileCount":9,"integrity":"sha512-pacdVPDc86mSkcf7GOQOVRIg5+grvP7fq9b9idGjQLQ+rbr1LinJ1nm/kkLtJ9Z3d1gQlNxpd7qa00H+nsw+0Q==","signatures":[{"sig":"MEQCIHhrFu5cfrRT0YbP/AJx0OaPVct3khzW7W7F8WDuL/u6AiBBdx4v04+jkUIoyFNn5wOtocA6FSSwymtPqfGiJGo6WA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176197},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/0ef7236fb495ebcfbfb944981fbcad10/sentinel-password-core-1.1.1.tgz","_integrity":"sha512-pacdVPDc86mSkcf7GOQOVRIg5+grvP7fq9b9idGjQLQ+rbr1LinJ1nm/kkLtJ9Z3d1gQlNxpd7qa00H+nsw+0Q==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.5","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.5","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.1_1776865968770_0.5364365385955356","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@sentinel-password/core","version":"1.1.2","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.1.2","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"261fb1438c71cef0f1a4efb8b715392bd19f9d41","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.1.2.tgz","fileCount":9,"integrity":"sha512-uQzXOYU1vsurlFJHQFwmlgtsjvVcw2C2LHt/zCAC6H0zvVUpL+QSUTzg4Pb30fLBDBJlJ8kFn5x85uMfoX6Vag==","signatures":[{"sig":"MEQCIBegd/HynP0ENn/WvWecKZtFGFoYQPoGw8R8iVoaCx5VAiB2oYN1ENr1F7B0o61IiGay0sZxFtqtkGXQFrGd/IyKmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176197},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.1.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/a41847d3cb8718073f07308947d8a6b0/sentinel-password-core-1.1.2.tgz","_integrity":"sha512-uQzXOYU1vsurlFJHQFwmlgtsjvVcw2C2LHt/zCAC6H0zvVUpL+QSUTzg4Pb30fLBDBJlJ8kFn5x85uMfoX6Vag==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.5","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.5","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.2_1777892574776_0.25996894583450625","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@sentinel-password/core","version":"1.1.3","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.1.3","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"42e2b6ac9d389af1e43c79c0869a153bde74928c","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.1.3.tgz","fileCount":9,"integrity":"sha512-m6qODAmoHu7adbXskcRRwflUTCQmzlbYCOZT9aIwo0BYBuObDhKxEFpPbCoH5OWKHUT+aXxvGllO6eWS9YbEaw==","signatures":[{"sig":"MEYCIQCel9BkdwmT2WXDoKfZ8FYf1+AV34j4Xf02ePlBgCKCbgIhALPxxhtsUfQWHHpsuWBJ4N19Kk33pmNCt4vwDBgBLPxS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176197},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.1.3.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/951bd722a7d7df437c88c2c88dbfebbd/sentinel-password-core-1.1.3.tgz","_integrity":"sha512-m6qODAmoHu7adbXskcRRwflUTCQmzlbYCOZT9aIwo0BYBuObDhKxEFpPbCoH5OWKHUT+aXxvGllO6eWS9YbEaw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 90%+ test coverage, <5KB gzipped.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.5","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.5","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.3_1777994731504_0.8600991131634081","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@sentinel-password/core","version":"1.1.4","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.1.4","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"be0aa87f46609e526ce3ce97bc0c787ec9d8da64","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.1.4.tgz","fileCount":9,"integrity":"sha512-PRPuk7XrD8BHoEdJLHlnKx63fxcgW2Sdp1qjw86pwkvydVgD3lOHkcJlfHsfsjtt7miSD0SmoxYX9+tzrVO7sQ==","signatures":[{"sig":"MEQCIEHe67KlUaIF3cAdnH57eWB12CP0njNH2U1iOWWE8C1wAiA5r52SkIdgoYgdjgB0S/w7wCcJ20R0EOa+qZOUyAoYeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190047},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.1.4.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/497938fe109aed3edbe18918c8fc28c6/sentinel-password-core-1.1.4.tgz","_integrity":"sha512-PRPuk7XrD8BHoEdJLHlnKx63fxcgW2Sdp1qjw86pwkvydVgD3lOHkcJlfHsfsjtt7miSD0SmoxYX9+tzrVO7sQ==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~5.5 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.5","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.5","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.4_1778512610127_0.9693767708037955","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@sentinel-password/core","version":"1.2.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.2.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"310c62de8e2d53cb89280c0ec0265ca9eb458475","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.2.0.tgz","fileCount":9,"integrity":"sha512-+/dCk62TWaih/J256nc1ajVMLmKoOW1KGqHxbSEoZOw8krCCN+Sw1bRq4Kh4CYPxZpD49GEbhqykiLqnPaqg+w==","signatures":[{"sig":"MEUCIQC+nHO8O+IfdcyAyMkcORFV79RJYtuTLrzOiXdQkMwnWQIgNurkiX+tPw49sTTS4WEoM7fN97jX1nrywjDg9tKaUY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":212538},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/30d008cb2e2020cd3a28cba07620dd21/sentinel-password-core-1.2.0.tgz","_integrity":"sha512-+/dCk62TWaih/J256nc1ajVMLmKoOW1KGqHxbSEoZOw8krCCN+Sw1bRq4Kh4CYPxZpD49GEbhqykiLqnPaqg+w==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~5.5 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.5","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.5","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.0_1778520803967_0.5591994996782761","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@sentinel-password/core","version":"1.2.1","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.2.1","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"4b8077cc9196d3db7ce8e1f6498db363f917f1f7","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.2.1.tgz","fileCount":9,"integrity":"sha512-4dXnT8OA5U3JesONzyxG377lGWR2N3CWMulQAEKZ4OEFwCFygcvu/TrIWXjZ/XcxR7gZLnjTPXypJGNPSjFstw==","signatures":[{"sig":"MEYCIQCQ9W1b21KNYS9E/t8Gu4/37zOqwHaWhalRJ6jieFse2QIhAOi1bzJMsT9ZNrybn3tcq81dfS1/QCiabACF84gM6y//","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":214386},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/987564bc73725cef1e099eb6acd33614/sentinel-password-core-1.2.1.tgz","_integrity":"sha512-4dXnT8OA5U3JesONzyxG377lGWR2N3CWMulQAEKZ4OEFwCFygcvu/TrIWXjZ/XcxR7gZLnjTPXypJGNPSjFstw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~5.5 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.5","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.5","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.1_1778776666849_0.7159963001792915","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@sentinel-password/core","version":"1.2.2","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.2.2","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"58ee47e4055a5ec17e4613b55005081b3e6f3b66","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.2.2.tgz","fileCount":9,"integrity":"sha512-UAs2B6T5UEJ/PVY2SczjeTbjuUX/QoR34paF0I3m5E848ldCbEmX3fUUMpRTasLgL4Jx8YdYjvgXN9VyFkNbAw==","signatures":[{"sig":"MEYCIQD2NXO0JWgNLInGCNJcKJLThjXUH9cpXWjj132KzCZrsgIhAItZcuZ+UD+TUeLfRlRHSiVUgKMeIuf4CSgn3AjSeRKb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211280},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.2.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/46c9f947ac828a0b44c2cd409036c0ea/sentinel-password-core-1.2.2.tgz","_integrity":"sha512-UAs2B6T5UEJ/PVY2SczjeTbjuUX/QoR34paF0I3m5E848ldCbEmX3fUUMpRTasLgL4Jx8YdYjvgXN9VyFkNbAw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.12.1","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~5.5 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.5","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.5","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.2_1778779447472_0.18582814071532527","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@sentinel-password/core","version":"1.2.3","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.2.3","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"4bbd85eedc36f1e90b4dd71c1aa878550c1b5669","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.2.3.tgz","fileCount":9,"integrity":"sha512-M67y4s2UF7FvZUc5JF0h393KccSqacC2k3WG7o4//DtCcI8XnzraIr0h77+1KnTsaMtl5B+yIpO5CgBfmNFTbg==","signatures":[{"sig":"MEQCICn/+a6PD643B3wGJg5xsjMq9cezLNu6BysXtHJ7hqtFAiBpBux08Syvtbmdecdha9/wfUZgYmOB9VVir+9BqALyww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211280},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.2.3.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/785d1e172204870e20b828ff29c25bbe/sentinel-password-core-1.2.3.tgz","_integrity":"sha512-M67y4s2UF7FvZUc5JF0h393KccSqacC2k3WG7o4//DtCcI8XnzraIr0h77+1KnTsaMtl5B+yIpO5CgBfmNFTbg==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.12.1","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~5.5 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.6","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.6","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.3_1779118657941_0.7683180468901132","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@sentinel-password/core","version":"1.2.4","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.2.4","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"5ff39b0f82c689eeae38d193ba2247a78b73286e","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.2.4.tgz","fileCount":9,"integrity":"sha512-Ce/xiYr6fVQ4XzuFSitpAbFP0ywM8cGhDK3swej0DQd0rnb8nG/KcCkic9WY5Zjn6I/essbPLK+h0JPuBw6ixw==","signatures":[{"sig":"MEUCIDbgRqZUqaYIWy8tNexq/jdTuuBwMlt62MKprREB1OglAiEA6gUuf8QaDlceOKV5X6KYaHp7fl+am7wmbIPEoifDk7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211280},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.2.4.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/3924e36416e69bb5415d47ea34a9e2e4/sentinel-password-core-1.2.4.tgz","_integrity":"sha512-Ce/xiYr6fVQ4XzuFSitpAbFP0ywM8cGhDK3swej0DQd0rnb8nG/KcCkic9WY5Zjn6I/essbPLK+h0JPuBw6ixw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.13.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~5.5 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.7","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.4_1780248956153_0.9497411973210319","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@sentinel-password/core","version":"1.2.5","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.2.5","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"d472303d11bb25cc0a8fd3b5afefca3f81b896eb","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.2.5.tgz","fileCount":9,"integrity":"sha512-7iGf1vnSXIB11aRhg0P6EHXh740iMgpJE8cv5Y2NZ3wn7P50UweE994VMJZIdMkmtTzmr1BrH0xtyM1bcKFDMQ==","signatures":[{"sig":"MEUCIHR25pj4wQck7EWKh3r+M8kySvA+LDaiUwum1NHPhjRxAiEAo8dls1wzdAd+9ahruqW8zmpBdzTWIe7zRUkto5RvP8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211280},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.2.5.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":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/225d4ba455d2cca4a6fc679033fe8517/sentinel-password-core-1.2.5.tgz","_integrity":"sha512-7iGf1vnSXIB11aRhg0P6EHXh740iMgpJE8cv5Y2NZ3wn7P50UweE994VMJZIdMkmtTzmr1BrH0xtyM1bcKFDMQ==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.13.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~5.5 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.8","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.8","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.5_1780653377693_0.32649808621573784","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@sentinel-password/core","version":"1.3.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.3.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"a309263bef79a497a7a3d4d94597ccd7977b2322","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.3.0.tgz","fileCount":9,"integrity":"sha512-RPkkAVqcYgktOn22c8EX8bv3uf2oZ6eG9F3goxLOvd8GdRNm742Zi3//fAwHmBo2b77XX1tZDWNiXiufdh0wPA==","signatures":[{"sig":"MEUCIQCRGksoKALcm+x0Ndi8/Fu28AXFIbtbfj7ePmY+sb3VmgIgfIs6W/jLCr+is9zUKdAsfWbHp7jUaaADNYnhqfulUVE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":215533},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/1d0d26e7409d6d465c1103a0c72aef61/sentinel-password-core-1.3.0.tgz","_integrity":"sha512-RPkkAVqcYgktOn22c8EX8bv3uf2oZ6eG9F3goxLOvd8GdRNm742Zi3//fAwHmBo2b77XX1tZDWNiXiufdh0wPA==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.13.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~6.3 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.8","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.8","check-password-strength":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.0_1781019180777_0.5010682761992915","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@sentinel-password/core","version":"1.3.1","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.3.1","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"6a668c4c09b1dfdfa7f78df1d7f6a025b2275ea7","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.3.1.tgz","fileCount":9,"integrity":"sha512-FkAJbAn1xWFI8Sx02nPjp6ykZNGTGZB6Kvk3wN4g/p8oETdPi5EYxvHaXuoFAk9BwNPMbbnDDENH6Q4S9KPOSQ==","signatures":[{"sig":"MEUCIQDQqM9xXQbQdlHyLQOylK7ccvuIP7U1zfWLGgDsROyetAIgXHwfSQbudZ7UFrpa2Z8D4J9ERkAGB2VaRWGDTyAFJD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":216496},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.3.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:mutation":"stryker run","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/3652b9055c5c573f92fbf8532b4ceeb4/sentinel-password-core-1.3.1.tgz","_integrity":"sha512-FkAJbAn1xWFI8Sx02nPjp6ykZNGTGZB6Kvk3wN4g/p8oETdPi5EYxvHaXuoFAk9BwNPMbbnDDENH6Q4S9KPOSQ==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.13.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~6.3 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.8","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.8","@stryker-mutator/core":"^9.6.1","check-password-strength":"^3.0.0","@stryker-mutator/vitest-runner":"^9.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.1_1781293297693_0.549345216687668","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@sentinel-password/core","version":"1.3.2","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.3.2","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"d7f9a728ac0f7d14fba55346e48317f15645b992","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.3.2.tgz","fileCount":9,"integrity":"sha512-slz3J+ZeZaC/vngplF7jes8s7iEnYEB9KoVUv48gu105TmlTkzCoe/kYFNiRqjVa7W6zOuj9e+IETQ3yOo9TQQ==","signatures":[{"sig":"MEUCIQCLWSBW98ouT9Y7vwHJfN9OQE5POlV3Ppon73PBSPj0+AIgR5rr0g52qhgPdBCXg3ee7OeImVV21lnoN3hBfT7rIM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":216496},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.3.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:mutation":"stryker run","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/52a72dfa7f78956ffe52671603ffe01c/sentinel-password-core-1.3.2.tgz","_integrity":"sha512-slz3J+ZeZaC/vngplF7jes8s7iEnYEB9KoVUv48gu105TmlTkzCoe/kYFNiRqjVa7W6zOuj9e+IETQ3yOo9TQQ==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.13.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~6.3 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.8","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.8","@stryker-mutator/core":"^9.6.1","check-password-strength":"^3.0.0","@stryker-mutator/vitest-runner":"^9.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.2_1781439965620_0.9776693600147486","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@sentinel-password/core","version":"1.3.3","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.3.3","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"da7c722f59a511ba8b2daa91adf198d8dcb5a767","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.3.3.tgz","fileCount":9,"integrity":"sha512-YXsuBC9tSIBkPn8ERclJY491LpasWpUA9aoP+hXxcy+bi3dUsJlE9tDhHyqh35rhT/gsdNRLUFmxs8HsFWw5pw==","signatures":[{"sig":"MEYCIQDf/LaIJTuEjyiFQk4lG6YHjjjO03n4BHxJpZ3ty5vxpwIhAPkyc3HaZuGwz5vqpP1me6CRG6ssHULE4qoNYAZveZHe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":216496},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.3.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:mutation":"stryker run","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/7a138a19a064276857bf8816c7c092bd/sentinel-password-core-1.3.3.tgz","_integrity":"sha512-YXsuBC9tSIBkPn8ERclJY491LpasWpUA9aoP+hXxcy+bi3dUsJlE9tDhHyqh35rhT/gsdNRLUFmxs8HsFWw5pw==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.13.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~6.3 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.9","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","check-password-strength":"^3.0.0","@stryker-mutator/vitest-runner":"^9.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.3_1781852356777_0.8065250122979144","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@sentinel-password/core","version":"1.4.0","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","_id":"@sentinel-password/core@1.4.0","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"dist":{"shasum":"676925fb7224ad2b0a46ae2488fd1ea8cdc8f77a","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-1.4.0.tgz","fileCount":9,"integrity":"sha512-/60ctht1utvJKeHXzGR6lfCPCyViFGF87zM41hNIgkRZNkGjGoDXj8+zKAOX+YfwPJ/8QbfTHbPkGTn2CNJAdA==","signatures":[{"sig":"MEYCIQCY5jSvo+biEJ/G/4GHHdJsjhSZgliuv3QN/tqpM7LkXwIhAK2oQcpWrFKxi533jUADc6xrQW+cY63lDYPhmk5W8I1i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":256990},"main":"./dist/index.cjs","type":"module","_from":"file:sentinel-password-core-1.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"eslint src","test":"vitest run","bench":"vitest bench","build":"tsup","clean":"rm -rf dist coverage","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:mutation":"stryker run","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"_resolved":"/tmp/c62675a8377ad2d313a083120edef663/sentinel-password-core-1.4.0.tgz","_integrity":"sha512-/60ctht1utvJKeHXzGR6lfCPCyViFGF87zM41hNIgkRZNkGjGoDXj8+zKAOX+YfwPJ/8QbfTHbPkGTn2CNJAdA==","repository":{"url":"git+https://github.com/akankov/sentinel-password.git","type":"git","directory":"packages/core"},"_npmVersion":"11.16.0","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~6.3 KB gzipped (10 KB CI limit).","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.9","zxcvbn":"^4.4.2","typescript":"^6.0.3","password-validator":"^5.3.0","@vitest/coverage-v8":"^4.1.9","@stryker-mutator/core":"^9.6.1","check-password-strength":"^3.0.0","@stryker-mutator/vitest-runner":"^9.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.0_1783343083460_0.28363556529429235","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@sentinel-password/core","version":"2.0.0","type":"module","description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~6.3 KB gzipped (10 KB CI limit).","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"}}},"publishConfig":{"access":"public","provenance":true},"sideEffects":false,"keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","engines":{"node":">=22"},"repository":{"type":"git","url":"git+https://github.com/akankov/sentinel-password.git","directory":"packages/core"},"homepage":"https://akankov.github.io/sentinel-password/","bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"devDependencies":{"@stryker-mutator/core":"^9.6.1","@stryker-mutator/vitest-runner":"^9.6.1","@vitest/coverage-v8":"^4.1.10","check-password-strength":"^3.0.0","password-validator":"^5.3.0","tsup":"^8.5.1","typescript":"^6.0.3","vitest":"^4.1.10","zxcvbn":"^4.4.2"},"scripts":{"build":"tsup","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","test:mutation":"stryker run","bench":"vitest bench","generate:bloom":"node ../../scripts/generate-bloom-filter.cjs","lint":"eslint src","lint:fix":"eslint src --fix","typecheck":"tsc --noEmit","clean":"rm -rf dist coverage"},"_id":"@sentinel-password/core@2.0.0","_integrity":"sha512-ZdEPdUXrgcKg4ex4r6/gNah/8HQxkzLqMUM+bHFA3ljR5VMQmyfk2PiSH/3tBwvc4v6pm42+jwl2njaBlI+WTw==","_resolved":"/tmp/2f939cb78393ed91112fd564091aa5cc/sentinel-password-core-2.0.0.tgz","_from":"file:sentinel-password-core-2.0.0.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-ZdEPdUXrgcKg4ex4r6/gNah/8HQxkzLqMUM+bHFA3ljR5VMQmyfk2PiSH/3tBwvc4v6pm42+jwl2njaBlI+WTw==","shasum":"d6cc4623977ba6755f96452bc1932f23b874cbc8","tarball":"https://registry.npmjs.org/@sentinel-password/core/-/core-2.0.0.tgz","fileCount":9,"unpackedSize":257024,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sentinel-password%2fcore@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICvl+zca+yvVCP4sogxZ9Mlmzfk0AwcaC/Y9rBvk5EitAiBzPM5jvjW3KCAPNhEwTxLHU9nKDubQUpmB5A5S4weftw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bcb65cb5-36d4-4c4a-84b7-0a81739a7924"}},"directories":{},"maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_2.0.0_1785259501010_0.7132574976198804"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-30T17:49:40.901Z","modified":"2026-07-28T17:25:01.509Z","0.1.0":"2025-11-30T17:49:41.267Z","0.1.1":"2025-12-01T18:33:08.153Z","0.1.2":"2025-12-02T17:24:09.365Z","0.1.3":"2025-12-03T21:50:22.365Z","0.2.0":"2026-02-18T20:49:22.903Z","0.4.0":"2026-03-17T08:09:52.159Z","0.4.1":"2026-03-25T17:25:32.138Z","0.4.2":"2026-03-30T16:15:36.610Z","0.4.3":"2026-03-30T17:51:47.461Z","0.4.4":"2026-03-31T07:00:34.175Z","0.4.5":"2026-03-31T15:34:10.523Z","0.4.6":"2026-03-31T16:36:49.232Z","1.0.0":"2026-04-01T08:07:01.301Z","1.1.0":"2026-04-22T12:11:43.237Z","1.1.1":"2026-04-22T13:52:48.912Z","1.1.2":"2026-05-04T11:02:54.924Z","1.1.3":"2026-05-05T15:25:31.634Z","1.1.4":"2026-05-11T15:16:50.262Z","1.2.0":"2026-05-11T17:33:24.128Z","1.2.1":"2026-05-14T16:37:47.062Z","1.2.2":"2026-05-14T17:24:07.623Z","1.2.3":"2026-05-18T15:37:38.082Z","1.2.4":"2026-05-31T17:35:56.385Z","1.2.5":"2026-06-05T09:56:17.831Z","1.3.0":"2026-06-09T15:33:00.917Z","1.3.1":"2026-06-12T19:41:37.890Z","1.3.2":"2026-06-14T12:26:05.788Z","1.3.3":"2026-06-19T06:59:16.929Z","1.4.0":"2026-07-06T13:04:43.606Z","2.0.0":"2026-07-28T17:25:01.194Z"},"bugs":{"url":"https://github.com/akankov/sentinel-password/issues"},"author":{"name":"Aleksei Kankov","email":"akankov@gmail.com"},"license":"MIT","homepage":"https://akankov.github.io/sentinel-password/","keywords":["password","validation","security","typescript","zxcvbn","strength","entropy","password-validator","password-strength","authentication","zero-dependency","bloom-filter"],"repository":{"type":"git","url":"git+https://github.com/akankov/sentinel-password.git","directory":"packages/core"},"description":"Modern, zero-dependency TypeScript password validation with bloom filter-based common password detection. 100% test coverage (enforced); ~6.3 KB gzipped (10 KB CI limit).","maintainers":[{"name":"akankov","email":"akankov@gmail.com"}],"readme":"# @sentinel-password/core\n\n[![npm version](https://img.shields.io/npm/v/@sentinel-password/core.svg)](https://www.npmjs.com/package/@sentinel-password/core)\n[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@sentinel-password/core)](https://bundlephobia.com/package/@sentinel-password/core)\n[![TypeScript](https://img.shields.io/badge/TypeScript-6.0+-blue.svg)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nModern TypeScript password validation library with zero dependencies, comprehensive validation rules, and rich feedback.\n\n**[Documentation](https://akankov.github.io/sentinel-password/)** | **[Interactive Playground](https://akankov.github.io/sentinel-password/playground/)** | **[API Reference](https://akankov.github.io/sentinel-password/api/core.html)**\n\n## Features\n\n- **Zero Dependencies** - No external dependencies, tree-shakeable, ~6.3KB gzipped\n- **TypeScript-First** - Full type safety with strict mode enabled\n- **Rich Feedback** - Actionable suggestions for password improvement\n- **Comprehensive Validation** - 7 built-in validators covering OWASP best practices\n- **Flexible API** - Zero-config defaults with full customization options\n- **Framework Agnostic** - Works in Node.js, browsers, and any JavaScript environment\n\n## Installation\n\n```bash\nnpm install @sentinel-password/core\n```\n\n```bash\npnpm add @sentinel-password/core\n```\n\n```bash\nyarn add @sentinel-password/core\n```\n\n## Quick Start\n\n```typescript\nimport { validatePassword } from '@sentinel-password/core'\n\nconst result = validatePassword('MySecure!Pass_w0rd')\n\nif (result.valid) {\n  console.log('Password is valid!')\n  console.log(`Strength: ${result.strength}`) // 'very-strong'\n  console.log(`Score: ${result.score}`) // 4\n} else {\n  // `feedback.warning` is always equal to `feedback.suggestions[0]` — the\n  // first failure, surfaced for prominent display. Iterate `suggestions`\n  // for the full list; the first entry is the warning.\n  console.log('Password is invalid')\n  result.feedback.suggestions.forEach(suggestion => {\n    console.log(`- ${suggestion}`)\n  })\n}\n```\n\n## Validation Result\n\nThe `validatePassword` function returns a comprehensive validation result:\n\n```typescript\ninterface ValidationResult {\n  // Overall validation status\n  valid: boolean\n  \n  // Strength scoring\n  score: 0 | 1 | 2 | 3 | 4\n  strength: 'very-weak' | 'weak' | 'medium' | 'strong' | 'very-strong'\n  \n  // User feedback\n  feedback: {\n    warning?: string              // Primary warning message\n    suggestions: readonly string[] // All improvement suggestions\n  }\n  \n  // Individual check results\n  checks: {\n    length: boolean             // Meets length requirements\n    characterTypes: boolean     // Meets character type requirements\n    repetition: boolean         // No excessive repeated characters\n    sequential: boolean         // No three characters with consecutive charCodeAt values (abc, 123, xyz, plus runs like '!\"#' or '9:;')\n    keyboardPattern: boolean    // No keyboard patterns (qwerty, asdf)\n    commonPassword: boolean     // Not in top 1K common passwords, incl. l33t forms (Bloom filter, ~0.3% false-positive rate per probe)\n    personalInfo: boolean       // Doesn't contain personal information\n  }\n}\n```\n\n## Configuration Options\n\nCustomize validation rules to match your requirements:\n\n```typescript\nconst result = validatePassword('Tr0ub4dor&3-isLong!', {\n  // Length constraints\n  minLength: 12,              // default: 8\n  maxLength: 128,             // default: 128\n\n  // Character requirements\n  requireUppercase: true,     // default: false\n  requireLowercase: true,     // default: false\n  requireDigit: true,         // default: false\n  requireSymbol: true,        // default: false\n\n  // Pattern detection\n  maxRepeatedChars: 3,        // default: 3\n  checkSequential: true,      // default: true\n  checkKeyboardPatterns: true, // default: true\n  checkCommonPasswords: true, // default: true\n\n  // Personal information exclusion\n  personalInfo: ['johndoe', 'john.doe@example.com'],\n})\n// result.valid === true, result.strength === 'very-strong'\n```\n\n## Usage Examples\n\n### Basic Validation\n\n```typescript\nimport { validatePassword } from '@sentinel-password/core'\n\n// Valid password\nconst result1 = validatePassword('Tr0ub4dor&3')\nconsole.log(result1.valid) // true\nconsole.log(result1.strength) // 'very-strong'\n\n// Invalid password (too short)\nconst result2 = validatePassword('pass')\nconsole.log(result2.valid) // false\nconsole.log(result2.feedback.warning) // 'Password must be at least 8 characters'\n```\n\n### Custom Requirements\n\n```typescript\nimport { validatePassword } from '@sentinel-password/core'\n\n// Require strong passwords with all character types\nconst result = validatePassword('password', {\n  minLength: 12,\n  requireUppercase: true,\n  requireLowercase: true,\n  requireDigit: true,\n  requireSymbol: true\n})\n\nconsole.log(result.valid) // false\nconsole.log(result.checks.length) // false\nconsole.log(result.checks.characterTypes) // false\nconsole.log(result.checks.commonPassword) // false — 'password' is in the common-password list\nconsole.log(result.feedback.suggestions)\n// [\n//   'Password must be at least 12 characters',\n//   'Password must contain at least one uppercase letter, digit, symbol',\n//   'Password is too common. Please choose a more unique password.'\n// ]\n```\n\nThe character-type validator returns a single combined message listing every missing type — not one suggestion per missing type. Note that `'password'` also trips the common-password check, so a third suggestion always appears regardless of length and character-type settings.\n\n### Blocking Personal Information\n\n```typescript\nimport { validatePassword } from '@sentinel-password/core'\n\nconst result = validatePassword('alice2024', {\n  personalInfo: ['alice', 'alice@example.com']\n})\n\nconsole.log(result.valid) // false\nconsole.log(result.checks.personalInfo) // false\nconsole.log(result.feedback.warning)\n// 'Password contains personal information'\n```\n\n### Detecting Common Patterns\n\n```typescript\nimport { validatePassword } from '@sentinel-password/core'\n\n// Sequential patterns\nconst result1 = validatePassword('password123')\nconsole.log(result1.checks.sequential) // false\n\n// Keyboard patterns\nconst result2 = validatePassword('qwerty2024')\nconsole.log(result2.checks.keyboardPattern) // false\n\n// Common passwords\nconst result3 = validatePassword('password')\nconsole.log(result3.checks.commonPassword) // false\n\n// Excessive repetition\nconst result4 = validatePassword('passssword')\nconsole.log(result4.checks.repetition) // false\n```\n\n### Signup Form Example\n\n```typescript\nimport { validatePassword } from '@sentinel-password/core'\n\nfunction handleSignup(formData: {\n  email: string\n  username: string\n  password: string\n}) {\n  const result = validatePassword(formData.password, {\n    minLength: 10,\n    requireUppercase: true,\n    requireLowercase: true,\n    requireDigit: true,\n    personalInfo: [formData.email, formData.username]\n  })\n  \n  if (!result.valid) {\n    return {\n      success: false,\n      errors: result.feedback.suggestions\n    }\n  }\n  \n  return {\n    success: true,\n    passwordStrength: result.strength\n  }\n}\n```\n\n## Advanced Usage\n\n### Individual Validators\n\nFor fine-grained control, import and use individual validators:\n\n```typescript\nimport {\n  validateLength,\n  validateCharacterTypes,\n  validateRepetition,\n  validateSequential,\n  validateKeyboardPattern,\n  validateCommonPassword,\n  validatePersonalInfo\n} from '@sentinel-password/core'\n\nconst password = 'MyPassword123'\n\n// Check individual constraints\nconst lengthCheck = validateLength(password, { minLength: 12 })\nconsole.log(lengthCheck.passed) // false\nconsole.log(lengthCheck.message) // 'Password must be at least 12 characters'\n\nconst charTypeCheck = validateCharacterTypes(password, {\n  requireUppercase: true,\n  requireLowercase: true,\n  requireDigit: true,\n  requireSymbol: true,\n})\nconsole.log(charTypeCheck.passed) // false\nconsole.log(charTypeCheck.message) // 'Password must contain at least one symbol'\n// (one combined message listing every missing type — not one message per type)\n```\n\n### Character Type Helpers\n\n```typescript\nimport {\n  hasUppercase,\n  hasLowercase,\n  hasDigit,\n  hasSymbol\n} from '@sentinel-password/core'\n\nconst password = 'MyPassword123!'\n\nconsole.log(hasUppercase(password)) // true\nconsole.log(hasLowercase(password)) // true\nconsole.log(hasDigit(password))     // true\nconsole.log(hasSymbol(password))    // true\n```\n\n## TypeScript\n\nThe library is written in TypeScript with full type definitions included:\n\n```typescript\nimport type {\n  ValidationResult,\n  ValidatorOptions,\n  ValidatorCheck,\n  StrengthScore,\n  StrengthLabel,\n  CheckId\n} from '@sentinel-password/core'\n\nconst options: ValidatorOptions = {\n  minLength: 10,\n  requireUppercase: true\n}\n\nconst result: ValidationResult = validatePassword('test', options)\nconst score: StrengthScore = result.score // 0 | 1 | 2 | 3 | 4\nconst strength: StrengthLabel = result.strength // 'very-weak' | 'weak' | ...\n```\n\n## Validation Rules\n\n### 1. Length Validation\n\n- Default: 8-128 characters\n- Configurable via `minLength` and `maxLength`\n\n### 2. Character Types\n\n- Optional requirements for uppercase, lowercase, digits, and symbols\n- Configurable via `requireUppercase`, `requireLowercase`, `requireDigit`, `requireSymbol`\n\n### 3. Repetition Detection\n\n- Blocks excessive repeated characters (e.g., \"aaaa\")\n- Default: max 3 repeated characters\n- Configurable via `maxRepeatedChars`\n\n### 4. Sequential Pattern Detection\n\n- Blocks any three characters whose `charCodeAt` values are consecutive ascending or descending — `abc`, `123`, `xyz` plus less-obvious runs like `!\"#`, `,-.`, `9:;` (equivalent to consecutive Unicode code points for the BMP, which covers every character a typical password uses)\n- Works forward and backward\n- Configurable via `checkSequential`\n\n### 5. Keyboard Pattern Detection\n\n- Blocks runs along common keyboard layouts: QWERTY (`qwerty`, `asdfgh`, `zxcvbn`), AZERTY (`azerty`, `qsdfg`), QWERTZ (`qwertz`, `yxcvb`), Dvorak (`aoeu`, `htns`), Colemak (`arst`, `dhne`), and Cyrillic (`йцукен`, `фывап`)\n- Catches numeric runs: full top row (`1234567890`), reverse (`0987654321`), and numeric-keypad rows/columns (`789`, `456`, `123`, `741`, `852`, `963`)\n- Does **not** match the shifted symbol row (`!@#$%…`) — only unshifted runs\n- Configurable via `checkKeyboardPatterns`\n\n### 6. Common Password Detection\n\n- Blocks the top 1,000 most common passwords\n- Uses a Bloom filter for efficient memory usage (~1.5 KB vs ~8 KB for the raw list)\n- No false negatives (every password in the list is rejected, including l33t-speak readings like `P@ssw0rd` and `l3tm3in`) and a ~0.3% per-probe false-positive rate (≲1% for heavily substituted inputs) — uncommon passwords are very rarely flagged as \"common\"\n- Configurable via `checkCommonPasswords`\n\n### 7. Personal Information Detection\n\n- Blocks passwords containing personal info (username, email, etc.)\n- Extracts username from email addresses\n- Configurable via `personalInfo` array\n\n## Bundle Size\n\n- **ESM**: ~18KB uncompressed, ~6.3KB gzipped\n- **CJS**: ~17KB uncompressed, ~6KB gzipped\n- **Zero dependencies** - no additional packages needed\n- **Tree-shakeable** - only import what you use\n\n## Runtime Support\n\nThe published package is plain ES2022 with no Node or browser-specific APIs, so it runs anywhere those features are available:\n\n- Chrome/Edge 88+\n- Firefox 78+\n- Safari 14+\n- Node.js 22+ (and Deno, Bun, Cloudflare Workers, Vercel Edge — see the [Server-Side Usage guide](https://akankov.github.io/sentinel-password/guide/server-side))\n\n> The package itself is plain ES2022 and will run on older Node, but `engines.node` declares `>=22` — the oldest release still receiving security support — so npm and pnpm will warn (or fail, under `engine-strict`) below that.\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](../../CONTRIBUTING.md) for details.\n\n## License\n\nMIT - see [LICENSE](../../LICENSE) for details.\n\n## Related Packages\n\n- [`@sentinel-password/react`](https://www.npmjs.com/package/@sentinel-password/react) - React hook for password validation with debouncing\n- [`@sentinel-password/react-components`](https://www.npmjs.com/package/@sentinel-password/react-components) - Accessible, headless React components\n\n## Acknowledgments\n\nInspired by [zxcvbn](https://github.com/dropbox/zxcvbn) and modern password validation best practices from [OWASP](https://owasp.org/www-project-proactive-controls/).\n","readmeFilename":"README.md"}