| import { StatusService, StatusServiceClient } from './status'; |
| |
| export * from './status'; |
| |
| /** |
| * GetStatusService returns a StatusService implementation, either the default production one, or |
| * an injected mock. We use the mock client rather than fetchMock to avoid testing around |
| * implementation details of the Twirp generated client/server protocol. |
| */ |
| export function GetStatusService(): StatusService { |
| const w = window as any; |
| // We use a lazy window property to keep our client, so it is truly global (to support client |
| // injection), and initialized exactly once, rather than per import of this module. |
| if (!w.rpcClient) { |
| const host = `${window.location.protocol}//${window.location.host}`; |
| w.rpcClient = new StatusServiceClient(host, window.fetch.bind(window)); |
| } |
| return w.rpcClient; |
| } |
| |
| /** |
| * MockRPCsForTesting switches this module to use the given StatusService for |
| * testing purposes. |
| */ |
| export function MockRPCsForTesting(repl: StatusService) { |
| (<any>window).rpcClient = repl; |
| } |