@nanolink/mirrors 1.1.75 → 1.1.76

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/README.md CHANGED
@@ -145,6 +145,44 @@ console.log('Products count', products.size);
145
145
 
146
146
  When `opVersion` fields are absent they are simply ignored; ordering & stale protections rely on numeric `version` only.
147
147
 
148
+ ### `data64` envelopes
149
+ Some state subscriptions carry records that are far too large as GraphQL objects (a chunk of a trip's route is 250–300 KB decoded). For those, an `UPDATED` frame carries `data64` instead of `data`: base64 of one or more records in the tenant store's dump framing, concatenated:
150
+
151
+ ```
152
+ [uint16 LE key length][key utf8][uint16 LE value length][value] (repeated; one frame per record)
153
+ ```
154
+
155
+ `MirrorSync` splits the frames and decodes each record with the decoder registered for the subscription's root field (`registerDecoder(rootField, fn)` / `getDecoder(rootField)` in `src/decoders.ts`). The decoded items carry `id` and `opVersion` like any other, so version guards, `updated` events and `waitForUpdated()` work unchanged. Consumers never see base64 or bytes; the package registers its own decoders at import time, so nothing has to be registered by the application. A `data64` frame for a root field without a decoder, or a record that does not decode, emits `error` and is skipped; the subscription stays up.
156
+
157
+ ### Trip routes (`OpSubscriptions.tripRoutes`)
158
+ `tripRoutes` mirrors the route of each of a tracker's last N trips, one record per chunk of up to 4000 points, keyed `<trackerVID>/<tripStart>/<chunk>`. The server sends the chunks as `data64`; the mirror holds plain objects:
159
+
160
+ ```ts
161
+ interface TripRouteItem {
162
+ id: string; // '<trackerVID>/<tripStart>/<chunk>'
163
+ trackerVID: string;
164
+ tripStart: number; // POSIX seconds, as in stateTrips' startGPS.stamp
165
+ chunk: number; // from 0
166
+ points: { stamp: number; longitude: number; latitude: number; speed: number | null }[];
167
+ opVersion: string;
168
+ deleted: boolean;
169
+ }
170
+ ```
171
+
172
+ `trackerVIDs` narrows the subscription and is passed through `baseVariables`:
173
+
174
+ ```ts
175
+ import { OpSubscriptions, tripRoute, tripRouteKey, parseTripRouteKey } from '@nanolink/mirrors';
176
+
177
+ const routes = await conn.getMirror('tripRoutes', OpSubscriptions.tripRoutes, { trackerVIDs: ['180001D7EEFA'] });
178
+
179
+ // The whole route of one trip: its contiguous chunks from 0, stopping at the first gap.
180
+ const points = tripRoute(routes, '180001D7EEFA', trip.startGPS.stamp);
181
+
182
+ tripRouteKey('180001D7EEFA', 1700000000, 0); // '180001D7EEFA/1700000000/0'
183
+ parseTripRouteKey('180001D7EEFA/1700000000/0'); // { trackerVID, tripStart, chunk } or null
184
+ ```
185
+
148
186
  ### Direct low-level client
149
187
  ```ts
150
188
  import { SubscriptionClient } from '@nanolink/mirrors';
@@ -196,6 +234,8 @@ sc.on('connected', () => {
196
234
  * `Connection` – manages multiple named mirrors and re-emits namespaced mirror events.
197
235
  * `ReadonlyMapView` – read-only view returned by `getMirror()`, `getPredefinedMirror()`, and `MirrorSync.load()`.
198
236
  * `waitForUpdated()` / `waitForDeleted()` – wait until the mirror observes a specific future update or delete event.
237
+ * `registerDecoder()` / `getDecoder()` – the `data64` decoder registry, keyed by root field (the package registers its own).
238
+ * `tripRoute()`, `tripRouteKey()`, `parseTripRouteKey()` – helpers over the `tripRoutes` mirror.
199
239
 
200
240
  Note about mirror helpers
201
241
  -------------------------
@@ -13,6 +13,8 @@ export interface CacheSyncResult {
13
13
  total?: number | null;
14
14
  deleteId?: string;
15
15
  data?: any;
16
+ /** Base64 of dump-framed records; decoded by the decoder registered for the root field (see decoders.ts) */
17
+ data64?: string;
16
18
  deleteVersion?: number;
17
19
  deleteOpVersion?: string;
18
20
  opVersion?: string;
@@ -118,6 +120,12 @@ export declare class MirrorSync extends EventEmitter {
118
120
  private resetLoaded;
119
121
  private handlePayload;
120
122
  private handleVersionError;
123
+ /**
124
+ * Decodes a `data64` frame through the decoder registered for the root
125
+ * field. No decoder, or a record that does not decode: emits 'error' and
126
+ * returns undefined so the frame is skipped; never throws.
127
+ */
128
+ private decodeData64;
121
129
  private normalizeItems;
122
130
  private applyUpdated;
123
131
  private applyDeleted;
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MirrorSync = exports.SyncType = void 0;
7
7
  const eventemitter3_1 = __importDefault(require("eventemitter3"));
8
+ const decoders_1 = require("./decoders");
8
9
  // SyncType enum as described
9
10
  var SyncType;
10
11
  (function (SyncType) {
@@ -186,7 +187,13 @@ class MirrorSync extends eventemitter3_1.default {
186
187
  break;
187
188
  }
188
189
  case SyncType.UPDATED:
189
- this.applyUpdated(msg.data);
190
+ if (msg.data !== undefined && msg.data !== null)
191
+ this.applyUpdated(msg.data);
192
+ if (typeof msg.data64 === 'string') {
193
+ const items = this.decodeData64(firstKey, msg.data64);
194
+ if (items)
195
+ this.applyUpdated(items);
196
+ }
190
197
  break;
191
198
  case SyncType.DELETED:
192
199
  this.applyDeleted(msg.deleteId, msg.deleteVersion, msg.deleteOpVersion);
@@ -231,6 +238,27 @@ class MirrorSync extends eventemitter3_1.default {
231
238
  this.subscribeInternal(this.currentVersion, this.currentOpVersion);
232
239
  }, 0); // defer to allow event handlers to react before restart
233
240
  }
241
+ /**
242
+ * Decodes a `data64` frame through the decoder registered for the root
243
+ * field. No decoder, or a record that does not decode: emits 'error' and
244
+ * returns undefined so the frame is skipped; never throws.
245
+ */
246
+ decodeData64(rootField, data64) {
247
+ const decoder = (0, decoders_1.getDecoder)(rootField);
248
+ if (!decoder) {
249
+ this.l('no data64 decoder', { rootField });
250
+ this.emit('error', new Error(`No data64 decoder registered for root field '${rootField}'`));
251
+ return undefined;
252
+ }
253
+ try {
254
+ return (0, decoders_1.decodeData64)(data64, decoder);
255
+ }
256
+ catch (err) {
257
+ this.l('data64 decode failed', { rootField, err });
258
+ this.emit('error', err);
259
+ return undefined;
260
+ }
261
+ }
234
262
  normalizeItems(data) {
235
263
  if (!data)
236
264
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"MirrorSync.js","sourceRoot":"","sources":["../src/MirrorSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MirrorSync.js","sourceRoot":"","sources":["../src/MirrorSync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The `data64` envelope convention.
3
+ *
4
+ * An UPDATED frame may carry `data64` instead of `data`: base64 of one or
5
+ * more records in the tenant store's dump framing, concatenated:
6
+ *
7
+ * [uint16 LE key length][key utf8][uint16 LE value length][value], repeated
8
+ *
9
+ * One frame per record; a bulk message is several frames. The engine splits
10
+ * the frames and hands each record to the decoder registered for the root
11
+ * field (see decoders.ts). Consumers never see the base64 or the bytes.
12
+ *
13
+ * Builds for ES2017: no BigInt, DataView/Uint8Array only.
14
+ */
15
+ export interface Data64Frame {
16
+ key: string;
17
+ value: Uint8Array;
18
+ }
19
+ /** Base64 to bytes: `Buffer` when present (Node), else `atob`. */
20
+ export declare function base64ToBytes(data64: string): Uint8Array;
21
+ /** Splits a byte block in dump framing into its records. */
22
+ export declare function readFrames(bytes: Uint8Array): Data64Frame[];
23
+ /** Base64 string to its records. */
24
+ export declare function decodeData64Frames(data64: string): Data64Frame[];
package/dist/data64.js ADDED
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * The `data64` envelope convention.
4
+ *
5
+ * An UPDATED frame may carry `data64` instead of `data`: base64 of one or
6
+ * more records in the tenant store's dump framing, concatenated:
7
+ *
8
+ * [uint16 LE key length][key utf8][uint16 LE value length][value], repeated
9
+ *
10
+ * One frame per record; a bulk message is several frames. The engine splits
11
+ * the frames and hands each record to the decoder registered for the root
12
+ * field (see decoders.ts). Consumers never see the base64 or the bytes.
13
+ *
14
+ * Builds for ES2017: no BigInt, DataView/Uint8Array only.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.base64ToBytes = base64ToBytes;
18
+ exports.readFrames = readFrames;
19
+ exports.decodeData64Frames = decodeData64Frames;
20
+ /** Base64 to bytes: `Buffer` when present (Node), else `atob`. */
21
+ function base64ToBytes(data64) {
22
+ if (typeof Buffer !== 'undefined' && typeof Buffer.from === 'function') {
23
+ const buf = Buffer.from(data64, 'base64');
24
+ return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
25
+ }
26
+ if (typeof atob !== 'function')
27
+ throw new Error('data64: no base64 decoder available');
28
+ const binary = atob(data64);
29
+ const out = new Uint8Array(binary.length);
30
+ for (let i = 0; i < binary.length; i++)
31
+ out[i] = binary.charCodeAt(i);
32
+ return out;
33
+ }
34
+ function utf8(bytes) {
35
+ if (typeof TextDecoder !== 'undefined')
36
+ return new TextDecoder().decode(bytes);
37
+ if (typeof Buffer !== 'undefined')
38
+ return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('utf8');
39
+ let s = '';
40
+ for (let i = 0; i < bytes.length; i++)
41
+ s += String.fromCharCode(bytes[i]);
42
+ return s;
43
+ }
44
+ /** Splits a byte block in dump framing into its records. */
45
+ function readFrames(bytes) {
46
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
47
+ const frames = [];
48
+ let at = 0;
49
+ while (at < bytes.length) {
50
+ if (at + 2 > bytes.length)
51
+ throw new Error(`data64: truncated key length at ${at}`);
52
+ const keyLength = view.getUint16(at, true);
53
+ at += 2;
54
+ if (at + keyLength + 2 > bytes.length)
55
+ throw new Error(`data64: truncated key at ${at}`);
56
+ const key = utf8(bytes.subarray(at, at + keyLength));
57
+ at += keyLength;
58
+ const valueLength = view.getUint16(at, true);
59
+ at += 2;
60
+ if (at + valueLength > bytes.length)
61
+ throw new Error(`data64: truncated value for '${key}' at ${at}`);
62
+ frames.push({ key, value: bytes.subarray(at, at + valueLength) });
63
+ at += valueLength;
64
+ }
65
+ return frames;
66
+ }
67
+ /** Base64 string to its records. */
68
+ function decodeData64Frames(data64) {
69
+ return readFrames(base64ToBytes(data64));
70
+ }
71
+ //# sourceMappingURL=data64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data64.js","sourceRoot":"","sources":["../src/data64.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { MirrorItem } from './MirrorSync';
2
+ /**
3
+ * Decodes one record of a `data64` frame (its key and value bytes) into a
4
+ * mirror item. The item must carry `id` and `opVersion` so the engine can
5
+ * apply it exactly as it applies `data`.
6
+ */
7
+ export type Data64Decoder = (key: string, value: Uint8Array) => MirrorItem;
8
+ export declare function registerDecoder(rootField: string, decoder: Data64Decoder): void;
9
+ export declare function getDecoder(rootField: string): Data64Decoder | undefined;
10
+ /** Decodes every record of a `data64` string with `decoder`. */
11
+ export declare function decodeData64(data64: string, decoder: Data64Decoder): MirrorItem[];
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerDecoder = registerDecoder;
4
+ exports.getDecoder = getDecoder;
5
+ exports.decodeData64 = decodeData64;
6
+ const data64_1 = require("./data64");
7
+ /**
8
+ * The decoder registry, keyed by the subscription's root field name (the
9
+ * first key of the payload, which the engine already uses). The package
10
+ * registers its own decoders at import time; consumers register nothing.
11
+ */
12
+ const decoders = new Map();
13
+ function registerDecoder(rootField, decoder) {
14
+ decoders.set(rootField, decoder);
15
+ }
16
+ function getDecoder(rootField) {
17
+ return decoders.get(rootField);
18
+ }
19
+ /** Decodes every record of a `data64` string with `decoder`. */
20
+ function decodeData64(data64, decoder) {
21
+ return (0, data64_1.decodeData64Frames)(data64).map(f => decoder(f.key, f.value));
22
+ }
23
+ //# sourceMappingURL=decoders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoders.js","sourceRoot":"","sources":["../src/decoders.ts"],"names":[],"mappings":";;AAiBA,0CAEC;AAED,gCAEC;AAGD,oCAEC;AA5BD,qCAA8C;AAU9C;;;;GAIG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD,SAAgB,eAAe,CAAC,SAAiB,EAAE,OAAsB;IACrE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,UAAU,CAAC,SAAiB;IACxC,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,gEAAgE;AAChE,SAAgB,YAAY,CAAC,MAAc,EAAE,OAAsB;IAC/D,OAAO,IAAA,2BAAkB,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,CAAC"}
@@ -43,6 +43,7 @@ export declare const OpSubscriptions: {
43
43
  stateLinks: string;
44
44
  stateRefLinks: string;
45
45
  trackerState: string;
46
+ tripRoutes: string;
46
47
  trips3: string;
47
48
  };
48
49
  export declare const RequiredMirrors: {
@@ -84,6 +84,7 @@ exports.OpSubscriptions = {
84
84
  stateLinks: opsubs.stateLinks,
85
85
  stateRefLinks: opsubs.stateRefLinks,
86
86
  trackerState: opsubs.trackerState,
87
+ tripRoutes: opsubs.tripRoutes,
87
88
  trips3: opsubs.trips
88
89
  };
89
90
  exports.RequiredMirrors = {
@@ -1 +1 @@
1
- {"version":3,"file":"mirrors.js","sourceRoot":"","sources":["../../src/definitions/mirrors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAuC;AACvC,gEAAiD;AACjD,6DAA8C;AAC9C,gEAAiD;AACjD,sEAAuD;AAE1C,QAAA,aAAa,GAAG;IAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;IACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;IACvC,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,eAAe,EAAE,IAAI,CAAC,eAAe;IACrC,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,aAAa,EAAE,IAAI,CAAC,aAAa;IACjC,SAAS,EAAE,IAAI,CAAC,SAAS;IACzB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,eAAe,EAAE,IAAI,CAAC,eAAe;IACrC,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;IAC3C,eAAe,EAAE,IAAI,CAAC,eAAe;IACrC,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;IACrD,aAAa,EAAE,IAAI,CAAC,aAAa;IACjC,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;IAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;IACnC,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;IACzC,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,aAAa,EAAE,IAAI,CAAC,aAAa;CAClC,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,YAAY,EAAE,MAAM,CAAC,YAAY;IACjC,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,YAAY,EAAE,MAAM,CAAC,YAAY;IACjC,MAAM,EAAE,MAAM,CAAC,KAAK;CACrB,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,cAAc,EAAE,GAAG,CAAC,cAAc;IAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,KAAK,EAAE,GAAG,CAAC,KAAK;CACjB,CAAA;AACY,QAAA,oBAAoB,GAAG;IAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC3B,CAAA;AAEY,QAAA,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAA"}
1
+ {"version":3,"file":"mirrors.js","sourceRoot":"","sources":["../../src/definitions/mirrors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAuC;AACvC,gEAAiD;AACjD,6DAA8C;AAC9C,gEAAiD;AACjD,sEAAuD;AAE1C,QAAA,aAAa,GAAG;IAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;IACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;IACvC,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,eAAe,EAAE,IAAI,CAAC,eAAe;IACrC,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,aAAa,EAAE,IAAI,CAAC,aAAa;IACjC,SAAS,EAAE,IAAI,CAAC,SAAS;IACzB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,eAAe,EAAE,IAAI,CAAC,eAAe;IACrC,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;IAC3C,eAAe,EAAE,IAAI,CAAC,eAAe;IACrC,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;IACrD,aAAa,EAAE,IAAI,CAAC,aAAa;IACjC,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;IAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;IACnC,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;IACzC,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,aAAa,EAAE,IAAI,CAAC,aAAa;CAClC,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,YAAY,EAAE,MAAM,CAAC,YAAY;IACjC,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,YAAY,EAAE,MAAM,CAAC,YAAY;IACjC,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,MAAM,EAAE,MAAM,CAAC,KAAK;CACrB,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,cAAc,EAAE,GAAG,CAAC,cAAc;IAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,KAAK,EAAE,GAAG,CAAC,KAAK;CACjB,CAAA;AACY,QAAA,oBAAoB,GAAG;IAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC3B,CAAA;AAEY,QAAA,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAA"}
@@ -4,4 +4,5 @@ export * from './lostposition';
4
4
  export * from './stateLinks';
5
5
  export * from './stateRefLinks';
6
6
  export * from './trackerstate';
7
+ export * from './triproutes';
7
8
  export * from './trips';
@@ -20,5 +20,6 @@ __exportStar(require("./lostposition"), exports);
20
20
  __exportStar(require("./stateLinks"), exports);
21
21
  __exportStar(require("./stateRefLinks"), exports);
22
22
  __exportStar(require("./trackerstate"), exports);
23
+ __exportStar(require("./triproutes"), exports);
23
24
  __exportStar(require("./trips"), exports);
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/definitions/opsubscriptions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,6CAA0B;AAC1B,iDAA8B;AAC9B,+CAA4B;AAC5B,kDAA+B;AAC/B,iDAA8B;AAC9B,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/definitions/opsubscriptions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,6CAA0B;AAC1B,iDAA8B;AAC9B,+CAA4B;AAC5B,kDAA+B;AAC/B,iDAA8B;AAC9B,+CAA4B;AAC5B,0CAAuB"}
@@ -0,0 +1 @@
1
+ export declare const tripRoutes = "subscription tripRoutes($opVersion: String, $trackerVIDs: [String!]) {\n tripRoutes(opversion: $opVersion, trackerVIDs: $trackerVIDs) {\n type\n data64\n deleteId\n deleteOpVersion\n }\n}";
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tripRoutes = void 0;
4
+ exports.tripRoutes = `subscription tripRoutes($opVersion: String, $trackerVIDs: [String!]) {
5
+ tripRoutes(opversion: $opVersion, trackerVIDs: $trackerVIDs) {
6
+ type
7
+ data64
8
+ deleteId
9
+ deleteOpVersion
10
+ }
11
+ }`;
12
+ //# sourceMappingURL=triproutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triproutes.js","sourceRoot":"","sources":["../../../src/definitions/opsubscriptions/triproutes.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GACvB;;;;;;;EAOE,CAAA"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,10 @@ export { MirrorAnnotations, exposedMirrors, draftMirrors } from './definitions/a
7
7
  export type { MirrorAnnotation, MirrorAudience, MirrorCardinality } from './definitions/annotations';
8
8
  export type { MirrorDeletedMatcher, MirrorDeletedPayload, MirrorUpdatedMatcher, MirrorUpdatedPayload, MirrorWaitOptions } from './MirrorSync';
9
9
  export type { ReadonlyMapView };
10
+ export { registerDecoder, getDecoder } from './decoders';
11
+ export type { Data64Decoder } from './decoders';
12
+ export { tripRouteKey, parseTripRouteKey, tripRoute, decodeTripRouteRecord } from './triproute';
13
+ export type { RoutePoint, TripRouteItem, TripRouteKey } from './triproute';
10
14
  export declare class Connection<T extends MirrorSync> extends SubscriptionClient {
11
15
  Mirrors: Map<string, T>;
12
16
  constructor();
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.Connection = exports.draftMirrors = exports.exposedMirrors = exports.MirrorAnnotations = exports.MessageSubscriptions = exports.TempSubscriptions = exports.RequiredMirrors = exports.Subscriptions = exports.OpSubscriptions = exports.DelegatingObject = exports.MirrorSync = exports.SubscriptionClient = void 0;
15
+ exports.Connection = exports.decodeTripRouteRecord = exports.tripRoute = exports.parseTripRouteKey = exports.tripRouteKey = exports.getDecoder = exports.registerDecoder = exports.draftMirrors = exports.exposedMirrors = exports.MirrorAnnotations = exports.MessageSubscriptions = exports.TempSubscriptions = exports.RequiredMirrors = exports.Subscriptions = exports.OpSubscriptions = exports.DelegatingObject = exports.MirrorSync = exports.SubscriptionClient = void 0;
16
16
  const MirrorSync_1 = require("./MirrorSync");
17
17
  Object.defineProperty(exports, "MirrorSync", { enumerable: true, get: function () { return MirrorSync_1.MirrorSync; } });
18
18
  const DelegateMap_1 = require("./DelegateMap");
@@ -33,6 +33,16 @@ var annotations_1 = require("./definitions/annotations");
33
33
  Object.defineProperty(exports, "MirrorAnnotations", { enumerable: true, get: function () { return annotations_1.MirrorAnnotations; } });
34
34
  Object.defineProperty(exports, "exposedMirrors", { enumerable: true, get: function () { return annotations_1.exposedMirrors; } });
35
35
  Object.defineProperty(exports, "draftMirrors", { enumerable: true, get: function () { return annotations_1.draftMirrors; } });
36
+ // data64 envelopes: the decoder registry and the trip route mirror helpers.
37
+ // Importing './triproute' registers the package's own decoders.
38
+ var decoders_1 = require("./decoders");
39
+ Object.defineProperty(exports, "registerDecoder", { enumerable: true, get: function () { return decoders_1.registerDecoder; } });
40
+ Object.defineProperty(exports, "getDecoder", { enumerable: true, get: function () { return decoders_1.getDecoder; } });
41
+ var triproute_1 = require("./triproute");
42
+ Object.defineProperty(exports, "tripRouteKey", { enumerable: true, get: function () { return triproute_1.tripRouteKey; } });
43
+ Object.defineProperty(exports, "parseTripRouteKey", { enumerable: true, get: function () { return triproute_1.parseTripRouteKey; } });
44
+ Object.defineProperty(exports, "tripRoute", { enumerable: true, get: function () { return triproute_1.tripRoute; } });
45
+ Object.defineProperty(exports, "decodeTripRouteRecord", { enumerable: true, get: function () { return triproute_1.decodeTripRouteRecord; } });
36
46
  class Connection extends SubscriptionClient_1.default {
37
47
  constructor() {
38
48
  super();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { ReadonlyMapView } from './DelegateMap';
2
+ /** One position of a trip's route; `speed` is null when the device reported none. */
3
+ export interface RoutePoint {
4
+ stamp: number;
5
+ longitude: number;
6
+ latitude: number;
7
+ speed: number | null;
8
+ }
9
+ /**
10
+ * One chunk of the route of one trip, keyed `<vid>/<tripStart>/<chunk>`,
11
+ * as the `tripRoutes` mirror holds it.
12
+ */
13
+ export interface TripRouteItem {
14
+ id: string;
15
+ trackerVID: string;
16
+ tripStart: number;
17
+ chunk: number;
18
+ points: RoutePoint[];
19
+ opVersion: string;
20
+ deleted: boolean;
21
+ }
22
+ export interface TripRouteKey {
23
+ trackerVID: string;
24
+ tripStart: number;
25
+ chunk: number;
26
+ }
27
+ /** The mirror key of a chunk: `<vid>/<tripStart>/<chunk>`. */
28
+ export declare function tripRouteKey(trackerVID: string, tripStart: number, chunk: number): string;
29
+ /** The parts of a mirror key, or null when it is not a trip route key. */
30
+ export declare function parseTripRouteKey(id: string): TripRouteKey | null;
31
+ /**
32
+ * The route of one trip: the points of its contiguous chunks from 0, in
33
+ * order, stopping at the first chunk the mirror does not hold.
34
+ */
35
+ export declare function tripRoute(mirror: ReadonlyMapView<string, any>, trackerVID: string, tripStart: number): RoutePoint[];
36
+ /**
37
+ * Reads a zigzag varint (Go's binary.Varint): LEB128 unsigned, then
38
+ * even -> n/2, odd -> -(n+1)/2.
39
+ */
40
+ export declare function readVarint(bytes: Uint8Array, offset: number): {
41
+ value: number;
42
+ offset: number;
43
+ };
44
+ /**
45
+ * Decodes a statetriproute record. The value is `[version: 12][count: u16]`
46
+ * and, with a count above 0, the first point absolute (stamp int64 LE,
47
+ * longitude and latitude int32 LE at 1e-7 degrees, speed uint16 LE at
48
+ * 0.1 km/h, 65535 for none) followed by every further point as four zigzag
49
+ * varints: the deltas of the stamp, the longitude, the latitude and the
50
+ * speed, in the same units. The key is `<vid>/<tripStart>/<chunk>`.
51
+ */
52
+ export declare function decodeTripRouteRecord(key: string, value: Uint8Array): TripRouteItem;