@phystack/hub-client 4.4.29

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.
Files changed (113) hide show
  1. package/.prettierignore +10 -0
  2. package/.prettierrc +10 -0
  3. package/CHANGELOG.md +1202 -0
  4. package/README-MEDIASTREAM.md +124 -0
  5. package/README.md +302 -0
  6. package/dist/constants/constants.d.ts +7 -0
  7. package/dist/constants/constants.d.ts.map +1 -0
  8. package/dist/constants/constants.js +10 -0
  9. package/dist/constants/constants.js.map +1 -0
  10. package/dist/helpers/browser.helper.d.ts +5 -0
  11. package/dist/helpers/browser.helper.d.ts.map +1 -0
  12. package/dist/helpers/browser.helper.js +19 -0
  13. package/dist/helpers/browser.helper.js.map +1 -0
  14. package/dist/helpers/cache.helper.d.ts +6 -0
  15. package/dist/helpers/cache.helper.d.ts.map +1 -0
  16. package/dist/helpers/cache.helper.js +46 -0
  17. package/dist/helpers/cache.helper.js.map +1 -0
  18. package/dist/helpers/date.helper.d.ts +4 -0
  19. package/dist/helpers/date.helper.d.ts.map +1 -0
  20. package/dist/helpers/date.helper.js +13 -0
  21. package/dist/helpers/date.helper.js.map +1 -0
  22. package/dist/helpers/session.helper.d.ts +13 -0
  23. package/dist/helpers/session.helper.d.ts.map +1 -0
  24. package/dist/helpers/session.helper.js +88 -0
  25. package/dist/helpers/session.helper.js.map +1 -0
  26. package/dist/helpers/shorten-look-ups.helper.d.ts +3 -0
  27. package/dist/helpers/shorten-look-ups.helper.d.ts.map +1 -0
  28. package/dist/helpers/shorten-look-ups.helper.js +80 -0
  29. package/dist/helpers/shorten-look-ups.helper.js.map +1 -0
  30. package/dist/helpers/signals-client.helper.d.ts +9 -0
  31. package/dist/helpers/signals-client.helper.d.ts.map +1 -0
  32. package/dist/helpers/signals-client.helper.js +44 -0
  33. package/dist/helpers/signals-client.helper.js.map +1 -0
  34. package/dist/helpers/signals.helper.d.ts +19 -0
  35. package/dist/helpers/signals.helper.d.ts.map +1 -0
  36. package/dist/helpers/signals.helper.js +48 -0
  37. package/dist/helpers/signals.helper.js.map +1 -0
  38. package/dist/helpers/wrtc/browser.d.ts +3 -0
  39. package/dist/helpers/wrtc/browser.d.ts.map +1 -0
  40. package/dist/helpers/wrtc/browser.js +11 -0
  41. package/dist/helpers/wrtc/browser.js.map +1 -0
  42. package/dist/helpers/wrtc/index.d.ts +5 -0
  43. package/dist/helpers/wrtc/index.d.ts.map +1 -0
  44. package/dist/helpers/wrtc/index.js +30 -0
  45. package/dist/helpers/wrtc/index.js.map +1 -0
  46. package/dist/helpers/wrtc/node.d.ts +3 -0
  47. package/dist/helpers/wrtc/node.d.ts.map +1 -0
  48. package/dist/helpers/wrtc/node.js +18 -0
  49. package/dist/helpers/wrtc/node.js.map +1 -0
  50. package/dist/index.d.ts +109 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +1013 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/services/online-status-subscription.service.d.ts +28 -0
  55. package/dist/services/online-status-subscription.service.d.ts.map +1 -0
  56. package/dist/services/online-status-subscription.service.js +96 -0
  57. package/dist/services/online-status-subscription.service.js.map +1 -0
  58. package/dist/services/phyhub-connection.service.d.ts +20 -0
  59. package/dist/services/phyhub-connection.service.d.ts.map +1 -0
  60. package/dist/services/phyhub-connection.service.js +176 -0
  61. package/dist/services/phyhub-connection.service.js.map +1 -0
  62. package/dist/services/signals.service.d.ts +97 -0
  63. package/dist/services/signals.service.d.ts.map +1 -0
  64. package/dist/services/signals.service.js +536 -0
  65. package/dist/services/signals.service.js.map +1 -0
  66. package/dist/services/webrtc/datachannel.d.ts +10 -0
  67. package/dist/services/webrtc/datachannel.d.ts.map +1 -0
  68. package/dist/services/webrtc/datachannel.js +290 -0
  69. package/dist/services/webrtc/datachannel.js.map +1 -0
  70. package/dist/services/webrtc/mediastream.d.ts +10 -0
  71. package/dist/services/webrtc/mediastream.d.ts.map +1 -0
  72. package/dist/services/webrtc/mediastream.js +396 -0
  73. package/dist/services/webrtc/mediastream.js.map +1 -0
  74. package/dist/services/webrtc/peer-connection-ice.d.ts +32 -0
  75. package/dist/services/webrtc/peer-connection-ice.d.ts.map +1 -0
  76. package/dist/services/webrtc/peer-connection-ice.js +483 -0
  77. package/dist/services/webrtc/peer-connection-ice.js.map +1 -0
  78. package/dist/types/signal.types.d.ts +354 -0
  79. package/dist/types/signal.types.d.ts.map +1 -0
  80. package/dist/types/signal.types.js +53 -0
  81. package/dist/types/signal.types.js.map +1 -0
  82. package/dist/types/twin.types.d.ts +705 -0
  83. package/dist/types/twin.types.d.ts.map +1 -0
  84. package/dist/types/twin.types.js +21 -0
  85. package/dist/types/twin.types.js.map +1 -0
  86. package/dist/types/webrtc.types.d.ts +41 -0
  87. package/dist/types/webrtc.types.d.ts.map +1 -0
  88. package/dist/types/webrtc.types.js +3 -0
  89. package/dist/types/webrtc.types.js.map +1 -0
  90. package/package.json +50 -0
  91. package/src/constants/constants.ts +12 -0
  92. package/src/helpers/browser.helper.ts +15 -0
  93. package/src/helpers/cache.helper.ts +52 -0
  94. package/src/helpers/date.helper.ts +8 -0
  95. package/src/helpers/session.helper.ts +96 -0
  96. package/src/helpers/shorten-look-ups.helper.ts +75 -0
  97. package/src/helpers/signals-client.helper.ts +54 -0
  98. package/src/helpers/signals.helper.ts +41 -0
  99. package/src/helpers/wrtc/browser.ts +9 -0
  100. package/src/helpers/wrtc/index.ts +32 -0
  101. package/src/helpers/wrtc/node.ts +16 -0
  102. package/src/index.ts +1429 -0
  103. package/src/services/online-status-subscription.service.ts +127 -0
  104. package/src/services/phyhub-connection.service.ts +213 -0
  105. package/src/services/signals.service.ts +783 -0
  106. package/src/services/webrtc/datachannel.ts +421 -0
  107. package/src/services/webrtc/mediastream.ts +602 -0
  108. package/src/services/webrtc/peer-connection-ice.ts +689 -0
  109. package/src/types/lodash.d.ts +3 -0
  110. package/src/types/signal.types.ts +382 -0
  111. package/src/types/twin.types.ts +803 -0
  112. package/src/types/webrtc.types.ts +48 -0
  113. package/tsconfig.json +45 -0
@@ -0,0 +1,803 @@
1
+ import { PhygridDataChannel, PhygridMediaStream } from './webrtc.types';
2
+
3
+ export enum TwinTypeEnum {
4
+ Device = 'Device',
5
+ Screen = 'Screen',
6
+ Edge = 'Edge',
7
+ Cloud = 'Cloud',
8
+ Web = 'Web',
9
+ Peripheral = 'Peripheral',
10
+ }
11
+
12
+ export enum TwinStatusEnum {
13
+ Offline = 'Offline',
14
+ Online = 'Online',
15
+ Starting = 'Starting',
16
+ Exited = 'Exited',
17
+ ImageNotFound = 'ImageNotFound',
18
+ }
19
+
20
+ export interface WifiNetwork {
21
+ ssid: string;
22
+ bssid: string;
23
+ mode?: string;
24
+ channel: number;
25
+ frequency: number;
26
+ signalLevel: number;
27
+ quality: number;
28
+ security: string[];
29
+ wpaFlags?: string[];
30
+ rsnFlags?: string[];
31
+ }
32
+
33
+ interface WifiConnection {
34
+ id: string;
35
+ iface: string;
36
+ model: string;
37
+ ssid: string;
38
+ bssid?: string;
39
+ channel: number;
40
+ frequency: number;
41
+ type: string;
42
+ security: string[];
43
+ signalLevel: number;
44
+ quality: number;
45
+ txRate: number;
46
+ }
47
+
48
+ export interface Baseboard {
49
+ manufacturer: string;
50
+ model: string;
51
+ version: string;
52
+ serial: string;
53
+ assetTag: string;
54
+ memMax: number;
55
+ memSlots: number;
56
+ }
57
+
58
+ export interface Battery {
59
+ hasBattery: boolean;
60
+ cycleCount: number;
61
+ isCharging: boolean;
62
+ designedCapacity: number;
63
+ maxCapacity: number;
64
+ currentCapacity: number;
65
+ voltage: number;
66
+ capacityUnit: string;
67
+ percent: number;
68
+ timeRemaining: number;
69
+ acConnected: boolean;
70
+ type: string;
71
+ model: string;
72
+ manufacturer: string;
73
+ serial: string;
74
+ }
75
+
76
+ export interface GraphicsController {
77
+ vendor: string;
78
+ model: string;
79
+ bus: string;
80
+ vramDynamic: boolean;
81
+ vram: number | null;
82
+ deviceId: string;
83
+ vendorId: string;
84
+ external: boolean;
85
+ cores: string;
86
+ metalVersion: string;
87
+ }
88
+
89
+ export interface Display {
90
+ vendor: string;
91
+ vendorId: string;
92
+ model: string;
93
+ productionYear: string;
94
+ serial: string;
95
+ displayId: string;
96
+ main: boolean;
97
+ builtin: boolean;
98
+ connection: string | null;
99
+ sizeX: number | null;
100
+ sizeY: number | null;
101
+ pixelDepth: number | null;
102
+ resolutionX: number;
103
+ resolutionY: number;
104
+ currentResX: number;
105
+ currentResY: number;
106
+ positionX: number;
107
+ positionY: number;
108
+ currentRefreshRate: number;
109
+ }
110
+
111
+ export interface Graphics {
112
+ controllers: GraphicsController[];
113
+ displays: Display[];
114
+ }
115
+
116
+ export interface Chassis {
117
+ manufacturer: string;
118
+ model: string;
119
+ type: string;
120
+ version: string;
121
+ serial: string;
122
+ assetTag: string;
123
+ sku: string;
124
+ }
125
+
126
+ export interface Bios {
127
+ vendor: string;
128
+ version: string;
129
+ releaseDate: string;
130
+ revision: string;
131
+ }
132
+
133
+ export interface Cache {
134
+ l1d: number;
135
+ l1i: number;
136
+ l2: number;
137
+ l3: number | null;
138
+ }
139
+
140
+ export interface CPU {
141
+ manufacturer: string;
142
+ brand: string;
143
+ vendor: string;
144
+ family: string;
145
+ model: string;
146
+ stepping: string;
147
+ revision: string;
148
+ voltage: string;
149
+ speed: number;
150
+ speedMin: number;
151
+ speedMax: number;
152
+ governor: string;
153
+ cores: number;
154
+ physicalCores: number;
155
+ performanceCores: number;
156
+ efficiencyCores: number;
157
+ processors: number;
158
+ socket: string;
159
+ flags: string;
160
+ virtualization: boolean;
161
+ cache: Cache;
162
+ }
163
+
164
+ export interface Memory {
165
+ total: number;
166
+ free: number;
167
+ used: number;
168
+ active: number;
169
+ available: number;
170
+ buffers: number;
171
+ cached: number;
172
+ slab: number;
173
+ buffcache: number;
174
+ swaptotal: number;
175
+ swapused: number;
176
+ swapfree: number;
177
+ writeback: number | null;
178
+ dirty: number | null;
179
+ }
180
+
181
+ export interface CpuCurrentSpeed {
182
+ min: number;
183
+ max: number;
184
+ avg: number;
185
+ cores: number[];
186
+ }
187
+
188
+ export interface CPUUsage {
189
+ load: number;
190
+ loadUser: number;
191
+ loadSystem: number;
192
+ loadNice: number;
193
+ loadIdle: number;
194
+ loadIrq: number;
195
+ loadSteal: number;
196
+ loadGuest: number;
197
+ rawLoad: number;
198
+ rawLoadUser: number;
199
+ rawLoadSystem: number;
200
+ rawLoadNice: number;
201
+ rawLoadIdle: number;
202
+ rawLoadIrq: number;
203
+ rawLoadSteal: number;
204
+ rawLoadGuest: number;
205
+ }
206
+
207
+ export interface CurrentLoad {
208
+ avgLoad: number;
209
+ currentLoad: number;
210
+ currentLoadUser: number;
211
+ currentLoadSystem: number;
212
+ currentLoadNice: number;
213
+ currentLoadIdle: number;
214
+ currentLoadIrq: number;
215
+ currentLoadSteal: number;
216
+ currentLoadGuest: number;
217
+ rawCurrentLoad: number;
218
+ rawCurrentLoadUser: number;
219
+ rawCurrentLoadSystem: number;
220
+ rawCurrentLoadNice: number;
221
+ rawCurrentLoadIdle: number;
222
+ rawCurrentLoadIrq: number;
223
+ rawCurrentLoadSteal: number;
224
+ rawCurrentLoadGuest: number;
225
+ cpus: CPUUsage[];
226
+ }
227
+
228
+ export interface NetworkInterface {
229
+ iface: string;
230
+ ifaceName: string;
231
+ default: boolean;
232
+ ip4: string;
233
+ ip4subnet: string;
234
+ ip6: string;
235
+ ip6subnet: string;
236
+ mac: string;
237
+ internal: boolean;
238
+ virtual: boolean;
239
+ operstate: string;
240
+ type: string;
241
+ duplex: string;
242
+ mtu: number;
243
+ speed: number | null;
244
+ dhcp: boolean;
245
+ dnsSuffix: string;
246
+ ieee8021xAuth: string;
247
+ ieee8021xState: string;
248
+ carrierChanges: number;
249
+ }
250
+
251
+ export interface NetworkStats {
252
+ iface: string;
253
+ operstate: string;
254
+ rx_bytes: number;
255
+ rx_dropped: number;
256
+ rx_errors: number;
257
+ tx_bytes: number;
258
+ tx_dropped: number;
259
+ tx_errors: number;
260
+ rx_sec: number;
261
+ tx_sec: number;
262
+ ms: number;
263
+ }
264
+
265
+ export interface MemLayout {
266
+ size: number;
267
+ bank: string;
268
+ type: string;
269
+ ecc: boolean;
270
+ clockSpeed: number;
271
+ formFactor: string;
272
+ manufacturer: string;
273
+ partNum: string;
274
+ serialNum: string;
275
+ voltageConfigured: number | null;
276
+ voltageMin: number | null;
277
+ voltageMax: number | null;
278
+ }
279
+
280
+ export interface FsSize {
281
+ fs: string;
282
+ type: string;
283
+ size: number;
284
+ used: number;
285
+ available: number;
286
+ use: number;
287
+ mount: string;
288
+ rw: boolean;
289
+ }
290
+
291
+ export interface FsStats {
292
+ rx: number;
293
+ wx: number;
294
+ tx: number;
295
+ rx_sec: number;
296
+ wx_sec: number;
297
+ tx_sec: number;
298
+ ms: number;
299
+ }
300
+
301
+ export interface UUID {
302
+ os: string;
303
+ hardware: string;
304
+ macs: string[];
305
+ }
306
+
307
+ export interface TimeStatus {
308
+ current: number;
309
+ uptime: number;
310
+ timezone: string;
311
+ timezoneName: string;
312
+ }
313
+
314
+ export interface System {
315
+ manufacturer: string;
316
+ model: string;
317
+ version: string;
318
+ serial: string;
319
+ uuid: string;
320
+ sku: string;
321
+ virtual: boolean;
322
+ }
323
+
324
+ export interface WifiInterface {
325
+ iface: string;
326
+ id: string;
327
+ model: boolean;
328
+ vendor: string;
329
+ mac: string;
330
+ }
331
+
332
+ export interface DeviceTwinReportedProperties {
333
+ ip: DeviceIp[];
334
+ os: {
335
+ osVersion: string;
336
+ };
337
+ env: {
338
+ gridEnv: string;
339
+ };
340
+ phydeviceVersion: string;
341
+ baseboard: Baseboard;
342
+ battery: Battery;
343
+ graphics: Graphics;
344
+ chassis: Chassis;
345
+ bios: Bios;
346
+ cpu: CPU;
347
+ mem: Memory;
348
+ inetLatency: number;
349
+ cpuCurrentSpeed: CpuCurrentSpeed;
350
+ currentLoad: CurrentLoad;
351
+ networkInterfaces: NetworkInterface[];
352
+ wifiInterfaces: WifiInterface[];
353
+ networkStats: NetworkStats[];
354
+ memLayout: MemLayout[];
355
+ fsSize: FsSize[];
356
+ fsStats: FsStats;
357
+ wifiNetworks: WifiNetwork[];
358
+ wifiConnections: WifiConnection[];
359
+ uuid: UUID;
360
+ time: TimeStatus;
361
+ users: any[]; // todo: update
362
+ system: System;
363
+ }
364
+
365
+ export interface EdgeTwinReportedProperties {
366
+ lastError?: {
367
+ message: string;
368
+ errorObject?: Object;
369
+ timestamp: Date;
370
+ };
371
+ }
372
+
373
+ export interface ScreenTwinReportedProperties {
374
+ screenshot?: string;
375
+ sound?: Record<string, string>;
376
+ crash?: {
377
+ count?: number;
378
+ reason?: string;
379
+ };
380
+ }
381
+
382
+ interface TwinCreatePayloadBase {
383
+ deviceId: string;
384
+ tenantId: string;
385
+ }
386
+
387
+ export interface DeviceTwinCreatePayload extends TwinCreatePayloadBase {
388
+ displayName: string;
389
+ accessKey: string;
390
+ env: string;
391
+ spaceId: string;
392
+ serialNumber: string;
393
+ }
394
+
395
+ interface TwinDocumentBase extends Document {
396
+ deviceId: string;
397
+ tenantId: string;
398
+ type: TwinTypeEnum;
399
+ isDeleted: boolean;
400
+ properties: unknown;
401
+ version: number;
402
+ createdAt: Date;
403
+ updatedAt: Date;
404
+ lastStatusUpdatedAt: Date;
405
+ status: TwinStatusEnum;
406
+ notes: string;
407
+ deletedAt?: Date;
408
+ }
409
+
410
+ export interface ScreenTwinDesiredProperties {
411
+ url: string;
412
+ screen_resolution: string;
413
+ sound_output: string;
414
+ sound_input: string;
415
+ scale: string;
416
+ screen_orientation: string;
417
+ enable_debug: boolean;
418
+ installationId: string;
419
+ }
420
+
421
+ export interface ScreenTwinDesiredPropertiesResponse {
422
+ url: string;
423
+ screen_resolution: string;
424
+ sound_output: string;
425
+ sound_input: string;
426
+ scale: string;
427
+ screen_orientation: string;
428
+ enable_debug: boolean;
429
+ installationId: string;
430
+ }
431
+
432
+ export interface EdgeTwinDesiredProperties {
433
+ image: string;
434
+ containerCreateOptions: Record<string, any>;
435
+ credentials: {
436
+ address: string;
437
+ username?: string;
438
+ password?: string;
439
+ };
440
+ installationId: string;
441
+ }
442
+
443
+ export interface EdgeTwinDesiredPropertiesResponse {
444
+ image: string;
445
+ containerCreateOptions: Record<string, any>;
446
+ credentials: {
447
+ address: string;
448
+ username?: string;
449
+ password?: string;
450
+ };
451
+ installationId: string;
452
+ settings: Record<string, any>;
453
+ }
454
+
455
+ export interface CloudTwinDesiredProperties {
456
+ installationId: string;
457
+ }
458
+
459
+ export interface CloudTwinDesiredPropertiesResponse {
460
+ installationId: string;
461
+ }
462
+
463
+ export interface WebTwinDesiredProperties {
464
+ installationId: string;
465
+ }
466
+
467
+ export interface WebTwinDesiredPropertiesResponse {
468
+ installationId: string;
469
+ }
470
+
471
+ export interface DeviceTwinDesiredProperties {
472
+ spaceId: string;
473
+ env: string;
474
+ displayName: string;
475
+ deviceSerial: string;
476
+ externalId?: string;
477
+ accessKey: string;
478
+ }
479
+
480
+ export interface DeviceTwinDesiredPropertiesResponse {
481
+ spaceId: string;
482
+ env: string;
483
+ displayName: string;
484
+ deviceSerial: string;
485
+ externalId?: string;
486
+ accessKey: string;
487
+ installationId: string;
488
+ settings: any;
489
+ appName: string;
490
+ timezone?: string;
491
+ }
492
+
493
+ interface ScreenTwinDocument extends TwinDocumentBase {
494
+ type: TwinTypeEnum.Screen;
495
+ properties: {
496
+ desired: ScreenTwinDesiredProperties;
497
+ reported: ScreenTwinReportedProperties;
498
+ };
499
+ }
500
+
501
+ interface EdgeTwinDocument extends TwinDocumentBase {
502
+ type: TwinTypeEnum.Edge;
503
+ properties: {
504
+ desired: EdgeTwinDesiredProperties;
505
+ reported: EdgeTwinReportedProperties;
506
+ };
507
+ }
508
+
509
+ interface CloudTwinDocument extends TwinDocumentBase {
510
+ type: TwinTypeEnum.Cloud;
511
+ properties: {
512
+ desired: CloudTwinDesiredProperties;
513
+ reported: Record<string, any>;
514
+ };
515
+ }
516
+
517
+ interface WebTwinDocument extends TwinDocumentBase {
518
+ type: TwinTypeEnum.Web;
519
+ properties: {
520
+ desired: WebTwinDesiredProperties;
521
+ reported: Record<string, any>;
522
+ };
523
+ }
524
+
525
+ interface DeviceTwinDocument extends TwinDocumentBase {
526
+ type: TwinTypeEnum.Device;
527
+ properties: {
528
+ desired: DeviceTwinDesiredProperties;
529
+ reported: DeviceTwinReportedProperties;
530
+ };
531
+ }
532
+
533
+ export type TwinDocument =
534
+ | ScreenTwinDocument
535
+ | EdgeTwinDocument
536
+ | CloudTwinDocument
537
+ | WebTwinDocument
538
+ | DeviceTwinDocument;
539
+
540
+ export interface TwinResponseBase {
541
+ id: string;
542
+ deviceId: string;
543
+ tenantId: string;
544
+ instanceId?: string;
545
+ type: TwinTypeEnum;
546
+ status: TwinStatusEnum;
547
+ version: number;
548
+ notes: string;
549
+ createdAt: Date;
550
+ updatedAt: Date;
551
+ lastStatusUpdatedAt: Date;
552
+ properties: {
553
+ desired: unknown;
554
+ reported: unknown;
555
+ };
556
+ descriptors?: Record<string, string>;
557
+ }
558
+
559
+ export interface ScreenTwinResponse extends TwinResponseBase {
560
+ type: TwinTypeEnum.Screen;
561
+ properties: {
562
+ reported: ScreenTwinReportedProperties;
563
+ desired: ScreenTwinDesiredPropertiesResponse;
564
+ };
565
+ }
566
+
567
+ export interface EdgeTwinResponse extends TwinResponseBase {
568
+ type: TwinTypeEnum.Edge;
569
+ properties: {
570
+ reported: EdgeTwinReportedProperties;
571
+ desired: EdgeTwinDesiredPropertiesResponse;
572
+ };
573
+ }
574
+
575
+ export interface CloudTwinResponse extends TwinResponseBase {
576
+ type: TwinTypeEnum.Cloud;
577
+ properties: {
578
+ reported: Record<string, any>;
579
+ desired: CloudTwinDesiredPropertiesResponse;
580
+ };
581
+ }
582
+
583
+ export interface WebTwinResponse extends TwinResponseBase {
584
+ type: TwinTypeEnum.Web;
585
+ properties: {
586
+ reported: Record<string, any>;
587
+ desired: WebTwinDesiredPropertiesResponse;
588
+ };
589
+ }
590
+
591
+ export interface DeviceTwinResponse extends TwinResponseBase {
592
+ type: TwinTypeEnum.Device;
593
+ properties: {
594
+ reported: DeviceTwinReportedProperties;
595
+ desired: DeviceTwinDesiredPropertiesResponse;
596
+ };
597
+ }
598
+
599
+ export interface PeripheralTwinDesiredProperties {
600
+ peripheralName: string;
601
+ hardwareId: string;
602
+ instanceId: string;
603
+ settings?: Record<string, any>;
604
+ }
605
+
606
+ export interface PeripheralTwinReportedProperties {
607
+ lastError?: {
608
+ message: string;
609
+ errorObject?: Object;
610
+ timestamp: Date;
611
+ };
612
+ status?: {
613
+ connected: boolean;
614
+ lastConnected?: Date;
615
+ metadata?: Record<string, any>;
616
+ };
617
+ [key: string]: any; // Allow any additional properties
618
+ }
619
+
620
+ export interface PeripheralTwinResponse extends TwinResponseBase {
621
+ type: TwinTypeEnum.Peripheral;
622
+ properties: {
623
+ reported: Record<string, any>;
624
+ desired: PeripheralTwinDesiredProperties;
625
+ };
626
+ }
627
+
628
+ export interface PeripheralInstance extends PeripheralTwinResponse {
629
+ emit: (type: string, payload: any) => void;
630
+ on: (type: string, callback: (message: any) => void) => void;
631
+ to: (targetTwinId: string) => {
632
+ emit: (type: string, payload: any) => void;
633
+ };
634
+ updateReported: (properties: Record<string, any>) => Promise<TwinResponse>;
635
+ updateDesired: (properties: Record<string, any>) => Promise<TwinResponse>;
636
+ onUpdateReported: (callback: (reportedProperties: Record<string, any>) => void) => void;
637
+ onUpdateDesired: (callback: (desiredProperties: Record<string, any>) => void) => void;
638
+ remove: () => Promise<TwinResponse | void>;
639
+ getDataChannel: () => Promise<PhygridDataChannel>;
640
+ onDataChannel: (callback: (dc: PhygridDataChannel) => void) => void;
641
+ getMediaStream: () => Promise<{
642
+ stream: PhygridMediaStream;
643
+ close: () => void;
644
+ }>;
645
+ onMediaStream: (callback: (stream: PhygridMediaStream) => void) => Promise<void>;
646
+ }
647
+
648
+ export interface Instance {
649
+ emit: (type: string, payload: any) => void;
650
+ on: (type: string, callback: (message: any) => void) => void;
651
+ to: (twinId: string) => {
652
+ emit: (type: string, payload: any) => void;
653
+ };
654
+ createPeripheralTwin: (
655
+ peripheralName: string,
656
+ hardwareId: string,
657
+ desiredProperties?: Record<string, any>,
658
+ descriptors?: Record<string, string>
659
+ ) => Promise<TwinResponse>;
660
+ getPeripheralTwins: (twinId?: string) => Promise<PeripheralTwinResponse[]>;
661
+ getDataChannel: () => Promise<PhygridDataChannel>;
662
+ onDataChannel: (callback: (dc: PhygridDataChannel) => void) => void;
663
+ updateReported: (properties: Record<string, any>) => Promise<TwinResponse>;
664
+ getMediaStream: () => Promise<{ stream: PhygridMediaStream; close: () => void }>;
665
+ onMediaStream: (callback: (stream: PhygridMediaStream) => void) => Promise<void>;
666
+ [key: string]: any; // Allow any additional properties
667
+ }
668
+
669
+ export type TwinResponse =
670
+ | DeviceTwinResponse
671
+ | ScreenTwinResponse
672
+ | EdgeTwinResponse
673
+ | CloudTwinResponse
674
+ | WebTwinResponse
675
+ | PeripheralTwinResponse;
676
+
677
+ export type TwinDesiredPropertiesResponse =
678
+ | DeviceTwinDesiredPropertiesResponse
679
+ | ScreenTwinDesiredPropertiesResponse
680
+ | EdgeTwinDesiredPropertiesResponse
681
+ | CloudTwinDesiredPropertiesResponse
682
+ | WebTwinDesiredPropertiesResponse;
683
+
684
+ interface TwinCreateDocumentBase {
685
+ deviceId: string;
686
+ tenantId: string;
687
+ type: unknown;
688
+ properties: {
689
+ desired: unknown;
690
+ };
691
+ }
692
+
693
+ export interface DeviceTwinCreateDocument extends TwinCreateDocumentBase {
694
+ type: TwinTypeEnum.Device;
695
+ properties: {
696
+ desired: DeviceTwinDesiredProperties;
697
+ };
698
+ }
699
+
700
+ export interface ScreenTwinCreateDocument extends TwinCreateDocumentBase {
701
+ type: TwinTypeEnum.Screen;
702
+ properties: {
703
+ desired: ScreenTwinDesiredProperties;
704
+ };
705
+ }
706
+
707
+ export interface EdgeTwinCreateDocument extends TwinCreateDocumentBase {
708
+ type: TwinTypeEnum.Edge;
709
+ properties: {
710
+ desired: EdgeTwinDesiredProperties;
711
+ };
712
+ }
713
+
714
+ export type TwinCreateDocument =
715
+ | DeviceTwinCreateDocument
716
+ | ScreenTwinCreateDocument
717
+ | EdgeTwinCreateDocument;
718
+
719
+ export interface TwinsGroupedByDeviceId {
720
+ _id: string;
721
+ twins: TwinDocument[];
722
+ }
723
+
724
+ export interface TwinsGroupedByDeviceIdResponse {
725
+ _id: string;
726
+ twins: TwinResponse[];
727
+ }
728
+
729
+ export type InstanceTwinReportedProperties =
730
+ | EdgeTwinReportedProperties
731
+ | DeviceTwinReportedProperties
732
+ | ScreenTwinReportedProperties;
733
+
734
+ export interface DeviceTwinUpdatePayload {
735
+ spaceId?: string;
736
+ env?: string;
737
+ displayName?: string;
738
+ notes?: string;
739
+ }
740
+
741
+ export interface DeviceTwinUpdateDocument {
742
+ status?: TwinStatusEnum;
743
+ lastStatusUpdatedAt?: Date;
744
+ notes?: string;
745
+ properties?: {
746
+ reported?: DeviceTwinReportedProperties;
747
+ desired?: {
748
+ spaceId?: string;
749
+ env?: string;
750
+ displayName?: string;
751
+ };
752
+ };
753
+ }
754
+ export interface InstanceTwinUpdateDocument {
755
+ status?: TwinStatusEnum;
756
+ lastStatusUpdatedAt?: Date;
757
+ properties?: {
758
+ reported?: InstanceTwinReportedProperties;
759
+ };
760
+ }
761
+
762
+ export type TwinUpdateDocument = DeviceTwinUpdateDocument | InstanceTwinUpdateDocument;
763
+
764
+ export interface DeviceIp {
765
+ interface: string;
766
+ ipv4: string;
767
+ ipv6: string;
768
+ }
769
+
770
+ export interface DeviceStatus {
771
+ status: string;
772
+ isConnected: string;
773
+ deviceId: string;
774
+ accessKey: string;
775
+ deviceSerial: string;
776
+ gridEnv: string;
777
+ osVersion: string;
778
+ provisioningCode: string;
779
+ displayName: string;
780
+ deviceEnv: string;
781
+ spaceId: string;
782
+ tenantId: string;
783
+ dataResidency: string;
784
+ socketConnected: boolean;
785
+ socketAuthenticated: boolean;
786
+ ip: DeviceIp[];
787
+ twins: Record<string, string[]>;
788
+ }
789
+
790
+ export interface EventPayload<T = any> {
791
+ twinId?: string;
792
+ sourceTwinId?: string;
793
+ method?: string;
794
+ targetMethod?: string;
795
+ targetInstanceId?: string;
796
+ data?: T;
797
+ }
798
+
799
+ export interface MediaOptions {
800
+ localStream?: MediaStream;
801
+ isMediaConnection?: boolean;
802
+ mediaDirection?: string;
803
+ }