@felixgeelhaar/govee-api-client 2.1.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -5
- package/dist/GoveeClient.d.ts +2 -2
- package/dist/GoveeClient.d.ts.map +1 -1
- package/dist/GoveeClient.js +6 -4
- package/dist/GoveeClient.js.map +1 -1
- package/docs/EXAMPLES.md +25 -4
- package/docs/TYPE_DEFINITIONS.md +17 -1
- package/package.json +12 -13
package/README.md
CHANGED
|
@@ -36,10 +36,11 @@ import {
|
|
|
36
36
|
ColorTemperature,
|
|
37
37
|
} from '@felixgeelhaar/govee-api-client';
|
|
38
38
|
|
|
39
|
-
// Initialize the client
|
|
40
|
-
const client = new GoveeClient(
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
// Initialize the client (uses GOVEE_API_KEY environment variable)
|
|
40
|
+
const client = new GoveeClient();
|
|
41
|
+
|
|
42
|
+
// Or provide API key explicitly
|
|
43
|
+
// const client = new GoveeClient({ apiKey: 'your-govee-api-key' });
|
|
43
44
|
|
|
44
45
|
// Get all devices
|
|
45
46
|
const devices = await client.getDevices();
|
|
@@ -61,12 +62,41 @@ if (livingRoomLight) {
|
|
|
61
62
|
|
|
62
63
|
## Configuration
|
|
63
64
|
|
|
65
|
+
### API Key
|
|
66
|
+
|
|
67
|
+
The client reads the API key from the `GOVEE_API_KEY` environment variable by default:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Set environment variable
|
|
71
|
+
export GOVEE_API_KEY=your-govee-api-key
|
|
72
|
+
|
|
73
|
+
# Or use a .env file
|
|
74
|
+
echo "GOVEE_API_KEY=your-govee-api-key" > .env
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
import { GoveeClient } from '@felixgeelhaar/govee-api-client';
|
|
79
|
+
|
|
80
|
+
// Uses GOVEE_API_KEY environment variable automatically
|
|
81
|
+
const client = new GoveeClient();
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
You can also provide the API key explicitly (not recommended for production):
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
const client = new GoveeClient({
|
|
88
|
+
apiKey: 'your-govee-api-key', // Explicit API key (overrides environment variable)
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Full Configuration
|
|
93
|
+
|
|
64
94
|
```typescript
|
|
65
95
|
import pino from 'pino';
|
|
66
96
|
import { GoveeClient, RetryPolicy } from '@felixgeelhaar/govee-api-client';
|
|
67
97
|
|
|
68
98
|
const client = new GoveeClient({
|
|
69
|
-
apiKey
|
|
99
|
+
// apiKey is optional - uses GOVEE_API_KEY environment variable by default
|
|
70
100
|
timeout: 30000, // Request timeout in milliseconds (default: 30000)
|
|
71
101
|
rateLimit: 95, // Requests per minute (default: 95, with 5 buffer under Govee's limit)
|
|
72
102
|
logger: pino({ level: 'info' }), // Optional logger (silent by default)
|
package/dist/GoveeClient.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Command } from './domain/entities/Command';
|
|
|
5
5
|
import { ColorRgb, ColorTemperature, Brightness } from './domain/value-objects';
|
|
6
6
|
import { RetryPolicy } from './infrastructure/retry';
|
|
7
7
|
export interface GoveeClientConfig {
|
|
8
|
-
apiKey
|
|
8
|
+
apiKey?: string;
|
|
9
9
|
timeout?: number;
|
|
10
10
|
rateLimit?: number;
|
|
11
11
|
logger?: Logger;
|
|
@@ -15,7 +15,7 @@ export interface GoveeClientConfig {
|
|
|
15
15
|
export declare class GoveeClient {
|
|
16
16
|
private readonly controlService;
|
|
17
17
|
private readonly logger;
|
|
18
|
-
constructor(config
|
|
18
|
+
constructor(config?: GoveeClientConfig);
|
|
19
19
|
private validateConfig;
|
|
20
20
|
getDevices(): Promise<GoveeDevice[]>;
|
|
21
21
|
getDeviceState(deviceId: string, model: string): Promise<DeviceState>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoveeClient.d.ts","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"GoveeClient.d.ts","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
|
package/dist/GoveeClient.js
CHANGED
|
@@ -3,13 +3,15 @@ import { GoveeDeviceRepository } from './infrastructure/GoveeDeviceRepository';
|
|
|
3
3
|
import { GoveeControlService } from './services/GoveeControlService';
|
|
4
4
|
import { RetryPolicy } from './infrastructure/retry';
|
|
5
5
|
export class GoveeClient {
|
|
6
|
-
constructor(config) {
|
|
7
|
-
|
|
6
|
+
constructor(config = {}) {
|
|
7
|
+
// Resolve API key from config or environment variable
|
|
8
|
+
const apiKey = config.apiKey ?? process.env.GOVEE_API_KEY;
|
|
9
|
+
this.validateConfig({ ...config, apiKey });
|
|
8
10
|
// Initialize logger (silent by default)
|
|
9
11
|
this.logger = config.logger ?? pino({ level: 'silent' });
|
|
10
12
|
// Initialize repository
|
|
11
13
|
const repositoryConfig = {
|
|
12
|
-
apiKey:
|
|
14
|
+
apiKey: apiKey,
|
|
13
15
|
logger: this.logger,
|
|
14
16
|
};
|
|
15
17
|
if (config.timeout !== undefined) {
|
|
@@ -35,7 +37,7 @@ export class GoveeClient {
|
|
|
35
37
|
}
|
|
36
38
|
validateConfig(config) {
|
|
37
39
|
if (!config.apiKey || typeof config.apiKey !== 'string' || config.apiKey.trim().length === 0) {
|
|
38
|
-
throw new Error('API key is required
|
|
40
|
+
throw new Error('API key is required. Provide it via config.apiKey or set the GOVEE_API_KEY environment variable.');
|
|
39
41
|
}
|
|
40
42
|
if (config.timeout !== undefined &&
|
|
41
43
|
(!Number.isInteger(config.timeout) || config.timeout <= 0)) {
|
package/dist/GoveeClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoveeClient.js","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"AAAA,OAAO,IAAgB,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWrD,MAAM,OAAO,WAAW;IAItB,YAAY,
|
|
1
|
+
{"version":3,"file":"GoveeClient.js","sourceRoot":"","sources":["../src/GoveeClient.ts"],"names":[],"mappings":"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"}
|
package/docs/EXAMPLES.md
CHANGED
|
@@ -17,14 +17,25 @@ This document provides comprehensive examples for using the Govee API Client lib
|
|
|
17
17
|
|
|
18
18
|
## Basic Setup
|
|
19
19
|
|
|
20
|
+
### Environment Variable Configuration
|
|
21
|
+
|
|
22
|
+
The recommended approach is to use environment variables for the API key:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Set environment variable
|
|
26
|
+
export GOVEE_API_KEY=your-govee-api-key-here
|
|
27
|
+
|
|
28
|
+
# Or use a .env file (with dotenv package)
|
|
29
|
+
echo "GOVEE_API_KEY=your-govee-api-key-here" > .env
|
|
30
|
+
```
|
|
31
|
+
|
|
20
32
|
### Simple Client Initialization
|
|
21
33
|
|
|
22
34
|
```typescript
|
|
23
35
|
import { GoveeClient } from '@felixgeelhaar/govee-api-client';
|
|
24
36
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
});
|
|
37
|
+
// Uses GOVEE_API_KEY environment variable automatically
|
|
38
|
+
const client = new GoveeClient();
|
|
28
39
|
|
|
29
40
|
// Test connection
|
|
30
41
|
try {
|
|
@@ -42,7 +53,7 @@ import { GoveeClient } from '@felixgeelhaar/govee-api-client';
|
|
|
42
53
|
import pino from 'pino';
|
|
43
54
|
|
|
44
55
|
const client = new GoveeClient({
|
|
45
|
-
apiKey
|
|
56
|
+
// apiKey uses GOVEE_API_KEY environment variable by default
|
|
46
57
|
timeout: 30000, // 30 second timeout
|
|
47
58
|
rateLimit: 90, // 90 requests per minute (conservative)
|
|
48
59
|
logger: pino({
|
|
@@ -58,6 +69,16 @@ const client = new GoveeClient({
|
|
|
58
69
|
});
|
|
59
70
|
```
|
|
60
71
|
|
|
72
|
+
### Explicit API Key (Not Recommended)
|
|
73
|
+
|
|
74
|
+
For testing or special cases, you can provide the API key explicitly:
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
const client = new GoveeClient({
|
|
78
|
+
apiKey: 'your-govee-api-key-here', // Overrides environment variable
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
61
82
|
## Device Discovery
|
|
62
83
|
|
|
63
84
|
### List All Devices
|
package/docs/TYPE_DEFINITIONS.md
CHANGED
|
@@ -22,7 +22,7 @@ Main configuration interface for initializing the GoveeClient.
|
|
|
22
22
|
|
|
23
23
|
```typescript
|
|
24
24
|
interface GoveeClientConfig {
|
|
25
|
-
apiKey
|
|
25
|
+
apiKey?: string; // Optional: Govee API key (uses GOVEE_API_KEY env var if not provided)
|
|
26
26
|
timeout?: number; // Optional: Request timeout in milliseconds (default: 30000)
|
|
27
27
|
rateLimit?: number; // Optional: Max requests per minute (default: 95)
|
|
28
28
|
logger?: Logger; // Optional: Pino logger instance
|
|
@@ -33,6 +33,22 @@ interface GoveeClientConfig {
|
|
|
33
33
|
type RetryPolicyType = 'development' | 'testing' | 'production' | 'custom' | RetryPolicy;
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
+
**API Key Resolution:**
|
|
37
|
+
|
|
38
|
+
- If `apiKey` is provided in config, it will be used
|
|
39
|
+
- Otherwise, the client reads from the `GOVEE_API_KEY` environment variable
|
|
40
|
+
- If neither is available, an error is thrown with a helpful message
|
|
41
|
+
|
|
42
|
+
**Example:**
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// Uses GOVEE_API_KEY environment variable
|
|
46
|
+
const client = new GoveeClient();
|
|
47
|
+
|
|
48
|
+
// Explicit API key (overrides environment variable)
|
|
49
|
+
const client = new GoveeClient({ apiKey: 'your-key-here' });
|
|
50
|
+
```
|
|
51
|
+
|
|
36
52
|
### GoveeControlServiceConfig
|
|
37
53
|
|
|
38
54
|
Configuration for the internal control service.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@felixgeelhaar/govee-api-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Enterprise-grade TypeScript client library for the Govee Developer REST API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,8 +19,7 @@
|
|
|
19
19
|
"format": "prettier --write \"src/**/*.{ts,js,json}\"",
|
|
20
20
|
"format:check": "prettier --check \"src/**/*.{ts,js,json}\"",
|
|
21
21
|
"docs:validate": "echo 'Validating documentation files...' && test -f docs/LLM_API_REFERENCE.md && test -f docs/EXAMPLES.md && test -f docs/TYPE_DEFINITIONS.md && echo 'Documentation validation complete'",
|
|
22
|
-
"prepublishOnly": "npm run build && npm run docs:validate"
|
|
23
|
-
"prepare": "husky install"
|
|
22
|
+
"prepublishOnly": "npm run build && npm run docs:validate"
|
|
24
23
|
},
|
|
25
24
|
"keywords": [
|
|
26
25
|
"govee",
|
|
@@ -37,25 +36,25 @@
|
|
|
37
36
|
"author": "Felix Geelhaar <felix@geelhaar.com>",
|
|
38
37
|
"license": "MIT",
|
|
39
38
|
"dependencies": {
|
|
40
|
-
"axios": "1.
|
|
41
|
-
"pino": "
|
|
42
|
-
"zod": "4.
|
|
39
|
+
"axios": "1.12.2",
|
|
40
|
+
"pino": "10.0.0",
|
|
41
|
+
"zod": "4.1.11"
|
|
43
42
|
},
|
|
44
43
|
"devDependencies": {
|
|
45
44
|
"@types/nock": "10.0.3",
|
|
46
|
-
"@types/node": "
|
|
45
|
+
"@types/node": "24.6.2",
|
|
47
46
|
"@vitest/coverage-v8": "3.2.4",
|
|
48
47
|
"@vitest/ui": "3.2.4",
|
|
49
|
-
"husky": "
|
|
50
|
-
"lint-staged": "
|
|
51
|
-
"msw": "2.
|
|
52
|
-
"nock": "14.0.
|
|
48
|
+
"husky": "9.1.7",
|
|
49
|
+
"lint-staged": "16.2.3",
|
|
50
|
+
"msw": "2.11.3",
|
|
51
|
+
"nock": "14.0.10",
|
|
53
52
|
"prettier": "3.6.2",
|
|
54
|
-
"typescript": "5.
|
|
53
|
+
"typescript": "5.9.3",
|
|
55
54
|
"vitest": "3.2.4"
|
|
56
55
|
},
|
|
57
56
|
"engines": {
|
|
58
|
-
"node": ">=
|
|
57
|
+
"node": ">=20.0.0"
|
|
59
58
|
},
|
|
60
59
|
"repository": {
|
|
61
60
|
"type": "git",
|