incyclist-services 1.0.61 → 1.0.63

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 (227) hide show
  1. package/lib/__tests__/utils/loadFile.d.ts +1 -0
  2. package/lib/__tests__/utils/loadFile.js +28 -0
  3. package/lib/api/index.d.ts +3 -0
  4. package/lib/api/index.js +7 -0
  5. package/lib/api/path/index.d.ts +12 -0
  6. package/lib/api/path/index.js +21 -0
  7. package/lib/api/repository/types.d.ts +2 -4
  8. package/lib/devices/access/service.js +1 -1
  9. package/lib/devices/pairing/model.d.ts +1 -0
  10. package/lib/devices/pairing/service.d.ts +5 -0
  11. package/lib/devices/pairing/service.js +65 -18
  12. package/lib/index.d.ts +1 -1
  13. package/lib/index.js +2 -2
  14. package/lib/routes/base/api/types.d.ts +6 -1
  15. package/lib/routes/base/parsers/factory.d.ts +12 -0
  16. package/lib/routes/base/parsers/factory.js +32 -0
  17. package/lib/routes/base/parsers/incyclist-xml.d.ts +5 -0
  18. package/lib/routes/{list/bindings/mock.js → base/parsers/incyclist-xml.js} +12 -17
  19. package/lib/routes/base/parsers/index.d.ts +3 -0
  20. package/lib/routes/base/parsers/index.js +31 -0
  21. package/lib/routes/base/parsers/kwt.d.ts +3 -8
  22. package/lib/routes/base/parsers/kwt.js +4 -48
  23. package/lib/routes/base/parsers/multixml.d.ts +12 -0
  24. package/lib/routes/base/parsers/multixml.js +37 -0
  25. package/lib/routes/base/parsers/types.d.ts +10 -0
  26. package/lib/routes/base/parsers/utils.d.ts +7 -1
  27. package/lib/routes/base/parsers/utils.js +49 -11
  28. package/lib/routes/base/parsers/xml.d.ts +25 -0
  29. package/lib/routes/base/parsers/xml.js +266 -0
  30. package/lib/routes/base/types/index.d.ts +16 -7
  31. package/lib/routes/base/utils/route.d.ts +3 -2
  32. package/lib/routes/base/utils/route.js +50 -9
  33. package/lib/routes/base/utils/xml.d.ts +15 -0
  34. package/lib/routes/base/utils/xml.js +94 -0
  35. package/lib/routes/list/service.d.ts +13 -6
  36. package/lib/routes/list/service.js +66 -26
  37. package/lib/routes/list/types.d.ts +1 -0
  38. package/lib/{services/src → src}/api/index.d.ts +3 -0
  39. package/lib/{services/src → src}/api/index.js +7 -0
  40. package/lib/src/api/path/index.d.ts +12 -0
  41. package/lib/src/api/path/index.js +21 -0
  42. package/lib/{services/src → src}/api/repository/types.d.ts +20 -0
  43. package/lib/{services/src → src}/devices/pairing/service.js +2 -2
  44. package/lib/{services/src → src}/routes/base/api/types.d.ts +9 -6
  45. package/lib/src/routes/base/model/route.d.ts +7 -0
  46. package/lib/src/routes/base/model/route.js +19 -0
  47. package/lib/src/routes/base/parsers/factory.d.ts +12 -0
  48. package/lib/src/routes/base/parsers/factory.js +32 -0
  49. package/lib/src/routes/base/parsers/index.d.ts +3 -0
  50. package/lib/src/routes/base/parsers/index.js +29 -0
  51. package/lib/src/routes/base/parsers/kwt.d.ts +4 -0
  52. package/lib/src/routes/base/parsers/kwt.js +8 -0
  53. package/lib/src/routes/base/parsers/types.d.ts +10 -0
  54. package/lib/src/routes/base/parsers/utils.d.ts +9 -0
  55. package/lib/src/routes/base/parsers/utils.js +69 -0
  56. package/lib/src/routes/base/parsers/xml.d.ts +10 -0
  57. package/lib/src/routes/base/parsers/xml.js +236 -0
  58. package/lib/src/routes/base/types/index.d.ts +85 -0
  59. package/lib/src/routes/base/types/index.js +2 -0
  60. package/lib/src/routes/base/utils/route.d.ts +5 -0
  61. package/lib/src/routes/base/utils/route.js +93 -0
  62. package/lib/src/routes/base/utils/xml.d.ts +15 -0
  63. package/lib/src/routes/base/utils/xml.js +94 -0
  64. package/lib/{services/src → src}/routes/list/service.d.ts +11 -5
  65. package/lib/{services/src → src}/routes/list/service.js +35 -9
  66. package/lib/{services/src → src}/routes/list/types.d.ts +1 -5
  67. package/lib/src/routes/list/types.js +2 -0
  68. package/package.json +2 -2
  69. package/lib/ergo-react/src/models/config/AppConfig.d.ts +0 -44
  70. package/lib/ergo-react/src/models/config/AppConfig.js +0 -61
  71. package/lib/ergo-react/src/models/config/env.d.ts +0 -19
  72. package/lib/ergo-react/src/models/config/env.js +0 -21
  73. package/lib/ergo-react/src/models/config/ft.d.ts +0 -21
  74. package/lib/ergo-react/src/models/config/ft.js +0 -23
  75. package/lib/ergo-react/src/models/maps/overpass/OverpassClient.d.ts +0 -7
  76. package/lib/ergo-react/src/models/maps/overpass/OverpassClient.js +0 -82
  77. package/lib/ergo-react/src/models/maps/ways/MapArea.d.ts +0 -133
  78. package/lib/ergo-react/src/models/maps/ways/MapArea.js +0 -1203
  79. package/lib/ergo-react/src/models/math/Vector.d.ts +0 -21
  80. package/lib/ergo-react/src/models/math/Vector.js +0 -194
  81. package/lib/ergo-react/src/models/math/geometry.d.ts +0 -1
  82. package/lib/ergo-react/src/models/math/geometry.js +0 -63
  83. package/lib/ergo-react/src/models/math/math.d.ts +0 -6
  84. package/lib/ergo-react/src/models/math/math.js +0 -28
  85. package/lib/ergo-react/src/models/route/RouteUtils.d.ts +0 -29
  86. package/lib/ergo-react/src/models/route/RouteUtils.js +0 -386
  87. package/lib/ergo-react/src/models/route/route.d.ts +0 -84
  88. package/lib/ergo-react/src/models/route/route.js +0 -1314
  89. package/lib/ergo-react/src/models/settings/settings.d.ts +0 -23
  90. package/lib/ergo-react/src/models/settings/settings.js +0 -213
  91. package/lib/ergo-react/src/services/app/fs/fs.d.ts +0 -47
  92. package/lib/ergo-react/src/services/app/fs/fs.js +0 -238
  93. package/lib/ergo-react/src/services/app/fs/index.d.ts +0 -2
  94. package/lib/ergo-react/src/services/app/fs/index.js +0 -10
  95. package/lib/ergo-react/src/services/app/fs/path.d.ts +0 -8
  96. package/lib/ergo-react/src/services/app/fs/path.js +0 -38
  97. package/lib/ergo-react/src/utils/coding.d.ts +0 -15
  98. package/lib/ergo-react/src/utils/coding.js +0 -109
  99. package/lib/ergo-react/src/utils/electron.d.ts +0 -2
  100. package/lib/ergo-react/src/utils/electron.js +0 -8
  101. package/lib/routes/base/utils/xnl.d.ts +0 -9
  102. package/lib/routes/base/utils/xnl.js +0 -53
  103. package/lib/routes/list/bindings/mock.d.ts +0 -9
  104. package/lib/routes/list/repository.d.ts +0 -0
  105. package/lib/routes/list/repository.js +0 -0
  106. package/lib/routes/utils/localization.d.ts +0 -2
  107. package/lib/services/src/routes/base/parsers/bikelab.d.ts +0 -18
  108. package/lib/services/src/routes/base/parsers/bikelab.js +0 -74
  109. package/lib/services/src/routes/base/parsers/epm.d.ts +0 -7
  110. package/lib/services/src/routes/base/parsers/epm.js +0 -351
  111. package/lib/services/src/routes/base/parsers/gpx-import.d.ts +0 -8
  112. package/lib/services/src/routes/base/parsers/gpx-import.js +0 -132
  113. package/lib/services/src/routes/base/parsers/gpx.d.ts +0 -3
  114. package/lib/services/src/routes/base/parsers/gpx.js +0 -107
  115. package/lib/services/src/routes/base/parsers/json.d.ts +0 -11
  116. package/lib/services/src/routes/base/parsers/json.js +0 -83
  117. package/lib/services/src/routes/base/parsers/kwt.d.ts +0 -28
  118. package/lib/services/src/routes/base/parsers/kwt.js +0 -188
  119. package/lib/services/src/routes/base/parsers/utils.d.ts +0 -1
  120. package/lib/services/src/routes/base/parsers/utils.js +0 -32
  121. package/lib/services/src/routes/base/parsers/xml.d.ts +0 -6
  122. package/lib/services/src/routes/base/parsers/xml.js +0 -77
  123. package/lib/services/src/routes/base/types/index.d.ts +0 -44
  124. package/lib/services/src/routes/base/utils/localization.js +0 -12
  125. package/lib/services/src/routes/base/utils/route.d.ts +0 -4
  126. package/lib/services/src/routes/base/utils/route.js +0 -52
  127. package/lib/services/src/routes/base/utils/xnl.d.ts +0 -0
  128. package/lib/services/src/routes/base/utils/xnl.js +0 -0
  129. package/lib/{api/repository/rypes.d.ts → routes/base/parsers/incyclistxml.d.ts} +0 -0
  130. package/lib/{api/repository/rypes.js → routes/base/parsers/incyclistxml.js} +0 -0
  131. package/lib/{services/src/api/rest → routes/base/parsers}/types.js +0 -0
  132. package/lib/{services/src → src}/api/repository/index.d.ts +0 -0
  133. package/lib/{services/src → src}/api/repository/index.js +0 -0
  134. package/lib/{services/src → src}/api/repository/json/index.d.ts +0 -0
  135. package/lib/{services/src → src}/api/repository/json/index.js +0 -0
  136. package/lib/{services/src → src}/api/repository/types.js +0 -0
  137. package/lib/{services/src → src}/api/rest/index.d.ts +0 -0
  138. package/lib/{services/src → src}/api/rest/index.js +0 -0
  139. package/lib/{services/src → src}/api/rest/types.d.ts +0 -0
  140. package/lib/{services/src/routes/base/api → src/api/rest}/types.js +0 -0
  141. package/lib/{services/src → src}/base/service.d.ts +0 -0
  142. package/lib/{services/src → src}/base/service.js +0 -0
  143. package/lib/{services/src → src}/devices/access/index.d.ts +0 -0
  144. package/lib/{services/src → src}/devices/access/index.js +0 -0
  145. package/lib/{services/src → src}/devices/access/mock.d.ts +0 -0
  146. package/lib/{services/src → src}/devices/access/mock.js +0 -0
  147. package/lib/{services/src → src}/devices/access/model.d.ts +0 -0
  148. package/lib/{services/src → src}/devices/access/model.js +0 -0
  149. package/lib/{services/src → src}/devices/access/service.d.ts +0 -0
  150. package/lib/{services/src → src}/devices/access/service.js +0 -0
  151. package/lib/{services/src → src}/devices/configuration/index.d.ts +0 -0
  152. package/lib/{services/src → src}/devices/configuration/index.js +0 -0
  153. package/lib/{services/src → src}/devices/configuration/mock.d.ts +0 -0
  154. package/lib/{services/src → src}/devices/configuration/mock.js +0 -0
  155. package/lib/{services/src → src}/devices/configuration/model/app/index.d.ts +0 -0
  156. package/lib/{services/src → src}/devices/configuration/model/app/index.js +0 -0
  157. package/lib/{services/src → src}/devices/configuration/model/index.d.ts +0 -0
  158. package/lib/{services/src → src}/devices/configuration/model/index.js +0 -0
  159. package/lib/{services/src → src}/devices/configuration/model/repository/index.d.ts +0 -0
  160. package/lib/{services/src → src}/devices/configuration/model/repository/index.js +0 -0
  161. package/lib/{services/src → src}/devices/configuration/model/repository/legacy.d.ts +0 -0
  162. package/lib/{services/src → src}/devices/configuration/model/repository/legacy.js +0 -0
  163. package/lib/{services/src → src}/devices/configuration/model/service/index.d.ts +0 -0
  164. package/lib/{services/src → src}/devices/configuration/model/service/index.js +0 -0
  165. package/lib/{services/src → src}/devices/configuration/service.d.ts +0 -0
  166. package/lib/{services/src → src}/devices/configuration/service.js +0 -0
  167. package/lib/{services/src → src}/devices/index.d.ts +0 -0
  168. package/lib/{services/src → src}/devices/index.js +0 -0
  169. package/lib/{services/src → src}/devices/pairing/index.d.ts +0 -0
  170. package/lib/{services/src → src}/devices/pairing/index.js +0 -0
  171. package/lib/{services/src → src}/devices/pairing/model.d.ts +0 -0
  172. package/lib/{services/src → src}/devices/pairing/model.js +0 -0
  173. package/lib/{services/src → src}/devices/pairing/service.d.ts +0 -0
  174. package/lib/{services/src → src}/devices/ride/index.d.ts +0 -0
  175. package/lib/{services/src → src}/devices/ride/index.js +0 -0
  176. package/lib/{services/src → src}/devices/ride/model.d.ts +0 -0
  177. package/lib/{services/src → src}/devices/ride/model.js +0 -0
  178. package/lib/{services/src → src}/devices/ride/service.d.ts +0 -0
  179. package/lib/{services/src → src}/devices/ride/service.js +0 -0
  180. package/lib/{services/src → src}/index.d.ts +1 -1
  181. package/lib/{services/src → src}/index.js +2 -2
  182. /package/lib/{services/src → src}/routes/base/api/consts.d.ts +0 -0
  183. /package/lib/{services/src → src}/routes/base/api/consts.js +0 -0
  184. /package/lib/{services/src → src}/routes/base/api/index.d.ts +0 -0
  185. /package/lib/{services/src → src}/routes/base/api/index.js +0 -0
  186. /package/lib/{services/src/routes/list → src/routes/base/api}/types.js +0 -0
  187. /package/lib/{services/src/routes/base/types/index.js → src/routes/base/parsers/types.js} +0 -0
  188. /package/lib/{services/src → src}/routes/base/utils/localization.d.ts +0 -0
  189. /package/lib/{routes → src/routes/base}/utils/localization.js +0 -0
  190. /package/lib/{services/src → src}/routes/index.d.ts +0 -0
  191. /package/lib/{services/src → src}/routes/index.js +0 -0
  192. /package/lib/{services/src → src}/routes/list/FreeRideCard.d.ts +0 -0
  193. /package/lib/{services/src → src}/routes/list/FreeRideCard.js +0 -0
  194. /package/lib/{services/src → src}/routes/list/ImportCard.d.ts +0 -0
  195. /package/lib/{services/src → src}/routes/list/ImportCard.js +0 -0
  196. /package/lib/{services/src → src}/routes/list/consts.d.ts +0 -0
  197. /package/lib/{services/src → src}/routes/list/consts.js +0 -0
  198. /package/lib/{services/src → src}/routes/list/index.d.ts +0 -0
  199. /package/lib/{services/src → src}/routes/list/index.js +0 -0
  200. /package/lib/{services/src → src}/settings/index.d.ts +0 -0
  201. /package/lib/{services/src → src}/settings/index.js +0 -0
  202. /package/lib/{services/src → src}/settings/user/bindings/index.d.ts +0 -0
  203. /package/lib/{services/src → src}/settings/user/bindings/index.js +0 -0
  204. /package/lib/{services/src → src}/settings/user/bindings/json.d.ts +0 -0
  205. /package/lib/{services/src → src}/settings/user/bindings/json.js +0 -0
  206. /package/lib/{services/src → src}/settings/user/bindings/types.d.ts +0 -0
  207. /package/lib/{services/src → src}/settings/user/bindings/types.js +0 -0
  208. /package/lib/{services/src → src}/settings/user/mock.d.ts +0 -0
  209. /package/lib/{services/src → src}/settings/user/mock.js +0 -0
  210. /package/lib/{services/src → src}/settings/user/service.d.ts +0 -0
  211. /package/lib/{services/src → src}/settings/user/service.js +0 -0
  212. /package/lib/{services/src → src}/utils/clone.d.ts +0 -0
  213. /package/lib/{services/src → src}/utils/clone.js +0 -0
  214. /package/lib/{services/src → src}/utils/geo.d.ts +0 -0
  215. /package/lib/{services/src → src}/utils/geo.js +0 -0
  216. /package/lib/{services/src → src}/utils/index.d.ts +0 -0
  217. /package/lib/{services/src → src}/utils/index.js +0 -0
  218. /package/lib/{services/src → src}/utils/logging.d.ts +0 -0
  219. /package/lib/{services/src → src}/utils/logging.js +0 -0
  220. /package/lib/{services/src → src}/utils/math.d.ts +0 -0
  221. /package/lib/{services/src → src}/utils/math.js +0 -0
  222. /package/lib/{services/src → src}/utils/merge.d.ts +0 -0
  223. /package/lib/{services/src → src}/utils/merge.js +0 -0
  224. /package/lib/{services/src → src}/utils/sleep.d.ts +0 -0
  225. /package/lib/{services/src → src}/utils/sleep.js +0 -0
  226. /package/lib/{services/src → src}/utils/valid.d.ts +0 -0
  227. /package/lib/{services/src → src}/utils/valid.js +0 -0
@@ -0,0 +1 @@
1
+ export declare function loadFile(type: any, fileName: any): Promise<unknown>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.loadFile = void 0;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ function loadFile(type, fileName) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ return new Promise((resolve, reject) => {
20
+ fs_1.default.readFile(fileName, type, (err, data) => {
21
+ if (err)
22
+ return reject(err);
23
+ return resolve(data);
24
+ });
25
+ });
26
+ });
27
+ }
28
+ exports.loadFile = loadFile;
@@ -1,3 +1,6 @@
1
1
  export * from './rest/index';
2
2
  export * from './rest/types';
3
3
  export * from './repository';
4
+ export * from './path';
5
+ import path from './path';
6
+ export { path };
package/lib/api/index.js CHANGED
@@ -13,7 +13,14 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
16
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.path = void 0;
17
21
  __exportStar(require("./rest/index"), exports);
18
22
  __exportStar(require("./rest/types"), exports);
19
23
  __exportStar(require("./repository"), exports);
24
+ __exportStar(require("./path"), exports);
25
+ const path_1 = __importDefault(require("./path"));
26
+ exports.path = path_1.default;
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import path from "path";
3
+ export interface IPathBinding {
4
+ join(...paths: string[]): any;
5
+ parse(path: string): path.ParsedPath;
6
+ }
7
+ export default class PathSupport {
8
+ static _binding: IPathBinding;
9
+ static initBinding(binding: IPathBinding): void;
10
+ static join(...paths: string[]): string;
11
+ static parse(path: string): path.ParsedPath;
12
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class PathSupport {
4
+ static initBinding(binding) {
5
+ PathSupport._binding = binding;
6
+ }
7
+ static join(...paths) {
8
+ const binding = PathSupport._binding;
9
+ if (!binding)
10
+ throw new Error('no binding');
11
+ return binding.join(...paths);
12
+ }
13
+ static parse(path) {
14
+ const binding = PathSupport._binding;
15
+ if (!binding)
16
+ throw new Error('no binding');
17
+ return binding.parse(path);
18
+ }
19
+ }
20
+ PathSupport._binding = undefined;
21
+ exports.default = PathSupport;
@@ -25,16 +25,14 @@ export interface FileLoaderResult {
25
25
  data?: any;
26
26
  epmEpp?: any;
27
27
  }
28
- export interface FileInfo {
29
- }
30
28
  export interface FileInfo {
31
29
  type: 'url' | 'file';
32
- url: string;
30
+ url?: string;
33
31
  name: string;
34
32
  dir: string;
35
33
  ext: string;
36
34
  delimiter: string;
37
35
  }
38
36
  export interface IFileLoader {
39
- processSingle(file: FileInfo): Promise<FileLoaderResult>;
37
+ open(file: FileInfo): Promise<FileLoaderResult>;
40
38
  }
@@ -175,7 +175,6 @@ class DeviceAccessService extends events_1.default {
175
175
  this.connect(name); });
176
176
  return;
177
177
  }
178
- console.log('~~~ DEBUG:connect if', ifaceName, this.interfaces[ifaceName]);
179
178
  if (((_a = this.interfaces[ifaceName]) === null || _a === void 0 ? void 0 : _a.enabled) === false)
180
179
  return;
181
180
  const impl = this.getInterface(ifaceName);
@@ -189,6 +188,7 @@ class DeviceAccessService extends events_1.default {
189
188
  return true;
190
189
  this.interfaces[ifaceName].state = 'connecting';
191
190
  this.emit('interface-changed', ifaceName, Object.assign(Object.assign({}, this.interfaces[ifaceName]), { state: 'connecting' }));
191
+ yield impl.disconnect();
192
192
  const connected = yield impl.connect();
193
193
  const state = connected ? 'connected' : 'disconnected';
194
194
  this.interfaces[ifaceName].state = state;
@@ -54,6 +54,7 @@ export interface InternalPairingState extends PairingState {
54
54
  check?: {
55
55
  preparing?: number;
56
56
  promise?: Promise<boolean>;
57
+ to?: NodeJS.Timeout;
57
58
  };
58
59
  scan?: {
59
60
  preparing?: number;
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import { DeviceAccessService } from "../access/service";
2
3
  import { AdapterInfo, CapabilityInformation, DeviceConfigurationInfo, DeviceConfigurationService, IncyclistDeviceSettings, InterfaceSetting } from "../configuration";
3
4
  import { CapabilityData, DevicePairingData, DevicePairingStatus, DeviceSelectState, InternalPairingState, PairingProps, PairingSettings, PairingState } from "./model";
@@ -32,6 +33,7 @@ export declare class DevicePairingService extends IncyclistService {
32
33
  static getInstance(): DevicePairingService;
33
34
  constructor(services?: Services);
34
35
  start(onStateChanged: (newState: PairingState) => void): Promise<void>;
36
+ protected loadConfiguration(): Promise<void>;
35
37
  protected initConfigHandlers(): void;
36
38
  protected removeConfigHandlers(): void;
37
39
  stop(): Promise<void>;
@@ -41,6 +43,7 @@ export declare class DevicePairingService extends IncyclistService {
41
43
  deleteDevice(capability: IncyclistCapability, udid: string, deleteAll?: boolean): Promise<void>;
42
44
  unselectDevices(capability: IncyclistCapability): Promise<void>;
43
45
  changeInterfaceSettings(name: string, settings: InterfaceSetting): Promise<void>;
46
+ protected restartPair(): Promise<void>;
44
47
  protected restart(): Promise<void>;
45
48
  protected _stop(): Promise<void>;
46
49
  protected getCapability(capability: IncyclistCapability | CapabilityData): CapabilityData;
@@ -77,6 +80,7 @@ export declare class DevicePairingService extends IncyclistService {
77
80
  private stopPairing;
78
81
  protected run(props?: PairingProps): Promise<void>;
79
82
  private startPairing;
83
+ private isReadyToPair;
80
84
  private processConnectedDevices;
81
85
  private startScanning;
82
86
  protected deregisterScanningDataHandlers(): void;
@@ -105,6 +109,7 @@ export declare class DevicePairingService extends IncyclistService {
105
109
  protected deleteCapabilityDevice(capability: IncyclistCapability, udid: string, shouldEmit?: boolean): void;
106
110
  protected isScanning(): boolean;
107
111
  protected isPairing(): boolean;
112
+ protected isPairingWaiting(): NodeJS.Timeout;
108
113
  protected _stopDeviceSelection(changed: boolean): Promise<void>;
109
114
  private numberOfSelectedCababilities;
110
115
  protected addToDeletedList(capability: IncyclistCapability | CapabilityData, udid: string): void;
@@ -69,16 +69,7 @@ class DevicePairingService extends service_2.IncyclistService {
69
69
  this.emitStateChange(this.state);
70
70
  return;
71
71
  }
72
- yield this.waitForInit();
73
- const { capabilities, interfaces } = this.configuration.load();
74
- const state = Object.assign({}, this.state);
75
- delete state.adapters;
76
- this.state.capabilities = this.mappedCapabilities(capabilities);
77
- this.state.interfaces = this.access.enrichWithAccessState(interfaces);
78
- this.state.canStartRide = this.configuration.canStartRide();
79
- this.state.stopRequested = false;
80
- this.state.stopped = false;
81
- this.logCapabilities();
72
+ yield this.loadConfiguration();
82
73
  this.state.interfaces.forEach(i => {
83
74
  if (!this.isInterfaceEnabled(i.name))
84
75
  this.unselectOnInterface(i.name);
@@ -93,6 +84,20 @@ class DevicePairingService extends service_2.IncyclistService {
93
84
  }
94
85
  });
95
86
  }
87
+ loadConfiguration() {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ yield this.waitForInit();
90
+ const { capabilities, interfaces } = this.configuration.load();
91
+ const state = Object.assign({}, this.state);
92
+ delete state.adapters;
93
+ this.state.capabilities = this.mappedCapabilities(capabilities);
94
+ this.state.interfaces = this.access.enrichWithAccessState(interfaces);
95
+ this.state.canStartRide = this.configuration.canStartRide();
96
+ this.state.stopRequested = false;
97
+ this.state.stopped = false;
98
+ this.logCapabilities();
99
+ });
100
+ }
96
101
  initConfigHandlers() {
97
102
  this.configuration.on('interface-changed', this.onInterfaceConfigChangedHandler);
98
103
  this.configuration.on('capability-changed', this.onConfigurationUpdateHandler);
@@ -242,6 +247,17 @@ class DevicePairingService extends service_2.IncyclistService {
242
247
  }
243
248
  });
244
249
  }
250
+ restartPair() {
251
+ var _a, _b;
252
+ return __awaiter(this, void 0, void 0, function* () {
253
+ if (!this.isPairing())
254
+ return;
255
+ if ((_a = this.state.check) === null || _a === void 0 ? void 0 : _a.to)
256
+ clearTimeout((_b = this.state.check) === null || _b === void 0 ? void 0 : _b.to);
257
+ delete this.state.check;
258
+ this.run();
259
+ });
260
+ }
245
261
  restart() {
246
262
  return __awaiter(this, void 0, void 0, function* () {
247
263
  const wasActive = this.isPairing() || this.isScanning();
@@ -437,6 +453,7 @@ class DevicePairingService extends service_2.IncyclistService {
437
453
  this.logEvent({ message: 'interface state changed', interface: ifName, state: ifDetails.state });
438
454
  try {
439
455
  let restartScan = false;
456
+ let restartPair = false;
440
457
  if (interfacesNew) {
441
458
  const getData = (i) => ({ name: i.name, enabled: i.enabled, state: i.state });
442
459
  if (!prev)
@@ -449,6 +466,20 @@ class DevicePairingService extends service_2.IncyclistService {
449
466
  const changedIdx = prev.findIndex(i => i.name === ifName);
450
467
  if (ifDetails.state === 'disconnected' && current.state !== 'disconnected') {
451
468
  this.failAdaptersOnInterface(ifName);
469
+ if (this.isPairing()) {
470
+ const pairing = this.getPairingInterfaces();
471
+ if (pairing.includes(ifName)) {
472
+ try {
473
+ current.state = 'disconnected';
474
+ this.emitStateChange({ interfaces: this.state.interfaces });
475
+ yield (0, utils_1.sleep)(1000);
476
+ this.access.connect(ifName);
477
+ }
478
+ catch (err) {
479
+ this.logError(err, 'reconnect');
480
+ }
481
+ }
482
+ }
452
483
  }
453
484
  else if (ifDetails.state === 'unavailable' && current.state !== 'unavailable') {
454
485
  this.disableAdaptersOnInterface(ifName);
@@ -460,12 +491,18 @@ class DevicePairingService extends service_2.IncyclistService {
460
491
  else if (ifDetails.state === 'connected' && current.state !== 'connected' && !this.isPairing()) {
461
492
  restartScan = true;
462
493
  }
494
+ else if (ifDetails.state === 'connected' && current.state !== 'connected' && this.isPairingWaiting()) {
495
+ restartPair = true;
496
+ }
463
497
  if (changedIdx !== -1) {
464
498
  prev[changedIdx].isScanning = ifDetails.isScanning;
465
499
  prev[changedIdx].state = ifDetails.state;
466
500
  }
467
501
  if (restartScan)
468
502
  this.restart();
503
+ if (restartPair) {
504
+ this.restartPair();
505
+ }
469
506
  this.emitStateChange({ interfaces: this.state.interfaces });
470
507
  }
471
508
  }
@@ -770,16 +807,15 @@ class DevicePairingService extends service_2.IncyclistService {
770
807
  const preparing = DevicePairingService.checkCounter++;
771
808
  this.state.check = { preparing };
772
809
  this.emit('pairing-start');
773
- const requiredInterfaces = this.getPairingInterfaces();
774
- const busyRequired = this.state.interfaces
775
- .filter(i => requiredInterfaces.includes(i.name))
776
- .find(i => i.enabled && i.state !== 'connected' && i.state !== 'unavailable');
777
- const isReady = busyRequired === undefined;
810
+ const { isReady, busyRequired } = this.isReadyToPair();
778
811
  if (!isReady) {
779
- setTimeout(() => {
812
+ this.logEvent({ message: 'Pairing: waiting for interfaces', interfaces: busyRequired === null || busyRequired === void 0 ? void 0 : busyRequired.name });
813
+ this.state.check.to = setTimeout(() => {
780
814
  if ((!this.isPairing() || this.state.check.preparing === preparing) && !this.isScanning()) {
781
- delete this.state.check;
782
- this.run();
815
+ const { isReady } = this.isReadyToPair();
816
+ if (isReady) {
817
+ delete this.state.check;
818
+ }
783
819
  }
784
820
  }, 1000);
785
821
  return;
@@ -810,6 +846,14 @@ class DevicePairingService extends service_2.IncyclistService {
810
846
  }
811
847
  });
812
848
  }
849
+ isReadyToPair() {
850
+ const requiredInterfaces = this.getPairingInterfaces();
851
+ const busyRequired = this.state.interfaces
852
+ .filter(i => requiredInterfaces.includes(i.name))
853
+ .find(i => i.enabled && i.state !== 'connected' && i.state !== 'unavailable');
854
+ const isReady = busyRequired === undefined;
855
+ return { isReady, busyRequired };
856
+ }
813
857
  processConnectedDevices(adapters) {
814
858
  const started = adapters.filter(ai => ai.adapter.isStarted());
815
859
  started.forEach(ai => {
@@ -1105,6 +1149,9 @@ class DevicePairingService extends service_2.IncyclistService {
1105
1149
  var _a;
1106
1150
  return this.state.check !== undefined && ((_a = this.state) === null || _a === void 0 ? void 0 : _a.check) !== null;
1107
1151
  }
1152
+ isPairingWaiting() {
1153
+ return this.isPairing() && this.state.check.to;
1154
+ }
1108
1155
  _stopDeviceSelection(changed) {
1109
1156
  return __awaiter(this, void 0, void 0, function* () {
1110
1157
  this.deviceSelectState = null;
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './devices';
2
2
  export * from './utils';
3
- export { useUserSettings, initUserSettings, UserSettingsService, UserSettingsBinding, IUserSettingsBinding } from './settings';
4
3
  export * from './api';
5
4
  export * from './routes';
5
+ export { useUserSettings, initUserSettings, UserSettingsService, UserSettingsBinding, IUserSettingsBinding } from './settings';
package/lib/index.js CHANGED
@@ -17,10 +17,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.UserSettingsBinding = exports.UserSettingsService = exports.initUserSettings = exports.useUserSettings = void 0;
18
18
  __exportStar(require("./devices"), exports);
19
19
  __exportStar(require("./utils"), exports);
20
+ __exportStar(require("./api"), exports);
21
+ __exportStar(require("./routes"), exports);
20
22
  var settings_1 = require("./settings");
21
23
  Object.defineProperty(exports, "useUserSettings", { enumerable: true, get: function () { return settings_1.useUserSettings; } });
22
24
  Object.defineProperty(exports, "initUserSettings", { enumerable: true, get: function () { return settings_1.initUserSettings; } });
23
25
  Object.defineProperty(exports, "UserSettingsService", { enumerable: true, get: function () { return settings_1.UserSettingsService; } });
24
26
  Object.defineProperty(exports, "UserSettingsBinding", { enumerable: true, get: function () { return settings_1.UserSettingsBinding; } });
25
- __exportStar(require("./api"), exports);
26
- __exportStar(require("./routes"), exports);
@@ -22,6 +22,7 @@ export interface RouteApiDescription extends RouteBase {
22
22
  video?: VideoDescription;
23
23
  type?: RouteType;
24
24
  localizedTitle?: LocalizedText;
25
+ previewUrl?: string;
25
26
  }
26
27
  export type LegacyRouteGpxRepoDescription = {
27
28
  id: string;
@@ -52,10 +53,14 @@ export type RouteApiDetail = {
52
53
  elevation?: number;
53
54
  points?: Array<RoutePoint>;
54
55
  downloadUrl?: string;
55
- downloadType: string;
56
+ downloadType?: string;
56
57
  version?: string;
57
58
  category?: RouteCategory;
58
59
  provider?: RouteProvider;
59
60
  video?: VideoDescription;
60
61
  localizedTitle?: LocalizedText;
62
+ previewUrl?: string;
63
+ previewUrlLocal?: string;
64
+ description?: LocalizedText;
65
+ next?: string;
61
66
  };
@@ -0,0 +1,12 @@
1
+ import { Parser } from "../types";
2
+ export declare class ParserFactory {
3
+ static _instance: ParserFactory;
4
+ static getInstance(): ParserFactory;
5
+ private parsers;
6
+ private initialized;
7
+ constructor();
8
+ add(parser: Parser<unknown, unknown>): void;
9
+ findMatching(extension: string, data: unknown): Parser<unknown, unknown>;
10
+ isInitialized(): boolean;
11
+ setInitialized(done: boolean): void;
12
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParserFactory = void 0;
4
+ class ParserFactory {
5
+ static getInstance() {
6
+ if (!ParserFactory._instance)
7
+ ParserFactory._instance = new ParserFactory();
8
+ return ParserFactory._instance;
9
+ }
10
+ constructor() {
11
+ this.parsers = [];
12
+ this.initialized = false;
13
+ }
14
+ add(parser) {
15
+ this.parsers.push(parser);
16
+ }
17
+ findMatching(extension, data) {
18
+ const matching = this.parsers
19
+ .filter(p => p.supportsExtension(extension))
20
+ .filter(p => p.supportsContent(data));
21
+ if (!(matching === null || matching === void 0 ? void 0 : matching.length))
22
+ throw new Error(`invalid file format ${extension}`);
23
+ return matching[0];
24
+ }
25
+ isInitialized() {
26
+ return this.initialized;
27
+ }
28
+ setInitialized(done) {
29
+ this.initialized = done;
30
+ }
31
+ }
32
+ exports.ParserFactory = ParserFactory;
@@ -0,0 +1,5 @@
1
+ import { XMLParser } from './xml';
2
+ export declare class IncyclistXMLParser extends XMLParser {
3
+ static SCHEME: string;
4
+ protected getGPXFileContent(url: any): Promise<any>;
5
+ }
@@ -8,25 +8,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.MockRouteBinding = exports.MockApi = void 0;
13
- class MockApi {
14
- constructor() {
15
- this.routes = [];
16
- }
17
- setRoutes(routes) {
18
- this.routes = routes;
19
- }
20
- getRouteDescriptions() {
15
+ exports.IncyclistXMLParser = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const xml_1 = require("./xml");
18
+ class IncyclistXMLParser extends xml_1.XMLParser {
19
+ getGPXFileContent(url) {
21
20
  return __awaiter(this, void 0, void 0, function* () {
22
- return this.routes;
21
+ const res = yield axios_1.default.get(url);
22
+ return res.data;
23
23
  });
24
24
  }
25
25
  }
26
- exports.MockApi = MockApi;
27
- class MockRouteBinding {
28
- constructor() {
29
- this.api = new MockApi();
30
- }
31
- }
32
- exports.MockRouteBinding = MockRouteBinding;
26
+ exports.IncyclistXMLParser = IncyclistXMLParser;
27
+ IncyclistXMLParser.SCHEME = 'gpx-import';
@@ -0,0 +1,3 @@
1
+ export * from './kwt';
2
+ import { ParserFactory } from './factory';
3
+ export declare const useParsers: () => ParserFactory;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.useParsers = void 0;
18
+ __exportStar(require("./kwt"), exports);
19
+ const factory_1 = require("./factory");
20
+ const incyclist_xml_1 = require("./incyclist-xml");
21
+ const kwt_1 = require("./kwt");
22
+ const multixml_1 = require("./multixml");
23
+ const useParsers = () => {
24
+ const parsers = factory_1.ParserFactory.getInstance();
25
+ if (!parsers.isInitialized()) {
26
+ parsers.add(new multixml_1.MultipleXMLParser([kwt_1.KWTParser, incyclist_xml_1.IncyclistXMLParser]));
27
+ parsers.setInitialized(true);
28
+ }
29
+ return parsers;
30
+ };
31
+ exports.useParsers = useParsers;
@@ -1,9 +1,4 @@
1
- import { XmlJSON } from '../utils/xnl';
2
- import { RouteApiDescription } from '../api/types';
3
- import { ParseResult, Parser } from '../types';
4
- export declare function parseSegment(s: any): any;
5
- export declare function parseInfoText(infoText: any): any;
6
- export default function ImportKWT(xmljson: XmlJSON): Promise<ParseResult<RouteApiDescription>>;
7
- export declare class KWTParser implements Parser<string, RouteApiDescription> {
8
- import(data: string): Promise<ParseResult<RouteApiDescription>>;
1
+ import { XMLParser } from './xml';
2
+ export declare class KWTParser extends XMLParser {
3
+ static SCHEME: string;
9
4
  }
@@ -1,52 +1,8 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.KWTParser = exports.parseInfoText = exports.parseSegment = void 0;
13
- let _logger;
14
- function parseSegment(s) {
15
- const segment = s[0] ? (s[0].$ || s[0]) : (s.$ || s);
16
- segment.start = segment.start !== undefined ? parseInt(segment.start) : undefined;
17
- segment.end = segment.end !== undefined ? parseInt(segment.end) : undefined;
18
- return segment;
19
- }
20
- exports.parseSegment = parseSegment;
21
- function parseInfoText(infoText) {
22
- if (infoText.distance !== undefined)
23
- infoText.distance = parseInt(infoText.distance);
24
- const languageKeys = Object.keys(infoText).filter(k => k.length === 2);
25
- if (languageKeys && languageKeys.length > 0) {
26
- infoText.localizedText = {};
27
- languageKeys.forEach(k => {
28
- infoText.localizedText[k] = infoText[k];
29
- delete infoText[k];
30
- });
31
- }
32
- if (!infoText.text && infoText.localizedText) {
33
- const languages = Object.keys(infoText.localizedText);
34
- if (languages && languages.length > 0) {
35
- infoText.text = infoText.localizedText[languages[0]];
36
- }
37
- }
38
- return infoText;
39
- }
40
- exports.parseInfoText = parseInfoText;
41
- function ImportKWT(xmljson) {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- throw new Error('not implemented');
44
- });
45
- }
46
- exports.default = ImportKWT;
47
- class KWTParser {
48
- import(data) {
49
- throw new Error('Method not implemented.');
50
- }
3
+ exports.KWTParser = void 0;
4
+ const xml_1 = require("./xml");
5
+ class KWTParser extends xml_1.XMLParser {
51
6
  }
52
7
  exports.KWTParser = KWTParser;
8
+ KWTParser.SCHEME = 'kwt';
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import { FileInfo, IFileLoader } from "../../../api";
3
+ import { RouteApiDetail } from "../api/types";
4
+ import { ParseResult, Parser } from "../types";
5
+ import { XMLParser } from "./xml";
6
+ export declare class MultipleXMLParser implements Parser<string | Buffer, RouteApiDetail> {
7
+ protected parsers: any;
8
+ constructor(classes: Array<typeof XMLParser>);
9
+ import(file: FileInfo, data: string | Buffer, loader?: IFileLoader): Promise<ParseResult<RouteApiDetail>>;
10
+ supportsExtension(extension: string): boolean;
11
+ supportsContent(): boolean;
12
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MultipleXMLParser = void 0;
13
+ const xml_1 = require("../utils/xml");
14
+ class MultipleXMLParser {
15
+ constructor(classes) {
16
+ this.parsers = [];
17
+ classes.forEach(C => {
18
+ const parser = new C();
19
+ this.parsers.push(parser);
20
+ });
21
+ }
22
+ import(file, data, loader) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const str = Buffer.isBuffer(data) ? data.toString() : data;
25
+ const xmlJson = yield (0, xml_1.parseXml)(str);
26
+ const parser = this.parsers.find(p => p.supportsContent(xmlJson));
27
+ return yield parser.import(file, xmlJson, loader);
28
+ });
29
+ }
30
+ supportsExtension(extension) {
31
+ return (extension === null || extension === void 0 ? void 0 : extension.toLowerCase()) === 'xml';
32
+ }
33
+ supportsContent() {
34
+ return true;
35
+ }
36
+ }
37
+ exports.MultipleXMLParser = MultipleXMLParser;
@@ -0,0 +1,10 @@
1
+ export type Position = {
2
+ distance?: string;
3
+ lat?: string;
4
+ lon?: string;
5
+ fp?: string;
6
+ };
7
+ export type Altitude = {
8
+ distance?: string;
9
+ height?: string;
10
+ };
@@ -1 +1,7 @@
1
- export function addVideoSpeed(route: any): void;
1
+ import { FileInfo } from "../../../api";
2
+ import { RoutePoint, VideoRoutePoint } from "../types";
3
+ export declare const addVideoSpeed: (points: Array<RoutePoint>, video: any) => Array<VideoRoutePoint>;
4
+ export declare const getReferencedFileInfo: (info: FileInfo, referenced: {
5
+ file?: string;
6
+ url?: string;
7
+ }, scheme?: string) => string;