yoto-nodejs-client 0.0.6 → 0.0.8

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.
@@ -17,14 +17,168 @@
17
17
  * @property {number} deviceCount - Number of devices managed
18
18
  * @property {string[]} devices - Array of device IDs
19
19
  */
20
+ /**
21
+ * Device event wrapper
22
+ * @template T
23
+ * @typedef {{ deviceId: string } & T} YotoAccountDeviceEvent
24
+ */
25
+ /**
26
+ * Device added event data
27
+ * @typedef {YotoAccountDeviceEvent<{}>} YotoAccountDeviceAddedEvent
28
+ */
29
+ /**
30
+ * Device removed event data
31
+ * @typedef {YotoAccountDeviceEvent<{}>} YotoAccountDeviceRemovedEvent
32
+ */
33
+ /**
34
+ * Device status update event data
35
+ * @typedef {YotoAccountDeviceEvent<{
36
+ * status: YotoDeviceStatus,
37
+ * source: string,
38
+ * changedFields: Set<keyof YotoDeviceStatus>
39
+ * }>} YotoAccountStatusUpdateEvent
40
+ */
41
+ /**
42
+ * Device config update event data
43
+ * @typedef {YotoAccountDeviceEvent<{
44
+ * config: YotoDeviceModelConfig,
45
+ * changedFields: Set<keyof YotoDeviceModelConfig>
46
+ * }>} YotoAccountConfigUpdateEvent
47
+ */
48
+ /**
49
+ * Device playback update event data
50
+ * @typedef {YotoAccountDeviceEvent<{
51
+ * playback: YotoPlaybackState,
52
+ * changedFields: Set<keyof YotoPlaybackState>
53
+ * }>} YotoAccountPlaybackUpdateEvent
54
+ */
55
+ /**
56
+ * Device online event data
57
+ * @typedef {YotoAccountDeviceEvent<{
58
+ * metadata: YotoDeviceOnlineMetadata
59
+ * }>} YotoAccountOnlineEvent
60
+ */
61
+ /**
62
+ * Device offline event data
63
+ * @typedef {YotoAccountDeviceEvent<{
64
+ * metadata: YotoDeviceOfflineMetadata
65
+ * }>} YotoAccountOfflineEvent
66
+ */
67
+ /**
68
+ * MQTT connect event data
69
+ * @typedef {YotoAccountDeviceEvent<{
70
+ * metadata: YotoMqttConnectMetadata
71
+ * }>} YotoAccountMqttConnectEvent
72
+ */
73
+ /**
74
+ * MQTT disconnect event data
75
+ * @typedef {YotoAccountDeviceEvent<{
76
+ * metadata: YotoMqttDisconnectMetadata
77
+ * }>} YotoAccountMqttDisconnectEvent
78
+ */
79
+ /**
80
+ * MQTT close event data
81
+ * @typedef {YotoAccountDeviceEvent<{
82
+ * metadata: YotoMqttCloseMetadata
83
+ * }>} YotoAccountMqttCloseEvent
84
+ */
85
+ /**
86
+ * MQTT reconnect event data
87
+ * @typedef {YotoAccountDeviceEvent<{}>} YotoAccountMqttReconnectEvent
88
+ */
89
+ /**
90
+ * MQTT offline event data
91
+ * @typedef {YotoAccountDeviceEvent<{}>} YotoAccountMqttOfflineEvent
92
+ */
93
+ /**
94
+ * MQTT end event data
95
+ * @typedef {YotoAccountDeviceEvent<{}>} YotoAccountMqttEndEvent
96
+ */
97
+ /**
98
+ * MQTT status event data
99
+ * @typedef {YotoAccountDeviceEvent<{
100
+ * topic: string,
101
+ * message: YotoStatusMessage
102
+ * }>} YotoAccountMqttStatusEvent
103
+ */
104
+ /**
105
+ * MQTT events event data
106
+ * @typedef {YotoAccountDeviceEvent<{
107
+ * topic: string,
108
+ * message: YotoEventsMessage
109
+ * }>} YotoAccountMqttEventsEvent
110
+ */
111
+ /**
112
+ * MQTT legacy status event data
113
+ * @typedef {YotoAccountDeviceEvent<{
114
+ * topic: string,
115
+ * message: YotoStatusLegacyMessage
116
+ * }>} YotoAccountMqttStatusLegacyEvent
117
+ */
118
+ /**
119
+ * MQTT response event data
120
+ * @typedef {YotoAccountDeviceEvent<{
121
+ * topic: string,
122
+ * message: YotoResponseMessage
123
+ * }>} YotoAccountMqttResponseEvent
124
+ */
125
+ /**
126
+ * MQTT unknown event data
127
+ * @typedef {YotoAccountDeviceEvent<{
128
+ * topic: string,
129
+ * message: unknown
130
+ * }>} YotoAccountMqttUnknownEvent
131
+ */
132
+ /**
133
+ * Account error event data
134
+ * @typedef {Object} YotoAccountErrorEvent
135
+ * @property {Error} error - Error instance
136
+ * @property {YotoAccountErrorContext} context - Error context
137
+ */
138
+ /**
139
+ * Device event handler set
140
+ * @typedef {Object} YotoAccountDeviceEventHandlers
141
+ * @property {(status: YotoDeviceStatus, source: string, changedFields: Set<keyof YotoDeviceStatus>) => void} statusUpdate
142
+ * @property {(config: YotoDeviceModelConfig, changedFields: Set<keyof YotoDeviceModelConfig>) => void} configUpdate
143
+ * @property {(playback: YotoPlaybackState, changedFields: Set<keyof YotoPlaybackState>) => void} playbackUpdate
144
+ * @property {(metadata: YotoDeviceOnlineMetadata) => void} online
145
+ * @property {(metadata: YotoDeviceOfflineMetadata) => void} offline
146
+ * @property {(metadata: YotoMqttConnectMetadata) => void} mqttConnect
147
+ * @property {(metadata: YotoMqttDisconnectMetadata) => void} mqttDisconnect
148
+ * @property {(metadata: YotoMqttCloseMetadata) => void} mqttClose
149
+ * @property {() => void} mqttReconnect
150
+ * @property {() => void} mqttOffline
151
+ * @property {() => void} mqttEnd
152
+ * @property {(topic: string, message: YotoStatusMessage) => void} mqttStatus
153
+ * @property {(topic: string, message: YotoEventsMessage) => void} mqttEvents
154
+ * @property {(topic: string, message: YotoStatusLegacyMessage) => void} mqttStatusLegacy
155
+ * @property {(topic: string, message: YotoResponseMessage) => void} mqttResponse
156
+ * @property {(topic: string, message: unknown) => void} mqttUnknown
157
+ */
20
158
  /**
21
159
  * Event map for YotoAccount
22
160
  * @typedef {{
23
161
  * 'started': [YotoAccountStartedMetadata],
24
162
  * 'stopped': [],
25
- * 'deviceAdded': [string, YotoDeviceModel],
26
- * 'deviceRemoved': [string],
27
- * 'error': [Error, YotoAccountErrorContext]
163
+ * 'deviceAdded': [YotoAccountDeviceAddedEvent],
164
+ * 'deviceRemoved': [YotoAccountDeviceRemovedEvent],
165
+ * 'statusUpdate': [YotoAccountStatusUpdateEvent],
166
+ * 'configUpdate': [YotoAccountConfigUpdateEvent],
167
+ * 'playbackUpdate': [YotoAccountPlaybackUpdateEvent],
168
+ * 'online': [YotoAccountOnlineEvent],
169
+ * 'offline': [YotoAccountOfflineEvent],
170
+ * 'mqttConnect': [YotoAccountMqttConnectEvent],
171
+ * 'mqttDisconnect': [YotoAccountMqttDisconnectEvent],
172
+ * 'mqttClose': [YotoAccountMqttCloseEvent],
173
+ * 'mqttReconnect': [YotoAccountMqttReconnectEvent],
174
+ * 'mqttOffline': [YotoAccountMqttOfflineEvent],
175
+ * 'mqttEnd': [YotoAccountMqttEndEvent],
176
+ * 'mqttStatus': [YotoAccountMqttStatusEvent],
177
+ * 'mqttEvents': [YotoAccountMqttEventsEvent],
178
+ * 'mqttStatusLegacy': [YotoAccountMqttStatusLegacyEvent],
179
+ * 'mqttResponse': [YotoAccountMqttResponseEvent],
180
+ * 'mqttUnknown': [YotoAccountMqttUnknownEvent],
181
+ * 'error': [YotoAccountErrorEvent]
28
182
  * }} YotoAccountEventMap
29
183
  */
30
184
  /**
@@ -33,9 +187,10 @@
33
187
  * Events:
34
188
  * - 'started' - Emitted when account starts, passes metadata with deviceCount and devices array
35
189
  * - 'stopped' - Emitted when account stops
36
- * - 'deviceAdded' - Emitted when a device is added, passes (deviceId, deviceModel)
37
- * - 'deviceRemoved' - Emitted when a device is removed, passes deviceId
38
- * - 'error' - Emitted when an error occurs, passes (error, context)
190
+ * - 'deviceAdded' - Emitted when a device is added, passes { deviceId }
191
+ * - 'deviceRemoved' - Emitted when a device is removed, passes { deviceId }
192
+ * - Device events are re-emitted with device context, see event map for signatures
193
+ * - 'error' - Emitted when an error occurs, passes { error, context }
39
194
  *
40
195
  * Note: To listen to individual device events (statusUpdate, configUpdate, playbackUpdate, online, offline, etc.),
41
196
  * access the device models directly via account.devices or account.getDevice(deviceId) and attach listeners.
@@ -145,19 +300,194 @@ export type YotoAccountStartedMetadata = {
145
300
  */
146
301
  devices: string[];
147
302
  };
303
+ /**
304
+ * Device event wrapper
305
+ */
306
+ export type YotoAccountDeviceEvent<T> = {
307
+ deviceId: string;
308
+ } & T;
309
+ /**
310
+ * Device added event data
311
+ */
312
+ export type YotoAccountDeviceAddedEvent = YotoAccountDeviceEvent<{}>;
313
+ /**
314
+ * Device removed event data
315
+ */
316
+ export type YotoAccountDeviceRemovedEvent = YotoAccountDeviceEvent<{}>;
317
+ /**
318
+ * Device status update event data
319
+ */
320
+ export type YotoAccountStatusUpdateEvent = YotoAccountDeviceEvent<{
321
+ status: YotoDeviceStatus;
322
+ source: string;
323
+ changedFields: Set<keyof YotoDeviceStatus>;
324
+ }>;
325
+ /**
326
+ * Device config update event data
327
+ */
328
+ export type YotoAccountConfigUpdateEvent = YotoAccountDeviceEvent<{
329
+ config: YotoDeviceModelConfig;
330
+ changedFields: Set<keyof YotoDeviceModelConfig>;
331
+ }>;
332
+ /**
333
+ * Device playback update event data
334
+ */
335
+ export type YotoAccountPlaybackUpdateEvent = YotoAccountDeviceEvent<{
336
+ playback: YotoPlaybackState;
337
+ changedFields: Set<keyof YotoPlaybackState>;
338
+ }>;
339
+ /**
340
+ * Device online event data
341
+ */
342
+ export type YotoAccountOnlineEvent = YotoAccountDeviceEvent<{
343
+ metadata: YotoDeviceOnlineMetadata;
344
+ }>;
345
+ /**
346
+ * Device offline event data
347
+ */
348
+ export type YotoAccountOfflineEvent = YotoAccountDeviceEvent<{
349
+ metadata: YotoDeviceOfflineMetadata;
350
+ }>;
351
+ /**
352
+ * MQTT connect event data
353
+ */
354
+ export type YotoAccountMqttConnectEvent = YotoAccountDeviceEvent<{
355
+ metadata: YotoMqttConnectMetadata;
356
+ }>;
357
+ /**
358
+ * MQTT disconnect event data
359
+ */
360
+ export type YotoAccountMqttDisconnectEvent = YotoAccountDeviceEvent<{
361
+ metadata: YotoMqttDisconnectMetadata;
362
+ }>;
363
+ /**
364
+ * MQTT close event data
365
+ */
366
+ export type YotoAccountMqttCloseEvent = YotoAccountDeviceEvent<{
367
+ metadata: YotoMqttCloseMetadata;
368
+ }>;
369
+ /**
370
+ * MQTT reconnect event data
371
+ */
372
+ export type YotoAccountMqttReconnectEvent = YotoAccountDeviceEvent<{}>;
373
+ /**
374
+ * MQTT offline event data
375
+ */
376
+ export type YotoAccountMqttOfflineEvent = YotoAccountDeviceEvent<{}>;
377
+ /**
378
+ * MQTT end event data
379
+ */
380
+ export type YotoAccountMqttEndEvent = YotoAccountDeviceEvent<{}>;
381
+ /**
382
+ * MQTT status event data
383
+ */
384
+ export type YotoAccountMqttStatusEvent = YotoAccountDeviceEvent<{
385
+ topic: string;
386
+ message: YotoStatusMessage;
387
+ }>;
388
+ /**
389
+ * MQTT events event data
390
+ */
391
+ export type YotoAccountMqttEventsEvent = YotoAccountDeviceEvent<{
392
+ topic: string;
393
+ message: YotoEventsMessage;
394
+ }>;
395
+ /**
396
+ * MQTT legacy status event data
397
+ */
398
+ export type YotoAccountMqttStatusLegacyEvent = YotoAccountDeviceEvent<{
399
+ topic: string;
400
+ message: YotoStatusLegacyMessage;
401
+ }>;
402
+ /**
403
+ * MQTT response event data
404
+ */
405
+ export type YotoAccountMqttResponseEvent = YotoAccountDeviceEvent<{
406
+ topic: string;
407
+ message: YotoResponseMessage;
408
+ }>;
409
+ /**
410
+ * MQTT unknown event data
411
+ */
412
+ export type YotoAccountMqttUnknownEvent = YotoAccountDeviceEvent<{
413
+ topic: string;
414
+ message: unknown;
415
+ }>;
416
+ /**
417
+ * Account error event data
418
+ */
419
+ export type YotoAccountErrorEvent = {
420
+ /**
421
+ * - Error instance
422
+ */
423
+ error: Error;
424
+ /**
425
+ * - Error context
426
+ */
427
+ context: YotoAccountErrorContext;
428
+ };
429
+ /**
430
+ * Device event handler set
431
+ */
432
+ export type YotoAccountDeviceEventHandlers = {
433
+ statusUpdate: (status: YotoDeviceStatus, source: string, changedFields: Set<keyof YotoDeviceStatus>) => void;
434
+ configUpdate: (config: YotoDeviceModelConfig, changedFields: Set<keyof YotoDeviceModelConfig>) => void;
435
+ playbackUpdate: (playback: YotoPlaybackState, changedFields: Set<keyof YotoPlaybackState>) => void;
436
+ online: (metadata: YotoDeviceOnlineMetadata) => void;
437
+ offline: (metadata: YotoDeviceOfflineMetadata) => void;
438
+ mqttConnect: (metadata: YotoMqttConnectMetadata) => void;
439
+ mqttDisconnect: (metadata: YotoMqttDisconnectMetadata) => void;
440
+ mqttClose: (metadata: YotoMqttCloseMetadata) => void;
441
+ mqttReconnect: () => void;
442
+ mqttOffline: () => void;
443
+ mqttEnd: () => void;
444
+ mqttStatus: (topic: string, message: YotoStatusMessage) => void;
445
+ mqttEvents: (topic: string, message: YotoEventsMessage) => void;
446
+ mqttStatusLegacy: (topic: string, message: YotoStatusLegacyMessage) => void;
447
+ mqttResponse: (topic: string, message: YotoResponseMessage) => void;
448
+ mqttUnknown: (topic: string, message: unknown) => void;
449
+ };
148
450
  /**
149
451
  * Event map for YotoAccount
150
452
  */
151
453
  export type YotoAccountEventMap = {
152
454
  "started": [YotoAccountStartedMetadata];
153
455
  "stopped": [];
154
- "deviceAdded": [string, YotoDeviceModel];
155
- "deviceRemoved": [string];
156
- "error": [Error, YotoAccountErrorContext];
456
+ "deviceAdded": [YotoAccountDeviceAddedEvent];
457
+ "deviceRemoved": [YotoAccountDeviceRemovedEvent];
458
+ "statusUpdate": [YotoAccountStatusUpdateEvent];
459
+ "configUpdate": [YotoAccountConfigUpdateEvent];
460
+ "playbackUpdate": [YotoAccountPlaybackUpdateEvent];
461
+ "online": [YotoAccountOnlineEvent];
462
+ "offline": [YotoAccountOfflineEvent];
463
+ "mqttConnect": [YotoAccountMqttConnectEvent];
464
+ "mqttDisconnect": [YotoAccountMqttDisconnectEvent];
465
+ "mqttClose": [YotoAccountMqttCloseEvent];
466
+ "mqttReconnect": [YotoAccountMqttReconnectEvent];
467
+ "mqttOffline": [YotoAccountMqttOfflineEvent];
468
+ "mqttEnd": [YotoAccountMqttEndEvent];
469
+ "mqttStatus": [YotoAccountMqttStatusEvent];
470
+ "mqttEvents": [YotoAccountMqttEventsEvent];
471
+ "mqttStatusLegacy": [YotoAccountMqttStatusLegacyEvent];
472
+ "mqttResponse": [YotoAccountMqttResponseEvent];
473
+ "mqttUnknown": [YotoAccountMqttUnknownEvent];
474
+ "error": [YotoAccountErrorEvent];
157
475
  };
158
476
  import { EventEmitter } from 'events';
159
477
  import { YotoClient } from './api-client.js';
160
478
  import { YotoDeviceModel } from './yoto-device.js';
161
479
  import type { YotoClientConstructorOptions } from './api-client.js';
162
480
  import type { YotoDeviceModelOptions } from './yoto-device.js';
481
+ import type { YotoDeviceStatus } from './yoto-device.js';
482
+ import type { YotoDeviceModelConfig } from './yoto-device.js';
483
+ import type { YotoPlaybackState } from './yoto-device.js';
484
+ import type { YotoDeviceOnlineMetadata } from './yoto-device.js';
485
+ import type { YotoDeviceOfflineMetadata } from './yoto-device.js';
486
+ import type { YotoMqttConnectMetadata } from './yoto-device.js';
487
+ import type { YotoMqttDisconnectMetadata } from './yoto-device.js';
488
+ import type { YotoMqttCloseMetadata } from './yoto-device.js';
489
+ import type { YotoStatusMessage } from './mqtt/client.js';
490
+ import type { YotoEventsMessage } from './mqtt/client.js';
491
+ import type { YotoStatusLegacyMessage } from './mqtt/client.js';
492
+ import type { YotoResponseMessage } from './mqtt/client.js';
163
493
  //# sourceMappingURL=yoto-account.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"yoto-account.d.ts","sourceRoot":"","sources":["yoto-account.js"],"names":[],"mappings":"AAaA;;;;;GAKG;AAEH;;;;;;GAMG;AAEH;;;;;GAKG;AAEH;;;;;;;;;GASG;AAMH;;;;;;;;;;;;;;GAcG;AACH;IAOE;;;QAGI;IACJ,qBAFY,kBAAkB,EAS7B;IAMD;;;OAGG;IACH,cAFa,UAAU,CAEc;IAErC;;;OAGG;IACH,eAFa,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAEF;IAEvC;;;OAGG;IACH,eAFa,OAAO,CAEmB;IAEvC;;;OAGG;IACH,mBAFa,OAAO,CAE2B;IAE/C;;;;OAIG;IACH,oBAHW,MAAM,GACJ,eAAe,GAAG,SAAS,CAEmB;IAE3D;;;OAGG;IACH,gBAFa,MAAM,EAAE,CAEsC;IAM3D;;;;OAIG;IACH,SAHa,OAAO,CAAC,IAAI,CAAC,CAyDzB;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAwCzB;IAED;;;OAGG;IACH,WAFa,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED;;;OAGG;IACH,kBAFa,OAAO,CAAC,IAAI,CAAC,CAwEzB;;CAqBF;;;;;;;;mBAnUa,4BAA4B;;;;mBAC5B,sBAAsB;;;;;;;;;YAMtB,MAAM;;;;eACN,MAAM;;;;gBACN,MAAM;;;;;;;;;iBAMN,MAAM;;;;aACN,MAAM,EAAE;;;;;kCAKT;IACZ,SAAa,EAAE,CAAC,0BAA0B,CAAC,CAAC;IAC5C,SAAa,EAAE,EAAE,CAAC;IAClB,aAAiB,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,eAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAW,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAA;CAC1C;6BAtCyB,QAAQ;2BACV,iBAAiB;gCACZ,kBAAkB;kDAND,iBAAiB;4CACvB,kBAAkB"}
1
+ {"version":3,"file":"yoto-account.d.ts","sourceRoot":"","sources":["yoto-account.js"],"names":[],"mappings":"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"}