json-data-services
v3.0.7
Published
Json-data manipulation, synchronisation and validation services
Downloads
9
Readme
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) => {})