gtfs 3.1.3 → 3.2.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 (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 +23 -11
  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,48 +4,48 @@ 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: 'feed_publisher_name',
11
11
  type: 'varchar(255)',
12
- required: true
12
+ required: true,
13
13
  },
14
14
  {
15
15
  name: 'feed_publisher_url',
16
16
  type: 'varchar(2047)',
17
- required: true
17
+ required: true,
18
18
  },
19
19
  {
20
20
  name: 'feed_lang',
21
21
  type: 'varchar(255)',
22
- required: true
22
+ required: true,
23
23
  },
24
24
  {
25
25
  name: 'default_lang',
26
- type: 'varchar(255)'
26
+ type: 'varchar(255)',
27
27
  },
28
28
  {
29
29
  name: 'feed_start_date',
30
- type: 'integer'
30
+ type: 'integer',
31
31
  },
32
32
  {
33
33
  name: 'feed_end_date',
34
- type: 'integer'
34
+ type: 'integer',
35
35
  },
36
36
  {
37
37
  name: 'feed_version',
38
- type: 'varchar(255)'
38
+ type: 'varchar(255)',
39
39
  },
40
40
  {
41
41
  name: 'feed_contact_email',
42
- type: 'varchar(255)'
42
+ type: 'varchar(255)',
43
43
  },
44
44
  {
45
45
  name: 'feed_contact_url',
46
- type: 'varchar(2047)'
47
- }
48
- ]
46
+ type: 'varchar(2047)',
47
+ },
48
+ ],
49
49
  };
50
50
 
51
51
  export default model;
@@ -4,45 +4,45 @@ 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: 'start_time',
17
17
  type: 'varchar(255)',
18
- required: true
18
+ required: true,
19
19
  },
20
20
  {
21
21
  name: 'start_timestamp',
22
- type: 'integer'
22
+ type: 'integer',
23
23
  },
24
24
  {
25
25
  name: 'end_time',
26
26
  type: 'varchar(255)',
27
- required: true
27
+ required: true,
28
28
  },
29
29
  {
30
30
  name: 'end_timestamp',
31
- type: 'integer'
31
+ type: 'integer',
32
32
  },
33
33
  {
34
34
  name: 'headway_secs',
35
35
  type: 'integer',
36
36
  required: true,
37
- min: 0
37
+ min: 0,
38
38
  },
39
39
  {
40
40
  name: 'exact_times',
41
41
  type: 'integer',
42
42
  min: 0,
43
- max: 1
44
- }
45
- ]
43
+ max: 1,
44
+ },
45
+ ],
46
46
  };
47
47
 
48
48
  export default model;
@@ -4,18 +4,18 @@ const model = {
4
4
  {
5
5
  name: 'level_id',
6
6
  type: 'varchar(255)',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'level_index',
11
11
  type: 'real',
12
- required: true
12
+ required: true,
13
13
  },
14
14
  {
15
15
  name: 'level_name',
16
- type: 'varchar(255)'
17
- }
18
- ]
16
+ type: 'varchar(255)',
17
+ },
18
+ ],
19
19
  };
20
20
 
21
21
  export default model;
@@ -4,63 +4,63 @@ const model = {
4
4
  {
5
5
  name: 'pathway_id',
6
6
  type: 'varchar(255)',
7
- primary: true
7
+ primary: true,
8
8
  },
9
9
  {
10
10
  name: 'from_stop_id',
11
11
  type: 'varchar(255)',
12
- required: true
12
+ required: true,
13
13
  },
14
14
  {
15
15
  name: 'to_stop_id',
16
16
  type: 'varchar(255)',
17
- required: true
17
+ required: true,
18
18
  },
19
19
  {
20
20
  name: 'pathway_mode',
21
21
  type: 'integer',
22
22
  required: true,
23
23
  min: 1,
24
- max: 7
24
+ max: 7,
25
25
  },
26
26
  {
27
27
  name: 'is_bidirectional',
28
28
  type: 'integer',
29
29
  required: true,
30
30
  min: 0,
31
- max: 1
31
+ max: 1,
32
32
  },
33
33
  {
34
34
  name: 'length',
35
- type: 'real'
35
+ type: 'real',
36
36
  },
37
37
  {
38
38
  name: 'traversal_time',
39
39
  type: 'integer',
40
- min: 0
40
+ min: 0,
41
41
  },
42
42
  {
43
43
  name: 'stair_count',
44
- type: 'integer'
44
+ type: 'integer',
45
45
  },
46
46
  {
47
47
  name: 'max_slope',
48
- type: 'real'
48
+ type: 'real',
49
49
  },
50
50
  {
51
51
  name: 'min_width',
52
52
  type: 'real',
53
- min: 0
53
+ min: 0,
54
54
  },
55
55
  {
56
56
  name: 'signposted_as',
57
- type: 'varchar(255)'
57
+ type: 'varchar(255)',
58
58
  },
59
59
  {
60
60
  name: 'reversed_signposted_as',
61
- type: 'varchar(255)'
62
- }
63
- ]
61
+ type: 'varchar(255)',
62
+ },
63
+ ],
64
64
  };
65
65
 
66
66
  export default model;
@@ -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;