@felixgeelhaar/govee-api-client 3.0.0 → 3.0.2

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 (62) hide show
  1. package/README.md +162 -2
  2. package/dist/GoveeClient.d.ts +16 -1
  3. package/dist/GoveeClient.d.ts.map +1 -1
  4. package/dist/GoveeClient.js +27 -0
  5. package/dist/GoveeClient.js.map +1 -1
  6. package/dist/domain/entities/Command.d.ts +124 -1
  7. package/dist/domain/entities/Command.d.ts.map +1 -1
  8. package/dist/domain/entities/Command.js +173 -1
  9. package/dist/domain/entities/Command.js.map +1 -1
  10. package/dist/domain/entities/DeviceState.d.ts +34 -2
  11. package/dist/domain/entities/DeviceState.d.ts.map +1 -1
  12. package/dist/domain/entities/DeviceState.js +32 -0
  13. package/dist/domain/entities/DeviceState.js.map +1 -1
  14. package/dist/domain/entities/GoveeDevice.d.ts.map +1 -1
  15. package/dist/domain/entities/GoveeDevice.js +56 -0
  16. package/dist/domain/entities/GoveeDevice.js.map +1 -1
  17. package/dist/domain/entities/index.d.ts +2 -2
  18. package/dist/domain/entities/index.d.ts.map +1 -1
  19. package/dist/domain/entities/index.js +1 -1
  20. package/dist/domain/entities/index.js.map +1 -1
  21. package/dist/domain/repositories/IGoveeDeviceRepository.d.ts +5 -0
  22. package/dist/domain/repositories/IGoveeDeviceRepository.d.ts.map +1 -1
  23. package/dist/domain/value-objects/LightScene.d.ts +72 -0
  24. package/dist/domain/value-objects/LightScene.d.ts.map +1 -0
  25. package/dist/domain/value-objects/LightScene.js +138 -0
  26. package/dist/domain/value-objects/LightScene.js.map +1 -0
  27. package/dist/domain/value-objects/MusicMode.d.ts +51 -0
  28. package/dist/domain/value-objects/MusicMode.d.ts.map +1 -0
  29. package/dist/domain/value-objects/MusicMode.js +95 -0
  30. package/dist/domain/value-objects/MusicMode.js.map +1 -0
  31. package/dist/domain/value-objects/SegmentColor.d.ts +59 -0
  32. package/dist/domain/value-objects/SegmentColor.d.ts.map +1 -0
  33. package/dist/domain/value-objects/SegmentColor.js +90 -0
  34. package/dist/domain/value-objects/SegmentColor.js.map +1 -0
  35. package/dist/domain/value-objects/index.d.ts +3 -0
  36. package/dist/domain/value-objects/index.d.ts.map +1 -1
  37. package/dist/domain/value-objects/index.js +3 -0
  38. package/dist/domain/value-objects/index.js.map +1 -1
  39. package/dist/index.d.ts +3 -3
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/infrastructure/GoveeDeviceRepository.d.ts +2 -0
  44. package/dist/infrastructure/GoveeDeviceRepository.d.ts.map +1 -1
  45. package/dist/infrastructure/GoveeDeviceRepository.js +125 -8
  46. package/dist/infrastructure/GoveeDeviceRepository.js.map +1 -1
  47. package/dist/infrastructure/response-schemas.d.ts +47 -0
  48. package/dist/infrastructure/response-schemas.d.ts.map +1 -1
  49. package/dist/infrastructure/response-schemas.js +28 -0
  50. package/dist/infrastructure/response-schemas.js.map +1 -1
  51. package/dist/infrastructure/retry/RetryableRepository.d.ts +5 -0
  52. package/dist/infrastructure/retry/RetryableRepository.d.ts.map +1 -1
  53. package/dist/infrastructure/retry/RetryableRepository.js +17 -0
  54. package/dist/infrastructure/retry/RetryableRepository.js.map +1 -1
  55. package/dist/services/GoveeControlService.d.ts +43 -1
  56. package/dist/services/GoveeControlService.d.ts.map +1 -1
  57. package/dist/services/GoveeControlService.js +70 -0
  58. package/dist/services/GoveeControlService.js.map +1 -1
  59. package/docs/EXAMPLES.md +238 -0
  60. package/docs/LLM_API_REFERENCE.md +139 -6
  61. package/docs/TYPE_DEFINITIONS.md +86 -0
  62. package/package.json +1 -1
package/README.md CHANGED
@@ -149,6 +149,78 @@ await client.turnOnWithColor(deviceId, model, red, new Brightness(75));
149
149
  await client.turnOnWithColorTemperature(deviceId, model, coolWhite, new Brightness(100));
150
150
  ```
151
151
 
152
+ ### Advanced Light Control
153
+
154
+ #### Dynamic Light Scenes
155
+
156
+ ```typescript
157
+ import { LightScene } from '@felixgeelhaar/govee-api-client';
158
+
159
+ // Get available dynamic scenes for a device
160
+ const scenes = await client.getDynamicScenes(deviceId, model);
161
+ console.log(`Available scenes: ${scenes.map(s => s.name).join(', ')}`);
162
+
163
+ // Use built-in factory methods for common scenes
164
+ await client.setLightScene(deviceId, model, LightScene.sunrise());
165
+ await client.setLightScene(deviceId, model, LightScene.sunset());
166
+ await client.setLightScene(deviceId, model, LightScene.rainbow());
167
+ await client.setLightScene(deviceId, model, LightScene.aurora());
168
+
169
+ // Or set a custom scene
170
+ const customScene = new LightScene(3853, 4280, 'My Scene');
171
+ await client.setLightScene(deviceId, model, customScene);
172
+ ```
173
+
174
+ #### Segment Color Control (RGB IC Devices)
175
+
176
+ ```typescript
177
+ import { SegmentColor, ColorRgb } from '@felixgeelhaar/govee-api-client';
178
+
179
+ // Set color for individual segments
180
+ const segment1 = new SegmentColor(0, new ColorRgb(255, 0, 0)); // Red
181
+ const segment2 = new SegmentColor(1, new ColorRgb(0, 255, 0)); // Green
182
+ const segment3 = new SegmentColor(2, new ColorRgb(0, 0, 255)); // Blue
183
+
184
+ // Set multiple segments at once
185
+ await client.setSegmentColors(deviceId, model, [segment1, segment2, segment3]);
186
+
187
+ // Set brightness for individual segments
188
+ await client.setSegmentBrightness(deviceId, model, [
189
+ { index: 0, brightness: new Brightness(100) },
190
+ { index: 1, brightness: new Brightness(75) },
191
+ { index: 2, brightness: new Brightness(50) },
192
+ ]);
193
+ ```
194
+
195
+ #### Music Mode
196
+
197
+ ```typescript
198
+ import { MusicMode } from '@felixgeelhaar/govee-api-client';
199
+
200
+ // Set music mode with sensitivity
201
+ const musicMode = new MusicMode(1, 75); // Mode 1, 75% sensitivity
202
+ await client.setMusicMode(deviceId, model, musicMode);
203
+
204
+ // Music mode without sensitivity (uses device default)
205
+ const basicMode = new MusicMode(2);
206
+ await client.setMusicMode(deviceId, model, basicMode);
207
+ ```
208
+
209
+ #### Toggle and Mode Controls
210
+
211
+ ```typescript
212
+ // Nightlight toggle
213
+ await client.setNightlightToggle(deviceId, model, true); // Enable
214
+ await client.setNightlightToggle(deviceId, model, false); // Disable
215
+
216
+ // Gradient toggle
217
+ await client.setGradientToggle(deviceId, model, true);
218
+
219
+ // Preset scenes
220
+ await client.setNightlightScene(deviceId, model, 1); // Scene ID 1
221
+ await client.setPresetScene(deviceId, model, 'cozy'); // Named scene
222
+ ```
223
+
152
224
  ### Value Objects
153
225
 
154
226
  #### ColorRgb
@@ -189,6 +261,75 @@ console.log(bright.asPercent()); // 0.75
189
261
  console.log(custom.isDim()); // false
190
262
  ```
191
263
 
264
+ #### LightScene
265
+
266
+ ```typescript
267
+ import { LightScene } from '@felixgeelhaar/govee-api-client';
268
+
269
+ // Built-in factory methods for common dynamic scenes
270
+ const sunrise = LightScene.sunrise();
271
+ const sunset = LightScene.sunset();
272
+ const rainbow = LightScene.rainbow();
273
+ const aurora = LightScene.aurora();
274
+ const candlelight = LightScene.candlelight();
275
+ const nightlight = LightScene.nightlight();
276
+ const romantic = LightScene.romantic();
277
+ const blinking = LightScene.blinking();
278
+
279
+ // Custom scene
280
+ const custom = new LightScene(3853, 4280, 'My Custom Scene');
281
+
282
+ // Scene properties
283
+ console.log(sunrise.name); // "Sunrise"
284
+ console.log(sunrise.id); // 3853
285
+ console.log(sunrise.paramId); // 4280
286
+ ```
287
+
288
+ #### SegmentColor
289
+
290
+ ```typescript
291
+ import { SegmentColor, ColorRgb, Brightness } from '@felixgeelhaar/govee-api-client';
292
+
293
+ // Color only for a segment
294
+ const segment1 = new SegmentColor(0, new ColorRgb(255, 0, 0));
295
+
296
+ // Color with brightness for a segment
297
+ const segment2 = new SegmentColor(
298
+ 1,
299
+ new ColorRgb(0, 255, 0),
300
+ new Brightness(75)
301
+ );
302
+
303
+ // Check if segment has brightness
304
+ console.log(segment1.hasBrightness()); // false
305
+ console.log(segment2.hasBrightness()); // true
306
+
307
+ // Access segment properties
308
+ console.log(segment2.index); // 1
309
+ console.log(segment2.color.toHex()); // "#00ff00"
310
+ console.log(segment2.brightness?.level); // 75
311
+ ```
312
+
313
+ #### MusicMode
314
+
315
+ ```typescript
316
+ import { MusicMode } from '@felixgeelhaar/govee-api-client';
317
+
318
+ // Music mode with sensitivity (0-100)
319
+ const mode1 = new MusicMode(1, 75);
320
+
321
+ // Music mode without sensitivity
322
+ const mode2 = new MusicMode(2);
323
+
324
+ // Check if mode has sensitivity
325
+ console.log(mode1.hasSensitivity()); // true
326
+ console.log(mode2.hasSensitivity()); // false
327
+
328
+ // Access properties
329
+ console.log(mode1.modeId); // 1
330
+ console.log(mode1.sensitivity); // 75
331
+ ```
332
+
192
333
  ## Error Handling
193
334
 
194
335
  The library provides a comprehensive error hierarchy for different types of failures:
@@ -464,7 +605,7 @@ await client.sendCommand(deviceId, model, setBrightness);
464
605
 
465
606
  ## Requirements
466
607
 
467
- - Node.js 18.0.0 or higher
608
+ - Node.js 20.0.0 or higher
468
609
  - Valid Govee Developer API key
469
610
 
470
611
  ## Development
@@ -492,7 +633,26 @@ MIT © [Felix Geelhaar]
492
633
 
493
634
  ## Contributing
494
635
 
495
- Contributions are welcome! Please ensure all tests pass and maintain the existing code style.
636
+ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on:
637
+
638
+ - Code of conduct
639
+ - Development workflow
640
+ - Code standards and architecture
641
+ - Testing requirements
642
+ - Commit guidelines
643
+ - Pull request process
644
+
645
+ For feature requests and discussions, visit our [GitHub Discussions](https://github.com/felixgeelhaar/govee-api-client/discussions).
646
+
647
+ ## Roadmap
648
+
649
+ See our [Product Roadmap](ROADMAP.md) for planned features and enhancements, including:
650
+
651
+ - **Short-term (1-3 months):** Additional scene factory methods, animation utilities, performance optimizations
652
+ - **Medium-term (3-6 months):** Device discovery, advanced scheduling, real-time monitoring
653
+ - **Long-term (6-12 months):** Cloud integration, UI components, AI/ML features, ecosystem integrations
654
+
655
+ We welcome feedback and contributions for any roadmap items!
496
656
 
497
657
  ## API Documentation
498
658
 
@@ -2,7 +2,7 @@ import { Logger } from 'pino';
2
2
  import { GoveeDevice } from './domain/entities/GoveeDevice';
3
3
  import { DeviceState } from './domain/entities/DeviceState';
4
4
  import { Command } from './domain/entities/Command';
5
- import { ColorRgb, ColorTemperature, Brightness } from './domain/value-objects';
5
+ import { ColorRgb, ColorTemperature, Brightness, LightScene, SegmentColor, MusicMode } from './domain/value-objects';
6
6
  import { RetryPolicy } from './infrastructure/retry';
7
7
  export interface GoveeClientConfig {
8
8
  apiKey?: string;
@@ -29,6 +29,21 @@ export declare class GoveeClient {
29
29
  setBrightness(deviceId: string, model: string, brightness: Brightness): Promise<void>;
30
30
  setColor(deviceId: string, model: string, color: ColorRgb): Promise<void>;
31
31
  setColorTemperature(deviceId: string, model: string, colorTemperature: ColorTemperature): Promise<void>;
32
+ getDynamicScenes(deviceId: string, model: string): Promise<LightScene[]>;
33
+ setLightScene(deviceId: string, model: string, scene: LightScene): Promise<void>;
34
+ setSegmentColors(deviceId: string, model: string, segments: SegmentColor | SegmentColor[]): Promise<void>;
35
+ setSegmentBrightness(deviceId: string, model: string, segments: Array<{
36
+ index: number;
37
+ brightness: Brightness;
38
+ }> | {
39
+ index: number;
40
+ brightness: Brightness;
41
+ }): Promise<void>;
42
+ setMusicMode(deviceId: string, model: string, musicMode: MusicMode): Promise<void>;
43
+ setNightlightToggle(deviceId: string, model: string, enabled: boolean): Promise<void>;
44
+ setGradientToggle(deviceId: string, model: string, enabled: boolean): Promise<void>;
45
+ setNightlightScene(deviceId: string, model: string, sceneValue: string | number): Promise<void>;
46
+ setPresetScene(deviceId: string, model: string, sceneValue: string | number): Promise<void>;
32
47
  turnOnWithBrightness(deviceId: string, model: string, brightness: Brightness): Promise<void>;
33
48
  turnOnWithColor(deviceId: string, model: string, color: ColorRgb, brightness?: Brightness): Promise<void>;
34
49
  turnOnWithColorTemperature(deviceId: string, model: string, colorTemperature: ColorTemperature, brightness?: Brightness): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"GoveeClient.d.ts","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoveeClient.d.ts","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,33 @@ export class GoveeClient {
96
96
  async setColorTemperature(deviceId, model, colorTemperature) {
97
97
  return this.controlService.setColorTemperature(deviceId, model, colorTemperature);
98
98
  }
99
+ async getDynamicScenes(deviceId, model) {
100
+ return this.controlService.getDynamicScenes(deviceId, model);
101
+ }
102
+ async setLightScene(deviceId, model, scene) {
103
+ return this.controlService.setLightScene(deviceId, model, scene);
104
+ }
105
+ async setSegmentColors(deviceId, model, segments) {
106
+ return this.controlService.setSegmentColors(deviceId, model, segments);
107
+ }
108
+ async setSegmentBrightness(deviceId, model, segments) {
109
+ return this.controlService.setSegmentBrightness(deviceId, model, segments);
110
+ }
111
+ async setMusicMode(deviceId, model, musicMode) {
112
+ return this.controlService.setMusicMode(deviceId, model, musicMode);
113
+ }
114
+ async setNightlightToggle(deviceId, model, enabled) {
115
+ return this.controlService.setNightlightToggle(deviceId, model, enabled);
116
+ }
117
+ async setGradientToggle(deviceId, model, enabled) {
118
+ return this.controlService.setGradientToggle(deviceId, model, enabled);
119
+ }
120
+ async setNightlightScene(deviceId, model, sceneValue) {
121
+ return this.controlService.setNightlightScene(deviceId, model, sceneValue);
122
+ }
123
+ async setPresetScene(deviceId, model, sceneValue) {
124
+ return this.controlService.setPresetScene(deviceId, model, sceneValue);
125
+ }
99
126
  // Convenience methods
100
127
  async turnOnWithBrightness(deviceId, model, brightness) {
101
128
  return this.controlService.turnOnWithBrightness(deviceId, model, brightness);
@@ -1 +1 @@
1
- {"version":3,"file":"GoveeClient.js","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoveeClient.js","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ColorRgb, ColorTemperature, Brightness } from '../value-objects';
1
+ import { ColorRgb, ColorTemperature, Brightness, LightScene, SegmentColor, MusicMode } from '../value-objects';
2
2
  export declare abstract class Command {
3
3
  abstract readonly name: string;
4
4
  abstract readonly value: unknown;
@@ -64,12 +64,135 @@ export declare class ColorTemperatureCommand extends Command {
64
64
  value: number;
65
65
  };
66
66
  }
67
+ export declare class LightSceneCommand extends Command {
68
+ readonly name = "lightScene";
69
+ private readonly _scene;
70
+ constructor(scene: LightScene);
71
+ get value(): {
72
+ paramId: number;
73
+ id: number;
74
+ };
75
+ get scene(): LightScene;
76
+ toObject(): {
77
+ name: string;
78
+ value: {
79
+ paramId: number;
80
+ id: number;
81
+ };
82
+ };
83
+ }
84
+ export declare class SegmentColorRgbCommand extends Command {
85
+ readonly name = "segmentedColorRgb";
86
+ private readonly _segments;
87
+ constructor(segments: SegmentColor | SegmentColor[]);
88
+ get value(): Array<{
89
+ segment: number;
90
+ rgb: {
91
+ r: number;
92
+ g: number;
93
+ b: number;
94
+ };
95
+ }>;
96
+ get segments(): readonly SegmentColor[];
97
+ toObject(): {
98
+ name: string;
99
+ value: Array<{
100
+ segment: number;
101
+ rgb: {
102
+ r: number;
103
+ g: number;
104
+ b: number;
105
+ };
106
+ }>;
107
+ };
108
+ }
109
+ export declare class SegmentBrightnessCommand extends Command {
110
+ readonly name = "segmentedBrightness";
111
+ private readonly _segments;
112
+ constructor(segments: Array<{
113
+ index: number;
114
+ brightness: Brightness;
115
+ }> | {
116
+ index: number;
117
+ brightness: Brightness;
118
+ });
119
+ get value(): Array<{
120
+ segment: number;
121
+ brightness: number;
122
+ }>;
123
+ get segments(): ReadonlyArray<{
124
+ index: number;
125
+ brightness: Brightness;
126
+ }>;
127
+ toObject(): {
128
+ name: string;
129
+ value: Array<{
130
+ segment: number;
131
+ brightness: number;
132
+ }>;
133
+ };
134
+ }
135
+ export declare class MusicModeCommand extends Command {
136
+ readonly name = "musicMode";
137
+ private readonly _musicMode;
138
+ constructor(musicMode: MusicMode);
139
+ get value(): {
140
+ modeId: number;
141
+ sensitivity?: number;
142
+ };
143
+ get musicMode(): MusicMode;
144
+ toObject(): {
145
+ name: string;
146
+ value: {
147
+ modeId: number;
148
+ sensitivity?: number;
149
+ };
150
+ };
151
+ }
152
+ export declare class ToggleCommand extends Command {
153
+ readonly name: string;
154
+ private readonly _enabled;
155
+ constructor(instance: string, enabled: boolean);
156
+ get value(): number;
157
+ get enabled(): boolean;
158
+ toObject(): {
159
+ name: string;
160
+ value: number;
161
+ };
162
+ }
163
+ export declare class ModeCommand extends Command {
164
+ readonly name: string;
165
+ private readonly _modeValue;
166
+ constructor(instance: string, modeValue: string | number);
167
+ get value(): string | number;
168
+ get modeValue(): string | number;
169
+ toObject(): {
170
+ name: string;
171
+ value: string | number;
172
+ };
173
+ }
67
174
  export declare class CommandFactory {
68
175
  static powerOn(): PowerOnCommand;
69
176
  static powerOff(): PowerOffCommand;
70
177
  static brightness(brightness: Brightness): BrightnessCommand;
71
178
  static color(color: ColorRgb): ColorCommand;
72
179
  static colorTemperature(colorTemperature: ColorTemperature): ColorTemperatureCommand;
180
+ static lightScene(scene: LightScene): LightSceneCommand;
181
+ static segmentColorRgb(segments: SegmentColor | SegmentColor[]): SegmentColorRgbCommand;
182
+ static segmentBrightness(segments: Array<{
183
+ index: number;
184
+ brightness: Brightness;
185
+ }> | {
186
+ index: number;
187
+ brightness: Brightness;
188
+ }): SegmentBrightnessCommand;
189
+ static musicMode(musicMode: MusicMode): MusicModeCommand;
190
+ static toggle(instance: string, enabled: boolean): ToggleCommand;
191
+ static nightlightToggle(enabled: boolean): ToggleCommand;
192
+ static gradientToggle(enabled: boolean): ToggleCommand;
193
+ static mode(instance: string, modeValue: string | number): ModeCommand;
194
+ static nightlightScene(sceneValue: string | number): ModeCommand;
195
+ static presetScene(sceneValue: string | number): ModeCommand;
73
196
  static fromObject(obj: {
74
197
  name: string;
75
198
  value: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1E,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAEjC,QAAQ,CAAC,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE;CACtD;AAED,qBAAa,cAAe,SAAQ,OAAO;IACzC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,QAAQ;IAEtB,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,SAAS;IAEvB,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAE7B,UAAU,EAAE,UAAU;IAKlC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;gBAEtB,KAAK,EAAE,QAAQ;IAK3B,IAAI,KAAK,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAE/C;IAED,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;CAGzE;AAED,qBAAa,uBAAwB,SAAQ,OAAO;IAClD,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;gBAEzC,gBAAgB,EAAE,gBAAgB;IAK9C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAG5C;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,OAAO,IAAI,cAAc;IAIhC,MAAM,CAAC,QAAQ,IAAI,eAAe;IAIlC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,iBAAiB;IAI5D,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY;IAI3C,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,uBAAuB;IAIpF,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;CAiClE"}
1
+ {"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Command.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ColorRgb, ColorTemperature, Brightness } from '../value-objects';
1
+ import { ColorRgb, ColorTemperature, Brightness, LightScene, SegmentColor, MusicMode, } from '../value-objects';
2
2
  export class Command {
3
3
  }
4
4
  export class PowerOnCommand extends Command {
@@ -69,6 +69,108 @@ export class ColorTemperatureCommand extends Command {
69
69
  return { name: this.name, value: this.value };
70
70
  }
71
71
  }
72
+ export class LightSceneCommand extends Command {
73
+ constructor(scene) {
74
+ super();
75
+ this.name = 'lightScene';
76
+ this._scene = scene;
77
+ }
78
+ get value() {
79
+ return this._scene.toApiValue();
80
+ }
81
+ get scene() {
82
+ return this._scene;
83
+ }
84
+ toObject() {
85
+ return { name: this.name, value: this.value };
86
+ }
87
+ }
88
+ export class SegmentColorRgbCommand extends Command {
89
+ constructor(segments) {
90
+ super();
91
+ this.name = 'segmentedColorRgb';
92
+ this._segments = Array.isArray(segments) ? segments : [segments];
93
+ }
94
+ get value() {
95
+ return this._segments.map(seg => ({
96
+ segment: seg.index,
97
+ rgb: seg.color.toObject(),
98
+ }));
99
+ }
100
+ get segments() {
101
+ return Object.freeze([...this._segments]);
102
+ }
103
+ toObject() {
104
+ return { name: this.name, value: this.value };
105
+ }
106
+ }
107
+ export class SegmentBrightnessCommand extends Command {
108
+ constructor(segments) {
109
+ super();
110
+ this.name = 'segmentedBrightness';
111
+ this._segments = Array.isArray(segments) ? segments : [segments];
112
+ }
113
+ get value() {
114
+ return this._segments.map(seg => ({
115
+ segment: seg.index,
116
+ brightness: seg.brightness.level,
117
+ }));
118
+ }
119
+ get segments() {
120
+ return Object.freeze([...this._segments]);
121
+ }
122
+ toObject() {
123
+ return { name: this.name, value: this.value };
124
+ }
125
+ }
126
+ export class MusicModeCommand extends Command {
127
+ constructor(musicMode) {
128
+ super();
129
+ this.name = 'musicMode';
130
+ this._musicMode = musicMode;
131
+ }
132
+ get value() {
133
+ return this._musicMode.toApiValue();
134
+ }
135
+ get musicMode() {
136
+ return this._musicMode;
137
+ }
138
+ toObject() {
139
+ return { name: this.name, value: this.value };
140
+ }
141
+ }
142
+ export class ToggleCommand extends Command {
143
+ constructor(instance, enabled) {
144
+ super();
145
+ this.name = instance; // e.g., 'nightlightToggle', 'gradientToggle'
146
+ this._enabled = enabled;
147
+ }
148
+ get value() {
149
+ return this._enabled ? 1 : 0;
150
+ }
151
+ get enabled() {
152
+ return this._enabled;
153
+ }
154
+ toObject() {
155
+ return { name: this.name, value: this.value };
156
+ }
157
+ }
158
+ export class ModeCommand extends Command {
159
+ constructor(instance, modeValue) {
160
+ super();
161
+ this.name = instance; // e.g., 'nightlightScene', 'presetScene'
162
+ this._modeValue = modeValue;
163
+ }
164
+ get value() {
165
+ return this._modeValue;
166
+ }
167
+ get modeValue() {
168
+ return this._modeValue;
169
+ }
170
+ toObject() {
171
+ return { name: this.name, value: this.value };
172
+ }
173
+ }
72
174
  export class CommandFactory {
73
175
  static powerOn() {
74
176
  return new PowerOnCommand();
@@ -85,6 +187,36 @@ export class CommandFactory {
85
187
  static colorTemperature(colorTemperature) {
86
188
  return new ColorTemperatureCommand(colorTemperature);
87
189
  }
190
+ static lightScene(scene) {
191
+ return new LightSceneCommand(scene);
192
+ }
193
+ static segmentColorRgb(segments) {
194
+ return new SegmentColorRgbCommand(segments);
195
+ }
196
+ static segmentBrightness(segments) {
197
+ return new SegmentBrightnessCommand(segments);
198
+ }
199
+ static musicMode(musicMode) {
200
+ return new MusicModeCommand(musicMode);
201
+ }
202
+ static toggle(instance, enabled) {
203
+ return new ToggleCommand(instance, enabled);
204
+ }
205
+ static nightlightToggle(enabled) {
206
+ return new ToggleCommand('nightlightToggle', enabled);
207
+ }
208
+ static gradientToggle(enabled) {
209
+ return new ToggleCommand('gradientToggle', enabled);
210
+ }
211
+ static mode(instance, modeValue) {
212
+ return new ModeCommand(instance, modeValue);
213
+ }
214
+ static nightlightScene(sceneValue) {
215
+ return new ModeCommand('nightlightScene', sceneValue);
216
+ }
217
+ static presetScene(sceneValue) {
218
+ return new ModeCommand('presetScene', sceneValue);
219
+ }
88
220
  static fromObject(obj) {
89
221
  switch (obj.name) {
90
222
  case 'turn':
@@ -111,6 +243,46 @@ export class CommandFactory {
111
243
  return new ColorTemperatureCommand(new ColorTemperature(obj.value));
112
244
  }
113
245
  throw new Error(`Invalid color temperature command value: ${obj.value}`);
246
+ case 'lightScene':
247
+ if (typeof obj.value === 'object' && obj.value !== null) {
248
+ const sceneValue = obj.value;
249
+ return new LightSceneCommand(new LightScene(sceneValue.id, sceneValue.paramId, 'Scene'));
250
+ }
251
+ throw new Error(`Invalid light scene command value: ${obj.value}`);
252
+ case 'segmentedColorRgb':
253
+ if (Array.isArray(obj.value)) {
254
+ const segments = obj.value.map((seg) => new SegmentColor(seg.segment, ColorRgb.fromObject(seg.rgb)));
255
+ return new SegmentColorRgbCommand(segments);
256
+ }
257
+ throw new Error(`Invalid segmented color RGB command value: ${obj.value}`);
258
+ case 'segmentedBrightness':
259
+ if (Array.isArray(obj.value)) {
260
+ const segments = obj.value.map((seg) => ({
261
+ index: seg.segment,
262
+ brightness: new Brightness(seg.brightness),
263
+ }));
264
+ return new SegmentBrightnessCommand(segments);
265
+ }
266
+ throw new Error(`Invalid segmented brightness command value: ${obj.value}`);
267
+ case 'musicMode':
268
+ if (typeof obj.value === 'object' && obj.value !== null) {
269
+ const modeValue = obj.value;
270
+ return new MusicModeCommand(new MusicMode(modeValue.modeId, modeValue.sensitivity));
271
+ }
272
+ throw new Error(`Invalid music mode command value: ${obj.value}`);
273
+ case 'nightlightToggle':
274
+ case 'gradientToggle':
275
+ if (typeof obj.value === 'number' || typeof obj.value === 'boolean') {
276
+ const enabled = typeof obj.value === 'number' ? obj.value === 1 : obj.value;
277
+ return new ToggleCommand(obj.name, enabled);
278
+ }
279
+ throw new Error(`Invalid toggle command value: ${obj.value}`);
280
+ case 'nightlightScene':
281
+ case 'presetScene':
282
+ if (typeof obj.value === 'string' || typeof obj.value === 'number') {
283
+ return new ModeCommand(obj.name, obj.value);
284
+ }
285
+ throw new Error(`Invalid mode command value: ${obj.value}`);
114
286
  default:
115
287
  throw new Error(`Unknown command name: ${obj.name}`);
116
288
  }