faker 5.3.1 → 5.5.2

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.
Files changed (332) hide show
  1. package/{.jshintignore → .eslintignore} +0 -0
  2. package/.eslintrc +54 -0
  3. package/.travis.yml +3 -0
  4. package/Readme.md +48 -3
  5. package/dist/faker.js +71873 -39072
  6. package/dist/faker.min.js +1 -1
  7. package/lib/address.js +121 -107
  8. package/lib/animal.js +124 -0
  9. package/lib/commerce.js +16 -16
  10. package/lib/company.js +8 -8
  11. package/lib/database.js +4 -4
  12. package/lib/datatype.js +226 -0
  13. package/lib/date.js +94 -72
  14. package/lib/finance.js +44 -22
  15. package/lib/git.js +1 -1
  16. package/lib/helpers.js +8 -8
  17. package/lib/iban.js +22 -14
  18. package/lib/image.js +14 -14
  19. package/lib/image_providers/lorempixel.js +1 -1
  20. package/lib/index.js +58 -47
  21. package/lib/internet.js +148 -119
  22. package/lib/locales/af_ZA/name/female_first_name.js +112 -112
  23. package/lib/locales/af_ZA/name/first_name.js +222 -222
  24. package/lib/locales/af_ZA/name/male_first_name.js +115 -115
  25. package/lib/locales/ar/address/state.js +62 -1
  26. package/lib/locales/ar/date/index.js +4 -0
  27. package/lib/locales/ar/date/month.js +63 -0
  28. package/lib/locales/ar/date/weekday.js +22 -0
  29. package/lib/locales/ar/index.js +2 -0
  30. package/lib/locales/cz/address/index.js +0 -1
  31. package/lib/locales/cz/name/first_name.js +3 -0
  32. package/lib/locales/cz/name/index.js +2 -0
  33. package/lib/locales/cz/name/last_name.js +3 -0
  34. package/lib/locales/de_CH/address/city.js +3 -0
  35. package/lib/locales/de_CH/address/city_name.js +102 -0
  36. package/lib/locales/de_CH/address/index.js +4 -0
  37. package/lib/locales/de_CH/address/state.js +28 -0
  38. package/lib/locales/de_CH/address/state_abbr.js +28 -0
  39. package/lib/locales/de_CH/name/first_name.js +336 -336
  40. package/lib/locales/de_CH/name/last_name.js +209 -209
  41. package/lib/locales/en/address/city_name.js +1002 -0
  42. package/lib/locales/en/address/country_code_alpha_3.js +250 -250
  43. package/lib/locales/en/address/index.js +1 -0
  44. package/lib/locales/en/animal/bear.js +10 -0
  45. package/lib/locales/en/animal/bird.js +916 -0
  46. package/lib/locales/en/animal/cat.js +57 -0
  47. package/lib/locales/en/animal/cetacean.js +56 -0
  48. package/lib/locales/en/animal/cow.js +521 -0
  49. package/lib/locales/en/animal/crocodilia.js +26 -0
  50. package/lib/locales/en/animal/dog.js +499 -0
  51. package/lib/locales/en/animal/fish.js +98 -0
  52. package/lib/locales/en/animal/horse.js +347 -0
  53. package/lib/locales/en/animal/index.js +16 -0
  54. package/lib/locales/en/animal/insect.js +132 -0
  55. package/lib/locales/en/animal/lion.js +9 -0
  56. package/lib/locales/en/animal/rabbit.js +51 -0
  57. package/lib/locales/en/animal/snake.js +583 -0
  58. package/lib/locales/en/animal/type.js +15 -0
  59. package/lib/locales/en/finance/currency.js +0 -4
  60. package/lib/locales/en/index.js +1 -0
  61. package/lib/locales/en/internet/avatar_uri.js +1250 -1254
  62. package/lib/locales/en/music/genre.js +18 -18
  63. package/lib/locales/en/name/binary_gender.js +4 -0
  64. package/lib/locales/en/name/female_first_name.js +501 -501
  65. package/lib/locales/en/name/gender.js +71 -71
  66. package/lib/locales/en/name/index.js +1 -0
  67. package/lib/locales/en/name/male_first_name.js +501 -501
  68. package/lib/locales/en/system/directoryPaths.js +60 -60
  69. package/lib/locales/en/vehicle/bicycle.js +20 -0
  70. package/lib/locales/en/vehicle/index.js +1 -0
  71. package/lib/locales/en_GH/address/building_number.js +5 -0
  72. package/lib/locales/en_GH/address/city.js +3 -0
  73. package/lib/locales/en_GH/address/city_name.js +355 -0
  74. package/lib/locales/en_GH/address/default_country.js +3 -0
  75. package/lib/locales/en_GH/address/index.js +12 -0
  76. package/lib/locales/en_GH/address/postcode.js +4 -0
  77. package/lib/locales/en_GH/address/state.js +18 -0
  78. package/lib/locales/en_GH/address/street_address.js +3 -0
  79. package/lib/locales/en_GH/address/street_name.js +4 -0
  80. package/lib/locales/en_GH/address/street_prefix.js +3 -0
  81. package/lib/locales/en_GH/address/street_suffix.js +10 -0
  82. package/lib/locales/en_GH/company/index.js +4 -0
  83. package/lib/locales/en_GH/company/name.js +4 -0
  84. package/lib/locales/en_GH/company/suffix.js +4 -0
  85. package/lib/locales/en_GH/index.js +8 -0
  86. package/lib/locales/en_GH/internet/domain_suffix.js +11 -0
  87. package/lib/locales/en_GH/internet/index.js +3 -0
  88. package/lib/locales/en_GH/name/female_first_name.js +146 -0
  89. package/lib/locales/en_GH/name/first_name.js +4 -0
  90. package/lib/locales/en_GH/name/index.js +7 -0
  91. package/lib/locales/en_GH/name/last_name.js +124 -0
  92. package/lib/locales/en_GH/name/male_first_name.js +134 -0
  93. package/lib/locales/en_GH/name/name.js +6 -0
  94. package/lib/locales/en_GH/phone_number/formats.js +28 -0
  95. package/lib/locales/{nep → en_GH}/phone_number/index.js +0 -0
  96. package/lib/locales/en_NG/address/city_prefix.js +525 -525
  97. package/lib/locales/en_NG/address/state.js +37 -37
  98. package/lib/locales/en_NG/name/female_first_name.js +13 -13
  99. package/lib/locales/en_NG/name/first_name.js +33 -33
  100. package/lib/locales/en_NG/name/male_first_name.js +22 -22
  101. package/lib/locales/en_NG/phone_number/formats.js +5 -5
  102. package/lib/locales/en_US/address/postcode_by_state.js +104 -104
  103. package/lib/locales/en_ZA/address/city_prefix.js +14 -14
  104. package/lib/locales/en_ZA/address/state.js +9 -9
  105. package/lib/locales/en_ZA/cell_phone/formats.js +18 -18
  106. package/lib/locales/en_ZA/name/female_first_name.js +292 -292
  107. package/lib/locales/en_ZA/name/first_name.js +539 -539
  108. package/lib/locales/en_ZA/name/male_first_name.js +252 -252
  109. package/lib/locales/es/commerce/color.js +9 -9
  110. package/lib/locales/es/commerce/department.js +19 -19
  111. package/lib/locales/es/commerce/product_name.js +54 -54
  112. package/lib/locales/es/name/female_first_name.js +12 -12
  113. package/lib/locales/es/name/male_first_name.js +17 -17
  114. package/lib/locales/es_MX/address/street.js +39 -39
  115. package/lib/locales/es_MX/commerce/color.js +31 -31
  116. package/lib/locales/es_MX/commerce/department.js +22 -22
  117. package/lib/locales/es_MX/commerce/product_name.js +56 -56
  118. package/lib/locales/es_MX/company/bs_noun.js +44 -44
  119. package/lib/locales/es_MX/company/bs_verb.js +60 -60
  120. package/lib/locales/es_MX/lorem/words.js +268 -268
  121. package/lib/locales/es_MX/name/first_name.js +304 -304
  122. package/lib/locales/es_MX/name/last_name.js +686 -686
  123. package/lib/locales/es_MX/name/title.js +1 -1
  124. package/lib/locales/es_MX/team/creature.js +66 -66
  125. package/lib/locales/fa/name/female_first_name.js +67 -67
  126. package/lib/locales/fa/name/male_first_name.js +74 -74
  127. package/lib/locales/fa/vehicle/model.js +1 -1
  128. package/lib/locales/fi/name/female_first_name.js +50 -50
  129. package/lib/locales/fi/name/first_name.js +100 -100
  130. package/lib/locales/fi/name/last_name.js +50 -50
  131. package/lib/locales/fi/name/male_first_name.js +50 -50
  132. package/lib/locales/fr/address/city_name.js +84 -84
  133. package/lib/locales/fr/address/country.js +195 -0
  134. package/lib/locales/fr/address/index.js +1 -0
  135. package/lib/locales/fr/name/female_first_name.js +451 -451
  136. package/lib/locales/fr/name/first_name.js +3 -0
  137. package/lib/locales/fr/name/index.js +1 -0
  138. package/lib/locales/fr/name/male_first_name.js +496 -496
  139. package/lib/locales/fr_BE/adresses/building_number.js +12 -0
  140. package/lib/locales/fr_BE/adresses/city.js +4 -0
  141. package/lib/locales/fr_BE/adresses/city_prefix.js +265 -0
  142. package/lib/locales/fr_BE/adresses/city_suffix.js +6 -0
  143. package/lib/locales/fr_BE/adresses/default_country.js +3 -0
  144. package/lib/locales/fr_BE/adresses/index.js +25 -0
  145. package/lib/locales/fr_BE/adresses/postcode.js +3 -0
  146. package/lib/locales/fr_BE/adresses/state.js +12 -0
  147. package/lib/locales/fr_BE/adresses/state_abbr.js +11 -0
  148. package/lib/locales/fr_BE/adresses/street_address.js +3 -0
  149. package/lib/locales/fr_BE/adresses/street_name.js +5 -0
  150. package/lib/locales/fr_BE/adresses/street_prefix.js +21 -0
  151. package/lib/locales/fr_BE/adresses/street_suffix.js +212 -0
  152. package/lib/locales/fr_BE/cell_phone/formats.js +34 -0
  153. package/lib/locales/fr_BE/cell_phone/index.js +3 -0
  154. package/lib/locales/fr_BE/index.js +20 -0
  155. package/lib/locales/fr_BE/internet/domain_suffix.js +10 -0
  156. package/lib/locales/fr_BE/internet/free_email.js +6 -0
  157. package/lib/locales/{nep → fr_BE}/internet/index.js +0 -0
  158. package/lib/locales/fr_BE/name/first_name.js +3009 -0
  159. package/lib/locales/fr_BE/name/first_name_female.js +1532 -0
  160. package/lib/locales/fr_BE/name/first_name_male.js +1482 -0
  161. package/lib/locales/fr_BE/name/gender.js +10 -0
  162. package/lib/locales/fr_BE/name/index.js +11 -0
  163. package/lib/locales/fr_BE/name/last_name.js +624 -0
  164. package/lib/locales/fr_BE/name/name.js +8 -0
  165. package/lib/locales/fr_BE/name/prefix.js +6 -0
  166. package/lib/locales/fr_BE/name/suffix.js +8 -0
  167. package/lib/locales/fr_BE/name/title.js +22 -0
  168. package/lib/locales/fr_BE/phone_number/formats.js +93 -0
  169. package/lib/locales/fr_BE/phone_number/index.js +3 -0
  170. package/lib/locales/hr/address/city_name.js +128 -128
  171. package/lib/locales/hr/address/country.js +246 -246
  172. package/lib/locales/hr/address/street.js +375 -375
  173. package/lib/locales/hr/date/month.js +24 -24
  174. package/lib/locales/hr/date/weekday.js +7 -7
  175. package/lib/locales/hr/name/female_first_name.js +238 -238
  176. package/lib/locales/hr/name/first_name.js +409 -409
  177. package/lib/locales/hr/name/last_name.js +11617 -11617
  178. package/lib/locales/hr/name/male_first_name.js +171 -171
  179. package/lib/locales/hr/name/name.js +6 -6
  180. package/lib/locales/hr/name/prefix.js +5 -5
  181. package/lib/locales/hr/name/suffix.js +2 -2
  182. package/lib/locales/hy/address/building_number.js +8 -0
  183. package/lib/locales/hy/address/city.js +4 -0
  184. package/lib/locales/hy/address/city_prefix.js +7 -0
  185. package/lib/locales/hy/address/city_suffix.js +5 -0
  186. package/lib/locales/hy/address/country.js +231 -0
  187. package/lib/locales/hy/address/default_country.js +3 -0
  188. package/lib/locales/hy/address/direction.js +10 -0
  189. package/lib/locales/hy/address/index.js +14 -0
  190. package/lib/locales/hy/address/secondary_address.js +4 -0
  191. package/lib/locales/hy/address/state.js +21 -0
  192. package/lib/locales/hy/address/street_address.js +3 -0
  193. package/lib/locales/hy/address/street_name.js +3 -0
  194. package/lib/locales/hy/address/street_suffix.js +4 -0
  195. package/lib/locales/hy/commerce/color.js +14 -0
  196. package/lib/locales/hy/commerce/index.js +3 -0
  197. package/lib/locales/hy/date/index.js +4 -0
  198. package/lib/locales/hy/date/month.js +30 -0
  199. package/lib/locales/hy/date/weekday.js +21 -0
  200. package/lib/locales/hy/index.js +11 -0
  201. package/lib/locales/hy/internet/domain_suffix.js +9 -0
  202. package/lib/locales/hy/internet/index.js +3 -0
  203. package/lib/locales/hy/lorem/index.js +3 -0
  204. package/lib/locales/hy/lorem/words.js +191 -0
  205. package/lib/locales/hy/name/female_first_name.js +48 -0
  206. package/lib/locales/hy/name/first_name.js +93 -0
  207. package/lib/locales/hy/name/index.js +7 -0
  208. package/lib/locales/hy/name/last_name.js +94 -0
  209. package/lib/locales/hy/name/male_first_name.js +47 -0
  210. package/lib/locales/hy/name/name.js +8 -0
  211. package/lib/locales/hy/phone_number/formats.js +4 -0
  212. package/lib/locales/hy/phone_number/index.js +3 -0
  213. package/lib/locales/id_ID/name/female_first_name.js +45 -1
  214. package/lib/locales/id_ID/name/female_last_name.js +41 -1
  215. package/lib/locales/id_ID/name/male_last_name.js +47 -2
  216. package/lib/locales/it/address/city_name.js +981 -0
  217. package/lib/locales/it/address/index.js +1 -0
  218. package/lib/locales/it/name/last_name.js +2163 -628
  219. package/lib/locales/ja/address/country.js +169 -0
  220. package/lib/locales/ja/address/index.js +1 -0
  221. package/lib/locales/ko/address/postcode.js +2 -1
  222. package/lib/locales/ko/name/first_name.js +2994 -1
  223. package/lib/locales/ko/name/last_name.js +98 -1
  224. package/lib/locales/lv/commerce/product_name.js +14 -14
  225. package/lib/locales/nb_NO/name/index.js +2 -2
  226. package/lib/locales/{nep → ne}/address/city.js +0 -0
  227. package/lib/locales/{nep → ne}/address/default_country.js +0 -0
  228. package/lib/locales/{nep → ne}/address/index.js +0 -0
  229. package/lib/locales/{nep → ne}/address/postcode.js +0 -0
  230. package/lib/locales/{nep → ne}/address/state.js +0 -0
  231. package/lib/locales/{nep → ne}/company/index.js +0 -0
  232. package/lib/locales/{nep → ne}/company/suffix.js +0 -0
  233. package/lib/locales/ne/index.js +8 -0
  234. package/lib/locales/{nep → ne}/internet/domain_suffix.js +0 -0
  235. package/lib/locales/{nep → ne}/internet/free_email.js +0 -0
  236. package/lib/locales/ne/internet/index.js +4 -0
  237. package/lib/locales/{nep → ne}/name/first_name.js +0 -0
  238. package/lib/locales/{nep → ne}/name/index.js +0 -0
  239. package/lib/locales/{nep → ne}/name/last_name.js +0 -0
  240. package/lib/locales/{nep → ne}/phone_number/formats.js +0 -0
  241. package/lib/locales/ne/phone_number/index.js +3 -0
  242. package/lib/locales/nl/address/country.js +5 -7
  243. package/lib/locales/nl/address/secondary_address.js +2 -1
  244. package/lib/locales/nl/address/street_suffix.js +3 -1
  245. package/lib/locales/nl/commerce/color.js +38 -0
  246. package/lib/locales/nl/commerce/department.js +24 -0
  247. package/lib/locales/nl/commerce/index.js +5 -0
  248. package/lib/locales/nl/commerce/product_name.js +72 -0
  249. package/lib/locales/nl/company/suffix.js +5 -2
  250. package/lib/locales/nl/date/index.js +4 -0
  251. package/lib/locales/nl/date/month.js +63 -0
  252. package/lib/locales/nl/date/weekday.js +43 -0
  253. package/lib/locales/nl/hacker/adjective.js +25 -0
  254. package/lib/locales/nl/hacker/index.js +6 -0
  255. package/lib/locales/nl/hacker/noun.js +28 -0
  256. package/lib/locales/nl/hacker/phrase.js +10 -0
  257. package/lib/locales/nl/hacker/verb.js +23 -0
  258. package/lib/locales/nl/index.js +3 -0
  259. package/lib/locales/nl/internet/domain_suffix.js +2 -1
  260. package/lib/locales/nl/name/female_first_name.js +517 -0
  261. package/lib/locales/nl/name/index.js +2 -0
  262. package/lib/locales/nl/name/male_first_name.js +590 -0
  263. package/lib/locales/pl/name/female_first_name.js +176 -0
  264. package/lib/locales/pl/name/first_name.js +3 -410
  265. package/lib/locales/pl/name/male_first_name.js +236 -0
  266. package/lib/locales/pt_BR/address/city_suffix.js +4 -0
  267. package/lib/locales/pt_BR/address/country.js +41 -44
  268. package/lib/locales/pt_BR/address/state_abbr.js +4 -1
  269. package/lib/locales/pt_BR/company/suffix.js +1 -0
  270. package/lib/locales/pt_BR/name/female_first_name.js +82 -0
  271. package/lib/locales/pt_BR/name/index.js +2 -0
  272. package/lib/locales/pt_BR/name/male_first_name.js +90 -0
  273. package/lib/locales/pt_BR/name/name.js +8 -0
  274. package/lib/locales/pt_BR/name/prefix.js +2 -1
  275. package/lib/locales/pt_PT/phone_number/formats.js +1 -0
  276. package/lib/locales/ro/address/city.js +300 -300
  277. package/lib/locales/ro/address/county.js +42 -42
  278. package/lib/locales/ro/address/state.js +42 -42
  279. package/lib/locales/ro/address/state_abbr.js +42 -42
  280. package/lib/locales/ro/address/street_address.js +1 -1
  281. package/lib/locales/ro/address/street_suffix.js +3 -3
  282. package/lib/locales/ro/address/streets.js +100 -100
  283. package/lib/locales/ro/cell_phone/formats.js +59 -59
  284. package/lib/locales/ro/internet/domain_suffix.js +19 -19
  285. package/lib/locales/ro/internet/index.js +0 -1
  286. package/lib/locales/ro/name/female_first_name.js +387 -387
  287. package/lib/locales/ro/name/last_name.js +300 -300
  288. package/lib/locales/ro/name/male_first_name.js +288 -288
  289. package/lib/locales/ro/name/name.js +32 -32
  290. package/lib/locales/ro/name/prefix.js +3 -3
  291. package/lib/locales/ro/name/suffix.js +2 -2
  292. package/lib/locales/ro/phone_number/formats.js +82 -82
  293. package/lib/locales/sk/address/index.js +0 -1
  294. package/lib/locales/tr/name/female_first_name.js +416 -0
  295. package/lib/locales/tr/name/index.js +2 -0
  296. package/lib/locales/tr/name/male_first_name.js +754 -0
  297. package/lib/locales/tr/name/name.js +2 -2
  298. package/lib/locales/vi/name/female_first_name.js +1312 -0
  299. package/lib/locales/vi/name/first_name.js +3 -28
  300. package/lib/locales/vi/name/index.js +5 -3
  301. package/lib/locales/vi/name/last_name.js +1 -48
  302. package/lib/locales/vi/name/male_first_name.js +1227 -0
  303. package/lib/locales/vi/name/name.js +3 -2
  304. package/lib/locales/zu_ZA/name/female_first_name.js +50 -50
  305. package/lib/locales/zu_ZA/name/first_name.js +100 -100
  306. package/lib/locales/zu_ZA/name/last_name.js +100 -100
  307. package/lib/locales/zu_ZA/name/male_first_name.js +51 -51
  308. package/lib/locales.js +2 -1
  309. package/lib/lorem.js +25 -25
  310. package/lib/mersenne.js +31 -0
  311. package/lib/music.js +9 -9
  312. package/lib/name.js +36 -32
  313. package/lib/phone_number.js +4 -4
  314. package/lib/random.js +138 -150
  315. package/lib/system.js +114 -63
  316. package/lib/time.js +1 -1
  317. package/lib/vehicle.js +38 -4
  318. package/locale/ReadMe.md +1 -1
  319. package/locale/en.js +1 -1
  320. package/locale/en_GH.js +5 -0
  321. package/locale/hy.js +5 -0
  322. package/locale/ne.js +5 -0
  323. package/package.json +4 -3
  324. package/vendor/mersenne.js +194 -222
  325. package/vendor/user-agent.js +155 -155
  326. package/.jshintrc +0 -87
  327. package/lib/locales/cz/address/time_zone.js +0 -145
  328. package/lib/locales/el/internet/avatar_uri.js +0 -1256
  329. package/lib/locales/nep/index.js +0 -8
  330. package/lib/locales/ro/internet/avatar_uri.js +0 -1265
  331. package/lib/locales/sk/address/time_zone.js +0 -145
  332. package/locale/nep.js +0 -5
package/lib/system.js CHANGED
@@ -1,26 +1,52 @@
1
1
  // generates fake data for many computer systems properties
2
2
 
3
+ var commonFileTypes = [
4
+ "video",
5
+ "audio",
6
+ "image",
7
+ "text",
8
+ "application"
9
+ ];
10
+
11
+ var commonMimeTypes = [
12
+ "application/pdf",
13
+ "audio/mpeg",
14
+ "audio/wav",
15
+ "image/png",
16
+ "image/jpeg",
17
+ "image/gif",
18
+ "video/mp4",
19
+ "video/mpeg",
20
+ "text/html"
21
+ ];
22
+
23
+ function setToArray(set) {
24
+ // shortcut if Array.from is available
25
+ if (Array.from) { return Array.from(set); }
26
+
27
+ var array = [];
28
+ set.forEach(function (item) {
29
+ array.push(item);
30
+ });
31
+ return array;
32
+ }
33
+
3
34
  /**
4
35
  *
5
36
  * @namespace faker.system
6
37
  */
7
- function System (faker) {
38
+ function System(faker) {
8
39
 
9
40
  /**
10
- * generates a file name with extension or optional type
41
+ * generates a file name
11
42
  *
12
43
  * @method faker.system.fileName
13
- * @param {string} ext
14
- * @param {string} type
15
44
  */
16
- this.fileName = function (ext, type) {
17
- var str = faker.fake("{{random.words}}.{{system.fileExt}}");
18
- str = str.replace(/ /g, '_');
19
- str = str.replace(/\,/g, '_');
20
- str = str.replace(/\-/g, '_');
21
- str = str.replace(/\\/g, '_');
22
- str = str.replace(/\//g, '_');
23
- str = str.toLowerCase();
45
+ this.fileName = function () {
46
+ var str = faker.random.words();
47
+ str = str
48
+ .toLowerCase()
49
+ .replace(/\W/g, "_") + "." + faker.system.fileExt();;
24
50
  return str;
25
51
  };
26
52
 
@@ -29,16 +55,13 @@ function System (faker) {
29
55
  *
30
56
  * @method faker.system.commonFileName
31
57
  * @param {string} ext
32
- * @param {string} type
33
58
  */
34
- this.commonFileName = function (ext, type) {
35
- var str = faker.random.words() + "." + (ext || faker.system.commonFileExt());
36
- str = str.replace(/ /g, '_');
37
- str = str.replace(/\,/g, '_');
38
- str = str.replace(/\-/g, '_');
39
- str = str.replace(/\\/g, '_');
40
- str = str.replace(/\//g, '_');
41
- str = str.toLowerCase();
59
+ this.commonFileName = function (ext) {
60
+ var str = faker.random.words();
61
+ str = str
62
+ .toLowerCase()
63
+ .replace(/\W/g, "_");
64
+ str += "." + (ext || faker.system.commonFileExt());
42
65
  return str;
43
66
  };
44
67
 
@@ -48,7 +71,27 @@ function System (faker) {
48
71
  * @method faker.system.mimeType
49
72
  */
50
73
  this.mimeType = function () {
51
- return faker.random.arrayElement(Object.keys(faker.definitions.system.mimeTypes));
74
+ var typeSet = new Set();
75
+ var extensionSet = new Set();
76
+ var mimeTypes = faker.definitions.system.mimeTypes;
77
+
78
+ Object.keys(mimeTypes).forEach(function (m) {
79
+ var type = m.split("/")[0];
80
+
81
+ typeSet.add(type);
82
+
83
+ if (mimeTypes[m].extensions instanceof Array) {
84
+ mimeTypes[m].extensions.forEach(function (ext) {
85
+ extensionSet.add(ext);
86
+ });
87
+ }
88
+ });
89
+
90
+ var types = setToArray(typeSet);
91
+ var extensions = setToArray(extensionSet);
92
+ var mimeTypeKeys = Object.keys(faker.definitions.system.mimeTypes);
93
+
94
+ return faker.random.arrayElement(mimeTypeKeys);
52
95
  };
53
96
 
54
97
  /**
@@ -57,29 +100,16 @@ function System (faker) {
57
100
  * @method faker.system.commonFileType
58
101
  */
59
102
  this.commonFileType = function () {
60
- var types = ['video', 'audio', 'image', 'text', 'application'];
61
- return faker.random.arrayElement(types)
103
+ return faker.random.arrayElement(commonFileTypes);
62
104
  };
63
105
 
64
106
  /**
65
- * returns a commonly used file extension based on optional type
107
+ * returns a commonly used file extension
66
108
  *
67
109
  * @method faker.system.commonFileExt
68
- * @param {string} type
69
110
  */
70
- this.commonFileExt = function (type) {
71
- var types = [
72
- 'application/pdf',
73
- 'audio/mpeg',
74
- 'audio/wav',
75
- 'image/png',
76
- 'image/jpeg',
77
- 'image/gif',
78
- 'video/mp4',
79
- 'video/mpeg',
80
- 'text/html'
81
- ];
82
- return faker.system.fileExt(faker.random.arrayElement(types));
111
+ this.commonFileExt = function () {
112
+ return faker.system.fileExt(faker.random.arrayElement(commonMimeTypes));
83
113
  };
84
114
 
85
115
 
@@ -89,15 +119,27 @@ function System (faker) {
89
119
  * @method faker.system.fileType
90
120
  */
91
121
  this.fileType = function () {
92
- var types = [];
93
- var mimes = faker.definitions.system.mimeTypes;
94
- Object.keys(mimes).forEach(function(m){
95
- var parts = m.split('/');
96
- if (types.indexOf(parts[0]) === -1) {
97
- types.push(parts[0]);
122
+ var typeSet = new Set();
123
+ var extensionSet = new Set();
124
+ var mimeTypes = faker.definitions.system.mimeTypes;
125
+
126
+ Object.keys(mimeTypes).forEach(function (m) {
127
+ var type = m.split("/")[0];
128
+
129
+ typeSet.add(type);
130
+
131
+ if (mimeTypes[m].extensions instanceof Array) {
132
+ mimeTypes[m].extensions.forEach(function (ext) {
133
+ extensionSet.add(ext);
134
+ });
98
135
  }
99
136
  });
137
+
138
+ var types = setToArray(typeSet);
139
+ var extensions = setToArray(extensionSet);
140
+ var mimeTypeKeys = Object.keys(faker.definitions.system.mimeTypes);
100
141
  return faker.random.arrayElement(types);
142
+
101
143
  };
102
144
 
103
145
  /**
@@ -107,23 +149,32 @@ function System (faker) {
107
149
  * @param {string} mimeType
108
150
  */
109
151
  this.fileExt = function (mimeType) {
110
- var exts = [];
111
- var mimes = faker.definitions.system.mimeTypes;
152
+ var typeSet = new Set();
153
+ var extensionSet = new Set();
154
+ var mimeTypes = faker.definitions.system.mimeTypes;
112
155
 
113
- // get specific ext by mime-type
114
- if (typeof mimes[mimeType] === "object") {
115
- return faker.random.arrayElement(mimes[mimeType].extensions);
116
- }
156
+ Object.keys(mimeTypes).forEach(function (m) {
157
+ var type = m.split("/")[0];
117
158
 
118
- // reduce mime-types to those with file-extensions
119
- Object.keys(mimes).forEach(function(m){
120
- if (mimes[m].extensions instanceof Array) {
121
- mimes[m].extensions.forEach(function(ext){
122
- exts.push(ext)
159
+ typeSet.add(type);
160
+
161
+ if (mimeTypes[m].extensions instanceof Array) {
162
+ mimeTypes[m].extensions.forEach(function (ext) {
163
+ extensionSet.add(ext);
123
164
  });
124
165
  }
125
166
  });
126
- return faker.random.arrayElement(exts);
167
+
168
+ var types = setToArray(typeSet);
169
+ var extensions = setToArray(extensionSet);
170
+ var mimeTypeKeys = Object.keys(faker.definitions.system.mimeTypes);
171
+
172
+ if (mimeType) {
173
+ var mimes = faker.definitions.system.mimeTypes;
174
+ return faker.random.arrayElement(mimes[mimeType].extensions);
175
+ }
176
+
177
+ return faker.random.arrayElement(extensions);
127
178
  };
128
179
 
129
180
  /**
@@ -132,8 +183,8 @@ function System (faker) {
132
183
  * @method faker.system.directoryPath
133
184
  */
134
185
  this.directoryPath = function () {
135
- var paths = faker.definitions.system.directoryPaths
136
- return faker.random.arrayElement(paths);
186
+ var paths = faker.definitions.system.directoryPaths
187
+ return faker.random.arrayElement(paths);
137
188
  };
138
189
 
139
190
  /**
@@ -142,7 +193,7 @@ function System (faker) {
142
193
  * @method faker.system.filePath
143
194
  */
144
195
  this.filePath = function () {
145
- return faker.fake("{{system.directoryPath}}/{{system.fileName}}");
196
+ return faker.fake("{{system.directoryPath}}/{{system.fileName}}.{{system.fileExt}}");
146
197
  };
147
198
 
148
199
  /**
@@ -151,9 +202,9 @@ function System (faker) {
151
202
  * @method faker.system.semver
152
203
  */
153
204
  this.semver = function () {
154
- return [faker.random.number(9),
155
- faker.random.number(9),
156
- faker.random.number(9)].join('.');
205
+ return [faker.datatype.number(9),
206
+ faker.datatype.number(9),
207
+ faker.datatype.number(9)].join('.');
157
208
  }
158
209
 
159
210
  }
package/lib/time.js CHANGED
@@ -13,7 +13,7 @@ var _Time = function(faker) {
13
13
  */
14
14
  self.recent = function(outputType) {
15
15
  if (typeof outputType === "undefined") {
16
- outputType = 'unix';
16
+ outputType = 'unix';
17
17
  }
18
18
 
19
19
  var date = new Date();
package/lib/vehicle.js CHANGED
@@ -83,11 +83,12 @@ var Vehicle = function (faker) {
83
83
  * @method faker.vehicle.vin
84
84
  */
85
85
  self.vin = function () {
86
+ var bannedChars=['o','i','q'];
86
87
  return (
87
- faker.random.alphaNumeric(10) +
88
- faker.random.alpha({ count: 1, upcase: true }) +
89
- faker.random.alphaNumeric(1) +
90
- faker.random.number({ min: 10000, max: 100000}) // return five digit #
88
+ faker.random.alphaNumeric(10, {bannedChars:bannedChars}) +
89
+ faker.random.alpha({ count: 1, upcase: true ,bannedChars:bannedChars}) +
90
+ faker.random.alphaNumeric(1, {bannedChars:bannedChars}) +
91
+ faker.datatype.number({ min: 10000, max: 100000}) // return five digit #
91
92
  ).toUpperCase();
92
93
  };
93
94
 
@@ -109,6 +110,39 @@ var Vehicle = function (faker) {
109
110
  "description": "Generates a color",
110
111
  "sampleResults": ["red", "white", "black"]
111
112
  };
113
+
114
+ /**
115
+ * vrm
116
+ *
117
+ * @method faker.vehicle.vrm
118
+ */
119
+ self.vrm = function () {
120
+ return (
121
+ faker.random.alpha({ count: 2, upcase: true }) +
122
+ faker.datatype.number({ min: 0, max: 9 }) +
123
+ faker.datatype.number({ min: 0, max: 9 }) +
124
+ faker.random.alpha({ count: 3, upcase: true })
125
+ ).toUpperCase();
126
+ };
127
+
128
+ self.vrm.schema = {
129
+ "description": "Generates a vehicle vrm",
130
+ "sampleResults": ["MF56UPA", "GL19AAQ", "SF20TTA"]
131
+ };
132
+
133
+ /**
134
+ * bicycle
135
+ *
136
+ * @method faker.vehicle.bicycle
137
+ */
138
+ self.bicycle = function () {
139
+ return faker.random.arrayElement(faker.definitions.vehicle.bicycle_type);
140
+ };
141
+
142
+ self.bicycle.schema = {
143
+ "description": "Generates a type of bicycle",
144
+ "sampleResults": ["Adventure Road Bicycle", "City Bicycle", "Recumbent Bicycle"]
145
+ };
112
146
  };
113
147
 
114
148
  module["exports"] = Vehicle;
package/locale/ReadMe.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  The files in this directory have been auto-generated from the `gulpfile`.
4
4
 
5
- These file exist in order to allow users to require the `faker` library using a specific locale ( instead of the default behavior or loading all all locales ).
5
+ These file exist in order to allow users to require the `faker` library using a specific locale ( instead of the default behavior or loading all locales ).
6
6
 
7
7
  Example:
8
8
 
package/locale/en.js CHANGED
@@ -1,5 +1,5 @@
1
1
  var Faker = require('../lib');
2
2
  var faker = new Faker({ locale: 'en', localeFallback: 'en' });
3
3
  faker.locales['en'] = require('../lib/locales/en');
4
- faker.locales['en'] = require('../lib/locales/en');
4
+
5
5
  module['exports'] = faker;
@@ -0,0 +1,5 @@
1
+ var Faker = require('../lib');
2
+ var faker = new Faker({ locale: 'en_GH', localeFallback: 'en' });
3
+ faker.locales['en_GH'] = require('../lib/locales/en_GH');
4
+ faker.locales['en'] = require('../lib/locales/en');
5
+ module['exports'] = faker;
package/locale/hy.js ADDED
@@ -0,0 +1,5 @@
1
+ var Faker = require('../lib');
2
+ var faker = new Faker({ locale: 'hy', localeFallback: 'en' });
3
+ faker.locales['hy'] = require('../lib/locales/hy');
4
+ faker.locales['en'] = require('../lib/locales/en');
5
+ module['exports'] = faker;
package/locale/ne.js ADDED
@@ -0,0 +1,5 @@
1
+ var Faker = require('../lib');
2
+ var faker = new Faker({ locale: 'ne', localeFallback: 'en' });
3
+ faker.locales['ne'] = require('../lib/locales/ne');
4
+ faker.locales['en'] = require('../lib/locales/en');
5
+ module['exports'] = faker;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "faker",
3
3
  "description": "Generate massive amounts of fake contextual data",
4
- "version": "5.3.1",
4
+ "version": "5.5.2",
5
5
  "contributors": [
6
6
  "Marak Squires <marak.squires@gmail.com>"
7
7
  ],
@@ -13,7 +13,7 @@
13
13
  "browser": "./node_modules/.bin/gulp browser",
14
14
  "jsdoc": "./node_modules/.bin/gulp jsdoc",
15
15
  "readme": "./node_modules/.bin/gulp readme",
16
- "lint": "node_modules/.bin/jshint ./lib --config ./.jshintrc",
16
+ "lint": "node_modules/.bin/eslint ./lib/animal.js",
17
17
  "test": "node_modules/.bin/mocha test/*.*.js",
18
18
  "coverage": "nyc report --reporter=text-lcov | coveralls"
19
19
  },
@@ -51,9 +51,10 @@
51
51
  "gulp-mustache": "^5.0.0",
52
52
  "gulp-rename": "^2.0.0",
53
53
  "gulp-uglify": "^3.0.2",
54
+ "eslint": "^6.5.1",
54
55
  "ink-docstrap": "1.1.4",
55
56
  "jsdoc": "^3.4.0",
56
- "jshint": "0.9.0",
57
+ "lint-staged": "^9.4.2",
57
58
  "lodash": "^4.6.1",
58
59
  "mocha": "^8.1.1",
59
60
  "node-minify": "*",