I'm gently disturbed that it generates valid email addresses. You pick a random name, follow it with an @, then add a random word, and then add a TLD. Obviously you're not responsible for how people use the tool.
Best practice would be to use the domain example.com
In most use cases I can think of the generated data is used only in a closed (testing) environment and won't be visible to web crawlers and spambots. Many developers like me use these libraries for prototyping different UI views for their apps.
Unfortunately, spammers do have way more advanced technologies to try and guess working addresses. Libraries like this generate mostly very improbable addresses: you would get way better results just by taking lists of most popular first names and family names and concatenating them with some well-known web mail providers.
In most use cases I can think of the generated data is used only in a closed (testing) environment and won't be visible to web crawlers and spambots. Many developers like me use these libraries for prototyping different UI views for their apps.
The bigger problem, in my experience, is when you accidentally spam people yourself, while testing some function that somehow generates an outgoing email. I think almost everybody that's ever worked on code that sends emails has - at one time or another - ran a job that somehow wound up sending 6,712,374 "test" messages to every user in the production database. :-) Dummy addresses are better, but it's better still if they use @example.com so you know there's no way they'll actually get delivered to anybody.
Great project! I would, however, recommend an API with more namespaces. Functions like Address.ukCounty don't sit well with me; such an API would be a mess if you added support for countries other than the US and the UK. You could (and probably create namespaces for each country code, e.g.:
Address
|-> US
|-> state
|-> UK
|-> state
An alternative would be for country-specific generators to take a country code as an argument. I am not an experienced API designer, though, so take my comments with a heaping of salt.
Very nice library. It would be nice to add the ability to generate random values based on a distribution, e.g. the values are random but correspond to a normal distribution with a given mean and standard deviation. This would be very useful for testing statistical libraries and applications.
Which attributes would you sample from a normal distribution here? I don't see any numerical attributes where this would make sense. One could add weight, height, age etc. and sample from the relevant geographical/gender distributions?
An example would be the processing of automatically acquired measurement data. Such data usually shows some kind of distribution (binominal, normal, geometric, etc...) that needs to be taken into account when validating such a tool.
The original such library was Perl's Data::Faker which was ported to Ruby as Faker gem (and later refactored to faster and more comprehensive Ffaker gem).
Obligatory "I wrote something similar" post. But my tool is written in Java, doesn't run in the browser, but does use @example.com for the email addresses.
Cool. I recently build a similar thing for Magento to provide demo data and for anonymization purposes.
Some parts of faker.js needs sure refactorings ...
I'm gently disturbed that it generates valid email addresses. You pick a random name, follow it with an @, then add a random word, and then add a TLD. Obviously you're not responsible for how people use the tool.
Best practice would be to use the domain example.com