gtfs 3.1.2 → 3.2.1

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 (111) hide show
  1. package/.eslintrc.json +14 -19
  2. package/.husky/pre-commit +4 -0
  3. package/@types/index.d.ts +269 -0
  4. package/@types/tests.ts +26 -0
  5. package/@types/tsconfig.json +17 -0
  6. package/CHANGELOG.md +181 -0
  7. package/README.md +168 -149
  8. package/bin/gtfs-export.js +4 -5
  9. package/bin/gtfs-import.js +6 -7
  10. package/config-sample-full.json +2 -7
  11. package/docs/images/node-gtfs-logo.svg +18 -0
  12. package/lib/db.js +64 -13
  13. package/lib/export.js +27 -13
  14. package/lib/file-utils.js +26 -9
  15. package/lib/geojson-utils.js +51 -38
  16. package/lib/gtfs/agencies.js +15 -4
  17. package/lib/gtfs/attributions.js +15 -4
  18. package/lib/gtfs/calendar-dates.js +15 -4
  19. package/lib/gtfs/calendars.js +15 -4
  20. package/lib/gtfs/fare-attributes.js +15 -4
  21. package/lib/gtfs/fare-rules.js +15 -4
  22. package/lib/gtfs/feed-info.js +15 -4
  23. package/lib/gtfs/frequencies.js +15 -4
  24. package/lib/gtfs/levels.js +15 -4
  25. package/lib/gtfs/pathways.js +15 -4
  26. package/lib/gtfs/routes.js +22 -6
  27. package/lib/gtfs/shapes.js +59 -23
  28. package/lib/gtfs/stop-times.js +15 -4
  29. package/lib/gtfs/stops.js +57 -23
  30. package/lib/gtfs/transfers.js +15 -4
  31. package/lib/gtfs/translations.js +15 -4
  32. package/lib/gtfs/trips.js +15 -4
  33. package/lib/gtfs-ride/board-alights.js +15 -4
  34. package/lib/gtfs-ride/ride-feed-infos.js +15 -4
  35. package/lib/gtfs-ride/rider-trips.js +15 -4
  36. package/lib/gtfs-ride/riderships.js +15 -4
  37. package/lib/gtfs-ride/trip-capacities.js +15 -4
  38. package/lib/import.js +201 -126
  39. package/lib/log-utils.js +8 -4
  40. package/lib/non-standard/directions.js +15 -4
  41. package/lib/non-standard/stop-attributes.js +15 -4
  42. package/lib/non-standard/timetable-notes-references.js +15 -4
  43. package/lib/non-standard/timetable-notes.js +15 -4
  44. package/lib/non-standard/timetable-pages.js +15 -4
  45. package/lib/non-standard/timetable-stop-order.js +15 -4
  46. package/lib/non-standard/timetables.js +15 -4
  47. package/lib/utils.js +26 -12
  48. package/models/gtfs/agency.js +11 -11
  49. package/models/gtfs/attributions.js +14 -14
  50. package/models/gtfs/calendar-dates.js +7 -7
  51. package/models/gtfs/calendar.js +12 -12
  52. package/models/gtfs/fare-attributes.js +9 -9
  53. package/models/gtfs/fare-rules.js +8 -8
  54. package/models/gtfs/feed-info.js +12 -12
  55. package/models/gtfs/frequencies.js +10 -10
  56. package/models/gtfs/levels.js +5 -5
  57. package/models/gtfs/pathways.js +14 -14
  58. package/models/gtfs/routes.js +14 -14
  59. package/models/gtfs/shapes.js +8 -8
  60. package/models/gtfs/stop-times.js +17 -17
  61. package/models/gtfs/stops.js +17 -17
  62. package/models/gtfs/transfers.js +7 -7
  63. package/models/gtfs/translations.js +10 -10
  64. package/models/gtfs/trips.js +12 -12
  65. package/models/gtfs-ride/board-alight.js +24 -24
  66. package/models/gtfs-ride/ride-feed-info.js +8 -8
  67. package/models/gtfs-ride/rider-trip.js +21 -21
  68. package/models/gtfs-ride/ridership.js +23 -23
  69. package/models/gtfs-ride/trip-capacity.js +10 -10
  70. package/models/models.js +1 -1
  71. package/models/non-standard/directions.js +6 -6
  72. package/models/non-standard/stop-attributes.js +5 -5
  73. package/models/non-standard/timetable-notes-references.js +9 -9
  74. package/models/non-standard/timetable-notes.js +5 -5
  75. package/models/non-standard/timetable-pages.js +5 -5
  76. package/models/non-standard/timetable-stop-order.js +6 -6
  77. package/models/non-standard/timetables.js +27 -27
  78. package/package.json +34 -12
  79. package/test/mocha/export-gtfs.js +74 -44
  80. package/test/mocha/get-agencies.js +20 -14
  81. package/test/mocha/get-attributions.js +10 -4
  82. package/test/mocha/get-board-alights.js +10 -4
  83. package/test/mocha/get-calendar-dates.js +31 -24
  84. package/test/mocha/get-calendars.js +17 -11
  85. package/test/mocha/get-db.js +71 -5
  86. package/test/mocha/get-directions.js +10 -4
  87. package/test/mocha/get-fare-attributes.js +12 -6
  88. package/test/mocha/get-fare-rules.js +17 -13
  89. package/test/mocha/get-feed-info.js +10 -4
  90. package/test/mocha/get-frequencies.js +10 -4
  91. package/test/mocha/get-levels.js +4 -4
  92. package/test/mocha/get-pathways.js +10 -4
  93. package/test/mocha/get-ride-feed-infos.js +9 -3
  94. package/test/mocha/get-rider-trips.js +10 -4
  95. package/test/mocha/get-riderships.js +10 -4
  96. package/test/mocha/get-routes.js +12 -16
  97. package/test/mocha/get-shapes-as-geojson.js +12 -6
  98. package/test/mocha/get-shapes.js +31 -39
  99. package/test/mocha/get-stop-attributes.js +10 -4
  100. package/test/mocha/get-stops-as-geojson.js +11 -5
  101. package/test/mocha/get-stops.js +62 -51
  102. package/test/mocha/get-stoptimes.js +18 -10
  103. package/test/mocha/get-timetable-pages.js +10 -4
  104. package/test/mocha/get-timetable-stop-orders.js +10 -4
  105. package/test/mocha/get-timetables.js +10 -4
  106. package/test/mocha/get-transfers.js +10 -4
  107. package/test/mocha/get-translations.js +10 -4
  108. package/test/mocha/get-trip-capacities.js +10 -4
  109. package/test/mocha/get-trips.js +6 -6
  110. package/test/mocha/import-gtfs.js +63 -46
  111. package/test/test-config.js +9 -4
@@ -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;
@@ -6,102 +6,102 @@ const model = {
6
6
  {
7
7
  name: 'rider_id',
8
8
  type: 'varchar(255)',
9
- primary: true
9
+ primary: true,
10
10
  },
11
11
  {
12
12
  name: 'agency_id',
13
13
  type: 'varchar(255)',
14
- index: true
14
+ index: true,
15
15
  },
16
16
  {
17
17
  name: 'trip_id',
18
18
  type: 'varchar(255)',
19
- index: true
19
+ index: true,
20
20
  },
21
21
  {
22
22
  name: 'boarding_stop_id',
23
23
  type: 'varchar(255)',
24
- index: true
24
+ index: true,
25
25
  },
26
26
  {
27
27
  name: 'boarding_stop_sequence',
28
28
  type: 'integer',
29
29
  min: 0,
30
- index: true
30
+ index: true,
31
31
  },
32
32
  {
33
33
  name: 'alighting_stop_id',
34
34
  type: 'varchar(255)',
35
- index: true
35
+ index: true,
36
36
  },
37
37
  {
38
38
  name: 'alighting_stop_sequence',
39
39
  type: 'integer',
40
40
  min: 0,
41
- index: true
41
+ index: true,
42
42
  },
43
43
  {
44
44
  name: 'service_date',
45
45
  type: 'integer',
46
- index: true
46
+ index: true,
47
47
  },
48
48
  {
49
49
  name: 'boarding_time',
50
- type: 'varchar(255)'
50
+ type: 'varchar(255)',
51
51
  },
52
52
  {
53
53
  name: 'boarding_timestamp',
54
54
  type: 'integer',
55
- index: true
55
+ index: true,
56
56
  },
57
57
  {
58
58
  name: 'alighting_time',
59
- type: 'varchar(255)'
59
+ type: 'varchar(255)',
60
60
  },
61
61
  {
62
62
  name: 'alighting_timestamp',
63
63
  type: 'integer',
64
- index: true
64
+ index: true,
65
65
  },
66
66
  {
67
67
  name: 'rider_type',
68
68
  type: 'integer',
69
69
  min: 0,
70
- max: 13
70
+ max: 13,
71
71
  },
72
72
  {
73
73
  name: 'rider_type_description',
74
- type: 'varchar(255)'
74
+ type: 'varchar(255)',
75
75
  },
76
76
  {
77
77
  name: 'fare_paid',
78
- type: 'real'
78
+ type: 'real',
79
79
  },
80
80
  {
81
81
  name: 'transaction_type',
82
82
  type: 'integer',
83
83
  min: 0,
84
- max: 8
84
+ max: 8,
85
85
  },
86
86
  {
87
87
  name: 'fare_media',
88
88
  type: 'integer',
89
89
  min: 0,
90
- max: 9
90
+ max: 9,
91
91
  },
92
92
  {
93
93
  name: 'accompanying_device',
94
94
  type: 'integer',
95
95
  min: 0,
96
- max: 6
96
+ max: 6,
97
97
  },
98
98
  {
99
99
  name: 'transfer_status',
100
100
  type: 'integer',
101
101
  min: 0,
102
- max: 1
103
- }
104
- ]
102
+ max: 1,
103
+ },
104
+ ],
105
105
  };
106
106
 
107
107
  export default model;
@@ -7,115 +7,115 @@ const model = {
7
7
  name: 'total_boardings',
8
8
  type: 'integer',
9
9
  min: 0,
10
- required: true
10
+ required: true,
11
11
  },
12
12
  {
13
13
  name: 'total_alightings',
14
14
  type: 'integer',
15
15
  min: 0,
16
- required: true
16
+ required: true,
17
17
  },
18
18
  {
19
19
  name: 'ridership_start_date',
20
20
  type: 'integer',
21
- index: true
21
+ index: true,
22
22
  },
23
23
  {
24
24
  name: 'ridership_end_date',
25
25
  type: 'integer',
26
- index: true
26
+ index: true,
27
27
  },
28
28
  {
29
29
  name: 'ridership_start_time',
30
- type: 'varchar(255)'
30
+ type: 'varchar(255)',
31
31
  },
32
32
  {
33
33
  name: 'ridership_start_timestamp',
34
34
  type: 'integer',
35
- index: true
35
+ index: true,
36
36
  },
37
37
  {
38
38
  name: 'ridership_end_time',
39
- type: 'varchar(255)'
39
+ type: 'varchar(255)',
40
40
  },
41
41
  {
42
42
  name: 'ridership_end_timestamp',
43
43
  type: 'integer',
44
- index: true
44
+ index: true,
45
45
  },
46
46
  {
47
47
  name: 'service_id',
48
48
  type: 'varchar(255)',
49
- index: true
49
+ index: true,
50
50
  },
51
51
  {
52
52
  name: 'monday',
53
53
  type: 'integer',
54
54
  min: 0,
55
- max: 1
55
+ max: 1,
56
56
  },
57
57
  {
58
58
  name: 'tuesday',
59
59
  type: 'integer',
60
60
  min: 0,
61
- max: 1
61
+ max: 1,
62
62
  },
63
63
  {
64
64
  name: 'wednesday',
65
65
  type: 'integer',
66
66
  min: 0,
67
- max: 1
67
+ max: 1,
68
68
  },
69
69
  {
70
70
  name: 'thursday',
71
71
  type: 'integer',
72
72
  min: 0,
73
- max: 1
73
+ max: 1,
74
74
  },
75
75
  {
76
76
  name: 'friday',
77
77
  type: 'integer',
78
78
  min: 0,
79
- max: 1
79
+ max: 1,
80
80
  },
81
81
  {
82
82
  name: 'saturday',
83
83
  type: 'integer',
84
84
  min: 0,
85
- max: 1
85
+ max: 1,
86
86
  },
87
87
  {
88
88
  name: 'sunday',
89
89
  type: 'integer',
90
90
  min: 0,
91
- max: 1
91
+ max: 1,
92
92
  },
93
93
  {
94
94
  name: 'agency_id',
95
95
  type: 'varchar(255)',
96
- index: true
96
+ index: true,
97
97
  },
98
98
  {
99
99
  name: 'route_id',
100
100
  type: 'varchar(255)',
101
- index: true
101
+ index: true,
102
102
  },
103
103
  {
104
104
  name: 'direction_id',
105
105
  type: 'integer',
106
106
  min: 0,
107
107
  max: 1,
108
- index: true
108
+ index: true,
109
109
  },
110
110
  {
111
111
  name: 'trip_id',
112
- type: 'varchar(255)'
112
+ type: 'varchar(255)',
113
113
  },
114
114
  {
115
115
  name: 'stop_id',
116
- type: 'varchar(255)'
117
- }
118
- ]
116
+ type: 'varchar(255)',
117
+ },
118
+ ],
119
119
  };
120
120
 
121
121
  export default model;
@@ -6,43 +6,43 @@ const model = {
6
6
  {
7
7
  name: 'agency_id',
8
8
  type: 'varchar(255)',
9
- index: true
9
+ index: true,
10
10
  },
11
11
  {
12
12
  name: 'trip_id',
13
13
  type: 'varchar(255)',
14
- index: true
14
+ index: true,
15
15
  },
16
16
  {
17
17
  name: 'service_date',
18
18
  type: 'integer',
19
- index: true
19
+ index: true,
20
20
  },
21
21
  {
22
22
  name: 'vehicle_description',
23
- type: 'varchar(255)'
23
+ type: 'varchar(255)',
24
24
  },
25
25
  {
26
26
  name: 'seated_capacity',
27
27
  type: 'integer',
28
- min: 0
28
+ min: 0,
29
29
  },
30
30
  {
31
31
  name: 'standing_capacity',
32
32
  type: 'integer',
33
- min: 0
33
+ min: 0,
34
34
  },
35
35
  {
36
36
  name: 'wheelchair_capacity',
37
37
  type: 'integer',
38
- min: 0
38
+ min: 0,
39
39
  },
40
40
  {
41
41
  name: 'bike_capacity',
42
42
  type: 'integer',
43
- min: 0
44
- }
45
- ]
43
+ min: 0,
44
+ },
45
+ ],
46
46
  };
47
47
 
48
48
  export default model;
package/models/models.js CHANGED
@@ -59,7 +59,7 @@ const models = [
59
59
  rideFeedInfo,
60
60
  riderTrip,
61
61
  ridership,
62
- tripCapacity
62
+ tripCapacity,
63
63
  ];
64
64
 
65
65
  export default models;
@@ -5,27 +5,27 @@ const model = {
5
5
  {
6
6
  name: 'id',
7
7
  type: 'integer',
8
- primary: true
8
+ primary: true,
9
9
  },
10
10
  {
11
11
  name: 'route_id',
12
12
  type: 'varchar(255)',
13
13
  required: true,
14
- index: true
14
+ index: true,
15
15
  },
16
16
  {
17
17
  name: 'direction_id',
18
18
  type: 'integer',
19
19
  min: 0,
20
20
  max: 1,
21
- index: true
21
+ index: true,
22
22
  },
23
23
  {
24
24
  name: 'direction',
25
25
  type: 'varchar(255)',
26
- required: true
27
- }
28
- ]
26
+ required: true,
27
+ },
28
+ ],
29
29
  };
30
30
 
31
31
  export default model;
@@ -5,19 +5,19 @@ const model = {
5
5
  {
6
6
  name: 'id',
7
7
  type: 'integer',
8
- primary: true
8
+ primary: true,
9
9
  },
10
10
  {
11
11
  name: 'stop_id',
12
12
  type: 'varchar(255)',
13
13
  required: true,
14
- index: true
14
+ index: true,
15
15
  },
16
16
  {
17
17
  name: 'stop_city',
18
- type: 'varchar(255)'
19
- }
20
- ]
18
+ type: 'varchar(255)',
19
+ },
20
+ ],
21
21
  };
22
22
 
23
23
  export default model;
@@ -4,41 +4,41 @@ const model = {
4
4
  schema: [
5
5
  {
6
6
  name: 'note_id',
7
- type: 'varchar(255)'
7
+ type: 'varchar(255)',
8
8
  },
9
9
  {
10
10
  name: 'timetable_id',
11
11
  type: 'varchar(255)',
12
- index: true
12
+ index: true,
13
13
  },
14
14
  {
15
15
  name: 'route_id',
16
16
  type: 'varchar(255)',
17
- index: true
17
+ index: true,
18
18
  },
19
19
  {
20
20
  name: 'trip_id',
21
21
  type: 'varchar(255)',
22
- index: true
22
+ index: true,
23
23
  },
24
24
  {
25
25
  name: 'stop_id',
26
26
  type: 'varchar(255)',
27
- index: true
27
+ index: true,
28
28
  },
29
29
  {
30
30
  name: 'stop_sequence',
31
31
  type: 'integer',
32
32
  min: 0,
33
- index: true
33
+ index: true,
34
34
  },
35
35
  {
36
36
  name: 'show_on_stoptime',
37
37
  type: 'integer',
38
38
  min: 0,
39
- max: 1
40
- }
41
- ]
39
+ max: 1,
40
+ },
41
+ ],
42
42
  };
43
43
 
44
44
  export default model;