| b69ab31 | | | 1 | /** |
| b69ab31 | | | 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. |
| b69ab31 | | | 3 | * |
| b69ab31 | | | 4 | * This source code is licensed under the MIT license found in the |
| b69ab31 | | | 5 | * LICENSE file in the root directory of this source tree. |
| b69ab31 | | | 6 | */ |
| b69ab31 | | | 7 | |
| b69ab31 | | | 8 | import type {Disposable, MessageBusStatus} from './types'; |
| b69ab31 | | | 9 | |
| b69ab31 | | | 10 | export type {MessageBusStatus}; |
| b69ab31 | | | 11 | |
| b69ab31 | | | 12 | /* |
| b69ab31 | | | 13 | * Abstraction for the bidirectional communication channel between the |
| b69ab31 | | | 14 | * ISL UI and the "business logic" that talks to Sapling, Watchman, etc. |
| b69ab31 | | | 15 | * |
| b69ab31 | | | 16 | * Every platform (BrowserPlatform VSCodeWebviewPlatform, etc) will have a single MessageBus instance. |
| b69ab31 | | | 17 | */ |
| b69ab31 | | | 18 | export interface MessageBus { |
| b69ab31 | | | 19 | onMessage(handler: (event: MessageEvent) => void | Promise<void>): Disposable; |
| b69ab31 | | | 20 | onChangeStatus(handler: (newStatus: MessageBusStatus) => void | Promise<void>): Disposable; |
| b69ab31 | | | 21 | postMessage(message: string): void; |
| b69ab31 | | | 22 | |
| b69ab31 | | | 23 | /** Force disconnect (for debugging), for supported implementations. */ |
| b69ab31 | | | 24 | forceDisconnect?(durationMs?: number): void; |
| b69ab31 | | | 25 | } |