@cmusei/console-forge 0.19.0 → 0.20.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.
@@ -5,6 +5,8 @@ import { ConsoleToolbarComponentBase } from '../../models/console-toolbar-compon
5
5
  import { ConsolePowerRequest } from '../../models/console-power-request';
6
6
  import { ConsoleComponentNetworkConfig } from '../../models/console-component-network-config';
7
7
  import { ConsoleConnectionStatus } from '../../models/console-connection-status';
8
+ import { ConsoleNetworkConnectionRequest } from '../../models/console-network-connection-request';
9
+ import { ConsoleNetworkDisconnectionRequest } from '../../models/console-network-disconnection-request';
8
10
  import * as i0 from "@angular/core";
9
11
  export declare class ConsoleComponent implements OnDestroy {
10
12
  autoConnect: import("@angular/core").InputSignal<boolean>;
@@ -18,8 +20,8 @@ export declare class ConsoleComponent implements OnDestroy {
18
20
  consoleRecorded: import("@angular/core").OutputEmitterRef<Blob>;
19
21
  ctrlAltDelSent: import("@angular/core").OutputEmitterRef<void>;
20
22
  localClipboardUpdated: import("@angular/core").OutputEmitterRef<ClipboardItem>;
21
- networkConnectionRequested: import("@angular/core").OutputEmitterRef<string>;
22
- networkDisconnectRequested: import("@angular/core").OutputEmitterRef<void>;
23
+ networkConnectionRequested: import("@angular/core").OutputEmitterRef<ConsoleNetworkConnectionRequest>;
24
+ networkDisconnectRequested: import("@angular/core").OutputEmitterRef<ConsoleNetworkDisconnectionRequest | undefined>;
23
25
  powerRequestSent: import("@angular/core").OutputEmitterRef<ConsolePowerRequest>;
24
26
  reconnectRequest: import("@angular/core").OutputEmitterRef<ConsoleComponentConfig>;
25
27
  screenshotCopied: import("@angular/core").OutputEmitterRef<Blob>;
@@ -1,9 +1,11 @@
1
1
  import { Type } from '@angular/core';
2
2
  import { ConsoleClientService } from '../../services/console-clients/console-client.service';
3
+ import { ConsoleComponentNetworkConfig } from '../../models/console-component-network-config';
3
4
  import { ConsoleToolbarContext } from '../../models/console-toolbar-context';
4
5
  import { ConsoleToolbarComponentBase } from '../../models/console-toolbar-component-base';
6
+ import { ConsoleNetworkConnectionRequest } from '../../models/console-network-connection-request';
7
+ import { ConsoleNetworkDisconnectionRequest } from '../../models/console-network-disconnection-request';
5
8
  import { ConsolePowerRequest } from '../../models/console-power-request';
6
- import { ConsoleComponentNetworkConfig } from '../../models/console-component-network-config';
7
9
  import * as i0 from "@angular/core";
8
10
  export declare class ConsoleToolbarComponent {
9
11
  consoleClient: import("@angular/core").InputSignal<ConsoleClientService>;
@@ -14,8 +16,8 @@ export declare class ConsoleToolbarComponent {
14
16
  canvasRecordingFinished: import("@angular/core").OutputEmitterRef<Blob>;
15
17
  ctrlAltDelSent: import("@angular/core").OutputEmitterRef<void>;
16
18
  keyboardInputSent: import("@angular/core").OutputEmitterRef<string>;
17
- networkConnectionRequested: import("@angular/core").OutputEmitterRef<string>;
18
- networkDisconnectRequested: import("@angular/core").OutputEmitterRef<void>;
19
+ networkConnectionRequested: import("@angular/core").OutputEmitterRef<ConsoleNetworkConnectionRequest>;
20
+ networkDisconnectRequested: import("@angular/core").OutputEmitterRef<ConsoleNetworkDisconnectionRequest | undefined>;
19
21
  powerRequestSent: import("@angular/core").OutputEmitterRef<ConsolePowerRequest>;
20
22
  reconnectRequestSent: import("@angular/core").OutputEmitterRef<void>;
21
23
  screenshotCopied: import("@angular/core").OutputEmitterRef<Blob>;
@@ -25,10 +27,12 @@ export declare class ConsoleToolbarComponent {
25
27
  private readonly canvasRecorder;
26
28
  private readonly clipboardService;
27
29
  private readonly config;
30
+ private readonly fullscreen;
28
31
  private readonly logger;
29
32
  private readonly userSettings;
30
33
  private readonly window;
31
34
  private readonly activeConsoleRecording;
35
+ private readonly isConnected;
32
36
  private readonly isManualConsoleReconnectAvailable;
33
37
  protected readonly toolbarComponentContext: ConsoleToolbarContext;
34
38
  protected readonly toolbarComponent: import("@angular/core").Signal<Type<ConsoleToolbarComponentBase>>;
@@ -36,7 +40,8 @@ export declare class ConsoleToolbarComponent {
36
40
  protected handleCopyScreenshot(): Promise<void>;
37
41
  protected handleFullscreen(): Promise<void>;
38
42
  protected handleKeyboardInputSend(text: string): Promise<void>;
39
- protected handleNetworkConnectionRequest(networkName: string): void;
43
+ protected handleNetworkConnectionRequest(request: ConsoleNetworkConnectionRequest): void;
44
+ protected handleNetworkDisconnectionRequest(request?: ConsoleNetworkDisconnectionRequest): void;
40
45
  protected handleReconnectRequestSent(): Promise<void>;
41
46
  protected handleRecordScreenStart(): void;
42
47
  protected handleRecordScreenStop(): Promise<Blob>;
@@ -5,6 +5,7 @@ import { ConsoleForgeConfig } from '../../config/console-forge-config';
5
5
  import { ConsolePowerRequest } from '../../models/console-power-request';
6
6
  import { ConsoleToolbarPosition } from '../../models/console-toolbar-position';
7
7
  import { ConsoleToolbarTheme } from '../../models/console-toolbar-theme';
8
+ import { ConsoleNetworkConnectionRequest } from '../../models/console-network-connection-request';
8
9
  import * as i0 from "@angular/core";
9
10
  export declare class ConsoleToolbarDefaultComponent implements AfterViewInit, ConsoleToolbarComponentBase {
10
11
  consoleContext: import("@angular/core").InputSignal<ConsoleToolbarContext>;
@@ -14,19 +15,18 @@ export declare class ConsoleToolbarDefaultComponent implements AfterViewInit, Co
14
15
  protected isPowerDialogOpen: boolean;
15
16
  protected isSettingsDialogOpen: boolean;
16
17
  protected readonly keyboardInputText: import("@angular/core").ModelSignal<string>;
17
- protected readonly selectedNetworkForChange: import("@angular/core").ModelSignal<string | undefined>;
18
18
  protected readonly cfConfig: ConsoleForgeConfig;
19
19
  private readonly clipboardService;
20
20
  protected readonly clipboardTextInput: import("@angular/core").Signal<ElementRef<any> | undefined>;
21
21
  private readonly picoCssService;
22
22
  private readonly hostElement;
23
- private readonly currentNetwork;
24
23
  constructor();
25
24
  ngAfterViewInit(): Promise<void>;
26
25
  protected handleChangeToolbarPosition(position: ConsoleToolbarPosition): void;
27
26
  protected handleClipboardDialogOpenClose(isOpen: boolean): void;
28
27
  protected handleClipboardCopyLastText(text: string): void;
29
- protected handleNetworkChangeRequested(networkName?: string): void;
28
+ protected handleNetworkChangeRequested(request: ConsoleNetworkConnectionRequest): void;
29
+ protected handleNetworkDisconnectAllRequested(): void;
30
30
  protected handleNetworkDialogOpenClose(isOpen: boolean): void;
31
31
  protected handleRecordToggle(): void;
32
32
  protected handleSendClipboardText(event: Event, text: string): Promise<void>;
@@ -35,8 +35,9 @@ export declare class ConsoleToolbarDefaultComponent implements AfterViewInit, Co
35
35
  protected handleSendPowerRequest(request: ConsolePowerRequest): Promise<void>;
36
36
  protected handleSettingsDialogOpenClose(isOpen: boolean): void;
37
37
  protected handleSettingsAllowLocalClipboardWrite(allow: boolean): void;
38
- protected handleSettingsPreserveAspectRatioChange(preserveAspectRatioOnScale: boolean): void;
38
+ protected handleSettingsAttemptRemoteSessionResize(attempt: boolean): void;
39
+ protected handleSettingsScaleToContainerHostSize(scaleToCanvasHostSize: boolean): void;
39
40
  protected handleToolbarThemeChange(theme?: ConsoleToolbarTheme): void;
40
41
  static ɵfac: i0.ɵɵFactoryDeclaration<ConsoleToolbarDefaultComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<ConsoleToolbarDefaultComponent, "cf-console-toolbar-default", never, { "consoleContext": { "alias": "consoleContext"; "required": true; "isSignal": true; }; "keyboardInputText": { "alias": "keyboardInputText"; "required": false; "isSignal": true; }; "selectedNetworkForChange": { "alias": "selectedNetworkForChange"; "required": false; "isSignal": true; }; }, { "keyboardInputText": "keyboardInputTextChange"; "selectedNetworkForChange": "selectedNetworkForChangeChange"; }, never, never, true, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConsoleToolbarDefaultComponent, "cf-console-toolbar-default", never, { "consoleContext": { "alias": "consoleContext"; "required": true; "isSignal": true; }; "keyboardInputText": { "alias": "keyboardInputText"; "required": false; "isSignal": true; }; }, { "keyboardInputText": "keyboardInputTextChange"; }, never, never, true, never>;
42
43
  }
@@ -1,4 +1,5 @@
1
1
  export interface ConsoleComponentNetworkConfig {
2
- available: string[];
3
- current?: string;
2
+ networks: string[];
3
+ nics: string[];
4
+ currentConnections: Record<string, string>;
4
5
  }
@@ -0,0 +1,4 @@
1
+ export interface ConsoleNetworkConnectionRequest {
2
+ network: string;
3
+ nic: string;
4
+ }
@@ -0,0 +1,7 @@
1
+ export interface ConsoleNetworkDisconnectionRequest {
2
+ /**
3
+ * The which should be disconnected. If this value is falsey, interpret as
4
+ * a request to disconnect all NICs.
5
+ */
6
+ nic?: string;
7
+ }
@@ -27,6 +27,11 @@ export interface ConsoleSupportedFeatures {
27
27
  * of the machine, so we usually have to rely on the protocol-specific service to tell us whether the feature is enabled (see our VNC client, wrapping noVnc, for an example)
28
28
  */
29
29
  powerManagement: boolean;
30
+ /**
31
+ * NoVNC seems to have a quirk that causes it to lose proper mouse tracking after leaving fullscreen. We're working around this by requesting a reconnection of the console
32
+ * upon exiting. VMWare doesn't seem to need this.
33
+ */
34
+ requireReconnectOnExitingFullscreen?: boolean;
30
35
  /**
31
36
  * Whether the remote console protocol/library supports a "view/read"-only canvas. If it doesn't, we have to do some CSS/JS hacking in the console component, so
32
37
  * we prefer the client lib/protocol's implementation if we can get it.
@@ -3,6 +3,8 @@ import { CanvasRecording } from "../services/canvas-recorder/canvas-recording";
3
3
  import { ConsolePowerRequest } from "./console-power-request";
4
4
  import { ConsoleSupportedFeatures } from "./console-supported-features";
5
5
  import { ConsoleComponentNetworkConfig } from "./console-component-network-config";
6
+ import { ConsoleNetworkConnectionRequest } from "./console-network-connection-request";
7
+ import { ConsoleNetworkDisconnectionRequest } from "./console-network-disconnection-request";
6
8
  import { UserSettingsService } from "../services/user-settings.service";
7
9
  export interface ConsoleToolbarContext {
8
10
  clipboard: {
@@ -22,8 +24,8 @@ export interface ConsoleToolbarContext {
22
24
  };
23
25
  networks: {
24
26
  config: Signal<ConsoleComponentNetworkConfig | undefined>;
25
- connectionRequested(networkName: string): void;
26
- disconnectRequested(): void;
27
+ connectionRequested(request: ConsoleNetworkConnectionRequest): void;
28
+ disconnectRequested(request: ConsoleNetworkDisconnectionRequest): void;
27
29
  };
28
30
  state: {
29
31
  activeConsoleRecording: Signal<CanvasRecording | undefined>;
@@ -3,7 +3,8 @@ import { ConsoleToolbarTheme } from "./console-toolbar-theme";
3
3
  export interface ConsoleUserSettings {
4
4
  console: {
5
5
  allowCopyToLocalClipboard: boolean;
6
- preserveAspectRatioOnScale: boolean;
6
+ attemptRemoteSessionResize: boolean;
7
+ scaleToCanvasHostSize: boolean;
7
8
  };
8
9
  toolbar: {
9
10
  dockTo: ConsoleToolbarPosition;
@@ -11,12 +11,10 @@ export interface ConsoleClientService {
11
11
  readonly supportedFeatures: Signal<ConsoleSupportedFeatures>;
12
12
  connect(url: string, options: ConsoleConnectionOptions): Promise<void>;
13
13
  disconnect(): Promise<void>;
14
- handlePostFullscreenChange(): void;
15
14
  sendClipboardText(text: string): Promise<void>;
16
15
  sendCtrlAltDelete(): Promise<void>;
17
16
  sendKeyboardInput(text: string): Promise<void>;
18
17
  sendPowerRequest(request: ConsolePowerRequest): Promise<void>;
19
- setPreserveAspectRatioOnScale(preserve: boolean): Promise<void>;
20
18
  setIsViewOnly(isViewOnly: boolean): Promise<void>;
21
19
  /**
22
20
  * Automatically called by the console component on destroy. Disconnect any clients/websocket usage here
@@ -22,19 +22,19 @@ export declare class VmWareConsoleClientService implements ConsoleClientService
22
22
  readonly supportedFeatures: import("@angular/core").Signal<ConsoleSupportedFeatures>;
23
23
  private readonly _needsCanvasSizeUpdate;
24
24
  private readonly _needsCanvasSizeUpdateSub;
25
+ constructor();
25
26
  connect(url: string, options: ConsoleConnectionOptions): Promise<void>;
26
27
  disconnect(): Promise<void>;
27
- handlePostFullscreenChange(): void;
28
28
  sendClipboardText(text: string): Promise<void>;
29
29
  sendCtrlAltDelete(): Promise<void>;
30
30
  sendKeyboardInput(text: string): Promise<void>;
31
31
  sendPowerRequest(request: ConsolePowerRequest): Promise<void>;
32
32
  setIsViewOnly(isViewOnly: boolean): Promise<void>;
33
- setPreserveAspectRatioOnScale(scaleToContainerSize: boolean): Promise<void>;
34
33
  dispose(): Promise<void>;
35
34
  private doPostConnectionConfig;
36
35
  private doPostDisconnectionConfig;
37
36
  private handleWindowSizeChange;
37
+ private updateFromUserSettings;
38
38
  static ɵfac: i0.ɵɵFactoryDeclaration<VmWareConsoleClientService, never>;
39
39
  static ɵprov: i0.ɵɵInjectableDeclaration<VmWareConsoleClientService>;
40
40
  }
@@ -18,19 +18,19 @@ export declare class VncConsoleClientService implements ConsoleClientService {
18
18
  private readonly logger;
19
19
  private readonly userSettings;
20
20
  private noVncClient?;
21
+ constructor();
21
22
  connect(url: string, options: ConsoleConnectionOptions): Promise<void>;
22
23
  disconnect(): Promise<void>;
23
24
  dispose(): Promise<void>;
24
- handlePostFullscreenChange(): void;
25
25
  sendClipboardText(text: string): Promise<void>;
26
26
  sendCtrlAltDelete(): Promise<void>;
27
27
  sendKeyboardInput(text: string): Promise<void>;
28
28
  sendPowerRequest(request: ConsolePowerRequest): Promise<void>;
29
29
  setIsViewOnly(isViewOnly: boolean): Promise<void>;
30
- setPreserveAspectRatioOnScale(preserve: boolean): Promise<void>;
31
30
  private doPreConnectionConfig;
32
31
  private doPostConnectionConfig;
33
32
  private handleDisconnect;
33
+ private updateFromUserSettings;
34
34
  static ɵfac: i0.ɵɵFactoryDeclaration<VncConsoleClientService, never>;
35
35
  static ɵprov: i0.ɵɵInjectableDeclaration<VncConsoleClientService>;
36
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cmusei/console-forge",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/cmu-sei/console-forge.git"
package/public-api.d.ts CHANGED
@@ -8,6 +8,8 @@ export * from "./lib/models/console-connection-options";
8
8
  export * from "./lib/models/console-connection-status";
9
9
  export * from "./lib/models/console-credentials";
10
10
  export * from "./lib/models/console-component-network-config";
11
+ export * from "./lib/models/console-network-connection-request";
12
+ export * from "./lib/models/console-network-disconnection-request";
11
13
  export * from "./lib/models/console-power-request";
12
14
  export * from "./lib/models/console-supported-features";
13
15
  export * from "./lib/models/console-toolbar-position";