@fatehan/tsrp 1.1.15 → 1.2.1
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.
- package/dist/api.d.ts +5 -10
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +48 -15
- package/dist/api.old.d.ts +19 -0
- package/dist/api.old.d.ts.map +1 -0
- package/dist/api.old.js +52 -0
- package/dist/api.test.js +39 -16
- package/dist/report.d.ts +15 -33
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +72 -46
- package/dist/report.old.d.ts +39 -0
- package/dist/report.old.d.ts.map +1 -0
- package/dist/report.old.js +148 -0
- package/dist/report.test.js +103 -362
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
import { AreaIndexRequest, AreaIndexResponse, ConfigRequest, ConfigResponse, DeviceRequest, DeviceResponse, MeRequest, MeResponse, UserRequest, UserResponse } from "./fatehan/services/api";
|
|
2
1
|
export type HeaderProvider = () => Promise<HeadersInit> | HeadersInit;
|
|
3
2
|
export declare class ApiService {
|
|
4
3
|
private readonly url;
|
|
5
4
|
private readonly namespace;
|
|
6
5
|
private readonly getDynamicHeaders;
|
|
7
|
-
/**
|
|
8
|
-
* @param url The base URL of the API server.
|
|
9
|
-
* @param headerProvider A function that returns headers to be added to each request.
|
|
10
|
-
*/
|
|
11
6
|
constructor(url: string, headerProvider: HeaderProvider);
|
|
12
7
|
private _call;
|
|
13
|
-
MeIndex(request: MeRequest): Promise<MeResponse>;
|
|
14
|
-
DeviceIndex(request: DeviceRequest): Promise<DeviceResponse>;
|
|
15
|
-
AreaIndex(request: AreaIndexRequest): Promise<AreaIndexResponse>;
|
|
16
|
-
ConfigIndex(request: ConfigRequest): Promise<ConfigResponse>;
|
|
17
|
-
UserIndex(request: UserRequest): Promise<UserResponse>;
|
|
8
|
+
MeIndex(request: import("./fatehan/services/api").MeRequest): Promise<import("./fatehan/services/api").MeResponse>;
|
|
9
|
+
DeviceIndex(request: import("./fatehan/services/api").DeviceRequest): Promise<import("./fatehan/services/api").DeviceResponse>;
|
|
10
|
+
AreaIndex(request: import("./fatehan/services/api").AreaIndexRequest): Promise<import("./fatehan/services/api").AreaIndexResponse>;
|
|
11
|
+
ConfigIndex(request: import("./fatehan/services/api").ConfigRequest): Promise<import("./fatehan/services/api").ConfigResponse>;
|
|
12
|
+
UserIndex(request: import("./fatehan/services/api").UserRequest): Promise<import("./fatehan/services/api").UserResponse>;
|
|
18
13
|
}
|
|
19
14
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAEtE,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IACvE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiB;gBAEvC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc;YAKzC,KAAK;IA+BN,OAAO,CAAC,OAAO,EAAE,OAAO,wBAAwB,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,wBAAwB,EAAE,UAAU,CAAC;IAKlH,WAAW,CAAC,OAAO,EAAE,OAAO,wBAAwB,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,wBAAwB,EAAE,cAAc,CAAC;IAK9H,SAAS,CAAC,OAAO,EAAE,OAAO,wBAAwB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,wBAAwB,EAAE,iBAAiB,CAAC;IAKlI,WAAW,CAAC,OAAO,EAAE,OAAO,wBAAwB,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,wBAAwB,EAAE,cAAc,CAAC;IAK9H,SAAS,CAAC,OAAO,EAAE,OAAO,wBAAwB,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,wBAAwB,EAAE,YAAY,CAAC;CAIxI"}
|
package/dist/api.js
CHANGED
|
@@ -1,12 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.ApiService = void 0;
|
|
4
|
-
const api_1 = require("./fatehan/services/api");
|
|
5
37
|
class ApiService {
|
|
6
|
-
/**
|
|
7
|
-
* @param url The base URL of the API server.
|
|
8
|
-
* @param headerProvider A function that returns headers to be added to each request.
|
|
9
|
-
*/
|
|
10
38
|
constructor(url, headerProvider) {
|
|
11
39
|
this.namespace = "com.fatehan.services.ApiService";
|
|
12
40
|
this.url = url;
|
|
@@ -33,20 +61,25 @@ class ApiService {
|
|
|
33
61
|
throw new Error(`API Error (${response.status}): ${errorText}`);
|
|
34
62
|
}
|
|
35
63
|
}
|
|
36
|
-
MeIndex(request) {
|
|
37
|
-
|
|
64
|
+
async MeIndex(request) {
|
|
65
|
+
const { MeRequest, MeResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/services/api")));
|
|
66
|
+
return this._call("MeIndex", request, MeRequest, MeResponse);
|
|
38
67
|
}
|
|
39
|
-
DeviceIndex(request) {
|
|
40
|
-
|
|
68
|
+
async DeviceIndex(request) {
|
|
69
|
+
const { DeviceRequest, DeviceResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/services/api")));
|
|
70
|
+
return this._call("DeviceIndex", request, DeviceRequest, DeviceResponse);
|
|
41
71
|
}
|
|
42
|
-
AreaIndex(request) {
|
|
43
|
-
|
|
72
|
+
async AreaIndex(request) {
|
|
73
|
+
const { AreaIndexRequest, AreaIndexResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/services/api")));
|
|
74
|
+
return this._call("AreaIndex", request, AreaIndexRequest, AreaIndexResponse);
|
|
44
75
|
}
|
|
45
|
-
ConfigIndex(request) {
|
|
46
|
-
|
|
76
|
+
async ConfigIndex(request) {
|
|
77
|
+
const { ConfigRequest, ConfigResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/services/api")));
|
|
78
|
+
return this._call("ConfigIndex", request, ConfigRequest, ConfigResponse);
|
|
47
79
|
}
|
|
48
|
-
UserIndex(request) {
|
|
49
|
-
|
|
80
|
+
async UserIndex(request) {
|
|
81
|
+
const { UserRequest, UserResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/services/api")));
|
|
82
|
+
return this._call("UserIndex", request, UserRequest, UserResponse);
|
|
50
83
|
}
|
|
51
84
|
}
|
|
52
85
|
exports.ApiService = ApiService;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AreaIndexRequest, AreaIndexResponse, ConfigRequest, ConfigResponse, DeviceRequest, DeviceResponse, MeRequest, MeResponse, UserRequest, UserResponse } from "./fatehan/services/api";
|
|
2
|
+
export type HeaderProvider = () => Promise<HeadersInit> | HeadersInit;
|
|
3
|
+
export declare class ApiService {
|
|
4
|
+
private readonly url;
|
|
5
|
+
private readonly namespace;
|
|
6
|
+
private readonly getDynamicHeaders;
|
|
7
|
+
/**
|
|
8
|
+
* @param url The base URL of the API server.
|
|
9
|
+
* @param headerProvider A function that returns headers to be added to each request.
|
|
10
|
+
*/
|
|
11
|
+
constructor(url: string, headerProvider: HeaderProvider);
|
|
12
|
+
private _call;
|
|
13
|
+
MeIndex(request: MeRequest): Promise<MeResponse>;
|
|
14
|
+
DeviceIndex(request: DeviceRequest): Promise<DeviceResponse>;
|
|
15
|
+
AreaIndex(request: AreaIndexRequest): Promise<AreaIndexResponse>;
|
|
16
|
+
ConfigIndex(request: ConfigRequest): Promise<ConfigResponse>;
|
|
17
|
+
UserIndex(request: UserRequest): Promise<UserResponse>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=api.old.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.old.d.ts","sourceRoot":"","sources":["../src/api.old.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACf,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAEtE,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IACvE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiB;IAEnD;;;OAGG;gBACS,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc;YAKzC,KAAK;IA+BZ,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAIhD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAI5D,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIhE,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAI5D,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAGhE"}
|
package/dist/api.old.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiService = void 0;
|
|
4
|
+
const api_1 = require("./fatehan/services/api");
|
|
5
|
+
class ApiService {
|
|
6
|
+
/**
|
|
7
|
+
* @param url The base URL of the API server.
|
|
8
|
+
* @param headerProvider A function that returns headers to be added to each request.
|
|
9
|
+
*/
|
|
10
|
+
constructor(url, headerProvider) {
|
|
11
|
+
this.namespace = "com.fatehan.services.ApiService";
|
|
12
|
+
this.url = url;
|
|
13
|
+
this.getDynamicHeaders = headerProvider;
|
|
14
|
+
}
|
|
15
|
+
async _call(methodName, request, encoder, decoder) {
|
|
16
|
+
const dynamicHeaders = await this.getDynamicHeaders();
|
|
17
|
+
const headers = {
|
|
18
|
+
"Content-Type": "application/octet-stream",
|
|
19
|
+
Accept: "application/octet-stream",
|
|
20
|
+
...dynamicHeaders,
|
|
21
|
+
};
|
|
22
|
+
const response = await fetch(`${this.url}/${this.namespace}/${methodName}`, {
|
|
23
|
+
method: "POST",
|
|
24
|
+
headers: headers,
|
|
25
|
+
body: new Uint8Array(encoder.encode(request).finish()),
|
|
26
|
+
});
|
|
27
|
+
if (response.ok) {
|
|
28
|
+
const buffer = await response.arrayBuffer();
|
|
29
|
+
return decoder.decode(new Uint8Array(buffer));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const errorText = await response.text();
|
|
33
|
+
throw new Error(`API Error (${response.status}): ${errorText}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
MeIndex(request) {
|
|
37
|
+
return this._call("MeIndex", request, api_1.MeRequest, api_1.MeResponse);
|
|
38
|
+
}
|
|
39
|
+
DeviceIndex(request) {
|
|
40
|
+
return this._call("DeviceIndex", request, api_1.DeviceRequest, api_1.DeviceResponse);
|
|
41
|
+
}
|
|
42
|
+
AreaIndex(request) {
|
|
43
|
+
return this._call("AreaIndex", request, api_1.AreaIndexRequest, api_1.AreaIndexResponse);
|
|
44
|
+
}
|
|
45
|
+
ConfigIndex(request) {
|
|
46
|
+
return this._call("ConfigIndex", request, api_1.ConfigRequest, api_1.ConfigResponse);
|
|
47
|
+
}
|
|
48
|
+
UserIndex(request) {
|
|
49
|
+
return this._call("UserIndex", request, api_1.UserRequest, api_1.UserResponse);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.ApiService = ApiService;
|
package/dist/api.test.js
CHANGED
|
@@ -2,26 +2,48 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
4
|
const api_1 = require("./api");
|
|
5
|
+
global.fetch = vitest_1.vi.fn();
|
|
5
6
|
(0, vitest_1.describe)("ApiService", () => {
|
|
6
|
-
|
|
7
|
-
let
|
|
8
|
-
let
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
const url = "http://fake-api-server.com/gapi";
|
|
8
|
+
let service;
|
|
9
|
+
let mockHeaderProvider;
|
|
10
|
+
(0, vitest_1.beforeEach)(() => {
|
|
11
|
+
vitest_1.vi.clearAllMocks();
|
|
12
|
+
mockHeaderProvider = vitest_1.vi.fn(() => ({
|
|
13
|
+
'authorization': 'Bearer test-token-from-mock',
|
|
14
|
+
'organization-id': 'test-org-from-mock'
|
|
15
|
+
}));
|
|
16
|
+
service = new api_1.ApiService(url, mockHeaderProvider);
|
|
16
17
|
});
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const setupMockSuccessResponse = (data = {}) => {
|
|
19
|
+
global.fetch.mockResolvedValue({
|
|
20
|
+
ok: true,
|
|
21
|
+
arrayBuffer: () => Promise.resolve(new Uint8Array()),
|
|
22
|
+
text: () => Promise.resolve("Success"),
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
(0, vitest_1.it)("should call MeIndex with correct headers and URL", async () => {
|
|
26
|
+
setupMockSuccessResponse();
|
|
27
|
+
await service.MeIndex({});
|
|
28
|
+
(0, vitest_1.expect)(mockHeaderProvider).toHaveBeenCalledOnce();
|
|
29
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.services.ApiService/MeIndex`, vitest_1.expect.objectContaining({
|
|
30
|
+
method: 'POST',
|
|
31
|
+
headers: vitest_1.expect.objectContaining({
|
|
32
|
+
'authorization': 'Bearer test-token-from-mock'
|
|
33
|
+
})
|
|
34
|
+
}));
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)("should call ConfigIndex with correct headers and URL", async () => {
|
|
37
|
+
setupMockSuccessResponse();
|
|
38
|
+
await service.ConfigIndex({
|
|
19
39
|
domain: "api.myavl.ir",
|
|
20
40
|
});
|
|
21
|
-
|
|
41
|
+
(0, vitest_1.expect)(mockHeaderProvider).toHaveBeenCalledOnce();
|
|
42
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.services.ApiService/ConfigIndex`, vitest_1.expect.any(Object));
|
|
22
43
|
});
|
|
23
|
-
(0, vitest_1.it)("DeviceIndex", async () => {
|
|
24
|
-
|
|
44
|
+
(0, vitest_1.it)("should call DeviceIndex with correct headers and URL", async () => {
|
|
45
|
+
setupMockSuccessResponse();
|
|
46
|
+
await service.DeviceIndex({
|
|
25
47
|
includeDeviceStatus: false,
|
|
26
48
|
organizationId: undefined,
|
|
27
49
|
queryFilter: {},
|
|
@@ -33,6 +55,7 @@ const api_1 = require("./api");
|
|
|
33
55
|
page: 1,
|
|
34
56
|
pageSize: 15,
|
|
35
57
|
});
|
|
36
|
-
|
|
58
|
+
(0, vitest_1.expect)(mockHeaderProvider).toHaveBeenCalledOnce();
|
|
59
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.services.ApiService/DeviceIndex`, vitest_1.expect.any(Object));
|
|
37
60
|
});
|
|
38
61
|
});
|
package/dist/report.d.ts
CHANGED
|
@@ -1,43 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Data } from "./fatehan/packets/dataModel";
|
|
1
|
+
import type { ShownIo, SystemIo } from "./fatehan/devices/devices";
|
|
2
|
+
import type { Data } from "./fatehan/packets/dataModel";
|
|
4
3
|
export type HeaderProvider = () => Promise<HeadersInit> | HeadersInit;
|
|
5
|
-
/**
|
|
6
|
-
* A service for fetching reports from the com.fatehan.reports.ReportService backend.
|
|
7
|
-
* Implements a dynamic header provider to act as an interceptor for authentication.
|
|
8
|
-
*/
|
|
9
4
|
export declare class ReportService {
|
|
10
5
|
private readonly url;
|
|
11
6
|
private readonly namespace;
|
|
12
7
|
private readonly getDynamicHeaders;
|
|
13
|
-
/**
|
|
14
|
-
* @param url The base URL of the API server.
|
|
15
|
-
* @param headerProvider A function that returns headers to be added to each request.
|
|
16
|
-
*/
|
|
17
8
|
constructor(url: string, headerProvider: HeaderProvider);
|
|
18
9
|
private _call;
|
|
19
|
-
RouteStopReport(request: RouteStopRequest): Promise<RouteStopResponse>;
|
|
20
|
-
TripPerformanceReport(request: TripPerformanceRequest): Promise<TripPerformanceResponse>;
|
|
21
|
-
TripReport(request: TripReportRequest): Promise<TripReportResponse>;
|
|
22
|
-
RouteReviewReport(request: RouteReviewRequest): Promise<RouteReviewResponse>;
|
|
23
|
-
DashboardIndividual(request: DashboardIndividualRequest): Promise<DashboardIndividualResponse>;
|
|
24
|
-
LogReport(request: LogRequest): Promise<LogResponse>;
|
|
25
|
-
DataReport(request: DeviceDataRequest): Promise<DeviceDataResponse>;
|
|
26
|
-
AreaSummaryReviewReport(request: AreaSummaryReviewRequest): Promise<AreaSummaryReviewResponse>;
|
|
27
|
-
WorkCycleReport(request: WorkCycleRequest): Promise<WorkCycleResponse>;
|
|
28
|
-
CommandHistoryReport(request: CommandHistoryRequest): Promise<CommandHistoryResponse>;
|
|
29
|
-
WorkflowReport(request: WorkflowRequest): Promise<WorkflowResponse>;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
*/
|
|
33
|
-
ChartReport(request: ChartRequest, responses: (chunk: ChartResponse) => void): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Fetches System IO data, using a cache first.
|
|
36
|
-
*/
|
|
37
|
-
SystemIoReport(request: SystemIoRequest): Promise<SystemIoResponse>;
|
|
38
|
-
/**
|
|
39
|
-
* A helper that uses SystemIoReport internally if needed.
|
|
40
|
-
*/
|
|
10
|
+
RouteStopReport(request: import("./fatehan/reports/report").RouteStopRequest): Promise<import("./fatehan/reports/report").RouteStopResponse>;
|
|
11
|
+
TripPerformanceReport(request: import("./fatehan/reports/report").TripPerformanceRequest): Promise<import("./fatehan/reports/report").TripPerformanceResponse>;
|
|
12
|
+
TripReport(request: import("./fatehan/reports/report").TripReportRequest): Promise<import("./fatehan/reports/report").TripReportResponse>;
|
|
13
|
+
RouteReviewReport(request: import("./fatehan/reports/report").RouteReviewRequest): Promise<import("./fatehan/reports/report").RouteReviewResponse>;
|
|
14
|
+
DashboardIndividual(request: import("./fatehan/reports/report").DashboardIndividualRequest): Promise<import("./fatehan/reports/report").DashboardIndividualResponse>;
|
|
15
|
+
LogReport(request: import("./fatehan/reports/report").LogRequest): Promise<import("./fatehan/reports/report").LogResponse>;
|
|
16
|
+
DataReport(request: import("./fatehan/reports/report").DeviceDataRequest): Promise<import("./fatehan/reports/report").DeviceDataResponse>;
|
|
17
|
+
AreaSummaryReviewReport(request: import("./fatehan/reports/report").AreaSummaryReviewRequest): Promise<import("./fatehan/reports/report").AreaSummaryReviewResponse>;
|
|
18
|
+
WorkCycleReport(request: import("./fatehan/reports/report").WorkCycleRequest): Promise<import("./fatehan/reports/report").WorkCycleResponse>;
|
|
19
|
+
CommandHistoryReport(request: import("./fatehan/reports/report").CommandHistoryRequest): Promise<import("./fatehan/reports/report").CommandHistoryResponse>;
|
|
20
|
+
WorkflowReport(request: import("./fatehan/reports/report").WorkflowRequest): Promise<import("./fatehan/reports/report").WorkflowResponse>;
|
|
21
|
+
ChartReport(request: import("./fatehan/reports/report").ChartRequest, responses: (chunk: import("./fatehan/reports/report").ChartResponse) => void): Promise<void>;
|
|
22
|
+
SystemIoReport(request: import("./fatehan/reports/report").SystemIoRequest): Promise<import("./fatehan/reports/report").SystemIoResponse>;
|
|
41
23
|
SystemIoCast(systemIo: SystemIo[] | null, deviceIo: SystemIo[], data: Data): Promise<ShownIo[]>;
|
|
42
24
|
}
|
|
43
25
|
//# sourceMappingURL=report.d.ts.map
|
package/dist/report.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGxD,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAEtE,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+C;IACzE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiB;gBAEvC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc;YAKzC,KAAK;IA4BN,eAAe,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,iBAAiB,CAAC;IAK5I,qBAAqB,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,uBAAuB,CAAC;IAK9J,UAAU,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,kBAAkB,CAAC;IAKzI,iBAAiB,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,mBAAmB,CAAC;IAKlJ,mBAAmB,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,2BAA2B,CAAC;IAKpK,SAAS,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,WAAW,CAAC;IAK1H,UAAU,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,kBAAkB,CAAC;IAKzI,uBAAuB,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,yBAAyB,CAAC;IAKpK,eAAe,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,iBAAiB,CAAC;IAK5I,oBAAoB,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,sBAAsB,CAAC;IAK3J,cAAc,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,gBAAgB,CAAC;IAKzI,WAAW,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,0BAA0B,EAAE,aAAa,KAAK,IAAI;IA2ClJ,cAAc,CAAC,OAAO,EAAE,OAAO,0BAA0B,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,0BAA0B,EAAE,gBAAgB,CAAC;IAazI,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAc/G"}
|
package/dist/report.js
CHANGED
|
@@ -1,21 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.ReportService = void 0;
|
|
7
|
-
const report_1 = require("./fatehan/reports/report");
|
|
8
40
|
const system_io_1 = require("./store/system.io");
|
|
9
41
|
const system_io_2 = __importDefault(require("./system.io"));
|
|
10
|
-
/**
|
|
11
|
-
* A service for fetching reports from the com.fatehan.reports.ReportService backend.
|
|
12
|
-
* Implements a dynamic header provider to act as an interceptor for authentication.
|
|
13
|
-
*/
|
|
14
42
|
class ReportService {
|
|
15
|
-
/**
|
|
16
|
-
* @param url The base URL of the API server.
|
|
17
|
-
* @param headerProvider A function that returns headers to be added to each request.
|
|
18
|
-
*/
|
|
19
43
|
constructor(url, headerProvider) {
|
|
20
44
|
this.namespace = "com.fatehan.reports.ReportService";
|
|
21
45
|
this.url = url;
|
|
@@ -42,45 +66,52 @@ class ReportService {
|
|
|
42
66
|
throw new Error(`API Error (${response.status}): ${errorText}`);
|
|
43
67
|
}
|
|
44
68
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return this._call("RouteStopReport", request,
|
|
69
|
+
async RouteStopReport(request) {
|
|
70
|
+
const { RouteStopRequest, RouteStopResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
71
|
+
return this._call("RouteStopReport", request, RouteStopRequest, RouteStopResponse);
|
|
48
72
|
}
|
|
49
|
-
TripPerformanceReport(request) {
|
|
50
|
-
|
|
73
|
+
async TripPerformanceReport(request) {
|
|
74
|
+
const { TripPerformanceRequest, TripPerformanceResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
75
|
+
return this._call("TripPerformanceReport", request, TripPerformanceRequest, TripPerformanceResponse);
|
|
51
76
|
}
|
|
52
|
-
TripReport(request) {
|
|
53
|
-
|
|
77
|
+
async TripReport(request) {
|
|
78
|
+
const { TripReportRequest, TripReportResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
79
|
+
return this._call("TripReport", request, TripReportRequest, TripReportResponse);
|
|
54
80
|
}
|
|
55
|
-
RouteReviewReport(request) {
|
|
56
|
-
|
|
81
|
+
async RouteReviewReport(request) {
|
|
82
|
+
const { RouteReviewRequest, RouteReviewResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
83
|
+
return this._call("RouteReviewReport", request, RouteReviewRequest, RouteReviewResponse);
|
|
57
84
|
}
|
|
58
|
-
DashboardIndividual(request) {
|
|
59
|
-
|
|
85
|
+
async DashboardIndividual(request) {
|
|
86
|
+
const { DashboardIndividualRequest, DashboardIndividualResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
87
|
+
return this._call("DashboardIndividual", request, DashboardIndividualRequest, DashboardIndividualResponse);
|
|
60
88
|
}
|
|
61
|
-
LogReport(request) {
|
|
62
|
-
|
|
89
|
+
async LogReport(request) {
|
|
90
|
+
const { LogRequest, LogResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
91
|
+
return this._call("LogReport", request, LogRequest, LogResponse);
|
|
63
92
|
}
|
|
64
|
-
DataReport(request) {
|
|
65
|
-
|
|
93
|
+
async DataReport(request) {
|
|
94
|
+
const { DeviceDataRequest, DeviceDataResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
95
|
+
return this._call("DeviceDataReport", request, DeviceDataRequest, DeviceDataResponse);
|
|
66
96
|
}
|
|
67
|
-
AreaSummaryReviewReport(request) {
|
|
68
|
-
|
|
97
|
+
async AreaSummaryReviewReport(request) {
|
|
98
|
+
const { AreaSummaryReviewRequest, AreaSummaryReviewResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
99
|
+
return this._call("AreaSummaryReviewReport", request, AreaSummaryReviewRequest, AreaSummaryReviewResponse);
|
|
69
100
|
}
|
|
70
|
-
WorkCycleReport(request) {
|
|
71
|
-
|
|
101
|
+
async WorkCycleReport(request) {
|
|
102
|
+
const { WorkCycleRequest, WorkCycleResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
103
|
+
return this._call("WorkCycleReport", request, WorkCycleRequest, WorkCycleResponse);
|
|
72
104
|
}
|
|
73
|
-
CommandHistoryReport(request) {
|
|
74
|
-
|
|
105
|
+
async CommandHistoryReport(request) {
|
|
106
|
+
const { CommandHistoryRequest, CommandHistoryResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
107
|
+
return this._call("CommandHistoryReport", request, CommandHistoryRequest, CommandHistoryResponse);
|
|
75
108
|
}
|
|
76
|
-
WorkflowReport(request) {
|
|
77
|
-
|
|
109
|
+
async WorkflowReport(request) {
|
|
110
|
+
const { WorkflowRequest, WorkflowResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
111
|
+
return this._call("WorkflowReport", request, WorkflowRequest, WorkflowResponse);
|
|
78
112
|
}
|
|
79
|
-
// --- Special Case Methods ---
|
|
80
|
-
/**
|
|
81
|
-
* Handles a streaming RPC for chart data.
|
|
82
|
-
*/
|
|
83
113
|
async ChartReport(request, responses) {
|
|
114
|
+
const { ChartRequest, ChartResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
84
115
|
const dynamicHeaders = await this.getDynamicHeaders();
|
|
85
116
|
const headers = {
|
|
86
117
|
"Content-Type": "application/octet-stream",
|
|
@@ -90,7 +121,7 @@ class ReportService {
|
|
|
90
121
|
const res = await fetch(`${this.url}/${this.namespace}/ChartReport`, {
|
|
91
122
|
method: "POST",
|
|
92
123
|
headers: headers,
|
|
93
|
-
body: new Uint8Array(
|
|
124
|
+
body: new Uint8Array(ChartRequest.encode(request).finish()),
|
|
94
125
|
});
|
|
95
126
|
if (res.body == null) {
|
|
96
127
|
console.error("ChartReport response body is null.");
|
|
@@ -111,32 +142,27 @@ class ReportService {
|
|
|
111
142
|
if (buffer.length < 4 + msgLen)
|
|
112
143
|
break;
|
|
113
144
|
const message = buffer.slice(4, 4 + msgLen);
|
|
114
|
-
responses(
|
|
145
|
+
responses(ChartResponse.decode(message));
|
|
115
146
|
buffer = buffer.slice(4 + msgLen);
|
|
116
147
|
}
|
|
117
148
|
}
|
|
118
149
|
}
|
|
119
|
-
/**
|
|
120
|
-
* Fetches System IO data, using a cache first.
|
|
121
|
-
*/
|
|
122
150
|
async SystemIoReport(request) {
|
|
123
151
|
const cachedIo = (0, system_io_1.getSystemIoCache)();
|
|
124
152
|
if (cachedIo != null) {
|
|
125
153
|
return { cost: 0, ios: cachedIo, records: cachedIo.length };
|
|
126
154
|
}
|
|
127
|
-
const
|
|
155
|
+
const { SystemIoRequest, SystemIoResponse } = await Promise.resolve().then(() => __importStar(require("./fatehan/reports/report")));
|
|
156
|
+
const response = await this._call("SystemIoReport", request, SystemIoRequest, SystemIoResponse);
|
|
128
157
|
(0, system_io_1.setSystemIoCache)(response.ios);
|
|
129
158
|
return response;
|
|
130
159
|
}
|
|
131
|
-
/**
|
|
132
|
-
* A helper that uses SystemIoReport internally if needed.
|
|
133
|
-
*/
|
|
134
160
|
async SystemIoCast(systemIo, deviceIo, data) {
|
|
135
161
|
var _a;
|
|
136
162
|
let ioData = systemIo;
|
|
137
163
|
if (ioData == null) {
|
|
138
164
|
try {
|
|
139
|
-
const result = await this.SystemIoReport({});
|
|
165
|
+
const result = await this.SystemIoReport({});
|
|
140
166
|
if (!((_a = result === null || result === void 0 ? void 0 : result.ios) === null || _a === void 0 ? void 0 : _a.length))
|
|
141
167
|
return [];
|
|
142
168
|
ioData = result.ios;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AreaSummaryReviewRequest, AreaSummaryReviewResponse, ChartRequest, ChartResponse, CommandHistoryRequest, CommandHistoryResponse, DashboardIndividualRequest, DashboardIndividualResponse, DeviceDataRequest, DeviceDataResponse, LogRequest, LogResponse, RouteReviewRequest, RouteReviewResponse, RouteStopRequest, RouteStopResponse, SystemIoRequest, SystemIoResponse, TripPerformanceRequest, TripPerformanceResponse, TripReportRequest, TripReportResponse, WorkCycleRequest, WorkCycleResponse, WorkflowRequest, WorkflowResponse } from "./fatehan/reports/report";
|
|
2
|
+
import { ShownIo, SystemIo } from "./fatehan/devices/devices";
|
|
3
|
+
import { Data } from "./fatehan/packets/dataModel";
|
|
4
|
+
export type HeaderProvider = () => Promise<HeadersInit> | HeadersInit;
|
|
5
|
+
export declare class ReportService {
|
|
6
|
+
private readonly url;
|
|
7
|
+
private readonly namespace;
|
|
8
|
+
private readonly getDynamicHeaders;
|
|
9
|
+
/**
|
|
10
|
+
* @param url The base URL of the API server.
|
|
11
|
+
* @param headerProvider A function that returns headers to be added to each request.
|
|
12
|
+
*/
|
|
13
|
+
constructor(url: string, headerProvider: HeaderProvider);
|
|
14
|
+
private _call;
|
|
15
|
+
RouteStopReport(request: RouteStopRequest): Promise<RouteStopResponse>;
|
|
16
|
+
TripPerformanceReport(request: TripPerformanceRequest): Promise<TripPerformanceResponse>;
|
|
17
|
+
TripReport(request: TripReportRequest): Promise<TripReportResponse>;
|
|
18
|
+
RouteReviewReport(request: RouteReviewRequest): Promise<RouteReviewResponse>;
|
|
19
|
+
DashboardIndividual(request: DashboardIndividualRequest): Promise<DashboardIndividualResponse>;
|
|
20
|
+
LogReport(request: LogRequest): Promise<LogResponse>;
|
|
21
|
+
DataReport(request: DeviceDataRequest): Promise<DeviceDataResponse>;
|
|
22
|
+
AreaSummaryReviewReport(request: AreaSummaryReviewRequest): Promise<AreaSummaryReviewResponse>;
|
|
23
|
+
WorkCycleReport(request: WorkCycleRequest): Promise<WorkCycleResponse>;
|
|
24
|
+
CommandHistoryReport(request: CommandHistoryRequest): Promise<CommandHistoryResponse>;
|
|
25
|
+
WorkflowReport(request: WorkflowRequest): Promise<WorkflowResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Handles a streaming RPC for chart data.
|
|
28
|
+
*/
|
|
29
|
+
ChartReport(request: ChartRequest, responses: (chunk: ChartResponse) => void): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Fetches System IO data, using a cache first.
|
|
32
|
+
*/
|
|
33
|
+
SystemIoReport(request: SystemIoRequest): Promise<SystemIoResponse>;
|
|
34
|
+
/**
|
|
35
|
+
* A helper that uses SystemIoReport internally if needed.
|
|
36
|
+
*/
|
|
37
|
+
SystemIoCast(systemIo: SystemIo[] | null, deviceIo: SystemIo[], data: Data): Promise<ShownIo[]>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=report.old.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.old.d.ts","sourceRoot":"","sources":["../src/report.old.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGnD,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAEtE,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+C;IACzE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiB;IAEnD;;;OAGG;gBACS,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc;YAKzC,KAAK;IA8BZ,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAItE,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIxF,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAInE,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI5E,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAI9F,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpD,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAInE,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAI9F,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAItE,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIrF,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM1E;;OAEG;IACU,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI;IA0CzF;;OAEG;IACU,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWhF;;OAEG;IACU,YAAY,CACrB,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAC3B,QAAQ,EAAE,QAAQ,EAAE,EACpB,IAAI,EAAE,IAAI,GACX,OAAO,CAAC,OAAO,EAAE,CAAC;CAcxB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ReportService = void 0;
|
|
7
|
+
const report_1 = require("./fatehan/reports/report");
|
|
8
|
+
const system_io_1 = require("./store/system.io");
|
|
9
|
+
const system_io_2 = __importDefault(require("./system.io"));
|
|
10
|
+
class ReportService {
|
|
11
|
+
/**
|
|
12
|
+
* @param url The base URL of the API server.
|
|
13
|
+
* @param headerProvider A function that returns headers to be added to each request.
|
|
14
|
+
*/
|
|
15
|
+
constructor(url, headerProvider) {
|
|
16
|
+
this.namespace = "com.fatehan.reports.ReportService";
|
|
17
|
+
this.url = url;
|
|
18
|
+
this.getDynamicHeaders = headerProvider;
|
|
19
|
+
}
|
|
20
|
+
async _call(methodName, request, encoder, decoder) {
|
|
21
|
+
const dynamicHeaders = await this.getDynamicHeaders();
|
|
22
|
+
const headers = {
|
|
23
|
+
"Content-Type": "application/octet-stream",
|
|
24
|
+
Accept: "application/octet-stream",
|
|
25
|
+
...dynamicHeaders,
|
|
26
|
+
};
|
|
27
|
+
const response = await fetch(`${this.url}/${this.namespace}/${methodName}`, {
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers: headers,
|
|
30
|
+
body: new Uint8Array(encoder.encode(request).finish()),
|
|
31
|
+
});
|
|
32
|
+
if (response.ok) {
|
|
33
|
+
const buffer = await response.arrayBuffer();
|
|
34
|
+
return decoder.decode(new Uint8Array(buffer));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const errorText = await response.text();
|
|
38
|
+
throw new Error(`API Error (${response.status}): ${errorText}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// --- Public Unary API Methods ---
|
|
42
|
+
RouteStopReport(request) {
|
|
43
|
+
return this._call("RouteStopReport", request, report_1.RouteStopRequest, report_1.RouteStopResponse);
|
|
44
|
+
}
|
|
45
|
+
TripPerformanceReport(request) {
|
|
46
|
+
return this._call("TripPerformanceReport", request, report_1.TripPerformanceRequest, report_1.TripPerformanceResponse);
|
|
47
|
+
}
|
|
48
|
+
TripReport(request) {
|
|
49
|
+
return this._call("TripReport", request, report_1.TripReportRequest, report_1.TripReportResponse);
|
|
50
|
+
}
|
|
51
|
+
RouteReviewReport(request) {
|
|
52
|
+
return this._call("RouteReviewReport", request, report_1.RouteReviewRequest, report_1.RouteReviewResponse);
|
|
53
|
+
}
|
|
54
|
+
DashboardIndividual(request) {
|
|
55
|
+
return this._call("DashboardIndividual", request, report_1.DashboardIndividualRequest, report_1.DashboardIndividualResponse);
|
|
56
|
+
}
|
|
57
|
+
LogReport(request) {
|
|
58
|
+
return this._call("LogReport", request, report_1.LogRequest, report_1.LogResponse);
|
|
59
|
+
}
|
|
60
|
+
DataReport(request) {
|
|
61
|
+
return this._call("DeviceDataReport", request, report_1.DeviceDataRequest, report_1.DeviceDataResponse);
|
|
62
|
+
}
|
|
63
|
+
AreaSummaryReviewReport(request) {
|
|
64
|
+
return this._call("AreaSummaryReviewReport", request, report_1.AreaSummaryReviewRequest, report_1.AreaSummaryReviewResponse);
|
|
65
|
+
}
|
|
66
|
+
WorkCycleReport(request) {
|
|
67
|
+
return this._call("WorkCycleReport", request, report_1.WorkCycleRequest, report_1.WorkCycleResponse);
|
|
68
|
+
}
|
|
69
|
+
CommandHistoryReport(request) {
|
|
70
|
+
return this._call("CommandHistoryReport", request, report_1.CommandHistoryRequest, report_1.CommandHistoryResponse);
|
|
71
|
+
}
|
|
72
|
+
WorkflowReport(request) {
|
|
73
|
+
return this._call("WorkflowReport", request, report_1.WorkflowRequest, report_1.WorkflowResponse);
|
|
74
|
+
}
|
|
75
|
+
// --- Special Case Methods ---
|
|
76
|
+
/**
|
|
77
|
+
* Handles a streaming RPC for chart data.
|
|
78
|
+
*/
|
|
79
|
+
async ChartReport(request, responses) {
|
|
80
|
+
const dynamicHeaders = await this.getDynamicHeaders();
|
|
81
|
+
const headers = {
|
|
82
|
+
"Content-Type": "application/octet-stream",
|
|
83
|
+
Accept: "application/octet-stream",
|
|
84
|
+
...dynamicHeaders,
|
|
85
|
+
};
|
|
86
|
+
const res = await fetch(`${this.url}/${this.namespace}/ChartReport`, {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers: headers,
|
|
89
|
+
body: new Uint8Array(report_1.ChartRequest.encode(request).finish()),
|
|
90
|
+
});
|
|
91
|
+
if (res.body == null) {
|
|
92
|
+
console.error("ChartReport response body is null.");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const reader = res.body.getReader();
|
|
96
|
+
let buffer = new Uint8Array(0);
|
|
97
|
+
while (true) {
|
|
98
|
+
const { done, value } = await reader.read();
|
|
99
|
+
if (done)
|
|
100
|
+
break;
|
|
101
|
+
const tmp = new Uint8Array(buffer.length + value.length);
|
|
102
|
+
tmp.set(buffer);
|
|
103
|
+
tmp.set(value, buffer.length);
|
|
104
|
+
buffer = tmp;
|
|
105
|
+
while (buffer.length >= 4) {
|
|
106
|
+
const msgLen = new DataView(buffer.buffer).getUint32(0);
|
|
107
|
+
if (buffer.length < 4 + msgLen)
|
|
108
|
+
break;
|
|
109
|
+
const message = buffer.slice(4, 4 + msgLen);
|
|
110
|
+
responses(report_1.ChartResponse.decode(message));
|
|
111
|
+
buffer = buffer.slice(4 + msgLen);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Fetches System IO data, using a cache first.
|
|
117
|
+
*/
|
|
118
|
+
async SystemIoReport(request) {
|
|
119
|
+
const cachedIo = (0, system_io_1.getSystemIoCache)();
|
|
120
|
+
if (cachedIo != null) {
|
|
121
|
+
return { cost: 0, ios: cachedIo, records: cachedIo.length };
|
|
122
|
+
}
|
|
123
|
+
const response = await this._call("SystemIoReport", request, report_1.SystemIoRequest, report_1.SystemIoResponse);
|
|
124
|
+
(0, system_io_1.setSystemIoCache)(response.ios);
|
|
125
|
+
return response;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* A helper that uses SystemIoReport internally if needed.
|
|
129
|
+
*/
|
|
130
|
+
async SystemIoCast(systemIo, deviceIo, data) {
|
|
131
|
+
var _a;
|
|
132
|
+
let ioData = systemIo;
|
|
133
|
+
if (ioData == null) {
|
|
134
|
+
try {
|
|
135
|
+
const result = await this.SystemIoReport({}); // This call is now authenticated
|
|
136
|
+
if (!((_a = result === null || result === void 0 ? void 0 : result.ios) === null || _a === void 0 ? void 0 : _a.length))
|
|
137
|
+
return [];
|
|
138
|
+
ioData = result.ios;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
console.error("Failed to fetch SystemIoReport in SystemIoCast:", error);
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return (0, system_io_2.default)(ioData, deviceIo, data);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.ReportService = ReportService;
|
package/dist/report.test.js
CHANGED
|
@@ -1,382 +1,123 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
const vitest_1 = require("vitest");
|
|
7
40
|
const report_1 = require("./report");
|
|
8
|
-
const report_2 = require("./fatehan/reports/report");
|
|
9
41
|
const long_1 = __importDefault(require("long"));
|
|
10
42
|
const system_io_1 = __importDefault(require("./system.io"));
|
|
11
|
-
const
|
|
43
|
+
const report_2 = require("./fatehan/reports/report");
|
|
44
|
+
global.fetch = vitest_1.vi.fn();
|
|
45
|
+
vitest_1.vi.mock('./system.io', () => ({
|
|
46
|
+
default: vitest_1.vi.fn(() => [{ name: 'Mocked IO Result', value: 42 }]),
|
|
47
|
+
}));
|
|
48
|
+
vitest_1.vi.mock('./store/system.io', () => ({
|
|
49
|
+
getSystemIoCache: vitest_1.vi.fn(() => null),
|
|
50
|
+
setSystemIoCache: vitest_1.vi.fn(),
|
|
51
|
+
}));
|
|
12
52
|
(0, vitest_1.describe)("ReportService", () => {
|
|
13
|
-
|
|
14
|
-
let
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
groupByDevice: true,
|
|
24
|
-
hourly: false,
|
|
25
|
-
});
|
|
26
|
-
console.log("TripPerformanceReport", res.records);
|
|
27
|
-
});
|
|
28
|
-
(0, vitest_1.it)("TripReport", async () => {
|
|
29
|
-
let res = await c.TripReport({
|
|
30
|
-
deviceIds: [long_1.default.fromInt(124251414), long_1.default.fromInt(124251413)],
|
|
31
|
-
startedAt: new Date("2025-04-01 00:00:00"),
|
|
32
|
-
finishedAt: new Date("2025-04-22 00:00:00"),
|
|
33
|
-
});
|
|
34
|
-
console.log("TripReport", res.records);
|
|
35
|
-
});
|
|
36
|
-
(0, vitest_1.it)("RouteReviewReport", async () => {
|
|
37
|
-
let res = await c.RouteReviewReport({
|
|
38
|
-
deviceId: long_1.default.fromInt(7744),
|
|
39
|
-
startedAt: new Date("2025-04-01 00:00:00"),
|
|
40
|
-
finishedAt: new Date("2025-04-22 00:00:00"),
|
|
41
|
-
includeTrip: true,
|
|
42
|
-
source: report_2.Source.CASSANDRA,
|
|
43
|
-
stopType: report_2.StopCalculateIo.IGNITION,
|
|
44
|
-
});
|
|
45
|
-
console.log("RouteReviewReport", res.records);
|
|
53
|
+
const url = "http://fake-report-server.com";
|
|
54
|
+
let service;
|
|
55
|
+
let mockHeaderProvider;
|
|
56
|
+
(0, vitest_1.beforeEach)(() => {
|
|
57
|
+
vitest_1.vi.clearAllMocks();
|
|
58
|
+
mockHeaderProvider = vitest_1.vi.fn(() => ({
|
|
59
|
+
'authorization': 'Bearer test-token-12345',
|
|
60
|
+
'organization-id': 'org-test-1000001'
|
|
61
|
+
}));
|
|
62
|
+
service = new report_1.ReportService(url, mockHeaderProvider);
|
|
46
63
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
const setupMockSuccessResponse = (data = {}) => {
|
|
65
|
+
global.fetch.mockResolvedValue({
|
|
66
|
+
ok: true,
|
|
67
|
+
arrayBuffer: () => Promise.resolve(new Uint8Array()),
|
|
68
|
+
text: () => Promise.resolve("Success"),
|
|
52
69
|
});
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
70
|
+
};
|
|
71
|
+
(0, vitest_1.it)("should call TripPerformanceReport with correct headers and URL", async () => {
|
|
72
|
+
setupMockSuccessResponse();
|
|
73
|
+
await service.TripPerformanceReport({
|
|
74
|
+
groupByDatetime: report_2.TripPerformanceRequest_GroupBy.All,
|
|
75
|
+
hourly: false,
|
|
76
|
+
deviceId: [long_1.default.fromInt(10168)],
|
|
77
|
+
startedAt: new Date(),
|
|
78
|
+
finishedAt: new Date(),
|
|
79
|
+
groupByDevice: true
|
|
63
80
|
});
|
|
64
|
-
|
|
81
|
+
(0, vitest_1.expect)(mockHeaderProvider).toHaveBeenCalledOnce();
|
|
82
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.reports.ReportService/TripPerformanceReport`, vitest_1.expect.objectContaining({
|
|
83
|
+
method: 'POST',
|
|
84
|
+
headers: vitest_1.expect.objectContaining({
|
|
85
|
+
'authorization': 'Bearer test-token-12345',
|
|
86
|
+
'organization-id': 'org-test-1000001'
|
|
87
|
+
})
|
|
88
|
+
}));
|
|
65
89
|
});
|
|
66
|
-
(0, vitest_1.it)("
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
startedAt: new Date("2025-06-08 00:00:00"),
|
|
71
|
-
finishedAt: new Date("2025-06-12 00:00:00"),
|
|
72
|
-
deviceIds: [long_1.default.fromInt(119926)],
|
|
73
|
-
scope: report_2.AreaSummaryReviewRequest_ScopeEnum.both_side,
|
|
74
|
-
source: report_2.Source.CASSANDRA,
|
|
75
|
-
});
|
|
76
|
-
console.log("AreaSummaryReviewReport", res);
|
|
90
|
+
(0, vitest_1.it)("should call TripReport with correct headers and URL", async () => {
|
|
91
|
+
setupMockSuccessResponse();
|
|
92
|
+
await service.TripReport({ deviceIds: [long_1.default.fromInt(124251414)] });
|
|
93
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.reports.ReportService/TripReport`, vitest_1.expect.any(Object));
|
|
77
94
|
});
|
|
78
|
-
(0, vitest_1.it)("SystemIoReport", async () => {
|
|
79
|
-
|
|
80
|
-
|
|
95
|
+
(0, vitest_1.it)("should call SystemIoReport and then set the cache on success", async () => {
|
|
96
|
+
const { setSystemIoCache } = await Promise.resolve().then(() => __importStar(require('./store/system.io')));
|
|
97
|
+
setupMockSuccessResponse({ ios: [{ id: 1, name: "TestIO" }] });
|
|
98
|
+
await service.SystemIoReport({});
|
|
99
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.reports.ReportService/SystemIoReport`, vitest_1.expect.any(Object));
|
|
81
100
|
});
|
|
82
|
-
(0, vitest_1.it)("
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
deviceIds: [long_1.default.fromInt(124251414)],
|
|
88
|
-
shovelStopSeconds: 60,
|
|
89
|
-
});
|
|
90
|
-
console.log("WorkCycleReport", res);
|
|
91
|
-
});
|
|
92
|
-
(0, vitest_1.it)("ChartReport", async () => {
|
|
93
|
-
await c.ChartReport({
|
|
94
|
-
deviceIds: [long_1.default.fromInt(119926)],
|
|
95
|
-
ios: ["Speed", "Compact.IoElement.ExternalVoltage"],
|
|
96
|
-
startedAt: new Date("2025-06-28 00:00:00"),
|
|
97
|
-
finishedAt: new Date("2025-06-30 00:00:00"),
|
|
98
|
-
}, (chunk) => {
|
|
99
|
-
console.log(report_2.ChartResponse.toJSON(chunk));
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
(0, vitest_1.it)("Io", async () => {
|
|
103
|
-
let devIo = {
|
|
104
|
-
formula: "($speed / 3.6)",
|
|
105
|
-
name: "سرعت",
|
|
106
|
-
type: devices_1.SystemIo_SystemIoType.FLOAT,
|
|
107
|
-
activeStyle: {
|
|
108
|
-
color: "#3a3a3a",
|
|
109
|
-
name: "سرعت",
|
|
110
|
-
},
|
|
111
|
-
inactiveStyle: {
|
|
112
|
-
color: "#a3a3a3",
|
|
113
|
-
name: "سرعت",
|
|
114
|
-
},
|
|
115
|
-
description: "سرعت خودرو",
|
|
116
|
-
unit: "m/h",
|
|
117
|
-
deviceId: long_1.default.fromNumber(7744),
|
|
118
|
-
id: long_1.default.fromNumber(1),
|
|
119
|
-
active: true,
|
|
120
|
-
graphable: true,
|
|
121
|
-
sord: 1,
|
|
122
|
-
hidden: [],
|
|
123
|
-
unknown: {}
|
|
101
|
+
(0, vitest_1.it)("should handle streaming ChartReport fetch call", async () => {
|
|
102
|
+
const mockStreamReader = {
|
|
103
|
+
read: vitest_1.vi.fn()
|
|
104
|
+
.mockResolvedValueOnce({ done: false, value: new Uint8Array([1, 2, 3]) })
|
|
105
|
+
.mockResolvedValueOnce({ done: true, value: undefined }),
|
|
124
106
|
};
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
longitude: 51.60394287109375,
|
|
131
|
-
altitude: 1634,
|
|
132
|
-
angle: 319,
|
|
133
|
-
speed: 38,
|
|
134
|
-
satellite: 20,
|
|
135
|
-
ignition: true,
|
|
136
|
-
mileage: long_1.default.fromNumber(64438820),
|
|
137
|
-
compact: {
|
|
138
|
-
ioElement: {
|
|
139
|
-
gsm: 100,
|
|
140
|
-
sleepMode: 0,
|
|
141
|
-
gnss: 1,
|
|
142
|
-
pdop: undefined,
|
|
143
|
-
hdop: 6,
|
|
144
|
-
externalVoltage: 13837,
|
|
145
|
-
cellId: 27760,
|
|
146
|
-
areaCode: 12540,
|
|
147
|
-
batteryVoltage: 4097,
|
|
148
|
-
batteryCurrent: long_1.default.fromNumber(0),
|
|
149
|
-
batteryPercent: 97,
|
|
150
|
-
operatorCode: 43235,
|
|
151
|
-
tripOdometer: 10,
|
|
152
|
-
ai1: 0,
|
|
153
|
-
ai2: undefined,
|
|
154
|
-
ai3: undefined,
|
|
155
|
-
ai4: undefined,
|
|
156
|
-
di1: true,
|
|
157
|
-
di2: undefined,
|
|
158
|
-
di3: undefined,
|
|
159
|
-
di4: undefined,
|
|
160
|
-
do1: false,
|
|
161
|
-
do2: undefined,
|
|
162
|
-
do3: undefined,
|
|
163
|
-
do4: undefined,
|
|
164
|
-
fuelRateGps: 787,
|
|
165
|
-
fuelUsedGps: 2181327,
|
|
166
|
-
axisX: -192,
|
|
167
|
-
axisY: 317,
|
|
168
|
-
axisZ: -60,
|
|
169
|
-
iccId: long_1.default.fromNumber(408497408),
|
|
170
|
-
sdStatus: undefined,
|
|
171
|
-
iButton: undefined,
|
|
172
|
-
dallas: undefined,
|
|
173
|
-
lls: undefined,
|
|
174
|
-
eye: undefined,
|
|
175
|
-
ble: undefined,
|
|
176
|
-
driver: undefined,
|
|
177
|
-
msp500: undefined,
|
|
178
|
-
rfid: undefined,
|
|
179
|
-
ecoScore: undefined,
|
|
180
|
-
networkType: undefined,
|
|
181
|
-
pulseCounterDin1: undefined,
|
|
182
|
-
pulseCounterDin2: undefined,
|
|
183
|
-
btStatus: undefined,
|
|
184
|
-
barcodeId: undefined,
|
|
185
|
-
instantMovement: undefined,
|
|
186
|
-
ul20202SensorFuelLevel: undefined,
|
|
187
|
-
ul20202SensorStatus: undefined,
|
|
188
|
-
groundSense: undefined,
|
|
189
|
-
iso6709Coordinates: undefined,
|
|
190
|
-
umtsLteCellId: undefined,
|
|
191
|
-
ainSpeed: undefined,
|
|
192
|
-
wakeReason: undefined,
|
|
193
|
-
axlCalibrationStatus: undefined,
|
|
194
|
-
frequencyDin1: undefined,
|
|
195
|
-
frequencyDin2: undefined,
|
|
196
|
-
ignition: undefined,
|
|
197
|
-
idling: false,
|
|
198
|
-
towing: false,
|
|
199
|
-
unplug: false,
|
|
200
|
-
jamming: false,
|
|
201
|
-
movement: true,
|
|
202
|
-
dataMode: 1,
|
|
203
|
-
speed: 38,
|
|
204
|
-
temperature: undefined,
|
|
205
|
-
slopeX: undefined,
|
|
206
|
-
slopeY: undefined,
|
|
207
|
-
slopeZ: undefined,
|
|
208
|
-
humidity: undefined,
|
|
209
|
-
fuelFlow: undefined,
|
|
210
|
-
doorCar: undefined,
|
|
211
|
-
realtime: undefined,
|
|
212
|
-
positioning: undefined,
|
|
213
|
-
adminPhoneNumber: undefined,
|
|
214
|
-
fuelCounter: undefined,
|
|
215
|
-
impulseFrequency1: undefined,
|
|
216
|
-
impulseCounter1: undefined,
|
|
217
|
-
impulseRpm1: undefined,
|
|
218
|
-
impulseFrequency2: undefined,
|
|
219
|
-
impulseCounter2: undefined,
|
|
220
|
-
impulseRpm2: undefined,
|
|
221
|
-
impulseFrequency3: undefined,
|
|
222
|
-
impulseCounter3: undefined,
|
|
223
|
-
impulseRpm3: undefined,
|
|
224
|
-
impulseFrequency4: undefined,
|
|
225
|
-
impulseCounter4: undefined,
|
|
226
|
-
impulseRpm4: undefined,
|
|
227
|
-
numberOfData: undefined,
|
|
228
|
-
rfidCom2: undefined,
|
|
229
|
-
imsi: undefined,
|
|
230
|
-
ultrasonicFuelLevel1: undefined,
|
|
231
|
-
ultrasonicFuelLevel2: undefined,
|
|
232
|
-
ultrasonicSoftwareStatus1: undefined,
|
|
233
|
-
ultrasonicSoftwareStatus2: undefined,
|
|
234
|
-
oneWireHumidity1: undefined,
|
|
235
|
-
oneWireHumidity2: undefined,
|
|
236
|
-
oneWireHumidity3: undefined,
|
|
237
|
-
oneWireHumidity4: undefined,
|
|
238
|
-
oneWireHumidity5: undefined,
|
|
239
|
-
oneWireHumidity6: undefined,
|
|
240
|
-
imei: undefined,
|
|
241
|
-
noSimCounter: undefined,
|
|
242
|
-
connectivityQuality: undefined,
|
|
243
|
-
},
|
|
244
|
-
eventualIoElements: {
|
|
245
|
-
geoFenceZone01: undefined,
|
|
246
|
-
geoFenceZone02: undefined,
|
|
247
|
-
geoFenceZone03: undefined,
|
|
248
|
-
geoFenceZone04: undefined,
|
|
249
|
-
geoFenceZone05: undefined,
|
|
250
|
-
geoFenceZone06: undefined,
|
|
251
|
-
geoFenceZone07: undefined,
|
|
252
|
-
geoFenceZone08: undefined,
|
|
253
|
-
geoFenceZone09: undefined,
|
|
254
|
-
geoFenceZone10: undefined,
|
|
255
|
-
geoFenceZone11: undefined,
|
|
256
|
-
geoFenceZone12: undefined,
|
|
257
|
-
geoFenceZone13: undefined,
|
|
258
|
-
geoFenceZone14: undefined,
|
|
259
|
-
geoFenceZone15: undefined,
|
|
260
|
-
geoFenceZone16: undefined,
|
|
261
|
-
geoFenceZone17: undefined,
|
|
262
|
-
geoFenceZone18: undefined,
|
|
263
|
-
geoFenceZone19: undefined,
|
|
264
|
-
geoFenceZone20: undefined,
|
|
265
|
-
geoFenceZone21: undefined,
|
|
266
|
-
geoFenceZone22: undefined,
|
|
267
|
-
geoFenceZone23: undefined,
|
|
268
|
-
geoFenceZone24: undefined,
|
|
269
|
-
geoFenceZone25: undefined,
|
|
270
|
-
geoFenceZone26: undefined,
|
|
271
|
-
geoFenceZone27: undefined,
|
|
272
|
-
geoFenceZone28: undefined,
|
|
273
|
-
geoFenceZone29: undefined,
|
|
274
|
-
geoFenceZone30: undefined,
|
|
275
|
-
geoFenceZone31: undefined,
|
|
276
|
-
geoFenceZone32: undefined,
|
|
277
|
-
geoFenceZone33: undefined,
|
|
278
|
-
geoFenceZone34: undefined,
|
|
279
|
-
geoFenceZone35: undefined,
|
|
280
|
-
geoFenceZone36: undefined,
|
|
281
|
-
geoFenceZone37: undefined,
|
|
282
|
-
geoFenceZone38: undefined,
|
|
283
|
-
geoFenceZone39: undefined,
|
|
284
|
-
geoFenceZone40: undefined,
|
|
285
|
-
geoFenceZone41: undefined,
|
|
286
|
-
geoFenceZone42: undefined,
|
|
287
|
-
geoFenceZone43: undefined,
|
|
288
|
-
geoFenceZone44: undefined,
|
|
289
|
-
geoFenceZone45: undefined,
|
|
290
|
-
geoFenceZone46: undefined,
|
|
291
|
-
geoFenceZone47: undefined,
|
|
292
|
-
geoFenceZone48: undefined,
|
|
293
|
-
geoFenceZone49: undefined,
|
|
294
|
-
geoFenceZone50: undefined,
|
|
295
|
-
greenDrivingType: undefined,
|
|
296
|
-
greenDrivingValue: undefined,
|
|
297
|
-
crashDetection: undefined,
|
|
298
|
-
immobilizer: undefined,
|
|
299
|
-
iccId2: long_1.default.fromNumber(1871890036),
|
|
300
|
-
greenDrivingEventDuration: undefined,
|
|
301
|
-
alarm: undefined,
|
|
302
|
-
ecoMaximum: undefined,
|
|
303
|
-
ecoAverage: undefined,
|
|
304
|
-
ecoDuration: undefined,
|
|
305
|
-
drivingState: undefined,
|
|
306
|
-
drivingRecords: undefined,
|
|
307
|
-
crashEventCounter: undefined,
|
|
308
|
-
gnssJamming: undefined,
|
|
309
|
-
privateMode: undefined,
|
|
310
|
-
ignitionOnCounter: undefined,
|
|
311
|
-
motorcycleFallDetection: undefined,
|
|
312
|
-
trip: undefined,
|
|
313
|
-
overSpeeding: undefined,
|
|
314
|
-
crashTraceData: undefined,
|
|
315
|
-
bloodAlcoholContent: undefined,
|
|
316
|
-
autoGeoFence: undefined,
|
|
317
|
-
iccId3: undefined,
|
|
318
|
-
geoFenceZone51: undefined,
|
|
319
|
-
geoFenceZone52: undefined,
|
|
320
|
-
geoFenceZone53: undefined,
|
|
321
|
-
geoFenceZone54: undefined,
|
|
322
|
-
geoFenceZone55: undefined,
|
|
323
|
-
geoFenceZone56: undefined,
|
|
324
|
-
geoFenceZone57: undefined,
|
|
325
|
-
geoFenceZone58: undefined,
|
|
326
|
-
geoFenceZone59: undefined,
|
|
327
|
-
geoFenceZone60: undefined,
|
|
328
|
-
geoFenceZone61: undefined,
|
|
329
|
-
geoFenceZone62: undefined,
|
|
330
|
-
geoFenceZone63: undefined,
|
|
331
|
-
geoFenceZone64: undefined,
|
|
332
|
-
geoFenceZone65: undefined,
|
|
333
|
-
geoFenceZone66: undefined,
|
|
334
|
-
geoFenceZone67: undefined,
|
|
335
|
-
geoFenceZone68: undefined,
|
|
336
|
-
geoFenceZone69: undefined,
|
|
337
|
-
geoFenceZone70: undefined,
|
|
338
|
-
geoFenceZone71: undefined,
|
|
339
|
-
geoFenceZone72: undefined,
|
|
340
|
-
geoFenceZone73: undefined,
|
|
341
|
-
geoFenceZone74: undefined,
|
|
342
|
-
geoFenceZone75: undefined,
|
|
343
|
-
geoFenceZone76: undefined,
|
|
344
|
-
geoFenceZone77: undefined,
|
|
345
|
-
geoFenceZone78: undefined,
|
|
346
|
-
geoFenceZone79: undefined,
|
|
347
|
-
geoFenceZone80: undefined,
|
|
348
|
-
geoFenceZone81: undefined,
|
|
349
|
-
geoFenceZone82: undefined,
|
|
350
|
-
geoFenceZone83: undefined,
|
|
351
|
-
geoFenceZone84: undefined,
|
|
352
|
-
geoFenceZone85: undefined,
|
|
353
|
-
geoFenceZone86: undefined,
|
|
354
|
-
geoFenceZone87: undefined,
|
|
355
|
-
geoFenceZone88: undefined,
|
|
356
|
-
geoFenceZone89: undefined,
|
|
357
|
-
geoFenceZone90: undefined,
|
|
358
|
-
geoFenceZone91: undefined,
|
|
359
|
-
geoFenceZone92: undefined,
|
|
360
|
-
geoFenceZone93: undefined,
|
|
361
|
-
geoFenceZone94: undefined,
|
|
362
|
-
geoFenceZone95: undefined,
|
|
363
|
-
geoFenceZone96: undefined,
|
|
364
|
-
geoFenceZone97: undefined,
|
|
365
|
-
geoFenceZone98: undefined,
|
|
366
|
-
geoFenceZone99: undefined,
|
|
367
|
-
geoFenceZone100: undefined,
|
|
368
|
-
},
|
|
369
|
-
obdElements: undefined,
|
|
370
|
-
obdOemElements: undefined,
|
|
371
|
-
bleSensorsIoElements: undefined,
|
|
372
|
-
canAdaptersElements: undefined,
|
|
373
|
-
alerts: [0],
|
|
374
|
-
alertValues: {},
|
|
375
|
-
adas: undefined,
|
|
376
|
-
fms: undefined,
|
|
377
|
-
unknownIos: {},
|
|
378
|
-
},
|
|
107
|
+
global.fetch.mockResolvedValue({
|
|
108
|
+
ok: true,
|
|
109
|
+
body: {
|
|
110
|
+
getReader: () => mockStreamReader,
|
|
111
|
+
}
|
|
379
112
|
});
|
|
380
|
-
|
|
113
|
+
const onChunkCallback = vitest_1.vi.fn();
|
|
114
|
+
await service.ChartReport({ finishedAt: undefined, ios: [], startedAt: undefined, deviceIds: [long_1.default.fromInt(119926)] }, onChunkCallback);
|
|
115
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.reports.ReportService/ChartReport`, vitest_1.expect.any(Object));
|
|
116
|
+
});
|
|
117
|
+
(0, vitest_1.it)("SystemIoCast should trigger SystemIoReport when cache is empty", async () => {
|
|
118
|
+
setupMockSuccessResponse();
|
|
119
|
+
await service.SystemIoCast(null, [], { deviceId: long_1.default.ZERO });
|
|
120
|
+
(0, vitest_1.expect)(global.fetch).toHaveBeenCalledWith(`${url}/com.fatehan.reports.ReportService/SystemIoReport`, vitest_1.expect.any(Object));
|
|
121
|
+
(0, vitest_1.expect)(system_io_1.default).toHaveBeenCalled();
|
|
381
122
|
});
|
|
382
123
|
});
|