gtfs 4.11.0 → 4.11.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.
- package/CHANGELOG.md +22 -0
- package/README.md +12 -19
- package/lib/export.js +42 -32
- package/lib/geojson-utils.js +9 -0
- package/lib/gtfs/locations.js +32 -0
- package/lib/gtfs.js +4 -0
- package/lib/import.js +55 -27
- package/models/gtfs/agency.js +9 -8
- package/models/gtfs/areas.js +3 -2
- package/models/gtfs/attributions.js +9 -8
- package/models/gtfs/booking-rules.js +11 -10
- package/models/gtfs/calendar-dates.js +3 -2
- package/models/gtfs/calendar.js +2 -1
- package/models/gtfs/fare-attributes.js +4 -3
- package/models/gtfs/fare-leg-rules.js +8 -7
- package/models/gtfs/fare-media.js +3 -2
- package/models/gtfs/fare-products.js +5 -4
- package/models/gtfs/fare-rules.js +6 -5
- package/models/gtfs/fare-transfer-rules.js +5 -4
- package/models/gtfs/feed-info.js +8 -7
- package/models/gtfs/frequencies.js +4 -3
- package/models/gtfs/levels.js +3 -2
- package/models/gtfs/location-group-stops.js +3 -2
- package/models/gtfs/location-groups.js +3 -2
- package/models/gtfs/locations.js +12 -0
- package/models/gtfs/networks.js +3 -2
- package/models/gtfs/pathways.js +6 -5
- package/models/gtfs/route-networks.js +3 -2
- package/models/gtfs/routes.js +10 -9
- package/models/gtfs/shapes.js +2 -1
- package/models/gtfs/stop-areas.js +3 -2
- package/models/gtfs/stop-times.js +11 -10
- package/models/gtfs/stops.js +12 -11
- package/models/gtfs/timeframes.js +5 -4
- package/models/gtfs/transfers.js +7 -6
- package/models/gtfs/translations.js +8 -7
- package/models/gtfs/trips.js +8 -7
- package/models/gtfs-plus/calendar-attributes.js +3 -2
- package/models/gtfs-plus/directions.js +3 -2
- package/models/gtfs-plus/route-attributes.js +2 -1
- package/models/gtfs-plus/stop-attributes.js +5 -4
- package/models/gtfs-realtime/service-alert-targets.js +3 -3
- package/models/gtfs-realtime/service-alerts.js +5 -5
- package/models/gtfs-realtime/stop-time-updates.js +7 -7
- package/models/gtfs-realtime/trip-updates.js +8 -8
- package/models/gtfs-realtime/vehicle-positions.js +12 -12
- package/models/gtfs-ride/board-alight.js +5 -4
- package/models/gtfs-ride/ride-feed-info.js +3 -2
- package/models/gtfs-ride/rider-trip.js +9 -8
- package/models/gtfs-ride/ridership.js +8 -7
- package/models/gtfs-ride/trip-capacity.js +4 -3
- package/models/models.js +2 -0
- package/models/non-standard/timetable-notes-references.js +6 -5
- package/models/non-standard/timetable-notes.js +4 -3
- package/models/non-standard/timetable-pages.js +4 -3
- package/models/non-standard/timetable-stop-order.js +3 -2
- package/models/non-standard/timetables.js +10 -9
- package/models/non-standard/trips-dated-vehicle-journey.js +4 -3
- package/models/ods/deadhead-times.js +6 -5
- package/models/ods/deadheads.js +9 -8
- package/models/ods/ops-locations.js +5 -4
- package/models/ods/run-events.js +7 -6
- package/models/ods/runs-pieces.js +5 -4
- package/package.json +4 -5
- package/test/mocha/export-gtfs.js +5 -2
- package/test/mocha/get-locations.js +71 -0
- package/test/mocha/import-gtfs.js +4 -1
|
@@ -50,7 +50,10 @@ describe('exportGtfs():', function () {
|
|
|
50
50
|
|
|
51
51
|
await Promise.all(
|
|
52
52
|
models.map((model) => {
|
|
53
|
-
const filePath = path.join(
|
|
53
|
+
const filePath = path.join(
|
|
54
|
+
temporaryDir,
|
|
55
|
+
`${model.filenameBase}.${model.filenameExtension}`,
|
|
56
|
+
);
|
|
54
57
|
|
|
55
58
|
// GTFS has optional files
|
|
56
59
|
if (!existsSync(filePath)) {
|
|
@@ -105,7 +108,7 @@ describe('exportGtfs():', function () {
|
|
|
105
108
|
process.cwd(),
|
|
106
109
|
'gtfs-export',
|
|
107
110
|
generateFolderName(agencies[0].agency_name),
|
|
108
|
-
`${model.filenameBase}.
|
|
111
|
+
`${model.filenameBase}.${model.filenameExtension}`,
|
|
109
112
|
);
|
|
110
113
|
|
|
111
114
|
// GTFS has optional files
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* eslint-env mocha */
|
|
2
|
+
|
|
3
|
+
import should from 'should';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { writeFile } from 'node:fs/promises';
|
|
6
|
+
|
|
7
|
+
import config from '../test-config.js';
|
|
8
|
+
import { openDb, closeDb, importGtfs, getLocations } from '../../index.js';
|
|
9
|
+
import { unzip, prepDirectory } from '../../lib/file-utils.js';
|
|
10
|
+
|
|
11
|
+
const temporaryDir = path.join(import.meta.dirname, '../fixture/tmp2/');
|
|
12
|
+
|
|
13
|
+
const locationsConfig = {
|
|
14
|
+
agencies: [
|
|
15
|
+
{
|
|
16
|
+
path: temporaryDir,
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
verbose: false,
|
|
20
|
+
sqlitePath: '/tmp/locations',
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
describe('getLocations():', () => {
|
|
24
|
+
before(async () => {
|
|
25
|
+
openDb(locationsConfig);
|
|
26
|
+
|
|
27
|
+
// Add locations.geojson to test GTFS dataset
|
|
28
|
+
const temporaryDir = path.join(import.meta.dirname, '../fixture/tmp2/');
|
|
29
|
+
await prepDirectory(temporaryDir);
|
|
30
|
+
await unzip(config.agencies[0].path, temporaryDir);
|
|
31
|
+
|
|
32
|
+
const filePath = path.join(temporaryDir, 'locations.geojson');
|
|
33
|
+
const fileText = JSON.stringify({
|
|
34
|
+
type: 'FeatureCollection',
|
|
35
|
+
features: [
|
|
36
|
+
{
|
|
37
|
+
id: '1',
|
|
38
|
+
type: 'Feature',
|
|
39
|
+
properties: {
|
|
40
|
+
stop_desc: 'This is a stop for testing',
|
|
41
|
+
stop_name: 'Test Stop 1',
|
|
42
|
+
},
|
|
43
|
+
geometry: {
|
|
44
|
+
type: 'Point',
|
|
45
|
+
coordinates: [
|
|
46
|
+
[
|
|
47
|
+
[-94.7805702, 44.4560958],
|
|
48
|
+
[-94.7805608, 44.4559928],
|
|
49
|
+
[-94.7805218, 44.4559649],
|
|
50
|
+
],
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
});
|
|
56
|
+
await writeFile(filePath, fileText);
|
|
57
|
+
|
|
58
|
+
await importGtfs(locationsConfig);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
after(() => {
|
|
62
|
+
const db = openDb(locationsConfig);
|
|
63
|
+
closeDb(db);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('should return a single location', () => {
|
|
67
|
+
const results = getLocations({});
|
|
68
|
+
should.exists(results);
|
|
69
|
+
results.should.have.length(1);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
@@ -119,7 +119,10 @@ describe('importGtfs():', function () {
|
|
|
119
119
|
|
|
120
120
|
await Promise.all(
|
|
121
121
|
models.map((model) => {
|
|
122
|
-
const filePath = path.join(
|
|
122
|
+
const filePath = path.join(
|
|
123
|
+
temporaryDir,
|
|
124
|
+
`${model.filenameBase}.${model.filenameExtension}`,
|
|
125
|
+
);
|
|
123
126
|
|
|
124
127
|
// GTFS has optional files
|
|
125
128
|
if (!existsSync(filePath)) {
|