/
Validator.ts
61 lines (48 loc) · 1.69 KB
/
Validator.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { isTransportAvoid, isTransportMode, isTransportType } from '.';
export function validateTransportSettings(settings): void {
if (!isTransportMode(settings.mode)) {
throw new Error('Invalid transport mode ' + settings.mode);
}
if (!isTransportType(settings.type)) {
throw new Error('Invalid transport type ' + settings.type);
}
if (!settings.hasOwnProperty('avoid') && !(settings.avoid instanceof Array)) {
throw new Error('avoid must be an array');
}
settings.avoid.forEach((avoid) => {
if (!isTransportAvoid(avoid)) {
throw new Error('Invalid avoid value ' + avoid);
}
});
if (!settings.hasOwnProperty('startTime')) {
throw new Error('Missing startTime');
}
if (settings.startTime !== null && settings.startTime > 24 * 3600 || settings.startTime < 0) {
throw new Error('Invalid startTime value ' + settings.startTime);
}
if (!settings.hasOwnProperty('duration')) {
throw new Error('Missing duration');
}
if (settings.duration !== null && settings.duration < 0) {
throw new Error('Invalid duration value ' + settings.duration);
}
if (!settings.hasOwnProperty('note')) {
throw new Error('Missing note');
}
if (settings.note !== null && typeof settings.note !== 'string') {
throw new Error('Invalid note value ' + settings.note);
}
if (!settings.hasOwnProperty('waypoints') && !(settings.waypoints instanceof Array)) {
throw new Error('waypoints must be an array');
}
settings.waypoints.forEach((wp) => {
if (
!wp.hasOwnProperty('lat') ||
!wp.hasOwnProperty('lng') ||
!(!isNaN(parseFloat(wp.lat)) && isFinite(wp.lat)) ||
!(!isNaN(parseFloat(wp.lng)) && isFinite(wp.lng))
) {
throw new Error('Invalid waypoint value ' + wp.toString());
}
});
}