UNPKG

@obliczeniowo/elementary

Version:
1 lines 7.92 kB
{"version":3,"file":"obliczeniowo-elementary-password.mjs","sources":["../../../../projects/components/password/components/password-strength/password-strength.component.ts","../../../../projects/components/password/components/password-strength/password-strength.component.html","../../../../projects/components/password/password.module.ts","../../../../projects/components/password/obliczeniowo-elementary-password.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { PasswordType } from '../../types/types';\r\n\r\n@Component({\r\n selector: 'obl-password-strength',\r\n templateUrl: './password-strength.component.html',\r\n styleUrls: ['./password-strength.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class PasswordStrengthComponent {\r\n @Input() password = '';\r\n\r\n readonly height = 1;\r\n\r\n readonly weryWeak = Math.pow(26, 10);\r\n readonly weak = Math.pow(26 + 26, 10);\r\n readonly strong = Math.pow(26 + 26 + 10, 10);\r\n readonly weryStrong = Math.pow(26 + 26 + 10 + 30, 10);\r\n\r\n translations: {\r\n weryWeak: string,\r\n weak: string,\r\n strong: string,\r\n weryStrong: string\r\n } = {\r\n weryWeak: 'wery weak',\r\n weak: 'weak',\r\n strong: 'strong',\r\n weryStrong: 'wery strong'\r\n };\r\n\r\n id!: string;\r\n strengthType: PasswordType = 'weryWeak';\r\n\r\n constructor(protected change: ChangeDetectorRef) {\r\n const generate = () => `Password_${Math.floor(Math.random() * 100000000)}`;\r\n this.id = generate();\r\n while (document.querySelector('#' + this.id)) {\r\n this.id = generate();\r\n }\r\n }\r\n\r\n getK(): number {\r\n const strength = this.getStrength();\r\n if (strength < this.weryWeak) {\r\n this.strengthType = 'weryWeak';\r\n return 0.4 * strength / this.weryWeak;\r\n } else if (strength < this.weak) {\r\n this.strengthType = 'weak';\r\n return 0.4 + 0.4 * strength / this.weak;\r\n } else if (strength < this.strong) {\r\n this.strengthType = 'strong';\r\n return 0.8 + 0.1 * strength / this.strong;\r\n } else if (strength < this.weryStrong) {\r\n this.strengthType = 'weryStrong';\r\n return 0.9 + 0.1 * strength / this.weryStrong;\r\n }\r\n this.strengthType = 'weryStrong';\r\n return 1;\r\n }\r\n\r\n getStrength(): number {\r\n const hasLowerCase = /[a-z]/.test(this.password);\r\n const hasUpperCase = /[A-Z]/.test(this.password);\r\n const hasNumbers = /[0-9]/.test(this.password);\r\n const hasSpecialChars = /[^a-zA-Z0-9\\s]/.test(this.password);\r\n const hasWhiteSpace = /[ \\t]/.test(this.password);\r\n\r\n return Math.pow((hasLowerCase && 26 || 0) +\r\n (hasUpperCase && 26 || 0) +\r\n (hasNumbers && 10 || 0) +\r\n (hasSpecialChars && 30 || 0) +\r\n (hasWhiteSpace && 2 || 0),\r\n this.password.length\r\n );\r\n }\r\n}\r\n","<svg height=\"5\" viewBox=\"0 0 52.916665 1.3229167\">\r\n <defs id=\"defs2\">\r\n <clipPath [attr.id]=\"id\">\r\n <rect [attr.width]=\"100 * getK() + '%'\" height=\"1.3229166\" x=\"0\" y=\"0\" />\r\n </clipPath>\r\n </defs>\r\n <path\r\n class=\"background\"\r\n d=\"M 0,0 V 1.3229166 H 11.90625 V 0 Z M 13.229167,0 V 1.3229166 H 25.135416 V 0 Z m 13.229166,0 v 1.3229166 h 11.90625 V 0 Z M 39.6875,0 v 1.3229166 h 6.614583 V 0 Z m 7.937499,0 v 1.3229166 h 5.291667 V 0 Z\"\r\n />\r\n <g [attr.clip-path]=\"'url(#' + id + ')'\">\r\n <path class=\"weak\" d=\"M -1.666668e-8,0 V 1.3229167 H 11.90625 V 0 Z\" />\r\n <path class=\"weak\" d=\"m 13.229167,0 v 1.3229167 h 11.90625 V 0 Z\" />\r\n <path class=\"weak\" d=\"m 26.458333,0 v 1.3229167 h 11.90625 V 0 Z\" />\r\n <path class=\"strong\" d=\"m 39.6875,0 v 1.3229167 h 6.614583 V 0 Z\" />\r\n <path class=\"wery-strong\" d=\"m 47.625,0 v 1.3229167 h 5.291666 V 0 Z\" />\r\n </g>\r\n</svg>\r\n{{ translations[strengthType] }}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PasswordStrengthComponent } from './components/password-strength/password-strength.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PasswordStrengthComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n PasswordStrengthComponent\r\n ]\r\n})\r\nexport class PasswordModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}