node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »

stratumn-sdk

Stratumn SDK for Javascript

npm version Bower version build status

Installation

Browser

<!-- Polyfill for browser compatibility -->
<script src="https://libs.stratumn.com/babel-polyfill.min.js"></script>
<!-- Actual Stratumn SDK -->
<script src="https://libs.stratumn.com/stratumn-sdk.min.js"></script>

If you want a specific version, include https://libs.stratumn.com/stratumn-sdk-{version}.min.js instead (for instance https://libs.stratumn.com/stratumn-sdk-0.4.1.min.js).

Node.js

$ npm install stratumn-sdk
var StratumnSDK = require('stratumn-sdk');

Quickstart

StratumnSDK.getApplication('quickstart')
  .then(function(app) {
    console.log(app);
    // Create a new map, you can pass arguments to init 
    return app.createMap('My message map');
  })
  .then(function(res) {
    // You can call a transition function like a regular function 
    return res.addMessage('Hello, World');
  })
  .then(function(res) {
    console.log(res.link);
    console.log(res.meta);
  })
  .catch(function(err) {
    // Handle errors 
  });

Reference

StratumnSDK#getApplication(appName)

Returns a promise that resolves with an application.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    console.log(app.id);
  })
  .catch(function(err) {
    // Handle errors 
  });

Application#createMap(...args)

Returns a promise that resolves with a new map.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.createMap('A new map');
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Application#getLink(hash)

Returns a promise that resolves with an existing link.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getLink('aee5427');
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Application#getMap(mapId, tags)

Returns a promise that resolves with the meta data of the links in a map, optionally filters by tags.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getMap('56ef33', ['tag1', 'tag2']);
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Application#getBranches(linkHash, tags)

Returns a promise that resolves with the meta data of the links whose previous hashes are the given hash, optionally filters by tags.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getBranches('abcdef', ['tag1', 'tag2']);
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Application#getMapIds()

Returns a promise that resolves with all the map ids in this application.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getMapIds();
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Link#getPrev()

Returns a promise that resolves with the previous link of a link.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getLink('aee5427');
  })
  .then(function(res) {
    return res.getPrev();
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Link#load()

Returns a promise that resolves with the full link. Can be useful when you only have the meta data of links.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getBranches('aee5427');
  })
  .then(function(res) {
    return Promise.all(res.map(function(link) { return link.load(); }));
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Link#getBranches(tags)

Returns a promise that resolves with the meta data of the links whose previous hashes are the hash of the link, optionally filters by tags.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getLink('aee5427');
  })
  .then(function(res) {
    return res.getBranches(['tag1']);
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Link#:transitionFunction(...args)

Executes a transition function and returns a promise that resolves with a new link.

StratumnSDK
  .getApplication('quickstart')
  .then(function(app) {
    return app.getLink('aee5427');
  })
  .then(function(res) {
    return res.addMessage('Hello, World!');
  })
  .then(function(res) {
    console.log(res);
  })
  .catch(function(err) {
    // Handle errors 
  });

Development

Install dependencies:

$ npm install

Build:

$ npm run build:all

Test:

$ npm test

Test coverage:

$ npm run test:cov
$ open coverage/lcov-report/index.html

Lint:

$ npm run lint

Lint and test:

$ npm run check

Bump version:

$ npm version major|minor|patch

Publish:

$ npm publish