@fatehan/tsrp 1.1.14 → 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.
@@ -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 devices_1 = require("./fatehan/devices/devices");
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
- let url = "http://report.myavl.ir:1272";
14
- let token = "5|gvRWOzVBVN3a6Q7iajws2uV9TEVELEK81H3RCpzO85369b27";
15
- let organization = "1000001";
16
- let c = new report_1.ReportService(url, token, organization);
17
- (0, vitest_1.it)("TripPerformanceReport", async () => {
18
- let res = await c.TripPerformanceReport({
19
- deviceId: [long_1.default.fromInt(10168), long_1.default.fromInt(10532)],
20
- startedAt: new Date("2025-04-01 00:00:00"),
21
- finishedAt: new Date("2025-06-22 00:00:00"),
22
- groupByDatetime: report_2.TripPerformanceRequest_GroupBy.Month,
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
- (0, vitest_1.it)("DashboardReport", async () => {
48
- let res = await c.DashboardIndividual({
49
- deviceId: long_1.default.fromInt(124251414),
50
- startedAt: new Date("2025-04-01 00:00:00"),
51
- finishedAt: new Date("2025-04-22 00:00:00"),
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
- console.log("DashboardReport", res);
54
- });
55
- (0, vitest_1.it)("LogReport", async () => {
56
- let res = await c.LogReport({
57
- deviceId: long_1.default.fromInt(124251414),
58
- startedAt: new Date("2025-05-19 00:00:00"),
59
- finishedAt: new Date("2025-05-220 00:00:00"),
60
- limit: long_1.default.fromInt(50),
61
- page: long_1.default.fromInt(1),
62
- sort: long_1.default.fromInt(-1),
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
- console.log("LogReport", res);
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)("AreaSummaryReviewReport", async () => {
67
- let res = await c.AreaSummaryReviewReport({
68
- areaIds: [long_1.default.fromInt(1000000), long_1.default.fromInt(1000009)],
69
- areaSource: report_2.AreaSummaryReviewRequest_AreaSourceEnum.odyssey,
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
- let res = await c.SystemIoReport({});
80
- console.log("SystemIoReport", res);
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)("WorkCycleReport", async () => {
83
- let res = await c.WorkCycleReport({
84
- areaStopSeconds: 10,
85
- startedAt: new Date("2025-06-01 00:00:00"),
86
- finishedAt: new Date("2025-06-30 00:00:00"),
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
- let systemIos = await c.SystemIoReport({});
126
- let result = (0, system_io_1.default)(systemIos.ios, [devIo], {
127
- deviceId: long_1.default.fromNumber(7744),
128
- gpsTime: new Date("2025-04-21T09:06:06.000Z"),
129
- latitude: 32.61252975463867,
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
- console.log(result);
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
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fatehan/tsrp",
3
- "version": "1.1.14",
3
+ "version": "1.2.1",
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.0",
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",