json-data-services

3.0.7 • Public • Published

JSON Data Services

Combines multiple services to help working with json-data manipulation, synchronisation and validation.

  • The DataService manages application state and retrieval. Additional supports undo.
  • The ValidationService validates any data by a given JSON-schema.
  • The SchemaService returns the JSON-schema at the given JSON-pointer location

All services offer an interface based on JSON-pointer.

Services

DataService

Data can only be changed via the data-service methods. Each state is tracked within the services, enabling und/redo functionality.

// get data at json-pointer
const dataService = new DataService(new State(), jsonData);
dataService.get("#/content/header/title");

Data manipulation methods

// Set data at given path
dataService.set(pointer, data);
// Set data at given path
dataService.delete(pointer, data);
// Set last set/delete action
dataService.undo();
// redo last undo action
dataService.redo();

DataService events

// called before any data changes of the action
dataService.on("beforeUpdate", callback)
// called after data changes, before observe events 
dataService.on("afterUpdate", callback) 
// Events bubble up to root pointer (#), # is last event
dataService.observe(pointer, callback, true) 

Dataservice event object

// callbacks
function callback(event) {}
// event object
{
    action: "SET_DATA", // @see store/actions.ActionTypes
    pointer: "#/pointer/location",
    parentPointer: "#/pointer",
}

ValidationService

Sends error notifications on changed data.

// create a new data validation service
const validationService = new ValidationService(new State(), jsonSchema)
// called before a next validation
validationService.on("beforeValidation", callback)     
// Validation Events bubble up to root pointer (#)
validationService.observe(pointer, callback, true)   
// called after notifying observers 
validationService.on("afterValidation", callback)    
// validate data
validationService.validate(data).then((errors) => {})

Readme

Keywords

none

Package Sidebar

Install

npm i json-data-services

Weekly Downloads

4

Version

3.0.7

License

ISC

Last publish

Collaborators

  • benurb
  • sueddeutsche