@de./sdk 2.3.3 → 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.
@@ -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,7 +325,6 @@ 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 = () => {
@@ -362,14 +363,18 @@ 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
- (_a = this.controls) === null || _a === void 0 ? void 0 : _a.setRoute(journey).then(async () => {
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 () => {
373
378
  var _a, _b, _c, _d, _e;
374
379
  // Initialize navigation point to current location.
375
380
  // The origin is a waypoint — `{ coords, caption }` — and the
@@ -395,7 +400,8 @@ class Handles extends events_1.EventEmitter {
395
400
  // moment this resolves used to reach a navigator not yet started,
396
401
  // and was dropped — as was any failure above, after the resolve
397
402
  resolve(stream);
398
- }).catch(reject);
403
+ })
404
+ .catch(reject);
399
405
  });
400
406
  }
401
407
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Handles.js","sourceRoot":"","sources":["../../../src/allend/MSI/Handles.ts"],"names":[],"mappings":";;;;;AAiBA,mCAAqC;AAErC,gEAAuC;AAEvC,MAAqB,OAAQ,SAAQ,qBAAY;IAK/C,YAAa,GAAY,EAAE,QAAkB,EAAE,OAAmB;QAChE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAE,EAAwC;QACtD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,CAAE,CAAA;IACnC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,UAAU;;QACR,IAAI,CAAC,IAAI,CAAC,GAAG;YAAG,OAAM;QACtB,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAEtC,MAAM,MAAM,GAAG,IAAI,gBAAM,EAAE,CAAA;QAE3B,IAAI,CAAC,GAAG;aACP,EAAE,CAAC,kBAAkB,EAAE,CAAE,QAAoB,EAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAE;aAC7E,EAAE,CAAC,qBAAqB,EAAE,CAAE,QAAoB,EAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAE;aAChF,EAAE,CAAC,sBAAsB,EAAE,CAAE,QAAoB,EAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAE;aACjF,EAAE,CAAC,mBAAmB,EAAE,CAAE,QAAoB,EAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAE;aAC9E,EAAE,CAAC,wBAAwB,EAAE,CAAE,OAAe,EAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAE,IAAI,KAAK,CAAE,OAAO,CAAE,CAAE,CAAE,CAAA;QAE3F,0BAA0B;QAC1B,MAAM;aACL,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAE,CAAE;aAC5D,OAAO,CAAE,GAAG,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAG,OAAM;YAEtB,IAAI,CAAC,GAAG;iBACP,GAAG,CAAC,kBAAkB,CAAC;iBACvB,GAAG,CAAC,qBAAqB,CAAC;iBAC1B,GAAG,CAAC,sBAAsB,CAAC;iBAC3B,GAAG,CAAC,mBAAmB,CAAC;iBACxB,GAAG,CAAC,wBAAwB,CAAC,CAAA;QAChC,CAAC,CAAE,CAAA;QAEH,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CAAE,QAAoB,EAAE,OAAiB,EAAE,IAAoB;;QACzE,IAAI,CAAC,IAAI,CAAC,GAAG;YAAG,OAAM;QACtB,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAE,CAAA;QAE7E,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAA;QAEzB;;;;;WAKG;QACH,MAAM;aACL,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAO,EAAG,EAAE;;YAC1C,IAAI,CAAC,QAAQ;gBACX,OAAO,MAAM,CAAC,KAAK,CAAE,IAAI,KAAK,CAAC,cAAc,CAAC,CAAE,CAAA;YAElD,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAE,CAAA;QAC/E,CAAC,CAAC;aACD,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAE,CAAE;aAC5D,OAAO,CAAE,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA,EAAA,CAAE,CAAA;QAE/D,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAE,IAAc;;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG;YAAG,OAAM;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAE,CAAA;QAEpC,MACA,MAAM,GAAG,IAAI,gBAAM,EACnB,QAAQ,GAAkB;YACxB;;;;eAIG;YACH,GAAG,CAAE,MAAM;gBACT,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;;oBACxC,IAAI,OAAO;wBAAG,OAAM;oBAEpB,6DAA6D;oBAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;wBAClC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;4BAC7B,IAAI,CAAC,MAAM,CAAE,CAAC,EAAE,CAAC,CAAE,CAAA;4BACnB,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,EAAE,CAAE,CAAA;4BAClD,MAAK;wBACP,CAAC;oBAEH,yBAAyB;oBACzB,IAAI,OAAY,CAAA;oBAEhB,iBAAiB;oBACjB,IAAI,CAAC,IAAI,CAAE,MAAM,CAAE,CAAA;oBACnB,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE;wBAC/C,YAAY,CAAE,OAAO,CAAE,CAAA;wBACvB,OAAO,EAAE,CAAA;wBAET,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAE,CAAA;oBAC7C,CAAC,CAAE,CAAA;oBAEH,OAAO,GAAG,UAAU,CAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAE,CAAA;gBAClE,CAAC,CAAC,CAAA;YACJ,CAAC;YAED;;;;eAIG;YACH,MAAM,CAAE,EAAE;gBACR,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;;oBACxC,IAAI,OAAO;wBAAG,OAAM;oBAEpB,yBAAyB;oBACzB,IAAI,OAAY,CAAA;oBAEhB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAE,CAAA;oBAC5C,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,EAAE,GAAG,EAAE;wBAC9C,YAAY,CAAE,OAAO,CAAE,CAAA;wBACvB,OAAO,EAAE,CAAA;wBAET,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,EAAE,CAAE,CAAA;oBAC5C,CAAC,CAAE,CAAA;oBAEH,OAAO,GAAG,UAAU,CAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAE,CAAA;gBACrE,CAAC,CAAE,CAAA;YACL,CAAC;YAED;;;;eAIG;YACH,KAAK,CAAE,EAAE;gBACP,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;;oBACxC,IAAI,OAAO;wBAAG,OAAM;oBAEpB,yBAAyB;oBACzB,IAAI,OAAY,CAAA;oBAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAE,CAAA;oBAClD,IAAI,CAAC,MAAM;wBACT,OAAO,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;oBAE3C,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,EAAE;wBAChE,YAAY,CAAE,OAAO,CAAE,CAAA;wBACvB,OAAO,EAAE,CAAA;wBAET,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAE,CAAA;oBAC3C,CAAC,CAAE,CAAA;oBAEH,OAAO,GAAG,UAAU,CAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAE,CAAA;gBACpE,CAAC,CAAE,CAAA;YACL,CAAC;YAED;;eAEG;YACH,IAAI,CAAE,MAAM;gBACV,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;;oBACxC,IAAI,OAAO;wBAAG,OAAM;oBAEpB,yBAAyB;oBACzB,IAAI,OAAY,CAAA;oBAEhB,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE;wBAChD,YAAY,CAAE,OAAO,CAAE,CAAA;wBAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAE,CAAA;wBACzD,IAAI,CAAC,MAAM;4BACT,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;wBAEpD,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAA;wBAExC,IAAI,MAAM,CAAC,KAAK;4BACd,IAAI,CAAC;gCAAC,QAAQ,CAAC,KAAK,CAAE,MAAM,CAAC,EAAE,CAAE,CAAA;4BAAC,CAAC;4BACnC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;wBAElB,OAAO,EAAE,CAAA;wBAET,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAE,CAAA;oBAC9C,CAAC,CAAE,CAAA;oBAEH,OAAO,GAAG,UAAU,CAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAE,CAAA;gBACnE,CAAC,CAAE,CAAA;YACL,CAAC;SACF,CAAA;QAED;QACA;;WAEG;QACH,IAAI,GAAG,CAAE,EAAuB,EAAG,EAAE;YACnC,EAAE,CAAE,QAAQ,CAAE,CAAA;YACd,OAAO,MAAM,CAAA;QACf,CAAC,EACD,KAAK,GAAG,CAAE,EAAqB,EAAG,EAAE;;YAClC,IAAI,OAAO;gBAAG,OAAM;YAEpB,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,eAAe,EAAE,CAAE,KAAuB,EAAG,EAAE;gBAC5D,IAAI,OAAO,KAAK,IAAI,QAAQ;oBAC1B,OAAO,OAAO,EAAE,IAAI,UAAU,IAAI,EAAE,CAAE,IAAI,KAAK,CAAE,KAAK,CAAE,CAAE,CAAA;gBAE5D,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAA;gBAEnC,OAAO,EAAE,IAAI,UAAU,IAAI,EAAE,EAAE,CAAA;YACjC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAE,MAAM,EAAE,OAAO,EAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAE,CAAA;QACzF,0BAA0B;QAC1B,MAAM;aACL,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAE,CAAE;aAC5D,OAAO,CAAE,CAAE,EAAe,EAAG,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAE,CAAA;YAC7C,KAAK,EAAE,CAAA;QACT,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IAC3C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAE,QAAqB,EAAE,OAAiB;;QACzD,yBAAyB;QACzB,MAAM,QAAQ,GAAY;YACxB,KAAK,EAAE,cAAc;YACrB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;SACnB,CAAA;QAED,MAAM,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,cAAc,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAE,CAAA,CAAA;IACvF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAE,QAAqB,EAAE,OAAiB;;QAC1D,8BAA8B;QAC9B,MAAM,QAAQ,GAAY;YACxB,KAAK,EAAE,mBAAmB;YAC1B,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;SACnB,CAAA;QAED,MAAM,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,mBAAmB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAE,CAAA,CAAA;IAC5F,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAE,OAAsB;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG;YAAG,OAAM;QACtB,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAA;QAEzB,MAAM;aACL,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAO,EAAG,EAAE;;YACpD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;gBACzB,OAAO,MAAM,CAAC,KAAK,CAAE,IAAI,KAAK,CAAC,cAAc,CAAC,CAAE,CAAA;YAElD,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAE,CAAA;YAEvE,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,OAAO,CAAC;gBACb,KAAK,SAAS,CAAC;gBACf,KAAK,WAAW,CAAC;gBACjB,KAAK,aAAa,CAAC;gBACnB,KAAK,cAAc,CAAC;gBACpB,KAAK,kBAAkB,CAAC;gBACxB,KAAK,eAAe,CAAC;gBACrB,KAAK,QAAQ,CAAC;gBACd,KAAK,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAK;gBAC9D,KAAK,aAAa;oBAAE,CAAC;wBACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;wBACtB,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAA;oBACrC,CAAC;oBAAC,MAAK;YACT,CAAC;QACH,CAAC,CAAC;aACD,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAE,CAAE,CAAA;QAE7D,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAE,OAAgB;QAC1B,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAG,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAA;YAErD,MAAM,UAAU,GAAG,GAAG,EAAE;;gBACtB,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAA;gBAEzB,oCAAoC;gBACpC,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,sBAAsB,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;oBACvE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;oBAE5C,QAAQ,MAAM,EAAE,CAAC;wBACf,KAAK,OAAO,CAAC;wBACb,KAAK,SAAS,CAAC;wBACf,KAAK,WAAW,CAAC;wBACjB,KAAK,aAAa,CAAC;wBACnB,KAAK,cAAc,CAAC;wBACpB,KAAK,kBAAkB,CAAC;wBACxB,KAAK,eAAe,CAAC;wBACrB,KAAK,QAAQ,CAAC;wBACd,KAAK,SAAS;4BAAE,IAAI,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;4BAAC,MAAK;wBAC9D,KAAK,aAAa;4BAAE,CAAC;gCACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gCACtB,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAA;4BACrC,CAAC;4BAAC,MAAK;oBACT,CAAC;gBACH,CAAC,CAAC,CAAA;gBAEF,MAAM;oBACN,kCAAkC;qBACjC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAO,EAAG,EAAE;;oBACjC,IAAI,CAAC,QAAQ;wBACX,OAAO,MAAM,CAAC,KAAK,CAAE,IAAI,KAAK,CAAC,cAAc,CAAC,CAAE,CAAA;oBAElD,MAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ,CAAE,QAAQ,CAAE,CAAA;gBACrC,CAAC,CAAC;qBACD,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAE,CAAE;qBAC5D,OAAO,CAAE,GAAG,EAAE;;oBACb,MAAA,IAAI,CAAC,GAAG,0CAAE,GAAG,CAAC,sBAAsB,CAAC,CAAA;oBACrC,MAAA,IAAI,CAAC,QAAQ,0CAAE,iBAAiB,EAAE,CAAA;gBACpC,CAAC,CAAC,CAAA;gBAEF,OAAO,MAAM,CAAA;YACf,CAAC,CAAA;YAED,YAAY;YACZ,MAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ,CAAE,OAAO,EACjB,IAAI,CAAE,KAAK,IAAI,EAAE;;gBAChB,mDAAmD;gBACnD,6DAA6D;gBAC7D,gEAAgE;gBAChE,+CAA+C;gBAC/C,MAAM,QAAQ,GAAG,CAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,MAAM,KAAI,MAAM,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,kBAAkB,EAAE,CAAA,CAAA;gBACpF,IAAI,CAAC,QAAQ;oBAAG,OAAO,MAAM,CAAC,gCAAgC,CAAC,CAAA;gBAE/D,iEAAiE;gBACjE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;gBAE3B,IAAI,CAAC;oBACH,MAAM,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,eAAe,CAAE,OAAO,CAAC,OAAO,CAAE,CAAA,CAAA;oBACvD,2DAA2D;oBAC3D,yDAAyD;oBACzD,MAAM,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,cAAc,EAAE,CAAA,CAAA;oBACrC,MAAM,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,4BAA4B,CAAE,QAAsB,CAAE,CAAA,CAAA;gBAC7E,CAAC;gBACD,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,MAAM,KAAK,CAAA;gBACb,CAAC;gBAED,gEAAgE;gBAChE,kEAAkE;gBAClE,gEAAgE;gBAChE,OAAO,CAAE,MAAM,CAAE,CAAA;YACnB,CAAC,EACA,KAAK,CAAE,MAAM,CAAE,CAAA;QAChC,CAAC,CAAE,CAAA;IACL,CAAC;CACF;AA/aD,0BA+aC"}
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":"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"}
1
+ {"version":3,"file":"realtime-socket.js","sourceRoot":"","sources":["../../src/allend/realtime-socket.ts"],"names":[],"mappings":";;;;;AAGA,wEAA6C;AAC7C,sDAAoC;AACpC,wCAAoC;AA8CpC,MAA8B,cAAe,SAAQ,gBAAa;IAgBhE,YAAa,MAAqB;;QAChC,KAAK,CAAE,MAAM,EAAE,KAAK,CAAE,CAAA;QAZxB;;;;;;;WAOG;QACK,UAAK,GAAG,IAAI,GAAG,EAAU,CAAA;QAM/B,qEAAqE;QACrE,gEAAgE;QAChE,IAAI,CAAC,OAAO,GAAG,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,OAAO,CAAE,MAAM,EAAE,EAAE,CAAE;eACjC,IAAA,iBAAO,EAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE,MAAM,CAAC,WAAW,CAAE,CAAA;IAC7E,CAAC;IAKD,sEAAsE;IAC5D,aAAa,KAA8B,OAAO,EAAE,CAAA,CAAC,CAAC;IAEtD,IAAI,CAAE,EAAU,EAAE,UAAkC,EAAE;QAC9D,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QAEZ,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;YACxC;;;;;;;;;;;;;;;eAeG;YACH,MAAM,cAAc,GAAG,OAAO,UAAU,CAAC,MAAM,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;gBACnE,CAAC,CAAC,UAAU,CAAC,MAAM;gBACnB,CAAC,CAAC,SAAS,CAAA;YAEnC,MAAM,WAAW,GAAG,KAAK,IAAoC,EAAE,CAAC,CAAC;gBAC/D,KAAK,EAAS,IAAI,CAAC,KAAK;gBACxB,EAAE;gBACF,YAAY,EAAE,cAAc,IAAI,IAAI,CAAC,YAAsB;gBAC3D,WAAW,EAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAqB;aACvF,CAAC,CAAA;YAEF,IAAI,CAAC,GAAG,GAAG,IAAA,0BAAE,EAAE,IAAI,CAAC,OAAO,EAAE;gBAC3B,sEAAsE;gBACtE,8DAA8D;gBAC9D,IAAI,EAAE,CAAE,EAAyB,EAAG,EAAE;oBACpC,WAAW,EAAE;yBACV,IAAI,CAAE,EAAE,CAAE;wBACX,+DAA+D;wBAC/D,8DAA8D;yBAC7D,KAAK,CAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAE,CAAA;gBACjD,CAAC;gBACD,GAAG,CAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAE;gBAC/D,GAAG,IAAI,CAAC,aAAa,EAAE;aACxB,CAAC,CAAA;YAEF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC1B,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,CAAE,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,4EAA4E;IACpE,OAAO;;QACb,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK;YAC9B,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAE,OAAgB,EAAG,EAAE;;gBACrD,IAAI,CAAC,OAAO;oBAAG,OAAM;gBAErB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,OAAO,CAAE,CAAA;gBAC5B,MAAA,IAAI,CAAC,WAAW,qDAAI,IAAI,KAAK,CAAE,OAAO,CAAE,CAAE,CAAA;YAC5C,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;;OAGG;IACH,IAAI,CAAE,OAAe;QACnB,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;;YACxC,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAE,OAAgB,EAAG,EAAE;gBACrD,IAAI,OAAO;oBAAG,OAAO,MAAM,CAAE,IAAI,KAAK,CAAE,OAAO,CAAE,CAAE,CAAA;gBAEnD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,OAAO,CAAE,CAAA;gBACzB,OAAO,CAAE,IAAI,CAAE,CAAA;YACjB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAE,OAAe;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,OAAO,CAAE,CAAA;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAE,EAA4B;QACzC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+EAA+E;IAC/E,WAAW,CAAE,EAAc;;QACzB,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAE,CAAA;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU;;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,MAAA,IAAI,CAAC,GAAG,0CAAE,UAAU,EAAE,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAE,SAAiB,EAAE,KAAa;;QACtC,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAtJD,iCAsJC"}
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@de./sdk",
3
- "version": "2.3.3",
3
+ "version": "2.3.4",
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",
@@ -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()
@@ -411,14 +413,22 @@ 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
- this.controls?.setRoute( journey )
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
433
  // Initialize navigation point to current location.
424
434
  // The origin is a waypoint — `{ coords, caption }` — and the
@@ -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,