Skip to content

JSONScript/jsonscript-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsonscript-js

JavaScript interpreter for JSONScript

Build Status npm version Code Climate Coverage Status

Install

npm install jsonscript-js

Getting started

Sequential execution of script commands:

var JSONScript = require('jsonscript-js');
var js = JSONScript();

js.addExecutor('router', getRouter());

var script = [
  { '$$router': { path: '/resource/1' } },
  { '$$router.put': { path: '/resource/1', body: { test: 'test' } } }
];

js.evaluate(script).then(function (res) {
  console.log(res);
  /**
   *  [
   *    { response: 'loaded /resource/1' },
   *    { response: 'updated /resource/1 with {"test":"test"}' }
   *  ]
   */
});


function getRouter() {
  function router(args) {
    return router.get(args);
  }

  router.get = function (args) {
    var response = 'loaded ' + args.path;
    return Promise.resolve({ response: response });
  };

  router.put = function (args) {
    var body = JSON.stringify(args.body);
    var response = 'updated ' + args.path + ' with ' + body;
    return Promise.resolve({ response: response });
  };

  return router;
}

In the example above the second request is sent only after the first result is received, so you can both get the current resource value and and update it in one script call.

Parallel execution:

var script = {
  res1: { '$$router.get': { path: '/resource/1' } },
  res2: { '$$router.get': { path: '/resource/2' } }
};

js.evaluate(script).then(function (res) {
  console.log(res);
  /**
   *  {
   *    res1: { response: 'loaded /resource/1' },
   *    res2: { response: 'loaded /resource/2' }
   *  }
   */
});

In the example above the second request is sent in parallel, without waiting for the response from the first request.

Language

See JSONScript language documentation for more information.

About

JSONScript interpreter in JavaScript

Resources

License

Stars

Watchers

Forks

Packages

No packages published