@hocuspocus/provider 1.0.0-alpha.9 → 1.0.0-beta.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.
Files changed (134) hide show
  1. package/dist/hocuspocus-provider.cjs +374 -186
  2. package/dist/hocuspocus-provider.cjs.map +1 -1
  3. package/dist/hocuspocus-provider.esm.js +372 -182
  4. package/dist/hocuspocus-provider.esm.js.map +1 -1
  5. package/dist/packages/common/src/CloseEvents.d.ts +23 -0
  6. package/dist/packages/common/src/auth.d.ts +6 -0
  7. package/dist/packages/common/src/awarenessStatesToArray.d.ts +3 -0
  8. package/dist/packages/common/src/index.d.ts +4 -0
  9. package/dist/packages/common/src/types.d.ts +10 -0
  10. package/dist/packages/extension-database/src/Database.d.ts +30 -0
  11. package/dist/packages/extension-database/src/index.d.ts +1 -0
  12. package/dist/packages/extension-logger/src/Logger.d.ts +67 -0
  13. package/dist/packages/extension-logger/src/index.d.ts +1 -0
  14. package/dist/packages/{monitor → extension-monitor}/src/Collector.d.ts +4 -5
  15. package/dist/packages/{monitor → extension-monitor}/src/Dashboard.d.ts +2 -2
  16. package/dist/packages/{monitor → extension-monitor}/src/Storage.d.ts +0 -0
  17. package/dist/packages/{monitor → extension-monitor}/src/index.d.ts +3 -5
  18. package/dist/packages/extension-redis/src/Redis.d.ts +98 -0
  19. package/dist/packages/extension-redis/src/index.d.ts +1 -0
  20. package/dist/packages/extension-sqlite/src/SQLite.d.ts +26 -0
  21. package/dist/packages/extension-sqlite/src/index.d.ts +1 -0
  22. package/dist/packages/extension-throttle/src/index.d.ts +24 -0
  23. package/dist/packages/{webhook → extension-webhook}/src/index.d.ts +5 -11
  24. package/dist/packages/provider/src/EventEmitter.d.ts +1 -1
  25. package/dist/packages/provider/src/HocuspocusCloudProvider.d.ts +11 -0
  26. package/dist/packages/provider/src/HocuspocusProvider.d.ts +116 -33
  27. package/dist/packages/provider/src/IncomingMessage.d.ts +9 -6
  28. package/dist/packages/provider/src/MessageReceiver.d.ts +3 -2
  29. package/dist/packages/provider/src/MessageSender.d.ts +4 -9
  30. package/dist/packages/provider/src/OutgoingMessage.d.ts +5 -4
  31. package/dist/packages/provider/src/OutgoingMessages/AuthenticationMessage.d.ts +7 -0
  32. package/dist/packages/provider/src/OutgoingMessages/UpdateMessage.d.ts +1 -2
  33. package/dist/packages/provider/src/index.d.ts +1 -1
  34. package/dist/packages/provider/src/types.d.ts +54 -2
  35. package/dist/packages/server/src/Connection.d.ts +20 -7
  36. package/dist/packages/server/src/Debugger.d.ts +14 -0
  37. package/dist/packages/server/src/Document.d.ts +11 -5
  38. package/dist/packages/server/src/Hocuspocus.d.ts +63 -17
  39. package/dist/packages/server/src/IncomingMessage.d.ts +11 -7
  40. package/dist/packages/server/src/MessageReceiver.d.ts +13 -0
  41. package/dist/packages/server/src/OutgoingMessage.d.ts +6 -0
  42. package/dist/packages/server/src/index.d.ts +6 -0
  43. package/dist/packages/server/src/types.d.ts +180 -26
  44. package/dist/{demos/backend/src/create-document.d.ts → playground/backend/src/default.d.ts} +0 -0
  45. package/dist/{demos → playground}/backend/src/express.d.ts +0 -0
  46. package/dist/{demos → playground}/backend/src/koa.d.ts +0 -0
  47. package/dist/{demos/backend/src/minimal.d.ts → playground/backend/src/load-document.d.ts} +0 -0
  48. package/dist/{demos → playground}/backend/src/monitor.d.ts +0 -0
  49. package/dist/{demos → playground}/backend/src/redis.d.ts +0 -0
  50. package/dist/{demos → playground}/backend/src/slow.d.ts +0 -0
  51. package/dist/{demos → playground}/backend/src/webhook.d.ts +0 -0
  52. package/dist/tests/extension-database/fetch.d.ts +1 -0
  53. package/dist/tests/extension-logger/onListen.d.ts +1 -0
  54. package/dist/tests/extension-redis/closeConnections.d.ts +1 -0
  55. package/dist/tests/extension-redis/getConnectionCount.d.ts +1 -0
  56. package/dist/tests/extension-redis/getDocumentsCount.d.ts +1 -0
  57. package/dist/tests/extension-redis/onAwarenessChange.d.ts +1 -0
  58. package/dist/tests/extension-redis/onChange.d.ts +1 -0
  59. package/dist/tests/extension-redis/onStoreDocument.d.ts +1 -0
  60. package/dist/tests/extension-throttle/configuration.d.ts +1 -0
  61. package/dist/tests/provider/configuration.d.ts +1 -0
  62. package/dist/tests/provider/observe.d.ts +1 -0
  63. package/dist/tests/provider/observeDeep.d.ts +1 -0
  64. package/dist/tests/provider/onAuthenticated.d.ts +1 -0
  65. package/dist/tests/provider/onAuthenticationFailed.d.ts +1 -0
  66. package/dist/tests/provider/onAwarenessChange.d.ts +1 -0
  67. package/dist/tests/provider/onAwarenessUpdate.d.ts +1 -0
  68. package/dist/tests/provider/onClose.d.ts +1 -0
  69. package/dist/tests/provider/onConnect.d.ts +1 -0
  70. package/dist/tests/provider/onDisconnect.d.ts +1 -0
  71. package/dist/tests/provider/onMessage.d.ts +1 -0
  72. package/dist/tests/provider/onOpen.d.ts +1 -0
  73. package/dist/tests/provider/onSynced.d.ts +1 -0
  74. package/dist/tests/server/address.d.ts +1 -0
  75. package/dist/tests/server/afterStoreDocument.d.ts +1 -0
  76. package/dist/tests/server/beforeHandleMessage.d.ts +1 -0
  77. package/dist/tests/server/closeConnections.d.ts +1 -0
  78. package/dist/tests/server/getConnectionsCount.d.ts +1 -0
  79. package/dist/tests/server/getDocumentName.d.ts +1 -0
  80. package/dist/tests/server/getDocumentsCount.d.ts +1 -0
  81. package/dist/tests/server/getMessageLogs.d.ts +1 -0
  82. package/dist/tests/server/listen.d.ts +1 -0
  83. package/dist/tests/server/onAuthenticate.d.ts +1 -0
  84. package/dist/tests/server/onAwarenessUpdate.d.ts +1 -0
  85. package/dist/tests/server/onChange.d.ts +1 -0
  86. package/dist/tests/server/onConfigure.d.ts +1 -0
  87. package/dist/tests/server/onConnect.d.ts +1 -0
  88. package/dist/tests/server/onDestroy.d.ts +1 -0
  89. package/dist/tests/server/onDisconnect.d.ts +1 -0
  90. package/dist/tests/server/onListen.d.ts +1 -0
  91. package/dist/tests/server/onLoadDocument.d.ts +1 -0
  92. package/dist/tests/server/onRequest.d.ts +1 -0
  93. package/dist/tests/server/onStoreDocument.d.ts +1 -0
  94. package/dist/tests/server/onUpgrade.d.ts +1 -0
  95. package/dist/tests/server/requiresAuthentication.d.ts +1 -0
  96. package/dist/tests/server/websocketError.d.ts +1 -0
  97. package/dist/tests/transformer/TiptapTransformer.d.ts +1 -0
  98. package/dist/tests/utils/createDirectory.d.ts +1 -0
  99. package/dist/tests/utils/flushRedis.d.ts +1 -0
  100. package/dist/tests/utils/index.d.ts +8 -0
  101. package/dist/tests/utils/newHocuspocus.d.ts +2 -0
  102. package/dist/tests/utils/newHocuspocusProvider.d.ts +3 -0
  103. package/dist/tests/utils/randomInteger.d.ts +1 -0
  104. package/dist/tests/utils/redisConnectionSettings.d.ts +4 -0
  105. package/dist/tests/utils/removeDirectory.d.ts +1 -0
  106. package/dist/tests/utils/retryableAssertion.d.ts +2 -0
  107. package/dist/tests/utils/sleep.d.ts +1 -0
  108. package/package.json +16 -10
  109. package/src/EventEmitter.ts +1 -1
  110. package/src/HocuspocusCloudProvider.ts +34 -0
  111. package/src/HocuspocusProvider.ts +410 -162
  112. package/src/IncomingMessage.ts +35 -11
  113. package/src/MessageReceiver.ts +56 -24
  114. package/src/MessageSender.ts +5 -17
  115. package/src/OutgoingMessage.ts +9 -9
  116. package/src/OutgoingMessages/AuthenticationMessage.ts +21 -0
  117. package/src/OutgoingMessages/AwarenessMessage.ts +1 -1
  118. package/src/OutgoingMessages/SyncStepOneMessage.ts +0 -1
  119. package/src/OutgoingMessages/UpdateMessage.ts +4 -4
  120. package/src/index.ts +1 -1
  121. package/src/types.ts +70 -3
  122. package/CHANGELOG.md +0 -64
  123. package/LICENSE.md +0 -21
  124. package/dist/packages/logger/src/index.d.ts +0 -13
  125. package/dist/packages/provider/src/utils/awarenessStatesToArray.d.ts +0 -4
  126. package/dist/packages/provider/src/utils/index.d.ts +0 -1
  127. package/dist/packages/redis/src/Redis.d.ts +0 -22
  128. package/dist/packages/redis/src/RedisCluster.d.ts +0 -4
  129. package/dist/packages/redis/src/index.d.ts +0 -2
  130. package/dist/packages/rocksdb/src/index.d.ts +0 -30
  131. package/dist/packages/server/src/CloseEvents.d.ts +0 -3
  132. package/dist/packages/throttle/src/index.d.ts +0 -28
  133. package/src/utils/awarenessStatesToArray.ts +0 -8
  134. package/src/utils/index.ts +0 -1
@@ -1,25 +1,49 @@
1
- import * as decoding from 'lib0/decoding'
2
- import * as encoding from 'lib0/encoding'
1
+ import {
2
+ createDecoder,
3
+ readVarUint,
4
+ readVarUint8Array,
5
+ Decoder,
6
+ } from 'lib0/decoding'
7
+ import {
8
+ Encoder,
9
+ createEncoder,
10
+ writeVarUint,
11
+ writeVarUint8Array,
12
+ length,
13
+ } from 'lib0/encoding'
3
14
  import { MessageType } from './types'
4
15
 
5
16
  export class IncomingMessage {
6
17
 
7
18
  data: any
8
19
 
9
- encoder: encoding.Encoder
20
+ encoder: Encoder
10
21
 
11
- decoder: decoding.Decoder
12
-
13
- type: MessageType
22
+ decoder: Decoder
14
23
 
15
24
  constructor(data: any) {
16
25
  this.data = data
17
- this.encoder = encoding.createEncoder()
18
- this.decoder = decoding.createDecoder(new Uint8Array(this.data))
19
- this.type = decoding.readVarUint(this.decoder)
26
+ this.encoder = createEncoder()
27
+ this.decoder = createDecoder(new Uint8Array(this.data))
28
+ }
29
+
30
+ readVarUint(): MessageType {
31
+ return readVarUint(this.decoder)
32
+ }
33
+
34
+ readVarUint8Array() {
35
+ return readVarUint8Array(this.decoder)
36
+ }
37
+
38
+ writeVarUint(type: MessageType) {
39
+ return writeVarUint(this.encoder, type)
40
+ }
41
+
42
+ writeVarUint8Array(data: Uint8Array) {
43
+ return writeVarUint8Array(this.encoder, data)
20
44
  }
21
45
 
22
- get name() {
23
- return MessageType[this.type]
46
+ length() {
47
+ return length(this.encoder)
24
48
  }
25
49
  }
@@ -1,22 +1,32 @@
1
- import * as decoding from 'lib0/decoding'
2
- import * as encoding from 'lib0/encoding'
3
1
  import * as awarenessProtocol from 'y-protocols/awareness'
4
- import * as syncProtocol from 'y-protocols/sync'
5
- import * as authProtocol from 'y-protocols/auth'
2
+ import { readSyncMessage, messageYjsSyncStep2, messageYjsUpdate } from 'y-protocols/sync'
3
+ import { readAuthMessage } from '@hocuspocus/common'
6
4
  import { MessageType } from './types'
7
5
  import { HocuspocusProvider } from './HocuspocusProvider'
8
6
  import { IncomingMessage } from './IncomingMessage'
7
+ import { OutgoingMessage } from './OutgoingMessage'
9
8
 
10
9
  export class MessageReceiver {
11
10
 
12
11
  message: IncomingMessage
13
12
 
13
+ broadcasted = false
14
+
14
15
  constructor(message: IncomingMessage) {
15
16
  this.message = message
16
17
  }
17
18
 
19
+ public setBroadcasted(value: boolean) {
20
+ this.broadcasted = value
21
+
22
+ return this
23
+ }
24
+
18
25
  public apply(provider: HocuspocusProvider, emitSynced = true) {
19
- switch (this.message.type) {
26
+ const { message } = this
27
+ const type = message.readVarUint()
28
+
29
+ switch (type) {
20
30
  case MessageType.Sync:
21
31
  this.applySyncMessage(provider, emitSynced)
22
32
  break
@@ -34,51 +44,73 @@ export class MessageReceiver {
34
44
  break
35
45
 
36
46
  default:
37
- throw new Error(`Can’t apply unknown type of message: ${this.message.type}`)
47
+ throw new Error(`Can’t apply message of unknown type: ${type}`)
38
48
  }
39
49
 
40
- return this.message.encoder
50
+ // Reply
51
+ if (message.length() > 1) {
52
+ if (this.broadcasted) {
53
+ // TODO: Some weird TypeScript error
54
+ // @ts-ignore
55
+ provider.broadcast(OutgoingMessage, { encoder: message.encoder })
56
+ } else {
57
+ // TODO: Some weird TypeScript error
58
+ // @ts-ignore
59
+ provider.send(OutgoingMessage, { encoder: message.encoder })
60
+ }
61
+ }
41
62
  }
42
63
 
43
64
  private applySyncMessage(provider: HocuspocusProvider, emitSynced: boolean) {
44
- encoding.writeVarUint(this.message.encoder, MessageType.Sync)
65
+ const { message } = this
66
+
67
+ message.writeVarUint(MessageType.Sync)
45
68
 
46
- const syncMessageType = syncProtocol.readSyncMessage(
47
- this.message.decoder,
48
- this.message.encoder,
69
+ // Apply update
70
+ const syncMessageType = readSyncMessage(
71
+ message.decoder,
72
+ message.encoder,
49
73
  provider.document,
50
74
  provider,
51
75
  )
52
76
 
53
- if (emitSynced && syncMessageType === syncProtocol.messageYjsSyncStep2) {
77
+ // Synced once we receive Step2
78
+ if (emitSynced && (syncMessageType === messageYjsSyncStep2)) {
54
79
  provider.synced = true
55
80
  }
81
+
82
+ if (syncMessageType === messageYjsUpdate || syncMessageType === messageYjsSyncStep2) {
83
+ if (provider.unsyncedChanges > 0) {
84
+ provider.unsyncedChanges -= 1
85
+ }
86
+ }
56
87
  }
57
88
 
58
89
  private applyAwarenessMessage(provider: HocuspocusProvider) {
90
+ const { message } = this
91
+
59
92
  awarenessProtocol.applyAwarenessUpdate(
60
93
  provider.awareness,
61
- decoding.readVarUint8Array(this.message.decoder),
94
+ message.readVarUint8Array(),
62
95
  provider,
63
96
  )
64
97
  }
65
98
 
66
- // TODO: This isn’t really used. Needs to be implemented in the server, or removed here.
67
99
  private applyAuthMessage(provider: HocuspocusProvider) {
68
- authProtocol.readAuthMessage(
69
- this.message.decoder,
70
- provider.document,
71
- // TODO: Add a configureable hook
72
- (provider, reason) => {
73
- console.warn(`Permission denied to access ${provider.url}.\n${reason}`)
74
- },
100
+ const { message } = this
101
+
102
+ readAuthMessage(
103
+ message.decoder,
104
+ provider.permissionDeniedHandler.bind(provider),
105
+ provider.authenticatedHandler.bind(provider),
75
106
  )
76
107
  }
77
108
 
78
109
  private applyQueryAwarenessMessage(provider: HocuspocusProvider) {
79
- encoding.writeVarUint(this.message.encoder, MessageType.Awareness)
80
- encoding.writeVarUint8Array(
81
- this.message.encoder,
110
+ const { message } = this
111
+
112
+ message.writeVarUint(MessageType.Awareness)
113
+ message.writeVarUint8Array(
82
114
  awarenessProtocol.encodeAwarenessUpdate(
83
115
  provider.awareness,
84
116
  Array.from(provider.awareness.getStates().keys()),
@@ -1,32 +1,20 @@
1
- import * as encoding from 'lib0/encoding'
1
+ import { Encoder, toUint8Array } from 'lib0/encoding'
2
2
  import * as bc from 'lib0/broadcastchannel'
3
- import { OutgoingMessage } from './OutgoingMessage'
4
- import { AwarenessMessage } from './OutgoingMessages/AwarenessMessage'
5
- import { QueryAwarenessMessage } from './OutgoingMessages/QueryAwarenessMessage'
6
- import { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage'
7
- import { SyncStepTwoMessage } from './OutgoingMessages/SyncStepTwoMessage'
8
- import { UpdateMessage } from './OutgoingMessages/UpdateMessage'
9
- import { Constructable } from './types'
3
+ import { ConstructableOutgoingMessage } from './types'
10
4
 
11
5
  export class MessageSender {
12
6
 
13
- encoder: encoding.Encoder
7
+ encoder: Encoder
14
8
 
15
9
  message: any
16
10
 
17
- constructor(Message:
18
- Constructable<AwarenessMessage> |
19
- Constructable<QueryAwarenessMessage> |
20
- Constructable<SyncStepOneMessage> |
21
- Constructable<SyncStepTwoMessage> |
22
- Constructable<UpdateMessage>,
23
- args: any = {}) {
11
+ constructor(Message: ConstructableOutgoingMessage, args: any = {}) {
24
12
  this.message = new Message()
25
13
  this.encoder = this.message.get(args)
26
14
  }
27
15
 
28
16
  create() {
29
- return encoding.toUint8Array(this.encoder)
17
+ return toUint8Array(this.encoder)
30
18
  }
31
19
 
32
20
  send(webSocket: any) {
@@ -1,20 +1,20 @@
1
- import * as encoding from 'lib0/encoding'
2
- import { MessageType, OutgoingMessageInterface } from './types'
1
+ import { Encoder, createEncoder, toUint8Array } from 'lib0/encoding'
2
+ import { MessageType, OutgoingMessageArguments, OutgoingMessageInterface } from './types'
3
3
 
4
4
  export class OutgoingMessage implements OutgoingMessageInterface {
5
- encoder: encoding.Encoder
5
+ encoder: Encoder
6
6
 
7
7
  type?: MessageType
8
8
 
9
9
  constructor() {
10
- this.encoder = encoding.createEncoder()
10
+ this.encoder = createEncoder()
11
11
  }
12
12
 
13
- get name() {
14
- if (typeof this.type === 'number') {
15
- return MessageType[this.type]
16
- }
13
+ get(args: Partial<OutgoingMessageArguments>) {
14
+ return args.encoder
15
+ }
17
16
 
18
- throw new Error('Type for outgoing message not set.')
17
+ toUint8Array() {
18
+ return toUint8Array(this.encoder)
19
19
  }
20
20
  }
@@ -0,0 +1,21 @@
1
+ import { writeVarUint } from 'lib0/encoding'
2
+ import { writeAuthentication } from '@hocuspocus/common'
3
+ import { MessageType, OutgoingMessageArguments } from '../types'
4
+ import { OutgoingMessage } from '../OutgoingMessage'
5
+
6
+ export class AuthenticationMessage extends OutgoingMessage {
7
+ type = MessageType.Auth
8
+
9
+ description = 'Authentication'
10
+
11
+ get(args: Partial<OutgoingMessageArguments>) {
12
+ if (typeof args.token === 'undefined') {
13
+ throw new Error('The authentication message requires `token` as an argument.')
14
+ }
15
+
16
+ writeVarUint(this.encoder, this.type)
17
+ writeAuthentication(this.encoder, args.token)
18
+
19
+ return this.encoder
20
+ }
21
+ }
@@ -1,5 +1,5 @@
1
1
  import * as encoding from 'lib0/encoding'
2
- import { Awareness, encodeAwarenessUpdate } from 'y-protocols/awareness'
2
+ import { encodeAwarenessUpdate } from 'y-protocols/awareness'
3
3
  import { MessageType, OutgoingMessageArguments } from '../types'
4
4
  import { OutgoingMessage } from '../OutgoingMessage'
5
5
 
@@ -1,4 +1,3 @@
1
- import * as Y from 'yjs'
2
1
  import * as encoding from 'lib0/encoding'
3
2
  import * as syncProtocol from 'y-protocols/sync'
4
3
  import { MessageType, OutgoingMessageArguments } from '../types'
@@ -1,5 +1,5 @@
1
- import * as encoding from 'lib0/encoding'
2
- import * as syncProtocol from 'y-protocols/sync'
1
+ import { writeVarUint } from 'lib0/encoding'
2
+ import { writeUpdate } from 'y-protocols/sync'
3
3
  import { MessageType, OutgoingMessageArguments } from '../types'
4
4
  import { OutgoingMessage } from '../OutgoingMessage'
5
5
 
@@ -9,8 +9,8 @@ export class UpdateMessage extends OutgoingMessage {
9
9
  description = 'A document update'
10
10
 
11
11
  get(args: Partial<OutgoingMessageArguments>) {
12
- encoding.writeVarUint(this.encoder, this.type)
13
- syncProtocol.writeUpdate(this.encoder, args.update)
12
+ writeVarUint(this.encoder, this.type)
13
+ writeUpdate(this.encoder, args.update)
14
14
 
15
15
  return this.encoder
16
16
  }
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from './HocuspocusProvider'
2
+ export * from './HocuspocusCloudProvider'
2
3
  export * from './types'
3
- export * from './utils'
package/src/types.ts CHANGED
@@ -1,6 +1,15 @@
1
1
  import { Awareness } from 'y-protocols/awareness'
2
2
  import * as Y from 'yjs'
3
- import * as encoding from 'lib0/encoding'
3
+ import { Encoder } from 'lib0/encoding'
4
+ import type { Event, CloseEvent, MessageEvent } from 'ws'
5
+ import { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage'
6
+ import { AwarenessMessage } from './OutgoingMessages/AwarenessMessage'
7
+ import { QueryAwarenessMessage } from './OutgoingMessages/QueryAwarenessMessage'
8
+ import { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage'
9
+ import { SyncStepTwoMessage } from './OutgoingMessages/SyncStepTwoMessage'
10
+ import { UpdateMessage } from './OutgoingMessages/UpdateMessage'
11
+ import { IncomingMessage } from './IncomingMessage'
12
+ import { OutgoingMessage } from './OutgoingMessage'
4
13
 
5
14
  export enum MessageType {
6
15
  Sync = 0,
@@ -9,20 +18,78 @@ export enum MessageType {
9
18
  QueryAwareness = 3,
10
19
  }
11
20
 
12
- export interface OutgoingMessageInterface {
13
- encoder: encoding.Encoder
21
+ export enum WebSocketStatus {
22
+ Connecting = 'connecting',
23
+ Connected = 'connected',
24
+ Disconnected = 'disconnected',
25
+ }
14
26
 
27
+ export interface OutgoingMessageInterface {
28
+ encoder: Encoder
15
29
  type?: MessageType
16
30
  }
17
31
 
18
32
  export interface OutgoingMessageArguments {
33
+ token: string,
19
34
  document: Y.Doc,
20
35
  awareness: Awareness,
21
36
  clients: number[],
22
37
  states: Map<number, { [key: string]: any; }>,
23
38
  update: any,
39
+ encoder: Encoder,
24
40
  }
25
41
 
26
42
  export interface Constructable<T> {
27
43
  new(...args: any) : T
28
44
  }
45
+
46
+ export type ConstructableOutgoingMessage =
47
+ Constructable<AuthenticationMessage> |
48
+ Constructable<AwarenessMessage> |
49
+ Constructable<QueryAwarenessMessage> |
50
+ Constructable<SyncStepOneMessage> |
51
+ Constructable<SyncStepTwoMessage> |
52
+ Constructable<UpdateMessage>
53
+
54
+ export type onAuthenticationFailedParameters = {
55
+ reason: string,
56
+ }
57
+
58
+ export type onOpenParameters = {
59
+ event: Event,
60
+ }
61
+
62
+ export type onMessageParameters = {
63
+ event: MessageEvent,
64
+ message: IncomingMessage,
65
+ }
66
+
67
+ export type onOutgoingMessageParameters = {
68
+ message: OutgoingMessage,
69
+ }
70
+
71
+ export type onStatusParameters = {
72
+ status: WebSocketStatus,
73
+ }
74
+
75
+ export type onSyncedParameters = {
76
+ state: boolean,
77
+ }
78
+
79
+ export type onDisconnectParameters = {
80
+ event: CloseEvent,
81
+ }
82
+
83
+ export type onCloseParameters = {
84
+ event: CloseEvent,
85
+ }
86
+
87
+ export type onAwarenessUpdateParameters = {
88
+ states: StatesArray
89
+ }
90
+
91
+ export type onAwarenessChangeParameters = {
92
+ states: StatesArray
93
+ }
94
+
95
+ export type StatesArray = { clientId: number, [key: string | number]: any }[]
package/CHANGELOG.md DELETED
@@ -1,64 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- # [1.0.0-alpha.9](https://github.com/ueberdosis/hocuspocus/compare/@hocuspocus/provider@1.0.0-alpha.8...@hocuspocus/provider@1.0.0-alpha.9) (2021-08-19)
7
-
8
- **Note:** Version bump only for package @hocuspocus/provider
9
-
10
-
11
-
12
-
13
-
14
- # [1.0.0-alpha.8](https://github.com/ueberdosis/hocuspocus/compare/@hocuspocus/provider@1.0.0-alpha.7...@hocuspocus/provider@1.0.0-alpha.8) (2021-06-23)
15
-
16
- **Note:** Version bump only for package @hocuspocus/provider
17
-
18
-
19
-
20
-
21
-
22
- # [1.0.0-alpha.7](https://github.com/ueberdosis/hocuspocus/compare/@hocuspocus/provider@1.0.0-alpha.6...@hocuspocus/provider@1.0.0-alpha.7) (2021-06-22)
23
-
24
- **Note:** Version bump only for package @hocuspocus/provider
25
-
26
-
27
-
28
-
29
-
30
- # [1.0.0-alpha.6](https://github.com/ueberdosis/hocuspocus/compare/@hocuspocus/provider@1.0.0-alpha.5...@hocuspocus/provider@1.0.0-alpha.6) (2021-06-11)
31
-
32
- **Note:** Version bump only for package @hocuspocus/provider
33
-
34
-
35
-
36
-
37
-
38
- # [1.0.0-alpha.5](https://github.com/ueberdosis/hocuspocus/compare/@hocuspocus/provider@1.0.0-alpha.4...@hocuspocus/provider@1.0.0-alpha.5) (2021-06-11)
39
-
40
- **Note:** Version bump only for package @hocuspocus/provider
41
-
42
-
43
-
44
-
45
-
46
- # [1.0.0-alpha.4](https://github.com/ueberdosis/hocuspocus/compare/@hocuspocus/provider@1.0.0-alpha.3...@hocuspocus/provider@1.0.0-alpha.4) (2021-06-09)
47
-
48
- **Note:** Version bump only for package @hocuspocus/provider
49
-
50
-
51
-
52
-
53
-
54
- # [1.0.0-alpha.3](https://github.com/ueberdosis/hocuspocus/compare/@hocuspocus/provider@1.0.0-alpha.2...@hocuspocus/provider@1.0.0-alpha.3) (2021-06-09)
55
-
56
- **Note:** Version bump only for package @hocuspocus/provider
57
-
58
-
59
-
60
-
61
-
62
- # 1.0.0-alpha.2 (2021-06-08)
63
-
64
- **Note:** Version bump only for package @hocuspocus/provider
package/LICENSE.md DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2021, überdosis GbR
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,13 +0,0 @@
1
- import { Extension, onChangePayload, onConfigurePayload, onConnectPayload, onCreateDocumentPayload, onDestroyPayload, onDisconnectPayload, onListenPayload, onRequestPayload, onUpgradePayload } from '@hocuspocus/server';
2
- export declare class Logger implements Extension {
3
- onCreateDocument(data: onCreateDocumentPayload): Promise<void>;
4
- onChange(data: onChangePayload): Promise<void>;
5
- onConnect(data: onConnectPayload): Promise<void>;
6
- onDisconnect(data: onDisconnectPayload): Promise<void>;
7
- onUpgrade(data: onUpgradePayload): Promise<void>;
8
- onRequest(data: onRequestPayload): Promise<void>;
9
- onListen(data: onListenPayload): Promise<void>;
10
- onDestroy(data: onDestroyPayload): Promise<void>;
11
- onConfigure(data: onConfigurePayload): Promise<void>;
12
- private static log;
13
- }
@@ -1,4 +0,0 @@
1
- declare const _default: (states: Map<number, Record<string, any>>) => {
2
- clientId: number;
3
- }[];
4
- export default _default;
@@ -1 +0,0 @@
1
- export { default as awarenessStatesToArray } from './awarenessStatesToArray';
@@ -1,22 +0,0 @@
1
- import { RedisPersistence } from 'y-redis';
2
- import { Extension, onChangePayload, onConfigurePayload, onConnectPayload, onCreateDocumentPayload, onDestroyPayload, onDisconnectPayload, onListenPayload, onRequestPayload, onUpgradePayload } from '@hocuspocus/server';
3
- export interface Configuration {
4
- }
5
- export declare class Redis implements Extension {
6
- configuration: Configuration;
7
- cluster: boolean;
8
- persistence: RedisPersistence | undefined;
9
- /**
10
- * Constructor
11
- */
12
- constructor(configuration?: Partial<Configuration>);
13
- onCreateDocument(data: onCreateDocumentPayload): Promise<import("yjs").Doc | undefined>;
14
- onConnect(data: onConnectPayload): Promise<void>;
15
- onChange(data: onChangePayload): Promise<void>;
16
- onDisconnect(data: onDisconnectPayload): Promise<void>;
17
- onListen(data: onListenPayload): Promise<void>;
18
- onDestroy(data: onDestroyPayload): Promise<void>;
19
- onConfigure(data: onConfigurePayload): Promise<void>;
20
- onRequest(data: onRequestPayload): Promise<void>;
21
- onUpgrade(data: onUpgradePayload): Promise<void>;
22
- }
@@ -1,4 +0,0 @@
1
- import { Redis } from './Redis';
2
- export declare class RedisCluster extends Redis {
3
- cluster: boolean;
4
- }
@@ -1,2 +0,0 @@
1
- export * from './Redis';
2
- export * from './RedisCluster';
@@ -1,30 +0,0 @@
1
- import { Extension, onChangePayload, onConfigurePayload, onConnectPayload, onCreateDocumentPayload, onDestroyPayload, onDisconnectPayload, onListenPayload, onRequestPayload, onUpgradePayload } from '@hocuspocus/server';
2
- import { LeveldbPersistence } from 'y-leveldb';
3
- export interface Configuration {
4
- options: object | undefined;
5
- path: string;
6
- }
7
- export declare class RocksDB implements Extension {
8
- configuration: Configuration;
9
- provider: LeveldbPersistence;
10
- /**
11
- * Constructor
12
- */
13
- constructor(configuration?: Partial<Configuration>);
14
- /**
15
- * onCreateDocument hook
16
- */
17
- onCreateDocument(data: onCreateDocumentPayload): Promise<any>;
18
- /**
19
- * store updates in y-leveldb persistence
20
- */
21
- store(documentName: string, update: Uint8Array): Promise<any>;
22
- onChange(data: onChangePayload): Promise<void>;
23
- onConnect(data: onConnectPayload): Promise<void>;
24
- onDisconnect(data: onDisconnectPayload): Promise<void>;
25
- onListen(data: onListenPayload): Promise<void>;
26
- onDestroy(data: onDestroyPayload): Promise<void>;
27
- onConfigure(data: onConfigurePayload): Promise<void>;
28
- onRequest(data: onRequestPayload): Promise<void>;
29
- onUpgrade(data: onUpgradePayload): Promise<void>;
30
- }
@@ -1,3 +0,0 @@
1
- import { CloseEvent } from './types';
2
- export declare const Forbidden: CloseEvent;
3
- export declare const CloseEvents: CloseEvent[];
@@ -1,28 +0,0 @@
1
- import { Extension, onChangePayload, onConfigurePayload, onConnectPayload, onCreateDocumentPayload, onDestroyPayload, onDisconnectPayload, onListenPayload, onRequestPayload, onUpgradePayload } from '@hocuspocus/server';
2
- export interface Configuration {
3
- throttle: number | null | false;
4
- banTime: number;
5
- }
6
- export declare class Throttle implements Extension {
7
- configuration: Configuration;
8
- connectionsByIp: Map<string, Array<number>>;
9
- bannedIps: Map<string, number>;
10
- /**
11
- * Throttle requests
12
- * @private
13
- */
14
- private throttle;
15
- /**
16
- * onConnect hook
17
- * @param data
18
- */
19
- onConnect(data: onConnectPayload): Promise<any>;
20
- onCreateDocument(data: onCreateDocumentPayload): Promise<void>;
21
- onChange(data: onChangePayload): Promise<void>;
22
- onDisconnect(data: onDisconnectPayload): Promise<void>;
23
- onUpgrade(data: onUpgradePayload): Promise<void>;
24
- onRequest(data: onRequestPayload): Promise<void>;
25
- onListen(data: onListenPayload): Promise<void>;
26
- onDestroy(data: onDestroyPayload): Promise<void>;
27
- onConfigure(data: onConfigurePayload): Promise<void>;
28
- }
@@ -1,8 +0,0 @@
1
- export default (states: Map<number, Record<string, any>>) => {
2
- return Array.from(states.entries()).map(([key, value]) => {
3
- return {
4
- clientId: key,
5
- ...value,
6
- }
7
- })
8
- }
@@ -1 +0,0 @@
1
- export { default as awarenessStatesToArray } from './awarenessStatesToArray'