hk-bus-eta 3.8.0 → 3.8.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/lightRail.js +20 -11
- package/dist/lightRail.js.map +1 -1
- package/esm/lightRail.js +20 -11
- package/esm/lightRail.js.map +1 -1
- package/package.json +1 -1
- package/src/lightRail.ts +78 -46
package/dist/lightRail.js
CHANGED
|
@@ -23,16 +23,16 @@ function fetchEtas({ stopId, route, dest, }) {
|
|
|
23
23
|
},
|
|
24
24
|
];
|
|
25
25
|
}
|
|
26
|
-
// How should `end_service_status` for only some platforms be handled? Would a light rail line stop at different platforms?
|
|
27
26
|
return platform_list.reduce((acc, { route_list, platform_id }) => {
|
|
28
27
|
return [
|
|
29
28
|
...acc,
|
|
30
|
-
// route_list is null when there are no ETAs available
|
|
31
29
|
...(route_list !== null && route_list !== void 0 ? route_list : [])
|
|
32
|
-
.filter(({ route_no, dest_ch, dest_en, stop }) =>
|
|
30
|
+
.filter(({ route_no, additionalInfo1, dest_ch, dest_en, stop, }) =>
|
|
31
|
+
// match route number OR additionalInfo1 to the requested route
|
|
32
|
+
(route === route_no || route === additionalInfo1) &&
|
|
33
33
|
(dest_ch === dest.zh || dest_en.includes("Circular")) &&
|
|
34
34
|
stop === 0)
|
|
35
|
-
.map(({ time_en, train_length }) => {
|
|
35
|
+
.map(({ time_en, train_length, routeRemarkEng2, routeRemarkChi2, }) => {
|
|
36
36
|
let waitTime = 0;
|
|
37
37
|
switch (time_en.toLowerCase()) {
|
|
38
38
|
case "arriving":
|
|
@@ -45,16 +45,25 @@ function fetchEtas({ stopId, route, dest, }) {
|
|
|
45
45
|
break;
|
|
46
46
|
}
|
|
47
47
|
const etaDate = new Date(Date.now() + waitTime * 60 * 1000 + 8 * 3600000);
|
|
48
|
+
const platformText = `${platform_id}號月台 - ${Array(train_length)
|
|
49
|
+
.fill("▭")
|
|
50
|
+
.join("")}`;
|
|
51
|
+
const platformTextEn = `Platform ${platform_id} - ${Array(train_length)
|
|
52
|
+
.fill("▭")
|
|
53
|
+
.join("")}`;
|
|
54
|
+
// Append routeRemarkEng2 / routeRemarkChi2 if present
|
|
55
|
+
const remarkZh = routeRemarkChi2
|
|
56
|
+
? `${platformText} - ${routeRemarkChi2}`
|
|
57
|
+
: platformText;
|
|
58
|
+
const remarkEn = routeRemarkEng2
|
|
59
|
+
? `${platformTextEn} - ${routeRemarkEng2}`
|
|
60
|
+
: platformTextEn;
|
|
48
61
|
return {
|
|
49
62
|
eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
|
|
50
63
|
`T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
|
|
51
64
|
remark: {
|
|
52
|
-
zh:
|
|
53
|
-
|
|
54
|
-
.join("")}`,
|
|
55
|
-
en: `Platform ${platform_id} - ${Array(train_length)
|
|
56
|
-
.fill("▭")
|
|
57
|
-
.join("")}`,
|
|
65
|
+
zh: remarkZh,
|
|
66
|
+
en: remarkEn,
|
|
58
67
|
},
|
|
59
68
|
dest: {
|
|
60
69
|
zh: "",
|
|
@@ -62,7 +71,7 @@ function fetchEtas({ stopId, route, dest, }) {
|
|
|
62
71
|
},
|
|
63
72
|
co: "lightRail",
|
|
64
73
|
};
|
|
65
|
-
}
|
|
74
|
+
}),
|
|
66
75
|
];
|
|
67
76
|
}, []);
|
|
68
77
|
})
|
package/dist/lightRail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":";;AACA,mCAAmC;AAQnC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,IAAI,GACW;IACf,OAAO,KAAK,CACV,sEAAsE,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
|
package/esm/lightRail.js
CHANGED
|
@@ -21,16 +21,16 @@ export default function fetchEtas({ stopId, route, dest, }) {
|
|
|
21
21
|
},
|
|
22
22
|
];
|
|
23
23
|
}
|
|
24
|
-
// How should `end_service_status` for only some platforms be handled? Would a light rail line stop at different platforms?
|
|
25
24
|
return platform_list.reduce((acc, { route_list, platform_id }) => {
|
|
26
25
|
return [
|
|
27
26
|
...acc,
|
|
28
|
-
// route_list is null when there are no ETAs available
|
|
29
27
|
...(route_list !== null && route_list !== void 0 ? route_list : [])
|
|
30
|
-
.filter(({ route_no, dest_ch, dest_en, stop }) =>
|
|
28
|
+
.filter(({ route_no, additionalInfo1, dest_ch, dest_en, stop, }) =>
|
|
29
|
+
// match route number OR additionalInfo1 to the requested route
|
|
30
|
+
(route === route_no || route === additionalInfo1) &&
|
|
31
31
|
(dest_ch === dest.zh || dest_en.includes("Circular")) &&
|
|
32
32
|
stop === 0)
|
|
33
|
-
.map(({ time_en, train_length }) => {
|
|
33
|
+
.map(({ time_en, train_length, routeRemarkEng2, routeRemarkChi2, }) => {
|
|
34
34
|
let waitTime = 0;
|
|
35
35
|
switch (time_en.toLowerCase()) {
|
|
36
36
|
case "arriving":
|
|
@@ -43,16 +43,25 @@ export default function fetchEtas({ stopId, route, dest, }) {
|
|
|
43
43
|
break;
|
|
44
44
|
}
|
|
45
45
|
const etaDate = new Date(Date.now() + waitTime * 60 * 1000 + 8 * 3600000);
|
|
46
|
+
const platformText = `${platform_id}號月台 - ${Array(train_length)
|
|
47
|
+
.fill("▭")
|
|
48
|
+
.join("")}`;
|
|
49
|
+
const platformTextEn = `Platform ${platform_id} - ${Array(train_length)
|
|
50
|
+
.fill("▭")
|
|
51
|
+
.join("")}`;
|
|
52
|
+
// Append routeRemarkEng2 / routeRemarkChi2 if present
|
|
53
|
+
const remarkZh = routeRemarkChi2
|
|
54
|
+
? `${platformText} - ${routeRemarkChi2}`
|
|
55
|
+
: platformText;
|
|
56
|
+
const remarkEn = routeRemarkEng2
|
|
57
|
+
? `${platformTextEn} - ${routeRemarkEng2}`
|
|
58
|
+
: platformTextEn;
|
|
46
59
|
return {
|
|
47
60
|
eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
|
|
48
61
|
`T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
|
|
49
62
|
remark: {
|
|
50
|
-
zh:
|
|
51
|
-
|
|
52
|
-
.join("")}`,
|
|
53
|
-
en: `Platform ${platform_id} - ${Array(train_length)
|
|
54
|
-
.fill("▭")
|
|
55
|
-
.join("")}`,
|
|
63
|
+
zh: remarkZh,
|
|
64
|
+
en: remarkEn,
|
|
56
65
|
},
|
|
57
66
|
dest: {
|
|
58
67
|
zh: "",
|
|
@@ -60,7 +69,7 @@ export default function fetchEtas({ stopId, route, dest, }) {
|
|
|
60
69
|
},
|
|
61
70
|
co: "lightRail",
|
|
62
71
|
};
|
|
63
|
-
}
|
|
72
|
+
}),
|
|
64
73
|
];
|
|
65
74
|
}, []);
|
|
66
75
|
})
|
package/esm/lightRail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQnC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,IAAI,GACW;IACf,OAAO,KAAK,CACV,sEAAsE,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/lightRail.ts
CHANGED
|
@@ -13,7 +13,9 @@ export default function fetchEtas({
|
|
|
13
13
|
dest,
|
|
14
14
|
}: fetchEtasProps): Promise<Eta[]> {
|
|
15
15
|
return fetch(
|
|
16
|
-
`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(
|
|
16
|
+
`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(
|
|
17
|
+
2,
|
|
18
|
+
)}&with_special=1`,
|
|
17
19
|
{
|
|
18
20
|
cache: isSafari ? "default" : "no-store",
|
|
19
21
|
},
|
|
@@ -38,62 +40,92 @@ export default function fetchEtas({
|
|
|
38
40
|
},
|
|
39
41
|
];
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
|
|
42
44
|
return platform_list.reduce(
|
|
43
45
|
(acc: Eta[], { route_list, platform_id }: any) => {
|
|
44
46
|
return [
|
|
45
47
|
...acc,
|
|
46
|
-
// route_list is null when there are no ETAs available
|
|
47
48
|
...(route_list ?? [])
|
|
48
49
|
.filter(
|
|
49
|
-
({
|
|
50
|
-
|
|
50
|
+
({
|
|
51
|
+
route_no,
|
|
52
|
+
additionalInfo1,
|
|
53
|
+
dest_ch,
|
|
54
|
+
dest_en,
|
|
55
|
+
stop,
|
|
56
|
+
}: any) =>
|
|
57
|
+
// match route number OR additionalInfo1 to the requested route
|
|
58
|
+
(route === route_no || route === additionalInfo1) &&
|
|
51
59
|
(dest_ch === dest.zh || dest_en.includes("Circular")) &&
|
|
52
60
|
stop === 0,
|
|
53
61
|
)
|
|
54
|
-
.map(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
62
|
+
.map(
|
|
63
|
+
({
|
|
64
|
+
time_en,
|
|
65
|
+
train_length,
|
|
66
|
+
routeRemarkEng2,
|
|
67
|
+
routeRemarkChi2,
|
|
68
|
+
}: any) => {
|
|
69
|
+
let waitTime = 0;
|
|
70
|
+
switch (time_en.toLowerCase()) {
|
|
71
|
+
case "arriving":
|
|
72
|
+
case "departing":
|
|
73
|
+
case "-":
|
|
74
|
+
waitTime = 0;
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
waitTime = parseInt(time_en, 10);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
const etaDate = new Date(
|
|
81
|
+
Date.now() + waitTime * 60 * 1000 + 8 * 3600000,
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
const platformText = `${platform_id}號月台 - ${Array(
|
|
85
|
+
train_length,
|
|
86
|
+
)
|
|
87
|
+
.fill("▭")
|
|
88
|
+
.join("")}`;
|
|
89
|
+
|
|
90
|
+
const platformTextEn = `Platform ${platform_id} - ${Array(
|
|
91
|
+
train_length,
|
|
92
|
+
)
|
|
93
|
+
.fill("▭")
|
|
94
|
+
.join("")}`;
|
|
95
|
+
|
|
96
|
+
// Append routeRemarkEng2 / routeRemarkChi2 if present
|
|
97
|
+
const remarkZh = routeRemarkChi2
|
|
98
|
+
? `${platformText} - ${routeRemarkChi2}`
|
|
99
|
+
: platformText;
|
|
100
|
+
const remarkEn = routeRemarkEng2
|
|
101
|
+
? `${platformTextEn} - ${routeRemarkEng2}`
|
|
102
|
+
: platformTextEn;
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
eta:
|
|
106
|
+
`${etaDate.getUTCFullYear()}-${`0${
|
|
107
|
+
etaDate.getUTCMonth() + 1
|
|
108
|
+
}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
|
|
109
|
+
`T${`0${etaDate.getUTCHours()}`.slice(
|
|
110
|
+
-2,
|
|
111
|
+
)}:${`0${etaDate.getMinutes()}`.slice(
|
|
112
|
+
-2,
|
|
113
|
+
)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
|
|
114
|
+
remark: {
|
|
115
|
+
zh: remarkZh,
|
|
116
|
+
en: remarkEn,
|
|
117
|
+
},
|
|
118
|
+
dest: {
|
|
119
|
+
zh: "",
|
|
120
|
+
en: "",
|
|
121
|
+
},
|
|
122
|
+
co: "lightRail",
|
|
123
|
+
};
|
|
124
|
+
},
|
|
125
|
+
),
|
|
94
126
|
];
|
|
95
127
|
},
|
|
96
|
-
[]
|
|
128
|
+
[],
|
|
97
129
|
);
|
|
98
130
|
})
|
|
99
131
|
.catch((e) => {
|