{"version":3,"file":"devicewise-angular.mjs","sources":["../../../projects/devicewise-angular/src/lib/models/dwcommon.ts","../../../projects/devicewise-angular/src/lib/models/dwsubscription.ts","../../../projects/devicewise-angular/src/lib/devicewise-misc.service.ts","../../../projects/devicewise-angular/src/lib/devicewise-api.service.ts","../../../projects/devicewise-angular/src/lib/devicewise-auth.service.ts","../../../projects/devicewise-angular/src/lib/devicewise-subscribe.service.ts","../../../projects/devicewise-angular/src/lib/devicewise-multisubscribe.service.ts","../../../projects/devicewise-angular/src/lib/devicewise-multisubscribe-store.service.ts","../../../projects/devicewise-angular/src/lib/devicewise-angular.module.ts","../../../projects/devicewise-angular/src/devicewise-angular.ts"],"sourcesContent":["export enum DwType {\r\n  AUTOMATIC = -1,\r\n  UNKNOWN = 0,\r\n  INT1 = 1,\r\n  INT2 = 2,\r\n  INT4 = 3,\r\n  INT8 = 4,\r\n  UINT1 = 5,\r\n  UINT2 = 6,\r\n  UINT4 = 7,\r\n  UINT8 = 8,\r\n  FLOAT4 = 9,\r\n  FLOAT8 = 10,\r\n  BOOL = 11,\r\n  STRING = 16,\r\n  TIMESTAMP = 17,\r\n  BINARY = 19\r\n}\r\n// 'INT1' | 'INT2' | 'INT4' | 'INT8' | 'UINT1' | 'UINT2' | 'UINT4' | 'UINT8' | 'FLOAT4' | 'FLOAT8' | 'BOOL' | 'STRING' | 'TIMESTAMP' | 'BINARY' | 'UNKNOWN'\r\n\r\nexport class DwVariable {\r\n  variable: string;\r\n  type?: DwType;\r\n  typeString?: string;\r\n  structId?: number;\r\n  count?: number;\r\n  xdim?: number;\r\n  ydim?: number;\r\n  zdim?: number;\r\n  xstart?: number;\r\n  ystart?: number;\r\n  zstart?: number;\r\n  length?: number;\r\n  casts?: number;\r\n  castStrings?: string[];\r\n  bitno?: number;\r\n  offset?: number;\r\n  desc?: string;\r\n  options?: string[];\r\n  optionStrings?: string[];\r\n  rate?:number;\r\n  condition?:Condition\r\n}\r\n\r\nexport class Condition {\r\n  deadband:number;\r\n}\r\n\r\nexport class DwSubscribeVariable extends DwVariable {\r\n  device: string;\r\n}\r\n","import * as DwResponse from './dwresponse';\r\nimport * as DwRequest from './dwrequest';\r\nimport { Observable } from 'rxjs';\r\nimport { DwType } from '../../public_api';\r\n\r\nexport class DwSubscription {\r\n  request: DwRequest.SubscribeRequest;\r\n  response: DwResponse.SubscribeResponse;\r\n  subscription: Observable<DwResponse.SubscribeDataResponse>;\r\n\r\n  constructor(device: string, variable: string, type: DwType, count: number, length: number) {\r\n    this.request = {\r\n      command: 'variable.subscribe',\r\n      params: {\r\n        device: device,\r\n        variable: variable,\r\n        type: type,\r\n        count: count,\r\n        length: length\r\n      }\r\n    };\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DevicewiseMiscService {\r\n\r\n  constructor() { }\r\n\r\n  public dwHandleError(e): Error {\r\n    let errorString = '';\r\n    if (e && e.errorMessages) {\r\n      e.errorMessages.forEach((errorMessage, i) => {\r\n        errorString += `${e.errorMessages[i]} `;\r\n        if (e.errorCodes[i]) {\r\n          errorString += `(${e.errorCodes[0]})`;\r\n        }\r\n      });\r\n    }\r\n    if (!errorString) {\r\n      if (e instanceof Error) {\r\n        errorString += e.toString();\r\n        errorString = errorString.replace('TypeError: ', '');\r\n      } else if (typeof e === 'object') {\r\n        errorString += JSON.stringify(e);\r\n      } else if (typeof e === 'string') {\r\n        errorString += e;\r\n      } else {\r\n        errorString += 'Unknown'\r\n      }\r\n    }\r\n    return new Error(errorString);\r\n  }\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { DevicewiseMiscService } from './devicewise-misc.service';\r\nimport { DwType } from './models/dwcommon';\r\nimport * as DwResponse from './models/dwresponse';\r\n\r\nconst httpOptions = {\r\n  headers: new HttpHeaders({}),\r\n  withCredentials: true\r\n};\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DevicewiseApiService {\r\n  public url = '';\r\n  public url$: BehaviorSubject<string> = new BehaviorSubject<string>(null);\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n    private dwMisc: DevicewiseMiscService\r\n  ) { }\r\n\r\n  setEndpoint(endpoint: string): void {\r\n    this.url = endpoint;\r\n    this.url$.next(endpoint);\r\n  }\r\n\r\n  getEndpoint(): string {\r\n    return this.url;\r\n  }\r\n\r\n  getEndpointasObservable(): Observable<string> {\r\n    return this.url$.asObservable();\r\n  }\r\n\r\n  public dwApiSend(command: string, params?: any): Observable<DwResponse.DwResponse> {\r\n    return this.http.post<DwResponse.DwResponse>(\r\n      this.url + '/api',\r\n      {\r\n        command: command,\r\n        params: params\r\n      },\r\n      httpOptions\r\n    ).pipe(\r\n      map((e) => {\r\n        if (e.success === false) {\r\n          const error = this.dwMisc.dwHandleError(e);\r\n          throw error;\r\n        }\r\n        return e;\r\n      })\r\n    );\r\n  }\r\n\r\n  // Authentication\r\n  public login(endpoint: string, username: string, password: string): Observable<DwResponse.LoginResponse> {\r\n    return this.http\r\n      .post<DwResponse.LoginResponse>(this.url + '/api/login', {\r\n        auth: {\r\n          username: username,\r\n          password: password\r\n        }\r\n      }, httpOptions).pipe(\r\n        map((e) => {\r\n          if (e.success === false) {\r\n            const error = this.dwMisc.dwHandleError(e);\r\n            throw error;\r\n          }\r\n          this.setEndpoint(endpoint);\r\n          return e;\r\n        })\r\n      );\r\n  }\r\n\r\n  public logout(): Observable<DwResponse.LogoutResponse> {\r\n    return this.http.post<DwResponse.LogoutResponse>(this.url + '/api/logout', null, httpOptions);\r\n  }\r\n\r\n  public sessionInfo(): Observable<DwResponse.SessionInfo> {\r\n    return this.dwApiSend('session.info').pipe(\r\n      tap((e) => this.setEndpoint(this.url))\r\n    );\r\n  }\r\n\r\n  public systemInfo(): Observable<DwResponse.SystemInfo> {\r\n    return this.dwApiSend('system.info');\r\n  }\r\n\r\n  public systemVariables(): Observable<DwResponse.SystemVariables> {\r\n    return this.dwApiSend('system.sysvar.list');\r\n  }\r\n\r\n  // Variable\r\n  public read(device: string, variable: string, type?: DwType, count?: number, length?: number): Observable<DwResponse.ReadResponse> {\r\n    return this.dwApiSend('variable.read.v2', {\r\n      device: device,\r\n      variable: variable,\r\n      type: type,\r\n      count: count,\r\n      length: length\r\n    });\r\n  }\r\n\r\n  public readV1(device: string, variable: string, type: DwType, count: number, length: number): Observable<DwResponse.ReadResponse> {\r\n    return this.dwApiSend('variable.read', {\r\n      device: device,\r\n      variable: variable,\r\n      type: type,\r\n      count: count,\r\n      length: length\r\n    });\r\n  }\r\n\r\n  public write(device: string, variable: string, type: DwType, count: number, length: number, data: any): Observable<DwResponse.WriteResponse> {\r\n    return this.dwApiSend('variable.write.v2', {\r\n      device: device,\r\n      variable: variable,\r\n      type: type,\r\n      count: count,\r\n      length: length,\r\n      data: data\r\n    });\r\n  }\r\n\r\n  public writeV1(device: string, variable: string, type: DwType, count: number, length: number, data: any): Observable<DwResponse.WriteResponse> {\r\n    return this.dwApiSend('variable.write', {\r\n      device: device,\r\n      variable: variable,\r\n      type: type,\r\n      count: count,\r\n      length: length,\r\n      data: data\r\n    });\r\n  }\r\n\r\n  // Subscribe\r\n  public subscribe(\r\n    device: string,\r\n    variable: string,\r\n    rate: number,\r\n    type: DwType,\r\n    count: number,\r\n    length: number\r\n  ): Observable<DwResponse.SubscribeResponse> {\r\n    return this.dwApiSend('variable.subscribe', {\r\n      device: device,\r\n      variable: variable,\r\n      type: type,\r\n      count: count,\r\n      length: length\r\n    });\r\n  }\r\n\r\n  public subscribeV1(\r\n    device: string,\r\n    variable: string,\r\n    rate: number,\r\n    type: DwType,\r\n    count: number,\r\n    length: number\r\n  ): Observable<DwResponse.SubscribeResponse> {\r\n    return this.dwApiSend('variable.subscribe', {\r\n      device: device,\r\n      variable: variable,\r\n      type: type,\r\n      count: count,\r\n      length: length\r\n    });\r\n  }\r\n\r\n  public unsubscribe(id: number): Observable<DwResponse.UnsubscribeResponse> {\r\n    return this.dwApiSend('variable.unsubscribe', { id: id });\r\n  }\r\n\r\n  public unsubscribeAll(): Observable<DwResponse.UnsubscribeAllResponse> {\r\n    return this.dwApiSend('variable.unsubscribe.all');\r\n  }\r\n\r\n  public notificationGet(): Observable<any> {\r\n    return this.dwApiSend('notification.get');\r\n  }\r\n\r\n  public notificationCount(): Observable<DwResponse.NotificationCountResponse> {\r\n    return this.dwApiSend('notification.count');\r\n  }\r\n\r\n  // Multisubscribe\r\n\r\n  // Device\r\n  public deviceList(): Observable<DwResponse.DeviceListResponse> {\r\n    return this.dwApiSend('device.list');\r\n  }\r\n\r\n  public deviceInfo(device: string, options: number): Observable<DwResponse.DeviceInfoResponse> {\r\n    return this.dwApiSend('device.info', { name: device, opts: options });\r\n  }\r\n\r\n  public deviceVariables(device: string): Observable<DwResponse.DeviceVariablesResponse> {\r\n    return this.dwApiSend('device.variables', { name: device });\r\n  }\r\n\r\n  public deviceTypeList(): Observable<DwResponse.DeviceTypeListResponse> {\r\n    return this.dwApiSend('devicetype.enum');\r\n  }\r\n\r\n  public deviceStart(device: string): Observable<DwResponse.DeviceStartResponse> {\r\n    return this.dwApiSend('device.start', { name: device });\r\n  }\r\n\r\n  public deviceStop(device: string): Observable<DwResponse.DeviceStopResponse> {\r\n    return this.dwApiSend('device.stop', { name: device });\r\n  }\r\n\r\n  // Trigger\r\n  public triggerList(project: string): Observable<DwResponse.TriggerListResponse> {\r\n    return this.dwApiSend('trigger.list', { project: project });\r\n  }\r\n\r\n  public triggerStart(project: string, trigger: string): Observable<DwResponse.TriggerStartResponse> {\r\n    return this.dwApiSend('trigger.start', { name: trigger, project: project });\r\n  }\r\n\r\n  public triggerFire(project: string, trigger: string): Observable<DwResponse.TriggerFireResponse> {\r\n    return this.dwApiSend('trigger.fire', { name: trigger, project: project });\r\n  }\r\n\r\n  public triggerStop(project: string, trigger: string): Observable<DwResponse.TriggerStopResponse> {\r\n    return this.dwApiSend('trigger.stop', { name: trigger, project: project });\r\n  }\r\n\r\n  public subTriggerFire(project: string, trigger: string, reporting: boolean, input: any[]): Observable<DwResponse.SubTriggerFireResponse> {\r\n    return this.dwApiSend('subtrigger.fire', { name: trigger, project: project, reportingEnabled: reporting, input: input });\r\n  }\r\n\r\n  public actionTypeList(): Observable<DwResponse.ActionTypeListResponse> {\r\n    return this.dwApiSend('actiontype.enum');\r\n  }\r\n\r\n  public eventTypeList(): Observable<DwResponse.EventTypeListResponse> {\r\n    return this.dwApiSend('eventtype.enum');\r\n  }\r\n\r\n  // Project\r\n  public projectList(): Observable<DwResponse.ProjectListResponse> {\r\n    return this.dwApiSend('project.list');\r\n  }\r\n\r\n  public projectStart(name): Observable<DwResponse.ProjectStartResponse> {\r\n    return this.dwApiSend('project.start', { name: name });\r\n  }\r\n\r\n  public projectStop(name): Observable<DwResponse.ProjectStopResponse> {\r\n    return this.dwApiSend('project.stop', { name: name });\r\n  }\r\n\r\n  // Channel\r\n\r\n  // TODO\r\n  public channelSubscribe(channel: string): Observable<DwResponse.ChannelSubscribeResponse> {\r\n    return this.dwApiSend('channel.subscribe', { channel: channel });\r\n  }\r\n\r\n  public channelUnsubscribe(id: string): Observable<DwResponse.ChannelUnsubscribeResponse> {\r\n    return this.dwApiSend('channel.unsubscribe', { id: id });\r\n  }\r\n\r\n  public channelUnsubscribeAll(): Observable<DwResponse.ChannelUnsubscribeAllResponse> {\r\n    return this.dwApiSend('channel.unsubscribe.all');\r\n  }\r\n\r\n  // SQLite\r\n  public sql(query): Observable<DwResponse.SqlResponse> {\r\n    return this.dwApiSend('sqlite.execute', { query: query });\r\n  }\r\n\r\n  public sqlSystem(query): Observable<DwResponse.SqlResponse> {\r\n    return this.dwApiSend('system.sqlite.execute', { query: query });\r\n  }\r\n\r\n  // System\r\n  public referenceList(type: string, key: string, flag: string): Observable<DwResponse.ReferenceListResponse> {\r\n    return this.dwApiSend('reference.list', { type: type, key: key, flag: flag });\r\n  }\r\n\r\n  // Misc\r\n  public ping(address: string, count: number): Observable<DwResponse.PingResponse> {\r\n    return this.dwApiSend('network.ping', { address: address, count: count });\r\n  }\r\n\r\n  public stagingFileList(path: string): Observable<DwResponse.StagingFileListResponse> {\r\n    return this.dwApiSend('filesystem.staging.dir.list', { path: path });\r\n  }\r\n\r\n  // Util\r\n  public dwTypeToNumber(dwType: string): DwType {\r\n    switch (dwType) {\r\n      case 'INT1':\r\n        return DwType.INT1;\r\n      case 'INT2':\r\n        return DwType.INT2;\r\n      case 'INT4':\r\n        return DwType.INT4;\r\n      case 'INT8':\r\n        return DwType.INT8;\r\n      case 'UINT1':\r\n        return DwType.UINT1;\r\n      case 'UINT2':\r\n        return DwType.UINT2;\r\n      case 'UINT4':\r\n        return DwType.UINT4;\r\n      case 'UINT8':\r\n        return DwType.UINT8;\r\n      case 'FLOAT4':\r\n        return DwType.FLOAT4;\r\n      case 'FLOAT8':\r\n        return DwType.FLOAT8;\r\n      case 'BOOL':\r\n        return DwType.BOOL;\r\n      case 'STRING':\r\n        return DwType.STRING;\r\n      case 'TIMESTAMP':\r\n        return DwType.TIMESTAMP;\r\n      case 'BINARY':\r\n        return DwType.BINARY;\r\n      default:\r\n        return DwType.UNKNOWN;\r\n    }\r\n  }\r\n\r\n  public dwTypeToString(number: number): string {\r\n    switch (number) {\r\n      case DwType.INT1:\r\n        return 'INT1';\r\n      case DwType.INT2:\r\n        return 'INT2';\r\n      case DwType.INT4:\r\n        return 'INT4';\r\n      case DwType.INT8:\r\n        return 'INT8';\r\n      case DwType.UINT1:\r\n        return 'UINT1';\r\n      case DwType.UINT2:\r\n        return 'UINT2';\r\n      case DwType.UINT4:\r\n        return 'UINT4';\r\n      case DwType.UINT8:\r\n        return 'UINT8';\r\n      case DwType.FLOAT4:\r\n        return 'FLOAT4';\r\n      case DwType.FLOAT8:\r\n        return 'FLOAT8';\r\n      case DwType.BOOL:\r\n        return 'BOOL';\r\n      case DwType.STRING:\r\n        return 'STRING';\r\n      case DwType.TIMESTAMP:\r\n        return 'TIMESTAMP';\r\n      case DwType.BINARY:\r\n        return 'BINARY';\r\n      default:\r\n        return 'UNKNOWN';\r\n    }\r\n  }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, flatMap, tap } from 'rxjs/operators';\r\nimport { DevicewiseApiService } from './devicewise-api.service';\r\nimport * as DwResponse from './models/dwresponse';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DevicewiseAuthService {\r\n  public url = '';\r\n  private loggedIn = false;\r\n\r\n  constructor(\r\n    private cookieService: CookieService,\r\n    private apiService: DevicewiseApiService\r\n  ) {\r\n    this.apiService.getEndpointasObservable().subscribe((url) => this.url = url);\r\n  }\r\n\r\n  private setLoginStatus(status: boolean) {\r\n    this.loggedIn = status;\r\n  }\r\n\r\n  public getLoginStatus(): boolean {\r\n    return this.loggedIn;\r\n  }\r\n\r\n  public getSessionInfo(): Observable<DwResponse.SessionInfo> {\r\n    return this.apiService.sessionInfo();\r\n  }\r\n\r\n  public easyLogin(endpoint: string, username: string, password: string): Observable<DwResponse.LoginResponse> {\r\n    this.apiService.setEndpoint(endpoint);\r\n    return this.getSessionInfo().pipe(\r\n      flatMap((sessionInfo: DwResponse.SessionInfo) => {\r\n        if (sessionInfo.success) {\r\n          this.apiService.setEndpoint(endpoint);\r\n          this.setLoginStatus(true);\r\n          return of({\r\n            success: sessionInfo.success,\r\n            sessionId: null,\r\n            roles: sessionInfo.params.roles,\r\n            requirePasswordChange: sessionInfo.params.requirePasswordChange,\r\n            requireWebPasswordChange: sessionInfo.params?.requireWebPasswordChange,\r\n            features: sessionInfo.params.features\r\n          });\r\n        } else {\r\n          return of({\r\n            success: sessionInfo.success,\r\n            errorCodes: sessionInfo.errorCodes,\r\n            errorMessages: sessionInfo.errorMessages\r\n          });\r\n          return this.login(endpoint, username, password);\r\n        }\r\n      }),\r\n      catchError((err) => this.login(endpoint, username, password))\r\n    );\r\n  }\r\n\r\n  public login(endpoint: string, username: string, password: string): Observable<DwResponse.LoginResponse> {\r\n    this.apiService.setEndpoint(endpoint);\r\n    return this.apiService.login(endpoint, username, password).pipe(\r\n      tap((login) => {\r\n        this.setLoginStatus(login.success);\r\n        if (login.success) {\r\n          this.cookieService.set('sessionId', login.sessionId, (new Date).getHours() + 1, '/', null, false, 'Strict');\r\n          this.cookieService.set('roles', login.roles[0], (new Date).getHours() + 1, '/', null, false, 'Strict');\r\n        }\r\n        return login;\r\n      })\r\n    );\r\n  }\r\n\r\n  public logout(): Observable<DwResponse.LogoutResponse> {\r\n    return this.apiService.logout().pipe(\r\n      tap((response) => {\r\n        if (response.success) {\r\n          this.setLoginStatus(false);\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  public getSessionId(): string {\r\n    return this.cookieService.get('sessionId');\r\n  }\r\n\r\n  public getRole(): string {\r\n    return this.cookieService.get('roles');\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport fetchStream from 'fetch-readablestream';\r\nimport * as DwResponse from './models/dwresponse';\r\nimport * as DwSubscription from './models/dwsubscription';\r\nimport { DevicewiseAuthService } from './devicewise-auth.service';\r\nimport { DevicewiseApiService } from './devicewise-api.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\n\r\nexport class DevicewiseSubscribeService {\r\n  private activeSubscriptions: { [key: string]: Subject<DwResponse.SubscribeDataResponse> } = {};\r\n  private notificationsController;\r\n  private url = '';\r\n\r\n  constructor(private apiService: DevicewiseApiService) {\r\n    this.apiService.getEndpointasObservable().subscribe((url) => this.url = url);\r\n  }\r\n\r\n  public getSubscription(variable: DwSubscription.DwSubscription): Observable<DwResponse.SubscribeResponse> {\r\n    const newSubscription: Subject<DwResponse.SubscribeDataResponse> = new Subject();\r\n    variable.subscription = newSubscription.asObservable();\r\n\r\n    return this.apiService.subscribe(\r\n      variable.request.params.device,\r\n      variable.request.params.variable,\r\n      1,\r\n      variable.request.params.type,\r\n      variable.request.params.count,\r\n      variable.request.params.length\r\n    ).pipe(\r\n      tap((response) => {\r\n        variable.response = response;\r\n        if (response.success) {\r\n          this.activeSubscriptions[response.params.id] = newSubscription;\r\n\r\n          this.apiService.read(\r\n            variable.request.params.device,\r\n            variable.request.params.variable,\r\n            variable.request.params.type,\r\n            variable.request.params.count,\r\n            variable.request.params.length\r\n          ).subscribe(readResponse => {\r\n            if (readResponse.success) {\r\n              newSubscription.next({\r\n                success: true,\r\n                params: {\r\n                  variable: readResponse.params.variable,\r\n                  length: readResponse.params.length,\r\n                  count: readResponse.params.count,\r\n                  status: readResponse.params.status,\r\n                  type: readResponse.params.type,\r\n                  data: readResponse.params.data,\r\n                  id: response.params.id\r\n                }\r\n              });\r\n            }\r\n          });\r\n        } else {\r\n          if (response.errorCodes[0] === -6428) {\r\n            console.warn('DeviceWISE subscription error. Subscription Already Exists.', response);\r\n          } else {\r\n            console.warn('Variable name: ' + variable.request.params.variable);\r\n            console.warn(response);\r\n          }\r\n        }\r\n      }, (error) => {\r\n        console.warn('DeviceWISE subscription error.', error);\r\n        if (error.status === 401) {\r\n          this.apiService.logout().subscribe();\r\n        }\r\n      }\r\n      )\r\n    );\r\n  }\r\n\r\n  public unsubscribeAll(): Observable<DwResponse.UnsubscribeAllResponse> {\r\n    return this.apiService.unsubscribeAll();\r\n  }\r\n\r\n  public unsubscribe(id: number): Observable<DwResponse.UnsubscribeResponse> {\r\n    return this.apiService.unsubscribe(id);\r\n  }\r\n\r\n  public getNotifications() {\r\n    this.notificationsController = new AbortController();\r\n\r\n    fetchStream(this.url + '/api', {\r\n      signal: this.notificationsController.signal,\r\n      method: 'POST',\r\n      body: JSON.stringify({\r\n        command: 'notification.get'\r\n      }),\r\n      credentials: 'include'\r\n    }).then(response => {\r\n      const reader = response.body.getReader();\r\n      const chunks = '';\r\n      this.pump(reader, chunks);\r\n    }).catch(error => {\r\n      console.warn('FETCH STREAM ERROR', error);\r\n    });\r\n  }\r\n\r\n  private pump(reader, chunks) {\r\n    let toRead = 0;\r\n    let length = 0;\r\n    let subString;\r\n    let subObj;\r\n    const oldcharactersToRead = toRead;\r\n\r\n    reader.read().then(({ value, done }) => {\r\n      chunks = chunks.concat(new TextDecoder('utf-8').decode(value));\r\n      if (done) {\r\n        return;\r\n      }\r\n      return this.pump(reader, chunks);\r\n    });\r\n\r\n    while (chunks.length > 10) {\r\n      if (isNaN((toRead = parseInt(chunks, 10)))) {\r\n        console.warn('Pump parseInt failure when reading chunk length.');\r\n        toRead = oldcharactersToRead;\r\n        length = 0;\r\n      } else {\r\n        length = toRead.toString().length;\r\n      }\r\n\r\n      subString = chunks.substring(length, toRead + length);\r\n      try {\r\n        subObj = JSON.parse(subString);\r\n        if (subObj.success === false) {\r\n          this.abortNotifications();\r\n          console.warn('DeviceWISE subscription error. Abort notifications', subObj);\r\n          if (subObj.errorCodes[0] === -1451) {\r\n            this.apiService.logout();\r\n          } else {\r\n            this.getNotifications();\r\n          }\r\n          return;\r\n        } else {\r\n          if (this.activeSubscriptions[subObj.params.id]) {\r\n            this.activeSubscriptions[subObj.params.id].next(subObj);\r\n            const readLength = toRead + toRead.toString().length;\r\n            chunks = chunks.substr(readLength);\r\n          }\r\n        }\r\n      } catch {\r\n        console.warn('Failed to parse', subString);\r\n      }\r\n      if (chunks.length >= 65536) {\r\n        console.warn('Chunk too long! Resetting Chunk.');\r\n        chunks = '';\r\n        this.abortNotifications();\r\n        this.getNotifications();\r\n        return;\r\n      }\r\n    }\r\n  }\r\n\r\n  public abortNotifications() {\r\n    if (this.notificationsController) {\r\n      this.notificationsController.abort();\r\n    }\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport fetchStream from 'fetch-readablestream';\r\nimport { Observable, of, throwError,timer } from 'rxjs';\r\nimport { concatAll, map, retryWhen, share, switchMap, tap,delayWhen } from 'rxjs/operators';\r\nimport { DevicewiseApiService } from './devicewise-api.service';\r\nimport { DwSubscribeVariable,DwVariable } from './models/dwcommon';\r\n\r\nexport interface MultiSubscribeResponse {\r\n  success: boolean;\r\n  params: MultiSubscribeResponseParams;\r\n  errorCodes?: number[];\r\n  errorMessages?: string[];\r\n}\r\n\r\nexport interface MultiSubscribeResponseParams {\r\n  device: string;\r\n  variable: string;\r\n  status:string;\r\n  data: any[];\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DevicewiseMultisubscribeService {\r\n  public multiSubscribeShared: Observable<MultiSubscribeResponseParams>;\r\n  private url = '';\r\n  public requestVariables: DwSubscribeVariable[] = [];\r\n\r\n  constructor(private apiService: DevicewiseApiService) {\r\n    this.apiService.getEndpointasObservable().subscribe((url) => this.url = url);\r\n  }\r\n\r\n  /**\r\n   * Subscribe to multiple `requestVariables`. emits inital value and then on change of value.\r\n   * Observable, and emits the resulting values as an Observable.\r\n   *\r\n   * ## Example\r\n   * Subscribe to a variable 'OEE' from device 'Machine1' and then unsubscribe a second later.\r\n   * ```ts\r\n   * import { DevicewiseMultisubscribeNewService } from './devicewise-multisubscribe-new.service';\r\n   * import { DwSubscription } from './models/dwsubscription';\r\n   * import { DwType } from './models/dwcommon';\r\n   *\r\n   * const variables = [{ device: 'System Monitor', variable: 'CPU.CPU Usage', type: DwType.INT4, count: 1, length: -1 }];\r\n   * const multiSubscribe$ = service.multiSubscribe(variables);\r\n   * const subscription = multiSubscribe$.subscribe({\r\n   *   next: (data) => console.log('next', data),\r\n   *   error: (err) => console.log('error', err),\r\n   *   complete: () => console.log('complete')\r\n   * });\r\n   *\r\n   * setTimeout(() => {\r\n   *   subscription.unsubscribe();\r\n   * }, 1000);\r\n   * ```\r\n   *\r\n   * @param requestVariables requestVariables Variables to subscribe to.\r\n   * @method map\r\n   * @owner Observable\r\n   */\r\n  public multiSubscribe(requestVariables: DwSubscribeVariable[]): Observable<MultiSubscribeResponseParams> {\r\n    this.requestVariables=requestVariables;\r\n    let buffer = '';\r\n    let buffer8: Uint8Array = new Uint8Array();\r\n    let lastCharactersToReadNumber = 0;\r\n   /// console.log(\"multiSubscribe \",requestVariables);\r\n    return this.fetchObservable(this.url + '/api', {\r\n      method: 'POST',\r\n      body: JSON.stringify({\r\n        command: 'multisubscribe.v2',\r\n        params: {\r\n          minimal: true,\r\n          subscriptions: {\r\n            variable: requestVariables\r\n          }\r\n        }\r\n      }),\r\n      credentials: 'include'\r\n    }).pipe(\r\n      tap(({ data, sdata }) => {\r\n        buffer += sdata;\r\n        buffer8 = this.concatUint8Arrays(buffer8, data);\r\n      }),\r\n      map(() => {\r\n        const objs: MultiSubscribeResponse[] = [];\r\n        while (buffer.length > 0) {\r\n          let obj: MultiSubscribeResponse;\r\n          let bytesToRead = 0;\r\n          let charactersToRead = 0;\r\n          let bytesToReadStringLength = 0;\r\n\r\n          if (isNaN((bytesToRead = parseInt(buffer, 10)))) {\r\n            bytesToRead = lastCharactersToReadNumber;\r\n            bytesToReadStringLength = 0;\r\n          } else {\r\n            lastCharactersToReadNumber = bytesToRead;\r\n            bytesToReadStringLength = bytesToRead.toString().length;\r\n          }\r\n\r\n          const subBuffer8 = buffer8.subarray(bytesToReadStringLength, bytesToReadStringLength + bytesToRead);\r\n          const subString = new TextDecoder('utf-8').decode(subBuffer8);\r\n          charactersToRead = subString.length;\r\n\r\n          try {\r\n            obj = JSON.parse(subString);\r\n          } catch {\r\n            buffer = buffer.substring(bytesToReadStringLength);\r\n            buffer8 = buffer8.subarray(bytesToReadStringLength);\r\n            break;\r\n          }\r\n\r\n          if (obj.success === true) {\r\n            //added to fix decimal precision lost issue when parsing usng JSON parser\r\n            obj=this.updateDigits(obj,subString);\r\n            objs.push(obj);\r\n          } else {\r\n            buffer = buffer.substring(bytesToReadStringLength + charactersToRead);\r\n            buffer8 = buffer8.subarray(bytesToReadStringLength + bytesToRead);\r\n            if(obj?.errorMessages){\r\n              console.log(\"isNaN false  throw obj \",obj?.errorMessages);\r\n            }else{\r\n              console.log(\"isNaN false  throw obj \");\r\n            }\r\n            throw obj;\r\n          }\r\n\r\n          buffer = buffer.substring(bytesToReadStringLength + charactersToRead);\r\n          buffer8 = buffer8.subarray(bytesToReadStringLength + bytesToRead);\r\n        }\r\n\r\n        return objs;\r\n      }),\r\n      concatAll(),\r\n      retryWhen((errors) => errors.pipe(\r\n        delayWhen(sourceErr => {\r\n          if (sourceErr?.success === false && sourceErr?.errorCode !== \"undefined\" && sourceErr?.errorCodes[0] === -7002) {\r\n            return timer(100); // no delay\r\n           }else if(sourceErr === \"StreamDone\"){\r\n            return timer(10000);\r\n           }else  {\r\n            return timer(2000);\r\n          }\r\n        }),\r\n        switchMap((sourceErr) => {\r\n          if (sourceErr?.success === false && sourceErr?.errorCode !== \"undefined\" && sourceErr?.errorCodes[0] === -7002) {\r\n           // console.log(\"sourceErr?.errorCodes[0] === -7002\");\r\n            return of(true);\r\n          }\r\n          else if (sourceErr?.message === \"network error\") {\r\n            console.log(\"multiSubscribe retryWhen network error\");\r\n            //return of(true);\r\n            return throwError(\"StreamDone\");\r\n          }else if ((sourceErr === 1) || (sourceErr === \"1\")) {\r\n            console.log(\"multiSubscribe retryWhen sourceErr === 1 \");\r\n            return of(true);\r\n          }else if (sourceErr === \"StreamDone\") {\r\n            console.log(\"multiSubscribe retryWhen StreamDone\");\r\n            return throwError(sourceErr);\r\n           // return of(true);\r\n          }else if(sourceErr?.errorMessages !== \"undefined\"  && sourceErr?.errorMessages[0]?.includes('Access denied')){\r\n            console.log(\"multiSubscribe retryWhen Access denied\");\r\n            return throwError('StreamDone');\r\n            //return of(true);\r\n          }else if(sourceErr?.message !== \"undefined\"  && sourceErr?.message===\"Invalid string length\"){\r\n            console.log(\"multiSubscribe retryWhen Invalid string length\");\r\n             return of(true);\r\n          }\r\n          else if (sourceErr?.message !== \"undefined\"  && sourceErr?.message ===\"Failed to fetch\") {\r\n            console.log(\"multiSubscribe retryWhen Failed to fetch\");\r\n            return throwError('StreamDone');\r\n            //return of(true);\r\n          }\r\n          else if (sourceErr?.message !== \"undefined\"  && sourceErr?.message?.includes('Cannot read properties')) {\r\n            console.log(\"multiSubscribe retryWhen Cannot read properties\",sourceErr?.message);\r\n            return of(true);\r\n          }\r\n          else {\r\n            console.log(\"multiSubscribe  retryWhen throwError \",sourceErr,sourceErr?.message,new Date().getSeconds());\r\n            return throwError(sourceErr);\r\n          }\r\n        }),\r\n\r\n      )),\r\n\r\n      map((data) => data.params),\r\n      share()\r\n    );\r\n  }\r\n/**\r\n  updateDigits(obj, subString): any {\r\n    var variable=this.requestVariables?.find(variable => variable?.device === obj?.params?.device && variable?.variable ===obj?.params?.variable);\r\n    if ((obj?.params?.data?.length == 1) && (variable?.typeString == \"FLOAT8\" || variable?.typeString == \"INT8\" || variable?.typeString == \"UINT8\")) {\r\n      var startIndex = subString.indexOf(\"[\");\r\n      var endIndex = subString.indexOf(\"]\");\r\n      if (startIndex != -1 && endIndex != -1) {\r\n        var decimal = subString.substring(startIndex + 1, endIndex);\r\n        //let numberValue: number = +decimal;\r\n        let models: Array<any> = [];\r\n        models[0] = decimal;\r\n        obj.params.data = models;\r\n      }\r\n    }\r\n    return obj;\r\n  }\r\n*/\r\n  updateDigits(obj, jsonString) {\r\n    var variable = this.requestVariables?.find(variable => variable?.device === obj?.params?.device && variable?.variable === obj?.params?.variable);\r\n    if ((obj?.params?.data?.length == 1) && (variable?.typeString == \"FLOAT8\" || variable?.typeString == \"INT8\" || variable?.typeString == \"UINT8\")) {\r\n        var dataString = jsonString.substring(jsonString?.indexOf(\"data\"), jsonString?.length - 1);\r\n        var startIndex = dataString?.indexOf(\"[\");\r\n        var endIndex = dataString?.indexOf(\"]\");\r\n        if (startIndex != -1 && endIndex != -1) {\r\n            var decimal = dataString.substring(startIndex + 1, endIndex);\r\n            //let numberValue: number = +decimal;\r\n            let models = [];\r\n            models[0] = decimal;\r\n            obj.params.data = models;\r\n        }\r\n    }\r\n    return obj;\r\n}\r\n\r\n  private fetchObservable(input: RequestInfo, init?: RequestInit): Observable<{ data: Uint8Array, sdata: string }> {\r\n    let abortController = new AbortController();\r\n    return new Observable((observer) => {\r\n      abortController = new AbortController();\r\n      fetchStream(\r\n        input,\r\n        { signal: abortController.signal, ...init }\r\n      ).then(response => {\r\n        const reader = response.body.getReader();\r\n\r\n        function pump() {\r\n          return reader.read().then(({ value, done }) => {\r\n            const data: Uint8Array = value;\r\n            if (done) {\r\n              console.log('done', data);\r\n              setTimeout('', 1000);\r\n              observer.error(\"StreamDone\");\r\n              return;\r\n            }\r\n            const sdata: string = new TextDecoder('utf-8').decode(data);\r\n            observer.next({ data, sdata });\r\n            return pump();\r\n          }).catch((err) => {\r\n            if (err.code !== 20) {\r\n              console.log('fetchObservable read ',err?.message,err?.code)\r\n            } // Ignore\r\n            else {console.log('err', err.code,err?.name,err?.message);\r\n            }\r\n            if(err?.message ===\"Failed to fetch\" || err?.message ===\"network error\"){\r\n              setTimeout('', 1000);\r\n              observer.error(\"StreamDone\");\r\n            }else{\r\n              observer.error(err);\r\n            }\r\n          });\r\n        }\r\n        pump();\r\n      //  console.log(' out1')\r\n      }).catch((err) => {\r\n        if (err.code !== 20) {\r\n          console.log('fetchObservable fetchStream ', err?.message,err?.code)\r\n        } // Ignore\r\n        else {console.log('err ', err.code,err?.name,err?.message);}\r\n        if(err?.message ===\"Failed to fetch\" || err?.message ===\"network error\"){\r\n          setTimeout('', 1000);\r\n          observer.error(\"StreamDone\");\r\n        }else{\r\n          observer.error(err);\r\n        }\r\n      });\r\n     // console.log(' out2')\r\n     return () => {\r\n      //console.log(' abortController.abort()')\r\n        abortController.abort();\r\n        observer.complete();\r\n      };\r\n    });\r\n\r\n  }\r\n\r\n  private concatUint8Arrays(a: Uint8Array, b: Uint8Array) { // a, b TypedArray of same type\r\n    const c: Uint8Array = new Uint8Array(a.length + b.length);\r\n    c.set(a, 0);\r\n    c.set(b, a.length);\r\n    return c;\r\n  }\r\n\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\r\nimport { catchError, debounceTime, filter, finalize, share, switchMap,tap } from 'rxjs/operators';\r\nimport { DevicewiseApiService } from './devicewise-api.service';\r\nimport { DevicewiseMiscService } from './devicewise-misc.service';\r\nimport { DevicewiseMultisubscribeService, MultiSubscribeResponseParams } from './devicewise-multisubscribe.service';\r\nimport { DwSubscribeVariable } from './models/dwcommon';\r\n\r\ninterface MultiSubscribePair {\r\n  [key: string]: Observable<MultiSubscribeResponseParams>;\r\n}\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DevicewiseMultisubscribeStoreService implements OnDestroy {\r\n  private multiSub$: Subject<MultiSubscribeResponseParams> = new Subject<MultiSubscribeResponseParams>();\r\n  private mutliSubRequest$: Subject<Observable<MultiSubscribeResponseParams>> = new Subject<Observable<MultiSubscribeResponseParams>>();\r\n  public url = '';\r\n  public requestVariables: DwSubscribeVariable[] = [];\r\n  public requestVariableSubscriptions: MultiSubscribePair = {};\r\n  private subscriptionRequestQueue$: Subject<null> = new Subject<null>();\r\n  private subscriptionRequestQueueSub: Subscription;\r\n\r\n  constructor(\r\n    private devicewiseMultisubscribeService: DevicewiseMultisubscribeService,\r\n    private apiService: DevicewiseApiService,\r\n    private dwMisc: DevicewiseMiscService\r\n  ) {\r\n    this.apiService.getEndpointasObservable().subscribe((url) => this.url = url);\r\n\r\n    this.subscriptionRequestQueueSub = this.subscriptionRequestQueue$.asObservable().pipe(\r\n      debounceTime(20),\r\n    ).subscribe((i) => this.reSubscribe());\r\n  }\r\n\r\n  /**\r\n   * Returns an observable for a multisubscribe store which contains one multisubscribe stream.\r\n   * Emits on change of value.\r\n   *\r\n   * ## Example\r\n   * Subscribe to a variable 'CPU.CPU Usage' from device 'System Monitor' and then unsubscribe a second later.\r\n   * ```ts\r\n   * const variables = [{ device: 'System Monitor', variable: 'CPU.CPU Usage', type: DwType.INT1, count: 1, length: -1}];\r\n   * const subscription = service.subscriptionAsObservable().subscribe((data) => console.log(data));\r\n   *\r\n   * service.addRequestVariables(variables);\r\n   * setTimeout(() => { subscription.unsubscribe(); }, 1000);\r\n   * ```\r\n   *\r\n   * @returns observable of multisubscribe store stream.\r\n   * @method subscriptionAsObservable\r\n   */\r\n  public subscriptionAsObservable(): Observable<MultiSubscribeResponseParams> {\r\n    return this.mutliSubRequest$.pipe(\r\n      switchMap((val) => val)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Get all variables in the multisubscribe store.\r\n   *\r\n   * @return Request variables from multisubscribe store.\r\n   * @method getRequestVariables\r\n   */\r\n  public getRequestVariables(): DwSubscribeVariable[] {\r\n    return this.requestVariables;\r\n  }\r\n\r\n  /**\r\n   * Add request variables to multisubscribe store.\r\n   *\r\n   * @param variables requestVariables Variables to add.\r\n   * @method addRequestVariables\r\n   */\r\n  public addRequestVariables(variables: DwSubscribeVariable[]): Observable<MultiSubscribeResponseParams> {\r\n    //Clone the variable\r\n    variables=this.getCloneOfRequestedVariable(variables);\r\n\r\n    let foundVar = 0;\r\n    const streams: Observable<MultiSubscribeResponseParams>[] = [];\r\n\r\n    if (!variables) {\r\n      return;\r\n    }\r\n    //console.log(\"addRequestVariables= \",variables);\r\n     variables.forEach((variable) => {\r\n      foundVar = this.requestVariables.findIndex((v) => variable.device === v.device && variable.variable === v.variable);\r\n      if (foundVar === -1) {\r\n        this.requestVariables.push(variable); // If variable doesn't exist add it.\r\n      }else{\r\n        var storedVariable=this.requestVariables[foundVar];\r\n        if (!isNaN(storedVariable?.rate)) {\r\n          storedVariable.rate=variable.rate;\r\n        }\r\n        if(variable?.count > storedVariable?.count){\r\n          storedVariable.count=variable.count;\r\n          this.requestVariables[foundVar]=storedVariable;\r\n        }\r\n      }\r\n      let stream = this.requestVariableSubscriptions[`${variable.device}.${variable.variable}`];\r\n     // if (foundVar === -1 && stream) {\r\n       // delete this.requestVariableSubscriptions[`${variable.device}.${variable.variable}`];\r\n      //  stream=undefined;\r\n    //  }\r\n      if (!stream) { // If stream doesn't exist create it\r\n        stream = this.subscriptionAsObservable().pipe(\r\n          filter((v) => variable.device === v.device && variable.variable === v.variable),\r\n          finalize(() => { // When stream done remove from variable list and stream list.\r\n          this.removeRequestVariables([variable]);\r\n          delete this.requestVariableSubscriptions[`${variable.device}.${variable.variable}`];\r\n          }),\r\n          share(), // Ensure observable is shared among multiple subscribers.\r\n          catchError((err) => {\r\n            const error = this.dwMisc.dwHandleError(err);\r\n            throw error;\r\n          })\r\n        );\r\n        this.requestVariableSubscriptions[`${variable.device}.${variable.variable}`] = stream;\r\n      }\r\n      streams.push(stream);\r\n    });\r\n\r\n    this.subscriptionRequestQueue$.next(null);\r\n    return merge(...streams);\r\n  }\r\n\r\n  /**\r\n   * Remove request variables to multisubscribe store.\r\n   *\r\n   * @param requestVariables requestVariables Variables to remove.\r\n   * @method removeRequestVariables\r\n   */\r\n  public removeRequestVariables(variables: DwSubscribeVariable[]) {\r\n    variables.forEach((variable) => {\r\n      const foundIndex = this.requestVariables.findIndex(\r\n        (requestVariable) => (requestVariable.device === variable.device) && (requestVariable.variable === variable.variable)\r\n      );\r\n      this.requestVariables.splice(foundIndex, 1);\r\n    });\r\n    this.subscriptionRequestQueue$.next(null);\r\n  }\r\n\r\n  private reSubscribe() {\r\n   // console.log(\" reSubscribe \");\r\n   const sub: Observable<MultiSubscribeResponseParams> = this.devicewiseMultisubscribeService.multiSubscribe(this.requestVariables)\r\n     .pipe(\r\n       tap({\r\n         error: (err) => {\r\n           console.log(\"reSubscribe err=\", err);\r\n           if(err===\"StreamDone\"){\r\n\r\n              //console.log(\"reSubscribe StreamDone\");\r\n              this.reSubscribe();\r\n           }\r\n           if(err?.errorMessages){\r\n              err?.errorMessages.forEach(errorMessage => {\r\n                if (errorMessage.startsWith(\"Invalid parameter failure for variable subscription: \")) {\r\n                  const json = errorMessage.replace(\"Invalid parameter failure for variable subscription: \", \"\")\r\n                  const invalidVariables = JSON.parse(json);\r\n                  this.removeRequestVariables(invalidVariables)\r\n                }\r\n              });\r\n          }\r\n         }\r\n       })\r\n     );\r\n    this.mutliSubRequest$.next(sub);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.multiSub$.unsubscribe();\r\n    this.multiSub$.complete();\r\n    this.mutliSubRequest$.complete();\r\n    this.subscriptionRequestQueueSub.unsubscribe();\r\n    this.subscriptionRequestQueue$.complete();\r\n  }\r\n\r\n\r\n  getCloneOfRequestedVariable(variables: DwSubscribeVariable[]){\r\n    var variablesClone: DwSubscribeVariable[] = [];\r\n    variables.forEach((variable) => {\r\n     variablesClone.push(this.cloneDwSubscribeVariable(variable));\r\n    });\r\n    return variablesClone;\r\n  }\r\n\r\n  cloneDwSubscribeVariable(dwSubscribeVariable){\r\n    var dwSubscribeVariableClone: DwSubscribeVariable = new DwSubscribeVariable();\r\n    dwSubscribeVariableClone.device=\"\"+dwSubscribeVariable.device;\r\n    dwSubscribeVariableClone.variable=\"\"+dwSubscribeVariable.variable;\r\n    dwSubscribeVariableClone.type=dwSubscribeVariable.type;\r\n    dwSubscribeVariableClone.typeString=dwSubscribeVariable.typeString;\r\n    dwSubscribeVariableClone.structId=dwSubscribeVariable.structId;\r\n    dwSubscribeVariableClone.count=dwSubscribeVariable.count;\r\n    dwSubscribeVariableClone.xdim=dwSubscribeVariable.xdim;\r\n    dwSubscribeVariableClone.ydim=dwSubscribeVariable.ydim;\r\n    dwSubscribeVariableClone.zdim=dwSubscribeVariable.zdim;\r\n    dwSubscribeVariableClone.xstart=dwSubscribeVariable.xstart;\r\n    dwSubscribeVariableClone.ystart=dwSubscribeVariable.ystart;\r\n    dwSubscribeVariableClone.zstart=dwSubscribeVariable.zstart;\r\n    dwSubscribeVariableClone.length=dwSubscribeVariable.length;\r\n    dwSubscribeVariableClone.casts=dwSubscribeVariable.casts;\r\n    dwSubscribeVariableClone.castStrings=dwSubscribeVariable.castStrings;\r\n    dwSubscribeVariableClone.bitno=dwSubscribeVariable.bitno;\r\n    dwSubscribeVariableClone.offset=dwSubscribeVariable.offset;\r\n    dwSubscribeVariableClone.desc=dwSubscribeVariable.desc;\r\n    dwSubscribeVariableClone.options=dwSubscribeVariable.options;\r\n    dwSubscribeVariableClone.optionStrings=dwSubscribeVariable.optionStrings;\r\n    dwSubscribeVariableClone.rate=dwSubscribeVariable.rate;\r\n    dwSubscribeVariableClone.condition=dwSubscribeVariable.condition;\r\n    return dwSubscribeVariableClone;\r\n  }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { DevicewiseAuthService } from './devicewise-auth.service';\r\nimport { DevicewiseApiService } from './devicewise-api.service';\r\nimport { DevicewiseSubscribeService } from './devicewise-subscribe.service';\r\nimport { DevicewiseMultisubscribeService } from './devicewise-multisubscribe.service';\r\nimport { DevicewiseMultisubscribeStoreService } from './devicewise-multisubscribe-store.service';\r\nimport { DevicewiseMiscService } from './devicewise-misc.service';\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [\r\n    HttpClientModule\r\n  ],\r\n  exports: [],\r\n  providers: [CookieService, DevicewiseAuthService]\r\n})\r\nexport class DevicewiseAngularModule {\r\n  static forRoot(): ModuleWithProviders<DevicewiseAngularModule> {\r\n    return {\r\n      ngModule: DevicewiseAngularModule,\r\n      providers: [\r\n        DevicewiseAuthService,\r\n        DevicewiseApiService,\r\n        DevicewiseSubscribeService,\r\n        DevicewiseMultisubscribeService,\r\n        DevicewiseMultisubscribeStoreService,\r\n        DevicewiseMiscService\r\n      ]\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}