@spytecgps/nova-orm 1.0.108 → 1.0.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ import { Device } from '../../entities';
2
+ import { ConnectionStatusInfo, DeviceStatusEntity, DeviceStatusRecord, GetDeviceStatusesParams } from '../../types/deviceStatus';
3
+ import { Logger } from '../../types/logger';
4
+ export declare const getExtendedDeviceStatus: (deviceStatus: DeviceStatusEntity, deviceInfo: Device) => ConnectionStatusInfo[];
5
+ export declare const addOnlineStatus: (deviceStatus: DeviceStatusEntity) => string | undefined;
6
+ export declare const adjustDeviceStatusProperties: (params: GetDeviceStatusesParams) => void;
7
+ export declare const tryExtendDeviceStatus: (params: {
8
+ logger: Logger;
9
+ deviceStatus: DeviceStatusRecord;
10
+ withConnectionStatusInfo?: boolean;
11
+ withOnlineStatus?: boolean;
12
+ }) => void;
@@ -0,0 +1,207 @@
1
+ // threshold since exodus was created start ~ 2019-01-01
2
+ const ALWAYS_ON_THRESHOLD = new Date().getTime() - new Date(2019, 0, 1).getTime();
3
+ const THRESHOLD_24HRS = 24 * 60 * 60 * 1000; //24hrs
4
+ const CELL_THRESHOLD_MS = 300000; // 1000*60*5 // 5mins
5
+ const CELL_STOPPED_THRESHOLD_MS = 10800000; // 200*60*1000 // 200min - 3:20 - 3hr and 20 min
6
+ //add 100% padding for moving reporting frequency
7
+ const PADDING_MOVING = 2;
8
+ //add 20% padding for stopped reporting frequency
9
+ const PADDING_STOPPED = 1.2;
10
+ const HOUR_IN_MS = 60 * 60 * 1000;
11
+ const assetTrackerIdsList = [8, 9, 13, 20, 31, 32];
12
+ // Custom workflow only applies to Device Extanded Status
13
+ /*
14
+ We Had conversations of centralizing this flow .. but it is only consumed by deviceExt status so we only populate here
15
+ */
16
+ const getConfidenceValue = (dateDiffInMs, thresholdWindowMS) => {
17
+ let confidenceValue = 0;
18
+ if (dateDiffInMs > thresholdWindowMS) {
19
+ confidenceValue = 0;
20
+ }
21
+ else {
22
+ if (dateDiffInMs === 0) {
23
+ confidenceValue = 1;
24
+ }
25
+ else {
26
+ confidenceValue = dateDiffInMs / thresholdWindowMS;
27
+ }
28
+ }
29
+ return confidenceValue;
30
+ };
31
+ const isDeviceSettingsCalculationMethod = (deviceInfo) => {
32
+ return !!(deviceInfo?.clientDeviceSetting?.fixedStatus ||
33
+ (deviceInfo.clientDeviceSetting?.movingPingFrequency &&
34
+ deviceInfo.clientDeviceSetting?.movingPingFrequency > 0));
35
+ };
36
+ const getThresholdInMS = (devStatus, deviceInfo) => {
37
+ const { speed, deviceTypeId } = devStatus;
38
+ const isDeviceStopped = Number(speed) < 2;
39
+ if (isDeviceSettingsCalculationMethod(deviceInfo)) {
40
+ //new calculation using device settings
41
+ const { fixedStatus, movingPingFrequency, stoppedPingFrequency, } = deviceInfo.clientDeviceSetting;
42
+ //manual override/ fixed status
43
+ return fixedStatus
44
+ ? fixedStatus === 'ON'
45
+ ? ALWAYS_ON_THRESHOLD // always on, device status will never be older than this threshold
46
+ : 0
47
+ : isDeviceStopped
48
+ ? movingPingFrequency * 1000 * PADDING_STOPPED // value stored in seconds. threshold add 20% to reporting freq
49
+ : stoppedPingFrequency * 1000 * PADDING_MOVING; // value stored in seconds. threshold add 100% to reporting freq (values are smaller add room for delays)
50
+ }
51
+ // old legacy calculation method by deviceType
52
+ switch (deviceTypeId) {
53
+ case 8:
54
+ case 9:
55
+ return THRESHOLD_24HRS; //24hr
56
+ default:
57
+ return isDeviceStopped ? CELL_STOPPED_THRESHOLD_MS : CELL_THRESHOLD_MS;
58
+ }
59
+ };
60
+ // Extended Statuses
61
+ const deviceStatusCellularNetwork = (devStatus, deviceInfo) => {
62
+ const resp = {
63
+ name: 'cellularNetwork',
64
+ };
65
+ try {
66
+ const thresholdMS = getThresholdInMS(devStatus, deviceInfo);
67
+ // move to helper
68
+ const nowMS = new Date().getTime();
69
+ const thresholdDateMS = nowMS - thresholdMS;
70
+ const created = new Date(devStatus.created);
71
+ const createdMS = created.getTime();
72
+ //connection
73
+ resp.ok = createdMS >= thresholdDateMS;
74
+ resp.msg = `${devStatus.deviceTypeId}`;
75
+ //confidence
76
+ const dateDiffInMs = Math.abs(nowMS - createdMS);
77
+ resp.confidence = getConfidenceValue(dateDiffInMs, thresholdMS);
78
+ }
79
+ catch (err) {
80
+ resp.msg = JSON.stringify(err);
81
+ }
82
+ return resp;
83
+ };
84
+ const deviceStatusGPSNetwork = (devStatus, deviceInfo, cellularNetworkConnected) => {
85
+ const resp = {
86
+ name: 'gpsNetwork',
87
+ };
88
+ try {
89
+ if (!cellularNetworkConnected) {
90
+ // no cellular network, then no gps connection
91
+ resp.ok = false;
92
+ resp.confidence = 1;
93
+ }
94
+ else {
95
+ // there is cellularNetowkr connection, then check if GPS connected
96
+ //const gps:Date = new Date(devStatus.gpsUTCTime)
97
+ // gpsDate format -> "yyyyMMddHHmmss"
98
+ let gpsDateTime = new Date(0); //1970-01-01 very old date
99
+ if (devStatus.gpsUTCTime) {
100
+ const gpsYear = Number(devStatus.gpsUTCTime.substring(0, 4));
101
+ const gpsMonth = Number(devStatus.gpsUTCTime.substring(4, 6)) - 1; // the month is 0-indexed
102
+ const gpsDay = Number(devStatus.gpsUTCTime.substring(6, 8));
103
+ const gpsHour = Number(devStatus.gpsUTCTime.substring(8, 10));
104
+ const gpsMin = Number(devStatus.gpsUTCTime.substring(10, 12));
105
+ const gpsSec = Number(devStatus.gpsUTCTime.substring(12));
106
+ gpsDateTime = new Date(gpsYear, gpsMonth, gpsDay, gpsHour, gpsMin, gpsSec);
107
+ }
108
+ const sendTime = new Date(devStatus.sendTime);
109
+ const thresholdMS = getThresholdInMS(devStatus, deviceInfo);
110
+ const gpsMS = gpsDateTime.getTime();
111
+ const sendMS = sendTime.getTime();
112
+ const diff = Math.abs(sendMS - gpsMS);
113
+ //connection
114
+ resp.ok = diff < thresholdMS;
115
+ //confidence
116
+ resp.confidence = getConfidenceValue(diff, thresholdMS);
117
+ //resp.msg = ` GPS:${gpsDateTime.toISOString()} Send:${sendTime.toISOString()} sendT:${sendTime.getTime()} `
118
+ }
119
+ }
120
+ catch (err) {
121
+ resp.msg = JSON.stringify(err);
122
+ }
123
+ return resp;
124
+ };
125
+ const deviceStatusBatteryCharge = (devStatus) => {
126
+ const resp = {
127
+ name: 'batteryCharge',
128
+ };
129
+ try {
130
+ const batteryCharge = Number(devStatus.batteryPercentage);
131
+ resp.ok = !!batteryCharge === true;
132
+ resp.confidence = batteryCharge;
133
+ }
134
+ catch (err) {
135
+ resp.msg = JSON.stringify(err);
136
+ }
137
+ return resp;
138
+ };
139
+ export const getExtendedDeviceStatus = (deviceStatus, deviceInfo) => {
140
+ const result = [];
141
+ if (!(deviceStatus && deviceInfo))
142
+ return result;
143
+ // read from config
144
+ const extendedStatus = true;
145
+ const { deviceTypeId } = deviceInfo;
146
+ const validatedStatus = { ...deviceStatus, deviceTypeId };
147
+ //cell network
148
+ if (extendedStatus) {
149
+ //cellular net
150
+ const cellNetworkData = deviceStatusCellularNetwork(validatedStatus, deviceInfo);
151
+ result.push(cellNetworkData);
152
+ //gps net
153
+ const gpsNetworkData = deviceStatusGPSNetwork(validatedStatus, deviceInfo, !!cellNetworkData.ok);
154
+ result.push(gpsNetworkData);
155
+ //battery charge //BatteryCharge, only if it is not undefined, there are devices that do not report battery
156
+ const { batteryPercentage } = validatedStatus;
157
+ if (typeof batteryPercentage !== 'undefined') {
158
+ const batteryChargeData = deviceStatusBatteryCharge(validatedStatus);
159
+ result.push(batteryChargeData);
160
+ }
161
+ }
162
+ return result;
163
+ };
164
+ export const addOnlineStatus = (deviceStatus) => {
165
+ let offlineTime = 3.5 * HOUR_IN_MS;
166
+ if (assetTrackerIdsList.some((i) => i == deviceStatus.deviceTypeId)) {
167
+ offlineTime = 25 * HOUR_IN_MS;
168
+ }
169
+ if (deviceStatus?.restFrequency && deviceStatus?.restFrequency * 1000 > offlineTime) {
170
+ offlineTime = deviceStatus.restFrequency * 1000 + HOUR_IN_MS;
171
+ }
172
+ const sendTime = new Date(deviceStatus.sendTime);
173
+ const isOnline = new Date().getTime() - sendTime.getTime() < offlineTime;
174
+ return `${isOnline}`;
175
+ };
176
+ export const adjustDeviceStatusProperties = (params) => {
177
+ if (!params?.projectionOptions?.deviceStatusProperties?.length) {
178
+ return;
179
+ }
180
+ if (params?.projectionOptions?.deviceStatusProperties?.includes('connectionStatus')) {
181
+ params?.projectionOptions?.deviceStatusProperties?.push('deviceTypeId');
182
+ params?.projectionOptions?.deviceStatusProperties?.push('created');
183
+ params?.projectionOptions?.deviceStatusProperties?.push('speed');
184
+ params?.projectionOptions?.deviceStatusProperties?.push('gpsUTCTime');
185
+ params?.projectionOptions?.deviceStatusProperties?.push('sendTime');
186
+ params?.projectionOptions?.deviceStatusProperties?.push('batteryPercentage');
187
+ }
188
+ if (params?.projectionOptions?.deviceStatusProperties?.includes('isOnline')) {
189
+ params?.projectionOptions?.deviceStatusProperties?.push('sendTime');
190
+ params?.projectionOptions?.deviceStatusProperties?.push('restFrequency');
191
+ }
192
+ };
193
+ export const tryExtendDeviceStatus = (params) => {
194
+ const { logger, deviceStatus, withConnectionStatusInfo, withOnlineStatus } = params;
195
+ try {
196
+ if (withConnectionStatusInfo) {
197
+ deviceStatus.data.connectionStatus = getExtendedDeviceStatus(deviceStatus.data, deviceStatus.device);
198
+ }
199
+ if (withOnlineStatus) {
200
+ deviceStatus.data.isOnline = addOnlineStatus(deviceStatus.data);
201
+ }
202
+ }
203
+ catch (err) {
204
+ logger.error(err, 'Error while extending device status properties');
205
+ }
206
+ };
207
+ //# sourceMappingURL=extendedDeviceStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendedDeviceStatus.js","sourceRoot":"","sources":["../../../src/repositories/deviceStatus/extendedDeviceStatus.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { DeviceStatus } from '../../entities/deviceStatus';
2
1
  import { NovaDataSource } from '../../novaDataSource';
3
- import { GetDeviceStatusesParams } from '../../types/deviceStatus';
2
+ import { DeviceStatusRecord, GetDeviceStatusesParams } from '../../types/deviceStatus';
4
3
  import { Logger } from '../../types/logger';
5
- export declare const getDeviceStatuses: (novaDataSource: NovaDataSource, params: GetDeviceStatusesParams, logger: Logger) => Promise<DeviceStatus[]>;
4
+ export declare const getDeviceStatuses: (novaDataSource: NovaDataSource, params: GetDeviceStatusesParams, logger: Logger) => Promise<DeviceStatusRecord[]>;
@@ -28,7 +28,10 @@ export const getDeviceStatuses = async (novaDataSource, params, logger) => {
28
28
  sendTimeMin: params.filters.minSendTime,
29
29
  });
30
30
  }
31
- if (params.filters.deviceStatus || params.projectionOptions?.withDevice) {
31
+ if (params.filters.deviceStatus ||
32
+ params.projectionOptions?.withDevice ||
33
+ params.projectionOptions?.deviceStatusProperties?.includes('connectionStatus') ||
34
+ params.projectionOptions?.withConnectionStatus) {
32
35
  queryBuilder = queryBuilder.leftJoinAndMapOne('deviceStatus.device', Device, 'device', 'deviceStatus.imei = device.imei and deviceStatus.clientId = device.clientId');
33
36
  if (params.filters.deviceStatus) {
34
37
  queryBuilder = queryBuilder.andWhere('device.status = :status', {
@@ -39,7 +42,9 @@ export const getDeviceStatuses = async (novaDataSource, params, logger) => {
39
42
  if (params.projectionOptions?.withClient) {
40
43
  queryBuilder = queryBuilder.leftJoinAndSelect('deviceStatus.client', 'client');
41
44
  }
42
- if (params.projectionOptions?.withClientDeviceSettings) {
45
+ if (params.projectionOptions?.withClientDeviceSettings ||
46
+ params.projectionOptions?.deviceStatusProperties?.includes('connectionStatus') ||
47
+ params.projectionOptions?.withConnectionStatus) {
43
48
  queryBuilder = queryBuilder.leftJoinAndMapOne('deviceStatus.clientDeviceSetting', ClientDeviceSetting, 'clientDeviceSetting', 'deviceStatus.imei = clientDeviceSetting.imei and deviceStatus.clientId = clientDeviceSetting.clientId');
44
49
  }
45
50
  queryBuilder = queryBuilder
@@ -1 +1 @@
1
- {"version":3,"file":"getDeviceStatuses.js","sourceRoot":"","sources":["../../../src/repositories/deviceStatus/getDeviceStatuses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getDeviceStatuses.js","sourceRoot":"","sources":["../../../src/repositories/deviceStatus/getDeviceStatuses.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { DeviceStatus } from '../../entities/deviceStatus';
2
- import { GetDeviceStatusesCountParams, GetDeviceStatusesParams, UpsertDeviceStatusesParams } from '../../types/deviceStatus';
1
+ import { DeviceStatusRecord, GetDeviceStatusesCountParams, GetDeviceStatusesParams, UpsertDeviceStatusesParams } from '../../types/deviceStatus';
3
2
  import { BaseRepository } from './../baseRepository';
4
3
  export declare class DeviceStatusRepository extends BaseRepository {
5
4
  /**
@@ -17,7 +16,7 @@ export declare class DeviceStatusRepository extends BaseRepository {
17
16
  * - projectionOptions.withClientDeviceSettings: Whether to get the client device settings
18
17
  * - projectionOptions.clientDeviceSettingsProperties: The client device settings properties to get
19
18
  */
20
- getDeviceStatuses(params: GetDeviceStatusesParams): Promise<DeviceStatus[]>;
19
+ getDeviceStatuses(params: GetDeviceStatusesParams): Promise<DeviceStatusRecord[]>;
21
20
  /**
22
21
  * Get total count of device statuses based on the filters
23
22
  * @param {GetDeviceStatusesCountParams} params containing information to get device statuses count
@@ -1,5 +1,6 @@
1
1
  import { NovaDataSource } from '../../novaDataSource';
2
2
  import { BaseRepository } from './../baseRepository';
3
+ import { adjustDeviceStatusProperties, tryExtendDeviceStatus } from './extendedDeviceStatus';
3
4
  import { getDeviceStatuses } from './getDeviceStatuses';
4
5
  import { getDeviceStatusesCount } from './getDeviceStatusesCount';
5
6
  import { upsertDeviceStatuses } from './upsertDeviceStatuses';
@@ -22,7 +23,16 @@ export class DeviceStatusRepository extends BaseRepository {
22
23
  async getDeviceStatuses(params) {
23
24
  this.logger.trace(params, 'DeviceStatusRepository::getDeviceStatus started with params');
24
25
  const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
26
+ adjustDeviceStatusProperties(params);
25
27
  const result = await getDeviceStatuses(novaDataSource, params, this.logger);
28
+ result?.forEach(deviceStatus => tryExtendDeviceStatus({
29
+ logger: this.logger,
30
+ deviceStatus,
31
+ withConnectionStatusInfo: params.projectionOptions?.withConnectionStatus ||
32
+ params.projectionOptions?.deviceStatusProperties?.includes('connectionStatus'),
33
+ withOnlineStatus: params.projectionOptions?.withOnlineStatus ||
34
+ params.projectionOptions?.deviceStatusProperties?.includes('isOnline'),
35
+ }));
26
36
  this.logger.trace(result, 'DeviceStatusRepository::getDeviceStatus result');
27
37
  return result;
28
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/deviceStatus/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAA+B;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,6DAA6D,CAAC,CAAA;QAExF,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,gDAAgD,CAAC,CAAA;QAE3E,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,sBAAsB,CAAC,MAAoC;QAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,oEAAoE,CAAC,CAAA;QAE/F,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEhF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,uDAAuD,CAAC,CAAA;QAEtF,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAkC;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,gEAAgE,CAAC,CAAA;QAE3F,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,mDAAmD,CAAC,CAAA;QAElF,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/deviceStatus/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAOrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAA+B;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,6DAA6D,CAAC,CAAA;QAExF,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,4BAA4B,CAAC,MAAM,CAAC,CAAA;QAEpC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE3E,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAC7B,qBAAqB,CAAC;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY;YACZ,wBAAwB,EACtB,MAAM,CAAC,iBAAiB,EAAE,oBAAoB;gBAC9C,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;YAChF,gBAAgB,EACd,MAAM,CAAC,iBAAiB,EAAE,gBAAgB;gBAC1C,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,QAAQ,CAAC,UAAU,CAAC;SACzE,CAAC,CACH,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,gDAAgD,CAAC,CAAA;QAE3E,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,sBAAsB,CAAC,MAAoC;QAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,oEAAoE,CAAC,CAAA;QAE/F,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEhF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,uDAAuD,CAAC,CAAA;QAEtF,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAkC;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,gEAAgE,CAAC,CAAA;QAE3F,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,mDAAmD,CAAC,CAAA;QAElF,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { LiveLink } from '../../entities/liveLink';
2
2
  import { Enums } from '../../types';
3
- import { tryParseDate, tryParseFloat } from '../../utils/parsingTools';
3
+ import { tryParseBoolean, tryParseDate, tryParseFloat } from '../../utils/parsingTools';
4
4
  import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
5
5
  export const getLiveLinkData = async (novaDataSource, params, logger, deviceStatusRepository) => {
6
6
  if (!params?.filters?.id || !params?.filters?.clientId) {
@@ -49,6 +49,7 @@ export const getLiveLinkData = async (novaDataSource, params, logger, deviceStat
49
49
  withDevice: true,
50
50
  deviceProperties: ['imei', 'name', 'description', 'deviceTypeId', 'color', 'icon'],
51
51
  deviceStatusProperties: [
52
+ 'created',
52
53
  'latitude',
53
54
  'longitude',
54
55
  'address',
@@ -60,6 +61,8 @@ export const getLiveLinkData = async (novaDataSource, params, logger, deviceStat
60
61
  'batteryVoltage',
61
62
  'externalPowerVoltage',
62
63
  'reportType',
64
+ 'connectionStatus',
65
+ 'isOnline',
63
66
  ],
64
67
  },
65
68
  pagingOptions: {
@@ -91,6 +94,8 @@ export const getLiveLinkData = async (novaDataSource, params, logger, deviceStat
91
94
  batteryVoltage: tryParseFloat(data?.batteryVoltage) ?? undefined,
92
95
  externalPowerVoltage: tryParseFloat(data?.externalPowerVoltage) ?? undefined,
93
96
  reportType: tryParseFloat(data?.reportType) ?? undefined,
97
+ connectionStatus: data?.connectionStatus ?? undefined,
98
+ isOnline: tryParseBoolean(data?.isOnline) ?? undefined,
94
99
  },
95
100
  };
96
101
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"getLiveLinkData.js","sourceRoot":"","sources":["../../../src/repositories/liveLinks/getLiveLinkData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getLiveLinkData.js","sourceRoot":"","sources":["../../../src/repositories/liveLinks/getLiveLinkData.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,49 @@
1
- import { Client, ClientDeviceSetting, Device } from '../entities';
1
+ import { Client, ClientDeviceSetting, Device, DeviceStatus } from '../entities';
2
2
  import { Enums } from '.';
3
3
  import { BaseSelectQueryParams } from './common';
4
- interface DeviceStatusEntity {
4
+ export interface DeviceStatusEntity {
5
+ address: string;
5
6
  imei: string;
6
7
  clientId: number;
7
8
  created: string;
8
9
  sendTime: string;
10
+ latitude?: string;
11
+ longitude?: string;
12
+ speed?: string;
13
+ gpsUTCTime?: string;
14
+ batteryPercentage?: string;
15
+ azimuth?: string;
16
+ deviceTypeId?: number;
17
+ staleGPS?: string;
18
+ isStaleGPS?: boolean;
19
+ insideCellularRadio?: string;
20
+ isInsideCellularRadio?: boolean;
21
+ message_id?: string;
22
+ gpsMessageId?: string;
23
+ isOnline?: string;
24
+ lastGPSCellTower?: string;
25
+ mcc?: string;
26
+ mnc?: string;
27
+ cellId?: string;
28
+ lac?: string;
29
+ cellTowerLat?: number;
30
+ cellTowerLocationTime?: string;
31
+ cellTowerLon?: number;
32
+ cellTowerRange?: number;
33
+ restFrequency?: number;
34
+ connectionStatus?: ConnectionStatusInfo[];
35
+ odoMileage?: string;
36
+ batteryVoltage?: string;
37
+ externalPowerVoltage?: string;
38
+ externalPowerVoltage2?: string;
39
+ hoursOfOperation?: string;
40
+ reportType?: string;
41
+ }
42
+ export interface ConnectionStatusInfo {
43
+ name: string;
44
+ ok?: boolean;
45
+ confidence?: number;
46
+ msg?: string;
9
47
  }
10
48
  export interface GetDeviceStatusesParams extends BaseSelectQueryParams {
11
49
  filters: {
@@ -15,12 +53,14 @@ export interface GetDeviceStatusesParams extends BaseSelectQueryParams {
15
53
  deviceStatus?: Enums.DeviceStatus;
16
54
  };
17
55
  projectionOptions?: {
18
- deviceStatusProperties?: string[];
19
56
  withClient?: boolean;
20
- clientProperties?: (keyof Client)[];
21
57
  withDevice?: boolean;
22
- deviceProperties?: (keyof Device)[];
23
58
  withClientDeviceSettings?: boolean;
59
+ withConnectionStatus?: boolean;
60
+ withOnlineStatus?: boolean;
61
+ deviceStatusProperties?: (keyof DeviceStatusEntity)[];
62
+ deviceProperties?: (keyof Device)[];
63
+ clientProperties?: (keyof Client)[];
24
64
  clientDeviceSettingsProperties?: (keyof ClientDeviceSetting)[];
25
65
  };
26
66
  pagingOptions?: {
@@ -39,4 +79,6 @@ export interface GetDeviceStatusesCountParams extends BaseSelectQueryParams {
39
79
  export interface UpsertDeviceStatusesParams {
40
80
  items: DeviceStatusEntity[];
41
81
  }
42
- export {};
82
+ export interface DeviceStatusRecord extends Omit<DeviceStatus, 'data'> {
83
+ data: DeviceStatusEntity;
84
+ }
@@ -1,4 +1,5 @@
1
1
  import { BaseSelectQueryParams, OptionalReportPagination } from './common';
2
+ import { ConnectionStatusInfo } from './deviceStatus';
2
3
  export interface CreateLiveLinkParams {
3
4
  id: string;
4
5
  name: string;
@@ -81,6 +82,8 @@ export interface TrackerWithStatus {
81
82
  batteryVoltage?: number;
82
83
  externalPowerVoltage?: number;
83
84
  reportType?: number;
85
+ connectionStatus?: ConnectionStatusInfo[];
86
+ isOnline?: boolean;
84
87
  };
85
88
  }
86
89
  export interface LiveLinkData {
@@ -1,2 +1,3 @@
1
1
  export declare const tryParseFloat: (valueToParse: any, defaultValue?: number | null) => number | null;
2
2
  export declare const tryParseDate: (anyDate: any, defaultValue?: Date | null) => Date;
3
+ export declare const tryParseBoolean: (valueToParse: any, defaultValue?: boolean | null) => boolean | null;
@@ -10,4 +10,13 @@ export const tryParseDate = (anyDate, defaultValue = null) => {
10
10
  return defaultValue;
11
11
  }
12
12
  };
13
+ export const tryParseBoolean = (valueToParse, defaultValue = null) => {
14
+ if (typeof valueToParse === 'boolean') {
15
+ return valueToParse;
16
+ }
17
+ if (typeof valueToParse === 'string') {
18
+ return valueToParse.toLowerCase() === 'true';
19
+ }
20
+ return defaultValue;
21
+ };
13
22
  //# sourceMappingURL=parsingTools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsingTools.js","sourceRoot":"","sources":["../../src/utils/parsingTools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,YAAiB,EACjB,eAA8B,IAAI,EACnB,EAAE;IACjB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAY,EAAE,eAA4B,IAAI,EAAQ,EAAE;IACnF,IAAI;QACF,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;KAC7D;IAAC,OAAO,MAAM,EAAE;QACf,OAAO,YAAY,CAAA;KACpB;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"parsingTools.js","sourceRoot":"","sources":["../../src/utils/parsingTools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,YAAiB,EACjB,eAA8B,IAAI,EACnB,EAAE;IACjB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAY,EAAE,eAA4B,IAAI,EAAQ,EAAE;IACnF,IAAI;QACF,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;KAC7D;IAAC,OAAO,MAAM,EAAE;QACf,OAAO,YAAY,CAAA;KACpB;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,YAAiB,EACjB,eAA+B,IAAI,EACnB,EAAE;IAClB,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE;QACrC,OAAO,YAAY,CAAA;KACpB;IAED,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;QACpC,OAAO,YAAY,CAAC,WAAW,EAAE,KAAK,MAAM,CAAA;KAC7C;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spytecgps/nova-orm",
3
- "version": "1.0.108",
3
+ "version": "1.0.109",
4
4
  "description": "ORM with PlanetScale",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",