@hocuspocus/extension-webhook 1.0.0-alpha.39 → 1.0.0-alpha.40
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/dist/demos/backend/src/{create-document.d.ts → load-document.d.ts} +0 -0
- package/dist/hocuspocus-webhook.cjs +2 -2
- package/dist/hocuspocus-webhook.cjs.map +1 -1
- package/dist/hocuspocus-webhook.esm.js +2 -2
- package/dist/hocuspocus-webhook.esm.js.map +1 -1
- package/dist/packages/{logger/src/index.d.ts → extension-logger/src/Logger.d.ts} +14 -3
- package/dist/packages/extension-logger/src/index.d.ts +1 -0
- package/dist/packages/{monitor → extension-monitor}/src/Collector.d.ts +2 -2
- package/dist/packages/{monitor → extension-monitor}/src/Dashboard.d.ts +0 -0
- package/dist/packages/{monitor → extension-monitor}/src/Storage.d.ts +0 -0
- package/dist/packages/{monitor → extension-monitor}/src/index.d.ts +2 -2
- package/dist/packages/{redis → extension-redis}/src/Redis.d.ts +2 -2
- package/dist/packages/{redis → extension-redis}/src/RedisCluster.d.ts +0 -0
- package/dist/packages/{redis → extension-redis}/src/index.d.ts +0 -0
- package/dist/packages/{rocksdb → extension-rocksdb}/src/index.d.ts +3 -3
- package/dist/packages/{throttle → extension-throttle}/src/index.d.ts +0 -0
- package/dist/packages/{webhook → extension-webhook}/src/index.d.ts +3 -3
- package/dist/packages/provider/src/HocuspocusProvider.d.ts +1 -1
- package/dist/packages/server/src/MessageReceiver.d.ts +1 -1
- package/dist/packages/server/src/types.d.ts +6 -2
- package/package.json +4 -4
- package/src/index.ts +3 -3
|
File without changes
|
|
@@ -96,9 +96,9 @@ class Webhook {
|
|
|
96
96
|
this.debounce(data.documentName, save);
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
|
-
*
|
|
99
|
+
* onLoadDocument hook
|
|
100
100
|
*/
|
|
101
|
-
async
|
|
101
|
+
async onLoadDocument(data) {
|
|
102
102
|
if (!this.configuration.events.includes(exports.Events.onCreate)) {
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hocuspocus-webhook.cjs","sources":["../src/index.ts"],"sourcesContent":["import { createHmac } from 'crypto'\nimport {\n Extension,\n onChangePayload,\n onConnectPayload,\n
|
|
1
|
+
{"version":3,"file":"hocuspocus-webhook.cjs","sources":["../src/index.ts"],"sourcesContent":["import { createHmac } from 'crypto'\nimport {\n Extension,\n onChangePayload,\n onConnectPayload,\n onLoadDocumentPayload,\n onDisconnectPayload,\n} from '@hocuspocus/server'\nimport { Doc } from 'yjs'\nimport { TiptapTransformer, Transformer } from '@hocuspocus/transformer'\nimport axios, { AxiosResponse } from 'axios'\nimport Timeout = NodeJS.Timeout\n\nexport enum Events {\n onChange = 'change',\n onConnect = 'connect',\n onCreate = 'create',\n onDisconnect = 'disconnect',\n}\n\nexport interface Configuration {\n debounce: number | false | null,\n debounceMaxWait: number,\n secret: string,\n transformer: Transformer | {\n toYdoc: (document: any) => Doc,\n fromYdoc: (document: Doc) => any,\n },\n url: string,\n events: Array<Events>,\n}\n\nexport class Webhook implements Extension {\n\n configuration: Configuration = {\n debounce: 2000,\n debounceMaxWait: 10000,\n secret: '',\n transformer: TiptapTransformer,\n url: '',\n events: [\n Events.onChange,\n ],\n }\n\n debounced: Map<string, { timeout: Timeout, start: number }> = new Map()\n\n /**\n * Constructor\n */\n constructor(configuration?: Partial<Configuration>) {\n this.configuration = {\n ...this.configuration,\n ...configuration,\n }\n\n if (!this.configuration.url) {\n throw new Error('url is required!')\n }\n }\n\n /**\n * Create a signature for the response body\n */\n createSignature(body: string): string {\n const hmac = createHmac('sha256', this.configuration.secret)\n\n return `sha256=${hmac.update(body).digest('hex')}`\n }\n\n /**\n * debounce the given function, using the given identifier\n */\n debounce(id: string, func: Function) {\n const old = this.debounced.get(id)\n const start = old?.start || Date.now()\n\n const run = () => {\n this.debounced.delete(id)\n func()\n }\n\n if (old?.timeout) clearTimeout(old.timeout)\n if (Date.now() - start >= this.configuration.debounceMaxWait) return run()\n\n this.debounced.set(id, {\n start,\n timeout: setTimeout(run, <number> this.configuration.debounce),\n })\n }\n\n /**\n * Send a request to the given url containing the given data\n */\n async sendRequest(event: Events, payload: any) {\n const json = JSON.stringify({ event, payload })\n\n return axios.post(\n this.configuration.url,\n json,\n { headers: { 'X-Hocuspocus-Signature-256': this.createSignature(json) } },\n )\n }\n\n /**\n * onChange hook\n */\n async onChange(data: onChangePayload) {\n if (!this.configuration.events.includes(Events.onChange)) {\n return\n }\n\n const save = () => {\n this.sendRequest(Events.onChange, {\n document: this.configuration.transformer.fromYdoc(data.document),\n documentName: data.documentName,\n context: data.context,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n })\n }\n\n if (!this.configuration.debounce) {\n return save()\n }\n\n this.debounce(data.documentName, save)\n }\n\n /**\n * onLoadDocument hook\n */\n async onLoadDocument(data: onLoadDocumentPayload) {\n if (!this.configuration.events.includes(Events.onCreate)) {\n return\n }\n\n const response = <AxiosResponse> await this.sendRequest(Events.onCreate, {\n documentName: data.documentName,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n })\n\n if (response.status !== 200 || !response.data) return\n\n const document = typeof response.data === 'string'\n ? JSON.parse(response.data)\n : response.data\n\n // eslint-disable-next-line guard-for-in,no-restricted-syntax\n for (const fieldName in document) {\n if (data.document.isEmpty(fieldName)) {\n data.document.merge(\n this.configuration.transformer.toYdoc(document[fieldName], fieldName),\n )\n }\n }\n }\n\n /**\n * onConnect hook\n */\n async onConnect(data: onConnectPayload) {\n if (!this.configuration.events.includes(Events.onConnect)) {\n return\n }\n\n try {\n const response = <AxiosResponse> await this.sendRequest(Events.onConnect, {\n documentName: data.documentName,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n })\n\n return typeof response.data === 'string'\n ? JSON.parse(response.data)\n : response.data\n } catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw null\n }\n }\n\n async onDisconnect(data: onDisconnectPayload) {\n if (!this.configuration.events.includes(Events.onConnect)) {\n return\n }\n\n await this.sendRequest(Events.onDisconnect, {\n documentName: data.documentName,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n context: data.context,\n })\n }\n\n}\n"],"names":["Events","TiptapTransformer","createHmac","axios"],"mappings":"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"}
|
|
@@ -88,9 +88,9 @@ class Webhook {
|
|
|
88
88
|
this.debounce(data.documentName, save);
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
|
-
*
|
|
91
|
+
* onLoadDocument hook
|
|
92
92
|
*/
|
|
93
|
-
async
|
|
93
|
+
async onLoadDocument(data) {
|
|
94
94
|
if (!this.configuration.events.includes(Events.onCreate)) {
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hocuspocus-webhook.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { createHmac } from 'crypto'\nimport {\n Extension,\n onChangePayload,\n onConnectPayload,\n
|
|
1
|
+
{"version":3,"file":"hocuspocus-webhook.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { createHmac } from 'crypto'\nimport {\n Extension,\n onChangePayload,\n onConnectPayload,\n onLoadDocumentPayload,\n onDisconnectPayload,\n} from '@hocuspocus/server'\nimport { Doc } from 'yjs'\nimport { TiptapTransformer, Transformer } from '@hocuspocus/transformer'\nimport axios, { AxiosResponse } from 'axios'\nimport Timeout = NodeJS.Timeout\n\nexport enum Events {\n onChange = 'change',\n onConnect = 'connect',\n onCreate = 'create',\n onDisconnect = 'disconnect',\n}\n\nexport interface Configuration {\n debounce: number | false | null,\n debounceMaxWait: number,\n secret: string,\n transformer: Transformer | {\n toYdoc: (document: any) => Doc,\n fromYdoc: (document: Doc) => any,\n },\n url: string,\n events: Array<Events>,\n}\n\nexport class Webhook implements Extension {\n\n configuration: Configuration = {\n debounce: 2000,\n debounceMaxWait: 10000,\n secret: '',\n transformer: TiptapTransformer,\n url: '',\n events: [\n Events.onChange,\n ],\n }\n\n debounced: Map<string, { timeout: Timeout, start: number }> = new Map()\n\n /**\n * Constructor\n */\n constructor(configuration?: Partial<Configuration>) {\n this.configuration = {\n ...this.configuration,\n ...configuration,\n }\n\n if (!this.configuration.url) {\n throw new Error('url is required!')\n }\n }\n\n /**\n * Create a signature for the response body\n */\n createSignature(body: string): string {\n const hmac = createHmac('sha256', this.configuration.secret)\n\n return `sha256=${hmac.update(body).digest('hex')}`\n }\n\n /**\n * debounce the given function, using the given identifier\n */\n debounce(id: string, func: Function) {\n const old = this.debounced.get(id)\n const start = old?.start || Date.now()\n\n const run = () => {\n this.debounced.delete(id)\n func()\n }\n\n if (old?.timeout) clearTimeout(old.timeout)\n if (Date.now() - start >= this.configuration.debounceMaxWait) return run()\n\n this.debounced.set(id, {\n start,\n timeout: setTimeout(run, <number> this.configuration.debounce),\n })\n }\n\n /**\n * Send a request to the given url containing the given data\n */\n async sendRequest(event: Events, payload: any) {\n const json = JSON.stringify({ event, payload })\n\n return axios.post(\n this.configuration.url,\n json,\n { headers: { 'X-Hocuspocus-Signature-256': this.createSignature(json) } },\n )\n }\n\n /**\n * onChange hook\n */\n async onChange(data: onChangePayload) {\n if (!this.configuration.events.includes(Events.onChange)) {\n return\n }\n\n const save = () => {\n this.sendRequest(Events.onChange, {\n document: this.configuration.transformer.fromYdoc(data.document),\n documentName: data.documentName,\n context: data.context,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n })\n }\n\n if (!this.configuration.debounce) {\n return save()\n }\n\n this.debounce(data.documentName, save)\n }\n\n /**\n * onLoadDocument hook\n */\n async onLoadDocument(data: onLoadDocumentPayload) {\n if (!this.configuration.events.includes(Events.onCreate)) {\n return\n }\n\n const response = <AxiosResponse> await this.sendRequest(Events.onCreate, {\n documentName: data.documentName,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n })\n\n if (response.status !== 200 || !response.data) return\n\n const document = typeof response.data === 'string'\n ? JSON.parse(response.data)\n : response.data\n\n // eslint-disable-next-line guard-for-in,no-restricted-syntax\n for (const fieldName in document) {\n if (data.document.isEmpty(fieldName)) {\n data.document.merge(\n this.configuration.transformer.toYdoc(document[fieldName], fieldName),\n )\n }\n }\n }\n\n /**\n * onConnect hook\n */\n async onConnect(data: onConnectPayload) {\n if (!this.configuration.events.includes(Events.onConnect)) {\n return\n }\n\n try {\n const response = <AxiosResponse> await this.sendRequest(Events.onConnect, {\n documentName: data.documentName,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n })\n\n return typeof response.data === 'string'\n ? JSON.parse(response.data)\n : response.data\n } catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw null\n }\n }\n\n async onDisconnect(data: onDisconnectPayload) {\n if (!this.configuration.events.includes(Events.onConnect)) {\n return\n }\n\n await this.sendRequest(Events.onDisconnect, {\n documentName: data.documentName,\n requestHeaders: data.requestHeaders,\n requestParameters: Object.fromEntries(data.requestParameters.entries()),\n context: data.context,\n })\n }\n\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
import { Extension, onChangePayload, onConfigurePayload, onConnectPayload,
|
|
1
|
+
import { Extension, onChangePayload, onConfigurePayload, onConnectPayload, onLoadDocumentPayload, onDestroyPayload, onDisconnectPayload, onListenPayload, onRequestPayload, onUpgradePayload } from '@hocuspocus/server';
|
|
2
|
+
export interface LoggerConfiguration {
|
|
3
|
+
/**
|
|
4
|
+
* Prepend all logging message with a string.
|
|
5
|
+
*/
|
|
6
|
+
prefix: null | string;
|
|
7
|
+
}
|
|
2
8
|
export declare class Logger implements Extension {
|
|
3
|
-
|
|
9
|
+
configuration: LoggerConfiguration;
|
|
10
|
+
/**
|
|
11
|
+
* Constructor
|
|
12
|
+
*/
|
|
13
|
+
constructor(configuration?: Partial<LoggerConfiguration>);
|
|
14
|
+
onLoadDocument(data: onLoadDocumentPayload): Promise<void>;
|
|
4
15
|
onChange(data: onChangePayload): Promise<void>;
|
|
5
16
|
onConnect(data: onConnectPayload): Promise<void>;
|
|
6
17
|
onDisconnect(data: onDisconnectPayload): Promise<void>;
|
|
@@ -9,5 +20,5 @@ export declare class Logger implements Extension {
|
|
|
9
20
|
onListen(data: onListenPayload): Promise<void>;
|
|
10
21
|
onDestroy(data: onDestroyPayload): Promise<void>;
|
|
11
22
|
onConfigure(data: onConfigurePayload): Promise<void>;
|
|
12
|
-
private
|
|
23
|
+
private log;
|
|
13
24
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Logger';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Configuration, onConnectPayload, onDisconnectPayload,
|
|
2
|
+
import { Configuration, onConnectPayload, onDisconnectPayload, onLoadDocumentPayload, onChangePayload } from '@hocuspocus/server';
|
|
3
3
|
export declare class Collector {
|
|
4
4
|
serverConfiguration: Partial<Configuration>;
|
|
5
5
|
version: string;
|
|
@@ -30,7 +30,7 @@ export declare class Collector {
|
|
|
30
30
|
connectionCount(): {
|
|
31
31
|
count: string | number;
|
|
32
32
|
};
|
|
33
|
-
createDocument(data:
|
|
33
|
+
createDocument(data: onLoadDocumentPayload): {
|
|
34
34
|
action: string;
|
|
35
35
|
document: any;
|
|
36
36
|
documentName: string;
|
|
File without changes
|
|
File without changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Extension, onChangePayload, onConfigurePayload, onConnectPayload,
|
|
2
|
+
import { Extension, onChangePayload, onConfigurePayload, onConnectPayload, onLoadDocumentPayload, onDisconnectPayload, onRequestPayload, onUpgradePayload } from '@hocuspocus/server';
|
|
3
3
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
4
4
|
import WebSocket from 'ws';
|
|
5
5
|
import { Storage } from './Storage';
|
|
@@ -32,7 +32,7 @@ export declare class Monitor implements Extension {
|
|
|
32
32
|
onUpgrade({ request, socket, head }: onUpgradePayload): Promise<void>;
|
|
33
33
|
onConnect(data: onConnectPayload): Promise<void>;
|
|
34
34
|
onDisconnect(data: onDisconnectPayload): Promise<void>;
|
|
35
|
-
|
|
35
|
+
onLoadDocument(data: onLoadDocumentPayload): Promise<void>;
|
|
36
36
|
onChange(data: onChangePayload): Promise<void>;
|
|
37
37
|
onConfigure(data: onConfigurePayload): Promise<void>;
|
|
38
38
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RedisPersistence } from 'y-redis';
|
|
2
|
-
import { Extension, onConnectPayload,
|
|
2
|
+
import { Extension, onConnectPayload, onLoadDocumentPayload, onDisconnectPayload } from '@hocuspocus/server';
|
|
3
3
|
export interface Configuration {
|
|
4
4
|
}
|
|
5
5
|
export declare class Redis implements Extension {
|
|
@@ -10,7 +10,7 @@ export declare class Redis implements Extension {
|
|
|
10
10
|
* Constructor
|
|
11
11
|
*/
|
|
12
12
|
constructor(configuration?: Partial<Configuration>);
|
|
13
|
-
|
|
13
|
+
onLoadDocument(data: onLoadDocumentPayload): Promise<import("yjs").Doc | undefined>;
|
|
14
14
|
onConnect(data: onConnectPayload): Promise<void>;
|
|
15
15
|
onDisconnect(data: onDisconnectPayload): Promise<void>;
|
|
16
16
|
}
|
|
File without changes
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Extension,
|
|
1
|
+
import { Extension, onLoadDocumentPayload } from '@hocuspocus/server';
|
|
2
2
|
import { LeveldbPersistence } from 'y-leveldb';
|
|
3
3
|
export interface Configuration {
|
|
4
4
|
options: object | undefined;
|
|
@@ -12,9 +12,9 @@ export declare class RocksDB implements Extension {
|
|
|
12
12
|
*/
|
|
13
13
|
constructor(configuration?: Partial<Configuration>);
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* onLoadDocument hook
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
onLoadDocument(data: onLoadDocumentPayload): Promise<any>;
|
|
18
18
|
/**
|
|
19
19
|
* store updates in y-leveldb persistence
|
|
20
20
|
*/
|
|
File without changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Extension, onChangePayload, onConnectPayload,
|
|
2
|
+
import { Extension, onChangePayload, onConnectPayload, onLoadDocumentPayload, onDisconnectPayload } from '@hocuspocus/server';
|
|
3
3
|
import { Doc } from 'yjs';
|
|
4
4
|
import { Transformer } from '@hocuspocus/transformer';
|
|
5
5
|
import { AxiosResponse } from 'axios';
|
|
@@ -48,9 +48,9 @@ export declare class Webhook implements Extension {
|
|
|
48
48
|
*/
|
|
49
49
|
onChange(data: onChangePayload): Promise<void>;
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* onLoadDocument hook
|
|
52
52
|
*/
|
|
53
|
-
|
|
53
|
+
onLoadDocument(data: onLoadDocumentPayload): Promise<void>;
|
|
54
54
|
/**
|
|
55
55
|
* onConnect hook
|
|
56
56
|
*/
|
|
@@ -108,7 +108,7 @@ export interface HocuspocusProviderOptions {
|
|
|
108
108
|
export declare class HocuspocusProvider extends EventEmitter {
|
|
109
109
|
options: HocuspocusProviderOptions;
|
|
110
110
|
subscribedToBroadcastChannel: boolean;
|
|
111
|
-
webSocket:
|
|
111
|
+
webSocket: WebSocket | null;
|
|
112
112
|
shouldConnect: boolean;
|
|
113
113
|
status: WebSocketStatus;
|
|
114
114
|
isSynced: boolean;
|
|
@@ -6,5 +6,5 @@ export declare class MessageReceiver {
|
|
|
6
6
|
debugger: MessageLogger;
|
|
7
7
|
constructor(message: IncomingMessage);
|
|
8
8
|
apply(connection: Connection): void;
|
|
9
|
-
readSyncMessage(message: IncomingMessage, connection: Connection): 0 |
|
|
9
|
+
readSyncMessage(message: IncomingMessage, connection: Connection): 0 | 2 | 1;
|
|
10
10
|
}
|
|
@@ -34,7 +34,11 @@ export interface Extension {
|
|
|
34
34
|
onChange?(data: onChangePayload): Promise<any>;
|
|
35
35
|
onConnect?(data: onConnectPayload): Promise<any>;
|
|
36
36
|
onConfigure?(data: onConfigurePayload): Promise<any>;
|
|
37
|
-
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated onCreateDocument is deprecated, use onLoadDocument instead
|
|
39
|
+
*/
|
|
40
|
+
onCreateDocument?(data: onLoadDocumentPayload): Promise<any>;
|
|
41
|
+
onLoadDocument?(data: onLoadDocumentPayload): Promise<any>;
|
|
38
42
|
onDestroy?(data: onDestroyPayload): Promise<any>;
|
|
39
43
|
onDisconnect?(data: onDisconnectPayload): Promise<any>;
|
|
40
44
|
onListen?(data: onListenPayload): Promise<any>;
|
|
@@ -73,7 +77,7 @@ export interface onConnectPayload {
|
|
|
73
77
|
socketId: string;
|
|
74
78
|
connection: ConnectionConfig;
|
|
75
79
|
}
|
|
76
|
-
export interface
|
|
80
|
+
export interface onLoadDocumentPayload {
|
|
77
81
|
context: any;
|
|
78
82
|
document: Document;
|
|
79
83
|
documentName: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hocuspocus/extension-webhook",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.40",
|
|
4
4
|
"description": "hocuspocus webhook extension",
|
|
5
5
|
"homepage": "https://hocuspocus.dev",
|
|
6
6
|
"keywords": [
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@hocuspocus/server": "^1.0.0-alpha.
|
|
28
|
-
"@hocuspocus/transformer": "^1.0.0-alpha.
|
|
27
|
+
"@hocuspocus/server": "^1.0.0-alpha.76",
|
|
28
|
+
"@hocuspocus/transformer": "^1.0.0-alpha.15",
|
|
29
29
|
"axios": "^0.23.0"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "fa031748b345c53bd71eaeca2bccfcf29cbb36e8"
|
|
32
32
|
}
|
package/src/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
Extension,
|
|
4
4
|
onChangePayload,
|
|
5
5
|
onConnectPayload,
|
|
6
|
-
|
|
6
|
+
onLoadDocumentPayload,
|
|
7
7
|
onDisconnectPayload,
|
|
8
8
|
} from '@hocuspocus/server'
|
|
9
9
|
import { Doc } from 'yjs'
|
|
@@ -128,9 +128,9 @@ export class Webhook implements Extension {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
|
-
*
|
|
131
|
+
* onLoadDocument hook
|
|
132
132
|
*/
|
|
133
|
-
async
|
|
133
|
+
async onLoadDocument(data: onLoadDocumentPayload) {
|
|
134
134
|
if (!this.configuration.events.includes(Events.onCreate)) {
|
|
135
135
|
return
|
|
136
136
|
}
|