@20syldev/api 3.5.0 → 4.1.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/.prettierrc +7 -0
- package/README.md +32 -33
- package/dist/app.js +36 -0
- package/dist/app.js.map +1 -0
- package/dist/config/env.js +73 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/versions.js +72 -0
- package/dist/config/versions.js.map +1 -0
- package/dist/constants.js +42 -0
- package/dist/constants.js.map +1 -0
- package/dist/middleware/cors.js +15 -0
- package/dist/middleware/cors.js.map +1 -0
- package/dist/middleware/error.js +6 -0
- package/dist/middleware/error.js.map +1 -0
- package/dist/middleware/json.js +8 -0
- package/dist/middleware/json.js.map +1 -0
- package/dist/middleware/logger.js +26 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/ratelimit.js +58 -0
- package/dist/middleware/ratelimit.js.map +1 -0
- package/dist/middleware/version.js +30 -0
- package/dist/middleware/version.js.map +1 -0
- package/dist/modules/v3/algorithms.js +221 -0
- package/dist/modules/v3/algorithms.js.map +1 -0
- package/{modules → dist/modules}/v3/captcha.js +4 -13
- package/dist/modules/v3/captcha.js.map +1 -0
- package/dist/modules/v3/chat.js +103 -0
- package/dist/modules/v3/chat.js.map +1 -0
- package/{modules → dist/modules}/v3/color.js +12 -13
- package/dist/modules/v3/color.js.map +1 -0
- package/dist/modules/v3/convert.js +41 -0
- package/dist/modules/v3/convert.js.map +1 -0
- package/dist/modules/v3/domain.js +83 -0
- package/dist/modules/v3/domain.js.map +1 -0
- package/dist/modules/v3/hash.js +16 -0
- package/dist/modules/v3/hash.js.map +1 -0
- package/dist/modules/v3/hyperplanning.js +50 -0
- package/dist/modules/v3/hyperplanning.js.map +1 -0
- package/dist/modules/v3/levenshtein.js +38 -0
- package/dist/modules/v3/levenshtein.js.map +1 -0
- package/dist/modules/v3/personal.js +129 -0
- package/dist/modules/v3/personal.js.map +1 -0
- package/dist/modules/v3/qrcode.js +21 -0
- package/dist/modules/v3/qrcode.js.map +1 -0
- package/dist/modules/v3/tic_tac_toe.js +221 -0
- package/dist/modules/v3/tic_tac_toe.js.map +1 -0
- package/dist/modules/v3/time.js +88 -0
- package/dist/modules/v3/time.js.map +1 -0
- package/{modules → dist/modules}/v3/token.js +10 -11
- package/dist/modules/v3/token.js.map +1 -0
- package/dist/modules/v3/username.js +92 -0
- package/dist/modules/v3/username.js.map +1 -0
- package/dist/modules/v3/utils.js +70 -0
- package/dist/modules/v3/utils.js.map +1 -0
- package/dist/modules/v3.js +16 -0
- package/dist/modules/v3.js.map +1 -0
- package/dist/modules/v4/algorithms.js +200 -0
- package/dist/modules/v4/algorithms.js.map +1 -0
- package/dist/modules/v4/captcha.js +35 -0
- package/dist/modules/v4/captcha.js.map +1 -0
- package/dist/modules/v4/chat.js +92 -0
- package/dist/modules/v4/chat.js.map +1 -0
- package/dist/modules/v4/color.js +43 -0
- package/dist/modules/v4/color.js.map +1 -0
- package/dist/modules/v4/convert.js +33 -0
- package/dist/modules/v4/convert.js.map +1 -0
- package/dist/modules/v4/dice.js +30 -0
- package/dist/modules/v4/dice.js.map +1 -0
- package/dist/modules/v4/domain.js +78 -0
- package/dist/modules/v4/domain.js.map +1 -0
- package/dist/modules/v4/encode.js +165 -0
- package/dist/modules/v4/encode.js.map +1 -0
- package/dist/modules/v4/geo.js +41 -0
- package/dist/modules/v4/geo.js.map +1 -0
- package/dist/modules/v4/hash.js +9 -0
- package/dist/modules/v4/hash.js.map +1 -0
- package/dist/modules/v4/hyperplanning.js +42 -0
- package/dist/modules/v4/hyperplanning.js.map +1 -0
- package/dist/modules/v4/levenshtein.js +29 -0
- package/dist/modules/v4/levenshtein.js.map +1 -0
- package/dist/modules/v4/palette.js +89 -0
- package/dist/modules/v4/palette.js.map +1 -0
- package/dist/modules/v4/personal.js +125 -0
- package/dist/modules/v4/personal.js.map +1 -0
- package/dist/modules/v4/placeholder.js +96 -0
- package/dist/modules/v4/placeholder.js.map +1 -0
- package/dist/modules/v4/qrcode.js +12 -0
- package/dist/modules/v4/qrcode.js.map +1 -0
- package/dist/modules/v4/statistics.js +41 -0
- package/dist/modules/v4/statistics.js.map +1 -0
- package/dist/modules/v4/text.js +293 -0
- package/dist/modules/v4/text.js.map +1 -0
- package/dist/modules/v4/tic_tac_toe.js +206 -0
- package/dist/modules/v4/tic_tac_toe.js.map +1 -0
- package/dist/modules/v4/time.js +73 -0
- package/dist/modules/v4/time.js.map +1 -0
- package/dist/modules/v4/token.js +36 -0
- package/dist/modules/v4/token.js.map +1 -0
- package/dist/modules/v4/username.js +87 -0
- package/dist/modules/v4/username.js.map +1 -0
- package/dist/modules/v4/utils.js +26 -0
- package/dist/modules/v4/utils.js.map +1 -0
- package/dist/modules/v4/validate.js +54 -0
- package/dist/modules/v4/validate.js.map +1 -0
- package/dist/modules/v4.js +18 -0
- package/dist/modules/v4.js.map +1 -0
- package/dist/routes/delete.js +65 -0
- package/dist/routes/delete.js.map +1 -0
- package/dist/routes/get.js +441 -0
- package/dist/routes/get.js.map +1 -0
- package/dist/routes/index.js +50 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/patch.js +41 -0
- package/dist/routes/patch.js.map +1 -0
- package/dist/routes/post.js +185 -0
- package/dist/routes/post.js.map +1 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/types/storage.js +2 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/utils/response.js +10 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/utils/version.js +3 -0
- package/dist/utils/version.js.map +1 -0
- package/docs/changelog.md +333 -0
- package/eslint.config.js +20 -0
- package/package.json +31 -15
- package/src/app.ts +48 -0
- package/src/config/env.ts +81 -0
- package/src/config/versions.ts +92 -0
- package/src/constants.ts +47 -0
- package/src/middleware/cors.ts +17 -0
- package/src/middleware/error.ts +7 -0
- package/src/middleware/json.ts +9 -0
- package/src/middleware/logger.ts +31 -0
- package/src/middleware/ratelimit.ts +66 -0
- package/src/middleware/version.ts +39 -0
- package/{modules → src/modules}/v3/algorithms.js +1 -1
- package/src/modules/v3/captcha.js +60 -0
- package/{modules → src/modules}/v3/chat.js +6 -4
- package/src/modules/v3/color.js +60 -0
- package/{modules → src/modules}/v3/convert.js +5 -5
- package/{modules → src/modules}/v3/domain.js +51 -4
- package/{modules → src/modules}/v3/hash.js +1 -1
- package/{modules → src/modules}/v3/hyperplanning.js +11 -10
- package/{modules → src/modules}/v3/levenshtein.js +3 -3
- package/{modules → src/modules}/v3/personal.js +20 -8
- package/{modules → src/modules}/v3/qrcode.js +1 -1
- package/{modules → src/modules}/v3/tic_tac_toe.js +24 -18
- package/{modules → src/modules}/v3/time.js +22 -11
- package/src/modules/v3/token.js +54 -0
- package/src/modules/v3/username.js +94 -0
- package/{modules → src/modules}/v3/utils.js +2 -2
- package/{modules → src/modules}/v3.js +1 -1
- package/src/modules/v4/algorithms.ts +197 -0
- package/src/modules/v4/captcha.ts +49 -0
- package/src/modules/v4/chat.ts +122 -0
- package/src/modules/v4/color.ts +64 -0
- package/src/modules/v4/convert.ts +38 -0
- package/src/modules/v4/dice.ts +39 -0
- package/src/modules/v4/domain.ts +81 -0
- package/src/modules/v4/encode.ts +170 -0
- package/src/modules/v4/geo.ts +53 -0
- package/src/modules/v4/hash.ts +9 -0
- package/src/modules/v4/hyperplanning.ts +58 -0
- package/src/modules/v4/levenshtein.ts +38 -0
- package/src/modules/v4/palette.ts +103 -0
- package/src/modules/v4/personal.ts +147 -0
- package/src/modules/v4/placeholder.ts +122 -0
- package/src/modules/v4/qrcode.ts +11 -0
- package/src/modules/v4/statistics.ts +55 -0
- package/src/modules/v4/text.ts +300 -0
- package/src/modules/v4/tic_tac_toe.ts +255 -0
- package/src/modules/v4/time.ts +92 -0
- package/src/modules/v4/token.ts +43 -0
- package/src/modules/v4/username.ts +89 -0
- package/src/modules/v4/utils.ts +38 -0
- package/src/modules/v4/validate.ts +55 -0
- package/src/modules/v4.ts +17 -0
- package/src/routes/delete.ts +72 -0
- package/src/routes/get.ts +508 -0
- package/src/routes/index.ts +58 -0
- package/src/routes/patch.ts +45 -0
- package/src/routes/post.ts +200 -0
- package/src/storage/index.ts +16 -0
- package/src/types/express.d.ts +17 -0
- package/src/types/storage.ts +48 -0
- package/src/utils/response.ts +11 -0
- package/src/utils/version.ts +5 -0
- package/tests/integration/api.test.ts +395 -0
- package/tests/tsconfig.json +3 -0
- package/tests/unit/algorithms.test.ts +120 -0
- package/tests/unit/color.test.ts +33 -0
- package/tests/unit/convert.test.ts +42 -0
- package/tests/unit/dice.test.ts +57 -0
- package/tests/unit/domain.test.ts +47 -0
- package/tests/unit/encode.test.ts +108 -0
- package/tests/unit/geo.test.ts +45 -0
- package/tests/unit/hash.test.ts +37 -0
- package/tests/unit/hyperplanning.test.ts +77 -0
- package/tests/unit/levenshtein.test.ts +34 -0
- package/tests/unit/palette.test.ts +53 -0
- package/tests/unit/personal.test.ts +65 -0
- package/tests/unit/statistics.test.ts +57 -0
- package/tests/unit/text.test.ts +107 -0
- package/tests/unit/time.test.ts +67 -0
- package/tests/unit/token.test.ts +61 -0
- package/tests/unit/username.test.ts +34 -0
- package/tests/unit/validate.test.ts +71 -0
- package/tsconfig.json +17 -0
- package/tsconfig.test.json +9 -0
- package/app.js +0 -865
- package/modules/v3/username.js +0 -32
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if two strings are anagrams of each other
|
|
3
|
+
*
|
|
4
|
+
* @param {string} value - First string to compare
|
|
5
|
+
* @param {string} value2 - Second string to compare
|
|
6
|
+
* @returns {boolean} - True if strings are anagrams, false otherwise
|
|
7
|
+
* @throws {Error} - If inputs are invalid
|
|
8
|
+
*/
|
|
9
|
+
export function anagram(value, value2) {
|
|
10
|
+
if (!value)
|
|
11
|
+
throw new Error('First value is required');
|
|
12
|
+
if (!value2)
|
|
13
|
+
throw new Error('Second value is required');
|
|
14
|
+
if (typeof value !== 'string')
|
|
15
|
+
throw new Error('First value must be a string');
|
|
16
|
+
if (typeof value2 !== 'string')
|
|
17
|
+
throw new Error('Second value must be a string');
|
|
18
|
+
if (value.length < 2)
|
|
19
|
+
throw new Error('First value must be at least two characters long');
|
|
20
|
+
if (value.length > 1000)
|
|
21
|
+
throw new Error('First value must be less than 1000 characters long');
|
|
22
|
+
if (value2.length < 2)
|
|
23
|
+
throw new Error('Second value must be at least two characters long');
|
|
24
|
+
if (value2.length > 1000)
|
|
25
|
+
throw new Error('Second value must be less than 1000 characters long');
|
|
26
|
+
return value.split('').sort().join('') === value2.split('').sort().join('');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Sort an array using bubble sort algorithm
|
|
30
|
+
*
|
|
31
|
+
* @param {string} value - Comma-separated list of numbers
|
|
32
|
+
* @returns {number[]} - Sorted array of numbers
|
|
33
|
+
* @throws {Error} - If input is invalid
|
|
34
|
+
*/
|
|
35
|
+
export function bubblesort(value) {
|
|
36
|
+
if (!value)
|
|
37
|
+
throw new Error('A value is required');
|
|
38
|
+
if (typeof value !== 'string')
|
|
39
|
+
throw new Error('Value must be a string');
|
|
40
|
+
const arr = value.split(',').map(Number);
|
|
41
|
+
if (arr.some(isNaN))
|
|
42
|
+
throw new Error('Array must contain only numbers');
|
|
43
|
+
if (arr.length < 2)
|
|
44
|
+
throw new Error('Array must contain at least two numbers');
|
|
45
|
+
if (arr.length > 1000)
|
|
46
|
+
throw new Error('Array must contain less than 1000 numbers');
|
|
47
|
+
for (let i = 0; i < arr.length - 1; i++) {
|
|
48
|
+
for (let j = 0; j < arr.length - i - 1; j++) {
|
|
49
|
+
if (arr[j] > arr[j + 1])
|
|
50
|
+
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return arr;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Calculate the factorial of a number
|
|
57
|
+
*
|
|
58
|
+
* @param {number} value - Number to calculate factorial for
|
|
59
|
+
* @returns {number} - Factorial result
|
|
60
|
+
* @throws {Error} - If input is invalid or out of range
|
|
61
|
+
*/
|
|
62
|
+
export function factorial(value) {
|
|
63
|
+
if (isNaN(value))
|
|
64
|
+
throw new Error('Value must be a number');
|
|
65
|
+
if (value < 0)
|
|
66
|
+
throw new Error('Number must be positive');
|
|
67
|
+
if (value > 170)
|
|
68
|
+
throw new Error('Number must be between 0 and 170');
|
|
69
|
+
return value <= 1 ? 1 : value * factorial(value - 1);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Generate a Fibonacci sequence up to the specified length
|
|
73
|
+
*
|
|
74
|
+
* @param {number} value - Length of Fibonacci sequence to generate
|
|
75
|
+
* @returns {number[]} - Array of Fibonacci numbers
|
|
76
|
+
* @throws {Error} - If input is invalid or out of range
|
|
77
|
+
*/
|
|
78
|
+
export function fibonacci(value) {
|
|
79
|
+
if (isNaN(value))
|
|
80
|
+
throw new Error('Value must be a number');
|
|
81
|
+
if (value < 0)
|
|
82
|
+
throw new Error('Number must be positive');
|
|
83
|
+
if (value > 1000)
|
|
84
|
+
throw new Error('Number must be between 0 and 1000');
|
|
85
|
+
let fib = [0, 1];
|
|
86
|
+
for (let i = 2; i < parseInt(value); i++) {
|
|
87
|
+
fib.push(fib[i - 1] + fib[i - 2]);
|
|
88
|
+
}
|
|
89
|
+
return fib.slice(0, parseInt(value));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Calculate the greatest common divisor (GCD) of two numbers
|
|
93
|
+
*
|
|
94
|
+
* @param {number} value - First number
|
|
95
|
+
* @param {number} value2 - Second number
|
|
96
|
+
* @returns {number} - Greatest common divisor
|
|
97
|
+
* @throws {Error} - If inputs are invalid or out of range
|
|
98
|
+
*/
|
|
99
|
+
export function gcd(value, value2) {
|
|
100
|
+
if (isNaN(value))
|
|
101
|
+
throw new Error('First value must be a number');
|
|
102
|
+
if (isNaN(value2))
|
|
103
|
+
throw new Error('Second value must be a number');
|
|
104
|
+
if (value <= 0)
|
|
105
|
+
throw new Error('First number must be strictly positive');
|
|
106
|
+
if (value2 <= 0)
|
|
107
|
+
throw new Error('Second number must be strictly positive');
|
|
108
|
+
if (value > 100000)
|
|
109
|
+
throw new Error('First number must be between 0 and 100000');
|
|
110
|
+
if (value2 > 100000)
|
|
111
|
+
throw new Error('Second number must be between 0 and 100000');
|
|
112
|
+
value = Math.abs(value);
|
|
113
|
+
value2 = Math.abs(value2);
|
|
114
|
+
while (value2)
|
|
115
|
+
[value, value2] = [value2, value % value2];
|
|
116
|
+
return value;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if a number is prime
|
|
120
|
+
*
|
|
121
|
+
* @param {number} value - Number to check
|
|
122
|
+
* @returns {boolean} - True if the number is prime, false otherwise
|
|
123
|
+
* @throws {Error} - If input is invalid or out of range
|
|
124
|
+
*/
|
|
125
|
+
export function isprime(value) {
|
|
126
|
+
if (isNaN(value))
|
|
127
|
+
throw new Error('Value must be a number');
|
|
128
|
+
if (value < 1)
|
|
129
|
+
throw new Error('Number must be positive');
|
|
130
|
+
if (value > 100000)
|
|
131
|
+
throw new Error('Number must be between 1 and 100000');
|
|
132
|
+
for (let i = 2; i <= Math.sqrt(value); i++) {
|
|
133
|
+
if (value % i === 0)
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Check if a string is a palindrome
|
|
140
|
+
*
|
|
141
|
+
* @param {string} value - String to check
|
|
142
|
+
* @returns {boolean} - True if the string is a palindrome, false otherwise
|
|
143
|
+
* @throws {Error} - If input is invalid
|
|
144
|
+
*/
|
|
145
|
+
export function palindrome(value) {
|
|
146
|
+
if (!value)
|
|
147
|
+
throw new Error('A value is required');
|
|
148
|
+
if (typeof value !== 'string')
|
|
149
|
+
throw new Error('Value must be a string');
|
|
150
|
+
if (value.length < 2)
|
|
151
|
+
throw new Error('Value must be at least two characters long');
|
|
152
|
+
if (value.length > 1000)
|
|
153
|
+
throw new Error('Value must be less than 1000 characters long');
|
|
154
|
+
return value === value.split('').reverse().join('');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Find all prime factors of a number
|
|
158
|
+
*
|
|
159
|
+
* @param {number} value - Number to factorize
|
|
160
|
+
* @returns {number[]} - Array of prime factors
|
|
161
|
+
* @throws {Error} - If input is invalid or out of range
|
|
162
|
+
*/
|
|
163
|
+
export function primefactors(value) {
|
|
164
|
+
if (isNaN(value))
|
|
165
|
+
throw new Error('Value must be a number');
|
|
166
|
+
if (value < 2)
|
|
167
|
+
throw new Error('Number must be positive and greater than 1');
|
|
168
|
+
if (value > 100000)
|
|
169
|
+
throw new Error('Number must be between 2 and 100000');
|
|
170
|
+
const factors = [];
|
|
171
|
+
for (let i = 2; i <= value; i++) {
|
|
172
|
+
while (value % i === 0) {
|
|
173
|
+
factors.push(i);
|
|
174
|
+
value /= i;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return factors;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Generate a list of all prime numbers up to the specified limit
|
|
181
|
+
*
|
|
182
|
+
* @param {number} value - Upper limit to check for primes
|
|
183
|
+
* @returns {number[]} - Array of prime numbers
|
|
184
|
+
* @throws {Error} - If input is invalid or out of range
|
|
185
|
+
*/
|
|
186
|
+
export function primelist(value) {
|
|
187
|
+
if (isNaN(value))
|
|
188
|
+
throw new Error('Value must be a number');
|
|
189
|
+
if (value < 2)
|
|
190
|
+
throw new Error('Number must be positive and greater than 1');
|
|
191
|
+
if (value > 10000)
|
|
192
|
+
throw new Error('Number must be between 2 and 10000');
|
|
193
|
+
const primes = [];
|
|
194
|
+
for (let i = 2; i <= value; i++) {
|
|
195
|
+
let isPrime = true;
|
|
196
|
+
for (let j = 2; j <= Math.sqrt(i); j++) {
|
|
197
|
+
if (i % j === 0) {
|
|
198
|
+
isPrime = false;
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (isPrime)
|
|
203
|
+
primes.push(i);
|
|
204
|
+
}
|
|
205
|
+
return primes;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Reverse a string
|
|
209
|
+
*
|
|
210
|
+
* @param {string} value - String to reverse
|
|
211
|
+
* @returns {string} - Reversed string
|
|
212
|
+
* @throws {Error} - If input is invalid
|
|
213
|
+
*/
|
|
214
|
+
export function reverse(value) {
|
|
215
|
+
if (!value)
|
|
216
|
+
throw new Error('A value is required');
|
|
217
|
+
if (typeof value !== 'string')
|
|
218
|
+
throw new Error('Value must be a string');
|
|
219
|
+
return value.split('').reverse().join('');
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=algorithms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"algorithms.js","sourceRoot":"","sources":["../../../src/modules/v3/algorithms.js"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { createCanvas } from 'canvas';
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* Generate a captcha image from the provided text
|
|
5
4
|
*
|
|
@@ -8,15 +7,13 @@ import { createCanvas } from 'canvas';
|
|
|
8
7
|
* @throws {Error} - If text is not provided
|
|
9
8
|
*/
|
|
10
9
|
export default function captcha(text) {
|
|
11
|
-
if (!text)
|
|
12
|
-
|
|
10
|
+
if (!text)
|
|
11
|
+
throw new Error('Text is required to generate a captcha.');
|
|
13
12
|
const size = 60, font = '60px Comic Sans Ms', width = text.length * size, height = 120;
|
|
14
13
|
const canvas = createCanvas(width, height), ctx = canvas.getContext('2d');
|
|
15
|
-
|
|
16
14
|
// Set white background
|
|
17
15
|
ctx.fillStyle = 'white';
|
|
18
16
|
ctx.fillRect(0, 0, width, height);
|
|
19
|
-
|
|
20
17
|
// Add random lines for noise
|
|
21
18
|
for (let i = 0; i < 20; i++) {
|
|
22
19
|
ctx.strokeStyle = 'rgba(0, 0, 0, 0.3)';
|
|
@@ -26,30 +23,24 @@ export default function captcha(text) {
|
|
|
26
23
|
ctx.lineWidth = Math.random() * 2;
|
|
27
24
|
ctx.stroke();
|
|
28
25
|
}
|
|
29
|
-
|
|
30
26
|
let x = (canvas.width + 20 - width) / 2;
|
|
31
|
-
|
|
32
27
|
// Draw each character with random rotation and color
|
|
33
28
|
for (let i = 0; i < text.length; i++) {
|
|
34
29
|
const offsetX = Math.cos(i * 0.3) * 10, y = height / 2.5 + Math.floor(Math.random() * (height / 2));
|
|
35
|
-
|
|
36
30
|
ctx.font = font;
|
|
37
31
|
ctx.fillStyle = `rgb(${Math.floor(Math.random() * 192)}, ${Math.floor(Math.random() * 192)}, ${Math.floor(Math.random() * 192)})`;
|
|
38
|
-
|
|
39
32
|
ctx.save();
|
|
40
33
|
ctx.translate(x + size / 2, y);
|
|
41
34
|
ctx.rotate((Math.random() - 0.5) * 0.5);
|
|
42
35
|
ctx.fillText(text[i], -size / 2 + offsetX, 0);
|
|
43
36
|
ctx.restore();
|
|
44
|
-
|
|
45
37
|
x += size;
|
|
46
38
|
}
|
|
47
|
-
|
|
48
39
|
// Add noise dots
|
|
49
40
|
for (let i = 0; i < 200; i++) {
|
|
50
41
|
ctx.fillStyle = 'black';
|
|
51
42
|
ctx.fillRect(Math.floor(Math.random() * width), Math.floor(Math.random() * height), 1.2, 1.2);
|
|
52
43
|
}
|
|
53
|
-
|
|
54
44
|
return canvas.toBuffer('image/png');
|
|
55
|
-
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=captcha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../../src/modules/v3/captcha.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { checkRateLimit } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Manages a chat system with public and private messages
|
|
4
|
+
*
|
|
5
|
+
* @param {string} action - The action to perform ('message' or 'private')
|
|
6
|
+
* @param {Object} params - The parameters for the action
|
|
7
|
+
* @returns {Object} - The result of the action
|
|
8
|
+
* @throws {Error} - If parameters are invalid
|
|
9
|
+
*/
|
|
10
|
+
export default function chat(action, params = {}) {
|
|
11
|
+
// In-memory storage
|
|
12
|
+
const storage = params.storage || {};
|
|
13
|
+
// Initialize storage
|
|
14
|
+
storage.messages ??= [];
|
|
15
|
+
storage.privateChats ??= {};
|
|
16
|
+
storage.sessions ??= {};
|
|
17
|
+
storage.rateLimits ??= {};
|
|
18
|
+
// Reference the storage properties
|
|
19
|
+
const { messages, privateChats, sessions, rateLimits } = storage;
|
|
20
|
+
// Input validation for common parameters
|
|
21
|
+
if (!params.username)
|
|
22
|
+
throw new Error('Please provide a username');
|
|
23
|
+
const u = params.username.toLowerCase();
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
// Rate limiting
|
|
26
|
+
checkRateLimit(rateLimits, u, now);
|
|
27
|
+
// Handle different actions
|
|
28
|
+
if (action === 'message') {
|
|
29
|
+
return sendMessage(params, messages, privateChats, sessions, u, now);
|
|
30
|
+
}
|
|
31
|
+
else if (action === 'private') {
|
|
32
|
+
return getPrivateChat(params, privateChats);
|
|
33
|
+
}
|
|
34
|
+
else if (action === 'fetch') {
|
|
35
|
+
return fetchMessages(messages);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
throw new Error('Invalid action. Use "message", "private", or "fetch"');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Send a new message
|
|
43
|
+
*/
|
|
44
|
+
function sendMessage(params, messages, privateChats, sessions, u, now) {
|
|
45
|
+
const { message, session, token } = params;
|
|
46
|
+
// Input validation for message action
|
|
47
|
+
if (!message)
|
|
48
|
+
throw new Error('Please provide a message');
|
|
49
|
+
if (!session)
|
|
50
|
+
throw new Error('Please provide a valid session ID');
|
|
51
|
+
// Session validation
|
|
52
|
+
if (sessions[u] && sessions[u].user !== session) {
|
|
53
|
+
throw new Error('Session ID mismatch');
|
|
54
|
+
}
|
|
55
|
+
// Create message object
|
|
56
|
+
const msg = {
|
|
57
|
+
username: params.username,
|
|
58
|
+
message,
|
|
59
|
+
timestamp: params.timestamp || new Date().toISOString(),
|
|
60
|
+
};
|
|
61
|
+
// Store message based on whether it's private or public
|
|
62
|
+
if (token) {
|
|
63
|
+
privateChats[token] = privateChats[token] || [];
|
|
64
|
+
privateChats[token].push(msg);
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
delete privateChats[token];
|
|
67
|
+
}, 3600000);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
messages.push(msg);
|
|
71
|
+
setTimeout(() => messages.splice(messages.indexOf(msg), 1), 3600000);
|
|
72
|
+
}
|
|
73
|
+
// Update session
|
|
74
|
+
sessions[u] = sessions[u] || { user: session, last: now };
|
|
75
|
+
sessions[u].last = now;
|
|
76
|
+
setTimeout(() => {
|
|
77
|
+
if (now - sessions[u].last >= 3600000)
|
|
78
|
+
delete sessions[u];
|
|
79
|
+
}, 3600000);
|
|
80
|
+
return { message: 'Message sent successfully' };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get private chat messages
|
|
84
|
+
*/
|
|
85
|
+
function getPrivateChat(params, privateChats) {
|
|
86
|
+
const { token } = params;
|
|
87
|
+
// Input validation for private action
|
|
88
|
+
if (!token)
|
|
89
|
+
throw new Error('Please provide a valid token');
|
|
90
|
+
// Return messages if token exists
|
|
91
|
+
if (privateChats[token])
|
|
92
|
+
return privateChats[token];
|
|
93
|
+
throw new Error('Invalid or expired token.');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Fetch all public messages
|
|
97
|
+
*/
|
|
98
|
+
function fetchMessages(messages) {
|
|
99
|
+
if (messages.length > 0)
|
|
100
|
+
return messages;
|
|
101
|
+
throw new Error('No messages stored.');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/modules/v3/chat.js"],"names":[],"mappings":"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"}
|
|
@@ -5,37 +5,36 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export default function color() {
|
|
7
7
|
const r = Math.floor(Math.random() * 256), g = Math.floor(Math.random() * 256), b = Math.floor(Math.random() * 256);
|
|
8
|
-
|
|
9
8
|
const hsl = (() => {
|
|
10
9
|
const r1 = r / 255, g1 = g / 255, b1 = b / 255, max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1), l = (max + min) / 2;
|
|
11
|
-
if (max === min)
|
|
10
|
+
if (max === min)
|
|
11
|
+
return [0, 0, l * 100];
|
|
12
12
|
const d = max - min, s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
13
13
|
let h = { [r1]: (g1 - b1) / d + (g1 < b1 ? 6 : 0), [g1]: (b1 - r1) / d + 2, [b1]: (r1 - g1) / d + 4 }[max];
|
|
14
|
-
return [h * 60 % 360, s * 100, l * 100];
|
|
14
|
+
return [(h * 60) % 360, s * 100, l * 100];
|
|
15
15
|
})();
|
|
16
|
-
|
|
17
16
|
const hsv = (() => {
|
|
18
17
|
const max = Math.max(r, g, b), min = Math.min(r, g, b), v = max / 255, s = max ? (max - min) / max : 0;
|
|
19
|
-
let h = max === min
|
|
20
|
-
|
|
18
|
+
let h = max === min
|
|
19
|
+
? 0
|
|
20
|
+
: { [r]: (g - b) / (max - min), [g]: 2 + (b - r) / (max - min), [b]: 4 + (r - g) / (max - min) }[max];
|
|
21
|
+
return [(h * 60) % 360, s * 100, v * 100];
|
|
21
22
|
})();
|
|
22
|
-
|
|
23
23
|
const hwb = (() => {
|
|
24
24
|
const [h] = hsv, whiteness = Math.min(r, g, b) / 255, blackness = 1 - Math.max(r, g, b) / 255;
|
|
25
25
|
return [h, whiteness * 100, blackness * 100];
|
|
26
26
|
})();
|
|
27
|
-
|
|
28
27
|
const cmyk = (() => {
|
|
29
28
|
const k = 1 - Math.max(r, g, b) / 255, c = (1 - r / 255 - k) / (1 - k) || 0, m = (1 - g / 255 - k) / (1 - k) || 0, y = (1 - b / 255 - k) / (1 - k) || 0;
|
|
30
|
-
return [c, m, y, k].map(x => x * 100);
|
|
29
|
+
return [c, m, y, k].map((x) => x * 100);
|
|
31
30
|
})();
|
|
32
|
-
|
|
33
31
|
return {
|
|
34
|
-
hex: `#${[r, g, b].map(x => x.toString(16).padStart(2, '0')).join('')}`,
|
|
32
|
+
hex: `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`,
|
|
35
33
|
rgb: `rgb(${r}, ${g}, ${b})`,
|
|
36
34
|
hsl: `hsl(${hsl[0].toFixed(1)}, ${hsl[1].toFixed(1)}%, ${hsl[2].toFixed(1)}%)`,
|
|
37
35
|
hsv: `hsv(${hsv[0].toFixed(1)}, ${hsv[1].toFixed(1)}%, ${hsv[2].toFixed(1)}%)`,
|
|
38
36
|
hwb: `hwb(${hwb[0].toFixed(1)}, ${hwb[1].toFixed(1)}%, ${hwb[2].toFixed(1)}%)`,
|
|
39
|
-
cmyk: `cmyk(${cmyk.map(x => x.toFixed(1)).join('%, ')}%)
|
|
37
|
+
cmyk: `cmyk(${cmyk.map((x) => x.toFixed(1)).join('%, ')}%)`,
|
|
40
38
|
};
|
|
41
|
-
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/modules/v3/color.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts values between different temperature units
|
|
3
|
+
*
|
|
4
|
+
* @param {number|string} value - The value to convert
|
|
5
|
+
* @param {string} from - The source unit (celsius, fahrenheit, or kelvin)
|
|
6
|
+
* @param {string} to - The target unit (celsius, fahrenheit, or kelvin)
|
|
7
|
+
* @returns {Object} - Object containing the conversion details
|
|
8
|
+
* @throws {Error} - If conversion parameters are invalid
|
|
9
|
+
*/
|
|
10
|
+
export default function convert(value, from, to) {
|
|
11
|
+
const conversions = {
|
|
12
|
+
celsius: {
|
|
13
|
+
fahrenheit: (val) => (val * 9) / 5 + 32,
|
|
14
|
+
kelvin: (val) => val + 273.15,
|
|
15
|
+
},
|
|
16
|
+
fahrenheit: {
|
|
17
|
+
celsius: (val) => ((val - 32) * 5) / 9,
|
|
18
|
+
kelvin: (val) => ((val - 32) * 5) / 9 + 273.15,
|
|
19
|
+
},
|
|
20
|
+
kelvin: {
|
|
21
|
+
celsius: (val) => val - 273.15,
|
|
22
|
+
fahrenheit: (val) => ((val - 273.15) * 9) / 5 + 32,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
const convert = conversions[from.toLowerCase()]?.[to.toLowerCase()];
|
|
26
|
+
if (!convert)
|
|
27
|
+
throw new Error('Invalid conversion unit');
|
|
28
|
+
if (isNaN(value))
|
|
29
|
+
throw new Error('Value must be a number');
|
|
30
|
+
if (value < -273.15)
|
|
31
|
+
throw new Error('Value must be greater than absolute zero');
|
|
32
|
+
if (value > 1e6)
|
|
33
|
+
throw new Error('Value must be less than 1,000,000');
|
|
34
|
+
return {
|
|
35
|
+
from,
|
|
36
|
+
to,
|
|
37
|
+
value: parseFloat(value),
|
|
38
|
+
result: convert(parseFloat(value)),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/modules/v3/convert.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IAC3C,MAAM,WAAW,GAAG;QAChB,OAAO,EAAE;YACL,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;YACvC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM;SAChC;QACD,UAAU,EAAE;YACR,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YACtC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;SACjD;QACD,MAAM,EAAE;YACJ,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM;YAC9B,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;SACrD;KACJ,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAEpE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5D,IAAI,KAAK,GAAG,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACjF,IAAI,KAAK,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEtE,OAAO;QACH,IAAI;QACJ,EAAE;QACF,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACrC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { random, genIP } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generate random domain information
|
|
4
|
+
*
|
|
5
|
+
* @returns {Object} Domain details including DNS, hosting, and SEO metrics
|
|
6
|
+
*/
|
|
7
|
+
export default function domain() {
|
|
8
|
+
const subdomains = [
|
|
9
|
+
'fr.',
|
|
10
|
+
'en.',
|
|
11
|
+
'docs.',
|
|
12
|
+
'api.',
|
|
13
|
+
'projects.',
|
|
14
|
+
'app.',
|
|
15
|
+
'web.',
|
|
16
|
+
'info.',
|
|
17
|
+
'dev.',
|
|
18
|
+
'shop.',
|
|
19
|
+
'blog.',
|
|
20
|
+
'support.',
|
|
21
|
+
'mail.',
|
|
22
|
+
'forum.',
|
|
23
|
+
];
|
|
24
|
+
const domains = [
|
|
25
|
+
'example',
|
|
26
|
+
'site',
|
|
27
|
+
'test',
|
|
28
|
+
'demo',
|
|
29
|
+
'page',
|
|
30
|
+
'store',
|
|
31
|
+
'portfolio',
|
|
32
|
+
'platform',
|
|
33
|
+
'hub',
|
|
34
|
+
'network',
|
|
35
|
+
'service',
|
|
36
|
+
'cloud',
|
|
37
|
+
'solutions',
|
|
38
|
+
'company',
|
|
39
|
+
];
|
|
40
|
+
const tlds = [
|
|
41
|
+
'.com',
|
|
42
|
+
'.fr',
|
|
43
|
+
'.eu',
|
|
44
|
+
'.dev',
|
|
45
|
+
'.net',
|
|
46
|
+
'.org',
|
|
47
|
+
'.io',
|
|
48
|
+
'.tech',
|
|
49
|
+
'.biz',
|
|
50
|
+
'.info',
|
|
51
|
+
'.co',
|
|
52
|
+
'.app',
|
|
53
|
+
'.store',
|
|
54
|
+
'.online',
|
|
55
|
+
'.shop',
|
|
56
|
+
'.tv',
|
|
57
|
+
];
|
|
58
|
+
const domain = `${random(domains)}${random(tlds)}`;
|
|
59
|
+
const fulldomain = `${random(subdomains)}${domain}`;
|
|
60
|
+
const ips = Array.from({ length: Math.floor(Math.random() * 3) + 1 }, genIP);
|
|
61
|
+
const dns = Array.from({ length: Math.floor(Math.random() * 5) + 1 }, genIP);
|
|
62
|
+
return {
|
|
63
|
+
domain,
|
|
64
|
+
full_domain: fulldomain,
|
|
65
|
+
ip_address: ips,
|
|
66
|
+
ssl_certified: Math.random() > 0.5,
|
|
67
|
+
hosting_provider: random(['AWS', 'Bluehost', 'DigitalOcean', 'GitHub', 'HostGator', 'Render', 'SiteGround']),
|
|
68
|
+
dns_servers: dns,
|
|
69
|
+
dns_provider: random(['AWS Route 53', 'Cloudflare', 'GoDaddy', 'Google DNS', 'Namecheap']),
|
|
70
|
+
traffic: `${Math.floor(Math.random() * 10000)} visits/day`,
|
|
71
|
+
seo_score: Math.floor(Math.random() * 100),
|
|
72
|
+
page_rank: Math.floor(Math.random() * 10),
|
|
73
|
+
country: random(['Australia', 'Canada', 'France', 'Germany', 'India', 'Japan', 'UK', 'USA']),
|
|
74
|
+
website_type: random(['Blog', 'Community', 'Corporate', 'Educational', 'E-commerce', 'Personal', 'Portfolio']),
|
|
75
|
+
random_name: domain.split('.')[0],
|
|
76
|
+
random_subdomain: fulldomain.split('.')[0],
|
|
77
|
+
random_tld: domain.split('.').pop(),
|
|
78
|
+
backlinks_count: Math.floor(Math.random() * 1000),
|
|
79
|
+
creation_date: new Date(Date.now() - Math.floor(Math.random() * 10000000000)).toISOString(),
|
|
80
|
+
expiration_date: new Date(Date.now() + Math.floor(Math.random() * 10000000000)).toISOString(),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/modules/v3/domain.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM;IAC1B,MAAM,UAAU,GAAG;QACf,KAAK;QACL,KAAK;QACL,OAAO;QACP,MAAM;QACN,WAAW;QACX,MAAM;QACN,MAAM;QACN,OAAO;QACP,MAAM;QACN,OAAO;QACP,OAAO;QACP,UAAU;QACV,OAAO;QACP,QAAQ;KACX,CAAC;IACF,MAAM,OAAO,GAAG;QACZ,SAAS;QACT,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,OAAO;QACP,WAAW;QACX,UAAU;QACV,KAAK;QACL,SAAS;QACT,SAAS;QACT,OAAO;QACP,WAAW;QACX,SAAS;KACZ,CAAC;IACF,MAAM,IAAI,GAAG;QACT,MAAM;QACN,KAAK;QACL,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,KAAK;QACL,OAAO;QACP,MAAM;QACN,OAAO;QACP,KAAK;QACL,MAAM;QACN,QAAQ;QACR,SAAS;QACT,OAAO;QACP,KAAK;KACR,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAEpD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE7E,OAAO;QACH,MAAM;QACN,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;QAClC,gBAAgB,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5G,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,MAAM,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1F,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa;QAC1D,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QAC1C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5F,YAAY,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9G,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QACnC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QACjD,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE;QAC3F,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE;KAChG,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getHashes, createHash } from 'crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Generate a hash of text using the specified algorithm
|
|
4
|
+
*
|
|
5
|
+
* @param {string} text - The text to hash
|
|
6
|
+
* @param {string} method - The hash algorithm to use
|
|
7
|
+
* @returns {Object} Object containing the method and resulting hash
|
|
8
|
+
*/
|
|
9
|
+
export default function hash(text, method) {
|
|
10
|
+
const methods = getHashes();
|
|
11
|
+
if (!methods.includes(method))
|
|
12
|
+
return { error: `Unsupported method. Use one of: ${methods.join(', ')}` };
|
|
13
|
+
const hash = createHash(method).update(text).digest('hex');
|
|
14
|
+
return { method, hash };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/modules/v3/hash.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,IAAI,EAAE,MAAM;IACrC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,mCAAmC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAEzG,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC"}
|