84 lines
1.9 KiB
TypeScript
84 lines
1.9 KiB
TypeScript
// Copyright (c) 2022 Tailscale Inc & AUTHORS All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
/**
|
|
* @fileoverview Type definitions for types exported by the wasm_js.go Go
|
|
* module. Not actually a .d.ts file so that we can use enums from it in
|
|
* esbuild's simplified TypeScript compiler (see https://github.com/evanw/esbuild/issues/2298#issuecomment-1146378367)
|
|
*/
|
|
|
|
declare global {
|
|
function newIPN(config: IPNConfig): IPN
|
|
|
|
interface IPN {
|
|
run(callbacks: IPNCallbacks): void
|
|
login(): void
|
|
logout(): void
|
|
ssh(
|
|
host: string,
|
|
writeFn: (data: string) => void,
|
|
setReadFn: (readFn: (data: string) => void) => void,
|
|
rows: number,
|
|
cols: number,
|
|
onDone: () => void
|
|
): void
|
|
}
|
|
|
|
interface IPNStateStorage {
|
|
setState(id: string, value: string): void
|
|
getState(id: string): string
|
|
}
|
|
|
|
type IPNConfig = {
|
|
stateStorage?: IPNStateStorage
|
|
}
|
|
|
|
type IPNCallbacks = {
|
|
notifyState: (state: IPNState) => void
|
|
notifyNetMap: (netMapStr: string) => void
|
|
notifyBrowseToURL: (url: string) => void
|
|
notifyPanicRecover: (err: string) => void
|
|
}
|
|
|
|
type IPNNetMap = {
|
|
self: IPNNetMapSelfNode
|
|
peers: IPNNetMapPeerNode[]
|
|
}
|
|
|
|
type IPNNetMapNode = {
|
|
name: string
|
|
addresses: string[]
|
|
machineKey: string
|
|
nodeKey: string
|
|
}
|
|
|
|
type IPNNetMapSelfNode = IPNNetMapNode & {
|
|
machineStatus: IPNMachineStatus
|
|
}
|
|
|
|
type IPNNetMapPeerNode = IPNNetMapNode & {
|
|
online?: boolean
|
|
tailscaleSSHEnabled: boolean
|
|
}
|
|
}
|
|
|
|
/** Mirrors values from ipn/backend.go */
|
|
export const enum IPNState {
|
|
NoState = 0,
|
|
InUseOtherUser = 1,
|
|
NeedsLogin = 2,
|
|
NeedsMachineAuth = 3,
|
|
Stopped = 4,
|
|
Starting = 5,
|
|
Running = 6,
|
|
}
|
|
|
|
/** Mirrors values from MachineStatus in tailcfg.go */
|
|
export const enum IPNMachineStatus {
|
|
MachineUnknown = 0,
|
|
MachineUnauthorized = 1,
|
|
MachineAuthorized = 2,
|
|
MachineInvalid = 3,
|
|
}
|