@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.
@@ -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
- (_a = this.controls) === null || _a === void 0 ? void 0 : _a.setRoute(journey).then(async () => {
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
- }).catch(reject);
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), isInitializedRef = (0, react_1.useRef)(false),
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), baseURL = gatewayURL(props),
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
- isInitializedRef.current = false;
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
- isInitializedRef.current = false;
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 (isInitializedRef.current || !wioRef.current || !isConnected || !isReady)
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
- isInitializedRef.current = true;
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: initializeConnection, onError: ({ nativeEvent }) => reportError(new Error((nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.description) || 'WebView error')) }) }));
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":"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"}
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":"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"}
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;AAE5B,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,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,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"}
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;
@@ -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;
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@de./sdk",
3
- "version": "2.3.3",
3
+ "version": "2.4.0",
4
4
  "description": "Complete SDK pack for MSI (Map Service Interface), IoTClient and DClient services — web, server and React Native",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -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
- this.controls?.setRoute( journey )
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
- isInitializedRef = useRef( false ),
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
- isInitializedRef.current = false
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
- isInitializedRef.current = false
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( isInitializedRef.current || !wioRef.current || !isConnected || !isReady ) return
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
- isInitializedRef.current = true
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={initializeConnection}
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,
@@ -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