password-meter
Version:
This password meter library is inspired by pointing system in http://www.passwordmeter.com/, in which the main purpose is to help the end users to have more stronger passwords.
118 lines (100 loc) • 51.9 kB
HTML
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>password-meter</title><meta name="description" content="Documentation for password-meter"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base="."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">password-meter</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label><input type="checkbox" id="tsd-filter-externals" checked/><label class="tsd-widget" for="tsd-filter-externals">Externals</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><h1>password-meter </h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><div class="tsd-panel tsd-typography"><p><img src="https://user-images.githubusercontent.com/8418700/140722813-db8b8cdb-9f97-4710-aff4-14450264bf82.png" alt="password"></p>
<a href="#passwordmeter" id="passwordmeter" style="color: inherit; text-decoration: none;">
<h1>PasswordMeter</h1>
</a>
<p>This password meter library is inspired by pointing system in <a href="http://www.passwordmeter.com/">here</a>, in which the main purpose is to help the end users to have more stronger passwords.</p>
<p><a href="https://opensource.org/licenses/MIT"><img src="https://badges.frapsoft.com/os/mit/mit.svg?v=102" alt="Open Source Love"></a>
<a href="https://badge.fury.io/js/password-meter"><img src="https://badge.fury.io/js/password-meter.svg" alt="npm version"></a>
<a href="https://www.npmjs.com/package/password-meter"><img src="https://img.shields.io/npm/dm/password-meter.svg" alt="Downloads"></a></p>
<pre><code><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-0">i</span><span class="hl-1"> </span><span class="hl-0">password</span><span class="hl-1">-</span><span class="hl-0">meter</span><br/><br/><span class="hl-0">yarn</span><span class="hl-1"> </span><span class="hl-0">add</span><span class="hl-1"> </span><span class="hl-0">password</span><span class="hl-1">-</span><span class="hl-0">meter</span>
</code></pre>
<pre><code class="language-javascript"><br/><span class="hl-2">// default</span><br/><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">().</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">'@xc5--WWb'</span><span class="hl-1">)));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-1"> : </span><span class="hl-7">170</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-1"> : </span><span class="hl-6">"strong"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-1"> : </span><span class="hl-7">85</span><br/><span class="hl-1">}</span><br/><br/><br/><span class="hl-2">// with score range</span><br/><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">({}, {</span><br/><span class="hl-1"> </span><span class="hl-6">"40"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"E"</span><span class="hl-1">, </span><span class="hl-2">// 001 <= x < 040</span><br/><span class="hl-1"> </span><span class="hl-6">"80"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"D"</span><span class="hl-1">, </span><span class="hl-2">// 040 <= x < 080</span><br/><span class="hl-1"> </span><span class="hl-6">"120"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"C"</span><span class="hl-1">, </span><span class="hl-2">// 080 <= x < 120</span><br/><span class="hl-1"> </span><span class="hl-6">"180"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"B"</span><span class="hl-1">, </span><span class="hl-2">// 120 <= x < 180</span><br/><span class="hl-1"> </span><span class="hl-6">"200"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"A"</span><span class="hl-1">, </span><span class="hl-2">// 180 <= x < 200</span><br/><span class="hl-1"> </span><span class="hl-6">"_"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"A+"</span><span class="hl-1"> </span><span class="hl-2">// x >= 200</span><br/><span class="hl-1">}).</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">'@xc5--WWb'</span><span class="hl-1">)));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-1"> : </span><span class="hl-7">170</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-1"> : </span><span class="hl-6">"B"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-1"> : </span><span class="hl-7">85</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-2">// with score range (The score range must have at least two members)</span><br/><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">({}, {</span><br/><span class="hl-1"> </span><span class="hl-6">"100"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"Low"</span><span class="hl-1">, </span><span class="hl-2">// 001 <= x < 100</span><br/><span class="hl-1"> </span><span class="hl-6">"_"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"High"</span><span class="hl-1"> </span><span class="hl-2">// x >= 100</span><br/><span class="hl-1">}).</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">'@xc5--WWb'</span><span class="hl-1">)));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">{</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-1"> : </span><span class="hl-7">170</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-1"> : </span><span class="hl-6">"High"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-1"> : </span><span class="hl-7">100</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-2">// with requirements and score range</span><br/><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-0">minLength:</span><span class="hl-1"> </span><span class="hl-7">5</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">maxLength:</span><span class="hl-1"> </span><span class="hl-7">10</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">uppercaseLettersMinLength:</span><span class="hl-1"> </span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">lowercaseLettersMinLength:</span><span class="hl-1"> </span><span class="hl-7">2</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">numbersMinLength:</span><span class="hl-1"> </span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">symbolsMinLength:</span><span class="hl-1"> </span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">include:</span><span class="hl-1"> [</span><span class="hl-6">'a'</span><span class="hl-1">, </span><span class="hl-6">'$'</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-0">exclude:</span><span class="hl-1"> [</span><span class="hl-6">'1baA$'</span><span class="hl-1">, </span><span class="hl-6">'0xaZ$'</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-0">startsWith:</span><span class="hl-1"> </span><span class="hl-6">'1'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">endsWith:</span><span class="hl-1"> </span><span class="hl-6">'$'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-0">includeOne:</span><span class="hl-1"> [</span><span class="hl-6">'$'</span><span class="hl-1">]</span><br/><span class="hl-1">}, {</span><br/><span class="hl-1"> </span><span class="hl-6">"40"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"veryWeak"</span><span class="hl-1">, </span><span class="hl-2">// 001 <= x < 040</span><br/><span class="hl-1"> </span><span class="hl-6">"80"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"weak"</span><span class="hl-1">, </span><span class="hl-2">// 040 <= x < 080</span><br/><span class="hl-1"> </span><span class="hl-6">"120"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"medium"</span><span class="hl-1">, </span><span class="hl-2">// 080 <= x < 120</span><br/><span class="hl-1"> </span><span class="hl-6">"180"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"strong"</span><span class="hl-1">, </span><span class="hl-2">// 120 <= x < 180</span><br/><span class="hl-1"> </span><span class="hl-6">"200"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"veryStrong"</span><span class="hl-1">, </span><span class="hl-2">// 180 <= x < 200</span><br/><span class="hl-1"> </span><span class="hl-6">"_"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"perfect"</span><span class="hl-1"> </span><span class="hl-2">// x >= 200</span><br/><span class="hl-1"> }).</span><span class="hl-3">getResults</span><span class="hl-1">([</span><span class="hl-6">'1baAe$'</span><span class="hl-1">, </span><span class="hl-6">'0xaZ$'</span><span class="hl-1">, </span><span class="hl-6">'ERT'</span><span class="hl-1">, </span><span class="hl-6">'1pwQvF@87$'</span><span class="hl-1">,</span><span class="hl-6">'12a4A6rx90$'</span><span class="hl-1">])));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">[{</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">118</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"medium"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">59</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"The password must start with 1."</span><span class="hl-1">, </span><span class="hl-6">"The Password must exclude all the items specified."</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"The minimum password length is 5."</span><span class="hl-1">, </span><span class="hl-6">"The password must start with 1."</span><span class="hl-1">, </span><span class="hl-6">"The password must end with $."</span><span class="hl-1">, </span><span class="hl-6">"You must use at least 1 lowercase letter(s)."</span><span class="hl-1">, </span><span class="hl-6">"You must use at least 1 number(s)."</span><span class="hl-1">, </span><span class="hl-6">"You must use at least 1 symbol(s)."</span><span class="hl-1">, </span><span class="hl-6">"The Password must include all the items specified."</span><span class="hl-1">, </span><span class="hl-6">"The Password must include at least one item specified [$]."</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"The Password must include all the items specified."</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"The maximum password length is 10."</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">] </span><br/><span class="hl-1"> </span><br/><br/><span class="hl-2">// with requirements and score range and custom messages</span><br/><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-0">minLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">5</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check minLength"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">maxLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">10</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check maxLength"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">uppercaseLettersMinLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">1</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check uppercaseLettersMinLength"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">lowercaseLettersMinLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">2</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check lowercaseLettersMinLength"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">numbersMinLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">1</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check numbersMinLength"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">symbolsMinLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">1</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check symbolsMinLength"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">include:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> [</span><span class="hl-6">'a'</span><span class="hl-1">, </span><span class="hl-6">'$'</span><span class="hl-1">], </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check include(s)"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">exclude:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> [</span><span class="hl-6">'1baA$'</span><span class="hl-1">, </span><span class="hl-6">'0xaZ$'</span><span class="hl-1">], </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check exclude(s)"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">startsWith:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-6">'1'</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check startsWith"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">endsWith:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-6">'$'</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check endsWith"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-0">includeOne:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> [</span><span class="hl-6">'$'</span><span class="hl-1">], </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check includeOne"</span><span class="hl-1"> }</span><br/><span class="hl-1">}, {</span><br/><span class="hl-1"> </span><span class="hl-6">"40"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"veryWeak"</span><span class="hl-1">, </span><span class="hl-2">// 001 <= x < 040</span><br/><span class="hl-1"> </span><span class="hl-6">"80"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"weak"</span><span class="hl-1">, </span><span class="hl-2">// 040 <= x < 080</span><br/><span class="hl-1"> </span><span class="hl-6">"120"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"medium"</span><span class="hl-1">, </span><span class="hl-2">// 080 <= x < 120</span><br/><span class="hl-1"> </span><span class="hl-6">"180"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"strong"</span><span class="hl-1">, </span><span class="hl-2">// 120 <= x < 180</span><br/><span class="hl-1"> </span><span class="hl-6">"200"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"veryStrong"</span><span class="hl-1">, </span><span class="hl-2">// 180 <= x < 200</span><br/><span class="hl-1"> </span><span class="hl-6">"_"</span><span class="hl-0">:</span><span class="hl-1"> </span><span class="hl-6">"perfect"</span><span class="hl-1"> </span><span class="hl-2">// x >= 200</span><br/><span class="hl-1"> }).</span><span class="hl-3">getResults</span><span class="hl-1">([</span><span class="hl-6">'1baAe$'</span><span class="hl-1">, </span><span class="hl-6">'0xaZ$'</span><span class="hl-1">, </span><span class="hl-6">'ERT'</span><span class="hl-1">, </span><span class="hl-6">'1pwQvF@87$'</span><span class="hl-1">,</span><span class="hl-6">'12a4A6rx90$'</span><span class="hl-1">])));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">[{</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">118</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"medium"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">59</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"Hey!, check startsWith"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check exclude(s)"</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"Hey!, check minLength"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check startsWith"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check endsWith"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check lowercaseLettersMinLength"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check numbersMinLength"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check symbolsMinLength"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check include(s)"</span><span class="hl-1">, </span><span class="hl-6">"Hey!, check includeOne"</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"Hey!, check include(s)"</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }, {</span><br/><span class="hl-1"> </span><span class="hl-6">"score"</span><span class="hl-0"> :</span><span class="hl-1"> -</span><span class="hl-7">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"status"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">"errors"</span><span class="hl-0"> :</span><span class="hl-1"> [</span><span class="hl-6">"Hey!, check maxLength"</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">"percent"</span><span class="hl-0"> :</span><span class="hl-1"> </span><span class="hl-7">0</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">] </span>
</code></pre>
<hr/>
<a href="#release-notes" id="release-notes" style="color: inherit; text-decoration: none;">
<h3>Release notes</h3>
</a>
<a href="#version-3101" id="version-3101" style="color: inherit; text-decoration: none;">
<h5>Version 3.10.1</h5>
</a>
<p>Adding <code>exports</code> block to <code>package.json</code> to support <code>.cjs</code> and <code>.mjs</code>.</p>
<p>All dependencies upddated.</p>
<a href="#version-393" id="version-393" style="color: inherit; text-decoration: none;">
<h5>Version 3.9.3</h5>
</a>
<p><code>System.js</code> module format added.</p>
<p>All dependencies upddated.</p>
<a href="#version-392" id="version-392" style="color: inherit; text-decoration: none;">
<h5>Version 3.9.2</h5>
</a>
<p>For <code>unpkg</code>, the minified <code>UMD</code> package was set.</p>
<p>Fix bundle's name issue.</p>
<p>Now, you can use the library inside a browser as well as the Node.js.</p>
<pre><code class="language-js"><span class="hl-2">// IIFE</span><br/><span class="hl-2">// https://unpkg.com/password-meter@VERSION/dist/index.iife.js</span><br/><span class="hl-2">// https://unpkg.com/password-meter@3.9.3/dist/index.iife.js</span><br/><span class="hl-2">// https://unpkg.com/password-meter@3.9.3/dist/index.iife.min.js</span><br/><br/><span class="hl-5">var</span><span class="hl-1"> </span><span class="hl-0">pswm</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">PasswordMeterModule</span><span class="hl-1">.</span><span class="hl-3">PasswordMeter</span><span class="hl-1">();</span><br/><span class="hl-5">var</span><span class="hl-1"> </span><span class="hl-0">result</span><span class="hl-1"> = </span><span class="hl-0">pswm</span><span class="hl-1">.</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">"pa$$w0rd"</span><span class="hl-1">);</span>
</code></pre>
<p>and also,</p>
<pre><code class="language-js"><span class="hl-2">// UMD</span><br/><span class="hl-2">// https://unpkg.com/password-meter@VERSION/dist/index.umd.js</span><br/><span class="hl-2">// https://unpkg.com/password-meter</span><br/><span class="hl-2">// https://unpkg.com/password-meter@3.9.3/dist/index.umd.js</span><br/><span class="hl-2">// https://unpkg.com/password-meter@3.9.3/dist/index.umd.min.js</span><br/><br/><span class="hl-5">var</span><span class="hl-1"> </span><span class="hl-0">pswm</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">PasswordMeterModule</span><span class="hl-1">.</span><span class="hl-3">PasswordMeter</span><span class="hl-1">();</span><br/><span class="hl-5">var</span><span class="hl-1"> </span><span class="hl-0">result</span><span class="hl-1"> = </span><span class="hl-0">pswm</span><span class="hl-1">.</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">"pa$$w0rd"</span><span class="hl-1">);</span>
</code></pre>
<a href="#version-381" id="version-381" style="color: inherit; text-decoration: none;">
<h5>Version 3.8.1</h5>
</a>
<p>Fix a bug for <code>UMD</code> module name.</p>
<a href="#version-38" id="version-38" style="color: inherit; text-decoration: none;">
<h5>Version 3.8</h5>
</a>
<p>No new feature or breaking changes just changing in project structure. (From <code>Gulp</code> to <code>Rollup</code>)</p>
<a href="#version-37" id="version-37" style="color: inherit; text-decoration: none;">
<h5>Version 3.7</h5>
</a>
<p>In <code>getResult(password: string, ignoreCase: boolean = false, skipReq: boolean = false))</code> <code>skipReq</code> was added.
With this option we could provide a "score" to our users based on the current
typed password (even if they aren't according to requirements).</p>
<pre><code class="language-typescript"><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">({ </span><br/><span class="hl-1"> </span><span class="hl-0">uniqueLettersMinLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">5</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check uniqMinLength"</span><span class="hl-1"> } </span><br/><span class="hl-1"> }).</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">'aZ&4aZ&4'</span><span class="hl-1">, </span><span class="hl-5">false</span><span class="hl-1">, </span><span class="hl-5">true</span><span class="hl-1">)));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">{</span><span class="hl-6">"score"</span><span class="hl-1">:</span><span class="hl-7">124</span><span class="hl-1">,</span><span class="hl-6">"status"</span><span class="hl-1">:</span><span class="hl-6">"strong"</span><span class="hl-1">,</span><span class="hl-6">"percent"</span><span class="hl-1">:</span><span class="hl-7">62</span><span class="hl-1">,</span><span class="hl-6">"errors"</span><span class="hl-1">:[</span><span class="hl-6">"Hey!, check uniqMinLength"</span><span class="hl-1">]}</span>
</code></pre>
<a href="#version-36" id="version-36" style="color: inherit; text-decoration: none;">
<h5>Version 3.6</h5>
</a>
<p><code>includeOne</code> added.
Now you can define custom special characters set.</p>
<pre><code class="language-typescript"><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-0">includeOne:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> [</span><span class="hl-6">"#"</span><span class="hl-1">, </span><span class="hl-6">"!"</span><span class="hl-1">, </span><span class="hl-6">"*"</span><span class="hl-1">], </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check includeOne"</span><span class="hl-1"> },</span><br/><span class="hl-1"> }).</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">'aZ&4aZ&4'</span><span class="hl-1">)));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">{</span><span class="hl-6">"score"</span><span class="hl-1">:-</span><span class="hl-7">1</span><span class="hl-1">,</span><span class="hl-6">"status"</span><span class="hl-1">:</span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><span class="hl-6">"errors"</span><span class="hl-1">:[</span><span class="hl-6">"Hey!, check includeOne"</span><span class="hl-1">],</span><span class="hl-6">"percent"</span><span class="hl-1">:</span><span class="hl-7">0</span><span class="hl-1">}</span>
</code></pre>
<p>They are looking for including at least one character from provided set, but <code>aZ&4aZ&4</code> has none of them!</p>
<a href="#version-35" id="version-35" style="color: inherit; text-decoration: none;">
<h5>Version 3.5</h5>
</a>
<p>bug fixed: <code>uniqueLettersMinLength</code> is optional now.</p>
<a href="#version-34" id="version-34" style="color: inherit; text-decoration: none;">
<h5>Version 3.4</h5>
</a>
<p><code>uniqueLettersMinLength</code> added.
Now you can define min length for unique letters.</p>
<pre><code class="language-typescript"><span class="hl-0">console</span><span class="hl-1">.</span><span class="hl-3">log</span><span class="hl-1">(</span><span class="hl-4">JSON</span><span class="hl-1">.</span><span class="hl-3">stringify</span><span class="hl-1">(</span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-3">PasswordMeter</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-0">uniqueLettersMinLength:</span><span class="hl-1"> { </span><span class="hl-0">value:</span><span class="hl-1"> </span><span class="hl-7">5</span><span class="hl-1">, </span><span class="hl-0">message:</span><span class="hl-1"> </span><span class="hl-6">"Hey!, check uniqMinLength"</span><span class="hl-1"> },</span><br/><span class="hl-1"> }).</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">'aZ&4aZ&4'</span><span class="hl-1">)));</span><br/><span class="hl-2">// result</span><br/><span class="hl-1">{</span><span class="hl-6">"score"</span><span class="hl-1">:-</span><span class="hl-7">1</span><span class="hl-1">,</span><span class="hl-6">"status"</span><span class="hl-1">:</span><span class="hl-6">"needs requirement(s)"</span><span class="hl-1">,</span><span class="hl-6">"errors"</span><span class="hl-1">:[</span><span class="hl-6">"Hey!, check uniqMinLength"</span><span class="hl-1">],</span><span class="hl-6">"percent"</span><span class="hl-1">:</span><span class="hl-7">0</span><span class="hl-1">}</span>
</code></pre>
<p>They are looking for <code>5</code> unique characters but <code>aZ&4aZ&4</code> needs one more!</p>
<a href="#version-33" id="version-33" style="color: inherit; text-decoration: none;">
<h5>Version 3.3</h5>
</a>
<pre><code><span class="hl-0">Everything</span><span class="hl-1"> </span><span class="hl-0">except</span><span class="hl-1"> </span><span class="hl-3">letters</span><span class="hl-1"> (</span><span class="hl-0">a</span><span class="hl-1">-</span><span class="hl-0">z</span><span class="hl-1"> </span><span class="hl-0">and</span><span class="hl-1"> </span><span class="hl-8">A</span><span class="hl-1">-</span><span class="hl-8">Z</span><span class="hl-1">) </span><span class="hl-0">and</span><span class="hl-1"> </span><span class="hl-3">numbers</span><span class="hl-1"> (</span><span class="hl-7">0</span><span class="hl-1">-</span><span class="hl-7">9</span><span class="hl-1">) </span><span class="hl-0">are</span><span class="hl-1"> </span><span class="hl-0">considered</span><span class="hl-1"> </span><span class="hl-0">symbols</span><span class="hl-1">, </span><br/><span class="hl-0">so</span><span class="hl-1"> </span><span class="hl-0">the</span><span class="hl-1"> </span><span class="hl-0">symbols</span><span class="hl-1"> </span><span class="hl-0">are</span><span class="hl-1"> </span><span class="hl-0">not</span><span class="hl-1"> </span><span class="hl-0">defined</span><span class="hl-1"> </span><span class="hl-5">in</span><span class="hl-1"> </span><span class="hl-0">advance</span><span class="hl-1">.</span>
</code></pre>
<a href="#version-32" id="version-32" style="color: inherit; text-decoration: none;">
<h5>Version 3.2</h5>
</a>
<pre><code><span class="hl-0">An</span><span class="hl-1"> </span><span class="hl-6">'ignoreCase'</span><span class="hl-1"> </span><span class="hl-0">mode</span><span class="hl-1"> </span><span class="hl-0">is</span><span class="hl-1"> </span><span class="hl-0">added</span><span class="hl-1"> </span><span class="hl-5">in</span><span class="hl-1"> .</span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-6">''</span><span class="hl-1">,</span><span class="hl-0">ignoreCase</span><span class="hl-1">: </span><span class="hl-0">boolean</span><span class="hl-1"> = </span><span class="hl-5">false</span><span class="hl-1">)) </span><br/><span class="hl-0">and</span><span class="hl-1"> </span><span class="hl-0">also</span><span class="hl-1"> </span><span class="hl-0">for</span><span class="hl-1"> .</span><span class="hl-3">getResults</span><span class="hl-1">([],</span><span class="hl-0">ignoreCase</span><span class="hl-1">: </span><span class="hl-0">boolean</span><span class="hl-1"> = </span><span class="hl-5">false</span><span class="hl-1">)) </span><span class="hl-9">as</span><span class="hl-1"> </span><span class="hl-4">a</span><span class="hl-1"> </span><span class="hl-4">parameter</span><span class="hl-1">.</span><br/><br/><span class="hl-0">Obviously</span><span class="hl-1">, </span><span class="hl-0">the</span><span class="hl-1"> </span><span class="hl-9">default</span><span class="hl-1"> </span><span class="hl-0">value</span><span class="hl-1"> </span><span class="hl-0">is</span><span class="hl-1"> </span><span class="hl-6">'false'</span><span class="hl-1">, </span><span class="hl-0">It</span><span class="hl-1"> </span><span class="hl-0">helps</span><span class="hl-1"> </span><span class="hl-0">you</span><span class="hl-1"> </span><span class="hl-0">to</span><span class="hl-1"> </span><span class="hl-6">'exclude'</span><span class="hl-1"> </span><span class="hl-0">and</span><span class="hl-1"> </span><span class="hl-6">'blackList'</span><span class="hl-1"> </span><span class="hl-0">passwords</span><span class="hl-1"> </span><span class="hl-5">in</span><span class="hl-1"> </span><span class="hl-0">an</span><span class="hl-1"> </span><span class="hl-0">easier</span><span class="hl-1"> </span><span class="hl-0">way</span><br/><span class="hl-9">if</span><span class="hl-1"> </span><span class="hl-0">you</span><span class="hl-1"> </span><span class="hl-0">pass</span><span class="hl-1"> </span><span class="hl-0">the</span><span class="hl-1"> </span><span class="hl-6">'true'</span><span class="hl-1"> </span><span class="hl-0">then</span><span class="hl-1"> </span><span class="hl-10">exclude</span><span class="hl-1">: { </span><span class="hl-10">value</span><span class="hl-1">: [</span><span class="hl-6">'test'</span><span class="hl-1">], </span><span class="hl-10">message</span><span class="hl-1">: </span><span class="hl-6">"Hey!, check exclude(s)"</span><span class="hl-1"> }, </span><br/><span class="hl-0">means</span><span class="hl-1"> </span><span class="hl-0">every</span><span class="hl-1"> </span><span class="hl-0">kind</span><span class="hl-1"> </span><span class="hl-5">of</span><span class="hl-1"> </span><span class="hl-6">'test'</span><span class="hl-1"> </span><span class="hl-0">word</span><span class="hl-1"> </span><span class="hl-0">for</span><span class="hl-1"> </span><span class="hl-0">example</span><span class="hl-1"> </span><span class="hl-0">teST</span><span class="hl-1">, </span><span class="hl-8">TEST</span><span class="hl-1">, </span><span class="hl-0">Test</span><span class="hl-1"> </span><span class="hl-0">eESt</span><span class="hl-1"> </span><span class="hl-0">and</span><span class="hl-1"> </span><span class="hl-0">so</span><span class="hl-1"> </span><span class="hl-0">on</span><span class="hl-1"> </span><span class="hl-0">are</span><span class="hl-1"> </span><span class="hl-0">excluded</span><span class="hl-1">.</span><br/>
</code></pre>
<a href="#version-31" id="version-31" style="color: inherit; text-decoration: none;">
<h5>Version 3.1</h5>
</a>
<pre><code><span class="hl-1">- </span><span class="hl-0">blackList</span><span class="hl-1"> </span><span class="hl-0">property</span><span class="hl-1"> </span><span class="hl-0">added</span><span class="hl-1">. </span><span class="hl-0">eg</span><span class="hl-1">: { </span><span class="hl-0">blackList :</span><span class="hl-1"> [</span><span class="hl-6">'123456'</span><span class="hl-1">,</span><span class="hl-6">'p@ssw0rd'</span><span class="hl-1">] }</span>
</code></pre>
<a href="#version-30" id="version-30" style="color: inherit; text-decoration: none;">
<h5>Version 3.0</h5>
</a>
<pre><code><span class="hl-1">- </span><span class="hl-0">mustBe</span><span class="hl-1"> </span><span class="hl-0">renamed</span><span class="hl-1"> </span><span class="hl-0">to</span><span class="hl-1"> </span><span class="hl-0">include</span><span class="hl-1">.</span><br/><span class="hl-1">- </span><span class="hl-0">mustNotBe</span><span class="hl-1"> </span><span class="hl-0">renamed</span><span class="hl-1"> </span><span class="hl-0">to</span><span class="hl-1"> </span><span class="hl-0">exclude</span><span class="hl-1">.</span><br/><span class="hl-1">- </span><span class="hl-0">The</span><span class="hl-1"> </span><span class="hl-3">getResult</span><span class="hl-1">(</span><span class="hl-0">s</span><span class="hl-1">) </span><span class="hl-0">includes</span><span class="hl-1"> </span><span class="hl-0">percent</span><span class="hl-1">.</span><br/><span class="hl-1">- </span><span class="hl-0">You</span><span class="hl-1"> </span><span class="hl-0">can</span><span class="hl-1"> </span><span class="hl-0">create</span><span class="hl-1"> </span><span class="hl-0">an</span><span class="hl-1"> </span><span class="hl-0">object</span><span class="hl-1"> </span><span class="hl-9">as</span><span class="hl-1"> </span><span class="hl-4">a</span><span class="hl-1"> </span><span class="hl-4">fully</span><span class="hl-1"> </span><span class="hl-4">customizable</span><span class="hl-1"> </span><span class="hl-4">score</span><span class="hl-1"> </span><span class="hl-4">range</span><span class="hl-1">. { </span><span class="hl-6">"score"</span><span class="hl-1"> : </span><span class="hl-6">"message"</span><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-10">Conditions</span><span class="hl-1"> :</span><br/><span class="hl-1"> </span><span class="hl-7">1.</span><span class="hl-1"> </span><span class="hl-0">The</span><span class="hl-1"> </span><span class="hl-0">score</span><span class="hl-1"> </span><span class="hl-0">range</span><span class="hl-1"> </span><span class="hl-0">must</span><span class="hl-1"> </span><span class="hl-0">have</span><span class="hl-1"> </span><span class="hl-0">at</span><span class="hl-1"> </span><span class="hl-0">least</span><span class="hl-1"> </span><span class="hl-0">two</span><span class="hl-1"> </span><span class="hl-0">members</span><span class="hl-1">.</span><br/><span class="hl-1"> </span><span class="hl-7">2.</span><span class="hl-1"> </span><span class="hl-0">The</span><span class="hl-1"> </span><span class="hl-0">last</span><span class="hl-1"> </span><span class="hl-0">member</span><span class="hl-1"> </span><span class="hl-5">of</span><span class="hl-1"> </span><span class="hl-0">the</span><span class="hl-1"> </span><span class="hl-0">score</span><span class="hl-1"> </span><span class="hl-0">range</span><span class="hl-1"> </span><span class="hl-0">must</span><span class="hl-1"> </span><span class="hl-0">be</span><span class="hl-1"> </span><span class="hl-6">"_"</span><span class="hl-1">.</span>
</code></pre>
<a href="#version-20" id="version-20" style="color: inherit; text-decoration: none;">
<h5>Version 2.0</h5>
</a>
<pre><code><span class="hl-1">- </span><span class="hl-3">getScore</span><span class="hl-1">() </span><span class="hl-0">renamed</span><span class="hl-1"> </span><span class="hl-0">to</span><span class="hl-1"> </span><span class="hl-3">getResult</span><span class="hl-1">() </span><br/><span class="hl-1">- </span><span class="hl-3">getScores</span><span class="hl-1">() </span><span class="hl-0">renamed</span><span class="hl-1"> </span><span class="hl-0">to</span><span class="hl-1"> </span><span class="hl-3">getResults</span><span class="hl-1">()</span>
</code></pre>
<hr/>
<div>Icons made by <a href="https://www.freepik.com" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flati