@hocuspocus/extension-database 1.0.0-alpha.1 → 1.0.0-alpha.5

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.
@@ -0,0 +1,23 @@
1
+ export interface CloseEvent {
2
+ code: number;
3
+ reason: string;
4
+ }
5
+ /**
6
+ * The server successfully processed the request, asks that the requester reset
7
+ * its document view, and is not returning any content.
8
+ */
9
+ export declare const ResetConnection: CloseEvent;
10
+ /**
11
+ * Similar to Forbidden, but specifically for use when authentication is required and has
12
+ * failed or has not yet been provided.
13
+ */
14
+ export declare const Unauthorized: CloseEvent;
15
+ /**
16
+ * The request contained valid data and was understood by the server, but the server
17
+ * is refusing action.
18
+ */
19
+ export declare const Forbidden: CloseEvent;
20
+ /**
21
+ * The server timed out waiting for the request.
22
+ */
23
+ export declare const ConnectionTimeout: CloseEvent;
@@ -1 +1,2 @@
1
1
  export * from './auth';
2
+ export * from './CloseEvents';
@@ -1,10 +1,11 @@
1
- import { HocuspocusProvider, HocuspocusProviderOptions } from './HocuspocusProvider';
2
- export interface HocuspocusCloudProviderOptions extends HocuspocusProviderOptions {
1
+ import { HocuspocusProvider, HocuspocusProviderConfiguration } from './HocuspocusProvider';
2
+ export declare type HocuspocusCloudProviderConfiguration = Required<Pick<HocuspocusProviderConfiguration, 'name'>> & Partial<HocuspocusProviderConfiguration> & AdditionalHocuspocusCloudProviderConfiguration;
3
+ export interface AdditionalHocuspocusCloudProviderConfiguration {
3
4
  /**
4
5
  * A Hocuspocus Cloud key, get one here: https://hocuspocus.cloud/
5
6
  */
6
7
  key: string;
7
8
  }
8
9
  export declare class HocuspocusCloudProvider extends HocuspocusProvider {
9
- constructor(options: HocuspocusCloudProviderOptions);
10
+ constructor(configuration: HocuspocusCloudProviderConfiguration);
10
11
  }
@@ -10,7 +10,8 @@ export declare enum WebSocketStatus {
10
10
  Connected = "connected",
11
11
  Disconnected = "disconnected"
12
12
  }
13
- export interface HocuspocusProviderOptions {
13
+ export declare type HocuspocusProviderConfiguration = Required<Pick<CompleteHocuspocusProviderConfiguration, 'url' | 'name'>> & Partial<CompleteHocuspocusProviderConfiguration>;
14
+ export interface CompleteHocuspocusProviderConfiguration {
14
15
  /**
15
16
  * URL of your @hocuspocus/server instance
16
17
  */
@@ -104,9 +105,13 @@ export interface HocuspocusProviderOptions {
104
105
  onDestroy: () => void;
105
106
  onAwarenessUpdate: (states: any) => void;
106
107
  onAwarenessChange: (states: any) => void;
108
+ /**
109
+ * Don’t output any warnings.
110
+ */
111
+ quiet: boolean;
107
112
  }
108
113
  export declare class HocuspocusProvider extends EventEmitter {
109
- options: HocuspocusProviderOptions;
114
+ configuration: CompleteHocuspocusProviderConfiguration;
110
115
  subscribedToBroadcastChannel: boolean;
111
116
  webSocket: WebSocket | null;
112
117
  shouldConnect: boolean;
@@ -120,8 +125,8 @@ export declare class HocuspocusProvider extends EventEmitter {
120
125
  resolve: (value?: any) => void;
121
126
  reject: (reason?: any) => void;
122
127
  } | null;
123
- constructor(options?: Partial<HocuspocusProviderOptions>);
124
- setOptions(options?: Partial<HocuspocusProviderOptions>): void;
128
+ constructor(configuration: HocuspocusProviderConfiguration);
129
+ setConfiguration(configuration?: Partial<HocuspocusProviderConfiguration>): void;
125
130
  connect(): Promise<void>;
126
131
  createWebSocketConnection(): Promise<unknown>;
127
132
  resolveConnectionAttempt(): void;
@@ -2,8 +2,8 @@
2
2
  import AsyncLock from 'async-lock';
3
3
  import WebSocket from 'ws';
4
4
  import { IncomingMessage as HTTPIncomingMessage } from 'http';
5
+ import { CloseEvent } from '@hocuspocus/common';
5
6
  import Document from './Document';
6
- import { CloseEvent } from './types';
7
7
  import { MessageLogger } from './Debugger';
8
8
  declare class Connection {
9
9
  webSocket: WebSocket;
@@ -2,6 +2,7 @@
2
2
  import WebSocket, { WebSocketServer } from 'ws';
3
3
  import { IncomingMessage, Server as HTTPServer } from 'http';
4
4
  import { Configuration, Hook } from './types';
5
+ import Document from './Document';
5
6
  import { MessageLogger } from './Debugger';
6
7
  import { onListenPayload } from '.';
7
8
  export declare const defaultConfiguration: {
@@ -15,7 +16,7 @@ export declare const defaultConfiguration: {
15
16
  */
16
17
  export declare class Hocuspocus {
17
18
  configuration: Configuration;
18
- documents: Map<any, any>;
19
+ documents: Map<string, Document>;
19
20
  httpServer?: HTTPServer;
20
21
  webSocketServer?: WebSocketServer;
21
22
  debugger: MessageLogger;
@@ -23,7 +24,7 @@ export declare class Hocuspocus {
23
24
  * Configure the server
24
25
  */
25
26
  configure(configuration: Partial<Configuration>): Hocuspocus;
26
- get authenticationRequired(): boolean;
27
+ get requiresAuthentication(): boolean;
27
28
  /**
28
29
  * Start the server
29
30
  */
@@ -46,7 +47,14 @@ export declare class Hocuspocus {
46
47
  */
47
48
  destroy(): Promise<any>;
48
49
  /**
49
- * Handle the incoming WebSocket connection
50
+ * The `handleConnection` method receives incoming WebSocket connections,
51
+ * runs all hooks:
52
+ *
53
+ * - onConnect for all connections
54
+ * - onAuthenticate only if required
55
+ *
56
+ * … and if nothings fails it’ll fully establish the connection and
57
+ * load the Document then.
50
58
  */
51
59
  handleConnection(incoming: WebSocket, request: IncomingMessage, documentName: string, context?: any): void;
52
60
  /**
@@ -1,2 +1,4 @@
1
1
  export * from './Hocuspocus';
2
2
  export * from './types';
3
+ export * from './Document';
4
+ export * from './Connection';
@@ -25,8 +25,9 @@ export interface AwarenessUpdate {
25
25
  updated: Array<any>;
26
26
  removed: Array<any>;
27
27
  }
28
- export interface ConnectionConfig {
28
+ export interface ConnectionConfiguration {
29
29
  readOnly: boolean;
30
+ requiresAuthentication: boolean;
30
31
  isAuthenticated: boolean;
31
32
  }
32
33
  export interface Extension {
@@ -87,7 +88,7 @@ export interface onAuthenticatePayload {
87
88
  requestParameters: URLSearchParams;
88
89
  socketId: string;
89
90
  token: string;
90
- connection: ConnectionConfig;
91
+ connection: ConnectionConfiguration;
91
92
  }
92
93
  export interface onConnectPayload {
93
94
  documentName: string;
@@ -96,7 +97,7 @@ export interface onConnectPayload {
96
97
  requestHeaders: IncomingHttpHeaders;
97
98
  requestParameters: URLSearchParams;
98
99
  socketId: string;
99
- connection: ConnectionConfig;
100
+ connection: ConnectionConfiguration;
100
101
  }
101
102
  export interface onLoadDocumentPayload {
102
103
  context: any;
@@ -106,7 +107,7 @@ export interface onLoadDocumentPayload {
106
107
  requestHeaders: IncomingHttpHeaders;
107
108
  requestParameters: URLSearchParams;
108
109
  socketId: string;
109
- connection: ConnectionConfig;
110
+ connection: ConnectionConfiguration;
110
111
  }
111
112
  export interface onChangePayload {
112
113
  clientsCount: number;
@@ -152,7 +153,3 @@ export interface onConfigurePayload {
152
153
  yjsVersion: string;
153
154
  instance: Hocuspocus;
154
155
  }
155
- export interface CloseEvent {
156
- code: number;
157
- reason: string;
158
- }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hocuspocus/extension-database",
3
3
  "description": "a generic Hocuspocus persistence driver for the database",
4
- "version": "1.0.0-alpha.1",
4
+ "version": "1.0.0-alpha.5",
5
5
  "homepage": "https://hocuspocus.dev",
6
6
  "keywords": [
7
7
  "hocuspocus",
@@ -26,11 +26,11 @@
26
26
  "dist"
27
27
  ],
28
28
  "dependencies": {
29
- "@hocuspocus/server": "^1.0.0-alpha.87",
29
+ "@hocuspocus/server": "^1.0.0-alpha.91",
30
30
  "yjs": "^13.5.22"
31
31
  },
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "gitHead": "8ffe8d8f4d10ba33f4f203806bd1d4415bef5dc3"
35
+ "gitHead": "90e3f0955922515ccf1d643b7b43c4ad20387735"
36
36
  }
@@ -1,4 +0,0 @@
1
- import { CloseEvent } from './types';
2
- export declare const Forbidden: CloseEvent;
3
- export declare const ResetConnection: CloseEvent;
4
- export declare const CloseEvents: CloseEvent[];