Skip to content

asacreative/firedata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

firedata


Description

Firedata is a json builder that support asynchronous operation. The value of the keys can be scalar, function and promise.

Requirements

  • node v0.12 or newer

Installation

npm :

npm install -g firedata

manual :

git clone https://github.com/asacreative/firedata
cd firedata
npm install
npm link

Usage

firedata path/to/config.js path/to/output.json

Example

(function() {

    'use strict';

    var fs = require('fs')

    var fetch = require('node-fetch')

    var config = {

        users: {

            github: function() {

                return ['user', 'user1', function() {

                    return ['user3', new Promise(function(resolve, reject) {

                        fetch('https://api.github.com/users/asacreative').then(function(res) {

                            return res.json();

                        }).then(function(body) {

                            resolve(body);
                        });
                    })]
                }]
            },

            others: ['user4', 'user5', 'user6'],

            strings: new Promise(function(resolve, reject) {

                setTimeout(function() {

                    resolve(['this is new string', 'another new string', new Promise(function(resolve) {

                        setTimeout(function() {

                            resolve(['123', 321, 125123])

                        }, 2000)

                    })])

                }, 1000)
            }),

            directString: 'this is direct string value'
        }
    }

    module.exports = config;

}).call(this)

Result

{
    "users": {
        "github": ["user", "user1", ["user3", {
            "login": "asacreative",
            "id": 2607052,
            "avatar_url": "https://avatars.githubusercontent.com/u/2607052?v=3",
            "gravatar_id": "",
            "url": "https://api.github.com/users/asacreative",
            "html_url": "https://github.com/asacreative",
            "followers_url": "https://api.github.com/users/asacreative/followers",
            "following_url": "https://api.github.com/users/asacreative/following{/other_user}",
            "gists_url": "https://api.github.com/users/asacreative/gists{/gist_id}",
            "starred_url": "https://api.github.com/users/asacreative/starred{/owner}{/repo}",
            "subscriptions_url": "https://api.github.com/users/asacreative/subscriptions",
            "organizations_url": "https://api.github.com/users/asacreative/orgs",
            "repos_url": "https://api.github.com/users/asacreative/repos",
            "events_url": "https://api.github.com/users/asacreative/events{/privacy}",
            "received_events_url": "https://api.github.com/users/asacreative/received_events",
            "type": "Organization",
            "site_admin": false,
            "name": "Asacreative",
            "company": null,
            "blog": "http://www.nomoring.com",
            "location": "Indonesia",
            "email": "info@asacreative.com",
            "hireable": null,
            "bio": "Saas Startup",
            "public_repos": 1,
            "public_gists": 0,
            "followers": 0,
            "following": 0,
            "created_at": "2012-10-20T15:22:19Z",
            "updated_at": "2015-10-11T12:24:56Z"
        }]],
        "others": ["user4", "user5", "user6"],
        "strings": ["this is new string", "another new string", ["123", 321, 125123]],
        "directString": "this is direct string value"
    }
}

all path is relative to current directory

TODO

  • Add more detailed README

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published