353 lines
8.3 KiB
TypeScript
353 lines
8.3 KiB
TypeScript
export interface CtrlAttrs {
|
|
[key: string]: CtrlAttr;
|
|
}
|
|
|
|
export type SimulationCommands =
|
|
| 'start'
|
|
| 'pause'
|
|
| 'resume'
|
|
| 'clear'
|
|
| 'end'
|
|
| 'add'
|
|
| 'test-mode';
|
|
|
|
export type DeviceCommands = 'start_tunnel' | 'stop_tunnel' | 'shutdown' | 'reboot';
|
|
|
|
export type TunnelCommands =
|
|
| 'start'
|
|
| 'start-watcher'
|
|
| 'end-watcher'
|
|
| 'shutdown'
|
|
| 'restart'
|
|
| 'clear'
|
|
| 'cancel';
|
|
|
|
export interface CtrlAttr {
|
|
name: string;
|
|
cmd: string;
|
|
cmdClass: string;
|
|
icon: string;
|
|
cnfrm: boolean;
|
|
delay: number;
|
|
}
|
|
|
|
export interface DevCtrlAttr {
|
|
name: string;
|
|
cmd: DeviceCommands;
|
|
cmdClass: 'device_control';
|
|
icon: string;
|
|
cnfrm: boolean;
|
|
delay: number;
|
|
}
|
|
|
|
export interface LocationQueue {
|
|
[key: string]: LocationMark;
|
|
}
|
|
|
|
interface LocationMark {
|
|
loc_id: string;
|
|
latitude: number | undefined | null;
|
|
longitude: number | undefined | null;
|
|
address?: string | undefined | null;
|
|
delay?: number | undefined | null;
|
|
start: string | undefined | null;
|
|
end?: string | undefined | null;
|
|
}
|
|
|
|
// SERVER TO CLIENT
|
|
|
|
export interface ServerToClientEvents {
|
|
noArg: () => void;
|
|
withAck: (a: string, callback: (b: number) => void) => void;
|
|
simulation_status: (c: SimulationStatus) => void;
|
|
status: (d: StatusUpdate) => void;
|
|
device_status: (d: DeviceStatus) => void;
|
|
error: (data: ErrorFull) => void;
|
|
message: (e: string) => void;
|
|
icloud_2fa_request: (callback: (e: number) => void) => void;
|
|
fmf_update: (d: FindMyUpdate) => void;
|
|
}
|
|
|
|
export interface SimulationStatus {
|
|
loc_id: string;
|
|
status: boolean;
|
|
latitude: number;
|
|
longitude: number;
|
|
start: string;
|
|
end?: string;
|
|
next_move?: number;
|
|
}
|
|
|
|
export interface StatusUpdate {
|
|
connected_clients: { [key: string]: string };
|
|
current_location: {
|
|
loc_id: string;
|
|
latitude: number | undefined | null;
|
|
longitude: number | undefined | null;
|
|
start?: string | undefined | null;
|
|
};
|
|
device_name: string | undefined | null;
|
|
fmf_location: FindMyUpdate | undefined | null;
|
|
icloud: {
|
|
consumer_queue: number | undefined | null;
|
|
consumer_task: string | undefined | null;
|
|
monitor_enabled: boolean;
|
|
monitor_task: string | undefined | null;
|
|
monitor_running: boolean;
|
|
};
|
|
next_move?: number | undefined | null;
|
|
set_location_enabled: boolean;
|
|
simulation_queue: {
|
|
active: boolean;
|
|
data: {
|
|
[key: string]: LocationMark;
|
|
};
|
|
order: string[];
|
|
state: string | undefined | null;
|
|
worker_task: string | undefined | null;
|
|
};
|
|
test_mode: boolean;
|
|
tunnel: string | undefined | null;
|
|
tunnel_watcher_running: boolean;
|
|
device_count?: number | undefined | null;
|
|
udid?: string | null;
|
|
product_version?: string | null | undefined;
|
|
phone_number?: string | null | undefined;
|
|
developer_mode_enabled?: boolean | undefined | null;
|
|
ddi_mounted?: boolean;
|
|
rsd_address?: string | null | undefined;
|
|
rsd_port?: number | undefined | null;
|
|
lockdown_trusted_port?: number | undefined | null;
|
|
lockdown_untrusted_port?: number | undefined | null;
|
|
lockdown_trusted_reachable?: boolean | undefined | null;
|
|
lockdown_untrusted_reachable?: boolean | undefined | null;
|
|
dtservicehub_reachable?: boolean | undefined | null;
|
|
}
|
|
|
|
interface DeviceStatus {
|
|
device_connected: boolean;
|
|
device_count: number;
|
|
udid?: string | null;
|
|
device_name?: string | null;
|
|
product_version?: string | null;
|
|
phone_number?: string | null;
|
|
developer_mode_enabled?: boolean;
|
|
ddi_mounted?: boolean;
|
|
rsd_address?: string | null;
|
|
rsd_port?: number;
|
|
lockdown_trusted_port?: number;
|
|
lockdown_untrusted_port?: number;
|
|
lockdown_trusted_reachable?: boolean;
|
|
lockdown_untrusted_reachable?: boolean;
|
|
dtservicehub_reachable?: boolean;
|
|
}
|
|
|
|
export interface ErrorFull {
|
|
type: string;
|
|
error: string;
|
|
}
|
|
|
|
export interface FindMyUpdate {
|
|
altitude: number;
|
|
batteryLevel: number;
|
|
deviceDisplayName: string;
|
|
deviceStatus: number;
|
|
horizontalAccuracy: number;
|
|
latitude: number;
|
|
longitude: number;
|
|
name: string;
|
|
timeStamp: number;
|
|
verticalAccuracy: number;
|
|
}
|
|
|
|
// END SERVER TO CLIENT
|
|
|
|
// CLIENT TO SERVER
|
|
|
|
export interface ClientToServerEvents {
|
|
message: (e: string, callback: (b: boolean, r: string) => void) => void;
|
|
request_update: (callback: (response: StatusUpdate) => void) => void;
|
|
simulation_control: (
|
|
args: {
|
|
command: SimulationCommands;
|
|
latitude?: number | null | undefined;
|
|
longitude?: number | null | undefined;
|
|
delay?: number | undefined;
|
|
},
|
|
callback: (response: SimulationControlResponse) => void,
|
|
) => void;
|
|
device_control: (
|
|
args: {
|
|
command: DeviceCommands;
|
|
delay?: number;
|
|
},
|
|
callback?: (response: DeviceControlResponse) => void,
|
|
) => void;
|
|
tunnel_control: (
|
|
args: {
|
|
command: TunnelCommands;
|
|
delay?: number;
|
|
},
|
|
callback?: (response: DeviceControlResponse) => void,
|
|
) => void;
|
|
icloud_monitor_control: (
|
|
args: {
|
|
command: string;
|
|
},
|
|
callback?: (response: iCloudMonitorResponse) => void,
|
|
) => void;
|
|
}
|
|
|
|
export interface SimulationControlResponse {
|
|
status: string;
|
|
command: SimulationCommands;
|
|
loc_id: string;
|
|
message?: string | undefined;
|
|
latitude?: number | undefined | null;
|
|
longitude?: number | undefined | null;
|
|
delay?: number | undefined | null;
|
|
start_time?: string | undefined | null;
|
|
end_time?: string | undefined | null;
|
|
}
|
|
|
|
interface DeviceControlResponse {
|
|
status: string;
|
|
command: DeviceCommands;
|
|
delay?: number;
|
|
}
|
|
|
|
export interface iCloudMonitorResponse {
|
|
status: string;
|
|
command: string;
|
|
icloud_monitor_enabled?: boolean | undefined | null;
|
|
icloud_monitor_running?: boolean | undefined | null;
|
|
message?: string | undefined | null;
|
|
}
|
|
|
|
// END CLIENT TO SERVER
|
|
|
|
export interface Meta {
|
|
totalCount: number;
|
|
}
|
|
|
|
export interface coords {
|
|
lat: number;
|
|
lng: number;
|
|
}
|
|
|
|
import type { OpenStreetMapProvider } from 'leaflet-geosearch';
|
|
export interface SearchControlProps {
|
|
provider: OpenStreetMapProvider;
|
|
showMarker: boolean;
|
|
autoClose: boolean;
|
|
updateMap: boolean;
|
|
showPopup: boolean;
|
|
style: 'button' | 'bar';
|
|
acceptAutoLoad: boolean;
|
|
autoComplete: boolean;
|
|
autoCompleteDelay: number;
|
|
retainZoomLevel: boolean;
|
|
animateZoom: boolean;
|
|
keepResult: boolean;
|
|
}
|
|
|
|
export interface CurrentLocation {
|
|
loc_id: string;
|
|
latitude: number | null | undefined;
|
|
longitude: number | null | undefined;
|
|
// start_time?: string | null | undefined;
|
|
// end_time?: string | null | undefined
|
|
next_move?: number | null | undefined;
|
|
}
|
|
|
|
export interface NextLocation {
|
|
loc_id: string;
|
|
latitude: number;
|
|
longitude: number;
|
|
time_at_location?: number | null;
|
|
}
|
|
|
|
export interface NominatimReverseResponse {
|
|
place_id: number;
|
|
licence: string;
|
|
osm_type: string;
|
|
osm_id: number;
|
|
lat: string;
|
|
lon: string;
|
|
class: string;
|
|
type: string;
|
|
place_rank: number;
|
|
importance: number;
|
|
addresstype: string;
|
|
name: string;
|
|
display_name: string;
|
|
address: NominatimAddress;
|
|
boundingbox: string[];
|
|
}
|
|
|
|
export interface NominatimAddress {
|
|
house_number: string;
|
|
road: string;
|
|
village?: string;
|
|
city?: string;
|
|
county: string;
|
|
state: string;
|
|
'ISO3166-2-lvl4': string;
|
|
postcode: string;
|
|
country: string;
|
|
country_code: string;
|
|
}
|
|
|
|
export interface routeSegments {
|
|
fromWaypoint: number;
|
|
toWaypoint: number;
|
|
distanceMeters: number;
|
|
timeSeconds: number;
|
|
toCoordinates: LatLng;
|
|
}
|
|
|
|
export interface RoutesSet {
|
|
[key: string]: RouteSet;
|
|
}
|
|
|
|
export interface LatLng {
|
|
lat: number | null | undefined;
|
|
lng: number | null | undefined;
|
|
}
|
|
|
|
export interface routeDirections {
|
|
dirIndex: number;
|
|
coordinateIndex: number;
|
|
text: string;
|
|
distance: number;
|
|
time: number;
|
|
coordinates: LatLng | null | undefined;
|
|
}
|
|
|
|
export interface RouteSet {
|
|
start: [number, number] | [null, null] | [undefined, undefined] | null | undefined;
|
|
end: [number, number] | [null, null] | [undefined, undefined] | null | undefined;
|
|
wayPoints?: [number, number][] | [null, null] | [undefined, undefined] | null | undefined;
|
|
}
|
|
|
|
// TypeScript Interface for Reverse Geocoding Response
|
|
export interface NominatimResponse {
|
|
house_number?: string | null | undefined;
|
|
road: string;
|
|
neighbourhood?: string | null | undefined;
|
|
suburb?: string | null | undefined;
|
|
county: string;
|
|
city?: string | null | undefined;
|
|
village?: string | null | undefined;
|
|
state: string;
|
|
'ISO3166-2-lvl4': string;
|
|
postcode: string;
|
|
country: string;
|
|
country_code: string;
|
|
}
|
|
|
|
export interface NominatimRequest {
|
|
latitude: number;
|
|
longitude: number;
|
|
}
|