@nanolink/mirrors 1.1.70 → 1.1.72

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.
@@ -268,7 +268,8 @@ exports.MirrorAnnotations = {
268
268
  'precisely because something newer replaced it. Work items. A task may be ' +
269
269
  'attached to a reference through `targetReferenceId`, or stand alone with ' +
270
270
  'none. `status` carries where it has reached, and `fieldValues` holds ' +
271
- 'whatever the template defined. ',
271
+ 'whatever the template defined. Only tasks the signed-in user may see are ' +
272
+ 'present: `accessRoles` are the view roles of the current status. ',
272
273
  useWhen: 'Asked what work is outstanding, what has been done, or what is booked ' +
273
274
  'against a particular piece of equipment. ',
274
275
  audience: 'ai',
@@ -281,14 +282,16 @@ exports.MirrorAnnotations = {
281
282
  description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
282
283
  'not history. Historic values live in the log API, where a row is there ' +
283
284
  'precisely because something newer replaced it. Definitions that tasks are ' +
284
- 'created from, including the business rules governing how and by whom they ' +
285
- 'may be created, processed and finished. `fields` and `statuses` define the ' +
286
- 'shape and lifecycle that tasks then follow. ',
285
+ 'created from. `statuses` is the lifecycle in presentation order; the first ' +
286
+ 'is the default status every task starts in. Each status carries its own ' +
287
+ '`fields`, a `category` (CREATED, PROCESSING or CLOSED, for lists only), ' +
288
+ '`viewRoles` (who sees tasks in that status; empty = everyone) and ' +
289
+ '`editRoles` (who may put a task in that status and fill in its fields). ',
287
290
  useWhen: 'Asked what KINDS of task exist, or why a task has particular fields or ' +
288
291
  'statuses. For the actual work items, use Tasks. ',
289
292
  audience: 'ai',
290
293
  reviewed: true,
291
- summaryFields: ['id', 'name', 'description', 'fields', 'statuses', 'deleted'],
294
+ summaryFields: ['id', 'name', 'description', 'statuses', 'deleted'],
292
295
  cardinality: 'small',
293
296
  },
294
297
  trips: {
@@ -1 +1 @@
1
- {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/definitions/annotations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/definitions/annotations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const taskTemplates = "subscription taskTemplates($version: Int!) {\n mtasktemplate_get(version:$version, subscribe: true) {\n type total deleteId deleteVersion\n data {\n id:idStr version createdDateTime\n groupIds\n name\n description\n createAccessRoles\n processingAccessRoles\n finishAccessRoles\n design\n fields {\n key\n label\n type\n required\n linkedStatus\n groupKey\n groupLabel\n listInfo\n options { key label }\n }\n statuses {\n key\n label\n color\n icon\n isTerminal\n isDefault\n allowedRoles\n }\n deleted\n }\n }\n}";
1
+ export declare const taskTemplates = "subscription taskTemplates($version: Int!) {\n mtasktemplate_get(version:$version, subscribe: true) {\n type total deleteId deleteVersion\n data {\n id:idStr version createdDateTime\n groupIds\n name\n description\n statuses {\n key\n label\n color\n icon\n isDefault\n category\n viewRoles\n editRoles\n alwaysShowInDetails\n fields {\n key\n label\n type\n required\n groupKey\n groupLabel\n listInfo\n options { key label }\n }\n }\n deleted\n }\n }\n}";
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.taskTemplates = void 0;
4
4
  const fragments_1 = require("../fragments");
5
+ // Fields and roles live under each status (core 2026-10-01). The first status is the default status.
5
6
  exports.taskTemplates = `subscription taskTemplates($version: Int!) {
6
7
  mtasktemplate_get(version:$version, subscribe: true) {
7
8
  ${fragments_1.mCommonFields}
@@ -10,29 +11,26 @@ exports.taskTemplates = `subscription taskTemplates($version: Int!) {
10
11
  groupIds
11
12
  name
12
13
  description
13
- createAccessRoles
14
- processingAccessRoles
15
- finishAccessRoles
16
- design
17
- fields {
18
- key
19
- label
20
- type
21
- required
22
- linkedStatus
23
- groupKey
24
- groupLabel
25
- listInfo
26
- options { key label }
27
- }
28
14
  statuses {
29
15
  key
30
16
  label
31
17
  color
32
18
  icon
33
- isTerminal
34
19
  isDefault
35
- allowedRoles
20
+ category
21
+ viewRoles
22
+ editRoles
23
+ alwaysShowInDetails
24
+ fields {
25
+ key
26
+ label
27
+ type
28
+ required
29
+ groupKey
30
+ groupLabel
31
+ listInfo
32
+ options { key label }
33
+ }
36
34
  }
37
35
  deleted
38
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taskTemplates.js","sourceRoot":"","sources":["../../../src/definitions/subscriptions/taskTemplates.ts"],"names":[],"mappings":";;;AAAA,4CAA0D;AAE7C,QAAA,aAAa,GAAG;;UAEnB,yBAAa;;cAET,wBAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BxB,CAAA"}
1
+ {"version":3,"file":"taskTemplates.js","sourceRoot":"","sources":["../../../src/definitions/subscriptions/taskTemplates.ts"],"names":[],"mappings":";;;AAAA,4CAA0D;AAE1D,qGAAqG;AACxF,QAAA,aAAa,GAAG;;UAEnB,yBAAa;;cAET,wBAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BxB,CAAA"}
@@ -2515,29 +2515,26 @@ var taskTemplates = `subscription taskTemplates($version: Int!) {
2515
2515
  groupIds
2516
2516
  name
2517
2517
  description
2518
- createAccessRoles
2519
- processingAccessRoles
2520
- finishAccessRoles
2521
- design
2522
- fields {
2523
- key
2524
- label
2525
- type
2526
- required
2527
- linkedStatus
2528
- groupKey
2529
- groupLabel
2530
- listInfo
2531
- options { key label }
2532
- }
2533
2518
  statuses {
2534
2519
  key
2535
2520
  label
2536
2521
  color
2537
2522
  icon
2538
- isTerminal
2539
2523
  isDefault
2540
- allowedRoles
2524
+ category
2525
+ viewRoles
2526
+ editRoles
2527
+ alwaysShowInDetails
2528
+ fields {
2529
+ key
2530
+ label
2531
+ type
2532
+ required
2533
+ groupKey
2534
+ groupLabel
2535
+ listInfo
2536
+ options { key label }
2537
+ }
2541
2538
  }
2542
2539
  deleted
2543
2540
  }
@@ -2951,7 +2948,7 @@ var MirrorAnnotations = {
2951
2948
  },
2952
2949
  tasks: {
2953
2950
  title: "Tasks",
2954
- description: "This is a MIRROR from a core server, so every row is the LATEST known value, not history. Historic values live in the log API, where a row is there precisely because something newer replaced it. Work items. A task may be attached to a reference through `targetReferenceId`, or stand alone with none. `status` carries where it has reached, and `fieldValues` holds whatever the template defined. ",
2951
+ description: "This is a MIRROR from a core server, so every row is the LATEST known value, not history. Historic values live in the log API, where a row is there precisely because something newer replaced it. Work items. A task may be attached to a reference through `targetReferenceId`, or stand alone with none. `status` carries where it has reached, and `fieldValues` holds whatever the template defined. Only tasks the signed-in user may see are present: `accessRoles` are the view roles of the current status. ",
2955
2952
  useWhen: "Asked what work is outstanding, what has been done, or what is booked against a particular piece of equipment. ",
2956
2953
  audience: "ai",
2957
2954
  reviewed: true,
@@ -2960,11 +2957,11 @@ var MirrorAnnotations = {
2960
2957
  },
2961
2958
  taskTemplates: {
2962
2959
  title: "Task templates",
2963
- description: "This is a MIRROR from a core server, so every row is the LATEST known value, not history. Historic values live in the log API, where a row is there precisely because something newer replaced it. Definitions that tasks are created from, including the business rules governing how and by whom they may be created, processed and finished. `fields` and `statuses` define the shape and lifecycle that tasks then follow. ",
2960
+ description: "This is a MIRROR from a core server, so every row is the LATEST known value, not history. Historic values live in the log API, where a row is there precisely because something newer replaced it. Definitions that tasks are created from. `statuses` is the lifecycle in presentation order; the first is the default status every task starts in. Each status carries its own `fields`, a `category` (CREATED, PROCESSING or CLOSED, for lists only), `viewRoles` (who sees tasks in that status; empty = everyone) and `editRoles` (who may put a task in that status and fill in its fields). ",
2964
2961
  useWhen: "Asked what KINDS of task exist, or why a task has particular fields or statuses. For the actual work items, use Tasks. ",
2965
2962
  audience: "ai",
2966
2963
  reviewed: true,
2967
- summaryFields: ["id", "name", "description", "fields", "statuses", "deleted"],
2964
+ summaryFields: ["id", "name", "description", "statuses", "deleted"],
2968
2965
  cardinality: "small"
2969
2966
  },
2970
2967
  trips: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/MirrorSync.ts","../src/DelegateMap.ts","../node_modules/graphql-ws/dist/common-CGW11Fyb.js","../node_modules/graphql-ws/dist/client.js","../src/SubscriptionClient.ts","../src/definitions/fragments.ts","../src/definitions/subscriptions/references.ts","../src/definitions/subscriptions/trackers.ts","../src/definitions/subscriptions/groups.ts","../src/definitions/subscriptions/servicePlans.ts","../src/definitions/subscriptions/trackerLinks.ts","../src/definitions/subscriptions/referenceLinks.ts","../src/definitions/subscriptions/lostTransmitters.ts","../src/definitions/subscriptions/reports.ts","../src/definitions/subscriptions/savedroutes.ts","../src/definitions/subscriptions/jobs.ts","../src/definitions/subscriptions/cycles.ts","../src/definitions/subscriptions/meshDiagnostics.ts","../src/definitions/subscriptions/gps.ts","../src/definitions/subscriptions/linkconnected.ts","../src/definitions/subscriptions/connected.ts","../src/definitions/subscriptions/voltage.ts","../src/definitions/subscriptions/internalvoltage.ts","../src/definitions/subscriptions/unplug.ts","../src/definitions/subscriptions/alarm.ts","../src/definitions/subscriptions/temperature.ts","../src/definitions/subscriptions/temperaturedecimal.ts","../src/definitions/subscriptions/humiditydecimal.ts","../src/definitions/subscriptions/meshscanner.ts","../src/definitions/subscriptions/meshdisconnectslasthour.ts","../src/definitions/subscriptions/activecounter.ts","../src/definitions/subscriptions/workseconds.ts","../src/definitions/subscriptions/calculatedodometer.ts","../src/definitions/subscriptions/batterypercent.ts","../src/definitions/subscriptions/workignition.ts","../src/definitions/subscriptions/tripignition.ts","../src/definitions/subscriptions/activecycles.ts","../src/definitions/subscriptions/activesteps.ts","../src/definitions/subscriptions/referenceGeoLinks.ts","../src/definitions/subscriptions/trips.ts","../src/definitions/subscriptions/tasks.ts","../src/definitions/subscriptions/taskTemplates.ts","../src/definitions/opsubscriptions/contained.ts","../src/definitions/opsubscriptions/lostposition.ts","../src/definitions/opsubscriptions/stateLinks.ts","../src/definitions/opsubscriptions/stateRefLinks.ts","../src/definitions/opsubscriptions/trips.ts","../src/definitions/requiredMirrors/systemSettings.ts","../src/definitions/requiredMirrors/settings.ts","../src/definitions/requiredMirrors/roles.ts","../src/definitions/tempSubscriptions/index.ts","../src/definitions/messagesubscriptions/messages.ts","../src/definitions/mirrors.ts","../src/definitions/annotations.ts"],"sourcesContent":["import { MirrorSync } from \"./MirrorSync\";\nimport { ReadonlyMapView, DelegatingObject, DelegatingMap } from \"./DelegateMap\";\nimport SubscriptionClient from \"./SubscriptionClient\";\nimport { Subscriptions } from \"./definitions/mirrors\";\n\nexport { SubscriptionClient, MirrorSync, DelegatingObject };\n// Also expose the curated/fragmented subscription collections\nexport { OpSubscriptions, Subscriptions, RequiredMirrors, TempSubscriptions, MessageSubscriptions } from './definitions/mirrors';\n// Semantic annotations for the predefined mirrors. The Record type in that\n// module is the build gate: a new mirror without an annotation will not compile.\nexport { MirrorAnnotations, exposedMirrors, draftMirrors } from './definitions/annotations';\nexport type { MirrorAnnotation, MirrorAudience, MirrorCardinality } from './definitions/annotations';\nexport type { MirrorDeletedMatcher, MirrorDeletedPayload, MirrorUpdatedMatcher, MirrorUpdatedPayload, MirrorWaitOptions } from './MirrorSync';\nexport type { ReadonlyMapView };\n\nexport class Connection<T extends MirrorSync> extends SubscriptionClient {\n public Mirrors: Map<string, T> = new Map();\n constructor() {\n super();\n }\n InitConnection(url: string, connectionParams: () => Promise<Record<string, unknown> | Record<string, unknown>>) {\n this.InitClient({\n url: url,\n connectionParams: connectionParams\n });\n }\n\n registerMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): T {\n let entry = this.Mirrors.get(name);\n if (!entry) {\n const sync = this.createMirror(name, subscription, baseVariables);\n const forward = (event: string, payload: any) => {\n this.emit(`mirror:${event}`, { mirrorName: name, ...payload });\n };\n const handlers: Array<[string, (...args: any[]) => void]> = [\n ['start', (p) => forward('start', p)],\n ['updated', (p) => forward('updated', p)],\n ['deleted', (p) => forward('deleted', p)],\n ['done', (p) => forward('done', p)],\n ['versionError', (p) => forward('versionError', p)],\n ['resubscribe', (p) => forward('resubscribe', p)],\n ['error', (p) => forward('error', p)],\n ];\n handlers.forEach(([e, h]) => sync.on(e as any, h)); \n this.Mirrors.set(name, sync);\n entry = sync;\n this.emit('mirror:registered', entry);\n }\n return entry;\n }\n async getMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): Promise<ReadonlyMapView<string, any>> {\n let entry = this.registerMirror(name, subscription, baseVariables);\n await entry.load();\n return new DelegatingMap(() => entry!.Storage);\n } \n createMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): T {\n return new MirrorSync(this, { subscription, baseVariables }) as T;\n }\n async getPredefinedMirror(name: string): Promise<ReadonlyMapView<string, any>> {\n let subscription = Subscriptions[name as keyof typeof Subscriptions];\n if (!subscription) throw new Error(`No predefined mirror with name '${name}'`);\n let baseVariables: Record<string, unknown> = {}; \n return this.getMirror(name, subscription, baseVariables);\n }\n\n removeMirror(name: string): void {\n const entry = this.Mirrors.get(name);\n if (!entry) return;\n entry.removeAllListeners();\n entry.stop();\n this.Mirrors.delete(name);\n this.emit('mirror:removed', { mirrorName: name });\n }\n\n clearMirrors(): void {\n for (const name of Array.from(this.Mirrors.keys())) {\n this.removeMirror(name);\n }\n this.emit('mirror:cleared');\n }\n}\n","import { DelegatingMap, ReadonlyMapView } from './DelegateMap';\nimport { SubscriptionClient } from './SubscriptionClient';\nimport EventEmitter from 'eventemitter3';\n\n// SyncType enum as described\nexport enum SyncType {\n DELETED = 'DELETED',\n UPDATED = 'UPDATED',\n START = 'START',\n DONE = 'DONE',\n VERSION_ERROR = 'VERSION_ERROR',\n}\n\n// Shape of the subscription payload (generic)\nexport interface CacheSyncResult {\n type: SyncType;\n total?: number | null;\n deleteId?: string; // ObjectId as string\n data?: any;\n deleteVersion?: number;\n // Optional operation-based versioning (string) for hybrid mode\n deleteOpVersion?: string;\n opVersion?: string; // May appear on items inside data\n}\n\nexport interface MirrorSyncOptions {\n /** Subscription document (query string) */\n subscription: string;\n /** Optional logger */\n /** Custom variables base (besides version) */\n baseVariables?: Record<string, unknown>;\n}\n\nexport interface MirrorStats {\n version: number; // numeric version cursor\n opVersion?: string | null; // operation (ObjectId) cursor\n size: number;\n fullSyncInProgress: boolean;\n totalHint?: number | null;\n}\n\nexport interface MirrorSyncEvents {\n start: (payload: { full: boolean }) => void;\n updated: (payload: { doc: MirrorItem; orgDoc: MirrorItem | undefined; full: boolean }) => void;\n deleted: (payload: { orgDoc: MirrorItem }) => void;\n done: (payload: { full: boolean }) => void;\n versionError: (payload: { currentVersion: number }) => void;\n resubscribe: (payload: { fromVersion: number }) => void;\n error?: (errors: any) => void;\n}\n\n\nexport interface MirrorItem { id: string; version?: number; opVersion?: string;[k: string]: any, deleted?: boolean; }\nexport interface MirrorUpdatedPayload { doc: MirrorItem; orgDoc: MirrorItem | undefined; full: boolean; }\nexport interface MirrorDeletedPayload { orgDoc: MirrorItem; }\nexport interface MirrorWaitOptions { timeoutMs?: number; }\nexport type MirrorUpdatedMatcher = string | ((payload: MirrorUpdatedPayload) => boolean);\nexport type MirrorDeletedMatcher = string | ((payload: MirrorDeletedPayload) => boolean);\n\n/**\n * MirrorSync maintains an in-memory mirror of server state based on CacheSyncResult messages.\n * Generic TBase is the item shape (must include id & version).\n */\nexport class MirrorSync extends EventEmitter {\n private client: SubscriptionClient;\n private options: MirrorSyncOptions;\n private _mirror = new Map<string, MirrorItem>();\n private get mirror() { return this._mirror; } \n private buffer: Map<string, MirrorItem> | null = null; // used during full/resubscription phase\n private currentVersion = -1; // numeric cursor (-1 => full sync needed)\n private currentOpVersion: string | null = null; // op cursor (null => full sync needed)\n private unsub: (() => void) | null = null;\n private fullSyncPhase = false; // only true during START..DONE when initiating from version -1\n private log?: (msg: string, meta?: any) => void;\n /** Deferred promise resolved on first DONE after a (re)start full sync cycle. Reset on constructor, start(), and VERSION_ERROR re-init. */\n public loaded!: Promise<ReadonlyMapView<string, any>>; // set via resetLoaded()\n private resolveLoaded?: (ref: ReadonlyMapView<string, any>) => void;\n // Stored client event handlers to allow proper detachment\n private __onReconnected?: () => void;\n private __onConnected?: () => void;\n private backlog: (() => void)[] = [];\n\n get Storage(): ReadonlyMapView<string, any> { return this.mirror; }\n get version(): number { return this.currentVersion; } \n get opVersion(): string | null { return this.currentOpVersion; }\n\n constructor(client: SubscriptionClient, options: MirrorSyncOptions & { log?: (msg: string, meta?: any) => void }) {\n super();\n this.client = client;\n this.options = options;\n this.log = options.log;\n this.attachClientEvents();\n this.resetLoaded();\n }\n\n private l(msg: string, meta?: any) { if (this.log) this.log(msg, meta); }\n\n private attachClientEvents() {\n if (!this.__onReconnected) {\n this.__onReconnected = () => {\n this.emit('resubscribe', { fromVersion: this.currentVersion });\n this.resubscribe();\n };\n this.client.on('reconnected', this.__onReconnected);\n }\n if (!this.__onConnected) {\n this.__onConnected = () => {\n if ((this.currentVersion === -1 || this.currentOpVersion === null) && !this.unsub) {\n this.l('initial connected subscribe', { version: this.currentVersion, opVersion: this.currentOpVersion });\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\n }\n };\n this.client.on('connected', this.__onConnected);\n }\n }\n\n private detachClientEvents() {\n if (this.__onReconnected) {\n this.client.off('reconnected', this.__onReconnected);\n this.__onReconnected = undefined;\n }\n if (this.__onConnected) {\n this.client.off('connected', this.__onConnected);\n this.__onConnected = undefined;\n }\n }\n\n private targetMap(): Map<string, MirrorItem> { return (this.fullSyncPhase && this.buffer) ? this.buffer! : this.mirror; }\n private advanceNumeric(v?: number) { if (typeof v === 'number' && v > this.currentVersion) this.currentVersion = v; }\n private advanceOp(v?: string) { if (v && (!this.currentOpVersion || v > this.currentOpVersion)) this.currentOpVersion = v; }\n\n private subscribeInternal(version: number, opVersion: string | null) {\n if (!this.client) throw new Error('SubscriptionClient missing');\n if (this.unsub) { this.unsub(); this.unsub = null; }\n const variables = { version, opVersion, ...(this.options.baseVariables || {}) };\n this.l('subscribe', { version, opVersion });\n this.unsub = this.client.clientsubscribe<{ [k: string]: CacheSyncResult }>(\n { query: this.options.subscription, variables },\n {\n next: (envelope: { data?: { [k: string]: CacheSyncResult }; errors?: any }) => {\n try {\n if (envelope.errors) {\n this.l('graphql errors', envelope.errors);\n this.emit('error', envelope.errors);\n }\n const payload = envelope.data as { [k: string]: CacheSyncResult } | undefined;\n if (payload) this.handlePayload(payload);\n } catch (err) {\n this.l('unhandled error in next handler', err);\n this.emit('error', err);\n throw err; // rethrow to ensure proper upstream handling (e.g. subscription teardown if needed)\n }\n },\n error: (err: unknown) => {\n this.l('subscription error', err);\n this.emit('error', err);\n },\n complete: () => this.l('subscription complete'),\n }\n );\n }\n\n private resubscribe() {\n // Resubscribe starting from current cursors\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\n }\n\n private start() {\n this.attachClientEvents();\n if (!this.client.isConnected()) { this.l('start deferred (not connected)'); return; }\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\n }\n\n load(): Promise<ReadonlyMapView<string, any>> {\n if (!this.unsub) this.start();\n return this.loaded;\n }\n\n waitForUpdated(matcher: MirrorUpdatedMatcher, options?: MirrorWaitOptions): Promise<MirrorUpdatedPayload> {\n return this.waitForMirrorEvent('updated', matcher, options);\n }\n\n waitForDeleted(matcher: MirrorDeletedMatcher, options?: MirrorWaitOptions): Promise<MirrorDeletedPayload> {\n return this.waitForMirrorEvent('deleted', matcher, options);\n }\n\n private waitForMirrorEvent<TPayload extends MirrorUpdatedPayload | MirrorDeletedPayload>(\n event: 'updated' | 'deleted',\n matcher: string | ((payload: TPayload) => boolean),\n options?: MirrorWaitOptions\n ): Promise<TPayload> {\n const timeoutMs = options?.timeoutMs ?? 120_000;\n return new Promise<TPayload>((resolve, reject) => {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const cleanup = () => {\n this.off(event, handler as any);\n if (timeout) clearTimeout(timeout);\n };\n const handler = (payload: TPayload) => {\n if (!this.matchesMirrorEvent(event, matcher, payload)) return;\n cleanup();\n resolve(payload);\n };\n this.on(event, handler as any);\n if (timeoutMs > 0) {\n timeout = setTimeout(() => {\n cleanup();\n reject(new Error(`Timeout waiting for mirror ${event} event`));\n }, timeoutMs);\n }\n });\n }\n\n private matchesMirrorEvent<TPayload extends MirrorUpdatedPayload | MirrorDeletedPayload>(\n event: 'updated' | 'deleted',\n matcher: string | ((payload: TPayload) => boolean),\n payload: TPayload\n ): boolean {\n if (typeof matcher === 'function') return matcher(payload);\n return event === 'updated'\n ? (payload as MirrorUpdatedPayload).doc.id === matcher\n : (payload as MirrorDeletedPayload).orgDoc.id === matcher;\n }\n\n private resetLoaded() {\n this.loaded = new Promise<ReadonlyMapView<string, any>>(resolve => {\n this.resolveLoaded = resolve;\n });\n }\n\n private handlePayload(raw: { [k: string]: CacheSyncResult } | undefined) {\n if (!raw) return;\n // Always pick the first field in the payload object regardless of configured rootField\n const firstKey = Object.keys(raw)[0];\n if (!firstKey) return;\n const msg = raw[firstKey];\n if (!msg) return;\n const { type } = msg;\n switch (type) {\n case SyncType.START: {\n // Only allocate a new buffer for a true full sync; for delta/resubscribe we append directly\n this.buffer = this.fullSyncPhase ? new Map() : null;\n const payload = { full: this.fullSyncPhase };\n this.emit('start', payload);\n break;\n }\n case SyncType.UPDATED:\n this.applyUpdated(msg.data);\n break;\n case SyncType.DELETED:\n this.applyDeleted(msg.deleteId, msg.deleteVersion, msg.deleteOpVersion);\n break;\n case SyncType.DONE: {\n const wasFull = this.fullSyncPhase;\n if (wasFull && this.buffer) {\n this._mirror = this.buffer;\n this.buffer = null;\n }\n this.fullSyncPhase = false;\n const d = { full: wasFull };\n if (wasFull) {\n for (const b of this.backlog) b();\n this.backlog = [];\n }\n this.emit('done', d);\n // Resolve deferred if pending\n if (this.resolveLoaded) {\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.mirror);\n }\n break;\n }\n case SyncType.VERSION_ERROR:\n this.handleVersionError();\n break;\n }\n }\n private handleVersionError() {\n const ve = { currentVersion: this.currentVersion };\n // restart as full sync\n this.currentVersion = -1;\n this.currentOpVersion = null;\n this.buffer = new Map();\n this.fullSyncPhase = true;\n this.resetLoaded();\n setTimeout(() => \n {\n this.emit('versionError', ve);\n this.subscribeInternal(this.currentVersion, this.currentOpVersion)\n }, 0); // defer to allow event handlers to react before restart\n }\n\n private normalizeItems(data: any): MirrorItem[] {\n if (!data) return [];\n return Array.isArray(data) ? data : [data];\n }\n\n private applyUpdated(data: any) {\n for (const rawItem of this.normalizeItems(data)) {\n if (!rawItem || typeof rawItem.id !== 'string') continue;\n if (rawItem.deleted) {\n this.applyDeleted(rawItem.id, rawItem.version, rawItem.opVersion);\n continue;\n }\n let item = this.map(rawItem);\n if (!item) continue;\n const hasNumeric = typeof item.version === 'number';\n const hasOp = typeof item.opVersion === 'string';\n if (!hasNumeric && !hasOp) continue;\n const existing = this.targetMap().get(item.id);\n const newerNumeric = hasNumeric && (!existing?.version || item.version! >= existing.version);\n const newerOp = hasOp && (!existing?.opVersion || item.opVersion! >= existing.opVersion);\n if (!existing || newerNumeric || newerOp) {\n this.store(item.id, item);\n this.advanceNumeric(item.version);\n this.advanceOp(item.opVersion);\n if (this.fullSyncPhase) {\n this.backlog.push(() => this.emit('updated', { doc:item, orgDoc: existing, full: this.fullSyncPhase }));\n } else {\n this.emit('updated', { doc:item, orgDoc: existing, full: this.fullSyncPhase });\n }\n }\n }\n }\n private applyDeleted(id?: string, deleteVersion?: number, deleteOpVersion?: string) { \n if (!id || this.fullSyncPhase) return;\n const numericStale = !this.fullSyncPhase && typeof deleteVersion === 'number' && this.currentVersion >= 0 && deleteVersion < this.currentVersion;\n const opStale = !this.fullSyncPhase && deleteOpVersion && this.currentOpVersion && deleteOpVersion < this.currentOpVersion;\n if (numericStale && opStale) {\n this.l?.('skip stale delete', { id, deleteVersion, deleteOpVersion });\n return;\n }\n let toDelete = this.mirror.get(id); \n this.advanceNumeric(deleteVersion);\n this.advanceOp(deleteOpVersion);\n if (!this.fullSyncPhase && !!toDelete) {\n this.delete(id);\n this.emit('deleted', { orgDoc: toDelete });\n }\n }\n\n get(id: string): any | undefined { return this.mirror.get(id); }\n values(): any[] { return Array.from(this.mirror.values()); }\n stats(): MirrorStats { return { version: this.currentVersion, opVersion: this.currentOpVersion, size: this.mirror.size, fullSyncInProgress: this.fullSyncPhase }; }\n\n stop() {\n if (this.unsub) { this.unsub(); this.unsub = null; }\n this.detachClientEvents();\n this.currentVersion = -1;\n this.currentOpVersion = null;\n this.buffer = null;\n if (this.resolveLoaded) {\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.mirror);\n }\n this.resetLoaded();\n }\n map(doc: MirrorItem): MirrorItem { return doc; }\n set(key: string, value: any): void\n {\n let item = this.map(value);\n if (!item) return;\n\n this.targetMap().set(key, item); \n }\n store(key: string, value: any): void \n { \n this.set(key, value); \n }\n delete(key: string)\n { \n this.targetMap().delete(key); \n }\n overwrite(map: Map<string, any>): void \n { \n if (this.fullSyncPhase) {\n this.buffer = map\n } else {\n this._mirror = map;\n }\n }\n}\n","// Restored specialized read-only view interface (runtime enforced via absence of mutators)\nexport interface ReadonlyMapView<K, V> extends Iterable<[K, V]> {\n readonly size: number;\n get(key: K): V | undefined;\n has(key: K): boolean;\n entries(): IterableIterator<[K, V]>;\n keys(): IterableIterator<K>;\n values(): IterableIterator<V>;\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void;\n [Symbol.iterator](): IterableIterator<[K, V]>;\n}\n\nexport class DelegatingMap<K, V> implements ReadonlyMapView<K, V> {\n constructor(private readonly resolver: () => ReadonlyMapView<K, V>) { }\n private t(): ReadonlyMapView<K, V> { return this.resolver(); }\n get size(): number { return this.t().size; }\n get(key: K): V | undefined { return this.t().get(key); }\n has(key: K): boolean { return this.t().has(key); }\n entries(): IterableIterator<[K, V]> { return this.t().entries(); }\n keys(): IterableIterator<K> { return this.t().keys(); }\n values(): IterableIterator<V> { return this.t().values(); }\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void {\n this.t().forEach(((v: V, k: K) => callbackfn(v, k, this)) as any, thisArg);\n }\n [Symbol.iterator](): IterableIterator<[K, V]> { return this.t()[Symbol.iterator](); }\n}\n\n/**\n * Presents a ReadonlyMapView<K,V> as an immutable plain object via Proxy.\n * Optionally maps values through a mapper function on access.\n */\nexport class DelegatingObject<K extends string, V, R = V> {\n private readonly proxy: Record<K, R>;\n constructor(private readonly source: ReadonlyMapView<K, V>, private readonly mapFn?: (value: V, key: K) => R) {\n const mapper = (v: V, k: K): R => (this.mapFn ? this.mapFn(v, k) : (v as unknown as R));\n const handler: ProxyHandler<any> = {\n get: (_target, prop: PropertyKey, receiver) => {\n if (prop === Symbol.toStringTag) return 'Object';\n if (typeof prop !== 'string') return Reflect.get(Object.prototype, prop, receiver);\n const key = prop as K;\n const v = this.source.get(key);\n return v === undefined ? undefined : mapper(v, key);\n },\n set: () => false, // immutable\n has: (_target, prop: PropertyKey) => typeof prop === 'string' && this.source.has(prop as K),\n deleteProperty: () => false, // immutable\n ownKeys: () => Array.from(this.source.keys() as unknown as IterableIterator<string>),\n getOwnPropertyDescriptor: (_target, prop: PropertyKey) => {\n if (typeof prop === 'string' && this.source.has(prop as K)) {\n const key = prop as K;\n const v = this.source.get(key)!;\n return { configurable: true, enumerable: true, value: mapper(v, key) };\n }\n return undefined;\n },\n defineProperty: () => false, // immutable\n };\n this.proxy = new Proxy(Object.create(null), handler);\n }\n asObject(): Record<K, R> { return this.proxy; }\n}\n","function extendedTypeof(val) {\n if (val === null) {\n return \"null\";\n }\n if (Array.isArray(val)) {\n return \"array\";\n }\n return typeof val;\n}\nfunction isObject(val) {\n return extendedTypeof(val) === \"object\";\n}\nfunction isAsyncIterable(val) {\n return typeof Object(val)[Symbol.asyncIterator] === \"function\";\n}\nfunction isAsyncGenerator(val) {\n return isObject(val) && typeof Object(val)[Symbol.asyncIterator] === \"function\" && typeof val.return === \"function\";\n}\nfunction areGraphQLFormattedErrors(obj) {\n return Array.isArray(obj) && // must be at least one error\n obj.length > 0 && // error has at least a message\n obj.every((ob) => \"message\" in ob);\n}\nfunction limitCloseReason(reason, whenTooLong) {\n return reason.length < 124 ? reason : whenTooLong;\n}\n\nconst GRAPHQL_TRANSPORT_WS_PROTOCOL = \"graphql-transport-ws\";\nconst DEPRECATED_GRAPHQL_WS_PROTOCOL = \"graphql-ws\";\nvar CloseCode = /* @__PURE__ */ ((CloseCode2) => {\n CloseCode2[CloseCode2[\"InternalServerError\"] = 4500] = \"InternalServerError\";\n CloseCode2[CloseCode2[\"InternalClientError\"] = 4005] = \"InternalClientError\";\n CloseCode2[CloseCode2[\"BadRequest\"] = 4400] = \"BadRequest\";\n CloseCode2[CloseCode2[\"BadResponse\"] = 4004] = \"BadResponse\";\n CloseCode2[CloseCode2[\"Unauthorized\"] = 4401] = \"Unauthorized\";\n CloseCode2[CloseCode2[\"Forbidden\"] = 4403] = \"Forbidden\";\n CloseCode2[CloseCode2[\"SubprotocolNotAcceptable\"] = 4406] = \"SubprotocolNotAcceptable\";\n CloseCode2[CloseCode2[\"ConnectionInitialisationTimeout\"] = 4408] = \"ConnectionInitialisationTimeout\";\n CloseCode2[CloseCode2[\"ConnectionAcknowledgementTimeout\"] = 4504] = \"ConnectionAcknowledgementTimeout\";\n CloseCode2[CloseCode2[\"SubscriberAlreadyExists\"] = 4409] = \"SubscriberAlreadyExists\";\n CloseCode2[CloseCode2[\"TooManyInitialisationRequests\"] = 4429] = \"TooManyInitialisationRequests\";\n return CloseCode2;\n})(CloseCode || {});\nvar MessageType = /* @__PURE__ */ ((MessageType2) => {\n MessageType2[\"ConnectionInit\"] = \"connection_init\";\n MessageType2[\"ConnectionAck\"] = \"connection_ack\";\n MessageType2[\"Ping\"] = \"ping\";\n MessageType2[\"Pong\"] = \"pong\";\n MessageType2[\"Subscribe\"] = \"subscribe\";\n MessageType2[\"Next\"] = \"next\";\n MessageType2[\"Error\"] = \"error\";\n MessageType2[\"Complete\"] = \"complete\";\n return MessageType2;\n})(MessageType || {});\nfunction validateMessage(val) {\n if (!isObject(val)) {\n throw new Error(\n `Message is expected to be an object, but got ${extendedTypeof(val)}`\n );\n }\n if (!val.type) {\n throw new Error(`Message is missing the 'type' property`);\n }\n if (typeof val.type !== \"string\") {\n throw new Error(\n `Message is expects the 'type' property to be a string, but got ${extendedTypeof(\n val.type\n )}`\n );\n }\n switch (val.type) {\n case \"connection_init\" /* ConnectionInit */:\n case \"connection_ack\" /* ConnectionAck */:\n case \"ping\" /* Ping */:\n case \"pong\" /* Pong */: {\n if (val.payload != null && !isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object or nullish or missing, but got \"${val.payload}\"`\n );\n }\n break;\n }\n case \"subscribe\" /* Subscribe */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n if (typeof val.payload.query !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'query' property to be a string, but got ${extendedTypeof(\n val.payload.query\n )}`\n );\n }\n if (val.payload.variables != null && !isObject(val.payload.variables)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'variables' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.variables\n )}`\n );\n }\n if (val.payload.operationName != null && extendedTypeof(val.payload.operationName) !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'operationName' property to be a string or nullish or missing, but got ${extendedTypeof(\n val.payload.operationName\n )}`\n );\n }\n if (val.payload.extensions != null && !isObject(val.payload.extensions)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'extensions' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.extensions\n )}`\n );\n }\n break;\n }\n case \"next\" /* Next */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"error\" /* Error */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!areGraphQLFormattedErrors(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an array of GraphQL errors, but got ${JSON.stringify(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"complete\" /* Complete */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n break;\n }\n default:\n throw new Error(`Invalid message 'type' property \"${val.type}\"`);\n }\n return val;\n}\nfunction parseMessage(data, reviver) {\n return validateMessage(\n typeof data === \"string\" ? JSON.parse(data, reviver) : data\n );\n}\nfunction stringifyMessage(msg, replacer) {\n validateMessage(msg);\n return JSON.stringify(msg, replacer);\n}\n\nexport { CloseCode as C, DEPRECATED_GRAPHQL_WS_PROTOCOL as D, GRAPHQL_TRANSPORT_WS_PROTOCOL as G, MessageType as M, isAsyncGenerator as a, isAsyncIterable as b, isObject as i, limitCloseReason as l, parseMessage as p, stringifyMessage as s, validateMessage as v };\n","import { i as isObject, G as GRAPHQL_TRANSPORT_WS_PROTOCOL, s as stringifyMessage, M as MessageType, C as CloseCode, l as limitCloseReason, p as parseMessage } from './common-CGW11Fyb.js';\nexport { D as DEPRECATED_GRAPHQL_WS_PROTOCOL, v as validateMessage } from './common-CGW11Fyb.js';\n\nfunction createClient(options) {\n const {\n url,\n connectionParams,\n lazy = true,\n onNonLazyError = console.error,\n lazyCloseTimeout: lazyCloseTimeoutMs = 0,\n keepAlive = 0,\n disablePong,\n connectionAckWaitTimeout = 0,\n retryAttempts = 5,\n retryWait = async function randomisedExponentialBackoff(retries2) {\n const retryDelaySeconds = Math.pow(2, retries2);\n await new Promise(\n (resolve) => setTimeout(\n resolve,\n retryDelaySeconds * 1e3 + // add random timeout from 300ms to 3s\n Math.floor(Math.random() * (3e3 - 300) + 300)\n )\n );\n },\n shouldRetry = isLikeCloseEvent,\n on,\n webSocketImpl,\n /**\n * Generates a v4 UUID to be used as the ID using `Math`\n * as the random number generator. Supply your own generator\n * in case you need more uniqueness.\n *\n * Reference: https://gist.github.com/jed/982883\n */\n generateID = function generateUUID() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0, v = c == \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n },\n jsonMessageReplacer: replacer,\n jsonMessageReviver: reviver\n } = options;\n let ws;\n if (webSocketImpl) {\n if (!isWebSocket(webSocketImpl)) {\n throw new Error(\"Invalid WebSocket implementation provided\");\n }\n ws = webSocketImpl;\n } else if (typeof WebSocket !== \"undefined\") {\n ws = WebSocket;\n } else if (typeof global !== \"undefined\") {\n ws = global.WebSocket || // @ts-expect-error: Support more browsers\n global.MozWebSocket;\n } else if (typeof window !== \"undefined\") {\n ws = window.WebSocket || // @ts-expect-error: Support more browsers\n window.MozWebSocket;\n }\n if (!ws)\n throw new Error(\n \"WebSocket implementation missing; on Node you can `import WebSocket from 'ws';` and pass `webSocketImpl: WebSocket` to `createClient`\"\n );\n const WebSocketImpl = ws;\n const emitter = (() => {\n const message = /* @__PURE__ */ (() => {\n const listeners2 = {};\n return {\n on(id, listener) {\n listeners2[id] = listener;\n return () => {\n delete listeners2[id];\n };\n },\n emit(message2) {\n if (\"id\" in message2) listeners2[message2.id]?.(message2);\n }\n };\n })();\n const listeners = {\n connecting: on?.connecting ? [on.connecting] : [],\n opened: on?.opened ? [on.opened] : [],\n connected: on?.connected ? [on.connected] : [],\n ping: on?.ping ? [on.ping] : [],\n pong: on?.pong ? [on.pong] : [],\n message: on?.message ? [message.emit, on.message] : [message.emit],\n closed: on?.closed ? [on.closed] : [],\n error: on?.error ? [on.error] : []\n };\n return {\n onMessage: message.on,\n on(event, listener) {\n const l = listeners[event];\n l.push(listener);\n return () => {\n l.splice(l.indexOf(listener), 1);\n };\n },\n emit(event, ...args) {\n for (const listener of [...listeners[event]]) {\n listener(...args);\n }\n }\n };\n })();\n function errorOrClosed(cb) {\n const listening = [\n // errors are fatal and more critical than close events, throw them first\n emitter.on(\"error\", (err) => {\n listening.forEach((unlisten) => unlisten());\n cb(err);\n }),\n // closes can be graceful and not fatal, throw them second (if error didnt throw)\n emitter.on(\"closed\", (event) => {\n listening.forEach((unlisten) => unlisten());\n cb(event);\n })\n ];\n }\n let connecting, locks = 0, lazyCloseTimeout, retrying = false, retries = 0, disposed = false;\n async function connect() {\n clearTimeout(lazyCloseTimeout);\n const [socket, throwOnClose] = await (connecting ?? (connecting = new Promise(\n (connected, denied) => (async () => {\n if (retrying) {\n await retryWait(retries);\n if (!locks) {\n connecting = void 0;\n return denied({ code: 1e3, reason: \"All Subscriptions Gone\" });\n }\n retries++;\n }\n emitter.emit(\"connecting\", retrying);\n const socket2 = new WebSocketImpl(\n typeof url === \"function\" ? await url() : url,\n GRAPHQL_TRANSPORT_WS_PROTOCOL\n );\n let connectionAckTimeout, queuedPing;\n function enqueuePing() {\n if (isFinite(keepAlive) && keepAlive > 0) {\n clearTimeout(queuedPing);\n queuedPing = setTimeout(() => {\n if (socket2.readyState === WebSocketImpl.OPEN) {\n socket2.send(stringifyMessage({ type: MessageType.Ping }));\n emitter.emit(\"ping\", false, void 0);\n }\n }, keepAlive);\n }\n }\n errorOrClosed((errOrEvent) => {\n connecting = void 0;\n clearTimeout(connectionAckTimeout);\n clearTimeout(queuedPing);\n denied(errOrEvent);\n if (errOrEvent instanceof TerminatedCloseEvent) {\n socket2.close(4499, \"Terminated\");\n socket2.onerror = null;\n socket2.onclose = null;\n }\n });\n socket2.onerror = (err) => emitter.emit(\"error\", err);\n socket2.onclose = (event) => emitter.emit(\"closed\", event);\n socket2.onopen = async () => {\n try {\n emitter.emit(\"opened\", socket2);\n const payload = typeof connectionParams === \"function\" ? await connectionParams() : connectionParams;\n if (socket2.readyState !== WebSocketImpl.OPEN) return;\n socket2.send(\n stringifyMessage(\n payload ? {\n type: MessageType.ConnectionInit,\n payload\n } : {\n type: MessageType.ConnectionInit\n // payload is completely absent if not provided\n },\n replacer\n )\n );\n if (isFinite(connectionAckWaitTimeout) && connectionAckWaitTimeout > 0) {\n connectionAckTimeout = setTimeout(() => {\n socket2.close(\n CloseCode.ConnectionAcknowledgementTimeout,\n \"Connection acknowledgement timeout\"\n );\n }, connectionAckWaitTimeout);\n }\n enqueuePing();\n } catch (err) {\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.InternalClientError,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Internal client error\"\n )\n );\n }\n };\n let acknowledged = false;\n socket2.onmessage = ({ data }) => {\n try {\n const message = parseMessage(data, reviver);\n emitter.emit(\"message\", message);\n if (message.type === \"ping\" || message.type === \"pong\") {\n emitter.emit(message.type, true, message.payload);\n if (message.type === \"pong\") {\n enqueuePing();\n } else if (!disablePong) {\n socket2.send(\n stringifyMessage(\n message.payload ? {\n type: MessageType.Pong,\n payload: message.payload\n } : {\n type: MessageType.Pong\n // payload is completely absent if not provided\n }\n )\n );\n emitter.emit(\"pong\", false, message.payload);\n }\n return;\n }\n if (acknowledged) return;\n if (message.type !== MessageType.ConnectionAck)\n throw new Error(\n `First message cannot be of type ${message.type}`\n );\n clearTimeout(connectionAckTimeout);\n acknowledged = true;\n emitter.emit(\"connected\", socket2, message.payload, retrying);\n retrying = false;\n retries = 0;\n connected([\n socket2,\n new Promise((_, reject) => errorOrClosed(reject))\n ]);\n } catch (err) {\n socket2.onmessage = null;\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.BadResponse,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Bad response\"\n )\n );\n }\n };\n })()\n )));\n if (socket.readyState === WebSocketImpl.CLOSING) await throwOnClose;\n let release = () => {\n };\n const released = new Promise((resolve) => release = resolve);\n return [\n socket,\n release,\n Promise.race([\n // wait for\n released.then(() => {\n if (!locks) {\n const complete = () => socket.close(1e3, \"Normal Closure\");\n if (isFinite(lazyCloseTimeoutMs) && lazyCloseTimeoutMs > 0) {\n lazyCloseTimeout = setTimeout(() => {\n if (socket.readyState === WebSocketImpl.OPEN) complete();\n }, lazyCloseTimeoutMs);\n } else {\n complete();\n }\n }\n }),\n // or\n throwOnClose\n ])\n ];\n }\n function shouldRetryConnectOrThrow(errOrCloseEvent) {\n if (isLikeCloseEvent(errOrCloseEvent) && (isFatalInternalCloseCode(errOrCloseEvent.code) || [\n CloseCode.InternalServerError,\n CloseCode.InternalClientError,\n CloseCode.BadRequest,\n CloseCode.BadResponse,\n CloseCode.Unauthorized,\n // CloseCode.Forbidden, might grant access out after retry\n CloseCode.SubprotocolNotAcceptable,\n // CloseCode.ConnectionInitialisationTimeout, might not time out after retry\n // CloseCode.ConnectionAcknowledgementTimeout, might not time out after retry\n CloseCode.SubscriberAlreadyExists,\n CloseCode.TooManyInitialisationRequests\n // 4499, // Terminated, probably because the socket froze, we want to retry\n ].includes(errOrCloseEvent.code)))\n throw errOrCloseEvent;\n if (disposed) return false;\n if (isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1e3)\n return locks > 0;\n if (!retryAttempts || retries >= retryAttempts) throw errOrCloseEvent;\n if (!shouldRetry(errOrCloseEvent)) throw errOrCloseEvent;\n return retrying = true;\n }\n if (!lazy) {\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [, , throwOnClose] = await connect();\n await throwOnClose;\n } catch (errOrCloseEvent) {\n try {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n } catch (errOrCloseEvent2) {\n return onNonLazyError?.(errOrCloseEvent2);\n }\n }\n }\n })();\n }\n function subscribe(payload, sink) {\n const id = generateID(payload);\n let done = false, errored = false, releaser = () => {\n locks--;\n done = true;\n };\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [socket, release, waitForReleaseOrThrowOnClose] = await connect();\n if (done) return release();\n const unlisten = emitter.onMessage(id, (message) => {\n switch (message.type) {\n case MessageType.Next: {\n sink.next(message.payload);\n return;\n }\n case MessageType.Error: {\n errored = true, done = true;\n sink.error(message.payload);\n releaser();\n return;\n }\n case MessageType.Complete: {\n done = true;\n releaser();\n return;\n }\n }\n });\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Subscribe,\n payload\n },\n replacer\n )\n );\n releaser = () => {\n if (!done && socket.readyState === WebSocketImpl.OPEN)\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Complete\n },\n replacer\n )\n );\n locks--;\n done = true;\n release();\n };\n await waitForReleaseOrThrowOnClose.finally(unlisten);\n return;\n } catch (errOrCloseEvent) {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n }\n }\n })().then(() => {\n if (!errored) sink.complete();\n }).catch((err) => {\n sink.error(err);\n });\n return () => {\n if (!done) releaser();\n };\n }\n return {\n on: emitter.on,\n subscribe,\n iterate(request) {\n const pending = [];\n const deferred = {\n done: false,\n error: null,\n resolve: () => {\n }\n };\n const dispose = subscribe(request, {\n next(val) {\n pending.push(val);\n deferred.resolve();\n },\n error(err) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n },\n complete() {\n deferred.done = true;\n deferred.resolve();\n }\n });\n const iterator = async function* iterator2() {\n for (; ; ) {\n if (!pending.length) {\n await new Promise((resolve) => deferred.resolve = resolve);\n }\n while (pending.length) {\n yield pending.shift();\n }\n if (deferred.error) {\n throw deferred.error;\n }\n if (deferred.done) {\n return;\n }\n }\n }();\n iterator.throw = async (err) => {\n if (!deferred.done) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n }\n return { done: true, value: void 0 };\n };\n iterator.return = async () => {\n dispose();\n return { done: true, value: void 0 };\n };\n return iterator;\n },\n async dispose() {\n disposed = true;\n if (connecting) {\n const [socket] = await connecting;\n socket.close(1e3, \"Normal Closure\");\n }\n },\n terminate() {\n if (connecting) {\n emitter.emit(\"closed\", new TerminatedCloseEvent());\n }\n }\n };\n}\nclass TerminatedCloseEvent extends Error {\n name = \"TerminatedCloseEvent\";\n message = \"4499: Terminated\";\n code = 4499;\n reason = \"Terminated\";\n wasClean = false;\n}\nfunction isLikeCloseEvent(val) {\n return isObject(val) && \"code\" in val && \"reason\" in val;\n}\nfunction isFatalInternalCloseCode(code) {\n if ([\n 1e3,\n // Normal Closure is not an erroneous close code\n 1001,\n // Going Away\n 1006,\n // Abnormal Closure\n 1005,\n // No Status Received\n 1012,\n // Service Restart\n 1013,\n // Try Again Later\n 1014\n // Bad Gateway\n ].includes(code))\n return false;\n return code >= 1e3 && code <= 1999;\n}\nfunction isWebSocket(val) {\n return typeof val === \"function\" && \"constructor\" in val && \"CLOSED\" in val && \"CLOSING\" in val && \"CONNECTING\" in val && \"OPEN\" in val;\n}\n\nexport { CloseCode, GRAPHQL_TRANSPORT_WS_PROTOCOL, MessageType, TerminatedCloseEvent, createClient, parseMessage, stringifyMessage };\n","import { createClient, Client, ClientOptions, SubscribePayload } from 'graphql-ws';\n// Removed direct 'ws' import for browser compatibility; will resolve at runtime if needed.\nimport EventEmitter from 'eventemitter3';\n\n/** Events emitted by SubscriptionClient\n * connecting - before opening a socket (initial or reconnect attempt)\n * connected - first successful connection\n * reconnected - a subsequent successful connection after a disconnect\n * disconnected - socket closed ( { code, reason, wasClean } )\n * error - protocol or network error (Error)\n * retry - about to attempt reconnect ( { attempt } )\n */\nexport interface SubscriptionClientEvents {\n connecting: () => void;\n connected: () => void;\n reconnected: () => void;\n disconnected: (info: { code: number; reason: string; wasClean: boolean }) => void;\n error: (err: unknown) => void;\n retry: (info: { attempt: number }) => void;\n}\n\nexport interface SubscriptionClientOptions {\n url: string;\n /** optional async or sync connection params */\n connectionParams?: ClientOptions['connectionParams'];\n /** number of reconnect attempts, default Infinity */\n maxReconnectAttempts?: number;\n /** initial delay ms before first retry (exponential backoff) */\n retryDelayMs?: number;\n /** max backoff cap */\n maxRetryDelayMs?: number;\n /** idle timeout for operations (optional) */\n operationTimeoutMs?: number;\n /** optional custom WebSocket implementation */\n webSocketImpl?: any; // generic to avoid pulling node 'ws' types into browser bundle\n /** optional logger */\n log?: (msg: string, meta?: any) => void;\n}\n\nexport interface SubscribeOptions<TData = any, TVars = Record<string, unknown>> {\n query: string;\n variables?: TVars;\n /** optional per-subscription timeout override */\n timeoutMs?: number;\n operationName?: string;\n extensions?: Record<string, any>;\n}\n\nexport interface Observer<T> {\n next?: (data: T) => void;\n error?: (err: unknown) => void;\n complete?: () => void;\n}\n\nexport class SubscriptionClient extends EventEmitter {\n private options?: Required<Omit<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>> & Pick<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>;\n private client: Client | null = null;\n private connectAttempt = 0;\n private closedExplicitly = false;\n private reconnecting = false;\n private reconnectTimer: NodeJS.Timeout | null = null;\n private hasEverConnected = false;\n\n constructor() {\n super();\n }\n InitClient(opts: SubscriptionClientOptions) {\n this.options = {\n url: opts.url,\n connectionParams: opts.connectionParams,\n maxReconnectAttempts: opts.maxReconnectAttempts ?? Infinity,\n retryDelayMs: opts.retryDelayMs ?? 500,\n maxRetryDelayMs: opts.maxRetryDelayMs ?? 10_000,\n operationTimeoutMs: opts.operationTimeoutMs ?? 0,\n webSocketImpl: opts.webSocketImpl ?? undefined,\n log: opts.log,\n } as any;\n }\n\n private resolveWebSocketImpl(): any {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n // Proxy-aware priority:\n // 1. Explicit user-supplied impl\n // 2. Browser bundle: never load 'ws' — use global WebSocket\n // 3. If proxy env detected (Node) -> prefer 'ws'\n // 4. Global WebSocket (browser / Node >= 18 native)\n // 5. Fallback to require('ws') (Node)\n if (this.options.webSocketImpl) return this.options.webSocketImpl;\n\n if (process.env.BUILD_TARGET === 'browser') {\n const g: any = (globalThis as any);\n if (typeof g.WebSocket === 'function') return g.WebSocket;\n throw new Error('No WebSocket implementation found in browser. Provide webSocketImpl.');\n } else {\n const proxyEnv = process.env.ALL_PROXY || process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.GLOBAL_AGENT_HTTP_PROXY;\n if (proxyEnv) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return require('ws');\n } catch (e) {\n this.log('Proxy detected but failed to load ws package', e);\n }\n }\n const g: any = (globalThis as any);\n if (typeof g.WebSocket === 'function') return g.WebSocket;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return require('ws');\n } catch {\n throw new Error('No WebSocket implementation found. Provide webSocketImpl in SubscriptionClientOptions.');\n }\n }\n }\n\n /** Returns true if an underlying websocket client exists (connected or in-flight). */\n isConnected(): boolean {\n return !!this.client; // createClientIfNeeded only after socket open attempt\n }\n\n private log(msg: string, meta?: any) {\n if (this.options?.log) this.options.log(msg, meta);\n }\n\n private createClientIfNeeded(isReconnect: boolean) {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n if (this.client) return; // already have client\n const { url, connectionParams } = this.options;\n const webSocketImpl = this.resolveWebSocketImpl();\n this.client = createClient({\n url,\n connectionParams,\n webSocketImpl: webSocketImpl as any,\n lazy: false,\n keepAlive: 12000,\n retryAttempts: 0,\n shouldRetry: () => false,\n on: {\n connected: () => {\n const wasReconnect = isReconnect && this.connectAttempt > 0;\n this.connectAttempt = 0;\n if (wasReconnect && this.hasEverConnected) {\n this.emit('reconnected');\n this.log('reconnected');\n } else {\n this.emit('connected');\n this.log('connected');\n }\n this.hasEverConnected = true;\n },\n error: (err) => {\n this.emit('error', err);\n this.log('socket error', err);\n },\n closed: (ev) => {\n const e = ev as CloseEvent | { code: number; reason: string; wasClean: boolean };\n this.log('closed', e);\n this.emit('disconnected', { code: (e as any).code, reason: (e as any).reason?.toString?.() ?? '', wasClean: (e as any).wasClean ?? false });\n this.client = null; // allow recreate — socket is already closed, no dispose needed\n if (!this.closedExplicitly) this.scheduleReconnect();\n },\n },\n });\n }\n\n // assureConnected removed per revert request\n\n /** Establish the WebSocket connection if not already created. Idempotent. */\n connect(): void {\n if (this.client) return; // already created\n this.emit('connecting');\n this.log('connecting');\n this.createClientIfNeeded(false);\n }\n\n private scheduleReconnect() {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n if (this.reconnecting) return;\n if (this.closedExplicitly) {\n this.log('Reconnect prevented: client closed explicitly');\n return;\n }\n if (this.connectAttempt >= this.options.maxReconnectAttempts) {\n this.log('max reconnect attempts reached');\n return;\n }\n this.reconnecting = true;\n const delay = Math.min(\n this.options.retryDelayMs * Math.pow(2, this.connectAttempt),\n this.options.maxRetryDelayMs,\n );\n this.emit('retry', { attempt: this.connectAttempt });\n this.log('reconnect scheduled', { attempt: this.connectAttempt, delay });\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n this.reconnectTimer = setTimeout(() => {\n this.reconnecting = false;\n this.connectAttempt++;\n this.emit('connecting');\n this.log('connecting');\n this.createClientIfNeeded(true);\n }, delay);\n }\n\n clientsubscribe<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>, observer: Observer<{ data?: TData; errors?: any }>): () => void {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n if (!this.client) throw new Error('Client not connected - call connect() first');\n const payload: SubscribePayload = {\n query: options.query,\n variables: options.variables as any,\n operationName: options.operationName,\n extensions: options.extensions,\n };\n let finished = false;\n const timeoutMs = options.timeoutMs ?? this.options.operationTimeoutMs;\n let timeout: NodeJS.Timeout | undefined;\n if (timeoutMs > 0) {\n timeout = setTimeout(() => {\n if (finished) return;\n finished = true;\n observer.error?.(new Error('Operation timed out'));\n dispose();\n }, timeoutMs);\n }\n const dispose = this.client.subscribe(payload, {\n next: (data) => observer.next?.(data as any),\n error: (err) => {\n if (finished) return;\n finished = true;\n if (timeout) clearTimeout(timeout);\n observer.error?.(err);\n },\n complete: () => {\n if (finished) return;\n finished = true;\n if (timeout) clearTimeout(timeout);\n observer.complete?.();\n },\n });\n return () => {\n if (finished) return;\n finished = true;\n if (timeout) clearTimeout(timeout);\n dispose();\n };\n }\n\n /** Async iterator variant (convenience wrapper around underlying client.iterate). */\n clientiterate<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>): AsyncIterable<{ data?: TData; errors?: any }> {\n if (!this.client) throw new Error('Client not connected - call connect() first');\n const payload: SubscribePayload = {\n query: options.query,\n variables: options.variables as any,\n operationName: options.operationName,\n extensions: options.extensions,\n };\n // graphql-ws client.iterate returns AsyncIterableExecutionResult\n // We forward it directly (user can for-await over it).\n return (this.client as any).iterate(payload);\n }\n\n async close(code = 1000, reason = 'Normal Closure') {\n this.closedExplicitly = true;\n this.log('closing client');\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n const c = this.client as any;\n if (c) { try { c.dispose(); } catch { } }\n this.client = null;\n this.removeAllListeners();\n }\n}\n\nexport default SubscriptionClient;\n","export const commonFields = 'id:idStr version createdDateTime'\nexport const commonReferenceFields = 'groupId groupName groupPath labels canAnonymize tokenCount accessRoles'\nexport const lastLogFields = 'id eventCode stamp serviceDataId userId comment triggerSignature'\nexport const serviceDataCommonFields = `id createdDateTime servicePlanId userId lastServiceDate lastLog {${lastLogFields}}`\nexport const fieldMonitorFields = `__typename ... on QMFieldMonitorNumeric { id: idStr field operator threshold } ... on QMFieldMonitorFaultCodes { id: idStr signalNames }`\nexport const serviceDataMonitorFragment = `... on QMServiceDataMonitor { ${serviceDataCommonFields} trackerVID }`\nexport const cargoRequirementFields = 'id: idStr groupId count comparison linkTypes'\nexport const cargoRequirementLists = `assetRequirements { ${cargoRequirementFields} } userRequirements { ${cargoRequirementFields} } vehicleRequirements { ${cargoRequirementFields} } siteRequirements { ${cargoRequirementFields} }`\nexport const serviceDataCargoFragment = `... on QMServiceDataCargo { ${serviceDataCommonFields} requirementMatches { requirementId referenceIds } }`\nexport const scheduleExceptionFields = 'id: idStr type fromMinutes toMinutes days weeks monthDays'\nexport const serviceFieldFields = 'id: idStr key label type required includeInLog'\nexport const documentFields = 'id name description url createdDate mimeType fileName'\nexport const servicePlanScheduledFields = `unit count intervalType dueSlackInDays dueSlackHours timeZone startTimeMinutes exceptions { ${scheduleExceptionFields} } requireQrScan allowBackdating fields { ${serviceFieldFields} } documents { ${documentFields} }`\nexport const serviceDataScheduledFragment = `... on QMServiceDataScheduled { ${serviceDataCommonFields} startDate anchor due shifted }`\nexport const servicePlanCheckListFields = `triggerOnTrip triggerServicePlanIds`\nexport const serviceLogSnapshotFields = `computedCode reason tripLastStart items { referenceId referenceName referenceType linkType serviceDataId servicePlanId servicePlanName isTrigger lastLog { id eventCode stamp comment } } excluded { referenceId referenceName referenceType }`\nexport const serviceDataCheckListFragment = `... on QMServiceDataCheckList { ${serviceDataCommonFields} lastApprovedAt snapshotReferenceIds lastLog { snapshot { ${serviceLogSnapshotFields} } } }`\nexport const mCommonFields = 'type total deleteId deleteVersion'\nexport const mServiceCommonFields = `name description createdDate createdBy ${commonFields}`\n","import { mCommonFields, commonFields, commonReferenceFields, serviceDataCommonFields, serviceDataMonitorFragment, serviceDataCargoFragment, serviceDataScheduledFragment, serviceDataCheckListFragment } from '../fragments'\n\nexport const references = `\n subscription References($version:Int!) {\n mreference_getbulk(version: $version, subscribe:true)\n {\n ${mCommonFields}\n data {\n __typename\n ... on QMUser {\n description\n ${commonFields}\n ${commonReferenceFields}\n mobilePhoneNumber\n mobileCountryCode\n firstName\n middleName\n lastName\n fullName\n email\n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n },\n isAzureADUser\n authProvider\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n }\n ... on QMAsset { \n ${commonFields}\n ${commonReferenceFields}\n brand \n model \n keyWords\n description\n serial \n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n }\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n }\n ... on QMVehicle {\n ${commonFields}\n ${commonReferenceFields}\n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n }\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n registration\n registrationStatus\n vin\n brand\n brandId\n model\n modelId\n serial\n modelYear\n keyWords\n description\n variant\n variantId\n vVersion\n vVersionId\n bodyType\n usage\n extended {\n category\n ecTypeApproval\n euVariant\n euVersion\n extraEquipment\n firstRegistrationDate\n fuelType\n kind\n lastInspectionDate\n lastInspectionKind\n lastInspectionResult\n leasingPeriodEnd\n leasingPeriodStart\n mileage\n mileageAnnualAverage\n ncapFive\n registrationStatusUpdatedAt\n status\n statusUpdatedAt\n weight {\n technicalTotalWeight\n totalWeight\n vehicleWeight\n driveableWeightMinimum\n driveableWeightMaximum\n vValueAirSuspension\n vValueMechanicalSuspension\n roadTrainWeight\n couplingDevice\n couplingDeviceLoadMaximum\n trailerWithBrakesWeightMaximum\n trailerWithoutBrakesWeightMaximum\n trailerTotalWeightMaximum\n division\n }\n age {\n years\n months\n }\n axle {\n axles\n axleTrack\n pullingAxlesString\n driveShaftPressureMaximum\n trailerAllowedPressureMaximum\n }\n body {\n doors\n vinPlacement\n trackWidthFront\n trackWidthRear\n passengers\n seatsMinimum\n seatsMaximum\n standingPassengersMinimum\n standingPassengersMaximum\n rimsAndTires\n color\n }\n periodicTaxes {\n taxes {\n name\n amount\n paymentFrequency\n }\n totalAmount\n paymentFrequency\n }\n leasingPeriods {\n leasingPeriodStart\n leasingPeriodEnd\n }\n permits {\n id\n name\n comment\n validFrom\n validTo\n }\n manufacturer {\n name\n region\n country\n }\n drivingLicense {\n category\n }\n emission {\n co2\n co\n hcPlusNox\n nox\n particles\n particleFilter\n smokeDensity\n smokeDensityEngineSpeed\n energyClass\n euronorm\n }\n engine {\n fuelEfficiency\n electricityEfficiency\n topSpeed\n fuelType\n cylinders\n engineCode\n engineDisplacement\n enginePower\n horsepower\n powerToWeightRatio\n }\n equipment {\n id\n name\n quantity\n }\n inspections {\n id\n vehicleId\n registration\n vin\n date\n result\n mileage\n pdf\n }\n }\n }\n ... on QMSite { \n description\n ${commonFields}\n ${commonReferenceFields}\n name\n type\n geoArea {\n longitude\n latitude\n }\n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n }\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n }\n } \n }\n}`\n","import { mCommonFields, commonFields } from '../fragments'\n\nexport const trackers = `\n subscription Trackers($version:Int!) {\n mtrackers_getbulk(version: $version, subscribe:true)\n {\n ${mCommonFields}\n data \n {\n ${commonFields}\n objId: id\n vID\n pID\n key\n type\n model\n revision\n trackerName\n referenceId\n deleted\n }\n }\n }`\n","import { mCommonFields } from '../fragments'\n\nexport const groups = `\n subscription Groups($version:Int!)\n {\n mcommon_getgroups(version: $version, subscribe: true)\n { \n ${mCommonFields}\n data {\n id:idStr \n version\n parentId\n name\n description\n level \n type\n anchorPoints\n accessRoles\n }\n }\n }`\n","import { mCommonFields, mServiceCommonFields, fieldMonitorFields, cargoRequirementLists, servicePlanScheduledFields, servicePlanCheckListFields } from '../fragments'\n\nexport const servicePlans = `\n subscription Service($version: Int!)\n {\n mservice_get(version: $version, subscribe: true)\n {\n ${mCommonFields}\n data {\n __typename\n ... on QMServicePlanOneshot \n { \n ${mServiceCommonFields}\n dueSlackInDays\n deleted\n }\n ... on QMServicePlanPeriodic {\n ${mServiceCommonFields}\n dueSlackInDays\n period\n periodCount\n intervalType\n deleted\n }\n ... on QMServicePlanWarranty { \n ${mServiceCommonFields}\n dueSlackInDays\n warrantyInMonths\n deleted\n }\n ... on QMServicePlanKM {\n ${mServiceCommonFields}\n dueSlackKM : dueSlack\n intervalKM : interval\n deleted\n }\n ... on QMServicePlanWorkSeconds {\n ${mServiceCommonFields}\n dueSlackSeconds : dueSlack\n intervalSeconds : interval\n deleted\n }\n ... on QMServicePlanMonitor {\n ${mServiceCommonFields}\n fieldMonitors { ${fieldMonitorFields} }\n deleted\n }\n ... on QMServicePlanCargo {\n ${mServiceCommonFields}\n ${cargoRequirementLists}\n deleted\n }\n ... on QMServicePlanScheduled {\n ${mServiceCommonFields}\n ${servicePlanScheduledFields}\n deleted\n }\n ... on QMServicePlanCheckList {\n ${mServiceCommonFields}\n ${servicePlanCheckListFields}\n deleted\n }\n }\n }\n }`\n","import { mCommonFields } from '../fragments'\n\nexport const trackerLinks = `\n subscription BLELinks($opVersion: String)\n {\n otrackers_getlinksbulk(opversion: $opVersion, subscribe: true, subscriberssiupdates: true)\n {\n ${mCommonFields}\n data {\n id\n createdDateTime: creationTime\n receiverVID\n rSSI\n transmitterVID\n opVersion\n deleted\n disabled\n }\n }\n }`\n","import { mCommonFields } from '../fragments'\n\nexport const referenceLinks = `\n subscription ReferenceLink($version: Int!, $opVersion: String)\n {\n oreference_getlinks(version: $version, opversion: $opVersion, subscribe: true)\n {\n ${mCommonFields}\n data {\n id\n type\n createdDateTime: creationTime\n referenceId1\n referenceId2\n autoGenerated\n version,\n opVersion,\n deleted\n }\n }\n }`\n","export const lostTransmitters = `\n subscription lostTransmitters($opVersion: String) {\n otrackers_losttransmitters(\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n id:transmitterVID\n opVersion\n transmitterReferenceGroupId\n transmitterReferenceType\n transmitterReferenceGroupPath\n lostBy {\n transmitterVID\n receiverVID\n startTime\n endTime\n locationInfo {\n date\n speed\n bearing\n accuracy\n altitude\n longitude\n latitude\n }\n receiverTrackerType\n } \n }\n deleteVersion\n }\n }\n `\n","import { mCommonFields } from '../fragments'\n\nexport const reports = `\n subscription Reports($version: Int!) {\n mreports_getreport(version: $version, subscribe: true)\n {\n ${mCommonFields}\n data {\n id\n name\n description\n route\n version\n }\n }\n }\n `\n","import { mCommonFields } from '../fragments'\n\n// Scope-filtered replacement for `reports` (mreports_getreport). The server only sends the\n// saved routes (views, reports, dashboard tiles) the caller may see. `reports` is kept for\n// builds released before scope; new consumers use this one.\nexport const savedroutes = `\n subscription SavedRoutes($version: Int!) {\n msavedroutes_get(version: $version, subscribe: true)\n {\n ${mCommonFields}\n data {\n id\n name\n description\n route\n version\n groupId\n kind\n scope\n ownerId\n showOnDashboard\n icon\n }\n }\n }\n `\n","import { mCommonFields } from '../fragments'\n\nexport const jobs = `subscription jobs($version: Int!) { \n mjobs_get(version:$version, subscribe: true) {\n ${mCommonFields}\n data {\n id\n createdDateTime\n name\n description\n version\n disabled\n deleted\n groupId\n scope\n ownerId\n trigger {\n __typename\n ... on QMJobTriggerAssetFound {\n assetId\n }\n ... on QMJobTriggerOneshot {\n when\n }\n ... on QMJobTriggerScheduleTimeOfDay {\n startTime\n period\n lastRun\n interval\n }\n ... on QMJobTriggerMonitor\n {\n initialCount\n initialCheck\n url\n }\n ... on QMJobTriggerReferenceLost\n {\n referenceId\n trackerVID\n }\n }\n action {\n __typename\n ... on QMJobActionAssetFoundMail {\n actionType\n assetId\n references\n groups\n }\n ... on QMJobActionReport {\n actionType\n reports {\n reportId\n args {name value }\n }\n groups\n references\n dontSendEmptyReport\n }\n ... on QMJobActionSMS {\n actionType\n userId\n }\n } \n } \n } \n }`\n","import { mCommonFields } from '../fragments'\n\nexport const cycles = `subscription cycles($version: Int!) {\n mcycle_getcycles(version: $version, subscribe: true) {\n ${mCommonFields}\n data {\n id\n name\n isActive\n labelFilter\n startStepId\n stopStepId\n cancelStepId\n deleted\n version\n steps {\n stepId\n name\n estimateDurationInSeconds\n displayOrder\n onlyOnce\n enterRules {\n __typename\n ... on QMFlowRuleOnExitSteps {\n ruleId\n exitStepIds\n }\n ... on QMTrackingEnterRuleReferenceLink {\n ruleId\n referenceIds\n gracePeriodInSeconds\n whenActive\n }\n ... on QMEnterRuleOnReferenceCreate {\n ruleId \n }\n ... on QMFlowForeignEnterRuleOnEnter {\n foreignCycleRelations{\n foreignCycleId\n foreignStepId\n }\n ruleId \n }\n ... on QMTrackingEnterRuleNearestReferenceLink {\n referenceIds\n ruleId \n gracePeriodInSeconds\n }\n } \n exitRules {\n __typename\n ... on QMFlowRuleOnEnterSteps {\n ruleId\n enterStepIds\n }\n ... on QMTrackingExitRuleReferenceLink {\n ruleId\n referenceIds\n gracePeriodInSeconds\n whenActive\n }\n ... on QMFlowForeignExitRuleOnEnter {\n foreignCycleRelations {\n foreignCycleId\n foreignStepId\n }\n ruleId\n }\n ... on QMTrackingExitRuleNearestReferenceLink {\n referenceIds\n ruleId\n gracePeriodInSeconds\n }\n }\n } \n }\n }\n }`\n","export const meshDiagnostics = `\n subscription meshdiagnostics($opVersion: String) {\n otrackers_meshdiagnostics( \n opversion: $opVersion,\n subscribe: true\n ) {\n type\n total\n deleteId\n data {\n id: vID\n vID\n stamp\n opVersion\n advertiserCost\n errorCodes\n nextHopAddress\n nextHopVID\n nextHopPower\n nextHopQuality\n nextHopRSSI\n qualityIndicator\n routersInNeighborhood\n sinkAddress\n sinkVID\n }\n deleteVersion\n }\n }\n `\n","export const gps = `\n subscription getpositionbulk($opVersion: String) {\n otrackers_getpositionsbulk(\n includeInitial: true\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n opVersion\n referenceGroupId\n referenceType\n referenceGroupPath\n stamp\n locationInfo {\n date\n speed\n bearing\n accuracy\n altitude\n longitude\n latitude\n } \n isFixed\n id:trackerVID\n }\n deleteVersion\n }\n } \n `\n","export const linkconnected = `subscription linkconnected($opVersion: String) {\n otrackers_linkconnectedbulk(subscribe: true, includeInitial: true, opVersion: $opVersion) {\n type\n total\n deleteId\n data{\n id: vID\n opVersion\n when\n }\n deleteVersion\n }\n}`\n","export const connected = `subscription connected($opVersion: String) {\n otrackers_connectedbulk(subscribe: true, includeInitial: true, opVersion: $opVersion) {\n type\n total\n deleteId\n data{\n id: vID\n opVersion\n when\n }\n deleteVersion\n }\n}`\n","export const voltage = `subscription voltage($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[EXTERNAL_VOLTAGE], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data { \n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n}`\n","export const internalvoltage = `subscription internalvoltage($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[INTERNAL_VOLTAGE, BATTERY_LEVEL], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n}`\n","export const unplug = `subscription unplug($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[UNPLUG], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n }`\n","export const alarm = `subscription alarm($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[ALARM], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n }`\n","export const temperature = `subscription temperature($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[TEMPERATURE], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const temperaturedecimal = `subscription temperaturedecimal($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[TEMPERATURE_DECIMAL], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const humiditydecimal = `subscription humiditydecimal($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[HUMIDITY_DECIMAL], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const meshscanner = `subscription temperature($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[MESH_GATE_ON], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const meshdisconnectslasthour = `subscription disconnects($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[DISCONNECTED_IN_THE_LAST_HOUR], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const activecounter = `subscription activecounter($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[ACTIVE_COUNTER], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n}`\n","export const workseconds = `subscription workseconds($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[WORK_SECONDS], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n}\n}`\n","export const calculatedodometer = `subscription calculatedodometer($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[CALCULATED_ODOMETER], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n}\n}`\n","export const batterypercent = `subscription batterypercent($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[BATTERY_PERCENT], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n}\n}`\n","export const workignition = `subscription workignition($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[WORK_IGNITION], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n}`\n","export const tripignition = `subscription tripignition($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[TRIP_IGNITION], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n}\n}`\n","export const activecycles = `subscription activecycles($opVersion: String){\n ocycle_activecycles(\n includeInitial: true\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n id\n cycleId\n startedAt\n finishedAt\n status\n referenceId\n opVersion\n }\n deleteVersion\n }\n}`\n","export const activesteps = `subscription activesteps($opVersion: String) {\n ocycle_activesteps(\n includeInitial: true\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n id\n stepId\n name\n estimateDurationInSeconds\n displayOrder\n cycleStateId\n enterStamp\n exitStamp\n timeSpentInSeconds\n opVersion\n }\n deleteVersion\n },\n}\n`\n","export const referenceGeoLinks = `subscription referenceGeoLinks($opversion: String){\n oreference_getreferencegeolinksBulk(\n opversion: $opversion\n subscribe: true\n ) {\n type\n total\n deleteId\n data {\n id\n creationTime\n siteId\n referenceId\n opVersion\n deleted\n }\n deleteVersion\n }\n }`\n","export const trips = `subscription trips($opVersion: String) {\n otrip_trips(opversion: $opVersion, subscribe: true) {\n type\n total\n deleteId\n data {\n id: vID\n vID\n start\n stop\n routeDistanceInMeters\n opVersion\n referenceGroupId\n referenceType\n referenceGroupPath\n startPoint: startWayPoint {\n date\n speed\n longitude\n latitude\n } \n endPoint: endWayPoint {\n date\n speed\n longitude\n latitude\n } \n wayPoints: waypoints {\n date\n latitude\n longitude\n speed\n } \n }\n deleteVersion\n }\n }`\n","import { mCommonFields, commonFields } from '../fragments'\n\nexport const tasks = `subscription tasks($version: Int!) {\n mtask_get(version:$version, subscribe: true) {\n ${mCommonFields}\n data {\n ${commonFields}\n number\n templateId\n templateVersion\n title\n status\n createdBy\n accessRoles\n fieldValues { key value }\n documents { id name url mimeType fileName createdDate }\n targetReferenceId\n deleted\n }\n }\n}`\n","import { mCommonFields, commonFields } from '../fragments'\n\nexport const taskTemplates = `subscription taskTemplates($version: Int!) {\n mtasktemplate_get(version:$version, subscribe: true) {\n ${mCommonFields}\n data {\n ${commonFields}\n groupIds\n name\n description\n createAccessRoles\n processingAccessRoles\n finishAccessRoles\n design\n fields {\n key\n label\n type\n required\n linkedStatus\n groupKey\n groupLabel\n listInfo\n options { key label }\n }\n statuses {\n key\n label\n color\n icon\n isTerminal\n isDefault\n allowedRoles\n }\n deleted\n }\n }\n}`\n","export const contained = \n`subscription contained($opVersion: String) {\n contained(opversion: $opVersion) {\n type\n data {\n id\n receiverId\n start\n deleted\n opVersion\n }\n deleteId\n }\n}`","export const lostposition =\n`subscription lostPosition($opVersion: String) {\n lostPositionBulk(chunkSize: 50, opversion: $opVersion) {\n type\n data {\n id\n transmitterId\n receiverId\n stamp\n latitude\n longitude\n opVersion\n }\n deleteId\n deleteVersion\n }\n}`\n","export const stateLinks =\n`subscription stateLink($opVersion: String) {\n stateLinkBulk(opversion: $opVersion) {\n type\n data {\n id\n receiverId\n transmitterId\n stamp\n lastUpdated\n rssi\n opVersion\n closed\n }\n deleteId\n deleteVersion\n }\n}`","export const stateRefLinks =\n`subscription stateReflink($opVersion: String) {\n stateRefLinkBulk(opversion: $opVersion) {\n type\n data {\n id\n receiverRefId\n transmitterRefId\n start\n end\n opVersion\n }\n deleteId\n deleteVersion\n }\n}`\n","export const trips =\n`subscription stateTrips($opVersion: String) {\n stateTrips(opversion: $opVersion) {\n type\n data {\n id\n trips {\n startGPS {\n stamp\n longitude\n latitude\n }\n endGPS {\n stamp\n longitude\n latitude\n }\n distance\n completed\n } \n deleted\n opVersion\n }\n deleteId\n deleteVersion\n }\n}`","export const systemSettings = `subscription systemsetting($version: Int!) {\n mcommon_systemsettings(version: $version, subscribe: true) {\n type\n total\n deleteId\n data {\n version\n id: groupName\n settings {\n id\n name\n level\n parent\n valueOrigin\n value {\n isVisible\n hasChildren\n settingValue\n type\n }\n inputHtml\n } \n }\n deleteVersion\n }\n }`\n","export const settings = `\n subscription settings($version: Int!){\n mcommon_settings(version: $version, subscribe: true) {\n type\n total\n deleteId\n data {\n id: groupId\n version\n groupName\n settings {\n id\n name\n level\n parent\n valueOrigin\n value {\n isVisible\n hasChildren\n settingValue\n type\n }\n inputHtml\n } \n }\n deleteVersion\n }\n }`\n","export const roles = \n`subscription roles($version: Int!) {\n mcommon_roles(version: $version, subscribe: true) {\n type\n total\n deleteId\n data {\n createdTime\n name\n description\n permissions\n deleted\n version\n id\n }\n deleteVersion\n }\n}\n`","export const TempSubscriptions = {}\n","import { mCommonFields } from '../fragments'\n\nexport const messages = `\n subscription Messages($version:Int!) {\n getWeb(version: $version) {\n type \n deleteId \n deleteVersion\n data {\n id\n multiId\n version\n createdAt\n from { id fullName mobilePhoneNumber mobileCountryCode email language }\n to { id fullName mobilePhoneNumber mobileCountryCode email language }\n title\n content\n shortContent\n attachmentUrl\n type\n status\n transportTypes\n emailStatus { success errorMessage }\n smsStatus { success errorMessage }\n additionalInfo\n emailTemplate\n deleted\n }\n }\n }\n `\n","import * as subs from './subscriptions'\nimport * as opsubs from './opsubscriptions/index'\nimport * as req from './requiredMirrors/index'\nimport * as temp from './tempSubscriptions/index'\nimport * as message from './messagesubscriptions/index'\n\nexport const Subscriptions = {\n references: subs.references,\n trackers: subs.trackers,\n groups: subs.groups,\n servicePlans: subs.servicePlans,\n trackerLinks: subs.trackerLinks,\n referenceLinks: subs.referenceLinks,\n lostTransmitters: subs.lostTransmitters,\n reports: subs.reports,\n savedroutes: subs.savedroutes,\n jobs: subs.jobs,\n cycles: subs.cycles,\n meshDiagnostics: subs.meshDiagnostics,\n gps: subs.gps,\n linkconnected: subs.linkconnected,\n connected: subs.connected,\n voltage: subs.voltage,\n internalvoltage: subs.internalvoltage,\n unplug: subs.unplug,\n alarm: subs.alarm,\n temperature: subs.temperature,\n temperaturedecimal: subs.temperaturedecimal,\n humiditydecimal: subs.humiditydecimal,\n meshscanner: subs.meshscanner,\n meshdisconnectslasthour: subs.meshdisconnectslasthour,\n activecounter: subs.activecounter,\n workseconds: subs.workseconds,\n calculatedodometer: subs.calculatedodometer,\n batterypercent: subs.batterypercent,\n workignition: subs.workignition,\n tripignition: subs.tripignition,\n activecycles: subs.activecycles,\n activesteps: subs.activesteps,\n referenceGeoLinks: subs.referenceGeoLinks,\n trips: subs.trips,\n tasks: subs.tasks,\n taskTemplates: subs.taskTemplates\n}\n\nexport const OpSubscriptions = {\n contained: opsubs.contained,\n lostposition: opsubs.lostposition,\n stateLinks: opsubs.stateLinks,\n stateRefLinks: opsubs.stateRefLinks,\n trips3: opsubs.trips\n}\n\nexport const RequiredMirrors = {\n systemSettings: req.systemSettings,\n settings: req.settings,\n roles: req.roles\n}\nexport const MessageSubscriptions = {\n messages: message.messages\n}\n\nexport const TempSubscriptions = temp.TempSubscriptions\n","import { Subscriptions } from './mirrors';\n\n/**\n * Semantic annotations for the predefined mirrors.\n *\n * WHY THESE LIVE HERE, next to the documents they describe:\n *\n * Everything mechanical about a mirror can be derived — field names, types,\n * aliases and variables all fall out of the GraphQL document validated against\n * the server SDL. What cannot be derived is *meaning*: what a collection is,\n * when someone should reach for it, and whether it belongs in a surface exposed\n * to an AI assistant at all. That has to be authored by whoever knows the data,\n * and the closest place to the data is here.\n *\n * THE BUILD GATE IS THE TYPE ITSELF.\n *\n * `Record<keyof typeof Subscriptions, MirrorAnnotation>` means adding a mirror\n * without annotating it is a compile error in this package. No lint rule to\n * remember, no script to run — it simply will not build. Consumers (the MCP\n * server) do a second pass: they refuse to expose anything whose annotation is\n * still unreviewed, and they re-derive schemas from the live SDL so a document\n * that drifts away from the server fails their build too.\n */\n\n/** Who a mirror is meant for. */\nexport type MirrorAudience =\n /** Safe and useful to expose as an AI tool. */\n | 'ai'\n /** Internal plumbing, diagnostics, or too specialised to be worth a tool. */\n | 'internal';\n\n/** Rough size, so consumers can pick sensible default page limits. */\nexport type MirrorCardinality =\n /** Tens of rows. Safe to read whole. */\n | 'small'\n /** Hundreds. Usually wants a limit. */\n | 'medium'\n /** Thousands or unbounded. Always wants a limit and a filter. */\n | 'large';\n\nexport interface MirrorAnnotation {\n /** Short noun phrase, e.g. \"Trackers\". Becomes the tool title. */\n title: string;\n\n /**\n * What this collection *is*, in the words a reader needs — not a restatement\n * of the field list, which is generated anyway.\n */\n description: string;\n\n /**\n * When to reach for this one, and when not. This is what stops an assistant\n * from picking a plausible-sounding neighbour.\n */\n useWhen?: string;\n\n /** Whether this belongs in an AI-facing surface. */\n audience: MirrorAudience;\n\n /**\n * Fields worth returning by default.\n *\n * Some documents select a great deal — `references` selects 100 fields — and\n * sending all of it into a model's context is wasteful. Consumers return\n * these by default and keep the rest available on request. Names are the\n * *aliased* output names, as they appear in results.\n */\n summaryFields?: readonly string[];\n\n cardinality?: MirrorCardinality;\n\n /**\n * Has a human confirmed this description is accurate?\n *\n * Defaults to absent, which consumers must treat as \"not reviewed\" and\n * refuse to expose. This exists so a mirror can be added and compile without\n * anyone inventing a plausible-sounding description that turns out to be\n * wrong — an incorrect tool description is worse than a missing tool,\n * because it produces confidently wrong answers rather than no answer.\n */\n reviewed?: true;\n}\n\n/**\n * Annotation for every predefined mirror.\n *\n * Entries below are seeded from the GraphQL documents and the server schema.\n * Anything not marked `reviewed: true` is a DRAFT and will not be exposed by\n * consumers, regardless of `audience`.\n */\nexport const MirrorAnnotations: Record<keyof typeof Subscriptions, MirrorAnnotation> = {\n // --- core master data ----------------------------------------------------\n references: {\n title: 'References',\n description:\n 'Master data for everything Nanolink keeps track of. A reference is one of ' +\n 'several kinds, told apart by __typename: Assets (equipment and tools of any ' +\n 'size — a chop saw, a trailer, a wind turbine tip trolley, a 64ft container), ' +\n 'Vehicles (anything that rolls or moves under its own power, including ' +\n 'trailers), Users (people), Sites (customer buildings and locations — ' +\n 'warehouses, workshops, production halls, dispatch centres, wherever tools ' +\n 'live), Projects, Geoareas and Areas. ' +\n 'A reference is ALWAYS in exactly one group, and groupName/groupPath are ' +\n 'usually the most informative thing about what it is. `labels` is a free-text ' +\n 'array the customer uses for shared characteristics — \"220V\", \"400V\", ' +\n '\"Beton\", \"VVS\" — and for material or trade classification; it varies by ' +\n 'customer, so read the values rather than assuming a taxonomy. ' +\n 'IMPORTANT: a reference can have SEVERAL trackers attached, so it can legitimately ' +\n 'report more than one position or sensor reading at the same time — the trackers ' +\n 'sit in different places on the same object. Do not treat differing positions ' +\n 'for one reference as a contradiction.',\n useWhen:\n 'Answering what exists, who someone is, or where equipment belongs. Start here ' +\n 'for anything about the objects themselves. Note that Geoarea means a monitored ' +\n 'area someone deliberately configured on the Nanolink server — it is not the ' +\n 'general source of geography — and Area means an indoor, non-geographic zone ' +\n 'used for indoor positioning, which is not in use at present.',\n audience: 'ai',\n reviewed: true,\n summaryFields: [\n '__typename', 'id', 'groupName', 'groupPath', 'labels', 'deleted',\n 'fullName', 'email',\n 'brand', 'model', 'serial', 'description',\n 'registration', 'vin',\n 'name', 'type',\n ],\n cardinality: 'large',\n },\n trackers: {\n title: 'Trackers',\n description:\n 'Every piece of Nanolink hardware — one row is one physical thing that exists ' +\n 'in the real world. That includes GPS trackers, Bluetooth tags, GPS gates and ' +\n 'mesh gates, and also QR stickers, which count as trackers even though they ' +\n 'only identify something manually rather than reporting a position by radio. ' +\n 'A tracker is attached to AT MOST ONE reference (referenceId). The reverse is ' +\n 'not true: one reference may carry several trackers. `vID` is the visual id ' +\n 'printed on the device and is what people read aloud and search by.',\n useWhen:\n 'Asked about the devices themselves — what hardware exists, what type it is, ' +\n 'what a particular vID is attached to. For questions about the tracked object ' +\n 'rather than the device, use References instead.',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['vID', 'trackerName', 'type', 'model', 'referenceId', 'deleted'],\n cardinality: 'medium',\n },\n groups: {\n title: 'Groups',\n description:\n 'The tree that references are organised into, and where access control lives — ' +\n 'most importantly for Users, but grouping other references is meaningful too. ' +\n 'Every reference belongs to exactly one group, and groups nest into subgroups. ' +\n 'What the groups MEAN varies by customer: they may be departments, trades, or ' +\n 'equipment categories, so read the names to understand how this particular ' +\n 'customer has organised things rather than assuming a fixed taxonomy.',\n useWhen:\n 'Counting or filtering by category — \"how many ladders do we have?\" means ' +\n 'finding the group whose name matches and counting the references in it. ' +\n 'CRITICAL: groups are a tree. A group named \"Stiger\" may have subgroups such ' +\n 'as \"Jumbostiger\", and those references are NOT in the parent group directly. ' +\n 'Decide explicitly whether the question means that group alone or the whole ' +\n 'subtree, and say which you used. groupPath on a reference shows its position ' +\n 'in the tree and is usually the easiest way to match a subtree.',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'parentId', 'description', 'level', 'type'],\n cardinality: 'small',\n },\n servicePlans: {\n title: 'Service plans',\n description:\n 'Maintenance AND monitoring plans, told apart by __typename. Periodic and ' +\n 'Oneshot are real service tasks to be carried out on a schedule or once; KM ' +\n 'triggers on distance travelled; Warranty tracks a guarantee period; Monitor ' +\n 'watches a live value and raises a fault when it goes out of range (speed, or ' +\n 'low pressure in a specific tyre, for example); Cargo tracks what SHOULD be ' +\n 'present — typically in a vehicle — so that a missing item shows up; Scheduled is an ' +\n 'advanced calendar plan with optional input fields and QR-scan requirement; CheckList ' +\n 'is a vehicle inspection a person approves, which turns yellow/red again after a trip ' +\n 'or when one of its trigger plans is yellow/red on the vehicle or its linked equipment, ' +\n 'and only goes green again through a new approval. ' +\n 'A plan is effectively green or red: fine, or in fault/overdue.',\n useWhen:\n 'Asked what needs servicing, what is overdue, what is being monitored, or what ' +\n 'is missing from a vehicle. This mirror holds the plan DEFINITIONS; the state ' +\n 'of a given reference against them lives on that reference.',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['__typename', 'id', 'name', 'description', 'deleted'],\n cardinality: 'medium',\n },\n\n // --- links between things ------------------------------------------------\n trackerLinks: {\n title: 'Radio observations between trackers',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. The raw radio layer: a ' +\n 'receiver picked up a transmitter. A Bluetooth tag, or a tracker with ' +\n 'Bluetooth, broadcasts packets and is the TRANSMITTER; a gateway scanning for ' +\n 'them is the RECEIVER. GPS gateways are both at once - they find tags, and ' +\n 'other gateways can find them in turn. These observations are what eventually ' +\n 'become proximity links between references. `rSSI` is signal strength, a ' +\n 'rough proxy for closeness. ',\n useWhen:\n 'Only when direction genuinely matters - which device observed which. For the ' +\n 'ordinary \"what is near what\" question use referenceLinks, which is the same ' +\n 'information expressed between the objects people actually care about. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'receiverVID', 'transmitterVID', 'rSSI', 'createdDateTime'],\n cardinality: 'large',\n },\n referenceLinks: {\n title: 'Reference links',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Relationships between two ' +\n 'references, told apart by `type`: proximity means they are near each other, ' +\n 'and is what a radio observation ultimately becomes; responsible means a user ' +\n 'is accountable for something; user means a person is the end user of it, ' +\n 'such as a driver or a craftsman; associated means one reference is attached ' +\n 'to another. `autoGenerated` marks links the system derived rather than a ' +\n 'person recording them. ',\n useWhen:\n 'Asked who is responsible for something, who is using it, what is attached to ' +\n 'what, or what is near what. This is the right level for relationship ' +\n 'questions. Only drop to trackerLinks if you specifically need which device ' +\n 'saw which - links here carry no direction. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'type', 'referenceId1', 'referenceId2', 'autoGenerated', 'createdDateTime'],\n cardinality: 'large',\n },\n referenceGeoLinks: {\n title: 'References inside monitored areas',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Bluetooth tags do NOT have ' +\n 'GPS of their own - a tag only gets a position when a GPS-capable gateway ' +\n 'sees it and contributes its own. This is the most common misunderstanding ' +\n 'about how Nanolink positions things, so never present a tag as if it located ' +\n 'itself. Which references are currently inside a monitored geo area, and when ' +\n 'they entered. A geo area is real monitoring rather than a passive map: a ' +\n 'gateway inside the area finds a Bluetooth tag, and that tag then counts as ' +\n 'inside DIGITALLY until some gateway finds it outside again. Presence here ' +\n 'therefore reflects the last observation, not a live fence crossing. ',\n useWhen:\n 'Asked what is on a site or inside a monitored area, or when something ' +\n 'arrived. Bear in mind an item stays \"inside\" until observed elsewhere, so ' +\n 'the absence of an exit is not proof it is still physically there. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'siteId', 'referenceId', 'creationTime'],\n cardinality: 'large',\n },\n lostTransmitters: {\n title: 'Last known position of transmitters',\n description:\n 'Bluetooth tags do NOT have GPS of their own - a tag only gets a position ' +\n 'when a GPS-capable gateway sees it and contributes its own. This is the most ' +\n 'common misunderstanding about how Nanolink positions things, so never ' +\n 'present a tag as if it located itself. Our best guess at where a tracker or ' +\n 'Bluetooth tag last had a GPS position - `lostBy` names the device that last ' +\n 'saw it. Bluetooth tags are effectively always \"lost\": left somewhere, with ' +\n 'the only positional evidence being a gateway that caught them and ' +\n 'contributed its own coordinate. That evidence is already slightly out of ' +\n 'date by nature, which is where the name comes from. ',\n useWhen:\n 'Asked where something is when it has no GPS of its own, typically a ' +\n 'Bluetooth tag. Present the answer as a last known position with its age, ' +\n 'never as a live one. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'lostBy', 'transmitterReferenceType', 'transmitterReferenceGroupPath'],\n cardinality: 'large',\n },\n\n // --- operational records --------------------------------------------------\n reports: {\n title: 'Reports',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Real reports that can be generated, printed, or emailed to ' +\n 'users. This mirror holds the report DEFINITIONS - what reports exist and how ' +\n 'they are set up - rather than any generated output. ',\n useWhen:\n 'Asked what reports are available, or what a particular report covers. ' +\n 'Producing or sending a report is not something this read-only surface can ' +\n 'do; say so rather than implying it can. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'description'],\n cardinality: 'small',\n },\n jobs: { title: 'Jobs', description: 'DRAFT — scheduled jobs.', audience: 'internal', cardinality: 'medium' },\n savedroutes: {\n title: 'Saved routes',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Saved frontend routes with scope: views (kind VIEW), printable report ' +\n 'definitions (kind REPORT) and dashboard tiles (kind TILE). Scope is PERSONAL, GROUP or ' +\n 'GLOBAL and the server only sends the rows the caller may see. Supersedes `reports`, ' +\n 'which is a frozen copy kept for old app builds. ',\n useWhen:\n 'Asked what views or reports are available, who they are shared with, or what a ' +\n 'particular report covers. Producing or sending a report is not something this ' +\n 'read-only surface can do; say so rather than implying it can. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'description', 'kind', 'scope'],\n cardinality: 'small',\n },\n cycles: {\n title: 'Production cycles',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Production control: process ' +\n 'rules layered on top of ordinary movement. A cycle defines steps and the ' +\n 'constraints between them - a reference may not advance to the next step ' +\n 'before clearing the first, and a step cannot be left until the next has held ' +\n 'it for some minimum time. Progress is usually driven by gates detecting ' +\n 'Bluetooth tags, so the physical movement of a tagged item is what advances ' +\n 'the process. `steps` holds the definition. ',\n useWhen:\n 'Asked how a production process is set up, or what rules govern it. For what ' +\n 'is running right now, use Active cycles. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'isActive', 'labelFilter', 'deleted'],\n cardinality: 'small',\n },\n activecycles: {\n title: 'Active cycles',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Cycle runs currently in ' +\n 'progress - which reference is going through which cycle, when it started, ' +\n 'and its status. Finished runs carry `finishedAt`. ',\n useWhen:\n 'Asked what is in production now, or how far a particular item has got. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'cycleId', 'referenceId', 'status', 'startedAt', 'finishedAt'],\n cardinality: 'medium',\n },\n activesteps: {\n title: 'Active cycle steps',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. The individual steps within ' +\n 'running cycles: when a reference entered a step, when it left, and how long ' +\n 'it spent there. `estimateDurationInSeconds` is what the step was expected to ' +\n 'take, so comparing it with `timeSpentInSeconds` shows what is running late. ',\n useWhen:\n 'Asked where in a process something is stuck, or which step is taking longer ' +\n 'than planned. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'cycleStateId', 'enterStamp', 'exitStamp', 'timeSpentInSeconds', 'estimateDurationInSeconds'],\n cardinality: 'medium',\n },\n tasks: {\n title: 'Tasks',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Work items. A task may be ' +\n 'attached to a reference through `targetReferenceId`, or stand alone with ' +\n 'none. `status` carries where it has reached, and `fieldValues` holds ' +\n 'whatever the template defined. ',\n useWhen:\n 'Asked what work is outstanding, what has been done, or what is booked ' +\n 'against a particular piece of equipment. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'title', 'status', 'targetReferenceId', 'templateId', 'createdDateTime', 'deleted'],\n cardinality: 'medium',\n },\n taskTemplates: {\n title: 'Task templates',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Definitions that tasks are ' +\n 'created from, including the business rules governing how and by whom they ' +\n 'may be created, processed and finished. `fields` and `statuses` define the ' +\n 'shape and lifecycle that tasks then follow. ',\n useWhen:\n 'Asked what KINDS of task exist, or why a task has particular fields or ' +\n 'statuses. For the actual work items, use Tasks. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'description', 'fields', 'statuses', 'deleted'],\n cardinality: 'small',\n },\n trips: {\n title: 'Trips',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Completed journeys, delimited ' +\n 'by engine start and stop - that is how a trip is identified at all. Each row ' +\n 'carries where it began and ended, the route travelled and the distance, so ' +\n 'it answers how far a vehicle went and by which way. Improved variants exist ' +\n 'as trips2, with a trips3 planned; this is the original. ',\n useWhen:\n 'Asked how far or where a vehicle drove, or about a particular journey. Not ' +\n 'for current position - use the GPS mirror for that. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'vID', 'start', 'stop', 'routeDistanceInMeters', 'referenceType'],\n cardinality: 'large',\n },\n\n // --- live position and connection state -----------------------------------\n gps: {\n title: 'GPS positions',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Bluetooth tags do NOT have ' +\n 'GPS of their own - a tag only gets a position when a GPS-capable gateway ' +\n 'sees it and contributes its own. This is the most common misunderstanding ' +\n 'about how Nanolink positions things, so never present a tag as if it located ' +\n 'itself. Latest known GPS position for trackers that can produce one ' +\n 'themselves, and for trackers configured with a fixed position - a gateway ' +\n 'bolted to a wall in a warehouse, where `isFixed` is set. Positions update as ' +\n 'GPS gateways report in. ',\n useWhen:\n 'Asked where something is right now. For where it HAS been, use the historic ' +\n 'position tools. A tag with no row here is expected rather than an error: it ' +\n 'means no GPS-capable device has reported a position for it, and ' +\n 'lostTransmitters is then the better source for a best guess. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'stamp', 'isFixed', 'locationInfo', 'referenceType', 'referenceGroupPath'],\n cardinality: 'large',\n },\n connected: {\n title: 'Last contact with the servers',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. When each tracker last ' +\n 'uploaded or otherwise made contact with the Nanolink servers ITSELF. `when` ' +\n 'is that timestamp. This is about the device reaching us, not about anyone ' +\n 'hearing it over the air - for that, use Link last contact, which records ' +\n 'when a gateway last picked the device up over Bluetooth. ',\n useWhen:\n 'Asked whether a device is still reporting in, or how long since it last did. ' +\n 'Read it as LAST SEEN, not \"online right now\": a recent timestamp means it ' +\n 'reported recently, but nothing here says it is connected at this instant, so ' +\n 'compare `when` to now and state the age. Note that a plain Bluetooth tag ' +\n 'cannot contact the servers on its own and so may legitimately have no row ' +\n 'here at all - that is not a fault, and Link last contact is the right place ' +\n 'to look for it. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'when'],\n cardinality: 'large',\n },\n linkconnected: {\n title: 'Last radio contact via a gateway',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. When a gateway last picked ' +\n 'this tracker or Bluetooth tag up over Bluetooth - the timestamp of the most ' +\n 'recent radio link. This is how a device that cannot talk to the servers ' +\n 'itself still gets seen: a gateway hears its broadcast and reports it on. ' +\n 'Distinct from Last contact, which is the device reaching the servers under ' +\n 'its own steam. ',\n useWhen:\n 'Asked when a Bluetooth tag was last observed, or whether something is still ' +\n 'within range of any gateway. For a tag this is usually the ONLY evidence it ' +\n 'is still around, since it has no way of contacting the servers itself. ' +\n 'Compare `when` to now and say how old the observation is. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'when'],\n cardinality: 'large',\n },\n\n // --- telemetry signals ----------------------------------------------------\n alarm: {\n title: 'Alarms',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. The ' +\n 'alarm signal reported by a tracker. ',\n useWhen:\n 'Asked what is currently alarming. This is the tracker\\'s own alarm state; ' +\n 'service plans of the Monitor kind are a separate mechanism that raises ' +\n 'faults when a watched value goes out of range. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n voltage: {\n title: 'External voltage',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Voltage on the tracker\\'s external supply - typically the vehicle or machine ' +\n 'it is wired into, rather than its own battery. ',\n useWhen:\n 'Asked whether something is powered, or about the electrical supply feeding a ' +\n 'tracker. For the tracker\\'s own cell, use internal voltage. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n internalvoltage: {\n title: 'Internal voltage',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Voltage of the tracker\\'s own internal battery, as opposed to any external ' +\n 'supply. ',\n useWhen:\n 'Asked about the health of the device itself. Battery percentage is usually ' +\n 'the friendlier answer for a person; this is the raw measurement behind it. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n batterypercent: {\n title: 'Battery level',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Remaining battery on the tracker, as a percentage. ',\n useWhen:\n 'Asked which devices need their battery changed, or why one stopped ' +\n 'reporting. A low battery is a common explanation for a tracker that has gone ' +\n 'quiet, so it is worth checking alongside last contact. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n unplug: {\n title: 'Unplug signal',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Reports that a tracker was disconnected from its external power - unplugged ' +\n 'from the vehicle or machine it was wired into. ',\n useWhen:\n 'Asked whether a device has been removed or tampered with, or why something ' +\n 'stopped reporting on external power. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n temperature: {\n title: 'Temperature',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Temperature measured by the tracker, as a whole number. ',\n useWhen:\n 'Asked how warm or cold something is. Prefer the decimal variant when ' +\n 'precision matters, since this one is rounded. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n temperaturedecimal: {\n title: 'Temperature (decimal)',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Temperature measured by the tracker, at higher precision than the ' +\n 'whole-number variant. ',\n useWhen:\n 'Asked how warm or cold something is and the fraction matters - cold chain, ' +\n 'process control. Otherwise either variant answers the question. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n humiditydecimal: {\n title: 'Humidity',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Relative humidity measured by the tracker. ',\n useWhen:\n 'Asked about damp, condensation risk, or storage conditions. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n activecounter: {\n title: 'Electric motor running seconds (BT30s)',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Seconds reported by a BT30s Bluetooth tag. The BT30s carries a Hall sensor ' +\n 'and measures how long an ELECTRIC motor has been running, so this is ' +\n 'hardware-specific: only BT30s tags produce it, and only for electric motors. ',\n useWhen:\n 'Asked how much an electric motor has run - a pump, a fan, a tool. If the ' +\n 'equipment does not carry a BT30s there will be no reading, which is expected ' +\n 'rather than a fault. For engines and machines generally, Operating seconds ' +\n 'is the broader signal. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n workseconds: {\n title: 'Operating seconds',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. How ' +\n 'many seconds something has actually been running - an engine, or a machine. ' +\n 'This is run time, not elapsed time: a machine that stood idle all week ' +\n 'accumulates nothing. ',\n useWhen:\n 'Asked how much a machine or engine has been used, for utilisation, billing ' +\n 'by the hour, or service intervals measured in running time. Do not read it ' +\n 'as how long something has been switched on or present. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n workignition: {\n title: 'Engine start',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. The ' +\n 'engine or machine actually starting. This is the machine\\'s own ignition ' +\n 'event. ',\n useWhen:\n 'Asked when a machine was last started, or whether it is running. Do NOT ' +\n 'treat this as the start of a journey: a vehicle can be running while ' +\n 'stationary, and Trip ignition is the separate signal that marks a trip ' +\n 'beginning. The two timestamps genuinely differ, so pick the one that matches ' +\n 'the question. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n tripignition: {\n title: 'Trip start',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. When ' +\n 'a journey started. Deliberately NOT the same thing as the engine starting: ' +\n 'an engine can run for some time - idling, warming up, working in place - ' +\n 'before what counts as a trip begins. ',\n useWhen:\n 'Asked when driving began. For the engine itself, use Engine start; for the ' +\n 'completed journey with its route and distance, use Trips. Conflating engine ' +\n 'start with trip start will overstate driving time. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n calculatedodometer: {\n title: 'Calculated odometer',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. The ' +\n 'vehicle\\'s total distance, combining an initial reading that was entered when ' +\n 'the tracker was fitted with the distance counted since. Fitting a tracker to ' +\n 'a vehicle that has already driven 120,000 km means the raw count starts at ' +\n 'zero, so the initial value is added to give a figure that matches the ' +\n 'dashboard. ',\n useWhen:\n 'Asked for a vehicle\\'s mileage or total distance - this is the number a ' +\n 'person means by \\'the odometer\\'. For how far a single journey went, use the ' +\n 'distance on that trip instead; these answer different questions and should ' +\n 'not be added together. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n\n // --- mesh diagnostics -----------------------------------------------------\n meshDiagnostics: {\n title: 'Mesh diagnostics',\n description:\n 'Diagnostics for the Bluetooth mesh network - the plumbing that lets gateways ' +\n 'relay for each other. Operational detail for Nanolink, not something a ' +\n 'customer\\'s question is usually about. ',\n useWhen:\n 'Reviewed and deliberately NOT exposed as a tool: this is network ' +\n 'diagnostics. Promote it to audience \\'ai\\' if support engineers turn out to ' +\n 'want it. ',\n audience: 'internal',\n reviewed: true,\n cardinality: 'medium',\n },\n meshscanner: {\n title: 'Mesh scanner readings',\n description:\n 'Raw scanner output from mesh nodes. Operational detail rather than an answer ' +\n 'to a customer question. ',\n useWhen:\n 'Reviewed and deliberately NOT exposed as a tool: this is network ' +\n 'diagnostics. Promote it to audience \\'ai\\' if support engineers turn out to ' +\n 'want it. ',\n audience: 'internal',\n reviewed: true,\n cardinality: 'large',\n },\n meshdisconnectslasthour: {\n title: 'Mesh disconnects in the last hour',\n description:\n 'How often mesh nodes dropped in the past hour. A network health signal, ' +\n 'useful for diagnosing coverage rather than for answering questions about ' +\n 'equipment. ',\n useWhen:\n 'Reviewed and deliberately NOT exposed as a tool: this is network ' +\n 'diagnostics. Promote it to audience \\'ai\\' if support engineers turn out to ' +\n 'want it. ',\n audience: 'internal',\n reviewed: true,\n cardinality: 'medium',\n },\n};\n\n/** Mirrors an AI-facing consumer may expose: annotated, reviewed, and marked `ai`. */\nexport function exposedMirrors(): Array<keyof typeof Subscriptions> {\n return (Object.keys(MirrorAnnotations) as Array<keyof typeof Subscriptions>).filter(\n (name) => MirrorAnnotations[name].audience === 'ai' && MirrorAnnotations[name].reviewed === true,\n );\n}\n\n/** Names still carrying a draft description, for a build-time report. */\nexport function draftMirrors(): Array<keyof typeof Subscriptions> {\n return (Object.keys(MirrorAnnotations) as Array<keyof typeof Subscriptions>).filter(\n (name) => MirrorAnnotations[name].reviewed !== true,\n );\n}\n"],"mappings":"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","names":["TempSubscriptions","EventEmitter","connected","import_eventemitter3","EventEmitter","_a","trips","trips","TempSubscriptions"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/MirrorSync.ts","../src/DelegateMap.ts","../node_modules/graphql-ws/dist/common-CGW11Fyb.js","../node_modules/graphql-ws/dist/client.js","../src/SubscriptionClient.ts","../src/definitions/fragments.ts","../src/definitions/subscriptions/references.ts","../src/definitions/subscriptions/trackers.ts","../src/definitions/subscriptions/groups.ts","../src/definitions/subscriptions/servicePlans.ts","../src/definitions/subscriptions/trackerLinks.ts","../src/definitions/subscriptions/referenceLinks.ts","../src/definitions/subscriptions/lostTransmitters.ts","../src/definitions/subscriptions/reports.ts","../src/definitions/subscriptions/savedroutes.ts","../src/definitions/subscriptions/jobs.ts","../src/definitions/subscriptions/cycles.ts","../src/definitions/subscriptions/meshDiagnostics.ts","../src/definitions/subscriptions/gps.ts","../src/definitions/subscriptions/linkconnected.ts","../src/definitions/subscriptions/connected.ts","../src/definitions/subscriptions/voltage.ts","../src/definitions/subscriptions/internalvoltage.ts","../src/definitions/subscriptions/unplug.ts","../src/definitions/subscriptions/alarm.ts","../src/definitions/subscriptions/temperature.ts","../src/definitions/subscriptions/temperaturedecimal.ts","../src/definitions/subscriptions/humiditydecimal.ts","../src/definitions/subscriptions/meshscanner.ts","../src/definitions/subscriptions/meshdisconnectslasthour.ts","../src/definitions/subscriptions/activecounter.ts","../src/definitions/subscriptions/workseconds.ts","../src/definitions/subscriptions/calculatedodometer.ts","../src/definitions/subscriptions/batterypercent.ts","../src/definitions/subscriptions/workignition.ts","../src/definitions/subscriptions/tripignition.ts","../src/definitions/subscriptions/activecycles.ts","../src/definitions/subscriptions/activesteps.ts","../src/definitions/subscriptions/referenceGeoLinks.ts","../src/definitions/subscriptions/trips.ts","../src/definitions/subscriptions/tasks.ts","../src/definitions/subscriptions/taskTemplates.ts","../src/definitions/opsubscriptions/contained.ts","../src/definitions/opsubscriptions/lostposition.ts","../src/definitions/opsubscriptions/stateLinks.ts","../src/definitions/opsubscriptions/stateRefLinks.ts","../src/definitions/opsubscriptions/trips.ts","../src/definitions/requiredMirrors/systemSettings.ts","../src/definitions/requiredMirrors/settings.ts","../src/definitions/requiredMirrors/roles.ts","../src/definitions/tempSubscriptions/index.ts","../src/definitions/messagesubscriptions/messages.ts","../src/definitions/mirrors.ts","../src/definitions/annotations.ts"],"sourcesContent":["import { MirrorSync } from \"./MirrorSync\";\nimport { ReadonlyMapView, DelegatingObject, DelegatingMap } from \"./DelegateMap\";\nimport SubscriptionClient from \"./SubscriptionClient\";\nimport { Subscriptions } from \"./definitions/mirrors\";\n\nexport { SubscriptionClient, MirrorSync, DelegatingObject };\n// Also expose the curated/fragmented subscription collections\nexport { OpSubscriptions, Subscriptions, RequiredMirrors, TempSubscriptions, MessageSubscriptions } from './definitions/mirrors';\n// Semantic annotations for the predefined mirrors. The Record type in that\n// module is the build gate: a new mirror without an annotation will not compile.\nexport { MirrorAnnotations, exposedMirrors, draftMirrors } from './definitions/annotations';\nexport type { MirrorAnnotation, MirrorAudience, MirrorCardinality } from './definitions/annotations';\nexport type { MirrorDeletedMatcher, MirrorDeletedPayload, MirrorUpdatedMatcher, MirrorUpdatedPayload, MirrorWaitOptions } from './MirrorSync';\nexport type { ReadonlyMapView };\n\nexport class Connection<T extends MirrorSync> extends SubscriptionClient {\n public Mirrors: Map<string, T> = new Map();\n constructor() {\n super();\n }\n InitConnection(url: string, connectionParams: () => Promise<Record<string, unknown> | Record<string, unknown>>) {\n this.InitClient({\n url: url,\n connectionParams: connectionParams\n });\n }\n\n registerMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): T {\n let entry = this.Mirrors.get(name);\n if (!entry) {\n const sync = this.createMirror(name, subscription, baseVariables);\n const forward = (event: string, payload: any) => {\n this.emit(`mirror:${event}`, { mirrorName: name, ...payload });\n };\n const handlers: Array<[string, (...args: any[]) => void]> = [\n ['start', (p) => forward('start', p)],\n ['updated', (p) => forward('updated', p)],\n ['deleted', (p) => forward('deleted', p)],\n ['done', (p) => forward('done', p)],\n ['versionError', (p) => forward('versionError', p)],\n ['resubscribe', (p) => forward('resubscribe', p)],\n ['error', (p) => forward('error', p)],\n ];\n handlers.forEach(([e, h]) => sync.on(e as any, h)); \n this.Mirrors.set(name, sync);\n entry = sync;\n this.emit('mirror:registered', entry);\n }\n return entry;\n }\n async getMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): Promise<ReadonlyMapView<string, any>> {\n let entry = this.registerMirror(name, subscription, baseVariables);\n await entry.load();\n return new DelegatingMap(() => entry!.Storage);\n } \n createMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): T {\n return new MirrorSync(this, { subscription, baseVariables }) as T;\n }\n async getPredefinedMirror(name: string): Promise<ReadonlyMapView<string, any>> {\n let subscription = Subscriptions[name as keyof typeof Subscriptions];\n if (!subscription) throw new Error(`No predefined mirror with name '${name}'`);\n let baseVariables: Record<string, unknown> = {}; \n return this.getMirror(name, subscription, baseVariables);\n }\n\n removeMirror(name: string): void {\n const entry = this.Mirrors.get(name);\n if (!entry) return;\n entry.removeAllListeners();\n entry.stop();\n this.Mirrors.delete(name);\n this.emit('mirror:removed', { mirrorName: name });\n }\n\n clearMirrors(): void {\n for (const name of Array.from(this.Mirrors.keys())) {\n this.removeMirror(name);\n }\n this.emit('mirror:cleared');\n }\n}\n","import { DelegatingMap, ReadonlyMapView } from './DelegateMap';\nimport { SubscriptionClient } from './SubscriptionClient';\nimport EventEmitter from 'eventemitter3';\n\n// SyncType enum as described\nexport enum SyncType {\n DELETED = 'DELETED',\n UPDATED = 'UPDATED',\n START = 'START',\n DONE = 'DONE',\n VERSION_ERROR = 'VERSION_ERROR',\n}\n\n// Shape of the subscription payload (generic)\nexport interface CacheSyncResult {\n type: SyncType;\n total?: number | null;\n deleteId?: string; // ObjectId as string\n data?: any;\n deleteVersion?: number;\n // Optional operation-based versioning (string) for hybrid mode\n deleteOpVersion?: string;\n opVersion?: string; // May appear on items inside data\n}\n\nexport interface MirrorSyncOptions {\n /** Subscription document (query string) */\n subscription: string;\n /** Optional logger */\n /** Custom variables base (besides version) */\n baseVariables?: Record<string, unknown>;\n}\n\nexport interface MirrorStats {\n version: number; // numeric version cursor\n opVersion?: string | null; // operation (ObjectId) cursor\n size: number;\n fullSyncInProgress: boolean;\n totalHint?: number | null;\n}\n\nexport interface MirrorSyncEvents {\n start: (payload: { full: boolean }) => void;\n updated: (payload: { doc: MirrorItem; orgDoc: MirrorItem | undefined; full: boolean }) => void;\n deleted: (payload: { orgDoc: MirrorItem }) => void;\n done: (payload: { full: boolean }) => void;\n versionError: (payload: { currentVersion: number }) => void;\n resubscribe: (payload: { fromVersion: number }) => void;\n error?: (errors: any) => void;\n}\n\n\nexport interface MirrorItem { id: string; version?: number; opVersion?: string;[k: string]: any, deleted?: boolean; }\nexport interface MirrorUpdatedPayload { doc: MirrorItem; orgDoc: MirrorItem | undefined; full: boolean; }\nexport interface MirrorDeletedPayload { orgDoc: MirrorItem; }\nexport interface MirrorWaitOptions { timeoutMs?: number; }\nexport type MirrorUpdatedMatcher = string | ((payload: MirrorUpdatedPayload) => boolean);\nexport type MirrorDeletedMatcher = string | ((payload: MirrorDeletedPayload) => boolean);\n\n/**\n * MirrorSync maintains an in-memory mirror of server state based on CacheSyncResult messages.\n * Generic TBase is the item shape (must include id & version).\n */\nexport class MirrorSync extends EventEmitter {\n private client: SubscriptionClient;\n private options: MirrorSyncOptions;\n private _mirror = new Map<string, MirrorItem>();\n private get mirror() { return this._mirror; } \n private buffer: Map<string, MirrorItem> | null = null; // used during full/resubscription phase\n private currentVersion = -1; // numeric cursor (-1 => full sync needed)\n private currentOpVersion: string | null = null; // op cursor (null => full sync needed)\n private unsub: (() => void) | null = null;\n private fullSyncPhase = false; // only true during START..DONE when initiating from version -1\n private log?: (msg: string, meta?: any) => void;\n /** Deferred promise resolved on first DONE after a (re)start full sync cycle. Reset on constructor, start(), and VERSION_ERROR re-init. */\n public loaded!: Promise<ReadonlyMapView<string, any>>; // set via resetLoaded()\n private resolveLoaded?: (ref: ReadonlyMapView<string, any>) => void;\n // Stored client event handlers to allow proper detachment\n private __onReconnected?: () => void;\n private __onConnected?: () => void;\n private backlog: (() => void)[] = [];\n\n get Storage(): ReadonlyMapView<string, any> { return this.mirror; }\n get version(): number { return this.currentVersion; } \n get opVersion(): string | null { return this.currentOpVersion; }\n\n constructor(client: SubscriptionClient, options: MirrorSyncOptions & { log?: (msg: string, meta?: any) => void }) {\n super();\n this.client = client;\n this.options = options;\n this.log = options.log;\n this.attachClientEvents();\n this.resetLoaded();\n }\n\n private l(msg: string, meta?: any) { if (this.log) this.log(msg, meta); }\n\n private attachClientEvents() {\n if (!this.__onReconnected) {\n this.__onReconnected = () => {\n this.emit('resubscribe', { fromVersion: this.currentVersion });\n this.resubscribe();\n };\n this.client.on('reconnected', this.__onReconnected);\n }\n if (!this.__onConnected) {\n this.__onConnected = () => {\n if ((this.currentVersion === -1 || this.currentOpVersion === null) && !this.unsub) {\n this.l('initial connected subscribe', { version: this.currentVersion, opVersion: this.currentOpVersion });\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\n }\n };\n this.client.on('connected', this.__onConnected);\n }\n }\n\n private detachClientEvents() {\n if (this.__onReconnected) {\n this.client.off('reconnected', this.__onReconnected);\n this.__onReconnected = undefined;\n }\n if (this.__onConnected) {\n this.client.off('connected', this.__onConnected);\n this.__onConnected = undefined;\n }\n }\n\n private targetMap(): Map<string, MirrorItem> { return (this.fullSyncPhase && this.buffer) ? this.buffer! : this.mirror; }\n private advanceNumeric(v?: number) { if (typeof v === 'number' && v > this.currentVersion) this.currentVersion = v; }\n private advanceOp(v?: string) { if (v && (!this.currentOpVersion || v > this.currentOpVersion)) this.currentOpVersion = v; }\n\n private subscribeInternal(version: number, opVersion: string | null) {\n if (!this.client) throw new Error('SubscriptionClient missing');\n if (this.unsub) { this.unsub(); this.unsub = null; }\n const variables = { version, opVersion, ...(this.options.baseVariables || {}) };\n this.l('subscribe', { version, opVersion });\n this.unsub = this.client.clientsubscribe<{ [k: string]: CacheSyncResult }>(\n { query: this.options.subscription, variables },\n {\n next: (envelope: { data?: { [k: string]: CacheSyncResult }; errors?: any }) => {\n try {\n if (envelope.errors) {\n this.l('graphql errors', envelope.errors);\n this.emit('error', envelope.errors);\n }\n const payload = envelope.data as { [k: string]: CacheSyncResult } | undefined;\n if (payload) this.handlePayload(payload);\n } catch (err) {\n this.l('unhandled error in next handler', err);\n this.emit('error', err);\n throw err; // rethrow to ensure proper upstream handling (e.g. subscription teardown if needed)\n }\n },\n error: (err: unknown) => {\n this.l('subscription error', err);\n this.emit('error', err);\n },\n complete: () => this.l('subscription complete'),\n }\n );\n }\n\n private resubscribe() {\n // Resubscribe starting from current cursors\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\n }\n\n private start() {\n this.attachClientEvents();\n if (!this.client.isConnected()) { this.l('start deferred (not connected)'); return; }\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\n }\n\n load(): Promise<ReadonlyMapView<string, any>> {\n if (!this.unsub) this.start();\n return this.loaded;\n }\n\n waitForUpdated(matcher: MirrorUpdatedMatcher, options?: MirrorWaitOptions): Promise<MirrorUpdatedPayload> {\n return this.waitForMirrorEvent('updated', matcher, options);\n }\n\n waitForDeleted(matcher: MirrorDeletedMatcher, options?: MirrorWaitOptions): Promise<MirrorDeletedPayload> {\n return this.waitForMirrorEvent('deleted', matcher, options);\n }\n\n private waitForMirrorEvent<TPayload extends MirrorUpdatedPayload | MirrorDeletedPayload>(\n event: 'updated' | 'deleted',\n matcher: string | ((payload: TPayload) => boolean),\n options?: MirrorWaitOptions\n ): Promise<TPayload> {\n const timeoutMs = options?.timeoutMs ?? 120_000;\n return new Promise<TPayload>((resolve, reject) => {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const cleanup = () => {\n this.off(event, handler as any);\n if (timeout) clearTimeout(timeout);\n };\n const handler = (payload: TPayload) => {\n if (!this.matchesMirrorEvent(event, matcher, payload)) return;\n cleanup();\n resolve(payload);\n };\n this.on(event, handler as any);\n if (timeoutMs > 0) {\n timeout = setTimeout(() => {\n cleanup();\n reject(new Error(`Timeout waiting for mirror ${event} event`));\n }, timeoutMs);\n }\n });\n }\n\n private matchesMirrorEvent<TPayload extends MirrorUpdatedPayload | MirrorDeletedPayload>(\n event: 'updated' | 'deleted',\n matcher: string | ((payload: TPayload) => boolean),\n payload: TPayload\n ): boolean {\n if (typeof matcher === 'function') return matcher(payload);\n return event === 'updated'\n ? (payload as MirrorUpdatedPayload).doc.id === matcher\n : (payload as MirrorDeletedPayload).orgDoc.id === matcher;\n }\n\n private resetLoaded() {\n this.loaded = new Promise<ReadonlyMapView<string, any>>(resolve => {\n this.resolveLoaded = resolve;\n });\n }\n\n private handlePayload(raw: { [k: string]: CacheSyncResult } | undefined) {\n if (!raw) return;\n // Always pick the first field in the payload object regardless of configured rootField\n const firstKey = Object.keys(raw)[0];\n if (!firstKey) return;\n const msg = raw[firstKey];\n if (!msg) return;\n const { type } = msg;\n switch (type) {\n case SyncType.START: {\n // Only allocate a new buffer for a true full sync; for delta/resubscribe we append directly\n this.buffer = this.fullSyncPhase ? new Map() : null;\n const payload = { full: this.fullSyncPhase };\n this.emit('start', payload);\n break;\n }\n case SyncType.UPDATED:\n this.applyUpdated(msg.data);\n break;\n case SyncType.DELETED:\n this.applyDeleted(msg.deleteId, msg.deleteVersion, msg.deleteOpVersion);\n break;\n case SyncType.DONE: {\n const wasFull = this.fullSyncPhase;\n if (wasFull && this.buffer) {\n this._mirror = this.buffer;\n this.buffer = null;\n }\n this.fullSyncPhase = false;\n const d = { full: wasFull };\n if (wasFull) {\n for (const b of this.backlog) b();\n this.backlog = [];\n }\n this.emit('done', d);\n // Resolve deferred if pending\n if (this.resolveLoaded) {\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.mirror);\n }\n break;\n }\n case SyncType.VERSION_ERROR:\n this.handleVersionError();\n break;\n }\n }\n private handleVersionError() {\n const ve = { currentVersion: this.currentVersion };\n // restart as full sync\n this.currentVersion = -1;\n this.currentOpVersion = null;\n this.buffer = new Map();\n this.fullSyncPhase = true;\n this.resetLoaded();\n setTimeout(() => \n {\n this.emit('versionError', ve);\n this.subscribeInternal(this.currentVersion, this.currentOpVersion)\n }, 0); // defer to allow event handlers to react before restart\n }\n\n private normalizeItems(data: any): MirrorItem[] {\n if (!data) return [];\n return Array.isArray(data) ? data : [data];\n }\n\n private applyUpdated(data: any) {\n for (const rawItem of this.normalizeItems(data)) {\n if (!rawItem || typeof rawItem.id !== 'string') continue;\n if (rawItem.deleted) {\n this.applyDeleted(rawItem.id, rawItem.version, rawItem.opVersion);\n continue;\n }\n let item = this.map(rawItem);\n if (!item) continue;\n const hasNumeric = typeof item.version === 'number';\n const hasOp = typeof item.opVersion === 'string';\n if (!hasNumeric && !hasOp) continue;\n const existing = this.targetMap().get(item.id);\n const newerNumeric = hasNumeric && (!existing?.version || item.version! >= existing.version);\n const newerOp = hasOp && (!existing?.opVersion || item.opVersion! >= existing.opVersion);\n if (!existing || newerNumeric || newerOp) {\n this.store(item.id, item);\n this.advanceNumeric(item.version);\n this.advanceOp(item.opVersion);\n if (this.fullSyncPhase) {\n this.backlog.push(() => this.emit('updated', { doc:item, orgDoc: existing, full: this.fullSyncPhase }));\n } else {\n this.emit('updated', { doc:item, orgDoc: existing, full: this.fullSyncPhase });\n }\n }\n }\n }\n private applyDeleted(id?: string, deleteVersion?: number, deleteOpVersion?: string) { \n if (!id || this.fullSyncPhase) return;\n const numericStale = !this.fullSyncPhase && typeof deleteVersion === 'number' && this.currentVersion >= 0 && deleteVersion < this.currentVersion;\n const opStale = !this.fullSyncPhase && deleteOpVersion && this.currentOpVersion && deleteOpVersion < this.currentOpVersion;\n if (numericStale && opStale) {\n this.l?.('skip stale delete', { id, deleteVersion, deleteOpVersion });\n return;\n }\n let toDelete = this.mirror.get(id); \n this.advanceNumeric(deleteVersion);\n this.advanceOp(deleteOpVersion);\n if (!this.fullSyncPhase && !!toDelete) {\n this.delete(id);\n this.emit('deleted', { orgDoc: toDelete });\n }\n }\n\n get(id: string): any | undefined { return this.mirror.get(id); }\n values(): any[] { return Array.from(this.mirror.values()); }\n stats(): MirrorStats { return { version: this.currentVersion, opVersion: this.currentOpVersion, size: this.mirror.size, fullSyncInProgress: this.fullSyncPhase }; }\n\n stop() {\n if (this.unsub) { this.unsub(); this.unsub = null; }\n this.detachClientEvents();\n this.currentVersion = -1;\n this.currentOpVersion = null;\n this.buffer = null;\n if (this.resolveLoaded) {\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.mirror);\n }\n this.resetLoaded();\n }\n map(doc: MirrorItem): MirrorItem { return doc; }\n set(key: string, value: any): void\n {\n let item = this.map(value);\n if (!item) return;\n\n this.targetMap().set(key, item); \n }\n store(key: string, value: any): void \n { \n this.set(key, value); \n }\n delete(key: string)\n { \n this.targetMap().delete(key); \n }\n overwrite(map: Map<string, any>): void \n { \n if (this.fullSyncPhase) {\n this.buffer = map\n } else {\n this._mirror = map;\n }\n }\n}\n","// Restored specialized read-only view interface (runtime enforced via absence of mutators)\nexport interface ReadonlyMapView<K, V> extends Iterable<[K, V]> {\n readonly size: number;\n get(key: K): V | undefined;\n has(key: K): boolean;\n entries(): IterableIterator<[K, V]>;\n keys(): IterableIterator<K>;\n values(): IterableIterator<V>;\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void;\n [Symbol.iterator](): IterableIterator<[K, V]>;\n}\n\nexport class DelegatingMap<K, V> implements ReadonlyMapView<K, V> {\n constructor(private readonly resolver: () => ReadonlyMapView<K, V>) { }\n private t(): ReadonlyMapView<K, V> { return this.resolver(); }\n get size(): number { return this.t().size; }\n get(key: K): V | undefined { return this.t().get(key); }\n has(key: K): boolean { return this.t().has(key); }\n entries(): IterableIterator<[K, V]> { return this.t().entries(); }\n keys(): IterableIterator<K> { return this.t().keys(); }\n values(): IterableIterator<V> { return this.t().values(); }\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void {\n this.t().forEach(((v: V, k: K) => callbackfn(v, k, this)) as any, thisArg);\n }\n [Symbol.iterator](): IterableIterator<[K, V]> { return this.t()[Symbol.iterator](); }\n}\n\n/**\n * Presents a ReadonlyMapView<K,V> as an immutable plain object via Proxy.\n * Optionally maps values through a mapper function on access.\n */\nexport class DelegatingObject<K extends string, V, R = V> {\n private readonly proxy: Record<K, R>;\n constructor(private readonly source: ReadonlyMapView<K, V>, private readonly mapFn?: (value: V, key: K) => R) {\n const mapper = (v: V, k: K): R => (this.mapFn ? this.mapFn(v, k) : (v as unknown as R));\n const handler: ProxyHandler<any> = {\n get: (_target, prop: PropertyKey, receiver) => {\n if (prop === Symbol.toStringTag) return 'Object';\n if (typeof prop !== 'string') return Reflect.get(Object.prototype, prop, receiver);\n const key = prop as K;\n const v = this.source.get(key);\n return v === undefined ? undefined : mapper(v, key);\n },\n set: () => false, // immutable\n has: (_target, prop: PropertyKey) => typeof prop === 'string' && this.source.has(prop as K),\n deleteProperty: () => false, // immutable\n ownKeys: () => Array.from(this.source.keys() as unknown as IterableIterator<string>),\n getOwnPropertyDescriptor: (_target, prop: PropertyKey) => {\n if (typeof prop === 'string' && this.source.has(prop as K)) {\n const key = prop as K;\n const v = this.source.get(key)!;\n return { configurable: true, enumerable: true, value: mapper(v, key) };\n }\n return undefined;\n },\n defineProperty: () => false, // immutable\n };\n this.proxy = new Proxy(Object.create(null), handler);\n }\n asObject(): Record<K, R> { return this.proxy; }\n}\n","function extendedTypeof(val) {\n if (val === null) {\n return \"null\";\n }\n if (Array.isArray(val)) {\n return \"array\";\n }\n return typeof val;\n}\nfunction isObject(val) {\n return extendedTypeof(val) === \"object\";\n}\nfunction isAsyncIterable(val) {\n return typeof Object(val)[Symbol.asyncIterator] === \"function\";\n}\nfunction isAsyncGenerator(val) {\n return isObject(val) && typeof Object(val)[Symbol.asyncIterator] === \"function\" && typeof val.return === \"function\";\n}\nfunction areGraphQLFormattedErrors(obj) {\n return Array.isArray(obj) && // must be at least one error\n obj.length > 0 && // error has at least a message\n obj.every((ob) => \"message\" in ob);\n}\nfunction limitCloseReason(reason, whenTooLong) {\n return reason.length < 124 ? reason : whenTooLong;\n}\n\nconst GRAPHQL_TRANSPORT_WS_PROTOCOL = \"graphql-transport-ws\";\nconst DEPRECATED_GRAPHQL_WS_PROTOCOL = \"graphql-ws\";\nvar CloseCode = /* @__PURE__ */ ((CloseCode2) => {\n CloseCode2[CloseCode2[\"InternalServerError\"] = 4500] = \"InternalServerError\";\n CloseCode2[CloseCode2[\"InternalClientError\"] = 4005] = \"InternalClientError\";\n CloseCode2[CloseCode2[\"BadRequest\"] = 4400] = \"BadRequest\";\n CloseCode2[CloseCode2[\"BadResponse\"] = 4004] = \"BadResponse\";\n CloseCode2[CloseCode2[\"Unauthorized\"] = 4401] = \"Unauthorized\";\n CloseCode2[CloseCode2[\"Forbidden\"] = 4403] = \"Forbidden\";\n CloseCode2[CloseCode2[\"SubprotocolNotAcceptable\"] = 4406] = \"SubprotocolNotAcceptable\";\n CloseCode2[CloseCode2[\"ConnectionInitialisationTimeout\"] = 4408] = \"ConnectionInitialisationTimeout\";\n CloseCode2[CloseCode2[\"ConnectionAcknowledgementTimeout\"] = 4504] = \"ConnectionAcknowledgementTimeout\";\n CloseCode2[CloseCode2[\"SubscriberAlreadyExists\"] = 4409] = \"SubscriberAlreadyExists\";\n CloseCode2[CloseCode2[\"TooManyInitialisationRequests\"] = 4429] = \"TooManyInitialisationRequests\";\n return CloseCode2;\n})(CloseCode || {});\nvar MessageType = /* @__PURE__ */ ((MessageType2) => {\n MessageType2[\"ConnectionInit\"] = \"connection_init\";\n MessageType2[\"ConnectionAck\"] = \"connection_ack\";\n MessageType2[\"Ping\"] = \"ping\";\n MessageType2[\"Pong\"] = \"pong\";\n MessageType2[\"Subscribe\"] = \"subscribe\";\n MessageType2[\"Next\"] = \"next\";\n MessageType2[\"Error\"] = \"error\";\n MessageType2[\"Complete\"] = \"complete\";\n return MessageType2;\n})(MessageType || {});\nfunction validateMessage(val) {\n if (!isObject(val)) {\n throw new Error(\n `Message is expected to be an object, but got ${extendedTypeof(val)}`\n );\n }\n if (!val.type) {\n throw new Error(`Message is missing the 'type' property`);\n }\n if (typeof val.type !== \"string\") {\n throw new Error(\n `Message is expects the 'type' property to be a string, but got ${extendedTypeof(\n val.type\n )}`\n );\n }\n switch (val.type) {\n case \"connection_init\" /* ConnectionInit */:\n case \"connection_ack\" /* ConnectionAck */:\n case \"ping\" /* Ping */:\n case \"pong\" /* Pong */: {\n if (val.payload != null && !isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object or nullish or missing, but got \"${val.payload}\"`\n );\n }\n break;\n }\n case \"subscribe\" /* Subscribe */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n if (typeof val.payload.query !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'query' property to be a string, but got ${extendedTypeof(\n val.payload.query\n )}`\n );\n }\n if (val.payload.variables != null && !isObject(val.payload.variables)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'variables' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.variables\n )}`\n );\n }\n if (val.payload.operationName != null && extendedTypeof(val.payload.operationName) !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'operationName' property to be a string or nullish or missing, but got ${extendedTypeof(\n val.payload.operationName\n )}`\n );\n }\n if (val.payload.extensions != null && !isObject(val.payload.extensions)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'extensions' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.extensions\n )}`\n );\n }\n break;\n }\n case \"next\" /* Next */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"error\" /* Error */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!areGraphQLFormattedErrors(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an array of GraphQL errors, but got ${JSON.stringify(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"complete\" /* Complete */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n break;\n }\n default:\n throw new Error(`Invalid message 'type' property \"${val.type}\"`);\n }\n return val;\n}\nfunction parseMessage(data, reviver) {\n return validateMessage(\n typeof data === \"string\" ? JSON.parse(data, reviver) : data\n );\n}\nfunction stringifyMessage(msg, replacer) {\n validateMessage(msg);\n return JSON.stringify(msg, replacer);\n}\n\nexport { CloseCode as C, DEPRECATED_GRAPHQL_WS_PROTOCOL as D, GRAPHQL_TRANSPORT_WS_PROTOCOL as G, MessageType as M, isAsyncGenerator as a, isAsyncIterable as b, isObject as i, limitCloseReason as l, parseMessage as p, stringifyMessage as s, validateMessage as v };\n","import { i as isObject, G as GRAPHQL_TRANSPORT_WS_PROTOCOL, s as stringifyMessage, M as MessageType, C as CloseCode, l as limitCloseReason, p as parseMessage } from './common-CGW11Fyb.js';\nexport { D as DEPRECATED_GRAPHQL_WS_PROTOCOL, v as validateMessage } from './common-CGW11Fyb.js';\n\nfunction createClient(options) {\n const {\n url,\n connectionParams,\n lazy = true,\n onNonLazyError = console.error,\n lazyCloseTimeout: lazyCloseTimeoutMs = 0,\n keepAlive = 0,\n disablePong,\n connectionAckWaitTimeout = 0,\n retryAttempts = 5,\n retryWait = async function randomisedExponentialBackoff(retries2) {\n const retryDelaySeconds = Math.pow(2, retries2);\n await new Promise(\n (resolve) => setTimeout(\n resolve,\n retryDelaySeconds * 1e3 + // add random timeout from 300ms to 3s\n Math.floor(Math.random() * (3e3 - 300) + 300)\n )\n );\n },\n shouldRetry = isLikeCloseEvent,\n on,\n webSocketImpl,\n /**\n * Generates a v4 UUID to be used as the ID using `Math`\n * as the random number generator. Supply your own generator\n * in case you need more uniqueness.\n *\n * Reference: https://gist.github.com/jed/982883\n */\n generateID = function generateUUID() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0, v = c == \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n },\n jsonMessageReplacer: replacer,\n jsonMessageReviver: reviver\n } = options;\n let ws;\n if (webSocketImpl) {\n if (!isWebSocket(webSocketImpl)) {\n throw new Error(\"Invalid WebSocket implementation provided\");\n }\n ws = webSocketImpl;\n } else if (typeof WebSocket !== \"undefined\") {\n ws = WebSocket;\n } else if (typeof global !== \"undefined\") {\n ws = global.WebSocket || // @ts-expect-error: Support more browsers\n global.MozWebSocket;\n } else if (typeof window !== \"undefined\") {\n ws = window.WebSocket || // @ts-expect-error: Support more browsers\n window.MozWebSocket;\n }\n if (!ws)\n throw new Error(\n \"WebSocket implementation missing; on Node you can `import WebSocket from 'ws';` and pass `webSocketImpl: WebSocket` to `createClient`\"\n );\n const WebSocketImpl = ws;\n const emitter = (() => {\n const message = /* @__PURE__ */ (() => {\n const listeners2 = {};\n return {\n on(id, listener) {\n listeners2[id] = listener;\n return () => {\n delete listeners2[id];\n };\n },\n emit(message2) {\n if (\"id\" in message2) listeners2[message2.id]?.(message2);\n }\n };\n })();\n const listeners = {\n connecting: on?.connecting ? [on.connecting] : [],\n opened: on?.opened ? [on.opened] : [],\n connected: on?.connected ? [on.connected] : [],\n ping: on?.ping ? [on.ping] : [],\n pong: on?.pong ? [on.pong] : [],\n message: on?.message ? [message.emit, on.message] : [message.emit],\n closed: on?.closed ? [on.closed] : [],\n error: on?.error ? [on.error] : []\n };\n return {\n onMessage: message.on,\n on(event, listener) {\n const l = listeners[event];\n l.push(listener);\n return () => {\n l.splice(l.indexOf(listener), 1);\n };\n },\n emit(event, ...args) {\n for (const listener of [...listeners[event]]) {\n listener(...args);\n }\n }\n };\n })();\n function errorOrClosed(cb) {\n const listening = [\n // errors are fatal and more critical than close events, throw them first\n emitter.on(\"error\", (err) => {\n listening.forEach((unlisten) => unlisten());\n cb(err);\n }),\n // closes can be graceful and not fatal, throw them second (if error didnt throw)\n emitter.on(\"closed\", (event) => {\n listening.forEach((unlisten) => unlisten());\n cb(event);\n })\n ];\n }\n let connecting, locks = 0, lazyCloseTimeout, retrying = false, retries = 0, disposed = false;\n async function connect() {\n clearTimeout(lazyCloseTimeout);\n const [socket, throwOnClose] = await (connecting ?? (connecting = new Promise(\n (connected, denied) => (async () => {\n if (retrying) {\n await retryWait(retries);\n if (!locks) {\n connecting = void 0;\n return denied({ code: 1e3, reason: \"All Subscriptions Gone\" });\n }\n retries++;\n }\n emitter.emit(\"connecting\", retrying);\n const socket2 = new WebSocketImpl(\n typeof url === \"function\" ? await url() : url,\n GRAPHQL_TRANSPORT_WS_PROTOCOL\n );\n let connectionAckTimeout, queuedPing;\n function enqueuePing() {\n if (isFinite(keepAlive) && keepAlive > 0) {\n clearTimeout(queuedPing);\n queuedPing = setTimeout(() => {\n if (socket2.readyState === WebSocketImpl.OPEN) {\n socket2.send(stringifyMessage({ type: MessageType.Ping }));\n emitter.emit(\"ping\", false, void 0);\n }\n }, keepAlive);\n }\n }\n errorOrClosed((errOrEvent) => {\n connecting = void 0;\n clearTimeout(connectionAckTimeout);\n clearTimeout(queuedPing);\n denied(errOrEvent);\n if (errOrEvent instanceof TerminatedCloseEvent) {\n socket2.close(4499, \"Terminated\");\n socket2.onerror = null;\n socket2.onclose = null;\n }\n });\n socket2.onerror = (err) => emitter.emit(\"error\", err);\n socket2.onclose = (event) => emitter.emit(\"closed\", event);\n socket2.onopen = async () => {\n try {\n emitter.emit(\"opened\", socket2);\n const payload = typeof connectionParams === \"function\" ? await connectionParams() : connectionParams;\n if (socket2.readyState !== WebSocketImpl.OPEN) return;\n socket2.send(\n stringifyMessage(\n payload ? {\n type: MessageType.ConnectionInit,\n payload\n } : {\n type: MessageType.ConnectionInit\n // payload is completely absent if not provided\n },\n replacer\n )\n );\n if (isFinite(connectionAckWaitTimeout) && connectionAckWaitTimeout > 0) {\n connectionAckTimeout = setTimeout(() => {\n socket2.close(\n CloseCode.ConnectionAcknowledgementTimeout,\n \"Connection acknowledgement timeout\"\n );\n }, connectionAckWaitTimeout);\n }\n enqueuePing();\n } catch (err) {\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.InternalClientError,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Internal client error\"\n )\n );\n }\n };\n let acknowledged = false;\n socket2.onmessage = ({ data }) => {\n try {\n const message = parseMessage(data, reviver);\n emitter.emit(\"message\", message);\n if (message.type === \"ping\" || message.type === \"pong\") {\n emitter.emit(message.type, true, message.payload);\n if (message.type === \"pong\") {\n enqueuePing();\n } else if (!disablePong) {\n socket2.send(\n stringifyMessage(\n message.payload ? {\n type: MessageType.Pong,\n payload: message.payload\n } : {\n type: MessageType.Pong\n // payload is completely absent if not provided\n }\n )\n );\n emitter.emit(\"pong\", false, message.payload);\n }\n return;\n }\n if (acknowledged) return;\n if (message.type !== MessageType.ConnectionAck)\n throw new Error(\n `First message cannot be of type ${message.type}`\n );\n clearTimeout(connectionAckTimeout);\n acknowledged = true;\n emitter.emit(\"connected\", socket2, message.payload, retrying);\n retrying = false;\n retries = 0;\n connected([\n socket2,\n new Promise((_, reject) => errorOrClosed(reject))\n ]);\n } catch (err) {\n socket2.onmessage = null;\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.BadResponse,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Bad response\"\n )\n );\n }\n };\n })()\n )));\n if (socket.readyState === WebSocketImpl.CLOSING) await throwOnClose;\n let release = () => {\n };\n const released = new Promise((resolve) => release = resolve);\n return [\n socket,\n release,\n Promise.race([\n // wait for\n released.then(() => {\n if (!locks) {\n const complete = () => socket.close(1e3, \"Normal Closure\");\n if (isFinite(lazyCloseTimeoutMs) && lazyCloseTimeoutMs > 0) {\n lazyCloseTimeout = setTimeout(() => {\n if (socket.readyState === WebSocketImpl.OPEN) complete();\n }, lazyCloseTimeoutMs);\n } else {\n complete();\n }\n }\n }),\n // or\n throwOnClose\n ])\n ];\n }\n function shouldRetryConnectOrThrow(errOrCloseEvent) {\n if (isLikeCloseEvent(errOrCloseEvent) && (isFatalInternalCloseCode(errOrCloseEvent.code) || [\n CloseCode.InternalServerError,\n CloseCode.InternalClientError,\n CloseCode.BadRequest,\n CloseCode.BadResponse,\n CloseCode.Unauthorized,\n // CloseCode.Forbidden, might grant access out after retry\n CloseCode.SubprotocolNotAcceptable,\n // CloseCode.ConnectionInitialisationTimeout, might not time out after retry\n // CloseCode.ConnectionAcknowledgementTimeout, might not time out after retry\n CloseCode.SubscriberAlreadyExists,\n CloseCode.TooManyInitialisationRequests\n // 4499, // Terminated, probably because the socket froze, we want to retry\n ].includes(errOrCloseEvent.code)))\n throw errOrCloseEvent;\n if (disposed) return false;\n if (isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1e3)\n return locks > 0;\n if (!retryAttempts || retries >= retryAttempts) throw errOrCloseEvent;\n if (!shouldRetry(errOrCloseEvent)) throw errOrCloseEvent;\n return retrying = true;\n }\n if (!lazy) {\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [, , throwOnClose] = await connect();\n await throwOnClose;\n } catch (errOrCloseEvent) {\n try {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n } catch (errOrCloseEvent2) {\n return onNonLazyError?.(errOrCloseEvent2);\n }\n }\n }\n })();\n }\n function subscribe(payload, sink) {\n const id = generateID(payload);\n let done = false, errored = false, releaser = () => {\n locks--;\n done = true;\n };\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [socket, release, waitForReleaseOrThrowOnClose] = await connect();\n if (done) return release();\n const unlisten = emitter.onMessage(id, (message) => {\n switch (message.type) {\n case MessageType.Next: {\n sink.next(message.payload);\n return;\n }\n case MessageType.Error: {\n errored = true, done = true;\n sink.error(message.payload);\n releaser();\n return;\n }\n case MessageType.Complete: {\n done = true;\n releaser();\n return;\n }\n }\n });\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Subscribe,\n payload\n },\n replacer\n )\n );\n releaser = () => {\n if (!done && socket.readyState === WebSocketImpl.OPEN)\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Complete\n },\n replacer\n )\n );\n locks--;\n done = true;\n release();\n };\n await waitForReleaseOrThrowOnClose.finally(unlisten);\n return;\n } catch (errOrCloseEvent) {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n }\n }\n })().then(() => {\n if (!errored) sink.complete();\n }).catch((err) => {\n sink.error(err);\n });\n return () => {\n if (!done) releaser();\n };\n }\n return {\n on: emitter.on,\n subscribe,\n iterate(request) {\n const pending = [];\n const deferred = {\n done: false,\n error: null,\n resolve: () => {\n }\n };\n const dispose = subscribe(request, {\n next(val) {\n pending.push(val);\n deferred.resolve();\n },\n error(err) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n },\n complete() {\n deferred.done = true;\n deferred.resolve();\n }\n });\n const iterator = async function* iterator2() {\n for (; ; ) {\n if (!pending.length) {\n await new Promise((resolve) => deferred.resolve = resolve);\n }\n while (pending.length) {\n yield pending.shift();\n }\n if (deferred.error) {\n throw deferred.error;\n }\n if (deferred.done) {\n return;\n }\n }\n }();\n iterator.throw = async (err) => {\n if (!deferred.done) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n }\n return { done: true, value: void 0 };\n };\n iterator.return = async () => {\n dispose();\n return { done: true, value: void 0 };\n };\n return iterator;\n },\n async dispose() {\n disposed = true;\n if (connecting) {\n const [socket] = await connecting;\n socket.close(1e3, \"Normal Closure\");\n }\n },\n terminate() {\n if (connecting) {\n emitter.emit(\"closed\", new TerminatedCloseEvent());\n }\n }\n };\n}\nclass TerminatedCloseEvent extends Error {\n name = \"TerminatedCloseEvent\";\n message = \"4499: Terminated\";\n code = 4499;\n reason = \"Terminated\";\n wasClean = false;\n}\nfunction isLikeCloseEvent(val) {\n return isObject(val) && \"code\" in val && \"reason\" in val;\n}\nfunction isFatalInternalCloseCode(code) {\n if ([\n 1e3,\n // Normal Closure is not an erroneous close code\n 1001,\n // Going Away\n 1006,\n // Abnormal Closure\n 1005,\n // No Status Received\n 1012,\n // Service Restart\n 1013,\n // Try Again Later\n 1014\n // Bad Gateway\n ].includes(code))\n return false;\n return code >= 1e3 && code <= 1999;\n}\nfunction isWebSocket(val) {\n return typeof val === \"function\" && \"constructor\" in val && \"CLOSED\" in val && \"CLOSING\" in val && \"CONNECTING\" in val && \"OPEN\" in val;\n}\n\nexport { CloseCode, GRAPHQL_TRANSPORT_WS_PROTOCOL, MessageType, TerminatedCloseEvent, createClient, parseMessage, stringifyMessage };\n","import { createClient, Client, ClientOptions, SubscribePayload } from 'graphql-ws';\n// Removed direct 'ws' import for browser compatibility; will resolve at runtime if needed.\nimport EventEmitter from 'eventemitter3';\n\n/** Events emitted by SubscriptionClient\n * connecting - before opening a socket (initial or reconnect attempt)\n * connected - first successful connection\n * reconnected - a subsequent successful connection after a disconnect\n * disconnected - socket closed ( { code, reason, wasClean } )\n * error - protocol or network error (Error)\n * retry - about to attempt reconnect ( { attempt } )\n */\nexport interface SubscriptionClientEvents {\n connecting: () => void;\n connected: () => void;\n reconnected: () => void;\n disconnected: (info: { code: number; reason: string; wasClean: boolean }) => void;\n error: (err: unknown) => void;\n retry: (info: { attempt: number }) => void;\n}\n\nexport interface SubscriptionClientOptions {\n url: string;\n /** optional async or sync connection params */\n connectionParams?: ClientOptions['connectionParams'];\n /** number of reconnect attempts, default Infinity */\n maxReconnectAttempts?: number;\n /** initial delay ms before first retry (exponential backoff) */\n retryDelayMs?: number;\n /** max backoff cap */\n maxRetryDelayMs?: number;\n /** idle timeout for operations (optional) */\n operationTimeoutMs?: number;\n /** optional custom WebSocket implementation */\n webSocketImpl?: any; // generic to avoid pulling node 'ws' types into browser bundle\n /** optional logger */\n log?: (msg: string, meta?: any) => void;\n}\n\nexport interface SubscribeOptions<TData = any, TVars = Record<string, unknown>> {\n query: string;\n variables?: TVars;\n /** optional per-subscription timeout override */\n timeoutMs?: number;\n operationName?: string;\n extensions?: Record<string, any>;\n}\n\nexport interface Observer<T> {\n next?: (data: T) => void;\n error?: (err: unknown) => void;\n complete?: () => void;\n}\n\nexport class SubscriptionClient extends EventEmitter {\n private options?: Required<Omit<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>> & Pick<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>;\n private client: Client | null = null;\n private connectAttempt = 0;\n private closedExplicitly = false;\n private reconnecting = false;\n private reconnectTimer: NodeJS.Timeout | null = null;\n private hasEverConnected = false;\n\n constructor() {\n super();\n }\n InitClient(opts: SubscriptionClientOptions) {\n this.options = {\n url: opts.url,\n connectionParams: opts.connectionParams,\n maxReconnectAttempts: opts.maxReconnectAttempts ?? Infinity,\n retryDelayMs: opts.retryDelayMs ?? 500,\n maxRetryDelayMs: opts.maxRetryDelayMs ?? 10_000,\n operationTimeoutMs: opts.operationTimeoutMs ?? 0,\n webSocketImpl: opts.webSocketImpl ?? undefined,\n log: opts.log,\n } as any;\n }\n\n private resolveWebSocketImpl(): any {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n // Proxy-aware priority:\n // 1. Explicit user-supplied impl\n // 2. Browser bundle: never load 'ws' — use global WebSocket\n // 3. If proxy env detected (Node) -> prefer 'ws'\n // 4. Global WebSocket (browser / Node >= 18 native)\n // 5. Fallback to require('ws') (Node)\n if (this.options.webSocketImpl) return this.options.webSocketImpl;\n\n if (process.env.BUILD_TARGET === 'browser') {\n const g: any = (globalThis as any);\n if (typeof g.WebSocket === 'function') return g.WebSocket;\n throw new Error('No WebSocket implementation found in browser. Provide webSocketImpl.');\n } else {\n const proxyEnv = process.env.ALL_PROXY || process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.GLOBAL_AGENT_HTTP_PROXY;\n if (proxyEnv) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return require('ws');\n } catch (e) {\n this.log('Proxy detected but failed to load ws package', e);\n }\n }\n const g: any = (globalThis as any);\n if (typeof g.WebSocket === 'function') return g.WebSocket;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return require('ws');\n } catch {\n throw new Error('No WebSocket implementation found. Provide webSocketImpl in SubscriptionClientOptions.');\n }\n }\n }\n\n /** Returns true if an underlying websocket client exists (connected or in-flight). */\n isConnected(): boolean {\n return !!this.client; // createClientIfNeeded only after socket open attempt\n }\n\n private log(msg: string, meta?: any) {\n if (this.options?.log) this.options.log(msg, meta);\n }\n\n private createClientIfNeeded(isReconnect: boolean) {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n if (this.client) return; // already have client\n const { url, connectionParams } = this.options;\n const webSocketImpl = this.resolveWebSocketImpl();\n this.client = createClient({\n url,\n connectionParams,\n webSocketImpl: webSocketImpl as any,\n lazy: false,\n keepAlive: 12000,\n retryAttempts: 0,\n shouldRetry: () => false,\n on: {\n connected: () => {\n const wasReconnect = isReconnect && this.connectAttempt > 0;\n this.connectAttempt = 0;\n if (wasReconnect && this.hasEverConnected) {\n this.emit('reconnected');\n this.log('reconnected');\n } else {\n this.emit('connected');\n this.log('connected');\n }\n this.hasEverConnected = true;\n },\n error: (err) => {\n this.emit('error', err);\n this.log('socket error', err);\n },\n closed: (ev) => {\n const e = ev as CloseEvent | { code: number; reason: string; wasClean: boolean };\n this.log('closed', e);\n this.emit('disconnected', { code: (e as any).code, reason: (e as any).reason?.toString?.() ?? '', wasClean: (e as any).wasClean ?? false });\n this.client = null; // allow recreate — socket is already closed, no dispose needed\n if (!this.closedExplicitly) this.scheduleReconnect();\n },\n },\n });\n }\n\n // assureConnected removed per revert request\n\n /** Establish the WebSocket connection if not already created. Idempotent. */\n connect(): void {\n if (this.client) return; // already created\n this.emit('connecting');\n this.log('connecting');\n this.createClientIfNeeded(false);\n }\n\n private scheduleReconnect() {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n if (this.reconnecting) return;\n if (this.closedExplicitly) {\n this.log('Reconnect prevented: client closed explicitly');\n return;\n }\n if (this.connectAttempt >= this.options.maxReconnectAttempts) {\n this.log('max reconnect attempts reached');\n return;\n }\n this.reconnecting = true;\n const delay = Math.min(\n this.options.retryDelayMs * Math.pow(2, this.connectAttempt),\n this.options.maxRetryDelayMs,\n );\n this.emit('retry', { attempt: this.connectAttempt });\n this.log('reconnect scheduled', { attempt: this.connectAttempt, delay });\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n this.reconnectTimer = setTimeout(() => {\n this.reconnecting = false;\n this.connectAttempt++;\n this.emit('connecting');\n this.log('connecting');\n this.createClientIfNeeded(true);\n }, delay);\n }\n\n clientsubscribe<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>, observer: Observer<{ data?: TData; errors?: any }>): () => void {\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\n if (!this.client) throw new Error('Client not connected - call connect() first');\n const payload: SubscribePayload = {\n query: options.query,\n variables: options.variables as any,\n operationName: options.operationName,\n extensions: options.extensions,\n };\n let finished = false;\n const timeoutMs = options.timeoutMs ?? this.options.operationTimeoutMs;\n let timeout: NodeJS.Timeout | undefined;\n if (timeoutMs > 0) {\n timeout = setTimeout(() => {\n if (finished) return;\n finished = true;\n observer.error?.(new Error('Operation timed out'));\n dispose();\n }, timeoutMs);\n }\n const dispose = this.client.subscribe(payload, {\n next: (data) => observer.next?.(data as any),\n error: (err) => {\n if (finished) return;\n finished = true;\n if (timeout) clearTimeout(timeout);\n observer.error?.(err);\n },\n complete: () => {\n if (finished) return;\n finished = true;\n if (timeout) clearTimeout(timeout);\n observer.complete?.();\n },\n });\n return () => {\n if (finished) return;\n finished = true;\n if (timeout) clearTimeout(timeout);\n dispose();\n };\n }\n\n /** Async iterator variant (convenience wrapper around underlying client.iterate). */\n clientiterate<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>): AsyncIterable<{ data?: TData; errors?: any }> {\n if (!this.client) throw new Error('Client not connected - call connect() first');\n const payload: SubscribePayload = {\n query: options.query,\n variables: options.variables as any,\n operationName: options.operationName,\n extensions: options.extensions,\n };\n // graphql-ws client.iterate returns AsyncIterableExecutionResult\n // We forward it directly (user can for-await over it).\n return (this.client as any).iterate(payload);\n }\n\n async close(code = 1000, reason = 'Normal Closure') {\n this.closedExplicitly = true;\n this.log('closing client');\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n const c = this.client as any;\n if (c) { try { c.dispose(); } catch { } }\n this.client = null;\n this.removeAllListeners();\n }\n}\n\nexport default SubscriptionClient;\n","export const commonFields = 'id:idStr version createdDateTime'\nexport const commonReferenceFields = 'groupId groupName groupPath labels canAnonymize tokenCount accessRoles'\nexport const lastLogFields = 'id eventCode stamp serviceDataId userId comment triggerSignature'\nexport const serviceDataCommonFields = `id createdDateTime servicePlanId userId lastServiceDate lastLog {${lastLogFields}}`\nexport const fieldMonitorFields = `__typename ... on QMFieldMonitorNumeric { id: idStr field operator threshold } ... on QMFieldMonitorFaultCodes { id: idStr signalNames }`\nexport const serviceDataMonitorFragment = `... on QMServiceDataMonitor { ${serviceDataCommonFields} trackerVID }`\nexport const cargoRequirementFields = 'id: idStr groupId count comparison linkTypes'\nexport const cargoRequirementLists = `assetRequirements { ${cargoRequirementFields} } userRequirements { ${cargoRequirementFields} } vehicleRequirements { ${cargoRequirementFields} } siteRequirements { ${cargoRequirementFields} }`\nexport const serviceDataCargoFragment = `... on QMServiceDataCargo { ${serviceDataCommonFields} requirementMatches { requirementId referenceIds } }`\nexport const scheduleExceptionFields = 'id: idStr type fromMinutes toMinutes days weeks monthDays'\nexport const serviceFieldFields = 'id: idStr key label type required includeInLog'\nexport const documentFields = 'id name description url createdDate mimeType fileName'\nexport const servicePlanScheduledFields = `unit count intervalType dueSlackInDays dueSlackHours timeZone startTimeMinutes exceptions { ${scheduleExceptionFields} } requireQrScan allowBackdating fields { ${serviceFieldFields} } documents { ${documentFields} }`\nexport const serviceDataScheduledFragment = `... on QMServiceDataScheduled { ${serviceDataCommonFields} startDate anchor due shifted }`\nexport const servicePlanCheckListFields = `triggerOnTrip triggerServicePlanIds`\nexport const serviceLogSnapshotFields = `computedCode reason tripLastStart items { referenceId referenceName referenceType linkType serviceDataId servicePlanId servicePlanName isTrigger lastLog { id eventCode stamp comment } } excluded { referenceId referenceName referenceType }`\nexport const serviceDataCheckListFragment = `... on QMServiceDataCheckList { ${serviceDataCommonFields} lastApprovedAt snapshotReferenceIds lastLog { snapshot { ${serviceLogSnapshotFields} } } }`\nexport const mCommonFields = 'type total deleteId deleteVersion'\nexport const mServiceCommonFields = `name description createdDate createdBy ${commonFields}`\n","import { mCommonFields, commonFields, commonReferenceFields, serviceDataCommonFields, serviceDataMonitorFragment, serviceDataCargoFragment, serviceDataScheduledFragment, serviceDataCheckListFragment } from '../fragments'\n\nexport const references = `\n subscription References($version:Int!) {\n mreference_getbulk(version: $version, subscribe:true)\n {\n ${mCommonFields}\n data {\n __typename\n ... on QMUser {\n description\n ${commonFields}\n ${commonReferenceFields}\n mobilePhoneNumber\n mobileCountryCode\n firstName\n middleName\n lastName\n fullName\n email\n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n },\n isAzureADUser\n authProvider\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n }\n ... on QMAsset { \n ${commonFields}\n ${commonReferenceFields}\n brand \n model \n keyWords\n description\n serial \n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n }\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n }\n ... on QMVehicle {\n ${commonFields}\n ${commonReferenceFields}\n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n }\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n registration\n registrationStatus\n vin\n brand\n brandId\n model\n modelId\n serial\n modelYear\n keyWords\n description\n variant\n variantId\n vVersion\n vVersionId\n bodyType\n usage\n extended {\n category\n ecTypeApproval\n euVariant\n euVersion\n extraEquipment\n firstRegistrationDate\n fuelType\n kind\n lastInspectionDate\n lastInspectionKind\n lastInspectionResult\n leasingPeriodEnd\n leasingPeriodStart\n mileage\n mileageAnnualAverage\n ncapFive\n registrationStatusUpdatedAt\n status\n statusUpdatedAt\n weight {\n technicalTotalWeight\n totalWeight\n vehicleWeight\n driveableWeightMinimum\n driveableWeightMaximum\n vValueAirSuspension\n vValueMechanicalSuspension\n roadTrainWeight\n couplingDevice\n couplingDeviceLoadMaximum\n trailerWithBrakesWeightMaximum\n trailerWithoutBrakesWeightMaximum\n trailerTotalWeightMaximum\n division\n }\n age {\n years\n months\n }\n axle {\n axles\n axleTrack\n pullingAxlesString\n driveShaftPressureMaximum\n trailerAllowedPressureMaximum\n }\n body {\n doors\n vinPlacement\n trackWidthFront\n trackWidthRear\n passengers\n seatsMinimum\n seatsMaximum\n standingPassengersMinimum\n standingPassengersMaximum\n rimsAndTires\n color\n }\n periodicTaxes {\n taxes {\n name\n amount\n paymentFrequency\n }\n totalAmount\n paymentFrequency\n }\n leasingPeriods {\n leasingPeriodStart\n leasingPeriodEnd\n }\n permits {\n id\n name\n comment\n validFrom\n validTo\n }\n manufacturer {\n name\n region\n country\n }\n drivingLicense {\n category\n }\n emission {\n co2\n co\n hcPlusNox\n nox\n particles\n particleFilter\n smokeDensity\n smokeDensityEngineSpeed\n energyClass\n euronorm\n }\n engine {\n fuelEfficiency\n electricityEfficiency\n topSpeed\n fuelType\n cylinders\n engineCode\n engineDisplacement\n enginePower\n horsepower\n powerToWeightRatio\n }\n equipment {\n id\n name\n quantity\n }\n inspections {\n id\n vehicleId\n registration\n vin\n date\n result\n mileage\n pdf\n }\n }\n }\n ... on QMSite { \n description\n ${commonFields}\n ${commonReferenceFields}\n name\n type\n geoArea {\n longitude\n latitude\n }\n documents {\n id name url createdDate mimeType fileName\n }\n serviceData {\n __typename\n ... on QMServiceDataOneshot { ${serviceDataCommonFields} due dueSlackInDays }\n ... on QMServiceDataPeriodic { ${serviceDataCommonFields} startDate lastServiceDate period periodCount intervalType due dueSlackInDays }\n ... on QMServiceDataWarranty { ${serviceDataCommonFields} purchaseDate warrantyInMonths due dueSlackInDays }\n ... on QMServiceDataTrackerStateInt { ${serviceDataCommonFields} dueSlackSeconds : dueSlack nextDueSeconds : nextDue trackerVID }\n ... on QMServiceDataTrackerStateDouble { ${serviceDataCommonFields} dueSlackKM : dueSlack nextDueKM : nextDue trackerVID }\n ${serviceDataMonitorFragment}\n ${serviceDataCargoFragment}\n ${serviceDataScheduledFragment}\n ${serviceDataCheckListFragment}\n }\n externalKeys\n externalIds { key value }\n externalBag\n deleted\n }\n } \n }\n}`\n","import { mCommonFields, commonFields } from '../fragments'\n\nexport const trackers = `\n subscription Trackers($version:Int!) {\n mtrackers_getbulk(version: $version, subscribe:true)\n {\n ${mCommonFields}\n data \n {\n ${commonFields}\n objId: id\n vID\n pID\n key\n type\n model\n revision\n trackerName\n referenceId\n deleted\n }\n }\n }`\n","import { mCommonFields } from '../fragments'\n\nexport const groups = `\n subscription Groups($version:Int!)\n {\n mcommon_getgroups(version: $version, subscribe: true)\n { \n ${mCommonFields}\n data {\n id:idStr \n version\n parentId\n name\n description\n level \n type\n anchorPoints\n accessRoles\n }\n }\n }`\n","import { mCommonFields, mServiceCommonFields, fieldMonitorFields, cargoRequirementLists, servicePlanScheduledFields, servicePlanCheckListFields } from '../fragments'\n\nexport const servicePlans = `\n subscription Service($version: Int!)\n {\n mservice_get(version: $version, subscribe: true)\n {\n ${mCommonFields}\n data {\n __typename\n ... on QMServicePlanOneshot \n { \n ${mServiceCommonFields}\n dueSlackInDays\n deleted\n }\n ... on QMServicePlanPeriodic {\n ${mServiceCommonFields}\n dueSlackInDays\n period\n periodCount\n intervalType\n deleted\n }\n ... on QMServicePlanWarranty { \n ${mServiceCommonFields}\n dueSlackInDays\n warrantyInMonths\n deleted\n }\n ... on QMServicePlanKM {\n ${mServiceCommonFields}\n dueSlackKM : dueSlack\n intervalKM : interval\n deleted\n }\n ... on QMServicePlanWorkSeconds {\n ${mServiceCommonFields}\n dueSlackSeconds : dueSlack\n intervalSeconds : interval\n deleted\n }\n ... on QMServicePlanMonitor {\n ${mServiceCommonFields}\n fieldMonitors { ${fieldMonitorFields} }\n deleted\n }\n ... on QMServicePlanCargo {\n ${mServiceCommonFields}\n ${cargoRequirementLists}\n deleted\n }\n ... on QMServicePlanScheduled {\n ${mServiceCommonFields}\n ${servicePlanScheduledFields}\n deleted\n }\n ... on QMServicePlanCheckList {\n ${mServiceCommonFields}\n ${servicePlanCheckListFields}\n deleted\n }\n }\n }\n }`\n","import { mCommonFields } from '../fragments'\n\nexport const trackerLinks = `\n subscription BLELinks($opVersion: String)\n {\n otrackers_getlinksbulk(opversion: $opVersion, subscribe: true, subscriberssiupdates: true)\n {\n ${mCommonFields}\n data {\n id\n createdDateTime: creationTime\n receiverVID\n rSSI\n transmitterVID\n opVersion\n deleted\n disabled\n }\n }\n }`\n","import { mCommonFields } from '../fragments'\n\nexport const referenceLinks = `\n subscription ReferenceLink($version: Int!, $opVersion: String)\n {\n oreference_getlinks(version: $version, opversion: $opVersion, subscribe: true)\n {\n ${mCommonFields}\n data {\n id\n type\n createdDateTime: creationTime\n referenceId1\n referenceId2\n autoGenerated\n version,\n opVersion,\n deleted\n }\n }\n }`\n","export const lostTransmitters = `\n subscription lostTransmitters($opVersion: String) {\n otrackers_losttransmitters(\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n id:transmitterVID\n opVersion\n transmitterReferenceGroupId\n transmitterReferenceType\n transmitterReferenceGroupPath\n lostBy {\n transmitterVID\n receiverVID\n startTime\n endTime\n locationInfo {\n date\n speed\n bearing\n accuracy\n altitude\n longitude\n latitude\n }\n receiverTrackerType\n } \n }\n deleteVersion\n }\n }\n `\n","import { mCommonFields } from '../fragments'\n\nexport const reports = `\n subscription Reports($version: Int!) {\n mreports_getreport(version: $version, subscribe: true)\n {\n ${mCommonFields}\n data {\n id\n name\n description\n route\n version\n }\n }\n }\n `\n","import { mCommonFields } from '../fragments'\n\n// Scope-filtered replacement for `reports` (mreports_getreport). The server only sends the\n// saved routes (views, reports, dashboard tiles) the caller may see. `reports` is kept for\n// builds released before scope; new consumers use this one.\nexport const savedroutes = `\n subscription SavedRoutes($version: Int!) {\n msavedroutes_get(version: $version, subscribe: true)\n {\n ${mCommonFields}\n data {\n id\n name\n description\n route\n version\n groupId\n kind\n scope\n ownerId\n showOnDashboard\n icon\n }\n }\n }\n `\n","import { mCommonFields } from '../fragments'\n\nexport const jobs = `subscription jobs($version: Int!) { \n mjobs_get(version:$version, subscribe: true) {\n ${mCommonFields}\n data {\n id\n createdDateTime\n name\n description\n version\n disabled\n deleted\n groupId\n scope\n ownerId\n trigger {\n __typename\n ... on QMJobTriggerAssetFound {\n assetId\n }\n ... on QMJobTriggerOneshot {\n when\n }\n ... on QMJobTriggerScheduleTimeOfDay {\n startTime\n period\n lastRun\n interval\n }\n ... on QMJobTriggerMonitor\n {\n initialCount\n initialCheck\n url\n }\n ... on QMJobTriggerReferenceLost\n {\n referenceId\n trackerVID\n }\n }\n action {\n __typename\n ... on QMJobActionAssetFoundMail {\n actionType\n assetId\n references\n groups\n }\n ... on QMJobActionReport {\n actionType\n reports {\n reportId\n args {name value }\n }\n groups\n references\n dontSendEmptyReport\n }\n ... on QMJobActionSMS {\n actionType\n userId\n }\n } \n } \n } \n }`\n","import { mCommonFields } from '../fragments'\n\nexport const cycles = `subscription cycles($version: Int!) {\n mcycle_getcycles(version: $version, subscribe: true) {\n ${mCommonFields}\n data {\n id\n name\n isActive\n labelFilter\n startStepId\n stopStepId\n cancelStepId\n deleted\n version\n steps {\n stepId\n name\n estimateDurationInSeconds\n displayOrder\n onlyOnce\n enterRules {\n __typename\n ... on QMFlowRuleOnExitSteps {\n ruleId\n exitStepIds\n }\n ... on QMTrackingEnterRuleReferenceLink {\n ruleId\n referenceIds\n gracePeriodInSeconds\n whenActive\n }\n ... on QMEnterRuleOnReferenceCreate {\n ruleId \n }\n ... on QMFlowForeignEnterRuleOnEnter {\n foreignCycleRelations{\n foreignCycleId\n foreignStepId\n }\n ruleId \n }\n ... on QMTrackingEnterRuleNearestReferenceLink {\n referenceIds\n ruleId \n gracePeriodInSeconds\n }\n } \n exitRules {\n __typename\n ... on QMFlowRuleOnEnterSteps {\n ruleId\n enterStepIds\n }\n ... on QMTrackingExitRuleReferenceLink {\n ruleId\n referenceIds\n gracePeriodInSeconds\n whenActive\n }\n ... on QMFlowForeignExitRuleOnEnter {\n foreignCycleRelations {\n foreignCycleId\n foreignStepId\n }\n ruleId\n }\n ... on QMTrackingExitRuleNearestReferenceLink {\n referenceIds\n ruleId\n gracePeriodInSeconds\n }\n }\n } \n }\n }\n }`\n","export const meshDiagnostics = `\n subscription meshdiagnostics($opVersion: String) {\n otrackers_meshdiagnostics( \n opversion: $opVersion,\n subscribe: true\n ) {\n type\n total\n deleteId\n data {\n id: vID\n vID\n stamp\n opVersion\n advertiserCost\n errorCodes\n nextHopAddress\n nextHopVID\n nextHopPower\n nextHopQuality\n nextHopRSSI\n qualityIndicator\n routersInNeighborhood\n sinkAddress\n sinkVID\n }\n deleteVersion\n }\n }\n `\n","export const gps = `\n subscription getpositionbulk($opVersion: String) {\n otrackers_getpositionsbulk(\n includeInitial: true\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n opVersion\n referenceGroupId\n referenceType\n referenceGroupPath\n stamp\n locationInfo {\n date\n speed\n bearing\n accuracy\n altitude\n longitude\n latitude\n } \n isFixed\n id:trackerVID\n }\n deleteVersion\n }\n } \n `\n","export const linkconnected = `subscription linkconnected($opVersion: String) {\n otrackers_linkconnectedbulk(subscribe: true, includeInitial: true, opVersion: $opVersion) {\n type\n total\n deleteId\n data{\n id: vID\n opVersion\n when\n }\n deleteVersion\n }\n}`\n","export const connected = `subscription connected($opVersion: String) {\n otrackers_connectedbulk(subscribe: true, includeInitial: true, opVersion: $opVersion) {\n type\n total\n deleteId\n data{\n id: vID\n opVersion\n when\n }\n deleteVersion\n }\n}`\n","export const voltage = `subscription voltage($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[EXTERNAL_VOLTAGE], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data { \n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n}`\n","export const internalvoltage = `subscription internalvoltage($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[INTERNAL_VOLTAGE, BATTERY_LEVEL], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n}`\n","export const unplug = `subscription unplug($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[UNPLUG], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n }`\n","export const alarm = `subscription alarm($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[ALARM], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n }`\n","export const temperature = `subscription temperature($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[TEMPERATURE], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const temperaturedecimal = `subscription temperaturedecimal($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[TEMPERATURE_DECIMAL], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const humiditydecimal = `subscription humiditydecimal($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[HUMIDITY_DECIMAL], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const meshscanner = `subscription temperature($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[MESH_GATE_ON], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const meshdisconnectslasthour = `subscription disconnects($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[DISCONNECTED_IN_THE_LAST_HOUR], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n }`\n","export const activecounter = `subscription activecounter($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[ACTIVE_COUNTER], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n }\n}`\n","export const workseconds = `subscription workseconds($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[WORK_SECONDS], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n}\n}`\n","export const calculatedodometer = `subscription calculatedodometer($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[CALCULATED_ODOMETER], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n}\n}`\n","export const batterypercent = `subscription batterypercent($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[BATTERY_PERCENT], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n value\n stamp\n }\n}\n}`\n","export const workignition = `subscription workignition($opVersion: String) {\n otrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[WORK_IGNITION], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n }\n}`\n","export const tripignition = `subscription tripignition($opVersion: String) {\notrackers_infoanybulk(subscribe: true, includeInitial: true, fields:[TRIP_IGNITION], opVersion: $opVersion) {\n type\n total\n deleteId\n deleteVersion\n data {\n id: vID\n opVersion\n field\n value\n stamp\n }\n}\n}`\n","export const activecycles = `subscription activecycles($opVersion: String){\n ocycle_activecycles(\n includeInitial: true\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n id\n cycleId\n startedAt\n finishedAt\n status\n referenceId\n opVersion\n }\n deleteVersion\n }\n}`\n","export const activesteps = `subscription activesteps($opVersion: String) {\n ocycle_activesteps(\n includeInitial: true\n subscribe: true\n opversion: $opVersion\n ) {\n type\n total\n deleteId\n data {\n id\n stepId\n name\n estimateDurationInSeconds\n displayOrder\n cycleStateId\n enterStamp\n exitStamp\n timeSpentInSeconds\n opVersion\n }\n deleteVersion\n },\n}\n`\n","export const referenceGeoLinks = `subscription referenceGeoLinks($opversion: String){\n oreference_getreferencegeolinksBulk(\n opversion: $opversion\n subscribe: true\n ) {\n type\n total\n deleteId\n data {\n id\n creationTime\n siteId\n referenceId\n opVersion\n deleted\n }\n deleteVersion\n }\n }`\n","export const trips = `subscription trips($opVersion: String) {\n otrip_trips(opversion: $opVersion, subscribe: true) {\n type\n total\n deleteId\n data {\n id: vID\n vID\n start\n stop\n routeDistanceInMeters\n opVersion\n referenceGroupId\n referenceType\n referenceGroupPath\n startPoint: startWayPoint {\n date\n speed\n longitude\n latitude\n } \n endPoint: endWayPoint {\n date\n speed\n longitude\n latitude\n } \n wayPoints: waypoints {\n date\n latitude\n longitude\n speed\n } \n }\n deleteVersion\n }\n }`\n","import { mCommonFields, commonFields } from '../fragments'\n\nexport const tasks = `subscription tasks($version: Int!) {\n mtask_get(version:$version, subscribe: true) {\n ${mCommonFields}\n data {\n ${commonFields}\n number\n templateId\n templateVersion\n title\n status\n createdBy\n accessRoles\n fieldValues { key value }\n documents { id name url mimeType fileName createdDate }\n targetReferenceId\n deleted\n }\n }\n}`\n","import { mCommonFields, commonFields } from '../fragments'\n\n// Fields and roles live under each status (core 2026-10-01). The first status is the default status.\nexport const taskTemplates = `subscription taskTemplates($version: Int!) {\n mtasktemplate_get(version:$version, subscribe: true) {\n ${mCommonFields}\n data {\n ${commonFields}\n groupIds\n name\n description\n statuses {\n key\n label\n color\n icon\n isDefault\n category\n viewRoles\n editRoles\n alwaysShowInDetails\n fields {\n key\n label\n type\n required\n groupKey\n groupLabel\n listInfo\n options { key label }\n }\n }\n deleted\n }\n }\n}`\n","export const contained = \n`subscription contained($opVersion: String) {\n contained(opversion: $opVersion) {\n type\n data {\n id\n receiverId\n start\n deleted\n opVersion\n }\n deleteId\n }\n}`","export const lostposition =\n`subscription lostPosition($opVersion: String) {\n lostPositionBulk(chunkSize: 50, opversion: $opVersion) {\n type\n data {\n id\n transmitterId\n receiverId\n stamp\n latitude\n longitude\n opVersion\n }\n deleteId\n deleteVersion\n }\n}`\n","export const stateLinks =\n`subscription stateLink($opVersion: String) {\n stateLinkBulk(opversion: $opVersion) {\n type\n data {\n id\n receiverId\n transmitterId\n stamp\n lastUpdated\n rssi\n opVersion\n closed\n }\n deleteId\n deleteVersion\n }\n}`","export const stateRefLinks =\n`subscription stateReflink($opVersion: String) {\n stateRefLinkBulk(opversion: $opVersion) {\n type\n data {\n id\n receiverRefId\n transmitterRefId\n start\n end\n opVersion\n }\n deleteId\n deleteVersion\n }\n}`\n","export const trips =\n`subscription stateTrips($opVersion: String) {\n stateTrips(opversion: $opVersion) {\n type\n data {\n id\n trips {\n startGPS {\n stamp\n longitude\n latitude\n }\n endGPS {\n stamp\n longitude\n latitude\n }\n distance\n completed\n } \n deleted\n opVersion\n }\n deleteId\n deleteVersion\n }\n}`","export const systemSettings = `subscription systemsetting($version: Int!) {\n mcommon_systemsettings(version: $version, subscribe: true) {\n type\n total\n deleteId\n data {\n version\n id: groupName\n settings {\n id\n name\n level\n parent\n valueOrigin\n value {\n isVisible\n hasChildren\n settingValue\n type\n }\n inputHtml\n } \n }\n deleteVersion\n }\n }`\n","export const settings = `\n subscription settings($version: Int!){\n mcommon_settings(version: $version, subscribe: true) {\n type\n total\n deleteId\n data {\n id: groupId\n version\n groupName\n settings {\n id\n name\n level\n parent\n valueOrigin\n value {\n isVisible\n hasChildren\n settingValue\n type\n }\n inputHtml\n } \n }\n deleteVersion\n }\n }`\n","export const roles = \n`subscription roles($version: Int!) {\n mcommon_roles(version: $version, subscribe: true) {\n type\n total\n deleteId\n data {\n createdTime\n name\n description\n permissions\n deleted\n version\n id\n }\n deleteVersion\n }\n}\n`","export const TempSubscriptions = {}\n","import { mCommonFields } from '../fragments'\n\nexport const messages = `\n subscription Messages($version:Int!) {\n getWeb(version: $version) {\n type \n deleteId \n deleteVersion\n data {\n id\n multiId\n version\n createdAt\n from { id fullName mobilePhoneNumber mobileCountryCode email language }\n to { id fullName mobilePhoneNumber mobileCountryCode email language }\n title\n content\n shortContent\n attachmentUrl\n type\n status\n transportTypes\n emailStatus { success errorMessage }\n smsStatus { success errorMessage }\n additionalInfo\n emailTemplate\n deleted\n }\n }\n }\n `\n","import * as subs from './subscriptions'\nimport * as opsubs from './opsubscriptions/index'\nimport * as req from './requiredMirrors/index'\nimport * as temp from './tempSubscriptions/index'\nimport * as message from './messagesubscriptions/index'\n\nexport const Subscriptions = {\n references: subs.references,\n trackers: subs.trackers,\n groups: subs.groups,\n servicePlans: subs.servicePlans,\n trackerLinks: subs.trackerLinks,\n referenceLinks: subs.referenceLinks,\n lostTransmitters: subs.lostTransmitters,\n reports: subs.reports,\n savedroutes: subs.savedroutes,\n jobs: subs.jobs,\n cycles: subs.cycles,\n meshDiagnostics: subs.meshDiagnostics,\n gps: subs.gps,\n linkconnected: subs.linkconnected,\n connected: subs.connected,\n voltage: subs.voltage,\n internalvoltage: subs.internalvoltage,\n unplug: subs.unplug,\n alarm: subs.alarm,\n temperature: subs.temperature,\n temperaturedecimal: subs.temperaturedecimal,\n humiditydecimal: subs.humiditydecimal,\n meshscanner: subs.meshscanner,\n meshdisconnectslasthour: subs.meshdisconnectslasthour,\n activecounter: subs.activecounter,\n workseconds: subs.workseconds,\n calculatedodometer: subs.calculatedodometer,\n batterypercent: subs.batterypercent,\n workignition: subs.workignition,\n tripignition: subs.tripignition,\n activecycles: subs.activecycles,\n activesteps: subs.activesteps,\n referenceGeoLinks: subs.referenceGeoLinks,\n trips: subs.trips,\n tasks: subs.tasks,\n taskTemplates: subs.taskTemplates\n}\n\nexport const OpSubscriptions = {\n contained: opsubs.contained,\n lostposition: opsubs.lostposition,\n stateLinks: opsubs.stateLinks,\n stateRefLinks: opsubs.stateRefLinks,\n trips3: opsubs.trips\n}\n\nexport const RequiredMirrors = {\n systemSettings: req.systemSettings,\n settings: req.settings,\n roles: req.roles\n}\nexport const MessageSubscriptions = {\n messages: message.messages\n}\n\nexport const TempSubscriptions = temp.TempSubscriptions\n","import { Subscriptions } from './mirrors';\n\n/**\n * Semantic annotations for the predefined mirrors.\n *\n * WHY THESE LIVE HERE, next to the documents they describe:\n *\n * Everything mechanical about a mirror can be derived — field names, types,\n * aliases and variables all fall out of the GraphQL document validated against\n * the server SDL. What cannot be derived is *meaning*: what a collection is,\n * when someone should reach for it, and whether it belongs in a surface exposed\n * to an AI assistant at all. That has to be authored by whoever knows the data,\n * and the closest place to the data is here.\n *\n * THE BUILD GATE IS THE TYPE ITSELF.\n *\n * `Record<keyof typeof Subscriptions, MirrorAnnotation>` means adding a mirror\n * without annotating it is a compile error in this package. No lint rule to\n * remember, no script to run — it simply will not build. Consumers (the MCP\n * server) do a second pass: they refuse to expose anything whose annotation is\n * still unreviewed, and they re-derive schemas from the live SDL so a document\n * that drifts away from the server fails their build too.\n */\n\n/** Who a mirror is meant for. */\nexport type MirrorAudience =\n /** Safe and useful to expose as an AI tool. */\n | 'ai'\n /** Internal plumbing, diagnostics, or too specialised to be worth a tool. */\n | 'internal';\n\n/** Rough size, so consumers can pick sensible default page limits. */\nexport type MirrorCardinality =\n /** Tens of rows. Safe to read whole. */\n | 'small'\n /** Hundreds. Usually wants a limit. */\n | 'medium'\n /** Thousands or unbounded. Always wants a limit and a filter. */\n | 'large';\n\nexport interface MirrorAnnotation {\n /** Short noun phrase, e.g. \"Trackers\". Becomes the tool title. */\n title: string;\n\n /**\n * What this collection *is*, in the words a reader needs — not a restatement\n * of the field list, which is generated anyway.\n */\n description: string;\n\n /**\n * When to reach for this one, and when not. This is what stops an assistant\n * from picking a plausible-sounding neighbour.\n */\n useWhen?: string;\n\n /** Whether this belongs in an AI-facing surface. */\n audience: MirrorAudience;\n\n /**\n * Fields worth returning by default.\n *\n * Some documents select a great deal — `references` selects 100 fields — and\n * sending all of it into a model's context is wasteful. Consumers return\n * these by default and keep the rest available on request. Names are the\n * *aliased* output names, as they appear in results.\n */\n summaryFields?: readonly string[];\n\n cardinality?: MirrorCardinality;\n\n /**\n * Has a human confirmed this description is accurate?\n *\n * Defaults to absent, which consumers must treat as \"not reviewed\" and\n * refuse to expose. This exists so a mirror can be added and compile without\n * anyone inventing a plausible-sounding description that turns out to be\n * wrong — an incorrect tool description is worse than a missing tool,\n * because it produces confidently wrong answers rather than no answer.\n */\n reviewed?: true;\n}\n\n/**\n * Annotation for every predefined mirror.\n *\n * Entries below are seeded from the GraphQL documents and the server schema.\n * Anything not marked `reviewed: true` is a DRAFT and will not be exposed by\n * consumers, regardless of `audience`.\n */\nexport const MirrorAnnotations: Record<keyof typeof Subscriptions, MirrorAnnotation> = {\n // --- core master data ----------------------------------------------------\n references: {\n title: 'References',\n description:\n 'Master data for everything Nanolink keeps track of. A reference is one of ' +\n 'several kinds, told apart by __typename: Assets (equipment and tools of any ' +\n 'size — a chop saw, a trailer, a wind turbine tip trolley, a 64ft container), ' +\n 'Vehicles (anything that rolls or moves under its own power, including ' +\n 'trailers), Users (people), Sites (customer buildings and locations — ' +\n 'warehouses, workshops, production halls, dispatch centres, wherever tools ' +\n 'live), Projects, Geoareas and Areas. ' +\n 'A reference is ALWAYS in exactly one group, and groupName/groupPath are ' +\n 'usually the most informative thing about what it is. `labels` is a free-text ' +\n 'array the customer uses for shared characteristics — \"220V\", \"400V\", ' +\n '\"Beton\", \"VVS\" — and for material or trade classification; it varies by ' +\n 'customer, so read the values rather than assuming a taxonomy. ' +\n 'IMPORTANT: a reference can have SEVERAL trackers attached, so it can legitimately ' +\n 'report more than one position or sensor reading at the same time — the trackers ' +\n 'sit in different places on the same object. Do not treat differing positions ' +\n 'for one reference as a contradiction.',\n useWhen:\n 'Answering what exists, who someone is, or where equipment belongs. Start here ' +\n 'for anything about the objects themselves. Note that Geoarea means a monitored ' +\n 'area someone deliberately configured on the Nanolink server — it is not the ' +\n 'general source of geography — and Area means an indoor, non-geographic zone ' +\n 'used for indoor positioning, which is not in use at present.',\n audience: 'ai',\n reviewed: true,\n summaryFields: [\n '__typename', 'id', 'groupName', 'groupPath', 'labels', 'deleted',\n 'fullName', 'email',\n 'brand', 'model', 'serial', 'description',\n 'registration', 'vin',\n 'name', 'type',\n ],\n cardinality: 'large',\n },\n trackers: {\n title: 'Trackers',\n description:\n 'Every piece of Nanolink hardware — one row is one physical thing that exists ' +\n 'in the real world. That includes GPS trackers, Bluetooth tags, GPS gates and ' +\n 'mesh gates, and also QR stickers, which count as trackers even though they ' +\n 'only identify something manually rather than reporting a position by radio. ' +\n 'A tracker is attached to AT MOST ONE reference (referenceId). The reverse is ' +\n 'not true: one reference may carry several trackers. `vID` is the visual id ' +\n 'printed on the device and is what people read aloud and search by.',\n useWhen:\n 'Asked about the devices themselves — what hardware exists, what type it is, ' +\n 'what a particular vID is attached to. For questions about the tracked object ' +\n 'rather than the device, use References instead.',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['vID', 'trackerName', 'type', 'model', 'referenceId', 'deleted'],\n cardinality: 'medium',\n },\n groups: {\n title: 'Groups',\n description:\n 'The tree that references are organised into, and where access control lives — ' +\n 'most importantly for Users, but grouping other references is meaningful too. ' +\n 'Every reference belongs to exactly one group, and groups nest into subgroups. ' +\n 'What the groups MEAN varies by customer: they may be departments, trades, or ' +\n 'equipment categories, so read the names to understand how this particular ' +\n 'customer has organised things rather than assuming a fixed taxonomy.',\n useWhen:\n 'Counting or filtering by category — \"how many ladders do we have?\" means ' +\n 'finding the group whose name matches and counting the references in it. ' +\n 'CRITICAL: groups are a tree. A group named \"Stiger\" may have subgroups such ' +\n 'as \"Jumbostiger\", and those references are NOT in the parent group directly. ' +\n 'Decide explicitly whether the question means that group alone or the whole ' +\n 'subtree, and say which you used. groupPath on a reference shows its position ' +\n 'in the tree and is usually the easiest way to match a subtree.',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'parentId', 'description', 'level', 'type'],\n cardinality: 'small',\n },\n servicePlans: {\n title: 'Service plans',\n description:\n 'Maintenance AND monitoring plans, told apart by __typename. Periodic and ' +\n 'Oneshot are real service tasks to be carried out on a schedule or once; KM ' +\n 'triggers on distance travelled; Warranty tracks a guarantee period; Monitor ' +\n 'watches a live value and raises a fault when it goes out of range (speed, or ' +\n 'low pressure in a specific tyre, for example); Cargo tracks what SHOULD be ' +\n 'present — typically in a vehicle — so that a missing item shows up; Scheduled is an ' +\n 'advanced calendar plan with optional input fields and QR-scan requirement; CheckList ' +\n 'is a vehicle inspection a person approves, which turns yellow/red again after a trip ' +\n 'or when one of its trigger plans is yellow/red on the vehicle or its linked equipment, ' +\n 'and only goes green again through a new approval. ' +\n 'A plan is effectively green or red: fine, or in fault/overdue.',\n useWhen:\n 'Asked what needs servicing, what is overdue, what is being monitored, or what ' +\n 'is missing from a vehicle. This mirror holds the plan DEFINITIONS; the state ' +\n 'of a given reference against them lives on that reference.',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['__typename', 'id', 'name', 'description', 'deleted'],\n cardinality: 'medium',\n },\n\n // --- links between things ------------------------------------------------\n trackerLinks: {\n title: 'Radio observations between trackers',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. The raw radio layer: a ' +\n 'receiver picked up a transmitter. A Bluetooth tag, or a tracker with ' +\n 'Bluetooth, broadcasts packets and is the TRANSMITTER; a gateway scanning for ' +\n 'them is the RECEIVER. GPS gateways are both at once - they find tags, and ' +\n 'other gateways can find them in turn. These observations are what eventually ' +\n 'become proximity links between references. `rSSI` is signal strength, a ' +\n 'rough proxy for closeness. ',\n useWhen:\n 'Only when direction genuinely matters - which device observed which. For the ' +\n 'ordinary \"what is near what\" question use referenceLinks, which is the same ' +\n 'information expressed between the objects people actually care about. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'receiverVID', 'transmitterVID', 'rSSI', 'createdDateTime'],\n cardinality: 'large',\n },\n referenceLinks: {\n title: 'Reference links',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Relationships between two ' +\n 'references, told apart by `type`: proximity means they are near each other, ' +\n 'and is what a radio observation ultimately becomes; responsible means a user ' +\n 'is accountable for something; user means a person is the end user of it, ' +\n 'such as a driver or a craftsman; associated means one reference is attached ' +\n 'to another. `autoGenerated` marks links the system derived rather than a ' +\n 'person recording them. ',\n useWhen:\n 'Asked who is responsible for something, who is using it, what is attached to ' +\n 'what, or what is near what. This is the right level for relationship ' +\n 'questions. Only drop to trackerLinks if you specifically need which device ' +\n 'saw which - links here carry no direction. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'type', 'referenceId1', 'referenceId2', 'autoGenerated', 'createdDateTime'],\n cardinality: 'large',\n },\n referenceGeoLinks: {\n title: 'References inside monitored areas',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Bluetooth tags do NOT have ' +\n 'GPS of their own - a tag only gets a position when a GPS-capable gateway ' +\n 'sees it and contributes its own. This is the most common misunderstanding ' +\n 'about how Nanolink positions things, so never present a tag as if it located ' +\n 'itself. Which references are currently inside a monitored geo area, and when ' +\n 'they entered. A geo area is real monitoring rather than a passive map: a ' +\n 'gateway inside the area finds a Bluetooth tag, and that tag then counts as ' +\n 'inside DIGITALLY until some gateway finds it outside again. Presence here ' +\n 'therefore reflects the last observation, not a live fence crossing. ',\n useWhen:\n 'Asked what is on a site or inside a monitored area, or when something ' +\n 'arrived. Bear in mind an item stays \"inside\" until observed elsewhere, so ' +\n 'the absence of an exit is not proof it is still physically there. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'siteId', 'referenceId', 'creationTime'],\n cardinality: 'large',\n },\n lostTransmitters: {\n title: 'Last known position of transmitters',\n description:\n 'Bluetooth tags do NOT have GPS of their own - a tag only gets a position ' +\n 'when a GPS-capable gateway sees it and contributes its own. This is the most ' +\n 'common misunderstanding about how Nanolink positions things, so never ' +\n 'present a tag as if it located itself. Our best guess at where a tracker or ' +\n 'Bluetooth tag last had a GPS position - `lostBy` names the device that last ' +\n 'saw it. Bluetooth tags are effectively always \"lost\": left somewhere, with ' +\n 'the only positional evidence being a gateway that caught them and ' +\n 'contributed its own coordinate. That evidence is already slightly out of ' +\n 'date by nature, which is where the name comes from. ',\n useWhen:\n 'Asked where something is when it has no GPS of its own, typically a ' +\n 'Bluetooth tag. Present the answer as a last known position with its age, ' +\n 'never as a live one. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'lostBy', 'transmitterReferenceType', 'transmitterReferenceGroupPath'],\n cardinality: 'large',\n },\n\n // --- operational records --------------------------------------------------\n reports: {\n title: 'Reports',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Real reports that can be generated, printed, or emailed to ' +\n 'users. This mirror holds the report DEFINITIONS - what reports exist and how ' +\n 'they are set up - rather than any generated output. ',\n useWhen:\n 'Asked what reports are available, or what a particular report covers. ' +\n 'Producing or sending a report is not something this read-only surface can ' +\n 'do; say so rather than implying it can. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'description'],\n cardinality: 'small',\n },\n jobs: { title: 'Jobs', description: 'DRAFT — scheduled jobs.', audience: 'internal', cardinality: 'medium' },\n savedroutes: {\n title: 'Saved routes',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Saved frontend routes with scope: views (kind VIEW), printable report ' +\n 'definitions (kind REPORT) and dashboard tiles (kind TILE). Scope is PERSONAL, GROUP or ' +\n 'GLOBAL and the server only sends the rows the caller may see. Supersedes `reports`, ' +\n 'which is a frozen copy kept for old app builds. ',\n useWhen:\n 'Asked what views or reports are available, who they are shared with, or what a ' +\n 'particular report covers. Producing or sending a report is not something this ' +\n 'read-only surface can do; say so rather than implying it can. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'description', 'kind', 'scope'],\n cardinality: 'small',\n },\n cycles: {\n title: 'Production cycles',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Production control: process ' +\n 'rules layered on top of ordinary movement. A cycle defines steps and the ' +\n 'constraints between them - a reference may not advance to the next step ' +\n 'before clearing the first, and a step cannot be left until the next has held ' +\n 'it for some minimum time. Progress is usually driven by gates detecting ' +\n 'Bluetooth tags, so the physical movement of a tagged item is what advances ' +\n 'the process. `steps` holds the definition. ',\n useWhen:\n 'Asked how a production process is set up, or what rules govern it. For what ' +\n 'is running right now, use Active cycles. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'isActive', 'labelFilter', 'deleted'],\n cardinality: 'small',\n },\n activecycles: {\n title: 'Active cycles',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Cycle runs currently in ' +\n 'progress - which reference is going through which cycle, when it started, ' +\n 'and its status. Finished runs carry `finishedAt`. ',\n useWhen:\n 'Asked what is in production now, or how far a particular item has got. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'cycleId', 'referenceId', 'status', 'startedAt', 'finishedAt'],\n cardinality: 'medium',\n },\n activesteps: {\n title: 'Active cycle steps',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. The individual steps within ' +\n 'running cycles: when a reference entered a step, when it left, and how long ' +\n 'it spent there. `estimateDurationInSeconds` is what the step was expected to ' +\n 'take, so comparing it with `timeSpentInSeconds` shows what is running late. ',\n useWhen:\n 'Asked where in a process something is stuck, or which step is taking longer ' +\n 'than planned. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'cycleStateId', 'enterStamp', 'exitStamp', 'timeSpentInSeconds', 'estimateDurationInSeconds'],\n cardinality: 'medium',\n },\n tasks: {\n title: 'Tasks',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Work items. A task may be ' +\n 'attached to a reference through `targetReferenceId`, or stand alone with ' +\n 'none. `status` carries where it has reached, and `fieldValues` holds ' +\n 'whatever the template defined. Only tasks the signed-in user may see are ' +\n 'present: `accessRoles` are the view roles of the current status. ',\n useWhen:\n 'Asked what work is outstanding, what has been done, or what is booked ' +\n 'against a particular piece of equipment. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'title', 'status', 'targetReferenceId', 'templateId', 'createdDateTime', 'deleted'],\n cardinality: 'medium',\n },\n taskTemplates: {\n title: 'Task templates',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Definitions that tasks are ' +\n 'created from. `statuses` is the lifecycle in presentation order; the first ' +\n 'is the default status every task starts in. Each status carries its own ' +\n '`fields`, a `category` (CREATED, PROCESSING or CLOSED, for lists only), ' +\n '`viewRoles` (who sees tasks in that status; empty = everyone) and ' +\n '`editRoles` (who may put a task in that status and fill in its fields). ',\n useWhen:\n 'Asked what KINDS of task exist, or why a task has particular fields or ' +\n 'statuses. For the actual work items, use Tasks. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'name', 'description', 'statuses', 'deleted'],\n cardinality: 'small',\n },\n trips: {\n title: 'Trips',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Completed journeys, delimited ' +\n 'by engine start and stop - that is how a trip is identified at all. Each row ' +\n 'carries where it began and ended, the route travelled and the distance, so ' +\n 'it answers how far a vehicle went and by which way. Improved variants exist ' +\n 'as trips2, with a trips3 planned; this is the original. ',\n useWhen:\n 'Asked how far or where a vehicle drove, or about a particular journey. Not ' +\n 'for current position - use the GPS mirror for that. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'vID', 'start', 'stop', 'routeDistanceInMeters', 'referenceType'],\n cardinality: 'large',\n },\n\n // --- live position and connection state -----------------------------------\n gps: {\n title: 'GPS positions',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. Bluetooth tags do NOT have ' +\n 'GPS of their own - a tag only gets a position when a GPS-capable gateway ' +\n 'sees it and contributes its own. This is the most common misunderstanding ' +\n 'about how Nanolink positions things, so never present a tag as if it located ' +\n 'itself. Latest known GPS position for trackers that can produce one ' +\n 'themselves, and for trackers configured with a fixed position - a gateway ' +\n 'bolted to a wall in a warehouse, where `isFixed` is set. Positions update as ' +\n 'GPS gateways report in. ',\n useWhen:\n 'Asked where something is right now. For where it HAS been, use the historic ' +\n 'position tools. A tag with no row here is expected rather than an error: it ' +\n 'means no GPS-capable device has reported a position for it, and ' +\n 'lostTransmitters is then the better source for a best guess. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'stamp', 'isFixed', 'locationInfo', 'referenceType', 'referenceGroupPath'],\n cardinality: 'large',\n },\n connected: {\n title: 'Last contact with the servers',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. When each tracker last ' +\n 'uploaded or otherwise made contact with the Nanolink servers ITSELF. `when` ' +\n 'is that timestamp. This is about the device reaching us, not about anyone ' +\n 'hearing it over the air - for that, use Link last contact, which records ' +\n 'when a gateway last picked the device up over Bluetooth. ',\n useWhen:\n 'Asked whether a device is still reporting in, or how long since it last did. ' +\n 'Read it as LAST SEEN, not \"online right now\": a recent timestamp means it ' +\n 'reported recently, but nothing here says it is connected at this instant, so ' +\n 'compare `when` to now and state the age. Note that a plain Bluetooth tag ' +\n 'cannot contact the servers on its own and so may legitimately have no row ' +\n 'here at all - that is not a fault, and Link last contact is the right place ' +\n 'to look for it. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'when'],\n cardinality: 'large',\n },\n linkconnected: {\n title: 'Last radio contact via a gateway',\n description:\n 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +\n 'not history. Historic values live in the log API, where a row is there ' +\n 'precisely because something newer replaced it. When a gateway last picked ' +\n 'this tracker or Bluetooth tag up over Bluetooth - the timestamp of the most ' +\n 'recent radio link. This is how a device that cannot talk to the servers ' +\n 'itself still gets seen: a gateway hears its broadcast and reports it on. ' +\n 'Distinct from Last contact, which is the device reaching the servers under ' +\n 'its own steam. ',\n useWhen:\n 'Asked when a Bluetooth tag was last observed, or whether something is still ' +\n 'within range of any gateway. For a tag this is usually the ONLY evidence it ' +\n 'is still around, since it has no way of contacting the servers itself. ' +\n 'Compare `when` to now and say how old the observation is. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'when'],\n cardinality: 'large',\n },\n\n // --- telemetry signals ----------------------------------------------------\n alarm: {\n title: 'Alarms',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. The ' +\n 'alarm signal reported by a tracker. ',\n useWhen:\n 'Asked what is currently alarming. This is the tracker\\'s own alarm state; ' +\n 'service plans of the Monitor kind are a separate mechanism that raises ' +\n 'faults when a watched value goes out of range. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n voltage: {\n title: 'External voltage',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Voltage on the tracker\\'s external supply - typically the vehicle or machine ' +\n 'it is wired into, rather than its own battery. ',\n useWhen:\n 'Asked whether something is powered, or about the electrical supply feeding a ' +\n 'tracker. For the tracker\\'s own cell, use internal voltage. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n internalvoltage: {\n title: 'Internal voltage',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Voltage of the tracker\\'s own internal battery, as opposed to any external ' +\n 'supply. ',\n useWhen:\n 'Asked about the health of the device itself. Battery percentage is usually ' +\n 'the friendlier answer for a person; this is the raw measurement behind it. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n batterypercent: {\n title: 'Battery level',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Remaining battery on the tracker, as a percentage. ',\n useWhen:\n 'Asked which devices need their battery changed, or why one stopped ' +\n 'reporting. A low battery is a common explanation for a tracker that has gone ' +\n 'quiet, so it is worth checking alongside last contact. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n unplug: {\n title: 'Unplug signal',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Reports that a tracker was disconnected from its external power - unplugged ' +\n 'from the vehicle or machine it was wired into. ',\n useWhen:\n 'Asked whether a device has been removed or tampered with, or why something ' +\n 'stopped reporting on external power. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n temperature: {\n title: 'Temperature',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Temperature measured by the tracker, as a whole number. ',\n useWhen:\n 'Asked how warm or cold something is. Prefer the decimal variant when ' +\n 'precision matters, since this one is rounded. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n temperaturedecimal: {\n title: 'Temperature (decimal)',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Temperature measured by the tracker, at higher precision than the ' +\n 'whole-number variant. ',\n useWhen:\n 'Asked how warm or cold something is and the fraction matters - cold chain, ' +\n 'process control. Otherwise either variant answers the question. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n humiditydecimal: {\n title: 'Humidity',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Relative humidity measured by the tracker. ',\n useWhen:\n 'Asked about damp, condensation risk, or storage conditions. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n activecounter: {\n title: 'Electric motor running seconds (BT30s)',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. ' +\n 'Seconds reported by a BT30s Bluetooth tag. The BT30s carries a Hall sensor ' +\n 'and measures how long an ELECTRIC motor has been running, so this is ' +\n 'hardware-specific: only BT30s tags produce it, and only for electric motors. ',\n useWhen:\n 'Asked how much an electric motor has run - a pump, a fan, a tool. If the ' +\n 'equipment does not carry a BT30s there will be no reading, which is expected ' +\n 'rather than a fault. For engines and machines generally, Operating seconds ' +\n 'is the broader signal. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n workseconds: {\n title: 'Operating seconds',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. How ' +\n 'many seconds something has actually been running - an engine, or a machine. ' +\n 'This is run time, not elapsed time: a machine that stood idle all week ' +\n 'accumulates nothing. ',\n useWhen:\n 'Asked how much a machine or engine has been used, for utilisation, billing ' +\n 'by the hour, or service intervals measured in running time. Do not read it ' +\n 'as how long something has been switched on or present. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n workignition: {\n title: 'Engine start',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. The ' +\n 'engine or machine actually starting. This is the machine\\'s own ignition ' +\n 'event. ',\n useWhen:\n 'Asked when a machine was last started, or whether it is running. Do NOT ' +\n 'treat this as the start of a journey: a vehicle can be running while ' +\n 'stationary, and Trip ignition is the separate signal that marks a trip ' +\n 'beginning. The two timestamps genuinely differ, so pick the one that matches ' +\n 'the question. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n tripignition: {\n title: 'Trip start',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. When ' +\n 'a journey started. Deliberately NOT the same thing as the engine starting: ' +\n 'an engine can run for some time - idling, warming up, working in place - ' +\n 'before what counts as a trip begins. ',\n useWhen:\n 'Asked when driving began. For the engine itself, use Engine start; for the ' +\n 'completed journey with its route and distance, use Trips. Conflating engine ' +\n 'start with trip start will overstate driving time. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n calculatedodometer: {\n title: 'Calculated odometer',\n description:\n 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +\n 'the device\\'s visual id (vID). `value` is the reading and `stamp` is when it ' +\n 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +\n 'series - for how a value changed over time, use the historic log tools. The ' +\n 'vehicle\\'s total distance, combining an initial reading that was entered when ' +\n 'the tracker was fitted with the distance counted since. Fitting a tracker to ' +\n 'a vehicle that has already driven 120,000 km means the raw count starts at ' +\n 'zero, so the initial value is added to give a figure that matches the ' +\n 'dashboard. ',\n useWhen:\n 'Asked for a vehicle\\'s mileage or total distance - this is the number a ' +\n 'person means by \\'the odometer\\'. For how far a single journey went, use the ' +\n 'distance on that trip instead; these answer different questions and should ' +\n 'not be added together. ',\n audience: 'ai',\n reviewed: true,\n summaryFields: ['id', 'value', 'stamp'],\n cardinality: 'large',\n },\n\n // --- mesh diagnostics -----------------------------------------------------\n meshDiagnostics: {\n title: 'Mesh diagnostics',\n description:\n 'Diagnostics for the Bluetooth mesh network - the plumbing that lets gateways ' +\n 'relay for each other. Operational detail for Nanolink, not something a ' +\n 'customer\\'s question is usually about. ',\n useWhen:\n 'Reviewed and deliberately NOT exposed as a tool: this is network ' +\n 'diagnostics. Promote it to audience \\'ai\\' if support engineers turn out to ' +\n 'want it. ',\n audience: 'internal',\n reviewed: true,\n cardinality: 'medium',\n },\n meshscanner: {\n title: 'Mesh scanner readings',\n description:\n 'Raw scanner output from mesh nodes. Operational detail rather than an answer ' +\n 'to a customer question. ',\n useWhen:\n 'Reviewed and deliberately NOT exposed as a tool: this is network ' +\n 'diagnostics. Promote it to audience \\'ai\\' if support engineers turn out to ' +\n 'want it. ',\n audience: 'internal',\n reviewed: true,\n cardinality: 'large',\n },\n meshdisconnectslasthour: {\n title: 'Mesh disconnects in the last hour',\n description:\n 'How often mesh nodes dropped in the past hour. A network health signal, ' +\n 'useful for diagnosing coverage rather than for answering questions about ' +\n 'equipment. ',\n useWhen:\n 'Reviewed and deliberately NOT exposed as a tool: this is network ' +\n 'diagnostics. Promote it to audience \\'ai\\' if support engineers turn out to ' +\n 'want it. ',\n audience: 'internal',\n reviewed: true,\n cardinality: 'medium',\n },\n};\n\n/** Mirrors an AI-facing consumer may expose: annotated, reviewed, and marked `ai`. */\nexport function exposedMirrors(): Array<keyof typeof Subscriptions> {\n return (Object.keys(MirrorAnnotations) as Array<keyof typeof Subscriptions>).filter(\n (name) => MirrorAnnotations[name].audience === 'ai' && MirrorAnnotations[name].reviewed === true,\n );\n}\n\n/** Names still carrying a draft description, for a build-time report. */\nexport function draftMirrors(): Array<keyof typeof Subscriptions> {\n return (Object.keys(MirrorAnnotations) as Array<keyof typeof Subscriptions>).filter(\n (name) => MirrorAnnotations[name].reviewed !== true,\n );\n}\n"],"mappings":"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","names":["TempSubscriptions","EventEmitter","connected","import_eventemitter3","EventEmitter","_a","trips","trips","TempSubscriptions"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanolink/mirrors",
3
- "version": "1.1.70",
3
+ "version": "1.1.72",
4
4
  "description": "GraphQL subscription client + mirror synchronization utilities.",
5
5
  "license": "MIT",
6
6
  "author": "Nanolink ApS, Mogens Bak Nielsen",