@golemio/pid 6.2.1-dev.2991982041 → 6.2.1-dev.3021435927

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.
Files changed (28) hide show
  1. package/dist/output-gateway/index.js +2 -1
  2. package/dist/output-gateway/index.js.map +1 -1
  3. package/dist/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.d.ts +6 -0
  4. package/dist/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.js +29 -0
  5. package/dist/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.js.map +1 -0
  6. package/dist/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.d.ts +0 -2
  7. package/dist/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.js +3 -28
  8. package/dist/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.js.map +1 -1
  9. package/dist/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.d.ts +7 -0
  10. package/dist/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.js +58 -0
  11. package/dist/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.js.map +1 -0
  12. package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.d.ts +14 -1
  13. package/dist/output-gateway/public/ioc/Di.js +2 -0
  14. package/dist/output-gateway/public/ioc/Di.js.map +1 -1
  15. package/dist/output-gateway/public/ioc/OgModuleToken.d.ts +1 -0
  16. package/dist/output-gateway/public/ioc/OgModuleToken.js +1 -0
  17. package/dist/output-gateway/public/ioc/OgModuleToken.js.map +1 -1
  18. package/dist/output-gateway/public/routers/index.d.ts +1 -0
  19. package/dist/output-gateway/public/routers/index.js +1 -0
  20. package/dist/output-gateway/public/routers/index.js.map +1 -1
  21. package/dist/output-gateway/public/routers/v3/V3PublicDeparturesRouter.d.ts +12 -0
  22. package/dist/output-gateway/public/routers/v3/V3PublicDeparturesRouter.js +37 -0
  23. package/dist/output-gateway/public/routers/v3/V3PublicDeparturesRouter.js.map +1 -0
  24. package/dist/output-gateway/public/service/facade/DepartureBoardFacade.d.ts +2 -2
  25. package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js +6 -10
  26. package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js.map +1 -1
  27. package/docs/openapi-output.yaml +209 -51
  28. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { v2PidRouter, v3PidRouter, v4PidRouter } from "#og/pid/index";
2
- import { v2PublicDeparturesRouter, v2PublicGtfsRouter, v2PublicVPRouter } from "#og/public/index";
2
+ import { v2PublicDeparturesRouter, v2PublicGtfsRouter, v2PublicVPRouter, v3PublicDeparturesRouter } from "#og/public/index";
3
3
  import { v2GtfsRouter } from "#og/ropid-gtfs/index";
4
4
  import { v2VehiclepositionsRouter } from "#og/vehicle-positions/index";
5
5
  import { v1JisRouter } from "./jis/routers/v1/index.js";
@@ -19,6 +19,7 @@ export const routers = [
19
19
  //#endregion
20
20
  //#region Public Endpoints
21
21
  v2PublicDeparturesRouter,
22
+ v3PublicDeparturesRouter,
22
23
  v2PublicGtfsRouter,
23
24
  v2PublicVPRouter,
24
25
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output-gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IAEZ,2BAA2B;IAC3B,wBAAwB;IAExB,8BAA8B;IAC9B,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IAEZ,0BAA0B;IAC1B,wBAAwB;IACxB,kBAAkB;IAClB,gBAAgB;IAChB,YAAY;IAEZ,uBAAuB;IACvB,WAAW;IACX,YAAY;CACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output-gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IAEZ,2BAA2B;IAC3B,wBAAwB;IAExB,8BAA8B;IAC9B,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IAEZ,0BAA0B;IAC1B,wBAAwB;IACxB,wBAAwB;IACxB,kBAAkB;IAClB,gBAAgB;IAChB,YAAY;IAEZ,uBAAuB;IACvB,WAAW;IACX,YAAY;CACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ParsedQs } from "@golemio/core/dist/shared/qs.js";
2
+ import { type IDepartureBoardsParams, type IDepartureBoardsStopIdGroups } from "../v2/interfaces/PublicParamsInterfaces.js";
3
+ export declare class DepartureBoardsParamsParser {
4
+ static parseDepartureParams(query: ParsedQs): IDepartureBoardsParams;
5
+ static parseStopIds(stopIdsFromInput: string[]): Set<IDepartureBoardsStopIdGroups>;
6
+ }
@@ -0,0 +1,29 @@
1
+ export class DepartureBoardsParamsParser {
2
+ static parseDepartureParams(query) {
3
+ return {
4
+ stopIds: this.parseStopIds(query.stopIds instanceof Array ? query.stopIds : [query.stopIds]),
5
+ routeShortNames: query.routeShortNames
6
+ ? query.routeShortNames instanceof Array
7
+ ? query.routeShortNames
8
+ : [query.routeShortNames]
9
+ : null,
10
+ limit: query.limit ? parseInt(query.limit) : 5,
11
+ minutesAfter: query.minutesAfter ? parseInt(query.minutesAfter) : 60,
12
+ minutesBefore: query.minutesBefore ? parseInt(query.minutesBefore) : 0,
13
+ };
14
+ }
15
+ static parseStopIds(stopIdsFromInput) {
16
+ const output = new Set();
17
+ for (const stopId of stopIdsFromInput) {
18
+ const parsed = JSON.parse(stopId);
19
+ const priority = Object.keys(parsed)[0];
20
+ const stopIds = parsed[priority];
21
+ output.add({
22
+ priority: Number.parseInt(priority),
23
+ stopIds: [...new Set(stopIds)],
24
+ });
25
+ }
26
+ return output;
27
+ }
28
+ }
29
+ //# sourceMappingURL=DepartureBoardsParamsParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DepartureBoardsParamsParser.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,2BAA2B;IAC7B,MAAM,CAAC,oBAAoB,CAAC,KAAe;QAC9C,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,CAAC,CAAE,KAAK,CAAC,OAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAiB,CAAC,CAAC;YACpH,eAAe,EAAE,KAAK,CAAC,eAAe;gBAClC,CAAC,CAAC,KAAK,CAAC,eAAe,YAAY,KAAK;oBACpC,CAAC,CAAE,KAAK,CAAC,eAA4B;oBACrC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAyB,CAAC;gBACvC,CAAC,CAAC,IAAI;YACV,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAsB,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9E,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;SACnF,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,gBAA0B;QACjD,MAAM,MAAM,GAAsC,IAAI,GAAG,EAAE,CAAC;QAE5D,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,OAAO,GAAa,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE3C,MAAM,CAAC,GAAG,CAAC;gBACP,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACnC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;aACjC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
@@ -2,6 +2,4 @@ import type { RequestHandler } from "@golemio/core/dist/shared/express.js";
2
2
  export declare class V2PublicDepartureBoardsController {
3
3
  constructor();
4
4
  getAll: RequestHandler;
5
- private parseDepartureParams;
6
- private parseStopIds;
7
5
  }
@@ -3,6 +3,7 @@ import { OgModuleToken } from "#og/public/ioc/OgModuleToken";
3
3
  import { createChildSpan } from "@golemio/core/dist/monitoring/opentelemetry/trace-provider.js";
4
4
  import ExpressValidatorCore from "@golemio/core/dist/shared/express-validator.js";
5
5
  const { matchedData } = ExpressValidatorCore;
6
+ import { DepartureBoardsParamsParser } from "../helpers/DepartureBoardsParamsParser.js";
6
7
  export class V2PublicDepartureBoardsController {
7
8
  constructor() {
8
9
  this.getAll = async (req, res, next) => {
@@ -10,13 +11,13 @@ export class V2PublicDepartureBoardsController {
10
11
  const queryData = matchedData(req);
11
12
  try {
12
13
  const facade = OgPublicContainer.resolve(OgModuleToken.DepartureBoardFacade);
13
- const params = this.parseDepartureParams(queryData);
14
+ const params = DepartureBoardsParamsParser.parseDepartureParams(queryData);
14
15
  const result = await facade.getAll(params.stopIds, params.limit, params.routeShortNames, params.minutesAfter, params.minutesBefore);
15
16
  if (result === null) {
16
17
  res.status(404).json([]);
17
18
  return;
18
19
  }
19
- res.json(result);
20
+ res.json(result.map((group) => group.departures ?? []));
20
21
  }
21
22
  catch (err) {
22
23
  next(err);
@@ -26,31 +27,5 @@ export class V2PublicDepartureBoardsController {
26
27
  }
27
28
  };
28
29
  }
29
- parseDepartureParams(query) {
30
- return {
31
- stopIds: this.parseStopIds(query.stopIds instanceof Array ? query.stopIds : [query.stopIds]),
32
- routeShortNames: query.routeShortNames
33
- ? query.routeShortNames instanceof Array
34
- ? query.routeShortNames
35
- : [query.routeShortNames]
36
- : null,
37
- limit: query.limit ? parseInt(query.limit) : 5,
38
- minutesAfter: query.minutesAfter ? parseInt(query.minutesAfter) : 60,
39
- minutesBefore: query.minutesBefore ? parseInt(query.minutesBefore) : 0,
40
- };
41
- }
42
- parseStopIds(stopIdsFromInput) {
43
- let output = new Set();
44
- for (const stopId of stopIdsFromInput) {
45
- const parsed = JSON.parse(stopId);
46
- const priority = Object.keys(parsed)[0];
47
- const stopIds = parsed[priority];
48
- output.add({
49
- priority: Number.parseInt(priority),
50
- stopIds: [...new Set(stopIds)],
51
- });
52
- }
53
- return output;
54
- }
55
30
  }
56
31
  //# sourceMappingURL=V2PublicDepartureBoardsController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"V2PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"V2PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAExF,MAAM,OAAO,iCAAiC;IAC1C;QAEO,WAAM,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,eAAe,CAAC,0CAA0C,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAuB,aAAa,CAAC,oBAAoB,CAAC,CAAC;gBACnG,MAAM,MAAM,GAAG,2BAA2B,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAC9B,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,aAAa,CACvB,CAAC;gBAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzB,OAAO;gBACX,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;oBAAS,CAAC;gBACP,IAAI,EAAE,GAAG,EAAE,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;IA1Ba,CAAC;CA2BnB"}
@@ -0,0 +1,7 @@
1
+ import { DepartureBoardFacade } from "#og/public/service/facade/DepartureBoardFacade";
2
+ import type { RequestHandler } from "@golemio/core/dist/shared/express.js";
3
+ export declare class V3PublicDepartureBoardsController {
4
+ private readonly departureBoardFacade;
5
+ constructor(departureBoardFacade: DepartureBoardFacade);
6
+ getAll: RequestHandler;
7
+ }
@@ -0,0 +1,58 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { OgModuleToken } from "#og/public/ioc/OgModuleToken";
14
+ import { DepartureBoardFacade } from "#og/public/service/facade/DepartureBoardFacade";
15
+ import { createChildSpan } from "@golemio/core/dist/monitoring/opentelemetry/trace-provider.js";
16
+ import ExpressValidatorCore from "@golemio/core/dist/shared/express-validator.js";
17
+ const { matchedData } = ExpressValidatorCore;
18
+ import GolemioErrorsCore from "@golemio/core/dist/shared/golemio-errors.js";
19
+ const { GeneralError } = GolemioErrorsCore;
20
+ import { inject, injectable } from "@golemio/core/dist/shared/tsyringe.js";
21
+ import { DepartureBoardsParamsParser } from "../helpers/DepartureBoardsParamsParser.js";
22
+ let V3PublicDepartureBoardsController = class V3PublicDepartureBoardsController {
23
+ constructor(departureBoardFacade) {
24
+ this.departureBoardFacade = departureBoardFacade;
25
+ this.getAll = async (req, res, next) => {
26
+ const span = createChildSpan("V3PublicDepartureBoardsController.getAll");
27
+ const queryData = matchedData(req);
28
+ try {
29
+ const params = DepartureBoardsParamsParser.parseDepartureParams(queryData);
30
+ const result = await this.departureBoardFacade.getAll(params.stopIds, params.limit, params.routeShortNames, params.minutesAfter, params.minutesBefore);
31
+ if (result === null) {
32
+ throw new GeneralError("No departures found for the given stop ids", this.constructor.name, undefined, 404);
33
+ }
34
+ const response = {
35
+ stop_groups: result.map((group) => ({
36
+ priority: group.priority,
37
+ stop_ids: group.stopIds,
38
+ departures: group.departures ?? [],
39
+ })),
40
+ };
41
+ res.json(response);
42
+ }
43
+ catch (err) {
44
+ next(err);
45
+ }
46
+ finally {
47
+ span?.end();
48
+ }
49
+ };
50
+ }
51
+ };
52
+ V3PublicDepartureBoardsController = __decorate([
53
+ injectable(),
54
+ __param(0, inject(OgModuleToken.DepartureBoardFacade)),
55
+ __metadata("design:paramtypes", [DepartureBoardFacade])
56
+ ], V3PublicDepartureBoardsController);
57
+ export { V3PublicDepartureBoardsController };
58
+ //# sourceMappingURL=V3PublicDepartureBoardsController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V3PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAEhG,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC;AAC7C,OAAO,iBAAiB,MAAM,6CAA6C,CAAC;AAC5E,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAGjF,IAAM,iCAAiC,GAAvC,MAAM,iCAAiC;IAC1C,YAAwD,oBAA2D;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;QAE5G,WAAM,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,eAAe,CAAC,0CAA0C,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,2BAA2B,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CACjD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,aAAa,CACvB,CAAC;gBAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClB,MAAM,IAAI,YAAY,CAAC,4CAA4C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAChH,CAAC;gBAED,MAAM,QAAQ,GAAuC;oBACjD,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,QAAQ,EAAE,KAAK,CAAC,OAAO;wBACvB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;qBACrC,CAAC,CAAC;iBACN,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;oBAAS,CAAC;gBACP,IAAI,EAAE,GAAG,EAAE,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;IAhCoH,CAAC;CAiC1H,CAAA;AAlCY,iCAAiC;IAD7C,UAAU,EAAE;IAEI,WAAA,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAA;qCAAwC,oBAAoB;GAD1G,iCAAiC,CAkC7C"}
@@ -16,7 +16,7 @@ export interface IPublicApiDepartureRoute {
16
16
  export interface IPublicApiDepartureTrip {
17
17
  id: string;
18
18
  headsign: string;
19
- is_canceled: boolean | null;
19
+ is_canceled: boolean;
20
20
  }
21
21
  export interface IPublicApiDepartureVehicle {
22
22
  id: string | null;
@@ -32,3 +32,16 @@ export interface IPublicApiDeparture {
32
32
  vehicle: IPublicApiDepartureVehicle;
33
33
  }
34
34
  export type PublicApiDepartureBoardGroup = IPublicApiDeparture[];
35
+ export interface IPublicDepartureStopGroupResult {
36
+ priority: number;
37
+ stopIds: string[];
38
+ departures: PublicApiDepartureBoardGroup | null;
39
+ }
40
+ export interface IV3PublicApiDepartureStopGroup {
41
+ priority: number;
42
+ stop_ids: string[];
43
+ departures: PublicApiDepartureBoardGroup;
44
+ }
45
+ export interface IV3PublicApiDepartureBoardResponse {
46
+ stop_groups: IV3PublicApiDepartureStopGroup[];
47
+ }
@@ -5,6 +5,7 @@ import { CoreToken } from "@golemio/core/dist/helpers/ioc/CoreToken.js";
5
5
  import { OutputGatewayContainer } from "@golemio/core/dist/output-gateway/ioc/Di.js";
6
6
  import { instanceCachingFactory } from "@golemio/core/dist/shared/tsyringe.js";
7
7
  import { VehicleDescriptorCachedRepository } from "#og/public/data-access/VehicleDescriptorCachedRepository";
8
+ import { V3PublicDepartureBoardsController } from "../controllers/v3/V3PublicDepartureBoardsController.js";
8
9
  import { DelayComputationRepository } from "../data-access/redis/DelayComputationRepository.js";
9
10
  import { PublicGtfsDepartureRepository } from "../data-access/redis/PublicGtfsDepartureRepository.js";
10
11
  import { PublicStopTimeRepository } from "../data-access/redis/PublicStopTimeRepository.js";
@@ -76,6 +77,7 @@ ogPublicContainer.register(OgModuleToken.DepartureBoardFacade, {
76
77
  return new DepartureBoardFacade(c.resolve(OgModuleToken.PublicGtfsDepartureRepository), c.resolve(OgModuleToken.PublicVehiclePositionsRepository), c.resolve(OgModuleToken.PublicStopTimeRepository), c.resolve(OgModuleToken.VehicleDescriptorCachedRepository), c.resolve(OgModuleToken.GtfsStopsRedisRepository));
77
78
  }),
78
79
  });
80
+ ogPublicContainer.registerSingleton(OgModuleToken.V3PublicDepartureBoardsController, V3PublicDepartureBoardsController);
79
81
  ogPublicContainer.register(OgModuleToken.VPSubscriber, {
80
82
  useFactory: instanceCachingFactory((c) => {
81
83
  const config = c.resolve(CoreToken.SimpleConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/Di.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/Di.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ export declare const OgModuleToken: {
25
25
  PublicVehiclePositionsFacade: symbol;
26
26
  DetailedTripFacade: symbol;
27
27
  DepartureBoardFacade: symbol;
28
+ V3PublicDepartureBoardsController: symbol;
28
29
  VPSubscriber: symbol;
29
30
  GtfsStopsSubscriber: symbol;
30
31
  };
@@ -29,6 +29,7 @@ export const OgModuleToken = {
29
29
  PublicVehiclePositionsFacade: Symbol("PublicVehiclePositionsFacade"),
30
30
  DetailedTripFacade: Symbol("DetailedTripFacade"),
31
31
  DepartureBoardFacade: Symbol("DepartureBoardFacade"),
32
+ V3PublicDepartureBoardsController: Symbol("V3PublicDepartureBoardsController"),
32
33
  VPSubscriber: Symbol("VPSubscriber"),
33
34
  GtfsStopsSubscriber: Symbol("GtfsStopsSubscriber"),
34
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"OgModuleToken.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/OgModuleToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAC9D,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC;IACxD,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,YAAY;IACZ,uCAAuC;IACvC,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,kCAAkC,EAAE,MAAM,CAAC,oCAAoC,CAAC;IAChF,yCAAyC,EAAE,MAAM,CAAC,2CAA2C,CAAC;IAC9F,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,YAAY;IACZ,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,4BAA4B,EAAE,MAAM,CAAC,8BAA8B,CAAC;IACpE,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;CACrD,CAAC"}
1
+ {"version":3,"file":"OgModuleToken.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/OgModuleToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAC9D,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC;IACxD,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,YAAY;IACZ,uCAAuC;IACvC,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,kCAAkC,EAAE,MAAM,CAAC,oCAAoC,CAAC;IAChF,yCAAyC,EAAE,MAAM,CAAC,2CAA2C,CAAC;IAC9F,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,YAAY;IACZ,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,4BAA4B,EAAE,MAAM,CAAC,8BAA8B,CAAC;IACpE,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;CACrD,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { v2PublicDeparturesRouter } from "./v2/V2PublicDeparturesRouter.js";
2
+ export { v3PublicDeparturesRouter } from "./v3/V3PublicDeparturesRouter.js";
2
3
  export { v2PublicGtfsRouter } from "./v2/V2PublicGtfsRouter.js";
3
4
  export { v2PublicVPRouter } from "./v2/V2PublicVehiclePositionsRouter.js";
@@ -1,4 +1,5 @@
1
1
  export { v2PublicDeparturesRouter } from "./v2/V2PublicDeparturesRouter.js";
2
+ export { v3PublicDeparturesRouter } from "./v3/V3PublicDeparturesRouter.js";
2
3
  export { v2PublicGtfsRouter } from "./v2/V2PublicGtfsRouter.js";
3
4
  export { v2PublicVPRouter } from "./v2/V2PublicVehiclePositionsRouter.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/routers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/routers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { AbstractRouter } from "@golemio/core/dist/helpers/routing/AbstractRouter.js";
2
+ import type { Router as TRouter } from "@golemio/core/dist/shared/express.js";
3
+ export declare class V3PublicDeparturesRouter extends AbstractRouter {
4
+ router: TRouter;
5
+ private cacheHeaderMiddleware;
6
+ private compressionByDefaultMiddleware;
7
+ private departureController;
8
+ constructor();
9
+ protected initRoutes(): void;
10
+ }
11
+ declare const v3PublicDeparturesRouter: AbstractRouter;
12
+ export { v3PublicDeparturesRouter };
@@ -0,0 +1,37 @@
1
+ import { OgPublicContainer } from "#og/public/ioc/Di";
2
+ import { OgModuleToken } from "#og/public/ioc/OgModuleToken";
3
+ import { RouteVersion } from "#og/shared/constants/index";
4
+ import { AbstractRouter } from "@golemio/core/dist/helpers/routing/AbstractRouter.js";
5
+ import { checkErrors } from "@golemio/core/dist/output-gateway/Validation.js";
6
+ import { ContainerToken } from "@golemio/core/dist/output-gateway/ioc/index.js";
7
+ import ExpressCore from "@golemio/core/dist/shared/express.js";
8
+ const { Router } = ExpressCore;
9
+ import ExpressValidatorCore from "@golemio/core/dist/shared/express-validator.js";
10
+ const { query } = ExpressValidatorCore;
11
+ import { CustomStopIdGroupValidator } from "../v2/helpers/CustomStopIdGroupValidator.js";
12
+ export class V3PublicDeparturesRouter extends AbstractRouter {
13
+ constructor() {
14
+ super(RouteVersion.v3, "public/departureboards");
15
+ this.router = Router();
16
+ this.cacheHeaderMiddleware = OgPublicContainer.resolve(ContainerToken.CacheHeaderMiddleware);
17
+ this.compressionByDefaultMiddleware = OgPublicContainer.resolve(ContainerToken.CompressionByDefaultMiddleware);
18
+ this.departureController = OgPublicContainer.resolve(OgModuleToken.V3PublicDepartureBoardsController);
19
+ // GtfsStopsSubscriber is initialized by the v2 router (shared singleton, initialize is not idempotent).
20
+ // Take over the initialization here when the v2 router is removed.
21
+ this.initRoutes();
22
+ }
23
+ initRoutes() {
24
+ this.router.get("/", [
25
+ query("stopIds").exists().custom(CustomStopIdGroupValidator.validate),
26
+ query("limit").optional().isInt({ min: 1, max: 30 }).not().isArray(),
27
+ query("routeShortNames").optional().not().isEmpty({ ignore_whitespace: true }),
28
+ query("minutesAfter").optional().isInt({ min: 1, max: 360 }).not().isArray(),
29
+ query("minutesBefore").optional().isInt({ min: -359, max: 30 }).not().isArray(),
30
+ ], checkErrors,
31
+ // max-age 3 seconds, stale-while-revalidate 2 seconds
32
+ this.cacheHeaderMiddleware.getMiddleware(3, 2), this.compressionByDefaultMiddleware.getMiddleware(), this.departureController.getAll);
33
+ }
34
+ }
35
+ const v3PublicDeparturesRouter = new V3PublicDeparturesRouter();
36
+ export { v3PublicDeparturesRouter };
37
+ //# sourceMappingURL=V3PublicDeparturesRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V3PublicDeparturesRouter.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/routers/v3/V3PublicDeparturesRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAGtF,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAEhF,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;AAC/B,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAEzF,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAMxD;QACI,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAwB,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACpH,IAAI,CAAC,8BAA8B,GAAG,iBAAiB,CAAC,OAAO,CAC3D,cAAc,CAAC,8BAA8B,CAChD,CAAC;QACF,IAAI,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAChD,aAAa,CAAC,iCAAiC,CAClD,CAAC;QACF,wGAAwG;QACxG,mEAAmE;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAES,UAAU;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,GAAG,EACH;YACI,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YACrE,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;YACpE,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;YAC9E,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;YAC5E,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;SAClF,EACD,WAAW;QACX,sDAAsD;QACtD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9C,IAAI,CAAC,8BAA8B,CAAC,aAAa,EAAE,EACnD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAClC,CAAC;IACN,CAAC;CACJ;AAED,MAAM,wBAAwB,GAAmB,IAAI,wBAAwB,EAAE,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { type IDepartureBoardsStopIdGroups } from "#og/public/controllers/v2/interfaces/PublicParamsInterfaces";
2
2
  import { VehicleDescriptorCachedRepository } from "#og/public/data-access/VehicleDescriptorCachedRepository";
3
3
  import { GtfsStopsRedisRepository } from "#og/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository";
4
- import { type PublicApiDepartureBoardGroup } from "#og/public/domain/PublicApiDepartureInterfaces";
4
+ import { type IPublicDepartureStopGroupResult } from "#og/public/domain/PublicApiDepartureInterfaces";
5
5
  import { type IGtfsDepartureRepository } from "#og/public/domain/repository/IGtfsDepartureRepository";
6
6
  import { type IStopTimeRepository } from "#og/public/domain/repository/IStopTimeRepository";
7
7
  import { type IVehiclePositionsRepository } from "#og/public/domain/repository/IVehiclePositionsRepository";
@@ -15,7 +15,7 @@ export declare class DepartureBoardFacade {
15
15
  private static readonly OPEN_MINUTES_IN_PAST;
16
16
  private static readonly OPEN_MINUTES_IN_PAST_MS;
17
17
  constructor(departureRepository: IGtfsDepartureRepository, tripRepository: IVehiclePositionsRepository, stopTimeRepository: IStopTimeRepository, descriptorRepository: VehicleDescriptorCachedRepository, gtfsStopsRepository: GtfsStopsRedisRepository);
18
- getAll(stopIds: Set<IDepartureBoardsStopIdGroups>, limit: number, routeShortNames: string[] | null, minutesAfter: number, minutesBefore: number): Promise<PublicApiDepartureBoardGroup[] | null>;
18
+ getAll(stopIds: Set<IDepartureBoardsStopIdGroups>, limit: number, routeShortNames: string[] | null, minutesAfter: number, minutesBefore: number): Promise<IPublicDepartureStopGroupResult[] | null>;
19
19
  private handleStopGroupDepartures;
20
20
  private duplicateDeparturesWithDifferentVehicleIds;
21
21
  private filterForExistingStopIds;
@@ -31,16 +31,11 @@ export class DepartureBoardFacade {
31
31
  if (output.every((value) => value === null)) {
32
32
  return null;
33
33
  }
34
- else {
35
- return output.map((value) => {
36
- if (value === null) {
37
- return [];
38
- }
39
- else {
40
- return value;
41
- }
42
- });
43
- }
34
+ return output.map((departures, index) => ({
35
+ priority: sortedStopGroups[index].priority,
36
+ stopIds: sortedStopGroups[index].requestedStopIds,
37
+ departures,
38
+ }));
44
39
  }
45
40
  async handleStopGroupDepartures(stopGroup, limit, routeShortNames, minutesAfter, minutesBefore) {
46
41
  let outputGroup = [];
@@ -146,6 +141,7 @@ export class DepartureBoardFacade {
146
141
  for (const group of groups) {
147
142
  filteredGroups.push({
148
143
  priority: group.priority,
144
+ requestedStopIds: group.stopIds,
149
145
  stopIds: group.stopIds.filter((s) => foundStopIds.has(s)),
150
146
  });
151
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAWzD,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,iBAAiB,MAAM,6CAA6C,CAAC;AAC5E,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,qDAAqD,CAAC;AAEpG,MAAM,OAAO,oBAAoB;IAK7B,YACqB,mBAA6C,EAC7C,cAA2C,EAC3C,kBAAuC,EACvC,oBAAuD,EACvD,mBAA6C;QAJ7C,wBAAmB,GAAnB,mBAAmB,CAA0B;QAC7C,mBAAc,GAAd,cAAc,CAA6B;QAC3C,uBAAkB,GAAlB,kBAAkB,CAAqB;QACvC,yBAAoB,GAApB,oBAAoB,CAAmC;QACvD,wBAAmB,GAAnB,mBAAmB,CAA0B;QAE9D,IAAI,CAAC,cAAc,GAAG,IAAI,6BAA6B,EAAE,CAAC;IAC9D,CAAC;IAEM,KAAK,CAAC,MAAM,CACf,OAA0C,EAC1C,KAAa,EACb,eAAgC,EAChC,YAAoB,EACpB,aAAqB;QAErB,IAAI,MAAkD,CAAC;QAEvD,MAAM,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;QAEtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CACjC,KAAK,EAAE,SAAS,EAAE,EAAE,CAChB,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,CAC3G,CAAC;QAEF,IAAI,CAAC;YACD,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACJ,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACnC,SAAuC,EACvC,KAAa,EACb,eAAgC,EAChC,YAAoB,EACpB,aAAqB;QAErB,IAAI,WAAW,GAAiC,EAAE,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5B,uEAAuE;YACvE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,0BAA0B,CAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CACzE,SAAS,CAAC,OAAO,EACjB,YAAY,GAAG,oBAAoB,CAAC,oBAAoB,EACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,uBAAuB,CAAC,CAC9E,CAAC;QACF,cAAc,EAAE,GAAG,EAAE,CAAC;QACtB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,yFAAyF;YACzF,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,yBAAyB,CAAC,CAAC;QACjG,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9G,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,cAAc,CAAC,CAAC;QACzG,aAAa,EAAE,GAAG,EAAE,CAAC;QAErB,MAAM,aAAa,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,sBAAsB,CAAC,CAAC;QAC9F,IAAI,CAAC;YACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtC,4FAA4F;oBAC5F,SAAS;gBACb,CAAC;gBACD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC/D,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,0CAA0C,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACzG,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;gBAAS,CAAC;YACP,aAAa,EAAE,GAAG,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,uBAAuB,CAAC,CAAC;QAChG,IAAI,CAAC;YACD,WAAW,GAAG,qBAAqB,CAAC,iCAAiC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACpG,WAAW,GAAG,qBAAqB,CAAC,kCAAkC,CAAC,WAAW,CAAC,CAAC;YACpF,WAAW,GAAG,qBAAqB,CAAC,gCAAgC,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,KAAK,CAChH,CAAC,EACD,KAAK,CACR,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CAAC,qCAAqC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnG,CAAC;gBAAS,CAAC;YACP,cAAc,EAAE,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,0CAA0C,CACpD,SAAuC,EACvC,gBAAsC;QAEtC,MAAM,WAAW,GAAiC,EAAE,CAAC;QAErD,kEAAkE;QAClE,yCAAyC;QACzC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;gBACjC,SAAS;gBACT,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;gBACvB,QAAQ,EAAE,IAAI;aACjB,CAAC,CACL,CAAC;YAEF,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,mEAAmE;QACnE,+DAA+D;QAC/D,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;YAC7C,MAAM,iBAAiB,GAAG,eAAe,EAAE,aAAa,CAAC,mBAAmB;gBACxE,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAC7C,SAAS,CAAC,UAAU,EACpB,eAAe,EAAE,aAAa,CAAC,mBAAmB,CACrD;gBACH,CAAC,CAAC,IAAI,CAAC;YAEX,IAAI,eAAe,GAAmC,IAAI,CAAC;YAE3D,kEAAkE;YAClE,2FAA2F;YAC3F,IAAI,eAAe,CAAC,UAAU,KAAK,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAClE,eAAe,CAAC,UAAU,EAC1B,SAAS,CAAC,OAAO,CACpB,CAAC;gBAEF,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;YAC1G,CAAC;YAED,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;gBACjC,SAAS;gBACT,eAAe;gBACf,iBAAiB;gBACjB,QAAQ,EAAE,eAAe;aAC5B,CAAC,CACL,CAAC;QACN,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,MAAsC;QACzE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7B,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACP,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAgB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtF,MAAM,cAAc,GAAmC,EAAE,CAAC;QAC1D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,cAAc,CAAC,IAAI,CAAC;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC5D,CAAC,CAAC;QACP,CAAC;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,wBAAwB,CAAC,OAA0C;QACvE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvE,CAAC;;AA9MuB,yCAAoB,GAAG,EAAE,CAAC,CAAC,kEAAkE;AAC7F,4CAAuB,GAAG,oBAAoB,CAAC,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAczD,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,iBAAiB,MAAM,6CAA6C,CAAC;AAC5E,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,qDAAqD,CAAC;AAMpG,MAAM,OAAO,oBAAoB;IAK7B,YACqB,mBAA6C,EAC7C,cAA2C,EAC3C,kBAAuC,EACvC,oBAAuD,EACvD,mBAA6C;QAJ7C,wBAAmB,GAAnB,mBAAmB,CAA0B;QAC7C,mBAAc,GAAd,cAAc,CAA6B;QAC3C,uBAAkB,GAAlB,kBAAkB,CAAqB;QACvC,yBAAoB,GAApB,oBAAoB,CAAmC;QACvD,wBAAmB,GAAnB,mBAAmB,CAA0B;QAE9D,IAAI,CAAC,cAAc,GAAG,IAAI,6BAA6B,EAAE,CAAC;IAC9D,CAAC;IAEM,KAAK,CAAC,MAAM,CACf,OAA0C,EAC1C,KAAa,EACb,eAAgC,EAChC,YAAoB,EACpB,aAAqB;QAErB,IAAI,MAAkD,CAAC;QAEvD,MAAM,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;QAEtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CACjC,KAAK,EAAE,SAAS,EAAE,EAAE,CAChB,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,CAC3G,CAAC;QAEF,IAAI,CAAC;YACD,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ;YAC1C,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,gBAAgB;YACjD,UAAU;SACb,CAAC,CAAC,CAAC;IACR,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACnC,SAA+B,EAC/B,KAAa,EACb,eAAgC,EAChC,YAAoB,EACpB,aAAqB;QAErB,IAAI,WAAW,GAAiC,EAAE,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5B,uEAAuE;YACvE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,0BAA0B,CAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CACzE,SAAS,CAAC,OAAO,EACjB,YAAY,GAAG,oBAAoB,CAAC,oBAAoB,EACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,uBAAuB,CAAC,CAC9E,CAAC;QACF,cAAc,EAAE,GAAG,EAAE,CAAC;QACtB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,yFAAyF;YACzF,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,yBAAyB,CAAC,CAAC;QACjG,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9G,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,sCAAsC,CAAC,cAAc,CAAC,CAAC;QACzG,aAAa,EAAE,GAAG,EAAE,CAAC;QAErB,MAAM,aAAa,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,sBAAsB,CAAC,CAAC;QAC9F,IAAI,CAAC;YACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtC,4FAA4F;oBAC5F,SAAS;gBACb,CAAC;gBACD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC/D,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,0CAA0C,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACzG,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;gBAAS,CAAC;YACP,aAAa,EAAE,GAAG,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,SAAS,CAAC,QAAQ,uBAAuB,CAAC,CAAC;QAChG,IAAI,CAAC;YACD,WAAW,GAAG,qBAAqB,CAAC,iCAAiC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACpG,WAAW,GAAG,qBAAqB,CAAC,kCAAkC,CAAC,WAAW,CAAC,CAAC;YACpF,WAAW,GAAG,qBAAqB,CAAC,gCAAgC,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,KAAK,CAChH,CAAC,EACD,KAAK,CACR,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CAAC,qCAAqC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnG,CAAC;gBAAS,CAAC;YACP,cAAc,EAAE,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,0CAA0C,CACpD,SAAuC,EACvC,gBAAsC;QAEtC,MAAM,WAAW,GAAiC,EAAE,CAAC;QAErD,kEAAkE;QAClE,yCAAyC;QACzC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;gBACjC,SAAS;gBACT,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;gBACvB,QAAQ,EAAE,IAAI;aACjB,CAAC,CACL,CAAC;YAEF,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,mEAAmE;QACnE,+DAA+D;QAC/D,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;YAC7C,MAAM,iBAAiB,GAAG,eAAe,EAAE,aAAa,CAAC,mBAAmB;gBACxE,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAC7C,SAAS,CAAC,UAAU,EACpB,eAAe,EAAE,aAAa,CAAC,mBAAmB,CACrD;gBACH,CAAC,CAAC,IAAI,CAAC;YAEX,IAAI,eAAe,GAAmC,IAAI,CAAC;YAE3D,kEAAkE;YAClE,2FAA2F;YAC3F,IAAI,eAAe,CAAC,UAAU,KAAK,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAClE,eAAe,CAAC,UAAU,EAC1B,SAAS,CAAC,OAAO,CACpB,CAAC;gBAEF,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;YAC1G,CAAC;YAED,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;gBACjC,SAAS;gBACT,eAAe;gBACf,iBAAiB;gBACjB,QAAQ,EAAE,eAAe;aAC5B,CAAC,CACL,CAAC;QACN,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,MAAsC;QACzE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7B,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACP,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAgB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtF,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,cAAc,CAAC,IAAI,CAAC;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,gBAAgB,EAAE,KAAK,CAAC,OAAO;gBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC5D,CAAC,CAAC;QACP,CAAC;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,wBAAwB,CAAC,OAA0C;QACvE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvE,CAAC;;AA7MuB,yCAAoB,GAAG,EAAE,CAAC,CAAC,kEAAkE;AAC7F,4CAAuB,GAAG,oBAAoB,CAAC,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -49,6 +49,9 @@ tags:
49
49
 
50
50
  - name: 🕒 Public Departures (v2)
51
51
  description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" />
52
+
53
+ - name: 🕒 Public Departures (v3)
54
+ description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" />
52
55
  - name: ⚠ JIS (v1) - internal
53
56
  description: Endpoints for internal use
54
57
 
@@ -2098,6 +2101,7 @@ paths:
2098
2101
  summary: Get Departure Boards
2099
2102
  description: |
2100
2103
  ℹ️ Note: This endpoint is optimized for client applications serving many users simultaneously. It provides streamlined data structures and caching strategies suitable for client-side consumption. Rate limits can be adjusted upon request - contact us if you need higher limits. Note: Despite the 'public' prefix, this endpoint requires an API key for access control and usage monitoring.
2104
+ New integrations should use `/v3/public/departureboards`.
2101
2105
  parameters:
2102
2106
  - in: query
2103
2107
  name: stopIds
@@ -2131,7 +2135,7 @@ paths:
2131
2135
  required: false
2132
2136
  schema:
2133
2137
  type: integer
2134
- minimum: 0
2138
+ minimum: 1
2135
2139
  maximum: 360
2136
2140
  description: Default is 60. Maximum is 360 (6 hours)
2137
2141
  example: 60
@@ -2163,7 +2167,7 @@ paths:
2163
2167
  description: Cache control directive for caching proxies
2164
2168
  schema:
2165
2169
  type: string
2166
- example: public, s-maxage=5, stale-while-revalidate=5
2170
+ example: public, s-maxage=3, stale-while-revalidate=2
2167
2171
  content:
2168
2172
  application/json:
2169
2173
  schema:
@@ -2186,6 +2190,94 @@ paths:
2186
2190
  maxItems: 0
2187
2191
  items:
2188
2192
  type: object
2193
+ /v3/public/departureboards:
2194
+ get:
2195
+ tags:
2196
+ - 🕒 Public Departures (v3)
2197
+ summary: Get Departure Boards
2198
+ description: |
2199
+ ℹ️ Note: This endpoint is optimized for client applications serving many users simultaneously. It provides streamlined data structures and caching strategies suitable for client-side consumption. Rate limits can be adjusted upon request - contact us if you need higher limits. Note: Despite the 'public' prefix, this endpoint requires an API key for access control and usage monitoring.
2200
+ Departures are returned grouped by the requested priority groups, each with the requested stop IDs.
2201
+ parameters:
2202
+ - in: query
2203
+ name: stopIds
2204
+ required: true
2205
+ schema:
2206
+ type: array
2207
+ items:
2208
+ type: string
2209
+ example: ["{\"0\": [\"U717Z5P\"]}", "{\"1\": [\"U718Z5P\", \"U719Z5P\"]}"]
2210
+ description: |
2211
+ Groups of stop IDs formatted as JSON (index/priority -> stop IDs). For example ?stopIds[]={\"0\": [\"U717Z5P\"]}&stopIds[]={\"1\": [\"U718Z5P\", \"U719Z5P\"]}.
2212
+ The maximum number of groups is 50. The maximum number of stops in one group is 50. The maximum number of stops combined is 50.
2213
+ - in: query
2214
+ name: limit
2215
+ required: false
2216
+ schema:
2217
+ type: integer
2218
+ description: Limit for each group of departures. Default is 5. Maximum is 30.
2219
+ example: 5
2220
+ - in: query
2221
+ name: routeShortNames
2222
+ required: false
2223
+ schema:
2224
+ type: array
2225
+ items:
2226
+ type: string
2227
+ example: ["27"]
2228
+ description: Default is null
2229
+ - in: query
2230
+ name: minutesAfter
2231
+ required: false
2232
+ schema:
2233
+ type: integer
2234
+ minimum: 1
2235
+ maximum: 360
2236
+ description: Default is 60. Maximum is 360 (6 hours)
2237
+ example: 60
2238
+ - in: query
2239
+ name: minutesBefore
2240
+ required: false
2241
+ schema:
2242
+ type: integer
2243
+ minimum: -359
2244
+ maximum: 30
2245
+ description: "Set the starting point of the departure retrieval window, in minutes, relative to now (or to timeFrom, if used). Positive values will return departures starting earlier in the past. Negative values will return departures starting later in the future. This setting helps account for walking time to the stop. Example: 2 returns departures that left 2 minutes ago. -10 returns departures no earlier than 10 minutes from now. Default is set to 0. Maximum value is 30. Minimum value is -359."
2246
+ example: 0
2247
+ - in: header
2248
+ name: Accept-Encoding
2249
+ description: Indicate the content encoding (usually a compression algorithm) that the client can understand. See [mdn](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding) for more details. Note that for this endpoint, if no value is given, gzip compression will be used by default (the `identity` value can be used to opt out of the default compression).
2250
+ required: false
2251
+ schema:
2252
+ oneOf:
2253
+ - type: string
2254
+ enum:
2255
+ - gzip
2256
+ - identity
2257
+
2258
+ responses:
2259
+ 200:
2260
+ description: OK
2261
+ headers:
2262
+ Cache-Control:
2263
+ description: Cache control directive for caching proxies
2264
+ schema:
2265
+ type: string
2266
+ example: public, s-maxage=3, stale-while-revalidate=2
2267
+ content:
2268
+ application/json:
2269
+ schema:
2270
+ $ref: "#/components/schemas/PublicDepartureBoardsResponse"
2271
+ 400:
2272
+ $ref: "#/components/responses/BadRequestError"
2273
+ 401:
2274
+ $ref: "#/components/responses/UnauthorizedError"
2275
+ 404:
2276
+ description: Not found - no stops found for the given query parameters
2277
+ content:
2278
+ application/json:
2279
+ schema:
2280
+ $ref: "#/components/schemas/NotFoundErrorObject"
2189
2281
  /v1/jis/events/custom-format:
2190
2282
  get:
2191
2283
  tags:
@@ -2262,23 +2354,7 @@ components:
2262
2354
  content:
2263
2355
  application/json:
2264
2356
  schema:
2265
- type: object
2266
- properties:
2267
- error_message:
2268
- type: string
2269
- example: "Bad request"
2270
- nullable: false
2271
- error_status:
2272
- type: integer
2273
- example: 400
2274
- nullable: false
2275
- error_info:
2276
- type: string
2277
- example: "{...}"
2278
- nullable: true
2279
- required:
2280
- - error_message
2281
- - error_status
2357
+ $ref: "#/components/schemas/BadRequestErrorObject"
2282
2358
 
2283
2359
  UnauthorizedError:
2284
2360
  description: API key is missing or invalid
@@ -2289,19 +2365,7 @@ components:
2289
2365
  content:
2290
2366
  application/json:
2291
2367
  schema:
2292
- type: object
2293
- properties:
2294
- error_message:
2295
- type: string
2296
- example: "Unauthorized. Failed to authenticate user."
2297
- nullable: false
2298
- error_status:
2299
- type: integer
2300
- example: 401
2301
- nullable: false
2302
- required:
2303
- - error_message
2304
- - error_status
2368
+ $ref: "#/components/schemas/UnauthorizedErrorObject"
2305
2369
 
2306
2370
 
2307
2371
  parameters:
@@ -4093,27 +4157,113 @@ components:
4093
4157
  enum:
4094
4158
  - Point
4095
4159
 
4160
+ BadRequestErrorObject:
4161
+ type: object
4162
+ properties:
4163
+ error_message:
4164
+ type: string
4165
+ example: "Bad request"
4166
+ nullable: false
4167
+ error_status:
4168
+ type: integer
4169
+ example: 400
4170
+ nullable: false
4171
+ error_info:
4172
+ type: string
4173
+ example: "{...}"
4174
+ nullable: true
4175
+ required:
4176
+ - error_message
4177
+ - error_status
4178
+
4179
+ UnauthorizedErrorObject:
4180
+ type: object
4181
+ properties:
4182
+ error_message:
4183
+ type: string
4184
+ example: "Unauthorized. Failed to authenticate user."
4185
+ nullable: false
4186
+ error_status:
4187
+ type: integer
4188
+ example: 401
4189
+ nullable: false
4190
+ required:
4191
+ - error_message
4192
+ - error_status
4193
+
4194
+ NotFoundErrorObject:
4195
+ type: object
4196
+ properties:
4197
+ error_message:
4198
+ type: string
4199
+ example: "Not Found"
4200
+ nullable: false
4201
+ error_status:
4202
+ type: integer
4203
+ example: 404
4204
+ nullable: false
4205
+ required:
4206
+ - error_message
4207
+ - error_status
4208
+
4209
+ PublicDepartureBoardsResponse:
4210
+ type: object
4211
+ properties:
4212
+ stop_groups:
4213
+ type: array
4214
+ items:
4215
+ $ref: "#/components/schemas/PublicDepartureStopGroup"
4216
+ required:
4217
+ - stop_groups
4218
+
4219
+ PublicDepartureStopGroup:
4220
+ type: object
4221
+ properties:
4222
+ priority:
4223
+ type: integer
4224
+ description: Priority of the group as requested
4225
+ example: 0
4226
+ nullable: false
4227
+ stop_ids:
4228
+ type: array
4229
+ description: Stop IDs of the group as requested (duplicates removed)
4230
+ items:
4231
+ type: string
4232
+ example: ["U717Z5P"]
4233
+ departures:
4234
+ type: array
4235
+ description: Departures for the group, empty if there are none or the stops are unknown
4236
+ items:
4237
+ $ref: "#/components/schemas/PublicDepartureItem"
4238
+ required:
4239
+ - priority
4240
+ - stop_ids
4241
+ - departures
4242
+
4096
4243
  PublicDepartureGroup:
4097
4244
  type: array
4098
4245
  items:
4099
- type: object
4100
- properties:
4101
- departure:
4102
- $ref: "#/components/schemas/PublicDeparture"
4103
- stop:
4104
- $ref: "#/components/schemas/PublicDepartureStop"
4105
- route:
4106
- $ref: "#/components/schemas/PublicDepartureRoute"
4107
- trip:
4108
- $ref: "#/components/schemas/PublicDepartureTrip"
4109
- vehicle:
4110
- $ref: "#/components/schemas/PublicDepartureVehicle"
4111
- required:
4112
- - departure
4113
- - stop
4114
- - route
4115
- - trip
4116
- - vehicle
4246
+ $ref: "#/components/schemas/PublicDepartureItem"
4247
+
4248
+ PublicDepartureItem:
4249
+ type: object
4250
+ properties:
4251
+ departure:
4252
+ $ref: "#/components/schemas/PublicDeparture"
4253
+ stop:
4254
+ $ref: "#/components/schemas/PublicDepartureStop"
4255
+ route:
4256
+ $ref: "#/components/schemas/PublicDepartureRoute"
4257
+ trip:
4258
+ $ref: "#/components/schemas/PublicDepartureTrip"
4259
+ vehicle:
4260
+ $ref: "#/components/schemas/PublicDepartureVehicle"
4261
+ required:
4262
+ - departure
4263
+ - stop
4264
+ - route
4265
+ - trip
4266
+ - vehicle
4117
4267
 
4118
4268
  PublicDeparture:
4119
4269
  type: object
@@ -4141,6 +4291,7 @@ components:
4141
4291
  required:
4142
4292
  - timestamp_scheduled
4143
4293
  - timestamp_predicted
4294
+ - delay_seconds
4144
4295
  - minutes
4145
4296
 
4146
4297
  PublicDepartureStop:
@@ -4161,6 +4312,7 @@ components:
4161
4312
  required:
4162
4313
  - id
4163
4314
  - sequence
4315
+ - platform_code
4164
4316
 
4165
4317
  PublicDepartureRoute:
4166
4318
  type: object
@@ -4192,10 +4344,11 @@ components:
4192
4344
  is_canceled:
4193
4345
  type: boolean
4194
4346
  example: false
4195
- nullable: true
4347
+ nullable: false
4196
4348
  required:
4197
4349
  - id
4198
4350
  - headsign
4351
+ - is_canceled
4199
4352
 
4200
4353
  PublicDepartureVehicle:
4201
4354
  type: object
@@ -4216,6 +4369,11 @@ components:
4216
4369
  type: boolean
4217
4370
  example: true
4218
4371
  nullable: true
4372
+ required:
4373
+ - id
4374
+ - is_wheelchair_accessible
4375
+ - is_air_conditioned
4376
+ - has_charger
4219
4377
 
4220
4378
  EventId:
4221
4379
  type: string
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/pid",
3
- "version": "6.2.1-dev.2991982041",
3
+ "version": "6.2.1-dev.3021435927",
4
4
  "description": "Golemio PID Module",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",