@golemio/public-transport 0.1.0-dev.2918247179 → 0.1.0-dev.2922113447

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/db/migrations/postgresql/20261007000000-add-color-to-gtfs-feeds.js +53 -0
  2. package/db/migrations/postgresql/20261007000000-widen-gtfs-stop-id-columns.js +53 -0
  3. package/db/migrations/postgresql/sqls/20261007000000-add-color-to-gtfs-feeds-down.sql +1 -0
  4. package/db/migrations/postgresql/sqls/20261007000000-add-color-to-gtfs-feeds-up.sql +17 -0
  5. package/db/migrations/postgresql/sqls/20261007000000-widen-gtfs-stop-id-columns-down.sql +7 -0
  6. package/db/migrations/postgresql/sqls/20261007000000-widen-gtfs-stop-id-columns-up.sql +11 -0
  7. package/dist/integration-engine/gtfs/GtfsFacade.js +28 -4
  8. package/dist/integration-engine/gtfs/GtfsFacade.js.map +1 -1
  9. package/dist/integration-engine/gtfs/data-access/precomputed/DeparturesRepository.js +1 -2
  10. package/dist/integration-engine/gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -1
  11. package/dist/integration-engine/gtfs/data-access/precomputed/ServicesCalendarRepository.js +54 -51
  12. package/dist/integration-engine/gtfs/data-access/precomputed/ServicesCalendarRepository.js.map +1 -1
  13. package/dist/integration-engine/gtfs/workers/timetables/tasks/ImportGtfsFromStorageTask.d.ts +2 -1
  14. package/dist/integration-engine/gtfs/workers/timetables/tasks/ImportGtfsFromStorageTask.js +30 -17
  15. package/dist/integration-engine/gtfs/workers/timetables/tasks/ImportGtfsFromStorageTask.js.map +1 -1
  16. package/dist/output-gateway/shared/data-access/GtfsFeedRepository.d.ts +3 -1
  17. package/dist/output-gateway/shared/data-access/GtfsFeedRepository.js +2 -1
  18. package/dist/output-gateway/shared/data-access/GtfsFeedRepository.js.map +1 -1
  19. package/dist/schema-definitions/gtfs/interfaces/IGtfsFeedDto.d.ts +1 -0
  20. package/dist/schema-definitions/gtfs/models/GtfsFeedDto.d.ts +5 -0
  21. package/dist/schema-definitions/gtfs/models/GtfsFeedDto.js +2 -0
  22. package/dist/schema-definitions/gtfs/models/GtfsFeedDto.js.map +1 -1
  23. package/dist/schema-definitions/gtfs/models/precomputed/DeparturesModel.js +3 -3
  24. package/dist/schema-definitions/gtfs/models/precomputed/DeparturesModel.js.map +1 -1
  25. package/docs/follow-ups.md +17 -0
  26. package/docs/implementation_documentation.md +7 -0
  27. package/docs/openapi-output.yaml +7 -0
  28. package/package.json +1 -1
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var dbm;
4
+ var type;
5
+ var seed;
6
+ var fs = require('fs');
7
+ var path = require('path');
8
+ var Promise;
9
+
10
+ /**
11
+ * We receive the dbmigrate dependency from dbmigrate initially.
12
+ * This enables us to not have to rely on NODE_PATH.
13
+ */
14
+ exports.setup = function(options, seedLink) {
15
+ dbm = options.dbmigrate;
16
+ type = dbm.dataType;
17
+ seed = seedLink;
18
+ Promise = options.Promise;
19
+ };
20
+
21
+ exports.up = function(db) {
22
+ var filePath = path.join(__dirname, 'sqls', '20261007000000-add-color-to-gtfs-feeds-up.sql');
23
+ return new Promise( function( resolve, reject ) {
24
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
25
+ if (err) return reject(err);
26
+ console.log('received data: ' + data);
27
+
28
+ resolve(data);
29
+ });
30
+ })
31
+ .then(function(data) {
32
+ return db.runSql(data);
33
+ });
34
+ };
35
+
36
+ exports.down = function(db) {
37
+ var filePath = path.join(__dirname, 'sqls', '20261007000000-add-color-to-gtfs-feeds-down.sql');
38
+ return new Promise( function( resolve, reject ) {
39
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
40
+ if (err) return reject(err);
41
+ console.log('received data: ' + data);
42
+
43
+ resolve(data);
44
+ });
45
+ })
46
+ .then(function(data) {
47
+ return db.runSql(data);
48
+ });
49
+ };
50
+
51
+ exports._meta = {
52
+ "version": 1
53
+ };
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var dbm;
4
+ var type;
5
+ var seed;
6
+ var fs = require('fs');
7
+ var path = require('path');
8
+ var Promise;
9
+
10
+ /**
11
+ * We receive the dbmigrate dependency from dbmigrate initially.
12
+ * This enables us to not have to rely on NODE_PATH.
13
+ */
14
+ exports.setup = function(options, seedLink) {
15
+ dbm = options.dbmigrate;
16
+ type = dbm.dataType;
17
+ seed = seedLink;
18
+ Promise = options.Promise;
19
+ };
20
+
21
+ exports.up = function(db) {
22
+ var filePath = path.join(__dirname, 'sqls', '20261007000000-widen-gtfs-stop-id-columns-up.sql');
23
+ return new Promise( function( resolve, reject ) {
24
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
25
+ if (err) return reject(err);
26
+ console.log('received data: ' + data);
27
+
28
+ resolve(data);
29
+ });
30
+ })
31
+ .then(function(data) {
32
+ return db.runSql(data);
33
+ });
34
+ };
35
+
36
+ exports.down = function(db) {
37
+ var filePath = path.join(__dirname, 'sqls', '20261007000000-widen-gtfs-stop-id-columns-down.sql');
38
+ return new Promise( function( resolve, reject ) {
39
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
40
+ if (err) return reject(err);
41
+ console.log('received data: ' + data);
42
+
43
+ resolve(data);
44
+ });
45
+ })
46
+ .then(function(data) {
47
+ return db.runSql(data);
48
+ });
49
+ };
50
+
51
+ exports._meta = {
52
+ "version": 1
53
+ };
@@ -0,0 +1 @@
1
+ ALTER TABLE public_transport.gtfs_feeds DROP COLUMN color;
@@ -0,0 +1,17 @@
1
+ -- Per-feed display colour (#rrggbb) used by the map for stops of the feed. NULL means the map
2
+ -- falls back to its default colour, so a newly added feed only needs this column set.
3
+ ALTER TABLE public_transport.gtfs_feeds
4
+ ADD COLUMN color varchar(7) NULL
5
+ CONSTRAINT gtfs_feeds_color_check CHECK (color ~ '^#[0-9A-Fa-f]{6}$');
6
+
7
+ -- Backfill the colours previously hardcoded in the map; codes missing in an environment are skipped.
8
+ UPDATE public_transport.gtfs_feeds f
9
+ SET color = v.color
10
+ FROM (VALUES
11
+ ('pid', '#dc301b'),
12
+ ('kodis', '#c00000'),
13
+ ('ids-jmk', '#007e00'),
14
+ ('idzk', '#00437d'),
15
+ ('poved', '#008837')
16
+ ) AS v(code, color)
17
+ WHERE f.code = v.code;
@@ -0,0 +1,7 @@
1
+ -- Narrowing back fails if any stored stop id exceeds the old limits -- clear such feeds first.
2
+ ALTER TABLE public_transport.gtfs_precomputed_departures
3
+ ALTER COLUMN stop_id TYPE varchar(25),
4
+ ALTER COLUMN next_stop_id TYPE varchar(30),
5
+ ALTER COLUMN last_stop_id TYPE varchar(30);
6
+
7
+ ALTER TABLE public_transport.vehiclepositions_stop_times_history ALTER COLUMN gtfs_stop_id TYPE varchar(20);
@@ -0,0 +1,11 @@
1
+ -- Widen GTFS stop id copies to match their source gtfs_stops.stop_id (varchar(255)): new feeds use
2
+ -- composite stop ids such as "105_1_Z115+117+120+121+122+123" (30 chars), which overflow the
3
+ -- PID-sized limits below. ALTER on the partitioned parents cascades to all attached partitions;
4
+ -- tmp tables are recreated per import via LIKE parent. Widening varchar is metadata-only (no rewrite)
5
+ -- and no view depends on these columns.
6
+ ALTER TABLE public_transport.gtfs_precomputed_departures
7
+ ALTER COLUMN stop_id TYPE varchar(255),
8
+ ALTER COLUMN next_stop_id TYPE varchar(255),
9
+ ALTER COLUMN last_stop_id TYPE varchar(255);
10
+
11
+ ALTER TABLE public_transport.vehiclepositions_stop_times_history ALTER COLUMN gtfs_stop_id TYPE varchar(255);
@@ -31,6 +31,18 @@ const FeedTableSuffix_1 = require("./helpers/FeedTableSuffix");
31
31
  const SourceTableSuffixEnum_1 = require("./helpers/SourceTableSuffixEnum");
32
32
  const GtfsContainerToken_1 = require("./ioc/GtfsContainerToken");
33
33
  const HelperTypes_1 = require("./workers/timetables/tasks/helpers/HelperTypes");
34
+ // Tables a feed may legitimately leave empty: optional GTFS files (an absent file is swapped in as an
35
+ // empty table, see ImportGtfsFromStorageTask) and the calendar pair, of which the GTFS spec requires
36
+ // only one -- CALENDAR_MODELS must hold at least one row between them.
37
+ const EMPTY_ALLOWED_MODELS = [
38
+ "calendar",
39
+ "calendar_dates",
40
+ "route_sub_agencies",
41
+ "run_numbers",
42
+ "shapes",
43
+ "transfers",
44
+ ];
45
+ const CALENDAR_MODELS = ["calendar", "calendar_dates"];
34
46
  let GtfsFacade = class GtfsFacade {
35
47
  constructor(gtfsRepository, gtfsMetadataRepository, departureRepository, databaseConnector) {
36
48
  this.gtfsRepository = gtfsRepository;
@@ -40,11 +52,13 @@ let GtfsFacade = class GtfsFacade {
40
52
  this.name = this.constructor.name;
41
53
  this.checkSavedTmpTables = async (dataset, version, feedCode) => {
42
54
  const tables = await this.gtfsMetadataRepository.getAllSaved(dataset, version, feedCode);
43
- const tablesArray = [];
55
+ const tableSuffix = (0, FeedTableSuffix_1.feedTableSuffix)(SourceTableSuffixEnum_1.SourceTableSuffixEnum.Tmp, feedCode);
56
+ const modelByTmpTableName = new Map();
44
57
  for (const table of tables) {
45
- const tmpTableName = gtfs_1.Gtfs[table.dataValues.tn].pgTableName + (0, FeedTableSuffix_1.feedTableSuffix)(SourceTableSuffixEnum_1.SourceTableSuffixEnum.Tmp, feedCode);
46
- tablesArray.push(`'${tmpTableName}'`);
58
+ const modelName = table.dataValues.tn;
59
+ modelByTmpTableName.set(gtfs_1.Gtfs[modelName].pgTableName + tableSuffix, modelName);
47
60
  }
61
+ const tablesArray = [...modelByTmpTableName.keys()].map((tableName) => `'${tableName}'`);
48
62
  const connection = this.databaseConnector.getConnection();
49
63
  const result = await connection.query(`
50
64
  SELECT table_name AS name, count_rows(table_schema, table_name) AS total
@@ -55,9 +69,19 @@ let GtfsFacade = class GtfsFacade {
55
69
  AND table_schema = '${const_1.PG_SCHEMA}';
56
70
  `, { type: sequelize_1.default.QueryTypes.SELECT });
57
71
  helpers_1.log.info(`Datasets: total rows for ${dataset}: ${JSON.stringify(result)}`);
58
- if (!result || !result.length || result.some((table) => table.total === 0)) {
72
+ if (!result || !result.length) {
59
73
  throw new golemio_errors_1.GeneralError("Empty table found", this.constructor.name);
60
74
  }
75
+ const rowsByModel = new Map(result.map((table) => [modelByTmpTableName.get(table.name), Number(table.total)]));
76
+ for (const [modelName, total] of rowsByModel) {
77
+ if (total === 0 && !(modelName && EMPTY_ALLOWED_MODELS.includes(modelName))) {
78
+ throw new golemio_errors_1.GeneralError(`Empty table found: ${modelName}`, this.constructor.name);
79
+ }
80
+ }
81
+ const calendarTotals = CALENDAR_MODELS.map((modelName) => rowsByModel.get(modelName)).filter((total) => total !== undefined);
82
+ if (calendarTotals.length > 0 && calendarTotals.every((total) => total === 0)) {
83
+ throw new golemio_errors_1.GeneralError("Empty calendar found: a feed needs rows in calendar or calendar_dates.", this.constructor.name);
84
+ }
61
85
  };
62
86
  // Note: the partition swap (replaceStaticTables/replacePrecomputedTables) commits per-table
63
87
  // internally (see GtfsRepository.replaceAllTable / the gtfs_hotswap procedure) and therefore cannot
@@ -1 +1 @@
1
- {"version":3,"file":"GtfsFacade.js","sourceRoot":"","sources":["../../../src/integration-engine/gtfs/GtfsFacade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GtfsFacade.js","sourceRoot":"","sources":["../../../src/integration-engine/gtfs/GtfsFacade.ts"],"names":[],"mappings":"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"}
@@ -63,7 +63,7 @@ let DeparturesRepository = class DeparturesRepository extends models_1.PostgresM
63
63
  t2.trip_headsign,
64
64
  t2.trip_short_name,
65
65
  t2.wheelchair_accessible,
66
- t3.service_id,
66
+ t4.service_id,
67
67
  t4.date,
68
68
  t5.route_short_name,
69
69
  coalesce(t5.route_type, :defaultRouteType) AS route_type,
@@ -90,7 +90,6 @@ let DeparturesRepository = class DeparturesRepository extends models_1.PostgresM
90
90
  LEFT JOIN gtfs_trips${entitySuffix} t2 ON t.trip_id = t2.trip_id
91
91
  INNER JOIN gtfs_precomputed_services_calendar${precomputedTmpSuffix} t4 ON t2.service_id = t4.service_id
92
92
  INNER JOIN gtfs_precomputed_minmax_stop_sequences${precomputedTmpSuffix} t1 ON t.trip_id = t1.trip_id
93
- LEFT JOIN gtfs_calendar${entitySuffix} t3 ON t2.service_id = t3.service_id
94
93
  LEFT JOIN gtfs_stops${entitySuffix} t0 ON t.stop_id = t0.stop_id
95
94
  LEFT JOIN gtfs_routes${entitySuffix} t5 ON t2.route_id = t5.route_id
96
95
  -- gtfs_cis_stops is PID-only and only ever has an _actual_pid partition (no per-feed
@@ -1 +1 @@
1
- {"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/gtfs/data-access/precomputed/DeparturesRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/gtfs/data-access/precomputed/DeparturesRepository.ts"],"names":[],"mappings":"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"}
@@ -19,66 +19,69 @@ class ServicesCalendarRepository extends models_1.PostgresModel {
19
19
  }, new golemio_validator_1.JSONSchemaValidator("ServicesCalendarRepositoryValidator", gtfs_1.Gtfs.servicesCalendar.outputJsonSchema));
20
20
  this.populate = async (sourceTableSuffix, feedCode, feedId) => {
21
21
  const entitySuffix = (0, FeedTableSuffix_1.feedTableSuffix)(sourceTableSuffix, feedCode);
22
+ // A service runs on a date when calendar.txt schedules it (weekday within start..end) and no
23
+ // exception_type=2 removes it, OR when calendar_dates.txt adds it (exception_type=1). The second
24
+ // branch must not depend on gtfs_calendar: the GTFS spec allows a feed to define services in
25
+ // calendar_dates.txt alone (same semantics as the get_service_ids_from_gtfs_calendar SQL function).
22
26
  const sql = `
23
- SELECT
24
- dates.date,
25
- date_part('day', dates.date - to_char(timezone('Europe/Prague', now()), 'YYYY-MM-DD')::timestamp) AS day_diff,
26
- service_id,
27
- :feedId AS feed_id
28
- FROM (
27
+ WITH dates AS (
29
28
  SELECT
30
29
  date_trunc('day', dd.dd)::date AS date
31
30
  FROM generate_series(
32
31
  ( SELECT (CURRENT_TIMESTAMP - interval '1 day') )::date,
33
32
  ( SELECT (CURRENT_TIMESTAMP + interval '2 days') )::date,
34
33
  '1 day'
35
- ) dd(dd)) dates
36
- INNER JOIN "${const_1.PG_SCHEMA}".gtfs_calendar${entitySuffix} calendar ON ((1 = 1))
37
- WHERE (
38
- (
39
- dates.date >= "start_date"::date
40
- AND dates.date <= end_date::date
41
- AND (
42
- (
43
- btrim(to_char(dates.date::timestamptz, 'day')) = 'monday'
44
- AND monday = 1
45
- ) OR (
46
- btrim(to_char(dates.date::timestamptz, 'day')) = 'tuesday'
47
- AND tuesday = 1
48
- ) OR (
49
- btrim(to_char(dates.date::timestamptz, 'day')) = 'wednesday'
50
- AND wednesday = 1
51
- ) OR (
52
- btrim(to_char(dates.date::timestamptz, 'day')) = 'thursday'
53
- AND thursday = 1
54
- ) OR (
55
- btrim(to_char(dates.date::timestamptz, 'day')) = 'friday'
56
- AND friday = 1
57
- ) OR (
58
- btrim(to_char(dates.date::timestamptz, 'day')) = 'saturday'
59
- AND saturday = 1
60
- ) OR (
61
- btrim(to_char(dates.date::timestamptz, 'day')) = 'sunday'
62
- AND sunday = 1
63
- )
64
- ) AND (
65
- NOT service_id IN (
66
- SELECT service_id
67
- FROM "${const_1.PG_SCHEMA}".gtfs_calendar_dates${entitySuffix} calendar_dates
68
- WHERE (
69
- exception_type = 2
70
- AND dates.date = calendar_dates.date::date
71
- )
72
- )
73
- )) OR service_id IN (
74
- SELECT service_id
75
- FROM "${const_1.PG_SCHEMA}".gtfs_calendar_dates${entitySuffix} calendar_dates
76
- WHERE
77
- calendar_dates.exception_type = 1
78
- AND dates.date = calendar_dates.date::date
34
+ ) dd(dd)
35
+ ), services AS (
36
+ SELECT dates.date, calendar.service_id
37
+ FROM dates
38
+ INNER JOIN "${const_1.PG_SCHEMA}".gtfs_calendar${entitySuffix} calendar
39
+ ON dates.date >= calendar.start_date::date
40
+ AND dates.date <= calendar.end_date::date
41
+ WHERE (
42
+ (
43
+ btrim(to_char(dates.date::timestamptz, 'day')) = 'monday'
44
+ AND calendar.monday = 1
45
+ ) OR (
46
+ btrim(to_char(dates.date::timestamptz, 'day')) = 'tuesday'
47
+ AND calendar.tuesday = 1
48
+ ) OR (
49
+ btrim(to_char(dates.date::timestamptz, 'day')) = 'wednesday'
50
+ AND calendar.wednesday = 1
51
+ ) OR (
52
+ btrim(to_char(dates.date::timestamptz, 'day')) = 'thursday'
53
+ AND calendar.thursday = 1
54
+ ) OR (
55
+ btrim(to_char(dates.date::timestamptz, 'day')) = 'friday'
56
+ AND calendar.friday = 1
57
+ ) OR (
58
+ btrim(to_char(dates.date::timestamptz, 'day')) = 'saturday'
59
+ AND calendar.saturday = 1
60
+ ) OR (
61
+ btrim(to_char(dates.date::timestamptz, 'day')) = 'sunday'
62
+ AND calendar.sunday = 1
79
63
  )
64
+ ) AND NOT EXISTS (
65
+ SELECT 1
66
+ FROM "${const_1.PG_SCHEMA}".gtfs_calendar_dates${entitySuffix} calendar_dates
67
+ WHERE calendar_dates.service_id = calendar.service_id
68
+ AND calendar_dates.exception_type = 2
69
+ AND calendar_dates.date::date = dates.date
80
70
  )
81
- ORDER BY dates.date
71
+ UNION
72
+ SELECT dates.date, calendar_dates.service_id
73
+ FROM dates
74
+ INNER JOIN "${const_1.PG_SCHEMA}".gtfs_calendar_dates${entitySuffix} calendar_dates
75
+ ON calendar_dates.date::date = dates.date
76
+ WHERE calendar_dates.exception_type = 1
77
+ )
78
+ SELECT
79
+ services.date,
80
+ date_part('day', services.date - to_char(timezone('Europe/Prague', now()), 'YYYY-MM-DD')::timestamp) AS day_diff,
81
+ services.service_id,
82
+ :feedId AS feed_id
83
+ FROM services
84
+ ORDER BY services.date
82
85
  `;
83
86
  try {
84
87
  const tmpTable = gtfs_1.Gtfs.servicesCalendar.pgTableName + (0, FeedTableSuffix_1.feedTableSuffix)(SourceTableSuffixEnum_1.SourceTableSuffixEnum.Tmp, feedCode);
@@ -1 +1 @@
1
- {"version":3,"file":"ServicesCalendarRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/gtfs/data-access/precomputed/ServicesCalendarRepository.ts"],"names":[],"mappings":";;;AAAA,gEAAuC;AACvC,8DAAiC;AACjC,2EAAoE;AACpE,yEAAqF;AACrF,mFAAkF;AAClF,mEAAgE;AAChE,+EAA4E;AAE5E,MAAa,0BAA2B,SAAQ,sBAAa;IACzD;QACI,KAAK,CACD,4BAA4B,EAC5B;YACI,yBAAyB,EAAE,WAAI,CAAC,gBAAgB,CAAC,yBAAyB;YAC1E,WAAW,EAAE,WAAI,CAAC,gBAAgB,CAAC,WAAW;YAC9C,QAAQ,EAAE,iBAAS;YACnB,UAAU,EAAE,YAAY;YACxB,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC;SACzD,EACD,IAAI,uCAAmB,CAAC,qCAAqC,EAAE,WAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CACzG,CAAC;QAGC,aAAQ,GAAG,KAAK,EAAE,iBAAwC,EAAE,QAAgB,EAAE,MAAc,EAAiB,EAAE;YAClH,MAAM,YAAY,GAAG,IAAA,iCAAe,EAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG;;;;;;;;;;;;;;0BAcM,iBAAS,kBAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA+B7B,iBAAS,wBAAwB,YAAY;;;;;;;;gCAQjD,iBAAS,wBAAwB,YAAY;;;;;;;SAOpE,CAAC;YAEF,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,WAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAA,iCAAe,EAAC,6CAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAE1G,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CAAC,gBAAgB,iBAAS,KAAK,QAAQ,IAAI,GAAG,GAAG,EAAE;oBACzF,YAAY,EAAE,EAAE,MAAM,EAAE;iBAC3B,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;YACd,CAAC;QACL,CAAC,CAAC;IA5EF,CAAC;CA6EJ;AA1FD,gEA0FC"}
1
+ {"version":3,"file":"ServicesCalendarRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/gtfs/data-access/precomputed/ServicesCalendarRepository.ts"],"names":[],"mappings":";;;AAAA,gEAAuC;AACvC,8DAAiC;AACjC,2EAAoE;AACpE,yEAAqF;AACrF,mFAAkF;AAClF,mEAAgE;AAChE,+EAA4E;AAE5E,MAAa,0BAA2B,SAAQ,sBAAa;IACzD;QACI,KAAK,CACD,4BAA4B,EAC5B;YACI,yBAAyB,EAAE,WAAI,CAAC,gBAAgB,CAAC,yBAAyB;YAC1E,WAAW,EAAE,WAAI,CAAC,gBAAgB,CAAC,WAAW;YAC9C,QAAQ,EAAE,iBAAS;YACnB,UAAU,EAAE,YAAY;YACxB,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC;SACzD,EACD,IAAI,uCAAmB,CAAC,qCAAqC,EAAE,WAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CACzG,CAAC;QAGC,aAAQ,GAAG,KAAK,EAAE,iBAAwC,EAAE,QAAgB,EAAE,MAAc,EAAiB,EAAE;YAClH,MAAM,YAAY,GAAG,IAAA,iCAAe,EAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAClE,6FAA6F;YAC7F,iGAAiG;YACjG,6FAA6F;YAC7F,oGAAoG;YACpG,MAAM,GAAG,GAAG;;;;;;;;;;;;8BAYU,iBAAS,kBAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA4BzC,iBAAS,wBAAwB,YAAY;;;;;;;;8BAQ3C,iBAAS,wBAAwB,YAAY;;;;;;;;;;;SAWlE,CAAC;YAEF,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,WAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAA,iCAAe,EAAC,6CAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAE1G,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CAAC,gBAAgB,iBAAS,KAAK,QAAQ,IAAI,GAAG,GAAG,EAAE;oBACzF,YAAY,EAAE,EAAE,MAAM,EAAE;iBAC3B,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;YACd,CAAC;QACL,CAAC,CAAC;IA/EF,CAAC;CAgFJ;AA7FD,gEA6FC"}
@@ -24,7 +24,8 @@ export declare class ImportGtfsFromStorageTask extends AbstractTask<IImportGtfsF
24
24
  /**
25
25
  * Downloads "gtfs-static/<feedCode>.zip" from blob storage, unzips it, validates the required GTFS file set
26
26
  * and pipes each ingested file into the same Redis staging namespace the FTP download path uses,
27
- * so the downstream transformAndSaveData tasks read both paths' files identically.
27
+ * so the downstream transformAndSaveData tasks read both paths' files identically. Also lists the known
28
+ * files absent from the zip, whose tables get replaced with empty ones.
28
29
  */
29
30
  private stageFeedFilesFromStorage;
30
31
  }
@@ -37,24 +37,22 @@ const node_os_1 = __importDefault(require("node:os"));
37
37
  const constants_1 = require("../constants");
38
38
  const HelperTypes_1 = require("./helpers/HelperTypes");
39
39
  const ImportGtfsFromStorageSchema_1 = require("./schema/ImportGtfsFromStorageSchema");
40
- // The GTFS spec's core dataset -- every feed must carry these, regardless of IDS region.
41
- const REQUIRED_GTFS_FILES = [
42
- "agency.txt",
43
- "calendar.txt",
44
- "calendar_dates.txt",
45
- "routes.txt",
46
- "stop_times.txt",
47
- "stops.txt",
48
- "trips.txt",
49
- ];
40
+ // The GTFS spec's required files -- every feed must carry these, regardless of IDS region.
41
+ const REQUIRED_GTFS_FILES = ["agency.txt", "routes.txt", "stop_times.txt", "stops.txt", "trips.txt"];
42
+ // Conditionally required by the GTFS spec: a feed must carry at least one of them (e.g. feeds defining
43
+ // every service date explicitly ship calendar_dates.txt alone).
44
+ const CALENDAR_GTFS_FILES = ["calendar.txt", "calendar_dates.txt"];
50
45
  // Present in some feeds but not universally (e.g. IDS JMK ships none of these) -- ingested
51
- // when included in the zip, skipped otherwise. feed_info.txt has no corresponding gtfs_*
46
+ // when included in the zip, replaced with an empty table otherwise. feed_info.txt has no corresponding gtfs_*
52
47
  // table/transformation yet (follow-up), so it's never ingested even when present.
53
48
  // run_numbers.txt is not a GTFS file at all -- it's the ROPID run-numbers crosswalk (normally
54
49
  // FTP-only, see DownloadDatasetsTask), included here so a feed can bundle its own equivalent
55
50
  // in the same zip and get the richer run-based matching (see TripScheduleRepository.populate).
56
51
  const OPTIONAL_GTFS_FILES = ["feed_info.txt", "route_sub_agencies.txt", "run_numbers.txt", "shapes.txt", "transfers.txt"];
57
- const KNOWN_GTFS_FILES = [...REQUIRED_GTFS_FILES, ...OPTIONAL_GTFS_FILES];
52
+ const KNOWN_GTFS_FILES = [...REQUIRED_GTFS_FILES, ...CALENDAR_GTFS_FILES, ...OPTIONAL_GTFS_FILES];
53
+ // Known files without a gtfs_* table -- never staged, never swapped.
54
+ const UNSTORED_GTFS_FILES = ["feed_info.txt"];
55
+ const toModelName = (fileName) => fileName.replace(/\.txt$/, "");
58
56
  const datasetForFile = (fileName) => fileName === "run_numbers.txt" ? DatasetEnum_1.DatasetEnum.RUN_NUMBERS : DatasetEnum_1.DatasetEnum.GTFS;
59
57
  // Feed zips live under one folder in the blob container: "gtfs-static/<feedCode>.zip".
60
58
  const STORAGE_FOLDER = "gtfs-static";
@@ -80,7 +78,8 @@ let ImportGtfsFromStorageTask = class ImportGtfsFromStorageTask extends workers_
80
78
  /**
81
79
  * Downloads "gtfs-static/<feedCode>.zip" from blob storage, unzips it, validates the required GTFS file set
82
80
  * and pipes each ingested file into the same Redis staging namespace the FTP download path uses,
83
- * so the downstream transformAndSaveData tasks read both paths' files identically.
81
+ * so the downstream transformAndSaveData tasks read both paths' files identically. Also lists the known
82
+ * files absent from the zip, whose tables get replaced with empty ones.
84
83
  */
85
84
  this.stageFeedFilesFromStorage = async (feedCode) => {
86
85
  const blobKey = `${STORAGE_FOLDER}/${feedCode}.zip`;
@@ -104,17 +103,21 @@ let ImportGtfsFromStorageTask = class ImportGtfsFromStorageTask extends workers_
104
103
  if (missing.length > 0) {
105
104
  throw new golemio_errors_1.GeneralError(`Feed zip "${blobKey}" is missing required GTFS file(s): ${missing.join(", ")}`, this.constructor.name);
106
105
  }
106
+ if (!CALENDAR_GTFS_FILES.some((name) => foundNames.has(name))) {
107
+ throw new golemio_errors_1.GeneralError(`Feed zip "${blobKey}" is missing a calendar: it needs ${CALENDAR_GTFS_FILES.join(" or ")}.`, this.constructor.name);
108
+ }
107
109
  for (const file of inflated.files) {
108
- if (file.name === "feed_info.txt") {
110
+ if (UNSTORED_GTFS_FILES.includes(file.name)) {
109
111
  continue;
110
112
  }
111
113
  const redisKey = `${feedCode}/${file.name}`;
112
114
  await this.staticFileRedisRepository.pipeStream(redisKey, node_fs_1.default.createReadStream(file.path));
113
115
  // downstream (datasetFileModelMap/GtfsTransformation) keys on the bare model name,
114
116
  // e.g. "agency", never the file name "agency.txt"
115
- stagedFiles.push({ name: file.name.replace(/\.txt$/, ""), redisKey, dataset: datasetForFile(file.name) });
117
+ stagedFiles.push({ name: toModelName(file.name), redisKey, dataset: datasetForFile(file.name) });
116
118
  }
117
- return stagedFiles;
119
+ const absentModels = KNOWN_GTFS_FILES.filter((name) => !foundNames.has(name) && !UNSTORED_GTFS_FILES.includes(name)).map(toModelName);
120
+ return { stagedFiles, absentModels };
118
121
  }
119
122
  finally {
120
123
  if (extractionPath) {
@@ -127,7 +130,7 @@ let ImportGtfsFromStorageTask = class ImportGtfsFromStorageTask extends workers_
127
130
  const { feedCode } = data;
128
131
  // fail loudly rather than silently provisioning a feed from a stray blob
129
132
  await this.feedRepository.getFeedIdByCode(feedCode);
130
- const files = await this.stageFeedFilesFromStorage(feedCode);
133
+ const { stagedFiles: files, absentModels } = await this.stageFeedFilesFromStorage(feedCode);
131
134
  this.logger.info(`Storage import: staged ${files.length} files for feed ${feedCode}`);
132
135
  const dbLastModified = await this.metadataRepository.getLastModified(DatasetEnum_1.DatasetEnum.GTFS, feedCode);
133
136
  const version = dbLastModified.version + 1;
@@ -159,6 +162,16 @@ let ImportGtfsFromStorageTask = class ImportGtfsFromStorageTask extends workers_
159
162
  version,
160
163
  }, undefined, feedCode);
161
164
  await this.gtfsRepository.createTmpTables(feedCode);
165
+ // A known file absent from the zip still replaces the feed's table -- with the empty tmp table
166
+ // createTmpTables just made -- so a re-import never keeps rows from a file the feed dropped.
167
+ // Recorded under the GTFS dataset (incl. run_numbers) so a feed without run numbers never
168
+ // enters the RUN_NUMBERS dataset bookkeeping.
169
+ for (const modelName of absentModels) {
170
+ await this.metadataRepository.save({ dataset: DatasetEnum_1.DatasetEnum.GTFS, key: modelName, type: RopidMetadataModel_1.MetaTypeEnum.STATE, value: RopidMetadataModel_1.MetaStateEnum.SAVED, version }, undefined, feedCode);
171
+ }
172
+ if (absentModels.length > 0) {
173
+ this.logger.info(`Storage import: replacing absent tables with empty ones for feed ${feedCode}: ${absentModels}`);
174
+ }
162
175
  const subscriber = this.gtfsRedisChannel.createSubscriber({
163
176
  channelSuffix: node_os_1.default.hostname(),
164
177
  maxMessageCount: cachedDatasets.length,
@@ -1 +1 @@
1
- {"version":3,"file":"ImportGtfsFromStorageTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/gtfs/workers/timetables/tasks/ImportGtfsFromStorageTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,4EAAyE;AACzE,gFAA6E;AAC7E,wEAAqE;AACrE,oGAAiG;AACjG,8DAA2D;AAC3D,wEAAqE;AACrE,8EAAoG;AACpG,wEAAqE;AAErE,kHAA+G;AAC/G,8EAAqE;AACrE,qFAA8F;AAC9F,iGAA8F;AAC9F,mEAA2E;AAC3E,2EAA6E;AAC7E,6EAA8F;AAC9F,iEAAwE;AACxE,sDAAyB;AACzB,sDAAyB;AACzB,4CAAqD;AACrD,uDAAkH;AAGlH,sFAAmF;AAEnF,yFAAyF;AACzF,MAAM,mBAAmB,GAAG;IACxB,YAAY;IACZ,cAAc;IACd,oBAAoB;IACpB,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,WAAW;CACd,CAAC;AAEF,2FAA2F;AAC3F,yFAAyF;AACzF,kFAAkF;AAClF,8FAA8F;AAC9F,6FAA6F;AAC7F,+FAA+F;AAC/F,MAAM,mBAAmB,GAAG,CAAC,eAAe,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;AAE1H,MAAM,gBAAgB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,CAAC;AAE1E,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAe,EAAE,CACrD,QAAQ,KAAK,iBAAiB,CAAC,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC;AAEhF,uFAAuF;AACvF,MAAM,cAAc,GAAG,aAAa,CAAC;AAErC,kGAAkG;AAClG,6GAA6G;AAC7G,yGAAyG;AACzG,6GAA6G;AAC7G,2GAA2G;AAC3G,gBAAgB;AAET,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,sBAAyC;IAKpF,YAEI,kBAA2D,EAChB,cAA+C,EAC3C,cAAmD,EAElG,yBAAqE,EACtB,gBAAqD,EAC7D,cAAuD,EACpE,MAAgC;QAE1D,KAAK,CAAC,iCAAqB,CAAC,CAAC;QATZ,uBAAkB,GAAlB,kBAAkB,CAAwB;QACC,mBAAc,GAAd,cAAc,CAAgB;QAC1B,mBAAc,GAAd,cAAc,CAAoB;QAEjF,8BAAyB,GAAzB,yBAAyB,CAA2B;QACL,qBAAgB,GAAhB,gBAAgB,CAAoB;QAC5C,mBAAc,GAAd,cAAc,CAAwB;QACnD,WAAM,GAAN,MAAM,CAAS;QAb9C,cAAS,GAAG,uBAAuB,CAAC;QACpC,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QACxC,WAAM,GAAG,yDAA2B,CAAC;QAsGrD;;;;WAIG;QACK,8BAAyB,GAAG,KAAK,EACrC,QAAgB,EACwD,EAAE;YAC1E,MAAM,OAAO,GAAG,GAAG,cAAc,IAAI,QAAQ,MAAM,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,MAAM,IAAI,6BAAY,CAAC,SAAS,OAAO,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC5G,CAAC;YAED,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAExC,MAAM,UAAU,GAAG,IAAI,+BAAc,CAAC,iBAAE,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,IAAI,cAAkC,CAAC;YACvC,MAAM,WAAW,GAAoE,EAAE,CAAC;YAExF,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtG,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;gBAEzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpE,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,6BAAY,CAClB,aAAa,OAAO,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC/E,IAAI,CAAC,WAAW,CAAC,IAAI,CACxB,CAAC;gBACN,CAAC;gBAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAChC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;wBAChC,SAAS;oBACb,CAAC;oBACD,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC1F,mFAAmF;oBACnF,kDAAkD;oBAClD,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9G,CAAC;gBAED,OAAO,WAAW,CAAC;YACvB,CAAC;oBAAS,CAAC;gBACP,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,iBAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACL,CAAC;QACL,CAAC,CAAC;IA9IF,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAiC;QACrD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE1B,yEAAyE;QACzE,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,MAAM,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAEtF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,yBAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjG,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;QAE3C,MAAM,cAAc,GAAqB,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAA,iCAAmB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,iCAAY,CAAC,KAAK;gBACxB,KAAK,EAAE,kCAAa,CAAC,UAAU;gBAC/B,OAAO;aACV,CAAC,CAAC,CAAC;YACJ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACvE,CAAC;YAED,cAAc,CAAC,IAAI,CAAC;gBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ;aACX,CAAC,CAAC;QACP,CAAC;QAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC9B;YACI,OAAO,EAAE,yBAAW,CAAC,IAAI;YACzB,GAAG,EAAE,2CAAsB,CAAC,aAAa;YACzC,IAAI,EAAE,iCAAY,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC/B,OAAO;SACV,EACD,SAAS,EACT,QAAQ,CACX,CAAC;QAEF,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;YACtD,aAAa,EAAE,iBAAE,CAAC,QAAQ,EAAE;YAC5B,eAAe,EAAE,cAAc,CAAC,MAAM;SACzC,CAAC,CAAC;QACH,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;QAE7B,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YACzC,iCAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE;gBACxF,OAAO,EAAE,EAAE,CAAC,oCAAsB,CAAC,EAAE,iBAAE,CAAC,QAAQ,EAAE,EAAE;aACvD,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC;YACD,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,OAAO,KAAK,YAAY,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;gBAE7G,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;oBACpE,MAAM,IAAI,6BAAY,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3D,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,YAAY,qCAAoB,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC;YACd,CAAC;YACD,MAAM,IAAI,6BAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;gBAAS,CAAC;YACP,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAmB,CAAC;YAC9G,MAAM,aAAa,GAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC7D,iCAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,gCAAgC,EAAE,aAAa,CAAC,CAAC;QAC1G,CAAC;IACL,CAAC;CAyDJ,CAAA;AAhKY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,qBAAU,GAAE;IAOJ,WAAA,IAAA,iBAAM,EAAC,uCAAkB,CAAC,sBAAsB,CAAC,CAAA;IAEjD,WAAA,IAAA,iBAAM,EAAC,uCAAkB,CAAC,cAAc,CAAC,CAAA;IACzC,WAAA,IAAA,iBAAM,EAAC,uCAAkB,CAAC,kBAAkB,CAAC,CAAA;IAC7C,WAAA,IAAA,iBAAM,EAAC,uCAAkB,CAAC,yBAAyB,CAAC,CAAA;IAEpD,WAAA,IAAA,iBAAM,EAAC,uCAAkB,CAAC,kBAAkB,CAAC,CAAA;IAC7C,WAAA,IAAA,iBAAM,EAAC,oBAAc,CAAC,cAAc,CAAC,CAAA;IACrC,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;qCAPY,+CAAsB;QACiB,+BAAc;QACV,uCAAkB;QAEtD,qDAAyB;QACa,2BAAkB;QAC5B,+CAAsB;GAbzF,yBAAyB,CAgKrC"}
1
+ {"version":3,"file":"ImportGtfsFromStorageTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/gtfs/workers/timetables/tasks/ImportGtfsFromStorageTask.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * Public view of a gtfs_feeds row. `bbox` is the extent of the feed's stops as
3
- * [minLon, minLat, maxLon, maxLat], null when the feed has no imported stops yet.
3
+ * [minLon, minLat, maxLon, maxLat], null when the feed has no imported stops yet. `color` is the
4
+ * feed's #rrggbb display colour for the map, null when not set.
4
5
  */
5
6
  export interface IGtfsFeedOutput {
6
7
  code: string;
7
8
  name: string;
8
9
  timezone: string | null;
10
+ color: string | null;
9
11
  bbox: [number, number, number, number] | null;
10
12
  }
11
13
  /**
@@ -73,7 +73,7 @@ class GtfsFeedRepository {
73
73
  this.getAll = async () => {
74
74
  try {
75
75
  const connection = this.connector.getConnection();
76
- const rows = await connection.query(`SELECT f.code, f.name, f.timezone, s.min_lon, s.min_lat, s.max_lon, s.max_lat
76
+ const rows = await connection.query(`SELECT f.code, f.name, f.timezone, f.color, s.min_lon, s.min_lat, s.max_lon, s.max_lat
77
77
  FROM "${const_1.PG_SCHEMA}".gtfs_feeds f
78
78
  LEFT JOIN (
79
79
  SELECT feed_id,
@@ -90,6 +90,7 @@ class GtfsFeedRepository {
90
90
  code: row.code,
91
91
  name: row.name,
92
92
  timezone: row.timezone,
93
+ color: row.color,
93
94
  bbox: row.min_lon === null || row.min_lat === null || row.max_lon === null || row.max_lat === null
94
95
  ? null
95
96
  : [row.min_lon, row.min_lat, row.max_lon, row.max_lat],
@@ -1 +1 @@
1
- {"version":3,"file":"GtfsFeedRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/shared/data-access/GtfsFeedRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GtfsFeedRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/shared/data-access/GtfsFeedRepository.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAuC;AAEvC,wEAAqE;AACrE,+DAA+E;AAC/E,6EAAwE;AACxE,oFAA4D;AA0B5D;;;;;;;GAOG;AACH,MAAa,kBAAkB;IAA/B;QACY,cAAS,GAAuB,4BAAsB,CAAC,OAAO,CAAqB,qBAAS,CAAC,iBAAiB,CAAC,CAAC;QAChH,gBAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAGxC,iBAAY,GAAoD,IAAI,CAAC;QAEtE,oBAAe,GAAG,KAAK,EAAE,IAAY,EAAmB,EAAE;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;gBAClD,MAAM,MAAM,GAA+B,MAAM,UAAU,CAAC,KAAK,CAC7D,wBAAwB,iBAAS,kCAAkC,EACnE;oBACI,YAAY,EAAE,EAAE,IAAI,EAAE;oBACtB,IAAI,EAAE,mBAAS,CAAC,UAAU,CAAC,MAAM;iBACpC,CACJ,CAAC;gBAEF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC5B,sFAAsF;oBACtF,MAAM,IAAI,6BAAY,CAAC,qCAAqC,IAAI,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAChH,CAAC;gBAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC9C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,GAAG,YAAY,6BAAY,EAAE,CAAC;oBAC9B,MAAM,GAAG,CAAC;gBACd,CAAC;gBACD,MAAM,IAAI,6BAAY,CAAC,uCAAuC,IAAI,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvG,CAAC;QACL,CAAC,CAAC;QAEF,8GAA8G;QACvG,kBAAa,GAAG,KAAK,IAAuB,EAAE;YACjD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YACrC,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,IAAI,GAA+B,MAAM,IAAI,CAAC,SAAS;qBACxD,aAAa,EAAE;qBACf,KAAK,CAAC,wBAAwB,iBAAS,gCAAgC,EAAE;oBACtE,IAAI,EAAE,mBAAS,CAAC,UAAU,CAAC,MAAM;iBACpC,CAAC,CAAC;gBACP,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC/C,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;gBAClG,OAAO,OAAO,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,IAAI,6BAAY,CAAC,+BAA+B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxF,CAAC;QACL,CAAC,CAAC;QAEF;;;WAGG;QACI,WAAM,GAAG,KAAK,IAAgC,EAAE;YACnD,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAmB,MAAM,UAAU,CAAC,KAAK,CAC/C;wBACQ,iBAAS;;;;;4BAKL,iBAAS;;;;;;oCAMD,EACpB,EAAE,IAAI,EAAE,mBAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CACxC,CAAC;gBAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,IAAI,EACA,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;wBACxF,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;iBACjE,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,IAAI,6BAAY,CAAC,2BAA2B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACpF,CAAC;QACL,CAAC,CAAC;IACN,CAAC;;AAhGD,gDAgGC;AA7FG,oFAAoF;AAC5D,wCAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,AAAhB,CAAiB"}
@@ -3,6 +3,7 @@ export interface IGtfsFeedDto {
3
3
  code: string;
4
4
  name: string;
5
5
  timezone?: string;
6
+ color?: string | null;
6
7
  created_at?: Date;
7
8
  updated_at?: Date;
8
9
  }
@@ -5,6 +5,7 @@ export declare class GtfsFeedDto extends Model<InferAttributes<GtfsFeedDto>, Inf
5
5
  code: string;
6
6
  name: string;
7
7
  timezone: CreationOptional<string>;
8
+ color: CreationOptional<string | null>;
8
9
  created_at: CreationOptional<Date>;
9
10
  updated_at: CreationOptional<Date>;
10
11
  static attributeModel: ModelAttributes<GtfsFeedDto>;
@@ -26,6 +27,10 @@ export declare class GtfsFeedDto extends Model<InferAttributes<GtfsFeedDto>, Inf
26
27
  type: string;
27
28
  nullable: boolean;
28
29
  };
30
+ color: {
31
+ type: string;
32
+ nullable: boolean;
33
+ };
29
34
  created_at: {
30
35
  type: string;
31
36
  nullable: boolean;
@@ -14,6 +14,7 @@ GtfsFeedDto.attributeModel = {
14
14
  code: { type: sequelize_1.DataTypes.STRING(50), unique: true },
15
15
  name: sequelize_1.DataTypes.STRING,
16
16
  timezone: sequelize_1.DataTypes.STRING(100),
17
+ color: sequelize_1.DataTypes.STRING(7),
17
18
  };
18
19
  GtfsFeedDto.jsonSchema = {
19
20
  type: "array",
@@ -24,6 +25,7 @@ GtfsFeedDto.jsonSchema = {
24
25
  code: { type: "string" },
25
26
  name: { type: "string" },
26
27
  timezone: { type: "string", nullable: true },
28
+ color: { type: "string", nullable: true },
27
29
  created_at: { type: "object", nullable: true },
28
30
  updated_at: { type: "object", nullable: true },
29
31
  },
@@ -1 +1 @@
1
- {"version":3,"file":"GtfsFeedDto.js","sourceRoot":"","sources":["../../../../src/schema-definitions/gtfs/models/GtfsFeedDto.ts"],"names":[],"mappings":";;;AAAA,mEAO6C;AAG7C,MAAa,WACT,SAAQ,iBAAyE;;AADrF,kCAqCC;AA1BiB,0BAAc,GAAiC;IACzD,OAAO,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACtB;IACD,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,qBAAS,CAAC,MAAM;IACtB,QAAQ,EAAE,qBAAS,CAAC,MAAM,CAAC,GAAG,CAAC;CAClC,CAAC;AAEY,sBAAU,GAAG;IACvB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC5C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;SACjD;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;KACxC;CACJ,CAAC"}
1
+ {"version":3,"file":"GtfsFeedDto.js","sourceRoot":"","sources":["../../../../src/schema-definitions/gtfs/models/GtfsFeedDto.ts"],"names":[],"mappings":";;;AAAA,mEAO6C;AAG7C,MAAa,WACT,SAAQ,iBAAyE;;AADrF,kCAwCC;AA5BiB,0BAAc,GAAiC;IACzD,OAAO,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACtB;IACD,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,qBAAS,CAAC,MAAM;IACtB,QAAQ,EAAE,qBAAS,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/B,KAAK,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEY,sBAAU,GAAG;IACvB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC5C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;SACjD;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;KACxC;CACJ,CAAC"}
@@ -20,7 +20,7 @@ DeparturesModel.attributeModel = {
20
20
  departure_time: sequelize_1.DataTypes.STRING(20),
21
21
  departure_datetime: sequelize_1.DataTypes.DATE,
22
22
  stop_id: {
23
- type: sequelize_1.DataTypes.STRING(25),
23
+ type: sequelize_1.DataTypes.STRING(255),
24
24
  allowNull: false,
25
25
  },
26
26
  stop_name: sequelize_1.DataTypes.STRING(100),
@@ -52,9 +52,9 @@ DeparturesModel.attributeModel = {
52
52
  is_regional: sequelize_1.DataTypes.CHAR(1),
53
53
  is_substitute_transport: sequelize_1.DataTypes.CHAR(1),
54
54
  next_stop_sequence: sequelize_1.DataTypes.SMALLINT,
55
- next_stop_id: sequelize_1.DataTypes.STRING(30),
55
+ next_stop_id: sequelize_1.DataTypes.STRING(255),
56
56
  last_stop_sequence: sequelize_1.DataTypes.SMALLINT,
57
- last_stop_id: sequelize_1.DataTypes.STRING(30),
57
+ last_stop_id: sequelize_1.DataTypes.STRING(255),
58
58
  cis_stop_group_id: sequelize_1.DataTypes.INTEGER,
59
59
  trip_headsign_icons: sequelize_1.DataTypes.TEXT,
60
60
  trip_connections: sequelize_1.DataTypes.JSONB,
@@ -1 +1 @@
1
- {"version":3,"file":"DeparturesModel.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/gtfs/models/precomputed/DeparturesModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeparturesModel.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/gtfs/models/precomputed/DeparturesModel.ts"],"names":[],"mappings":"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"}
@@ -219,3 +219,20 @@ Left as is:
219
219
  - **Nothing kicks off the self-rescheduling loops on deploy**: send one `{}` to `refreshPublicTripCache` (it
220
220
  fans out to every feed) and one to `refreshPublicStopTimeCache`, or add backup crons. A feed seeded later
221
221
  starts with the next `{}`.
222
+
223
+ ## 14. OG GTFS `?date=` filters ignore calendar_dates
224
+
225
+ **Trigger: the first feed defining services in calendar_dates.txt alone (or relying on its exceptions)
226
+ served through the OG GTFS API.**
227
+
228
+ The import and the precomputed services calendar follow the GTFS spec (`calendar.txt` and/or
229
+ `calendar_dates.txt`, see `ServicesCalendarRepository.populate`), but the OG `?date=` filters do not:
230
+ `GTFSCalendarModel`'s `forDate` scope checks only `gtfs_calendar` (start..end + weekday flag). It backs
231
+ `/services?date=` and, through the `service` association, `/trips?date=` and `/stoptimes?date=`. Effects:
232
+
233
+ - services that exist only in `calendar_dates` are invisible (no `gtfs_calendar` row to match);
234
+ - exception dates are wrong for every feed, PID included (exception_type=2 dates still listed,
235
+ exception_type=1 dates missing).
236
+
237
+ Fix: resolve the date's service ids the spec way (e.g. via the `get_service_ids_from_gtfs_calendar` SQL
238
+ function or `gtfs_precomputed_services_calendar` inside its window) and update the OpenAPI docs.
@@ -1485,6 +1485,13 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1485
1485
 
1486
1486
  ### GTFS v1
1487
1487
 
1488
+ #### _/v1/public-transport/gtfs/feeds_
1489
+
1490
+ - zdrojové tabulky
1491
+ - `gtfs_feeds`, `gtfs_stops` (bbox zastávek feedu)
1492
+ - `color` je barva feedu v mapě (`#rrggbb`, sloupec `gtfs_feeds.color`); u nového feedu stačí vyplnit
1493
+ `name` a `color`, mapa z nich sestaví popisek (`KÓD – název`) i barvu zastávek bez úpravy kódu
1494
+
1488
1495
  #### _/v1/public-transport/gtfs/services_
1489
1496
 
1490
1497
  - zdrojové tabulky
@@ -2455,6 +2455,7 @@ components:
2455
2455
  - code
2456
2456
  - name
2457
2457
  - timezone
2458
+ - color
2458
2459
  - bbox
2459
2460
  properties:
2460
2461
  code:
@@ -2467,6 +2468,12 @@ components:
2467
2468
  type: string
2468
2469
  nullable: true
2469
2470
  example: Europe/Prague
2471
+ color:
2472
+ type: string
2473
+ nullable: true
2474
+ description: Display colour of the feed on the map (#rrggbb). Null when not set.
2475
+ pattern: "^#[0-9A-Fa-f]{6}$"
2476
+ example: "#dc301b"
2470
2477
  bbox:
2471
2478
  type: array
2472
2479
  nullable: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/public-transport",
3
- "version": "0.1.0-dev.2918247179",
3
+ "version": "0.1.0-dev.2922113447",
4
4
  "description": "Golemio PID Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",