{"_id":"@awais512/password-strength-checker","_rev":"1-b13192a4a8a962c7bdf13d3f02c2f9af","name":"@awais512/password-strength-checker","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@awais512/password-strength-checker","version":"1.0.0","keywords":["password","strength","checker","react","typescript"],"author":{"name":"Your Name"},"license":"MIT","_id":"@awais512/password-strength-checker@1.0.0","maintainers":[{"name":"awais512","email":"raza.awais25@gmail.com"}],"dist":{"shasum":"9cac3f7cd399bcc5bf4b74de436227580be68505","tarball":"https://registry.npmjs.org/@awais512/password-strength-checker/-/password-strength-checker-1.0.0.tgz","fileCount":13,"integrity":"sha512-KgZTVB82PIFsgKeG+QXZtnVLij/sce4C6P0SvyDzhK9Rl5BFbf4t7t9wwXzKUKkQ4+e0nMPmblbvG6BRq9zLSA==","signatures":[{"sig":"MEYCIQCbBPxV9GaboSdloHrwAmflVBopvdcuBS6nbOOrP6GZBwIhAKzhyMKPWQxdoTjEyRyb5u3rMeJ1gFMim4JTSuWZRP/k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10153},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7633ecb088d4fb02a69a161352a10f5c80658167","scripts":{"dev":"tsc -w","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"awais512","email":"raza.awais25@gmail.com"},"_npmVersion":"10.2.3","description":"A customizable password strength checker with React support","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/password-strength-checker_1.0.0_1733523224723_0.49245694410403695","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@awais512/password-strength-checker","version":"1.0.1","description":"A customizable password strength checker with React support","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build","dev":"tsc -w"},"keywords":["password","strength","checker","react","typescript"],"author":{"name":"Your Name"},"license":"MIT","peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_id":"@awais512/password-strength-checker@1.0.1","gitHead":"c714c05861f13f4f209e61e22cefc33e0cca637c","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-TDNrCW5ABr/aJZObPN69EZLRHb5hkxJU6YF20Hg+sFBXBaRoxz3LiNYGv9MNIwypDAsf8UtQ7A/L5eiWO2RaKw==","shasum":"aa8412183cc6001dee1dcfea37447c1f6513ee59","tarball":"https://registry.npmjs.org/@awais512/password-strength-checker/-/password-strength-checker-1.0.1.tgz","fileCount":14,"unpackedSize":15013,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDiS8KXQGnWMT9d6odjscoYDVPrYaLU7GNmBlxC5hJyYAiA5+cM8uXjMvPIyz0Rfh0sKE77R7BTCObifLPYApFtI9g=="}]},"_npmUser":{"name":"awais512","email":"raza.awais25@gmail.com"},"directories":{},"maintainers":[{"name":"awais512","email":"raza.awais25@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/password-strength-checker_1.0.1_1733523666980_0.6931409209167012"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-06T22:13:44.591Z","modified":"2024-12-06T22:21:07.315Z","1.0.0":"2024-12-06T22:13:44.924Z","1.0.1":"2024-12-06T22:21:07.164Z"},"author":{"name":"Your Name"},"license":"MIT","keywords":["password","strength","checker","react","typescript"],"description":"A customizable password strength checker with React support","maintainers":[{"name":"awais512","email":"raza.awais25@gmail.com"}],"readme":"# Password Strength Checker\r\n\r\nA flexible and customizable password strength checker for React applications with TypeScript support.\r\n\r\n## Features\r\n\r\n- 🔒 Comprehensive password strength validation\r\n- 🎨 Customizable strength requirements and levels\r\n- ⚛️ React components included\r\n- 📦 Framework-agnostic core\r\n- 💪 Written in TypeScript\r\n- 🎯 Zero dependencies\r\n\r\n## Installation\r\n\r\n```bash\r\n# Using npm\r\nnpm install @awais512/password-strength-checker\r\n\r\n# Using yarn\r\nyarn add @awais512/password-strength-checker\r\n\r\n# Using pnpm\r\npnpm add @awais512/password-strength-checker\r\n```\r\n\r\n## Quick Start\r\n\r\n### Basic React Usage\r\n\r\n```tsx\r\nimport { DefaultPasswordChecker } from \"@awais512/password-strength-checker\";\r\n\r\nfunction App() {\r\n  return (\r\n    <div>\r\n      <h1>Password Checker</h1>\r\n      <DefaultPasswordChecker />\r\n    </div>\r\n  );\r\n}\r\n```\r\n\r\n### Core Usage\r\n\r\n```typescript\r\nimport { PasswordStrengthChecker } from \"@awais512/password-strength-checker\";\r\n\r\nconst checker = new PasswordStrengthChecker();\r\nconst strength = checker.calculateStrength(\"MyPassword123!\");\r\nconsole.log(`Password strength: ${strength}%`);\r\n```\r\n\r\n## Advanced Usage\r\n\r\n### Custom Requirements\r\n\r\n```typescript\r\nimport { PasswordStrengthChecker } from \"@awais512/password-strength-checker\";\r\n\r\nconst checker = new PasswordStrengthChecker({\r\n  requirements: [\r\n    {\r\n      key: \"minLength\",\r\n      description: \"Minimum 10 characters\",\r\n      validator: (pwd) => pwd.length >= 10,\r\n    },\r\n    {\r\n      key: \"hasSymbol\",\r\n      description: \"Contains @ symbol\",\r\n      validator: (pwd) => pwd.includes(\"@\"),\r\n    },\r\n  ],\r\n});\r\n```\r\n\r\n### Custom Strength Levels\r\n\r\n```typescript\r\nimport { PasswordStrengthChecker } from \"@awais512/password-strength-checker\";\r\n\r\nconst checker = new PasswordStrengthChecker({\r\n  strengthLevels: [\r\n    { label: \"Weak\", color: \"#ff0000\", threshold: 30 },\r\n    { label: \"Medium\", color: \"#ffff00\", threshold: 60 },\r\n    { label: \"Strong\", color: \"#00ff00\", threshold: 100 },\r\n  ],\r\n});\r\n```\r\n\r\n### Custom React Component\r\n\r\n```tsx\r\nimport {\r\n  PasswordInput,\r\n  PasswordStrengthChecker,\r\n} from \"@awais512/password-strength-checker\";\r\nimport { useState } from \"react\";\r\n\r\nfunction CustomPasswordChecker() {\r\n  const [password, setPassword] = useState(\"\");\r\n  const checker = new PasswordStrengthChecker();\r\n\r\n  return (\r\n    <PasswordInput\r\n      value={password}\r\n      onChange={setPassword}\r\n      checker={checker}\r\n      renderStrengthIndicator={(strength, level) => (\r\n        <div>\r\n          <div\r\n            style={{\r\n              width: `${strength}%`,\r\n              height: \"10px\",\r\n              backgroundColor: level.color,\r\n              transition: \"all 0.3s\",\r\n            }}\r\n          />\r\n          <p>Strength: {level.label}</p>\r\n        </div>\r\n      )}\r\n      renderRequirements={(validations) => (\r\n        <ul>\r\n          {checker.getRequirements().map((req) => (\r\n            <li key={req.key}>\r\n              {validations[req.key] ? \"✅\" : \"❌\"} {req.description}\r\n            </li>\r\n          ))}\r\n        </ul>\r\n      )}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n## API Reference\r\n\r\n### PasswordStrengthChecker\r\n\r\nMain class for password validation and strength calculation.\r\n\r\n#### Constructor Options\r\n\r\n```typescript\r\ninterface PasswordStrengthOptions {\r\n  requirements?: PasswordRequirement[];\r\n  strengthLevels?: StrengthLevel[];\r\n  minStrength?: number;\r\n}\r\n```\r\n\r\n#### Methods\r\n\r\n- `calculateStrength(password: string): number` - Returns strength percentage (0-100)\r\n- `validatePassword(password: string): Record<string, boolean>` - Returns validation status for each requirement\r\n- `getStrengthLevel(password: string): StrengthLevel` - Returns current strength level\r\n- `isPasswordValid(password: string): boolean` - Checks if password meets minimum strength\r\n- `getRequirements(): PasswordRequirement[]` - Returns current requirements\r\n\r\n### React Components\r\n\r\n#### PasswordInput Props\r\n\r\n```typescript\r\ninterface PasswordInputProps {\r\n  value: string;\r\n  onChange: (value: string) => void;\r\n  checker: PasswordStrengthChecker;\r\n  renderStrengthIndicator?: (\r\n    strength: number,\r\n    level: StrengthLevel\r\n  ) => React.ReactNode;\r\n  renderRequirements?: (\r\n    validations: Record<string, boolean>\r\n  ) => React.ReactNode;\r\n  className?: string;\r\n}\r\n```\r\n\r\n#### DefaultPasswordChecker\r\n\r\nA pre-styled password checker component with default rendering.\r\n\r\n## Default Configuration\r\n\r\n### Default Requirements\r\n\r\n- Minimum 8 characters\r\n- Contains uppercase letter\r\n- Contains lowercase letter\r\n- Contains number\r\n- Contains special character\r\n\r\n### Default Strength Levels\r\n\r\n- Very Weak (0-20%)\r\n- Weak (20-40%)\r\n- Fair (40-60%)\r\n- Good (60-80%)\r\n- Strong (80-100%)\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n## License\r\n\r\nMIT © [Awais Raza]\r\n","readmeFilename":"README.md"}