概述
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-redis、y-sweet、ypy-websocket 和 Hocuspocus(见下文)是 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 兼容的其他编程语言的移植版本。
There are several Yjs-compatible ports to other programming languages.