UNPKG

@eresearchqut/angular-password-strength-meter

Version:

[![CI](https://github.com/eresearchqut/angular-password-strength-meter/actions/workflows/ci-workflow.yml/badge.svg)](https://github.com/eresearchqut/angular-password-strength-meter/actions/workflows/ci-workflow.yml) [![npm version](https://badge.fury.io/j

90 lines (83 loc) 3.06 kB
import * as i0 from '@angular/core'; import { InjectionToken, inject, Injectable, makeEnvironmentProviders } from '@angular/core'; import { IPasswordStrengthMeterService } from 'angular-password-strength-meter'; import { zxcvbnOptions, zxcvbn, zxcvbnAsync } from '@zxcvbn-ts/core'; import { translations } from '@zxcvbn-ts/language-en'; const ZXCVBN_CONFIG = new InjectionToken('ZXCVBN_CONFIG'); const DEFAULT_CONFIG = { translations: translations, }; class PasswordStrengthMeterZXCVBNService extends IPasswordStrengthMeterService { constructor() { const options = inject(ZXCVBN_CONFIG, { optional: true }); super(); if (options) { zxcvbnOptions.setOptions(options); } else { zxcvbnOptions.setOptions(DEFAULT_CONFIG); } } /** * this will return the password strength score in number * 0 - too guessable * 1 - very guessable * 2 - somewhat guessable * 3 - safely unguessable * 4 - very unguessable * * @param password - Password */ score(password) { const result = zxcvbn(password); return result.score; } /** * this will return the password strength score with feedback messages * return type FeedbackResult * * @param password - Password */ scoreWithFeedback(password) { const result = zxcvbn(password); return { score: result.score, feedback: result.feedback }; } async scoreAsync(password) { const result = await zxcvbnAsync(password); return result.score; } async scoreWithFeedbackAsync(password) { const result = await zxcvbnAsync(password); return { score: result.score, feedback: result.feedback }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PasswordStrengthMeterZXCVBNService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PasswordStrengthMeterZXCVBNService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PasswordStrengthMeterZXCVBNService, decorators: [{ type: Injectable }], ctorParameters: () => [] }); function provideZxvbnServiceForPSM(config) { let providers = [ { provide: IPasswordStrengthMeterService, useClass: PasswordStrengthMeterZXCVBNService, }, ]; if (config) { providers = [ { provide: ZXCVBN_CONFIG, useValue: config, }, ...providers, ]; } return makeEnvironmentProviders(providers); } /* Public API Surface of password-strength-meter default zxcvbn service */ /** * Generated bundle index. Do not edit. */ export { ZXCVBN_CONFIG, provideZxvbnServiceForPSM }; //# sourceMappingURL=eresearchqut-angular-password-strength-meter-zxcvbn.mjs.map