diff --git a/@xen-orchestra/lite/env.d.ts b/@xen-orchestra/lite/env.d.ts
index d0ce229c8d4..29623e9b84d 100644
--- a/@xen-orchestra/lite/env.d.ts
+++ b/@xen-orchestra/lite/env.d.ts
@@ -1,6 +1,7 @@
///
///
///
+///
declare const XO_LITE_VERSION: string
declare const XO_LITE_GIT_HEAD: string
diff --git a/@xen-orchestra/lite/src/components/RemoteConsole.vue b/@xen-orchestra/lite/src/components/RemoteConsole.vue
index ad75eee7b99..1aad045911d 100644
--- a/@xen-orchestra/lite/src/components/RemoteConsole.vue
+++ b/@xen-orchestra/lite/src/components/RemoteConsole.vue
@@ -61,9 +61,7 @@ const clearVncClient = () => {
vncClient.removeEventListener('disconnect', handleDisconnectionEvent)
vncClient.removeEventListener('connect', handleConnectionEvent)
- if (vncClient._rfbConnectionState !== 'disconnected') {
- vncClient.disconnect()
- }
+ vncClient.disconnect()
vncClient = undefined
}
diff --git a/@xen-orchestra/web-core/env.d.ts b/@xen-orchestra/web-core/env.d.ts
index 11f02fe2a00..d9818643f34 100644
--- a/@xen-orchestra/web-core/env.d.ts
+++ b/@xen-orchestra/web-core/env.d.ts
@@ -1 +1,2 @@
+///
///
diff --git a/@xen-orchestra/web-core/lib/types/novnc.d.ts b/@xen-orchestra/web-core/lib/types/novnc.d.ts
deleted file mode 100644
index 012415edbda..00000000000
--- a/@xen-orchestra/web-core/lib/types/novnc.d.ts
+++ /dev/null
@@ -1,342 +0,0 @@
-// [WARNING] Temporary file to fix typecheck error
-// Remove if this PR is merged: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/70022
-// Type definitions for @novnc/novnc 1.5
-// Project: https://github.com/novnc/noVNC
-// Definitions by: Jake Jarvis
-// Maksim Ovcharik
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-/* eslint-disable no-use-before-define */
-
-declare module '@novnc/novnc/lib/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>
-
- /**
- * 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 }>
-
- /**
- * 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>
-
- /**
- * 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 void>
-
- addEventListener(type: T, listener: (event: NoVncEvents[T]) => void): void
- addEventListener(type: string, listener: (event: CustomEvent) => void): void
-
- removeEventListener(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 _rfbConnectionState: string
- 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
-}
-
-/* eslint-enable no-use-before-define */
diff --git a/@xen-orchestra/web-core/package.json b/@xen-orchestra/web-core/package.json
index 19ef5eec21c..3f9087044f2 100644
--- a/@xen-orchestra/web-core/package.json
+++ b/@xen-orchestra/web-core/package.json
@@ -30,7 +30,7 @@
},
"devDependencies": {
"@types/lodash-es": "^4.17.12",
- "@types/novnc__novnc": "^1.3.5",
+ "@types/novnc__novnc": "^1.5.0",
"@vue/tsconfig": "^0.5.1",
"pinia": "^2.1.7",
"vue": "^3.4.13",
diff --git a/yarn.lock b/yarn.lock
index e45463231b8..bf520a381c2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4305,10 +4305,10 @@
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901"
integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
-"@types/novnc__novnc@^1.3.5":
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/@types/novnc__novnc/-/novnc__novnc-1.3.5.tgz#af41a2fd01fc50e40306d1e62d44a0035e7fad25"
- integrity sha512-iMYzwgNDVmSlkqTKh6tkz25Tir2i2h1Jlhja0e6ycL3GPP+HCuhPA3uzZrVLrgKUEj1RaDhI3KGMPI47bV0jQw==
+"@types/novnc__novnc@^1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@types/novnc__novnc/-/novnc__novnc-1.5.0.tgz#5f58687f0fa6591b75e91eb75237520da440dbb4"
+ integrity sha512-9DrDJK1hUT6Cbp4t03IsU/DsR6ndnIrDgZVrzITvspldHQ7n81F3wUDfq89zmPM3wg4GErH11IQa0QuTgLMf+w==
"@types/ps-tree@^1.1.2":
version "1.1.6"