Home

Awesome

aleph-box Build Status

The Aleph's diameter was probably little more than an inch, but all space was there, actual and undiminished. Each thing (a mirror's face, let us say) was infinite things, since I distinctly saw it from every angle of the universe.

-- <cite>Jorge Luis Borges</cite>

<p align='center'> <img width='350' src='https://sudodoki.github.io/sudodoki-public-assets/aleph-box/logo-shadowy.png' alt="Aleph's Logo"> </p>

Reasoning behind this library

When working on client-side apps, which are either prototypes/POCs or are supposed to be thin clients, getting all the data from the server, the need for some random data to be used in code arise. There's a great lib Chance.js and there's a great service json-generator, which help greatly when in need of some random data for that matter, but you either need to know all the objects/properties you will need in advance, or you're going to use single object and call some methods on them.

aleph-box can be considered a plain chance.js wrapper based on ES6 Proxies, which gives you an opportunity to get random data by simply trying to access it in place, without need to call some methods or create new nested objects.

How to use

Installation for node.js

  1. Install library by running

     npm install sudodoki/aleph-box
    
  2. Require it in your code

     var Store = require('aleph-box')
     var store = new Store()
    

Installation for browser

  1. Install library by running

     bower install sudodoki/aleph-box
    
  2. Include bower_components/aleph-box/bundled.js into your page. You now have Aleph constructor globally available.

Usage

After instantiating Aleph constructor you will get object that will have either properties from standard API, like 'name', 'surname', 'bio', 'phone' or other nested Aleph objects (unless you assign something yourself). Thus, you can do something like

  var store = new Aleph();
  store.people
    .forEach(function(person){
      console.log(person.name + ' ' + person.surname);
    });

There's an example of using aleph-box together with AngularJS to display simple contact book. Be sure to run in compatible browser.

Compatibility

This library is impelemented using proxies, so it will run in environments, that have support for those. Generally speaking, it's Node behind --harmony flag and FF. This library also leverages harmony-reflect for getting some normalized goodies across different environments.

API

Chance.js mapping

There's a mapping for property name in Aleph & which method would be called on chance library.

is/are properties

Aleph helps you stub properties that follow good programming practice of naming boolean values with is/are/should/can prefixes. So, user.canEdit will return true/false.

Todos

There're some sort of roadmap I would like to see implemented to consider this thing done & usable, would appreciate some feedback and/or contributions.