@de./sdk 2.3.3 → 2.4.0
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/dist/allend/MSI/Handles.d.ts +2 -0
- package/dist/allend/MSI/Handles.js +15 -8
- package/dist/allend/MSI/Handles.js.map +1 -1
- package/dist/allend/MSI/native.js +30 -8
- package/dist/allend/MSI/native.js.map +1 -1
- package/dist/allend/Realtime/service.d.ts +30 -0
- package/dist/allend/Realtime/service.js +84 -0
- package/dist/allend/Realtime/service.js.map +1 -0
- package/dist/allend/realtime-socket.d.ts +8 -0
- package/dist/allend/realtime-socket.js +5 -1
- package/dist/allend/realtime-socket.js.map +1 -1
- package/dist/core.d.ts +3 -0
- package/dist/core.js +6 -1
- package/dist/core.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/react-native.d.ts +1 -0
- package/dist/types/index.d.ts +20 -0
- package/package.json +1 -1
- package/src/allend/MSI/Handles.ts +19 -5
- package/src/allend/MSI/native.tsx +29 -7
- package/src/allend/Realtime/service.ts +83 -0
- package/src/allend/realtime-socket.ts +12 -1
- package/src/core.ts +4 -0
- package/src/types/index.d.ts +20 -0
|
@@ -7,6 +7,8 @@ export default class Handles extends EventEmitter {
|
|
|
7
7
|
private chn;
|
|
8
8
|
private controls;
|
|
9
9
|
private options;
|
|
10
|
+
/** The last navigation's teardown — the map has one navigator, and the next waits for it */
|
|
11
|
+
private navigated;
|
|
10
12
|
constructor(chn: Channel, controls: Controls, options: MapOptions);
|
|
11
13
|
/**
|
|
12
14
|
* Listen when user manually picked a location
|
|
@@ -8,6 +8,8 @@ const stream_1 = __importDefault(require("../../utils/stream"));
|
|
|
8
8
|
class Handles extends events_1.EventEmitter {
|
|
9
9
|
constructor(chn, controls, options) {
|
|
10
10
|
super();
|
|
11
|
+
/** The last navigation's teardown — the map has one navigator, and the next waits for it */
|
|
12
|
+
this.navigated = Promise.resolve();
|
|
11
13
|
this.chn = chn;
|
|
12
14
|
this.options = options;
|
|
13
15
|
this.controls = controls;
|
|
@@ -323,15 +325,15 @@ class Handles extends events_1.EventEmitter {
|
|
|
323
325
|
*/
|
|
324
326
|
navigation(journey) {
|
|
325
327
|
return new Promise((resolve, reject) => {
|
|
326
|
-
var _a;
|
|
327
328
|
if (!this.chn)
|
|
328
329
|
return reject('Map is not connected');
|
|
329
330
|
const initialize = () => {
|
|
330
331
|
var _a;
|
|
331
332
|
const stream = new stream_1.default;
|
|
332
333
|
// Sync with navigation route update
|
|
333
|
-
(_a = this.chn) === null || _a === void 0 ? void 0 : _a.on('navigation:direction', ({ status, direction, position }) => {
|
|
334
|
-
stream.sync({ status, direction, position });
|
|
334
|
+
(_a = this.chn) === null || _a === void 0 ? void 0 : _a.on('navigation:direction', ({ status, direction, position, instruction, remaining }) => {
|
|
335
|
+
stream.sync({ status, direction, position, instruction, remaining });
|
|
336
|
+
(instruction || remaining) && this.emit('pe:progress', { status, instruction, remaining });
|
|
335
337
|
switch (status) {
|
|
336
338
|
case 'STALE':
|
|
337
339
|
case 'STARTED':
|
|
@@ -362,14 +364,18 @@ class Handles extends events_1.EventEmitter {
|
|
|
362
364
|
})
|
|
363
365
|
.onerror(error => console.error('[Stream Error] ', error))
|
|
364
366
|
.onclose(() => {
|
|
365
|
-
var _a, _b;
|
|
367
|
+
var _a, _b, _c;
|
|
366
368
|
(_a = this.chn) === null || _a === void 0 ? void 0 : _a.off('navigation:direction');
|
|
367
|
-
(_b = this.controls) === null || _b === void 0 ? void 0 : _b.unmountNavigation();
|
|
369
|
+
this.navigated = (_c = (_b = this.controls) === null || _b === void 0 ? void 0 : _b.unmountNavigation().then(() => { var _a; return (_a = this.controls) === null || _a === void 0 ? void 0 : _a.removeRoute(String(journey.routeId)); }).catch(() => { })) !== null && _c !== void 0 ? _c : Promise.resolve();
|
|
368
370
|
});
|
|
369
371
|
return stream;
|
|
370
372
|
};
|
|
371
|
-
// Set route
|
|
372
|
-
|
|
373
|
+
// Set route, once the last navigation is gone. Its teardown is async,
|
|
374
|
+
// and a stop that follows another (kitchen, then door) used to start
|
|
375
|
+
// first: the old unmount and route removal then landed on the new one,
|
|
376
|
+
// and the rider rode on with no route and no marker
|
|
377
|
+
this.navigated.then(() => { var _a; return (_a = this.controls) === null || _a === void 0 ? void 0 : _a.setRoute(journey); })
|
|
378
|
+
.then(async () => {
|
|
373
379
|
var _a, _b, _c, _d, _e;
|
|
374
380
|
// Initialize navigation point to current location.
|
|
375
381
|
// The origin is a waypoint — `{ coords, caption }` — and the
|
|
@@ -395,7 +401,8 @@ class Handles extends events_1.EventEmitter {
|
|
|
395
401
|
// moment this resolves used to reach a navigator not yet started,
|
|
396
402
|
// and was dropped — as was any failure above, after the resolve
|
|
397
403
|
resolve(stream);
|
|
398
|
-
})
|
|
404
|
+
})
|
|
405
|
+
.catch(reject);
|
|
399
406
|
});
|
|
400
407
|
}
|
|
401
408
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Handles.js","sourceRoot":"","sources":["../../../src/allend/MSI/Handles.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Handles.js","sourceRoot":"","sources":["../../../src/allend/MSI/Handles.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,7 +89,9 @@ function gatewayURL({ env, devHostname }) {
|
|
|
89
89
|
* same event allowlist -- only the transport and the mounting differ.
|
|
90
90
|
*/
|
|
91
91
|
exports.default = (0, react_1.forwardRef)((props, ref) => {
|
|
92
|
-
const webViewRef = (0, react_1.useRef)(null), wioRef = (0, react_1.useRef)(null), apiRef = (0, react_1.useRef)(null),
|
|
92
|
+
const webViewRef = (0, react_1.useRef)(null), wioRef = (0, react_1.useRef)(null), apiRef = (0, react_1.useRef)(null),
|
|
93
|
+
/** The page load the control surface was built for; 0 before the first */
|
|
94
|
+
builtForRef = (0, react_1.useRef)(0),
|
|
93
95
|
/**
|
|
94
96
|
* The bridge is built once, so its handlers close over the props of the
|
|
95
97
|
* render that built it. `bind` resolves the access token at connect time
|
|
@@ -100,7 +102,9 @@ exports.default = (0, react_1.forwardRef)((props, ref) => {
|
|
|
100
102
|
* the callbacks: a host passing inline handlers had the mount-time ones
|
|
101
103
|
* called forever.
|
|
102
104
|
*/
|
|
103
|
-
propsRef = (0, react_1.useRef)(props), [isConnected, setIsConnected] = (0, react_1.useState)(false), [isReady, setIsReady] = (0, react_1.useState)(false),
|
|
105
|
+
propsRef = (0, react_1.useRef)(props), [isConnected, setIsConnected] = (0, react_1.useState)(false), [isReady, setIsReady] = (0, react_1.useState)(false),
|
|
106
|
+
/** Pages loaded: every load is a new page, with nothing the last one drew */
|
|
107
|
+
[loads, setLoads] = (0, react_1.useState)(0), baseURL = gatewayURL(props),
|
|
104
108
|
/**
|
|
105
109
|
* Report an error once, in Error form, whatever shape the transport used.
|
|
106
110
|
*/
|
|
@@ -151,7 +155,7 @@ exports.default = (0, react_1.forwardRef)((props, ref) => {
|
|
|
151
155
|
get plugins() { var _a; return (_a = apiRef.current) === null || _a === void 0 ? void 0 : _a.plugins; },
|
|
152
156
|
isReady: () => isConnected && isReady,
|
|
153
157
|
retry: () => {
|
|
154
|
-
|
|
158
|
+
builtForRef.current = 0;
|
|
155
159
|
initializeConnection();
|
|
156
160
|
}
|
|
157
161
|
}), [isConnected, isReady, initializeConnection]);
|
|
@@ -218,20 +222,35 @@ exports.default = (0, react_1.forwardRef)((props, ref) => {
|
|
|
218
222
|
subscription.remove();
|
|
219
223
|
wio.disconnect();
|
|
220
224
|
apiRef.current = null;
|
|
221
|
-
|
|
225
|
+
builtForRef.current = 0;
|
|
222
226
|
};
|
|
223
227
|
}, []);
|
|
224
228
|
// Build the control surface once the bridge is both connected and ready
|
|
225
229
|
(0, react_1.useEffect)(() => {
|
|
226
230
|
var _a, _b;
|
|
227
|
-
if (
|
|
231
|
+
if (builtForRef.current === loads || !wioRef.current || !isConnected || !isReady)
|
|
228
232
|
return;
|
|
229
233
|
const chn = wioRef.current, controls = new Controls_1.default(chn, propsRef.current), handles = new Handles_1.default(chn, controls, propsRef.current), plugins = new Plugins_1.default(chn, handles, controls, propsRef.current);
|
|
230
234
|
plugins.mount(REGISTERED_PLUGINS);
|
|
231
235
|
apiRef.current = { controls, handles, plugins };
|
|
232
|
-
|
|
236
|
+
builtForRef.current = loads;
|
|
237
|
+
/**
|
|
238
|
+
* On every page, not once. A reloaded page has no map state, and the
|
|
239
|
+
* host's routes, markers and navigation went with the old one; built once,
|
|
240
|
+
* the host never heard, kept the dead surface and drew into nothing.
|
|
241
|
+
*/
|
|
233
242
|
(_b = (_a = propsRef.current).onLoaded) === null || _b === void 0 ? void 0 : _b.call(_a, apiRef.current);
|
|
234
|
-
}, [isConnected, isReady]);
|
|
243
|
+
}, [isConnected, isReady, loads]);
|
|
244
|
+
/**
|
|
245
|
+
* A page finished loading: the first, or a reload. The bridge belongs to
|
|
246
|
+
* the page, so it is not ready until the new page says so.
|
|
247
|
+
*/
|
|
248
|
+
const onLoadEnd = () => {
|
|
249
|
+
setIsConnected(false);
|
|
250
|
+
setIsReady(false);
|
|
251
|
+
setLoads(n => n + 1);
|
|
252
|
+
initializeConnection();
|
|
253
|
+
};
|
|
235
254
|
const onMessage = (event) => {
|
|
236
255
|
var _a;
|
|
237
256
|
// Console forwarding rides the same bridge; peel it off before WIO sees it
|
|
@@ -263,7 +282,10 @@ exports.default = (0, react_1.forwardRef)((props, ref) => {
|
|
|
263
282
|
// The host app owns the status bar. Left on, the WebView restores the
|
|
264
283
|
// style it saw at creation whenever any window shows or hides — the
|
|
265
284
|
// keyboard included — overriding whatever screen is now on top.
|
|
266
|
-
autoManageStatusBarEnabled: false, cacheEnabled: props.env !== 'dev', incognito: props.env === 'dev', androidLayerType: "hardware", allowsBackForwardNavigationGestures: false, bounces: false, scrollEnabled: false, originWhitelist: [baseURL], onShouldStartLoadWithRequest: ({ url }) => isGatewayURL(url), onMessage: onMessage, onLoadEnd:
|
|
285
|
+
autoManageStatusBarEnabled: false, cacheEnabled: props.env !== 'dev', incognito: props.env === 'dev', androidLayerType: "hardware", allowsBackForwardNavigationGestures: false, bounces: false, scrollEnabled: false, originWhitelist: [baseURL], onShouldStartLoadWithRequest: ({ url }) => isGatewayURL(url), onMessage: onMessage, onLoadEnd: onLoadEnd,
|
|
286
|
+
// iOS kills a WebView's content process under memory pressure and
|
|
287
|
+
// leaves the view blank: load the page again rather than show nothing
|
|
288
|
+
onContentProcessDidTerminate: () => { var _a; return (_a = webViewRef.current) === null || _a === void 0 ? void 0 : _a.reload(); }, onError: ({ nativeEvent }) => reportError(new Error((nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.description) || 'WebView error')) }) }));
|
|
267
289
|
});
|
|
268
290
|
/**
|
|
269
291
|
* Register a plugin to be mounted on every MSI instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/allend/MSI/native.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/allend/MSI/native.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { OrderTrackingEvent, RallyEvent } from '@de./types';
|
|
2
|
+
import RealtimeSocket, { type RealtimeConnectOptions } from '../realtime-socket';
|
|
3
|
+
export default class ServiceRealtime extends RealtimeSocket {
|
|
4
|
+
protected get utype(): string;
|
|
5
|
+
/**
|
|
6
|
+
* A server keeps this connection for its whole life, so it reconnects for
|
|
7
|
+
* ever with backoff, and over WebSocket alone: long-polling buys nothing
|
|
8
|
+
* between two servers.
|
|
9
|
+
*/
|
|
10
|
+
protected socketOptions(): Record<string, unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* @param serviceId The name the platform is known by to De. — sent as the
|
|
13
|
+
* connection id and as the `de-api-service` header.
|
|
14
|
+
* @param options `getToken` should return the platform's current access
|
|
15
|
+
* token: a service rotates its token, and a reconnect
|
|
16
|
+
* after an expiry is refused without a fresh one.
|
|
17
|
+
*/
|
|
18
|
+
connect(serviceId: string, options?: RealtimeConnectOptions): Promise<void>;
|
|
19
|
+
/** Rally: offers, assignments, expiries, releases, relays, zone changes. */
|
|
20
|
+
onRallyEvent(fn: (event: RallyEvent) => void): this;
|
|
21
|
+
/**
|
|
22
|
+
* Every order in the workspace as it changes: what riders reported, what
|
|
23
|
+
* De. decided — collected, delivered, cancelled, failed.
|
|
24
|
+
*/
|
|
25
|
+
onOrderUpdate(fn: (event: OrderTrackingEvent) => void): this;
|
|
26
|
+
onConnect(fn: () => void): this;
|
|
27
|
+
onDisconnect(fn: (reason: string) => void): this;
|
|
28
|
+
/** A refused or failed attempt. Reconnection carries on regardless. */
|
|
29
|
+
onConnectError(fn: (error: Error) => void): this;
|
|
30
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const realtime_socket_1 = __importDefault(require("../realtime-socket"));
|
|
7
|
+
// ─── ServiceRealtime ──────────────────────────────────────────────────────────
|
|
8
|
+
//
|
|
9
|
+
// A platform's own server, connected to its workspace as a service: Buffé, or
|
|
10
|
+
// any platform built on De. It is not in an order room and joins nothing. De.
|
|
11
|
+
// puts a service connection straight into the workspace's Rally room and its
|
|
12
|
+
// services room, so it hears every dispatch event and every order update the
|
|
13
|
+
// workspace produces. That is the only way Rally events leave De.: riders'
|
|
14
|
+
// devices hear about offers from their platform, which relays them.
|
|
15
|
+
//
|
|
16
|
+
// Platforms used to open this socket by hand with socket.io-client, so each
|
|
17
|
+
// had to rediscover the handshake: `utype: 'service'`, the `de-api-service`
|
|
18
|
+
// header De. checks against its allow-list, a token read per attempt, and
|
|
19
|
+
// WebSocket only. Server-side only, because a browser cannot send the header.
|
|
20
|
+
//
|
|
21
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
22
|
+
class ServiceRealtime extends realtime_socket_1.default {
|
|
23
|
+
get utype() { return 'service'; }
|
|
24
|
+
/**
|
|
25
|
+
* A server keeps this connection for its whole life, so it reconnects for
|
|
26
|
+
* ever with backoff, and over WebSocket alone: long-polling buys nothing
|
|
27
|
+
* between two servers.
|
|
28
|
+
*/
|
|
29
|
+
socketOptions() {
|
|
30
|
+
return {
|
|
31
|
+
transports: ['websocket'],
|
|
32
|
+
reconnection: true,
|
|
33
|
+
reconnectionDelay: 1000,
|
|
34
|
+
reconnectionDelayMax: 60000,
|
|
35
|
+
reconnectionAttempts: Infinity
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @param serviceId The name the platform is known by to De. — sent as the
|
|
40
|
+
* connection id and as the `de-api-service` header.
|
|
41
|
+
* @param options `getToken` should return the platform's current access
|
|
42
|
+
* token: a service rotates its token, and a reconnect
|
|
43
|
+
* after an expiry is refused without a fresh one.
|
|
44
|
+
*/
|
|
45
|
+
connect(serviceId, options = {}) {
|
|
46
|
+
return this.open(serviceId, {
|
|
47
|
+
...options,
|
|
48
|
+
headers: { ...options.headers, 'de-api-service': serviceId }
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** Rally: offers, assignments, expiries, releases, relays, zone changes. */
|
|
52
|
+
onRallyEvent(fn) {
|
|
53
|
+
var _a;
|
|
54
|
+
(_a = this.nsp) === null || _a === void 0 ? void 0 : _a.on('RALLY_EVENT', fn);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Every order in the workspace as it changes: what riders reported, what
|
|
59
|
+
* De. decided — collected, delivered, cancelled, failed.
|
|
60
|
+
*/
|
|
61
|
+
onOrderUpdate(fn) {
|
|
62
|
+
var _a;
|
|
63
|
+
(_a = this.nsp) === null || _a === void 0 ? void 0 : _a.on('ORDER_UPDATE', fn);
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
onConnect(fn) {
|
|
67
|
+
var _a;
|
|
68
|
+
(_a = this.nsp) === null || _a === void 0 ? void 0 : _a.on('connect', fn);
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
onDisconnect(fn) {
|
|
72
|
+
var _a;
|
|
73
|
+
(_a = this.nsp) === null || _a === void 0 ? void 0 : _a.on('disconnect', fn);
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
/** A refused or failed attempt. Reconnection carries on regardless. */
|
|
77
|
+
onConnectError(fn) {
|
|
78
|
+
var _a;
|
|
79
|
+
(_a = this.nsp) === null || _a === void 0 ? void 0 : _a.on('connect_error', fn);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.default = ServiceRealtime;
|
|
84
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/allend/Realtime/service.ts"],"names":[],"mappings":";;;;;AAEA,yEAAgF;AAEhF,iFAAiF;AACjF,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,oEAAoE;AACpE,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,EAAE;AACF,gFAAgF;AAEhF,MAAqB,eAAgB,SAAQ,yBAAc;IACzD,IAAc,KAAK,KAAa,OAAO,SAAS,CAAA,CAAC,CAAC;IAElD;;;;OAIG;IACO,aAAa;QACrB,OAAO;YACL,UAAU,EAAY,CAAC,WAAW,CAAC;YACnC,YAAY,EAAU,IAAI;YAC1B,iBAAiB,EAAK,IAAK;YAC3B,oBAAoB,EAAE,KAAM;YAC5B,oBAAoB,EAAE,QAAQ;SAC/B,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAE,SAAiB,EAAE,UAAkC,EAAE;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAE,SAAS,EAAE;YAC3B,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE;SAC7D,CAAC,CAAA;IACJ,CAAC;IAED,4EAA4E;IAC5E,YAAY,CAAE,EAAiC;;QAC7C,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,aAAa,EAAE,EAAE,CAAE,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,aAAa,CAAE,EAAyC;;QACtD,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAE,CAAA;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAE,EAAc;;QACvB,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAE,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,YAAY,CAAE,EAA8B;;QAC1C,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,YAAY,EAAE,EAAE,CAAE,CAAA;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,uEAAuE;IACvE,cAAc,CAAE,EAA4B;;QAC1C,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,eAAe,EAAE,EAAE,CAAE,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA9DD,kCA8DC"}
|
|
@@ -11,6 +11,12 @@ export type RealtimeConnectOptions = {
|
|
|
11
11
|
* correct only for a process that rotates it in place.
|
|
12
12
|
*/
|
|
13
13
|
getToken?: () => string | Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Handshake headers. Honoured by server-side runtimes only: a browser cannot
|
|
16
|
+
* set headers on a WebSocket upgrade. A service connection names itself
|
|
17
|
+
* with `de-api-service` this way.
|
|
18
|
+
*/
|
|
19
|
+
headers?: Record<string, string>;
|
|
14
20
|
};
|
|
15
21
|
export default abstract class RealtimeSocket extends AccessManager {
|
|
16
22
|
protected nsp?: Socket;
|
|
@@ -29,6 +35,8 @@ export default abstract class RealtimeSocket extends AccessManager {
|
|
|
29
35
|
constructor(access: AccessOptions);
|
|
30
36
|
/** The `utype` this client connects as. Must match the JRT's `role`. */
|
|
31
37
|
protected abstract get utype(): string;
|
|
38
|
+
/** Transport settings a kind of connection needs; none by default. */
|
|
39
|
+
protected socketOptions(): Record<string, unknown>;
|
|
32
40
|
protected open(id: string, options?: RealtimeConnectOptions): Promise<void>;
|
|
33
41
|
/** Re-enter every room this socket was in before the connection dropped. */
|
|
34
42
|
private restore;
|
|
@@ -24,6 +24,8 @@ class RealtimeSocket extends Access_1.default {
|
|
|
24
24
|
this.iosHost = ((_a = access.baseUrl) === null || _a === void 0 ? void 0 : _a.replace(/\/+$/, ''))
|
|
25
25
|
|| (0, baseUrl_1.baseURL)('API', access.env || 'dev', access.devHostname);
|
|
26
26
|
}
|
|
27
|
+
/** Transport settings a kind of connection needs; none by default. */
|
|
28
|
+
socketOptions() { return {}; }
|
|
27
29
|
open(id, options = {}) {
|
|
28
30
|
this.id = id;
|
|
29
31
|
return new Promise((resolve, reject) => {
|
|
@@ -61,7 +63,9 @@ class RealtimeSocket extends Access_1.default {
|
|
|
61
63
|
// A token the app could not fetch is still an attempt: let De.
|
|
62
64
|
// refuse it and surface a connect_error, rather than hanging.
|
|
63
65
|
.catch(() => cb({ utype: this.utype, id }));
|
|
64
|
-
}
|
|
66
|
+
},
|
|
67
|
+
...(options.headers ? { extraHeaders: options.headers } : {}),
|
|
68
|
+
...this.socketOptions()
|
|
65
69
|
});
|
|
66
70
|
this.nsp.on('connect', () => {
|
|
67
71
|
this.restore();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-socket.js","sourceRoot":"","sources":["../../src/allend/realtime-socket.ts"],"names":[],"mappings":";;;;;AAGA,wEAA6C;AAC7C,sDAAoC;AACpC,wCAAoC;
|
|
1
|
+
{"version":3,"file":"realtime-socket.js","sourceRoot":"","sources":["../../src/allend/realtime-socket.ts"],"names":[],"mappings":"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"}
|
package/dist/core.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export type { IoTSPConfig } from './allend/IoTSP';
|
|
|
18
18
|
export { default as Workspace } from './allend/Workspace';
|
|
19
19
|
export type { WorkspaceConfig } from './allend/Workspace';
|
|
20
20
|
export { default as Realtime } from './allend/Realtime';
|
|
21
|
+
export { default as ServiceRealtime } from './allend/Realtime/service';
|
|
21
22
|
export { default as Workflows } from './allend/Workflows';
|
|
22
23
|
export type { WorkflowsConfig } from './allend/Workflows';
|
|
23
24
|
export { default as Utils } from './utils';
|
|
@@ -44,6 +45,7 @@ import Auth from './backend/Auth';
|
|
|
44
45
|
import OTPAuth from './allend/OTPAuth';
|
|
45
46
|
import Pipelines from './allend/Pipelines';
|
|
46
47
|
import Realtime from './allend/Realtime';
|
|
48
|
+
import ServiceRealtime from './allend/Realtime/service';
|
|
47
49
|
import IoT from './allend/IoTSP/backend';
|
|
48
50
|
import LSP from './allend/LSP';
|
|
49
51
|
import CSP from './allend/CSP';
|
|
@@ -68,6 +70,7 @@ export declare const core: {
|
|
|
68
70
|
OTPAuth: typeof OTPAuth;
|
|
69
71
|
Pipelines: typeof Pipelines;
|
|
70
72
|
Realtime: typeof Realtime;
|
|
73
|
+
ServiceRealtime: typeof ServiceRealtime;
|
|
71
74
|
IoT: typeof IoT;
|
|
72
75
|
LSP: typeof LSP;
|
|
73
76
|
CSP: typeof CSP;
|
package/dist/core.js
CHANGED
|
@@ -20,7 +20,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
20
20
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.core = exports.DClient = exports.Utilities = exports.Queries = exports.Agent = exports.Customer = exports.IoTClient = exports.statusOf = exports.APIError = exports.Utils = exports.Workflows = exports.Realtime = exports.Workspace = exports.IoTBackendRecords = exports.IoTSP = exports.DEV = exports.CSP = exports.LSP = exports.Pipelines = exports.Tracking = exports.OTPAuth = exports.Auth = void 0;
|
|
23
|
+
exports.core = exports.DClient = exports.Utilities = exports.Queries = exports.Agent = exports.Customer = exports.IoTClient = exports.statusOf = exports.APIError = exports.Utils = exports.Workflows = exports.ServiceRealtime = exports.Realtime = exports.Workspace = exports.IoTBackendRecords = exports.IoTSP = exports.DEV = exports.CSP = exports.LSP = exports.Pipelines = exports.Tracking = exports.OTPAuth = exports.Auth = void 0;
|
|
24
24
|
// ── Named exports (preferred — tree-shakeable) ────────────────────────────────
|
|
25
25
|
// Connector credentials → access token: the secret on a server, the publishable key in an app
|
|
26
26
|
var Auth_1 = require("./backend/Auth");
|
|
@@ -48,6 +48,9 @@ Object.defineProperty(exports, "Workspace", { enumerable: true, get: function ()
|
|
|
48
48
|
// Realtime socket client (de.arch / Socket)
|
|
49
49
|
var Realtime_1 = require("./allend/Realtime");
|
|
50
50
|
Object.defineProperty(exports, "Realtime", { enumerable: true, get: function () { return __importDefault(Realtime_1).default; } });
|
|
51
|
+
// A platform server's own connection: Rally events and every order update
|
|
52
|
+
var service_1 = require("./allend/Realtime/service");
|
|
53
|
+
Object.defineProperty(exports, "ServiceRealtime", { enumerable: true, get: function () { return __importDefault(service_1).default; } });
|
|
51
54
|
// Layer 2 — Workflows
|
|
52
55
|
var Workflows_1 = require("./allend/Workflows");
|
|
53
56
|
Object.defineProperty(exports, "Workflows", { enumerable: true, get: function () { return __importDefault(Workflows_1).default; } });
|
|
@@ -80,6 +83,7 @@ const Auth_2 = __importDefault(require("./backend/Auth"));
|
|
|
80
83
|
const OTPAuth_2 = __importDefault(require("./allend/OTPAuth"));
|
|
81
84
|
const Pipelines_2 = __importDefault(require("./allend/Pipelines"));
|
|
82
85
|
const Realtime_2 = __importDefault(require("./allend/Realtime"));
|
|
86
|
+
const service_2 = __importDefault(require("./allend/Realtime/service"));
|
|
83
87
|
const backend_1 = __importDefault(require("./allend/IoTSP/backend"));
|
|
84
88
|
const LSP_2 = __importDefault(require("./allend/LSP"));
|
|
85
89
|
const CSP_2 = __importDefault(require("./allend/CSP"));
|
|
@@ -104,6 +108,7 @@ exports.core = {
|
|
|
104
108
|
OTPAuth: OTPAuth_2.default,
|
|
105
109
|
Pipelines: Pipelines_2.default,
|
|
106
110
|
Realtime: Realtime_2.default,
|
|
111
|
+
ServiceRealtime: service_2.default,
|
|
107
112
|
IoT: backend_1.default,
|
|
108
113
|
LSP: LSP_2.default,
|
|
109
114
|
CSP: CSP_2.default,
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,WAAW;AACX,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,mEAAmE;AACnE,sEAAsE;AACtE,EAAE;AACF,gFAAgF;;;;;;AAEhF,iFAAiF;AAEjF,8FAA8F;AAC9F,uCAAgD;AAAvC,6GAAA,OAAO,OAAQ;AAOxB,yCAAyC;AACzC,4CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAE3B,0CAA0C;AAC1C,8CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAG5B,gDAAyD;AAAhD,uHAAA,OAAO,OAAa;AAG7B,oCAA6C;AAApC,2GAAA,OAAO,OAAO;AAGvB,oCAA6C;AAApC,2GAAA,OAAO,OAAO;AAGvB,oCAA6C;AAApC,2GAAA,OAAO,OAAO;AAGvB,qEAAqE;AACrE,wCAA+E;AAAtE,+GAAA,OAAO,OAAS;AAAE,0GAAA,OAAO,OAAqB;AAGvD,gDAAyD;AAAhD,uHAAA,OAAO,OAAa;AAG7B,4CAA4C;AAC5C,8CAAuD;AAA9C,qHAAA,OAAO,OAAY;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,WAAW;AACX,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,mEAAmE;AACnE,sEAAsE;AACtE,EAAE;AACF,gFAAgF;;;;;;AAEhF,iFAAiF;AAEjF,8FAA8F;AAC9F,uCAAgD;AAAvC,6GAAA,OAAO,OAAQ;AAOxB,yCAAyC;AACzC,4CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAE3B,0CAA0C;AAC1C,8CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAG5B,gDAAyD;AAAhD,uHAAA,OAAO,OAAa;AAG7B,oCAA6C;AAApC,2GAAA,OAAO,OAAO;AAGvB,oCAA6C;AAApC,2GAAA,OAAO,OAAO;AAGvB,oCAA6C;AAApC,2GAAA,OAAO,OAAO;AAGvB,qEAAqE;AACrE,wCAA+E;AAAtE,+GAAA,OAAO,OAAS;AAAE,0GAAA,OAAO,OAAqB;AAGvD,gDAAyD;AAAhD,uHAAA,OAAO,OAAa;AAG7B,4CAA4C;AAC5C,8CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,0EAA0E;AAC1E,qDAAsE;AAA7D,2HAAA,OAAO,OAAmB;AAEnC,sBAAsB;AACtB,gDAAyD;AAAhD,uHAAA,OAAO,OAAa;AAG7B,YAAY;AACZ,iCAA0C;AAAjC,+GAAA,OAAO,OAAS;AAEzB,iCAA6C;AAApC,kHAAA,OAAO,OAAY;AAC5B,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AAEjB,iFAAiF;AACjF,8EAA8E;AAC9E,kBAAkB;AAClB,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,sDAAsD;AACtD,gDAAyD;AAAhD,uHAAA,OAAO,OAAa;AAG7B,8CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAG5B,wCAAiD;AAAxC,+GAAA,OAAO,OAAS;AAIzB,4CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAG3B,gDAAyD;AAAhD,uHAAA,OAAO,OAAa;AAe7B,iFAAiF;AAEjF,0DAAsC;AACtC,+DAAwC;AACxC,mEAA0C;AAC1C,iEAAyC;AACzC,wEAAuD;AACvD,qEAA8C;AAC9C,uDAAoC;AACpC,uDAAoC;AACpC,uDAAoC;AACpC,2DAAsC;AACtC,mEAA0C;AAC1C,mEAA0C;AAC1C,iEAAyC;AACzC,oDAA+B;AAC/B,mEAA0C;AAC1C,iEAAyC;AACzC,2DAAsC;AACtC,+DAAwC;AACxC,mEAA0C;AAC1C,uEAAiD;AACjD,iEAAyC;AAEzC,qEAAqE;AACrE,MAAM,OAAO,GAAG,EAAE,MAAM,EAAN,gBAAM,EAAE,KAAK,EAAL,kBAAK,EAAE,CAAA;AACxB,0BAAO;AAEH,QAAA,IAAI,GAAG;IACnB,IAAI,EAAJ,cAAI;IACJ,OAAO,EAAP,iBAAO;IACP,SAAS,EAAT,mBAAS;IACT,QAAQ,EAAR,kBAAQ;IACR,eAAe,EAAf,iBAAe;IACf,GAAG,EAAH,iBAAG;IACH,GAAG,EAAH,aAAG;IACH,GAAG,EAAH,aAAG;IACH,GAAG,EAAH,aAAG;IACH,KAAK,EAAL,eAAK;IACL,SAAS,EAAT,mBAAS;IACT,SAAS,EAAT,mBAAS;IACT,QAAQ,EAAR,kBAAQ;IACR,KAAK,EAAL,eAAK;IACL,OAAO;IACP,SAAS,EAAT,mBAAS;IACT,QAAQ,EAAR,kBAAQ;IACR,KAAK,EAAL,eAAK;IACL,OAAO,EAAP,iBAAO;IACP,SAAS,EAAT,mBAAS;CACT,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ declare const De: {
|
|
|
7
7
|
OTPAuth: typeof import("./core").OTPAuth;
|
|
8
8
|
Pipelines: typeof import("./core").Pipelines;
|
|
9
9
|
Realtime: typeof import("./core").Realtime;
|
|
10
|
+
ServiceRealtime: typeof import("./core").ServiceRealtime;
|
|
10
11
|
IoT: typeof import("./allend/IoTSP/backend").default;
|
|
11
12
|
LSP: typeof import("./core").LSP;
|
|
12
13
|
CSP: typeof import("./core").CSP;
|
package/dist/react-native.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ declare const De: {
|
|
|
6
6
|
OTPAuth: typeof import("./core").OTPAuth;
|
|
7
7
|
Pipelines: typeof import("./core").Pipelines;
|
|
8
8
|
Realtime: typeof import("./core").Realtime;
|
|
9
|
+
ServiceRealtime: typeof import("./core").ServiceRealtime;
|
|
9
10
|
IoT: typeof import("./allend/IoTSP/backend").default;
|
|
10
11
|
LSP: typeof import("./core").LSP;
|
|
11
12
|
CSP: typeof import("./core").CSP;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -264,6 +264,26 @@ export type MapWaypoint = {
|
|
|
264
264
|
coords: Coordinates
|
|
265
265
|
caption?: Caption
|
|
266
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* What a navigation reports on every fix, as `pe:progress`: the next
|
|
269
|
+
* maneuver and how far off it is, and what is left of the trip.
|
|
270
|
+
*/
|
|
271
|
+
export type NavigationProgress = {
|
|
272
|
+
instruction?: {
|
|
273
|
+
/** Routes API maneuver (TURN_LEFT, ROUNDABOUT_RIGHT…), or ARRIVE */
|
|
274
|
+
maneuver: string
|
|
275
|
+
/** "Turn right onto Mission St" */
|
|
276
|
+
text: string
|
|
277
|
+
/** Metres to the maneuver */
|
|
278
|
+
distance: number
|
|
279
|
+
}
|
|
280
|
+
remaining?: {
|
|
281
|
+
/** Metres to the destination, along the route */
|
|
282
|
+
distance: number
|
|
283
|
+
/** Seconds to the destination */
|
|
284
|
+
duration: number
|
|
285
|
+
}
|
|
286
|
+
}
|
|
267
287
|
export type Journey = {
|
|
268
288
|
routeId: string | number
|
|
269
289
|
origin?: MapWaypoint
|
package/package.json
CHANGED
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
MapOptions,
|
|
7
7
|
Caption,
|
|
8
8
|
Journey,
|
|
9
|
+
NavigationProgress,
|
|
9
10
|
PickedLocation,
|
|
10
11
|
RouteOptions,
|
|
11
12
|
ControlEntity,
|
|
@@ -23,6 +24,8 @@ export default class Handles extends EventEmitter {
|
|
|
23
24
|
private chn: Channel
|
|
24
25
|
private controls: Controls
|
|
25
26
|
private options: MapOptions
|
|
27
|
+
/** The last navigation's teardown — the map has one navigator, and the next waits for it */
|
|
28
|
+
private navigated: Promise<unknown> = Promise.resolve()
|
|
26
29
|
|
|
27
30
|
constructor( chn: Channel, controls: Controls, options: MapOptions ){
|
|
28
31
|
super()
|
|
@@ -380,8 +383,11 @@ export default class Handles extends EventEmitter {
|
|
|
380
383
|
const stream = new Stream
|
|
381
384
|
|
|
382
385
|
// Sync with navigation route update
|
|
383
|
-
this.chn?.on('navigation:direction', ({ status, direction, position }) => {
|
|
384
|
-
stream.sync({ status, direction, position })
|
|
386
|
+
this.chn?.on('navigation:direction', ({ status, direction, position, instruction, remaining }) => {
|
|
387
|
+
stream.sync({ status, direction, position, instruction, remaining })
|
|
388
|
+
|
|
389
|
+
// The next maneuver and what is left, on every fix: what a rider reads
|
|
390
|
+
;( instruction || remaining ) && this.emit('pe:progress', { status, instruction, remaining } as NavigationProgress & { status: string })
|
|
385
391
|
|
|
386
392
|
switch( status ){
|
|
387
393
|
case 'STALE':
|
|
@@ -411,14 +417,22 @@ export default class Handles extends EventEmitter {
|
|
|
411
417
|
.onerror( error => console.error('[Stream Error] ', error ) )
|
|
412
418
|
.onclose( () => {
|
|
413
419
|
this.chn?.off('navigation:direction')
|
|
414
|
-
this.controls?.unmountNavigation()
|
|
420
|
+
this.navigated = this.controls?.unmountNavigation()
|
|
421
|
+
// The route was made for this navigation (setRoute below), so it
|
|
422
|
+
// goes with it. Left behind, the finished trip stayed drawn on the
|
|
423
|
+
// map until the next one replaced it.
|
|
424
|
+
.then( () => this.controls?.removeRoute( String( journey.routeId ) ) )
|
|
425
|
+
.catch( () => {} ) ?? Promise.resolve()
|
|
415
426
|
})
|
|
416
427
|
|
|
417
428
|
return stream
|
|
418
429
|
}
|
|
419
430
|
|
|
420
|
-
// Set route
|
|
421
|
-
|
|
431
|
+
// Set route, once the last navigation is gone. Its teardown is async,
|
|
432
|
+
// and a stop that follows another (kitchen, then door) used to start
|
|
433
|
+
// first: the old unmount and route removal then landed on the new one,
|
|
434
|
+
// and the rider rode on with no route and no marker
|
|
435
|
+
this.navigated.then( () => this.controls?.setRoute( journey ) )
|
|
422
436
|
.then( async () => {
|
|
423
437
|
// Initialize navigation point to current location.
|
|
424
438
|
// The origin is a waypoint — `{ coords, caption }` — and the
|
|
@@ -114,7 +114,8 @@ export default forwardRef<MSIRef, MSIProps>( ( props, ref ) => {
|
|
|
114
114
|
webViewRef = useRef<WebView>( null ),
|
|
115
115
|
wioRef = useRef<WIO | null>( null ),
|
|
116
116
|
apiRef = useRef<MSIInterface | null>( null ),
|
|
117
|
-
|
|
117
|
+
/** The page load the control surface was built for; 0 before the first */
|
|
118
|
+
builtForRef = useRef( 0 ),
|
|
118
119
|
|
|
119
120
|
/**
|
|
120
121
|
* The bridge is built once, so its handlers close over the props of the
|
|
@@ -130,6 +131,8 @@ export default forwardRef<MSIRef, MSIProps>( ( props, ref ) => {
|
|
|
130
131
|
|
|
131
132
|
[ isConnected, setIsConnected ] = useState( false ),
|
|
132
133
|
[ isReady, setIsReady ] = useState( false ),
|
|
134
|
+
/** Pages loaded: every load is a new page, with nothing the last one drew */
|
|
135
|
+
[ loads, setLoads ] = useState( 0 ),
|
|
133
136
|
|
|
134
137
|
baseURL = gatewayURL( props ),
|
|
135
138
|
|
|
@@ -189,7 +192,7 @@ export default forwardRef<MSIRef, MSIProps>( ( props, ref ) => {
|
|
|
189
192
|
get plugins(){ return apiRef.current?.plugins },
|
|
190
193
|
isReady: () => isConnected && isReady,
|
|
191
194
|
retry: () => {
|
|
192
|
-
|
|
195
|
+
builtForRef.current = 0
|
|
193
196
|
initializeConnection()
|
|
194
197
|
}
|
|
195
198
|
}), [ isConnected, isReady, initializeConnection ] )
|
|
@@ -259,13 +262,13 @@ export default forwardRef<MSIRef, MSIProps>( ( props, ref ) => {
|
|
|
259
262
|
wio.disconnect()
|
|
260
263
|
|
|
261
264
|
apiRef.current = null
|
|
262
|
-
|
|
265
|
+
builtForRef.current = 0
|
|
263
266
|
}
|
|
264
267
|
}, [] )
|
|
265
268
|
|
|
266
269
|
// Build the control surface once the bridge is both connected and ready
|
|
267
270
|
useEffect( () => {
|
|
268
|
-
if(
|
|
271
|
+
if( builtForRef.current === loads || !wioRef.current || !isConnected || !isReady ) return
|
|
269
272
|
|
|
270
273
|
const
|
|
271
274
|
chn = wioRef.current,
|
|
@@ -276,10 +279,26 @@ export default forwardRef<MSIRef, MSIProps>( ( props, ref ) => {
|
|
|
276
279
|
plugins.mount( REGISTERED_PLUGINS )
|
|
277
280
|
|
|
278
281
|
apiRef.current = { controls, handles, plugins }
|
|
279
|
-
|
|
282
|
+
builtForRef.current = loads
|
|
280
283
|
|
|
284
|
+
/**
|
|
285
|
+
* On every page, not once. A reloaded page has no map state, and the
|
|
286
|
+
* host's routes, markers and navigation went with the old one; built once,
|
|
287
|
+
* the host never heard, kept the dead surface and drew into nothing.
|
|
288
|
+
*/
|
|
281
289
|
propsRef.current.onLoaded?.( apiRef.current )
|
|
282
|
-
}, [ isConnected, isReady ] )
|
|
290
|
+
}, [ isConnected, isReady, loads ] )
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* A page finished loading: the first, or a reload. The bridge belongs to
|
|
294
|
+
* the page, so it is not ready until the new page says so.
|
|
295
|
+
*/
|
|
296
|
+
const onLoadEnd = () => {
|
|
297
|
+
setIsConnected( false )
|
|
298
|
+
setIsReady( false )
|
|
299
|
+
setLoads( n => n + 1 )
|
|
300
|
+
initializeConnection()
|
|
301
|
+
}
|
|
283
302
|
|
|
284
303
|
const onMessage = ( event: any ) => {
|
|
285
304
|
// Console forwarding rides the same bridge; peel it off before WIO sees it
|
|
@@ -331,7 +350,10 @@ export default forwardRef<MSIRef, MSIProps>( ( props, ref ) => {
|
|
|
331
350
|
originWhitelist={[ baseURL ]}
|
|
332
351
|
onShouldStartLoadWithRequest={( { url }: any ) => isGatewayURL( url )}
|
|
333
352
|
onMessage={onMessage}
|
|
334
|
-
onLoadEnd={
|
|
353
|
+
onLoadEnd={onLoadEnd}
|
|
354
|
+
// iOS kills a WebView's content process under memory pressure and
|
|
355
|
+
// leaves the view blank: load the page again rather than show nothing
|
|
356
|
+
onContentProcessDidTerminate={() => webViewRef.current?.reload()}
|
|
335
357
|
onError={( { nativeEvent }: any ) => reportError( new Error( nativeEvent?.description || 'WebView error') )}
|
|
336
358
|
/>
|
|
337
359
|
</View>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { OrderTrackingEvent, RallyEvent } from '@de./types'
|
|
2
|
+
|
|
3
|
+
import RealtimeSocket, { type RealtimeConnectOptions } from '../realtime-socket'
|
|
4
|
+
|
|
5
|
+
// ─── ServiceRealtime ──────────────────────────────────────────────────────────
|
|
6
|
+
//
|
|
7
|
+
// A platform's own server, connected to its workspace as a service: Buffé, or
|
|
8
|
+
// any platform built on De. It is not in an order room and joins nothing. De.
|
|
9
|
+
// puts a service connection straight into the workspace's Rally room and its
|
|
10
|
+
// services room, so it hears every dispatch event and every order update the
|
|
11
|
+
// workspace produces. That is the only way Rally events leave De.: riders'
|
|
12
|
+
// devices hear about offers from their platform, which relays them.
|
|
13
|
+
//
|
|
14
|
+
// Platforms used to open this socket by hand with socket.io-client, so each
|
|
15
|
+
// had to rediscover the handshake: `utype: 'service'`, the `de-api-service`
|
|
16
|
+
// header De. checks against its allow-list, a token read per attempt, and
|
|
17
|
+
// WebSocket only. Server-side only, because a browser cannot send the header.
|
|
18
|
+
//
|
|
19
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
export default class ServiceRealtime extends RealtimeSocket {
|
|
22
|
+
protected get utype(): string { return 'service' }
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A server keeps this connection for its whole life, so it reconnects for
|
|
26
|
+
* ever with backoff, and over WebSocket alone: long-polling buys nothing
|
|
27
|
+
* between two servers.
|
|
28
|
+
*/
|
|
29
|
+
protected socketOptions(): Record<string, unknown> {
|
|
30
|
+
return {
|
|
31
|
+
transports: ['websocket'],
|
|
32
|
+
reconnection: true,
|
|
33
|
+
reconnectionDelay: 1_000,
|
|
34
|
+
reconnectionDelayMax: 60_000,
|
|
35
|
+
reconnectionAttempts: Infinity
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @param serviceId The name the platform is known by to De. — sent as the
|
|
41
|
+
* connection id and as the `de-api-service` header.
|
|
42
|
+
* @param options `getToken` should return the platform's current access
|
|
43
|
+
* token: a service rotates its token, and a reconnect
|
|
44
|
+
* after an expiry is refused without a fresh one.
|
|
45
|
+
*/
|
|
46
|
+
connect( serviceId: string, options: RealtimeConnectOptions = {} ): Promise<void> {
|
|
47
|
+
return this.open( serviceId, {
|
|
48
|
+
...options,
|
|
49
|
+
headers: { ...options.headers, 'de-api-service': serviceId }
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Rally: offers, assignments, expiries, releases, relays, zone changes. */
|
|
54
|
+
onRallyEvent( fn: ( event: RallyEvent ) => void ){
|
|
55
|
+
this.nsp?.on('RALLY_EVENT', fn )
|
|
56
|
+
return this
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Every order in the workspace as it changes: what riders reported, what
|
|
61
|
+
* De. decided — collected, delivered, cancelled, failed.
|
|
62
|
+
*/
|
|
63
|
+
onOrderUpdate( fn: ( event: OrderTrackingEvent ) => void ){
|
|
64
|
+
this.nsp?.on('ORDER_UPDATE', fn )
|
|
65
|
+
return this
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
onConnect( fn: () => void ){
|
|
69
|
+
this.nsp?.on('connect', fn )
|
|
70
|
+
return this
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
onDisconnect( fn: ( reason: string ) => void ){
|
|
74
|
+
this.nsp?.on('disconnect', fn )
|
|
75
|
+
return this
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** A refused or failed attempt. Reconnection carries on regardless. */
|
|
79
|
+
onConnectError( fn: ( error: Error ) => void ){
|
|
80
|
+
this.nsp?.on('connect_error', fn )
|
|
81
|
+
return this
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -41,6 +41,12 @@ export type RealtimeConnectOptions = {
|
|
|
41
41
|
* correct only for a process that rotates it in place.
|
|
42
42
|
*/
|
|
43
43
|
getToken?: () => string | Promise<string>
|
|
44
|
+
/**
|
|
45
|
+
* Handshake headers. Honoured by server-side runtimes only: a browser cannot
|
|
46
|
+
* set headers on a WebSocket upgrade. A service connection names itself
|
|
47
|
+
* with `de-api-service` this way.
|
|
48
|
+
*/
|
|
49
|
+
headers?: Record<string, string>
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
export default abstract class RealtimeSocket extends AccessManager {
|
|
@@ -71,6 +77,9 @@ export default abstract class RealtimeSocket extends AccessManager {
|
|
|
71
77
|
/** The `utype` this client connects as. Must match the JRT's `role`. */
|
|
72
78
|
protected abstract get utype(): string
|
|
73
79
|
|
|
80
|
+
/** Transport settings a kind of connection needs; none by default. */
|
|
81
|
+
protected socketOptions(): Record<string, unknown> { return {} }
|
|
82
|
+
|
|
74
83
|
protected open( id: string, options: RealtimeConnectOptions = {} ): Promise<void> {
|
|
75
84
|
this.id = id
|
|
76
85
|
|
|
@@ -111,7 +120,9 @@ export default abstract class RealtimeSocket extends AccessManager {
|
|
|
111
120
|
// A token the app could not fetch is still an attempt: let De.
|
|
112
121
|
// refuse it and surface a connect_error, rather than hanging.
|
|
113
122
|
.catch( () => cb({ utype: this.utype, id }) )
|
|
114
|
-
}
|
|
123
|
+
},
|
|
124
|
+
...( options.headers ? { extraHeaders: options.headers } : {} ),
|
|
125
|
+
...this.socketOptions()
|
|
115
126
|
})
|
|
116
127
|
|
|
117
128
|
this.nsp.on('connect', () => {
|
package/src/core.ts
CHANGED
|
@@ -54,6 +54,8 @@ export type { WorkspaceConfig } from './allend/Workspace'
|
|
|
54
54
|
|
|
55
55
|
// Realtime socket client (de.arch / Socket)
|
|
56
56
|
export { default as Realtime } from './allend/Realtime'
|
|
57
|
+
// A platform server's own connection: Rally events and every order update
|
|
58
|
+
export { default as ServiceRealtime } from './allend/Realtime/service'
|
|
57
59
|
|
|
58
60
|
// Layer 2 — Workflows
|
|
59
61
|
export { default as Workflows } from './allend/Workflows'
|
|
@@ -106,6 +108,7 @@ import Auth from './backend/Auth'
|
|
|
106
108
|
import OTPAuth from './allend/OTPAuth'
|
|
107
109
|
import Pipelines from './allend/Pipelines'
|
|
108
110
|
import Realtime from './allend/Realtime'
|
|
111
|
+
import ServiceRealtime from './allend/Realtime/service'
|
|
109
112
|
import IoT from './allend/IoTSP/backend'
|
|
110
113
|
import LSP from './allend/LSP'
|
|
111
114
|
import CSP from './allend/CSP'
|
|
@@ -132,6 +135,7 @@ export const core = {
|
|
|
132
135
|
OTPAuth,
|
|
133
136
|
Pipelines,
|
|
134
137
|
Realtime,
|
|
138
|
+
ServiceRealtime,
|
|
135
139
|
IoT,
|
|
136
140
|
LSP,
|
|
137
141
|
CSP,
|
package/src/types/index.d.ts
CHANGED
|
@@ -264,6 +264,26 @@ export type MapWaypoint = {
|
|
|
264
264
|
coords: Coordinates
|
|
265
265
|
caption?: Caption
|
|
266
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* What a navigation reports on every fix, as `pe:progress`: the next
|
|
269
|
+
* maneuver and how far off it is, and what is left of the trip.
|
|
270
|
+
*/
|
|
271
|
+
export type NavigationProgress = {
|
|
272
|
+
instruction?: {
|
|
273
|
+
/** Routes API maneuver (TURN_LEFT, ROUNDABOUT_RIGHT…), or ARRIVE */
|
|
274
|
+
maneuver: string
|
|
275
|
+
/** "Turn right onto Mission St" */
|
|
276
|
+
text: string
|
|
277
|
+
/** Metres to the maneuver */
|
|
278
|
+
distance: number
|
|
279
|
+
}
|
|
280
|
+
remaining?: {
|
|
281
|
+
/** Metres to the destination, along the route */
|
|
282
|
+
distance: number
|
|
283
|
+
/** Seconds to the destination */
|
|
284
|
+
duration: number
|
|
285
|
+
}
|
|
286
|
+
}
|
|
267
287
|
export type Journey = {
|
|
268
288
|
routeId: string | number
|
|
269
289
|
origin?: MapWaypoint
|