@golemio/pid 6.3.0-rc.3045969035 → 6.3.0-rc.3053576965

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 +319 -2
  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":"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"}
1
+ {"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":"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"}
@@ -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,106 @@ 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
+ description: Bad request - invalid query parameters
2273
+ content:
2274
+ application/json:
2275
+ schema:
2276
+ $ref: "#/components/schemas/BadRequestErrorObject"
2277
+ 401:
2278
+ description: API key is missing or invalid
2279
+ headers:
2280
+ WWW_Authenticate:
2281
+ schema:
2282
+ type: string
2283
+ content:
2284
+ application/json:
2285
+ schema:
2286
+ $ref: "#/components/schemas/UnauthorizedErrorObject"
2287
+ 404:
2288
+ description: Not found - no stops found for the given query parameters
2289
+ content:
2290
+ application/json:
2291
+ schema:
2292
+ $ref: "#/components/schemas/NotFoundErrorObject"
2189
2293
  /v1/jis/events/custom-format:
2190
2294
  get:
2191
2295
  tags:
@@ -4093,6 +4197,219 @@ components:
4093
4197
  enum:
4094
4198
  - Point
4095
4199
 
4200
+ BadRequestErrorObject:
4201
+ type: object
4202
+ properties:
4203
+ error_message:
4204
+ type: string
4205
+ example: "Bad request"
4206
+ nullable: false
4207
+ error_status:
4208
+ type: integer
4209
+ example: 400
4210
+ nullable: false
4211
+ error_info:
4212
+ type: string
4213
+ example: "{...}"
4214
+ nullable: true
4215
+ required:
4216
+ - error_message
4217
+ - error_status
4218
+
4219
+ UnauthorizedErrorObject:
4220
+ type: object
4221
+ properties:
4222
+ error_message:
4223
+ type: string
4224
+ example: "Unauthorized. Failed to authenticate user."
4225
+ nullable: false
4226
+ error_status:
4227
+ type: integer
4228
+ example: 401
4229
+ nullable: false
4230
+ required:
4231
+ - error_message
4232
+ - error_status
4233
+
4234
+ NotFoundErrorObject:
4235
+ type: object
4236
+ properties:
4237
+ error_message:
4238
+ type: string
4239
+ example: "Not Found"
4240
+ nullable: false
4241
+ error_status:
4242
+ type: integer
4243
+ example: 404
4244
+ nullable: false
4245
+ required:
4246
+ - error_message
4247
+ - error_status
4248
+
4249
+ PublicDepartureBoardsResponse:
4250
+ type: object
4251
+ properties:
4252
+ stop_groups:
4253
+ type: array
4254
+ items:
4255
+ $ref: "#/components/schemas/PublicDepartureStopGroup"
4256
+ required:
4257
+ - stop_groups
4258
+
4259
+ PublicDepartureStopGroup:
4260
+ type: object
4261
+ properties:
4262
+ priority:
4263
+ type: integer
4264
+ description: Priority of the group as requested
4265
+ example: 0
4266
+ nullable: false
4267
+ stop_ids:
4268
+ type: array
4269
+ description: Stop IDs of the group as requested (duplicates removed)
4270
+ items:
4271
+ type: string
4272
+ example: ["U717Z5P"]
4273
+ departures:
4274
+ type: array
4275
+ description: Departures for the group, empty if there are none or the stops are unknown
4276
+ items:
4277
+ $ref: "#/components/schemas/PublicDepartureItem"
4278
+ required:
4279
+ - priority
4280
+ - stop_ids
4281
+ - departures
4282
+
4283
+ PublicDepartureItem:
4284
+ type: object
4285
+ properties:
4286
+ departure:
4287
+ $ref: "#/components/schemas/PublicDepartureItemDeparture"
4288
+ stop:
4289
+ $ref: "#/components/schemas/PublicDepartureItemStop"
4290
+ route:
4291
+ $ref: "#/components/schemas/PublicDepartureItemRoute"
4292
+ trip:
4293
+ $ref: "#/components/schemas/PublicDepartureItemTrip"
4294
+ vehicle:
4295
+ $ref: "#/components/schemas/PublicDepartureItemVehicle"
4296
+ required:
4297
+ - departure
4298
+ - stop
4299
+ - route
4300
+ - trip
4301
+ - vehicle
4302
+
4303
+ PublicDepartureItemDeparture:
4304
+ type: object
4305
+ properties:
4306
+ timestamp_scheduled:
4307
+ type: string
4308
+ format: date-time
4309
+ example: "2024-04-05T16:09:00+02:00"
4310
+ nullable: false
4311
+ timestamp_predicted:
4312
+ type: string
4313
+ format: date-time
4314
+ example: "2024-04-05T16:09:16+02:00"
4315
+ nullable: false
4316
+ delay_seconds:
4317
+ type: number
4318
+ description: Delay in seconds
4319
+ example: 0
4320
+ nullable: true
4321
+ minutes:
4322
+ type: number
4323
+ description: Minutes until the departure
4324
+ example: 0
4325
+ nullable: false
4326
+ required:
4327
+ - timestamp_scheduled
4328
+ - timestamp_predicted
4329
+ - delay_seconds
4330
+ - minutes
4331
+
4332
+ PublicDepartureItemStop:
4333
+ type: object
4334
+ properties:
4335
+ id:
4336
+ type: string
4337
+ example: "U717Z5P" # Strossmayerovo náměstí
4338
+ nullable: false
4339
+ sequence:
4340
+ type: number
4341
+ example: 8
4342
+ nullable: false
4343
+ platform_code:
4344
+ type: string
4345
+ example: "E"
4346
+ nullable: true
4347
+ required:
4348
+ - id
4349
+ - sequence
4350
+ - platform_code
4351
+
4352
+ PublicDepartureItemRoute:
4353
+ type: object
4354
+ properties:
4355
+ type:
4356
+ type: string
4357
+ example: "tram"
4358
+ enum: ["tram", "metro", "train", "bus", "ferry", "funicular", "trolleybus", "ext_miscellaneous"]
4359
+ nullable: false
4360
+ short_name:
4361
+ type: string
4362
+ example: "27"
4363
+ nullable: false
4364
+ required:
4365
+ - type
4366
+ - short_name
4367
+
4368
+ PublicDepartureItemTrip:
4369
+ type: object
4370
+ properties:
4371
+ id:
4372
+ type: string
4373
+ example: "27_3206_240318"
4374
+ nullable: false
4375
+ headsign:
4376
+ type: string
4377
+ example: "Libuš"
4378
+ nullable: false
4379
+ is_canceled:
4380
+ type: boolean
4381
+ example: false
4382
+ nullable: false
4383
+ required:
4384
+ - id
4385
+ - headsign
4386
+ - is_canceled
4387
+
4388
+ PublicDepartureItemVehicle:
4389
+ type: object
4390
+ properties:
4391
+ id:
4392
+ type: string
4393
+ example: "service-0-9072"
4394
+ nullable: true
4395
+ is_wheelchair_accessible:
4396
+ type: boolean
4397
+ example: true
4398
+ nullable: true
4399
+ is_air_conditioned:
4400
+ type: boolean
4401
+ example: false
4402
+ nullable: true
4403
+ has_charger:
4404
+ type: boolean
4405
+ example: true
4406
+ nullable: true
4407
+ required:
4408
+ - id
4409
+ - is_wheelchair_accessible
4410
+ - is_air_conditioned
4411
+ - has_charger
4412
+
4096
4413
  PublicDepartureGroup:
4097
4414
  type: array
4098
4415
  items:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/pid",
3
- "version": "6.3.0-rc.3045969035",
3
+ "version": "6.3.0-rc.3053576965",
4
4
  "description": "Golemio PID Module",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",