Skip to content

Commit cc411a1

Browse files
Merge pull request #78 from linkedconnections/development
v2.2.0
2 parents f619464 + e194687 commit cc411a1

File tree

12 files changed

+1020
-561
lines changed

12 files changed

+1020
-561
lines changed

.github/workflows/build-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
runs-on: ubuntu-latest
1515
strategy:
1616
matrix:
17-
node-version: [16.x, 18.x]
17+
node-version: [18.x, 20.x]
1818
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
1919
steps:
2020
- name: Checkout

jest.config.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

jest.polyfills.js

Lines changed: 0 additions & 30 deletions
This file was deleted.

lib/Connections2CSV.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
const { Transform } = require('stream');
1+
import { Transform } from 'stream';
22

3-
class Connections2CSV extends Transform {
3+
export class Connections2CSV extends Transform {
44
constructor() {
55
super({ objectMode: true });
66
this._headerStreamed = false;
@@ -26,6 +26,4 @@ class Connections2CSV extends Transform {
2626
set headerStreamed(value) {
2727
this._headerStreamed = value;
2828
}
29-
}
30-
31-
module.exports = Connections2CSV;
29+
}

lib/Connections2JSONLD.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
const { Transform } = require('stream');
2-
const uri_templates = require('uri-templates');
3-
const Utils = require('./Utils');
1+
import { Transform } from 'stream';
2+
import utpl from 'uri-templates';
3+
import Utils from './Utils';
44

5-
class Connections2JSONLD extends Transform {
5+
export class Connections2JSONLD extends Transform {
66
constructor(streamContext, templates) {
77
super({ objectMode: true });
88
this._streamContext = streamContext || false;
@@ -60,10 +60,10 @@ class Connections2JSONLD extends Transform {
6060
}
6161

6262
// Predefined URI templates
63-
const stopTemplate = uri_templates(this.templates['stop']);
64-
const routeTemplate = uri_templates(this.templates['route']);
65-
const tripTemplate = uri_templates(this.templates['trip']);
66-
const connectionTemplate = uri_templates(this.templates['connection']);
63+
const stopTemplate = utpl(this.templates['stop']);
64+
const routeTemplate = utpl(this.templates['route']);
65+
const tripTemplate = utpl(this.templates['trip']);
66+
const connectionTemplate = utpl(this.templates['connection']);
6767

6868
// Resolve values for URIs
6969
const departureStopURI = Utils.resolveURI(stopTemplate, conn, this.templates['resolve'], "departureStop");
@@ -111,5 +111,3 @@ class Connections2JSONLD extends Transform {
111111
return this._templates;
112112
}
113113
}
114-
115-
module.exports = Connections2JSONLD;

lib/Connections2Triples.js

Lines changed: 64 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
const { Transform } = require('stream');
2-
const N3 = require('n3');
3-
const { DataFactory } = N3;
4-
const { namedNode, literal, quad } = DataFactory;
5-
const uri_templates = require('uri-templates');
6-
const Utils = require('./Utils');
1+
import { Transform } from 'stream';
2+
import utpl from 'uri-templates';
3+
import Utils from './Utils';
4+
import { DataFactory } from "rdf-data-factory";
75

8-
class Connections2Triples extends Transform {
6+
const df = new DataFactory();
7+
8+
export class Connections2Triples extends Transform {
99
constructor(templates) {
1010
super({ objectMode: true });
1111
this._templates = templates;
1212
}
1313

1414
_transform(conn, encoding, done) {
1515
// Predefined URI templates
16-
const stopTemplate = uri_templates(this.templates['stop']);
17-
const routeTemplate = uri_templates(this.templates['route']);
18-
const tripTemplate = uri_templates(this.templates['trip']);
19-
const connectionTemplate = uri_templates(this.templates['connection']);
16+
const stopTemplate = utpl(this.templates['stop']);
17+
const routeTemplate = utpl(this.templates['route']);
18+
const tripTemplate = utpl(this.templates['trip']);
19+
const connectionTemplate = utpl(this.templates['connection']);
2020

2121
// Resolve values for URIs
2222
const departureStopURI = Utils.resolveURI(stopTemplate, conn, this.templates['resolve'], "departureStop");
@@ -30,74 +30,74 @@ class Connections2Triples extends Transform {
3030

3131
if (conn['type'] === 'Connection') {
3232
this.push(
33-
quad(
34-
namedNode(connectionURI),
35-
namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
36-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#Connection')));
33+
df.quad(
34+
df.namedNode(connectionURI),
35+
df.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
36+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#Connection')));
3737
} else {
3838
this.push(
39-
quad(
40-
namedNode(connectionURI),
41-
namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
42-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#CancelledConnection')));
39+
df.quad(
40+
df.namedNode(connectionURI),
41+
df.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
42+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#CancelledConnection')));
4343
}
4444

4545
this.push(
46-
quad(
47-
namedNode(connectionURI),
48-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#departureStop'),
49-
namedNode(departureStopURI)));
46+
df.quad(
47+
df.namedNode(connectionURI),
48+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#departureStop'),
49+
df.namedNode(departureStopURI)));
5050
this.push(
51-
quad(
52-
namedNode(connectionURI),
53-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#arrivalStop'),
54-
namedNode(arrivalStopURI)));
51+
df.quad(
52+
df.namedNode(connectionURI),
53+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#arrivalStop'),
54+
df.namedNode(arrivalStopURI)));
5555
this.push(
56-
quad(
57-
namedNode(connectionURI),
58-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#departureTime'),
59-
literal(conn['departureTime'].toISOString(), namedNode('http://www.w3.org/2001/XMLSchema#dateTime'))));
56+
df.quad(
57+
df.namedNode(connectionURI),
58+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#departureTime'),
59+
df.literal(conn['departureTime'].toISOString(), df.namedNode('http://www.w3.org/2001/XMLSchema#dateTime'))));
6060
this.push(
61-
quad(
62-
namedNode(connectionURI),
63-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#arrivalTime'),
64-
literal(conn['arrivalTime'].toISOString(), namedNode('http://www.w3.org/2001/XMLSchema#dateTime'))));
61+
df.quad(
62+
df.namedNode(connectionURI),
63+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#arrivalTime'),
64+
df.literal(conn['arrivalTime'].toISOString(), df.namedNode('http://www.w3.org/2001/XMLSchema#dateTime'))));
6565
this.push(
66-
quad(
67-
namedNode(connectionURI),
68-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#departureDelay'),
69-
literal(conn['departureDelay'], namedNode('http://www.w3.org/2001/XMLSchema#integer'))));
66+
df.quad(
67+
df.namedNode(connectionURI),
68+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#departureDelay'),
69+
df.literal(conn['departureDelay'], df.namedNode('http://www.w3.org/2001/XMLSchema#integer'))));
7070
this.push(
71-
quad(
72-
namedNode(connectionURI),
73-
namedNode('http://semweb.mmlab.be/ns/linkedconnections#arrivalDelay'),
74-
literal(conn['arrivalDelay'], namedNode('http://www.w3.org/2001/XMLSchema#integer'))));
71+
df.quad(
72+
df.namedNode(connectionURI),
73+
df.namedNode('http://semweb.mmlab.be/ns/linkedconnections#arrivalDelay'),
74+
df.literal(conn['arrivalDelay'], df.namedNode('http://www.w3.org/2001/XMLSchema#integer'))));
7575
this.push(
76-
quad(
77-
namedNode(connectionURI),
78-
namedNode('http://vocab.gtfs.org/terms#headsign'),
79-
literal(conn['headsign'], namedNode('http://www.w3.org/2001/XMLSchema#string'))));
76+
df.quad(
77+
df.namedNode(connectionURI),
78+
df.namedNode('http://vocab.gtfs.org/terms#headsign'),
79+
df.literal(conn['headsign'], df.namedNode('http://www.w3.org/2001/XMLSchema#string'))));
8080
this.push(
81-
quad(
82-
namedNode(connectionURI),
83-
namedNode('http://vocab.gtfs.org/terms#trip'),
84-
namedNode(tripURI)));
81+
df.quad(
82+
df.namedNode(connectionURI),
83+
df.namedNode('http://vocab.gtfs.org/terms#trip'),
84+
df.namedNode(tripURI)));
8585
this.push(
86-
quad(
87-
namedNode(connectionURI),
88-
namedNode('http://vocab.gtfs.org/terms#route'),
89-
namedNode(routeURI)));
86+
df.quad(
87+
df.namedNode(connectionURI),
88+
df.namedNode('http://vocab.gtfs.org/terms#route'),
89+
df.namedNode(routeURI)));
9090
this.push(
91-
quad(
92-
namedNode(connectionURI),
93-
namedNode('http://vocab.gtfs.org/terms#dropOffType'),
94-
namedNode(dropOffType)
91+
df.quad(
92+
df.namedNode(connectionURI),
93+
df.namedNode('http://vocab.gtfs.org/terms#dropOffType'),
94+
df.namedNode(dropOffType)
9595
));
9696
this.push(
97-
quad(
98-
namedNode(connectionURI),
99-
namedNode('http://vocab.gtfs.org/terms#pickupType'),
100-
namedNode(pickupType)
97+
df.quad(
98+
df.namedNode(connectionURI),
99+
df.namedNode('http://vocab.gtfs.org/terms#pickupType'),
100+
df.namedNode(pickupType)
101101
));
102102

103103
done(null);
@@ -106,6 +106,4 @@ class Connections2Triples extends Transform {
106106
get templates() {
107107
return this._templates;
108108
}
109-
}
110-
111-
module.exports = Connections2Triples;
109+
}

lib/GtfsIndex.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
const { URL } = require('url');
2-
const { request } = require('undici');
3-
const util = require('util');
4-
const fs = require('fs');
5-
const csv = require('fast-csv');
6-
const del = require('del');
7-
const childProcess = require('child_process');
8-
const { Level } = require('level');
9-
const Utils = require('./Utils');
1+
import { URL } from 'url';
2+
import { request } from 'undici';
3+
import util from 'util';
4+
import fs from 'fs';
5+
import { parse as parseCsv } from 'fast-csv';
6+
import { deleteAsync as del } from 'del';
7+
import childProcess from 'child_process';
8+
import { Level } from 'level';
9+
import Utils from './Utils';
1010

1111
const exec = util.promisify(childProcess.exec);
1212

13-
class GtfsIndex {
13+
export class GtfsIndex {
1414
constructor(options) {
1515
this._path = options.path;
1616
this._auxPath = options.auxPath || '.tmp';
@@ -171,7 +171,7 @@ class GtfsIndex {
171171
async createIndex(path, map, key, tpr) {
172172
if (fs.existsSync(path)) {
173173
let stream = fs.createReadStream(path, { encoding: 'utf8', objectMode: true })
174-
.pipe(csv.parse({ objectMode: true, headers: true }))
174+
.pipe(parseCsv({ objectMode: true, headers: true }))
175175
.on('error', err => { throw err; });
176176

177177
for await (const data of stream) {
@@ -212,7 +212,7 @@ class GtfsIndex {
212212
let currentTrip = [];
213213

214214
let stream = fs.createReadStream(path, { encoding: 'utf8', objectMode: true })
215-
.pipe(csv.parse({ objectMode: true, headers: true }))
215+
.pipe(parseCsv({ objectMode: true, headers: true }))
216216
.on('error', err => { throw err });
217217

218218
for await (const data of stream) {
@@ -248,7 +248,7 @@ class GtfsIndex {
248248

249249
async processCalendarDates(path, map) {
250250
let stream = fs.createReadStream(path, { encoding: 'utf8', objectMode: true })
251-
.pipe(csv.parse({ objectMode: true, headers: true }))
251+
.pipe(parseCsv({ objectMode: true, headers: true }))
252252
.on('error', err => { throw err });
253253

254254
for await (const data of stream) {
@@ -329,5 +329,3 @@ class GtfsIndex {
329329
return this._headers;
330330
}
331331
}
332-
333-
module.exports = GtfsIndex;

0 commit comments

Comments
 (0)