@hocuspocus/extension-monitor
Advanced tools
Comparing version 1.0.0-alpha.90 to 1.0.0-alpha.91
@@ -20,4 +20,4 @@ { | ||
"scripts": { | ||
"start": "parcel watch --public-url '.' -d dist src/index.html", | ||
"build": "rm -rf dist && parcel build --public-url '.' --no-source-maps -d dist src/index.html" | ||
"start": "parcel watch --public-url '.' src/index.html", | ||
"build": "rm -rf dist && parcel build --public-url '.' --no-source-maps src/index.html" | ||
}, | ||
@@ -30,8 +30,7 @@ "files": [ | ||
}, | ||
"dependencies": {}, | ||
"devDependencies": { | ||
"dependencies": { | ||
"@fullhuman/postcss-purgecss": "^3.0.0", | ||
"@tailwindcss/postcss7-compat": "npm:@tailwindcss/postcss7-compat", | ||
"autoprefixer": "^9.7.3", | ||
"collect.js": "^4.29.3", | ||
"collect.js": "^4.31.3", | ||
"moment": "^2.29.1", | ||
@@ -38,0 +37,0 @@ "parcel-bundler": "^1.12.3", |
@@ -1,3 +0,2 @@ | ||
/// <reference types="node" /> | ||
import { Extension, onChangePayload, onLoadDocumentPayload } from '@hocuspocus/server'; | ||
import { Extension, onChangePayload, onLoadDocumentPayload, storePayload } from '@hocuspocus/server'; | ||
export interface DatabaseConfiguration { | ||
@@ -8,12 +7,9 @@ /** | ||
*/ | ||
fetchUpdates: ({ documentName }: { | ||
fetch: ({ documentName }: { | ||
documentName: string; | ||
}) => Promise<Uint8Array[]>; | ||
}) => Promise<Uint8Array | null>; | ||
/** | ||
* Pass a function to store updates in your database. | ||
*/ | ||
storeUpdate: ({ update, documentName }: { | ||
update: Buffer; | ||
documentName: string; | ||
}) => void; | ||
store: (data: storePayload) => void; | ||
} | ||
@@ -36,3 +32,3 @@ export declare class Database implements Extension { | ||
*/ | ||
onChange({ document, documentName }: onChangePayload): Promise<void>; | ||
onStoreDocument(data: onChangePayload): Promise<void>; | ||
} |
@@ -18,2 +18,6 @@ import { Extension, onChangePayload, onConfigurePayload, onConnectPayload, onLoadDocumentPayload, onDestroyPayload, onDisconnectPayload, onRequestPayload, onUpgradePayload } from '@hocuspocus/server'; | ||
/** | ||
* Whether to log something for the `onStoreDocument` hook. | ||
*/ | ||
onStoreDocument: boolean; | ||
/** | ||
* Whether to log something for the `onConnect` hook. | ||
@@ -57,2 +61,3 @@ */ | ||
onChange(data: onChangePayload): Promise<void>; | ||
onStoreDocument(data: onDisconnectPayload): Promise<void>; | ||
onConnect(data: onConnectPayload): Promise<void>; | ||
@@ -59,0 +64,0 @@ onDisconnect(data: onDisconnectPayload): Promise<void>; |
import { Database, DatabaseConfiguration } from '@hocuspocus/extension-database'; | ||
import sqlite3 from 'sqlite3'; | ||
export declare const schema = "CREATE TABLE IF NOT EXISTS \"documents\" (\n \"name\" varchar(255) NOT NULL,\n \"data\" blob NOT NULL,\n UNIQUE(name)\n)"; | ||
export declare const selectQuery = "\n SELECT data FROM \"documents\" WHERE name = $name ORDER BY rowid DESC\n"; | ||
export declare const upsertQuery = "\n INSERT INTO \"documents\" (\"name\", \"data\") VALUES ($name, $data)\n ON CONFLICT(name) DO UPDATE SET data = $data\n"; | ||
export interface SQLiteConfiguration extends DatabaseConfiguration { | ||
@@ -20,8 +23,5 @@ /** | ||
configuration: SQLiteConfiguration; | ||
/** | ||
* Constructor | ||
*/ | ||
constructor(configuration?: Partial<SQLiteConfiguration>); | ||
onConfigure(): Promise<void>; | ||
onListen(): Promise<void>; | ||
onConfigure(): Promise<void>; | ||
} |
@@ -6,3 +6,2 @@ /// <reference types="node" /> | ||
import { AxiosResponse } from 'axios'; | ||
import Timeout = NodeJS.Timeout; | ||
export declare enum Events { | ||
@@ -28,3 +27,3 @@ onChange = "change", | ||
debounced: Map<string, { | ||
timeout: Timeout; | ||
timeout: NodeJS.Timeout; | ||
start: number; | ||
@@ -31,0 +30,0 @@ }>; |
@@ -8,3 +8,3 @@ export default class EventEmitter { | ||
off(event: string, fn?: Function): this; | ||
protected removeAllListeners(): void; | ||
removeAllListeners(): void; | ||
} |
import * as Y from 'yjs'; | ||
import { Awareness } from 'y-protocols/awareness'; | ||
import * as mutex from 'lib0/mutex'; | ||
import { Event, CloseEvent, MessageEvent } from 'ws'; | ||
import type { Event, CloseEvent, MessageEvent } from 'ws'; | ||
import EventEmitter from './EventEmitter'; | ||
import { OutgoingMessage } from './OutgoingMessage'; | ||
import { ConstructableOutgoingMessage } from './types'; | ||
import { onAwarenessChangeParameters, onAwarenessUpdateParameters } from '.'; | ||
export declare enum WebSocketStatus { | ||
@@ -102,8 +103,10 @@ Connecting = "connecting", | ||
onStatus: (status: any) => void; | ||
onSynced: () => void; | ||
onSynced: ({ state }: { | ||
state: boolean; | ||
}) => void; | ||
onDisconnect: (event: CloseEvent) => void; | ||
onClose: (event: CloseEvent) => void; | ||
onDestroy: () => void; | ||
onAwarenessUpdate: (states: any) => void; | ||
onAwarenessChange: (states: any) => void; | ||
onAwarenessUpdate: ({ states }: onAwarenessUpdateParameters) => void; | ||
onAwarenessChange: ({ states }: onAwarenessChangeParameters) => void; | ||
/** | ||
@@ -110,0 +113,0 @@ * Don’t output any warnings. |
@@ -35,1 +35,11 @@ import { Awareness } from 'y-protocols/awareness'; | ||
export declare type ConstructableOutgoingMessage = Constructable<AuthenticationMessage> | Constructable<AwarenessMessage> | Constructable<QueryAwarenessMessage> | Constructable<SyncStepOneMessage> | Constructable<SyncStepTwoMessage> | Constructable<UpdateMessage>; | ||
export declare type onAwarenessUpdateParameters = { | ||
states: StatesArray; | ||
}; | ||
export declare type onAwarenessChangeParameters = { | ||
states: StatesArray; | ||
}; | ||
export declare type StatesArray = { | ||
clientId: number; | ||
[key: string | number]: any; | ||
}[]; |
@@ -7,4 +7,4 @@ /// <reference types="node" /> | ||
import Document from './Document'; | ||
import { MessageLogger } from './Debugger'; | ||
declare class Connection { | ||
import { Debugger } from './Debugger'; | ||
export declare class Connection { | ||
webSocket: WebSocket; | ||
@@ -21,7 +21,7 @@ context: any; | ||
readOnly: Boolean; | ||
debugger: MessageLogger; | ||
logger: Debugger; | ||
/** | ||
* Constructor. | ||
*/ | ||
constructor(connection: WebSocket, request: HTTPIncomingMessage, document: Document, timeout: number, socketId: string, context: any, readOnly?: boolean); | ||
constructor(connection: WebSocket, request: HTTPIncomingMessage, document: Document, timeout: number, socketId: string, context: any, readOnly: boolean | undefined, logger: Debugger); | ||
/** | ||
@@ -28,0 +28,0 @@ * Set a callback that will be triggered when the connection is closed |
@@ -1,2 +0,2 @@ | ||
export declare class MessageLogger { | ||
export declare class Debugger { | ||
logs: any[]; | ||
@@ -15,2 +15,1 @@ listen: boolean; | ||
} | ||
export declare const Debugger: MessageLogger; |
@@ -6,4 +6,4 @@ import WebSocket from 'ws'; | ||
import Connection from './Connection'; | ||
import { MessageLogger } from './Debugger'; | ||
declare class Document extends Doc { | ||
import { Debugger } from './Debugger'; | ||
export declare class Document extends Doc { | ||
awareness: Awareness; | ||
@@ -13,10 +13,13 @@ callbacks: { | ||
}; | ||
connections: Map<any, any>; | ||
connections: Map<WebSocket, { | ||
clients: Set<any>; | ||
connection: Connection; | ||
}>; | ||
name: string; | ||
mux: mutex; | ||
debugger: MessageLogger; | ||
logger: Debugger; | ||
/** | ||
* Constructor. | ||
*/ | ||
constructor(name: string); | ||
constructor(name: string, logger: Debugger); | ||
/** | ||
@@ -23,0 +26,0 @@ * Check if the Document is empty |
/// <reference types="node" /> | ||
import WebSocket, { WebSocketServer } from 'ws'; | ||
import WebSocket, { AddressInfo, WebSocketServer } from 'ws'; | ||
import { IncomingMessage, Server as HTTPServer } from 'http'; | ||
import { Configuration, Hook } from './types'; | ||
import Document from './Document'; | ||
import { MessageLogger } from './Debugger'; | ||
import { Debugger } from './Debugger'; | ||
import { onListenPayload } from '.'; | ||
@@ -12,2 +12,4 @@ export declare const defaultConfiguration: { | ||
timeout: number; | ||
debounce: number; | ||
maxDebounce: number; | ||
quiet: boolean; | ||
@@ -23,3 +25,4 @@ }; | ||
webSocketServer?: WebSocketServer; | ||
debugger: MessageLogger; | ||
debugger: Debugger; | ||
constructor(configuration?: Partial<Configuration>); | ||
/** | ||
@@ -33,3 +36,7 @@ * Configure the server | ||
*/ | ||
listen(portOrCallback?: number | ((data: onListenPayload) => Promise<any>) | null, callback?: any): Promise<void>; | ||
listen(portOrCallback?: number | ((data: onListenPayload) => Promise<any>) | null, callback?: any): Promise<Hocuspocus>; | ||
get address(): AddressInfo; | ||
get URL(): string; | ||
get webSocketURL(): string; | ||
get httpURL(): string; | ||
private showStartScreen; | ||
@@ -65,8 +72,14 @@ /** | ||
* Handle update of the given document | ||
* @private | ||
*/ | ||
private handleDocumentUpdate; | ||
timers: Map<string, { | ||
timeout: NodeJS.Timeout; | ||
start: number; | ||
}>; | ||
/** | ||
* debounce the given function, using the given identifier | ||
*/ | ||
debounce(id: string, func: Function, immediately?: boolean): void; | ||
/** | ||
* Create a new document by the given request | ||
* @private | ||
*/ | ||
@@ -76,8 +89,7 @@ private createDocument; | ||
* Create a new connection by the given request and document | ||
* @private | ||
*/ | ||
private createConnection; | ||
/** | ||
* Run the given hook on all configured extensions | ||
* Runs the given callback after each hook | ||
* Run the given hook on all configured extensions. | ||
* Runs the given callback after each hook. | ||
*/ | ||
@@ -87,3 +99,2 @@ hooks(name: Hook, payload: any, callback?: Function | null): Promise<any>; | ||
* Get parameters by the given request | ||
* @private | ||
*/ | ||
@@ -93,3 +104,2 @@ private static getParameters; | ||
* Get document name by the given request | ||
* @private | ||
*/ | ||
@@ -96,0 +106,0 @@ private getDocumentNameFromRequest; |
export * from './Hocuspocus'; | ||
export * from './Connection'; | ||
export * from './Document'; | ||
export * from './IncomingMessage'; | ||
export * from './OutgoingMessage'; | ||
export * from './types'; | ||
export * from './MessageReceiver'; | ||
export * from './Document'; | ||
export * from './Connection'; |
@@ -0,10 +1,13 @@ | ||
import { Awareness } from 'y-protocols/awareness'; | ||
import Connection from './Connection'; | ||
import { IncomingMessage } from './IncomingMessage'; | ||
import { MessageLogger } from './Debugger'; | ||
import { Debugger } from './Debugger'; | ||
import Document from './Document'; | ||
export declare class MessageReceiver { | ||
message: IncomingMessage; | ||
debugger: MessageLogger; | ||
constructor(message: IncomingMessage); | ||
apply(connection: Connection): void; | ||
readSyncMessage(message: IncomingMessage, connection: Connection): 0 | 2 | 1; | ||
logger: Debugger; | ||
constructor(message: IncomingMessage, logger: Debugger); | ||
apply(document: Document, connection?: Connection, reply?: (message: Uint8Array) => void): void; | ||
readSyncMessage(message: IncomingMessage, document: Document, connection?: Connection, reply?: (message: Uint8Array) => void): 0 | 2 | 1; | ||
applyQueryAwarenessMessage(awareness: Awareness, reply?: (message: Uint8Array) => void): void; | ||
} |
@@ -11,2 +11,3 @@ import { Encoder } from 'lib0/encoding'; | ||
createAwarenessUpdateMessage(awareness: Awareness, changedClients?: Array<any>): OutgoingMessage; | ||
writeQueryAwareness(): OutgoingMessage; | ||
writeAuthenticated(): OutgoingMessage; | ||
@@ -13,0 +14,0 @@ writePermissionDenied(reason: string): OutgoingMessage; |
@@ -5,2 +5,3 @@ /// <reference types="node" /> | ||
import { Socket } from 'net'; | ||
import { Awareness } from 'y-protocols/awareness'; | ||
import Document from './Document'; | ||
@@ -12,3 +13,4 @@ import { Hocuspocus } from './Hocuspocus'; | ||
Awareness = 1, | ||
Auth = 2 | ||
Auth = 2, | ||
QueryAwareness = 3 | ||
} | ||
@@ -36,6 +38,8 @@ /** | ||
export interface Extension { | ||
priority?: number; | ||
onConfigure?(data: onConfigurePayload): Promise<any>; | ||
onListen?(data: onListenPayload): Promise<any>; | ||
onUpgrade?(data: onUpgradePayload): Promise<any>; | ||
onConnect?(data: onConnectPayload): Promise<any>; | ||
onAuthenticate?(data: onAuthenticatePayload): Promise<any>; | ||
onChange?(data: onChangePayload): Promise<any>; | ||
onConnect?(data: onConnectPayload): Promise<any>; | ||
onConfigure?(data: onConfigurePayload): Promise<any>; | ||
/** | ||
@@ -46,13 +50,16 @@ * @deprecated onCreateDocument is deprecated, use onLoadDocument instead | ||
onLoadDocument?(data: onLoadDocumentPayload): Promise<any>; | ||
afterLoadDocument?(data: onLoadDocumentPayload): Promise<any>; | ||
onChange?(data: onChangePayload): Promise<any>; | ||
onStoreDocument?(data: onStoreDocumentPayload): Promise<any>; | ||
afterStoreDocument?(data: afterStoreDocumentPayload): Promise<any>; | ||
onAwarenessUpdate?(data: onAwarenessUpdatePayload): Promise<any>; | ||
onRequest?(data: onRequestPayload): Promise<any>; | ||
onDisconnect?(data: onDisconnectPayload): Promise<any>; | ||
onDestroy?(data: onDestroyPayload): Promise<any>; | ||
onDisconnect?(data: onDisconnectPayload): Promise<any>; | ||
onListen?(data: onListenPayload): Promise<any>; | ||
onRequest?(data: onRequestPayload): Promise<any>; | ||
onUpgrade?(data: onUpgradePayload): Promise<any>; | ||
} | ||
export declare type Hook = 'onAuthenticate' | 'onChange' | 'onConnect' | 'onConfigure' | | ||
export declare type Hook = 'onConfigure' | 'onListen' | 'onUpgrade' | 'onConnect' | 'onAuthenticate' | | ||
/** | ||
* @deprecated onCreateDocument is deprecated, use onLoadDocument instead | ||
*/ | ||
'onCreateDocument' | 'onLoadDocument' | 'onDestroy' | 'onDisconnect' | 'onListen' | 'onRequest' | 'onUpgrade'; | ||
'onCreateDocument' | 'onLoadDocument' | 'afterLoadDocument' | 'onChange' | 'onStoreDocument' | 'afterStoreDocument' | 'onAwarenessUpdate' | 'onRequest' | 'onDisconnect' | 'onDestroy'; | ||
export interface Configuration extends Extension { | ||
@@ -76,2 +83,11 @@ /** | ||
/** | ||
* Debounces the call of the `onStoreDocument` hook for the given amount of time in ms. | ||
* Otherwise every single update would be persisted. | ||
*/ | ||
debounce: number; | ||
/** | ||
* Makes sure to call `onStoreDocument` at least in the given amount of time (ms). | ||
*/ | ||
maxDebounce: number; | ||
/** | ||
* By default, the servers show a start screen. If passed false, the server will start quietly. | ||
@@ -83,8 +99,9 @@ */ | ||
*/ | ||
getDocumentName?(data: { | ||
documentName: string; | ||
request: IncomingMessage; | ||
requestParameters: URLSearchParams; | ||
}): string | Promise<string>; | ||
getDocumentName?(data: getDocumentNamePayload): string | Promise<string>; | ||
} | ||
export interface getDocumentNamePayload { | ||
documentName: string; | ||
request: IncomingMessage; | ||
requestParameters: URLSearchParams; | ||
} | ||
export interface onAuthenticatePayload { | ||
@@ -118,2 +135,12 @@ documentName: string; | ||
} | ||
export interface afterLoadDocumentPayload { | ||
context: any; | ||
document: Document; | ||
documentName: string; | ||
instance: Hocuspocus; | ||
requestHeaders: IncomingHttpHeaders; | ||
requestParameters: URLSearchParams; | ||
socketId: string; | ||
connection: ConnectionConfiguration; | ||
} | ||
export interface onChangePayload { | ||
@@ -130,2 +157,37 @@ clientsCount: number; | ||
} | ||
export interface onStoreDocumentPayload { | ||
clientsCount: number; | ||
context: any; | ||
document: Document; | ||
documentName: string; | ||
instance: Hocuspocus; | ||
requestHeaders: IncomingHttpHeaders; | ||
requestParameters: URLSearchParams; | ||
socketId: string; | ||
} | ||
export interface afterStoreDocumentPayload extends onStoreDocumentPayload { | ||
} | ||
export interface onAwarenessUpdatePayload { | ||
clientsCount: number; | ||
context: any; | ||
document: Document; | ||
documentName: string; | ||
instance: Hocuspocus; | ||
requestHeaders: IncomingHttpHeaders; | ||
requestParameters: URLSearchParams; | ||
update: Uint8Array; | ||
socketId: string; | ||
added: number[]; | ||
updated: number[]; | ||
removed: number[]; | ||
awareness: Awareness; | ||
states: StatesArray; | ||
} | ||
export declare type StatesArray = { | ||
clientId: number; | ||
[key: string | number]: any; | ||
}[]; | ||
export interface storePayload extends onStoreDocumentPayload { | ||
state: Buffer; | ||
} | ||
export interface onDisconnectPayload { | ||
@@ -132,0 +194,0 @@ clientsCount: number; |
{ | ||
"name": "@hocuspocus/extension-monitor", | ||
"description": "hocuspocus monitoring", | ||
"version": "1.0.0-alpha.90", | ||
"version": "1.0.0-alpha.91", | ||
"homepage": "https://hocuspocus.dev", | ||
@@ -35,15 +35,15 @@ "keywords": [ | ||
"dependencies": { | ||
"@hocuspocus/server": "^1.0.0-alpha.91", | ||
"@hocuspocus/server": "^1.0.0-alpha.92", | ||
"@types/node-os-utils": "^1.2.0", | ||
"@types/node-static": "^0.7.7", | ||
"bufferutil": "^4.0.5", | ||
"collect.js": "^4.29.3", | ||
"bufferutil": "^4.0.6", | ||
"collect.js": "^4.31.3", | ||
"moment": "^2.29.1", | ||
"node-os-utils": "^1.3.5", | ||
"node-os-utils": "^1.3.6", | ||
"node-static": "^0.7.11", | ||
"public-ip": "^4.0.4", | ||
"ws": "^8.3.0", | ||
"yjs": "^13.5.22" | ||
"ws": "^8.4.2", | ||
"yjs": "^13.5.24" | ||
}, | ||
"gitHead": "90e3f0955922515ccf1d643b7b43c4ad20387735" | ||
"gitHead": "125d94dc3520bb5185293c9b316f66ddd9215992" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
182204
136
2846
Updatedbufferutil@^4.0.6
Updatedcollect.js@^4.31.3
Updatednode-os-utils@^1.3.6
Updatedws@^8.4.2
Updatedyjs@^13.5.24