Merge branch 'main' of github.com:yjs/yjs

This commit is contained in:
Kevin Jahns
2022-02-03 21:15:18 +01:00
4 changed files with 11 additions and 11 deletions
+2 -2
View File
@@ -153,7 +153,7 @@ an incremental document updates that allows clients to sync with each other.
The update object is an Uint8Array that efficiently encodes `Item` objects and The update object is an Uint8Array that efficiently encodes `Item` objects and
the delete set. the delete set.
* `state vector`: A state vector defines the know state of each user (a set of * `state vector`: A state vector defines the know state of each user (a set of
tubles `(client, clock)`). This object is also efficiently encoded as a tuples `(client, clock)`). This object is also efficiently encoded as a
Uint8Array. Uint8Array.
The client can ask a remote client for missing document updates by sending The client can ask a remote client for missing document updates by sending
@@ -168,7 +168,7 @@ An implementation of the syncing process is in
## Snapshots ## Snapshots
A snapshot can be used to restore an old document state. It is a `state vector` A snapshot can be used to restore an old document state. It is a `state vector`
\+ `delete set`. I client can restore an old document state by iterating through \+ `delete set`. A client can restore an old document state by iterating through
the sequence CRDT and ignoring all Items that have an `id.clock > the sequence CRDT and ignoring all Items that have an `id.clock >
stateVector[id.client].clock`. Instead of using `item.deleted` the client will stateVector[id.client].clock`. Instead of using `item.deleted` the client will
use the delete set to find out if an item was deleted or not. use the delete set to find out if an item was deleted or not.
+7 -7
View File
@@ -56,14 +56,10 @@ Sponsorship also comes with special perks! [![Become a Sponsor](https://img.shie
* [Input](https://input.com/) A collaborative note taking app. :star2: * [Input](https://input.com/) A collaborative note taking app. :star2:
* [Room.sh](https://room.sh/) A meeting application with integrated * [Room.sh](https://room.sh/) A meeting application with integrated
collaborative drawing, editing, and coding tools. :star: collaborative drawing, editing, and coding tools. :star:
* [https://coronavirustechhandbook.com/](https://coronavirustechhandbook.com/)
A collaborative wiki that is edited by thousands of different people to work
on a rapid and sophisticated response to the coronavirus outbreak and
subsequent impacts. :star:
* [Nimbus Note](https://nimbusweb.me/note.php) A note-taking app designed by * [Nimbus Note](https://nimbusweb.me/note.php) A note-taking app designed by
Nimbus Web. Nimbus Web.
* [JoeDocs](https://joedocs.com/) An open collaborative wiki. * [JoeDocs](https://joedocs.com/) An open collaborative wiki.
* [Pluxbox RadioManager](https://pluxbox.com/) A web-based app to * [Pluxbox RadioManager](https://getradiomanager.com/) A web-based app to
collaboratively organize radio broadcasts. collaboratively organize radio broadcasts.
* [Alldone](https://alldone.app/) A next-gen project management and * [Alldone](https://alldone.app/) A next-gen project management and
collaboration platform. collaboration platform.
@@ -99,7 +95,7 @@ are implemented in separate modules.
| [Monaco](https://microsoft.github.io/monaco-editor/) | ✔ | [y-monaco](https://github.com/yjs/y-monaco) | [demo](https://demos.yjs.dev/monaco/monaco.html) | | [Monaco](https://microsoft.github.io/monaco-editor/) | ✔ | [y-monaco](https://github.com/yjs/y-monaco) | [demo](https://demos.yjs.dev/monaco/monaco.html) |
| [Slate](https://github.com/ianstormtaylor/slate) | ✔ | [slate-yjs](https://github.com/bitphinix/slate-yjs) | [demo](https://bitphinix.github.io/slate-yjs-example) | | [Slate](https://github.com/ianstormtaylor/slate) | ✔ | [slate-yjs](https://github.com/bitphinix/slate-yjs) | [demo](https://bitphinix.github.io/slate-yjs-example) |
| [valtio](https://github.com/pmndrs/valtio) | | [valtio-yjs](https://github.com/dai-shi/valtio-yjs) | [demo](https://codesandbox.io/s/valtio-yjs-demo-ox3iy) | | [valtio](https://github.com/pmndrs/valtio) | | [valtio-yjs](https://github.com/dai-shi/valtio-yjs) | [demo](https://codesandbox.io/s/valtio-yjs-demo-ox3iy) |
| React / Vue / MobX | | [SyncedStore](https://syncedstore.org) | [demo](https://syncedstore.org/docs/react) | | React / Vue / Svelte / MobX | | [SyncedStore](https://syncedstore.org) | [demo](https://syncedstore.org/docs/react) |
### Providers ### Providers
@@ -141,6 +137,10 @@ Also includes a peer-sync mechanism to catch up on missed updates.
<a href="https://github.com/kappa-db/multifeed">multifeed</a>. Each client has <a href="https://github.com/kappa-db/multifeed">multifeed</a>. Each client has
an append-only log of CRDT local updates (hypercore). Multifeed manages and sync an append-only log of CRDT local updates (hypercore). Multifeed manages and sync
hypercores and y-dat listens to changes and applies them to the Yjs document. hypercores and y-dat listens to changes and applies them to the Yjs document.
</dd>
<dt><a href="https://github.com/yousefED/matrix-crdt">Matrix-CRDT</a></dt>
<dd>
Use <a href="https://www.matrix.org">Matrix</a> as an off-the-shelf backend for Yjs by using the <a href="https://github.com/yousefED/matrix-crdt">MatrixProvider</a>. Use Matrix as transport and storage of Yjs updates, so you can focus building your client app and Matrix can provide powerful features like Authentication, Authorization, Federation, hosting (self-hosting or SaaS) and even End-to-End Encryption (E2EE).
</dd> </dd>
</dl> </dl>
@@ -980,7 +980,7 @@ undoManager.on('stack-item-popped', event => {
*Conflict-free replicated data types* (CRDT) for collaborative editing are an *Conflict-free replicated data types* (CRDT) for collaborative editing are an
alternative approach to *operational transformation* (OT). A very simple alternative approach to *operational transformation* (OT). A very simple
differenciation between the two approaches is that OT attempts to transform differentiation between the two approaches is that OT attempts to transform
index positions to ensure convergence (all clients end up with the same index positions to ensure convergence (all clients end up with the same
content), while CRDTs use mathematical models that usually do not involve index content), while CRDTs use mathematical models that usually do not involve index
transformations, like linked lists. OT is currently the de-facto standard for transformations, like linked lists. OT is currently the de-facto standard for
+1 -1
View File
@@ -109,7 +109,7 @@ export class ContentType {
if (!item.deleted) { if (!item.deleted) {
item.delete(transaction) item.delete(transaction)
} else { } else {
// Whis will be gc'd later and we want to merge it if possible // This will be gc'd later and we want to merge it if possible
// We try to merge all deleted items after each transaction, // We try to merge all deleted items after each transaction,
// but we have no knowledge about that this needs to be merged // but we have no knowledge about that this needs to be merged
// since it is not in transaction.ds. Hence we add it to transaction._mergeStructs // since it is not in transaction.ds. Hence we add it to transaction._mergeStructs
+1 -1
View File
@@ -289,7 +289,7 @@ export class Item extends AbstractStruct {
*/ */
this.parentSub = parentSub this.parentSub = parentSub
/** /**
* If this type's effect is reundone this type refers to the type that undid * If this type's effect is redone this type refers to the type that undid
* this operation. * this operation.
* @type {ID | null} * @type {ID | null}
*/ */