gtfs 4.19.0 → 4.19.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.
@@ -1,4389 +1,30 @@
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
- };
7
-
8
- // src/bin/gtfs-export.ts
2
+ import { Tt as formatError, st as exportGtfs, xt as getConfig } from "../src-CdVKeHzG.js";
9
3
  import yargs from "yargs";
10
4
  import { hideBin } from "yargs/helpers";
11
5
  import PrettyError from "pretty-error";
12
6
 
13
- // src/lib/file-utils.ts
14
- import path from "path";
15
- import { existsSync } from "fs";
16
- import { homedir } from "os";
17
- import { mkdir, readFile, rm } from "fs/promises";
18
- import { omit, snakeCase } from "lodash-es";
19
- import sanitize from "sanitize-filename";
20
- import StreamZip from "node-stream-zip";
21
-
22
- // src/lib/log-utils.ts
23
- import { clearLine, cursorTo } from "readline";
24
- import { noop } from "lodash-es";
25
- import * as colors from "yoctocolors";
26
- function log(config) {
27
- if (config.verbose === false) {
28
- return noop;
29
- }
30
- if (config.logFunction) {
31
- return config.logFunction;
32
- }
33
- return (text, overwrite = false) => {
34
- if (overwrite && process.stdout.isTTY) {
35
- clearLine(process.stdout, 0);
36
- cursorTo(process.stdout, 0);
37
- } else {
38
- process.stdout.write("\n");
39
- }
40
- process.stdout.write(text);
41
- };
42
- }
43
- function logWarning(config) {
44
- if (config.logFunction) {
45
- return config.logFunction;
46
- }
47
- return (text) => {
48
- process.stdout.write(`
49
- ${formatWarning(text)}
50
- `);
51
- };
52
- }
53
- function formatWarning(text) {
54
- return colors.yellow(`${colors.underline("Warning")}: ${text}`);
55
- }
56
- function formatError(error) {
57
- const messageText = error instanceof Error ? error.message : error;
58
- const cleanMessage = messageText.replace(/^Error:\s*/i, "");
59
- return colors.red(`${colors.underline("Error")}: ${cleanMessage}`);
60
- }
61
-
62
- // src/lib/file-utils.ts
63
- var homeDirectory = homedir();
64
- async function getConfig(argv2) {
65
- let config;
66
- let data;
67
- try {
68
- if (argv2.configPath) {
69
- const configPath = path.resolve(untildify(argv2.configPath));
70
- data = await readFile(configPath, "utf8");
71
- config = Object.assign(JSON.parse(data), argv2);
72
- } else if (argv2.gtfsPath || argv2.gtfsUrl || argv2.sqlitePath) {
73
- const agencies = [
74
- ...argv2.gtfsPath ? [{ path: argv2.gtfsPath }] : [],
75
- ...argv2.gtfsUrl ? [{ url: argv2.gtfsUrl }] : []
76
- ];
77
- config = {
78
- agencies,
79
- ...omit(argv2, ["path", "url"])
80
- };
81
- } else if (existsSync(path.resolve("./config.json"))) {
82
- data = await readFile(path.resolve("./config.json"), "utf8");
83
- config = Object.assign(JSON.parse(data), argv2);
84
- log(config)("Using configuration from ./config.json");
85
- } else {
86
- throw new Error(
87
- "Cannot find configuration file. Use config-sample.json as a starting point, pass --configPath option."
88
- );
89
- }
90
- return config;
91
- } catch (error) {
92
- if (error instanceof SyntaxError) {
93
- throw new Error(
94
- `Cannot parse configuration file. Check to ensure that it is valid JSON. Error: ${error.message}`,
95
- { cause: error }
96
- );
97
- }
98
- throw error;
99
- }
100
- }
101
- async function prepDirectory(exportPath) {
102
- await rm(exportPath, { recursive: true, force: true });
103
- await mkdir(exportPath, { recursive: true });
104
- }
105
- function generateFolderName(folderName) {
106
- if (!folderName || typeof folderName !== "string") {
107
- throw new Error("Folder name must be a non-empty string");
108
- }
109
- return snakeCase(sanitize(folderName));
110
- }
111
- function untildify(pathWithTilde) {
112
- return homeDirectory ? pathWithTilde.replace(/^~(?=$|\/|\\)/, homeDirectory) : pathWithTilde;
113
- }
114
-
115
- // src/lib/import-gtfs.ts
116
- import path2 from "path";
117
- import { createReadStream, existsSync as existsSync2, lstatSync } from "fs";
118
- import { cp, readdir, rename, readFile as readFile2, rm as rm2, writeFile } from "fs/promises";
119
- import { parse } from "csv-parse";
120
- import stripBomStream from "strip-bom-stream";
121
- import { temporaryDirectory } from "tempy";
122
- import mapSeries2 from "promise-map-series";
123
-
124
- // src/models/models.ts
125
- var models_exports = {};
126
- __export(models_exports, {
127
- agency: () => agency,
128
- areas: () => areas,
129
- attributions: () => attributions,
130
- boardAlight: () => boardAlight,
131
- bookingRules: () => bookingRules,
132
- calendar: () => calendar,
133
- calendarAttributes: () => calendarAttributes,
134
- calendarDates: () => calendarDates,
135
- deadheadTimes: () => deadheadTimes,
136
- deadheads: () => deadheads,
137
- devices: () => devices,
138
- directions: () => directions,
139
- fareAttributes: () => fareAttributes,
140
- fareLegRules: () => fareLegRules,
141
- fareMedia: () => fareMedia,
142
- fareProducts: () => fareProducts,
143
- fareRules: () => fareRules,
144
- fareTransactions: () => fareTransactions,
145
- fareTransferRules: () => fareTransferRules,
146
- feedInfo: () => feedInfo,
147
- frequencies: () => frequencies,
148
- levels: () => levels,
149
- locationGroupStops: () => locationGroupStops,
150
- locationGroups: () => locationGroups,
151
- locations: () => locations,
152
- networks: () => networks,
153
- operators: () => operators,
154
- opsLocations: () => opsLocations,
155
- passengerEvents: () => passengerEvents,
156
- pathways: () => pathways,
157
- rideFeedInfo: () => rideFeedInfo,
158
- riderCategories: () => riderCategories,
159
- riderTrip: () => riderTrip,
160
- ridership: () => ridership,
161
- routeAttributes: () => routeAttributes,
162
- routeNetworks: () => routeNetworks,
163
- routes: () => routes,
164
- runEvents: () => runEvents,
165
- runsPieces: () => runsPieces,
166
- serviceAlertInformedEntities: () => serviceAlertInformedEntities,
167
- serviceAlerts: () => serviceAlerts,
168
- shapes: () => shapes,
169
- stationActivities: () => stationActivities,
170
- stopAreas: () => stopAreas,
171
- stopAttributes: () => stopAttributes,
172
- stopTimeUpdates: () => stopTimeUpdates,
173
- stopTimes: () => stopTimes,
174
- stopVisits: () => stopVisits,
175
- stops: () => stops,
176
- timeframes: () => timeframes,
177
- timetableNotes: () => timetableNotes,
178
- timetableNotesReferences: () => timetableNotesReferences,
179
- timetablePages: () => timetablePages,
180
- timetableStopOrder: () => timetableStopOrder,
181
- timetables: () => timetables,
182
- trainCars: () => trainCars,
183
- transfers: () => transfers,
184
- translations: () => translations,
185
- tripCapacity: () => tripCapacity,
186
- tripUpdates: () => tripUpdates,
187
- trips: () => trips,
188
- tripsDatedVehicleJourney: () => tripsDatedVehicleJourney,
189
- tripsPerformed: () => tripsPerformed,
190
- vehicleLocations: () => vehicleLocations,
191
- vehiclePositions: () => vehiclePositions,
192
- vehicleTrainCars: () => vehicleTrainCars,
193
- vehicles: () => vehicles
194
- });
195
-
196
- // src/models/gtfs/agency.ts
197
- var agency = {
198
- filenameBase: "agency",
199
- filenameExtension: "txt",
200
- schema: [
201
- {
202
- name: "agency_id",
203
- type: "text",
204
- primary: true,
205
- prefix: true
206
- },
207
- {
208
- name: "agency_name",
209
- type: "text",
210
- required: true,
211
- nocase: true
212
- },
213
- {
214
- name: "agency_url",
215
- type: "text",
216
- required: true
217
- },
218
- {
219
- name: "agency_timezone",
220
- type: "text",
221
- required: true
222
- },
223
- {
224
- name: "agency_lang",
225
- type: "text",
226
- nocase: true
227
- },
228
- {
229
- name: "agency_phone",
230
- type: "text",
231
- nocase: true
232
- },
233
- {
234
- name: "agency_fare_url",
235
- type: "text"
236
- },
237
- {
238
- name: "agency_email",
239
- type: "text",
240
- nocase: true
241
- },
242
- {
243
- name: "cemv_support",
244
- type: "integer",
245
- min: 0,
246
- max: 2
247
- }
248
- ]
249
- };
250
-
251
- // src/models/gtfs/areas.ts
252
- var areas = {
253
- filenameBase: "areas",
254
- filenameExtension: "txt",
255
- schema: [
256
- {
257
- name: "area_id",
258
- type: "text",
259
- required: true,
260
- primary: true,
261
- prefix: true
262
- },
263
- {
264
- name: "area_name",
265
- type: "text"
266
- }
267
- ]
268
- };
269
-
270
- // src/models/gtfs/attributions.ts
271
- var attributions = {
272
- filenameBase: "attributions",
273
- filenameExtension: "txt",
274
- schema: [
275
- {
276
- name: "attribution_id",
277
- type: "text",
278
- prefix: true,
279
- primary: true
280
- },
281
- {
282
- name: "agency_id",
283
- type: "text",
284
- prefix: true
285
- },
286
- {
287
- name: "route_id",
288
- type: "text",
289
- prefix: true
290
- },
291
- {
292
- name: "trip_id",
293
- type: "text",
294
- prefix: true
295
- },
296
- {
297
- name: "organization_name",
298
- type: "text",
299
- required: true,
300
- nocase: true
301
- },
302
- {
303
- name: "is_producer",
304
- type: "integer",
305
- min: 0,
306
- max: 1
307
- },
308
- {
309
- name: "is_operator",
310
- type: "integer",
311
- min: 0,
312
- max: 1
313
- },
314
- {
315
- name: "is_authority",
316
- type: "integer",
317
- min: 0,
318
- max: 1
319
- },
320
- {
321
- name: "attribution_url",
322
- type: "text"
323
- },
324
- {
325
- name: "attribution_email",
326
- type: "text",
327
- nocase: true
328
- },
329
- {
330
- name: "attribution_phone",
331
- type: "text",
332
- nocase: true
333
- }
334
- ]
335
- };
336
-
337
- // src/models/gtfs/booking-rules.ts
338
- var bookingRules = {
339
- filenameBase: "booking_rules",
340
- filenameExtension: "txt",
341
- schema: [
342
- {
343
- name: "booking_rule_id",
344
- type: "text",
345
- primary: true,
346
- prefix: true
347
- },
348
- {
349
- name: "booking_type",
350
- type: "integer",
351
- required: true,
352
- min: 0,
353
- max: 2
354
- },
355
- {
356
- name: "prior_notice_duration_min",
357
- type: "integer",
358
- min: 0
359
- },
360
- {
361
- name: "prior_notice_duration_max",
362
- type: "integer",
363
- min: 0
364
- },
365
- {
366
- name: "prior_notice_last_day",
367
- type: "integer",
368
- min: 0
369
- },
370
- {
371
- name: "prior_notice_last_time",
372
- type: "time"
373
- },
374
- {
375
- name: "prior_notice_start_day",
376
- type: "integer",
377
- min: 0
378
- },
379
- {
380
- name: "prior_notice_start_time",
381
- type: "time"
382
- },
383
- {
384
- name: "prior_notice_service_id",
385
- type: "text",
386
- prefix: true
387
- },
388
- {
389
- name: "message",
390
- type: "text",
391
- nocase: true
392
- },
393
- {
394
- name: "pickup_message",
395
- type: "text",
396
- nocase: true
397
- },
398
- {
399
- name: "drop_off_message",
400
- type: "text",
401
- nocase: true
402
- },
403
- {
404
- name: "phone_number",
405
- type: "text",
406
- nocase: true
407
- },
408
- {
409
- name: "info_url",
410
- type: "text"
411
- },
412
- {
413
- name: "booking_url",
414
- type: "text"
415
- }
416
- ]
417
- };
418
-
419
- // src/models/gtfs/calendar-dates.ts
420
- var calendarDates = {
421
- filenameBase: "calendar_dates",
422
- filenameExtension: "txt",
423
- schema: [
424
- {
425
- name: "service_id",
426
- type: "text",
427
- required: true,
428
- primary: true,
429
- prefix: true
430
- },
431
- {
432
- name: "date",
433
- type: "date",
434
- required: true,
435
- primary: true
436
- },
437
- {
438
- name: "exception_type",
439
- type: "integer",
440
- required: true,
441
- min: 1,
442
- max: 2,
443
- index: true
444
- },
445
- {
446
- name: "holiday_name",
447
- type: "text",
448
- nocase: true
449
- }
450
- ]
451
- };
452
-
453
- // src/models/gtfs/calendar.ts
454
- var calendar = {
455
- filenameBase: "calendar",
456
- filenameExtension: "txt",
457
- schema: [
458
- {
459
- name: "service_id",
460
- type: "text",
461
- required: true,
462
- primary: true,
463
- prefix: true
464
- },
465
- {
466
- name: "monday",
467
- type: "integer",
468
- required: true,
469
- min: 0,
470
- max: 1
471
- },
472
- {
473
- name: "tuesday",
474
- type: "integer",
475
- required: true,
476
- min: 0,
477
- max: 1
478
- },
479
- {
480
- name: "wednesday",
481
- type: "integer",
482
- required: true,
483
- min: 0,
484
- max: 1
485
- },
486
- {
487
- name: "thursday",
488
- type: "integer",
489
- required: true,
490
- min: 0,
491
- max: 1
492
- },
493
- {
494
- name: "friday",
495
- type: "integer",
496
- required: true,
497
- min: 0,
498
- max: 1
499
- },
500
- {
501
- name: "saturday",
502
- type: "integer",
503
- required: true,
504
- min: 0,
505
- max: 1
506
- },
507
- {
508
- name: "sunday",
509
- type: "integer",
510
- required: true,
511
- min: 0,
512
- max: 1
513
- },
514
- {
515
- name: "start_date",
516
- type: "date",
517
- required: true,
518
- index: true
519
- },
520
- {
521
- name: "end_date",
522
- type: "date",
523
- required: true,
524
- index: true
525
- }
526
- ]
527
- };
528
-
529
- // src/models/gtfs/fare-attributes.ts
530
- var fareAttributes = {
531
- filenameBase: "fare_attributes",
532
- filenameExtension: "txt",
533
- schema: [
534
- {
535
- name: "fare_id",
536
- type: "text",
537
- required: true,
538
- primary: true,
539
- prefix: true
540
- },
541
- {
542
- name: "price",
543
- type: "real",
544
- required: true
545
- },
546
- {
547
- name: "currency_type",
548
- type: "text",
549
- required: true
550
- },
551
- {
552
- name: "payment_method",
553
- type: "integer",
554
- required: true,
555
- min: 0,
556
- max: 1
557
- },
558
- {
559
- name: "transfers",
560
- type: "integer",
561
- min: 0,
562
- max: 2
563
- },
564
- {
565
- name: "agency_id",
566
- type: "text",
567
- prefix: true
568
- },
569
- {
570
- name: "transfer_duration",
571
- type: "integer",
572
- min: 0
573
- }
574
- ]
575
- };
576
-
577
- // src/models/gtfs/fare-leg-rules.ts
578
- var fareLegRules = {
579
- filenameBase: "fare_leg_rules",
580
- filenameExtension: "txt",
581
- schema: [
582
- {
583
- name: "leg_group_id",
584
- type: "text",
585
- prefix: true
586
- },
587
- {
588
- name: "network_id",
589
- type: "text",
590
- primary: true,
591
- prefix: true
592
- },
593
- {
594
- name: "from_area_id",
595
- type: "text",
596
- primary: true,
597
- prefix: true
598
- },
599
- {
600
- name: "to_area_id",
601
- type: "text",
602
- primary: true,
603
- prefix: true
604
- },
605
- {
606
- name: "from_timeframe_group_id",
607
- type: "text",
608
- primary: true,
609
- prefix: true
610
- },
611
- {
612
- name: "to_timeframe_group_id",
613
- type: "text",
614
- primary: true,
615
- prefix: true
616
- },
617
- {
618
- name: "fare_product_id",
619
- type: "text",
620
- required: true,
621
- primary: true,
622
- prefix: true
623
- },
624
- {
625
- name: "rule_priority",
626
- type: "integer",
627
- min: 0
628
- }
629
- ]
630
- };
631
-
632
- // src/models/gtfs/fare-media.ts
633
- var fareMedia = {
634
- filenameBase: "fare_media",
635
- filenameExtension: "txt",
636
- schema: [
637
- {
638
- name: "fare_media_id",
639
- type: "text",
640
- required: true,
641
- primary: true,
642
- prefix: true
643
- },
644
- {
645
- name: "fare_media_name",
646
- type: "text"
647
- },
648
- {
649
- name: "fare_media_type",
650
- type: "integer",
651
- required: true,
652
- min: 0,
653
- max: 4
654
- }
655
- ]
656
- };
657
-
658
- // src/models/gtfs/fare-products.ts
659
- var fareProducts = {
660
- filenameBase: "fare_products",
661
- filenameExtension: "txt",
662
- schema: [
663
- {
664
- name: "fare_product_id",
665
- type: "text",
666
- required: true,
667
- primary: true,
668
- prefix: true
669
- },
670
- {
671
- name: "rider_category_id",
672
- type: "text",
673
- primary: true,
674
- prefix: true
675
- },
676
- {
677
- name: "fare_product_name",
678
- type: "text"
679
- },
680
- {
681
- name: "fare_media_id",
682
- type: "text",
683
- primary: true,
684
- prefix: true
685
- },
686
- {
687
- name: "amount",
688
- type: "real",
689
- required: true
690
- },
691
- {
692
- name: "currency",
693
- type: "text",
694
- required: true
695
- }
696
- ]
697
- };
698
-
699
- // src/models/gtfs/fare-rules.ts
700
- var fareRules = {
701
- filenameBase: "fare_rules",
702
- filenameExtension: "txt",
703
- schema: [
704
- {
705
- name: "fare_id",
706
- type: "text",
707
- required: true,
708
- primary: true,
709
- prefix: true
710
- },
711
- {
712
- name: "route_id",
713
- type: "text",
714
- primary: true,
715
- prefix: true
716
- },
717
- {
718
- name: "origin_id",
719
- type: "text",
720
- primary: true,
721
- prefix: true
722
- },
723
- {
724
- name: "destination_id",
725
- type: "text",
726
- primary: true,
727
- prefix: true
728
- },
729
- {
730
- name: "contains_id",
731
- type: "text",
732
- primary: true,
733
- prefix: true
734
- }
735
- ]
736
- };
737
-
738
- // src/models/gtfs/fare-transfer-rules.ts
739
- var fareTransferRules = {
740
- filenameBase: "fare_transfer_rules",
741
- filenameExtension: "txt",
742
- schema: [
743
- {
744
- name: "from_leg_group_id",
745
- type: "text",
746
- primary: true,
747
- prefix: true
748
- },
749
- {
750
- name: "to_leg_group_id",
751
- type: "text",
752
- primary: true,
753
- prefix: true
754
- },
755
- {
756
- name: "transfer_count",
757
- type: "integer",
758
- min: -1,
759
- primary: true
760
- },
761
- {
762
- name: "duration_limit",
763
- type: "integer",
764
- min: 0,
765
- primary: true
766
- },
767
- {
768
- name: "duration_limit_type",
769
- type: "integer",
770
- min: 0,
771
- max: 3
772
- },
773
- {
774
- name: "fare_transfer_type",
775
- type: "integer",
776
- min: 0,
777
- max: 2,
778
- required: true
779
- },
780
- {
781
- name: "fare_product_id",
782
- type: "text",
783
- primary: true,
784
- prefix: true
785
- }
786
- ]
787
- };
788
-
789
- // src/models/gtfs/feed-info.ts
790
- var feedInfo = {
791
- filenameBase: "feed_info",
792
- filenameExtension: "txt",
793
- schema: [
794
- {
795
- name: "feed_publisher_name",
796
- type: "text",
797
- required: true,
798
- nocase: true
799
- },
800
- {
801
- name: "feed_publisher_url",
802
- type: "text",
803
- required: true
804
- },
805
- {
806
- name: "feed_lang",
807
- type: "text",
808
- required: true
809
- },
810
- {
811
- name: "default_lang",
812
- type: "text",
813
- nocase: true
814
- },
815
- {
816
- name: "feed_start_date",
817
- type: "date"
818
- },
819
- {
820
- name: "feed_end_date",
821
- type: "date"
822
- },
823
- {
824
- name: "feed_version",
825
- type: "text"
826
- },
827
- {
828
- name: "feed_contact_email",
829
- type: "text",
830
- nocase: true
831
- },
832
- {
833
- name: "feed_contact_url",
834
- type: "text"
835
- }
836
- ]
837
- };
838
-
839
- // src/models/gtfs/frequencies.ts
840
- var frequencies = {
841
- filenameBase: "frequencies",
842
- filenameExtension: "txt",
843
- schema: [
844
- {
845
- name: "trip_id",
846
- type: "text",
847
- required: true,
848
- primary: true,
849
- prefix: true
850
- },
851
- {
852
- name: "start_time",
853
- type: "time",
854
- required: true,
855
- primary: true
856
- },
857
- {
858
- name: "end_time",
859
- type: "time",
860
- required: true
861
- },
862
- {
863
- name: "headway_secs",
864
- type: "integer",
865
- required: true,
866
- min: 0
867
- },
868
- {
869
- name: "exact_times",
870
- type: "integer",
871
- min: 0,
872
- max: 1
873
- }
874
- ]
875
- };
876
-
877
- // src/models/gtfs/levels.ts
878
- var levels = {
879
- filenameBase: "levels",
880
- filenameExtension: "txt",
881
- schema: [
882
- {
883
- name: "level_id",
884
- type: "text",
885
- primary: true,
886
- required: true,
887
- prefix: true
888
- },
889
- {
890
- name: "level_index",
891
- type: "real",
892
- required: true
893
- },
894
- {
895
- name: "level_name",
896
- type: "text",
897
- nocase: true
898
- }
899
- ]
900
- };
901
-
902
- // src/models/gtfs/location-groups.ts
903
- var locationGroups = {
904
- filenameBase: "location_groups",
905
- filenameExtension: "txt",
906
- schema: [
907
- {
908
- name: "location_group_id",
909
- type: "text",
910
- primary: true,
911
- prefix: true
912
- },
913
- {
914
- name: "location_group_name",
915
- type: "text",
916
- nocase: true
917
- }
918
- ]
919
- };
920
-
921
- // src/models/gtfs/location-group-stops.ts
922
- var locationGroupStops = {
923
- filenameBase: "location_group_stops",
924
- filenameExtension: "txt",
925
- schema: [
926
- {
927
- name: "location_group_id",
928
- type: "text",
929
- prefix: true,
930
- index: true,
931
- required: true,
932
- primary: true
933
- },
934
- {
935
- name: "stop_id",
936
- type: "text",
937
- required: true,
938
- prefix: true,
939
- index: true,
940
- primary: true
941
- }
942
- ]
943
- };
944
-
945
- // src/models/gtfs/locations.ts
946
- var locations = {
947
- filenameBase: "locations",
948
- filenameExtension: "geojson",
949
- schema: [
950
- {
951
- name: "geojson",
952
- type: "text"
953
- }
954
- ]
955
- };
956
-
957
- // src/models/gtfs/networks.ts
958
- var networks = {
959
- filenameBase: "networks",
960
- filenameExtension: "txt",
961
- schema: [
962
- {
963
- name: "network_id",
964
- type: "text",
965
- primary: true,
966
- required: true,
967
- prefix: true
968
- },
969
- {
970
- name: "network_name",
971
- type: "text",
972
- nocase: true
973
- }
974
- ]
975
- };
976
-
977
- // src/models/gtfs/pathways.ts
978
- var pathways = {
979
- filenameBase: "pathways",
980
- filenameExtension: "txt",
981
- schema: [
982
- {
983
- name: "pathway_id",
984
- type: "text",
985
- primary: true,
986
- required: true,
987
- prefix: true
988
- },
989
- {
990
- name: "from_stop_id",
991
- type: "text",
992
- required: true,
993
- prefix: true
994
- },
995
- {
996
- name: "to_stop_id",
997
- type: "text",
998
- required: true,
999
- prefix: true
1000
- },
1001
- {
1002
- name: "pathway_mode",
1003
- type: "integer",
1004
- required: true,
1005
- min: 1,
1006
- max: 7
1007
- },
1008
- {
1009
- name: "is_bidirectional",
1010
- type: "integer",
1011
- required: true,
1012
- min: 0,
1013
- max: 1
1014
- },
1015
- {
1016
- name: "length",
1017
- type: "real",
1018
- min: 0
1019
- },
1020
- {
1021
- name: "traversal_time",
1022
- type: "integer",
1023
- min: 0
1024
- },
1025
- {
1026
- name: "stair_count",
1027
- type: "integer"
1028
- },
1029
- {
1030
- name: "max_slope",
1031
- type: "real"
1032
- },
1033
- {
1034
- name: "min_width",
1035
- type: "real",
1036
- min: 0
1037
- },
1038
- {
1039
- name: "signposted_as",
1040
- type: "text",
1041
- nocase: true
1042
- },
1043
- {
1044
- name: "reversed_signposted_as",
1045
- type: "text",
1046
- nocase: true
1047
- }
1048
- ]
1049
- };
1050
-
1051
- // src/models/gtfs/rider-categories.ts
1052
- var riderCategories = {
1053
- filenameBase: "rider_categories",
1054
- filenameExtension: "txt",
1055
- schema: [
1056
- {
1057
- name: "rider_category_id",
1058
- type: "text",
1059
- primary: true,
1060
- required: true,
1061
- prefix: true
1062
- },
1063
- {
1064
- name: "rider_category_name",
1065
- type: "text",
1066
- required: true
1067
- },
1068
- {
1069
- name: "is_default_fare_category",
1070
- type: "integer",
1071
- min: 0,
1072
- max: 1
1073
- },
1074
- {
1075
- name: "eligibility_url",
1076
- type: "text"
1077
- }
1078
- ]
1079
- };
1080
-
1081
- // src/models/gtfs/route-networks.ts
1082
- var routeNetworks = {
1083
- filenameBase: "route_networks",
1084
- filenameExtension: "txt",
1085
- schema: [
1086
- {
1087
- name: "network_id",
1088
- type: "text",
1089
- required: true,
1090
- prefix: true
1091
- },
1092
- {
1093
- name: "route_id",
1094
- type: "text",
1095
- primary: true,
1096
- index: true,
1097
- prefix: true
1098
- }
1099
- ]
1100
- };
1101
-
1102
- // src/models/gtfs/routes.ts
1103
- var routes = {
1104
- filenameBase: "routes",
1105
- filenameExtension: "txt",
1106
- schema: [
1107
- {
1108
- name: "route_id",
1109
- type: "text",
1110
- primary: true,
1111
- required: true,
1112
- prefix: true
1113
- },
1114
- {
1115
- name: "agency_id",
1116
- type: "text",
1117
- index: true,
1118
- prefix: true
1119
- },
1120
- {
1121
- name: "route_short_name",
1122
- type: "text",
1123
- nocase: true
1124
- },
1125
- {
1126
- name: "route_long_name",
1127
- type: "text",
1128
- nocase: true
1129
- },
1130
- {
1131
- name: "route_desc",
1132
- type: "text",
1133
- nocase: true
1134
- },
1135
- {
1136
- name: "route_type",
1137
- type: "integer",
1138
- required: true,
1139
- min: 0
1140
- // Support extended GTFS route types with no max value
1141
- // https://developers.google.com/transit/gtfs/reference/extended-route-types
1142
- },
1143
- {
1144
- name: "route_url",
1145
- type: "text"
1146
- },
1147
- {
1148
- name: "route_color",
1149
- type: "text",
1150
- nocase: true
1151
- },
1152
- {
1153
- name: "route_text_color",
1154
- type: "text",
1155
- nocase: true
1156
- },
1157
- {
1158
- name: "route_sort_order",
1159
- type: "integer",
1160
- min: 0
1161
- },
1162
- {
1163
- name: "continuous_pickup",
1164
- type: "integer",
1165
- min: 0,
1166
- max: 3
1167
- },
1168
- {
1169
- name: "continuous_drop_off",
1170
- type: "integer",
1171
- min: 0,
1172
- max: 3
1173
- },
1174
- {
1175
- name: "network_id",
1176
- type: "text",
1177
- prefix: true
1178
- },
1179
- {
1180
- name: "cemv_support",
1181
- type: "integer",
1182
- min: 0,
1183
- max: 2
1184
- }
1185
- ]
1186
- };
1187
-
1188
- // src/models/gtfs/shapes.ts
1189
- var shapes = {
1190
- filenameBase: "shapes",
1191
- filenameExtension: "txt",
1192
- schema: [
1193
- {
1194
- name: "shape_id",
1195
- type: "text",
1196
- required: true,
1197
- primary: true,
1198
- prefix: true
1199
- },
1200
- {
1201
- name: "shape_pt_lat",
1202
- type: "real",
1203
- required: true,
1204
- min: -90,
1205
- max: 90
1206
- },
1207
- {
1208
- name: "shape_pt_lon",
1209
- type: "real",
1210
- required: true,
1211
- min: -180,
1212
- max: 180
1213
- },
1214
- {
1215
- name: "shape_pt_sequence",
1216
- type: "integer",
1217
- required: true,
1218
- primary: true,
1219
- min: 0
1220
- },
1221
- {
1222
- name: "shape_dist_traveled",
1223
- type: "real",
1224
- min: 0
1225
- }
1226
- ]
1227
- };
1228
-
1229
- // src/models/gtfs/stop-areas.ts
1230
- var stopAreas = {
1231
- filenameBase: "stop_areas",
1232
- filenameExtension: "txt",
1233
- schema: [
1234
- {
1235
- name: "area_id",
1236
- type: "text",
1237
- required: true,
1238
- primary: true,
1239
- prefix: true
1240
- },
1241
- {
1242
- name: "stop_id",
1243
- type: "text",
1244
- required: true,
1245
- primary: true,
1246
- prefix: true
1247
- }
1248
- ]
1249
- };
1250
-
1251
- // src/models/gtfs/stop-times.ts
1252
- var stopTimes = {
1253
- filenameBase: "stop_times",
1254
- filenameExtension: "txt",
1255
- schema: [
1256
- {
1257
- name: "trip_id",
1258
- type: "text",
1259
- required: true,
1260
- primary: true,
1261
- prefix: true
1262
- },
1263
- {
1264
- name: "arrival_time",
1265
- type: "time"
1266
- },
1267
- {
1268
- name: "departure_time",
1269
- type: "time"
1270
- },
1271
- {
1272
- name: "location_group_id",
1273
- type: "text",
1274
- prefix: true,
1275
- index: true
1276
- },
1277
- {
1278
- name: "location_id",
1279
- type: "text",
1280
- prefix: true,
1281
- index: true
1282
- },
1283
- {
1284
- name: "stop_id",
1285
- type: "text",
1286
- required: true,
1287
- prefix: true,
1288
- index: true
1289
- },
1290
- {
1291
- name: "stop_sequence",
1292
- type: "integer",
1293
- required: true,
1294
- primary: true,
1295
- min: 0
1296
- },
1297
- {
1298
- name: "stop_headsign",
1299
- type: "text",
1300
- nocase: true
1301
- },
1302
- {
1303
- name: "start_pickup_drop_off_window",
1304
- type: "time"
1305
- },
1306
- {
1307
- name: "pickup_type",
1308
- type: "integer",
1309
- min: 0,
1310
- max: 3
1311
- },
1312
- {
1313
- name: "drop_off_type",
1314
- type: "integer",
1315
- min: 0,
1316
- max: 3
1317
- },
1318
- {
1319
- name: "continuous_pickup",
1320
- type: "integer",
1321
- min: 0,
1322
- max: 3
1323
- },
1324
- {
1325
- name: "continuous_drop_off",
1326
- type: "integer",
1327
- min: 0,
1328
- max: 3
1329
- },
1330
- {
1331
- name: "shape_dist_traveled",
1332
- type: "real",
1333
- min: 0
1334
- },
1335
- {
1336
- name: "timepoint",
1337
- type: "integer",
1338
- min: 0,
1339
- max: 1
1340
- },
1341
- {
1342
- name: "pickup_booking_rule_id",
1343
- type: "text",
1344
- prefix: true,
1345
- index: true
1346
- },
1347
- {
1348
- name: "drop_off_booking_rule_id",
1349
- type: "text",
1350
- prefix: true,
1351
- index: true
1352
- }
1353
- ]
1354
- };
1355
-
1356
- // src/models/gtfs/stops.ts
1357
- var stops = {
1358
- filenameBase: "stops",
1359
- filenameExtension: "txt",
1360
- schema: [
1361
- {
1362
- name: "stop_id",
1363
- type: "text",
1364
- primary: true,
1365
- required: true,
1366
- prefix: true
1367
- },
1368
- {
1369
- name: "stop_code",
1370
- type: "text",
1371
- index: true
1372
- },
1373
- {
1374
- name: "stop_name",
1375
- type: "text",
1376
- nocase: true
1377
- },
1378
- {
1379
- name: "tts_stop_name",
1380
- type: "text",
1381
- nocase: true
1382
- },
1383
- {
1384
- name: "stop_desc",
1385
- type: "text",
1386
- nocase: true
1387
- },
1388
- {
1389
- name: "stop_lat",
1390
- type: "real",
1391
- min: -90,
1392
- max: 90
1393
- },
1394
- {
1395
- name: "stop_lon",
1396
- type: "real",
1397
- min: -180,
1398
- max: 180
1399
- },
1400
- {
1401
- name: "zone_id",
1402
- type: "text",
1403
- prefix: true
1404
- },
1405
- {
1406
- name: "stop_url",
1407
- type: "text"
1408
- },
1409
- {
1410
- name: "location_type",
1411
- type: "integer",
1412
- min: 0,
1413
- max: 4
1414
- },
1415
- {
1416
- name: "parent_station",
1417
- type: "text",
1418
- index: true,
1419
- prefix: true
1420
- },
1421
- {
1422
- name: "stop_timezone",
1423
- type: "text"
1424
- },
1425
- {
1426
- name: "wheelchair_boarding",
1427
- type: "integer",
1428
- min: 0,
1429
- max: 2
1430
- },
1431
- {
1432
- name: "level_id",
1433
- type: "text",
1434
- prefix: true
1435
- },
1436
- {
1437
- name: "platform_code",
1438
- type: "text"
1439
- },
1440
- {
1441
- name: "stop_access",
1442
- type: "integer",
1443
- min: 0,
1444
- max: 1
1445
- }
1446
- ]
1447
- };
1448
-
1449
- // src/models/gtfs/timeframes.ts
1450
- var timeframes = {
1451
- filenameBase: "timeframes",
1452
- filenameExtension: "txt",
1453
- schema: [
1454
- {
1455
- name: "timeframe_group_id",
1456
- type: "text",
1457
- primary: true,
1458
- prefix: true
1459
- },
1460
- {
1461
- name: "start_time",
1462
- type: "time",
1463
- primary: true
1464
- },
1465
- {
1466
- name: "end_time",
1467
- type: "time",
1468
- primary: true
1469
- },
1470
- {
1471
- name: "service_id",
1472
- type: "text",
1473
- required: true,
1474
- primary: true,
1475
- index: true,
1476
- prefix: true
1477
- }
1478
- ]
1479
- };
1480
-
1481
- // src/models/gtfs/transfers.ts
1482
- var transfers = {
1483
- filenameBase: "transfers",
1484
- filenameExtension: "txt",
1485
- schema: [
1486
- {
1487
- name: "from_stop_id",
1488
- type: "text",
1489
- primary: true,
1490
- prefix: true
1491
- },
1492
- {
1493
- name: "to_stop_id",
1494
- type: "text",
1495
- primary: true,
1496
- prefix: true
1497
- },
1498
- {
1499
- name: "from_route_id",
1500
- type: "text",
1501
- primary: true,
1502
- prefix: true
1503
- },
1504
- {
1505
- name: "to_route_id",
1506
- type: "text",
1507
- primary: true,
1508
- prefix: true
1509
- },
1510
- {
1511
- name: "from_trip_id",
1512
- type: "text",
1513
- primary: true,
1514
- prefix: true
1515
- },
1516
- {
1517
- name: "to_trip_id",
1518
- type: "text",
1519
- primary: true,
1520
- prefix: true
1521
- },
1522
- {
1523
- name: "transfer_type",
1524
- type: "integer",
1525
- min: 0,
1526
- max: 5,
1527
- default: 0
1528
- },
1529
- {
1530
- name: "min_transfer_time",
1531
- type: "integer",
1532
- min: 0
1533
- }
1534
- ]
1535
- };
1536
-
1537
- // src/models/gtfs/translations.ts
1538
- var translations = {
1539
- filenameBase: "translations",
1540
- filenameExtension: "txt",
1541
- schema: [
1542
- {
1543
- name: "table_name",
1544
- type: "text",
1545
- primary: true,
1546
- required: true
1547
- },
1548
- {
1549
- name: "field_name",
1550
- type: "text",
1551
- primary: true,
1552
- required: true
1553
- },
1554
- {
1555
- name: "language",
1556
- type: "text",
1557
- primary: true,
1558
- required: true
1559
- },
1560
- {
1561
- name: "translation",
1562
- type: "text",
1563
- required: true
1564
- },
1565
- {
1566
- name: "record_id",
1567
- type: "text",
1568
- primary: true,
1569
- prefix: true
1570
- },
1571
- {
1572
- name: "record_sub_id",
1573
- type: "text",
1574
- primary: true,
1575
- prefix: true
1576
- },
1577
- {
1578
- name: "field_value",
1579
- type: "text",
1580
- primary: true
1581
- }
1582
- ]
1583
- };
1584
-
1585
- // src/models/gtfs/trips.ts
1586
- var trips = {
1587
- filenameBase: "trips",
1588
- filenameExtension: "txt",
1589
- schema: [
1590
- {
1591
- name: "route_id",
1592
- type: "text",
1593
- required: true,
1594
- index: true,
1595
- prefix: true
1596
- },
1597
- {
1598
- name: "service_id",
1599
- type: "text",
1600
- required: true,
1601
- index: true,
1602
- prefix: true
1603
- },
1604
- {
1605
- name: "trip_id",
1606
- type: "text",
1607
- primary: true,
1608
- required: true,
1609
- prefix: true
1610
- },
1611
- {
1612
- name: "trip_headsign",
1613
- type: "text",
1614
- nocase: true
1615
- },
1616
- {
1617
- name: "trip_short_name",
1618
- type: "text",
1619
- nocase: true
1620
- },
1621
- {
1622
- name: "direction_id",
1623
- type: "integer",
1624
- min: 0,
1625
- max: 1,
1626
- index: true
1627
- },
1628
- {
1629
- name: "block_id",
1630
- type: "text",
1631
- index: true,
1632
- prefix: true
1633
- },
1634
- {
1635
- name: "shape_id",
1636
- type: "text",
1637
- index: true,
1638
- prefix: true
1639
- },
1640
- {
1641
- name: "wheelchair_accessible",
1642
- type: "integer",
1643
- min: 0,
1644
- max: 2
1645
- },
1646
- {
1647
- name: "bikes_allowed",
1648
- type: "integer",
1649
- min: 0,
1650
- max: 2
1651
- },
1652
- {
1653
- name: "cars_allowed",
1654
- type: "integer",
1655
- min: 0,
1656
- max: 2
1657
- },
1658
- {
1659
- name: "safe_duration_factor",
1660
- type: "real"
1661
- },
1662
- {
1663
- name: "safe_duration_offset",
1664
- type: "real"
1665
- }
1666
- ]
1667
- };
1668
-
1669
- // src/models/non-standard/timetables.ts
1670
- var timetables = {
1671
- filenameBase: "timetables",
1672
- filenameExtension: "txt",
1673
- nonstandard: true,
1674
- schema: [
1675
- {
1676
- name: "timetable_id",
1677
- type: "text",
1678
- prefix: true,
1679
- required: true,
1680
- primary: true
1681
- },
1682
- {
1683
- name: "route_id",
1684
- type: "text",
1685
- prefix: true,
1686
- required: true,
1687
- primary: true
1688
- },
1689
- {
1690
- name: "direction_id",
1691
- type: "integer",
1692
- min: 0,
1693
- max: 1
1694
- },
1695
- {
1696
- name: "start_date",
1697
- type: "date"
1698
- },
1699
- {
1700
- name: "end_date",
1701
- type: "date"
1702
- },
1703
- {
1704
- name: "monday",
1705
- type: "integer",
1706
- required: true,
1707
- min: 0,
1708
- max: 1
1709
- },
1710
- {
1711
- name: "tuesday",
1712
- type: "integer",
1713
- required: true,
1714
- min: 0,
1715
- max: 1
1716
- },
1717
- {
1718
- name: "wednesday",
1719
- type: "integer",
1720
- required: true,
1721
- min: 0,
1722
- max: 1
1723
- },
1724
- {
1725
- name: "thursday",
1726
- type: "integer",
1727
- required: true,
1728
- min: 0,
1729
- max: 1
1730
- },
1731
- {
1732
- name: "friday",
1733
- type: "integer",
1734
- required: true,
1735
- min: 0,
1736
- max: 1
1737
- },
1738
- {
1739
- name: "saturday",
1740
- type: "integer",
1741
- required: true,
1742
- min: 0,
1743
- max: 1
1744
- },
1745
- {
1746
- name: "sunday",
1747
- type: "integer",
1748
- required: true,
1749
- min: 0,
1750
- max: 1
1751
- },
1752
- {
1753
- name: "start_time",
1754
- type: "time"
1755
- },
1756
- {
1757
- name: "end_time",
1758
- type: "time"
1759
- },
1760
- {
1761
- name: "timetable_label",
1762
- type: "text",
1763
- nocase: true
1764
- },
1765
- {
1766
- name: "service_notes",
1767
- type: "text",
1768
- nocase: true
1769
- },
1770
- {
1771
- name: "orientation",
1772
- type: "text"
1773
- },
1774
- {
1775
- name: "timetable_page_id",
1776
- type: "text"
1777
- },
1778
- {
1779
- name: "timetable_sequence",
1780
- type: "integer",
1781
- min: 0,
1782
- index: true
1783
- },
1784
- {
1785
- name: "direction_name",
1786
- type: "text"
1787
- },
1788
- {
1789
- name: "include_exceptions",
1790
- type: "integer",
1791
- min: 0,
1792
- max: 1
1793
- },
1794
- {
1795
- name: "show_trip_continuation",
1796
- type: "integer",
1797
- min: 0,
1798
- max: 1
1799
- }
1800
- ]
1801
- };
1802
-
1803
- // src/models/non-standard/timetable-pages.ts
1804
- var timetablePages = {
1805
- filenameBase: "timetable_pages",
1806
- filenameExtension: "txt",
1807
- nonstandard: true,
1808
- schema: [
1809
- {
1810
- name: "timetable_page_id",
1811
- type: "text",
1812
- primary: true,
1813
- required: true,
1814
- prefix: true
1815
- },
1816
- {
1817
- name: "timetable_page_label",
1818
- type: "text"
1819
- },
1820
- {
1821
- name: "filename",
1822
- type: "text"
1823
- }
1824
- ]
1825
- };
1826
-
1827
- // src/models/non-standard/timetable-stop-order.ts
1828
- var timetableStopOrder = {
1829
- filenameBase: "timetable_stop_order",
1830
- filenameExtension: "txt",
1831
- nonstandard: true,
1832
- schema: [
1833
- {
1834
- name: "timetable_id",
1835
- type: "text",
1836
- index: true,
1837
- prefix: true,
1838
- required: true,
1839
- primary: true
1840
- },
1841
- {
1842
- name: "stop_id",
1843
- type: "text",
1844
- prefix: true,
1845
- required: true,
1846
- primary: true
1847
- },
1848
- {
1849
- name: "stop_sequence",
1850
- type: "integer",
1851
- min: 0,
1852
- index: true,
1853
- required: true,
1854
- primary: true
1855
- }
1856
- ]
1857
- };
1858
-
1859
- // src/models/non-standard/timetable-notes.ts
1860
- var timetableNotes = {
1861
- filenameBase: "timetable_notes",
1862
- filenameExtension: "txt",
1863
- nonstandard: true,
1864
- schema: [
1865
- {
1866
- name: "note_id",
1867
- type: "text",
1868
- primary: true,
1869
- prefix: true,
1870
- required: true
1871
- },
1872
- {
1873
- name: "symbol",
1874
- type: "text"
1875
- },
1876
- {
1877
- name: "note",
1878
- type: "text",
1879
- nocase: true,
1880
- required: true
1881
- }
1882
- ]
1883
- };
1884
-
1885
- // src/models/non-standard/timetable-notes-references.ts
1886
- var timetableNotesReferences = {
1887
- filenameBase: "timetable_notes_references",
1888
- filenameExtension: "txt",
1889
- nonstandard: true,
1890
- schema: [
1891
- {
1892
- name: "note_id",
1893
- type: "text",
1894
- prefix: true,
1895
- required: true,
1896
- primary: true
1897
- },
1898
- {
1899
- name: "timetable_id",
1900
- type: "text",
1901
- prefix: true,
1902
- primary: true
1903
- },
1904
- {
1905
- name: "route_id",
1906
- type: "text",
1907
- prefix: true,
1908
- primary: true
1909
- },
1910
- {
1911
- name: "trip_id",
1912
- type: "text",
1913
- prefix: true,
1914
- primary: true
1915
- },
1916
- {
1917
- name: "stop_id",
1918
- type: "text",
1919
- prefix: true,
1920
- primary: true
1921
- },
1922
- {
1923
- name: "stop_sequence",
1924
- type: "integer",
1925
- min: 0,
1926
- primary: true
1927
- },
1928
- {
1929
- name: "show_on_stoptime",
1930
- type: "integer",
1931
- min: 0,
1932
- max: 1
1933
- }
1934
- ]
1935
- };
1936
-
1937
- // src/models/non-standard/trips-dated-vehicle-journey.ts
1938
- var tripsDatedVehicleJourney = {
1939
- filenameBase: "trips_dated_vehicle_journey",
1940
- filenameExtension: "txt",
1941
- nonstandard: true,
1942
- schema: [
1943
- {
1944
- name: "trip_id",
1945
- type: "text",
1946
- required: true,
1947
- index: true,
1948
- prefix: true
1949
- },
1950
- {
1951
- name: "operating_day_date",
1952
- type: "text",
1953
- index: true,
1954
- required: true
1955
- },
1956
- {
1957
- name: "dated_vehicle_journey_gid",
1958
- type: "text",
1959
- required: true
1960
- },
1961
- {
1962
- name: "journey_number",
1963
- type: "integer",
1964
- min: 0,
1965
- max: 65535,
1966
- index: true
1967
- }
1968
- ]
1969
- };
1970
-
1971
- // src/models/gtfs-plus/calendar-attributes.ts
1972
- var calendarAttributes = {
1973
- filenameBase: "calendar_attributes",
1974
- filenameExtension: "txt",
1975
- nonstandard: true,
1976
- extension: "gtfs-plus",
1977
- schema: [
1978
- {
1979
- name: "service_id",
1980
- type: "text",
1981
- primary: true,
1982
- prefix: true
1983
- },
1984
- {
1985
- name: "service_description",
1986
- type: "text",
1987
- required: true,
1988
- nocase: true
1989
- }
1990
- ]
1991
- };
1992
-
1993
- // src/models/gtfs-plus/directions.ts
1994
- var directions = {
1995
- filenameBase: "directions",
1996
- filenameExtension: "txt",
1997
- nonstandard: true,
1998
- extension: "gtfs-plus",
1999
- schema: [
2000
- {
2001
- name: "route_id",
2002
- type: "text",
2003
- required: true,
2004
- primary: true,
2005
- prefix: true
2006
- },
2007
- {
2008
- name: "direction_id",
2009
- type: "integer",
2010
- min: 0,
2011
- max: 1,
2012
- primary: true
2013
- },
2014
- {
2015
- name: "direction",
2016
- type: "text",
2017
- required: true
2018
- }
2019
- ]
2020
- };
2021
-
2022
- // src/models/gtfs-plus/route-attributes.ts
2023
- var routeAttributes = {
2024
- filenameBase: "route_attributes",
2025
- filenameExtension: "txt",
2026
- nonstandard: true,
2027
- extension: "gtfs-plus",
2028
- schema: [
2029
- {
2030
- name: "route_id",
2031
- type: "text",
2032
- primary: true,
2033
- prefix: true
2034
- },
2035
- {
2036
- name: "category",
2037
- type: "integer",
2038
- min: 0,
2039
- required: true
2040
- },
2041
- {
2042
- name: "subcategory",
2043
- type: "integer",
2044
- min: 101,
2045
- required: true
2046
- },
2047
- {
2048
- name: "running_way",
2049
- type: "integer",
2050
- min: 1,
2051
- required: true
2052
- }
2053
- ]
2054
- };
2055
-
2056
- // src/models/gtfs-plus/stop-attributes.ts
2057
- var stopAttributes = {
2058
- filenameBase: "stop_attributes",
2059
- filenameExtension: "txt",
2060
- nonstandard: true,
2061
- extension: "gtfs-plus",
2062
- schema: [
2063
- {
2064
- name: "stop_id",
2065
- type: "text",
2066
- required: true,
2067
- primary: true,
2068
- prefix: true
2069
- },
2070
- {
2071
- name: "accessibility_id",
2072
- type: "integer",
2073
- min: 0
2074
- },
2075
- {
2076
- name: "cardinal_direction",
2077
- type: "text"
2078
- },
2079
- {
2080
- name: "relative_position",
2081
- type: "text"
2082
- },
2083
- {
2084
- name: "stop_city",
2085
- type: "text",
2086
- nocase: true
2087
- }
2088
- ]
2089
- };
2090
-
2091
- // src/models/gtfs-ride/board-alight.ts
2092
- var boardAlight = {
2093
- filenameBase: "board_alight",
2094
- filenameExtension: "txt",
2095
- nonstandard: true,
2096
- extension: "gtfs-ride",
2097
- schema: [
2098
- {
2099
- name: "trip_id",
2100
- type: "text",
2101
- required: true,
2102
- index: true,
2103
- prefix: true
2104
- },
2105
- {
2106
- name: "stop_id",
2107
- type: "text",
2108
- required: true,
2109
- index: true,
2110
- prefix: true
2111
- },
2112
- {
2113
- name: "stop_sequence",
2114
- type: "integer",
2115
- required: true,
2116
- min: 0,
2117
- index: true
2118
- },
2119
- {
2120
- name: "record_use",
2121
- type: "integer",
2122
- required: true,
2123
- min: 0,
2124
- max: 1,
2125
- index: true
2126
- },
2127
- {
2128
- name: "schedule_relationship",
2129
- type: "integer",
2130
- min: 0,
2131
- max: 8
2132
- },
2133
- {
2134
- name: "boardings",
2135
- type: "integer",
2136
- min: 0
2137
- },
2138
- {
2139
- name: "alightings",
2140
- type: "integer",
2141
- min: 0
2142
- },
2143
- {
2144
- name: "current_load",
2145
- type: "integer",
2146
- min: 0
2147
- },
2148
- {
2149
- name: "load_count",
2150
- type: "integer",
2151
- min: 0
2152
- },
2153
- {
2154
- name: "load_type",
2155
- type: "integer",
2156
- min: 0,
2157
- max: 1
2158
- },
2159
- {
2160
- name: "rack_down",
2161
- type: "integer",
2162
- min: 0,
2163
- max: 1
2164
- },
2165
- {
2166
- name: "bike_boardings",
2167
- type: "integer",
2168
- min: 0
2169
- },
2170
- {
2171
- name: "bike_alightings",
2172
- type: "integer",
2173
- min: 0
2174
- },
2175
- {
2176
- name: "ramp_used",
2177
- type: "integer",
2178
- min: 0,
2179
- max: 1
2180
- },
2181
- {
2182
- name: "ramp_boardings",
2183
- type: "integer",
2184
- min: 0
2185
- },
2186
- {
2187
- name: "ramp_alightings",
2188
- type: "integer",
2189
- min: 0
2190
- },
2191
- {
2192
- name: "service_date",
2193
- type: "date",
2194
- index: true
2195
- },
2196
- {
2197
- name: "service_arrival_time",
2198
- type: "time"
2199
- },
2200
- {
2201
- name: "service_departure_time",
2202
- type: "time"
2203
- },
2204
- {
2205
- name: "source",
2206
- type: "integer",
2207
- min: 0,
2208
- max: 4
2209
- }
2210
- ]
2211
- };
2212
-
2213
- // src/models/gtfs-ride/rider-trip.ts
2214
- var riderTrip = {
2215
- filenameBase: "rider_trip",
2216
- filenameExtension: "txt",
2217
- nonstandard: true,
2218
- extension: "gtfs-ride",
2219
- schema: [
2220
- {
2221
- name: "rider_id",
2222
- type: "text",
2223
- primary: true,
2224
- prefix: true
2225
- },
2226
- {
2227
- name: "agency_id",
2228
- type: "text",
2229
- index: true,
2230
- prefix: true
2231
- },
2232
- {
2233
- name: "trip_id",
2234
- type: "text",
2235
- index: true,
2236
- prefix: true
2237
- },
2238
- {
2239
- name: "boarding_stop_id",
2240
- type: "text",
2241
- index: true,
2242
- prefix: true
2243
- },
2244
- {
2245
- name: "boarding_stop_sequence",
2246
- type: "integer",
2247
- min: 0,
2248
- index: true
2249
- },
2250
- {
2251
- name: "alighting_stop_id",
2252
- type: "text",
2253
- index: true,
2254
- prefix: true
2255
- },
2256
- {
2257
- name: "alighting_stop_sequence",
2258
- type: "integer",
2259
- min: 0,
2260
- index: true
2261
- },
2262
- {
2263
- name: "service_date",
2264
- type: "date",
2265
- index: true
2266
- },
2267
- {
2268
- name: "boarding_time",
2269
- type: "time"
2270
- },
2271
- {
2272
- name: "alighting_time",
2273
- type: "time"
2274
- },
2275
- {
2276
- name: "rider_type",
2277
- type: "integer",
2278
- min: 0,
2279
- max: 13
2280
- },
2281
- {
2282
- name: "rider_type_description",
2283
- type: "text"
2284
- },
2285
- {
2286
- name: "fare_paid",
2287
- type: "real"
2288
- },
2289
- {
2290
- name: "transaction_type",
2291
- type: "integer",
2292
- min: 0,
2293
- max: 8
2294
- },
2295
- {
2296
- name: "fare_media",
2297
- type: "integer",
2298
- min: 0,
2299
- max: 9
2300
- },
2301
- {
2302
- name: "accompanying_device",
2303
- type: "integer",
2304
- min: 0,
2305
- max: 6
2306
- },
2307
- {
2308
- name: "transfer_status",
2309
- type: "integer",
2310
- min: 0,
2311
- max: 1
2312
- }
2313
- ]
2314
- };
2315
-
2316
- // src/models/gtfs-ride/ridership.ts
2317
- var ridership = {
2318
- filenameBase: "ridership",
2319
- filenameExtension: "txt",
2320
- nonstandard: true,
2321
- extension: "gtfs-ride",
2322
- schema: [
2323
- {
2324
- name: "total_boardings",
2325
- type: "integer",
2326
- min: 0,
2327
- required: true
2328
- },
2329
- {
2330
- name: "total_alightings",
2331
- type: "integer",
2332
- min: 0,
2333
- required: true
2334
- },
2335
- {
2336
- name: "ridership_start_date",
2337
- type: "date",
2338
- index: true
2339
- },
2340
- {
2341
- name: "ridership_end_date",
2342
- type: "date",
2343
- index: true
2344
- },
2345
- {
2346
- name: "ridership_start_time",
2347
- type: "time"
2348
- },
2349
- {
2350
- name: "ridership_end_time",
2351
- type: "time"
2352
- },
2353
- {
2354
- name: "service_id",
2355
- type: "text",
2356
- index: true,
2357
- prefix: true
2358
- },
2359
- {
2360
- name: "monday",
2361
- type: "integer",
2362
- min: 0,
2363
- max: 1
2364
- },
2365
- {
2366
- name: "tuesday",
2367
- type: "integer",
2368
- min: 0,
2369
- max: 1
2370
- },
2371
- {
2372
- name: "wednesday",
2373
- type: "integer",
2374
- min: 0,
2375
- max: 1
2376
- },
2377
- {
2378
- name: "thursday",
2379
- type: "integer",
2380
- min: 0,
2381
- max: 1
2382
- },
2383
- {
2384
- name: "friday",
2385
- type: "integer",
2386
- min: 0,
2387
- max: 1
2388
- },
2389
- {
2390
- name: "saturday",
2391
- type: "integer",
2392
- min: 0,
2393
- max: 1
2394
- },
2395
- {
2396
- name: "sunday",
2397
- type: "integer",
2398
- min: 0,
2399
- max: 1
2400
- },
2401
- {
2402
- name: "agency_id",
2403
- type: "text",
2404
- index: true,
2405
- prefix: true
2406
- },
2407
- {
2408
- name: "route_id",
2409
- type: "text",
2410
- index: true,
2411
- prefix: true
2412
- },
2413
- {
2414
- name: "direction_id",
2415
- type: "integer",
2416
- min: 0,
2417
- max: 1,
2418
- index: true
2419
- },
2420
- {
2421
- name: "trip_id",
2422
- type: "text",
2423
- prefix: true
2424
- },
2425
- {
2426
- name: "stop_id",
2427
- type: "text",
2428
- prefix: true
2429
- }
2430
- ]
2431
- };
2432
-
2433
- // src/models/gtfs-ride/trip-capacity.ts
2434
- var tripCapacity = {
2435
- filenameBase: "trip_capacity",
2436
- filenameExtension: "txt",
2437
- nonstandard: true,
2438
- extension: "gtfs-ride",
2439
- schema: [
2440
- {
2441
- name: "agency_id",
2442
- type: "text",
2443
- index: true,
2444
- prefix: true
2445
- },
2446
- {
2447
- name: "trip_id",
2448
- type: "text",
2449
- index: true,
2450
- prefix: true
2451
- },
2452
- {
2453
- name: "service_date",
2454
- type: "date",
2455
- index: true
2456
- },
2457
- {
2458
- name: "vehicle_description",
2459
- type: "text"
2460
- },
2461
- {
2462
- name: "seated_capacity",
2463
- type: "integer",
2464
- min: 0
2465
- },
2466
- {
2467
- name: "standing_capacity",
2468
- type: "integer",
2469
- min: 0
2470
- },
2471
- {
2472
- name: "wheelchair_capacity",
2473
- type: "integer",
2474
- min: 0
2475
- },
2476
- {
2477
- name: "bike_capacity",
2478
- type: "integer",
2479
- min: 0
2480
- }
2481
- ]
2482
- };
2483
-
2484
- // src/models/gtfs-ride/ride-feed-info.ts
2485
- var rideFeedInfo = {
2486
- filenameBase: "ride_feed_info",
2487
- filenameExtension: "txt",
2488
- nonstandard: true,
2489
- extension: "gtfs-ride",
2490
- schema: [
2491
- {
2492
- name: "ride_files",
2493
- type: "integer",
2494
- min: 0,
2495
- max: 6,
2496
- required: true
2497
- },
2498
- {
2499
- name: "ride_start_date",
2500
- type: "date",
2501
- index: true
2502
- },
2503
- {
2504
- name: "ride_end_date",
2505
- type: "date",
2506
- index: true
2507
- },
2508
- {
2509
- name: "gtfs_feed_date",
2510
- type: "date",
2511
- index: true
2512
- },
2513
- {
2514
- name: "default_currency_type",
2515
- type: "text"
2516
- },
2517
- {
2518
- name: "ride_feed_version",
2519
- type: "text"
2520
- }
2521
- ]
2522
- };
2523
-
2524
- // src/models/gtfs-realtime/trip-updates.ts
2525
- var tripUpdates = {
2526
- filenameBase: "trip_updates",
2527
- extension: "gtfs-realtime",
2528
- schema: [
2529
- {
2530
- name: "id",
2531
- type: "text",
2532
- required: true,
2533
- primary: true,
2534
- index: true,
2535
- source: "id",
2536
- prefix: true
2537
- },
2538
- {
2539
- name: "vehicle_id",
2540
- type: "text",
2541
- index: true,
2542
- source: "tripUpdate.vehicle.id",
2543
- default: null,
2544
- prefix: true
2545
- },
2546
- {
2547
- name: "trip_id",
2548
- type: "text",
2549
- index: true,
2550
- source: "tripUpdate.trip.tripId",
2551
- default: null,
2552
- prefix: true
2553
- },
2554
- {
2555
- name: "trip_start_time",
2556
- type: "text",
2557
- source: "tripUpdate.trip.startTime",
2558
- default: null
2559
- },
2560
- {
2561
- name: "direction_id",
2562
- type: "integer",
2563
- source: "tripUpdate.trip.directionId",
2564
- default: null
2565
- },
2566
- {
2567
- name: "route_id",
2568
- type: "text",
2569
- index: true,
2570
- source: "tripUpdate.trip.routeId",
2571
- default: null,
2572
- prefix: true
2573
- },
2574
- {
2575
- name: "start_date",
2576
- type: "text",
2577
- source: "tripUpdate.trip.startDate",
2578
- default: null
2579
- },
2580
- {
2581
- name: "timestamp",
2582
- type: "text",
2583
- source: "tripUpdate.timestamp",
2584
- default: null
2585
- },
2586
- {
2587
- name: "schedule_relationship",
2588
- type: "text",
2589
- source: "tripUpdate.trip.scheduleRelationship",
2590
- default: null
2591
- },
2592
- {
2593
- name: "created_timestamp",
2594
- type: "integer",
2595
- required: true
2596
- },
2597
- {
2598
- name: "expiration_timestamp",
2599
- type: "integer",
2600
- required: true
2601
- }
2602
- ]
2603
- };
2604
-
2605
- // src/models/gtfs-realtime/stop-time-updates.ts
2606
- var stopTimeUpdates = {
2607
- filenameBase: "stop_time_updates",
2608
- extension: "gtfs-realtime",
2609
- schema: [
2610
- {
2611
- name: "trip_id",
2612
- type: "text",
2613
- index: true,
2614
- source: "parent.tripUpdate.trip.tripId",
2615
- default: null,
2616
- prefix: true
2617
- },
2618
- {
2619
- name: "trip_start_time",
2620
- type: "text",
2621
- source: "parent.tripUpdate.trip.startTime",
2622
- default: null
2623
- },
2624
- {
2625
- name: "direction_id",
2626
- type: "integer",
2627
- source: "parent.tripUpdate.trip.directionId",
2628
- default: null
2629
- },
2630
- {
2631
- name: "route_id",
2632
- type: "text",
2633
- index: true,
2634
- source: "parent.tripUpdate.trip.routeId",
2635
- default: null,
2636
- prefix: true
2637
- },
2638
- {
2639
- name: "stop_id",
2640
- type: "text",
2641
- index: true,
2642
- source: "stopId",
2643
- default: null,
2644
- prefix: true
2645
- },
2646
- {
2647
- name: "stop_sequence",
2648
- type: "integer",
2649
- source: "stopSequence",
2650
- default: null
2651
- },
2652
- {
2653
- name: "arrival_delay",
2654
- type: "integer",
2655
- source: "arrival.delay",
2656
- default: null
2657
- },
2658
- {
2659
- name: "departure_delay",
2660
- type: "integer",
2661
- source: "departure.delay",
2662
- default: null
2663
- },
2664
- {
2665
- name: "departure_timestamp",
2666
- type: "text",
2667
- source: "departure.time",
2668
- default: null
2669
- },
2670
- {
2671
- name: "arrival_timestamp",
2672
- type: "text",
2673
- source: "arrival.time",
2674
- default: null
2675
- },
2676
- {
2677
- name: "schedule_relationship",
2678
- type: "text",
2679
- source: "scheduleRelationship",
2680
- default: null
2681
- },
2682
- {
2683
- name: "created_timestamp",
2684
- type: "integer",
2685
- required: true
2686
- },
2687
- {
2688
- name: "expiration_timestamp",
2689
- type: "integer",
2690
- required: true
2691
- }
2692
- ]
2693
- };
2694
-
2695
- // src/models/gtfs-realtime/vehicle-positions.ts
2696
- var vehiclePositions = {
2697
- filenameBase: "vehicle_positions",
2698
- extension: "gtfs-realtime",
2699
- schema: [
2700
- {
2701
- name: "id",
2702
- type: "text",
2703
- required: true,
2704
- primary: true,
2705
- index: true,
2706
- source: "id",
2707
- prefix: true
2708
- },
2709
- {
2710
- name: "bearing",
2711
- type: "real",
2712
- source: "vehicle.position.bearing",
2713
- default: null
2714
- },
2715
- {
2716
- name: "latitude",
2717
- type: "real",
2718
- min: -90,
2719
- max: 90,
2720
- source: "vehicle.position.latitude",
2721
- default: null
2722
- },
2723
- {
2724
- name: "longitude",
2725
- type: "real",
2726
- source: "vehicle.position.longitude",
2727
- min: -180,
2728
- max: 180,
2729
- default: null
2730
- },
2731
- {
2732
- name: "speed",
2733
- type: "real",
2734
- min: 0,
2735
- source: "vehicle.position.speed",
2736
- default: null
2737
- },
2738
- {
2739
- name: "current_stop_sequence",
2740
- type: "integer",
2741
- source: "vehicle.currentStopSequence",
2742
- default: null
2743
- },
2744
- {
2745
- name: "trip_id",
2746
- type: "text",
2747
- index: true,
2748
- source: "vehicle.trip.tripId",
2749
- default: null,
2750
- prefix: true
2751
- },
2752
- {
2753
- name: "trip_start_date",
2754
- type: "text",
2755
- index: true,
2756
- source: "vehicle.trip.startDate",
2757
- default: null
2758
- },
2759
- {
2760
- name: "trip_start_time",
2761
- type: "text",
2762
- index: true,
2763
- source: "vehicle.trip.startTime",
2764
- default: null
2765
- },
2766
- {
2767
- name: "congestion_level",
2768
- type: "text",
2769
- source: "vehicle.congestionLevel",
2770
- default: null
2771
- },
2772
- {
2773
- name: "occupancy_status",
2774
- type: "text",
2775
- source: "vehicle.occupancyStatus",
2776
- default: null
2777
- },
2778
- {
2779
- name: "occupancy_percentage",
2780
- type: "integer",
2781
- source: "vehicle.occupancyPercentage",
2782
- default: null
2783
- },
2784
- {
2785
- name: "vehicle_stop_status",
2786
- type: "text",
2787
- source: "vehicle.vehicleStopStatus",
2788
- default: null
2789
- },
2790
- {
2791
- name: "vehicle_id",
2792
- type: "text",
2793
- index: true,
2794
- source: "vehicle.vehicle.id",
2795
- default: null,
2796
- prefix: true
2797
- },
2798
- {
2799
- name: "vehicle_label",
2800
- type: "text",
2801
- source: "vehicle.vehicle.label",
2802
- default: null
2803
- },
2804
- {
2805
- name: "vehicle_license_plate",
2806
- type: "text",
2807
- source: "vehicle.vehicle.licensePlate",
2808
- default: null
2809
- },
2810
- {
2811
- name: "vehicle_wheelchair_accessible",
2812
- type: "text",
2813
- source: "vehicle.vehicle.wheelchairAccessible",
2814
- default: null
2815
- },
2816
- {
2817
- name: "timestamp",
2818
- type: "text",
2819
- source: "vehicle.timestamp",
2820
- default: null
2821
- },
2822
- {
2823
- name: "created_timestamp",
2824
- type: "integer",
2825
- required: true
2826
- },
2827
- {
2828
- name: "expiration_timestamp",
2829
- type: "integer",
2830
- required: true
2831
- }
2832
- ]
2833
- };
2834
-
2835
- // src/models/gtfs-realtime/service-alerts.ts
2836
- var serviceAlerts = {
2837
- filenameBase: "service_alerts",
2838
- extension: "gtfs-realtime",
2839
- schema: [
2840
- {
2841
- name: "id",
2842
- type: "text",
2843
- required: true,
2844
- primary: true,
2845
- index: true,
2846
- source: "id",
2847
- prefix: true
2848
- },
2849
- {
2850
- name: "active_period",
2851
- type: "json",
2852
- source: "alert.activePeriod"
2853
- },
2854
- {
2855
- name: "cause",
2856
- type: "text",
2857
- source: "alert.cause"
2858
- },
2859
- {
2860
- name: "effect",
2861
- type: "text",
2862
- source: "alert.effect"
2863
- },
2864
- {
2865
- name: "url",
2866
- type: "text",
2867
- source: "alert.url.translation[0].text",
2868
- default: ""
2869
- },
2870
- {
2871
- name: "start_time",
2872
- type: "text",
2873
- source: "alert.activePeriod[0].start",
2874
- default: null
2875
- },
2876
- {
2877
- name: "end_time",
2878
- type: "text",
2879
- source: "alert.activePeriod[0].end",
2880
- default: null
2881
- },
2882
- {
2883
- name: "header_text",
2884
- type: "text",
2885
- required: true,
2886
- source: "alert.headerText.translation[0].text",
2887
- default: ""
2888
- },
2889
- {
2890
- name: "description_text",
2891
- type: "text",
2892
- required: true,
2893
- source: "alert.descriptionText.translation[0].text",
2894
- default: ""
2895
- },
2896
- {
2897
- name: "tts_header_text",
2898
- type: "text",
2899
- source: "alert.ttsHeaderText.translation[0].text"
2900
- },
2901
- {
2902
- name: "tts_description_text",
2903
- type: "text",
2904
- source: "alert.ttsDescriptionText.translation[0].text"
2905
- },
2906
- {
2907
- name: "severity_level",
2908
- type: "text",
2909
- source: "alert.severityLevel"
2910
- },
2911
- {
2912
- name: "created_timestamp",
2913
- type: "integer",
2914
- required: true
2915
- },
2916
- {
2917
- name: "expiration_timestamp",
2918
- type: "integer",
2919
- required: true
2920
- }
2921
- ]
2922
- };
2923
-
2924
- // src/models/gtfs-realtime/service-alert-informed_entities.ts
2925
- var serviceAlertInformedEntities = {
2926
- filenameBase: "service_alert_informed_entities",
2927
- extension: "gtfs-realtime",
2928
- schema: [
2929
- {
2930
- name: "alert_id",
2931
- type: "text",
2932
- required: true,
2933
- primary: true,
2934
- source: "parent.id",
2935
- prefix: true
2936
- },
2937
- {
2938
- name: "stop_id",
2939
- type: "text",
2940
- primary: true,
2941
- source: "stopId",
2942
- default: null,
2943
- prefix: true
2944
- },
2945
- {
2946
- name: "route_id",
2947
- type: "text",
2948
- primary: true,
2949
- source: "routeId",
2950
- default: null,
2951
- prefix: true
2952
- },
2953
- {
2954
- name: "route_type",
2955
- type: "integer",
2956
- primary: true,
2957
- source: "routeType",
2958
- default: null
2959
- },
2960
- {
2961
- name: "trip_id",
2962
- type: "text",
2963
- primary: true,
2964
- source: "trip.tripId",
2965
- default: null,
2966
- prefix: true
2967
- },
2968
- {
2969
- name: "direction_id",
2970
- type: "integer",
2971
- primary: true,
2972
- source: "directionId",
2973
- default: null
2974
- },
2975
- {
2976
- name: "created_timestamp",
2977
- type: "integer",
2978
- required: true
2979
- },
2980
- {
2981
- name: "expiration_timestamp",
2982
- type: "integer",
2983
- required: true
2984
- }
2985
- ]
2986
- };
2987
-
2988
- // src/models/ods/deadhead-times.ts
2989
- var deadheadTimes = {
2990
- filenameBase: "deadhead_times",
2991
- filenameExtension: "txt",
2992
- nonstandard: true,
2993
- extension: "ods",
2994
- schema: [
2995
- {
2996
- name: "deadhead_id",
2997
- type: "text",
2998
- required: true,
2999
- index: true,
3000
- primary: true,
3001
- prefix: true
3002
- },
3003
- {
3004
- name: "arrival_time",
3005
- type: "time",
3006
- required: true
3007
- },
3008
- {
3009
- name: "departure_time",
3010
- type: "time",
3011
- required: true
3012
- },
3013
- {
3014
- name: "ops_location_id",
3015
- type: "text",
3016
- prefix: true
3017
- },
3018
- {
3019
- name: "stop_id",
3020
- type: "text",
3021
- prefix: true
3022
- },
3023
- {
3024
- name: "location_sequence",
3025
- type: "integer",
3026
- required: true,
3027
- primary: true,
3028
- min: 0,
3029
- index: true
3030
- },
3031
- {
3032
- name: "shape_dist_traveled",
3033
- type: "real",
3034
- min: 0
3035
- }
3036
- ]
3037
- };
3038
-
3039
- // src/models/ods/deadheads.ts
3040
- var deadheads = {
3041
- filenameBase: "deadheads",
3042
- filenameExtension: "txt",
3043
- nonstandard: true,
3044
- extension: "ods",
3045
- schema: [
3046
- {
3047
- name: "deadhead_id",
3048
- type: "text",
3049
- primary: true,
3050
- required: true,
3051
- prefix: true
3052
- },
3053
- {
3054
- name: "service_id",
3055
- type: "text",
3056
- required: true,
3057
- prefix: true
3058
- },
3059
- {
3060
- name: "block_id",
3061
- type: "text",
3062
- required: true,
3063
- index: true,
3064
- prefix: true
3065
- },
3066
- {
3067
- name: "shape_id",
3068
- type: "text",
3069
- index: true,
3070
- prefix: true
3071
- },
3072
- {
3073
- name: "to_trip_id",
3074
- type: "text",
3075
- index: true,
3076
- prefix: true
3077
- },
3078
- {
3079
- name: "from_trip_id",
3080
- type: "text",
3081
- index: true,
3082
- prefix: true
3083
- },
3084
- {
3085
- name: "to_deadhead_id",
3086
- type: "text",
3087
- index: true,
3088
- prefix: true
3089
- },
3090
- {
3091
- name: "from_deadhead_id",
3092
- type: "text",
3093
- index: true,
3094
- prefix: true
3095
- }
3096
- ]
3097
- };
3098
-
3099
- // src/models/ods/ops-locations.ts
3100
- var opsLocations = {
3101
- filenameBase: "ops_locations",
3102
- filenameExtension: "txt",
3103
- nonstandard: true,
3104
- extension: "ods",
3105
- schema: [
3106
- {
3107
- name: "ops_location_id",
3108
- type: "text",
3109
- primary: true,
3110
- required: true,
3111
- prefix: true
3112
- },
3113
- {
3114
- name: "ops_location_code",
3115
- type: "text"
3116
- },
3117
- {
3118
- name: "ops_location_name",
3119
- type: "text",
3120
- required: true,
3121
- nocase: true
3122
- },
3123
- {
3124
- name: "ops_location_desc",
3125
- type: "text",
3126
- nocase: true
3127
- },
3128
- {
3129
- name: "ops_location_lat",
3130
- type: "real",
3131
- required: true,
3132
- min: -90,
3133
- max: 90
3134
- },
3135
- {
3136
- name: "ops_location_lon",
3137
- type: "real",
3138
- required: true,
3139
- min: -180,
3140
- max: 180
3141
- }
3142
- ]
3143
- };
3144
-
3145
- // src/models/ods/run-events.ts
3146
- var runEvents = {
3147
- filenameBase: "run_event",
3148
- filenameExtension: "txt",
3149
- nonstandard: true,
3150
- extension: "ods",
3151
- schema: [
3152
- {
3153
- name: "run_event_id",
3154
- type: "text",
3155
- primary: true,
3156
- required: true,
3157
- prefix: true
3158
- },
3159
- {
3160
- name: "piece_id",
3161
- type: "text",
3162
- required: true,
3163
- prefix: true
3164
- },
3165
- {
3166
- name: "event_type",
3167
- type: "integer",
3168
- required: true,
3169
- min: 0,
3170
- index: true
3171
- },
3172
- {
3173
- name: "event_name",
3174
- type: "text",
3175
- nocase: true
3176
- },
3177
- {
3178
- name: "event_time",
3179
- type: "text",
3180
- required: true
3181
- },
3182
- {
3183
- name: "event_duration",
3184
- type: "integer",
3185
- required: true,
3186
- min: 0
3187
- },
3188
- {
3189
- name: "event_from_location_type",
3190
- type: "integer",
3191
- min: 0,
3192
- max: 1,
3193
- index: true
3194
- },
3195
- {
3196
- name: "event_from_location_id",
3197
- type: "text",
3198
- prefix: true
3199
- },
3200
- {
3201
- name: "event_to_location_type",
3202
- type: "integer",
3203
- min: 0,
3204
- max: 1,
3205
- index: true
3206
- },
3207
- {
3208
- name: "event_to_location_id",
3209
- type: "text",
3210
- prefix: true
3211
- }
3212
- ]
3213
- };
3214
-
3215
- // src/models/ods/runs-pieces.ts
3216
- var runsPieces = {
3217
- filenameBase: "runs_pieces",
3218
- filenameExtension: "txt",
3219
- nonstandard: true,
3220
- extension: "ods",
3221
- schema: [
3222
- {
3223
- name: "run_id",
3224
- type: "text",
3225
- required: true
3226
- },
3227
- {
3228
- name: "piece_id",
3229
- type: "text",
3230
- primary: true,
3231
- required: true
3232
- },
3233
- {
3234
- name: "start_type",
3235
- type: "integer",
3236
- required: true,
3237
- min: 0,
3238
- max: 2,
3239
- index: true
3240
- },
3241
- {
3242
- name: "start_trip_id",
3243
- type: "text",
3244
- required: true,
3245
- index: true
3246
- },
3247
- {
3248
- name: "start_trip_position",
3249
- type: "integer",
3250
- min: 0
3251
- },
3252
- {
3253
- name: "end_type",
3254
- type: "integer",
3255
- required: true,
3256
- min: 0,
3257
- max: 2,
3258
- index: true
3259
- },
3260
- {
3261
- name: "end_trip_id",
3262
- type: "text",
3263
- required: true,
3264
- index: true
3265
- },
3266
- {
3267
- name: "end_trip_position",
3268
- type: "integer",
3269
- min: 0
3270
- }
3271
- ]
3272
- };
3273
-
3274
- // src/models/tides/devices.ts
3275
- var devices = {
3276
- filenameBase: "devices",
3277
- filenameExtension: "txt",
3278
- nonstandard: true,
3279
- extension: "tides",
3280
- schema: [
3281
- {
3282
- name: "device_id",
3283
- type: "text",
3284
- required: true,
3285
- primary: true
3286
- },
3287
- {
3288
- name: "stop_id",
3289
- type: "text"
3290
- },
3291
- {
3292
- name: "vehicle_id",
3293
- type: "text"
3294
- },
3295
- {
3296
- name: "train_car_id",
3297
- type: "text"
3298
- },
3299
- {
3300
- name: "device_type",
3301
- type: "text"
3302
- },
3303
- {
3304
- name: "device_vendor",
3305
- type: "text"
3306
- },
3307
- {
3308
- name: "device_model",
3309
- type: "text"
3310
- },
3311
- {
3312
- name: "device_location",
3313
- type: "text"
3314
- }
3315
- ]
3316
- };
3317
-
3318
- // src/models/tides/fare-transactions.ts
3319
- var fareTransactions = {
3320
- filenameBase: "fare_transactions",
3321
- filenameExtension: "txt",
3322
- nonstandard: true,
3323
- extension: "tides",
3324
- schema: [
3325
- {
3326
- name: "transaction_id",
3327
- type: "text",
3328
- required: true,
3329
- index: true
3330
- },
3331
- {
3332
- name: "service_date",
3333
- type: "date",
3334
- required: true
3335
- },
3336
- {
3337
- name: "event_timestamp",
3338
- type: "text",
3339
- required: true
3340
- },
3341
- {
3342
- name: "location_ping_id",
3343
- type: "text"
3344
- },
3345
- {
3346
- name: "amount",
3347
- type: "real",
3348
- required: true
3349
- },
3350
- {
3351
- name: "currency_type",
3352
- type: "text"
3353
- },
3354
- {
3355
- name: "fare_action",
3356
- type: "text",
3357
- required: true
3358
- },
3359
- {
3360
- name: "trip_id_performed",
3361
- type: "text"
3362
- },
3363
- {
3364
- name: "trip_id_scheduled",
3365
- type: "text"
3366
- },
3367
- {
3368
- name: "pattern_id",
3369
- type: "text"
3370
- },
3371
- {
3372
- name: "trip_stop_sequence",
3373
- type: "integer",
3374
- min: 1
3375
- },
3376
- {
3377
- name: "scheduled_stop_sequence",
3378
- type: "integer",
3379
- min: 0
3380
- },
3381
- {
3382
- name: "vehicle_id",
3383
- type: "text"
3384
- },
3385
- {
3386
- name: "device_id",
3387
- type: "text"
3388
- },
3389
- {
3390
- name: "fare_id",
3391
- type: "text"
3392
- },
3393
- {
3394
- name: "stop_id",
3395
- type: "text"
3396
- },
3397
- {
3398
- name: "num_riders",
3399
- type: "integer",
3400
- min: 0
3401
- },
3402
- {
3403
- name: "fare_media_id",
3404
- type: "text"
3405
- },
3406
- {
3407
- name: "rider_category",
3408
- type: "text"
3409
- },
3410
- {
3411
- name: "fare_product",
3412
- type: "text"
3413
- },
3414
- {
3415
- name: "fare_period",
3416
- type: "text"
3417
- },
3418
- {
3419
- name: "fare_capped",
3420
- type: "text",
3421
- required: true
3422
- },
3423
- {
3424
- name: "token_id",
3425
- type: "text"
3426
- },
3427
- {
3428
- name: "balance",
3429
- type: "real"
3430
- }
3431
- ]
3432
- };
3433
-
3434
- // src/models/tides/operators.ts
3435
- var operators = {
3436
- filenameBase: "operators",
3437
- filenameExtension: "txt",
3438
- nonstandard: true,
3439
- extension: "tides",
3440
- schema: [
3441
- {
3442
- name: "operator_id",
3443
- type: "text",
3444
- required: true,
3445
- primary: true
3446
- }
3447
- ]
3448
- };
3449
-
3450
- // src/models/tides/passenger-events.ts
3451
- var passengerEvents = {
3452
- filenameBase: "passenger_events",
3453
- filenameExtension: "txt",
3454
- nonstandard: true,
3455
- extension: "tides",
3456
- schema: [
3457
- {
3458
- name: "passenger_event_id",
3459
- type: "text",
3460
- required: true,
3461
- index: true
3462
- },
3463
- {
3464
- name: "service_date",
3465
- type: "date",
3466
- required: true
3467
- },
3468
- {
3469
- name: "event_timestamp",
3470
- type: "text",
3471
- required: true
3472
- },
3473
- {
3474
- name: "location_ping_id",
3475
- type: "text"
3476
- },
3477
- {
3478
- name: "trip_id_performed",
3479
- type: "text"
3480
- },
3481
- {
3482
- name: "trip_id_scheduled",
3483
- type: "text"
3484
- },
3485
- {
3486
- name: "trip_stop_sequence",
3487
- type: "integer",
3488
- min: 1,
3489
- required: true
3490
- },
3491
- {
3492
- name: "scheduled_stop_sequence",
3493
- type: "integer",
3494
- min: 0
3495
- },
3496
- {
3497
- name: "event_type",
3498
- type: "text",
3499
- required: true
3500
- },
3501
- {
3502
- name: "vehicle_id",
3503
- type: "text",
3504
- required: true
3505
- },
3506
- {
3507
- name: "device_id",
3508
- type: "text"
3509
- },
3510
- {
3511
- name: "train_car_id",
3512
- type: "text"
3513
- },
3514
- {
3515
- name: "stop_id",
3516
- type: "text"
3517
- },
3518
- {
3519
- name: "pattern_id",
3520
- type: "text"
3521
- },
3522
- {
3523
- name: "event_count",
3524
- type: "integer",
3525
- min: 0
3526
- }
3527
- ]
3528
- };
3529
-
3530
- // src/models/tides/station-activities.ts
3531
- var stationActivities = {
3532
- filenameBase: "station_activities",
3533
- filenameExtension: "txt",
3534
- nonstandard: true,
3535
- extension: "tides",
3536
- schema: [
3537
- {
3538
- name: "service_date",
3539
- type: "date",
3540
- required: true,
3541
- primary: true
3542
- },
3543
- {
3544
- name: "stop_id",
3545
- type: "text",
3546
- required: true,
3547
- primary: true
3548
- },
3549
- {
3550
- name: "time_period_start",
3551
- type: "text",
3552
- required: true,
3553
- primary: true
3554
- },
3555
- {
3556
- name: "time_period_end",
3557
- type: "text",
3558
- required: true,
3559
- primary: true
3560
- },
3561
- {
3562
- name: "time_period_category",
3563
- type: "text"
3564
- },
3565
- {
3566
- name: "total_entries",
3567
- type: "integer",
3568
- min: 0
3569
- },
3570
- {
3571
- name: "total_exits",
3572
- type: "integer",
3573
- min: 0
3574
- },
3575
- {
3576
- name: "number_of_transactions",
3577
- type: "integer",
3578
- min: 0
3579
- },
3580
- {
3581
- name: "bike_entries",
3582
- type: "integer",
3583
- min: 0
3584
- },
3585
- {
3586
- name: "bike_exits",
3587
- type: "integer",
3588
- min: 0
3589
- },
3590
- {
3591
- name: "ramp_entries",
3592
- type: "integer",
3593
- min: 0
3594
- },
3595
- {
3596
- name: "ramp_exits",
3597
- type: "integer",
3598
- min: 0
3599
- }
3600
- ]
3601
- };
3602
-
3603
- // src/models/tides/stop-visits.ts
3604
- var stopVisits = {
3605
- filenameBase: "stop_visits",
3606
- filenameExtension: "txt",
3607
- nonstandard: true,
3608
- extension: "tides",
3609
- schema: [
3610
- {
3611
- name: "service_date",
3612
- type: "date",
3613
- required: true,
3614
- primary: true
3615
- },
3616
- {
3617
- name: "trip_id_performed",
3618
- type: "text",
3619
- required: true,
3620
- primary: true
3621
- },
3622
- {
3623
- name: "trip_stop_sequence",
3624
- type: "integer",
3625
- min: 1,
3626
- required: true,
3627
- primary: true
3628
- },
3629
- {
3630
- name: "scheduled_stop_sequence",
3631
- type: "integer",
3632
- min: 0
3633
- },
3634
- {
3635
- name: "pattern_id",
3636
- type: "text"
3637
- },
3638
- {
3639
- name: "vehicle_id",
3640
- type: "text"
3641
- },
3642
- {
3643
- name: "dwell",
3644
- type: "integer",
3645
- min: 0
3646
- },
3647
- {
3648
- name: "stop_id",
3649
- type: "text"
3650
- },
3651
- {
3652
- name: "timepoint",
3653
- type: "text"
3654
- },
3655
- {
3656
- name: "schedule_arrival_time",
3657
- type: "text"
3658
- },
3659
- {
3660
- name: "schedule_departure_time",
3661
- type: "text"
3662
- },
3663
- {
3664
- name: "actual_arrival_time",
3665
- type: "text"
3666
- },
3667
- {
3668
- name: "actual_departure_time",
3669
- type: "text"
3670
- },
3671
- {
3672
- name: "distance",
3673
- type: "integer",
3674
- min: 0
3675
- },
3676
- {
3677
- name: "boarding_1",
3678
- type: "integer",
3679
- min: 0
3680
- },
3681
- {
3682
- name: "alighting_1",
3683
- type: "integer",
3684
- min: 0
3685
- },
3686
- {
3687
- name: "boarding_2",
3688
- type: "integer",
3689
- min: 0
3690
- },
3691
- {
3692
- name: "alighting_2",
3693
- type: "integer",
3694
- min: 0
3695
- },
3696
- {
3697
- name: "departure_load",
3698
- type: "integer",
3699
- min: 0
3700
- },
3701
- {
3702
- name: "door_open",
3703
- type: "text"
3704
- },
3705
- {
3706
- name: "door_close",
3707
- type: "text"
3708
- },
3709
- {
3710
- name: "door_status",
3711
- type: "text"
3712
- },
3713
- {
3714
- name: "ramp_deployed_time",
3715
- type: "real",
3716
- min: 0
3717
- },
3718
- {
3719
- name: "ramp_failure",
3720
- type: "text"
3721
- },
3722
- {
3723
- name: "kneel_deployed_time",
3724
- type: "real",
3725
- min: 0
3726
- },
3727
- {
3728
- name: "lift_deployed_time",
3729
- type: "real",
3730
- min: 0
3731
- },
3732
- {
3733
- name: "bike_rack_deployed",
3734
- type: "text"
3735
- },
3736
- {
3737
- name: "bike_load",
3738
- type: "integer",
3739
- min: 0
3740
- },
3741
- {
3742
- name: "revenue",
3743
- type: "real"
3744
- },
3745
- {
3746
- name: "number_of_transactions",
3747
- type: "integer",
3748
- min: 0
3749
- },
3750
- {
3751
- name: "schedule_relationship",
3752
- type: "text"
3753
- }
3754
- ]
3755
- };
3756
-
3757
- // src/models/tides/train-cars.ts
3758
- var trainCars = {
3759
- filenameBase: "train_cars",
3760
- filenameExtension: "txt",
3761
- nonstandard: true,
3762
- extension: "tides",
3763
- schema: [
3764
- {
3765
- name: "train_car_id",
3766
- type: "text",
3767
- required: true,
3768
- primary: true
3769
- },
3770
- {
3771
- name: "model_name",
3772
- type: "text"
3773
- },
3774
- {
3775
- name: "facility_name",
3776
- type: "text"
3777
- },
3778
- {
3779
- name: "capacity_seated",
3780
- type: "integer",
3781
- min: 0
3782
- },
3783
- {
3784
- name: "capacity_wheelchair",
3785
- type: "integer",
3786
- min: 0
3787
- },
3788
- {
3789
- name: "capacity_bike",
3790
- type: "integer",
3791
- min: 0
3792
- },
3793
- {
3794
- name: "bike_rack",
3795
- type: "text"
3796
- },
3797
- {
3798
- name: "capacity_standing",
3799
- type: "integer",
3800
- min: 0
3801
- },
3802
- {
3803
- name: "train_car_type",
3804
- type: "text"
3805
- }
3806
- ]
3807
- };
3808
-
3809
- // src/models/tides/trips-performed.ts
3810
- var tripsPerformed = {
3811
- filenameBase: "trips_performed",
3812
- filenameExtension: "txt",
3813
- nonstandard: true,
3814
- extension: "tides",
3815
- schema: [
3816
- {
3817
- name: "service_date",
3818
- type: "date",
3819
- required: true,
3820
- primary: true
3821
- },
3822
- {
3823
- name: "trip_id_performed",
3824
- type: "text",
3825
- required: true,
3826
- primary: true
3827
- },
3828
- {
3829
- name: "vehicle_id",
3830
- type: "text",
3831
- required: true
3832
- },
3833
- {
3834
- name: "trip_id_scheduled",
3835
- type: "text"
3836
- },
3837
- {
3838
- name: "route_id",
3839
- type: "text"
3840
- },
3841
- {
3842
- name: "route_type",
3843
- type: "text"
3844
- },
3845
- {
3846
- name: "ntd_mode",
3847
- type: "text"
3848
- },
3849
- {
3850
- name: "route_type_agency",
3851
- type: "text"
3852
- },
3853
- {
3854
- name: "shape_id",
3855
- type: "text"
3856
- },
3857
- {
3858
- name: "pattern_id",
3859
- type: "text"
3860
- },
3861
- {
3862
- name: "direction_id",
3863
- type: "integer",
3864
- min: 0,
3865
- max: 1
3866
- },
3867
- {
3868
- name: "operator_id",
3869
- type: "text"
3870
- },
3871
- {
3872
- name: "block_id",
3873
- type: "text"
3874
- },
3875
- {
3876
- name: "trip_start_stop_id",
3877
- type: "text"
3878
- },
3879
- {
3880
- name: "trip_end_stop_id",
3881
- type: "text"
3882
- },
3883
- {
3884
- name: "schedule_trip_start",
3885
- type: "text"
3886
- },
3887
- {
3888
- name: "schedule_trip_end",
3889
- type: "text"
3890
- },
3891
- {
3892
- name: "actual_trip_start",
3893
- type: "text"
3894
- },
3895
- {
3896
- name: "actual_trip_end",
3897
- type: "text"
3898
- },
3899
- {
3900
- name: "trip_type",
3901
- type: "text"
3902
- },
3903
- {
3904
- name: "schedule_relationship",
3905
- type: "text"
3906
- }
3907
- ]
3908
- };
3909
-
3910
- // src/models/tides/vehicle-train-cars.ts
3911
- var vehicleTrainCars = {
3912
- filenameBase: "vehicle_train_cars",
3913
- filenameExtension: "txt",
3914
- nonstandard: true,
3915
- extension: "tides",
3916
- schema: [
3917
- {
3918
- name: "vehicle_id",
3919
- type: "text",
3920
- required: true,
3921
- primary: true
3922
- },
3923
- {
3924
- name: "train_car_id",
3925
- type: "text",
3926
- required: true,
3927
- primary: true
3928
- },
3929
- {
3930
- name: "train_car_order",
3931
- type: "integer",
3932
- min: 0
3933
- },
3934
- {
3935
- name: "operator_id",
3936
- type: "text"
3937
- }
3938
- ]
3939
- };
3940
-
3941
- // src/models/tides/vehicle-locations.ts
3942
- var vehicleLocations = {
3943
- filenameBase: "vehicle_locations",
3944
- filenameExtension: "txt",
3945
- nonstandard: true,
3946
- extension: "tides",
3947
- schema: [
3948
- {
3949
- name: "location_ping_id",
3950
- type: "text",
3951
- required: true,
3952
- primary: true
3953
- },
3954
- {
3955
- name: "service_date",
3956
- type: "date"
3957
- },
3958
- {
3959
- name: "event_timestamp",
3960
- type: "text",
3961
- required: true
3962
- },
3963
- {
3964
- name: "trip_id_performed",
3965
- type: "text"
3966
- },
3967
- {
3968
- name: "trip_id_scheduled",
3969
- type: "text"
3970
- },
3971
- {
3972
- name: "trip_stop_sequence",
3973
- type: "integer",
3974
- min: 1
3975
- },
3976
- {
3977
- name: "scheduled_stop_sequence",
3978
- type: "integer",
3979
- min: 0
3980
- },
3981
- {
3982
- name: "vehicle_id",
3983
- type: "text",
3984
- required: true
3985
- },
3986
- {
3987
- name: "device_id",
3988
- type: "text"
3989
- },
3990
- {
3991
- name: "pattern_id",
3992
- type: "text"
3993
- },
3994
- {
3995
- name: "stop_id",
3996
- type: "text"
3997
- },
3998
- {
3999
- name: "current_status",
4000
- type: "text"
4001
- },
4002
- {
4003
- name: "latitude",
4004
- type: "real",
4005
- min: -90,
4006
- max: 90
4007
- },
4008
- {
4009
- name: "longitude",
4010
- type: "real",
4011
- min: -180,
4012
- max: 180
4013
- },
4014
- {
4015
- name: "gps_quality",
4016
- type: "text"
4017
- },
4018
- {
4019
- name: "heading",
4020
- type: "real",
4021
- min: 0,
4022
- max: 360
4023
- },
4024
- {
4025
- name: "speed",
4026
- type: "real",
4027
- min: 0
4028
- },
4029
- {
4030
- name: "odometer",
4031
- type: "real",
4032
- min: 0
4033
- },
4034
- {
4035
- name: "schedule_deviation",
4036
- type: "integer"
4037
- },
4038
- {
4039
- name: "headway_deviation",
4040
- type: "integer"
4041
- },
4042
- {
4043
- name: "trip_type",
4044
- type: "text"
4045
- },
4046
- {
4047
- name: "schedule_relationship",
4048
- type: "text"
4049
- }
4050
- ]
4051
- };
4052
-
4053
- // src/models/tides/vehicles.ts
4054
- var vehicles = {
4055
- filenameBase: "vehicles",
4056
- filenameExtension: "txt",
4057
- nonstandard: true,
4058
- extension: "tides",
4059
- schema: [
4060
- {
4061
- name: "vehicle_id",
4062
- type: "text",
4063
- required: true,
4064
- primary: true
4065
- },
4066
- {
4067
- name: "vehicle_start",
4068
- type: "text"
4069
- },
4070
- {
4071
- name: "vehicle_end",
4072
- type: "text"
4073
- },
4074
- {
4075
- name: "model_name",
4076
- type: "text"
4077
- },
4078
- {
4079
- name: "facility_name",
4080
- type: "text"
4081
- },
4082
- {
4083
- name: "capacity_seated",
4084
- type: "integer",
4085
- min: 0
4086
- },
4087
- {
4088
- name: "capacity_wheelchair",
4089
- type: "integer",
4090
- min: 0
4091
- },
4092
- {
4093
- name: "capacity_bike",
4094
- type: "integer",
4095
- min: 0
4096
- },
4097
- {
4098
- name: "bike_rack",
4099
- type: "text"
4100
- },
4101
- {
4102
- name: "capacity_standing",
4103
- type: "integer",
4104
- min: 0
4105
- }
4106
- ]
4107
- };
4108
-
4109
- // src/lib/db.ts
4110
- import Database from "better-sqlite3";
4111
-
4112
- // src/lib/errors.ts
4113
- var GtfsError = class extends Error {
4114
- code;
4115
- category;
4116
- isOperational;
4117
- statusCode;
4118
- details;
4119
- constructor(message, options) {
4120
- super(message, { cause: options.cause });
4121
- this.name = "GtfsError";
4122
- this.code = options.code;
4123
- this.category = options.category;
4124
- this.isOperational = options.isOperational ?? true;
4125
- this.statusCode = options.statusCode;
4126
- this.details = options.details;
4127
- }
4128
- };
4129
-
4130
- // src/lib/db.ts
4131
- var dbs = {};
4132
- function setupDb(sqlitePath) {
4133
- const db = new Database(untildify(sqlitePath));
4134
- db.pragma("journal_mode = OFF");
4135
- db.pragma("synchronous = OFF");
4136
- db.pragma("temp_store = MEMORY");
4137
- dbs[sqlitePath] = db;
4138
- return db;
4139
- }
4140
- function openDb(config = null) {
4141
- if (config) {
4142
- const { sqlitePath = ":memory:", db } = config;
4143
- if (db) {
4144
- return db;
4145
- }
4146
- if (dbs[sqlitePath]) {
4147
- return dbs[sqlitePath];
4148
- }
4149
- return setupDb(sqlitePath);
4150
- }
4151
- if (Object.keys(dbs).length === 0) {
4152
- return setupDb(":memory:");
4153
- }
4154
- if (Object.keys(dbs).length === 1) {
4155
- const filename = Object.keys(dbs)[0];
4156
- return dbs[filename];
4157
- }
4158
- if (Object.keys(dbs).length > 1) {
4159
- throw new GtfsError(
4160
- "Multiple databases open, please specify which one to use.",
4161
- {
4162
- code: "GTFS_DB_OPERATION_FAILED" /* GTFS_DB_OPERATION_FAILED */,
4163
- category: "database" /* DATABASE */,
4164
- details: { openDatabaseCount: Object.keys(dbs).length }
4165
- }
4166
- );
4167
- }
4168
- throw new GtfsError("Unable to find database connection.", {
4169
- code: "GTFS_DB_OPERATION_FAILED" /* GTFS_DB_OPERATION_FAILED */,
4170
- category: "database" /* DATABASE */
4171
- });
4172
- }
4173
-
4174
- // src/lib/geojson-utils.ts
4175
- import {
4176
- cloneDeep,
4177
- compact,
4178
- filter,
4179
- groupBy,
4180
- last,
4181
- omit as omit2,
4182
- sortBy,
4183
- omitBy
4184
- } from "lodash-es";
4185
- import { feature, featureCollection } from "@turf/helpers";
4186
-
4187
- // src/lib/import-gtfs-realtime.ts
4188
- import GtfsRealtimeBindings from "gtfs-realtime-bindings";
4189
- import mapSeries from "promise-map-series";
4190
- import { get } from "lodash-es";
4191
-
4192
- // src/lib/utils.ts
4193
- import sqlString from "sqlstring-sqlite";
4194
- import Long from "long";
4195
- function setDefaultConfig(initialConfig) {
4196
- const defaults = {
4197
- sqlitePath: ":memory:",
4198
- ignoreDuplicates: false,
4199
- ignoreErrors: false,
4200
- gtfsRealtimeExpirationSeconds: 0,
4201
- verbose: true,
4202
- downloadTimeout: 3e4
4203
- };
4204
- return {
4205
- ...defaults,
4206
- ...initialConfig
4207
- };
4208
- }
4209
- function formatCurrency(value, currency) {
4210
- const parts = new Intl.NumberFormat(void 0, {
4211
- style: "currency",
4212
- currency
4213
- }).formatToParts(value);
4214
- const integerPart = parts.find((part) => part.type === "integer")?.value ?? "0";
4215
- const fractionPart = parts.find((part) => part.type === "fraction")?.value ?? "";
4216
- return `${integerPart}${fractionPart !== "" ? `.${fractionPart}` : ""}`;
4217
- }
4218
- function pluralize(singularWord, pluralWord, count) {
4219
- return count === 1 ? singularWord : pluralWord;
4220
- }
4221
-
4222
- // src/lib/export.ts
4223
- import path3 from "path";
4224
- import { writeFile as writeFile2 } from "fs/promises";
4225
- import { without, compact as compact2 } from "lodash-es";
4226
- import { stringify } from "csv-stringify";
4227
- import sqlString2 from "sqlstring-sqlite";
4228
- import mapSeries3 from "promise-map-series";
4229
- var getAgencies = (db, config) => {
4230
- try {
4231
- return db.prepare("SELECT agency_name FROM agency;").all();
4232
- } catch {
4233
- if (config.sqlitePath === ":memory:") {
4234
- throw new Error(
4235
- 'No agencies found in SQLite. You are using an in-memory database - if running this from command line be sure to specify a value for `sqlitePath` in config.json other than ":memory:".'
4236
- );
4237
- }
4238
- throw new Error(
4239
- "No agencies found in SQLite. Be sure to first import data into SQLite using `gtfs-import` or `importGtfs(config);`"
4240
- );
4241
- }
4242
- };
4243
- var exportGtfs = async (initialConfig) => {
4244
- const config = setDefaultConfig(initialConfig);
4245
- const db = openDb(config);
4246
- const agencies = getAgencies(db, config);
4247
- const agencyCount = agencies.length;
4248
- if (agencyCount === 0) {
4249
- throw new Error(
4250
- "No agencies found in SQLite. Be sure to first import data into SQLite using `gtfs-import` or `importGtfs(config);`"
4251
- );
4252
- } else if (agencyCount > 1) {
4253
- logWarning(config)(
4254
- "More than one agency is defined in config.json. Export will merge all into one GTFS file."
4255
- );
4256
- }
4257
- log(config)(
4258
- `Starting GTFS export for ${pluralize(
4259
- "agency",
4260
- "agencies",
4261
- agencyCount
4262
- )} using SQLite database at ${config.sqlitePath}`
4263
- );
4264
- const folderName = generateFolderName(agencies[0].agency_name);
4265
- const defaultExportPath = path3.join(process.cwd(), "gtfs-export", folderName);
4266
- const exportPath = untildify(config.exportPath || defaultExportPath);
4267
- await prepDirectory(exportPath);
4268
- const modelsToExport = Object.values(models_exports).filter(
4269
- (model) => model.extension !== "gtfs-realtime"
4270
- );
4271
- const exportedFiles = await mapSeries3(
4272
- modelsToExport,
4273
- async (model) => {
4274
- const filePath = path3.join(
4275
- exportPath,
4276
- `${model.filenameBase}.${model.filenameExtension}`
4277
- );
4278
- const tableName = sqlString2.escapeId(model.filenameBase);
4279
- const lines = db.prepare(`SELECT * FROM ${tableName};`).all();
4280
- if (!lines || lines.length === 0) {
4281
- if (!model.nonstandard) {
4282
- log(config)(
4283
- `Skipping (no data) - ${model.filenameBase}.${model.filenameExtension}\r`
4284
- );
4285
- }
4286
- return;
4287
- }
4288
- if (model.filenameExtension === "txt") {
4289
- const excludeColumns = [];
4290
- if (model.filenameBase === "routes") {
4291
- const routesWithAgencyId = db.prepare(
4292
- "SELECT agency_id FROM routes WHERE agency_id IS NOT NULL;"
4293
- ).all();
4294
- if (!routesWithAgencyId || routesWithAgencyId.length === 0) {
4295
- excludeColumns.push("agency_id");
4296
- }
4297
- } else if (model.filenameBase === "fare_attributes") {
4298
- for (const line of lines) {
4299
- line.price = formatCurrency(
4300
- line.price,
4301
- line.currency_type
4302
- );
4303
- }
4304
- } else if (model.filenameBase === "fare_products") {
4305
- for (const line of lines) {
4306
- line.amount = formatCurrency(
4307
- line.amount,
4308
- line.currency
4309
- );
4310
- }
4311
- }
4312
- const columns = without(
4313
- model.schema.map((column) => column.name),
4314
- ...excludeColumns
4315
- );
4316
- const fileText = await stringify(lines, { columns, header: true });
4317
- await writeFile2(filePath, fileText);
4318
- } else if (model.filenameExtension === "geojson") {
4319
- const fileText = lines?.[0].geojson ?? "";
4320
- await writeFile2(filePath, fileText);
4321
- } else {
4322
- throw new Error(
4323
- `Unexpected filename extension: ${model.filenameExtension}`
4324
- );
4325
- }
4326
- log(config)(
4327
- `Exporting - ${model.filenameBase}.${model.filenameExtension}\r`
4328
- );
4329
- return `${model.filenameBase}.${model.filenameExtension}`;
4330
- }
4331
- );
4332
- if (compact2(exportedFiles).length === 0) {
4333
- log(config)(
4334
- "No GTFS data exported. Be sure to first import data into SQLite."
4335
- );
4336
- return;
4337
- }
4338
- log(config)(`Completed GTFS export to ${exportPath}`);
4339
- log(config)(
4340
- `Completed GTFS export for ${pluralize("agency", "agencies", agencyCount)}
4341
- `
4342
- );
4343
- };
4344
-
4345
- // src/lib/advancedQuery.ts
4346
- import sqlString3 from "sqlstring-sqlite";
4347
-
4348
- // src/lib/gtfs/routes.ts
4349
- import { omit as omit3, pick } from "lodash-es";
4350
-
4351
- // src/lib/gtfs/shapes.ts
4352
- import { compact as compact3, omit as omit4, pick as pick2 } from "lodash-es";
4353
- import { featureCollection as featureCollection2 } from "@turf/helpers";
4354
-
4355
- // src/lib/gtfs/stops.ts
4356
- import { omit as omit5, orderBy, pick as pick3 } from "lodash-es";
4357
-
4358
- // src/lib/gtfs/stop-times.ts
4359
- import { omit as omit6 } from "lodash-es";
4360
- import sqlString4 from "sqlstring-sqlite";
4361
-
4362
- // src/lib/gtfs/trips.ts
4363
- import { omit as omit7 } from "lodash-es";
4364
- import sqlString5 from "sqlstring-sqlite";
4365
-
4366
- // src/bin/gtfs-export.ts
4367
- var pe = new PrettyError();
4368
- var argv = yargs(hideBin(process.argv)).usage("Usage: $0 --configPath ./config.json").help().option("c", {
4369
- alias: "configPath",
4370
- describe: "Path to config file",
4371
- type: "string"
7
+ //#region src/bin/gtfs-export.ts
8
+ const pe = new PrettyError();
9
+ const argv = yargs(hideBin(process.argv)).usage("Usage: $0 --configPath ./config.json").help().option("c", {
10
+ alias: "configPath",
11
+ describe: "Path to config file",
12
+ type: "string"
4372
13
  }).option("sqlitePath", {
4373
- describe: "Path to SQLite database",
4374
- type: "string"
14
+ describe: "Path to SQLite database",
15
+ type: "string"
4375
16
  }).parseSync();
4376
- var handleError = (error = "Unknown Error") => {
4377
- process.stdout.write(`
4378
- ${formatError(error)}
4379
- `);
4380
- console.error(pe.render(error));
4381
- process.exit(1);
17
+ const handleError = (error = "Unknown Error") => {
18
+ process.stdout.write(`\n${formatError(error)}\n`);
19
+ console.error(pe.render(error));
20
+ process.exit(1);
4382
21
  };
4383
- var setupExport = async () => {
4384
- const config = await getConfig(argv);
4385
- await exportGtfs(config);
4386
- process.exit();
22
+ const setupExport = async () => {
23
+ await exportGtfs(await getConfig(argv));
24
+ process.exit();
4387
25
  };
4388
26
  setupExport().catch(handleError);
27
+
28
+ //#endregion
29
+ export { };
4389
30
  //# sourceMappingURL=gtfs-export.js.map