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 CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 Mustafa Zahedi
3
+ Copyright (c) 2022 Ahmad Joya
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
- `npm install js-generate-password`
59
+ ```bash
60
+ npm install js-generate-password
61
+ ```
59
62
 
60
63
  or
61
64
 
62
- `yarn add js-generate-password`
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
- ```javascript
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
- ```javascript
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
- \*At least one should be true.
118
+ * At least one should be true.
112
119
 
113
120
  ## Example
114
121
 
115
122
  - **No Options passed.**
116
123
 
117
- ```javscript
118
- const {GeneratePassword} = require("js-generate-password");
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
- ```javascript
134
+ ```typescript
126
135
  xDU6izb3PV;
127
136
  ```
128
137
 
129
138
  - **Length parameter passed.**
130
139
 
131
- ```javascript
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
- ```javascript
147
+ ```typescript
139
148
  U4c3KpQP5UrbZgTcrqMgFeI3R;
140
149
  ```
141
150
 
142
151
  - **exclude parameter passed.**
143
152
 
144
- ```javascript
145
- options={
146
- exclude : 'abc567XYZ';
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
- ```javascript
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.
@@ -0,0 +1,3 @@
1
+ import { GenerateOptions } from './types';
2
+ declare function GeneratePassword(options?: GenerateOptions): string;
3
+ export { GeneratePassword, type GenerateOptions };
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,2 @@
1
+ import { GenerateOptions } from '../types';
2
+ export declare const checkError: (options: GenerateOptions) => void;
@@ -0,0 +1 @@
1
+ export declare const generateRandomNumbers: (upperLimit: number) => number;
@@ -0,0 +1,2 @@
1
+ import { GenerateOptions } from '../types';
2
+ export declare const generatePswd: (options: GenerateOptions) => string;
@@ -0,0 +1,2 @@
1
+ import { GenerateOptions } from '../types';
2
+ export declare const processOption: (options: GenerateOptions) => GenerateOptions;
@@ -0,0 +1 @@
1
+ export declare const shuffleString: (str: string) => string;
@@ -1,58 +1,58 @@
1
- export interface GenerateOptions {
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.1.8",
3
+ "version": "1.0.0",
4
4
  "private": false,
5
- "description": "Password Generator for using in javascirpt/typscript based projects.",
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
- "test": "echo \"Error: no test specified\" && exit 1"
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
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
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,5 +0,0 @@
1
- export const generateRandomNumbers = (upperLimit: number) => {
2
- return Math.floor(Math.random() * upperLimit);
3
- };
4
-
5
- // module.exports = generateRandomNumbers;
@@ -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
- }