· 7 years ago · Mar 10, 2019, 07:04 PM
1module.exports = class Faker {
2 constructor() {
3 this.letters = "abcdefghijklmnopqrstuvwxyz"
4 this.surnames = [
5 'МЕЛЬÐИК',
6 'ШЕВЧЕÐКО',
7 'БОЙКО',
8 'КОВÐЛЕÐКО',
9 'БОÐДÐРЕÐКО',
10 'ТКÐЧЕÐКО',
11 'КОВÐЛЬЧУК',
12 'КРÐВЧЕÐКО',
13 'ОЛІЙÐИК',
14 'ШЕВЧУК',
15 'КОВÐЛЬ',
16 'ПОЛІЩУК',
17 'БОÐДÐÐ ',
18 'ТКÐЧУК',
19 'МОРОЗ',
20 'МÐРЧЕÐКО',
21 'ЛИСЕÐКО',
22 'РУДЕÐКО',
23 'СÐВЧЕÐКО',
24 'ПЕТРЕÐКО',
25 'КРÐВЧУК',
26 'КЛИМЕÐКО',
27 'ПÐВЛЕÐКО',
28 'СÐВЧУК',
29 'КУЗЬМЕÐКО',
30 'ШВЕЦЬ',
31 'ГÐВРИЛЮК',
32 'ІВÐÐОВÐ',
33 'Ð¥ÐРЧЕÐКО',
34 'ПОÐОМÐРЕÐКО',
35 'МЕЛЬÐИЧУК',
36 'Ð’ÐСИЛЕÐКО',
37 'МÐЗУР',
38 'ХОМЕÐКО',
39 'ЛЕВЧЕÐКО',
40 'КÐРПЕÐКО',
41 'КУШÐІР',
42 'СИДОРЕÐКО',
43 'РОМÐÐЮК',
44 'МÐРТИÐЮК',
45 'КОЛОМІЄЦЬ',
46 'ПÐВЛЮК',
47 'ТКÐЧ',
48 'ЛИТВИÐЕÐКО',
49 'ПÐÐЧЕÐКО',
50 'КОСТЕÐКО',
51 'КУЛИК',
52 'КРÐВЕЦЬ',
53 'ЮРЧЕÐКО',
54 'БІЛОУС',
55 'ДЯЧЕÐКО',
56 'СЕМЕÐЮК',
57 'КОСТЮК',
58 'ІВÐÐОВ',
59 'ГУМЕÐЮК',
60 'ВОВК',
61 'ГОÐЧÐРЕÐКО',
62 'ЯКОВЕÐКО',
63 'РОМÐÐЕÐКО',
64 'ПРИХОДЬКО',
65 'КОЗÐК',
66 'КОВТУÐ',
67 'ÐÐЗÐРЕÐКО',
68 'ПИЛИПЕÐКО',
69 'ГОÐЧÐÐ ',
70 'ІЩЕÐКО',
71 'ФЕДОРЕÐКО',
72 'ГОÐЧÐРУК',
73 'ÐЕСТЕРЕÐКО',
74 'КОЛІСÐИК',
75 'ДЕМЧЕÐКО',
76 'ТЕРЕЩЕÐКО',
77 'ТИЩЕÐКО',
78 'БÐБЕÐКО',
79 'ПОПОВИЧ',
80 'ТÐÐ ÐСЕÐКО',
81 'МÐКÐРЕÐКО',
82 'МÐРЧУК',
83 'МОСКÐЛЕÐКО',
84 'ЗІÐЧЕÐКО',
85 'ЯЦЕÐКО',
86 'ЖУК',
87 'ЛИТВИÐ',
88 'ГЕРÐСИМЕÐКО',
89 'КИРИЧЕÐКО',
90 'КОЛЕСÐИК',
91 'МІЩЕÐКО',
92 'ТИМОШЕÐКО',
93 'ПОПОВÐ',
94 'ФОП',
95 'ПÐЛÐМÐРЧУК',
96 'ВЛÐСЕÐКО',
97 'ШÐПОВÐЛ',
98 'БОÐДÐРЧУК',
99 'ЛУЦЕÐКО',
100 'КОÐДРÐТЮК',
101 'ЧОРÐÐ',
102 'ЩЕРБИÐÐ',
103 'ÐÐТОÐЮК',
104 'СОРОКÐ',
105 'КОРÐІЄÐКО',
106 'ДÐÐИЛЮК',
107 'ГОРДІЄÐКО',
108 'МÐРТИÐЕÐКО',
109 'ШУЛЬГÐ',
110 'Ð ÐДЧЕÐКО',
111 'КОРОЛЬ',
112 'ОСТÐПЕÐКО',
113 'СТЕПÐÐЕÐКО',
114 'ВОЛОШИÐ',
115 'ГОЛУБ',
116 'ÐÐУМЕÐКО',
117 'БІЛИК',
118 'ТÐÐ ÐÐ',
119 'ДМИТРЕÐКО',
120 'БÐБИЧ',
121 'БÐБІЙ',
122 'МÐКСИМЕÐКО',
123 'ПÐÐÐСЮК',
124 'ВЕЛИЧКО',
125 'ПРОКОПЕÐКО',
126 'ДЕÐИСЕÐКО',
127 'ДІДЕÐКО',
128 'МЕЛЬÐИЧЕÐКО',
129 'ОÐИЩЕÐКО',
130 'ІВÐЩЕÐКО',
131 'КУЧЕРЕÐКО',
132 'БОЙЧУК',
133 'ДОРОШЕÐКО',
134 'ДЕРКÐЧ',
135 'КУЧЕР',
136 'СЕРГІЄÐКО',
137 'ЗÐЄЦЬ',
138 'СЕРДЮК',
139 'ГРИЩЕÐКО',
140 'МИХÐЙЛЕÐКО',
141 'БОДÐÐÐ ',
142 'ПОПОВ',
143 'КОÐОÐЕÐКО',
144 'ГОЛОВКО',
145 'ГРИЦЕÐКО',
146 'ДÐВИДЕÐКО',
147 'ПÐСІЧÐИК',
148 'ЧУМÐК',
149 'БОРИСЕÐКО',
150 'ЛЯШЕÐКО',
151 'ОМЕЛЬЧЕÐКО',
152 'СКРИПÐИК',
153 'СÐМОЙЛЕÐКО',
154 'ЧЕРÐЕÐКО',
155 'ПÐРХОМЕÐКО',
156 'ПРОЦЕÐКО',
157 'ГОРОБЕЦЬ',
158 'ІВÐÐЧЕÐКО',
159 'КОВÐЛЬОВÐ',
160 'МÐТВІЄÐКО',
161 'ЧОРÐИЙ',
162 'ІЛЬЧЕÐКО',
163 'ШПÐК',
164 'ДЗЮБÐ',
165 'КИРИЛЮК',
166 'РИБÐК',
167 'ОВЧÐРЕÐКО',
168 'СЕРЕДÐ',
169 'ОСТÐПЧУК',
170 'ГРИГОРЕÐКО',
171 'ЯРЕМЕÐКО',
172 'ДЕМЧУК',
173 'СУБЄКТ',
174 'ВОЗÐЮК',
175 'СПД',
176 'ВЛÐСЮК',
177 'ЗÐÐ¥ÐРЧЕÐКО',
178 'МИРОÐЕÐКО',
179 'ГÐÐТЮК',
180 'ÐÐ’Ð ÐМЕÐКО',
181 'МОВЧÐÐ',
182 'СТЕЦЕÐКО',
183 'ГÐВРИЛЕÐКО',
184 'ЧÐЙКÐ',
185 'МÐТВІЙЧУК',
186 'ГЛУЩЕÐКО',
187 'ЯКИМЕÐКО',
188 'ПЕТРОВÐ',
189 'ЯРОШЕÐКО',
190 'МУЗИКÐ',
191 'КУЛІШ',
192 'ТÐÐ ÐСЮК',
193 'ВОЛКОВÐ',
194 'ЛИСÐК',
195 'БÐÐ ÐÐ',
196 'ÐÐТОÐЕÐКО',
197 'СТЕПÐÐЮК',
198 'ПИЛИПЧУК',
199 'СТÐСЮК',
200 'ЛЕЩЕÐКО',
201 'ВОЛОШИÐÐ',
202 'ФЕСЕÐКО',
203 'ІВÐÐЕÐКО',
204 'ЩЕРБÐК'
205 ]
206
207 this.nameMen = [
208 'МИКОЛÐ',
209 'ВОЛОДИМИР',
210 'ОЛЕКСÐÐДР',
211 'ІВÐÐ',
212 'Ð’ÐСИЛЬ',
213 'СЕРГІЙ',
214 'ВІКТОР',
215 'ÐÐÐТОЛІЙ',
216 'МИХÐЙЛО',
217 'ПЕТРО',
218 'ЮРІЙ',
219 'ÐÐДРІЙ',
220 'ОЛЕКСІЙ',
221 'ГРИГОРІЙ',
222 'ВІТÐЛІЙ',
223 'ІГОР',
224 'ДМИТРО',
225 'ОЛЕГ',
226 'Ð’ÐЛЕРІЙ',
227 'ЛЕОÐІД',
228 'ПÐВЛО',
229 'СТЕПÐÐ',
230 'РОМÐÐ',
231 'БОРИС',
232 'ФЕДІР',
233 'Ð’ÐЛЕÐТИÐ',
234 'ЄВГЕÐ',
235 'ЯРОСЛÐÐ’',
236 'ВЯЧЕСЛÐÐ’',
237 'БОГДÐÐ',
238 'СТÐÐІСЛÐÐ’',
239 'ГЕÐÐÐДІЙ',
240 'РУСЛÐÐ',
241 'ГЕОРГІЙ',
242 'КОСТЯÐТИÐ',
243 'ЄВГЕÐІЙ',
244 'Ð’ÐДИМ',
245 'МÐКСИМ',
246 'ÐÐТОÐ',
247 'ІЛЛЯ',
248 'ВЛÐДИСЛÐÐ’',
249 'ЯКІВ',
250 'ТÐÐ ÐС',
251 'ЙОСИП',
252 'СЕМЕÐ',
253 'ЕДУÐРД',
254 'МИРОСЛÐÐ’',
255 'ДЕÐИС',
256 'ÐРТЕМ',
257 'РОСТИСЛÐÐ’',
258 'ЗІÐОВІЙ',
259 'ÐРКÐДІЙ',
260 'ЛЕОÐТІЙ',
261 'МИРОÐ',
262 'ОРЕСТ',
263 'ÐДÐМ',
264 'ГЕÐÐДІЙ',
265 'ПИЛИП',
266 'ТИМОФІЙ',
267 'ЛЮБОМИР',
268 'ÐРТУР',
269 'СВЯТОСЛÐÐ’',
270 'БРОÐІСЛÐÐ’',
271 'КИРИЛО',
272 'РУСТЕМ',
273 'СТЕФÐÐ',
274 'ДÐÐИЛО',
275 'ЙОСИФ',
276 'ЄГОР',
277 'ФЕДОР',
278 'МÐРЯÐ',
279 'ÐФÐÐÐСІЙ',
280 'ЗЕÐОВІЙ',
281 'ОМЕЛЯÐ',
282 'СЕРВЕР',
283 'ФРÐÐЦ',
284 'ЮХИМ',
285 'МИКИТÐ',
286 'ÐЛЬБЕРТ',
287 'ЛЕВ',
288 'ФЕОДОСІЙ',
289 'ÐРСЕÐ',
290 'СЕРГЕЙ',
291 'ВСЕВОЛОД',
292 'ДЕМЯÐ',
293 'ГÐВРИЛО',
294 'ВЛÐДИМИР',
295 'ÐЛІМ',
296 'ПÐÐÐС',
297 'ÐЙДЕР',
298 'КУЗЬМÐ',
299 'ÐÐЗÐÐ ',
300 'КÐЗИМИР',
301 'ТРОХИМ',
302 'СÐÐ’Ð',
303 'ЄВСТÐХІЙ',
304 'ÐÐÐÐІЙ',
305 'ОСТÐП',
306 'ТЕОДОР',
307 'ÐÐРІМÐÐ'
308 ]
309
310 this.nameWomen = [
311 'МÐРІЯ',
312 'ГÐÐÐÐ',
313 'Ð’ÐЛЕÐТИÐÐ',
314 'ОЛЬГÐ',
315 'ГÐЛИÐÐ',
316 'ТЕТЯÐÐ',
317 'ÐÐДІЯ',
318 'ЛЮДМИЛÐ',
319 'ОЛЕÐÐ',
320 'ÐÐТÐЛІЯ',
321 'ÐІÐÐ',
322 'ЛЮБОВ',
323 'КÐТЕРИÐÐ',
324 'СВІТЛÐÐÐ',
325 'ЛІДІЯ',
326 'ВІРÐ',
327 'ІРИÐÐ',
328 'ОКСÐÐÐ',
329 'ОЛЕКСÐÐДРÐ',
330 'Ð ÐЇСÐ',
331 'ТÐМÐÐ Ð',
332 'ЛÐРИСÐ',
333 'ÐÐТОÐІÐÐ',
334 'ЄВГЕÐІЯ',
335 'ÐÐÐСТÐСІЯ',
336 'ÐЛЛÐ',
337 'ЄВДОКІЯ',
338 'ЗІÐÐЇДÐ',
339 'ЮЛІЯ',
340 'ÐÐТÐЛЯ',
341 'СОФІЯ',
342 'ВІКТОРІЯ',
343 'МÐРИÐÐ',
344 'ІÐÐÐ',
345 'ЗОЯ',
346 'Ð’ÐÐ Ð’ÐÐ Ð',
347 'ПÐÐ ÐСКОВІЯ',
348 'КЛÐВДІЯ',
349 'ЛІЛІЯ',
350 'УЛЯÐÐ',
351 'СТЕФÐÐІЯ',
352 'ЯРОСЛÐÐ’Ð',
353 'ЛЕСЯ',
354 'КСЕÐІЯ',
355 'Ð’ÐСИЛИÐÐ',
356 'ЄФРОСИÐІЯ',
357 'ДÐРІЯ',
358 'МОТРОÐÐ',
359 'ПОЛІÐÐ',
360 'ÐЕЛЯ',
361 'МЕЛÐÐІЯ',
362 'ПÐÐ ÐСКÐ',
363 'ЄЛИЗÐВЕТÐ',
364 'ІВÐÐÐÐ',
365 'ЖÐÐÐÐ',
366 'МИРОСЛÐÐ’Ð',
367 'СТЕПÐÐІЯ',
368 'ПЕЛÐГЕЯ',
369 'ПЕЛÐГІЯ',
370 'ТÐЇСІЯ',
371 'МÐРФÐ',
372 'ЄВÐ',
373 'МÐЙЯ',
374 'ÐЕОÐІЛÐ',
375 'ÐЛІÐÐ',
376 'ПÐВЛІÐÐ',
377 'ЕМІЛІЯ',
378 'ТÐЇСÐ',
379 'ÐЛЬОÐÐ',
380 'ВІТÐ',
381 'ÐÐЖЕЛÐ',
382 'ФЕДОРÐ',
383 'ОЛЕСЯ',
384 'СТÐÐІСЛÐÐ’Ð',
385 'МÐРГÐРИТÐ',
386 'ЯÐÐ',
387 'ЄВГЕÐÐ',
388 'ТÐМІЛÐ',
389 'ЗІÐОВІЯ',
390 'ХРИСТИÐÐ',
391 'ДІÐÐ',
392 'РУСЛÐÐÐ',
393 'ÐГÐФІЯ',
394 'СТЕПÐÐИДÐ',
395 'ГÐÐÐІ',
396 'РОЗÐЛІЯ',
397 'ФЕОДОСІЯ',
398 'ЛІÐÐ',
399 'МÐРТÐ',
400 'ЛЕОÐІДÐ',
401 'ОРИСЯ',
402 'ТЕКЛЯ',
403 'ЮЛІ',
404 'БРОÐІСЛÐÐ’Ð',
405 'ЯÐІÐÐ',
406 'ДÐРЯ',
407 'ЄЛІЗÐВЕТÐ',
408 'ÐІЛÐ',
409 'МÐРЯÐÐ',
410 'Ð ÐІСÐ'
411 ]
412
413 this.maleMiddleNames = [
414 'Іванович',
415 'Петрович',
416 'Миколайович',
417 'ВаÑильович',
418 'ОмелÑнович',
419 'Ігорович',
420 'Богданович',
421 'Ðркадійович',
422 'Дмитрович'
423 ]
424
425 this.femaleMiddleNames = [
426 'Іванівна',
427 'Петрівна',
428 'Миколаївна',
429 'ВаÑилівна',
430 'ОмелÑнівна',
431 'Ігорівна',
432 'Богданівна',
433 'Ðркадіївна',
434 'Дмитрівна'
435 ]
436
437 this.phoneOperators = [
438 '50',
439 '66',
440 '67',
441 '68',
442 '95',
443 '96',
444 '97',
445 '98',
446 '99'
447 ]
448
449 this.numbers = "0123456789"
450
451 this.domenMails = [
452 'gmail.com',
453 'ukr.net',
454 'microsoft.net',
455 'kk.io',
456 'mail.ru',
457 'yandex.ua'
458 ]
459 }
460
461 generateNumber(min, max) {
462 return +(Math.random() * (max - min) + min).toFixed(0)
463 }
464
465 generateString(length, letters = null, isLowerCase = true) {
466 let str = ""
467 if (letters == null) {
468 letters = this.letters
469 }
470 for (let index = 0; index < length; index++) {
471 let letter = this.randomArrayItem(letters)
472 if (!isLowerCase) letter = letter.toUpperCase()
473 str += letter
474 }
475
476 return str;
477 }
478
479 generateMixedString(length) {
480 let str = ""
481 for (let index = 0; index < length; index++) {
482 let letter = this.randomArrayItem(this.letters)
483 if (this.generateNumber(0, 2) > 1) letter = letter.toUpperCase()
484 str += letter
485 }
486
487 return str;
488 }
489
490 generateRandomSymbol(str) {
491 return this.randomArrayItem(str)
492 }
493
494
495 generateDate(from, to) {
496 from = from.getTime();
497 to = to.getTime();
498 return new Date(this.generateNumber(from, to));
499 }
500
501 generateName(isMan = true) {
502 let arr = []
503 arr[0] = this.firstUpper(this.randomArrayItem(this.surnames))
504 if (isMan) {
505 arr[1] = this.firstUpper(this.randomArrayItem(this.nameMen))
506 arr[2] = this.randomArrayItem(this.maleMiddleNames)
507 } else {
508 arr[1] = this.firstUpper(this.randomArrayItem(this.nameWomen))
509 arr[2] = this.randomArrayItem(this.femaleMiddleNames)
510 }
511
512 return arr;
513 }
514
515 firstUpper(str) {
516 if (!str) return str
517 str = str.toLowerCase()
518 return str[0].toUpperCase() + str.slice(1)
519 }
520
521 randomArrayItem(array) {
522 return array[this.generateNumber(0, array.length - 1)]
523 }
524
525 generateNumberPhone() {
526 let phone = '+380'
527 phone += this.randomArrayItem(this.phoneOperators)
528
529 for (let index = 0; index < 7; index++) {
530 phone += this.randomArrayItem(this.numbers)
531
532 }
533
534 return phone
535 }
536
537 generateSubArray(array) {
538 let sub = []
539
540 let len = this.generateNumber(1, array.length)
541
542 for (let index = 0; index < len; index++) {
543 let item = this.randomArrayItem(array)
544 if (sub.includes(item)) {
545 index--
546 continue
547 }
548 sub[index] = item
549
550
551 }
552
553 return sub
554 }
555
556 generateEmail(length) {
557 if (typeof length == 'undefined') {
558 length = this.generateNumber(5, 20)
559 }
560 let email = "";
561 let domain = this.randomArrayItem(this.domenMails)
562 let len = length - domain.length - 1
563
564 email += this.generateString(len)
565 email += '@'
566 email += domain
567
568 return email
569 }
570
571
572
573
574
575}