gtfs 4.13.3 → 4.13.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.
- package/README.md +7 -7
- package/dist/bin/gtfs-export.js +135 -341
- package/dist/bin/gtfs-export.js.map +1 -1
- package/dist/bin/gtfs-import.js +182 -407
- package/dist/bin/gtfs-import.js.map +1 -1
- package/dist/bin/gtfsrealtime-update.js +22 -2929
- package/dist/bin/gtfsrealtime-update.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +285 -407
- package/dist/index.js.map +1 -1
- package/dist/models/models.d.ts +2231 -0
- package/dist/models/models.js +3076 -0
- package/dist/models/models.js.map +1 -0
- package/package.json +11 -1
package/dist/bin/gtfs-import.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
|
+
};
|
|
2
7
|
|
|
3
8
|
// src/bin/gtfs-import.ts
|
|
4
9
|
import yargs from "yargs";
|
|
@@ -143,8 +148,68 @@ import mapSeries from "promise-map-series";
|
|
|
143
148
|
import GtfsRealtimeBindings from "gtfs-realtime-bindings";
|
|
144
149
|
import sqlString2 from "sqlstring-sqlite";
|
|
145
150
|
|
|
151
|
+
// src/models/models.ts
|
|
152
|
+
var models_exports = {};
|
|
153
|
+
__export(models_exports, {
|
|
154
|
+
agency: () => agency,
|
|
155
|
+
areas: () => areas,
|
|
156
|
+
attributions: () => attributions,
|
|
157
|
+
boardAlight: () => boardAlight,
|
|
158
|
+
bookingRules: () => bookingRules,
|
|
159
|
+
calendar: () => calendar,
|
|
160
|
+
calendarAttributes: () => calendarAttributes,
|
|
161
|
+
calendarDates: () => calendarDates,
|
|
162
|
+
deadheadTimes: () => deadheadTimes,
|
|
163
|
+
deadheads: () => deadheads,
|
|
164
|
+
directions: () => directions,
|
|
165
|
+
fareAttributes: () => fareAttributes,
|
|
166
|
+
fareLegRules: () => fareLegRules,
|
|
167
|
+
fareMedia: () => fareMedia,
|
|
168
|
+
fareProducts: () => fareProducts,
|
|
169
|
+
fareRules: () => fareRules,
|
|
170
|
+
fareTransferRules: () => fareTransferRules,
|
|
171
|
+
feedInfo: () => feedInfo,
|
|
172
|
+
frequencies: () => frequencies,
|
|
173
|
+
levels: () => levels,
|
|
174
|
+
locationGroupStops: () => locationGroupStops,
|
|
175
|
+
locationGroups: () => locationGroups,
|
|
176
|
+
locations: () => locations,
|
|
177
|
+
networks: () => networks,
|
|
178
|
+
opsLocations: () => opsLocations,
|
|
179
|
+
pathways: () => pathways,
|
|
180
|
+
rideFeedInfo: () => rideFeedInfo,
|
|
181
|
+
riderTrip: () => riderTrip,
|
|
182
|
+
ridership: () => ridership,
|
|
183
|
+
routeAttributes: () => routeAttributes,
|
|
184
|
+
routeNetworks: () => routeNetworks,
|
|
185
|
+
routes: () => routes,
|
|
186
|
+
runEvents: () => runEvents,
|
|
187
|
+
runsPieces: () => runsPieces,
|
|
188
|
+
serviceAlertTargets: () => serviceAlertTargets,
|
|
189
|
+
serviceAlerts: () => serviceAlerts,
|
|
190
|
+
shapes: () => shapes,
|
|
191
|
+
stopAreas: () => stopAreas,
|
|
192
|
+
stopAttributes: () => stopAttributes,
|
|
193
|
+
stopTimeUpdates: () => stopTimeUpdates,
|
|
194
|
+
stopTimes: () => stopTimes,
|
|
195
|
+
stops: () => stops,
|
|
196
|
+
timeframes: () => timeframes,
|
|
197
|
+
timetableNotes: () => timetableNotes,
|
|
198
|
+
timetableNotesReferences: () => timetableNotesReferences,
|
|
199
|
+
timetablePages: () => timetablePages,
|
|
200
|
+
timetableStopOrder: () => timetableStopOrder,
|
|
201
|
+
timetables: () => timetables,
|
|
202
|
+
transfers: () => transfers,
|
|
203
|
+
translations: () => translations,
|
|
204
|
+
tripCapacity: () => tripCapacity,
|
|
205
|
+
tripUpdates: () => tripUpdates,
|
|
206
|
+
trips: () => trips,
|
|
207
|
+
tripsDatedVehicleJourney: () => tripsDatedVehicleJourney,
|
|
208
|
+
vehiclePositions: () => vehiclePositions
|
|
209
|
+
});
|
|
210
|
+
|
|
146
211
|
// src/models/gtfs/agency.ts
|
|
147
|
-
var
|
|
212
|
+
var agency = {
|
|
148
213
|
filenameBase: "agency",
|
|
149
214
|
filenameExtension: "txt",
|
|
150
215
|
schema: [
|
|
@@ -191,10 +256,9 @@ var model = {
|
|
|
191
256
|
}
|
|
192
257
|
]
|
|
193
258
|
};
|
|
194
|
-
var agency_default = model;
|
|
195
259
|
|
|
196
260
|
// src/models/gtfs/areas.ts
|
|
197
|
-
var
|
|
261
|
+
var areas = {
|
|
198
262
|
filenameBase: "areas",
|
|
199
263
|
filenameExtension: "txt",
|
|
200
264
|
schema: [
|
|
@@ -211,10 +275,9 @@ var model2 = {
|
|
|
211
275
|
}
|
|
212
276
|
]
|
|
213
277
|
};
|
|
214
|
-
var areas_default = model2;
|
|
215
278
|
|
|
216
279
|
// src/models/gtfs/attributions.ts
|
|
217
|
-
var
|
|
280
|
+
var attributions = {
|
|
218
281
|
filenameBase: "attributions",
|
|
219
282
|
filenameExtension: "txt",
|
|
220
283
|
schema: [
|
|
@@ -278,10 +341,9 @@ var model3 = {
|
|
|
278
341
|
}
|
|
279
342
|
]
|
|
280
343
|
};
|
|
281
|
-
var attributions_default = model3;
|
|
282
344
|
|
|
283
345
|
// src/models/gtfs/booking-rules.ts
|
|
284
|
-
var
|
|
346
|
+
var bookingRules = {
|
|
285
347
|
filenameBase: "booking_rules",
|
|
286
348
|
filenameExtension: "txt",
|
|
287
349
|
schema: [
|
|
@@ -371,10 +433,9 @@ var model4 = {
|
|
|
371
433
|
}
|
|
372
434
|
]
|
|
373
435
|
};
|
|
374
|
-
var booking_rules_default = model4;
|
|
375
436
|
|
|
376
437
|
// src/models/gtfs/calendar-dates.ts
|
|
377
|
-
var
|
|
438
|
+
var calendarDates = {
|
|
378
439
|
filenameBase: "calendar_dates",
|
|
379
440
|
filenameExtension: "txt",
|
|
380
441
|
schema: [
|
|
@@ -406,10 +467,9 @@ var model5 = {
|
|
|
406
467
|
}
|
|
407
468
|
]
|
|
408
469
|
};
|
|
409
|
-
var calendar_dates_default = model5;
|
|
410
470
|
|
|
411
471
|
// src/models/gtfs/calendar.ts
|
|
412
|
-
var
|
|
472
|
+
var calendar = {
|
|
413
473
|
filenameBase: "calendar",
|
|
414
474
|
filenameExtension: "txt",
|
|
415
475
|
schema: [
|
|
@@ -483,10 +543,9 @@ var model6 = {
|
|
|
483
543
|
}
|
|
484
544
|
]
|
|
485
545
|
};
|
|
486
|
-
var calendar_default = model6;
|
|
487
546
|
|
|
488
547
|
// src/models/gtfs/fare-attributes.ts
|
|
489
|
-
var
|
|
548
|
+
var fareAttributes = {
|
|
490
549
|
filenameBase: "fare_attributes",
|
|
491
550
|
filenameExtension: "txt",
|
|
492
551
|
schema: [
|
|
@@ -532,10 +591,9 @@ var model7 = {
|
|
|
532
591
|
}
|
|
533
592
|
]
|
|
534
593
|
};
|
|
535
|
-
var fare_attributes_default = model7;
|
|
536
594
|
|
|
537
595
|
// src/models/gtfs/fare-leg-rules.ts
|
|
538
|
-
var
|
|
596
|
+
var fareLegRules = {
|
|
539
597
|
filenameBase: "fare_leg_rules",
|
|
540
598
|
filenameExtension: "txt",
|
|
541
599
|
schema: [
|
|
@@ -588,10 +646,9 @@ var model8 = {
|
|
|
588
646
|
}
|
|
589
647
|
]
|
|
590
648
|
};
|
|
591
|
-
var fare_leg_rules_default = model8;
|
|
592
649
|
|
|
593
650
|
// src/models/gtfs/fare-media.ts
|
|
594
|
-
var
|
|
651
|
+
var fareMedia = {
|
|
595
652
|
filenameBase: "fare_media",
|
|
596
653
|
filenameExtension: "txt",
|
|
597
654
|
schema: [
|
|
@@ -615,10 +672,9 @@ var model9 = {
|
|
|
615
672
|
}
|
|
616
673
|
]
|
|
617
674
|
};
|
|
618
|
-
var fare_media_default = model9;
|
|
619
675
|
|
|
620
676
|
// src/models/gtfs/fare-products.ts
|
|
621
|
-
var
|
|
677
|
+
var fareProducts = {
|
|
622
678
|
filenameBase: "fare_products",
|
|
623
679
|
filenameExtension: "txt",
|
|
624
680
|
schema: [
|
|
@@ -651,10 +707,9 @@ var model10 = {
|
|
|
651
707
|
}
|
|
652
708
|
]
|
|
653
709
|
};
|
|
654
|
-
var fare_products_default = model10;
|
|
655
710
|
|
|
656
711
|
// src/models/gtfs/fare-rules.ts
|
|
657
|
-
var
|
|
712
|
+
var fareRules = {
|
|
658
713
|
filenameBase: "fare_rules",
|
|
659
714
|
filenameExtension: "txt",
|
|
660
715
|
schema: [
|
|
@@ -686,10 +741,9 @@ var model11 = {
|
|
|
686
741
|
}
|
|
687
742
|
]
|
|
688
743
|
};
|
|
689
|
-
var fare_rules_default = model11;
|
|
690
744
|
|
|
691
745
|
// src/models/gtfs/fare-transfer-rules.ts
|
|
692
|
-
var
|
|
746
|
+
var fareTransferRules = {
|
|
693
747
|
filenameBase: "fare_transfer_rules",
|
|
694
748
|
filenameExtension: "txt",
|
|
695
749
|
schema: [
|
|
@@ -743,10 +797,9 @@ var model12 = {
|
|
|
743
797
|
}
|
|
744
798
|
]
|
|
745
799
|
};
|
|
746
|
-
var fare_transfer_rules_default = model12;
|
|
747
800
|
|
|
748
801
|
// src/models/gtfs/feed-info.ts
|
|
749
|
-
var
|
|
802
|
+
var feedInfo = {
|
|
750
803
|
filenameBase: "feed_info",
|
|
751
804
|
filenameExtension: "txt",
|
|
752
805
|
schema: [
|
|
@@ -794,10 +847,9 @@ var model13 = {
|
|
|
794
847
|
}
|
|
795
848
|
]
|
|
796
849
|
};
|
|
797
|
-
var feed_info_default = model13;
|
|
798
850
|
|
|
799
851
|
// src/models/gtfs/frequencies.ts
|
|
800
|
-
var
|
|
852
|
+
var frequencies = {
|
|
801
853
|
filenameBase: "frequencies",
|
|
802
854
|
filenameExtension: "txt",
|
|
803
855
|
schema: [
|
|
@@ -841,10 +893,9 @@ var model14 = {
|
|
|
841
893
|
}
|
|
842
894
|
]
|
|
843
895
|
};
|
|
844
|
-
var frequencies_default = model14;
|
|
845
896
|
|
|
846
897
|
// src/models/gtfs/levels.ts
|
|
847
|
-
var
|
|
898
|
+
var levels = {
|
|
848
899
|
filenameBase: "levels",
|
|
849
900
|
filenameExtension: "txt",
|
|
850
901
|
schema: [
|
|
@@ -867,10 +918,9 @@ var model15 = {
|
|
|
867
918
|
}
|
|
868
919
|
]
|
|
869
920
|
};
|
|
870
|
-
var levels_default = model15;
|
|
871
921
|
|
|
872
922
|
// src/models/gtfs/location-groups.ts
|
|
873
|
-
var
|
|
923
|
+
var locationGroups = {
|
|
874
924
|
filenameBase: "location_groups",
|
|
875
925
|
filenameExtension: "txt",
|
|
876
926
|
schema: [
|
|
@@ -887,10 +937,9 @@ var model16 = {
|
|
|
887
937
|
}
|
|
888
938
|
]
|
|
889
939
|
};
|
|
890
|
-
var location_groups_default = model16;
|
|
891
940
|
|
|
892
941
|
// src/models/gtfs/location-group-stops.ts
|
|
893
|
-
var
|
|
942
|
+
var locationGroupStops = {
|
|
894
943
|
filenameBase: "location_group_stops",
|
|
895
944
|
filenameExtension: "txt",
|
|
896
945
|
schema: [
|
|
@@ -910,10 +959,9 @@ var model17 = {
|
|
|
910
959
|
}
|
|
911
960
|
]
|
|
912
961
|
};
|
|
913
|
-
var location_group_stops_default = model17;
|
|
914
962
|
|
|
915
963
|
// src/models/gtfs/locations.ts
|
|
916
|
-
var
|
|
964
|
+
var locations = {
|
|
917
965
|
filenameBase: "locations",
|
|
918
966
|
filenameExtension: "geojson",
|
|
919
967
|
schema: [
|
|
@@ -923,10 +971,9 @@ var model18 = {
|
|
|
923
971
|
}
|
|
924
972
|
]
|
|
925
973
|
};
|
|
926
|
-
var locations_default = model18;
|
|
927
974
|
|
|
928
975
|
// src/models/gtfs/networks.ts
|
|
929
|
-
var
|
|
976
|
+
var networks = {
|
|
930
977
|
filenameBase: "networks",
|
|
931
978
|
filenameExtension: "txt",
|
|
932
979
|
schema: [
|
|
@@ -944,10 +991,9 @@ var model19 = {
|
|
|
944
991
|
}
|
|
945
992
|
]
|
|
946
993
|
};
|
|
947
|
-
var networks_default = model19;
|
|
948
994
|
|
|
949
995
|
// src/models/gtfs/pathways.ts
|
|
950
|
-
var
|
|
996
|
+
var pathways = {
|
|
951
997
|
filenameBase: "pathways",
|
|
952
998
|
filenameExtension: "txt",
|
|
953
999
|
schema: [
|
|
@@ -1019,10 +1065,9 @@ var model20 = {
|
|
|
1019
1065
|
}
|
|
1020
1066
|
]
|
|
1021
1067
|
};
|
|
1022
|
-
var pathways_default = model20;
|
|
1023
1068
|
|
|
1024
1069
|
// src/models/gtfs/route-networks.ts
|
|
1025
|
-
var
|
|
1070
|
+
var routeNetworks = {
|
|
1026
1071
|
filenameBase: "route_networks",
|
|
1027
1072
|
filenameExtension: "txt",
|
|
1028
1073
|
schema: [
|
|
@@ -1041,10 +1086,9 @@ var model21 = {
|
|
|
1041
1086
|
}
|
|
1042
1087
|
]
|
|
1043
1088
|
};
|
|
1044
|
-
var route_networks_default = model21;
|
|
1045
1089
|
|
|
1046
1090
|
// src/models/gtfs/routes.ts
|
|
1047
|
-
var
|
|
1091
|
+
var routes = {
|
|
1048
1092
|
filenameBase: "routes",
|
|
1049
1093
|
filenameExtension: "txt",
|
|
1050
1094
|
schema: [
|
|
@@ -1121,10 +1165,9 @@ var model22 = {
|
|
|
1121
1165
|
}
|
|
1122
1166
|
]
|
|
1123
1167
|
};
|
|
1124
|
-
var routes_default = model22;
|
|
1125
1168
|
|
|
1126
1169
|
// src/models/gtfs/shapes.ts
|
|
1127
|
-
var
|
|
1170
|
+
var shapes = {
|
|
1128
1171
|
filenameBase: "shapes",
|
|
1129
1172
|
filenameExtension: "txt",
|
|
1130
1173
|
schema: [
|
|
@@ -1163,10 +1206,9 @@ var model23 = {
|
|
|
1163
1206
|
}
|
|
1164
1207
|
]
|
|
1165
1208
|
};
|
|
1166
|
-
var shapes_default = model23;
|
|
1167
1209
|
|
|
1168
1210
|
// src/models/gtfs/stop-areas.ts
|
|
1169
|
-
var
|
|
1211
|
+
var stopAreas = {
|
|
1170
1212
|
filenameBase: "stop_areas",
|
|
1171
1213
|
filenameExtension: "txt",
|
|
1172
1214
|
schema: [
|
|
@@ -1184,10 +1226,9 @@ var model24 = {
|
|
|
1184
1226
|
}
|
|
1185
1227
|
]
|
|
1186
1228
|
};
|
|
1187
|
-
var stop_areas_default = model24;
|
|
1188
1229
|
|
|
1189
1230
|
// src/models/gtfs/stop-times.ts
|
|
1190
|
-
var
|
|
1231
|
+
var stopTimes = {
|
|
1191
1232
|
filenameBase: "stop_times",
|
|
1192
1233
|
filenameExtension: "txt",
|
|
1193
1234
|
schema: [
|
|
@@ -1305,10 +1346,9 @@ var model25 = {
|
|
|
1305
1346
|
}
|
|
1306
1347
|
]
|
|
1307
1348
|
};
|
|
1308
|
-
var stop_times_default = model25;
|
|
1309
1349
|
|
|
1310
1350
|
// src/models/gtfs/stops.ts
|
|
1311
|
-
var
|
|
1351
|
+
var stops = {
|
|
1312
1352
|
filenameBase: "stops",
|
|
1313
1353
|
filenameExtension: "txt",
|
|
1314
1354
|
schema: [
|
|
@@ -1391,10 +1431,9 @@ var model26 = {
|
|
|
1391
1431
|
}
|
|
1392
1432
|
]
|
|
1393
1433
|
};
|
|
1394
|
-
var stops_default = model26;
|
|
1395
1434
|
|
|
1396
1435
|
// src/models/gtfs/timeframes.ts
|
|
1397
|
-
var
|
|
1436
|
+
var timeframes = {
|
|
1398
1437
|
filenameBase: "timeframes",
|
|
1399
1438
|
filenameExtension: "txt",
|
|
1400
1439
|
schema: [
|
|
@@ -1421,10 +1460,9 @@ var model27 = {
|
|
|
1421
1460
|
}
|
|
1422
1461
|
]
|
|
1423
1462
|
};
|
|
1424
|
-
var timeframes_default = model27;
|
|
1425
1463
|
|
|
1426
1464
|
// src/models/gtfs/transfers.ts
|
|
1427
|
-
var
|
|
1465
|
+
var transfers = {
|
|
1428
1466
|
filenameBase: "transfers",
|
|
1429
1467
|
filenameExtension: "txt",
|
|
1430
1468
|
schema: [
|
|
@@ -1478,10 +1516,9 @@ var model28 = {
|
|
|
1478
1516
|
}
|
|
1479
1517
|
]
|
|
1480
1518
|
};
|
|
1481
|
-
var transfers_default = model28;
|
|
1482
1519
|
|
|
1483
1520
|
// src/models/gtfs/translations.ts
|
|
1484
|
-
var
|
|
1521
|
+
var translations = {
|
|
1485
1522
|
filenameBase: "translations",
|
|
1486
1523
|
filenameExtension: "txt",
|
|
1487
1524
|
schema: [
|
|
@@ -1527,10 +1564,9 @@ var model29 = {
|
|
|
1527
1564
|
}
|
|
1528
1565
|
]
|
|
1529
1566
|
};
|
|
1530
|
-
var translations_default = model29;
|
|
1531
1567
|
|
|
1532
1568
|
// src/models/gtfs/trips.ts
|
|
1533
|
-
var
|
|
1569
|
+
var trips = {
|
|
1534
1570
|
filenameBase: "trips",
|
|
1535
1571
|
filenameExtension: "txt",
|
|
1536
1572
|
schema: [
|
|
@@ -1598,10 +1634,9 @@ var model30 = {
|
|
|
1598
1634
|
}
|
|
1599
1635
|
]
|
|
1600
1636
|
};
|
|
1601
|
-
var trips_default = model30;
|
|
1602
1637
|
|
|
1603
1638
|
// src/models/non-standard/timetables.ts
|
|
1604
|
-
var
|
|
1639
|
+
var timetables = {
|
|
1605
1640
|
filenameBase: "timetables",
|
|
1606
1641
|
filenameExtension: "txt",
|
|
1607
1642
|
nonstandard: true,
|
|
@@ -1743,10 +1778,9 @@ var model31 = {
|
|
|
1743
1778
|
}
|
|
1744
1779
|
]
|
|
1745
1780
|
};
|
|
1746
|
-
var timetables_default = model31;
|
|
1747
1781
|
|
|
1748
1782
|
// src/models/non-standard/timetable-pages.ts
|
|
1749
|
-
var
|
|
1783
|
+
var timetablePages = {
|
|
1750
1784
|
filenameBase: "timetable_pages",
|
|
1751
1785
|
filenameExtension: "txt",
|
|
1752
1786
|
nonstandard: true,
|
|
@@ -1767,10 +1801,9 @@ var model32 = {
|
|
|
1767
1801
|
}
|
|
1768
1802
|
]
|
|
1769
1803
|
};
|
|
1770
|
-
var timetable_pages_default = model32;
|
|
1771
1804
|
|
|
1772
1805
|
// src/models/non-standard/timetable-stop-order.ts
|
|
1773
|
-
var
|
|
1806
|
+
var timetableStopOrder = {
|
|
1774
1807
|
filenameBase: "timetable_stop_order",
|
|
1775
1808
|
filenameExtension: "txt",
|
|
1776
1809
|
nonstandard: true,
|
|
@@ -1800,10 +1833,9 @@ var model33 = {
|
|
|
1800
1833
|
}
|
|
1801
1834
|
]
|
|
1802
1835
|
};
|
|
1803
|
-
var timetable_stop_order_default = model33;
|
|
1804
1836
|
|
|
1805
1837
|
// src/models/non-standard/timetable-notes.ts
|
|
1806
|
-
var
|
|
1838
|
+
var timetableNotes = {
|
|
1807
1839
|
filenameBase: "timetable_notes",
|
|
1808
1840
|
filenameExtension: "txt",
|
|
1809
1841
|
nonstandard: true,
|
|
@@ -1825,10 +1857,9 @@ var model34 = {
|
|
|
1825
1857
|
}
|
|
1826
1858
|
]
|
|
1827
1859
|
};
|
|
1828
|
-
var timetable_notes_default = model34;
|
|
1829
1860
|
|
|
1830
1861
|
// src/models/non-standard/timetable-notes-references.ts
|
|
1831
|
-
var
|
|
1862
|
+
var timetableNotesReferences = {
|
|
1832
1863
|
filenameBase: "timetable_notes_references",
|
|
1833
1864
|
filenameExtension: "txt",
|
|
1834
1865
|
nonstandard: true,
|
|
@@ -1876,11 +1907,10 @@ var model35 = {
|
|
|
1876
1907
|
}
|
|
1877
1908
|
]
|
|
1878
1909
|
};
|
|
1879
|
-
var timetable_notes_references_default = model35;
|
|
1880
1910
|
|
|
1881
1911
|
// src/models/non-standard/trips-dated-vehicle-journey.ts
|
|
1882
|
-
var
|
|
1883
|
-
filenameBase: "
|
|
1912
|
+
var tripsDatedVehicleJourney = {
|
|
1913
|
+
filenameBase: "trips_dated_vehicle_journey",
|
|
1884
1914
|
filenameExtension: "txt",
|
|
1885
1915
|
nonstandard: true,
|
|
1886
1916
|
schema: [
|
|
@@ -1911,10 +1941,9 @@ var model36 = {
|
|
|
1911
1941
|
}
|
|
1912
1942
|
]
|
|
1913
1943
|
};
|
|
1914
|
-
var trips_dated_vehicle_journey_default = model36;
|
|
1915
1944
|
|
|
1916
1945
|
// src/models/gtfs-plus/calendar-attributes.ts
|
|
1917
|
-
var
|
|
1946
|
+
var calendarAttributes = {
|
|
1918
1947
|
filenameBase: "calendar_attributes",
|
|
1919
1948
|
filenameExtension: "txt",
|
|
1920
1949
|
nonstandard: true,
|
|
@@ -1934,10 +1963,9 @@ var model37 = {
|
|
|
1934
1963
|
}
|
|
1935
1964
|
]
|
|
1936
1965
|
};
|
|
1937
|
-
var calendar_attributes_default = model37;
|
|
1938
1966
|
|
|
1939
1967
|
// src/models/gtfs-plus/directions.ts
|
|
1940
|
-
var
|
|
1968
|
+
var directions = {
|
|
1941
1969
|
filenameBase: "directions",
|
|
1942
1970
|
filenameExtension: "txt",
|
|
1943
1971
|
nonstandard: true,
|
|
@@ -1964,10 +1992,9 @@ var model38 = {
|
|
|
1964
1992
|
}
|
|
1965
1993
|
]
|
|
1966
1994
|
};
|
|
1967
|
-
var directions_default = model38;
|
|
1968
1995
|
|
|
1969
1996
|
// src/models/gtfs-plus/route-attributes.ts
|
|
1970
|
-
var
|
|
1997
|
+
var routeAttributes = {
|
|
1971
1998
|
filenameBase: "route_attributes",
|
|
1972
1999
|
filenameExtension: "txt",
|
|
1973
2000
|
nonstandard: true,
|
|
@@ -1999,10 +2026,9 @@ var model39 = {
|
|
|
1999
2026
|
}
|
|
2000
2027
|
]
|
|
2001
2028
|
};
|
|
2002
|
-
var route_attributes_default = model39;
|
|
2003
2029
|
|
|
2004
2030
|
// src/models/gtfs-plus/stop-attributes.ts
|
|
2005
|
-
var
|
|
2031
|
+
var stopAttributes = {
|
|
2006
2032
|
filenameBase: "stop_attributes",
|
|
2007
2033
|
filenameExtension: "txt",
|
|
2008
2034
|
nonstandard: true,
|
|
@@ -2035,10 +2061,9 @@ var model40 = {
|
|
|
2035
2061
|
}
|
|
2036
2062
|
]
|
|
2037
2063
|
};
|
|
2038
|
-
var stop_attributes_default = model40;
|
|
2039
2064
|
|
|
2040
2065
|
// src/models/gtfs-ride/board-alight.ts
|
|
2041
|
-
var
|
|
2066
|
+
var boardAlight = {
|
|
2042
2067
|
filenameBase: "board_alight",
|
|
2043
2068
|
filenameExtension: "txt",
|
|
2044
2069
|
nonstandard: true,
|
|
@@ -2168,10 +2193,9 @@ var model41 = {
|
|
|
2168
2193
|
}
|
|
2169
2194
|
]
|
|
2170
2195
|
};
|
|
2171
|
-
var board_alight_default = model41;
|
|
2172
2196
|
|
|
2173
2197
|
// src/models/gtfs-ride/rider-trip.ts
|
|
2174
|
-
var
|
|
2198
|
+
var riderTrip = {
|
|
2175
2199
|
filenameBase: "rider_trip",
|
|
2176
2200
|
filenameExtension: "txt",
|
|
2177
2201
|
nonstandard: true,
|
|
@@ -2282,10 +2306,9 @@ var model42 = {
|
|
|
2282
2306
|
}
|
|
2283
2307
|
]
|
|
2284
2308
|
};
|
|
2285
|
-
var rider_trip_default = model42;
|
|
2286
2309
|
|
|
2287
2310
|
// src/models/gtfs-ride/ridership.ts
|
|
2288
|
-
var
|
|
2311
|
+
var ridership = {
|
|
2289
2312
|
filenameBase: "ridership",
|
|
2290
2313
|
filenameExtension: "txt",
|
|
2291
2314
|
nonstandard: true,
|
|
@@ -2410,10 +2433,9 @@ var model43 = {
|
|
|
2410
2433
|
}
|
|
2411
2434
|
]
|
|
2412
2435
|
};
|
|
2413
|
-
var ridership_default = model43;
|
|
2414
2436
|
|
|
2415
2437
|
// src/models/gtfs-ride/trip-capacity.ts
|
|
2416
|
-
var
|
|
2438
|
+
var tripCapacity = {
|
|
2417
2439
|
filenameBase: "trip_capacity",
|
|
2418
2440
|
filenameExtension: "txt",
|
|
2419
2441
|
nonstandard: true,
|
|
@@ -2462,10 +2484,9 @@ var model44 = {
|
|
|
2462
2484
|
}
|
|
2463
2485
|
]
|
|
2464
2486
|
};
|
|
2465
|
-
var trip_capacity_default = model44;
|
|
2466
2487
|
|
|
2467
2488
|
// src/models/gtfs-ride/ride-feed-info.ts
|
|
2468
|
-
var
|
|
2489
|
+
var rideFeedInfo = {
|
|
2469
2490
|
filenameBase: "ride_feed_info",
|
|
2470
2491
|
filenameExtension: "txt",
|
|
2471
2492
|
nonstandard: true,
|
|
@@ -2503,10 +2524,9 @@ var model45 = {
|
|
|
2503
2524
|
}
|
|
2504
2525
|
]
|
|
2505
2526
|
};
|
|
2506
|
-
var ride_feed_info_default = model45;
|
|
2507
2527
|
|
|
2508
2528
|
// src/models/gtfs-realtime/trip-updates.ts
|
|
2509
|
-
var
|
|
2529
|
+
var tripUpdates = {
|
|
2510
2530
|
filenameBase: "trip_updates",
|
|
2511
2531
|
extension: "gtfs-realtime",
|
|
2512
2532
|
schema: [
|
|
@@ -2581,10 +2601,9 @@ var model46 = {
|
|
|
2581
2601
|
}
|
|
2582
2602
|
]
|
|
2583
2603
|
};
|
|
2584
|
-
var trip_updates_default = model46;
|
|
2585
2604
|
|
|
2586
2605
|
// src/models/gtfs-realtime/stop-time-updates.ts
|
|
2587
|
-
var
|
|
2606
|
+
var stopTimeUpdates = {
|
|
2588
2607
|
filenameBase: "stop_time_updates",
|
|
2589
2608
|
extension: "gtfs-realtime",
|
|
2590
2609
|
schema: [
|
|
@@ -2669,10 +2688,9 @@ var model47 = {
|
|
|
2669
2688
|
}
|
|
2670
2689
|
]
|
|
2671
2690
|
};
|
|
2672
|
-
var stop_time_updates_default = model47;
|
|
2673
2691
|
|
|
2674
2692
|
// src/models/gtfs-realtime/vehicle-positions.ts
|
|
2675
|
-
var
|
|
2693
|
+
var vehiclePositions = {
|
|
2676
2694
|
filenameBase: "vehicle_positions",
|
|
2677
2695
|
extension: "gtfs-realtime",
|
|
2678
2696
|
schema: [
|
|
@@ -2807,10 +2825,9 @@ var model48 = {
|
|
|
2807
2825
|
}
|
|
2808
2826
|
]
|
|
2809
2827
|
};
|
|
2810
|
-
var vehicle_positions_default = model48;
|
|
2811
2828
|
|
|
2812
2829
|
// src/models/gtfs-realtime/service-alerts.ts
|
|
2813
|
-
var
|
|
2830
|
+
var serviceAlerts = {
|
|
2814
2831
|
filenameBase: "service_alerts",
|
|
2815
2832
|
extension: "gtfs-realtime",
|
|
2816
2833
|
schema: [
|
|
@@ -2870,10 +2887,9 @@ var model49 = {
|
|
|
2870
2887
|
}
|
|
2871
2888
|
]
|
|
2872
2889
|
};
|
|
2873
|
-
var service_alerts_default = model49;
|
|
2874
2890
|
|
|
2875
2891
|
// src/models/gtfs-realtime/service-alert-targets.ts
|
|
2876
|
-
var
|
|
2892
|
+
var serviceAlertTargets = {
|
|
2877
2893
|
filenameBase: "service_alert_targets",
|
|
2878
2894
|
extension: "gtfs-realtime",
|
|
2879
2895
|
schema: [
|
|
@@ -2910,10 +2926,9 @@ var model50 = {
|
|
|
2910
2926
|
}
|
|
2911
2927
|
]
|
|
2912
2928
|
};
|
|
2913
|
-
var service_alert_targets_default = model50;
|
|
2914
2929
|
|
|
2915
2930
|
// src/models/ods/deadhead-times.ts
|
|
2916
|
-
var
|
|
2931
|
+
var deadheadTimes = {
|
|
2917
2932
|
filenameBase: "deadhead_times",
|
|
2918
2933
|
filenameExtension: "txt",
|
|
2919
2934
|
nonstandard: true,
|
|
@@ -2976,10 +2991,9 @@ var model51 = {
|
|
|
2976
2991
|
}
|
|
2977
2992
|
]
|
|
2978
2993
|
};
|
|
2979
|
-
var deadhead_times_default = model51;
|
|
2980
2994
|
|
|
2981
2995
|
// src/models/ods/deadheads.ts
|
|
2982
|
-
var
|
|
2996
|
+
var deadheads = {
|
|
2983
2997
|
filenameBase: "deadheads",
|
|
2984
2998
|
filenameExtension: "txt",
|
|
2985
2999
|
nonstandard: true,
|
|
@@ -3037,10 +3051,9 @@ var model52 = {
|
|
|
3037
3051
|
}
|
|
3038
3052
|
]
|
|
3039
3053
|
};
|
|
3040
|
-
var deadheads_default = model52;
|
|
3041
3054
|
|
|
3042
3055
|
// src/models/ods/ops-locations.ts
|
|
3043
|
-
var
|
|
3056
|
+
var opsLocations = {
|
|
3044
3057
|
filenameBase: "ops_locations",
|
|
3045
3058
|
filenameExtension: "txt",
|
|
3046
3059
|
nonstandard: true,
|
|
@@ -3084,10 +3097,9 @@ var model53 = {
|
|
|
3084
3097
|
}
|
|
3085
3098
|
]
|
|
3086
3099
|
};
|
|
3087
|
-
var ops_locations_default = model53;
|
|
3088
3100
|
|
|
3089
3101
|
// src/models/ods/run-events.ts
|
|
3090
|
-
var
|
|
3102
|
+
var runEvents = {
|
|
3091
3103
|
filenameBase: "run_event",
|
|
3092
3104
|
filenameExtension: "txt",
|
|
3093
3105
|
nonstandard: true,
|
|
@@ -3155,10 +3167,9 @@ var model54 = {
|
|
|
3155
3167
|
}
|
|
3156
3168
|
]
|
|
3157
3169
|
};
|
|
3158
|
-
var run_events_default = model54;
|
|
3159
3170
|
|
|
3160
3171
|
// src/models/ods/runs-pieces.ts
|
|
3161
|
-
var
|
|
3172
|
+
var runsPieces = {
|
|
3162
3173
|
filenameBase: "runs_pieces",
|
|
3163
3174
|
filenameExtension: "txt",
|
|
3164
3175
|
nonstandard: true,
|
|
@@ -3215,67 +3226,6 @@ var model55 = {
|
|
|
3215
3226
|
}
|
|
3216
3227
|
]
|
|
3217
3228
|
};
|
|
3218
|
-
var runs_pieces_default = model55;
|
|
3219
|
-
|
|
3220
|
-
// src/models/models.ts
|
|
3221
|
-
var models = [
|
|
3222
|
-
agency_default,
|
|
3223
|
-
areas_default,
|
|
3224
|
-
attributions_default,
|
|
3225
|
-
booking_rules_default,
|
|
3226
|
-
calendar_dates_default,
|
|
3227
|
-
calendar_default,
|
|
3228
|
-
fare_attributes_default,
|
|
3229
|
-
fare_leg_rules_default,
|
|
3230
|
-
fare_media_default,
|
|
3231
|
-
fare_products_default,
|
|
3232
|
-
fare_rules_default,
|
|
3233
|
-
fare_transfer_rules_default,
|
|
3234
|
-
feed_info_default,
|
|
3235
|
-
frequencies_default,
|
|
3236
|
-
levels_default,
|
|
3237
|
-
location_groups_default,
|
|
3238
|
-
location_group_stops_default,
|
|
3239
|
-
locations_default,
|
|
3240
|
-
networks_default,
|
|
3241
|
-
pathways_default,
|
|
3242
|
-
route_networks_default,
|
|
3243
|
-
routes_default,
|
|
3244
|
-
shapes_default,
|
|
3245
|
-
stop_areas_default,
|
|
3246
|
-
stop_times_default,
|
|
3247
|
-
stops_default,
|
|
3248
|
-
timeframes_default,
|
|
3249
|
-
transfers_default,
|
|
3250
|
-
translations_default,
|
|
3251
|
-
trips_default,
|
|
3252
|
-
timetables_default,
|
|
3253
|
-
timetable_pages_default,
|
|
3254
|
-
timetable_stop_order_default,
|
|
3255
|
-
timetable_notes_default,
|
|
3256
|
-
timetable_notes_references_default,
|
|
3257
|
-
trips_dated_vehicle_journey_default,
|
|
3258
|
-
calendar_attributes_default,
|
|
3259
|
-
directions_default,
|
|
3260
|
-
route_attributes_default,
|
|
3261
|
-
stop_attributes_default,
|
|
3262
|
-
board_alight_default,
|
|
3263
|
-
ride_feed_info_default,
|
|
3264
|
-
rider_trip_default,
|
|
3265
|
-
ridership_default,
|
|
3266
|
-
trip_capacity_default,
|
|
3267
|
-
trip_updates_default,
|
|
3268
|
-
stop_time_updates_default,
|
|
3269
|
-
vehicle_positions_default,
|
|
3270
|
-
service_alerts_default,
|
|
3271
|
-
service_alert_targets_default,
|
|
3272
|
-
deadhead_times_default,
|
|
3273
|
-
deadheads_default,
|
|
3274
|
-
ops_locations_default,
|
|
3275
|
-
run_events_default,
|
|
3276
|
-
runs_pieces_default
|
|
3277
|
-
];
|
|
3278
|
-
var models_default = models;
|
|
3279
3229
|
|
|
3280
3230
|
// src/lib/db.ts
|
|
3281
3231
|
import Database from "better-sqlite3";
|
|
@@ -3359,8 +3309,8 @@ function validateConfigForImport(config) {
|
|
|
3359
3309
|
if (!config.agencies || config.agencies.length === 0) {
|
|
3360
3310
|
throw new Error("No `agencies` specified in config");
|
|
3361
3311
|
}
|
|
3362
|
-
for (const [index,
|
|
3363
|
-
if (!
|
|
3312
|
+
for (const [index, agency2] of config.agencies.entries()) {
|
|
3313
|
+
if (!agency2.path && !agency2.url) {
|
|
3364
3314
|
throw new Error(
|
|
3365
3315
|
`No Agency \`url\` or \`path\` specified in config for agency index ${index}.`
|
|
3366
3316
|
);
|
|
@@ -3490,25 +3440,6 @@ var updateRealtimeData = async (task) => {
|
|
|
3490
3440
|
const db = openDb({
|
|
3491
3441
|
sqlitePath: task.sqlitePath
|
|
3492
3442
|
});
|
|
3493
|
-
const vehiclePositionsModel = models_default.find(
|
|
3494
|
-
(x) => x.filenameBase === "vehicle_positions"
|
|
3495
|
-
);
|
|
3496
|
-
const tripUpdatesModel = models_default.find(
|
|
3497
|
-
(x) => x.filenameBase === "trip_updates"
|
|
3498
|
-
);
|
|
3499
|
-
const stoptimeUpdatesModel = models_default.find(
|
|
3500
|
-
(x) => x.filenameBase === "stop_time_updates"
|
|
3501
|
-
);
|
|
3502
|
-
const serviceAlertsModel = models_default.find(
|
|
3503
|
-
(x) => x.filenameBase === "service_alerts"
|
|
3504
|
-
);
|
|
3505
|
-
const serviceAlertTargetsModel = models_default.find(
|
|
3506
|
-
(x) => x.filenameBase === "service_alert_targets"
|
|
3507
|
-
);
|
|
3508
|
-
if (!vehiclePositionsModel || !tripUpdatesModel || !stoptimeUpdatesModel || !serviceAlertsModel || !serviceAlertTargetsModel) {
|
|
3509
|
-
task.logError("GTFS-Realtime models definitions not found");
|
|
3510
|
-
return;
|
|
3511
|
-
}
|
|
3512
3443
|
task.log(
|
|
3513
3444
|
`Starting GTFS-Realtime import from ${task.realtime_urls.length} urls`
|
|
3514
3445
|
);
|
|
@@ -3521,25 +3452,25 @@ var updateRealtimeData = async (task) => {
|
|
|
3521
3452
|
task.log(`Download successful`);
|
|
3522
3453
|
let totalLineCount = 0;
|
|
3523
3454
|
for (const entity of gtfsRealtimeData.entity) {
|
|
3524
|
-
let
|
|
3455
|
+
let model;
|
|
3525
3456
|
if (entity.vehicle) {
|
|
3526
|
-
|
|
3457
|
+
model = vehiclePositions;
|
|
3527
3458
|
}
|
|
3528
3459
|
if (entity.tripUpdate) {
|
|
3529
|
-
|
|
3460
|
+
model = tripUpdates;
|
|
3530
3461
|
}
|
|
3531
3462
|
if (entity.alert) {
|
|
3532
|
-
|
|
3463
|
+
model = serviceAlerts;
|
|
3533
3464
|
}
|
|
3534
|
-
if (!
|
|
3465
|
+
if (!model) {
|
|
3535
3466
|
break;
|
|
3536
3467
|
}
|
|
3537
|
-
const fieldValues =
|
|
3468
|
+
const fieldValues = model.schema.map(
|
|
3538
3469
|
(column) => prepareRealtimeValue(entity, column, task)
|
|
3539
3470
|
);
|
|
3540
3471
|
try {
|
|
3541
3472
|
db.prepare(
|
|
3542
|
-
`REPLACE INTO ${
|
|
3473
|
+
`REPLACE INTO ${model.filenameBase} (${model.schema.map((column) => column.name).join(", ")}) VALUES (${fieldValues.join(", ")})`
|
|
3543
3474
|
).run();
|
|
3544
3475
|
} catch (error) {
|
|
3545
3476
|
task.logWarning("Import error: " + error.message);
|
|
@@ -3548,7 +3479,7 @@ var updateRealtimeData = async (task) => {
|
|
|
3548
3479
|
const stopTimeUpdateArray = [];
|
|
3549
3480
|
for (const stopTimeUpdate of entity.tripUpdate.stopTimeUpdate) {
|
|
3550
3481
|
stopTimeUpdate.parent = entity;
|
|
3551
|
-
const subValues =
|
|
3482
|
+
const subValues = stopTimeUpdates.schema.map(
|
|
3552
3483
|
(column) => prepareRealtimeValue(stopTimeUpdate, column, task)
|
|
3553
3484
|
);
|
|
3554
3485
|
stopTimeUpdateArray.push(`(${subValues.join(", ")})`);
|
|
@@ -3556,7 +3487,7 @@ var updateRealtimeData = async (task) => {
|
|
|
3556
3487
|
}
|
|
3557
3488
|
try {
|
|
3558
3489
|
db.prepare(
|
|
3559
|
-
`REPLACE INTO ${
|
|
3490
|
+
`REPLACE INTO ${stopTimeUpdates.filenameBase} (${stopTimeUpdates.schema.map((column) => column.name).join(", ")}) VALUES ${stopTimeUpdateArray.join(", ")}`
|
|
3560
3491
|
).run();
|
|
3561
3492
|
} catch (error) {
|
|
3562
3493
|
task.logWarning("Import error: " + error.message);
|
|
@@ -3566,7 +3497,7 @@ var updateRealtimeData = async (task) => {
|
|
|
3566
3497
|
const alertTargetArray = [];
|
|
3567
3498
|
for (const informedEntity of entity.alert.informedEntity) {
|
|
3568
3499
|
informedEntity.parent = entity;
|
|
3569
|
-
const subValues =
|
|
3500
|
+
const subValues = serviceAlertTargets.schema.map(
|
|
3570
3501
|
(column) => prepareRealtimeValue(informedEntity, column, task)
|
|
3571
3502
|
);
|
|
3572
3503
|
alertTargetArray.push(`(${subValues.join(", ")})`);
|
|
@@ -3574,7 +3505,7 @@ var updateRealtimeData = async (task) => {
|
|
|
3574
3505
|
}
|
|
3575
3506
|
try {
|
|
3576
3507
|
db.prepare(
|
|
3577
|
-
`REPLACE INTO ${
|
|
3508
|
+
`REPLACE INTO ${serviceAlertTargets.filenameBase} (${serviceAlertTargets.schema.map((column) => column.name).join(", ")}) VALUES ${alertTargetArray.join(", ")}`
|
|
3578
3509
|
).run();
|
|
3579
3510
|
} catch (error) {
|
|
3580
3511
|
task.logWarning("Import error: " + error.message);
|
|
@@ -3639,11 +3570,11 @@ var readFiles = async (task) => {
|
|
|
3639
3570
|
}
|
|
3640
3571
|
};
|
|
3641
3572
|
var createTables = (db) => {
|
|
3642
|
-
for (const
|
|
3643
|
-
if (!
|
|
3573
|
+
for (const model of Object.values(models_exports)) {
|
|
3574
|
+
if (!model.schema) {
|
|
3644
3575
|
return;
|
|
3645
3576
|
}
|
|
3646
|
-
const columns =
|
|
3577
|
+
const columns = model.schema.map((column) => {
|
|
3647
3578
|
let check = "";
|
|
3648
3579
|
if (column.min !== void 0 && column.max) {
|
|
3649
3580
|
check = `CHECK( ${column.name} >= ${column.min} AND ${column.name} <= ${column.max} )`;
|
|
@@ -3657,34 +3588,34 @@ var createTables = (db) => {
|
|
|
3657
3588
|
const columnCollation = column.nocase ? "COLLATE NOCASE" : "";
|
|
3658
3589
|
return `${column.name} ${column.type} ${check} ${required} ${columnDefault} ${columnCollation}`;
|
|
3659
3590
|
});
|
|
3660
|
-
const primaryColumns =
|
|
3591
|
+
const primaryColumns = model.schema.filter((column) => column.primary);
|
|
3661
3592
|
if (primaryColumns.length > 0) {
|
|
3662
3593
|
columns.push(
|
|
3663
3594
|
`PRIMARY KEY (${primaryColumns.map((column) => column.name).join(", ")})`
|
|
3664
3595
|
);
|
|
3665
3596
|
}
|
|
3666
|
-
db.prepare(`DROP TABLE IF EXISTS ${
|
|
3597
|
+
db.prepare(`DROP TABLE IF EXISTS ${model.filenameBase};`).run();
|
|
3667
3598
|
db.prepare(
|
|
3668
|
-
`CREATE TABLE ${
|
|
3599
|
+
`CREATE TABLE ${model.filenameBase} (${columns.join(", ")});`
|
|
3669
3600
|
).run();
|
|
3670
|
-
for (const column of
|
|
3601
|
+
for (const column of model.schema.filter((column2) => column2.index)) {
|
|
3671
3602
|
db.prepare(
|
|
3672
|
-
`CREATE INDEX idx_${
|
|
3603
|
+
`CREATE INDEX idx_${model.filenameBase}_${column.name} ON ${model.filenameBase} (${column.name});`
|
|
3673
3604
|
).run();
|
|
3674
3605
|
}
|
|
3675
3606
|
}
|
|
3676
3607
|
};
|
|
3677
|
-
var formatLine = (line,
|
|
3608
|
+
var formatLine = (line, model, totalLineCount) => {
|
|
3678
3609
|
const lineNumber = totalLineCount + 1;
|
|
3679
3610
|
const formattedLine = {};
|
|
3680
|
-
for (const columnSchema of
|
|
3611
|
+
for (const columnSchema of model.schema) {
|
|
3681
3612
|
const lineValue = line[columnSchema.name];
|
|
3682
3613
|
if (columnSchema.type === "date") {
|
|
3683
3614
|
if (lineValue !== "" && lineValue !== void 0) {
|
|
3684
3615
|
const dateValue = lineValue.replace(/-/g, "");
|
|
3685
3616
|
if (dateValue.length !== 8) {
|
|
3686
3617
|
throw new Error(
|
|
3687
|
-
`Invalid date in ${
|
|
3618
|
+
`Invalid date in ${model.filenameBase}.${model.filenameExtension} for ${columnSchema.name} on line ${lineNumber}.`
|
|
3688
3619
|
);
|
|
3689
3620
|
}
|
|
3690
3621
|
formattedLine[columnSchema.name] = Number.parseInt(dateValue, 10);
|
|
@@ -3701,17 +3632,17 @@ var formatLine = (line, model56, totalLineCount) => {
|
|
|
3701
3632
|
}
|
|
3702
3633
|
if (columnSchema.required === true && formattedLine[columnSchema.name] === null) {
|
|
3703
3634
|
throw new Error(
|
|
3704
|
-
`Missing required value in ${
|
|
3635
|
+
`Missing required value in ${model.filenameBase}.${model.filenameExtension} for ${columnSchema.name} on line ${lineNumber}.`
|
|
3705
3636
|
);
|
|
3706
3637
|
}
|
|
3707
3638
|
if (columnSchema.min !== void 0 && formattedLine[columnSchema.name] < columnSchema.min) {
|
|
3708
3639
|
throw new Error(
|
|
3709
|
-
`Invalid value in ${
|
|
3640
|
+
`Invalid value in ${model.filenameBase}.${model.filenameExtension} for ${columnSchema.name} on line ${lineNumber}: below minimum value of ${columnSchema.min}.`
|
|
3710
3641
|
);
|
|
3711
3642
|
}
|
|
3712
3643
|
if (columnSchema.max !== void 0 && formattedLine[columnSchema.name] > columnSchema.max) {
|
|
3713
3644
|
throw new Error(
|
|
3714
|
-
`Invalid value in ${
|
|
3645
|
+
`Invalid value in ${model.filenameBase}.${model.filenameExtension} for ${columnSchema.name} on line ${lineNumber}: above maximum value of ${columnSchema.max}.`
|
|
3715
3646
|
);
|
|
3716
3647
|
}
|
|
3717
3648
|
}
|
|
@@ -3737,7 +3668,7 @@ var formatLine = (line, model56, totalLineCount) => {
|
|
|
3737
3668
|
}
|
|
3738
3669
|
return formattedLine;
|
|
3739
3670
|
};
|
|
3740
|
-
var importLines = (task, lines,
|
|
3671
|
+
var importLines = (task, lines, model, totalLineCount) => {
|
|
3741
3672
|
const db = openDb({
|
|
3742
3673
|
sqlitePath: task.sqlitePath
|
|
3743
3674
|
});
|
|
@@ -3745,7 +3676,7 @@ var importLines = (task, lines, model56, totalLineCount) => {
|
|
|
3745
3676
|
return;
|
|
3746
3677
|
}
|
|
3747
3678
|
const linesToImportCount = lines.length;
|
|
3748
|
-
const columns =
|
|
3679
|
+
const columns = model.schema.filter((column) => column.name !== "id");
|
|
3749
3680
|
const placeholders = [];
|
|
3750
3681
|
const values = [];
|
|
3751
3682
|
while (lines.length > 0) {
|
|
@@ -3765,59 +3696,59 @@ var importLines = (task, lines, model56, totalLineCount) => {
|
|
|
3765
3696
|
}
|
|
3766
3697
|
try {
|
|
3767
3698
|
db.prepare(
|
|
3768
|
-
`INSERT ${task.ignoreDuplicates ? "OR IGNORE" : ""} INTO ${
|
|
3699
|
+
`INSERT ${task.ignoreDuplicates ? "OR IGNORE" : ""} INTO ${model.filenameBase} (${columns.map((column) => column.name).join(", ")}) VALUES ${placeholders.join(",")}`
|
|
3769
3700
|
).run(...values);
|
|
3770
3701
|
} catch (error) {
|
|
3771
3702
|
if (error.code === "SQLITE_CONSTRAINT_PRIMARYKEY") {
|
|
3772
|
-
const primaryColumns =
|
|
3703
|
+
const primaryColumns = model.schema.filter((column) => column.primary);
|
|
3773
3704
|
task.logWarning(
|
|
3774
|
-
`Duplicate values for primary key (${primaryColumns.map((column) => column.name).join(", ")}) found in ${
|
|
3705
|
+
`Duplicate values for primary key (${primaryColumns.map((column) => column.name).join(", ")}) found in ${model.filenameBase}.${model.filenameExtension}. Set the \`ignoreDuplicates\` option to true in config.json to ignore this error`
|
|
3775
3706
|
);
|
|
3776
3707
|
}
|
|
3777
3708
|
task.logWarning(
|
|
3778
|
-
`Check ${
|
|
3709
|
+
`Check ${model.filenameBase}.${model.filenameExtension} for invalid data between lines ${totalLineCount - linesToImportCount} and ${totalLineCount}.`
|
|
3779
3710
|
);
|
|
3780
3711
|
throw error;
|
|
3781
3712
|
}
|
|
3782
3713
|
task.log(
|
|
3783
|
-
`Importing - ${
|
|
3714
|
+
`Importing - ${model.filenameBase}.${model.filenameExtension} - ${totalLineCount} lines imported\r`,
|
|
3784
3715
|
true
|
|
3785
3716
|
);
|
|
3786
3717
|
};
|
|
3787
3718
|
var importFiles = (task) => mapSeries(
|
|
3788
|
-
|
|
3789
|
-
(
|
|
3719
|
+
Object.values(models_exports),
|
|
3720
|
+
(model) => new Promise((resolve, reject) => {
|
|
3790
3721
|
const lines = [];
|
|
3791
3722
|
let totalLineCount = 0;
|
|
3792
3723
|
const maxInsertVariables = 32e3;
|
|
3793
|
-
if (task.exclude && task.exclude.includes(
|
|
3724
|
+
if (task.exclude && task.exclude.includes(model.filenameBase)) {
|
|
3794
3725
|
task.log(
|
|
3795
|
-
`Skipping - ${
|
|
3726
|
+
`Skipping - ${model.filenameBase}.${model.filenameExtension}\r`
|
|
3796
3727
|
);
|
|
3797
3728
|
resolve();
|
|
3798
3729
|
return;
|
|
3799
3730
|
}
|
|
3800
|
-
if (
|
|
3731
|
+
if (model.extension === "gtfs-realtime") {
|
|
3801
3732
|
resolve();
|
|
3802
3733
|
return;
|
|
3803
3734
|
}
|
|
3804
3735
|
const filepath = path2.join(
|
|
3805
3736
|
task.downloadDir,
|
|
3806
|
-
`${
|
|
3737
|
+
`${model.filenameBase}.${model.filenameExtension}`
|
|
3807
3738
|
);
|
|
3808
3739
|
if (!existsSync2(filepath)) {
|
|
3809
|
-
if (!
|
|
3740
|
+
if (!model.nonstandard) {
|
|
3810
3741
|
task.log(
|
|
3811
|
-
`Importing - ${
|
|
3742
|
+
`Importing - ${model.filenameBase}.${model.filenameExtension} - No file found\r`
|
|
3812
3743
|
);
|
|
3813
3744
|
}
|
|
3814
3745
|
resolve();
|
|
3815
3746
|
return;
|
|
3816
3747
|
}
|
|
3817
3748
|
task.log(
|
|
3818
|
-
`Importing - ${
|
|
3749
|
+
`Importing - ${model.filenameBase}.${model.filenameExtension}\r`
|
|
3819
3750
|
);
|
|
3820
|
-
if (
|
|
3751
|
+
if (model.filenameExtension === "txt") {
|
|
3821
3752
|
const parser = parse({
|
|
3822
3753
|
columns: true,
|
|
3823
3754
|
relax_quotes: true,
|
|
@@ -3830,9 +3761,9 @@ var importFiles = (task) => mapSeries(
|
|
|
3830
3761
|
while (record = parser.read()) {
|
|
3831
3762
|
try {
|
|
3832
3763
|
totalLineCount += 1;
|
|
3833
|
-
lines.push(formatLine(record,
|
|
3834
|
-
if (lines.length >= maxInsertVariables /
|
|
3835
|
-
importLines(task, lines,
|
|
3764
|
+
lines.push(formatLine(record, model, totalLineCount));
|
|
3765
|
+
if (lines.length >= maxInsertVariables / model.schema.length) {
|
|
3766
|
+
importLines(task, lines, model, totalLineCount);
|
|
3836
3767
|
}
|
|
3837
3768
|
} catch (error) {
|
|
3838
3769
|
reject(error);
|
|
@@ -3841,7 +3772,7 @@ var importFiles = (task) => mapSeries(
|
|
|
3841
3772
|
});
|
|
3842
3773
|
parser.on("end", () => {
|
|
3843
3774
|
try {
|
|
3844
|
-
importLines(task, lines,
|
|
3775
|
+
importLines(task, lines, model, totalLineCount);
|
|
3845
3776
|
} catch (error) {
|
|
3846
3777
|
reject(error);
|
|
3847
3778
|
}
|
|
@@ -3849,22 +3780,22 @@ var importFiles = (task) => mapSeries(
|
|
|
3849
3780
|
});
|
|
3850
3781
|
parser.on("error", reject);
|
|
3851
3782
|
createReadStream(filepath).pipe(stripBomStream()).pipe(parser);
|
|
3852
|
-
} else if (
|
|
3783
|
+
} else if (model.filenameExtension === "geojson") {
|
|
3853
3784
|
readFile2(filepath, "utf8").then((data) => {
|
|
3854
3785
|
if (isValidJSON(data) === false) {
|
|
3855
3786
|
reject(
|
|
3856
3787
|
new Error(
|
|
3857
|
-
`Invalid JSON in ${
|
|
3788
|
+
`Invalid JSON in ${model.filenameBase}.${model.filenameExtension}`
|
|
3858
3789
|
)
|
|
3859
3790
|
);
|
|
3860
3791
|
}
|
|
3861
|
-
const line = formatLine({ geojson: data },
|
|
3862
|
-
importLines(task, [line],
|
|
3792
|
+
const line = formatLine({ geojson: data }, model, totalLineCount);
|
|
3793
|
+
importLines(task, [line], model, totalLineCount);
|
|
3863
3794
|
resolve();
|
|
3864
3795
|
}).catch(reject);
|
|
3865
3796
|
} else {
|
|
3866
3797
|
reject(
|
|
3867
|
-
new Error(`Unsupported file type: ${
|
|
3798
|
+
new Error(`Unsupported file type: ${model.filenameExtension}`)
|
|
3868
3799
|
);
|
|
3869
3800
|
}
|
|
3870
3801
|
})
|
|
@@ -3888,22 +3819,22 @@ async function importGtfs(initialConfig) {
|
|
|
3888
3819
|
createTables(db);
|
|
3889
3820
|
await mapSeries(
|
|
3890
3821
|
config.agencies,
|
|
3891
|
-
async (
|
|
3822
|
+
async (agency2) => {
|
|
3892
3823
|
const tempPath = temporaryDirectory();
|
|
3893
3824
|
const task = {
|
|
3894
|
-
exclude:
|
|
3895
|
-
agency_url:
|
|
3896
|
-
headers:
|
|
3897
|
-
realtime_headers:
|
|
3898
|
-
realtime_urls:
|
|
3825
|
+
exclude: agency2.exclude,
|
|
3826
|
+
agency_url: agency2.url,
|
|
3827
|
+
headers: agency2.headers,
|
|
3828
|
+
realtime_headers: agency2.realtimeHeaders,
|
|
3829
|
+
realtime_urls: agency2.realtimeUrls,
|
|
3899
3830
|
downloadDir: tempPath,
|
|
3900
3831
|
downloadTimeout: config.downloadTimeout,
|
|
3901
3832
|
gtfsRealtimeExpirationSeconds: config.gtfsRealtimeExpirationSeconds,
|
|
3902
|
-
path:
|
|
3833
|
+
path: agency2.path,
|
|
3903
3834
|
csvOptions: config.csvOptions || {},
|
|
3904
3835
|
ignoreDuplicates: config.ignoreDuplicates,
|
|
3905
3836
|
sqlitePath: config.sqlitePath,
|
|
3906
|
-
prefix:
|
|
3837
|
+
prefix: agency2.prefix,
|
|
3907
3838
|
currentTimestamp: Math.floor(Date.now() / 1e3),
|
|
3908
3839
|
log: log2,
|
|
3909
3840
|
logWarning: logWarning2,
|
|
@@ -3951,171 +3882,15 @@ import untildify4 from "untildify";
|
|
|
3951
3882
|
// src/lib/advancedQuery.ts
|
|
3952
3883
|
import sqlString4 from "sqlstring-sqlite";
|
|
3953
3884
|
|
|
3954
|
-
// src/lib/gtfs/agencies.ts
|
|
3955
|
-
import sqlString5 from "sqlstring-sqlite";
|
|
3956
|
-
|
|
3957
|
-
// src/lib/gtfs/areas.ts
|
|
3958
|
-
import sqlString6 from "sqlstring-sqlite";
|
|
3959
|
-
|
|
3960
|
-
// src/lib/gtfs/attributions.ts
|
|
3961
|
-
import sqlString7 from "sqlstring-sqlite";
|
|
3962
|
-
|
|
3963
|
-
// src/lib/gtfs/booking-rules.ts
|
|
3964
|
-
import sqlString8 from "sqlstring-sqlite";
|
|
3965
|
-
|
|
3966
|
-
// src/lib/gtfs/calendar-dates.ts
|
|
3967
|
-
import sqlString9 from "sqlstring-sqlite";
|
|
3968
|
-
|
|
3969
|
-
// src/lib/gtfs/calendars.ts
|
|
3970
|
-
import sqlString10 from "sqlstring-sqlite";
|
|
3971
|
-
|
|
3972
|
-
// src/lib/gtfs/fare-attributes.ts
|
|
3973
|
-
import sqlString11 from "sqlstring-sqlite";
|
|
3974
|
-
|
|
3975
|
-
// src/lib/gtfs/fare-leg-rules.ts
|
|
3976
|
-
import sqlString12 from "sqlstring-sqlite";
|
|
3977
|
-
|
|
3978
|
-
// src/lib/gtfs/fare-media.ts
|
|
3979
|
-
import sqlString13 from "sqlstring-sqlite";
|
|
3980
|
-
|
|
3981
|
-
// src/lib/gtfs/fare-products.ts
|
|
3982
|
-
import sqlString14 from "sqlstring-sqlite";
|
|
3983
|
-
|
|
3984
|
-
// src/lib/gtfs/fare-rules.ts
|
|
3985
|
-
import sqlString15 from "sqlstring-sqlite";
|
|
3986
|
-
|
|
3987
|
-
// src/lib/gtfs/fare-transfer-rules.ts
|
|
3988
|
-
import sqlString16 from "sqlstring-sqlite";
|
|
3989
|
-
|
|
3990
|
-
// src/lib/gtfs/feed-info.ts
|
|
3991
|
-
import sqlString17 from "sqlstring-sqlite";
|
|
3992
|
-
|
|
3993
|
-
// src/lib/gtfs/frequencies.ts
|
|
3994
|
-
import sqlString18 from "sqlstring-sqlite";
|
|
3995
|
-
|
|
3996
|
-
// src/lib/gtfs/levels.ts
|
|
3997
|
-
import sqlString19 from "sqlstring-sqlite";
|
|
3998
|
-
|
|
3999
|
-
// src/lib/gtfs/location-groups.ts
|
|
4000
|
-
import sqlString20 from "sqlstring-sqlite";
|
|
4001
|
-
|
|
4002
|
-
// src/lib/gtfs/location-group-stops.ts
|
|
4003
|
-
import sqlString21 from "sqlstring-sqlite";
|
|
4004
|
-
|
|
4005
|
-
// src/lib/gtfs/locations.ts
|
|
4006
|
-
import sqlString22 from "sqlstring-sqlite";
|
|
4007
|
-
|
|
4008
|
-
// src/lib/gtfs/networks.ts
|
|
4009
|
-
import sqlString23 from "sqlstring-sqlite";
|
|
4010
|
-
|
|
4011
|
-
// src/lib/gtfs/pathways.ts
|
|
4012
|
-
import sqlString24 from "sqlstring-sqlite";
|
|
4013
|
-
|
|
4014
|
-
// src/lib/gtfs/route-networks.ts
|
|
4015
|
-
import sqlString25 from "sqlstring-sqlite";
|
|
4016
|
-
|
|
4017
3885
|
// src/lib/gtfs/routes.ts
|
|
4018
3886
|
import { omit as omit3, pick } from "lodash-es";
|
|
4019
|
-
import sqlString26 from "sqlstring-sqlite";
|
|
4020
3887
|
|
|
4021
3888
|
// src/lib/gtfs/shapes.ts
|
|
4022
3889
|
import { compact as compact2, omit as omit4, pick as pick2 } from "lodash-es";
|
|
4023
|
-
import sqlString28 from "sqlstring-sqlite";
|
|
4024
3890
|
import { featureCollection as featureCollection2 } from "@turf/helpers";
|
|
4025
3891
|
|
|
4026
|
-
// src/lib/gtfs-plus/route-attributes.ts
|
|
4027
|
-
import sqlString27 from "sqlstring-sqlite";
|
|
4028
|
-
|
|
4029
|
-
// src/lib/gtfs/stop-areas.ts
|
|
4030
|
-
import sqlString29 from "sqlstring-sqlite";
|
|
4031
|
-
|
|
4032
3892
|
// src/lib/gtfs/stops.ts
|
|
4033
3893
|
import { omit as omit5, orderBy, pick as pick3 } from "lodash-es";
|
|
4034
|
-
import sqlString31 from "sqlstring-sqlite";
|
|
4035
|
-
|
|
4036
|
-
// src/lib/gtfs-plus/stop-attributes.ts
|
|
4037
|
-
import sqlString30 from "sqlstring-sqlite";
|
|
4038
|
-
|
|
4039
|
-
// src/lib/gtfs/stop-times.ts
|
|
4040
|
-
import sqlString32 from "sqlstring-sqlite";
|
|
4041
|
-
|
|
4042
|
-
// src/lib/gtfs/timeframes.ts
|
|
4043
|
-
import sqlString33 from "sqlstring-sqlite";
|
|
4044
|
-
|
|
4045
|
-
// src/lib/gtfs/transfers.ts
|
|
4046
|
-
import sqlString34 from "sqlstring-sqlite";
|
|
4047
|
-
|
|
4048
|
-
// src/lib/gtfs/translations.ts
|
|
4049
|
-
import sqlString35 from "sqlstring-sqlite";
|
|
4050
|
-
|
|
4051
|
-
// src/lib/gtfs/trips.ts
|
|
4052
|
-
import sqlString36 from "sqlstring-sqlite";
|
|
4053
|
-
|
|
4054
|
-
// src/lib/gtfs-plus/calendar-attributes.ts
|
|
4055
|
-
import sqlString37 from "sqlstring-sqlite";
|
|
4056
|
-
|
|
4057
|
-
// src/lib/gtfs-plus/directions.ts
|
|
4058
|
-
import sqlString38 from "sqlstring-sqlite";
|
|
4059
|
-
|
|
4060
|
-
// src/lib/non-standard/timetables.ts
|
|
4061
|
-
import sqlString39 from "sqlstring-sqlite";
|
|
4062
|
-
|
|
4063
|
-
// src/lib/non-standard/timetable-stop-order.ts
|
|
4064
|
-
import sqlString40 from "sqlstring-sqlite";
|
|
4065
|
-
|
|
4066
|
-
// src/lib/non-standard/timetable-pages.ts
|
|
4067
|
-
import sqlString41 from "sqlstring-sqlite";
|
|
4068
|
-
|
|
4069
|
-
// src/lib/non-standard/timetable-notes.ts
|
|
4070
|
-
import sqlString42 from "sqlstring-sqlite";
|
|
4071
|
-
|
|
4072
|
-
// src/lib/non-standard/timetable-notes-references.ts
|
|
4073
|
-
import sqlString43 from "sqlstring-sqlite";
|
|
4074
|
-
|
|
4075
|
-
// src/lib/non-standard/trips-dated-vehicle-journey.ts
|
|
4076
|
-
import sqlString44 from "sqlstring-sqlite";
|
|
4077
|
-
|
|
4078
|
-
// src/lib/gtfs-ride/board-alights.ts
|
|
4079
|
-
import sqlString45 from "sqlstring-sqlite";
|
|
4080
|
-
|
|
4081
|
-
// src/lib/gtfs-ride/ride-feed-infos.ts
|
|
4082
|
-
import sqlString46 from "sqlstring-sqlite";
|
|
4083
|
-
|
|
4084
|
-
// src/lib/gtfs-ride/rider-trips.ts
|
|
4085
|
-
import sqlString47 from "sqlstring-sqlite";
|
|
4086
|
-
|
|
4087
|
-
// src/lib/gtfs-ride/riderships.ts
|
|
4088
|
-
import sqlString48 from "sqlstring-sqlite";
|
|
4089
|
-
|
|
4090
|
-
// src/lib/gtfs-ride/trip-capacities.ts
|
|
4091
|
-
import sqlString49 from "sqlstring-sqlite";
|
|
4092
|
-
|
|
4093
|
-
// src/lib/gtfs-realtime/stop-time-updates.ts
|
|
4094
|
-
import sqlString50 from "sqlstring-sqlite";
|
|
4095
|
-
|
|
4096
|
-
// src/lib/gtfs-realtime/trip-updates.ts
|
|
4097
|
-
import sqlString51 from "sqlstring-sqlite";
|
|
4098
|
-
|
|
4099
|
-
// src/lib/gtfs-realtime/vehicle-positions.ts
|
|
4100
|
-
import sqlString52 from "sqlstring-sqlite";
|
|
4101
|
-
|
|
4102
|
-
// src/lib/gtfs-realtime/service-alerts.ts
|
|
4103
|
-
import sqlString53 from "sqlstring-sqlite";
|
|
4104
|
-
|
|
4105
|
-
// src/lib/ods/deadheads.ts
|
|
4106
|
-
import sqlString54 from "sqlstring-sqlite";
|
|
4107
|
-
|
|
4108
|
-
// src/lib/ods/deadhead-times.ts
|
|
4109
|
-
import sqlString55 from "sqlstring-sqlite";
|
|
4110
|
-
|
|
4111
|
-
// src/lib/ods/ops-locations.ts
|
|
4112
|
-
import sqlString56 from "sqlstring-sqlite";
|
|
4113
|
-
|
|
4114
|
-
// src/lib/ods/run-events.ts
|
|
4115
|
-
import sqlString57 from "sqlstring-sqlite";
|
|
4116
|
-
|
|
4117
|
-
// src/lib/ods/runs-pieces.ts
|
|
4118
|
-
import sqlString58 from "sqlstring-sqlite";
|
|
4119
3894
|
|
|
4120
3895
|
// src/bin/gtfs-import.ts
|
|
4121
3896
|
var pe = new PrettyError();
|