gtfs 4.17.3 → 4.17.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.
@@ -11,16 +11,16 @@ import { hideBin } from "yargs/helpers";
11
11
  import PrettyError from "pretty-error";
12
12
 
13
13
  // src/lib/file-utils.ts
14
- import path from "node:path";
15
- import { existsSync } from "node:fs";
16
- import { mkdir, readFile, rm } from "node:fs/promises";
14
+ import path from "path";
15
+ import { existsSync } from "fs";
16
+ import { mkdir, readFile, rm } from "fs/promises";
17
17
  import { omit, snakeCase } from "lodash-es";
18
18
  import sanitize from "sanitize-filename";
19
19
  import untildify from "untildify";
20
20
  import StreamZip from "node-stream-zip";
21
21
 
22
22
  // src/lib/log-utils.ts
23
- import { clearLine, cursorTo } from "node:readline";
23
+ import { clearLine, cursorTo } from "readline";
24
24
  import { noop } from "lodash-es";
25
25
  import * as colors from "yoctocolors";
26
26
  function log(config) {
@@ -108,6 +108,9 @@ function generateFolderName(folderName) {
108
108
  }
109
109
 
110
110
  // src/lib/import-gtfs.ts
111
+ import path2 from "path";
112
+ import { createReadStream, existsSync as existsSync2, lstatSync } from "fs";
113
+ import { cp, readdir, rename, readFile as readFile2, rm as rm2, writeFile } from "fs/promises";
111
114
  import { parse } from "csv-parse";
112
115
  import pluralize2 from "pluralize";
113
116
  import stripBomStream from "strip-bom-stream";
@@ -129,12 +132,14 @@ __export(models_exports, {
129
132
  calendarDates: () => calendarDates,
130
133
  deadheadTimes: () => deadheadTimes,
131
134
  deadheads: () => deadheads,
135
+ devices: () => devices,
132
136
  directions: () => directions,
133
137
  fareAttributes: () => fareAttributes,
134
138
  fareLegRules: () => fareLegRules,
135
139
  fareMedia: () => fareMedia,
136
140
  fareProducts: () => fareProducts,
137
141
  fareRules: () => fareRules,
142
+ fareTransactions: () => fareTransactions,
138
143
  fareTransferRules: () => fareTransferRules,
139
144
  feedInfo: () => feedInfo,
140
145
  frequencies: () => frequencies,
@@ -143,7 +148,9 @@ __export(models_exports, {
143
148
  locationGroups: () => locationGroups,
144
149
  locations: () => locations,
145
150
  networks: () => networks,
151
+ operators: () => operators,
146
152
  opsLocations: () => opsLocations,
153
+ passengerEvents: () => passengerEvents,
147
154
  pathways: () => pathways,
148
155
  rideFeedInfo: () => rideFeedInfo,
149
156
  riderCategories: () => riderCategories,
@@ -157,10 +164,12 @@ __export(models_exports, {
157
164
  serviceAlertInformedEntities: () => serviceAlertInformedEntities,
158
165
  serviceAlerts: () => serviceAlerts,
159
166
  shapes: () => shapes,
167
+ stationActivities: () => stationActivities,
160
168
  stopAreas: () => stopAreas,
161
169
  stopAttributes: () => stopAttributes,
162
170
  stopTimeUpdates: () => stopTimeUpdates,
163
171
  stopTimes: () => stopTimes,
172
+ stopVisits: () => stopVisits,
164
173
  stops: () => stops,
165
174
  timeframes: () => timeframes,
166
175
  timetableNotes: () => timetableNotes,
@@ -168,13 +177,18 @@ __export(models_exports, {
168
177
  timetablePages: () => timetablePages,
169
178
  timetableStopOrder: () => timetableStopOrder,
170
179
  timetables: () => timetables,
180
+ trainCars: () => trainCars,
171
181
  transfers: () => transfers,
172
182
  translations: () => translations,
173
183
  tripCapacity: () => tripCapacity,
174
184
  tripUpdates: () => tripUpdates,
175
185
  trips: () => trips,
176
186
  tripsDatedVehicleJourney: () => tripsDatedVehicleJourney,
177
- vehiclePositions: () => vehiclePositions
187
+ tripsPerformed: () => tripsPerformed,
188
+ vehicleLocations: () => vehicleLocations,
189
+ vehiclePositions: () => vehiclePositions,
190
+ vehicleTrainCars: () => vehicleTrainCars,
191
+ vehicles: () => vehicles
178
192
  });
179
193
 
180
194
  // src/models/gtfs/agency.ts
@@ -648,6 +662,7 @@ var fareProducts = {
648
662
  {
649
663
  name: "rider_category_id",
650
664
  type: "text",
665
+ primary: true,
651
666
  prefix: true
652
667
  },
653
668
  {
@@ -3222,6 +3237,839 @@ var runsPieces = {
3222
3237
  ]
3223
3238
  };
3224
3239
 
3240
+ // src/models/tides/devices.ts
3241
+ var devices = {
3242
+ filenameBase: "devices",
3243
+ filenameExtension: "txt",
3244
+ nonstandard: true,
3245
+ extension: "tides",
3246
+ schema: [
3247
+ {
3248
+ name: "device_id",
3249
+ type: "text",
3250
+ required: true,
3251
+ primary: true
3252
+ },
3253
+ {
3254
+ name: "stop_id",
3255
+ type: "text"
3256
+ },
3257
+ {
3258
+ name: "vehicle_id",
3259
+ type: "text"
3260
+ },
3261
+ {
3262
+ name: "train_car_id",
3263
+ type: "text"
3264
+ },
3265
+ {
3266
+ name: "device_type",
3267
+ type: "text"
3268
+ },
3269
+ {
3270
+ name: "device_vendor",
3271
+ type: "text"
3272
+ },
3273
+ {
3274
+ name: "device_model",
3275
+ type: "text"
3276
+ },
3277
+ {
3278
+ name: "device_location",
3279
+ type: "text"
3280
+ }
3281
+ ]
3282
+ };
3283
+
3284
+ // src/models/tides/fare-transactions.ts
3285
+ var fareTransactions = {
3286
+ filenameBase: "fare_transactions",
3287
+ filenameExtension: "txt",
3288
+ nonstandard: true,
3289
+ extension: "tides",
3290
+ schema: [
3291
+ {
3292
+ name: "transaction_id",
3293
+ type: "text",
3294
+ required: true,
3295
+ index: true
3296
+ },
3297
+ {
3298
+ name: "service_date",
3299
+ type: "date",
3300
+ required: true
3301
+ },
3302
+ {
3303
+ name: "event_timestamp",
3304
+ type: "text",
3305
+ required: true
3306
+ },
3307
+ {
3308
+ name: "location_ping_id",
3309
+ type: "text"
3310
+ },
3311
+ {
3312
+ name: "amount",
3313
+ type: "real",
3314
+ required: true
3315
+ },
3316
+ {
3317
+ name: "currency_type",
3318
+ type: "text"
3319
+ },
3320
+ {
3321
+ name: "fare_action",
3322
+ type: "text",
3323
+ required: true
3324
+ },
3325
+ {
3326
+ name: "trip_id_performed",
3327
+ type: "text"
3328
+ },
3329
+ {
3330
+ name: "trip_id_scheduled",
3331
+ type: "text"
3332
+ },
3333
+ {
3334
+ name: "pattern_id",
3335
+ type: "text"
3336
+ },
3337
+ {
3338
+ name: "trip_stop_sequence",
3339
+ type: "integer",
3340
+ min: 1
3341
+ },
3342
+ {
3343
+ name: "scheduled_stop_sequence",
3344
+ type: "integer",
3345
+ min: 0
3346
+ },
3347
+ {
3348
+ name: "vehicle_id",
3349
+ type: "text"
3350
+ },
3351
+ {
3352
+ name: "device_id",
3353
+ type: "text"
3354
+ },
3355
+ {
3356
+ name: "fare_id",
3357
+ type: "text"
3358
+ },
3359
+ {
3360
+ name: "stop_id",
3361
+ type: "text"
3362
+ },
3363
+ {
3364
+ name: "num_riders",
3365
+ type: "integer",
3366
+ min: 0
3367
+ },
3368
+ {
3369
+ name: "fare_media_id",
3370
+ type: "text"
3371
+ },
3372
+ {
3373
+ name: "rider_category",
3374
+ type: "text"
3375
+ },
3376
+ {
3377
+ name: "fare_product",
3378
+ type: "text"
3379
+ },
3380
+ {
3381
+ name: "fare_period",
3382
+ type: "text"
3383
+ },
3384
+ {
3385
+ name: "fare_capped",
3386
+ type: "text",
3387
+ required: true
3388
+ },
3389
+ {
3390
+ name: "token_id",
3391
+ type: "text"
3392
+ },
3393
+ {
3394
+ name: "balance",
3395
+ type: "real"
3396
+ }
3397
+ ]
3398
+ };
3399
+
3400
+ // src/models/tides/operators.ts
3401
+ var operators = {
3402
+ filenameBase: "operators",
3403
+ filenameExtension: "txt",
3404
+ nonstandard: true,
3405
+ extension: "tides",
3406
+ schema: [
3407
+ {
3408
+ name: "operator_id",
3409
+ type: "text",
3410
+ required: true,
3411
+ primary: true
3412
+ }
3413
+ ]
3414
+ };
3415
+
3416
+ // src/models/tides/passenger-events.ts
3417
+ var passengerEvents = {
3418
+ filenameBase: "passenger_events",
3419
+ filenameExtension: "txt",
3420
+ nonstandard: true,
3421
+ extension: "tides",
3422
+ schema: [
3423
+ {
3424
+ name: "passenger_event_id",
3425
+ type: "text",
3426
+ required: true,
3427
+ index: true
3428
+ },
3429
+ {
3430
+ name: "service_date",
3431
+ type: "date",
3432
+ required: true
3433
+ },
3434
+ {
3435
+ name: "event_timestamp",
3436
+ type: "text",
3437
+ required: true
3438
+ },
3439
+ {
3440
+ name: "location_ping_id",
3441
+ type: "text"
3442
+ },
3443
+ {
3444
+ name: "trip_id_performed",
3445
+ type: "text"
3446
+ },
3447
+ {
3448
+ name: "trip_id_scheduled",
3449
+ type: "text"
3450
+ },
3451
+ {
3452
+ name: "trip_stop_sequence",
3453
+ type: "integer",
3454
+ min: 1
3455
+ },
3456
+ {
3457
+ name: "scheduled_stop_sequence",
3458
+ type: "integer",
3459
+ min: 0
3460
+ },
3461
+ {
3462
+ name: "event_type",
3463
+ type: "text",
3464
+ required: true
3465
+ },
3466
+ {
3467
+ name: "vehicle_id",
3468
+ type: "text",
3469
+ required: true
3470
+ },
3471
+ {
3472
+ name: "device_id",
3473
+ type: "text"
3474
+ },
3475
+ {
3476
+ name: "train_car_id",
3477
+ type: "text"
3478
+ },
3479
+ {
3480
+ name: "stop_id",
3481
+ type: "text"
3482
+ },
3483
+ {
3484
+ name: "pattern_id",
3485
+ type: "text"
3486
+ },
3487
+ {
3488
+ name: "event_count",
3489
+ type: "integer",
3490
+ min: 0
3491
+ }
3492
+ ]
3493
+ };
3494
+
3495
+ // src/models/tides/station-activities.ts
3496
+ var stationActivities = {
3497
+ filenameBase: "station_activities",
3498
+ filenameExtension: "txt",
3499
+ nonstandard: true,
3500
+ extension: "tides",
3501
+ schema: [
3502
+ {
3503
+ name: "service_date",
3504
+ type: "date",
3505
+ required: true,
3506
+ primary: true
3507
+ },
3508
+ {
3509
+ name: "stop_id",
3510
+ type: "text",
3511
+ required: true,
3512
+ primary: true
3513
+ },
3514
+ {
3515
+ name: "time_period_start",
3516
+ type: "text",
3517
+ required: true,
3518
+ primary: true
3519
+ },
3520
+ {
3521
+ name: "time_period_end",
3522
+ type: "text",
3523
+ required: true,
3524
+ primary: true
3525
+ },
3526
+ {
3527
+ name: "time_period_category",
3528
+ type: "text"
3529
+ },
3530
+ {
3531
+ name: "total_entries",
3532
+ type: "integer",
3533
+ min: 0
3534
+ },
3535
+ {
3536
+ name: "total_exits",
3537
+ type: "integer",
3538
+ min: 0
3539
+ },
3540
+ {
3541
+ name: "number_of_transactions",
3542
+ type: "integer",
3543
+ min: 0
3544
+ },
3545
+ {
3546
+ name: "bike_entries",
3547
+ type: "integer",
3548
+ min: 0
3549
+ },
3550
+ {
3551
+ name: "bike_exits",
3552
+ type: "integer",
3553
+ min: 0
3554
+ },
3555
+ {
3556
+ name: "ramp_entries",
3557
+ type: "integer",
3558
+ min: 0
3559
+ },
3560
+ {
3561
+ name: "ramp_exits",
3562
+ type: "integer",
3563
+ min: 0
3564
+ }
3565
+ ]
3566
+ };
3567
+
3568
+ // src/models/tides/stop-visits.ts
3569
+ var stopVisits = {
3570
+ filenameBase: "stop_visits",
3571
+ filenameExtension: "txt",
3572
+ nonstandard: true,
3573
+ extension: "tides",
3574
+ schema: [
3575
+ {
3576
+ name: "service_date",
3577
+ type: "date",
3578
+ required: true,
3579
+ primary: true
3580
+ },
3581
+ {
3582
+ name: "trip_id_performed",
3583
+ type: "text",
3584
+ required: true,
3585
+ primary: true
3586
+ },
3587
+ {
3588
+ name: "trip_stop_sequence",
3589
+ type: "integer",
3590
+ min: 1,
3591
+ required: true,
3592
+ primary: true
3593
+ },
3594
+ {
3595
+ name: "scheduled_stop_sequence",
3596
+ type: "integer",
3597
+ min: 0
3598
+ },
3599
+ {
3600
+ name: "pattern_id",
3601
+ type: "text"
3602
+ },
3603
+ {
3604
+ name: "vehicle_id",
3605
+ type: "text"
3606
+ },
3607
+ {
3608
+ name: "dwell",
3609
+ type: "integer",
3610
+ min: 0
3611
+ },
3612
+ {
3613
+ name: "stop_id",
3614
+ type: "text"
3615
+ },
3616
+ {
3617
+ name: "timepoint",
3618
+ type: "text"
3619
+ },
3620
+ {
3621
+ name: "schedule_arrival_time",
3622
+ type: "text"
3623
+ },
3624
+ {
3625
+ name: "schedule_departure_time",
3626
+ type: "text"
3627
+ },
3628
+ {
3629
+ name: "actual_arrival_time",
3630
+ type: "text"
3631
+ },
3632
+ {
3633
+ name: "actual_departure_time",
3634
+ type: "text"
3635
+ },
3636
+ {
3637
+ name: "distance",
3638
+ type: "integer",
3639
+ min: 0
3640
+ },
3641
+ {
3642
+ name: "boarding_1",
3643
+ type: "integer",
3644
+ min: 0
3645
+ },
3646
+ {
3647
+ name: "alighting_1",
3648
+ type: "integer",
3649
+ min: 0
3650
+ },
3651
+ {
3652
+ name: "boarding_2",
3653
+ type: "integer",
3654
+ min: 0
3655
+ },
3656
+ {
3657
+ name: "alighting_2",
3658
+ type: "integer",
3659
+ min: 0
3660
+ },
3661
+ {
3662
+ name: "departure_load",
3663
+ type: "integer",
3664
+ min: 0
3665
+ },
3666
+ {
3667
+ name: "door_open",
3668
+ type: "text"
3669
+ },
3670
+ {
3671
+ name: "door_close",
3672
+ type: "text"
3673
+ },
3674
+ {
3675
+ name: "door_status",
3676
+ type: "text"
3677
+ },
3678
+ {
3679
+ name: "ramp_deployed_time",
3680
+ type: "text"
3681
+ },
3682
+ {
3683
+ name: "ramp_failure",
3684
+ type: "text"
3685
+ },
3686
+ {
3687
+ name: "kneel_deployed_time",
3688
+ type: "integer",
3689
+ min: 0
3690
+ },
3691
+ {
3692
+ name: "lift_deployed_time",
3693
+ type: "integer",
3694
+ min: 0
3695
+ },
3696
+ {
3697
+ name: "bike_rack_deployed",
3698
+ type: "text"
3699
+ },
3700
+ {
3701
+ name: "bike_load",
3702
+ type: "integer",
3703
+ min: 0
3704
+ },
3705
+ {
3706
+ name: "revenue",
3707
+ type: "real"
3708
+ },
3709
+ {
3710
+ name: "number_of_transactions",
3711
+ type: "integer",
3712
+ min: 0
3713
+ },
3714
+ {
3715
+ name: "schedule_relationship",
3716
+ type: "text"
3717
+ }
3718
+ ]
3719
+ };
3720
+
3721
+ // src/models/tides/train-cars.ts
3722
+ var trainCars = {
3723
+ filenameBase: "train_cars",
3724
+ filenameExtension: "txt",
3725
+ nonstandard: true,
3726
+ extension: "tides",
3727
+ schema: [
3728
+ {
3729
+ name: "train_car_id",
3730
+ type: "text",
3731
+ required: true,
3732
+ primary: true
3733
+ },
3734
+ {
3735
+ name: "model_name",
3736
+ type: "text"
3737
+ },
3738
+ {
3739
+ name: "facility_name",
3740
+ type: "text"
3741
+ },
3742
+ {
3743
+ name: "capacity_seated",
3744
+ type: "integer",
3745
+ min: 0
3746
+ },
3747
+ {
3748
+ name: "capacity_wheelchair",
3749
+ type: "integer",
3750
+ min: 0
3751
+ },
3752
+ {
3753
+ name: "capacity_bike",
3754
+ type: "integer",
3755
+ min: 0
3756
+ },
3757
+ {
3758
+ name: "bike_rack",
3759
+ type: "text"
3760
+ },
3761
+ {
3762
+ name: "capacity_standing",
3763
+ type: "integer",
3764
+ min: 0
3765
+ },
3766
+ {
3767
+ name: "train_car_type",
3768
+ type: "text"
3769
+ }
3770
+ ]
3771
+ };
3772
+
3773
+ // src/models/tides/trips-performed.ts
3774
+ var tripsPerformed = {
3775
+ filenameBase: "trips_performed",
3776
+ filenameExtension: "txt",
3777
+ nonstandard: true,
3778
+ extension: "tides",
3779
+ schema: [
3780
+ {
3781
+ name: "service_date",
3782
+ type: "date",
3783
+ required: true,
3784
+ primary: true
3785
+ },
3786
+ {
3787
+ name: "trip_id_performed",
3788
+ type: "text",
3789
+ required: true,
3790
+ primary: true
3791
+ },
3792
+ {
3793
+ name: "vehicle_id",
3794
+ type: "text",
3795
+ required: true
3796
+ },
3797
+ {
3798
+ name: "trip_id_scheduled",
3799
+ type: "text"
3800
+ },
3801
+ {
3802
+ name: "route_id",
3803
+ type: "text"
3804
+ },
3805
+ {
3806
+ name: "route_type",
3807
+ type: "text"
3808
+ },
3809
+ {
3810
+ name: "ntd_mode",
3811
+ type: "text"
3812
+ },
3813
+ {
3814
+ name: "route_type_agency",
3815
+ type: "text"
3816
+ },
3817
+ {
3818
+ name: "shape_id",
3819
+ type: "text"
3820
+ },
3821
+ {
3822
+ name: "pattern_id",
3823
+ type: "text"
3824
+ },
3825
+ {
3826
+ name: "direction_id",
3827
+ type: "integer",
3828
+ min: 0,
3829
+ max: 1
3830
+ },
3831
+ {
3832
+ name: "operator_id",
3833
+ type: "text"
3834
+ },
3835
+ {
3836
+ name: "block_id",
3837
+ type: "text"
3838
+ },
3839
+ {
3840
+ name: "trip_start_stop_id",
3841
+ type: "text"
3842
+ },
3843
+ {
3844
+ name: "trip_end_stop_id",
3845
+ type: "text"
3846
+ },
3847
+ {
3848
+ name: "schedule_trip_start",
3849
+ type: "text"
3850
+ },
3851
+ {
3852
+ name: "schedule_trip_end",
3853
+ type: "text"
3854
+ },
3855
+ {
3856
+ name: "actual_trip_start",
3857
+ type: "text"
3858
+ },
3859
+ {
3860
+ name: "actual_trip_end",
3861
+ type: "text"
3862
+ },
3863
+ {
3864
+ name: "trip_type",
3865
+ type: "text"
3866
+ },
3867
+ {
3868
+ name: "schedule_relationship",
3869
+ type: "text"
3870
+ }
3871
+ ]
3872
+ };
3873
+
3874
+ // src/models/tides/vehicle-train-cars.ts
3875
+ var vehicleTrainCars = {
3876
+ filenameBase: "vehicle_train_cars",
3877
+ filenameExtension: "txt",
3878
+ nonstandard: true,
3879
+ extension: "tides",
3880
+ schema: [
3881
+ {
3882
+ name: "vehicle_id",
3883
+ type: "text",
3884
+ required: true,
3885
+ primary: true
3886
+ },
3887
+ {
3888
+ name: "train_car_id",
3889
+ type: "text",
3890
+ required: true,
3891
+ primary: true
3892
+ },
3893
+ {
3894
+ name: "train_car_order",
3895
+ type: "integer",
3896
+ min: 0
3897
+ },
3898
+ {
3899
+ name: "operator_id",
3900
+ type: "text"
3901
+ }
3902
+ ]
3903
+ };
3904
+
3905
+ // src/models/tides/vehicle-locations.ts
3906
+ var vehicleLocations = {
3907
+ filenameBase: "vehicle_locations",
3908
+ filenameExtension: "txt",
3909
+ nonstandard: true,
3910
+ extension: "tides",
3911
+ schema: [
3912
+ {
3913
+ name: "location_ping_id",
3914
+ type: "text",
3915
+ required: true,
3916
+ primary: true
3917
+ },
3918
+ {
3919
+ name: "service_date",
3920
+ type: "date"
3921
+ },
3922
+ {
3923
+ name: "event_timestamp",
3924
+ type: "text",
3925
+ required: true
3926
+ },
3927
+ {
3928
+ name: "trip_id_performed",
3929
+ type: "text"
3930
+ },
3931
+ {
3932
+ name: "trip_id_scheduled",
3933
+ type: "text"
3934
+ },
3935
+ {
3936
+ name: "trip_stop_sequence",
3937
+ type: "integer",
3938
+ min: 1
3939
+ },
3940
+ {
3941
+ name: "scheduled_stop_sequence",
3942
+ type: "integer",
3943
+ min: 0
3944
+ },
3945
+ {
3946
+ name: "vehicle_id",
3947
+ type: "text",
3948
+ required: true
3949
+ },
3950
+ {
3951
+ name: "device_id",
3952
+ type: "text"
3953
+ },
3954
+ {
3955
+ name: "pattern_id",
3956
+ type: "text"
3957
+ },
3958
+ {
3959
+ name: "stop_id",
3960
+ type: "text"
3961
+ },
3962
+ {
3963
+ name: "current_status",
3964
+ type: "text"
3965
+ },
3966
+ {
3967
+ name: "latitude",
3968
+ type: "real",
3969
+ min: -90,
3970
+ max: 90
3971
+ },
3972
+ {
3973
+ name: "longitude",
3974
+ type: "real",
3975
+ min: -180,
3976
+ max: 180
3977
+ },
3978
+ {
3979
+ name: "gps_quality",
3980
+ type: "text"
3981
+ },
3982
+ {
3983
+ name: "heading",
3984
+ type: "real",
3985
+ min: 0,
3986
+ max: 360
3987
+ },
3988
+ {
3989
+ name: "speed",
3990
+ type: "real",
3991
+ min: 0
3992
+ },
3993
+ {
3994
+ name: "odometer",
3995
+ type: "real",
3996
+ min: 0
3997
+ },
3998
+ {
3999
+ name: "schedule_deviation",
4000
+ type: "integer"
4001
+ },
4002
+ {
4003
+ name: "headway_deviation",
4004
+ type: "integer"
4005
+ },
4006
+ {
4007
+ name: "trip_type",
4008
+ type: "text"
4009
+ },
4010
+ {
4011
+ name: "schedule_relationship",
4012
+ type: "text"
4013
+ }
4014
+ ]
4015
+ };
4016
+
4017
+ // src/models/tides/vehicles.ts
4018
+ var vehicles = {
4019
+ filenameBase: "vehicles",
4020
+ filenameExtension: "txt",
4021
+ nonstandard: true,
4022
+ extension: "tides",
4023
+ schema: [
4024
+ {
4025
+ name: "vehicle_id",
4026
+ type: "text",
4027
+ required: true,
4028
+ primary: true
4029
+ },
4030
+ {
4031
+ name: "vehicle_start",
4032
+ type: "text"
4033
+ },
4034
+ {
4035
+ name: "vehicle_end",
4036
+ type: "text"
4037
+ },
4038
+ {
4039
+ name: "model_name",
4040
+ type: "text"
4041
+ },
4042
+ {
4043
+ name: "facility_name",
4044
+ type: "text"
4045
+ },
4046
+ {
4047
+ name: "capacity_seated",
4048
+ type: "integer",
4049
+ min: 0
4050
+ },
4051
+ {
4052
+ name: "capacity_wheelchair",
4053
+ type: "integer",
4054
+ min: 0
4055
+ },
4056
+ {
4057
+ name: "capacity_bike",
4058
+ type: "integer",
4059
+ min: 0
4060
+ },
4061
+ {
4062
+ name: "bike_rack",
4063
+ type: "text"
4064
+ },
4065
+ {
4066
+ name: "capacity_standing",
4067
+ type: "integer",
4068
+ min: 0
4069
+ }
4070
+ ]
4071
+ };
4072
+
3225
4073
  // src/lib/db.ts
3226
4074
  import Database from "better-sqlite3";
3227
4075
  import untildify2 from "untildify";
@@ -3306,8 +4154,8 @@ function formatCurrency(value, currency) {
3306
4154
  }
3307
4155
 
3308
4156
  // src/lib/export.ts
3309
- import path2 from "node:path";
3310
- import { writeFile } from "node:fs/promises";
4157
+ import path3 from "path";
4158
+ import { writeFile as writeFile2 } from "fs/promises";
3311
4159
  import { without, compact as compact2 } from "lodash-es";
3312
4160
  import pluralize3 from "pluralize";
3313
4161
  import { stringify } from "csv-stringify";
@@ -3350,7 +4198,7 @@ var exportGtfs = async (initialConfig) => {
3350
4198
  )} using SQLite database at ${config.sqlitePath}`
3351
4199
  );
3352
4200
  const folderName = generateFolderName(agencies[0].agency_name);
3353
- const defaultExportPath = path2.join(process.cwd(), "gtfs-export", folderName);
4201
+ const defaultExportPath = path3.join(process.cwd(), "gtfs-export", folderName);
3354
4202
  const exportPath = untildify4(config.exportPath || defaultExportPath);
3355
4203
  await prepDirectory(exportPath);
3356
4204
  const modelsToExport = Object.values(models_exports).filter(
@@ -3359,7 +4207,7 @@ var exportGtfs = async (initialConfig) => {
3359
4207
  const exportedFiles = await mapSeries3(
3360
4208
  modelsToExport,
3361
4209
  async (model) => {
3362
- const filePath = path2.join(
4210
+ const filePath = path3.join(
3363
4211
  exportPath,
3364
4212
  `${model.filenameBase}.${model.filenameExtension}`
3365
4213
  );
@@ -3396,10 +4244,10 @@ var exportGtfs = async (initialConfig) => {
3396
4244
  ...excludeColumns
3397
4245
  );
3398
4246
  const fileText = await stringify(lines, { columns, header: true });
3399
- await writeFile(filePath, fileText);
4247
+ await writeFile2(filePath, fileText);
3400
4248
  } else if (model.filenameExtension === "geojson") {
3401
4249
  const fileText = lines?.[0].geojson ?? "";
3402
- await writeFile(filePath, fileText);
4250
+ await writeFile2(filePath, fileText);
3403
4251
  } else {
3404
4252
  throw new Error(
3405
4253
  `Unexpected filename extension: ${model.filenameExtension}`