Coder Social home page Coder Social logo

topaz's Introduction

Introduction

Topaz is a lightweight asynchronous module loader based on promises. It has no dependency on a specific promise library.

Quick start

npm install topaz

Then:

var Topaz = require('topaz');
var Promise = require('bluebird'); // Or your favorite promise library

// fetch is a function that given an id (String) it returns a promise
// that is fulfilled with the module named 'id'.
var fetch = function (id) {
  if (id === 'a') {
    return Promise.resolve({
      dependencies: ['b'],
      execute: function (b) {
        return Promise.resolve(1 + b);
      }
    });
  }

  if (id === 'b') {
    return Promise.resolve({
      dependencies: [],
      execute: function () {
        return Promise.resolve(2);
      }
    });
  }

  return Promise.reject(Error("Cannot find module " + id));
};

// Topaz is a function that given a fetch function and a promise
// library, it returns a resolve function.
var resolve = Topaz({
  fetch: fetch,
  Promise: Promise
});

// resolve is a function that given an array of ids, it returns a
// promise that is fulfilled with an array containing the requested
// modules.
resolve(['a']).spread(function (a) {
  console.log('a =', a); //  => 3
});

API

Topaz :: options (Object) -> resolve (Function)

Given a fetch function and a promise library, returns a resolve function.

options.fetch :: id (String) -> Promise (Object)

Given an id, returns a promise that is fulfilled with the module named 'id'.

options.Promise :: Promise library (Object)

A promise library such as Bluebird or Q.

resolve :: ids (Array) -> Promise (Object)

Given an array of ids, returns a promise that is fulfilled with an array containing the modules

Author

Mathieu Larose [email protected] (http://mathieularose.com)

topaz's People

Contributors

larose avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.