gtfs 3.1.0 → 3.1.4

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 (107) hide show
  1. package/.eslintrc.json +14 -19
  2. package/.husky/pre-commit +4 -0
  3. package/.prettierrc.js +4 -0
  4. package/CHANGELOG.md +173 -0
  5. package/README.md +115 -126
  6. package/bin/gtfs-export.js +4 -5
  7. package/bin/gtfs-import.js +6 -7
  8. package/config-sample-full.json +2 -7
  9. package/lib/db.js +4 -2
  10. package/lib/export.js +26 -9
  11. package/lib/file-utils.js +26 -9
  12. package/lib/geojson-utils.js +51 -38
  13. package/lib/gtfs/agencies.js +8 -2
  14. package/lib/gtfs/attributions.js +8 -2
  15. package/lib/gtfs/calendar-dates.js +8 -2
  16. package/lib/gtfs/calendars.js +8 -2
  17. package/lib/gtfs/fare-attributes.js +8 -2
  18. package/lib/gtfs/fare-rules.js +8 -2
  19. package/lib/gtfs/feed-info.js +8 -2
  20. package/lib/gtfs/frequencies.js +8 -2
  21. package/lib/gtfs/levels.js +8 -2
  22. package/lib/gtfs/pathways.js +8 -2
  23. package/lib/gtfs/routes.js +15 -4
  24. package/lib/gtfs/shapes.js +49 -18
  25. package/lib/gtfs/stop-times.js +8 -2
  26. package/lib/gtfs/stops.js +45 -16
  27. package/lib/gtfs/transfers.js +8 -2
  28. package/lib/gtfs/translations.js +8 -2
  29. package/lib/gtfs/trips.js +8 -2
  30. package/lib/gtfs-ride/board-alights.js +8 -2
  31. package/lib/gtfs-ride/ride-feed-infos.js +8 -2
  32. package/lib/gtfs-ride/rider-trips.js +8 -2
  33. package/lib/gtfs-ride/riderships.js +8 -2
  34. package/lib/gtfs-ride/trip-capacities.js +8 -2
  35. package/lib/import.js +200 -125
  36. package/lib/log-utils.js +8 -4
  37. package/lib/non-standard/directions.js +8 -2
  38. package/lib/non-standard/stop-attributes.js +8 -2
  39. package/lib/non-standard/timetable-notes-references.js +13 -3
  40. package/lib/non-standard/timetable-notes.js +8 -2
  41. package/lib/non-standard/timetable-pages.js +8 -2
  42. package/lib/non-standard/timetable-stop-order.js +13 -3
  43. package/lib/non-standard/timetables.js +8 -2
  44. package/lib/utils.js +22 -11
  45. package/models/gtfs/agency.js +11 -11
  46. package/models/gtfs/attributions.js +14 -14
  47. package/models/gtfs/calendar-dates.js +7 -7
  48. package/models/gtfs/calendar.js +12 -12
  49. package/models/gtfs/fare-attributes.js +9 -9
  50. package/models/gtfs/fare-rules.js +8 -8
  51. package/models/gtfs/feed-info.js +12 -12
  52. package/models/gtfs/frequencies.js +10 -10
  53. package/models/gtfs/levels.js +5 -5
  54. package/models/gtfs/pathways.js +14 -14
  55. package/models/gtfs/routes.js +14 -14
  56. package/models/gtfs/shapes.js +8 -8
  57. package/models/gtfs/stop-times.js +17 -17
  58. package/models/gtfs/stops.js +17 -17
  59. package/models/gtfs/transfers.js +7 -7
  60. package/models/gtfs/translations.js +10 -10
  61. package/models/gtfs/trips.js +12 -12
  62. package/models/gtfs-ride/board-alight.js +24 -24
  63. package/models/gtfs-ride/ride-feed-info.js +8 -8
  64. package/models/gtfs-ride/rider-trip.js +21 -21
  65. package/models/gtfs-ride/ridership.js +23 -23
  66. package/models/gtfs-ride/trip-capacity.js +10 -10
  67. package/models/models.js +1 -1
  68. package/models/non-standard/directions.js +6 -6
  69. package/models/non-standard/stop-attributes.js +5 -5
  70. package/models/non-standard/timetable-notes-references.js +9 -9
  71. package/models/non-standard/timetable-notes.js +5 -5
  72. package/models/non-standard/timetable-pages.js +5 -5
  73. package/models/non-standard/timetable-stop-order.js +6 -6
  74. package/models/non-standard/timetables.js +27 -27
  75. package/package.json +29 -11
  76. package/test/mocha/export-gtfs.js +63 -40
  77. package/test/mocha/get-agencies.js +11 -11
  78. package/test/mocha/get-attributions.js +1 -1
  79. package/test/mocha/get-board-alights.js +1 -1
  80. package/test/mocha/get-calendar-dates.js +22 -21
  81. package/test/mocha/get-calendars.js +8 -8
  82. package/test/mocha/get-db.js +9 -2
  83. package/test/mocha/get-directions.js +1 -1
  84. package/test/mocha/get-fare-attributes.js +3 -3
  85. package/test/mocha/get-fare-rules.js +8 -10
  86. package/test/mocha/get-feed-info.js +1 -1
  87. package/test/mocha/get-frequencies.js +1 -1
  88. package/test/mocha/get-levels.js +1 -1
  89. package/test/mocha/get-pathways.js +1 -1
  90. package/test/mocha/get-rider-trips.js +1 -1
  91. package/test/mocha/get-riderships.js +1 -1
  92. package/test/mocha/get-routes.js +9 -13
  93. package/test/mocha/get-shapes-as-geojson.js +3 -3
  94. package/test/mocha/get-shapes.js +28 -36
  95. package/test/mocha/get-stop-attributes.js +1 -1
  96. package/test/mocha/get-stops-as-geojson.js +2 -2
  97. package/test/mocha/get-stops.js +59 -48
  98. package/test/mocha/get-stoptimes.js +9 -7
  99. package/test/mocha/get-timetable-pages.js +1 -1
  100. package/test/mocha/get-timetable-stop-orders.js +1 -1
  101. package/test/mocha/get-timetables.js +1 -1
  102. package/test/mocha/get-transfers.js +1 -1
  103. package/test/mocha/get-translations.js +1 -1
  104. package/test/mocha/get-trip-capacities.js +1 -1
  105. package/test/mocha/get-trips.js +3 -3
  106. package/test/mocha/import-gtfs.js +59 -42
  107. package/test/test-config.js +9 -4
@@ -4,62 +4,62 @@ const model = {
4
4
  {
5
5
  name: 'route_id',
6
6
  type: 'varchar(255)',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'agency_id',
11
- type: 'varchar(255)'
11
+ type: 'varchar(255)',
12
12
  },
13
13
  {
14
14
  name: 'route_short_name',
15
- type: 'varchar(255)'
15
+ type: 'varchar(255)',
16
16
  },
17
17
  {
18
18
  name: 'route_long_name',
19
- type: 'varchar(255)'
19
+ type: 'varchar(255)',
20
20
  },
21
21
  {
22
22
  name: 'route_desc',
23
- type: 'varchar(255)'
23
+ type: 'varchar(255)',
24
24
  },
25
25
  {
26
26
  name: 'route_type',
27
27
  type: 'integer',
28
28
  required: true,
29
- min: 0
29
+ min: 0,
30
30
  // Support extended GTFS route types with no max value
31
31
  // https://developers.google.com/transit/gtfs/reference/extended-route-types
32
32
  },
33
33
  {
34
34
  name: 'route_url',
35
- type: 'varchar(2047)'
35
+ type: 'varchar(2047)',
36
36
  },
37
37
  {
38
38
  name: 'route_color',
39
- type: 'varchar(255)'
39
+ type: 'varchar(255)',
40
40
  },
41
41
  {
42
42
  name: 'route_text_color',
43
- type: 'varchar(255)'
43
+ type: 'varchar(255)',
44
44
  },
45
45
  {
46
46
  name: 'route_sort_order',
47
47
  type: 'integer',
48
- min: 0
48
+ min: 0,
49
49
  },
50
50
  {
51
51
  name: 'continuous_pickup',
52
52
  type: 'integer',
53
53
  min: 0,
54
- max: 3
54
+ max: 3,
55
55
  },
56
56
  {
57
57
  name: 'continuous_drop_off',
58
58
  type: 'integer',
59
59
  min: 0,
60
- max: 3
61
- }
62
- ]
60
+ max: 3,
61
+ },
62
+ ],
63
63
  };
64
64
 
65
65
  export default model;
@@ -4,40 +4,40 @@ const model = {
4
4
  {
5
5
  name: 'id',
6
6
  type: 'integer',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'shape_id',
11
11
  type: 'varchar(255)',
12
12
  required: true,
13
- index: true
13
+ index: true,
14
14
  },
15
15
  {
16
16
  name: 'shape_pt_lat',
17
17
  type: 'real',
18
18
  required: true,
19
19
  min: -90,
20
- max: 90
20
+ max: 90,
21
21
  },
22
22
  {
23
23
  name: 'shape_pt_lon',
24
24
  type: 'real',
25
25
  required: true,
26
26
  min: -180,
27
- max: 180
27
+ max: 180,
28
28
  },
29
29
  {
30
30
  name: 'shape_pt_sequence',
31
31
  type: 'integer',
32
32
  required: true,
33
- min: 0
33
+ min: 0,
34
34
  },
35
35
  {
36
36
  name: 'shape_dist_traveled',
37
37
  type: 'real',
38
- min: 0
39
- }
40
- ]
38
+ min: 0,
39
+ },
40
+ ],
41
41
  };
42
42
 
43
43
  export default model;
@@ -4,84 +4,84 @@ const model = {
4
4
  {
5
5
  name: 'id',
6
6
  type: 'integer',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'trip_id',
11
11
  type: 'varchar(255)',
12
12
  required: true,
13
- index: true
13
+ index: true,
14
14
  },
15
15
  {
16
16
  name: 'arrival_time',
17
- type: 'varchar(255)'
17
+ type: 'varchar(255)',
18
18
  },
19
19
  {
20
20
  name: 'arrival_timestamp',
21
21
  type: 'integer',
22
- index: true
22
+ index: true,
23
23
  },
24
24
  {
25
25
  name: 'departure_time',
26
- type: 'varchar(255)'
26
+ type: 'varchar(255)',
27
27
  },
28
28
  {
29
29
  name: 'departure_timestamp',
30
30
  type: 'integer',
31
- index: true
31
+ index: true,
32
32
  },
33
33
  {
34
34
  name: 'stop_id',
35
35
  type: 'varchar(255)',
36
- required: true
36
+ required: true,
37
37
  },
38
38
  {
39
39
  name: 'stop_sequence',
40
40
  type: 'integer',
41
41
  required: true,
42
42
  min: 0,
43
- index: true
43
+ index: true,
44
44
  },
45
45
  {
46
46
  name: 'stop_headsign',
47
- type: 'varchar(255)'
47
+ type: 'varchar(255)',
48
48
  },
49
49
  {
50
50
  name: 'pickup_type',
51
51
  type: 'integer',
52
52
  min: 0,
53
- max: 3
53
+ max: 3,
54
54
  },
55
55
  {
56
56
  name: 'drop_off_type',
57
57
  type: 'integer',
58
58
  min: 0,
59
- max: 3
59
+ max: 3,
60
60
  },
61
61
  {
62
62
  name: 'continuous_pickup',
63
63
  type: 'integer',
64
64
  min: 0,
65
- max: 3
65
+ max: 3,
66
66
  },
67
67
  {
68
68
  name: 'continuous_drop_off',
69
69
  type: 'integer',
70
70
  min: 0,
71
- max: 3
71
+ max: 3,
72
72
  },
73
73
  {
74
74
  name: 'shape_dist_traveled',
75
75
  type: 'real',
76
- min: 0
76
+ min: 0,
77
77
  },
78
78
  {
79
79
  name: 'timepoint',
80
80
  type: 'integer',
81
81
  min: 0,
82
- max: 1
83
- }
84
- ]
82
+ max: 1,
83
+ },
84
+ ],
85
85
  };
86
86
 
87
87
  export default model;
@@ -4,74 +4,74 @@ const model = {
4
4
  {
5
5
  name: 'stop_id',
6
6
  type: 'varchar(255)',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'stop_code',
11
- type: 'varchar(255)'
11
+ type: 'varchar(255)',
12
12
  },
13
13
  {
14
14
  name: 'stop_name',
15
- type: 'varchar(255)'
15
+ type: 'varchar(255)',
16
16
  },
17
17
  {
18
18
  name: 'tts_stop_name',
19
- type: 'varchar(255)'
19
+ type: 'varchar(255)',
20
20
  },
21
21
  {
22
22
  name: 'stop_desc',
23
- type: 'varchar(255)'
23
+ type: 'varchar(255)',
24
24
  },
25
25
  {
26
26
  name: 'stop_lat',
27
27
  type: 'real',
28
28
  min: -90,
29
- max: 90
29
+ max: 90,
30
30
  },
31
31
  {
32
32
  name: 'stop_lon',
33
33
  type: 'real',
34
34
  min: -180,
35
- max: 180
35
+ max: 180,
36
36
  },
37
37
  {
38
38
  name: 'zone_id',
39
- type: 'varchar(255)'
39
+ type: 'varchar(255)',
40
40
  },
41
41
  {
42
42
  name: 'stop_url',
43
- type: 'varchar(2047)'
43
+ type: 'varchar(2047)',
44
44
  },
45
45
  {
46
46
  name: 'location_type',
47
47
  type: 'integer',
48
48
  min: 0,
49
- max: 4
49
+ max: 4,
50
50
  },
51
51
  {
52
52
  name: 'parent_station',
53
53
  type: 'varchar(255)',
54
- index: true
54
+ index: true,
55
55
  },
56
56
  {
57
57
  name: 'stop_timezone',
58
- type: 'varchar(255)'
58
+ type: 'varchar(255)',
59
59
  },
60
60
  {
61
61
  name: 'wheelchair_boarding',
62
62
  type: 'integer',
63
63
  min: 0,
64
- max: 2
64
+ max: 2,
65
65
  },
66
66
  {
67
67
  name: 'level_id',
68
- type: 'varchar(255)'
68
+ type: 'varchar(255)',
69
69
  },
70
70
  {
71
71
  name: 'platform_code',
72
- type: 'varchar(255)'
73
- }
74
- ]
72
+ type: 'varchar(255)',
73
+ },
74
+ ],
75
75
  };
76
76
 
77
77
  export default model;
@@ -4,32 +4,32 @@ const model = {
4
4
  {
5
5
  name: 'id',
6
6
  type: 'integer',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'from_stop_id',
11
11
  type: 'varchar(255)',
12
12
  required: true,
13
- index: true
13
+ index: true,
14
14
  },
15
15
  {
16
16
  name: 'to_stop_id',
17
17
  type: 'varchar(255)',
18
18
  required: true,
19
- index: true
19
+ index: true,
20
20
  },
21
21
  {
22
22
  name: 'transfer_type',
23
23
  type: 'integer',
24
24
  min: 0,
25
- max: 3
25
+ max: 3,
26
26
  },
27
27
  {
28
28
  name: 'min_transfer_time',
29
29
  type: 'integer',
30
- min: 0
31
- }
32
- ]
30
+ min: 0,
31
+ },
32
+ ],
33
33
  };
34
34
 
35
35
  export default model;
@@ -4,41 +4,41 @@ const model = {
4
4
  {
5
5
  name: 'id',
6
6
  type: 'integer',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'table_name',
11
11
  type: 'varchar(255)',
12
- required: true
12
+ required: true,
13
13
  },
14
14
  {
15
15
  name: 'field_name',
16
16
  type: 'varchar(255)',
17
- required: true
17
+ required: true,
18
18
  },
19
19
  {
20
20
  name: 'language',
21
21
  type: 'varchar(255)',
22
- required: true
22
+ required: true,
23
23
  },
24
24
  {
25
25
  name: 'translation',
26
26
  type: 'varchar(2047)',
27
- required: true
27
+ required: true,
28
28
  },
29
29
  {
30
30
  name: 'record_id',
31
- type: 'varchar(255)'
31
+ type: 'varchar(255)',
32
32
  },
33
33
  {
34
34
  name: 'record_sub_id',
35
- type: 'varchar(255)'
35
+ type: 'varchar(255)',
36
36
  },
37
37
  {
38
38
  name: 'field_value',
39
- type: 'varchar(2047)'
40
- }
41
- ]
39
+ type: 'varchar(2047)',
40
+ },
41
+ ],
42
42
  };
43
43
 
44
44
  export default model;
@@ -4,58 +4,58 @@ const model = {
4
4
  {
5
5
  name: 'trip_id',
6
6
  type: 'varchar(255)',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'route_id',
11
11
  type: 'varchar(255)',
12
12
  required: true,
13
- index: true
13
+ index: true,
14
14
  },
15
15
  {
16
16
  name: 'service_id',
17
17
  type: 'varchar(255)',
18
18
  required: true,
19
- index: true
19
+ index: true,
20
20
  },
21
21
  {
22
22
  name: 'trip_headsign',
23
- type: 'varchar(255)'
23
+ type: 'varchar(255)',
24
24
  },
25
25
  {
26
26
  name: 'trip_short_name',
27
- type: 'varchar(255)'
27
+ type: 'varchar(255)',
28
28
  },
29
29
  {
30
30
  name: 'direction_id',
31
31
  type: 'integer',
32
32
  min: 0,
33
33
  max: 1,
34
- index: true
34
+ index: true,
35
35
  },
36
36
  {
37
37
  name: 'block_id',
38
38
  type: 'varchar(255)',
39
- index: true
39
+ index: true,
40
40
  },
41
41
  {
42
42
  name: 'shape_id',
43
43
  type: 'varchar(255)',
44
- index: true
44
+ index: true,
45
45
  },
46
46
  {
47
47
  name: 'wheelchair_accessible',
48
48
  type: 'integer',
49
49
  min: 0,
50
- max: 2
50
+ max: 2,
51
51
  },
52
52
  {
53
53
  name: 'bikes_allowed',
54
54
  type: 'integer',
55
55
  min: 0,
56
- max: 2
57
- }
58
- ]
56
+ max: 2,
57
+ },
58
+ ],
59
59
  };
60
60
 
61
61
  export default model;
@@ -7,20 +7,20 @@ const model = {
7
7
  name: 'trip_id',
8
8
  type: 'varchar(255)',
9
9
  required: true,
10
- index: true
10
+ index: true,
11
11
  },
12
12
  {
13
13
  name: 'stop_id',
14
14
  type: 'varchar(255)',
15
15
  required: true,
16
- index: true
16
+ index: true,
17
17
  },
18
18
  {
19
19
  name: 'stop_sequence',
20
20
  type: 'integer',
21
21
  required: true,
22
22
  min: 0,
23
- index: true
23
+ index: true,
24
24
  },
25
25
  {
26
26
  name: 'record_use',
@@ -28,102 +28,102 @@ const model = {
28
28
  required: true,
29
29
  min: 0,
30
30
  max: 1,
31
- index: true
31
+ index: true,
32
32
  },
33
33
  {
34
34
  name: 'schedule_relationship',
35
35
  type: 'integer',
36
36
  min: 0,
37
- max: 8
37
+ max: 8,
38
38
  },
39
39
  {
40
40
  name: 'boardings',
41
41
  type: 'integer',
42
- min: 0
42
+ min: 0,
43
43
  },
44
44
  {
45
45
  name: 'alightings',
46
46
  type: 'integer',
47
- min: 0
47
+ min: 0,
48
48
  },
49
49
  {
50
50
  name: 'current_load',
51
51
  type: 'integer',
52
- min: 0
52
+ min: 0,
53
53
  },
54
54
  {
55
55
  name: 'load_count',
56
56
  type: 'integer',
57
- min: 0
57
+ min: 0,
58
58
  },
59
59
  {
60
60
  name: 'load_type',
61
61
  type: 'integer',
62
62
  min: 0,
63
- max: 1
63
+ max: 1,
64
64
  },
65
65
  {
66
66
  name: 'rack_down',
67
67
  type: 'integer',
68
68
  min: 0,
69
- max: 1
69
+ max: 1,
70
70
  },
71
71
  {
72
72
  name: 'bike_boardings',
73
73
  type: 'integer',
74
- min: 0
74
+ min: 0,
75
75
  },
76
76
  {
77
77
  name: 'bike_alightings',
78
78
  type: 'integer',
79
- min: 0
79
+ min: 0,
80
80
  },
81
81
  {
82
82
  name: 'ramp_used',
83
83
  type: 'integer',
84
84
  min: 0,
85
- max: 1
85
+ max: 1,
86
86
  },
87
87
  {
88
88
  name: 'ramp_boardings',
89
89
  type: 'integer',
90
- min: 0
90
+ min: 0,
91
91
  },
92
92
  {
93
93
  name: 'ramp_alightings',
94
94
  type: 'integer',
95
- min: 0
95
+ min: 0,
96
96
  },
97
97
  {
98
98
  name: 'service_date',
99
99
  type: 'integer',
100
- index: true
100
+ index: true,
101
101
  },
102
102
  {
103
103
  name: 'service_arrival_time',
104
- type: 'varchar(255)'
104
+ type: 'varchar(255)',
105
105
  },
106
106
  {
107
107
  name: 'service_arrival_timestamp',
108
108
  type: 'integer',
109
- index: true
109
+ index: true,
110
110
  },
111
111
  {
112
112
  name: 'service_departure_time',
113
- type: 'varchar(255)'
113
+ type: 'varchar(255)',
114
114
  },
115
115
  {
116
116
  name: 'service_departure_timestamp',
117
117
  type: 'integer',
118
- index: true
118
+ index: true,
119
119
  },
120
120
  {
121
121
  name: 'source',
122
122
  type: 'integer',
123
123
  min: 0,
124
- max: 4
125
- }
126
- ]
124
+ max: 4,
125
+ },
126
+ ],
127
127
  };
128
128
 
129
129
  export default model;
@@ -8,32 +8,32 @@ const model = {
8
8
  type: 'integer',
9
9
  min: 0,
10
10
  max: 6,
11
- required: true
11
+ required: true,
12
12
  },
13
13
  {
14
14
  name: 'ride_start_date',
15
15
  type: 'integer',
16
- index: true
16
+ index: true,
17
17
  },
18
18
  {
19
19
  name: 'ride_end_date',
20
20
  type: 'integer',
21
- index: true
21
+ index: true,
22
22
  },
23
23
  {
24
24
  name: 'gtfs_feed_date',
25
25
  type: 'integer',
26
- index: true
26
+ index: true,
27
27
  },
28
28
  {
29
29
  name: 'default_currency_type',
30
- type: 'varchar(255)'
30
+ type: 'varchar(255)',
31
31
  },
32
32
  {
33
33
  name: 'ride_feed_version',
34
- type: 'varchar(255)'
35
- }
36
- ]
34
+ type: 'varchar(255)',
35
+ },
36
+ ],
37
37
  };
38
38
 
39
39
  export default model;