@de./sdk 2.3.2 → 2.3.4
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/Access.js +1 -1
- package/dist/allend/MSI/Handles.d.ts +2 -0
- package/dist/allend/MSI/Handles.js +37 -14
- package/dist/allend/MSI/Handles.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/package.json +1 -1
- package/src/allend/Access.ts +1 -1
- package/src/allend/MSI/Handles.ts +39 -11
- package/src/allend/Realtime/service.ts +83 -0
- package/src/allend/realtime-socket.ts +12 -1
- package/src/core.ts +4 -0
package/dist/allend/Access.js
CHANGED
|
@@ -71,7 +71,7 @@ class AccessManager {
|
|
|
71
71
|
*
|
|
72
72
|
* Requiring them of every access type meant `OTPAuth` threw in its own
|
|
73
73
|
* constructor and could never be used for the one thing it exists to do.
|
|
74
|
-
* That is why de.simulation's bootstrap and
|
|
74
|
+
* That is why de.simulation's bootstrap and Buffé's `getUser` both talk to
|
|
75
75
|
* de.auth over raw fetch, and why nothing ever caught that this client
|
|
76
76
|
* addressed `/v1/auth/otp` — a route de.auth has never served.
|
|
77
77
|
*/
|
|
@@ -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,9 +325,8 @@ 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
|
-
return;
|
|
329
|
+
return reject('Map is not connected');
|
|
329
330
|
const initialize = () => {
|
|
330
331
|
var _a;
|
|
331
332
|
const stream = new stream_1.default;
|
|
@@ -362,23 +363,45 @@ class Handles extends events_1.EventEmitter {
|
|
|
362
363
|
})
|
|
363
364
|
.onerror(error => console.error('[Stream Error] ', error))
|
|
364
365
|
.onclose(() => {
|
|
365
|
-
var _a, _b;
|
|
366
|
+
var _a, _b, _c;
|
|
366
367
|
(_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();
|
|
368
|
+
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
369
|
});
|
|
369
|
-
|
|
370
|
+
return stream;
|
|
370
371
|
};
|
|
371
|
-
// Set route
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
372
|
+
// Set route, once the last navigation is gone. Its teardown is async,
|
|
373
|
+
// and a stop that follows another (kitchen, then door) used to start
|
|
374
|
+
// first: the old unmount and route removal then landed on the new one,
|
|
375
|
+
// and the rider rode on with no route and no marker
|
|
376
|
+
this.navigated.then(() => { var _a; return (_a = this.controls) === null || _a === void 0 ? void 0 : _a.setRoute(journey); })
|
|
377
|
+
.then(async () => {
|
|
378
|
+
var _a, _b, _c, _d, _e;
|
|
379
|
+
// Initialize navigation point to current location.
|
|
380
|
+
// The origin is a waypoint — `{ coords, caption }` — and the
|
|
381
|
+
// navigator places its marker at a bare `{ lat, lng }`: handing
|
|
382
|
+
// it the waypoint itself put the rider nowhere
|
|
383
|
+
const position = ((_a = journey.origin) === null || _a === void 0 ? void 0 : _a.coords) || await ((_b = this.controls) === null || _b === void 0 ? void 0 : _b.getCurrentLocation());
|
|
376
384
|
if (!position)
|
|
377
385
|
return reject('Unable to get current location');
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
386
|
+
// Listening before the navigator starts, so its STARTED is heard
|
|
387
|
+
const stream = initialize();
|
|
388
|
+
try {
|
|
389
|
+
await ((_c = this.controls) === null || _c === void 0 ? void 0 : _c.mountNavigation(journey.routeId));
|
|
390
|
+
// The navigator takes its direction from the mounted route
|
|
391
|
+
// in load(); without it every position it is given fails
|
|
392
|
+
await ((_d = this.controls) === null || _d === void 0 ? void 0 : _d.loadNavigation());
|
|
393
|
+
await ((_e = this.controls) === null || _e === void 0 ? void 0 : _e.setInitialNavigationPosition(position));
|
|
394
|
+
}
|
|
395
|
+
catch (error) {
|
|
396
|
+
stream.close();
|
|
397
|
+
throw error;
|
|
398
|
+
}
|
|
399
|
+
// Handed over once the navigator is live: a position synced the
|
|
400
|
+
// moment this resolves used to reach a navigator not yet started,
|
|
401
|
+
// and was dropped — as was any failure above, after the resolve
|
|
402
|
+
resolve(stream);
|
|
403
|
+
})
|
|
404
|
+
.catch(reject);
|
|
382
405
|
});
|
|
383
406
|
}
|
|
384
407
|
}
|
|
@@ -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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"}
|
|
@@ -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/package.json
CHANGED
package/src/allend/Access.ts
CHANGED
|
@@ -66,7 +66,7 @@ export default class AccessManager {
|
|
|
66
66
|
*
|
|
67
67
|
* Requiring them of every access type meant `OTPAuth` threw in its own
|
|
68
68
|
* constructor and could never be used for the one thing it exists to do.
|
|
69
|
-
* That is why de.simulation's bootstrap and
|
|
69
|
+
* That is why de.simulation's bootstrap and Buffé's `getUser` both talk to
|
|
70
70
|
* de.auth over raw fetch, and why nothing ever caught that this client
|
|
71
71
|
* addressed `/v1/auth/otp` — a route de.auth has never served.
|
|
72
72
|
*/
|
|
@@ -23,6 +23,8 @@ export default class Handles extends EventEmitter {
|
|
|
23
23
|
private chn: Channel
|
|
24
24
|
private controls: Controls
|
|
25
25
|
private options: MapOptions
|
|
26
|
+
/** The last navigation's teardown — the map has one navigator, and the next waits for it */
|
|
27
|
+
private navigated: Promise<unknown> = Promise.resolve()
|
|
26
28
|
|
|
27
29
|
constructor( chn: Channel, controls: Controls, options: MapOptions ){
|
|
28
30
|
super()
|
|
@@ -374,7 +376,7 @@ export default class Handles extends EventEmitter {
|
|
|
374
376
|
*/
|
|
375
377
|
navigation( journey: Journey ): Promise<Stream> {
|
|
376
378
|
return new Promise( ( resolve, reject ) => {
|
|
377
|
-
if( !this.chn ) return
|
|
379
|
+
if( !this.chn ) return reject('Map is not connected')
|
|
378
380
|
|
|
379
381
|
const initialize = () => {
|
|
380
382
|
const stream = new Stream
|
|
@@ -411,23 +413,49 @@ export default class Handles extends EventEmitter {
|
|
|
411
413
|
.onerror( error => console.error('[Stream Error] ', error ) )
|
|
412
414
|
.onclose( () => {
|
|
413
415
|
this.chn?.off('navigation:direction')
|
|
414
|
-
this.controls?.unmountNavigation()
|
|
416
|
+
this.navigated = this.controls?.unmountNavigation()
|
|
417
|
+
// The route was made for this navigation (setRoute below), so it
|
|
418
|
+
// goes with it. Left behind, the finished trip stayed drawn on the
|
|
419
|
+
// map until the next one replaced it.
|
|
420
|
+
.then( () => this.controls?.removeRoute( String( journey.routeId ) ) )
|
|
421
|
+
.catch( () => {} ) ?? Promise.resolve()
|
|
415
422
|
})
|
|
416
423
|
|
|
417
|
-
|
|
424
|
+
return stream
|
|
418
425
|
}
|
|
419
426
|
|
|
420
|
-
// Set route
|
|
421
|
-
|
|
427
|
+
// Set route, once the last navigation is gone. Its teardown is async,
|
|
428
|
+
// and a stop that follows another (kitchen, then door) used to start
|
|
429
|
+
// first: the old unmount and route removal then landed on the new one,
|
|
430
|
+
// and the rider rode on with no route and no marker
|
|
431
|
+
this.navigated.then( () => this.controls?.setRoute( journey ) )
|
|
422
432
|
.then( async () => {
|
|
423
|
-
// Initialize navigation point to current location
|
|
424
|
-
|
|
433
|
+
// Initialize navigation point to current location.
|
|
434
|
+
// The origin is a waypoint — `{ coords, caption }` — and the
|
|
435
|
+
// navigator places its marker at a bare `{ lat, lng }`: handing
|
|
436
|
+
// it the waypoint itself put the rider nowhere
|
|
437
|
+
const position = journey.origin?.coords || await this.controls?.getCurrentLocation()
|
|
425
438
|
if( !position ) return reject('Unable to get current location')
|
|
426
439
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
440
|
+
// Listening before the navigator starts, so its STARTED is heard
|
|
441
|
+
const stream = initialize()
|
|
442
|
+
|
|
443
|
+
try {
|
|
444
|
+
await this.controls?.mountNavigation( journey.routeId )
|
|
445
|
+
// The navigator takes its direction from the mounted route
|
|
446
|
+
// in load(); without it every position it is given fails
|
|
447
|
+
await this.controls?.loadNavigation()
|
|
448
|
+
await this.controls?.setInitialNavigationPosition( position as RTLocation )
|
|
449
|
+
}
|
|
450
|
+
catch( error ){
|
|
451
|
+
stream.close()
|
|
452
|
+
throw error
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
// Handed over once the navigator is live: a position synced the
|
|
456
|
+
// moment this resolves used to reach a navigator not yet started,
|
|
457
|
+
// and was dropped — as was any failure above, after the resolve
|
|
458
|
+
resolve( stream )
|
|
431
459
|
} )
|
|
432
460
|
.catch( reject )
|
|
433
461
|
} )
|
|
@@ -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,
|