js-generate-password 0.1.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +44 -28
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1 -35
- package/dist/lib/check-options-error.d.ts +2 -0
- package/dist/lib/generate-random-number.d.ts +1 -0
- package/dist/lib/password-generator.d.ts +2 -0
- package/dist/lib/process-options.d.ts +2 -0
- package/dist/lib/shuffle-string.d.ts +1 -0
- package/{src/index.d.ts → dist/types.d.ts} +14 -14
- package/package.json +19 -7
- package/dist/lib/check-options-error.js +0 -23
- package/dist/lib/generate-random-number.js +0 -8
- package/dist/lib/password-generator.js +0 -64
- package/dist/lib/process-options.js +0 -57
- package/dist/lib/shuffle-string.js +0 -16
- package/dist/lib/types.js +0 -2
- package/src/index.ts +0 -39
- package/src/lib/check-options-error.ts +0 -42
- package/src/lib/generate-random-number.ts +0 -5
- package/src/lib/password-generator.ts +0 -92
- package/src/lib/process-options.ts +0 -61
- package/src/lib/shuffle-string.ts +0 -14
- package/src/lib/types.ts +0 -52
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
<!-- prettier-ignore-start -->
|
|
2
2
|
<!-- SOMETHING AUTO-GENERATED BY TOOLS - START -->
|
|
3
|
-
|
|
4
|
-
# js-generate-password
|
|
5
|
-
|
|
6
|
-
js-generate-password is usable for every javascript and typescript based project like react, vue, node, etc. it used to generate passwords that may contain alphabets, number and symbols. The options parameter enables the user to enable or disable the characters that are used to generate random password.
|
|
7
|
-
|
|
8
|
-
The characters that may be choosen from are
|
|
9
|
-
|
|
10
|
-
- Lowercase Characters
|
|
11
|
-
- Uppercase Characters
|
|
12
|
-
- Numbers
|
|
13
|
-
- Symbols
|
|
14
|
-
|
|
15
|
-
The user may also specify the minimum number of character for each type.
|
|
16
3
|
<br />
|
|
17
4
|
<br />
|
|
18
5
|
|
|
@@ -53,30 +40,50 @@ The user may also specify the minimum number of character for each type.
|
|
|
53
40
|
</p>
|
|
54
41
|
|
|
55
42
|
<br />
|
|
43
|
+
|
|
44
|
+
# js-generate-password
|
|
45
|
+
|
|
46
|
+
js-generate-password is usable for every typescript and typescript based project like react, vue, node, etc. it used to generate passwords that may contain alphabets, number and symbols. The options parameter enables the user to enable or disable the characters that are used to generate random password.
|
|
47
|
+
|
|
48
|
+
The characters that may be choosen from are
|
|
49
|
+
|
|
50
|
+
- Lowercase Characters
|
|
51
|
+
- Uppercase Characters
|
|
52
|
+
- Numbers
|
|
53
|
+
- Symbols
|
|
54
|
+
|
|
55
|
+
The user may also specify the minimum number of character for each type.
|
|
56
|
+
|
|
56
57
|
## Installation
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
```bash
|
|
60
|
+
npm install js-generate-password
|
|
61
|
+
```
|
|
59
62
|
|
|
60
63
|
or
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
```bash
|
|
66
|
+
yarn add js-generate-password
|
|
67
|
+
```
|
|
63
68
|
|
|
64
69
|
## Usage
|
|
65
70
|
|
|
66
71
|
For the password to be generated, **parameters** are able to pass as an optional **options** object.
|
|
67
72
|
|
|
68
|
-
```
|
|
73
|
+
```typescript
|
|
69
74
|
import { GeneratePassword } from "js-generate-password";
|
|
75
|
+
|
|
70
76
|
const password = GeneratePassword({
|
|
71
77
|
length: 14,
|
|
72
78
|
symbols: true,
|
|
73
79
|
});
|
|
80
|
+
|
|
74
81
|
console.log(password);
|
|
75
82
|
```
|
|
76
83
|
|
|
77
84
|
If no parameter is passed, the default parameter will be taken as :
|
|
78
85
|
|
|
79
|
-
```
|
|
86
|
+
```typescript
|
|
80
87
|
options = {
|
|
81
88
|
length: 10,
|
|
82
89
|
lowercase: true,
|
|
@@ -108,49 +115,58 @@ Any of these can be passed into the options object for each function.
|
|
|
108
115
|
| minLengthNumbers | only if **numbers** is set to **true**, minLengthNumbers will create a password that will have minimum number of numbers in the password. | 1 |
|
|
109
116
|
| minLengthSymbols | only if **symbols** is set to **true**, minLengthSymbols will create a password that will have minimum number of symbols in the password. | 1 |
|
|
110
117
|
|
|
111
|
-
|
|
118
|
+
* At least one should be true.
|
|
112
119
|
|
|
113
120
|
## Example
|
|
114
121
|
|
|
115
122
|
- **No Options passed.**
|
|
116
123
|
|
|
117
|
-
```
|
|
118
|
-
const {GeneratePassword} =
|
|
124
|
+
```typescript
|
|
125
|
+
const { GeneratePassword } = "js-generate-password";
|
|
126
|
+
|
|
119
127
|
const password = GeneratePassword();
|
|
128
|
+
|
|
120
129
|
console.log(password);
|
|
121
130
|
```
|
|
122
131
|
|
|
123
132
|
In the above case, no parameter is passed as option. Therefore the default values will be taken - which will have alphabets, both upper and lower case, numbers, and will be of length 10 characters.
|
|
124
133
|
|
|
125
|
-
```
|
|
134
|
+
```typescript
|
|
126
135
|
xDU6izb3PV;
|
|
127
136
|
```
|
|
128
137
|
|
|
129
138
|
- **Length parameter passed.**
|
|
130
139
|
|
|
131
|
-
```
|
|
140
|
+
```typescript
|
|
132
141
|
const password = GeneratePassword({ length: 25 });
|
|
133
142
|
console.log(password);
|
|
134
143
|
```
|
|
135
144
|
|
|
136
145
|
The password generated is like this
|
|
137
146
|
|
|
138
|
-
```
|
|
147
|
+
```typescript
|
|
139
148
|
U4c3KpQP5UrbZgTcrqMgFeI3R;
|
|
140
149
|
```
|
|
141
150
|
|
|
142
151
|
- **exclude parameter passed.**
|
|
143
152
|
|
|
144
|
-
```
|
|
145
|
-
options={
|
|
146
|
-
|
|
147
|
-
|
|
153
|
+
```typescript
|
|
154
|
+
options = {
|
|
155
|
+
exclude : 'abc567XYZ';
|
|
156
|
+
}
|
|
157
|
+
|
|
148
158
|
password = GeneratePassword(options);
|
|
159
|
+
|
|
149
160
|
console.log(password);
|
|
150
161
|
```
|
|
151
162
|
|
|
152
163
|
The generated password wouldn't has none of 'abc567XYZ' characters
|
|
153
164
|
|
|
154
|
-
```
|
|
165
|
+
```typescript
|
|
155
166
|
J9yCfttQNj;
|
|
156
167
|
```
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## License
|
|
171
|
+
|
|
172
|
+
js-generate-password is licensed under the MIT License. See the [LICENSE](https://github.com/ahmadjoya/js-generate-password#readme) file for more details.
|
package/dist/index.d.ts
ADDED
package/dist/index.js
CHANGED
|
@@ -1,35 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GeneratePassword = void 0;
|
|
4
|
-
const password_generator_1 = require("./lib/password-generator");
|
|
5
|
-
const check_options_error_1 = require("./lib/check-options-error");
|
|
6
|
-
const process_options_1 = require("./lib/process-options");
|
|
7
|
-
function GeneratePassword(options) {
|
|
8
|
-
let pswd;
|
|
9
|
-
if (options) {
|
|
10
|
-
options = (0, process_options_1.processOption)(options);
|
|
11
|
-
(0, check_options_error_1.checkError)(options);
|
|
12
|
-
pswd = (0, password_generator_1.generatePswd)(options);
|
|
13
|
-
return pswd;
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
let opt = {
|
|
17
|
-
length: 10,
|
|
18
|
-
lowercase: true,
|
|
19
|
-
uppercase: true,
|
|
20
|
-
numbers: true,
|
|
21
|
-
symbols: false,
|
|
22
|
-
exclude: "",
|
|
23
|
-
minLengthLowercase: 1,
|
|
24
|
-
minLengthUppercase: 1,
|
|
25
|
-
minLengthNumbers: 1,
|
|
26
|
-
minLengthSymbols: 0,
|
|
27
|
-
};
|
|
28
|
-
options = (0, process_options_1.processOption)(opt);
|
|
29
|
-
(0, check_options_error_1.checkError)(options);
|
|
30
|
-
pswd = (0, password_generator_1.generatePswd)(options);
|
|
31
|
-
return pswd;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.GeneratePassword = GeneratePassword;
|
|
35
|
-
exports.default = { GeneratePassword };
|
|
1
|
+
"use strict";var e=function(e){return Math.floor(Math.random()*e)},n=function(n){var t="",s="",o=n.length,a=n.lowercase,m=n.uppercase,h=n.numbers,i=n.symbols,l=n.minLengthLowercase,c=n.minLengthUppercase,g=n.minLengthNumbers,u=n.minLengthSymbols,L=n.exclude,p="abcdefghijklmnopqrstuvwxyz";p=r(p,L);var b="ABCDEFGHIJKLMNOPQRSTUVWXYZ";b=r(b,L);var d="0123456789";d=r(d,L);var v="!#$%&'()*+,-./:;<=>?@[]^_{|}~";v=r(v,L);for(var w=p.length,f=0;f<l;f++)s+=p.charAt(e(w));w=b.length;for(f=0;f<c;f++)s+=b.charAt(e(w));w=d.length;for(f=0;f<g;f++)s+=d.charAt(e(w));w=v.length;for(f=0;f<u;f++)s+=v.charAt(e(w));t+=function(e){for(var n=e.split(""),r=n.length-1;r>0;r--){var t=Math.floor(Math.random()*(r+1)),s=n[r];n[r]=n[t],n[t]=s}return n.join("")}(s);var y="";y=a?y+p:y,y=m?y+b:y,y=h?y+d:y,y=i?y+v:y;var N=o-t.length;w=y.length;for(f=0;f<N;f++)t+=y.charAt(e(w));return t},r=function(e,n){return null==n||n.split("").forEach((function(n){e=e.replace(n,"")})),e},t=function(e){var n=e.length,r=e.lowercase,t=e.uppercase,s=e.numbers,o=e.symbols;if(e.minLengthLowercase+e.minLengthUppercase+e.minLengthNumbers+e.minLengthSymbols>n)throw new Error("Sum of Minimum Characters in the passwords greater than the length of the Password to be generated.");if(0==r&&0==t&&0==s&&0==o)throw new Error("Alphabets, Numbers and Symbols are all set to False. No valid Characters to generate the Password.")},s=function(e){return e.length=void 0===e.length?10:e.length,e.lowercase=void 0===e.lowercase||e.lowercase,e.uppercase=void 0===e.uppercase||e.uppercase,e.numbers=void 0===e.numbers||e.numbers,e.symbols=void 0!==e.symbols&&e.symbols,e.lowercase?e.minLengthLowercase=void 0===e.minLengthLowercase?1:e.minLengthLowercase:e.minLengthLowercase=0,e.uppercase?e.minLengthUppercase=void 0===e.minLengthUppercase?1:e.minLengthUppercase:e.minLengthUppercase=0,e.numbers?e.minLengthNumbers=void 0===e.minLengthNumbers?1:e.minLengthNumbers:e.minLengthNumbers=0,e.symbols?e.minLengthSymbols=void 0===e.minLengthSymbols?1:e.minLengthSymbols:e.minLengthSymbols=0,e.exclude=void 0===e.exclude?"":e.exclude,e};exports.GeneratePassword=function(e){return e?(e=s(e),t(e),n(e)):(e=s({length:10,lowercase:!0,uppercase:!0,numbers:!0,symbols:!1,exclude:"",minLengthLowercase:1,minLengthUppercase:1,minLengthNumbers:1,minLengthSymbols:0}),t(e),n(e))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const generateRandomNumbers: (upperLimit: number) => number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const shuffleString: (str: string) => string;
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
|
|
1
|
+
interface GenerateOptions {
|
|
2
2
|
/**
|
|
3
3
|
* lenght of the password
|
|
4
4
|
* @default 10
|
|
5
5
|
*/
|
|
6
|
-
length?: number
|
|
6
|
+
length?: number
|
|
7
7
|
/**
|
|
8
8
|
* Should the password include lowercase characters
|
|
9
9
|
* @default true
|
|
10
10
|
*/
|
|
11
|
-
lowercase?: boolean
|
|
11
|
+
lowercase?: boolean
|
|
12
12
|
/**
|
|
13
13
|
* Should the password include uppercase characters
|
|
14
14
|
* @default true
|
|
15
15
|
*/
|
|
16
|
-
uppercase?: boolean
|
|
16
|
+
uppercase?: boolean
|
|
17
17
|
/**
|
|
18
18
|
* Should the password include numbers
|
|
19
19
|
* @default true
|
|
20
20
|
*/
|
|
21
|
-
numbers?: boolean
|
|
21
|
+
numbers?: boolean
|
|
22
22
|
/**
|
|
23
23
|
* Should the password include symbol characters
|
|
24
24
|
* @default false
|
|
25
25
|
*/
|
|
26
|
-
symbols?: boolean
|
|
26
|
+
symbols?: boolean
|
|
27
27
|
/**
|
|
28
28
|
* List of characters to be excluded from the password
|
|
29
29
|
* @default ""
|
|
30
30
|
*/
|
|
31
|
-
exclude?: string
|
|
31
|
+
exclude?: string
|
|
32
32
|
/**
|
|
33
33
|
* min lentgh of lowercase character
|
|
34
34
|
* @default 1
|
|
35
35
|
*/
|
|
36
|
-
minLengthLowercase?: number
|
|
36
|
+
minLengthLowercase?: number
|
|
37
37
|
/**
|
|
38
38
|
* min lentgh of uppercase character
|
|
39
39
|
* @default 1
|
|
40
40
|
*/
|
|
41
|
-
minLengthUppercase?: number
|
|
41
|
+
minLengthUppercase?: number
|
|
42
42
|
/**
|
|
43
43
|
* min length of numbers
|
|
44
44
|
* @default 1
|
|
45
45
|
*/
|
|
46
|
-
minLengthNumbers?: number
|
|
46
|
+
minLengthNumbers?: number
|
|
47
47
|
/**
|
|
48
48
|
* min length of symbols
|
|
49
49
|
* @default 0
|
|
50
50
|
*/
|
|
51
|
-
minLengthSymbols?: number
|
|
51
|
+
minLengthSymbols?: number
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
declare namespace GeneratePassword {}
|
|
55
55
|
|
|
56
|
-
declare function GeneratePassword(options?: GenerateOptions): string
|
|
57
|
-
|
|
58
|
-
export { GeneratePassword };
|
|
56
|
+
declare function GeneratePassword(options?: GenerateOptions): string
|
|
57
|
+
|
|
58
|
+
export { type GenerateOptions, GeneratePassword };
|
package/package.json
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "js-generate-password",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "Password Generator for using in
|
|
5
|
+
"description": "Password Generator for using in javascript/typescript based projects.",
|
|
6
6
|
"Author": "Ahmad Joya <joya.abn@gmail.com>",
|
|
7
|
-
"main": "./dist/index.js",
|
|
8
|
-
"bin": "./dist/index.js",
|
|
9
|
-
"types": "./src/index.d.ts",
|
|
10
7
|
"scripts": {
|
|
11
|
-
"
|
|
8
|
+
"build": "rollup -c"
|
|
12
9
|
},
|
|
13
10
|
"repository": {
|
|
14
11
|
"type": "git",
|
|
@@ -35,5 +32,20 @@
|
|
|
35
32
|
"bugs": {
|
|
36
33
|
"url": "https://github.com/ahmadjoya/js-generate-password/issues"
|
|
37
34
|
},
|
|
38
|
-
"homepage": "https://github.com/ahmadjoya/js-generate-password#readme"
|
|
35
|
+
"homepage": "https://github.com/ahmadjoya/js-generate-password#readme",
|
|
36
|
+
"type": "module",
|
|
37
|
+
"main": "dist/index.js",
|
|
38
|
+
"types": "dist/index.d.ts",
|
|
39
|
+
"files": [
|
|
40
|
+
"dist"
|
|
41
|
+
],
|
|
42
|
+
"bin": "./dist/index.js",
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
45
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
46
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
47
|
+
"rollup": "^4.6.1",
|
|
48
|
+
"rollup-plugin-dts": "^6.1.0",
|
|
49
|
+
"rollup-plugin-typescript2": "^0.36.0"
|
|
50
|
+
}
|
|
39
51
|
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkError = void 0;
|
|
4
|
-
const checkError = (options) => {
|
|
5
|
-
const { length, lowercase, uppercase, numbers, symbols, minLengthLowercase, minLengthUppercase, minLengthNumbers, minLengthSymbols, } = options;
|
|
6
|
-
//Checking if the sum of minimum characters of Lowercase, uppercase, numbers and special case is greater than the total password length.
|
|
7
|
-
if (minLengthLowercase +
|
|
8
|
-
minLengthUppercase +
|
|
9
|
-
minLengthNumbers +
|
|
10
|
-
minLengthSymbols >
|
|
11
|
-
length) {
|
|
12
|
-
throw new Error("Sum of Minimum Characters in the passwords greater than the length of the Password to be generated.");
|
|
13
|
-
}
|
|
14
|
-
//Checking if lowercase, uppercase , numbers and special characters have all been set to false.
|
|
15
|
-
if (lowercase == false &&
|
|
16
|
-
uppercase == false &&
|
|
17
|
-
numbers == false &&
|
|
18
|
-
symbols == false) {
|
|
19
|
-
throw new Error("Alphabets, Numbers and Symbols are all set to False. No valid Characters to generate the Password.");
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
exports.checkError = checkError;
|
|
23
|
-
// module.exports = checkError;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateRandomNumbers = void 0;
|
|
4
|
-
const generateRandomNumbers = (upperLimit) => {
|
|
5
|
-
return Math.floor(Math.random() * upperLimit);
|
|
6
|
-
};
|
|
7
|
-
exports.generateRandomNumbers = generateRandomNumbers;
|
|
8
|
-
// module.exports = generateRandomNumbers;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generatePswd = void 0;
|
|
4
|
-
// const generategenerateRandomNumberss = require("./generate-random-number");
|
|
5
|
-
// const shuffleString = require("./shuffle-string");
|
|
6
|
-
const generate_random_number_1 = require("./generate-random-number");
|
|
7
|
-
const shuffle_string_1 = require("./shuffle-string");
|
|
8
|
-
const generatePswd = (options) => {
|
|
9
|
-
let pswd = "";
|
|
10
|
-
let minChar = "";
|
|
11
|
-
let { length, lowercase, uppercase, numbers, symbols, minLengthLowercase, minLengthUppercase, minLengthNumbers, minLengthSymbols, exclude, } = options;
|
|
12
|
-
let lowercaseChar = "abcdefghijklmnopqrstuvwxyz";
|
|
13
|
-
lowercaseChar = removeExceptions(lowercaseChar, exclude);
|
|
14
|
-
let uppercaseChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
15
|
-
uppercaseChar = removeExceptions(uppercaseChar, exclude);
|
|
16
|
-
let numberChar = "0123456789";
|
|
17
|
-
numberChar = removeExceptions(numberChar, exclude);
|
|
18
|
-
let specialChar = "!#$%&'()*+,-./:;<=>?@[]^_{|}~";
|
|
19
|
-
specialChar = removeExceptions(specialChar, exclude);
|
|
20
|
-
// Generating a minChar string that holds minimum number of characters on the User Option Selection.
|
|
21
|
-
// The minChar variable will store the minimum number of characters for each type - lowercase, uppercase, numbers, and symbols.
|
|
22
|
-
// Then, the minChar variable is shuffled to make the password random.
|
|
23
|
-
let upperLimit = lowercaseChar.length;
|
|
24
|
-
for (let i = 0; i < minLengthLowercase; i++) {
|
|
25
|
-
minChar += lowercaseChar.charAt((0, generate_random_number_1.generateRandomNumbers)(upperLimit));
|
|
26
|
-
}
|
|
27
|
-
upperLimit = uppercaseChar.length;
|
|
28
|
-
for (let i = 0; i < minLengthUppercase; i++) {
|
|
29
|
-
minChar += uppercaseChar.charAt((0, generate_random_number_1.generateRandomNumbers)(upperLimit));
|
|
30
|
-
}
|
|
31
|
-
upperLimit = numberChar.length;
|
|
32
|
-
for (let i = 0; i < minLengthNumbers; i++) {
|
|
33
|
-
minChar += numberChar.charAt((0, generate_random_number_1.generateRandomNumbers)(upperLimit));
|
|
34
|
-
}
|
|
35
|
-
upperLimit = specialChar.length;
|
|
36
|
-
for (let i = 0; i < minLengthSymbols; i++) {
|
|
37
|
-
minChar += specialChar.charAt((0, generate_random_number_1.generateRandomNumbers)(upperLimit));
|
|
38
|
-
}
|
|
39
|
-
//Shuffling the minChar to generate a password that holds minimum criteria.
|
|
40
|
-
pswd = pswd + (0, shuffle_string_1.shuffleString)(minChar);
|
|
41
|
-
let characterString = "";
|
|
42
|
-
characterString = lowercase
|
|
43
|
-
? characterString + lowercaseChar
|
|
44
|
-
: characterString;
|
|
45
|
-
characterString = uppercase
|
|
46
|
-
? characterString + uppercaseChar
|
|
47
|
-
: characterString;
|
|
48
|
-
characterString = numbers ? characterString + numberChar : characterString;
|
|
49
|
-
characterString = symbols ? characterString + specialChar : characterString;
|
|
50
|
-
let remainingChar = length - pswd.length;
|
|
51
|
-
upperLimit = characterString.length;
|
|
52
|
-
for (let i = 0; i < remainingChar; i++) {
|
|
53
|
-
pswd += characterString.charAt((0, generate_random_number_1.generateRandomNumbers)(upperLimit));
|
|
54
|
-
}
|
|
55
|
-
return pswd;
|
|
56
|
-
};
|
|
57
|
-
exports.generatePswd = generatePswd;
|
|
58
|
-
const removeExceptions = (str, EXCEPTIONS) => {
|
|
59
|
-
EXCEPTIONS === null || EXCEPTIONS === void 0 ? void 0 : EXCEPTIONS.split("").forEach((char) => {
|
|
60
|
-
str = str.replace(char, "");
|
|
61
|
-
});
|
|
62
|
-
return str;
|
|
63
|
-
};
|
|
64
|
-
// module.exports = generatePassword;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.processOption = void 0;
|
|
4
|
-
const processOption = (options) => {
|
|
5
|
-
{
|
|
6
|
-
options.length = typeof options.length == "undefined" ? 10 : options.length;
|
|
7
|
-
options.lowercase =
|
|
8
|
-
typeof options.lowercase == "undefined" ? true : options.lowercase;
|
|
9
|
-
options.uppercase =
|
|
10
|
-
typeof options.uppercase == "undefined" ? true : options.uppercase;
|
|
11
|
-
options.numbers =
|
|
12
|
-
typeof options.numbers == "undefined" ? true : options.numbers;
|
|
13
|
-
options.symbols =
|
|
14
|
-
typeof options.symbols == "undefined" ? false : options.symbols;
|
|
15
|
-
if (options.lowercase) {
|
|
16
|
-
options.minLengthLowercase =
|
|
17
|
-
typeof options.minLengthLowercase == "undefined"
|
|
18
|
-
? 1
|
|
19
|
-
: options.minLengthLowercase;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
options.minLengthLowercase = 0;
|
|
23
|
-
}
|
|
24
|
-
if (options.uppercase) {
|
|
25
|
-
options.minLengthUppercase =
|
|
26
|
-
typeof options.minLengthUppercase == "undefined"
|
|
27
|
-
? 1
|
|
28
|
-
: options.minLengthUppercase;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
options.minLengthUppercase = 0;
|
|
32
|
-
}
|
|
33
|
-
if (options.numbers) {
|
|
34
|
-
options.minLengthNumbers =
|
|
35
|
-
typeof options.minLengthNumbers == "undefined"
|
|
36
|
-
? 1
|
|
37
|
-
: options.minLengthNumbers;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
options.minLengthNumbers = 0;
|
|
41
|
-
}
|
|
42
|
-
if (options.symbols) {
|
|
43
|
-
options.minLengthSymbols =
|
|
44
|
-
typeof options.minLengthSymbols == "undefined"
|
|
45
|
-
? 1
|
|
46
|
-
: options.minLengthSymbols;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
options.minLengthSymbols = 0;
|
|
50
|
-
}
|
|
51
|
-
options.exclude =
|
|
52
|
-
typeof options.exclude == "undefined" ? "" : options.exclude;
|
|
53
|
-
}
|
|
54
|
-
return options;
|
|
55
|
-
};
|
|
56
|
-
exports.processOption = processOption;
|
|
57
|
-
// module.exports = processOption;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.shuffleString = void 0;
|
|
4
|
-
const shuffleString = (str) => {
|
|
5
|
-
let arr = str.split("");
|
|
6
|
-
let n = arr.length;
|
|
7
|
-
for (let i = n - 1; i > 0; i--) {
|
|
8
|
-
let j = Math.floor(Math.random() * (i + 1));
|
|
9
|
-
let tmp = arr[i];
|
|
10
|
-
arr[i] = arr[j];
|
|
11
|
-
arr[j] = tmp;
|
|
12
|
-
}
|
|
13
|
-
return arr.join("");
|
|
14
|
-
};
|
|
15
|
-
exports.shuffleString = shuffleString;
|
|
16
|
-
// module.exports = shuffleString;
|
package/dist/lib/types.js
DELETED
package/src/index.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { generatePswd } from "./lib/password-generator";
|
|
2
|
-
import { checkError } from "./lib/check-options-error";
|
|
3
|
-
import { processOption } from "./lib/process-options";
|
|
4
|
-
import { GenerateOptions } from "./lib/types";
|
|
5
|
-
|
|
6
|
-
function GeneratePassword(options?: GenerateOptions) {
|
|
7
|
-
let pswd;
|
|
8
|
-
if (options) {
|
|
9
|
-
options = processOption(options);
|
|
10
|
-
|
|
11
|
-
checkError(options);
|
|
12
|
-
|
|
13
|
-
pswd = generatePswd(options);
|
|
14
|
-
return pswd;
|
|
15
|
-
} else {
|
|
16
|
-
let opt = {
|
|
17
|
-
length: 10,
|
|
18
|
-
lowercase: true,
|
|
19
|
-
uppercase: true,
|
|
20
|
-
numbers: true,
|
|
21
|
-
symbols: false,
|
|
22
|
-
exclude: "",
|
|
23
|
-
minLengthLowercase: 1,
|
|
24
|
-
minLengthUppercase: 1,
|
|
25
|
-
minLengthNumbers: 1,
|
|
26
|
-
minLengthSymbols: 0,
|
|
27
|
-
};
|
|
28
|
-
options = processOption(opt);
|
|
29
|
-
|
|
30
|
-
checkError(options);
|
|
31
|
-
|
|
32
|
-
pswd = generatePswd(options);
|
|
33
|
-
return pswd;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// console.log(GeneratePassword({ minLengthLowercase: 4 }));
|
|
38
|
-
export { GeneratePassword };
|
|
39
|
-
export default { GeneratePassword };
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { GenerateOptions } from "./types";
|
|
2
|
-
|
|
3
|
-
export const checkError = (options: GenerateOptions) => {
|
|
4
|
-
const {
|
|
5
|
-
length,
|
|
6
|
-
lowercase,
|
|
7
|
-
uppercase,
|
|
8
|
-
numbers,
|
|
9
|
-
symbols,
|
|
10
|
-
minLengthLowercase,
|
|
11
|
-
minLengthUppercase,
|
|
12
|
-
minLengthNumbers,
|
|
13
|
-
minLengthSymbols,
|
|
14
|
-
} = options;
|
|
15
|
-
|
|
16
|
-
//Checking if the sum of minimum characters of Lowercase, uppercase, numbers and special case is greater than the total password length.
|
|
17
|
-
if (
|
|
18
|
-
minLengthLowercase! +
|
|
19
|
-
minLengthUppercase! +
|
|
20
|
-
minLengthNumbers! +
|
|
21
|
-
minLengthSymbols! >
|
|
22
|
-
length!
|
|
23
|
-
) {
|
|
24
|
-
throw new Error(
|
|
25
|
-
"Sum of Minimum Characters in the passwords greater than the length of the Password to be generated."
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
//Checking if lowercase, uppercase , numbers and special characters have all been set to false.
|
|
30
|
-
if (
|
|
31
|
-
lowercase == false &&
|
|
32
|
-
uppercase == false &&
|
|
33
|
-
numbers == false &&
|
|
34
|
-
symbols == false
|
|
35
|
-
) {
|
|
36
|
-
throw new Error(
|
|
37
|
-
"Alphabets, Numbers and Symbols are all set to False. No valid Characters to generate the Password."
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
// module.exports = checkError;
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
// const generategenerateRandomNumberss = require("./generate-random-number");
|
|
2
|
-
// const shuffleString = require("./shuffle-string");
|
|
3
|
-
import { generateRandomNumbers } from "./generate-random-number";
|
|
4
|
-
import { shuffleString } from "./shuffle-string";
|
|
5
|
-
import { GenerateOptions } from "./types";
|
|
6
|
-
export const generatePswd = (options: GenerateOptions) => {
|
|
7
|
-
let pswd = "";
|
|
8
|
-
let minChar = "";
|
|
9
|
-
let {
|
|
10
|
-
length,
|
|
11
|
-
lowercase,
|
|
12
|
-
uppercase,
|
|
13
|
-
numbers,
|
|
14
|
-
symbols,
|
|
15
|
-
minLengthLowercase,
|
|
16
|
-
minLengthUppercase,
|
|
17
|
-
minLengthNumbers,
|
|
18
|
-
minLengthSymbols,
|
|
19
|
-
exclude,
|
|
20
|
-
} = options;
|
|
21
|
-
|
|
22
|
-
let lowercaseChar = "abcdefghijklmnopqrstuvwxyz";
|
|
23
|
-
lowercaseChar = removeExceptions(lowercaseChar, exclude!);
|
|
24
|
-
|
|
25
|
-
let uppercaseChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
26
|
-
uppercaseChar = removeExceptions(uppercaseChar, exclude!);
|
|
27
|
-
|
|
28
|
-
let numberChar = "0123456789";
|
|
29
|
-
numberChar = removeExceptions(numberChar, exclude!);
|
|
30
|
-
|
|
31
|
-
let specialChar = "!#$%&'()*+,-./:;<=>?@[]^_{|}~";
|
|
32
|
-
specialChar = removeExceptions(specialChar, exclude!);
|
|
33
|
-
|
|
34
|
-
// Generating a minChar string that holds minimum number of characters on the User Option Selection.
|
|
35
|
-
// The minChar variable will store the minimum number of characters for each type - lowercase, uppercase, numbers, and symbols.
|
|
36
|
-
// Then, the minChar variable is shuffled to make the password random.
|
|
37
|
-
|
|
38
|
-
let upperLimit = lowercaseChar.length;
|
|
39
|
-
for (let i = 0; i < minLengthLowercase!; i++) {
|
|
40
|
-
minChar += lowercaseChar.charAt(generateRandomNumbers(upperLimit));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
upperLimit = uppercaseChar.length;
|
|
44
|
-
for (let i = 0; i < minLengthUppercase!; i++) {
|
|
45
|
-
minChar += uppercaseChar.charAt(generateRandomNumbers(upperLimit));
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
upperLimit = numberChar.length;
|
|
49
|
-
for (let i = 0; i < minLengthNumbers!; i++) {
|
|
50
|
-
minChar += numberChar.charAt(generateRandomNumbers(upperLimit));
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
upperLimit = specialChar.length;
|
|
54
|
-
for (let i = 0; i < minLengthSymbols!; i++) {
|
|
55
|
-
minChar += specialChar.charAt(generateRandomNumbers(upperLimit));
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
//Shuffling the minChar to generate a password that holds minimum criteria.
|
|
59
|
-
pswd = pswd + shuffleString(minChar);
|
|
60
|
-
|
|
61
|
-
let characterString = "";
|
|
62
|
-
|
|
63
|
-
characterString = lowercase
|
|
64
|
-
? characterString + lowercaseChar
|
|
65
|
-
: characterString;
|
|
66
|
-
|
|
67
|
-
characterString = uppercase
|
|
68
|
-
? characterString + uppercaseChar
|
|
69
|
-
: characterString;
|
|
70
|
-
|
|
71
|
-
characterString = numbers ? characterString + numberChar : characterString;
|
|
72
|
-
|
|
73
|
-
characterString = symbols ? characterString + specialChar : characterString;
|
|
74
|
-
|
|
75
|
-
let remainingChar = length! - pswd.length;
|
|
76
|
-
|
|
77
|
-
upperLimit = characterString.length;
|
|
78
|
-
|
|
79
|
-
for (let i = 0; i < remainingChar; i++) {
|
|
80
|
-
pswd += characterString.charAt(generateRandomNumbers(upperLimit));
|
|
81
|
-
}
|
|
82
|
-
return pswd;
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
const removeExceptions = (str: string, EXCEPTIONS: string) => {
|
|
86
|
-
EXCEPTIONS?.split("").forEach((char) => {
|
|
87
|
-
str = str.replace(char, "");
|
|
88
|
-
});
|
|
89
|
-
return str;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
// module.exports = generatePassword;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { GenerateOptions } from "./types";
|
|
2
|
-
|
|
3
|
-
export const processOption = (options: GenerateOptions) => {
|
|
4
|
-
{
|
|
5
|
-
options.length = typeof options.length == "undefined" ? 10 : options.length;
|
|
6
|
-
|
|
7
|
-
options.lowercase =
|
|
8
|
-
typeof options.lowercase == "undefined" ? true : options.lowercase;
|
|
9
|
-
|
|
10
|
-
options.uppercase =
|
|
11
|
-
typeof options.uppercase == "undefined" ? true : options.uppercase;
|
|
12
|
-
|
|
13
|
-
options.numbers =
|
|
14
|
-
typeof options.numbers == "undefined" ? true : options.numbers;
|
|
15
|
-
|
|
16
|
-
options.symbols =
|
|
17
|
-
typeof options.symbols == "undefined" ? false : options.symbols;
|
|
18
|
-
|
|
19
|
-
if (options.lowercase) {
|
|
20
|
-
options.minLengthLowercase =
|
|
21
|
-
typeof options.minLengthLowercase == "undefined"
|
|
22
|
-
? 1
|
|
23
|
-
: options.minLengthLowercase;
|
|
24
|
-
} else {
|
|
25
|
-
options.minLengthLowercase = 0;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (options.uppercase) {
|
|
29
|
-
options.minLengthUppercase =
|
|
30
|
-
typeof options.minLengthUppercase == "undefined"
|
|
31
|
-
? 1
|
|
32
|
-
: options.minLengthUppercase;
|
|
33
|
-
} else {
|
|
34
|
-
options.minLengthUppercase = 0;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (options.numbers) {
|
|
38
|
-
options.minLengthNumbers =
|
|
39
|
-
typeof options.minLengthNumbers == "undefined"
|
|
40
|
-
? 1
|
|
41
|
-
: options.minLengthNumbers;
|
|
42
|
-
} else {
|
|
43
|
-
options.minLengthNumbers = 0;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (options.symbols) {
|
|
47
|
-
options.minLengthSymbols =
|
|
48
|
-
typeof options.minLengthSymbols == "undefined"
|
|
49
|
-
? 1
|
|
50
|
-
: options.minLengthSymbols;
|
|
51
|
-
} else {
|
|
52
|
-
options.minLengthSymbols = 0;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
options.exclude =
|
|
56
|
-
typeof options.exclude == "undefined" ? "" : options.exclude;
|
|
57
|
-
}
|
|
58
|
-
return options;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// module.exports = processOption;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const shuffleString = (str: string) => {
|
|
2
|
-
let arr = str.split("");
|
|
3
|
-
let n = arr.length;
|
|
4
|
-
|
|
5
|
-
for (let i = n - 1; i > 0; i--) {
|
|
6
|
-
let j = Math.floor(Math.random() * (i + 1));
|
|
7
|
-
let tmp = arr[i];
|
|
8
|
-
arr[i] = arr[j];
|
|
9
|
-
arr[j] = tmp;
|
|
10
|
-
}
|
|
11
|
-
return arr.join("");
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
// module.exports = shuffleString;
|
package/src/lib/types.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
export interface GenerateOptions {
|
|
2
|
-
/**
|
|
3
|
-
* lenght of the password
|
|
4
|
-
* @default 10
|
|
5
|
-
*/
|
|
6
|
-
length?: number;
|
|
7
|
-
/**
|
|
8
|
-
* Should the password include lowercase characters
|
|
9
|
-
* @default true
|
|
10
|
-
*/
|
|
11
|
-
lowercase?: boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Should the password include uppercase characters
|
|
14
|
-
* @default true
|
|
15
|
-
*/
|
|
16
|
-
uppercase?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Should the password include numbers
|
|
19
|
-
* @default true
|
|
20
|
-
*/
|
|
21
|
-
numbers?: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Should the password include symbol characters
|
|
24
|
-
* @default false
|
|
25
|
-
*/
|
|
26
|
-
symbols?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* List of characters to be excluded from the password
|
|
29
|
-
* @default ""
|
|
30
|
-
*/
|
|
31
|
-
exclude?: string;
|
|
32
|
-
/**
|
|
33
|
-
* min lentgh of lowercase character
|
|
34
|
-
* @default 1
|
|
35
|
-
*/
|
|
36
|
-
minLengthLowercase?: number;
|
|
37
|
-
/**
|
|
38
|
-
* min lentgh of uppercase character
|
|
39
|
-
* @default 1
|
|
40
|
-
*/
|
|
41
|
-
minLengthUppercase?: number;
|
|
42
|
-
/**
|
|
43
|
-
* min length of numbers
|
|
44
|
-
* @default 1
|
|
45
|
-
*/
|
|
46
|
-
minLengthNumbers?: number;
|
|
47
|
-
/**
|
|
48
|
-
* min length of symbols
|
|
49
|
-
* @default 0
|
|
50
|
-
*/
|
|
51
|
-
minLengthSymbols?: number;
|
|
52
|
-
}
|