diff --git a/faker/faker-tests.ts b/faker/faker-tests.ts new file mode 100644 index 0000000000..94cb3b30a2 --- /dev/null +++ b/faker/faker-tests.ts @@ -0,0 +1,156 @@ +/// + +import faker = require('faker'); + +faker.address.zipCode(); +faker.address.zipCode('###'); +faker.address.city(); +faker.address.city(0); +faker.address.cityPrefix(); +faker.address.citySuffix(); +faker.address.streetName(); +faker.address.streetAddress(); +faker.address.streetAddress(false);; +faker.address.streetSuffix(); +faker.address.streetPrefix(); +faker.address.secondaryAddress(); +faker.address.county(); +faker.address.country(); +faker.address.countryCode(); +faker.address.state(); +faker.address.state(false); +faker.address.stateAbbr(); +faker.address.latitude(); +faker.address.longitude(); + +faker.commerce.color(); +faker.commerce.department(); +faker.commerce.productName(); +faker.commerce.price(); +faker.commerce.price(0, 0, 0, '#'); +faker.commerce.productAdjective(); +faker.commerce.productMaterial(); +faker.commerce.product(); + +faker.company.suffixes(); +faker.company.companyName(); +faker.company.companyName(0); +faker.company.companySuffix(); +faker.company.catchPhrase(); +faker.company.bs(); +faker.company.catchPhraseAdjective(); +faker.company.catchPhraseDescriptor(); +faker.company.catchPhraseNoun(); +faker.company.bsAdjective(); +faker.company.bsBuzz(); +faker.company.bsNoun(); + +faker.date.past(); +faker.date.future(); +faker.date.between('foo', 'bar'); +faker.date.between(new Date(), new Date()); +faker.date.recent(); +faker.date.recent(100); +faker.date.month(); +faker.date.month({ + abbr: true, + context: true +}); +faker.date.weekday(); +faker.date.weekday({ + abbr: true, + context: true +}); + +faker.finance.account(); +faker.finance.account(0); +faker.finance.accountName(); +faker.finance.mask(); +faker.finance.mask(0, false, false); +faker.finance.amount(); +faker.finance.amount(0, 0, 0, '#'); +faker.finance.transactionType(); +faker.finance.currencyCode(); +faker.finance.currencyName(); +faker.finance.currencySymbol(); + +faker.hacker.abbreviation(); +faker.hacker.adjective(); +faker.hacker.noun(); +faker.hacker.verb(); +faker.hacker.ingverb(); +faker.hacker.phrase(); + +faker.helpers.randomize(); +faker.helpers.randomize([1,2,3,4]); +faker.helpers.randomize(['foo', 'bar', 'quux']); +faker.helpers.slugify('foo bar quux'); +faker.helpers.replaceSymbolWithNumber('foo# bar#'); +faker.helpers.replaceSymbols('foo# bar? quux#'); +faker.helpers.shuffle(['foo', 'bar', 'quux']); +faker.helpers.mustache('{{foo}}{{bar}}', {foo: 'x', bar: 'y'}); +faker.helpers.createCard(); +faker.helpers.contextualCard(); +faker.helpers.userCard(); + +faker.internet.avatar(); +faker.internet.email(); +faker.internet.email('foo', 'bar', 'quux'); +faker.internet.protocol(); +faker.internet.url(); +faker.internet.domainName(); +faker.internet.domainSuffix(); +faker.internet.domainWord(); +faker.internet.ip(); +faker.internet.userAgent(); +faker.internet.color(); +faker.internet.color(0, 0, 0); +faker.internet.mac(); +faker.internet.password(); +faker.internet.password(0, false, '#', 'foo'); + +faker.lorem.words(); +faker.lorem.words(0); +faker.lorem.sentence(); +faker.lorem.sentence(0, 0); +faker.lorem.sentences(); +faker.lorem.sentences(0); +faker.lorem.paragraph(); +faker.lorem.paragraph(0); +faker.lorem.paragraphs(); +faker.lorem.paragraphs(0, ''); + +faker.name.firstName(); +faker.name.firstName(0); +faker.name.lastName(); +faker.name.lastName(0); +faker.name.findName(); +faker.name.findName('', '', 0); +faker.name.jobTitle(); +faker.name.prefix(); +faker.name.suffix(); +faker.name.title(); +faker.name.jobDescriptor(); +faker.name.jobArea(); +faker.name.jobType(); + +faker.phone.phoneNumber(); +faker.phone.phoneNumber('#'); +faker.phone.phoneNumberFormat(); +// https://github.com/Marak/faker.js/blob/master/lib/phone_number.js#L9-L13 +faker.phone.phoneNumberFormat(0); +faker.phone.phoneFormats(); + +faker.random.number(); +faker.random.number(0); +faker.random.number({ + min: 0, + max: 0, + precision: 0 +}); +faker.random.arrayElement(); +faker.random.arrayElement(['foo', 'bar', 'quux']) +faker.random.objectElement(); +faker.random.objectElement({foo: 'bar', field: 'foo'}); +faker.random.uuid(); +faker.random.boolean(); \ No newline at end of file diff --git a/faker/faker.d.ts b/faker/faker.d.ts new file mode 100644 index 0000000000..b337c093e2 --- /dev/null +++ b/faker/faker.d.ts @@ -0,0 +1,260 @@ +// Type definitions for faker +// Project: http://marak.com/faker.js/ +// Definitions by: Bas Pennings +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module Faker { + interface Post { + words: string; + sentence: string; + sentences: string; + paragraph: string; + } + + interface Address { + street: string; + suite: string; + city: string; + zipcode: string; + geo: { + lat: string; + lon: string + } + } + + interface Transaction { + amount: number, + date: Date, + business: string, + name: string, + type: string, + account: string + } + + interface Company { + name: string; + catchPhrase: string; + bs: string; + } + + interface Card { + name: string; + username: string; + email: string; + address: Address; + phone: string, + website: string, + company: Company; + posts: Post[], + accountHistory: Transaction[] + } + + interface ContextualCard { + name: string; + username: string; + avatar: string; + email: string; + dob: Date; + phone: string; + address: Address; + website: string; + company: Company; + } + + interface UserCard { + name: string; + username: string; + email: string; + address: Address; + phone: string; + website: string; + company: Company; + } + + interface AddressGenerators { + zipCode(format?: string): string; + city(format?: number): string; + cityPrefix(): string; + citySuffix(): string; + streetName(): string; + streetAddress(useFullAddress?: boolean): string; + streetSuffix(): string; + streetPrefix(): string; + secondaryAddress(): string; + county(): string; + country(): string; + countryCode(): string; + state(useAbbr?: boolean): string; + stateAbbr(): string; + latitude(): string; + longitude(): string; + } + + interface CommerceGenerators { + color(): string; + department(): string; + productName(): string; + price(min?: number, max?: number, dec?: number, symbol?: string): string; + productAdjective(): string; + productMaterial(): string; + product(): string; + } + + interface CompanyGenerators { + suffixes(): string[]; + companyName(format?: number): string; + companySuffix(): string; + catchPhrase(): string; + bs(): string; + catchPhraseAdjective(): string; + catchPhraseDescriptor(): string; + catchPhraseNoun(): string; + bsAdjective(): string; + bsBuzz(): string; + bsNoun(): string; + } + + interface DateGenerators { + past(years?: number, refDate?: Date|string): Date; + future(years?: number, refDate?: Date|string): Date; + between(from: Date|string, to: Date|string): Date; + recent(days?: number): Date; + month(options?: { + abbr?: boolean, + context?: boolean + }): string; + weekday(options?: { + abbr?: boolean, + context?: boolean + }): string; + } + + interface FinanceGenerators { + account(length?: number): string; + accountName(): string; + mask(length?: number, parens?: boolean, elipsis?: boolean): string; + amount(min?: number, max?: number, dec?: number, symbol?: string): string; + transactionType(): string; + currencyCode(): string; + currencyName(): string; + currencySymbol(): string; + } + + interface HackerGenerators { + abbreviation(): string; + adjective(): string; + noun(): string; + verb(): string; + ingverb(): string; + phrase(): string; + } + + interface Helpers { + randomize(array?: Array): T; + slugify(str: string): string; + replaceSymbolWithNumber(s: string, symbol?: string): string; + replaceSymbols(str: string): string; + shuffle(array: Array): Array; + mustache(str: string, data: Object): string; + createCard(): Card; + contextualCard(): Card; + userCard(): UserCard; + createTransaction(): Transaction; + } + + interface ImageGenerators { + image(): string; + avator(): string; + imageUrl(width?: number, height?: number, category?: string): string; + abstract(width?: number, height?: number): string; + animals(width?: number, height?: number): string; + business(width?: number, height?: number): string; + cats(width?: number, height?: number): string; + city(width?: number, height?: number): string; + food(width?: number, height?: number): string; + nightlife(width?: number, height?: number): string; + fashion(width?: number, height?: number): string; + people(width?: number, height?: number): string; + nature(width?: number, height?: number): string; + sports(width?: number, height?: number): string; + technics(width?: number, height?: number): string; + transport(width?: number, height?: number): string; + } + + interface InternetGenerators { + avatar(): string; + email(firstName?: string, lastName?: string, provider?: string): string; + userName(firstName?: string, lastName?: string): string; + protocol(): string; + url(): string; + domainName(): string; + domainSuffix(): string; + domainWord(): string; + ip(): string; + userAgent(): string; + color(baseRed255?: number, baseGreen255?: number, baseBlue255?: number): string; + mac(): string; + password(len?: number, memorable?: boolean, pattern?: string, prefix?: string): string; + } + + interface LoremGenerators { + words(num?: number): string[]; + sentence(wordCount?: number, range?: number): string; + sentences(sentenceCount?: number): string; + paragraph(sentenceCount?: number): string; + paragraphs(paragraphCount?: number, separator?: string): string; + } + + interface NameGenerators { + firstName(gender?: number): string; + lastName(gender?: number): string; + findName(firstName?: string, lastName?: string, gender?: number): string; + jobTitle(): string; + prefix(): string; + suffix(): string; + title(): string; + jobDescriptor(): string; + jobArea(): string; + jobType(): string; + } + + interface PhoneGenerators { + phoneNumber(format?: string): string; + // https://github.com/Marak/faker.js/blob/master/lib/phone_number.js#L9-L13 + phoneNumberFormat(phoneFormatsArrayIndex?: number): string; + phoneFormats(): string; + } + + interface RandomGenerators { + number(max: number): number; + number(options?: { + min?: number, + max?: number, + precision?: number + }): number; + arrayElement(array?: Array): T; + objectElement(object?: Object, field?: string): any; + uuid(): string; + boolean(): boolean; + } +} + +declare module "faker" { + var faker: { + address: Faker.AddressGenerators; + commerce: Faker.CommerceGenerators; + company: Faker.CompanyGenerators; + date: Faker.DateGenerators; + finance: Faker.FinanceGenerators; + hacker: Faker.HackerGenerators; + helpers: Faker.Helpers; + image: Faker.ImageGenerators; + internet: Faker.InternetGenerators; + lorem: Faker.LoremGenerators; + name: Faker.NameGenerators; + phone: Faker.PhoneGenerators; + random: Faker.RandomGenerators; + } + + export = faker; +}