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.
Files changed (195) hide show
  1. package/README.md +14 -8
  2. package/api/RealtimeAPI.d.ts +6 -6
  3. package/api/RealtimeAPI.d.ts.map +1 -1
  4. package/api/RealtimeAPI.js +170 -197
  5. package/api/RealtimeAPI.test.d.ts +2 -0
  6. package/api/RealtimeAPI.test.d.ts.map +1 -0
  7. package/api/RealtimeAPI.test.js +67 -0
  8. package/api/RoutingAPI.d.ts +6 -2
  9. package/api/RoutingAPI.d.ts.map +1 -1
  10. package/api/RoutingAPI.js +8 -38
  11. package/api/RoutingAPI.test.d.ts +2 -0
  12. package/api/RoutingAPI.test.d.ts.map +1 -0
  13. package/api/RoutingAPI.test.js +29 -0
  14. package/api/StopsAPI.d.ts +1 -1
  15. package/api/StopsAPI.d.ts.map +1 -1
  16. package/api/StopsAPI.js +8 -40
  17. package/api/StopsAPI.test.d.ts +2 -0
  18. package/api/StopsAPI.test.d.ts.map +1 -0
  19. package/api/StopsAPI.test.js +26 -0
  20. package/api/index.d.ts +3 -4
  21. package/api/index.d.ts.map +1 -1
  22. package/api/index.js +3 -10
  23. package/api/typedefs.js +1 -0
  24. package/common/api/HttpAPI.d.ts +2 -2
  25. package/common/api/HttpAPI.d.ts.map +1 -1
  26. package/common/api/HttpAPI.js +21 -48
  27. package/common/api/HttpAPI.test.d.ts +2 -0
  28. package/common/api/HttpAPI.test.d.ts.map +1 -0
  29. package/common/api/HttpAPI.test.js +54 -0
  30. package/common/api/WebSocketAPI.d.ts +8 -4
  31. package/common/api/WebSocketAPI.d.ts.map +1 -1
  32. package/common/api/WebSocketAPI.js +125 -129
  33. package/common/api/WebSocketAPI.test.d.ts +2 -0
  34. package/common/api/WebSocketAPI.test.d.ts.map +1 -0
  35. package/common/api/WebSocketAPI.test.js +380 -0
  36. package/common/controls/Control.d.ts +5 -5
  37. package/common/controls/Control.d.ts.map +1 -1
  38. package/common/controls/Control.js +44 -77
  39. package/common/controls/Control.test.d.ts +2 -0
  40. package/common/controls/Control.test.d.ts.map +1 -0
  41. package/common/controls/Control.test.js +89 -0
  42. package/common/index.js +2 -18
  43. package/common/layers/Layer.d.ts +11 -11
  44. package/common/layers/Layer.d.ts.map +1 -1
  45. package/common/layers/Layer.js +70 -104
  46. package/common/layers/Layer.test.d.ts +2 -0
  47. package/common/layers/Layer.test.d.ts.map +1 -0
  48. package/common/layers/Layer.test.js +137 -0
  49. package/common/mixins/CopyrightMixin.js +23 -52
  50. package/common/mixins/MapboxLayerMixin.js +162 -204
  51. package/common/mixins/RealtimeLayerMixin.js +580 -635
  52. package/common/mixins/StopFinderMixin.d.ts +3 -3
  53. package/common/mixins/StopFinderMixin.d.ts.map +1 -1
  54. package/common/mixins/StopFinderMixin.js +115 -157
  55. package/common/mixins/UserInteractionsLayerMixin.js +142 -175
  56. package/common/mixins/UserInteractionsLayerMixin.test.d.ts +2 -0
  57. package/common/mixins/UserInteractionsLayerMixin.test.d.ts.map +1 -0
  58. package/common/mixins/UserInteractionsLayerMixin.test.js +214 -0
  59. package/common/styles/index.js +4 -24
  60. package/common/styles/realtimeDefaultStyle.d.ts.map +1 -1
  61. package/common/styles/realtimeDefaultStyle.js +67 -78
  62. package/common/styles/realtimeDelayStyle.js +4 -17
  63. package/common/styles/realtimeSimpleStyle.js +5 -7
  64. package/common/typedefs.js +1 -0
  65. package/common/utils/cleanStopTime.js +3 -5
  66. package/common/utils/compareDepartures.d.ts +1 -1
  67. package/common/utils/compareDepartures.d.ts.map +1 -1
  68. package/common/utils/compareDepartures.js +8 -11
  69. package/common/utils/createCanvas.js +3 -5
  70. package/common/utils/createTrackerFilters.d.ts +1 -1
  71. package/common/utils/createTrackerFilters.d.ts.map +1 -1
  72. package/common/utils/createTrackerFilters.js +22 -32
  73. package/common/utils/createTrackerFilters.test.d.ts +2 -0
  74. package/common/utils/createTrackerFilters.test.d.ts.map +1 -0
  75. package/common/utils/createTrackerFilters.test.js +79 -0
  76. package/common/utils/getLayersAsFlatArray.js +6 -8
  77. package/common/utils/getMapboxMapCopyrights.js +9 -11
  78. package/common/utils/getMapboxMapCopyrights.test.d.ts +2 -0
  79. package/common/utils/getMapboxMapCopyrights.test.d.ts.map +1 -0
  80. package/common/utils/getMapboxMapCopyrights.test.js +40 -0
  81. package/common/utils/getMapboxRender.js +12 -15
  82. package/common/utils/getMaplibreRender.js +10 -13
  83. package/common/utils/getRealtimeModeSuffix.js +2 -6
  84. package/common/utils/getUrlWithParams.js +5 -8
  85. package/common/utils/getVehiclePosition.js +20 -23
  86. package/common/utils/index.js +12 -37
  87. package/common/utils/removeDuplicate.d.ts +1 -1
  88. package/common/utils/removeDuplicate.d.ts.map +1 -1
  89. package/common/utils/removeDuplicate.js +6 -21
  90. package/common/utils/removeDuplicate.test.d.ts +2 -0
  91. package/common/utils/removeDuplicate.test.d.ts.map +1 -0
  92. package/common/utils/removeDuplicate.test.js +19 -0
  93. package/common/utils/renderTrajectories.js +31 -43
  94. package/common/utils/sortByDelay.js +4 -6
  95. package/common/utils/timeUtils.js +14 -24
  96. package/common/utils/timeUtils.test.d.ts +2 -0
  97. package/common/utils/timeUtils.test.d.ts.map +1 -0
  98. package/common/utils/timeUtils.test.js +10 -0
  99. package/common/utils/trackerConfig.js +27 -39
  100. package/common/utils/trackerConfig.test.d.ts +2 -0
  101. package/common/utils/trackerConfig.test.d.ts.map +1 -0
  102. package/common/utils/trackerConfig.test.js +23 -0
  103. package/iife.js +3 -5
  104. package/index.d.ts +4 -0
  105. package/index.js +9 -10
  106. package/mapbox/controls/CopyrightControl.d.ts +0 -1
  107. package/mapbox/controls/CopyrightControl.d.ts.map +1 -1
  108. package/mapbox/controls/CopyrightControl.js +18 -38
  109. package/mapbox/controls/index.js +1 -5
  110. package/mapbox/index.js +4 -20
  111. package/mapbox/layers/Layer.d.ts +1 -1
  112. package/mapbox/layers/Layer.d.ts.map +1 -1
  113. package/mapbox/layers/Layer.js +29 -71
  114. package/mapbox/layers/Layer.test.d.ts +2 -0
  115. package/mapbox/layers/Layer.test.d.ts.map +1 -0
  116. package/mapbox/layers/Layer.test.js +204 -0
  117. package/mapbox/layers/RealtimeLayer.d.ts +4 -4
  118. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -1
  119. package/mapbox/layers/RealtimeLayer.js +83 -125
  120. package/mapbox/layers/RealtimeLayer.test.d.ts +2 -0
  121. package/mapbox/layers/RealtimeLayer.test.d.ts.map +1 -0
  122. package/mapbox/layers/RealtimeLayer.test.js +10 -0
  123. package/mapbox/layers/index.js +2 -7
  124. package/mapbox/utils.js +19 -33
  125. package/mbt.js +59 -37
  126. package/mbt.js.map +2 -2
  127. package/mbt.min.js +10 -10
  128. package/mbt.min.js.map +2 -2
  129. package/ol/controls/CopyrightControl.js +26 -47
  130. package/ol/controls/CopyrightControl.test.d.ts +2 -0
  131. package/ol/controls/CopyrightControl.test.d.ts.map +1 -0
  132. package/ol/controls/CopyrightControl.test.js +177 -0
  133. package/ol/controls/RoutingControl.d.ts +6 -5
  134. package/ol/controls/RoutingControl.d.ts.map +1 -1
  135. package/ol/controls/RoutingControl.js +209 -270
  136. package/ol/controls/RoutingControl.test.d.ts +2 -0
  137. package/ol/controls/RoutingControl.test.d.ts.map +1 -0
  138. package/ol/controls/RoutingControl.test.js +150 -0
  139. package/ol/controls/StopFinderControl.js +9 -32
  140. package/ol/controls/StopFinderControl.test.d.ts +2 -0
  141. package/ol/controls/StopFinderControl.test.d.ts.map +1 -0
  142. package/ol/controls/StopFinderControl.test.js +49 -0
  143. package/ol/controls/index.js +3 -9
  144. package/ol/index.js +5 -21
  145. package/ol/layers/Layer.d.ts +1 -1
  146. package/ol/layers/Layer.d.ts.map +1 -1
  147. package/ol/layers/Layer.js +40 -72
  148. package/ol/layers/Layer.test.d.ts +2 -0
  149. package/ol/layers/Layer.test.d.ts.map +1 -0
  150. package/ol/layers/Layer.test.js +196 -0
  151. package/ol/layers/MapboxLayer.d.ts +7 -7
  152. package/ol/layers/MapboxLayer.d.ts.map +1 -1
  153. package/ol/layers/MapboxLayer.js +30 -66
  154. package/ol/layers/MapboxLayer.test.d.ts +2 -0
  155. package/ol/layers/MapboxLayer.test.d.ts.map +1 -0
  156. package/ol/layers/MapboxLayer.test.js +164 -0
  157. package/ol/layers/MapboxStyleLayer.d.ts +3 -3
  158. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -1
  159. package/ol/layers/MapboxStyleLayer.js +92 -135
  160. package/ol/layers/MapboxStyleLayer.test.d.ts +2 -0
  161. package/ol/layers/MapboxStyleLayer.test.d.ts.map +1 -0
  162. package/ol/layers/MapboxStyleLayer.test.js +232 -0
  163. package/ol/layers/MaplibreLayer.d.ts +1 -1
  164. package/ol/layers/MaplibreLayer.d.ts.map +1 -1
  165. package/ol/layers/MaplibreLayer.js +14 -48
  166. package/ol/layers/RealtimeLayer.d.ts +2 -2
  167. package/ol/layers/RealtimeLayer.d.ts.map +1 -1
  168. package/ol/layers/RealtimeLayer.js +111 -147
  169. package/ol/layers/RealtimeLayer.test.d.ts +2 -0
  170. package/ol/layers/RealtimeLayer.test.d.ts.map +1 -0
  171. package/ol/layers/RealtimeLayer.test.js +71 -0
  172. package/ol/layers/RoutingLayer.d.ts +2 -2
  173. package/ol/layers/RoutingLayer.d.ts.map +1 -1
  174. package/ol/layers/RoutingLayer.js +29 -61
  175. package/ol/layers/RoutingLayer.test.d.ts +2 -0
  176. package/ol/layers/RoutingLayer.test.d.ts.map +1 -0
  177. package/ol/layers/RoutingLayer.test.js +39 -0
  178. package/ol/layers/VectorLayer.d.ts +1 -1
  179. package/ol/layers/VectorLayer.d.ts.map +1 -1
  180. package/ol/layers/VectorLayer.js +14 -48
  181. package/ol/layers/VectorLayer.test.d.ts +2 -0
  182. package/ol/layers/VectorLayer.test.d.ts.map +1 -0
  183. package/ol/layers/VectorLayer.test.js +87 -0
  184. package/ol/layers/WMSLayer.d.ts +1 -1
  185. package/ol/layers/WMSLayer.d.ts.map +1 -1
  186. package/ol/layers/WMSLayer.js +34 -68
  187. package/ol/layers/WMSLayer.test.d.ts +2 -0
  188. package/ol/layers/WMSLayer.test.d.ts.map +1 -0
  189. package/ol/layers/WMSLayer.test.js +66 -0
  190. package/ol/layers/index.js +8 -19
  191. package/ol/styles/fullTrajectoryDelayStyle.js +11 -13
  192. package/ol/styles/fullTrajectoryStyle.js +16 -18
  193. package/ol/styles/index.js +2 -7
  194. package/package.json +5 -2
  195. package/setupTests.js +12 -14
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RealtimeAPI.test.d.ts.map
@@ -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
+ });
@@ -1,5 +1,9 @@
1
- import HttpAPI, { HttpApiOptions } from '../common/api/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: HttpApiOptions);
26
+ constructor(options: RoutingAPIOptions);
23
27
  /**
24
28
  * Route.
25
29
  *
@@ -1 +1 @@
1
- {"version":3,"file":"RoutingAPI.d.ts","sourceRoot":"","sources":["../../src/api/RoutingAPI.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,cAAM,UAAW,SAAQ,OAAO;IAC9B;;;;;;OAMG;gBACS,OAAO,EAAE,cAAc;IAOnC;;;;;;OAMG;IACH,KAAK,CACH,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC;CAG5B;AAED,eAAe,UAAU,CAAC"}
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
- "use strict";
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
- var RoutingAPI = /** @class */ (function (_super) {
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
- function RoutingAPI(options) {
51
- return _super.call(this, __assign({ url: 'https://api.geops.io/routing/v1/' }, (options || {}))) || this;
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
- RoutingAPI.prototype.route = function (params, config) {
31
+ route(params, config) {
61
32
  return this.fetch('', params, config);
62
- };
63
- return RoutingAPI;
64
- }(HttpAPI_1.default));
65
- exports.default = RoutingAPI;
33
+ }
34
+ }
35
+ export default RoutingAPI;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RoutingAPI.test.d.ts.map
@@ -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
@@ -20,7 +20,7 @@ declare class StopsAPI extends HttpAPI {
20
20
  * @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/).
21
21
  */
22
22
  constructor(options?: {
23
- url?: string;
23
+ url?: string | undefined;
24
24
  apiKey: string;
25
25
  });
26
26
  /**
@@ -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,GAApB,MAAM;QACU,MAAM,EAAtB,MAAM;OAIhB;IAED;;;;;;OAMG;IACH,oDAHW,eAAe,GACd,iCAAiC,CAM5C;CACF"}
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
- "use strict";
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
- var StopsAPI = /** @class */ (function (_super) {
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
- function StopsAPI(options) {
52
- if (options === void 0) { options = {}; }
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
- StopsAPI.prototype.search = function (params, abortController) {
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
- return StopsAPI;
69
- }(HttpAPI_1.default));
70
- exports.default = StopsAPI;
36
+ }
37
+ }
38
+ export default StopsAPI;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=StopsAPI.test.d.ts.map
@@ -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
- declare module '.';
2
- export { default as RoutingAPI } from './RoutingAPI';
3
- export { default as StopsAPI } from './StopsAPI';
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,GAAG,CAAC;AAEnB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
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
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RealtimeModes = exports.RealtimeAPI = exports.StopsAPI = exports.RoutingAPI = void 0;
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
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * @typedef {Object} Departure
3
4
  * @property {number} time Timestamp in ms.
@@ -1,5 +1,5 @@
1
1
  import BaseObject from 'ol/Object';
2
- export declare type HttpApiOptions = {
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: HttpApiOptions);
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;CA6BvE;AAED,eAAe,OAAO,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"}
@@ -1,33 +1,5 @@
1
- "use strict";
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 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
- var HttpAPI = /** @class */ (function (_super) {
46
- __extends(HttpAPI, _super);
47
- function HttpAPI(options) {
48
- var _this = _super.call(this) || this;
17
+ class HttpAPI extends BaseObject {
18
+ constructor(options) {
19
+ super();
49
20
  /** @ignore */
50
- _this.url = options.url;
21
+ this.url = options.url;
51
22
  /** @ignore */
52
- _this.apiKey = options.apiKey;
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
- HttpAPI.prototype.fetch = function (path, params, config) {
60
- if (!this.apiKey && !/key=/.test(this.url)) {
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("No apiKey defined for request to ".concat(this.url)));
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
- var searchParams = params || {};
66
- var url = (0, getUrlWithParams_1.default)("".concat(this.url).concat(path || ''), __assign({ key: this.apiKey }, searchParams));
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(function (response) {
42
+ return fetch(url.toString(), config).then((response) => {
69
43
  try {
70
- return response.json().then(function (data) {
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
- return HttpAPI;
83
- }(Object_1.default));
84
- exports.default = HttpAPI;
55
+ }
56
+ }
57
+ export default HttpAPI;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HttpAPI.test.d.ts.map
@@ -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} cb callback on listen
68
- * @param {function} errorCb Callback on error
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,qBAAmC;IAarC;;;;OAIG;IACH,cAOC;IAFG,sBAAwB;IAI5B;;;;;OAKG;IACH,aAsBC;IAED;;;;;;;;OAQG;IACH,eAsCC;IAED;;;;;;OAMG;IACH,iBAiBC;IAED;;;;;;;OAOG;IACH,YAIC;IAED;;;;;;;;OAQG;IACH,kBAqBC;IAED;;;;;OAKG;IACH,oBA8BC;IAfC,mBAEC;IAeH;;OAEG;IACH,uCAYC;CACF"}
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"}