Skip to content

worker-codes/jsonfarmer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JSONFarmer easily generate large amounts of fake JSON with GraphQL syntax

Features

  • Generate JSON using graphql syntax.
  • Generate random strings, numbers, name, email, city, color, etc
  • Generate unlimited depth.
  • Need some mock data to test your app.
  • Compatible in nodejs and browsers.
  • Using Faker.js and Chance.js

Demo

https://jsonfarmer.netlify.com/

JSONFarmer

GitHub stars GitHub forks GitHub issues GitHub license

Install JSONFarmer

npm install jsonfarmer
yarn add jsonfarmer

How to use JSONFarmer  

let { generate, savetoFile } = require('jsonfarmer');

const query = /* GraphQL */ `
{
  suppliers @repeat(min: 1, max: 1) {
    companyName: company
    contactName: findName
    contactTitle: jobTitle
    email: email(domain: "google.com")
    city: city
    state: state(useAbbr: true)
    country: country
    phone: phone
    fax: phone
    products {
      create @repeat(min: 5, max: 15) {
        name: productName
        modelNumber: natural(max: 999999)
        unitPrice: price(symbol: "$", min: 50, max: 4000)
        color: color
        material: productMaterial
        isDiscontinued: bool
        image: image
      }
    }
  }
}
`;

//generate JSON To variable
let generateJSON = generate(query);

//Print generated JSON To conosle
console.dir( generateJSON, { depth:null} );

//Save generated JSON To file
savetoFile(query, './suppliers.json');

Available Function

Arguments are optional

{
    zipCode: zipCode(format:string)
    city: city #Generate a random city
    cityPrefix: cityPrefix
    citySuffix: citySuffix
    streetName: streetName
    streetAddress: streetAddress(useFullAddress:bool)
    streetSuffix: streetSuffix
    streetPrefix: streetPrefix
    secondaryAddress: secondaryAddress
    county: county
    country: country(full:boolean) #Return a random country. By default, returns only the 2 letter ISO 3166-1 code for the country.
    countryCode: countryCode
    state: state(useAbbr:bool)
    stateAbbr: stateAbbr
    latitude: latitude(fixed:number,min:number,max:number) #Generate a random latitude.
    longitude: longitude(fixed:number,min:number,max:number) #Generate a random longitude.
    color: color(format:string,grayscale:boolean,casing:string) #Return a random color.
    department: department
    productName: productName
    price: price(min:number,max:number,dec:number,symbol:string)
    productAdjective: productAdjective
    productMaterial: productMaterial
    product: product
    suffixes: suffixes
    companyName: companyName(format:string)
    companySuffix: companySuffix
    catchPhrase: catchPhrase
    bs: bs
    catchPhraseAdjective: catchPhraseAdjective
    catchPhraseDescriptor: catchPhraseDescriptor
    catchPhraseNoun: catchPhraseNoun
    bsAdjective: bsAdjective
    bsBuzz: bsBuzz
    bsNoun: bsNoun
    column: column
    type: type
    collation: collation
    engine: engine
    past: past(years:number,refDate:date)
    future: future(years:number,refDate:date)
    between: between(from:date,to:date)
    recent: recent(days:number)
    soon: soon
    month: month #Generate a random month
    weekday: weekday(weekday_only:boolean) #Return a weekday
    account: account(length:number)
    accountName: accountName
    mask: mask(length:number,parens:boolean,ellipsis:boolean)
    amount: amount(min:number,max:number,dec:number,symbol:string)
    transactionType: transactionType
    currencyCode: currencyCode
    currencyName: currencyName
    currencySymbol: currencySymbol
    bitcoinAddress: bitcoinAddress
    ethereumAddress: ethereumAddress
    iban: iban
    bic: bic
    abbreviation: abbreviation
    adjective: adjective
    noun: noun
    verb: verb
    ingverb: ingverb
    phrase: phrase
    randomize: randomize
    slugify: slugify
    replaceSymbolWithNumber: replaceSymbolWithNumber
    replaceSymbols: replaceSymbols
    shuffle: shuffle
    mustache: mustache
    createCard: createCard
    contextualCard: contextualCard
    userCard: userCard
    createTransaction: createTransaction
    image: image
    avatar: avatar
    dataurl: dataurl(width:number,height:number)
    imageUrl: imageUrl(width:number,height:number,category:string,randomize:boolean)
    abstract: abstract(width:number,height:number,randomize:boolean)
    animals: animals(width:number,height:number,randomize:boolean)
    business: business(width:number,height:number,randomize:boolean)
    cats: cats(width:number,height:number,randomize:boolean)
    food: food(width:number,height:number,randomize:boolean)
    nightlife: nightlife(width:number,height:number,randomize:boolean)
    fashion: fashion(width:number,height:number,randomize:boolean)
    people: people(width:number,height:number,randomize:boolean)
    nature: nature(width:number,height:number,randomize:boolean)
    sports: sports(width:number,height:number,randomize:boolean)
    technics: technics(width:number,height:number,randomize:boolean)
    transport: transport(width:number,height:number,randomize:boolean)
    dataUri: dataUri(width:number,height:number,randomize:boolean)
    email: email(domain:string) #Return a random email with a random domain.
    exampleEmail: exampleEmail(firstName:string,lastName:string)
    userName: userName(firstName:string,lastName:string)
    protocol: protocol
    url: url(protocol:string,domain:string,domain_prefix:string,path:string,extensions:string) #Return a random url.
    domainName: domainName
    domainSuffix: domainSuffix
    domainWord: domainWord
    ip: ip #Return a random IP Address.
    ipv6: ipv6 #Return a random IPv6 Address.
    userAgent: userAgent
    mac: mac
    password: password(len:number,memorable:boolean,pattern:string,prefix:string)
    lines: lines(lineCount:number)
    word: word(type:string)
    words: words(count:number)
    sentence: sentence(wordCount:number,range:number)
    slug: slug(wordCount:number)
    sentences: sentences(sentenceCount:number,separator:string)
    paragraph: paragraph(sentenceCount:number)
    paragraphs: paragraphs(paragraphCount:number,separator:string)
    text: text
    firstName: firstName(gender:string)
    lastName: lastName(gender:string)
    findName: findName(firstName:string,lastName:string,gender:string)
    jobTitle: jobTitle
    prefix: prefix(full:boolean,gender:string) #Generate a random name prefix
    suffix: suffix(full:boolean) #Generate a random name suffix
    title: title
    jobDescriptor: jobDescriptor
    jobArea: jobArea
    jobType: jobType
    phoneNumber: phoneNumber(format:string)
    phoneNumberFormat: phoneNumberFormat(phoneFormatsArrayIndex:number)
    phoneFormats: phoneFormats
    number: number
    arrayElement: arrayElement(array:array)
    objectElement: objectElement(object:object,field:mixed)
    uuid: uuid
    boolean: boolean
    locale: locale(region:boolean) #Generate a random ISO-639-1 language code
    alphaNumeric: alphaNumeric(count:number)
    hexaDecimal: hexaDecimal
    fileName: fileName(ext:string,type:string)
    commonFileName: commonFileName(ext:string,type:string)
    mimeType: mimeType
    commonFileType: commonFileType
    commonFileExt: commonFileExt(mimeType:string)
    fileType: fileType
    fileExt: fileExt(count:number)
    directoryPath: directoryPath
    filePath: filePath
    semver: semver
    bool: bool(likelihood:number) #Return a random boolean value (true or false).
    falsy: falsy(pool:array) #Return a random falsy value (false, null, undefined, 0, NaN, '').
    character: character(pool:string,alpha:boolean,numeric:boolean,casing:string,symbols:boolean) #Return a random character.
    floating: floating(fixed:number,min:number,max:number) #Return a random floating point number. By default it will return a fixed number of at most 4 digits after the decimal.
    integer: integer(min:number,max:number) #Return a random integer. range: -9007199254740991 to 9007199254740991
    letter: letter(casing:string) #Return a random letter.
    natural: natural(min:number,max:number,exclude:array) #Return a natural number. range: 0 to 9007199254740991
    prime: prime(min:number,max:number) #Return a prime number. default range: 0 to 10000
    string: string(length:number,pool:string,alpha:boolean,numeric:boolean,casing:string,symbols:boolean) #Return a random string.
    paragraph_c: paragraph_c(sentences:number) #Return a random paragraph generated from sentences populated by semi-pronounceable random (nonsense) words.
    sentence_c: sentence_c(words:number) #Return a random sentence populated by semi-pronounceable random (nonsense) words.
    syllable: syllable #Return a semi-speakable syllable, 2 or 3 letters
    word_c: word_c(syllables:number,length:number) #Return a semi-pronounceable random (nonsense) word.
    age: age(type:string) #Generate a random age
    birthday: birthday(string:boolean,american:boolean,type:string) #Generate a random birthday
    cf: cf #Generate a random Italian social security number (Codice Fiscale).
    cpf: cpf #Generate a random Brazilian tax id.
    first: first(gender:boolean,nationality:string) #Generate a random first name
    gender: gender(extraGenders:array) #Generate a random gender
    last: last(nationality:string) #Generate a random last name
    name: name(middle:boolean,middle_initial:boolean,prefix:boolean,suffix:boolean,gender:boolean,nationality:string) #Generate a random name
    ssn: ssn(ssnFour:boolean,dashes:boolean) #Generate a random social security number.
    animal: animal(type:string) #Generate a random animal
    android_id: android_id #Return a random GCM registration ID.
    apple_token: apple_token #Return a random Apple Push Token
    bb_pin: bb_pin #Return a random BlackBerry Device PIN
    wp7_anid: wp7_anid #Return a random Windows Phone 7 ANID
    wp8_anid2: wp8_anid2 #Return a random Windows Phone 8 ANID2
    avatar_c: avatar_c(protocol:string,extensions:string,email:string) #Return a URL to a random avatar from Gravatar.
    company: company #Return a random company name.
    domain: domain(tld:string) #Return a random domain with a random tld.
    fbid: fbid #Return a random Facebook id, aka fbid.
    google_analytics: google_analytics #Return a random Google Analytics tracking code. Takes the form 'UA-123456-01'
    hashtag: hashtag #Return a random hashtag. This is a string of the form '#thisisahashtag'.
    klout: klout #Return a random Klout score. Range 1-99.
    profession: profession(rank:boolean) #Return a random profession. Rank is false by default.
    tld: tld #Return a random tld (Top Level Domain) from the set: ['com', 'org', 'edu', 'gov', 'uk', 'net', 'io']
    twitter: twitter #Return a random twitter handle.
    address: address(short_suffix:boolean) #Generate a random street address
    altitude: altitude(fixed:number,max:number) #Generate a random altitude, in meters.
    areacode: areacode #Generate a random area code
    coordinates: coordinates(fixed:number) #Generate random coordinates, which are latitude and longitude, comma separated.
    depth: depth(fixed:number,min:number) #Generate a random depth, in meters. Depths are always negative
    geohash: geohash(length:number) #Generate a random geohash
    phone: phone(formatted:boolean,country:string,mobile:string) #Generate a random phone By default conforms to NANP for a proper US phone number.
    postal: postal #Return a Canadian Postal code. Returned postal code is valid with respect to the Postal District (first character) and format only.
    postcode: postcode #Generate a random (U.K.) postcode. Returned postcode is valid with respect to the Postcode Area (first characters) and format only.
    province: province(full:boolean) #Return a random province.
    state_c: state_c(full:boolean,territories:boolean,armed_forces:boolean,us_states_and_dc:boolean,country:string) #Return a random state.
    street: street(short_suffix:boolean,syllables:number) #Generate a random street
    zip: zip(plusfour:boolean) #Generate a random (U.S.) zip code.
    ampm: ampm #Return am or pm.
    date: date(string:boolean,american:boolean) #Generate a random date By default, returns an actual Date object
    hammertime: hammertime #Generate a random hammertime. Hammertime is the name given to a Unix time with milliseconds. Which is the same as saying the number of milliseconds since 1970. It has finer granularity than a normal Unix timestamp and thus is often used in realtime applications.
    hour: hour(twentyfour:boolean) #Generate a random hour
    millisecond: millisecond #Generate a random millisecond
    minute: minute #Generate a random minute
    second: second #Generate a random second
    timestamp: timestamp #Generate a random timestamp
    timezone: timezone #Generate a random timezone object
    year: year(min:number,min:number) #Generate a random year
    cc: cc(type:string) #Generate a random credit card number. This card number will pass the Luhn algorithm so it looks like a legit card.
    cc_type: cc_type(raw:boolean) #Return a random credit card type.
    currency: currency #Generate a random currency.
    currency_pair: currency_pair #Generate a currency pair. Handy for simulating currency conversions. Guaranteed to return a unique pair (and not the same currency twice).
    dollar: dollar(max:number) #Return a random dollar amount.
    euro: euro(max:number) #Return a random euro amount
    exp: exp(raw:boolean) #Generate a random credit card expiration.
    exp_month: exp_month(future:boolean) #Generate a random credit card expiration month.
    exp_year: exp_year #Returns a random year between today and 10 years in the future.
    coin: coin(extraGenders:array) #Flip a coin!
    dice: dice(extraGenders:array) #Return a value equal to the roll of a die.
    guid: guid(version:number) #Return a random guid, version 5 by default.
    hash: hash(length:number,casing:string) #Return a random hex hash
    normal: normal(mean:number,deviation:number) #Return a normally-distributed random variate.
    radio: radio(side:string) #Return a random hex hash
    rpg: rpg(sum:boolean) #Given an input looking like #d#, where the first # is the number of dice to roll and the second # is the max of each die, returns an array of dice values.
    tv: tv(side:string) #Return a random hex hash
    validator: validator(extraGenders:array) #Return a random hex hash  
}

Acknowledgements & Thanks

  • graphql
  • graphql-anywhere;
  • fakerjs
  • chancejs

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published