{"version":3,"file":"signalk-client-angular.mjs","sources":["../../../projects/signalk-client-angular/src/lib/uuid.ts","../../../projects/signalk-client-angular/src/lib/utils.ts","../../../projects/signalk-client-angular/src/lib/apps-api.ts","../../../projects/signalk-client-angular/src/lib/http-api.ts","../../../projects/signalk-client-angular/src/lib/stream-api.ts","../../../projects/signalk-client-angular/src/lib/signalk-client.ts","../../../projects/signalk-client-angular/src/lib/signalk-client.module.ts","../../../projects/signalk-client-angular/src/public-api.ts","../../../projects/signalk-client-angular/src/signalk-client-angular.ts"],"sourcesContent":["/*\n * UUID: A js library to generate and parse UUIDs, TimeUUIDs and generate\n * TimeUUID based on dates for range selections.\n * @see http://www.ietf.org/rfc/rfc4122.txt\n **/\nexport class UUID {\n  private limitUI04;\n  private limitUI06;\n  private limitUI08;\n  private limitUI12;\n  private limitUI14;\n  private limitUI16;\n  private limitUI32;\n  private limitUI40;\n  private limitUI48;\n\n  private version!: number;\n  private hex!: string;\n\n  constructor() {\n    this.limitUI04 = this.maxFromBits(4);\n    this.limitUI06 = this.maxFromBits(6);\n    this.limitUI08 = this.maxFromBits(8);\n    this.limitUI12 = this.maxFromBits(12);\n    this.limitUI14 = this.maxFromBits(14);\n    this.limitUI16 = this.maxFromBits(16);\n    this.limitUI32 = this.maxFromBits(32);\n    this.limitUI40 = this.maxFromBits(40);\n    this.limitUI48 = this.maxFromBits(48);\n\n    this.create();\n  }\n\n  toString() {\n    return this.hex;\n  }\n  toURN() {\n    return 'urn:uuid:' + this.hex;\n  }\n  toSignalK(): string {\n    return `urn:mrn:signalk:uuid:${this.hex}`;\n  }\n  toBytes() {\n    let parts = this.hex.split('-');\n    let ints = [];\n    let intPos = 0;\n    for (let i = 0; i < parts.length; i++) {\n      for (let j = 0; j < parts[i].length; j += 2) {\n        ints[intPos++] = parseInt(parts[i].substr(j, 2), 16);\n      }\n    }\n    return ints;\n  }\n\n  private maxFromBits(bits: number) {\n    return Math.pow(2, bits);\n  }\n\n  private getRandomInt(min: number, max: number) {\n    return Math.floor(Math.random() * (max - min + 1)) + min;\n  }\n\n  private randomUI04() {\n    return this.getRandomInt(0, this.limitUI04 - 1);\n  }\n  private randomUI06() {\n    return this.getRandomInt(0, this.limitUI06 - 1);\n  }\n  private randomUI08() {\n    return this.getRandomInt(0, this.limitUI08 - 1);\n  }\n  private randomUI12() {\n    return this.getRandomInt(0, this.limitUI12 - 1);\n  }\n  private randomUI14() {\n    return this.getRandomInt(0, this.limitUI14 - 1);\n  }\n  private randomUI16() {\n    return this.getRandomInt(0, this.limitUI16 - 1);\n  }\n  private randomUI32() {\n    return this.getRandomInt(0, this.limitUI32 - 1);\n  }\n  private randomUI40() {\n    return (\n      (0 | (Math.random() * (1 << 30))) +\n      (0 | (Math.random() * (1 << (40 - 30)))) * (1 << 30)\n    );\n  }\n  private randomUI48() {\n    return (\n      (0 | (Math.random() * (1 << 30))) +\n      (0 | (Math.random() * (1 << (48 - 30)))) * (1 << 30)\n    );\n  }\n\n  private create() {\n    this.fromParts(\n      this.randomUI32(),\n      this.randomUI16(),\n      0x4000 | this.randomUI12(),\n      0x80 | this.randomUI06(),\n      this.randomUI08(),\n      this.randomUI48()\n    );\n  }\n\n  private paddedString(\n    string: string,\n    length: number,\n    z: string | null = null\n  ) {\n    string = String(string);\n    z = !z ? '0' : z;\n    let i = length - string.length;\n    for (; i > 0; i >>>= 1, z += z) {\n      if (i & 1) {\n        string = z + string;\n      }\n    }\n    return string;\n  }\n\n  private fromParts(\n    timeLow: number,\n    timeMid: number,\n    timeHiAndVersion: number,\n    clockSeqHiAndReserved: number,\n    clockSeqLow: number,\n    node: number\n  ) {\n    this.version = (timeHiAndVersion >> 12) & 0xf;\n    this.hex =\n      this.paddedString(timeLow.toString(16), 8) +\n      '-' +\n      this.paddedString(timeMid.toString(16), 4) +\n      '-' +\n      this.paddedString(timeHiAndVersion.toString(16), 4) +\n      '-' +\n      this.paddedString(clockSeqHiAndReserved.toString(16), 2) +\n      this.paddedString(clockSeqLow.toString(16), 2) +\n      '-' +\n      this.paddedString(node.toString(16), 12);\n    return this;\n  }\n\n  /*\n    private getTimeFieldValues(time) {\n        let ts = time - Date.UTC(1582, 9, 15);\n        let hm = ((ts / 0x100000000) * 10000) & 0xFFFFFFF;\n        return { low: ((ts & 0xFFFFFFF) * 10000) % 0x100000000,\n                mid: hm & 0xFFFF, hi: hm >>> 16, timestamp: ts };\n    };\n\n    fromTime(time, last:boolean) {\n        last = (!last) ? false : last;\n        let tf = this.getTimeFieldValues(time);\n        let tl = tf.low;\n        let thav = (tf.hi & 0xFFF) | 0x1000;  // set version '0001'\n        if (last === false) {\n            return new UUID().fromParts(tl, tf.mid, thav, 0, 0, 0);\n        } else {\n            return new UUID().fromParts(tl, tf.mid, thav, 0x80 | this.limitUI06, this.limitUI08 - 1, this.limitUI48 - 1);\n        }\n    };\n\n    firstFromTime(time) { return this.fromTime(time, false) }\n    lastFromTime(time) { return this.fromTime(time, true) }\n    \n    \n    equals(uuid) {\n        if (!(uuid instanceof UUID)) { return false }\n        if (this.hex !== uuid.hex) { return false }\n        return true;\n    };\n\n    fromURN(strId) {\n        let r;\n        let p = /^(?:urn:uuid:|\\{)?([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{12})(?:\\})?$/i;\n        if ((r = p.exec(strId))) {\n            return this.fromParts(\n                parseInt(r[1], 16), parseInt(r[2], 16),\n                parseInt(r[3], 16), parseInt(r[4], 16),\n                parseInt(r[5], 16), parseInt(r[6], 16)\n            );\n        }\n        return null;\n    }\n\n    fromBytes(ints) {\n        if (ints.length < 5) { return null }\n        let str = '';\n        let pos = 0;\n        let parts = [4, 2, 2, 2, 6];\n        for (let i = 0; i < parts.length; i++) {\n            for (let j = 0; j < parts[i]; j++) {\n            let octet = ints[pos++].toString(16);\n            if (octet.length == 1) {\n                octet = '0' + octet;\n            }\n            str += octet;\n            }\n            if (parts[i] !== 6) {\n            str += '-';\n            }\n        }\n        return this.fromURN(str);\n    };\n\n    fromBinary(binary) {\n        let ints = [];\n        for (let i = 0; i < binary.length; i++) {\n            ints[i] = binary.charCodeAt(i);\n            if (ints[i] > 255 || ints[i] < 0) {\n            throw new Error('Unexpected byte in binary data.');\n            }\n        }\n        return this.fromBytes(ints);\n    };\n    */\n}\n","import { UUID } from './uuid';\n\n// ** Path utilities\nexport class Path {\n  // ** transform dot notation to slash\n  static dotToSlash(path: string): string {\n    let p = path.split('?');\n    if (p[0].indexOf('.') != -1) {\n      p[0] = p[0].split('.').join('/');\n    }\n    return p.join('?');\n  }\n\n  // ** parse context to valid Signal K path\n  static contextToPath(context: string): string {\n    let res = context == 'self' ? 'vessels.self' : context;\n    return res.split('.').join('/');\n  }\n}\n\n// ** Message templates **\nexport class Message {\n  // ** return UPDATES message object\n  static updates() {\n    // array values= { values: [ {path: xx, value: xx } ] }\n    return {\n      context: null,\n      updates: []\n    };\n  }\n  // ** return SUBSCRIBE message object\n  static subscribe() {\n    /* array values= {\n            \"path\": \"path.to.key\",\n            \"period\": 1000,\n            \"format\": \"delta\",\n            \"policy\": \"ideal\",\n            \"minPeriod\": 200\n            } */\n    return {\n      context: null,\n      subscribe: []\n    };\n  }\n  // ** return UNSUBSCRIBE message object\n  static unsubscribe() {\n    // array values= { \"path\": \"path.to.key\" }\n    return {\n      context: null,\n      unsubscribe: []\n    };\n  }\n  // ** return REQUEST message object\n  static request() {\n    return {\n      requestId: new UUID().toString()\n    };\n  }\n}\n\n// ** Alarm message **\nexport class Alarm {\n  private _state: AlarmState;\n  private _method: Array<AlarmMethod> = [];\n  private _message: string = '';\n\n  constructor(\n    message: string,\n    state?: AlarmState,\n    visual?: boolean,\n    sound?: boolean\n  ) {\n    this._message = typeof message !== 'undefined' ? message : '';\n    this._state = typeof state !== 'undefined' ? state : AlarmState.alarm;\n    if (visual) {\n      this._method.push(AlarmMethod.visual);\n    }\n    if (sound) {\n      this._method.push(AlarmMethod.sound);\n    }\n  }\n\n  get value() {\n    return {\n      message: this._message,\n      state: this._state,\n      method: this._method\n    };\n  }\n}\n\nexport enum AlarmState {\n  normal = 'normal',\n  alert = 'alert',\n  warn = 'warn',\n  alarm = 'alarm',\n  emergency = 'emergency'\n}\n\nexport enum AlarmMethod {\n  visual = 'visual',\n  sound = 'sound'\n}\n\nexport enum AlarmType {\n  mob = 'notifications.mob',\n  fire = 'notifications.fire',\n  sinking = 'notifications.sinking',\n  flooding = 'notifications.flooding',\n  collision = 'notifications.collision',\n  grounding = 'notifications.grounding',\n  listing = 'notifications.listing',\n  adrift = 'notifications.adrift',\n  piracy = 'notifications.piracy',\n  abandon = 'notifications.abandon'\n}\n","/** Signal K server Apps\n * ************************************/\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({ providedIn: 'root' })\nexport class SignalKApps {\n  // **************** ATTRIBUTES ***************************\n\n  // ** apps api endpoint path\n  public endpoint: string = '';\n\n  // *******************************************************\n\n  constructor(private http: HttpClient) {}\n\n  ngOnDestroy() {}\n\n  // ** return List of installed apps\n  list() {\n    let ep =\n      this.endpoint.indexOf('webapps') == -1\n        ? `${this.endpoint}list`\n        : this.endpoint;\n    return this.http.get(ep);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Path, Alarm, AlarmType } from './utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SignalKHttp {\n  private _token: string = '';\n  private _observe: string = 'body';\n\n  // **************** ATTRIBUTES ***************************\n  public server: any;\n  public endpoint: string = '';\n  public version: number = 1;\n\n  // ** set auth token value **\n  set authToken(val: string) {\n    this._token = val;\n  }\n\n  set observeResponse(value: boolean) {\n    this._observe = value ? 'response' : 'body';\n  }\n\n  // *******************************************************\n\n  constructor(private http: HttpClient) {}\n\n  // ** get the contents of the Signal K tree pointed to by self. returns: Observable\n  getSelf() {\n    return this.get(`vessels/self`);\n  }\n\n  //** get ID of vessel self via http. returns: Observable\n  getSelfId() {\n    return this.get(`self`);\n  }\n\n  // ** return observable response for meta object at the specified context and path\n  getMeta(context: string, path: string) {\n    return this.get(\n      `${Path.contextToPath(context)}/${Path.dotToSlash(path)}/meta`\n    );\n  }\n\n  //** get API path value via http. returns: Observable\n\n  get(path: string): any;\n  get(version: number, path: string): any;\n  get(p1: any, p2?: any): any {\n    if (!this.endpoint) {\n      return;\n    }\n    let ep: string;\n    let path: string;\n    if (typeof p1 === 'number') {\n      ep = this.endpoint.replace(new RegExp('/v[0-9]+/'), `/v${p1}/`);\n      path = Path.dotToSlash(p2);\n    } else {\n      ep = this.endpoint;\n      path = Path.dotToSlash(p1);\n    }\n    if (path[0] === '/') {\n      path = path.slice(1);\n    }\n    const url = `${ep}${path}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.get(url, { headers: headers });\n    } else {\n      return this.http.get(url, { withCredentials: true });\n    }\n  }\n\n  // ** patch for v2 & above PUT handling of resourcesApi / courseApi\n  private parseApiPut(version: number, value: any): any {\n    if (version > 1) {\n      return value;\n    } else {\n      return { value: value };\n    }\n  }\n\n  //** send value to API path via http PUT. returns: Observable\n  put(path: string, value: any): any;\n  put(version: number, path: string, value: any): any;\n  put(p1: any, p2: string, p3?: any): any {\n    if (!this.endpoint) {\n      return;\n    }\n    let ep: string;\n    let path: string;\n    let value: any;\n    let msg: any;\n    if (typeof p1 === 'number') {\n      ep = this.endpoint.replace(new RegExp('/v[0-9]+/'), `/v${p1}/`);\n      path = Path.dotToSlash(p2);\n      value = p3;\n      msg = this.parseApiPut(p1, value);\n    } else {\n      ep = this.endpoint;\n      path = Path.dotToSlash(p1);\n      value = p2;\n      msg = this.parseApiPut(this.version, value);\n    }\n    if (path[0] == '/') {\n      path = path.slice(1);\n    }\n\n    const url = `${ep}${path}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.put(url, msg, {\n        headers: headers,\n        observe: this._observe as any\n      });\n    } else {\n      return this.http.put(url, msg, {\n        withCredentials: true,\n        observe: this._observe as any\n      });\n    }\n  }\n\n  //** send value to API path via http PUT. returns: Observable\n  putWithContext(context: string, path: string, value: any): any;\n  putWithContext(\n    version: number,\n    context: string,\n    path: string,\n    value: any\n  ): any;\n  putWithContext(p1: any, p2: any, p3?: any, p4?: any): any {\n    if (!this.endpoint) {\n      return;\n    }\n    let ep: string;\n    let path: string;\n    let context: string;\n    let value: any;\n    let msg: any;\n    if (typeof p1 === 'number') {\n      ep = this.endpoint.replace(new RegExp('/v[0-9]+/'), `/v${p1}/`);\n      context = p2 ? `${Path.contextToPath(p2)}/` : '';\n      path = Path.dotToSlash(p3);\n      value = p4;\n      msg = this.parseApiPut(p1, value);\n    } else {\n      ep = this.endpoint;\n      context = p1 ? `${Path.contextToPath(p1)}/` : '';\n      path = Path.dotToSlash(p2);\n      value = p3;\n      msg = this.parseApiPut(this.version, value);\n    }\n    if (path[0] === '/') {\n      path = path.slice(1);\n    }\n\n    const url = ep + context + path;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.put(url, msg, {\n        headers: headers,\n        observe: this._observe as any\n      });\n    } else {\n      return this.http.put(url, msg, {\n        withCredentials: true,\n        observe: this._observe as any\n      });\n    }\n  }\n\n  //** send value to API path via http POST. returns: Observable\n  post(path: string, value: any): any;\n  post(version: number, path: string, value: any): any;\n  post(p1: any, p2: string, p3?: any): any {\n    if (!this.endpoint) {\n      return;\n    }\n    let ep: string;\n    let path: string;\n    let value: any;\n    if (typeof p1 === 'number') {\n      ep = this.endpoint.replace(new RegExp('/v[0-9]+/'), `/v${p1}/`);\n      path = Path.dotToSlash(p2);\n      value = p3;\n    } else {\n      ep = this.endpoint;\n      path = Path.dotToSlash(p1);\n      value = p2;\n    }\n    if (path[0] == '/') {\n      path = path.slice(1);\n    }\n    const url = `${ep}${path}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.post(url, value, {\n        headers: headers,\n        observe: this._observe as any\n      });\n    } else {\n      return this.http.post(url, value, {\n        withCredentials: true,\n        observe: this._observe as any\n      });\n    }\n  }\n\n  //** delete value from API path via http DELETE. returns: Observable\n  delete(path: string): any;\n  delete(version: number, path: string): any;\n  delete(p1: any, p2?: any): any {\n    if (!this.endpoint) {\n      return;\n    }\n    let ep: string;\n    let path: string;\n    if (typeof p1 === 'number') {\n      ep = this.endpoint.replace(new RegExp('/v[0-9]+/'), `/v${p1}/`);\n      path = Path.dotToSlash(p2);\n    } else {\n      ep = this.endpoint;\n      path = Path.dotToSlash(p1);\n    }\n    if (path[0] == '/') {\n      path = path.slice(1);\n    }\n    const url = `${ep}${path}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.delete(url, {\n        headers: headers,\n        observe: this._observe as any\n      });\n    } else {\n      return this.http.delete(url, {\n        withCredentials: true,\n        observe: this._observe as any\n      });\n    }\n  }\n\n  // ** raise alarm for path (name), returns: Observable\n  raiseAlarm(context: string, name: string, alarm: Alarm): any;\n  raiseAlarm(context: string, type: AlarmType, alarm: Alarm): any;\n  raiseAlarm(context: string = '*', alarmId: any, alarm: Alarm): any {\n    let path: string;\n    if (typeof alarmId === 'string') {\n      path =\n        alarmId.indexOf('notifications.') == -1\n          ? `notifications.${alarmId}`\n          : alarmId;\n    } else {\n      path = alarmId;\n    }\n    return this.putWithContext(context, path, alarm.value);\n  }\n\n  // ** raise alarm for path (name), returns: Observable\n  clearAlarm(context: string = '*', name: string): any {\n    let path =\n      name.indexOf('notifications.') == -1 ? `notifications.${name}` : name;\n    return this.putWithContext(context, path, null);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { Message, Alarm, AlarmType } from './utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SignalKStream {\n  private _connect: Subject<any>;\n  private _close: Subject<any>;\n  private _error: Subject<any>;\n  private _message: Subject<any>;\n\n  private ws: any;\n  private _filter: string = ''; // ** id of vessel to filter delta messages\n  private _wsTimeout = 20000; // ** websocket connection timeout\n  private _token: string = '';\n  private _playbackMode: boolean = false;\n\n  // **************** ATTRIBUTES ***************************\n\n  public onConnect: Observable<any>;\n  public onClose: Observable<any>;\n  public onError: Observable<any>;\n  public onMessage: Observable<any>;\n\n  public version: number = 1;\n  public endpoint: string = '';\n  public selfId: string = '';\n  public _source: any = null;\n\n  // ** set source label for use in messages\n  set source(val: string) {\n    if (!this._source) {\n      this._source = {};\n    }\n    this._source['label'] = val;\n  }\n\n  // ** set auth token value **\n  set authToken(val: string) {\n    this._token = val;\n  }\n  // ** get / set websocket connection timeout 3000<=timeout<=60000 **\n  get connectionTimeout(): number {\n    return this._wsTimeout;\n  }\n  set connectionTimeout(val: number) {\n    this._wsTimeout = val < 3000 ? 3000 : val > 60000 ? 60000 : val;\n  }\n  // ** is WS Stream connected?\n  get isOpen(): boolean {\n    return this.ws && this.ws.readyState != 1 && this.ws.readyState != 3\n      ? true\n      : false;\n  }\n  // ** get / set filter to select delta messages just for supplied vessel id\n  get filter(): string {\n    return this._filter;\n  }\n  // ** set filter= null to remove message filtering\n  set filter(id: string) {\n    if (id && id.indexOf('self') != -1) {\n      // ** self\n      this._filter = this.selfId ? this.selfId : '';\n    } else {\n      this._filter = id;\n    }\n  }\n  // ** returns true if Playback Hello message\n  get playbackMode(): boolean {\n    return this._playbackMode;\n  }\n\n  // ******************************************************\n\n  constructor() {\n    this._connect = new Subject<any>();\n    this.onConnect = this._connect.asObservable();\n    this._close = new Subject<any>();\n    this.onClose = this._close.asObservable();\n    this._error = new Subject<any>();\n    this.onError = this._error.asObservable();\n    this._message = new Subject<any>();\n    this.onMessage = this._message.asObservable();\n  }\n\n  // ** Close WebSocket connection\n  close() {\n    if (this.ws) {\n      this.ws.close();\n      this.ws = null;\n    }\n  }\n\n  // ** Open a WebSocket at provided url\n  open(url: string, subscribe?: string, token?: string) {\n    url = url ? url : this.endpoint;\n    if (!url) {\n      return;\n    }\n    let q = url.indexOf('?') == -1 ? '?' : '&';\n    if (subscribe) {\n      url += `${q}subscribe=${subscribe}`;\n    }\n    if (this._token || token) {\n      url += `${subscribe ? '&' : '?'}token=${this._token || token}`;\n    }\n\n    this.close();\n    this.ws = new WebSocket(url);\n    // ** start connection watchdog **\n    setTimeout(() => {\n      if (this.ws && this.ws.readyState != 1 && this.ws.readyState != 3) {\n        console.warn(\n          `Connection watchdog expired (${this._wsTimeout / 1000} sec): ${\n            this.ws.readyState\n          }... aborting connection...`\n        );\n        this.close();\n      }\n    }, this._wsTimeout);\n\n    this.ws.onopen = (e: any) => {\n      this._connect.next(e);\n    };\n    this.ws.onclose = (e: any) => {\n      this._close.next(e);\n    };\n    this.ws.onerror = (e: any) => {\n      this._error.next(e);\n    };\n    this.ws.onmessage = (e: any) => {\n      this.parseOnMessage(e);\n    };\n  }\n\n  // ** parse received message\n  private parseOnMessage(e: any) {\n    let data: any;\n    if (typeof e.data === 'string') {\n      try {\n        data = JSON.parse(e.data);\n      } catch (e) {\n        return;\n      }\n    }\n    if (this.isHello(data)) {\n      this.selfId = data.self;\n      this._playbackMode = typeof data.startTime != 'undefined' ? true : false;\n      this._message.next(data);\n    } else if (this.isResponse(data)) {\n      if (typeof data.login !== 'undefined') {\n        if (typeof data.login.token !== 'undefined') {\n          this._token = data.login.token;\n        }\n      }\n      this._message.next(data);\n    } else if (this._filter && this.isDelta(data)) {\n      if (data.context == this._filter) {\n        this._message.next(data);\n      }\n    } else {\n      this._message.next(data);\n    }\n  }\n\n  // ** send request via Delta stream\n  sendRequest(value: any): string {\n    if (typeof value !== 'object') {\n      return '';\n    }\n    let msg: any = Message.request();\n    if (typeof value.login === 'undefined' && this._token) {\n      msg['token'] = this._token;\n    }\n    let keys = Object.keys(value);\n    keys.forEach((k) => {\n      msg[k] = value[k];\n    });\n    this.send(msg);\n    return msg.requestId;\n  }\n\n  // ** send put request via Delta stream\n  put(context: string, path: string, value: any): string {\n    let msg = {\n      context: context == 'self' ? 'vessels.self' : context,\n      put: { path: path, value: value }\n    };\n    return this.sendRequest(msg);\n  }\n\n  // ** get auth token for supplied user details **\n  login(username: string, password: string) {\n    let msg = {\n      login: { username: username, password: password }\n    };\n    return this.sendRequest(msg);\n  }\n\n  // ** send data to Signal K stream\n  send(data: any) {\n    if (this.ws) {\n      if (typeof data === 'object') {\n        data = JSON.stringify(data);\n      }\n      this.ws.send(data);\n    }\n  }\n\n  // ** send value(s) via delta stream update **\n  sendUpdate(context: string, path: Array<any>): void;\n  sendUpdate(context: string, path: string, value: any): void;\n  sendUpdate(\n    context: string = 'self',\n    path: string | Array<any>,\n    value?: any\n  ): void {\n    let val: any = Message.updates();\n    if (this._token) {\n      val['token'] = this._token;\n    }\n    val.context = context == 'self' ? 'vessels.self' : context;\n    if (this._token) {\n      val['token'] = this._token;\n    }\n\n    let uValues = [];\n    if (typeof path === 'string') {\n      uValues.push({ path: path, value: value });\n    }\n    if (typeof path === 'object' && Array.isArray(path)) {\n      uValues = path;\n    }\n    let u: any = {\n      timestamp: new Date().toISOString(),\n      values: uValues\n    };\n    if (this._source) {\n      u['source'] = this._source;\n    }\n    val.updates.push(u);\n    this.send(val);\n  }\n\n  // ** Subscribe to Delta stream messages options: {..}**\n  subscribe(context: string, path: Array<any>): void;\n  subscribe(context: string, path: string, options?: any): void;\n  subscribe(\n    context: string = '*',\n    path: string | Array<any> = '*',\n    options?: any\n  ): void {\n    let val: any = Message.subscribe();\n    if (this._token) {\n      val['token'] = this._token;\n    }\n    val.context = context == 'self' ? 'vessels.self' : context;\n    if (this._token) {\n      val['token'] = this._token;\n    }\n\n    if (typeof path === 'object' && Array.isArray(path)) {\n      val.subscribe = path;\n    }\n    if (typeof path === 'string') {\n      let sValue: any = {};\n      sValue['path'] = path;\n      if (options && typeof options === 'object') {\n        if (options['period']) {\n          sValue['period'] = options['period'];\n        }\n        if (options['minPeriod']) {\n          sValue['minPeriod'] = options['period'];\n        }\n        if (\n          options['format'] &&\n          (options['format'] == 'delta' || options['format'] == 'full')\n        ) {\n          sValue['format'] = options['format'];\n        }\n        if (\n          options['policy'] &&\n          (options['policy'] == 'instant' ||\n            options['policy'] == 'ideal' ||\n            options['policy'] == 'fixed')\n        ) {\n          sValue['policy'] = options['policy'];\n        }\n      }\n      val.subscribe.push(sValue);\n    }\n    this.send(val);\n  }\n\n  // ** Unsubscribe from Delta stream messages **\n  unsubscribe(context: string = '*', path: any = '*') {\n    let val: any = Message.unsubscribe();\n    if (this._token) {\n      val['token'] = this._token;\n    }\n    val.context = context == 'self' ? 'vessels.self' : context;\n    if (this._token) {\n      val['token'] = this._token;\n    }\n\n    if (typeof path === 'object' && Array.isArray(path)) {\n      val.unsubscribe = path;\n    }\n    if (typeof path === 'string') {\n      val.unsubscribe.push({ path: path });\n    }\n    this.send(val);\n  }\n\n  // ** raise alarm for path\n  raiseAlarm(context: string, name: string, alarm: Alarm): void;\n  raiseAlarm(context: string, type: AlarmType, alarm: Alarm): void;\n  raiseAlarm(context: string = '*', alarmId: any, alarm: Alarm): void {\n    let path: string;\n    if (typeof alarmId === 'string') {\n      path =\n        alarmId.indexOf('notifications.') == -1\n          ? `notifications.${alarmId}`\n          : alarmId;\n    } else {\n      path = alarmId;\n    }\n    this.put(context, path, alarm.value);\n  }\n\n  // ** raise alarm for path\n  clearAlarm(context: string = '*', name: string) {\n    let path =\n      name.indexOf('notifications.') == -1 ? `notifications.${name}` : name;\n    this.put(context, path, null);\n  }\n\n  // *************** MESSAGE PARSING ******************************\n  // ** returns true if message context is 'self'\n  isSelf(msg: any): boolean {\n    return msg.context == this.selfId;\n  }\n  // ** returns true if message is a Delta message\n  isDelta(msg: any): boolean {\n    return typeof msg.context != 'undefined';\n  }\n  // ** returns true if message is a Hello message\n  isHello(msg: any): boolean {\n    return typeof msg.version != 'undefined' && typeof msg.self != 'undefined';\n  }\n  // ** returns true if message is a request Response message\n  isResponse(msg: any): boolean {\n    return typeof msg.requestId != 'undefined';\n  }\n}\n","import { Injectable, isDevMode } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Subject, Observable } from 'rxjs';\n\nimport { SignalKHttp } from './http-api';\nimport { SignalKStream } from './stream-api';\nimport { SignalKApps } from './apps-api';\nimport { Path, Message } from './utils';\nimport { UUID } from './uuid';\n\ninterface Server_Info {\n  endpoints: { [key: string]: any };\n  info: { [key: string]: any };\n  apiVersions: Array<any>;\n}\n\ninterface Fallback_Info {\n  server: { [key: string]: any };\n  endpoints: { [key: string]: any };\n}\n\ninterface JSON_Patch {\n  op: 'add' | 'replace' | 'remove' | 'copy' | 'move' | 'test';\n  path: string;\n  value: any;\n}\n\nexport enum APPDATA_CONTEXT {\n  USER = 'user',\n  GLOBAL = 'global'\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SignalKClient {\n  private hostname: string = 'localhost';\n  private port: number = 3000;\n  private protocol: string = '';\n\n  private _version: string = 'v1'; // ** default Signal K api version\n  private _token: string = ''; // token for when security is enabled on the server\n\n  private debug(val: any) {\n    if (isDevMode()) {\n      console.log(val);\n    }\n  }\n\n  // ** endpoints to fallback to if hello response is not received.\n  private fallbackEndpoints: Fallback_Info = {\n    endpoints: { v1: {} },\n    server: { id: 'fallback' }\n  };\n\n  // **************** ATTRIBUTES ***************************\n\n  // ** server information block **\n  public server: Server_Info = {\n    endpoints: {},\n    info: {},\n    apiVersions: []\n  };\n\n  // ** endpoints fallback to host address when no hello response\n  public fallback: boolean = false;\n\n  // ** endpoints are set to host address regardless of contents of hello response\n  public proxied: boolean = false;\n\n  // ** get / set Signal K preferred api version to use **\n  get version(): number {\n    return parseInt(this._version.slice(1));\n  }\n  set version(val: number) {\n    let v: string = 'v' + val;\n    if (this.server.apiVersions.length == 0) {\n      this._version = v;\n      this.debug(`Signal K api version set to: ${v}`);\n    } else {\n      this._version =\n        this.server.apiVersions.indexOf(v) != -1 ? v : this._version;\n      this.debug(\n        `Signal K api version set request: ${v}, result: ${this._version}`\n      );\n    }\n    this.api.version = parseInt(v.slice(1));\n    this.stream.version = parseInt(v.slice(1));\n  }\n  // ** set auth token value **\n  set authToken(val: string) {\n    this._token = val;\n    this.api.authToken = val;\n    this.stream.authToken = val;\n  }\n  // ** Message Object\n  get message() {\n    return Message;\n  }\n\n  // ** generate and return a UUID object\n  get uuid(): string {\n    return new UUID().toString();\n  }\n\n  // ** generate and return a v1 UUID object\n  get signalkUuid(): string {\n    return `urn:mrn:signalk:uuid:${new UUID().toString()}`;\n  }\n\n  // *******************************************************\n  constructor(\n    private http: HttpClient,\n    public apps: SignalKApps,\n    public api: SignalKHttp,\n    public stream: SignalKStream\n  ) {\n    this.init();\n  }\n\n  ngOnDestroy() {\n    this.stream.close();\n  }\n\n  // ** initialise protocol, hostname, port values\n  private init(\n    hostname: string = this.hostname,\n    port: number = 80,\n    useSSL: boolean = false\n  ) {\n    this.hostname = hostname ? hostname : this.hostname;\n    if (useSSL) {\n      this.protocol = 'https';\n      this.port = port || 443;\n    } else {\n      this.protocol = 'http';\n      this.port = port || 80;\n    }\n    let httpUrl = `${this.protocol}://${this.hostname}:${this.port}`;\n    let wsUrl = `${useSSL ? 'wss' : 'ws'}://${this.hostname}:${this.port}`;\n    this.fallbackEndpoints.endpoints.v1[\n      'signalk-http'\n    ] = `${httpUrl}/signalk/v1/api/`;\n    this.fallbackEndpoints.endpoints.v1[\n      'signalk-ws'\n    ] = `${wsUrl}/signalk/v1/stream`;\n  }\n\n  // **************** CONNECTION AND DISCOVERY  ********************\n\n  // ** Signal K server endpoint discovery request (/signalk).\n  hello(\n    hostname: string = this.hostname,\n    port: number = 3000,\n    useSSL: boolean = false\n  ) {\n    this.init(hostname, port, useSSL);\n    return this.get('/signalk');\n  }\n\n  // ** connect to server (endpoint discovery) and DO NOT open Stream\n  connect(\n    hostname: string = this.hostname,\n    port: number = 3000,\n    useSSL: boolean = false\n  ): Observable<any> {\n    let sub: Subject<any> = new Subject();\n    this.debug('Contacting Signal K server.........');\n    this.hello(hostname, port, useSSL).subscribe(\n      // ** discover endpoints **\n      (response) => {\n        this.getLoginStatus().subscribe((r) => {});\n        if (this.stream) {\n          this.stream.close();\n        }\n        this.processHello(response);\n        this.api.endpoint = this.resolveHttpEndpoint();\n        this.stream.endpoint = this.resolveStreamEndpoint();\n        sub.next(true);\n      },\n      (error) => {\n        if (this.fallback) {\n          // fallback if no hello response\n          if (this.stream) {\n            this.stream.close();\n          }\n          this.processHello(null);\n          this.api.endpoint = this.resolveHttpEndpoint();\n          this.stream.endpoint = this.resolveStreamEndpoint();\n          sub.next(true);\n        } else {\n          this.disconnectedFromServer();\n          sub.error(error);\n        }\n      }\n    );\n    return sub.asObservable();\n  }\n\n  // ** disconnect from server\n  disconnect() {\n    this.stream.close();\n  }\n\n  // ** Connect + open Delta Stream (endpoint discovery)\n  connectStream(\n    hostname: string = this.hostname,\n    port: number = 3000,\n    useSSL: boolean = false,\n    subscribe: string = ''\n  ): Observable<any> {\n    let sub: Subject<any> = new Subject();\n    this.connect(hostname, port, useSSL).subscribe(\n      () => {\n        // ** connect to stream api at preferred version else fall back to default version\n        let url = this.resolveStreamEndpoint();\n        if (!url) {\n          sub.error(new Error('Server has no advertised Stream endpoints!'));\n          return;\n        }\n        this.stream.open(url, subscribe);\n        sub.next(true);\n      },\n      (e) => {\n        sub.error(e);\n      }\n    );\n    return sub.asObservable();\n  }\n\n  // ** connect to playback stream (endpoint discovery)\n  connectPlayback(\n    hostname: string = this.hostname,\n    port: number = 3000,\n    useSSL: boolean = false,\n    options: any\n  ): Observable<any> {\n    let sub: Subject<any> = new Subject();\n    this.connect(hostname, port, useSSL).subscribe(\n      () => {\n        // ** connect to playback api at preferred version else fall back to default version\n        this.openPlayback('', options, this._token);\n        sub.next(true);\n      },\n      (e) => {\n        sub.error(e);\n      }\n    );\n    return sub.asObservable();\n  }\n\n  // ** connect to delta stream with (NO endpoint discovery)\n  openStream(url: string = this.hostname, subscribe?: string, token?: string) {\n    this.debug('openStream.........');\n    if (!url) {\n      // connect to stream api at discovered endpoint\n      url = this.resolveStreamEndpoint();\n      if (!url) {\n        return new Error('Server has no advertised Stream endpoints!');\n      }\n    }\n    this.stream.open(url, subscribe, token);\n    return true;\n  }\n\n  // ** connect to playback stream (NO endpoint discovery)\n  openPlayback(url: string = this.hostname, options?: any, token?: string) {\n    this.debug('openPlayback.........');\n    if (!url) {\n      // connect to stream api at discovered endpoint\n      url = this.resolveStreamEndpoint();\n      if (!url) {\n        return new Error('Server has no advertised Stream endpoints!');\n      }\n      url = url.replace('stream', 'playback');\n    }\n    let pb = '';\n    let subscribe: string = '';\n    if (options && typeof options === 'object') {\n      pb += options.startTime\n        ? '?startTime=' +\n          options.startTime.slice(0, options.startTime.indexOf('.')) +\n          'Z'\n        : '';\n      pb += options.playbackRate ? `&playbackRate=${options.playbackRate}` : '';\n      subscribe = options.subscribe ? options.subscribe : null;\n    }\n    this.stream.open(url + pb, subscribe, token);\n    return true;\n  }\n\n  // ** process Hello response\n  private processHello(response: any) {\n    if (this.proxied) {\n      this.server.endpoints = this.fallbackEndpoints.endpoints;\n    } else {\n      this.server.endpoints =\n        response && response['endpoints']\n          ? response['endpoints']\n          : this.fallbackEndpoints.endpoints;\n    }\n    this.server.info =\n      response && response['server']\n        ? response['server']\n        : this.fallbackEndpoints.server;\n    this.server.apiVersions = this.server.endpoints\n      ? Object.keys(this.server.endpoints)\n      : [];\n    this.debug(this.server.endpoints);\n    this.api.server = this.server.info;\n    this.apps.endpoint = this.resolveAppsEndpoint();\n  }\n\n  // ** return signalk apps api url\n  private resolveAppsEndpoint(): string {\n    let url: string = this.resolveHttpEndpoint().replace('api', 'apps');\n    return url;\n  }\n\n  // ** return preferred WS stream url\n  public resolveStreamEndpoint(): string {\n    if (\n      this.server.endpoints[this._version] &&\n      this.server.endpoints[this._version]['signalk-ws']\n    ) {\n      this.debug(`Connecting endpoint version: ${this._version}`);\n      return `${this.server.endpoints[this._version]['signalk-ws']}`;\n    } else if (\n      this.server.endpoints['v1'] &&\n      this.server.endpoints['v1']['signalk-ws']\n    ) {\n      this.debug(`Connection falling back to: v1`);\n      return `${this.server.endpoints['v1']['signalk-ws']}`;\n    } else {\n      return '';\n    }\n  }\n\n  // ** return signalk-http endpoint url\n  private resolveHttpEndpoint(): string {\n    let url: string = '';\n    if (this.server.endpoints[this._version]) {\n      // ** connection made\n      // ** connect to http endpoint at prescribed version else fall back to default version\n      if (this.server.endpoints[this._version]['signalk-http']) {\n        url = `${this.server.endpoints[this._version]['signalk-http']}`;\n      } else {\n        url = `${this.server.endpoints['v1']['signalk-http']}`;\n      }\n    } else {\n      let msg =\n        'No current connection http endpoint service! Use connect() to establish a connection.';\n      this.debug(msg);\n    }\n    return url;\n  }\n\n  // ** cleanup on server disconnection\n  private disconnectedFromServer() {\n    this.server.endpoints = {};\n    this.server.info = {};\n    this.server.apiVersions = [];\n  }\n\n  //** return observable response from http path\n  get(path: string) {\n    if (path && path.length > 0 && path[0] == '/') {\n      path = path.slice(1);\n    }\n    let url = `${this.protocol}://${this.hostname}:${\n      this.port\n    }/${Path.dotToSlash(path)}`;\n    this.debug(`get ${url}`);\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.get(url, { headers: headers });\n    } else {\n      return this.http.get(url, { withCredentials: true });\n    }\n  }\n\n  //** return observable response for put to http path\n  put(path: string, value: any) {\n    let url = `${this.protocol}://${this.hostname}:${\n      this.port\n    }/${Path.dotToSlash(path)}`;\n    this.debug(`put ${url}`);\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.put(url, value, { headers: headers });\n    } else {\n      return this.http.put(url, value, { withCredentials: true });\n    }\n  }\n\n  //** return observable response for post to http path\n  post(path: string, value: any) {\n    if (path && path.length > 0 && path[0] == '/') {\n      path = path.slice(1);\n    }\n    let url = `${this.protocol}://${this.hostname}:${\n      this.port\n    }/${Path.dotToSlash(path)}`;\n    this.debug(`post ${url}`);\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.post(url, value, { headers: headers });\n    } else {\n      return this.http.post(url, value, { withCredentials: true });\n    }\n  }\n\n  // ** get auth token for supplied user details **\n  login(username: string, password: string) {\n    let headers = new HttpHeaders().set('Content-Type', `application/json`);\n    return this.http.post(\n      `${this.protocol}://${this.hostname}:${this.port}/signalk/${this._version}/auth/login`,\n      { username: username, password: password },\n      { headers }\n    );\n  }\n\n  // ** logout from server **\n  logout(): Observable<boolean> {\n    let sub: Subject<boolean> = new Subject();\n    let url = `${this.protocol}://${this.hostname}:${this.port}/signalk/${this._version}/auth/logout`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      this.http\n        .put(url, null, { headers: headers, responseType: 'text' })\n        .subscribe(\n          () => {\n            sub.next(true);\n          },\n          () => {\n            sub.next(false);\n          }\n        );\n    } else {\n      this.http\n        .put(url, null, { responseType: 'text', withCredentials: true })\n        .subscribe(\n          () => {\n            sub.next(true);\n          },\n          () => {\n            sub.next(false);\n          }\n        );\n    }\n    return sub.asObservable();\n  }\n\n  // ** is a user authenticated to the server **\n  isLoggedIn(): Observable<boolean> {\n    let sub: Subject<boolean> = new Subject();\n    this.getLoginStatus().subscribe(\n      (r) => {\n        sub.next(r.status == 'loggedIn' ? true : false);\n      },\n      () => {\n        sub.next(false);\n      }\n    );\n    return sub.asObservable();\n  }\n  // ** fetch login status from server **\n  getLoginStatus(): Observable<any> {\n    let url = `/skServer/loginStatus`;\n    if (this.server && this.server.info.id == 'signalk-server-node') {\n      let ver = this.server.info['version'].split('.');\n      url =\n        ver[0] == '1' && ver[1] < 36 //use legacy link for older versions\n          ? `/loginstatus`\n          : url;\n    }\n    return this.get(url);\n  }\n\n  //** get data via the snapshot http api path for supplied time\n  snapshot(context: string, time: string) {\n    if (!time) {\n      return;\n    }\n    time = time.slice(0, time.indexOf('.')) + 'Z';\n    let url = this.resolveHttpEndpoint();\n    if (!url) {\n      return;\n    }\n    url = `${url.replace('api', 'snapshot')}${Path.contextToPath(\n      context\n    )}?time=${time}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.get(url, { headers: headers });\n    } else {\n      return this.http.get(url, { withCredentials: true });\n    }\n  }\n\n  /*******************************\n   *  applicationData api methods\n   * context: 'user' or 'global'\n   * appId: application id string\n   *******************************/\n  private _appId: string = '';\n  private _appVersion: string = '';\n\n  private resolveAppDataEndpoint(\n    context: APPDATA_CONTEXT,\n    appId: string\n  ): string {\n    if (!context || !appId) {\n      return '';\n    }\n    let url = this.resolveHttpEndpoint().replace('api', 'applicationData');\n    return `${url}${context}/${appId}/`;\n  }\n\n  setAppId(value: string) {\n    this._appId = value;\n  }\n  setAppVersion(value: string) {\n    this._appVersion = value;\n  }\n\n  // ** get list of available versions of data stored **\n  appDataVersions(\n    context: APPDATA_CONTEXT = APPDATA_CONTEXT.USER,\n    appId: string = this._appId\n  ) {\n    let url = this.resolveAppDataEndpoint(context, appId);\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.get(url, { headers: headers });\n    } else {\n      return this.http.get(url, { withCredentials: true });\n    }\n  }\n  // ** get list of available keys for a stored path **\n  appDataKeys(\n    path: string = '',\n    context: APPDATA_CONTEXT = APPDATA_CONTEXT.USER,\n    appId: string = this._appId,\n    version: string = this._appVersion\n  ) {\n    path = path.length != 0 && path[0] == '/' ? path.slice(1) : path;\n    let url = this.resolveAppDataEndpoint(context, appId);\n    url += `${version}/${path}?keys=true`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.get(url, { headers: headers });\n    } else {\n      return this.http.get(url, { withCredentials: true });\n    }\n  }\n\n  // ** get stored value at provided path **\n  appDataGet(\n    path: string = '',\n    context: APPDATA_CONTEXT = APPDATA_CONTEXT.USER,\n    appId: string = this._appId,\n    version: string = this._appVersion\n  ) {\n    path = path.length != 0 && path[0] == '/' ? path.slice(1) : path;\n    let url = this.resolveAppDataEndpoint(context, appId);\n    url += `${version}/${path}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.get(url, { headers: headers });\n    } else {\n      return this.http.get(url, { withCredentials: true });\n    }\n  }\n\n  // ** set stored value at provided path **\n  appDataSet(\n    path: string,\n    value: any,\n    context: APPDATA_CONTEXT = APPDATA_CONTEXT.USER,\n    appId: string = this._appId,\n    version: string = this._appVersion\n  ) {\n    if (!path) {\n      return;\n    }\n    if (path[0] == '/') {\n      path = path.slice(1);\n    }\n    let ep = this.resolveAppDataEndpoint(context, appId);\n    if (!ep) {\n      return;\n    }\n    let url = `${ep}${version}/${Path.dotToSlash(path)}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.post(url, value, { headers: headers });\n    } else {\n      return this.http.post(url, value, { withCredentials: true });\n    }\n  }\n\n  // ** update / patch stored values using Array of JSON patch objects **\n  appDataPatch(\n    value: Array<JSON_Patch>,\n    context: APPDATA_CONTEXT = APPDATA_CONTEXT.USER,\n    appId: string = this._appId,\n    version: string = this._appVersion\n  ) {\n    let ep = this.resolveAppDataEndpoint(context, appId);\n    if (!ep || !version) {\n      return;\n    }\n    let url = `${ep}${version}`;\n    if (this._token) {\n      let headers = new HttpHeaders({ Authorization: `JWT ${this._token}` });\n      return this.http.post(url, value, { headers: headers });\n    } else {\n      return this.http.post(url, value, { withCredentials: true });\n    }\n  }\n}\n","/*****************************\n * SignalKClient Module:\n *****************************/\n\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n  imports: [HttpClientModule],\n  declarations: [],\n  exports: [],\n  providers: []\n})\nexport class SignalKClientModule {}\n\nexport * from './signalk-client';\nexport * from './utils';\nexport * from './stream-api';\nexport * from './http-api';\nexport * from './apps-api';\n","/*\n * Public API Surface of signalk-client-angular\n */\n\nexport * from './lib/signalk-client.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.SignalKApps","i3.SignalKHttp","i4.SignalKStream"],"mappings":"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"}