mobility-toolbox-js 2.0.0-beta.34 → 2.0.0-beta.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -8
- package/api/RealtimeAPI.d.ts +6 -6
- package/api/RealtimeAPI.d.ts.map +1 -1
- package/api/RealtimeAPI.js +170 -197
- package/api/RealtimeAPI.test.d.ts +2 -0
- package/api/RealtimeAPI.test.d.ts.map +1 -0
- package/api/RealtimeAPI.test.js +67 -0
- package/api/RoutingAPI.d.ts +6 -2
- package/api/RoutingAPI.d.ts.map +1 -1
- package/api/RoutingAPI.js +8 -38
- package/api/RoutingAPI.test.d.ts +2 -0
- package/api/RoutingAPI.test.d.ts.map +1 -0
- package/api/RoutingAPI.test.js +29 -0
- package/api/StopsAPI.d.ts +1 -1
- package/api/StopsAPI.d.ts.map +1 -1
- package/api/StopsAPI.js +8 -40
- package/api/StopsAPI.test.d.ts +2 -0
- package/api/StopsAPI.test.d.ts.map +1 -0
- package/api/StopsAPI.test.js +26 -0
- package/api/index.d.ts +3 -4
- package/api/index.d.ts.map +1 -1
- package/api/index.js +3 -10
- package/api/typedefs.js +1 -0
- package/common/api/HttpAPI.d.ts +2 -2
- package/common/api/HttpAPI.d.ts.map +1 -1
- package/common/api/HttpAPI.js +21 -48
- package/common/api/HttpAPI.test.d.ts +2 -0
- package/common/api/HttpAPI.test.d.ts.map +1 -0
- package/common/api/HttpAPI.test.js +54 -0
- package/common/api/WebSocketAPI.d.ts +8 -4
- package/common/api/WebSocketAPI.d.ts.map +1 -1
- package/common/api/WebSocketAPI.js +125 -129
- package/common/api/WebSocketAPI.test.d.ts +2 -0
- package/common/api/WebSocketAPI.test.d.ts.map +1 -0
- package/common/api/WebSocketAPI.test.js +380 -0
- package/common/controls/Control.d.ts +5 -5
- package/common/controls/Control.d.ts.map +1 -1
- package/common/controls/Control.js +44 -77
- package/common/controls/Control.test.d.ts +2 -0
- package/common/controls/Control.test.d.ts.map +1 -0
- package/common/controls/Control.test.js +89 -0
- package/common/index.js +2 -18
- package/common/layers/Layer.d.ts +11 -11
- package/common/layers/Layer.d.ts.map +1 -1
- package/common/layers/Layer.js +70 -104
- package/common/layers/Layer.test.d.ts +2 -0
- package/common/layers/Layer.test.d.ts.map +1 -0
- package/common/layers/Layer.test.js +137 -0
- package/common/mixins/CopyrightMixin.js +23 -52
- package/common/mixins/MapboxLayerMixin.js +162 -204
- package/common/mixins/RealtimeLayerMixin.js +580 -635
- package/common/mixins/StopFinderMixin.d.ts +3 -3
- package/common/mixins/StopFinderMixin.d.ts.map +1 -1
- package/common/mixins/StopFinderMixin.js +115 -157
- package/common/mixins/UserInteractionsLayerMixin.js +142 -175
- package/common/mixins/UserInteractionsLayerMixin.test.d.ts +2 -0
- package/common/mixins/UserInteractionsLayerMixin.test.d.ts.map +1 -0
- package/common/mixins/UserInteractionsLayerMixin.test.js +214 -0
- package/common/styles/index.js +4 -24
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -1
- package/common/styles/realtimeDefaultStyle.js +67 -78
- package/common/styles/realtimeDelayStyle.js +4 -17
- package/common/styles/realtimeSimpleStyle.js +5 -7
- package/common/typedefs.js +1 -0
- package/common/utils/cleanStopTime.js +3 -5
- package/common/utils/compareDepartures.d.ts +1 -1
- package/common/utils/compareDepartures.d.ts.map +1 -1
- package/common/utils/compareDepartures.js +8 -11
- package/common/utils/createCanvas.js +3 -5
- package/common/utils/createTrackerFilters.d.ts +1 -1
- package/common/utils/createTrackerFilters.d.ts.map +1 -1
- package/common/utils/createTrackerFilters.js +22 -32
- package/common/utils/createTrackerFilters.test.d.ts +2 -0
- package/common/utils/createTrackerFilters.test.d.ts.map +1 -0
- package/common/utils/createTrackerFilters.test.js +79 -0
- package/common/utils/getLayersAsFlatArray.js +6 -8
- package/common/utils/getMapboxMapCopyrights.js +9 -11
- package/common/utils/getMapboxMapCopyrights.test.d.ts +2 -0
- package/common/utils/getMapboxMapCopyrights.test.d.ts.map +1 -0
- package/common/utils/getMapboxMapCopyrights.test.js +40 -0
- package/common/utils/getMapboxRender.js +12 -15
- package/common/utils/getMaplibreRender.js +10 -13
- package/common/utils/getRealtimeModeSuffix.js +2 -6
- package/common/utils/getUrlWithParams.js +5 -8
- package/common/utils/getVehiclePosition.js +20 -23
- package/common/utils/index.js +12 -37
- package/common/utils/removeDuplicate.d.ts +1 -1
- package/common/utils/removeDuplicate.d.ts.map +1 -1
- package/common/utils/removeDuplicate.js +6 -21
- package/common/utils/removeDuplicate.test.d.ts +2 -0
- package/common/utils/removeDuplicate.test.d.ts.map +1 -0
- package/common/utils/removeDuplicate.test.js +19 -0
- package/common/utils/renderTrajectories.js +31 -43
- package/common/utils/sortByDelay.js +4 -6
- package/common/utils/timeUtils.js +14 -24
- package/common/utils/timeUtils.test.d.ts +2 -0
- package/common/utils/timeUtils.test.d.ts.map +1 -0
- package/common/utils/timeUtils.test.js +10 -0
- package/common/utils/trackerConfig.js +27 -39
- package/common/utils/trackerConfig.test.d.ts +2 -0
- package/common/utils/trackerConfig.test.d.ts.map +1 -0
- package/common/utils/trackerConfig.test.js +23 -0
- package/iife.js +3 -5
- package/index.d.ts +4 -0
- package/index.js +9 -10
- package/mapbox/controls/CopyrightControl.d.ts +0 -1
- package/mapbox/controls/CopyrightControl.d.ts.map +1 -1
- package/mapbox/controls/CopyrightControl.js +18 -38
- package/mapbox/controls/index.js +1 -5
- package/mapbox/index.js +4 -20
- package/mapbox/layers/Layer.d.ts +1 -1
- package/mapbox/layers/Layer.d.ts.map +1 -1
- package/mapbox/layers/Layer.js +29 -71
- package/mapbox/layers/Layer.test.d.ts +2 -0
- package/mapbox/layers/Layer.test.d.ts.map +1 -0
- package/mapbox/layers/Layer.test.js +204 -0
- package/mapbox/layers/RealtimeLayer.d.ts +4 -4
- package/mapbox/layers/RealtimeLayer.d.ts.map +1 -1
- package/mapbox/layers/RealtimeLayer.js +83 -125
- package/mapbox/layers/RealtimeLayer.test.d.ts +2 -0
- package/mapbox/layers/RealtimeLayer.test.d.ts.map +1 -0
- package/mapbox/layers/RealtimeLayer.test.js +10 -0
- package/mapbox/layers/index.js +2 -7
- package/mapbox/utils.js +19 -33
- package/mbt.js +59 -37
- package/mbt.js.map +2 -2
- package/mbt.min.js +10 -10
- package/mbt.min.js.map +2 -2
- package/ol/controls/CopyrightControl.js +26 -47
- package/ol/controls/CopyrightControl.test.d.ts +2 -0
- package/ol/controls/CopyrightControl.test.d.ts.map +1 -0
- package/ol/controls/CopyrightControl.test.js +177 -0
- package/ol/controls/RoutingControl.d.ts +6 -5
- package/ol/controls/RoutingControl.d.ts.map +1 -1
- package/ol/controls/RoutingControl.js +209 -270
- package/ol/controls/RoutingControl.test.d.ts +2 -0
- package/ol/controls/RoutingControl.test.d.ts.map +1 -0
- package/ol/controls/RoutingControl.test.js +150 -0
- package/ol/controls/StopFinderControl.js +9 -32
- package/ol/controls/StopFinderControl.test.d.ts +2 -0
- package/ol/controls/StopFinderControl.test.d.ts.map +1 -0
- package/ol/controls/StopFinderControl.test.js +49 -0
- package/ol/controls/index.js +3 -9
- package/ol/index.js +5 -21
- package/ol/layers/Layer.d.ts +1 -1
- package/ol/layers/Layer.d.ts.map +1 -1
- package/ol/layers/Layer.js +40 -72
- package/ol/layers/Layer.test.d.ts +2 -0
- package/ol/layers/Layer.test.d.ts.map +1 -0
- package/ol/layers/Layer.test.js +196 -0
- package/ol/layers/MapboxLayer.d.ts +7 -7
- package/ol/layers/MapboxLayer.d.ts.map +1 -1
- package/ol/layers/MapboxLayer.js +30 -66
- package/ol/layers/MapboxLayer.test.d.ts +2 -0
- package/ol/layers/MapboxLayer.test.d.ts.map +1 -0
- package/ol/layers/MapboxLayer.test.js +164 -0
- package/ol/layers/MapboxStyleLayer.d.ts +3 -3
- package/ol/layers/MapboxStyleLayer.d.ts.map +1 -1
- package/ol/layers/MapboxStyleLayer.js +92 -135
- package/ol/layers/MapboxStyleLayer.test.d.ts +2 -0
- package/ol/layers/MapboxStyleLayer.test.d.ts.map +1 -0
- package/ol/layers/MapboxStyleLayer.test.js +232 -0
- package/ol/layers/MaplibreLayer.d.ts +1 -1
- package/ol/layers/MaplibreLayer.d.ts.map +1 -1
- package/ol/layers/MaplibreLayer.js +14 -48
- package/ol/layers/RealtimeLayer.d.ts +2 -2
- package/ol/layers/RealtimeLayer.d.ts.map +1 -1
- package/ol/layers/RealtimeLayer.js +111 -147
- package/ol/layers/RealtimeLayer.test.d.ts +2 -0
- package/ol/layers/RealtimeLayer.test.d.ts.map +1 -0
- package/ol/layers/RealtimeLayer.test.js +71 -0
- package/ol/layers/RoutingLayer.d.ts +2 -2
- package/ol/layers/RoutingLayer.d.ts.map +1 -1
- package/ol/layers/RoutingLayer.js +29 -61
- package/ol/layers/RoutingLayer.test.d.ts +2 -0
- package/ol/layers/RoutingLayer.test.d.ts.map +1 -0
- package/ol/layers/RoutingLayer.test.js +39 -0
- package/ol/layers/VectorLayer.d.ts +1 -1
- package/ol/layers/VectorLayer.d.ts.map +1 -1
- package/ol/layers/VectorLayer.js +14 -48
- package/ol/layers/VectorLayer.test.d.ts +2 -0
- package/ol/layers/VectorLayer.test.d.ts.map +1 -0
- package/ol/layers/VectorLayer.test.js +87 -0
- package/ol/layers/WMSLayer.d.ts +1 -1
- package/ol/layers/WMSLayer.d.ts.map +1 -1
- package/ol/layers/WMSLayer.js +34 -68
- package/ol/layers/WMSLayer.test.d.ts +2 -0
- package/ol/layers/WMSLayer.test.d.ts.map +1 -0
- package/ol/layers/WMSLayer.test.js +66 -0
- package/ol/layers/index.js +8 -19
- package/ol/styles/fullTrajectoryDelayStyle.js +11 -13
- package/ol/styles/fullTrajectoryStyle.js +16 -18
- package/ol/styles/index.js +2 -7
- package/package.json +5 -2
- package/setupTests.js +12 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RealtimeAPI.test.d.ts","sourceRoot":"","sources":["../../src/api/RealtimeAPI.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { RealtimeAPI, RealtimeModes } from '.';
|
|
2
|
+
describe('RealtimeAPI', () => {
|
|
3
|
+
let api;
|
|
4
|
+
let get;
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
get = jest.fn((params, cb) => {
|
|
7
|
+
cb({ content: 'content' });
|
|
8
|
+
});
|
|
9
|
+
api = new RealtimeAPI();
|
|
10
|
+
api.wsApi = {
|
|
11
|
+
get,
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
describe('#getFullTrajectory() calls fullTrajectory channel', () => {
|
|
15
|
+
test('without parameters', (done) => {
|
|
16
|
+
api.getFullTrajectory().then(() => {
|
|
17
|
+
expect(get.mock.calls.length).toBe(1);
|
|
18
|
+
expect(get.mock.calls[0][0]).toEqual({
|
|
19
|
+
channel: 'full_trajectory',
|
|
20
|
+
});
|
|
21
|
+
done();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
[null, RealtimeModes.TOPOGRAPHIC].forEach((mode) => {
|
|
25
|
+
describe(`using mode ${mode}`, () => {
|
|
26
|
+
test('using id', (done) => {
|
|
27
|
+
api.getFullTrajectory('foo', mode).then(() => {
|
|
28
|
+
expect(get.mock.calls.length).toBe(1);
|
|
29
|
+
expect(get.mock.calls[0][0]).toEqual({
|
|
30
|
+
channel: 'full_trajectory_foo',
|
|
31
|
+
});
|
|
32
|
+
done();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
test('using id and generalizationLevel param', (done) => {
|
|
36
|
+
api.getFullTrajectory('foo', mode, 5).then(() => {
|
|
37
|
+
expect(get.mock.calls.length).toBe(1);
|
|
38
|
+
expect(get.mock.calls[0][0]).toEqual({
|
|
39
|
+
channel: 'full_trajectory_foo_gen5',
|
|
40
|
+
});
|
|
41
|
+
done();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('using schematic mode ', () => {
|
|
47
|
+
test('using id', (done) => {
|
|
48
|
+
api.getFullTrajectory('foo', RealtimeModes.SCHEMATIC).then(() => {
|
|
49
|
+
expect(get.mock.calls.length).toBe(1);
|
|
50
|
+
expect(get.mock.calls[0][0]).toEqual({
|
|
51
|
+
channel: 'full_trajectory_schematic_foo',
|
|
52
|
+
});
|
|
53
|
+
done();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
test("doesn't use generalizationLevel param", (done) => {
|
|
57
|
+
api.getFullTrajectory('foo', RealtimeModes.SCHEMATIC, 10).then(() => {
|
|
58
|
+
expect(get.mock.calls.length).toBe(1);
|
|
59
|
+
expect(get.mock.calls[0][0]).toEqual({
|
|
60
|
+
channel: 'full_trajectory_schematic_foo',
|
|
61
|
+
});
|
|
62
|
+
done();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
package/api/RoutingAPI.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import HttpAPI
|
|
1
|
+
import HttpAPI from '../common/api/HttpAPI';
|
|
2
2
|
import { RoutingParameters, RoutingResponse } from '../../types';
|
|
3
|
+
export declare type RoutingAPIOptions = {
|
|
4
|
+
url?: string;
|
|
5
|
+
apiKey?: string;
|
|
6
|
+
};
|
|
3
7
|
/**
|
|
4
8
|
* Access to the [geOps Routing service](https://developer.geops.io/apis/routing).
|
|
5
9
|
*
|
|
@@ -19,7 +23,7 @@ declare class RoutingAPI extends HttpAPI {
|
|
|
19
23
|
* @param {string} [options.url='https://api.geops.io/routing/v1/'] Service url.
|
|
20
24
|
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/).
|
|
21
25
|
*/
|
|
22
|
-
constructor(options:
|
|
26
|
+
constructor(options: RoutingAPIOptions);
|
|
23
27
|
/**
|
|
24
28
|
* Route.
|
|
25
29
|
*
|
package/api/RoutingAPI.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoutingAPI.d.ts","sourceRoot":"","sources":["../../src/api/RoutingAPI.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"RoutingAPI.d.ts","sourceRoot":"","sources":["../../src/api/RoutingAPI.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjE,oBAAY,iBAAiB,GAAG;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,cAAM,UAAW,SAAQ,OAAO;IAC9B;;;;;;OAMG;gBACS,OAAO,EAAE,iBAAiB;IAItC;;;;;;OAMG;IACH,KAAK,CACH,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC;CAG5B;AAED,eAAe,UAAU,CAAC"}
|
package/api/RoutingAPI.js
CHANGED
|
@@ -1,32 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
var HttpAPI_1 = require("../common/api/HttpAPI");
|
|
1
|
+
import HttpAPI from '../common/api/HttpAPI';
|
|
30
2
|
/**
|
|
31
3
|
* Access to the [geOps Routing service](https://developer.geops.io/apis/routing).
|
|
32
4
|
*
|
|
@@ -38,8 +10,7 @@ var HttpAPI_1 = require("../common/api/HttpAPI");
|
|
|
38
10
|
* });
|
|
39
11
|
*
|
|
40
12
|
*/
|
|
41
|
-
|
|
42
|
-
__extends(RoutingAPI, _super);
|
|
13
|
+
class RoutingAPI extends HttpAPI {
|
|
43
14
|
/**
|
|
44
15
|
* Constructor
|
|
45
16
|
*
|
|
@@ -47,8 +18,8 @@ var RoutingAPI = /** @class */ (function (_super) {
|
|
|
47
18
|
* @param {string} [options.url='https://api.geops.io/routing/v1/'] Service url.
|
|
48
19
|
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/).
|
|
49
20
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
21
|
+
constructor(options) {
|
|
22
|
+
super(Object.assign({ url: 'https://api.geops.io/routing/v1/' }, options));
|
|
52
23
|
}
|
|
53
24
|
/**
|
|
54
25
|
* Route.
|
|
@@ -57,9 +28,8 @@ var RoutingAPI = /** @class */ (function (_super) {
|
|
|
57
28
|
* @param {RequestInit} config Options for the fetch request.
|
|
58
29
|
* @return {Promise<RoutingResponse>} An GeoJSON feature collection with coordinates in [EPSG:4326](http://epsg.io/4326).
|
|
59
30
|
*/
|
|
60
|
-
|
|
31
|
+
route(params, config) {
|
|
61
32
|
return this.fetch('', params, config);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
exports.default = RoutingAPI;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export default RoutingAPI;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoutingAPI.test.d.ts","sourceRoot":"","sources":["../../src/api/RoutingAPI.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import fetch from 'jest-fetch-mock';
|
|
2
|
+
import RoutingAPI from './RoutingAPI';
|
|
3
|
+
let api;
|
|
4
|
+
describe('RoutingAPI', () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
global.fetch = fetch;
|
|
7
|
+
fetch.resetMocks();
|
|
8
|
+
api = new RoutingAPI({ apiKey: 'apiKey' });
|
|
9
|
+
});
|
|
10
|
+
describe('#route', () => {
|
|
11
|
+
test('should success', (done) => {
|
|
12
|
+
fetch.mockResponseOnce(JSON.stringify(global.fetchRouteResponse));
|
|
13
|
+
return api
|
|
14
|
+
.route({
|
|
15
|
+
mot: 'bus',
|
|
16
|
+
via: '47.3739194713294,8.538274823394632|47.37595378493421,8.537490375951839',
|
|
17
|
+
})
|
|
18
|
+
.then((featureCollection) => {
|
|
19
|
+
// Correct url
|
|
20
|
+
expect(fetch.mock.calls[0][0]).toEqual('https://api.geops.io/routing/v1/?key=apiKey&mot=bus&via=47.3739194713294%2C8.538274823394632%7C47.37595378493421%2C8.537490375951839');
|
|
21
|
+
// Correct search result (for bus mot)
|
|
22
|
+
expect(featureCollection.features[0].geometry.type).toEqual('LineString');
|
|
23
|
+
expect(featureCollection.features[0].properties.lines).toBeDefined();
|
|
24
|
+
expect(featureCollection.features[0].properties.station_to).toBeDefined();
|
|
25
|
+
done();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
package/api/StopsAPI.d.ts
CHANGED
package/api/StopsAPI.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StopsAPI.d.ts","sourceRoot":"","sources":["../../src/api/StopsAPI.js"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AACH;IACE;;;;;;OAMG;IACH;QAH4B,GAAG
|
|
1
|
+
{"version":3,"file":"StopsAPI.d.ts","sourceRoot":"","sources":["../../src/api/StopsAPI.js"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AACH;IACE;;;;;;OAMG;IACH;QAH4B,GAAG;QACJ,MAAM,EAAtB,MAAM;OAIhB;IAED;;;;;;OAMG;IACH,oDAHW,eAAe,GACd,iCAAiC,CAM5C;CACF"}
|
package/api/StopsAPI.js
CHANGED
|
@@ -1,32 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
var HttpAPI_1 = require("../common/api/HttpAPI");
|
|
1
|
+
import HttpAPI from '../common/api/HttpAPI';
|
|
30
2
|
/**
|
|
31
3
|
* Access to the [Stops service](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
32
4
|
*
|
|
@@ -39,8 +11,7 @@ var HttpAPI_1 = require("../common/api/HttpAPI");
|
|
|
39
11
|
* });
|
|
40
12
|
*
|
|
41
13
|
*/
|
|
42
|
-
|
|
43
|
-
__extends(StopsAPI, _super);
|
|
14
|
+
class StopsAPI extends HttpAPI {
|
|
44
15
|
/**
|
|
45
16
|
* Constructor
|
|
46
17
|
*
|
|
@@ -48,9 +19,8 @@ var StopsAPI = /** @class */ (function (_super) {
|
|
|
48
19
|
* @param {string} [options.url='https://api.geops.io/stops/v1/'] Service url.
|
|
49
20
|
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/).
|
|
50
21
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return _super.call(this, __assign({ url: 'https://api.geops.io/stops/v1/' }, options)) || this;
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
super(Object.assign({ url: 'https://api.geops.io/stops/v1/' }, options));
|
|
54
24
|
}
|
|
55
25
|
/**
|
|
56
26
|
* Search.
|
|
@@ -59,12 +29,10 @@ var StopsAPI = /** @class */ (function (_super) {
|
|
|
59
29
|
* @param {AbortController} abortController Abort controller used to cancel the request.
|
|
60
30
|
* @return {Promise<GeoJSONFeatureCollection>} An GeoJSON feature collection with coordinates in [EPSG:4326](http://epsg.io/4326).
|
|
61
31
|
*/
|
|
62
|
-
|
|
63
|
-
if (abortController === void 0) { abortController = {}; }
|
|
32
|
+
search(params, abortController = {}) {
|
|
64
33
|
return this.fetch('', params, {
|
|
65
34
|
signal: abortController.signal,
|
|
66
35
|
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
exports.default = StopsAPI;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export default StopsAPI;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StopsAPI.test.d.ts","sourceRoot":"","sources":["../../src/api/StopsAPI.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fetch from 'jest-fetch-mock';
|
|
2
|
+
import StopsAPI from './StopsAPI';
|
|
3
|
+
let api;
|
|
4
|
+
describe('StopsAPI', () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
global.fetch = fetch;
|
|
7
|
+
fetch.resetMocks();
|
|
8
|
+
api = new StopsAPI({ apiKey: 'apiKey' });
|
|
9
|
+
});
|
|
10
|
+
describe('#search', () => {
|
|
11
|
+
test('should success', (done) => {
|
|
12
|
+
fetch.mockResponseOnce(JSON.stringify(global.stopsSearchResponse));
|
|
13
|
+
return api
|
|
14
|
+
.search({
|
|
15
|
+
q: 'Bern',
|
|
16
|
+
})
|
|
17
|
+
.then((featureCollection) => {
|
|
18
|
+
// Correct url
|
|
19
|
+
expect(fetch.mock.calls[0][0]).toEqual('https://api.geops.io/stops/v1/?key=apiKey&q=Bern');
|
|
20
|
+
// Correct search result
|
|
21
|
+
expect(featureCollection.features[0].properties.name).toEqual('Bern');
|
|
22
|
+
done();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
package/api/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export { default as
|
|
3
|
-
export { default as
|
|
4
|
-
export { default as RealtimeAPI, RealtimeModes } from './RealtimeAPI';
|
|
1
|
+
export { default as RoutingAPI } from "./RoutingAPI";
|
|
2
|
+
export { default as StopsAPI } from "./StopsAPI";
|
|
3
|
+
export { default as RealtimeAPI, RealtimeModes } from "./RealtimeAPI";
|
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
package/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.js"],"names":[],"mappings":""}
|
package/api/index.js
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var RoutingAPI_1 = require("./RoutingAPI");
|
|
5
|
-
Object.defineProperty(exports, "RoutingAPI", { enumerable: true, get: function () { return RoutingAPI_1.default; } });
|
|
6
|
-
var StopsAPI_1 = require("./StopsAPI");
|
|
7
|
-
Object.defineProperty(exports, "StopsAPI", { enumerable: true, get: function () { return StopsAPI_1.default; } });
|
|
8
|
-
var RealtimeAPI_1 = require("./RealtimeAPI");
|
|
9
|
-
Object.defineProperty(exports, "RealtimeAPI", { enumerable: true, get: function () { return RealtimeAPI_1.default; } });
|
|
10
|
-
Object.defineProperty(exports, "RealtimeModes", { enumerable: true, get: function () { return RealtimeAPI_1.RealtimeModes; } });
|
|
1
|
+
export { default as RoutingAPI } from './RoutingAPI';
|
|
2
|
+
export { default as StopsAPI } from './StopsAPI';
|
|
3
|
+
export { default as RealtimeAPI, RealtimeModes } from './RealtimeAPI';
|
package/api/typedefs.js
CHANGED
package/common/api/HttpAPI.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import BaseObject from 'ol/Object';
|
|
2
|
-
export declare type
|
|
2
|
+
export declare type HttpAPIOptions = {
|
|
3
3
|
url: string;
|
|
4
4
|
apiKey?: string;
|
|
5
5
|
};
|
|
@@ -20,7 +20,7 @@ export declare type HttpApiOptions = {
|
|
|
20
20
|
declare class HttpAPI extends BaseObject {
|
|
21
21
|
url: string;
|
|
22
22
|
apiKey?: string;
|
|
23
|
-
constructor(options:
|
|
23
|
+
constructor(options: HttpAPIOptions);
|
|
24
24
|
/**
|
|
25
25
|
* Append the apiKey before sending the request.
|
|
26
26
|
* @ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpAPI.d.ts","sourceRoot":"","sources":["../../../src/common/api/HttpAPI.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,WAAW,CAAC;AAGnC,oBAAY,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AACF;;;;;;;;;;;;;GAaG;AACH,cAAM,OAAQ,SAAQ,UAAU;IAC9B,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,OAAO,EAAE,cAAc;IASnC;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpAPI.d.ts","sourceRoot":"","sources":["../../../src/common/api/HttpAPI.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,WAAW,CAAC;AAGnC,oBAAY,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AACF;;;;;;;;;;;;;GAaG;AACH,cAAM,OAAQ,SAAQ,UAAU;IAC9B,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,OAAO,EAAE,cAAc;IASnC;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAmCvE;AAED,eAAe,OAAO,CAAC"}
|
package/common/api/HttpAPI.js
CHANGED
|
@@ -1,33 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
var Object_1 = require("ol/Object");
|
|
30
|
-
var getUrlWithParams_1 = require("../utils/getUrlWithParams");
|
|
1
|
+
import BaseObject from 'ol/Object';
|
|
2
|
+
import getUrlWithParams from '../utils/getUrlWithParams';
|
|
31
3
|
/**
|
|
32
4
|
* Common class to access to a geOps api using http.
|
|
33
5
|
*
|
|
@@ -42,32 +14,34 @@ var getUrlWithParams_1 = require("../utils/getUrlWithParams");
|
|
|
42
14
|
* @classproperty {string} url Url of the service.
|
|
43
15
|
* @classproperty {string} apiKey Api key to access the service.
|
|
44
16
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var _this = _super.call(this) || this;
|
|
17
|
+
class HttpAPI extends BaseObject {
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super();
|
|
49
20
|
/** @ignore */
|
|
50
|
-
|
|
21
|
+
this.url = options.url;
|
|
51
22
|
/** @ignore */
|
|
52
|
-
|
|
53
|
-
return _this;
|
|
23
|
+
this.apiKey = options.apiKey;
|
|
54
24
|
}
|
|
55
25
|
/**
|
|
56
26
|
* Append the apiKey before sending the request.
|
|
57
27
|
* @ignore
|
|
58
28
|
*/
|
|
59
|
-
|
|
60
|
-
if (!this.
|
|
29
|
+
fetch(path, params, config) {
|
|
30
|
+
if (!this.url) {
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
return Promise.reject(new Error(`No url defined for request to ${this.url}/${path}`));
|
|
33
|
+
}
|
|
34
|
+
if (!this.url && !this.apiKey && !/key=/.test(this.url)) {
|
|
61
35
|
// eslint-disable-next-line no-console
|
|
62
|
-
return Promise.reject(new Error(
|
|
36
|
+
return Promise.reject(new Error(`No apiKey defined for request to ${this.url}`));
|
|
63
37
|
}
|
|
64
38
|
// Clean requets parameters, removing undefined and null values.
|
|
65
|
-
|
|
66
|
-
|
|
39
|
+
const searchParams = params || {};
|
|
40
|
+
const url = getUrlWithParams(`${this.url}${path || ''}`, Object.assign({ key: this.apiKey }, searchParams));
|
|
67
41
|
// We use toString because of TYpeScript bug that only accept a string in fetch method.
|
|
68
|
-
return fetch(url.toString(), config).then(
|
|
42
|
+
return fetch(url.toString(), config).then((response) => {
|
|
69
43
|
try {
|
|
70
|
-
return response.json().then(
|
|
44
|
+
return response.json().then((data) => {
|
|
71
45
|
if (data.error) {
|
|
72
46
|
throw new Error(data.error);
|
|
73
47
|
}
|
|
@@ -78,7 +52,6 @@ var HttpAPI = /** @class */ (function (_super) {
|
|
|
78
52
|
return Promise.reject(new Error(err));
|
|
79
53
|
}
|
|
80
54
|
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
exports.default = HttpAPI;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export default HttpAPI;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpAPI.test.d.ts","sourceRoot":"","sources":["../../../src/common/api/HttpAPI.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import fetch from 'jest-fetch-mock';
|
|
2
|
+
import API from './HttpAPI';
|
|
3
|
+
let api;
|
|
4
|
+
describe('HttpAPI', () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
global.fetch = fetch;
|
|
7
|
+
fetch.resetMocks();
|
|
8
|
+
api = new API({ url: 'https://foo.ch', apiKey: 'apiKey' });
|
|
9
|
+
});
|
|
10
|
+
describe('#fetch', () => {
|
|
11
|
+
test('should success', () => {
|
|
12
|
+
fetch.mockResponseOnce(JSON.stringify({ foo: 'bar' }));
|
|
13
|
+
return api
|
|
14
|
+
.fetch('/path', {
|
|
15
|
+
q: 'Bern',
|
|
16
|
+
fooUndefined: undefined,
|
|
17
|
+
fooNull: null,
|
|
18
|
+
fooEmpty: '',
|
|
19
|
+
})
|
|
20
|
+
.then((response) => {
|
|
21
|
+
// Correct url
|
|
22
|
+
expect(fetch.mock.calls[0][0]).toEqual('https://foo.ch/path?key=apiKey&q=Bern&fooEmpty=');
|
|
23
|
+
// Correct search result
|
|
24
|
+
expect(response).toEqual({ foo: 'bar' });
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('should display error message', () => {
|
|
28
|
+
test('reject error', (done) => {
|
|
29
|
+
fetch.mockRejectOnce(new Error('Fake error message'));
|
|
30
|
+
return api.fetch().catch((err) => {
|
|
31
|
+
expect(err.name).toEqual('Error');
|
|
32
|
+
expect(err.message).toEqual('Fake error message');
|
|
33
|
+
done();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
test('if the response is invalid json', (done) => {
|
|
37
|
+
fetch.mockResponseOnce('invalid json');
|
|
38
|
+
api.fetch().catch((err) => {
|
|
39
|
+
expect(err.name).toEqual('FetchError');
|
|
40
|
+
expect(err.message).toEqual('invalid json response body at reason: Unexpected token i in JSON at position 0');
|
|
41
|
+
done();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
test('if the response contains an error message', (done) => {
|
|
45
|
+
fetch.mockResponseOnce('{"error":"foo2"}');
|
|
46
|
+
api.fetch().catch((err) => {
|
|
47
|
+
expect(err.name).toEqual('Error');
|
|
48
|
+
expect(err.message).toEqual('foo2');
|
|
49
|
+
done();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -27,14 +27,14 @@ declare class WebSocketAPI {
|
|
|
27
27
|
*/
|
|
28
28
|
private connect;
|
|
29
29
|
/** @ignore */
|
|
30
|
-
websocket: WebSocket;
|
|
30
|
+
websocket: WebSocket | null | undefined;
|
|
31
31
|
/**
|
|
32
32
|
* Close the websocket definitively.
|
|
33
33
|
*
|
|
34
34
|
* @private
|
|
35
35
|
*/
|
|
36
36
|
private close;
|
|
37
|
-
messagesOnOpen: any[];
|
|
37
|
+
messagesOnOpen: any[] | undefined;
|
|
38
38
|
/**
|
|
39
39
|
* Sends a message to the websocket.
|
|
40
40
|
*
|
|
@@ -42,6 +42,8 @@ declare class WebSocketAPI {
|
|
|
42
42
|
* @private
|
|
43
43
|
*/
|
|
44
44
|
private send;
|
|
45
|
+
addEvents(onMessage: any, onError: any): void;
|
|
46
|
+
removeEvents(onMessage: any, onError: any): void;
|
|
45
47
|
/**
|
|
46
48
|
* Listen to websocket messages.
|
|
47
49
|
*
|
|
@@ -62,13 +64,15 @@ declare class WebSocketAPI {
|
|
|
62
64
|
private unlisten;
|
|
63
65
|
/**
|
|
64
66
|
* Sends a get request to the websocket.
|
|
67
|
+
* The callback is called only once, when the response is received or when the call returns an error.
|
|
65
68
|
*
|
|
66
69
|
* @param {Object} params Parameters for the websocket get request
|
|
67
|
-
* @param {function}
|
|
68
|
-
* @param {function}
|
|
70
|
+
* @param {function} onMessage callback on message event
|
|
71
|
+
* @param {function} onError Callback on error and close event
|
|
69
72
|
* @private
|
|
70
73
|
*/
|
|
71
74
|
private get;
|
|
75
|
+
requests: any[] | undefined;
|
|
72
76
|
/**
|
|
73
77
|
* Subscribe to a given channel.
|
|
74
78
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketAPI.d.ts","sourceRoot":"","sources":["../../../src/common/api/WebSocketAPI.js"],"names":[],"mappings":";AAAA;;;;GAIG;AACH;IAiEE;;;;;;;;;;OAUG;IACH,gCAKC;IA5ED,yBA0DC;IAoBD;;;;;;OAMG;IACH,gBAiBC;IAZC,cAAc;IACd,
|
|
1
|
+
{"version":3,"file":"WebSocketAPI.d.ts","sourceRoot":"","sources":["../../../src/common/api/WebSocketAPI.js"],"names":[],"mappings":";AAAA;;;;GAIG;AACH;IAiEE;;;;;;;;;;OAUG;IACH,gCAKC;IA5ED,yBA0DC;IAoBD;;;;;;OAMG;IACH,gBAiBC;IAZC,cAAc;IACd,wCAAmC;IAarC;;;;OAIG;IACH,cAOC;IAFG,kCAAwB;IAI5B;;;;;OAKG;IACH,aAsBC;IAED,8CASC;IAED,iDASC;IAED;;;;;;;;OAQG;IACH,eAgCC;IAED;;;;;;OAMG;IACH,iBAQC;IAED;;;;;;;;OAQG;IACH,YA4CC;IAlBG,4BAAkB;IAoBtB;;;;;;;;OAQG;IACH,kBAqBC;IAED;;;;;OAKG;IACH,oBAwBC;IAfC,mBAEC;IAeH;;OAEG;IACH,uCAYC;CACF"}
|