UNPKG

chainscript

Version:
207 lines (149 loc) 4.93 kB
# API Interact with the [chainscript.io](http://chainscript.io) API using Javascript. ## Install To install and save in your current project, use: ```bash $ npm install --save chainscript ``` ## Basic usage ### Creating a new script ```js var Chainscript = require('chainscript'); // You pass the initial script new Chainscript({body: {content: {name: 'My Document'}}}) // Add a snapshot command .snapshot() // Add a notarize command .notarize() // Add a send mail command .email('test@email.address') // Run the script (returns a promise) .run() .then(function(cs) { console.log(cs.toJSON()); }) .catch(function(err) { console.error(err.message); }); ``` ### Working with a previously snapshotted script ```js var Chainscript = require('chainscript'); Chainscript.load('chainscript:document:3940c155-d17d-421a-b34e-8bf5a458299e') .then(function(cs) { console.log(cs.toJSON()); // You can add commands to the loaded script and run the script return cs .email('test@email.address') .run(); }).then(function(cs) { // New script executed with added commands console.log(cs.toJSON()); }) .catch(function(err) { console.error(err.message); }); ``` ## Reference ### Chainscript #### new Chainscript(script, immutable = false) Creates a new Chainscript from a JSON object. If `immutable` is `true`, **THE INSTANCE IS IMMUTABLE**. It is never modified after initialization. Adding commands to a script returns a new instance. #### Chainscript.load(uuid, immutable = false) Loads an existing script. Returns a promise that resolves with an instance of `Chainscript`. #### Chainscript#get(path) Returns the value at specified path, or `undefined` if the path doesn't exist. Ex: ```js var value = new Chainscript({body: {content: {name: 'My Document'}}}) .get('body.content.name')); console.log(value); // My Document ``` #### Chainscript#set(path, value) Sets the value of a key at the specified path. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. #### Chainscript#snapshot() Adds a `snapshot` command to a script. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. #### Chainscript#update(updates) Adds an `update` command to a script. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. #### Chainscript#notarize() Adds a `notarize` command to a script. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. #### Chainscript#email(to, [subject]) Adds a `send_email` command to a script. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. #### Chainscript#change(fn) Adds an `update` command to a script that applies granular updates to the content. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. Ex: ```js new Chainscript({body: {content: {name: 'My Document', val: true}}}) .change(function(content) { delete content.val; content.name += ' V2'; content.meta = { author: 'Stephan Florquin', time: Date.now() }; }) .run() .then(function(cs) { console.log(cs.get('body.content')); }) .catch(function(err) { console.error(err.message); }); ``` #### Chainscript#delta(content) Adds an `update` command to a script that applies the necessary changes to update the current content to the given content. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. Ex: ```js var content = { name: 'My Document' }; var cs = new Chainscript({body: {content: content}}); content.name = 'My Document V2'; content.meta = { author: 'Stephan Florquin', time: Date.now() }; cs.delta(content).run().then(function() { console.log(cs.get('body.content')); }); ``` #### Chainscript#sign(wif) Adds a sign_content command to the script. The private key must be in WIF format. Returns a new instance of `Chainscript` if immutable, otherwise returns the instance. #### Chainscript#toJSON() Returns the script as a JSON object. #### Chainscript#run() Runs the Chainscript. Returns a promise that resolves with a new instance of `Chainscript` if immutable, otherwise with the instance. #### Chainscript#clone() Clones Chainscript. Returns a new instance of `Chainscript`. #### Mutable extensions This only applies when `immutable` is `false` (the default value). You may change the script directly via `Chainscript#script`. If you change the body content directly, an update command will be issued if needed **before other commands** when you call `run`. ```js var cs = new Chainscript({body: {content: {name: 'My Document'}}}); cs.script.body.content.name += ' V2'; cs.script.body.content.meta = { author: 'Stephan Florquin', time: Date.now() }; script .run() .then(function() { console.log(script.toJSON()); }); ```