@hocuspocus/common 2.15.2 → 3.0.4-rc.0

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 (51) hide show
  1. package/dist/hocuspocus-common.cjs +4 -2
  2. package/dist/hocuspocus-common.cjs.map +1 -1
  3. package/dist/hocuspocus-common.esm.js +4 -0
  4. package/dist/hocuspocus-common.esm.js.map +1 -1
  5. package/dist/packages/extension-database/src/Database.d.ts +1 -1
  6. package/dist/packages/extension-logger/src/Logger.d.ts +1 -1
  7. package/dist/packages/extension-redis/src/Redis.d.ts +4 -3
  8. package/dist/packages/extension-sqlite/src/SQLite.d.ts +2 -1
  9. package/dist/packages/extension-throttle/src/index.d.ts +2 -2
  10. package/dist/packages/extension-webhook/src/index.d.ts +3 -3
  11. package/dist/packages/provider/src/HocuspocusProvider.d.ts +12 -45
  12. package/dist/packages/provider/src/HocuspocusProviderWebsocket.d.ts +5 -9
  13. package/dist/packages/provider/src/IncomingMessage.d.ts +3 -3
  14. package/dist/packages/provider/src/MessageReceiver.d.ts +2 -4
  15. package/dist/packages/provider/src/MessageSender.d.ts +2 -2
  16. package/dist/packages/provider/src/OutgoingMessage.d.ts +2 -2
  17. package/dist/packages/provider/src/OutgoingMessages/AuthenticationMessage.d.ts +2 -1
  18. package/dist/packages/provider/src/OutgoingMessages/AwarenessMessage.d.ts +2 -1
  19. package/dist/packages/provider/src/OutgoingMessages/CloseMessage.d.ts +2 -1
  20. package/dist/packages/provider/src/OutgoingMessages/QueryAwarenessMessage.d.ts +2 -1
  21. package/dist/packages/provider/src/OutgoingMessages/StatelessMessage.d.ts +2 -1
  22. package/dist/packages/provider/src/OutgoingMessages/SyncStepOneMessage.d.ts +2 -1
  23. package/dist/packages/provider/src/OutgoingMessages/SyncStepTwoMessage.d.ts +2 -1
  24. package/dist/packages/provider/src/OutgoingMessages/UpdateMessage.d.ts +2 -1
  25. package/dist/packages/provider/src/index.d.ts +0 -2
  26. package/dist/packages/provider/src/types.d.ts +12 -12
  27. package/dist/packages/server/src/ClientConnection.d.ts +19 -10
  28. package/dist/packages/server/src/Connection.d.ts +7 -23
  29. package/dist/packages/server/src/DirectConnection.d.ts +2 -2
  30. package/dist/packages/server/src/Document.d.ts +3 -7
  31. package/dist/packages/server/src/Hocuspocus.d.ts +7 -36
  32. package/dist/packages/server/src/IncomingMessage.d.ts +3 -3
  33. package/dist/packages/server/src/MessageReceiver.d.ts +4 -6
  34. package/dist/packages/server/src/OutgoingMessage.d.ts +4 -3
  35. package/dist/packages/server/src/Server.d.ts +23 -3
  36. package/dist/packages/server/src/index.d.ts +1 -1
  37. package/dist/packages/server/src/types.d.ts +15 -29
  38. package/dist/packages/server/src/util/getParameters.d.ts +1 -1
  39. package/dist/packages/transformer/src/Prosemirror.d.ts +1 -1
  40. package/dist/packages/transformer/src/Tiptap.d.ts +3 -3
  41. package/dist/packages/transformer/src/types.d.ts +1 -1
  42. package/dist/tests/utils/newHocuspocus.d.ts +2 -2
  43. package/dist/tests/utils/newHocuspocusProvider.d.ts +2 -2
  44. package/dist/tests/utils/newHocuspocusProviderWebsocket.d.ts +4 -3
  45. package/dist/tests/utils/retryableAssertion.d.ts +1 -1
  46. package/package.json +1 -1
  47. package/dist/packages/provider/src/TiptapCollabProvider.d.ts +0 -161
  48. package/dist/packages/provider/src/TiptapCollabProviderWebsocket.d.ts +0 -19
  49. package/dist/packages/server/src/Debugger.d.ts +0 -14
  50. package/dist/tests/server/getMessageLogs.d.ts +0 -1
  51. package/dist/tests/server/requiresAuthentication.d.ts +0 -1
@@ -1,4 +1,5 @@
1
- import { MessageType, OutgoingMessageArguments } from '../types.js';
1
+ import type { OutgoingMessageArguments } from '../types.js';
2
+ import { MessageType } from '../types.js';
2
3
  import { OutgoingMessage } from '../OutgoingMessage.js';
3
4
  export declare class AuthenticationMessage extends OutgoingMessage {
4
5
  type: MessageType;
@@ -1,5 +1,6 @@
1
1
  import * as encoding from 'lib0/encoding';
2
- import { MessageType, OutgoingMessageArguments } from '../types.js';
2
+ import type { OutgoingMessageArguments } from '../types.js';
3
+ import { MessageType } from '../types.js';
3
4
  import { OutgoingMessage } from '../OutgoingMessage.js';
4
5
  export declare class AwarenessMessage extends OutgoingMessage {
5
6
  type: MessageType;
@@ -1,5 +1,6 @@
1
1
  import * as encoding from 'lib0/encoding';
2
- import { MessageType, OutgoingMessageArguments } from '../types.js';
2
+ import type { OutgoingMessageArguments } from '../types.js';
3
+ import { MessageType } from '../types.js';
3
4
  import { OutgoingMessage } from '../OutgoingMessage.js';
4
5
  export declare class CloseMessage extends OutgoingMessage {
5
6
  type: MessageType;
@@ -1,5 +1,6 @@
1
1
  import * as encoding from 'lib0/encoding';
2
- import { MessageType, OutgoingMessageArguments } from '../types.js';
2
+ import type { OutgoingMessageArguments } from '../types.js';
3
+ import { MessageType } from '../types.js';
3
4
  import { OutgoingMessage } from '../OutgoingMessage.js';
4
5
  export declare class QueryAwarenessMessage extends OutgoingMessage {
5
6
  type: MessageType;
@@ -1,4 +1,5 @@
1
- import { MessageType, OutgoingMessageArguments } from '../types.js';
1
+ import type { OutgoingMessageArguments } from '../types.js';
2
+ import { MessageType } from '../types.js';
2
3
  import { OutgoingMessage } from '../OutgoingMessage.js';
3
4
  export declare class StatelessMessage extends OutgoingMessage {
4
5
  type: MessageType;
@@ -1,5 +1,6 @@
1
1
  import * as encoding from 'lib0/encoding';
2
- import { MessageType, OutgoingMessageArguments } from '../types.js';
2
+ import type { OutgoingMessageArguments } from '../types.js';
3
+ import { MessageType } from '../types.js';
3
4
  import { OutgoingMessage } from '../OutgoingMessage.js';
4
5
  export declare class SyncStepOneMessage extends OutgoingMessage {
5
6
  type: MessageType;
@@ -1,5 +1,6 @@
1
1
  import * as encoding from 'lib0/encoding';
2
- import { MessageType, OutgoingMessageArguments } from '../types.js';
2
+ import type { OutgoingMessageArguments } from '../types.js';
3
+ import { MessageType } from '../types.js';
3
4
  import { OutgoingMessage } from '../OutgoingMessage.js';
4
5
  export declare class SyncStepTwoMessage extends OutgoingMessage {
5
6
  type: MessageType;
@@ -1,4 +1,5 @@
1
- import { MessageType, OutgoingMessageArguments } from '../types.js';
1
+ import type { OutgoingMessageArguments } from '../types.js';
2
+ import { MessageType } from '../types.js';
2
3
  import { OutgoingMessage } from '../OutgoingMessage.js';
3
4
  export declare class UpdateMessage extends OutgoingMessage {
4
5
  type: MessageType;
@@ -1,5 +1,3 @@
1
1
  export * from './HocuspocusProvider.js';
2
- export * from './TiptapCollabProvider.js';
3
- export * from './TiptapCollabProviderWebsocket.js';
4
2
  export * from './HocuspocusProviderWebsocket.js';
5
3
  export * from './types.js';
@@ -1,16 +1,16 @@
1
- import { Encoder } from 'lib0/encoding';
1
+ import type { Encoder } from 'lib0/encoding';
2
2
  import type { Event, MessageEvent } from 'ws';
3
- import { Awareness } from 'y-protocols/awareness';
4
- import * as Y from 'yjs';
5
- import { CloseEvent } from '@hocuspocus/common';
6
- import { IncomingMessage } from './IncomingMessage.js';
7
- import { OutgoingMessage } from './OutgoingMessage.js';
8
- import { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage.js';
9
- import { AwarenessMessage } from './OutgoingMessages/AwarenessMessage.js';
10
- import { QueryAwarenessMessage } from './OutgoingMessages/QueryAwarenessMessage.js';
11
- import { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage.js';
12
- import { SyncStepTwoMessage } from './OutgoingMessages/SyncStepTwoMessage.js';
13
- import { UpdateMessage } from './OutgoingMessages/UpdateMessage.js';
3
+ import type { Awareness } from 'y-protocols/awareness';
4
+ import type * as Y from 'yjs';
5
+ import type { CloseEvent } from '@hocuspocus/common';
6
+ import type { IncomingMessage } from './IncomingMessage.js';
7
+ import type { OutgoingMessage } from './OutgoingMessage.js';
8
+ import type { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage.js';
9
+ import type { AwarenessMessage } from './OutgoingMessages/AwarenessMessage.js';
10
+ import type { QueryAwarenessMessage } from './OutgoingMessages/QueryAwarenessMessage.js';
11
+ import type { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage.js';
12
+ import type { SyncStepTwoMessage } from './OutgoingMessages/SyncStepTwoMessage.js';
13
+ import type { UpdateMessage } from './OutgoingMessages/UpdateMessage.js';
14
14
  export declare enum MessageType {
15
15
  Sync = 0,
16
16
  Awareness = 1,
@@ -1,10 +1,11 @@
1
1
  /// <reference types="node" />
2
- import { IncomingMessage } from 'http';
3
- import WebSocket from 'ws';
4
- import { Debugger } from './Debugger.js';
5
- import Document from './Document.js';
6
- import { Hocuspocus } from './Hocuspocus.js';
7
- import { onDisconnectPayload } from './types.js';
2
+ /// <reference types="node" />
3
+ import type { IncomingMessage } from 'http';
4
+ import { type CloseEvent } from '@hocuspocus/common';
5
+ import type WebSocket from 'ws';
6
+ import type Document from './Document.js';
7
+ import type { Hocuspocus } from './Hocuspocus.js';
8
+ import type { onDisconnectPayload } from './types.js';
8
9
  /**
9
10
  * The `ClientConnection` class is responsible for handling an incoming WebSocket
10
11
  *
@@ -16,7 +17,6 @@ export declare class ClientConnection {
16
17
  private readonly request;
17
18
  private readonly documentProvider;
18
19
  private readonly hooks;
19
- private readonly debuggerTool;
20
20
  private readonly opts;
21
21
  private readonly defaultContext;
22
22
  private readonly documentConnections;
@@ -24,8 +24,10 @@ export declare class ClientConnection {
24
24
  private readonly documentConnectionsEstablished;
25
25
  private readonly hookPayloads;
26
26
  private readonly callbacks;
27
- private readonly closeIdleConnectionTimeout;
28
27
  private readonly socketId;
28
+ timeout: number;
29
+ pingInterval: NodeJS.Timeout;
30
+ pongReceived: boolean;
29
31
  /**
30
32
  * The `ClientConnection` class receives incoming WebSocket connections,
31
33
  * runs all hooks:
@@ -38,10 +40,17 @@ export declare class ClientConnection {
38
40
  */
39
41
  constructor(websocket: WebSocket, request: IncomingMessage, documentProvider: {
40
42
  createDocument: Hocuspocus['createDocument'];
41
- }, hooks: Hocuspocus['hooks'], debuggerTool: Debugger, opts: {
42
- requiresAuthentication: boolean;
43
+ }, hooks: Hocuspocus['hooks'], opts: {
43
44
  timeout: number;
44
45
  }, defaultContext?: any);
46
+ private handleWebsocketClose;
47
+ close(event?: CloseEvent): void;
48
+ handlePong: () => void;
49
+ /**
50
+ * Check if pong was received and close the connection otherwise
51
+ * @private
52
+ */
53
+ private check;
45
54
  /**
46
55
  * Set a callback that will be triggered when the connection is closed
47
56
  */
@@ -1,32 +1,21 @@
1
1
  /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { IncomingMessage as HTTPIncomingMessage } from 'http';
4
- import AsyncLock from 'async-lock';
5
- import WebSocket from 'ws';
6
- import { CloseEvent } from '@hocuspocus/common';
7
- import Document from './Document.js';
8
- import { Debugger } from './Debugger.js';
9
- import { onStatelessPayload } from './types.js';
2
+ import type { IncomingMessage as HTTPIncomingMessage } from 'http';
3
+ import type WebSocket from 'ws';
4
+ import { type CloseEvent } from '@hocuspocus/common';
5
+ import type Document from './Document.js';
6
+ import type { onStatelessPayload } from './types.js';
10
7
  export declare class Connection {
11
8
  webSocket: WebSocket;
12
9
  context: any;
13
10
  document: Document;
14
- pingInterval: NodeJS.Timeout;
15
- pongReceived: boolean;
16
11
  request: HTTPIncomingMessage;
17
- timeout: number;
18
12
  callbacks: any;
19
13
  socketId: string;
20
- lock: AsyncLock;
21
- readOnly: Boolean;
22
- logger: Debugger;
14
+ readOnly: boolean;
23
15
  /**
24
16
  * Constructor.
25
17
  */
26
- constructor(connection: WebSocket, request: HTTPIncomingMessage, document: Document, timeout: number, socketId: string, context: any, readOnly: boolean | undefined, logger: Debugger);
27
- boundClose: (event?: CloseEvent) => void;
28
- boundHandlePong: () => void;
29
- handlePong(): void;
18
+ constructor(connection: WebSocket, request: HTTPIncomingMessage, document: Document, socketId: string, context: any, readOnly?: boolean);
30
19
  /**
31
20
  * Set a callback that will be triggered when the connection is closed
32
21
  */
@@ -51,11 +40,6 @@ export declare class Connection {
51
40
  * Graceful wrapper around the WebSocket close method.
52
41
  */
53
42
  close(event?: CloseEvent): void;
54
- /**
55
- * Check if pong was received and close the connection otherwise
56
- * @private
57
- */
58
- private check;
59
43
  /**
60
44
  * Send the current document awareness to the client, if any
61
45
  * @private
@@ -1,4 +1,4 @@
1
- import Document from './Document.js';
1
+ import type Document from './Document.js';
2
2
  import type { Hocuspocus } from './Hocuspocus.js';
3
3
  import type { DirectConnection as DirectConnectionInterface } from './types.js';
4
4
  export declare class DirectConnection implements DirectConnectionInterface {
@@ -9,6 +9,6 @@ export declare class DirectConnection implements DirectConnectionInterface {
9
9
  * Constructor.
10
10
  */
11
11
  constructor(document: Document, instance: Hocuspocus, context?: any);
12
- transact(transaction: (document: Document) => void, transactionOrigin?: any): Promise<void>;
12
+ transact(transaction: (document: Document) => void): Promise<void>;
13
13
  disconnect(): Promise<void>;
14
14
  }
@@ -1,9 +1,7 @@
1
- import WebSocket from 'ws';
1
+ import type WebSocket from 'ws';
2
2
  import { Awareness } from 'y-protocols/awareness';
3
3
  import { Doc } from 'yjs';
4
- import { mutex } from 'lib0/mutex.js';
5
- import Connection from './Connection.js';
6
- import { Debugger } from './Debugger.js';
4
+ import type Connection from './Connection.js';
7
5
  export declare class Document extends Doc {
8
6
  awareness: Awareness;
9
7
  callbacks: {
@@ -16,14 +14,12 @@ export declare class Document extends Doc {
16
14
  }>;
17
15
  directConnectionsCount: number;
18
16
  name: string;
19
- mux: mutex;
20
- logger?: Debugger;
21
17
  isLoading: boolean;
22
18
  isDestroyed: boolean;
23
19
  /**
24
20
  * Constructor.
25
21
  */
26
- constructor(name: string, logger?: Debugger, yDocOptions?: {});
22
+ constructor(name: string, yDocOptions?: object);
27
23
  /**
28
24
  * Check if the Document (XMLFragment or Map) is empty
29
25
  */
@@ -1,15 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { IncomingMessage } from 'http';
3
- import WebSocket, { AddressInfo } from 'ws';
4
- import { Server as HocuspocusServer } from './Server.js';
5
- import { Debugger } from './Debugger.js';
2
+ import type { IncomingMessage } from 'http';
3
+ import type WebSocket from 'ws';
4
+ import type { Server } from './Server.js';
6
5
  import { DirectConnection } from './DirectConnection.js';
7
6
  import Document from './Document.js';
8
- import { Configuration, ConnectionConfiguration, HookName, HookPayloadByName, onListenPayload, onStoreDocumentPayload } from './types.js';
7
+ import type { Configuration, ConnectionConfiguration, HookName, HookPayloadByName, onStoreDocumentPayload } from './types.js';
9
8
  export declare const defaultConfiguration: {
10
9
  name: null;
11
- port: number;
12
- address: string;
13
10
  timeout: number;
14
11
  debounce: number;
15
12
  maxDebounce: number;
@@ -19,17 +16,12 @@ export declare const defaultConfiguration: {
19
16
  gcFilter: () => boolean;
20
17
  };
21
18
  unloadImmediately: boolean;
22
- stopOnSignals: boolean;
23
19
  };
24
- /**
25
- * Hocuspocus Server
26
- */
27
20
  export declare class Hocuspocus {
28
21
  configuration: Configuration;
29
22
  loadingDocuments: Map<string, Promise<Document>>;
30
23
  documents: Map<string, Document>;
31
- server?: HocuspocusServer;
32
- debugger: Debugger;
24
+ server?: Server;
33
25
  debouncer: {
34
26
  debounce: (id: string, func: Function, debounce: number, maxDebounce: number) => any;
35
27
  isDebounced: (id: string) => boolean;
@@ -37,19 +29,9 @@ export declare class Hocuspocus {
37
29
  };
38
30
  constructor(configuration?: Partial<Configuration>);
39
31
  /**
40
- * Configure the server
32
+ * Configure Hocuspocus
41
33
  */
42
34
  configure(configuration: Partial<Configuration>): Hocuspocus;
43
- get requiresAuthentication(): boolean;
44
- /**
45
- * Start the server
46
- */
47
- listen(portOrCallback?: number | ((data: onListenPayload) => Promise<any>) | null, callback?: any, websocketOptions?: WebSocket.ServerOptions): Promise<Hocuspocus>;
48
- get address(): AddressInfo;
49
- get URL(): string;
50
- get webSocketURL(): string;
51
- get httpURL(): string;
52
- private showStartScreen;
53
35
  /**
54
36
  * Get the total number of active documents
55
37
  */
@@ -62,10 +44,6 @@ export declare class Hocuspocus {
62
44
  * Force close one or more connections
63
45
  */
64
46
  closeConnections(documentName?: string): void;
65
- /**
66
- * Destroy the server
67
- */
68
- destroy(): Promise<any>;
69
47
  /**
70
48
  * The `handleConnection` method receives incoming WebSocket connections,
71
49
  * runs all hooks:
@@ -88,7 +66,7 @@ export declare class Hocuspocus {
88
66
  * Create a new document by the given request
89
67
  */
90
68
  createDocument(documentName: string, request: Partial<Pick<IncomingMessage, 'headers' | 'url'>>, socketId: string, connection: ConnectionConfiguration, context?: any): Promise<Document>;
91
- loadDocument(documentName: string, request: Partial<Pick<IncomingMessage, 'headers' | 'url'>>, socketId: string, connection: ConnectionConfiguration, context?: any): Promise<Document>;
69
+ loadDocument(documentName: string, request: Partial<Pick<IncomingMessage, 'headers' | 'url'>>, socketId: string, connectionConfig: ConnectionConfiguration, context?: any): Promise<Document>;
92
70
  storeDocumentHooks(document: Document, hookPayload: onStoreDocumentPayload, immediately?: boolean): any;
93
71
  /**
94
72
  * Run the given hook on all configured extensions.
@@ -96,12 +74,5 @@ export declare class Hocuspocus {
96
74
  */
97
75
  hooks<T extends HookName>(name: T, payload: HookPayloadByName[T], callback?: Function | null): Promise<any>;
98
76
  unloadDocument(document: Document): Promise<any>;
99
- enableDebugging(): void;
100
- enableMessageLogging(): void;
101
- disableLogging(): void;
102
- disableDebugging(): void;
103
- flushMessageLogs(): this;
104
- getMessageLogs(): any[];
105
77
  openDirectConnection(documentName: string, context?: any): Promise<DirectConnection>;
106
78
  }
107
- export declare const Server: Hocuspocus;
@@ -1,6 +1,6 @@
1
- import { Decoder } from 'lib0/decoding';
2
- import { Encoder } from 'lib0/encoding';
3
- import { MessageType } from './types.js';
1
+ import type { Decoder } from 'lib0/decoding';
2
+ import type { Encoder } from 'lib0/encoding';
3
+ import type { MessageType } from './types.js';
4
4
  export declare class IncomingMessage {
5
5
  /**
6
6
  * Access to the received message.
@@ -1,12 +1,10 @@
1
- import Connection from './Connection.js';
2
- import { Debugger } from './Debugger.js';
3
- import Document from './Document.js';
4
- import { IncomingMessage } from './IncomingMessage.js';
1
+ import type Connection from './Connection.js';
2
+ import type Document from './Document.js';
3
+ import type { IncomingMessage } from './IncomingMessage.js';
5
4
  export declare class MessageReceiver {
6
5
  message: IncomingMessage;
7
- logger: Debugger;
8
6
  defaultTransactionOrigin?: string;
9
- constructor(message: IncomingMessage, logger: Debugger, defaultTransactionOrigin?: string);
7
+ constructor(message: IncomingMessage, defaultTransactionOrigin?: string);
10
8
  apply(document: Document, connection?: Connection, reply?: (message: Uint8Array) => void): void;
11
9
  readSyncMessage(message: IncomingMessage, document: Document, connection?: Connection, reply?: (message: Uint8Array) => void, requestFirstSync?: boolean): 0 | 1 | 2;
12
10
  applyQueryAwarenessMessage(document: Document, reply?: (message: Uint8Array) => void): void;
@@ -1,6 +1,6 @@
1
- import { Encoder } from 'lib0/encoding';
2
- import { Awareness } from 'y-protocols/awareness';
3
- import Document from './Document.js';
1
+ import type { Encoder } from 'lib0/encoding';
2
+ import type { Awareness } from 'y-protocols/awareness';
3
+ import type Document from './Document.js';
4
4
  export declare class OutgoingMessage {
5
5
  encoder: Encoder;
6
6
  type?: number;
@@ -17,5 +17,6 @@ export declare class OutgoingMessage {
17
17
  writeStateless(payload: string): OutgoingMessage;
18
18
  writeBroadcastStateless(payload: string): OutgoingMessage;
19
19
  writeSyncStatus(updateSaved: boolean): OutgoingMessage;
20
+ writeCloseMessage(reason: string): OutgoingMessage;
20
21
  toUint8Array(): Uint8Array;
21
22
  }
@@ -1,13 +1,33 @@
1
1
  /// <reference types="node" />
2
- import { IncomingMessage, Server as HTTPServer, ServerResponse } from 'http';
3
- import { ServerOptions, WebSocketServer } from 'ws';
2
+ import type { IncomingMessage, Server as HTTPServer, ServerResponse } from 'http';
3
+ import { WebSocketServer } from 'ws';
4
+ import type { AddressInfo, ServerOptions } from 'ws';
4
5
  import { Hocuspocus } from './Hocuspocus.js';
6
+ import type { Configuration } from './types';
7
+ export interface ServerConfiguration extends Configuration {
8
+ port?: number;
9
+ address?: string;
10
+ stopOnSignals?: boolean;
11
+ }
12
+ export declare const defaultServerConfiguration: {
13
+ port: number;
14
+ address: string;
15
+ stopOnSignals: boolean;
16
+ };
5
17
  export declare class Server {
6
18
  httpServer: HTTPServer;
7
19
  webSocketServer: WebSocketServer;
8
20
  hocuspocus: Hocuspocus;
9
- constructor(hocuspocus: Hocuspocus, websocketOptions?: ServerOptions);
21
+ configuration: ServerConfiguration;
22
+ constructor(configuration?: Partial<ServerConfiguration>, websocketOptions?: ServerOptions);
10
23
  setupWebsocketConnection: () => void;
11
24
  setupHttpUpgrade: () => void;
12
25
  requestHandler: (request: IncomingMessage, response: ServerResponse) => Promise<void>;
26
+ listen(port?: number, callback?: any): Promise<Hocuspocus>;
27
+ get address(): AddressInfo;
28
+ destroy(): Promise<any>;
29
+ get URL(): string;
30
+ get webSocketURL(): string;
31
+ get httpURL(): string;
32
+ private showStartScreen;
13
33
  }
@@ -1,9 +1,9 @@
1
1
  export * from './Connection.js';
2
- export * from './Debugger.js';
3
2
  export * from './Document.js';
4
3
  export * from './Hocuspocus.js';
5
4
  export * from './IncomingMessage.js';
6
5
  export * from './MessageReceiver.js';
7
6
  export * from './OutgoingMessage.js';
7
+ export * from './Server.js';
8
8
  export * from './types.js';
9
9
  export * from './util/debounce.js';
@@ -1,12 +1,13 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  /// <reference types="node" />
4
- import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'http';
5
- import { URLSearchParams } from 'url';
6
- import { Awareness } from 'y-protocols/awareness';
7
- import Connection from './Connection.js';
8
- import Document from './Document.js';
9
- import { Hocuspocus } from './Hocuspocus.js';
4
+ /// <reference types="node" />
5
+ import type { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'http';
6
+ import type { URLSearchParams } from 'url';
7
+ import type { Awareness } from 'y-protocols/awareness';
8
+ import type Connection from './Connection.js';
9
+ import type Document from './Document.js';
10
+ import type { Hocuspocus } from './Hocuspocus.js';
10
11
  export declare enum MessageType {
11
12
  Unknown = -1,
12
13
  Sync = 0,
@@ -26,7 +27,6 @@ export interface AwarenessUpdate {
26
27
  }
27
28
  export interface ConnectionConfiguration {
28
29
  readOnly: boolean;
29
- requiresAuthentication: boolean;
30
30
  isAuthenticated: boolean;
31
31
  }
32
32
  export interface Extension {
@@ -87,14 +87,6 @@ export interface Configuration extends Extension {
87
87
  * A list of hocuspocus extensions.
88
88
  */
89
89
  extensions: Array<Extension>;
90
- /**
91
- * The port which the server listens on.
92
- */
93
- port?: number;
94
- /**
95
- * The address which the server listens on.
96
- */
97
- address?: string;
98
90
  /**
99
91
  * Defines in which interval the server sends a ping, and closes the connection when no pong is sent back.
100
92
  */
@@ -120,12 +112,6 @@ export interface Configuration extends Extension {
120
112
  * your onStoreDocument is rate-limited.
121
113
  */
122
114
  unloadImmediately: boolean;
123
- /**
124
- * the server will gracefully stop if SIGINT, SIGQUIT or SIGTERM is received.
125
- *
126
- * Set this to false if you don't want that.
127
- */
128
- stopOnSignals: boolean;
129
115
  /**
130
116
  * options to pass to the ydoc document
131
117
  */
@@ -149,7 +135,7 @@ export interface onAuthenticatePayload {
149
135
  request: IncomingMessage;
150
136
  socketId: string;
151
137
  token: string;
152
- connection: ConnectionConfiguration;
138
+ connectionConfig: ConnectionConfiguration;
153
139
  }
154
140
  export interface onCreateDocumentPayload {
155
141
  context: any;
@@ -158,7 +144,7 @@ export interface onCreateDocumentPayload {
158
144
  requestHeaders: IncomingHttpHeaders;
159
145
  requestParameters: URLSearchParams;
160
146
  socketId: string;
161
- connection: ConnectionConfiguration;
147
+ connectionConfig: ConnectionConfiguration;
162
148
  }
163
149
  export interface onConnectPayload {
164
150
  context: any;
@@ -168,7 +154,7 @@ export interface onConnectPayload {
168
154
  requestHeaders: IncomingHttpHeaders;
169
155
  requestParameters: URLSearchParams;
170
156
  socketId: string;
171
- connection: ConnectionConfiguration;
157
+ connectionConfig: ConnectionConfiguration;
172
158
  }
173
159
  export interface connectedPayload {
174
160
  context: any;
@@ -178,8 +164,8 @@ export interface connectedPayload {
178
164
  requestHeaders: IncomingHttpHeaders;
179
165
  requestParameters: URLSearchParams;
180
166
  socketId: string;
181
- connection: ConnectionConfiguration;
182
- connectionInstance: Connection;
167
+ connectionConfig: ConnectionConfiguration;
168
+ connection: Connection;
183
169
  }
184
170
  export interface onLoadDocumentPayload {
185
171
  context: any;
@@ -189,7 +175,7 @@ export interface onLoadDocumentPayload {
189
175
  requestHeaders: IncomingHttpHeaders;
190
176
  requestParameters: URLSearchParams;
191
177
  socketId: string;
192
- connection: ConnectionConfiguration;
178
+ connectionConfig: ConnectionConfiguration;
193
179
  }
194
180
  export interface afterLoadDocumentPayload {
195
181
  context: any;
@@ -199,7 +185,7 @@ export interface afterLoadDocumentPayload {
199
185
  requestHeaders: IncomingHttpHeaders;
200
186
  requestParameters: URLSearchParams;
201
187
  socketId: string;
202
- connection: ConnectionConfiguration;
188
+ connectionConfig: ConnectionConfiguration;
203
189
  }
204
190
  export interface onChangePayload {
205
191
  clientsCount: number;
@@ -269,7 +255,7 @@ export interface fetchPayload {
269
255
  requestHeaders: IncomingHttpHeaders;
270
256
  requestParameters: URLSearchParams;
271
257
  socketId: string;
272
- connection: ConnectionConfiguration;
258
+ connectionConfig: ConnectionConfiguration;
273
259
  }
274
260
  export interface storePayload extends onStoreDocumentPayload {
275
261
  state: Buffer;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- import { IncomingMessage } from 'http';
3
+ import type { IncomingMessage } from 'http';
4
4
  import { URLSearchParams } from 'url';
5
5
  /**
6
6
  * Get parameters by the given request
@@ -1,6 +1,6 @@
1
1
  import { Doc } from 'yjs';
2
2
  import { Schema } from '@tiptap/pm/model';
3
- import { Transformer } from './types.js';
3
+ import type { Transformer } from './types.js';
4
4
  declare class Prosemirror implements Transformer {
5
5
  defaultSchema: Schema;
6
6
  schema(schema: Schema): Prosemirror;
@@ -1,6 +1,6 @@
1
- import { Doc } from 'yjs';
2
- import { Extensions } from '@tiptap/core';
3
- import { Transformer } from './types.js';
1
+ import type { Doc } from 'yjs';
2
+ import type { Extensions } from '@tiptap/core';
3
+ import type { Transformer } from './types.js';
4
4
  export declare class Tiptap implements Transformer {
5
5
  defaultExtensions: Extensions;
6
6
  extensions(extensions: Extensions): Tiptap;
@@ -1,4 +1,4 @@
1
- import { Doc } from 'yjs';
1
+ import type { Doc } from 'yjs';
2
2
  export interface Transformer {
3
3
  fromYdoc: (document: Doc, fieldName?: string | Array<string>) => any;
4
4
  toYdoc: (document: any, fieldName: string) => Doc;
@@ -1,2 +1,2 @@
1
- import { Hocuspocus, Configuration } from '@hocuspocus/server';
2
- export declare const newHocuspocus: (options?: Partial<Configuration>) => Promise<Hocuspocus>;
1
+ import type { ServerConfiguration } from '@hocuspocus/server';
2
+ export declare const newHocuspocus: (options?: Partial<ServerConfiguration>) => Promise<import("@hocuspocus/server").Hocuspocus>;
@@ -1,3 +1,3 @@
1
- import { HocuspocusProvider, HocuspocusProviderConfiguration, HocuspocusProviderWebsocket, HocuspocusProviderWebsocketConfiguration } from '@hocuspocus/provider';
2
- import { Hocuspocus } from '@hocuspocus/server';
1
+ import { HocuspocusProvider, type HocuspocusProviderConfiguration, type HocuspocusProviderWebsocket, type HocuspocusProviderWebsocketConfiguration } from '@hocuspocus/provider';
2
+ import type { Hocuspocus } from '@hocuspocus/server';
3
3
  export declare const newHocuspocusProvider: (server: Hocuspocus, options?: Partial<HocuspocusProviderConfiguration>, websocketOptions?: Partial<HocuspocusProviderWebsocketConfiguration>, websocketProvider?: HocuspocusProviderWebsocket) => HocuspocusProvider;
@@ -1,3 +1,4 @@
1
- import { HocuspocusProviderWebsocket, HocuspocusProviderWebsocketConfiguration } from '@hocuspocus/provider';
2
- import { Hocuspocus } from '@hocuspocus/server';
3
- export declare const newHocuspocusProviderWebsocket: (server: Hocuspocus, options?: Partial<Omit<HocuspocusProviderWebsocketConfiguration, 'url'>>) => HocuspocusProviderWebsocket;
1
+ import type { HocuspocusProviderWebsocketConfiguration } from '@hocuspocus/provider';
2
+ import { HocuspocusProviderWebsocket } from '@hocuspocus/provider';
3
+ import type { Hocuspocus } from '@hocuspocus/server';
4
+ export declare const newHocuspocusProviderWebsocket: (hocuspocus: Hocuspocus, options?: Partial<Omit<HocuspocusProviderWebsocketConfiguration, 'url'>>) => HocuspocusProviderWebsocket;
@@ -1,2 +1,2 @@
1
- import { ExecutionContext } from 'ava';
1
+ import type { ExecutionContext } from 'ava';
2
2
  export declare const retryableAssertion: (t: ExecutionContext, recoverableTry: (tt: ExecutionContext) => void) => Promise<void>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hocuspocus/common",
3
3
  "description": "shared code for multiple Hocuspocus packages",
4
- "version": "2.15.2",
4
+ "version": "3.0.4-rc.0",
5
5
  "homepage": "https://hocuspocus.dev",
6
6
  "keywords": [
7
7
  "hocuspocus"