@20syldev/api 4.7.0 → 4.8.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/README.md +3 -3
- package/dist/app.js +6 -6
- package/dist/app.js.map +1 -1
- package/dist/config/env.js.map +1 -1
- package/dist/config/versions.js +22 -3
- package/dist/config/versions.js.map +1 -1
- package/dist/constants.js +27 -12
- package/dist/constants.js.map +1 -1
- package/dist/middleware/error.js +2 -2
- package/dist/middleware/error.js.map +1 -1
- package/dist/middleware/logger.js.map +1 -1
- package/dist/middleware/ratelimit.js +2 -2
- package/dist/middleware/ratelimit.js.map +1 -1
- package/dist/middleware/version.js.map +1 -1
- package/dist/modules/v3.js +1 -1
- package/dist/modules/v3.js.map +1 -1
- package/dist/modules/v4/address.js +381 -0
- package/dist/modules/v4/address.js.map +1 -0
- package/dist/modules/v4/agent.js +92 -0
- package/dist/modules/v4/agent.js.map +1 -0
- package/dist/modules/v4/algorithms.js +79 -0
- package/dist/modules/v4/algorithms.js.map +1 -1
- package/dist/modules/v4/avatar.js +136 -0
- package/dist/modules/v4/avatar.js.map +1 -0
- package/dist/modules/v4/barcode.js +440 -0
- package/dist/modules/v4/barcode.js.map +1 -0
- package/dist/modules/v4/captcha.js +7 -0
- package/dist/modules/v4/captcha.js.map +1 -1
- package/dist/modules/v4/chat.js +9 -1
- package/dist/modules/v4/chat.js.map +1 -1
- package/dist/modules/v4/color.js +8 -1
- package/dist/modules/v4/color.js.map +1 -1
- package/dist/modules/v4/convert.js +9 -0
- package/dist/modules/v4/convert.js.map +1 -1
- package/dist/modules/v4/credit.js +104 -0
- package/dist/modules/v4/credit.js.map +1 -0
- package/dist/modules/v4/cron.js +202 -0
- package/dist/modules/v4/cron.js.map +1 -0
- package/dist/modules/v4/dice.js +7 -0
- package/dist/modules/v4/dice.js.map +1 -1
- package/dist/modules/v4/domain.js +6 -1
- package/dist/modules/v4/domain.js.map +1 -1
- package/dist/modules/v4/encode.js +71 -0
- package/dist/modules/v4/encode.js.map +1 -1
- package/dist/modules/v4/geo.js +11 -1
- package/dist/modules/v4/geo.js.map +1 -1
- package/dist/modules/v4/hash.js +10 -1
- package/dist/modules/v4/hash.js.map +1 -1
- package/dist/modules/v4/hyperplanning.js +9 -1
- package/dist/modules/v4/hyperplanning.js.map +1 -1
- package/dist/modules/v4/ip.js +132 -0
- package/dist/modules/v4/ip.js.map +1 -0
- package/dist/modules/v4/levenshtein.js +8 -0
- package/dist/modules/v4/levenshtein.js.map +1 -1
- package/dist/modules/v4/palette.js +9 -1
- package/dist/modules/v4/palette.js.map +1 -1
- package/dist/modules/v4/password.js +343 -0
- package/dist/modules/v4/password.js.map +1 -0
- package/dist/modules/v4/personal.js +14 -18
- package/dist/modules/v4/personal.js.map +1 -1
- package/dist/modules/v4/placeholder.js +8 -0
- package/dist/modules/v4/placeholder.js.map +1 -1
- package/dist/modules/v4/qrcode.js +10 -3
- package/dist/modules/v4/qrcode.js.map +1 -1
- package/dist/modules/v4/regex.js +48 -0
- package/dist/modules/v4/regex.js.map +1 -0
- package/dist/modules/v4/statistics.js +7 -0
- package/dist/modules/v4/statistics.js.map +1 -1
- package/dist/modules/v4/text.js +30 -0
- package/dist/modules/v4/text.js.map +1 -1
- package/dist/modules/v4/tic_tac_toe.js +9 -1
- package/dist/modules/v4/tic_tac_toe.js.map +1 -1
- package/dist/modules/v4/time.js +62 -11
- package/dist/modules/v4/time.js.map +1 -1
- package/dist/modules/v4/token.js +17 -8
- package/dist/modules/v4/token.js.map +1 -1
- package/dist/modules/v4/username.js +5 -0
- package/dist/modules/v4/username.js.map +1 -1
- package/dist/modules/v4/validate.js +21 -0
- package/dist/modules/v4/validate.js.map +1 -1
- package/dist/modules/v4.js +10 -1
- package/dist/modules/v4.js.map +1 -1
- package/dist/routes/delete.js.map +1 -1
- package/dist/routes/get.js +208 -48
- package/dist/routes/get.js.map +1 -1
- package/dist/routes/index.js +2 -2
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/patch.js.map +1 -1
- package/dist/routes/post.js +2 -2
- package/dist/routes/post.js.map +1 -1
- package/dist/utils/response.js.map +1 -1
- package/package.json +1 -1
- package/src/config/versions.ts +3 -1
- package/src/constants.ts +27 -12
- package/src/modules/v4/address.ts +6 -7
- package/src/modules/v4/cron.ts +221 -0
- package/src/modules/v4/geo.ts +2 -1
- package/src/modules/v4/password.ts +5 -7
- package/src/modules/v4/qrcode.ts +2 -2
- package/src/modules/v4/regex.ts +67 -0
- package/src/modules/v4/time.ts +63 -17
- package/src/modules/v4.ts +2 -0
- package/src/routes/get.ts +67 -46
- package/tests/integration/api.test.ts +56 -0
- package/tests/unit/cron.test.ts +110 -0
- package/tests/unit/regex.test.ts +95 -0
- package/tests/unit/time.test.ts +47 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { MAX_ADDRESS_COUNT } from '../../constants.js';
|
|
2
|
+
import { random, randomNumber } from '../../utils/helpers.js';
|
|
3
|
+
function randomChar(chars) {
|
|
4
|
+
return chars[Math.floor(Math.random() * chars.length)];
|
|
5
|
+
}
|
|
6
|
+
const ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
7
|
+
const countries = {
|
|
8
|
+
fr: {
|
|
9
|
+
name: 'France',
|
|
10
|
+
streetTypes: ['Rue', 'Avenue', 'Boulevard', 'Allée', 'Impasse', 'Place', 'Chemin', 'Route', 'Voie', 'Passage'],
|
|
11
|
+
streetNames: [
|
|
12
|
+
'de la Paix',
|
|
13
|
+
'Victor Hugo',
|
|
14
|
+
'Jean Jaurès',
|
|
15
|
+
'de la République',
|
|
16
|
+
'du Général de Gaulle',
|
|
17
|
+
'de la Liberté',
|
|
18
|
+
'des Fleurs',
|
|
19
|
+
'du Moulin',
|
|
20
|
+
'de la Forêt',
|
|
21
|
+
'des Lilas',
|
|
22
|
+
'du Château',
|
|
23
|
+
'de la Mairie',
|
|
24
|
+
'de la Gare',
|
|
25
|
+
'du Commerce',
|
|
26
|
+
'de la Fontaine',
|
|
27
|
+
'de la Croix',
|
|
28
|
+
'des Vignes',
|
|
29
|
+
'du Marché',
|
|
30
|
+
"de l'Église",
|
|
31
|
+
'des Acacias',
|
|
32
|
+
],
|
|
33
|
+
cities: [
|
|
34
|
+
'Paris',
|
|
35
|
+
'Lyon',
|
|
36
|
+
'Marseille',
|
|
37
|
+
'Toulouse',
|
|
38
|
+
'Nice',
|
|
39
|
+
'Nantes',
|
|
40
|
+
'Strasbourg',
|
|
41
|
+
'Montpellier',
|
|
42
|
+
'Bordeaux',
|
|
43
|
+
'Lille',
|
|
44
|
+
'Rennes',
|
|
45
|
+
'Reims',
|
|
46
|
+
'Le Havre',
|
|
47
|
+
'Saint-Étienne',
|
|
48
|
+
'Toulon',
|
|
49
|
+
'Grenoble',
|
|
50
|
+
'Dijon',
|
|
51
|
+
'Angers',
|
|
52
|
+
'Nîmes',
|
|
53
|
+
'Villeurbanne',
|
|
54
|
+
],
|
|
55
|
+
regions: [
|
|
56
|
+
'Île-de-France',
|
|
57
|
+
'Auvergne-Rhône-Alpes',
|
|
58
|
+
"Provence-Alpes-Côte d'Azur",
|
|
59
|
+
'Occitanie',
|
|
60
|
+
'Hauts-de-France',
|
|
61
|
+
'Nouvelle-Aquitaine',
|
|
62
|
+
'Grand Est',
|
|
63
|
+
'Pays de la Loire',
|
|
64
|
+
'Bretagne',
|
|
65
|
+
'Normandie',
|
|
66
|
+
'Bourgogne-Franche-Comté',
|
|
67
|
+
'Centre-Val de Loire',
|
|
68
|
+
],
|
|
69
|
+
zipFormat: () => String(randomNumber(10000, 99999)).padStart(5, '0'),
|
|
70
|
+
},
|
|
71
|
+
us: {
|
|
72
|
+
name: 'United States',
|
|
73
|
+
streetTypes: ['Street', 'Avenue', 'Boulevard', 'Drive', 'Road', 'Lane', 'Court', 'Way', 'Place', 'Circle'],
|
|
74
|
+
streetNames: [
|
|
75
|
+
'Main',
|
|
76
|
+
'Oak',
|
|
77
|
+
'Maple',
|
|
78
|
+
'Cedar',
|
|
79
|
+
'Pine',
|
|
80
|
+
'Elm',
|
|
81
|
+
'Washington',
|
|
82
|
+
'Lincoln',
|
|
83
|
+
'Park',
|
|
84
|
+
'Lake',
|
|
85
|
+
'Hill',
|
|
86
|
+
'River',
|
|
87
|
+
'Sunset',
|
|
88
|
+
'Forest',
|
|
89
|
+
'Meadow',
|
|
90
|
+
'Valley',
|
|
91
|
+
'Highland',
|
|
92
|
+
'Willow',
|
|
93
|
+
'Spring',
|
|
94
|
+
'Church',
|
|
95
|
+
],
|
|
96
|
+
cities: [
|
|
97
|
+
'New York',
|
|
98
|
+
'Los Angeles',
|
|
99
|
+
'Chicago',
|
|
100
|
+
'Houston',
|
|
101
|
+
'Phoenix',
|
|
102
|
+
'Philadelphia',
|
|
103
|
+
'San Antonio',
|
|
104
|
+
'San Diego',
|
|
105
|
+
'Dallas',
|
|
106
|
+
'San Jose',
|
|
107
|
+
'Austin',
|
|
108
|
+
'Jacksonville',
|
|
109
|
+
'Fort Worth',
|
|
110
|
+
'Columbus',
|
|
111
|
+
'Charlotte',
|
|
112
|
+
'Indianapolis',
|
|
113
|
+
'San Francisco',
|
|
114
|
+
'Seattle',
|
|
115
|
+
'Denver',
|
|
116
|
+
'Nashville',
|
|
117
|
+
],
|
|
118
|
+
regions: [
|
|
119
|
+
'California',
|
|
120
|
+
'Texas',
|
|
121
|
+
'Florida',
|
|
122
|
+
'New York',
|
|
123
|
+
'Pennsylvania',
|
|
124
|
+
'Illinois',
|
|
125
|
+
'Ohio',
|
|
126
|
+
'Georgia',
|
|
127
|
+
'North Carolina',
|
|
128
|
+
'Michigan',
|
|
129
|
+
'New Jersey',
|
|
130
|
+
'Virginia',
|
|
131
|
+
'Washington',
|
|
132
|
+
'Arizona',
|
|
133
|
+
'Massachusetts',
|
|
134
|
+
'Tennessee',
|
|
135
|
+
'Indiana',
|
|
136
|
+
'Colorado',
|
|
137
|
+
'Missouri',
|
|
138
|
+
'Maryland',
|
|
139
|
+
],
|
|
140
|
+
zipFormat: () => String(randomNumber(10000, 99999)).padStart(5, '0'),
|
|
141
|
+
},
|
|
142
|
+
uk: {
|
|
143
|
+
name: 'United Kingdom',
|
|
144
|
+
streetTypes: ['Street', 'Road', 'Avenue', 'Lane', 'Close', 'Drive', 'Way', 'Court', 'Grove', 'Place'],
|
|
145
|
+
streetNames: [
|
|
146
|
+
'High',
|
|
147
|
+
'Church',
|
|
148
|
+
'Station',
|
|
149
|
+
'Park',
|
|
150
|
+
'Manor',
|
|
151
|
+
'Mill',
|
|
152
|
+
'Victoria',
|
|
153
|
+
'King',
|
|
154
|
+
'Queen',
|
|
155
|
+
'Albert',
|
|
156
|
+
'George',
|
|
157
|
+
'York',
|
|
158
|
+
'Oxford',
|
|
159
|
+
'Cambridge',
|
|
160
|
+
'Windsor',
|
|
161
|
+
'Richmond',
|
|
162
|
+
'Elm',
|
|
163
|
+
'Oak',
|
|
164
|
+
'Ash',
|
|
165
|
+
'Rose',
|
|
166
|
+
],
|
|
167
|
+
cities: [
|
|
168
|
+
'London',
|
|
169
|
+
'Birmingham',
|
|
170
|
+
'Manchester',
|
|
171
|
+
'Glasgow',
|
|
172
|
+
'Liverpool',
|
|
173
|
+
'Bristol',
|
|
174
|
+
'Sheffield',
|
|
175
|
+
'Leeds',
|
|
176
|
+
'Edinburgh',
|
|
177
|
+
'Leicester',
|
|
178
|
+
'Coventry',
|
|
179
|
+
'Bradford',
|
|
180
|
+
'Cardiff',
|
|
181
|
+
'Belfast',
|
|
182
|
+
'Nottingham',
|
|
183
|
+
'Kingston upon Hull',
|
|
184
|
+
'Newcastle',
|
|
185
|
+
'Stoke-on-Trent',
|
|
186
|
+
'Southampton',
|
|
187
|
+
'Derby',
|
|
188
|
+
],
|
|
189
|
+
regions: [
|
|
190
|
+
'England',
|
|
191
|
+
'Scotland',
|
|
192
|
+
'Wales',
|
|
193
|
+
'Northern Ireland',
|
|
194
|
+
'Greater London',
|
|
195
|
+
'South East',
|
|
196
|
+
'North West',
|
|
197
|
+
'East of England',
|
|
198
|
+
'West Midlands',
|
|
199
|
+
'South West',
|
|
200
|
+
'Yorkshire',
|
|
201
|
+
'East Midlands',
|
|
202
|
+
'North East',
|
|
203
|
+
],
|
|
204
|
+
zipFormat: () => `${randomChar(ALPHA)}${randomChar(ALPHA)}${randomNumber(1, 9)} ${randomNumber(1, 9)}${randomChar(ALPHA)}${randomChar(ALPHA)}`,
|
|
205
|
+
},
|
|
206
|
+
de: {
|
|
207
|
+
name: 'Germany',
|
|
208
|
+
streetTypes: ['Straße', 'Allee', 'Weg', 'Platz', 'Gasse', 'Ring', 'Damm', 'Ufer', 'Stieg', 'Pfad'],
|
|
209
|
+
streetNames: [
|
|
210
|
+
'Haupt',
|
|
211
|
+
'Bahnhof',
|
|
212
|
+
'Schul',
|
|
213
|
+
'Kirch',
|
|
214
|
+
'Garten',
|
|
215
|
+
'Berg',
|
|
216
|
+
'Wald',
|
|
217
|
+
'Wiesen',
|
|
218
|
+
'Tal',
|
|
219
|
+
'See',
|
|
220
|
+
'Bismarck',
|
|
221
|
+
'Goethe',
|
|
222
|
+
'Schiller',
|
|
223
|
+
'Kant',
|
|
224
|
+
'Hegel',
|
|
225
|
+
'Mozart',
|
|
226
|
+
'Beethoven',
|
|
227
|
+
'Bach',
|
|
228
|
+
'Brahms',
|
|
229
|
+
'Handel',
|
|
230
|
+
],
|
|
231
|
+
cities: [
|
|
232
|
+
'Berlin',
|
|
233
|
+
'Hamburg',
|
|
234
|
+
'Munich',
|
|
235
|
+
'Cologne',
|
|
236
|
+
'Frankfurt',
|
|
237
|
+
'Stuttgart',
|
|
238
|
+
'Düsseldorf',
|
|
239
|
+
'Leipzig',
|
|
240
|
+
'Dortmund',
|
|
241
|
+
'Essen',
|
|
242
|
+
'Bremen',
|
|
243
|
+
'Dresden',
|
|
244
|
+
'Hanover',
|
|
245
|
+
'Nuremberg',
|
|
246
|
+
'Duisburg',
|
|
247
|
+
'Bochum',
|
|
248
|
+
'Wuppertal',
|
|
249
|
+
'Bielefeld',
|
|
250
|
+
'Bonn',
|
|
251
|
+
'Münster',
|
|
252
|
+
],
|
|
253
|
+
regions: [
|
|
254
|
+
'Bayern',
|
|
255
|
+
'Nordrhein-Westfalen',
|
|
256
|
+
'Baden-Württemberg',
|
|
257
|
+
'Niedersachsen',
|
|
258
|
+
'Hessen',
|
|
259
|
+
'Sachsen',
|
|
260
|
+
'Rheinland-Pfalz',
|
|
261
|
+
'Berlin',
|
|
262
|
+
'Schleswig-Holstein',
|
|
263
|
+
'Brandenburg',
|
|
264
|
+
'Sachsen-Anhalt',
|
|
265
|
+
'Thüringen',
|
|
266
|
+
'Hamburg',
|
|
267
|
+
'Mecklenburg-Vorpommern',
|
|
268
|
+
'Bremen',
|
|
269
|
+
'Saarland',
|
|
270
|
+
],
|
|
271
|
+
zipFormat: () => String(randomNumber(10000, 99999)).padStart(5, '0'),
|
|
272
|
+
},
|
|
273
|
+
es: {
|
|
274
|
+
name: 'Spain',
|
|
275
|
+
streetTypes: [
|
|
276
|
+
'Calle',
|
|
277
|
+
'Avenida',
|
|
278
|
+
'Plaza',
|
|
279
|
+
'Paseo',
|
|
280
|
+
'Rambla',
|
|
281
|
+
'Carretera',
|
|
282
|
+
'Camino',
|
|
283
|
+
'Vía',
|
|
284
|
+
'Travesía',
|
|
285
|
+
'Callejón',
|
|
286
|
+
],
|
|
287
|
+
streetNames: [
|
|
288
|
+
'Mayor',
|
|
289
|
+
'Real',
|
|
290
|
+
'Nueva',
|
|
291
|
+
'del Sol',
|
|
292
|
+
'de la Luna',
|
|
293
|
+
'del Rey',
|
|
294
|
+
'de la Reina',
|
|
295
|
+
'del Mar',
|
|
296
|
+
'de la Paz',
|
|
297
|
+
'de la Victoria',
|
|
298
|
+
'Cervantes',
|
|
299
|
+
'Goya',
|
|
300
|
+
'Velázquez',
|
|
301
|
+
'Picasso',
|
|
302
|
+
'Dalí',
|
|
303
|
+
'de España',
|
|
304
|
+
'de Colón',
|
|
305
|
+
'de la Constitución',
|
|
306
|
+
'del Prado',
|
|
307
|
+
'de las Flores',
|
|
308
|
+
],
|
|
309
|
+
cities: [
|
|
310
|
+
'Madrid',
|
|
311
|
+
'Barcelona',
|
|
312
|
+
'Valencia',
|
|
313
|
+
'Seville',
|
|
314
|
+
'Zaragoza',
|
|
315
|
+
'Málaga',
|
|
316
|
+
'Murcia',
|
|
317
|
+
'Palma',
|
|
318
|
+
'Las Palmas',
|
|
319
|
+
'Bilbao',
|
|
320
|
+
'Alicante',
|
|
321
|
+
'Córdoba',
|
|
322
|
+
'Valladolid',
|
|
323
|
+
'Vigo',
|
|
324
|
+
'Gijón',
|
|
325
|
+
'Hospitalet',
|
|
326
|
+
'A Coruña',
|
|
327
|
+
'Granada',
|
|
328
|
+
'Vitoria',
|
|
329
|
+
'Elche',
|
|
330
|
+
],
|
|
331
|
+
regions: [
|
|
332
|
+
'Andalucía',
|
|
333
|
+
'Cataluña',
|
|
334
|
+
'Madrid',
|
|
335
|
+
'Comunidad Valenciana',
|
|
336
|
+
'Galicia',
|
|
337
|
+
'Castilla y León',
|
|
338
|
+
'País Vasco',
|
|
339
|
+
'Castilla-La Mancha',
|
|
340
|
+
'Canarias',
|
|
341
|
+
'Murcia',
|
|
342
|
+
'Aragón',
|
|
343
|
+
'Extremadura',
|
|
344
|
+
'Asturias',
|
|
345
|
+
'Navarra',
|
|
346
|
+
'Cantabria',
|
|
347
|
+
'La Rioja',
|
|
348
|
+
'Baleares',
|
|
349
|
+
],
|
|
350
|
+
zipFormat: () => String(randomNumber(10000, 52999)).padStart(5, '0'),
|
|
351
|
+
},
|
|
352
|
+
};
|
|
353
|
+
const COUNTRY_KEYS = Object.keys(countries);
|
|
354
|
+
/**
|
|
355
|
+
* Generates one or more fictional postal addresses for a given country.
|
|
356
|
+
*
|
|
357
|
+
* @param countryCode - Country code: "fr", "us", "uk", "de", or "es" (random if omitted)
|
|
358
|
+
* @param count - Number of addresses to generate (1–10)
|
|
359
|
+
* @returns Array of addresses with street, city, zip, state, country, and countryCode
|
|
360
|
+
* @throws Error if the country code is invalid or count is out of range
|
|
361
|
+
*/
|
|
362
|
+
export default function address(countryCode, count = 1) {
|
|
363
|
+
if (count < 1 || count > MAX_ADDRESS_COUNT) {
|
|
364
|
+
throw new Error(`Count must be between 1 and ${MAX_ADDRESS_COUNT}`);
|
|
365
|
+
}
|
|
366
|
+
const code = (countryCode ?? random(COUNTRY_KEYS)).toLowerCase();
|
|
367
|
+
if (!countries[code]) {
|
|
368
|
+
throw new Error(`Unknown country code "${code}". Supported: ${COUNTRY_KEYS.join(', ')}`);
|
|
369
|
+
}
|
|
370
|
+
const data = countries[code];
|
|
371
|
+
const addresses = Array.from({ length: count }, () => ({
|
|
372
|
+
street: `${randomNumber(1, 200)} ${random(data.streetTypes)} ${random(data.streetNames)}`,
|
|
373
|
+
city: random(data.cities),
|
|
374
|
+
zip: data.zipFormat(),
|
|
375
|
+
state: random(data.regions),
|
|
376
|
+
country: data.name,
|
|
377
|
+
countryCode: code.toUpperCase(),
|
|
378
|
+
}));
|
|
379
|
+
return { addresses };
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/modules/v4/address.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { MAX_STRING_LENGTH } from '../../constants.js';
|
|
2
|
+
const WINDOWS_MAP = {
|
|
3
|
+
'10.0': 'Windows 10/11',
|
|
4
|
+
'6.3': 'Windows 8.1',
|
|
5
|
+
'6.2': 'Windows 8',
|
|
6
|
+
'6.1': 'Windows 7',
|
|
7
|
+
'6.0': 'Windows Vista',
|
|
8
|
+
'5.1': 'Windows XP',
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Parses a User-Agent string and extracts browser, OS, device, engine
|
|
12
|
+
* and bot information.
|
|
13
|
+
*
|
|
14
|
+
* @param ua - The User-Agent string to parse
|
|
15
|
+
* @returns Structured breakdown of the User-Agent
|
|
16
|
+
* @throws Error if the User-Agent string is missing or too long
|
|
17
|
+
*/
|
|
18
|
+
export default function agent(ua) {
|
|
19
|
+
if (!ua || typeof ua !== 'string')
|
|
20
|
+
throw new Error('A User-Agent string is required');
|
|
21
|
+
if (ua.length > MAX_STRING_LENGTH)
|
|
22
|
+
throw new Error(`User-Agent must be less than ${MAX_STRING_LENGTH} characters`);
|
|
23
|
+
const unknown = { name: 'unknown', version: 'unknown', major: 'unknown' };
|
|
24
|
+
const bot = /bot|crawl|spider|lighthouse|headless|prerender|slurp|bingpreview/i.test(ua);
|
|
25
|
+
// Browser — order matters: Edge/Opera before Chrome
|
|
26
|
+
let browser = { ...unknown };
|
|
27
|
+
const browserRules = [
|
|
28
|
+
[/Edg\/(\d+[\d.]*)/i, 'Edge'],
|
|
29
|
+
[/OPR\/(\d+[\d.]*)/i, 'Opera'],
|
|
30
|
+
[/SamsungBrowser\/(\d+[\d.]*)/i, 'Samsung Internet'],
|
|
31
|
+
[/Chrome\/(\d+[\d.]*)/i, 'Chrome'],
|
|
32
|
+
[/Firefox\/(\d+[\d.]*)/i, 'Firefox'],
|
|
33
|
+
[/Version\/([\d.]+).*Safari/i, 'Safari'],
|
|
34
|
+
[/MSIE ([\d.]+)/i, 'Internet Explorer'],
|
|
35
|
+
[/Trident\/.*rv:([\d.]+)/i, 'Internet Explorer'],
|
|
36
|
+
];
|
|
37
|
+
for (const [re, name] of browserRules) {
|
|
38
|
+
const m = ua.match(re);
|
|
39
|
+
if (m) {
|
|
40
|
+
browser = { name, version: m[1], major: m[1].split('.')[0] };
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// OS
|
|
45
|
+
let os = { name: 'unknown', version: 'unknown' };
|
|
46
|
+
const osRules = [
|
|
47
|
+
[/iPhone OS ([\d_]+)/i, (m) => ({ name: 'iOS', version: m[1].replace(/_/g, '.') })],
|
|
48
|
+
[/iPad.*OS ([\d_]+)/i, (m) => ({ name: 'iPadOS', version: m[1].replace(/_/g, '.') })],
|
|
49
|
+
[/Android ([\d.]+)/i, (m) => ({ name: 'Android', version: m[1] })],
|
|
50
|
+
[/Windows NT ([\d.]+)/i, (m) => ({ name: WINDOWS_MAP[m[1]] ?? 'Windows', version: m[1] })],
|
|
51
|
+
[/Mac OS X ([\d_.]+)/i, (m) => ({ name: 'macOS', version: m[1].replace(/_/g, '.') })],
|
|
52
|
+
[/Linux/i, () => ({ name: 'Linux', version: 'unknown' })],
|
|
53
|
+
];
|
|
54
|
+
for (const [re, build] of osRules) {
|
|
55
|
+
const m = ua.match(re);
|
|
56
|
+
if (m) {
|
|
57
|
+
os = build(m);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Device
|
|
62
|
+
const isMobile = /Mobi|Android|iPhone|iPod/i.test(ua) && !/iPad/i.test(ua);
|
|
63
|
+
const isTablet = /iPad/i.test(ua) || (/Android/i.test(ua) && !/Mobile/i.test(ua));
|
|
64
|
+
const deviceType = isMobile ? 'mobile' : isTablet ? 'tablet' : 'desktop';
|
|
65
|
+
let vendor = 'unknown';
|
|
66
|
+
if (/iPhone|iPad|Macintosh/i.test(ua))
|
|
67
|
+
vendor = 'Apple';
|
|
68
|
+
else if (/Samsung/i.test(ua))
|
|
69
|
+
vendor = 'Samsung';
|
|
70
|
+
else if (/Pixel|Nexus/i.test(ua))
|
|
71
|
+
vendor = 'Google';
|
|
72
|
+
else if (/Huawei/i.test(ua))
|
|
73
|
+
vendor = 'Huawei';
|
|
74
|
+
// Engine
|
|
75
|
+
let engine = { name: 'unknown', version: 'unknown' };
|
|
76
|
+
const engineRules = [
|
|
77
|
+
[/AppleWebKit\/([\d.]+)/i, 'WebKit'],
|
|
78
|
+
[/Gecko\/([\d.]+)/i, 'Gecko'],
|
|
79
|
+
[/Trident\/([\d.]+)/i, 'Trident'],
|
|
80
|
+
];
|
|
81
|
+
for (const [re, name] of engineRules) {
|
|
82
|
+
const m = ua.match(re);
|
|
83
|
+
if (m) {
|
|
84
|
+
// Chrome and Edge use Blink, a WebKit fork
|
|
85
|
+
const engineName = name === 'WebKit' && /Chrome|Edg/i.test(ua) ? 'Blink' : name;
|
|
86
|
+
engine = { name: engineName, version: m[1] };
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { raw: ua, browser, os, device: { type: deviceType, vendor }, engine, bot };
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/modules/v4/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { MAX_FACTORIAL, MAX_GCD_VALUE, MAX_PRIME_LIST, MAX_STRING_LENGTH, ROMAN_VALUES } from '../../constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Checks whether two strings are anagrams of each other.
|
|
4
|
+
*
|
|
5
|
+
* @param value - First string
|
|
6
|
+
* @param value2 - Second string
|
|
7
|
+
* @returns True if the strings are anagrams, false otherwise
|
|
8
|
+
* @throws Error if either value is missing, not a string, or out of length bounds
|
|
9
|
+
*/
|
|
2
10
|
export function anagram(value, value2) {
|
|
3
11
|
if (!value)
|
|
4
12
|
throw new Error('First value is required');
|
|
@@ -18,6 +26,13 @@ export function anagram(value, value2) {
|
|
|
18
26
|
throw new Error('Second value must be less than 1000 characters long');
|
|
19
27
|
return value.split('').sort().join('') === value2.split('').sort().join('');
|
|
20
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Sorts a comma-separated list of numbers using the bubble sort algorithm.
|
|
31
|
+
*
|
|
32
|
+
* @param value - Comma-separated string of numbers (e.g. "3,1,2")
|
|
33
|
+
* @returns Array of numbers sorted in ascending order
|
|
34
|
+
* @throws Error if value is missing, non-numeric, or contains fewer than two elements
|
|
35
|
+
*/
|
|
21
36
|
export function bubblesort(value) {
|
|
22
37
|
if (!value)
|
|
23
38
|
throw new Error('A value is required');
|
|
@@ -38,6 +53,13 @@ export function bubblesort(value) {
|
|
|
38
53
|
}
|
|
39
54
|
return arr;
|
|
40
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Computes the factorial of a non-negative integer.
|
|
58
|
+
*
|
|
59
|
+
* @param value - The integer to compute the factorial of
|
|
60
|
+
* @returns The factorial of the given number
|
|
61
|
+
* @throws Error if value is not a number, is negative, or exceeds the maximum allowed
|
|
62
|
+
*/
|
|
41
63
|
export function factorial(value) {
|
|
42
64
|
const num = Number(value);
|
|
43
65
|
if (isNaN(num))
|
|
@@ -48,6 +70,13 @@ export function factorial(value) {
|
|
|
48
70
|
throw new Error('Number must be between 0 and 170');
|
|
49
71
|
return num <= 1 ? 1 : num * factorial(num - 1);
|
|
50
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Returns the first n numbers of the Fibonacci sequence.
|
|
75
|
+
*
|
|
76
|
+
* @param value - How many Fibonacci numbers to generate
|
|
77
|
+
* @returns Array of Fibonacci numbers starting from 0
|
|
78
|
+
* @throws Error if value is not a number, is negative, or exceeds 1000
|
|
79
|
+
*/
|
|
51
80
|
export function fibonacci(value) {
|
|
52
81
|
const num = Number(value);
|
|
53
82
|
if (isNaN(num))
|
|
@@ -62,6 +91,14 @@ export function fibonacci(value) {
|
|
|
62
91
|
}
|
|
63
92
|
return fib.slice(0, num);
|
|
64
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Computes the greatest common divisor of two positive integers using the Euclidean algorithm.
|
|
96
|
+
*
|
|
97
|
+
* @param value - First positive integer
|
|
98
|
+
* @param value2 - Second positive integer
|
|
99
|
+
* @returns The greatest common divisor
|
|
100
|
+
* @throws Error if either value is not a positive number or exceeds the maximum allowed
|
|
101
|
+
*/
|
|
65
102
|
export function gcd(value, value2) {
|
|
66
103
|
let a = Number(value);
|
|
67
104
|
let b = Number(value2);
|
|
@@ -83,6 +120,13 @@ export function gcd(value, value2) {
|
|
|
83
120
|
[a, b] = [b, a % b];
|
|
84
121
|
return a;
|
|
85
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Determines whether a given number is prime.
|
|
125
|
+
*
|
|
126
|
+
* @param value - The number to test
|
|
127
|
+
* @returns True if the number is prime, false otherwise
|
|
128
|
+
* @throws Error if value is not a positive number or exceeds the maximum allowed
|
|
129
|
+
*/
|
|
86
130
|
export function isprime(value) {
|
|
87
131
|
const num = Number(value);
|
|
88
132
|
if (isNaN(num))
|
|
@@ -97,6 +141,13 @@ export function isprime(value) {
|
|
|
97
141
|
}
|
|
98
142
|
return true;
|
|
99
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Checks whether a string reads the same forwards and backwards.
|
|
146
|
+
*
|
|
147
|
+
* @param value - The string to test
|
|
148
|
+
* @returns True if the string is a palindrome, false otherwise
|
|
149
|
+
* @throws Error if value is missing, not a string, or out of length bounds
|
|
150
|
+
*/
|
|
100
151
|
export function palindrome(value) {
|
|
101
152
|
if (!value)
|
|
102
153
|
throw new Error('A value is required');
|
|
@@ -108,6 +159,13 @@ export function palindrome(value) {
|
|
|
108
159
|
throw new Error('Value must be less than 1000 characters long');
|
|
109
160
|
return value === value.split('').reverse().join('');
|
|
110
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Returns the prime factorization of a given integer.
|
|
164
|
+
*
|
|
165
|
+
* @param value - An integer greater than 1
|
|
166
|
+
* @returns Array of prime factors in ascending order
|
|
167
|
+
* @throws Error if value is not a number, less than 2, or exceeds the maximum allowed
|
|
168
|
+
*/
|
|
111
169
|
export function primefactors(value) {
|
|
112
170
|
let num = Number(value);
|
|
113
171
|
if (isNaN(num))
|
|
@@ -125,6 +183,13 @@ export function primefactors(value) {
|
|
|
125
183
|
}
|
|
126
184
|
return factors;
|
|
127
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Returns all prime numbers up to and including the given limit.
|
|
188
|
+
*
|
|
189
|
+
* @param value - The upper bound (inclusive)
|
|
190
|
+
* @returns Array of prime numbers up to the given limit
|
|
191
|
+
* @throws Error if value is not a number, less than 2, or exceeds the maximum allowed
|
|
192
|
+
*/
|
|
128
193
|
export function primelist(value) {
|
|
129
194
|
const num = Number(value);
|
|
130
195
|
if (isNaN(num))
|
|
@@ -147,6 +212,13 @@ export function primelist(value) {
|
|
|
147
212
|
}
|
|
148
213
|
return primes;
|
|
149
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Reverses a string.
|
|
217
|
+
*
|
|
218
|
+
* @param value - The string to reverse
|
|
219
|
+
* @returns The reversed string
|
|
220
|
+
* @throws Error if value is missing or not a string
|
|
221
|
+
*/
|
|
150
222
|
export function reverse(value) {
|
|
151
223
|
if (!value)
|
|
152
224
|
throw new Error('A value is required');
|
|
@@ -154,6 +226,13 @@ export function reverse(value) {
|
|
|
154
226
|
throw new Error('Value must be a string');
|
|
155
227
|
return value.split('').reverse().join('');
|
|
156
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Converts an integer to its Roman numeral representation, or a Roman numeral to an integer.
|
|
231
|
+
*
|
|
232
|
+
* @param value - An integer (1–3999) or a Roman numeral string
|
|
233
|
+
* @returns The converted value — a Roman numeral string if input was numeric, or an integer if input was a Roman numeral
|
|
234
|
+
* @throws Error if value is missing, out of range, or not a valid Roman numeral
|
|
235
|
+
*/
|
|
157
236
|
export function roman(value) {
|
|
158
237
|
if (!value)
|
|
159
238
|
throw new Error('A value is required');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorithms.js","sourceRoot":"","sources":["../../../src/modules/v4/algorithms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"algorithms.js","sourceRoot":"","sources":["../../../src/modules/v4/algorithms.ts"],"names":[],"mappings":"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"}
|