They had fallen behind the app (Measure now was missing): they now carry the scan, stop and extend actions and the types as they are.
- commit
- 1ab62381ae9c6420af4d6a7f71ca721dacdd9973
- parent
- e13385562eec65051385ecf4d432559ee507c389
- author
- FelineStateMachine <226808055+FelineStateMachine@users.noreply.github.com>
- kind
- chore risk score 2.4 of 3, Jev's estimate
| M | frontend/ | 17 | +- |
| M | frontend/ | 28 | +- |
| M | frontend/ | 642 | ++++++++++++++++++++++++++---- |
@@ -2,8 +2,9 @@
22 // This file is automatically generated. DO NOT EDIT33 import {main} from '../models';44 import {dvr} from '../models';5-import {stream} from '../models';5+import {time} from '../models';66 import {service} from '../models';7+import {stream} from '../models';78 import {store} from '../models';89 import {weather} from '../models';910 @@ -17,18 +18,18 @@ export function DeleteRecording(arg1:string):Promise<void>;
1718 1819 export function DeleteRule(arg1:string):Promise<void>;1920 21+export function ExtendRecording(arg1:string,arg2:number):Promise<time.Time>;22+2023 export function Log(arg1:string,arg2:string):Promise<void>;2124 2225 export function MarkWatched(arg1:string,arg2:boolean):Promise<void>;2326 27+export function Measure():Promise<service.SweepStatus>;28+2429 export function OpenURL(arg1:string):Promise<void>;2530 2631 export function PlayRecording(arg1:string,arg2:number):Promise<stream.Playback>;2732 28-export function Preview(arg1:string):Promise<service.Snapshot>;29-30-export function Profile(arg1:number,arg2:number,arg3:string):Promise<service.PathProfile>;31-3233 export function Record(arg1:dvr.Request):Promise<dvr.Rule>;3334 3435 export function SaveProgress(arg1:string,arg2:number,arg3:number):Promise<void>;@@ -37,12 +38,18 @@ export function SaveSettings(arg1:store.Settings):Promise<main.Boot>;
3738 3839 export function Scan(arg1:boolean):Promise<service.Snapshot>;3940 41+export function ScanChannels():Promise<service.TunerInfo>;42+4043 export function SetConfig(arg1:service.Config):Promise<service.Config>;4144 4245 export function SetDVRPrefs(arg1:dvr.Prefs):Promise<dvr.Prefs>;4346 4447 export function SetZoom(arg1:number):Promise<void>;4548 49+export function Signal():Promise<service.SignalReport>;50+51+export function StopRecording(arg1:string):Promise<void>;52+4653 export function StopTV():Promise<void>;4754 4855 export function TestServer(arg1:string,arg2:string):Promise<service.Info>;@@ -22,6 +22,10 @@ export function DeleteRule(arg1) {
2222 return window['go']['main']['App']['DeleteRule'](arg1);2323 }2424 25+export function ExtendRecording(arg1, arg2) {26+ return window['go']['main']['App']['ExtendRecording'](arg1, arg2);27+}28+2529 export function Log(arg1, arg2) {2630 return window['go']['main']['App']['Log'](arg1, arg2);2731 }@@ -30,6 +34,10 @@ export function MarkWatched(arg1, arg2) {
3034 return window['go']['main']['App']['MarkWatched'](arg1, arg2);3135 }3236 37+export function Measure() {38+ return window['go']['main']['App']['Measure']();39+}40+3341 export function OpenURL(arg1) {3442 return window['go']['main']['App']['OpenURL'](arg1);3543 }@@ -38,14 +46,6 @@ export function PlayRecording(arg1, arg2) {
3846 return window['go']['main']['App']['PlayRecording'](arg1, arg2);3947 }4048 41-export function Preview(arg1) {42- return window['go']['main']['App']['Preview'](arg1);43-}44-45-export function Profile(arg1, arg2, arg3) {46- return window['go']['main']['App']['Profile'](arg1, arg2, arg3);47-}48-4949 export function Record(arg1) {5050 return window['go']['main']['App']['Record'](arg1);5151 }@@ -62,6 +62,10 @@ export function Scan(arg1) {
6262 return window['go']['main']['App']['Scan'](arg1);6363 }6464 65+export function ScanChannels() {66+ return window['go']['main']['App']['ScanChannels']();67+}68+6569 export function SetConfig(arg1) {6670 return window['go']['main']['App']['SetConfig'](arg1);6771 }@@ -74,6 +78,14 @@ export function SetZoom(arg1) {
7478 return window['go']['main']['App']['SetZoom'](arg1);7579 }7680 81+export function Signal() {82+ return window['go']['main']['App']['Signal']();83+}84+85+export function StopRecording(arg1) {86+ return window['go']['main']['App']['StopRecording'](arg1);87+}88+7789 export function StopTV() {7890 return window['go']['main']['App']['StopTV']();7991 }@@ -81,12 +81,11 @@ export namespace dvr {
8181 image?: string;8282 channel: string;8383 callSign?: string;84- // Go type: time85- start: any;86- // Go type: time87- end: any;84+ start: time.Time;85+ end: time.Time;8886 status: string;8987 detail?: string;88+ until: time.Time;9089 sizeBytes?: number;9190 duration?: number;9291 position?: number;@@ -107,10 +106,11 @@ export namespace dvr {
107106 this.image = source["image"];108107 this.channel = source["channel"];109108 this.callSign = source["callSign"];110- this.start = this.convertValues(source["start"], null);111- this.end = this.convertValues(source["end"], null);109+ this.start = this.convertValues(source["start"], time.Time);110+ this.end = this.convertValues(source["end"], time.Time);112111 this.status = source["status"];113112 this.detail = source["detail"];113+ this.until = this.convertValues(source["until"], time.Time);114114 this.sizeBytes = source["sizeBytes"];115115 this.duration = source["duration"];116116 this.position = source["position"];@@ -151,8 +151,7 @@ export namespace dvr {
151151 kind: string;152152 channel: string;153153 callSign: string;154- // Go type: time155- start: any;154+ start: time.Time;156155 newOnly: boolean;157156 158157 static createFrom(source: any = {}) {@@ -164,7 +163,7 @@ export namespace dvr {
164163 this.kind = source["kind"];165164 this.channel = source["channel"];166165 this.callSign = source["callSign"];167- this.start = this.convertValues(source["start"], null);166+ this.start = this.convertValues(source["start"], time.Time);168167 this.newOnly = source["newOnly"];169168 }170169 @@ -196,12 +195,9 @@ export namespace dvr {
196195 seriesId?: string;197196 newOnly?: boolean;198197 image?: string;199- // Go type: time200- created: any;201- // Go type: time202- start: any;203- // Go type: time204- end: any;198+ created: time.Time;199+ start: time.Time;200+ end: time.Time;205201 subtitle?: string;206202 description?: string;207203 programId?: string;@@ -224,9 +220,9 @@ export namespace dvr {
224220 this.seriesId = source["seriesId"];225221 this.newOnly = source["newOnly"];226222 this.image = source["image"];227- this.created = this.convertValues(source["created"], null);228- this.start = this.convertValues(source["start"], null);229- this.end = this.convertValues(source["end"], null);223+ this.created = this.convertValues(source["created"], time.Time);224+ this.start = this.convertValues(source["start"], time.Time);225+ this.end = this.convertValues(source["end"], time.Time);230226 this.subtitle = source["subtitle"];231227 this.description = source["description"];232228 this.programId = source["programId"];@@ -389,12 +385,9 @@ export namespace guide {
389385 }390386 export class Guide {391387 lineup: string;392- // Go type: time393- start: any;394- // Go type: time395- end: any;396- // Go type: time397- fetched: any;388+ start: time.Time;389+ end: time.Time;390+ fetched: time.Time;398391 channels: Channel[];399392 programs: Record<string, Array<Program>>;400393 @@ -405,9 +398,9 @@ export namespace guide {
405398 constructor(source: any = {}) {406399 if ('string' === typeof source) source = JSON.parse(source);407400 this.lineup = source["lineup"];408- this.start = this.convertValues(source["start"], null);409- this.end = this.convertValues(source["end"], null);410- this.fetched = this.convertValues(source["fetched"], null);401+ this.start = this.convertValues(source["start"], time.Time);402+ this.end = this.convertValues(source["end"], time.Time);403+ this.fetched = this.convertValues(source["fetched"], time.Time);411404 this.channels = this.convertValues(source["channels"], Channel);412405 this.programs = this.convertValues(source["programs"], Array<Program>, true);413406 }@@ -431,10 +424,8 @@ export namespace guide {
431424 }432425 }433426 export class Program {434- // Go type: time435- start: any;436- // Go type: time437- end: any;427+ start: time.Time;428+ end: time.Time;438429 title: string;439430 episodeTitle?: string;440431 description?: string;@@ -456,8 +447,8 @@ export namespace guide {
456447 457448 constructor(source: any = {}) {458449 if ('string' === typeof source) source = JSON.parse(source);459- this.start = this.convertValues(source["start"], null);460- this.end = this.convertValues(source["end"], null);450+ this.start = this.convertValues(source["start"], time.Time);451+ this.end = this.convertValues(source["end"], time.Time);461452 this.title = source["title"];462453 this.episodeTitle = source["episodeTitle"];463454 this.description = source["description"];@@ -607,7 +598,7 @@ export namespace lineup {
607598 distanceKm: number;608599 bearingDeg: number;609600 band: string;610- signal: Record<string, reception.Estimate>;601+ signal?: Record<string, reception.Estimate>;611602 atsc3: boolean;612603 carries: string[];613604 @@ -660,12 +651,11 @@ export namespace lineup {
660651 }661652 }662653 export class Report {663- // Go type: time664- generated: any;654+ generated: time.Time;665655 place: geo.Place;666656 point: geo.Point;667657 radiusKm: number;668- presets: reception.Preset[];658+ presets?: reception.Preset[];669659 stations: Station[];670660 channels: Channel[];671661 atsc3: atsc3.Host[];@@ -678,7 +668,7 @@ export namespace lineup {
678668 679669 constructor(source: any = {}) {680670 if ('string' === typeof source) source = JSON.parse(source);681- this.generated = this.convertValues(source["generated"], null);671+ this.generated = this.convertValues(source["generated"], time.Time);682672 this.place = this.convertValues(source["place"], geo.Place);683673 this.point = this.convertValues(source["point"], geo.Point);684674 this.radiusKm = source["radiusKm"];@@ -716,7 +706,6 @@ export namespace main {
716706 717707 export class Boot {718708 settings: store.Settings;719- presets: reception.Preset[];720709 info: service.Info;721710 config: service.Config;722711 error?: string;@@ -734,7 +723,6 @@ export namespace main {
734723 constructor(source: any = {}) {735724 if ('string' === typeof source) source = JSON.parse(source);736725 this.settings = this.convertValues(source["settings"], store.Settings);737- this.presets = this.convertValues(source["presets"], reception.Preset);738726 this.info = this.convertValues(source["info"], service.Info);739727 this.config = this.convertValues(source["config"], service.Config);740728 this.error = source["error"];@@ -767,6 +755,25 @@ export namespace main {
767755 768756 }769757 758+export namespace phase {759+ 760+ export class Mark {761+ name: string;762+ ms: number;763+ 764+ static createFrom(source: any = {}) {765+ return new Mark(source);766+ }767+ 768+ constructor(source: any = {}) {769+ if ('string' === typeof source) source = JSON.parse(source);770+ this.name = source["name"];771+ this.ms = source["ms"];772+ }773+ }774+775+}776+770777 export namespace reception {771778 772779 export class Estimate {@@ -820,6 +827,290 @@ export namespace reception {
820827 821828 export namespace service {822829 830+ export class SweepStatus {831+ running: boolean;832+ startedAt?: time.Time;833+ finishedAt?: time.Time;834+ total: number;835+ found: number;836+ done: number;837+ rf?: number;838+ note?: string;839+ 840+ static createFrom(source: any = {}) {841+ return new SweepStatus(source);842+ }843+ 844+ constructor(source: any = {}) {845+ if ('string' === typeof source) source = JSON.parse(source);846+ this.running = source["running"];847+ this.startedAt = this.convertValues(source["startedAt"], time.Time);848+ this.finishedAt = this.convertValues(source["finishedAt"], time.Time);849+ this.total = source["total"];850+ this.found = source["found"];851+ this.done = source["done"];852+ this.rf = source["rf"];853+ this.note = source["note"];854+ }855+ 856+ convertValues(a: any, classs: any, asMap: boolean = false): any {857+ if (!a) {858+ return a;859+ }860+ if (a.slice && a.map) {861+ return (a as any[]).map(elem => this.convertValues(elem, classs));862+ } else if ("object" === typeof a) {863+ if (asMap) {864+ for (const key of Object.keys(a)) {865+ a[key] = new classs(a[key]);866+ }867+ return a;868+ }869+ return new classs(a);870+ }871+ return a;872+ }873+ }874+ export class MuxStation {875+ facilityId: number;876+ callSign: string;877+ virtualChannel: number;878+ service: string;879+ city: string;880+ state: string;881+ distanceKm: number;882+ bearingDeg: number;883+ erpKw: number;884+ haatM: number;885+ atsc3: boolean;886+ 887+ static createFrom(source: any = {}) {888+ return new MuxStation(source);889+ }890+ 891+ constructor(source: any = {}) {892+ if ('string' === typeof source) source = JSON.parse(source);893+ this.facilityId = source["facilityId"];894+ this.callSign = source["callSign"];895+ this.virtualChannel = source["virtualChannel"];896+ this.service = source["service"];897+ this.city = source["city"];898+ this.state = source["state"];899+ this.distanceKm = source["distanceKm"];900+ this.bearingDeg = source["bearingDeg"];901+ this.erpKw = source["erpKw"];902+ this.haatM = source["haatM"];903+ this.atsc3 = source["atsc3"];904+ }905+ }906+ export class MuxSignal {907+ rf: number;908+ frequencyMhz: number;909+ band: string;910+ tuned: boolean;911+ channels: string[];912+ stations: MuxStation[];913+ signal?: signal.Reading;914+ history?: signal.History;915+ 916+ static createFrom(source: any = {}) {917+ return new MuxSignal(source);918+ }919+ 920+ constructor(source: any = {}) {921+ if ('string' === typeof source) source = JSON.parse(source);922+ this.rf = source["rf"];923+ this.frequencyMhz = source["frequencyMhz"];924+ this.band = source["band"];925+ this.tuned = source["tuned"];926+ this.channels = source["channels"];927+ this.stations = this.convertValues(source["stations"], MuxStation);928+ this.signal = this.convertValues(source["signal"], signal.Reading);929+ this.history = this.convertValues(source["history"], signal.History);930+ }931+ 932+ convertValues(a: any, classs: any, asMap: boolean = false): any {933+ if (!a) {934+ return a;935+ }936+ if (a.slice && a.map) {937+ return (a as any[]).map(elem => this.convertValues(elem, classs));938+ } else if ("object" === typeof a) {939+ if (asMap) {940+ for (const key of Object.keys(a)) {941+ a[key] = new classs(a[key]);942+ }943+ return a;944+ }945+ return new classs(a);946+ }947+ return a;948+ }949+ }950+ export class AntennaChannel {951+ number: string;952+ major: number;953+ minor: number;954+ name: string;955+ callSign: string;956+ baseCall: string;957+ guideId?: string;958+ guideCallSign?: string;959+ network: string;960+ logo?: string;961+ rf: number;962+ facilityId: number;963+ transmitter?: string;964+ via?: string;965+ // Go type: lineup966+ atsc3?: any;967+ signal?: signal.Reading;968+ recent?: signal.Period;969+ 970+ static createFrom(source: any = {}) {971+ return new AntennaChannel(source);972+ }973+ 974+ constructor(source: any = {}) {975+ if ('string' === typeof source) source = JSON.parse(source);976+ this.number = source["number"];977+ this.major = source["major"];978+ this.minor = source["minor"];979+ this.name = source["name"];980+ this.callSign = source["callSign"];981+ this.baseCall = source["baseCall"];982+ this.guideId = source["guideId"];983+ this.guideCallSign = source["guideCallSign"];984+ this.network = source["network"];985+ this.logo = source["logo"];986+ this.rf = source["rf"];987+ this.facilityId = source["facilityId"];988+ this.transmitter = source["transmitter"];989+ this.via = source["via"];990+ this.atsc3 = this.convertValues(source["atsc3"], null);991+ this.signal = this.convertValues(source["signal"], signal.Reading);992+ this.recent = this.convertValues(source["recent"], signal.Period);993+ }994+ 995+ convertValues(a: any, classs: any, asMap: boolean = false): any {996+ if (!a) {997+ return a;998+ }999+ if (a.slice && a.map) {1000+ return (a as any[]).map(elem => this.convertValues(elem, classs));1001+ } else if ("object" === typeof a) {1002+ if (asMap) {1003+ for (const key of Object.keys(a)) {1004+ a[key] = new classs(a[key]);1005+ }1006+ return a;1007+ }1008+ return new classs(a);1009+ }1010+ return a;1011+ }1012+ }1013+ export class TunerInfo {1014+ ready: boolean;1015+ reason?: string;1016+ name?: string;1017+ model?: string;1018+ tuners: number;1019+ inUse: number;1020+ standards: string[];1021+ atsc3: boolean;1022+ scanning: boolean;1023+ 1024+ static createFrom(source: any = {}) {1025+ return new TunerInfo(source);1026+ }1027+ 1028+ constructor(source: any = {}) {1029+ if ('string' === typeof source) source = JSON.parse(source);1030+ this.ready = source["ready"];1031+ this.reason = source["reason"];1032+ this.name = source["name"];1033+ this.model = source["model"];1034+ this.tuners = source["tuners"];1035+ this.inUse = source["inUse"];1036+ this.standards = source["standards"];1037+ this.atsc3 = source["atsc3"];1038+ this.scanning = source["scanning"];1039+ }1040+ }1041+ export class Antenna {1042+ tuner: TunerInfo;1043+ channels: AntennaChannel[];1044+ muxes: MuxSignal[];1045+ sweep: SweepStatus;1046+ 1047+ static createFrom(source: any = {}) {1048+ return new Antenna(source);1049+ }1050+ 1051+ constructor(source: any = {}) {1052+ if ('string' === typeof source) source = JSON.parse(source);1053+ this.tuner = this.convertValues(source["tuner"], TunerInfo);1054+ this.channels = this.convertValues(source["channels"], AntennaChannel);1055+ this.muxes = this.convertValues(source["muxes"], MuxSignal);1056+ this.sweep = this.convertValues(source["sweep"], SweepStatus);1057+ }1058+ 1059+ convertValues(a: any, classs: any, asMap: boolean = false): any {1060+ if (!a) {1061+ return a;1062+ }1063+ if (a.slice && a.map) {1064+ return (a as any[]).map(elem => this.convertValues(elem, classs));1065+ } else if ("object" === typeof a) {1066+ if (asMap) {1067+ for (const key of Object.keys(a)) {1068+ a[key] = new classs(a[key]);1069+ }1070+ return a;1071+ }1072+ return new classs(a);1073+ }1074+ return a;1075+ }1076+ }1077+ 1078+ export class ChannelSignal {1079+ number: string;1080+ rf: number;1081+ signal?: signal.Reading;1082+ recent?: signal.Period;1083+ 1084+ static createFrom(source: any = {}) {1085+ return new ChannelSignal(source);1086+ }1087+ 1088+ constructor(source: any = {}) {1089+ if ('string' === typeof source) source = JSON.parse(source);1090+ this.number = source["number"];1091+ this.rf = source["rf"];1092+ this.signal = this.convertValues(source["signal"], signal.Reading);1093+ this.recent = this.convertValues(source["recent"], signal.Period);1094+ }1095+ 1096+ convertValues(a: any, classs: any, asMap: boolean = false): any {1097+ if (!a) {1098+ return a;1099+ }1100+ if (a.slice && a.map) {1101+ return (a as any[]).map(elem => this.convertValues(elem, classs));1102+ } else if ("object" === typeof a) {1103+ if (asMap) {1104+ for (const key of Object.keys(a)) {1105+ a[key] = new classs(a[key]);1106+ }1107+ return a;1108+ }1109+ return new classs(a);1110+ }1111+ return a;1112+ }1113+ }8231114 export class Config {8241115 zip: string;8251116 lat: number;@@ -928,26 +1219,24 @@ export namespace service {
9281219 return a;9291220 }9301221 }931- export class PathProfile {932- distanceKm: number;933- elevations: number[];934- rxGroundM: number;935- txHeightM: number;936- presets: reception.Preset[];937- signal: Record<string, reception.Estimate>;1222+ 1223+ 1224+ export class SignalReport {1225+ tuner: TunerInfo;1226+ channels: ChannelSignal[];1227+ muxes: MuxSignal[];1228+ sweep: SweepStatus;9381229 9391230 static createFrom(source: any = {}) {940- return new PathProfile(source);1231+ return new SignalReport(source);9411232 }9421233 9431234 constructor(source: any = {}) {9441235 if ('string' === typeof source) source = JSON.parse(source);945- this.distanceKm = source["distanceKm"];946- this.elevations = source["elevations"];947- this.rxGroundM = source["rxGroundM"];948- this.txHeightM = source["txHeightM"];949- this.presets = this.convertValues(source["presets"], reception.Preset);950- this.signal = this.convertValues(source["signal"], reception.Estimate, true);1236+ this.tuner = this.convertValues(source["tuner"], TunerInfo);1237+ this.channels = this.convertValues(source["channels"], ChannelSignal);1238+ this.muxes = this.convertValues(source["muxes"], MuxSignal);1239+ this.sweep = this.convertValues(source["sweep"], SweepStatus);9511240 }9521241 9531242 convertValues(a: any, classs: any, asMap: boolean = false): any {@@ -972,6 +1261,7 @@ export namespace service {
9721261 report?: lineup.Report;9731262 guide?: guide.Guide;9741263 custom: CustomChannel[];1264+ antenna?: Antenna;9751265 9761266 static createFrom(source: any = {}) {9771267 return new Snapshot(source);@@ -982,6 +1272,163 @@ export namespace service {
9821272 this.report = this.convertValues(source["report"], lineup.Report);9831273 this.guide = this.convertValues(source["guide"], guide.Guide);9841274 this.custom = this.convertValues(source["custom"], CustomChannel);1275+ this.antenna = this.convertValues(source["antenna"], Antenna);1276+ }1277+ 1278+ convertValues(a: any, classs: any, asMap: boolean = false): any {1279+ if (!a) {1280+ return a;1281+ }1282+ if (a.slice && a.map) {1283+ return (a as any[]).map(elem => this.convertValues(elem, classs));1284+ } else if ("object" === typeof a) {1285+ if (asMap) {1286+ for (const key of Object.keys(a)) {1287+ a[key] = new classs(a[key]);1288+ }1289+ return a;1290+ }1291+ return new classs(a);1292+ }1293+ return a;1294+ }1295+ }1296+ 1297+1298+}1299+1300+export namespace signal {1301+ 1302+ export class Period {1303+ from: time.Time;1304+ to: time.Time;1305+ source?: string;1306+ samples: number;1307+ lockedPct: number;1308+ strengthPct?: Range;1309+ qualityPct?: Range;1310+ symbolPct?: Range;1311+ 1312+ static createFrom(source: any = {}) {1313+ return new Period(source);1314+ }1315+ 1316+ constructor(source: any = {}) {1317+ if ('string' === typeof source) source = JSON.parse(source);1318+ this.from = this.convertValues(source["from"], time.Time);1319+ this.to = this.convertValues(source["to"], time.Time);1320+ this.source = source["source"];1321+ this.samples = source["samples"];1322+ this.lockedPct = source["lockedPct"];1323+ this.strengthPct = this.convertValues(source["strengthPct"], Range);1324+ this.qualityPct = this.convertValues(source["qualityPct"], Range);1325+ this.symbolPct = this.convertValues(source["symbolPct"], Range);1326+ }1327+ 1328+ convertValues(a: any, classs: any, asMap: boolean = false): any {1329+ if (!a) {1330+ return a;1331+ }1332+ if (a.slice && a.map) {1333+ return (a as any[]).map(elem => this.convertValues(elem, classs));1334+ } else if ("object" === typeof a) {1335+ if (asMap) {1336+ for (const key of Object.keys(a)) {1337+ a[key] = new classs(a[key]);1338+ }1339+ return a;1340+ }1341+ return new classs(a);1342+ }1343+ return a;1344+ }1345+ }1346+ export class Range {1347+ min: number;1348+ avg: number;1349+ max: number;1350+ 1351+ static createFrom(source: any = {}) {1352+ return new Range(source);1353+ }1354+ 1355+ constructor(source: any = {}) {1356+ if ('string' === typeof source) source = JSON.parse(source);1357+ this.min = source["min"];1358+ this.avg = source["avg"];1359+ this.max = source["max"];1360+ }1361+ }1362+ export class History {1363+ from: time.Time;1364+ to: time.Time;1365+ source?: string;1366+ samples: number;1367+ lockedPct: number;1368+ strengthPct?: Range;1369+ qualityPct?: Range;1370+ symbolPct?: Range;1371+ windows: Period[];1372+ 1373+ static createFrom(source: any = {}) {1374+ return new History(source);1375+ }1376+ 1377+ constructor(source: any = {}) {1378+ if ('string' === typeof source) source = JSON.parse(source);1379+ this.from = this.convertValues(source["from"], time.Time);1380+ this.to = this.convertValues(source["to"], time.Time);1381+ this.source = source["source"];1382+ this.samples = source["samples"];1383+ this.lockedPct = source["lockedPct"];1384+ this.strengthPct = this.convertValues(source["strengthPct"], Range);1385+ this.qualityPct = this.convertValues(source["qualityPct"], Range);1386+ this.symbolPct = this.convertValues(source["symbolPct"], Range);1387+ this.windows = this.convertValues(source["windows"], Period);1388+ }1389+ 1390+ convertValues(a: any, classs: any, asMap: boolean = false): any {1391+ if (!a) {1392+ return a;1393+ }1394+ if (a.slice && a.map) {1395+ return (a as any[]).map(elem => this.convertValues(elem, classs));1396+ } else if ("object" === typeof a) {1397+ if (asMap) {1398+ for (const key of Object.keys(a)) {1399+ a[key] = new classs(a[key]);1400+ }1401+ return a;1402+ }1403+ return new classs(a);1404+ }1405+ return a;1406+ }1407+ }1408+ 1409+ 1410+ export class Reading {1411+ at: time.Time;1412+ source: string;1413+ lock: boolean;1414+ strengthPct?: number;1415+ qualityPct?: number;1416+ symbolPct?: number;1417+ errorsPerSec?: number;1418+ 1419+ static createFrom(source: any = {}) {1420+ return new Reading(source);1421+ }1422+ 1423+ constructor(source: any = {}) {1424+ if ('string' === typeof source) source = JSON.parse(source);1425+ this.at = this.convertValues(source["at"], time.Time);1426+ this.source = source["source"];1427+ this.lock = source["lock"];1428+ this.strengthPct = source["strengthPct"];1429+ this.qualityPct = source["qualityPct"];1430+ this.symbolPct = source["symbolPct"];1431+ this.errorsPerSec = source["errorsPerSec"];9851432 }9861433 9871434 convertValues(a: any, classs: any, asMap: boolean = false): any {@@ -1011,8 +1458,6 @@ export namespace store {
10111458 server: string;10121459 token: string;10131460 clientId: string;1014- antenna: string;1015- showAll: boolean;10161461 lastChannel: string;10171462 favorites?: string[];10181463 hidden?: string[];@@ -1029,8 +1474,6 @@ export namespace store {
10291474 this.server = source["server"];10301475 this.token = source["token"];10311476 this.clientId = source["clientId"];1032- this.antenna = source["antenna"];1033- this.showAll = source["showAll"];10341477 this.lastChannel = source["lastChannel"];10351478 this.favorites = source["favorites"];10361479 this.hidden = source["hidden"];@@ -1050,6 +1493,7 @@ export namespace stream {
10501493 path: string;10511494 note?: string;10521495 offset?: number;1496+ timing?: phase.Mark[];10531497 10541498 static createFrom(source: any = {}) {10551499 return new Playback(source);@@ -1062,6 +1506,42 @@ export namespace stream {
10621506 this.path = source["path"];10631507 this.note = source["note"];10641508 this.offset = source["offset"];1509+ this.timing = this.convertValues(source["timing"], phase.Mark);1510+ }1511+ 1512+ convertValues(a: any, classs: any, asMap: boolean = false): any {1513+ if (!a) {1514+ return a;1515+ }1516+ if (a.slice && a.map) {1517+ return (a as any[]).map(elem => this.convertValues(elem, classs));1518+ } else if ("object" === typeof a) {1519+ if (asMap) {1520+ for (const key of Object.keys(a)) {1521+ a[key] = new classs(a[key]);1522+ }1523+ return a;1524+ }1525+ return new classs(a);1526+ }1527+ return a;1528+ }1529+ }1530+1531+}1532+1533+export namespace time {1534+ 1535+ export class Time {1536+ 1537+ 1538+ static createFrom(source: any = {}) {1539+ return new Time(source);1540+ }1541+ 1542+ constructor(source: any = {}) {1543+ if ('string' === typeof source) source = JSON.parse(source);1544+ 10651545 }10661546 }10671547 @@ -1074,9 +1554,10 @@ export namespace tuner {
10741554 name: string;10751555 kind: string;10761556 model?: string;1077- baseUrl?: string;10781557 tuners?: number;10791558 detail?: string;1559+ standards?: string[];1560+ atsc3: boolean;10801561 10811562 static createFrom(source: any = {}) {10821563 return new Device(source);@@ -1088,9 +1569,10 @@ export namespace tuner {
10881569 this.name = source["name"];10891570 this.kind = source["kind"];10901571 this.model = source["model"];1091- this.baseUrl = source["baseUrl"];10921572 this.tuners = source["tuners"];10931573 this.detail = source["detail"];1574+ this.standards = source["standards"];1575+ this.atsc3 = source["atsc3"];10941576 }10951577 }10961578 @@ -1121,10 +1603,8 @@ export namespace weather {
11211603 headline: string;11221604 severity: string;11231605 urgency: string;1124- // Go type: time1125- onset: any;1126- // Go type: time1127- ends: any;1606+ onset: time.Time;1607+ ends: time.Time;11281608 description: string;11291609 instruction: string;11301610 @@ -1138,8 +1618,8 @@ export namespace weather {
11381618 this.headline = source["headline"];11391619 this.severity = source["severity"];11401620 this.urgency = source["urgency"];1141- this.onset = this.convertValues(source["onset"], null);1142- this.ends = this.convertValues(source["ends"], null);1621+ this.onset = this.convertValues(source["onset"], time.Time);1622+ this.ends = this.convertValues(source["ends"], time.Time);11431623 this.description = source["description"];11441624 this.instruction = source["instruction"];11451625 }@@ -1163,8 +1643,7 @@ export namespace weather {
11631643 }11641644 }11651645 export class Hour {1166- // Go type: time1167- start: any;1646+ start: time.Time;11681647 tempF: number;11691648 precip: number;11701649 short: string;@@ -1177,7 +1656,7 @@ export namespace weather {
11771656 11781657 constructor(source: any = {}) {11791658 if ('string' === typeof source) source = JSON.parse(source);1180- this.start = this.convertValues(source["start"], null);1659+ this.start = this.convertValues(source["start"], time.Time);11811660 this.tempF = source["tempF"];11821661 this.precip = source["precip"];11831662 this.short = source["short"];@@ -1205,8 +1684,7 @@ export namespace weather {
12051684 }12061685 export class Now {12071686 station: string;1208- // Go type: time1209- observed: any;1687+ observed: time.Time;12101688 description: string;12111689 tempF?: number;12121690 feelsLikeF?: number;@@ -1225,7 +1703,7 @@ export namespace weather {
12251703 constructor(source: any = {}) {12261704 if ('string' === typeof source) source = JSON.parse(source);12271705 this.station = source["station"];1228- this.observed = this.convertValues(source["observed"], null);1706+ this.observed = this.convertValues(source["observed"], time.Time);12291707 this.description = source["description"];12301708 this.tempF = source["tempF"];12311709 this.feelsLikeF = source["feelsLikeF"];@@ -1258,8 +1736,7 @@ export namespace weather {
12581736 }12591737 export class Period {12601738 name: string;1261- // Go type: time1262- start: any;1739+ start: time.Time;12631740 isDay: boolean;12641741 tempF: number;12651742 short: string;@@ -1274,7 +1751,7 @@ export namespace weather {
12741751 constructor(source: any = {}) {12751752 if ('string' === typeof source) source = JSON.parse(source);12761753 this.name = source["name"];1277- this.start = this.convertValues(source["start"], null);1754+ this.start = this.convertValues(source["start"], time.Time);12781755 this.isDay = source["isDay"];12791756 this.tempF = source["tempF"];12801757 this.short = source["short"];@@ -1302,10 +1779,8 @@ export namespace weather {
13021779 }13031780 }13041781 export class Sun {1305- // Go type: time1306- rise: any;1307- // Go type: time1308- set: any;1782+ rise: time.Time;1783+ set: time.Time;13091784 13101785 static createFrom(source: any = {}) {13111786 return new Sun(source);@@ -1313,8 +1788,8 @@ export namespace weather {
13131788 13141789 constructor(source: any = {}) {13151790 if ('string' === typeof source) source = JSON.parse(source);1316- this.rise = this.convertValues(source["rise"], null);1317- this.set = this.convertValues(source["set"], null);1791+ this.rise = this.convertValues(source["rise"], time.Time);1792+ this.set = this.convertValues(source["set"], time.Time);13181793 }13191794 13201795 convertValues(a: any, classs: any, asMap: boolean = false): any {@@ -1336,8 +1811,7 @@ export namespace weather {
13361811 }13371812 }13381813 export class Report {1339- // Go type: time1340- updated: any;1814+ updated: time.Time;13411815 now?: Now;13421816 periods: Period[];13431817 hourly: Hour[];@@ -1354,7 +1828,7 @@ export namespace weather {
13541828 13551829 constructor(source: any = {}) {13561830 if ('string' === typeof source) source = JSON.parse(source);1357- this.updated = this.convertValues(source["updated"], null);1831+ this.updated = this.convertValues(source["updated"], time.Time);13581832 this.now = this.convertValues(source["now"], Now);13591833 this.periods = this.convertValues(source["periods"], Period);13601834 this.hourly = this.convertValues(source["hourly"], Hour);