gtfs 4.11.0 → 4.11.2

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 (67) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +12 -19
  3. package/lib/export.js +42 -32
  4. package/lib/geojson-utils.js +9 -0
  5. package/lib/gtfs/locations.js +32 -0
  6. package/lib/gtfs.js +4 -0
  7. package/lib/import.js +55 -27
  8. package/models/gtfs/agency.js +9 -8
  9. package/models/gtfs/areas.js +3 -2
  10. package/models/gtfs/attributions.js +9 -8
  11. package/models/gtfs/booking-rules.js +11 -10
  12. package/models/gtfs/calendar-dates.js +3 -2
  13. package/models/gtfs/calendar.js +2 -1
  14. package/models/gtfs/fare-attributes.js +4 -3
  15. package/models/gtfs/fare-leg-rules.js +8 -7
  16. package/models/gtfs/fare-media.js +3 -2
  17. package/models/gtfs/fare-products.js +5 -4
  18. package/models/gtfs/fare-rules.js +6 -5
  19. package/models/gtfs/fare-transfer-rules.js +5 -4
  20. package/models/gtfs/feed-info.js +8 -7
  21. package/models/gtfs/frequencies.js +4 -3
  22. package/models/gtfs/levels.js +3 -2
  23. package/models/gtfs/location-group-stops.js +3 -2
  24. package/models/gtfs/location-groups.js +3 -2
  25. package/models/gtfs/locations.js +12 -0
  26. package/models/gtfs/networks.js +3 -2
  27. package/models/gtfs/pathways.js +6 -5
  28. package/models/gtfs/route-networks.js +3 -2
  29. package/models/gtfs/routes.js +10 -9
  30. package/models/gtfs/shapes.js +2 -1
  31. package/models/gtfs/stop-areas.js +3 -2
  32. package/models/gtfs/stop-times.js +11 -10
  33. package/models/gtfs/stops.js +12 -11
  34. package/models/gtfs/timeframes.js +5 -4
  35. package/models/gtfs/transfers.js +7 -6
  36. package/models/gtfs/translations.js +8 -7
  37. package/models/gtfs/trips.js +8 -7
  38. package/models/gtfs-plus/calendar-attributes.js +3 -2
  39. package/models/gtfs-plus/directions.js +3 -2
  40. package/models/gtfs-plus/route-attributes.js +2 -1
  41. package/models/gtfs-plus/stop-attributes.js +5 -4
  42. package/models/gtfs-realtime/service-alert-targets.js +3 -3
  43. package/models/gtfs-realtime/service-alerts.js +5 -5
  44. package/models/gtfs-realtime/stop-time-updates.js +7 -7
  45. package/models/gtfs-realtime/trip-updates.js +8 -8
  46. package/models/gtfs-realtime/vehicle-positions.js +12 -12
  47. package/models/gtfs-ride/board-alight.js +5 -4
  48. package/models/gtfs-ride/ride-feed-info.js +3 -2
  49. package/models/gtfs-ride/rider-trip.js +9 -8
  50. package/models/gtfs-ride/ridership.js +8 -7
  51. package/models/gtfs-ride/trip-capacity.js +4 -3
  52. package/models/models.js +2 -0
  53. package/models/non-standard/timetable-notes-references.js +6 -5
  54. package/models/non-standard/timetable-notes.js +4 -3
  55. package/models/non-standard/timetable-pages.js +4 -3
  56. package/models/non-standard/timetable-stop-order.js +3 -2
  57. package/models/non-standard/timetables.js +10 -9
  58. package/models/non-standard/trips-dated-vehicle-journey.js +4 -3
  59. package/models/ods/deadhead-times.js +6 -5
  60. package/models/ods/deadheads.js +9 -8
  61. package/models/ods/ops-locations.js +5 -4
  62. package/models/ods/run-events.js +7 -6
  63. package/models/ods/runs-pieces.js +5 -4
  64. package/package.json +4 -5
  65. package/test/mocha/export-gtfs.js +5 -2
  66. package/test/mocha/get-locations.js +71 -0
  67. package/test/mocha/import-gtfs.js +4 -1
@@ -50,7 +50,10 @@ describe('exportGtfs():', function () {
50
50
 
51
51
  await Promise.all(
52
52
  models.map((model) => {
53
- const filePath = path.join(temporaryDir, `${model.filenameBase}.txt`);
53
+ const filePath = path.join(
54
+ temporaryDir,
55
+ `${model.filenameBase}.${model.filenameExtension}`,
56
+ );
54
57
 
55
58
  // GTFS has optional files
56
59
  if (!existsSync(filePath)) {
@@ -105,7 +108,7 @@ describe('exportGtfs():', function () {
105
108
  process.cwd(),
106
109
  'gtfs-export',
107
110
  generateFolderName(agencies[0].agency_name),
108
- `${model.filenameBase}.txt`,
111
+ `${model.filenameBase}.${model.filenameExtension}`,
109
112
  );
110
113
 
111
114
  // GTFS has optional files
@@ -0,0 +1,71 @@
1
+ /* eslint-env mocha */
2
+
3
+ import should from 'should';
4
+ import path from 'node:path';
5
+ import { writeFile } from 'node:fs/promises';
6
+
7
+ import config from '../test-config.js';
8
+ import { openDb, closeDb, importGtfs, getLocations } from '../../index.js';
9
+ import { unzip, prepDirectory } from '../../lib/file-utils.js';
10
+
11
+ const temporaryDir = path.join(import.meta.dirname, '../fixture/tmp2/');
12
+
13
+ const locationsConfig = {
14
+ agencies: [
15
+ {
16
+ path: temporaryDir,
17
+ },
18
+ ],
19
+ verbose: false,
20
+ sqlitePath: '/tmp/locations',
21
+ };
22
+
23
+ describe('getLocations():', () => {
24
+ before(async () => {
25
+ openDb(locationsConfig);
26
+
27
+ // Add locations.geojson to test GTFS dataset
28
+ const temporaryDir = path.join(import.meta.dirname, '../fixture/tmp2/');
29
+ await prepDirectory(temporaryDir);
30
+ await unzip(config.agencies[0].path, temporaryDir);
31
+
32
+ const filePath = path.join(temporaryDir, 'locations.geojson');
33
+ const fileText = JSON.stringify({
34
+ type: 'FeatureCollection',
35
+ features: [
36
+ {
37
+ id: '1',
38
+ type: 'Feature',
39
+ properties: {
40
+ stop_desc: 'This is a stop for testing',
41
+ stop_name: 'Test Stop 1',
42
+ },
43
+ geometry: {
44
+ type: 'Point',
45
+ coordinates: [
46
+ [
47
+ [-94.7805702, 44.4560958],
48
+ [-94.7805608, 44.4559928],
49
+ [-94.7805218, 44.4559649],
50
+ ],
51
+ ],
52
+ },
53
+ },
54
+ ],
55
+ });
56
+ await writeFile(filePath, fileText);
57
+
58
+ await importGtfs(locationsConfig);
59
+ });
60
+
61
+ after(() => {
62
+ const db = openDb(locationsConfig);
63
+ closeDb(db);
64
+ });
65
+
66
+ it('should return a single location', () => {
67
+ const results = getLocations({});
68
+ should.exists(results);
69
+ results.should.have.length(1);
70
+ });
71
+ });
@@ -119,7 +119,10 @@ describe('importGtfs():', function () {
119
119
 
120
120
  await Promise.all(
121
121
  models.map((model) => {
122
- const filePath = path.join(temporaryDir, `${model.filenameBase}.txt`);
122
+ const filePath = path.join(
123
+ temporaryDir,
124
+ `${model.filenameBase}.${model.filenameExtension}`,
125
+ );
123
126
 
124
127
  // GTFS has optional files
125
128
  if (!existsSync(filePath)) {