2.0.15 • Published 9 months ago
@csbenjamin/ymmutable v2.0.15
Ymmutable
Mix between @syncedstore and Automerge. Using yjs in background.
import * as Y from 'yjs';
import {Ymmutable} from '@csbenjamin/ymmutable'
interface MyAmazingData {
someObject: {hello: string};
todoList: {description: string, done: boolean}[];
}
let store = Ymmutable<MyAmazingData>({someObject: 'object', todoList: 'array'});
expect(store.immutable.someObject).equal({});
expect(store.immutable.todoList).equal([]);
expect(store.doc instanceof Y.Doc).toBe(true);
expect(store.undoManager instanceof Y.UndoManager).toBe(true);
store.mutate(data => {
data.someObject.hello = 'World!';
data.todoList.push({descript: 'Share this with the World', done: false});
data.todoList.push({descript: 'Share this with the World 2', done: false});
});
expect(store.immutable.someObject).equal({hello: 'World!'});
expect(store.immutable.todoList[0]).equal([{descript: 'Share this with the World', done: false}]);
const oldImmutable = store.immutable;
store.mutate(data => {
data.todoList[0].done = true;
});
expect(store.immutable.todoList[0]).equal([{descript: 'Share this with the World', done: true}]);
expect(store.immutable === oldImmutable).toBe(false);
expect(store.immutable.someObject === oldImmutable.someObject).toBe(true);
expect(store.immutable.todoList === oldImmutable.todoList).toBe(false);
expect(store.immutable.todoList[0] === oldImmutable.todoList[0]).toBe(false);
expect(store.immutable.todoList[1] === oldImmutable.todoList[1]).toBe(true);
store.undoManager.undo();
expect(store.immutable.todoList[0]).equal([{descript: 'Share this with the World', done: false}]);
store.undoManager.undo();
expect(store.immutable.someObject).equal({});
expect(store.immutable.todoList).equal([]);2.0.15
9 months ago
2.0.3
1 year ago
2.0.2
1 year ago
2.0.13
9 months ago
2.0.5
11 months ago
2.0.14
9 months ago
2.0.4
1 year ago
2.0.11
10 months ago
2.0.7
10 months ago
2.0.12
10 months ago
2.0.6
11 months ago
2.0.9
10 months ago
2.0.10
10 months ago
2.0.8
10 months ago
2.0.1
1 year ago
2.0.0
1 year ago
1.1.4
3 years ago
1.1.1
3 years ago
1.1.0
3 years ago
1.1.3
3 years ago
1.1.2
3 years ago
1.0.6
3 years ago
1.0.5
3 years ago
1.0.4
3 years ago
1.0.3
3 years ago
1.0.2
3 years ago
1.0.1
3 years ago
1.0.0
3 years ago