Skip to content

概述

Overview

此存储库包含一组可观察更改并可并发操作的共享类型。网络功能和双向绑定实现于单独的模块中。

This repository contains a collection of shared types that can be observed for changes and manipulated concurrently. Network functionality and two-way-bindings are implemented in separate modules.

绑定

Bindings

名称 光标 绑定 演示
ProseMirror                                                   y-prosemirror 演示
Quill y-quill 演示
CodeMirror y-codemirror 演示
Monaco y-monaco 演示
Slate slate-yjs 演示
BlockSuite (native) 演示
Lexical (native) 演示
valtio valtio-yjs 演示
immer immer-yjs 演示
React react-yjs 演示
React / Vue / Svelte / MobX SyncedStore 演示
mobx-keystone mobx-keystone-yjs 演示
Name Cursors Binding Demo
ProseMirror                                                   y-prosemirror demo
Quill y-quill demo
CodeMirror y-codemirror demo
Monaco y-monaco demo
Slate slate-yjs demo
BlockSuite (native) demo
Lexical (native) demo
valtio valtio-yjs demo
immer immer-yjs demo
React react-yjs demo
React / Vue / Svelte / MobX SyncedStore demo
mobx-keystone mobx-keystone-yjs demo

提供者

Providers

设置客户端之间的通信、管理意识信息以及为离线使用存储共享数据相当麻烦。提供者为您管理所有这些,是您协作应用的完美起点。

这个提供者列表并不完整。请提交 PR 将您的提供者添加到此列表中!

Setting up the communication between clients, managing awareness information, and storing shared data for offline usage is quite a hassle. Providers manage all that for you and are the perfect starting point for your collaborative app.

This list of providers is incomplete. Please open PRs to add your providers to this list!

连接提供者

Connection Providers

y-websocket
一个包含简单 WebSocket 后端和连接该后端的 WebSocket 客户端的模块。 y-redisy-sweetypy-websocketHocuspocus(见下文)是 y-websocket 的替代后端。
y-webrtc
通过 WebRTC 在对等方之间传播文档更新。对等方通过信令服务器交换信令数据。公共可用的信令服务器可以使用。通过提供共享密钥,可以加密信令服务器上的通信,从而保持连接信息和共享文档的私密性。
@liveblocks/yjs
Liveblocks Yjs 提供完全托管的 WebSocket 基础设施和持久化数据存储,用于 Yjs 文档。无需配置或维护。它还具有 Yjs webhook 事件、用于读取和更新 Yjs 文档的 REST API,以及浏览器 DevTools 扩展。
y-sweet
一个独立的 yjs 服务器,具有 S3 或文件系统的持久性。他们还提供云服务
Hocuspocus
一个独立的可扩展 yjs 服务器,具有 sqlite 持久性、webhooks、身份验证等功能。
PartyKit
用于构建多人应用的云服务。
y-libp2p
使用 libp2p 通过 GossipSub 传播更新。还包括一个对等同步机制,以便追赶错过的更新。
y-dat
[进行中] 使用 multifeed 高效地写入文档更新到 dat 网络。每个客户端都有一个仅附加的 CRDT 本地更新日志(hypercore)。Multifeed 管理和同步 hypercores,而 y-dat 监听更改并将其应用于 Yjs 文档。
Matrix-CRDT
通过使用 MatrixProvider,将 Matrix 作为 Yjs 的现成后端。使用 Matrix 作为 Yjs 更新的传输和存储,这样您可以专注于构建客户端应用程序,而 Matrix 可以提供强大的功能,如身份验证、授权、联邦、托管(自托管或 SaaS)甚至端到端加密(E2EE)。
yrb-actioncable
Yjs 客户端的 ActionCable 伴侣。还有一个适合的 redis 扩展
ypy-websocket
使用 Python 编写的 WebSocket 后端。
Tinybase
用于本地优先应用的反应式数据存储。他们支持多个 CRDT 和不同的网络技术。
y-webxdc
用于在 webxdc 聊天应用 中共享数据的提供者。
secsync
一种通过中央服务转发端到端加密 CRDT 的架构。

y-websocket
A module that contains a simple websocket backend and a websocket client that connects to that backend. y-redis, y-sweet, ypy-websocket and Hocuspocus (see below) are alternative backends to y-websocket.
y-webrtc
Propagates document updates peer-to-peer using WebRTC. The peers exchange signaling data over signaling servers. Publically available signaling servers are available. Communication over the signaling servers can be encrypted by providing a shared secret, keeping the connection information and the shared document private.
@liveblocks/yjs
Liveblocks Yjs provides a fully hosted WebSocket infrastructure and persisted data store for Yjs documents. No configuration or maintenance is required. It also features Yjs webhook events, REST API to read and update Yjs documents, and a browser DevTools extension.
y-sweet
A standalone yjs server with persistence to S3 or filesystem. They offer a cloud service as well.
Hocuspocus
A standalone extensible yjs server with sqlite persistence, webhooks, auth and more.
PartyKit
Cloud service for building multiplayer apps.
y-libp2p
Uses libp2p to propagate updates via GossipSub. Also includes a peer-sync mechanism to catch up on missed updates.
y-dat
[WIP] Write document updates efficiently to the dat network using multifeed. Each client has 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.
Matrix-CRDT
Use Matrix as an off-the-shelf backend for Yjs by using the MatrixProvider. 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).
yrb-actioncable
An ActionCable companion for Yjs clients. There is a fitting redis extension as well.
ypy-websocket
Websocket backend, written in Python.
Tinybase
The reactive data store for local-first apps. They support multiple CRDTs and different network technologies.
y-webxdc
Provider for sharing data in webxdc chat apps.
secsync
An architecture to relay end-to-end encrypted CRDTs over a central service.

持久性提供者

Persistence Providers

y-indexeddb
高效地将文档更新持久化到浏览器的 indexeddb 数据库。文档立即可用,只有差异需要通过网络提供者同步。
y-mongodb-provider
为使用 MongoDB 的服务器添加持久存储。可以与 y-websocket 提供者一起使用。
@toeverything/y-indexeddb
类似于 y-indexeddb,但支持子文档,并且完全支持 TypeScript。
y-fire
基于 Firestore 的 Yjs 数据库和连接提供者。
y-op-sqlite
使用 op-sqlite,在 React Native 应用中持久化 YJS 更新,这是 React Native 的最快 SQLite 库。
y-postgresql
为使用 PostgreSQL 的 Web 服务器提供持久存储,且与 y-websocket 兼容。

y-indexeddb
Efficiently persists document updates to the browsers indexeddb database. The document is immediately available and only diffs need to be synced through the network provider.
y-mongodb-provider
Adds persistent storage to a server with MongoDB. Can be used with the y-websocket provider.
@toeverything/y-indexeddb
Like y-indexeddb, but with sub-documents support and fully TypeScript.
y-fire
A database and connection provider for Yjs based on Firestore.
y-op-sqlite
Persist YJS updates in your React Native app using op-sqlite , the fastest SQLite library for React Native.
y-postgresql
Provides persistent storage for a web server using PostgreSQL and is easily compatible with y-websocket.

工具

Tooling

端口

Ports

有多个 Yjs 兼容的其他编程语言的移植版本。

  • y-octo - 由 AFFiNE 提供的 Rust 实现
  • y-crdt - Rust 实现,具有多个语言绑定
  • yrs - Rust 接口
  • ypy - Python 绑定
  • yrb - Ruby 绑定
  • yswift - Swift 绑定
  • yffi - C-FFI
  • ywasm - WASM 绑定
  • ycs - .Net 兼容的 C# 实现。

There are several Yjs-compatible ports to other programming languages.

  • y-octo - Rust implementation by AFFiNE
  • y-crdt - Rust implementation with multiple language bindings to other languages
  • yrs - Rust interface
  • ypy - Python binding
  • yrb - Ruby binding
  • yswift - Swift binding
  • yffi - C-FFI
  • ywasm - WASM binding
  • ycs - .Net compatible C# implementation.