UNPKG

stratumn-sdk

Version:
297 lines (238 loc) 5.58 kB
# Stratumn SDK for Javascript [![npm version](https://badge.fury.io/js/stratumn-sdk.svg)](https://badge.fury.io/js/stratumn-sdk) [![Bower version](https://badge.fury.io/bo/stratumn-sdk.svg)](https://badge.fury.io/bo/stratumn-sdk) [![build status](https://travis-ci.org/stratumn/stratumn-sdk-js.svg?branch=master)](https://travis-ci.org/stratumn/stratumn-sdk-js.svg?branch=master) ## Installation ### Browser ```html <!-- 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 ``` ```javascript var StratumnSDK = require('stratumn-sdk'); ``` ## Quickstart ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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. ```javascript 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 ```