@fatehan/tsrp 1.1.14 → 1.1.15
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 +8 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +27 -72
- package/dist/api.test.js +3 -9
- package/dist/fatehan/identities/authentication.d.ts +67 -0
- package/dist/fatehan/identities/authentication.d.ts.map +1 -0
- package/dist/fatehan/identities/authentication.js +616 -0
- package/dist/fatehan/identities/identities.d.ts +2 -0
- package/dist/fatehan/identities/identities.d.ts.map +1 -1
- package/dist/fatehan/identities/identities.js +18 -1
- package/dist/fatehan/packets/dataModel.d.ts +2 -0
- package/dist/fatehan/packets/dataModel.d.ts.map +1 -1
- package/dist/fatehan/packets/dataModel.js +23 -1
- package/dist/report.d.ts +22 -3
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +82 -190
- package/package.json +2 -2
package/dist/report.js
CHANGED
|
@@ -7,179 +7,93 @@ exports.ReportService = void 0;
|
|
|
7
7
|
const report_1 = require("./fatehan/reports/report");
|
|
8
8
|
const system_io_1 = require("./store/system.io");
|
|
9
9
|
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
|
+
*/
|
|
10
14
|
class ReportService {
|
|
11
|
-
|
|
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
|
+
constructor(url, headerProvider) {
|
|
12
20
|
this.namespace = "com.fatehan.reports.ReportService";
|
|
13
21
|
this.url = url;
|
|
14
|
-
this.
|
|
22
|
+
this.getDynamicHeaders = headerProvider;
|
|
23
|
+
}
|
|
24
|
+
async _call(methodName, request, encoder, decoder) {
|
|
25
|
+
const dynamicHeaders = await this.getDynamicHeaders();
|
|
26
|
+
const headers = {
|
|
15
27
|
"Content-Type": "application/octet-stream",
|
|
16
28
|
Accept: "application/octet-stream",
|
|
29
|
+
...dynamicHeaders,
|
|
17
30
|
};
|
|
18
|
-
|
|
19
|
-
|
|
31
|
+
const response = await fetch(`${this.url}/${this.namespace}/${methodName}`, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: headers,
|
|
34
|
+
body: new Uint8Array(encoder.encode(request).finish()),
|
|
35
|
+
});
|
|
36
|
+
if (response.ok) {
|
|
37
|
+
const buffer = await response.arrayBuffer();
|
|
38
|
+
return decoder.decode(new Uint8Array(buffer));
|
|
20
39
|
}
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
else {
|
|
41
|
+
const errorText = await response.text();
|
|
42
|
+
throw new Error(`API Error (${response.status}): ${errorText}`);
|
|
23
43
|
}
|
|
24
44
|
}
|
|
45
|
+
// --- Public Unary API Methods ---
|
|
25
46
|
RouteStopReport(request) {
|
|
26
|
-
return
|
|
27
|
-
const response = await fetch(`${this.url}/${this.namespace}/RouteStopReport`, {
|
|
28
|
-
method: "POST",
|
|
29
|
-
headers: this.headers,
|
|
30
|
-
body: new Uint8Array(report_1.RouteStopRequest.encode(request).finish()),
|
|
31
|
-
});
|
|
32
|
-
if (response.ok) {
|
|
33
|
-
resolve(report_1.RouteStopResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
reject(await response.text());
|
|
37
|
-
}
|
|
38
|
-
});
|
|
47
|
+
return this._call("RouteStopReport", request, report_1.RouteStopRequest, report_1.RouteStopResponse);
|
|
39
48
|
}
|
|
40
49
|
TripPerformanceReport(request) {
|
|
41
|
-
return
|
|
42
|
-
const response = await fetch(`${this.url}/${this.namespace}/TripPerformanceReport`, {
|
|
43
|
-
method: "POST",
|
|
44
|
-
headers: this.headers,
|
|
45
|
-
body: new Uint8Array(report_1.TripPerformanceRequest.encode(request).finish()),
|
|
46
|
-
});
|
|
47
|
-
if (response.ok) {
|
|
48
|
-
resolve(report_1.TripPerformanceResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
reject(await response.text());
|
|
52
|
-
}
|
|
53
|
-
});
|
|
50
|
+
return this._call("TripPerformanceReport", request, report_1.TripPerformanceRequest, report_1.TripPerformanceResponse);
|
|
54
51
|
}
|
|
55
52
|
TripReport(request) {
|
|
56
|
-
return
|
|
57
|
-
const response = await fetch(`${this.url}/${this.namespace}/TripReport`, {
|
|
58
|
-
method: "POST",
|
|
59
|
-
headers: this.headers,
|
|
60
|
-
body: new Uint8Array(report_1.TripReportRequest.encode(request).finish()),
|
|
61
|
-
});
|
|
62
|
-
if (response.ok) {
|
|
63
|
-
resolve(report_1.TripReportResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
reject(await response.text());
|
|
67
|
-
}
|
|
68
|
-
});
|
|
53
|
+
return this._call("TripReport", request, report_1.TripReportRequest, report_1.TripReportResponse);
|
|
69
54
|
}
|
|
70
55
|
RouteReviewReport(request) {
|
|
71
|
-
return
|
|
72
|
-
const response = await fetch(`${this.url}/${this.namespace}/RouteReviewReport`, {
|
|
73
|
-
method: "POST",
|
|
74
|
-
headers: this.headers,
|
|
75
|
-
body: new Uint8Array(report_1.RouteReviewRequest.encode(request).finish()),
|
|
76
|
-
});
|
|
77
|
-
if (response.ok) {
|
|
78
|
-
resolve(report_1.RouteReviewResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
reject(await response.text());
|
|
82
|
-
}
|
|
83
|
-
});
|
|
56
|
+
return this._call("RouteReviewReport", request, report_1.RouteReviewRequest, report_1.RouteReviewResponse);
|
|
84
57
|
}
|
|
85
58
|
DashboardIndividual(request) {
|
|
86
|
-
return
|
|
87
|
-
const response = await fetch(`${this.url}/${this.namespace}/DashboardIndividual`, {
|
|
88
|
-
method: "POST",
|
|
89
|
-
headers: this.headers,
|
|
90
|
-
body: new Uint8Array(report_1.DashboardIndividualRequest.encode(request).finish()),
|
|
91
|
-
});
|
|
92
|
-
if (response.ok) {
|
|
93
|
-
resolve(report_1.DashboardIndividualResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
reject(await response.text());
|
|
97
|
-
}
|
|
98
|
-
});
|
|
59
|
+
return this._call("DashboardIndividual", request, report_1.DashboardIndividualRequest, report_1.DashboardIndividualResponse);
|
|
99
60
|
}
|
|
100
61
|
LogReport(request) {
|
|
101
|
-
return
|
|
102
|
-
const response = await fetch(`${this.url}/${this.namespace}/LogReport`, {
|
|
103
|
-
method: "POST",
|
|
104
|
-
headers: this.headers,
|
|
105
|
-
body: new Uint8Array(report_1.LogRequest.encode(request).finish()),
|
|
106
|
-
});
|
|
107
|
-
if (response.ok) {
|
|
108
|
-
resolve(report_1.LogResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
reject(await response.text());
|
|
112
|
-
}
|
|
113
|
-
});
|
|
62
|
+
return this._call("LogReport", request, report_1.LogRequest, report_1.LogResponse);
|
|
114
63
|
}
|
|
115
64
|
DataReport(request) {
|
|
116
|
-
return
|
|
117
|
-
const response = await fetch(`${this.url}/${this.namespace}/DeviceDataReport`, {
|
|
118
|
-
method: "POST",
|
|
119
|
-
headers: this.headers,
|
|
120
|
-
body: new Uint8Array(report_1.DeviceDataRequest.encode(request).finish()),
|
|
121
|
-
});
|
|
122
|
-
if (response.ok) {
|
|
123
|
-
resolve(report_1.DeviceDataResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
reject(await response.text());
|
|
127
|
-
}
|
|
128
|
-
});
|
|
65
|
+
return this._call("DeviceDataReport", request, report_1.DeviceDataRequest, report_1.DeviceDataResponse);
|
|
129
66
|
}
|
|
130
67
|
AreaSummaryReviewReport(request) {
|
|
131
|
-
return
|
|
132
|
-
const response = await fetch(`${this.url}/${this.namespace}/AreaSummaryReviewReport`, {
|
|
133
|
-
method: "POST",
|
|
134
|
-
headers: this.headers,
|
|
135
|
-
body: new Uint8Array(report_1.AreaSummaryReviewRequest.encode(request).finish()),
|
|
136
|
-
});
|
|
137
|
-
if (response.ok) {
|
|
138
|
-
resolve(report_1.AreaSummaryReviewResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
reject(await response.text());
|
|
142
|
-
}
|
|
143
|
-
});
|
|
68
|
+
return this._call("AreaSummaryReviewReport", request, report_1.AreaSummaryReviewRequest, report_1.AreaSummaryReviewResponse);
|
|
144
69
|
}
|
|
145
70
|
WorkCycleReport(request) {
|
|
146
|
-
return
|
|
147
|
-
const response = await fetch(`${this.url}/${this.namespace}/WorkCycleReport`, {
|
|
148
|
-
method: "POST",
|
|
149
|
-
headers: this.headers,
|
|
150
|
-
body: new Uint8Array(report_1.WorkCycleRequest.encode(request).finish()),
|
|
151
|
-
});
|
|
152
|
-
if (response.ok) {
|
|
153
|
-
resolve(report_1.WorkCycleResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
reject(await response.text());
|
|
157
|
-
}
|
|
158
|
-
});
|
|
71
|
+
return this._call("WorkCycleReport", request, report_1.WorkCycleRequest, report_1.WorkCycleResponse);
|
|
159
72
|
}
|
|
160
73
|
CommandHistoryReport(request) {
|
|
161
|
-
return
|
|
162
|
-
const response = await fetch(`${this.url}/${this.namespace}/CommandHistoryReport`, {
|
|
163
|
-
method: "POST",
|
|
164
|
-
headers: this.headers,
|
|
165
|
-
body: new Uint8Array(report_1.CommandHistoryRequest.encode(request).finish()),
|
|
166
|
-
});
|
|
167
|
-
if (response.ok) {
|
|
168
|
-
resolve(report_1.CommandHistoryResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
reject(await response.text());
|
|
172
|
-
}
|
|
173
|
-
});
|
|
74
|
+
return this._call("CommandHistoryReport", request, report_1.CommandHistoryRequest, report_1.CommandHistoryResponse);
|
|
174
75
|
}
|
|
76
|
+
WorkflowReport(request) {
|
|
77
|
+
return this._call("WorkflowReport", request, report_1.WorkflowRequest, report_1.WorkflowResponse);
|
|
78
|
+
}
|
|
79
|
+
// --- Special Case Methods ---
|
|
80
|
+
/**
|
|
81
|
+
* Handles a streaming RPC for chart data.
|
|
82
|
+
*/
|
|
175
83
|
async ChartReport(request, responses) {
|
|
84
|
+
const dynamicHeaders = await this.getDynamicHeaders();
|
|
85
|
+
const headers = {
|
|
86
|
+
"Content-Type": "application/octet-stream",
|
|
87
|
+
Accept: "application/octet-stream",
|
|
88
|
+
...dynamicHeaders,
|
|
89
|
+
};
|
|
176
90
|
const res = await fetch(`${this.url}/${this.namespace}/ChartReport`, {
|
|
177
91
|
method: "POST",
|
|
178
|
-
headers:
|
|
92
|
+
headers: headers,
|
|
179
93
|
body: new Uint8Array(report_1.ChartRequest.encode(request).finish()),
|
|
180
94
|
});
|
|
181
95
|
if (res.body == null) {
|
|
182
|
-
console.error("
|
|
96
|
+
console.error("ChartReport response body is null.");
|
|
183
97
|
return;
|
|
184
98
|
}
|
|
185
99
|
const reader = res.body.getReader();
|
|
@@ -196,65 +110,43 @@ class ReportService {
|
|
|
196
110
|
const msgLen = new DataView(buffer.buffer).getUint32(0);
|
|
197
111
|
if (buffer.length < 4 + msgLen)
|
|
198
112
|
break;
|
|
199
|
-
|
|
113
|
+
const message = buffer.slice(4, 4 + msgLen);
|
|
114
|
+
responses(report_1.ChartResponse.decode(message));
|
|
200
115
|
buffer = buffer.slice(4 + msgLen);
|
|
201
116
|
}
|
|
202
117
|
}
|
|
203
118
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
const response = await fetch(`${this.url}/${this.namespace}/SystemIoReport`, {
|
|
216
|
-
method: "POST",
|
|
217
|
-
headers: this.headers,
|
|
218
|
-
body: new Uint8Array(report_1.SystemIoRequest.encode(request).finish()),
|
|
219
|
-
});
|
|
220
|
-
if (response.ok) {
|
|
221
|
-
let systemIo = report_1.SystemIoResponse.decode(new Uint8Array(await response.arrayBuffer()));
|
|
222
|
-
(0, system_io_1.setSystemIoCache)(systemIo.ios);
|
|
223
|
-
resolve(systemIo);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
reject(await response.text());
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
WorkflowReport(request) {
|
|
231
|
-
return new Promise(async (resolve, reject) => {
|
|
232
|
-
const response = await fetch(`${this.url}/${this.namespace}/WorkflowReport`, {
|
|
233
|
-
method: "POST",
|
|
234
|
-
headers: this.headers,
|
|
235
|
-
body: new Uint8Array(report_1.WorkflowRequest.encode(request).finish()),
|
|
236
|
-
});
|
|
237
|
-
if (response.ok) {
|
|
238
|
-
resolve(report_1.WorkflowResponse.decode(new Uint8Array(await response.arrayBuffer())));
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
reject(await response.text());
|
|
242
|
-
}
|
|
243
|
-
});
|
|
119
|
+
/**
|
|
120
|
+
* Fetches System IO data, using a cache first.
|
|
121
|
+
*/
|
|
122
|
+
async SystemIoReport(request) {
|
|
123
|
+
const cachedIo = (0, system_io_1.getSystemIoCache)();
|
|
124
|
+
if (cachedIo != null) {
|
|
125
|
+
return { cost: 0, ios: cachedIo, records: cachedIo.length };
|
|
126
|
+
}
|
|
127
|
+
const response = await this._call("SystemIoReport", request, report_1.SystemIoRequest, report_1.SystemIoResponse);
|
|
128
|
+
(0, system_io_1.setSystemIoCache)(response.ios);
|
|
129
|
+
return response;
|
|
244
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* A helper that uses SystemIoReport internally if needed.
|
|
133
|
+
*/
|
|
245
134
|
async SystemIoCast(systemIo, deviceIo, data) {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
135
|
+
var _a;
|
|
136
|
+
let ioData = systemIo;
|
|
137
|
+
if (ioData == null) {
|
|
138
|
+
try {
|
|
139
|
+
const result = await this.SystemIoReport({}); // This call is now authenticated
|
|
140
|
+
if (!((_a = result === null || result === void 0 ? void 0 : result.ios) === null || _a === void 0 ? void 0 : _a.length))
|
|
141
|
+
return [];
|
|
142
|
+
ioData = result.ios;
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
console.error("Failed to fetch SystemIoReport in SystemIoCast:", error);
|
|
146
|
+
return [];
|
|
254
147
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
});
|
|
148
|
+
}
|
|
149
|
+
return (0, system_io_2.default)(ioData, deviceIo, data);
|
|
258
150
|
}
|
|
259
151
|
}
|
|
260
152
|
exports.ReportService = ReportService;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fatehan/tsrp",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.15",
|
|
4
4
|
"description": "fatehan main models",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/google-protobuf": "^3.15.12",
|
|
30
30
|
"@types/long": "^5.0.0",
|
|
31
|
-
"@types/node": "^24.5.
|
|
31
|
+
"@types/node": "^24.5.2",
|
|
32
32
|
"ts-node": "^10.9.2",
|
|
33
33
|
"ts-proto": "^2.7.7",
|
|
34
34
|
"typescript": "^5.9.2",
|