rhine-var 0.6.2 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -22
- package/README_zh.md +34 -22
- package/dist/config/config.d.ts +1 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +2 -1
- package/dist/core/connector/{ConnectorStatus.d.ts → connector-status.enum.d.ts} +1 -1
- package/dist/core/connector/connector-status.enum.d.ts.map +1 -0
- package/dist/core/connector/connector.abstract.d.ts +27 -0
- package/dist/core/connector/connector.abstract.d.ts.map +1 -0
- package/dist/core/connector/connector.abstract.js +62 -0
- package/dist/core/connector/create-connector.d.ts +5 -0
- package/dist/core/connector/create-connector.d.ts.map +1 -0
- package/dist/core/connector/create-connector.js +25 -0
- package/dist/core/connector/hocuspocus/hocuspocus-connector.class.d.ts +10 -0
- package/dist/core/connector/hocuspocus/hocuspocus-connector.class.d.ts.map +1 -0
- package/dist/core/connector/hocuspocus/hocuspocus-connector.class.js +78 -0
- package/dist/core/connector/{SyncHandshakeCheck.d.ts → websocket/sync-handshake-check.class.d.ts} +2 -2
- package/dist/core/connector/websocket/sync-handshake-check.class.d.ts.map +1 -0
- package/dist/core/connector/{SyncHandshakeCheck.js → websocket/sync-handshake-check.class.js} +1 -4
- package/dist/core/connector/websocket/websocket-connector.class.d.ts +10 -0
- package/dist/core/connector/websocket/websocket-connector.class.d.ts.map +1 -0
- package/dist/core/connector/websocket/websocket-connector.class.js +74 -0
- package/dist/core/event/callback.d.ts +8 -0
- package/dist/core/event/callback.d.ts.map +1 -0
- package/dist/core/event/{ChangeType.d.ts → change-type.enum.d.ts} +1 -1
- package/dist/core/event/change-type.enum.d.ts.map +1 -0
- package/dist/core/native/native-type.enum.d.ts +10 -0
- package/dist/core/native/native-type.enum.d.ts.map +1 -0
- package/dist/core/native/native-type.enum.js +13 -0
- package/dist/core/native/native.type.d.ts +6 -0
- package/dist/core/native/native.type.d.ts.map +1 -0
- package/dist/core/native/{NativeUtils.d.ts → native.utils.d.ts} +4 -4
- package/dist/core/native/native.utils.d.ts.map +1 -0
- package/dist/core/native/{NativeUtils.js → native.utils.js} +37 -24
- package/dist/core/native/y-object.d.ts +6 -0
- package/dist/core/native/y-object.d.ts.map +1 -0
- package/dist/core/native/y-object.js +10 -0
- package/dist/core/proxy/create-rhine-var.d.ts +21 -0
- package/dist/core/proxy/create-rhine-var.d.ts.map +1 -0
- package/dist/core/proxy/create-rhine-var.js +41 -0
- package/dist/core/proxy/items/item.d.ts +3 -0
- package/dist/core/proxy/items/item.d.ts.map +1 -0
- package/dist/core/{class/array/RhineVarArray.js → proxy/items/item.js} +3 -2
- package/dist/core/proxy/items/map.d.ts +5 -0
- package/dist/core/proxy/items/map.d.ts.map +1 -0
- package/dist/core/proxy/items/map.js +12 -0
- package/dist/core/proxy/items/rhine-map.d.ts +5 -0
- package/dist/core/proxy/items/rhine-map.d.ts.map +1 -0
- package/dist/core/proxy/items/rhine-map.js +12 -0
- package/dist/core/proxy/items/rhine-text.d.ts +3 -0
- package/dist/core/proxy/items/rhine-text.d.ts.map +1 -0
- package/dist/core/proxy/items/rhine-text.js +7 -0
- package/dist/core/proxy/items/text.d.ts +3 -0
- package/dist/core/proxy/items/text.d.ts.map +1 -0
- package/dist/core/proxy/items/text.js +7 -0
- package/dist/core/proxy/proxy-option.d.ts +3 -0
- package/dist/core/proxy/proxy-option.d.ts.map +1 -0
- package/dist/core/proxy/proxy-option.interface.d.ts +4 -0
- package/dist/core/proxy/proxy-option.interface.d.ts.map +1 -0
- package/dist/core/proxy/proxy-option.js +5 -0
- package/dist/core/proxy/proxy-options.interface.d.ts +6 -0
- package/dist/core/proxy/proxy-options.interface.d.ts.map +1 -0
- package/dist/core/proxy/proxy-options.interface.js +2 -0
- package/dist/core/proxy/rhine-proxy.d.ts +8 -0
- package/dist/core/proxy/rhine-proxy.d.ts.map +1 -0
- package/dist/core/proxy/rhine-proxy.js +152 -0
- package/dist/core/utils/convert-property.utils.d.ts +21 -0
- package/dist/core/utils/convert-property.utils.d.ts.map +1 -0
- package/dist/core/utils/{ConvertProperty.js → convert-property.utils.js} +11 -10
- package/dist/core/utils/data.utils.d.ts +4 -0
- package/dist/core/utils/data.utils.d.ts.map +1 -0
- package/dist/core/utils/data.utils.js +14 -0
- package/dist/core/utils/var.utils.d.ts +18 -0
- package/dist/core/utils/var.utils.d.ts.map +1 -0
- package/dist/core/utils/var.utils.js +83 -0
- package/dist/core/var/items/rhine-var-array.class.d.ts +71 -0
- package/dist/core/var/items/rhine-var-array.class.d.ts.map +1 -0
- package/dist/core/var/items/rhine-var-array.class.js +161 -0
- package/dist/core/var/items/rhine-var-map.class.d.ts +20 -0
- package/dist/core/var/items/rhine-var-map.class.d.ts.map +1 -0
- package/dist/core/var/items/rhine-var-map.class.js +45 -0
- package/dist/core/var/items/rhine-var-object.class.d.ts +18 -0
- package/dist/core/var/items/rhine-var-object.class.d.ts.map +1 -0
- package/dist/core/var/items/rhine-var-object.class.js +43 -0
- package/dist/core/var/items/rhine-var-text.class.d.ts +47 -0
- package/dist/core/var/items/rhine-var-text.class.d.ts.map +1 -0
- package/dist/core/var/items/rhine-var-text.class.js +132 -0
- package/dist/core/var/items/rhine-var-xml-element.class.d.ts +6 -0
- package/dist/core/var/items/rhine-var-xml-element.class.d.ts.map +1 -0
- package/dist/core/var/items/rhine-var-xml-element.class.js +14 -0
- package/dist/core/var/items/rhine-var-xml-fragment.class.d.ts +6 -0
- package/dist/core/var/items/rhine-var-xml-fragment.class.d.ts.map +1 -0
- package/dist/core/var/items/rhine-var-xml-fragment.class.js +14 -0
- package/dist/core/var/items/rhine-var-xml-text.class.d.ts +6 -0
- package/dist/core/var/items/rhine-var-xml-text.class.d.ts.map +1 -0
- package/dist/core/var/items/rhine-var-xml-text.class.js +14 -0
- package/dist/core/{proxy/RhineVarItem.d.ts → var/rhine-var-base.class.d.ts} +28 -18
- package/dist/core/var/rhine-var-base.class.d.ts.map +1 -0
- package/dist/core/{proxy/RhineVarItem.js → var/rhine-var-base.class.js} +175 -34
- package/dist/core/var/rhine-var.type.d.ts +23 -0
- package/dist/core/var/rhine-var.type.d.ts.map +1 -0
- package/dist/core/var/rhine-var.type.js +2 -0
- package/dist/core/var/support/array/array-support.class.d.ts +1 -0
- package/dist/core/var/support/array/array-support.class.d.ts.map +1 -0
- package/dist/core/var/support/array/array-support.class.js +1 -0
- package/dist/core/var/support/array/support-array.class.d.ts +9 -0
- package/dist/core/var/support/array/support-array.class.d.ts.map +1 -0
- package/dist/core/var/support/array/support-array.class.js +527 -0
- package/dist/core/var/support/array/support-map.class.d.ts +9 -0
- package/dist/core/var/support/array/support-map.class.d.ts.map +1 -0
- package/dist/core/var/support/array/support-map.class.js +200 -0
- package/dist/core/var/support/array/support-text.class.d.ts +9 -0
- package/dist/core/var/support/array/support-text.class.d.ts.map +1 -0
- package/dist/core/var/support/array/support-text.class.js +221 -0
- package/dist/core/var/support/array/support.array.d.ts +1 -0
- package/dist/core/var/support/array/support.array.d.ts.map +1 -0
- package/dist/core/var/support/array/support.array.js +1 -0
- package/dist/core/var/support/input-item.d.ts +1 -0
- package/dist/core/var/support/input-item.d.ts.map +1 -0
- package/dist/core/var/support/input-item.js +1 -0
- package/dist/core/var/support/support-base.d.ts +9 -0
- package/dist/core/var/support/support-base.d.ts.map +1 -0
- package/dist/core/var/support/support-base.js +21 -0
- package/dist/core/var/support/support-manager.d.ts +5 -0
- package/dist/core/var/support/support-manager.d.ts.map +1 -0
- package/dist/core/var/support/support-manager.js +33 -0
- package/dist/index.d.ts +19 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -12
- package/dist/react/hooks/use-rhine.hook.d.ts +3 -0
- package/dist/react/hooks/use-rhine.hook.d.ts.map +1 -0
- package/dist/react/hooks/use-synced.hook.d.ts +4 -0
- package/dist/react/hooks/use-synced.hook.d.ts.map +1 -0
- package/dist/react/hooks/{useSynced.js → use-synced.hook.js} +7 -6
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +20 -0
- package/package.json +10 -7
- package/dist/core/class/array/RhineVarArray.d.ts +0 -4
- package/dist/core/class/array/RhineVarArray.d.ts.map +0 -1
- package/dist/core/connector/ConnectorStatus.d.ts.map +0 -1
- package/dist/core/connector/SyncHandshakeCheck.d.ts.map +0 -1
- package/dist/core/connector/WebsocketConnector.d.ts +0 -28
- package/dist/core/connector/WebsocketConnector.d.ts.map +0 -1
- package/dist/core/connector/WebsocketConnector.js +0 -127
- package/dist/core/event/Callback.d.ts +0 -8
- package/dist/core/event/Callback.d.ts.map +0 -1
- package/dist/core/event/ChangeType.d.ts.map +0 -1
- package/dist/core/native/Native.d.ts +0 -5
- package/dist/core/native/Native.d.ts.map +0 -1
- package/dist/core/native/NativeUtils.d.ts.map +0 -1
- package/dist/core/proxy/ProxiedRhineVar.d.ts +0 -13
- package/dist/core/proxy/ProxiedRhineVar.d.ts.map +0 -1
- package/dist/core/proxy/Proxy.d.ts +0 -10
- package/dist/core/proxy/Proxy.d.ts.map +0 -1
- package/dist/core/proxy/Proxy.js +0 -171
- package/dist/core/proxy/RhineVar.d.ts +0 -8
- package/dist/core/proxy/RhineVar.d.ts.map +0 -1
- package/dist/core/proxy/RhineVar.js +0 -19
- package/dist/core/proxy/RhineVarItem.d.ts.map +0 -1
- package/dist/core/utils/ConvertProperty.d.ts +0 -21
- package/dist/core/utils/ConvertProperty.d.ts.map +0 -1
- package/dist/core/utils/DataUtils.d.ts +0 -9
- package/dist/core/utils/DataUtils.d.ts.map +0 -1
- package/dist/core/utils/DataUtils.js +0 -45
- package/dist/react/hooks/useRhine.d.ts +0 -3
- package/dist/react/hooks/useRhine.d.ts.map +0 -1
- package/dist/react/hooks/useSynced.d.ts +0 -4
- package/dist/react/hooks/useSynced.d.ts.map +0 -1
- /package/dist/core/connector/{ConnectorStatus.js → connector-status.enum.js} +0 -0
- /package/dist/core/event/{Callback.js → callback.js} +0 -0
- /package/dist/core/event/{ChangeType.js → change-type.enum.js} +0 -0
- /package/dist/core/native/{Native.js → native.type.js} +0 -0
- /package/dist/core/proxy/{ProxiedRhineVar.js → proxy-option.interface.js} +0 -0
- /package/dist/react/hooks/{useRhine.js → use-rhine.hook.js} +0 -0
package/README.md
CHANGED
|
@@ -96,9 +96,12 @@ Email: [RhineAILab@gmail.com](rhineailab@gmail.com) & [RhineAI@163.com](RhineAI@
|
|
|
96
96
|
|
|
97
97
|
## Install
|
|
98
98
|
```bash
|
|
99
|
+
npm i rhine-var
|
|
100
|
+
```
|
|
101
|
+
Or using Yarn:
|
|
102
|
+
```bash
|
|
99
103
|
yarn add rhine-var
|
|
100
104
|
```
|
|
101
|
-
If you don't have `yarn`, you can install it via `npm i rhine-var`, or install `yarn` first using `npm i -g yarn` and then use the command above to install.
|
|
102
105
|
|
|
103
106
|
<br/>
|
|
104
107
|
|
|
@@ -150,42 +153,50 @@ Note: The returned snapshot is read-only. Please do not perform any operations o
|
|
|
150
153
|
|
|
151
154
|
<br/>
|
|
152
155
|
|
|
153
|
-
## Server
|
|
154
156
|
|
|
155
157
|
## Server
|
|
156
158
|
|
|
157
|
-
We provide a public server
|
|
159
|
+
We provide a `free public server` for `RHINE-VAR`, which can be used for trial and testing. You can connect to it via [wss://rvp.rhineai.com/<room-id>](wss://rvp.rhineai.com/<room-id>).
|
|
158
160
|
|
|
159
|
-
Note that this server
|
|
161
|
+
Note that this server cannot guarantee security and stability and will limit users and IPs in a large-scale manner.
|
|
160
162
|
|
|
161
163
|
<br/>
|
|
162
164
|
|
|
163
|
-
|
|
165
|
+
RHINE-VAR supports custom servers and connection agreements. The server currently fully supports all Yjs and WebSocket servers.
|
|
164
166
|
|
|
165
|
-
|
|
166
|
-
git clone https://github.com/RhineAI-Lab/rhine-var-server.git
|
|
167
|
-
yarn install
|
|
168
|
-
yarn start
|
|
169
|
-
```
|
|
170
|
-
It will run on `Port 6600`, and you can connect to it via `ws://localhost:6600/<room-id>`. `<room-id>` can be any text, with each room ID corresponding to a `RhineVariable`.
|
|
167
|
+
We use Tiptap to set up [Hocuspocus](https://tiptap.dev/docs/hocuspocus/introduction) server.
|
|
171
168
|
|
|
172
|
-
|
|
169
|
+
He has other servers, but it requires a high-quality Yjs WebSocket server. Based on the broadcasting and performance, you can support up to 1 million users' experience.
|
|
173
170
|
|
|
174
|
-
|
|
171
|
+
```bash
|
|
172
|
+
npm i @hocuspocus/server @hocuspocus/extension-logger @hocuspocus/extension-sqlite y-protocols yjs
|
|
173
|
+
```
|
|
174
|
+
```typescript
|
|
175
|
+
import { Hocuspocus } from '@hocuspocus/server'
|
|
176
|
+
import { Logger } from '@hocuspocus/extension-logger'
|
|
177
|
+
import { SQLite } from '@hocuspocus/extension-sqlite'
|
|
178
|
+
|
|
179
|
+
const server = new Hocuspocus({
|
|
180
|
+
name: 'rhine-var-server',
|
|
181
|
+
port: 11600,
|
|
182
|
+
extensions: [
|
|
183
|
+
new Logger(),
|
|
184
|
+
new SQLite({database: 'db.sqlite'}),
|
|
185
|
+
],
|
|
186
|
+
})
|
|
187
|
+
server.listen()
|
|
188
|
+
```
|
|
175
189
|
|
|
176
|
-
|
|
190
|
+
We also provide a more complete [Hocuspocus](https://tiptap.dev/docs/hocuspocus/introduction) server (link below), which supports pre-authorization for connections and the ability to store data in a database.
|
|
177
191
|
|
|
178
|
-
|
|
192
|
+
Best Implementation: [https://github.com/RhineAI-Lab/rhine-var-hocuspocus-server](https://github.com/RhineAI-Lab/rhine-var-hocuspocus-server)
|
|
179
193
|
|
|
180
|
-
|
|
194
|
+
<br/>
|
|
181
195
|
|
|
182
|
-
|
|
183
|
-
import {enableRhineVarSyncHandshakeCheck} from 'rhine-var'
|
|
196
|
+
Original server-side development reference: [https://docs.yjs.dev/ecosystem/connection-provider/y-websocket](https://docs.yjs.dev/ecosystem/connection-provider/y-websocket)
|
|
184
197
|
|
|
185
|
-
|
|
186
|
-
```
|
|
198
|
+
And we also provide the original Yjs WebSocket server example: [https://github.com/RhineAI-Lab/rhine-var-server](https://github.com/RhineAI-Lab/rhine-var-server)
|
|
187
199
|
|
|
188
|
-
<br/>
|
|
189
200
|
|
|
190
201
|
## Develop
|
|
191
202
|
|
|
@@ -206,7 +217,7 @@ yarn run watch
|
|
|
206
217
|
# Start the temporary local server, default port is 6600
|
|
207
218
|
yarn run server
|
|
208
219
|
# Start the NextJs environment debugging project, default port is 6700
|
|
209
|
-
yarn run
|
|
220
|
+
yarn run playground
|
|
210
221
|
# The browser will navigate to http://localhost:6700
|
|
211
222
|
```
|
|
212
223
|
|
package/README_zh.md
CHANGED
|
@@ -107,10 +107,14 @@ RHINE-VAR 提供完好的Yjs原生对象操作支持,更底层更丰富的API
|
|
|
107
107
|
<br/>
|
|
108
108
|
|
|
109
109
|
## Install
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npm i rhine-var
|
|
113
|
+
```
|
|
114
|
+
或者使用 Yarn:
|
|
110
115
|
```bash
|
|
111
116
|
yarn add rhine-var
|
|
112
117
|
```
|
|
113
|
-
如果你的电脑未安装`yarn`, 也可通过 `npm i rhine-var` 安装。或先用 `npm i -g yarn` 安装`yarn`,然后再用上方命令进行安装。
|
|
114
118
|
|
|
115
119
|
<br/>
|
|
116
120
|
|
|
@@ -136,7 +140,7 @@ function Counter() {
|
|
|
136
140
|
|
|
137
141
|
### Room ID
|
|
138
142
|
|
|
139
|
-
|
|
143
|
+
一个房间号对应一个状态变量(即一个yjs文档), 加入到一个房间中的用户会参与到多人协同中。支持使用自己的服务端,甚至其他链接协议。
|
|
140
144
|
|
|
141
145
|
### Default Value
|
|
142
146
|
|
|
@@ -167,42 +171,50 @@ function Counter() {
|
|
|
167
171
|
|
|
168
172
|
## Server
|
|
169
173
|
|
|
170
|
-
|
|
174
|
+
我们提供了一个位于公网的`免费公共服务器`,可以用于试用和测试`RHINE-VAR`。你可以通过 [wss://rvp.rhineai.com/<room-id>](wss://rvp.rhineai.com/<room-id>) 连接它。
|
|
171
175
|
|
|
172
176
|
注意,该服务器无法保证安全和性能,并会对大规模使用的用户和IP做出一定限制。
|
|
173
177
|
|
|
174
178
|
<br/>
|
|
175
179
|
|
|
176
|
-
|
|
180
|
+
RHINE-VAR 支持自定义服务器,以及连接协议。服务端目前完全兼容所有的 Yjs 的 Websocket 服务器。
|
|
181
|
+
|
|
182
|
+
我们推荐使用由 Tiptap 开源的 [Hocuspocus](https://tiptap.dev/docs/hocuspocus/introduction) 搭建服务器。
|
|
177
183
|
|
|
184
|
+
他仅需如下几行,就可以构建出一个强大的 Yjs Websocket 服务器。 基于他的插件和高性能,你可以将服务端扩充到100万用户的体量。
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm i @hocuspocus/server @hocuspocus/extension-logger @hocuspocus/extension-sqlite y-protocols yjs
|
|
178
188
|
```
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
189
|
+
```typescript
|
|
190
|
+
import { Hocuspocus } from '@hocuspocus/server'
|
|
191
|
+
import { Logger } from '@hocuspocus/extension-logger'
|
|
192
|
+
import { SQLite } from '@hocuspocus/extension-sqlite'
|
|
193
|
+
|
|
194
|
+
const server = new Hocuspocus({
|
|
195
|
+
name: 'rhine-var-server',
|
|
196
|
+
port: 11600,
|
|
197
|
+
extensions: [
|
|
198
|
+
new Logger(),
|
|
199
|
+
new SQLite({database: 'db.sqlite'}),
|
|
200
|
+
],
|
|
201
|
+
})
|
|
202
|
+
server.listen()
|
|
182
203
|
```
|
|
204
|
+
我们还提供了一个更完整的 [Hocuspocus](https://tiptap.dev/docs/hocuspocus/introduction) 服务器 (下方链接),支持连接前鉴权,以及将数据持久化到数据库中。
|
|
183
205
|
|
|
184
|
-
|
|
206
|
+
Best Implementation: [https://github.com/RhineAI-Lab/rhine-var-hocuspocus-server](https://github.com/RhineAI-Lab/rhine-var-hocuspocus-server)
|
|
185
207
|
|
|
186
208
|
<br/>
|
|
187
209
|
|
|
188
|
-
|
|
210
|
+
原生服务端开发信息请参考: [https://docs.yjs.dev/ecosystem/connection-provider/y-websocket](https://docs.yjs.dev/ecosystem/connection-provider/y-websocket)
|
|
189
211
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
更多服务端开发信息请参考: [https://docs.yjs.dev/ecosystem/connection-provider/y-websocket](https://docs.yjs.dev/ecosystem/connection-provider/y-websocket)
|
|
193
|
-
|
|
194
|
-
当你使用自己开发的服务器时,请关闭 RhineVar 默认的二次握手校验连接,除非你的服务器支持了他。
|
|
195
|
-
|
|
196
|
-
```typescript
|
|
197
|
-
import {enableRhineVarSyncHandshakeCheck} from 'rhine-var'
|
|
198
|
-
|
|
199
|
-
enableRhineVarSyncHandshakeCheck(false)
|
|
200
|
-
```
|
|
212
|
+
以及我们提供的原生 Yjs Websocket 服务器的示例: [https://github.com/RhineAI-Lab/rhine-var-server](https://github.com/RhineAI-Lab/rhine-var-server)
|
|
201
213
|
|
|
202
214
|
<br/>
|
|
203
215
|
|
|
204
216
|
## Develop
|
|
205
|
-
|
|
217
|
+
|
|
206
218
|
欢迎参与 RHINE-VAR 库的共同开发。本库内有基本的服务端,和调试用 NextJS 项目,可以满足大部分开发过程基本需求。
|
|
207
219
|
|
|
208
220
|
|
|
@@ -223,7 +235,7 @@ yarn run watch
|
|
|
223
235
|
# 启用临时本地服务端 默认端口6600
|
|
224
236
|
yarn run server
|
|
225
237
|
# 启动 NextJs 环境调试项目 默认端口6700
|
|
226
|
-
yarn run
|
|
238
|
+
yarn run playground
|
|
227
239
|
# 浏览器将跳转至 http://localhost:6700
|
|
228
240
|
```
|
|
229
241
|
|
package/dist/config/config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,cAAc;IAEjC,MAAM,CAAC,UAAU,UAAQ;IACzB,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,cAAc;IAEjC,MAAM,CAAC,UAAU,UAAQ;IACzB,MAAM,CAAC,YAAY,UAAO;IAC1B,MAAM,CAAC,2BAA2B,UAAQ;CAE3C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,QAE/C;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,QAE9D;AAED,wBAAgB,iBAAiB,0BAEhC"}
|
package/dist/config/config.js
CHANGED
|
@@ -6,7 +6,8 @@ exports.getRhineVarConfig = getRhineVarConfig;
|
|
|
6
6
|
class RhineVarConfig {
|
|
7
7
|
}
|
|
8
8
|
RhineVarConfig.ENABLE_LOG = false;
|
|
9
|
-
RhineVarConfig.
|
|
9
|
+
RhineVarConfig.ENABLE_ERROR = true;
|
|
10
|
+
RhineVarConfig.ENABLE_SYNC_HANDSHAKE_CHECK = false;
|
|
10
11
|
exports.default = RhineVarConfig;
|
|
11
12
|
function enableRhineVarLog(value) {
|
|
12
13
|
RhineVarConfig.ENABLE_LOG = Boolean(value);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-status.enum.d.ts","sourceRoot":"","sources":["../../../src/core/connector/connector-status.enum.ts"],"names":[],"mappings":"AACA,oBAAY,eAAe;IACzB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,YAAY,iBAAiB;CAC9B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { YMap, YDoc } from "../../index";
|
|
2
|
+
import { ConnectorStatus } from "./connector-status.enum";
|
|
3
|
+
import { Native } from "../native/native.type";
|
|
4
|
+
import { SyncedCallback } from "../event/callback";
|
|
5
|
+
export default abstract class Connector {
|
|
6
|
+
static STATE_KEY: string;
|
|
7
|
+
yDoc: YDoc | null;
|
|
8
|
+
yBaseMap: YMap<any> | null;
|
|
9
|
+
clientId: number;
|
|
10
|
+
synced: boolean;
|
|
11
|
+
status: ConnectorStatus;
|
|
12
|
+
protected syncedSubscribers: SyncedCallback[];
|
|
13
|
+
subscribeSynced(callback: SyncedCallback): () => void;
|
|
14
|
+
unsubscribeSynced(callback: SyncedCallback): void;
|
|
15
|
+
unsubscribeAllSynced(): void;
|
|
16
|
+
protected emitSynced(synced: boolean): void;
|
|
17
|
+
afterSynced(callback: () => void): void;
|
|
18
|
+
waitSynced(): Promise<void>;
|
|
19
|
+
constructor(text?: string);
|
|
20
|
+
hasState(): boolean;
|
|
21
|
+
getState(): Native;
|
|
22
|
+
setState(state: Native): void;
|
|
23
|
+
abstract connect(text: string): Promise<void>;
|
|
24
|
+
abstract disconnect(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare function websocketRhineConnect(url: string): void;
|
|
27
|
+
//# sourceMappingURL=connector.abstract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.abstract.d.ts","sourceRoot":"","sources":["../../../src/core/connector/connector.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAe;AACpC,OAAO,EAAC,eAAe,EAAC,gCAA+C;AACvE,OAAO,EAAC,MAAM,EAAC,8BAAkC;AACjD,OAAO,EAAC,cAAc,EAAC,0BAA8B;AAErD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,SAAS;IAErC,MAAM,CAAC,SAAS,SAAU;IAE1B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAO;IACxB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAO;IAEjC,QAAQ,SAAK;IACb,MAAM,UAAQ;IAEd,MAAM,EAAE,eAAe,CAA+B;IAGtD,SAAS,CAAC,iBAAiB,EAAE,cAAc,EAAE,CAAK;IAClD,eAAe,CAAC,QAAQ,EAAE,cAAc;IAIxC,iBAAiB,CAAC,QAAQ,EAAE,cAAc;IAG1C,oBAAoB;IAGpB,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO;IAIpC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI;IAahC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;gBAMf,IAAI,GAAE,MAAW;IAG7B,QAAQ,IAAI,OAAO;IAInB,QAAQ,IAAI,MAAM;IAIlB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE7C,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAErC;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,QAChD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.websocketRhineConnect = websocketRhineConnect;
|
|
4
|
+
const connector_status_enum_1 = require("./connector-status.enum");
|
|
5
|
+
class Connector {
|
|
6
|
+
subscribeSynced(callback) {
|
|
7
|
+
this.syncedSubscribers.push(callback);
|
|
8
|
+
return () => this.unsubscribeSynced(callback);
|
|
9
|
+
}
|
|
10
|
+
unsubscribeSynced(callback) {
|
|
11
|
+
this.syncedSubscribers = this.syncedSubscribers.filter(subscriber => subscriber !== callback);
|
|
12
|
+
}
|
|
13
|
+
unsubscribeAllSynced() {
|
|
14
|
+
this.syncedSubscribers = [];
|
|
15
|
+
}
|
|
16
|
+
emitSynced(synced) {
|
|
17
|
+
this.syncedSubscribers.forEach(subscriber => subscriber(synced));
|
|
18
|
+
}
|
|
19
|
+
afterSynced(callback) {
|
|
20
|
+
if (this.synced) {
|
|
21
|
+
callback();
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const subscriber = (synced) => {
|
|
25
|
+
if (synced) {
|
|
26
|
+
this.unsubscribeSynced(subscriber);
|
|
27
|
+
callback();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
this.subscribeSynced(subscriber);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
waitSynced() {
|
|
34
|
+
return new Promise((resolve) => {
|
|
35
|
+
this.afterSynced(resolve);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
constructor(text = '') {
|
|
39
|
+
this.yDoc = null;
|
|
40
|
+
this.yBaseMap = null;
|
|
41
|
+
this.clientId = -1;
|
|
42
|
+
this.synced = false;
|
|
43
|
+
this.status = connector_status_enum_1.ConnectorStatus.DISCONNECTED;
|
|
44
|
+
this.syncedSubscribers = [];
|
|
45
|
+
}
|
|
46
|
+
hasState() {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
return (_b = (_a = this.yBaseMap) === null || _a === void 0 ? void 0 : _a.has(Connector.STATE_KEY)) !== null && _b !== void 0 ? _b : false;
|
|
49
|
+
}
|
|
50
|
+
getState() {
|
|
51
|
+
var _a;
|
|
52
|
+
return (_a = this.yBaseMap) === null || _a === void 0 ? void 0 : _a.get(Connector.STATE_KEY);
|
|
53
|
+
}
|
|
54
|
+
setState(state) {
|
|
55
|
+
var _a;
|
|
56
|
+
(_a = this.yBaseMap) === null || _a === void 0 ? void 0 : _a.set(Connector.STATE_KEY, state);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
Connector.STATE_KEY = 'state';
|
|
60
|
+
exports.default = Connector;
|
|
61
|
+
function websocketRhineConnect(url) {
|
|
62
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import HocuspocusConnector from "./hocuspocus/hocuspocus-connector.class";
|
|
2
|
+
export declare const PROTOCOL_LIST: string[];
|
|
3
|
+
export declare const DEFAULT_PUBLIC_URL = "wss://rvp.rhineai.com/";
|
|
4
|
+
export declare function createConnector(connectorText: string | number): HocuspocusConnector;
|
|
5
|
+
//# sourceMappingURL=create-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-connector.d.ts","sourceRoot":"","sources":["../../../src/core/connector/create-connector.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,gDAA+D;AAGzF,eAAO,MAAM,aAAa,UAAsB,CAAA;AAChD,eAAO,MAAM,kBAAkB,2BAA2B,CAAA;AAE1D,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,uBAkB7D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_PUBLIC_URL = exports.PROTOCOL_LIST = void 0;
|
|
7
|
+
exports.createConnector = createConnector;
|
|
8
|
+
const hocuspocus_connector_class_1 = __importDefault(require("./hocuspocus/hocuspocus-connector.class"));
|
|
9
|
+
exports.PROTOCOL_LIST = ['ws://', "wss://"];
|
|
10
|
+
exports.DEFAULT_PUBLIC_URL = 'wss://rvp.rhineai.com/';
|
|
11
|
+
function createConnector(connectorText) {
|
|
12
|
+
let text = String(connectorText);
|
|
13
|
+
// Connector is String but not start with protocol
|
|
14
|
+
if (exports.PROTOCOL_LIST.every(protocol => !text.startsWith(protocol))) {
|
|
15
|
+
// Default to use public url
|
|
16
|
+
text = exports.DEFAULT_PUBLIC_URL + text;
|
|
17
|
+
}
|
|
18
|
+
// Use HocuspocusConnector by default
|
|
19
|
+
const connector = new hocuspocus_connector_class_1.default(text);
|
|
20
|
+
// const connector = new WebsocketConnector(text)
|
|
21
|
+
if (typeof window !== 'undefined') {
|
|
22
|
+
connector.connect(String(text));
|
|
23
|
+
}
|
|
24
|
+
return connector;
|
|
25
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Connector from "../connector.abstract";
|
|
2
|
+
import { HocuspocusProvider } from "@hocuspocus/provider";
|
|
3
|
+
export default class HocuspocusConnector extends Connector {
|
|
4
|
+
url: string;
|
|
5
|
+
name: string;
|
|
6
|
+
provider: HocuspocusProvider | null;
|
|
7
|
+
connect(text: string): Promise<void>;
|
|
8
|
+
disconnect(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=hocuspocus-connector.class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hocuspocus-connector.class.d.ts","sourceRoot":"","sources":["../../../../src/core/connector/hocuspocus/hocuspocus-connector.class.ts"],"names":[],"mappings":"AAQA,OAAO,SAAS,8BAA4C;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAExD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,SAAS;IAExD,GAAG,EAAE,MAAM,CAAK;IAChB,IAAI,EAAE,MAAM,CAAK;IAEjB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAO;IAEpC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDpC,UAAU;CAYjB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_1 = require("../../../index");
|
|
7
|
+
const connector_status_enum_1 = require("../connector-status.enum");
|
|
8
|
+
const logger_1 = require("../../../utils/logger");
|
|
9
|
+
const config_1 = __importDefault(require("../../../config/config"));
|
|
10
|
+
const sync_handshake_check_class_1 = __importDefault(require("../websocket/sync-handshake-check.class"));
|
|
11
|
+
const connector_abstract_1 = __importDefault(require("../connector.abstract"));
|
|
12
|
+
const provider_1 = require("@hocuspocus/provider");
|
|
13
|
+
class HocuspocusConnector extends connector_abstract_1.default {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.url = '';
|
|
17
|
+
this.name = '';
|
|
18
|
+
this.provider = null;
|
|
19
|
+
}
|
|
20
|
+
async connect(text) {
|
|
21
|
+
let li = text.lastIndexOf('/');
|
|
22
|
+
if (li == -1 || li == text.length - 1 || !text.startsWith('ws')) {
|
|
23
|
+
(0, logger_1.error)('HocuspocusConnector: UnSupport URL to connect room');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.name = text.substring(li + 1);
|
|
27
|
+
this.url = text.substring(0, li);
|
|
28
|
+
this.yDoc = new index_1.YDoc();
|
|
29
|
+
this.yBaseMap = this.yDoc.getMap();
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
this.provider = new provider_1.HocuspocusProvider({
|
|
32
|
+
url: this.url,
|
|
33
|
+
name: this.name,
|
|
34
|
+
document: this.yDoc,
|
|
35
|
+
});
|
|
36
|
+
this.provider.on('status', (event) => {
|
|
37
|
+
this.status = event.status;
|
|
38
|
+
(0, logger_1.log)('HocuspocusProvider.event status:', event.status);
|
|
39
|
+
});
|
|
40
|
+
this.provider.on('sync', async (synced) => {
|
|
41
|
+
(0, logger_1.log)('HocuspocusProvider.event sync:', synced);
|
|
42
|
+
if (synced) {
|
|
43
|
+
if (config_1.default.ENABLE_SYNC_HANDSHAKE_CHECK) {
|
|
44
|
+
await sync_handshake_check_class_1.default.wait(this.yBaseMap);
|
|
45
|
+
}
|
|
46
|
+
(0, logger_1.log)('HocuspocusProvider.event base map:', this.yBaseMap.toJSON());
|
|
47
|
+
this.synced = true;
|
|
48
|
+
this.clientId = this.yDoc.clientID;
|
|
49
|
+
this.emitSynced(synced);
|
|
50
|
+
resolve();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
(0, logger_1.log)('HocuspocusProvider.event sync:', false);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
this.provider.on('connection-close', (e) => {
|
|
57
|
+
this.status = connector_status_enum_1.ConnectorStatus.DISCONNECTED;
|
|
58
|
+
(0, logger_1.log)('HocuspocusProvider.event connection-close:', e);
|
|
59
|
+
});
|
|
60
|
+
this.provider.on('connection-error', (error) => {
|
|
61
|
+
this.status = connector_status_enum_1.ConnectorStatus.DISCONNECTED;
|
|
62
|
+
(0, logger_1.log)('HocuspocusProvider.event connection-error:', error);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async disconnect() {
|
|
67
|
+
throw new Error('Disconnecting and switching connections are not supported at the moment.');
|
|
68
|
+
/*
|
|
69
|
+
if (this.provider) {
|
|
70
|
+
this.provider.disconnect()
|
|
71
|
+
}
|
|
72
|
+
this.provider = null
|
|
73
|
+
this.synced = false
|
|
74
|
+
this.websocketStatus = ConnectorStatus.DISCONNECTED
|
|
75
|
+
*/
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.default = HocuspocusConnector;
|
package/dist/core/connector/{SyncHandshakeCheck.d.ts → websocket/sync-handshake-check.class.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { YMap } from "../../../index";
|
|
2
2
|
export default class SyncHandshakeCheck {
|
|
3
3
|
static wait(baseMap: YMap<any>): Promise<void>;
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=sync-handshake-check.class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-handshake-check.class.d.ts","sourceRoot":"","sources":["../../../../src/core/connector/websocket/sync-handshake-check.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,uBAAe;AAG9B,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAErC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;CAkC/B"}
|
package/dist/core/connector/{SyncHandshakeCheck.js → websocket/sync-handshake-check.class.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const logger_1 = require("
|
|
3
|
+
const logger_1 = require("../../../utils/logger");
|
|
4
4
|
class SyncHandshakeCheck {
|
|
5
5
|
static wait(baseMap) {
|
|
6
6
|
return new Promise((resolve) => {
|
|
@@ -10,11 +10,9 @@ class SyncHandshakeCheck {
|
|
|
10
10
|
(0, logger_1.log)('Sync handshake start', syncMap.toJSON());
|
|
11
11
|
setTimeout(() => {
|
|
12
12
|
const syncObserver = () => {
|
|
13
|
-
var _a;
|
|
14
13
|
if (syncMap.get('role') === 'server') {
|
|
15
14
|
(0, logger_1.log)('Sync handshake successfully', syncMap.toJSON());
|
|
16
15
|
syncMap.unobserve(syncObserver);
|
|
17
|
-
(0, logger_1.log)('Sync State:', (_a = baseMap.get('state')) === null || _a === void 0 ? void 0 : _a.toJSON());
|
|
18
16
|
resolve();
|
|
19
17
|
}
|
|
20
18
|
};
|
|
@@ -28,7 +26,6 @@ class SyncHandshakeCheck {
|
|
|
28
26
|
else {
|
|
29
27
|
(0, logger_1.log)('Sync handshake waiting...');
|
|
30
28
|
const mapObserver = () => {
|
|
31
|
-
console.log(baseMap.toJSON());
|
|
32
29
|
if (baseMap.has('sync')) {
|
|
33
30
|
baseMap.unobserve(mapObserver);
|
|
34
31
|
waitSync(baseMap.get('sync'));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WebsocketProvider } from "y-websocket";
|
|
2
|
+
import Connector from "../connector.abstract";
|
|
3
|
+
export default class WebsocketConnector extends Connector {
|
|
4
|
+
name: string;
|
|
5
|
+
url: string;
|
|
6
|
+
provider: WebsocketProvider | null;
|
|
7
|
+
connect(text: string): Promise<void>;
|
|
8
|
+
disconnect(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=websocket-connector.class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-connector.class.d.ts","sourceRoot":"","sources":["../../../../src/core/connector/websocket/websocket-connector.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAK9C,OAAO,SAAS,8BAA4C;AAE5D,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,SAAS;IAEvD,IAAI,EAAE,MAAM,CAAK;IACjB,GAAG,EAAE,MAAM,CAAK;IAEhB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAEnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDpC,UAAU;CAYjB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_1 = require("../../../index");
|
|
7
|
+
const y_websocket_1 = require("y-websocket");
|
|
8
|
+
const connector_status_enum_1 = require("../connector-status.enum");
|
|
9
|
+
const logger_1 = require("../../../utils/logger");
|
|
10
|
+
const config_1 = __importDefault(require("../../../config/config"));
|
|
11
|
+
const sync_handshake_check_class_1 = __importDefault(require("./sync-handshake-check.class"));
|
|
12
|
+
const connector_abstract_1 = __importDefault(require("../connector.abstract"));
|
|
13
|
+
class WebsocketConnector extends connector_abstract_1.default {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.name = '';
|
|
17
|
+
this.url = '';
|
|
18
|
+
this.provider = null;
|
|
19
|
+
}
|
|
20
|
+
async connect(text) {
|
|
21
|
+
let li = this.url.lastIndexOf('/');
|
|
22
|
+
if (li == -1 || li == this.url.length - 1 || !this.url.startsWith('ws')) {
|
|
23
|
+
(0, logger_1.error)('WebsocketConnector: UnSupport URL to connect room');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.name = text.substring(li + 1);
|
|
27
|
+
this.url = text.substring(0, li);
|
|
28
|
+
this.yDoc = new index_1.YDoc();
|
|
29
|
+
this.yBaseMap = this.yDoc.getMap();
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
this.provider = new y_websocket_1.WebsocketProvider(this.url, this.name, this.yDoc);
|
|
32
|
+
this.provider.shouldConnect = true;
|
|
33
|
+
this.provider.on('status', (event) => {
|
|
34
|
+
this.status = event.status;
|
|
35
|
+
(0, logger_1.log)('WebsocketConnector.event status:', event.status);
|
|
36
|
+
});
|
|
37
|
+
this.provider.on('sync', async (synced) => {
|
|
38
|
+
if (synced) {
|
|
39
|
+
if (config_1.default.ENABLE_SYNC_HANDSHAKE_CHECK) {
|
|
40
|
+
await sync_handshake_check_class_1.default.wait(this.yBaseMap);
|
|
41
|
+
}
|
|
42
|
+
(0, logger_1.log)('WebsocketConnector.event sync:', this.yBaseMap.toJSON());
|
|
43
|
+
this.synced = true;
|
|
44
|
+
this.clientId = this.yDoc.clientID;
|
|
45
|
+
this.emitSynced(synced);
|
|
46
|
+
resolve();
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
(0, logger_1.log)('WebsocketConnector.event sync:', false);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
this.provider.on('connection-close', (e) => {
|
|
53
|
+
this.status = connector_status_enum_1.ConnectorStatus.DISCONNECTED;
|
|
54
|
+
(0, logger_1.log)('WebsocketConnector.event connection-close:', e);
|
|
55
|
+
});
|
|
56
|
+
this.provider.on('connection-error', (error) => {
|
|
57
|
+
this.status = connector_status_enum_1.ConnectorStatus.DISCONNECTED;
|
|
58
|
+
(0, logger_1.log)('WebsocketConnector.event connection-error:', error);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async disconnect() {
|
|
63
|
+
throw new Error('Disconnecting and switching connections are not supported at the moment.');
|
|
64
|
+
/*
|
|
65
|
+
if (this.provider) {
|
|
66
|
+
this.provider.disconnect()
|
|
67
|
+
}
|
|
68
|
+
this.provider = null
|
|
69
|
+
this.synced = false
|
|
70
|
+
this.websocketStatus = ConnectorStatus.DISCONNECTED
|
|
71
|
+
*/
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.default = WebsocketConnector;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ChangeType } from "./change-type.enum";
|
|
2
|
+
import { Transaction, YArrayEvent, YMapEvent, YTextEvent } from "yjs";
|
|
3
|
+
import { YPath } from "../native/native.type";
|
|
4
|
+
import { ProxiedRhineVar } from "../var/rhine-var.type";
|
|
5
|
+
export type Callback<T> = (key: keyof T, value: T[keyof T] extends object ? T[keyof T] | ProxiedRhineVar<T[keyof T]> : T[keyof T], oldValue: T[keyof T], type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
|
|
6
|
+
export type DeepCallback<T> = (path: YPath, value: any | ProxiedRhineVar<any>, oldValue: any, type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
|
|
7
|
+
export type SyncedCallback = (synced: boolean) => void;
|
|
8
|
+
//# sourceMappingURL=callback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/core/event/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,2BAAsC;AACzD,OAAO,EAAgB,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACnF,OAAO,EAAC,KAAK,EAAC,8BAAkC;AAChD,OAAO,EAAC,eAAe,EAAC,8BAAkC;AAG1D,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CACxB,GAAG,EAAE,MAAM,CAAC,EACZ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAC3D,iBAAiB,EAAE,WAAW,KAC3B,IAAI,CAAA;AAET,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAC5B,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,EACjC,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAC3D,iBAAiB,EAAE,WAAW,KAC3B,IAAI,CAAA;AAET,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-type.enum.d.ts","sourceRoot":"","sources":["../../../src/core/event/change-type.enum.ts"],"names":[],"mappings":"AACA,oBAAY,UAAU;IACpB,GAAG,QAAQ,CAAG,oBAAoB;IAClC,MAAM,WAAW,CAAG,WAAW;IAC/B,MAAM,WAAW,CAAG,oBAAoB;IACxC,IAAI,SAAS;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-type.enum.d.ts","sourceRoot":"","sources":["../../../src/core/native/native-type.enum.ts"],"names":[],"mappings":"AACA,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,OAAO,aAAa;CACrB"}
|