hk-bus-eta 2.1.4 → 3.0.0
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/ctb.d.ts +3 -3
- package/dist/ctb.js +10 -8
- package/dist/ctb.js.map +1 -1
- package/dist/gmb.d.ts +3 -3
- package/dist/gmb.js +12 -10
- package/dist/gmb.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +22 -15
- package/dist/index.js.map +1 -1
- package/dist/kmb.d.ts +6 -6
- package/dist/kmb.js +13 -11
- package/dist/kmb.js.map +1 -1
- package/dist/lightRail.d.ts +3 -3
- package/dist/lightRail.js +26 -22
- package/dist/lightRail.js.map +1 -1
- package/dist/lrtfeeder.d.ts +2 -2
- package/dist/lrtfeeder.js +32 -17
- package/dist/lrtfeeder.js.map +1 -1
- package/dist/mtr.d.ts +5 -4
- package/dist/mtr.js +13 -13
- package/dist/mtr.js.map +1 -1
- package/dist/nlb.d.ts +2 -2
- package/dist/nlb.js +16 -12
- package/dist/nlb.js.map +1 -1
- package/dist/type.d.ts +11 -3
- package/esm/ctb.d.ts +3 -3
- package/esm/ctb.js +10 -8
- package/esm/ctb.js.map +1 -1
- package/esm/gmb.d.ts +3 -3
- package/esm/gmb.js +12 -10
- package/esm/gmb.js.map +1 -1
- package/esm/index.d.ts +3 -2
- package/esm/index.js +29 -22
- package/esm/index.js.map +1 -1
- package/esm/kmb.d.ts +6 -6
- package/esm/kmb.js +13 -11
- package/esm/kmb.js.map +1 -1
- package/esm/lightRail.d.ts +3 -3
- package/esm/lightRail.js +26 -22
- package/esm/lightRail.js.map +1 -1
- package/esm/lrtfeeder.d.ts +2 -2
- package/esm/lrtfeeder.js +32 -17
- package/esm/lrtfeeder.js.map +1 -1
- package/esm/mtr.d.ts +5 -4
- package/esm/mtr.js +13 -13
- package/esm/mtr.js.map +1 -1
- package/esm/nlb.d.ts +2 -2
- package/esm/nlb.js +16 -12
- package/esm/nlb.js.map +1 -1
- package/esm/type.d.ts +11 -3
- package/package.json +1 -1
- package/src/ctb.ts +30 -20
- package/src/gmb.ts +37 -24
- package/src/index.ts +80 -44
- package/src/kmb.ts +55 -41
- package/src/lightRail.ts +61 -38
- package/src/lrtfeeder.ts +69 -36
- package/src/mtr.ts +35 -23
- package/src/nlb.ts +30 -24
- package/src/type.ts +59 -50
- package/src/utils.ts +1 -1
package/dist/ctb.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Eta, RouteListEntry } from "./type";
|
|
2
2
|
interface fetchEtasProps {
|
|
3
|
-
route: RouteListEntry[
|
|
4
|
-
bound: RouteListEntry[
|
|
3
|
+
route: RouteListEntry["route"];
|
|
4
|
+
bound: RouteListEntry["bound"]["ctb"];
|
|
5
5
|
stopId: string;
|
|
6
6
|
seq: number;
|
|
7
7
|
}
|
|
8
|
-
export default function fetchEtas({ stopId, route, bound, seq }: fetchEtasProps): Promise<Eta[]>;
|
|
8
|
+
export default function fetchEtas({ stopId, route, bound, seq, }: fetchEtasProps): Promise<Eta[]>;
|
|
9
9
|
export {};
|
package/dist/ctb.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
|
-
function fetchEtas({ stopId, route, bound, seq }) {
|
|
5
|
-
return
|
|
6
|
-
cache: utils_1.isSafari ?
|
|
7
|
-
})
|
|
4
|
+
function fetchEtas({ stopId, route, bound, seq, }) {
|
|
5
|
+
return fetch(`https://rt.data.gov.hk//v2/transport/citybus/eta/CTB/${stopId}/${route}`, {
|
|
6
|
+
cache: utils_1.isSafari ? "default" : "no-store",
|
|
7
|
+
})
|
|
8
|
+
.then((response) => response.json())
|
|
9
|
+
.then(({ data }) => data
|
|
8
10
|
.filter((eta) => eta.eta && bound.includes(eta.dir))
|
|
9
|
-
// filter the eta by the stop sequence information
|
|
11
|
+
// filter the eta by the stop sequence information
|
|
10
12
|
// as the route data may not 100% match
|
|
11
13
|
// use the nearest seq
|
|
12
14
|
.sort((a, b) => Math.abs(a.seq - seq) < Math.abs(b.seq - seq) ? -1 : 1)
|
|
@@ -15,10 +17,10 @@ function fetchEtas({ stopId, route, bound, seq }) {
|
|
|
15
17
|
eta: e.eta,
|
|
16
18
|
remark: {
|
|
17
19
|
zh: e.rmk_tc,
|
|
18
|
-
en: e.rmk_en
|
|
20
|
+
en: e.rmk_en,
|
|
19
21
|
},
|
|
20
|
-
co:
|
|
21
|
-
})))
|
|
22
|
+
co: "ctb",
|
|
23
|
+
})));
|
|
22
24
|
}
|
|
23
25
|
exports.default = fetchEtas;
|
|
24
26
|
//# sourceMappingURL=ctb.js.map
|
package/dist/ctb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ctb.js","sourceRoot":"","sources":["../src/ctb.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AAUnC,SAAwB,SAAS,
|
|
1
|
+
{"version":3,"file":"ctb.js","sourceRoot":"","sources":["../src/ctb.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AAUnC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,KAAK,EACL,GAAG,GACY;IACf,OAAO,KAAK,CACV,wDAAwD,MAAM,IAAI,KAAK,EAAE,EACzE;QACE,KAAK,EAAE,gBAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;KACzC,CACF;SACE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,IAAI;SACD,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzD,kDAAkD;QAClD,uCAAuC;QACvC,sBAAsB;SACrB,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvD;SACA,MAAM,CACL,CAAC,GAAQ,EAAE,CAAS,EAAE,IAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CACnE;SACA,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QAChB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE;YACN,EAAE,EAAE,CAAC,CAAC,MAAM;YACZ,EAAE,EAAE,CAAC,CAAC,MAAM;SACb;QACD,EAAE,EAAE,KAAK;KACV,CAAC,CAAC,CACN,CAAC;AACN,CAAC;AAlCD,4BAkCC"}
|
package/dist/gmb.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Eta, RouteListEntry } from "./type";
|
|
2
2
|
interface fetchEtasProps {
|
|
3
|
-
gtfsId: RouteListEntry[
|
|
4
|
-
bound: RouteListEntry[
|
|
3
|
+
gtfsId: RouteListEntry["gtfsId"];
|
|
4
|
+
bound: RouteListEntry["bound"]["gmb"];
|
|
5
5
|
stopId: string;
|
|
6
6
|
seq: number;
|
|
7
7
|
}
|
|
8
|
-
export default function fetchEtas({ gtfsId, stopId, bound, seq }: fetchEtasProps): Promise<Eta[]>;
|
|
8
|
+
export default function fetchEtas({ gtfsId, stopId, bound, seq, }: fetchEtasProps): Promise<Eta[]>;
|
|
9
9
|
export {};
|
package/dist/gmb.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
|
-
function fetchEtas({ gtfsId, stopId, bound, seq }) {
|
|
5
|
-
return
|
|
6
|
-
cache: utils_1.isSafari ?
|
|
7
|
-
})
|
|
8
|
-
.then((
|
|
9
|
-
.
|
|
4
|
+
function fetchEtas({ gtfsId, stopId, bound, seq, }) {
|
|
5
|
+
return fetch(`https://data.etagmb.gov.hk/eta/route-stop/${gtfsId}/${stopId}`, {
|
|
6
|
+
cache: utils_1.isSafari ? "default" : "no-store",
|
|
7
|
+
})
|
|
8
|
+
.then((response) => response.json())
|
|
9
|
+
.then(({ data }) => data
|
|
10
|
+
.filter(({ route_seq }) => (bound === "O" && route_seq === 1) ||
|
|
11
|
+
(bound === "I" && route_seq === 2))
|
|
10
12
|
.filter(({ stop_seq }) => stop_seq === seq + 1)
|
|
11
13
|
.reduce((acc, { eta }) => [
|
|
12
14
|
...acc,
|
|
@@ -14,11 +16,11 @@ function fetchEtas({ gtfsId, stopId, bound, seq }) {
|
|
|
14
16
|
eta: data.timestamp,
|
|
15
17
|
remark: {
|
|
16
18
|
zh: data.remarks_tc,
|
|
17
|
-
en: data.remarks_en
|
|
19
|
+
en: data.remarks_en,
|
|
18
20
|
},
|
|
19
|
-
co:
|
|
20
|
-
}))
|
|
21
|
-
], []))
|
|
21
|
+
co: "gmb",
|
|
22
|
+
})),
|
|
23
|
+
], []));
|
|
22
24
|
}
|
|
23
25
|
exports.default = fetchEtas;
|
|
24
26
|
//# sourceMappingURL=gmb.js.map
|
package/dist/gmb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gmb.js","sourceRoot":"","sources":["../src/gmb.ts"],"names":[],"mappings":";;AACA,mCAAmC;AASnC,SAAwB,SAAS,
|
|
1
|
+
{"version":3,"file":"gmb.js","sourceRoot":"","sources":["../src/gmb.ts"],"names":[],"mappings":";;AACA,mCAAmC;AASnC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,MAAM,EACN,KAAK,EACL,GAAG,GACY;IACf,OAAO,KAAK,CACV,6CAA6C,MAAM,IAAI,MAAM,EAAE,EAC/D;QACE,KAAK,EAAE,gBAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;KACzC,CACF;SACE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,IAAI;SACD,MAAM,CACL,CAAC,EAAE,SAAS,EAAO,EAAE,EAAE,CACrB,CAAC,KAAK,KAAK,GAAG,IAAI,SAAS,KAAK,CAAC,CAAC;QAClC,CAAC,KAAK,KAAK,GAAG,IAAI,SAAS,KAAK,CAAC,CAAC,CACrC;SACA,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAO,EAAE,EAAE,CAAC,QAAQ,KAAK,GAAG,GAAG,CAAC,CAAC;SACnD,MAAM,CACL,CAAC,GAAU,EAAE,EAAE,GAAG,EAAO,EAAE,EAAE,CAAC;QAC5B,GAAG,GAAG;QACN,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YACzB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI,CAAC,UAAU;gBACnB,EAAE,EAAE,IAAI,CAAC,UAAU;aACpB;YACD,EAAE,EAAE,KAAK;SACV,CAAC,CAAC;KACJ,EACD,EAAE,CACH,CACJ,CAAC;AACN,CAAC;AApCD,4BAoCC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { RouteListEntry, EtaDb, Eta } from
|
|
1
|
+
import { RouteListEntry, EtaDb, Eta, StopList } from "./type";
|
|
2
2
|
interface fetchEtasProps extends RouteListEntry {
|
|
3
|
+
stopList: StopList;
|
|
3
4
|
language: "zh" | "en";
|
|
4
5
|
seq: number;
|
|
5
6
|
}
|
|
6
|
-
export declare function fetchEtas({ route, stops, bound, dest, seq, serviceType, co, nlbId, gtfsId, language }: fetchEtasProps): Promise<Eta[]>;
|
|
7
|
+
export declare function fetchEtas({ route, stops, bound, dest, seq, serviceType, co, nlbId, gtfsId, stopList, language, }: fetchEtasProps): Promise<Eta[]>;
|
|
7
8
|
export declare function fetchEtaDb(): Promise<EtaDb>;
|
|
8
9
|
export declare function fetchEtaDbMd5(): Promise<string>;
|
|
9
10
|
export type * from "./type";
|
package/dist/index.js
CHANGED
|
@@ -20,43 +20,50 @@ const lrtfeeder_1 = __importDefault(require("./lrtfeeder"));
|
|
|
20
20
|
const gmb_1 = __importDefault(require("./gmb"));
|
|
21
21
|
const lightRail_1 = __importDefault(require("./lightRail"));
|
|
22
22
|
const mtr_1 = __importDefault(require("./mtr"));
|
|
23
|
-
function fetchEtas({ route, stops, bound, dest, seq, serviceType, co, nlbId, gtfsId, language }) {
|
|
23
|
+
function fetchEtas({ route, stops, bound, dest, seq, serviceType, co, nlbId, gtfsId, stopList, language, }) {
|
|
24
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
25
|
try {
|
|
26
26
|
let _etas = [];
|
|
27
27
|
for (const company_id of co) {
|
|
28
|
-
if (company_id ===
|
|
28
|
+
if (company_id === "kmb" && stops.kmb) {
|
|
29
29
|
_etas = _etas.concat(yield (0, kmb_1.default)({
|
|
30
30
|
route,
|
|
31
31
|
stops: stops.kmb,
|
|
32
32
|
stopId: stops.kmb[seq],
|
|
33
|
-
seq,
|
|
34
|
-
|
|
33
|
+
seq,
|
|
34
|
+
co,
|
|
35
|
+
serviceType,
|
|
36
|
+
bound: bound.kmb,
|
|
35
37
|
}));
|
|
36
38
|
}
|
|
37
|
-
else if (company_id ===
|
|
39
|
+
else if (company_id === "ctb" && stops.ctb) {
|
|
38
40
|
_etas = _etas.concat(yield (0, ctb_1.default)({ stopId: stops.ctb[seq], route, bound: bound.ctb, seq }));
|
|
39
41
|
}
|
|
40
|
-
else if (company_id ===
|
|
42
|
+
else if (company_id === "nlb" && stops.nlb) {
|
|
41
43
|
_etas = _etas.concat(yield (0, nlb_1.default)({ stopId: stops.nlb[seq], nlbId }));
|
|
42
44
|
}
|
|
43
|
-
else if (company_id ===
|
|
45
|
+
else if (company_id === "lrtfeeder" && stops.lrtfeeder) {
|
|
44
46
|
_etas = _etas.concat(yield (0, lrtfeeder_1.default)({ stopId: stops.lrtfeeder[seq], route, language }));
|
|
45
47
|
}
|
|
46
|
-
else if (company_id ===
|
|
48
|
+
else if (company_id === "gmb" && stops.gmb) {
|
|
47
49
|
_etas = _etas.concat(yield (0, gmb_1.default)({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb }));
|
|
48
50
|
}
|
|
49
|
-
else if (company_id ===
|
|
51
|
+
else if (company_id === "lightRail" && stops.lightRail) {
|
|
50
52
|
_etas = _etas.concat(yield (0, lightRail_1.default)({ stopId: stops.lightRail[seq], route, dest }));
|
|
51
53
|
}
|
|
52
|
-
else if (company_id ===
|
|
53
|
-
_etas = _etas.concat(yield (0, mtr_1.default)({
|
|
54
|
+
else if (company_id === "mtr" && stops.mtr) {
|
|
55
|
+
_etas = _etas.concat(yield (0, mtr_1.default)({
|
|
56
|
+
stopId: stops.mtr[seq],
|
|
57
|
+
route,
|
|
58
|
+
stopList,
|
|
59
|
+
bound: bound.mtr,
|
|
60
|
+
}));
|
|
54
61
|
}
|
|
55
62
|
}
|
|
56
63
|
return _etas.sort((a, b) => {
|
|
57
|
-
if (a.eta ===
|
|
64
|
+
if (a.eta === "")
|
|
58
65
|
return 1;
|
|
59
|
-
else if (b.eta ===
|
|
66
|
+
else if (b.eta === "")
|
|
60
67
|
return -1;
|
|
61
68
|
return a.eta < b.eta ? -1 : 1;
|
|
62
69
|
});
|
|
@@ -70,13 +77,13 @@ function fetchEtas({ route, stops, bound, dest, seq, serviceType, co, nlbId, gtf
|
|
|
70
77
|
exports.fetchEtas = fetchEtas;
|
|
71
78
|
function fetchEtaDb() {
|
|
72
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
return fetch("https://hkbus.github.io/hk-bus-crawling/routeFareList.min.json").then(r => r.json());
|
|
80
|
+
return fetch("https://hkbus.github.io/hk-bus-crawling/routeFareList.min.json").then((r) => r.json());
|
|
74
81
|
});
|
|
75
82
|
}
|
|
76
83
|
exports.fetchEtaDb = fetchEtaDb;
|
|
77
84
|
function fetchEtaDbMd5() {
|
|
78
85
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
return fetch(
|
|
86
|
+
return fetch("https://hkbus.github.io/hk-bus-crawling/routeFareList.md5").then((r) => r.text());
|
|
80
87
|
});
|
|
81
88
|
}
|
|
82
89
|
exports.fetchEtaDbMd5 = fetchEtaDbMd5;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/kmb.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Eta, RouteListEntry } from "./type";
|
|
2
2
|
interface fetchEtasProps {
|
|
3
|
-
route: RouteListEntry[
|
|
4
|
-
co: RouteListEntry[
|
|
5
|
-
serviceType: RouteListEntry[
|
|
6
|
-
bound: RouteListEntry[
|
|
7
|
-
stops: RouteListEntry[
|
|
3
|
+
route: RouteListEntry["route"];
|
|
4
|
+
co: RouteListEntry["co"];
|
|
5
|
+
serviceType: RouteListEntry["serviceType"];
|
|
6
|
+
bound: RouteListEntry["bound"]["kmb"];
|
|
7
|
+
stops: RouteListEntry["stops"]["kmb"];
|
|
8
8
|
stopId: string;
|
|
9
9
|
seq: number;
|
|
10
10
|
}
|
|
11
|
-
export default function fetchEtas({ stopId, route, seq, serviceType, stops, co, bound }: fetchEtasProps): Promise<Eta[]>;
|
|
11
|
+
export default function fetchEtas({ stopId, route, seq, serviceType, stops, co, bound, }: fetchEtasProps): Promise<Eta[]>;
|
|
12
12
|
export {};
|
package/dist/kmb.js
CHANGED
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
4
|
// parameter seq is 0-indexed here
|
|
5
|
-
function fetchEtas({ stopId, route, seq, serviceType, stops, co, bound }) {
|
|
6
|
-
return
|
|
7
|
-
cache: utils_1.isSafari ?
|
|
5
|
+
function fetchEtas({ stopId, route, seq, serviceType, stops, co, bound, }) {
|
|
6
|
+
return fetch(`https://data.etabus.gov.hk/v1/transport/kmb/eta/${stopId}/${route}/${serviceType}`, {
|
|
7
|
+
cache: utils_1.isSafari ? "default" : "no-store",
|
|
8
8
|
})
|
|
9
|
-
.then(response => response.json())
|
|
10
|
-
.then(({ data }) =>
|
|
11
|
-
&& e.dir === bound)
|
|
9
|
+
.then((response) => response.json())
|
|
10
|
+
.then(({ data }) => data
|
|
11
|
+
.filter((e) => e.eta !== null && e.dir === bound)
|
|
12
12
|
.sort((a, b) => Math.abs(a.seq - seq) < Math.abs(b.seq - seq) ? -1 : 1)
|
|
13
13
|
.filter((eta, _, self) => eta.seq === self[0].seq)
|
|
14
|
-
// if KMB is the only service provider and the service type is matched,
|
|
14
|
+
// if KMB is the only service provider and the service type is matched,
|
|
15
15
|
// then sequence number should be exact matched, noted that eta.seq is 1-indexed
|
|
16
|
-
.filter((eta) => co.length > 1 ||
|
|
16
|
+
.filter((eta) => co.length > 1 ||
|
|
17
|
+
serviceType !== eta.service_type ||
|
|
18
|
+
eta.seq === seq + 1)
|
|
17
19
|
.filter((eta) => {
|
|
18
20
|
if (stops[stops.length - 1] === stops[0]) {
|
|
19
21
|
// handle circular route
|
|
@@ -27,10 +29,10 @@ function fetchEtas({ stopId, route, seq, serviceType, stops, co, bound }) {
|
|
|
27
29
|
eta: e.eta,
|
|
28
30
|
remark: {
|
|
29
31
|
zh: e.rmk_tc,
|
|
30
|
-
en: e.rmk_en
|
|
32
|
+
en: e.rmk_en,
|
|
31
33
|
},
|
|
32
|
-
co:
|
|
33
|
-
})))
|
|
34
|
+
co: "kmb",
|
|
35
|
+
})));
|
|
34
36
|
}
|
|
35
37
|
exports.default = fetchEtas;
|
|
36
38
|
//# sourceMappingURL=kmb.js.map
|
package/dist/kmb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kmb.js","sourceRoot":"","sources":["../src/kmb.ts"],"names":[],"mappings":";;AACA,mCAAmC;AAYnC,kCAAkC;AAClC,SAAwB,SAAS,
|
|
1
|
+
{"version":3,"file":"kmb.js","sourceRoot":"","sources":["../src/kmb.ts"],"names":[],"mappings":";;AACA,mCAAmC;AAYnC,kCAAkC;AAClC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,GAAG,EACH,WAAW,EACX,KAAK,EACL,EAAE,EACF,KAAK,GACU;IACf,OAAO,KAAK,CACV,mDAAmD,MAAM,IAAI,KAAK,IAAI,WAAW,EAAE,EACnF;QACE,KAAK,EAAE,gBAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;KACzC,CACF;SACE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,IAAI;SACD,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC;SACrD,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvD;SACA,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAS,EAAE,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACtE,uEAAuE;QACvE,gFAAgF;SAC/E,MAAM,CACL,CAAC,GAAQ,EAAE,EAAE,CACX,EAAE,CAAC,MAAM,GAAG,CAAC;QACb,WAAW,KAAK,GAAG,CAAC,YAAY;QAChC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CACtB;SACA,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE;QACnB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;YACxC,wBAAwB;YACxB,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;gBACvB,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;aAC5B;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QAChB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE;YACN,EAAE,EAAE,CAAC,CAAC,MAAM;YACZ,EAAE,EAAE,CAAC,CAAC,MAAM;SACb;QACD,EAAE,EAAE,KAAK;KACV,CAAC,CAAC,CACN,CAAC;AACN,CAAC;AAjDD,4BAiDC"}
|
package/dist/lightRail.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Eta, RouteListEntry } from "./type";
|
|
2
2
|
interface fetchEtasProps {
|
|
3
|
-
route: RouteListEntry[
|
|
4
|
-
dest: RouteListEntry[
|
|
3
|
+
route: RouteListEntry["route"];
|
|
4
|
+
dest: RouteListEntry["dest"];
|
|
5
5
|
stopId: string;
|
|
6
6
|
}
|
|
7
|
-
export default function fetchEtas({ stopId, route, dest }: fetchEtasProps): Promise<Eta[]>;
|
|
7
|
+
export default function fetchEtas({ stopId, route, dest, }: fetchEtasProps): Promise<Eta[]>;
|
|
8
8
|
export {};
|
package/dist/lightRail.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
|
-
function fetchEtas({ stopId, route, dest }) {
|
|
5
|
-
return
|
|
6
|
-
cache: utils_1.isSafari ?
|
|
7
|
-
})
|
|
8
|
-
.then((
|
|
9
|
-
.reduce((acc, { route_list, platform_id }) => [
|
|
4
|
+
function fetchEtas({ stopId, route, dest, }) {
|
|
5
|
+
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2)}`, {
|
|
6
|
+
cache: utils_1.isSafari ? "default" : "no-store",
|
|
7
|
+
})
|
|
8
|
+
.then((response) => response.json())
|
|
9
|
+
.then(({ platform_list }) => platform_list.reduce((acc, { route_list, platform_id }) => [
|
|
10
10
|
...acc,
|
|
11
11
|
...route_list
|
|
12
|
-
.filter(({ route_no, dest_ch, dest_en, stop }) =>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
.map(({ time_en }) => {
|
|
12
|
+
.filter(({ route_no, dest_ch, dest_en, stop }) => route === route_no &&
|
|
13
|
+
(dest_ch === dest.zh || dest_en.includes("Circular")) &&
|
|
14
|
+
stop === 0)
|
|
15
|
+
.map(({ time_en, train_length }) => {
|
|
16
16
|
let waitTime = 0;
|
|
17
17
|
switch (time_en.toLowerCase()) {
|
|
18
|
-
case
|
|
19
|
-
case
|
|
20
|
-
case
|
|
18
|
+
case "arriving":
|
|
19
|
+
case "departing":
|
|
20
|
+
case "-":
|
|
21
21
|
waitTime = 0;
|
|
22
22
|
break;
|
|
23
23
|
default:
|
|
@@ -26,20 +26,24 @@ function fetchEtas({ stopId, route, dest }) {
|
|
|
26
26
|
}
|
|
27
27
|
const etaDate = new Date(Date.now() + waitTime * 60 * 1000 + 8 * 3600000);
|
|
28
28
|
return {
|
|
29
|
-
eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}`
|
|
30
|
-
|
|
29
|
+
eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
|
|
30
|
+
`T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
|
|
31
31
|
remark: {
|
|
32
|
-
zh: `${platform_id}
|
|
33
|
-
|
|
32
|
+
zh: `${platform_id}號月台 - ${Array(train_length)
|
|
33
|
+
.fill("▭")
|
|
34
|
+
.join("")}`,
|
|
35
|
+
en: `Platform ${platform_id} - ${Array(train_length)
|
|
36
|
+
.fill("▭")
|
|
37
|
+
.join("")}`,
|
|
34
38
|
},
|
|
35
|
-
co:
|
|
39
|
+
co: "lightRail",
|
|
36
40
|
};
|
|
37
|
-
}, [])
|
|
38
|
-
], []))
|
|
39
|
-
.catch(e => {
|
|
41
|
+
}, []),
|
|
42
|
+
], []))
|
|
43
|
+
.catch((e) => {
|
|
40
44
|
console.error(e);
|
|
41
45
|
return [];
|
|
42
|
-
})
|
|
46
|
+
});
|
|
43
47
|
}
|
|
44
48
|
exports.default = fetchEtas;
|
|
45
49
|
//# sourceMappingURL=lightRail.js.map
|
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,
|
|
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,CAChF,CAAC,CACF,EAAE,EACH;QACE,KAAK,EAAE,gBAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;KACzC,CACF;SACE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAC1B,aAAa,CAAC,MAAM,CAClB,CAAC,GAAU,EAAE,EAAE,UAAU,EAAE,WAAW,EAAO,EAAE,EAAE,CAAC;QAChD,GAAG,GAAG;QACN,GAAG,UAAU;aACV,MAAM,CACL,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAO,EAAE,EAAE,CAC5C,KAAK,KAAK,QAAQ;YAClB,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,CACb;aACA,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAO,EAAE,EAAE;YACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,QAAQ,OAAO,CAAC,WAAW,EAAE,EAAE;gBAC7B,KAAK,UAAU,CAAC;gBAChB,KAAK,WAAW,CAAC;gBACjB,KAAK,GAAG;oBACN,QAAQ,GAAG,CAAC,CAAC;oBACb,MAAM;gBACR;oBACE,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACjC,MAAM;aACT;YACD,MAAM,OAAO,GAAG,IAAI,IAAI,CACtB,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,CAChD,CAAC;YACF,OAAO;gBACL,GAAG,EACD,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,IAC7B,OAAO,CAAC,WAAW,EAAE,GAAG,CAC1B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;oBACtD,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CACnC,CAAC,CAAC,CACH,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CACnC,CAAC,CAAC,CACH,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;gBACnD,MAAM,EAAE;oBACN,EAAE,EAAE,GAAG,WAAW,SAAS,KAAK,CAAC,YAAY,CAAC;yBAC3C,IAAI,CAAC,GAAG,CAAC;yBACT,IAAI,CAAC,EAAE,CAAC,EAAE;oBACb,EAAE,EAAE,YAAY,WAAW,MAAM,KAAK,CAAC,YAAY,CAAC;yBACjD,IAAI,CAAC,GAAG,CAAC;yBACT,IAAI,CAAC,EAAE,CAAC,EAAE;iBACd;gBACD,EAAE,EAAE,WAAW;aAChB,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC;KACT,EACD,EAAE,CACH,CACF;SACA,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC;AArED,4BAqEC"}
|
package/dist/lrtfeeder.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Eta, RouteListEntry } from "./type";
|
|
2
2
|
interface fetchEtasProps {
|
|
3
|
-
route: RouteListEntry[
|
|
3
|
+
route: RouteListEntry["route"];
|
|
4
4
|
language: "zh" | "en";
|
|
5
5
|
stopId: string;
|
|
6
6
|
}
|
|
7
|
-
export default function fetchEtas({ stopId, route, language }: fetchEtasProps): Promise<Eta[]>;
|
|
7
|
+
export default function fetchEtas({ stopId, route, language, }: fetchEtasProps): Promise<Eta[]>;
|
|
8
8
|
export {};
|
package/dist/lrtfeeder.js
CHANGED
|
@@ -1,34 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
|
-
function fetchEtas({ stopId, route, language }) {
|
|
5
|
-
return
|
|
4
|
+
function fetchEtas({ stopId, route, language, }) {
|
|
5
|
+
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/bus/getSchedule`, {
|
|
6
6
|
method: "POST",
|
|
7
|
-
cache: utils_1.isSafari ?
|
|
7
|
+
cache: utils_1.isSafari ? "default" : "no-store",
|
|
8
8
|
headers: {
|
|
9
|
-
|
|
9
|
+
"Content-Type": "application/json",
|
|
10
10
|
},
|
|
11
11
|
body: JSON.stringify({
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
})
|
|
15
|
-
})
|
|
16
|
-
.then((
|
|
17
|
-
.
|
|
12
|
+
language: language,
|
|
13
|
+
routeName: route,
|
|
14
|
+
}),
|
|
15
|
+
})
|
|
16
|
+
.then((response) => response.json())
|
|
17
|
+
.then(({ busStop }) => busStop
|
|
18
|
+
.filter(({ busStopId }) => busStopId === stopId)
|
|
19
|
+
.reduce((ret, { bus: buses }) => [
|
|
20
|
+
...ret,
|
|
21
|
+
...buses.reduce((etas, bus) => {
|
|
18
22
|
// hackily use +8 hours and use UTC hour to resolve timezone issue
|
|
19
|
-
const etaDate = new Date(Date.now() +
|
|
23
|
+
const etaDate = new Date(Date.now() +
|
|
24
|
+
parseInt(bus.arrivalTimeInSecond === "108000"
|
|
25
|
+
? bus.departureTimeInSecond
|
|
26
|
+
: bus.arrivalTimeInSecond, 10) *
|
|
27
|
+
1000 +
|
|
28
|
+
8 * 3600000);
|
|
20
29
|
return [
|
|
21
30
|
...etas,
|
|
22
31
|
{
|
|
23
|
-
eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}`
|
|
24
|
-
|
|
32
|
+
eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
|
|
33
|
+
`T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
|
|
25
34
|
remark: {
|
|
26
|
-
[language]: bus.busRemark ||
|
|
35
|
+
[language]: bus.busRemark ||
|
|
36
|
+
(bus.isScheduled === "1"
|
|
37
|
+
? language === "en"
|
|
38
|
+
? "Scheduled"
|
|
39
|
+
: "預定班次"
|
|
40
|
+
: ""),
|
|
27
41
|
},
|
|
28
|
-
co:
|
|
29
|
-
}
|
|
42
|
+
co: "lrtfeeder",
|
|
43
|
+
},
|
|
30
44
|
];
|
|
31
|
-
}, [])
|
|
45
|
+
}, []),
|
|
46
|
+
], []));
|
|
32
47
|
}
|
|
33
48
|
exports.default = fetchEtas;
|
|
34
49
|
//# sourceMappingURL=lrtfeeder.js.map
|
package/dist/lrtfeeder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lrtfeeder.js","sourceRoot":"","sources":["../src/lrtfeeder.ts"],"names":[],"mappings":";;AACA,mCAAmC;AAQnC,SAAwB,SAAS,
|
|
1
|
+
{"version":3,"file":"lrtfeeder.js","sourceRoot":"","sources":["../src/lrtfeeder.ts"],"names":[],"mappings":";;AACA,mCAAmC;AAQnC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,QAAQ,GACO;IACf,OAAO,KAAK,CAAC,yDAAyD,EAAE;QACtE,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,gBAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QACxC,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,KAAK;SACjB,CAAC;KACH,CAAC;SACC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACpB,OAAO;SACJ,MAAM,CAAC,CAAC,EAAE,SAAS,EAAO,EAAE,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC;SACpD,MAAM,CACL,CAAC,GAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAO,EAAE,EAAE,CAAC;QACjC,GAAG,GAAG;QACN,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAW,EAAE,GAAQ,EAAE,EAAE;YACxC,kEAAkE;YAClE,MAAM,OAAO,GAAG,IAAI,IAAI,CACtB,IAAI,CAAC,GAAG,EAAE;gBACR,QAAQ,CACN,GAAG,CAAC,mBAAmB,KAAK,QAAQ;oBAClC,CAAC,CAAC,GAAG,CAAC,qBAAqB;oBAC3B,CAAC,CAAC,GAAG,CAAC,mBAAmB,EAC3B,EAAE,CACH;oBACC,IAAI;gBACN,CAAC,GAAG,OAAO,CACd,CAAC;YAEF,OAAO;gBACL,GAAG,IAAI;gBACP;oBACE,GAAG,EACD,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,IAC7B,OAAO,CAAC,WAAW,EAAE,GAAG,CAC1B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;wBACtD,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CACnC,CAAC,CAAC,CACH,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CACnC,CAAC,CAAC,CACH,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;oBACnD,MAAM,EAAE;wBACN,CAAC,QAAQ,CAAC,EACR,GAAG,CAAC,SAAS;4BACb,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG;gCACtB,CAAC,CAAC,QAAQ,KAAK,IAAI;oCACjB,CAAC,CAAC,WAAW;oCACb,CAAC,CAAC,MAAM;gCACV,CAAC,CAAC,EAAE,CAAC;qBACV;oBACD,EAAE,EAAE,WAAW;iBAChB;aACF,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC;KACP,EACD,EAAE,CACH,CACJ,CAAC;AACN,CAAC;AAlED,4BAkEC"}
|
package/dist/mtr.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { Eta, RouteListEntry } from "./type";
|
|
1
|
+
import type { Eta, RouteListEntry, StopList } from "./type";
|
|
2
2
|
interface fetchEtasProps {
|
|
3
|
-
route: RouteListEntry[
|
|
4
|
-
bound: RouteListEntry[
|
|
3
|
+
route: RouteListEntry["route"];
|
|
4
|
+
bound: RouteListEntry["bound"]["mtr"];
|
|
5
5
|
stopId: string;
|
|
6
|
+
stopList: StopList;
|
|
6
7
|
}
|
|
7
|
-
export default function fetchEtas({ stopId, route, bound }: fetchEtasProps): Promise<Eta[]>;
|
|
8
|
+
export default function fetchEtas({ stopId, route, bound, stopList, }: fetchEtasProps): Promise<Eta[]>;
|
|
8
9
|
export {};
|
package/dist/mtr.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
|
-
function fetchEtas({ stopId, route, bound }) {
|
|
5
|
-
return
|
|
6
|
-
cache: utils_1.isSafari ?
|
|
7
|
-
})
|
|
8
|
-
.then((
|
|
4
|
+
function fetchEtas({ stopId, route, bound, stopList, }) {
|
|
5
|
+
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/getSchedule.php?line=${route}&sta=${stopId}`, {
|
|
6
|
+
cache: utils_1.isSafari ? "default" : "no-store",
|
|
7
|
+
})
|
|
8
|
+
.then((response) => response.json())
|
|
9
|
+
.then(({ data, status }) => status === 0
|
|
9
10
|
? []
|
|
10
|
-
: data[`${route}-${stopId}`][bound.slice(-2, 1) ===
|
|
11
|
-
.reduce((acc, { time, plat }) => [
|
|
11
|
+
: data[`${route}-${stopId}`][bound.slice(-2, 1) === "U" ? "UP" : "DOWN"].reduce((acc, { time, plat, dest }) => [
|
|
12
12
|
...acc,
|
|
13
13
|
{
|
|
14
|
-
eta: time.replace(
|
|
14
|
+
eta: time.replace(" ", "T") + "+08:00",
|
|
15
15
|
remark: {
|
|
16
|
-
zh: `${plat}
|
|
17
|
-
en: `Platform ${plat}
|
|
16
|
+
zh: `${plat}號月台 往${stopList[dest].name.zh}`,
|
|
17
|
+
en: `Platform ${plat} to ${stopList[dest].name.en}`,
|
|
18
18
|
},
|
|
19
|
-
co:
|
|
20
|
-
}
|
|
21
|
-
], []))
|
|
19
|
+
co: "mtr",
|
|
20
|
+
},
|
|
21
|
+
], []));
|
|
22
22
|
}
|
|
23
23
|
exports.default = fetchEtas;
|
|
24
24
|
//# sourceMappingURL=mtr.js.map
|
package/dist/mtr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtr.js","sourceRoot":"","sources":["../src/mtr.ts"],"names":[],"mappings":";;AACA,mCAAmC;
|
|
1
|
+
{"version":3,"file":"mtr.js","sourceRoot":"","sources":["../src/mtr.ts"],"names":[],"mappings":";;AACA,mCAAmC;AASnC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,KAAK,EACL,QAAQ,GACO;IACf,OAAO,KAAK,CACV,gEAAgE,KAAK,QAAQ,MAAM,EAAE,EACrF;QACE,KAAK,EAAE,gBAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;KACzC,CACF;SACE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CACzB,MAAM,KAAK,CAAC;QACV,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CACxB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAC3C,CAAC,MAAM,CACN,CAAC,GAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAO,EAAE,EAAE,CAAC;YACzC,GAAG,GAAG;YACN;gBACE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ;gBACtC,MAAM,EAAE;oBACN,EAAE,EAAE,GAAG,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;oBAC3C,EAAE,EAAE,YAAY,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;iBACpD;gBACD,EAAE,EAAE,KAAK;aACV;SACF,EACD,EAAE,CACH,CACN,CAAC;AACN,CAAC;AAjCD,4BAiCC"}
|
package/dist/nlb.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Eta, RouteListEntry } from "./type";
|
|
2
2
|
interface fetchEtasProps {
|
|
3
3
|
stopId: string;
|
|
4
|
-
nlbId: RouteListEntry[
|
|
4
|
+
nlbId: RouteListEntry["nlbId"];
|
|
5
5
|
}
|
|
6
|
-
export default function fetchEtas({ stopId, nlbId }: fetchEtasProps): Promise<Eta[]>;
|
|
6
|
+
export default function fetchEtas({ stopId, nlbId, }: fetchEtasProps): Promise<Eta[]>;
|
|
7
7
|
export {};
|