@atomone/chronoconstructor
v1.0.2
Published
Chrono Constructor is an event sourcing action mapper and parser.
Readme
ChronoConstructor
An web compatible action parsing library to bind prefix data to functions to reconstruct state on client-side.
Install
pnpm i @atomone/chronoconstructorUsage
Below is a simple example usage for adding and subtracting and then storing the results mapped to a transaction hash.
import { ChronoConstructor, extractMemoContent } from '@atomone/chronoconstructor';
const state = new ChronoConstructor<{ [hash: string]: string }>();
// example.add("5", "5");
state.addAction('add', (dataSet, action) => {
const [arg1, arg2] = extractMemoContent(action.memo, 'example.add');
if (!arg1 || !arg2) {
console.warn(`Skipped ${action.hash}, content is missing args`);
return;
}
const result = parseFloat(arg1) + parseFloat(arg2);
dataSet[action.hash] = result;
});
// example.sub("5", "5");
state.addAction('sub', (dataSet, action) => {
const [arg1, arg2] = extractMemoContent(action.memo, 'example.sub');
if (!arg1 || !arg2) {
console.warn(`Skipped ${action.hash}, content is missing args`);
return;
}
const result = parseFloat(arg1) - parseFloat(arg2);
dataSet[action.hash] = result;
});
const reconstructedState = await chronoConstructor.parse(actionDataGoesHere, originalStateGoesHere);