TypeScript declarations for @novnc/novnc
Pulled from @ovcharik's gist. ❤️
MIT
Pulled from @ovcharik's gist. ❤️
MIT
// Type definitions for @novnc/novnc 1.3 | |
// Project: https://github.com/novnc/noVNC | |
// Definitions by: Jake Jarvis <https://github.com/jakejarvis> | |
// Maksim Ovcharik <https://github.com/ovcharik> | |
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped | |
declare module '@novnc/novnc/core/rfb' { | |
/** | |
* An `object` specifying the credentials to provide to the server when authenticating. | |
*/ | |
interface NoVncCredentials { | |
/** The user that authenticates */ | |
username: string; | |
/** Password for the user */ | |
password: string; | |
/** Target machine or session */ | |
target: string; | |
} | |
/** | |
* An `object` specifying extra details about how the connection should be made. | |
*/ | |
interface NoVncOptions { | |
/** | |
* A `boolean` indicating if the remote server should be shared or if any other connected | |
* clients should be disconnected. Enabled by default. | |
*/ | |
shared?: boolean; | |
/** | |
* An `object` specifying the credentials to provide to the server when authenticating. | |
*/ | |
credentials?: NoVncCredentials; | |
/** | |
* A `string` specifying the ID to provide to any VNC repeater encountered. | |
*/ | |
repeaterID?: string; | |
/** | |
* An `Array` of `string`s specifying the sub-protocols to use in the WebSocket connection. | |
* Empty by default. | |
*/ | |
wsProtocols?: string[]; | |
} | |
interface NoVncEvents { | |
/** | |
* The `connect` event is fired after all the handshaking with the server is completed and the | |
* connection is fully established. After this event the `NoVncClient` object is ready to | |
* receive graphics updates and to send input. | |
*/ | |
connect: CustomEvent<Record<string, never>>; | |
/** | |
* The `disconnect` event is fired when the connection has been terminated. The `detail` | |
* property is an `object` that contains the property `clean`. `clean` is a `boolean` indicating | |
* if the termination was clean or not. In the event of an unexpected termination or an error | |
* `clean` will be set to false. | |
*/ | |
disconnect: CustomEvent<{ clean: boolean }>; | |
/** | |
* The `credentialsrequired` event is fired when the server requests more credentials than were | |
* specified to {@link NoVncClient}. The `detail` property is an `object` containing the | |
* property `types` which is an `Array` of `string` listing the credentials that are required. | |
*/ | |
credentialsrequired: CustomEvent<{ types: Array<keyof NoVncCredentials> }>; | |
/** | |
* The `securityfailure` event is fired when the handshaking process with the server fails | |
* during the security negotiation step. The `detail` property is an `object` containing the | |
* following properties: | |
* | |
* | Property | Type | Description | |
* | -------- | ----------- | ----------- | |
* | `status` | `number` | The failure status code | |
* | `reason` | `string` | The **optional** reason for the failure | |
* | |
* The property `status` corresponds to the | |
* [SecurityResult](https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#securityresult) | |
* status code in cases of failure. A status of zero will not be sent in this event since that | |
* indicates a successful security handshaking process. The optional property `reason` is | |
* provided by the server and thus the language of the string is not known. However most servers | |
* will probably send English strings. The server can choose to not send a reason and in these | |
* cases the `reason` property will be omitted. | |
*/ | |
securityfailure: CustomEvent<{ status: number; reason?: string }>; | |
/** | |
* The `clipboard` event is fired when the server has sent clipboard data. The `detail` property | |
* is an `object` containing the property `text` which is a `string` with the clipboard data. | |
*/ | |
clipboard: CustomEvent<{ text: string }>; | |
/** | |
* The `bell` event is fired when the server has requested an audible bell. | |
*/ | |
bell: CustomEvent<Record<string, never>>; | |
/** | |
* The `desktopname` event is fired when the name of the remote desktop changes. The `detail` | |
* property is an `object` with the property `name` which is a `string` specifying the new name. | |
*/ | |
desktopname: CustomEvent<{ name: string }>; | |
/** | |
* The `capabilities` event is fired whenever an entry is added or removed from `capabilities`. | |
* The `detail` property is an `object` with the property `capabilities` containing the new | |
* value of `capabilities`. | |
*/ | |
capabilities: CustomEvent<{ capabilities: NoVncClient['capabilities'] }>; | |
} | |
type NoVncEventType = keyof NoVncEvents; | |
type NoVncEvent = NoVncEvents[NoVncEventType]; | |
class NoVncEventTarget extends EventTarget { | |
protected _listeners: Map<NoVncEventType, (event: Event) => void>; | |
addEventListener<T extends NoVncEventType>(type: T, listener: (event: NoVncEvents[T]) => void): void; | |
addEventListener(type: string, listener: (event: CustomEvent) => void): void; | |
removeEventListener<T extends NoVncEventType>(type: T, listener: (event: NoVncEvents[T]) => void): void; | |
removeEventListener(type: string, listener: (event: CustomEvent) => void): void; | |
dispatchEvent(event: NoVncEvent | CustomEvent): boolean; | |
} | |
/** | |
* The `NoVncClient` object represents a single connection to a VNC server. It communicates using | |
* a WebSocket that must provide a standard NoVncClient protocol stream. | |
*/ | |
export default class NoVncClient extends NoVncEventTarget { | |
readonly _target: Element; | |
readonly _url: string | null; | |
/** | |
* Returns a new `NoVncClient` object and initiates a new connection to a specified VNC server. | |
* | |
* @param target - A block {@link HTMLElement} that specifies where the `NoVncClient` object | |
* should attach itself. The existing contents of the `HTMLElement` will be untouched, but new | |
* elements will be added during the lifetime of the `NoVncClient` object. | |
* @param url - A `string`, {@link WebSocket}, or {@link RTCDataChannel} specifying the VNC server to connect | |
* to. This must be a valid WebSocket URL. | |
* @param options - An {@link NoVncOptions} specifying extra details about how the connection | |
* should be made. | |
*/ | |
constructor(target: Element, url: string | WebSocket | RTCDataChannel, options?: NoVncOptions); | |
/** | |
* Is a `boolean` indicating if any events (e.g. key presses or mouse movement) should be | |
* prevented from being sent to the server. Disabled by default. | |
*/ | |
viewOnly: boolean; | |
/** | |
* Is a `boolean` indicating if keyboard focus should automatically be moved to the remote | |
* session when a `mousedown` or `touchstart` event is received. Enabled by default. | |
*/ | |
focusOnClick: boolean; | |
/** | |
* Is a `boolean` indicating if the remote session should be clipped to its container. When | |
* disabled scrollbars will be shown to handle the resulting overflow. Disabled by default. | |
*/ | |
clipViewport: boolean; | |
/** | |
* Is a `boolean` indicating if mouse events should control the relative position of a clipped | |
* remote session. Only relevant if `clipViewport` is enabled. Disabled by default. | |
*/ | |
dragViewport: boolean; | |
/** | |
* Is a `boolean` indicating if the remote session should be scaled locally so it fits its | |
* container. When disabled it will be centered if the remote session is smaller than its | |
* container, or handled according to `clipViewport` if it is larger. Disabled by default. | |
*/ | |
scaleViewport: boolean; | |
/** | |
* Is a `boolean` indicating if a request to resize the remote session should be sent whenever | |
* the container changes dimensions. Disabled by default. | |
*/ | |
resizeSession: boolean; | |
/** | |
* Is a `boolean` indicating whether a dot cursor should be shown instead of a zero-sized or | |
* fully-transparent cursor if the server sets such invisible cursor. Disabled by default. | |
*/ | |
showDotCursor: boolean; | |
/** | |
* Is a valid CSS [background](https://developer.mozilla.org/en-US/docs/Web/CSS/background) | |
* style value indicating which background style should be applied to the element containing the | |
* remote session screen. The default value is `rgb(40, 40, 40)` (solid gray color). | |
*/ | |
background: string; | |
/** | |
* Is an `int` in range `[0-9]` controlling the desired JPEG quality. Value `0` implies low | |
* quality and `9` implies high quality. Default value is `6`. | |
*/ | |
qualityLevel: number; | |
/** | |
* Is an `int` in range `[0-9]` controlling the desired compression level. Value `0` means no | |
* compression. Level 1 uses a minimum of CPU resources and achieves weak compression ratios, | |
* while level 9 offers best compression but is slow in terms of CPU consumption on the server | |
* side. Use high levels with very slow network connections. Default value is `2`. | |
*/ | |
compressionLevel: number; | |
/** | |
* Is an `object` indicating which optional extensions are available on the server. Some methods | |
* may only be called if the corresponding capability is set. The following capabilities are | |
* defined: | |
* | |
* | name | type | description | |
* | -------- | --------- | ----------- | |
* | `power` | `boolean` | Machine power control is available | |
*/ | |
readonly capabilities: { | |
/** Machine power control is available */ | |
power: boolean; | |
}; | |
/** | |
* Disconnect from the server. | |
*/ | |
disconnect(): void; | |
/** | |
* Send credentials to server. Should be called after the | |
* {@link NoVncEventType.credentialsrequired} event has fired. | |
* | |
* @param credentials An {@link NoVncCredentials} specifying the credentials to provide to the | |
* server when authenticating. | |
*/ | |
sendCredentials(credentials: NoVncCredentials): void; | |
/** | |
* Send a key event to the server. | |
* | |
* @param keysym A `number` specifying the NoVncClient keysym to send. Can be `0` if a valid | |
* **`code`** is specified. | |
* @param code A `string` specifying the physical key to send. Valid values are those that can | |
* be specified to {@link KeyboardEvent.code}. If the physical key cannot be determined then | |
* `null` shall be specified. | |
* @param down A `boolean` specifying if a press or a release event should be sent. If omitted | |
* then both a press and release event are sent. | |
*/ | |
sendKey(keysym: number, code: string | null, down?: boolean): void; | |
/** | |
* Send the key sequence *left Control*, *left Alt*, *Delete*. This is a convenience wrapper | |
* around {@link sendKey}. | |
*/ | |
sendCtrlAltDel(): void; | |
/** | |
* Sets the keyboard focus on the remote session. Keyboard events will be sent to the remote | |
* server after this point. | |
* | |
* @param options A {@link FocusOptions} providing options to control how the focus will be | |
* performed. Please see {@link HTMLElement.focus} for available options. | |
*/ | |
focus(options?: FocusOptions): void; | |
/** | |
* Remove keyboard focus on the remote session. Keyboard events will no longer be sent to the | |
* remote server after this point. | |
*/ | |
blur(): void; | |
/** | |
* Request to shut down the remote machine. The capability `power` must be set for this method | |
* to have any effect. | |
*/ | |
machineShutdown(): void; | |
/** | |
* Request a clean reboot of the remote machine. The capability `power` must be set for this | |
* method to have any effect. | |
*/ | |
machineReboot(): void; | |
/** | |
* Request a forced reset of the remote machine. The capability `power` must be set for this | |
* method to have any effect. | |
*/ | |
machineReset(): void; | |
/** | |
* Send clipboard data to the remote server. | |
* | |
* @param text A `string` specifying the clipboard data to send. | |
*/ | |
clipboardPasteFrom(text: string): void; | |
} | |
} | |
declare module '@novnc/novnc/core/util/browser' { | |
let isTouchDevice: boolean; | |
let dragThreshold: number; | |
const supportsCursorURIs: boolean; | |
const hasScrollbarGutter: boolean; | |
function isMac(): boolean; | |
function isWindows(): boolean; | |
function isIOS(): boolean; | |
function isSafari(): boolean; | |
function isFirefox(): boolean; | |
} | |
declare module '@novnc/novnc/core/input/util' { | |
interface KeyboardEventBase { | |
char?: string; | |
charCode?: number; | |
code: string; | |
key: string; | |
keyCode?: number; | |
location?: number; | |
type?: string; | |
} | |
function getKeycode(event: KeyboardEventBase): string; | |
function getKey(event: KeyboardEventBase): string; | |
function getKeysym(event: KeyboardEventBase): number; | |
} |
{ | |
"name": "@types/novnc__novnc", | |
"version": "0.0.0" | |
} |