node-switchbot 3.0.1 → 3.0.2-beta.1
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/.github/npm-version-script.cjs +81 -0
- package/.github/workflows/release.yml +1 -1
- package/BLE.md +3 -3
- package/OpenAPI.md +2 -2
- package/dist/advertising.d.ts +2 -1
- package/dist/advertising.d.ts.map +1 -1
- package/dist/advertising.js.map +1 -1
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +10 -5
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/parameter-checker.d.ts.map +1 -1
- package/dist/parameter-checker.js +10 -1
- package/dist/parameter-checker.js.map +1 -1
- package/dist/switchbot-ble.d.ts +43 -3
- package/dist/switchbot-ble.d.ts.map +1 -1
- package/dist/switchbot-ble.js +174 -171
- package/dist/switchbot-ble.js.map +1 -1
- package/dist/switchbot-openapi.js +7 -7
- package/dist/switchbot-openapi.js.map +1 -1
- package/dist/test/advertising.test.js +3 -3
- package/dist/test/advertising.test.js.map +1 -1
- package/dist/test/index.test.js +5 -26
- package/dist/test/index.test.js.map +1 -1
- package/dist/test/switchbot-openapi.test.js +64 -10
- package/dist/test/switchbot-openapi.test.js.map +1 -1
- package/docs/media/BLE.md +3 -3
- package/package.json +1 -1
package/dist/test/index.test.js
CHANGED
|
@@ -1,35 +1,14 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
2
|
import * as index from '../index.js';
|
|
3
3
|
describe('index module exports', () => {
|
|
4
|
-
it('should export switchbot', () => {
|
|
5
|
-
expect(index).
|
|
4
|
+
it('should export switchbot-ble', () => {
|
|
5
|
+
expect(index.SwitchBotBLE).toBeDefined();
|
|
6
6
|
});
|
|
7
7
|
it('should export switchbot-openapi', () => {
|
|
8
|
-
expect(index).
|
|
8
|
+
expect(index.SwitchBotOpenAPI).toBeDefined();
|
|
9
9
|
});
|
|
10
|
-
it('should export
|
|
11
|
-
expect(index).
|
|
12
|
-
});
|
|
13
|
-
it('should export devicelist', () => {
|
|
14
|
-
expect(index).toHaveProperty('devicelist');
|
|
15
|
-
});
|
|
16
|
-
it('should export devicepush', () => {
|
|
17
|
-
expect(index).toHaveProperty('devicepush');
|
|
18
|
-
});
|
|
19
|
-
it('should export deviceresponse', () => {
|
|
20
|
-
expect(index).toHaveProperty('deviceresponse');
|
|
21
|
-
});
|
|
22
|
-
it('should export devicestatus', () => {
|
|
23
|
-
expect(index).toHaveProperty('devicestatus');
|
|
24
|
-
});
|
|
25
|
-
it('should export devicewebhookstatus', () => {
|
|
26
|
-
expect(index).toHaveProperty('devicewebhookstatus');
|
|
27
|
-
});
|
|
28
|
-
it('should export irdevicelist', () => {
|
|
29
|
-
expect(index).toHaveProperty('irdevicelist');
|
|
30
|
-
});
|
|
31
|
-
it('should export types', () => {
|
|
32
|
-
expect(index).toHaveProperty('types');
|
|
10
|
+
it('should export SwitchbotDevice', () => {
|
|
11
|
+
expect(index.SwitchbotDevice).toBeDefined();
|
|
33
12
|
});
|
|
34
13
|
});
|
|
35
14
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/test/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/test/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,25 +1,35 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
1
2
|
import { request } from 'undici';
|
|
2
|
-
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
4
|
import { SwitchBotOpenAPI } from '../switchbot-openapi.js';
|
|
4
|
-
|
|
5
|
-
request:
|
|
5
|
+
vi.mock('undici', () => ({
|
|
6
|
+
request: vi.fn(),
|
|
6
7
|
}));
|
|
7
8
|
describe('switchBotOpenAPI', () => {
|
|
8
9
|
let switchBotAPI;
|
|
9
10
|
const token = 'test-token';
|
|
10
11
|
const secret = 'test-secret';
|
|
12
|
+
const port = 3000;
|
|
13
|
+
let server;
|
|
11
14
|
beforeEach(() => {
|
|
12
15
|
switchBotAPI = new SwitchBotOpenAPI(token, secret);
|
|
16
|
+
if (server && typeof server.close === 'function') {
|
|
17
|
+
server.close();
|
|
18
|
+
}
|
|
19
|
+
server = startServer(port);
|
|
13
20
|
});
|
|
14
21
|
afterEach(() => {
|
|
15
|
-
|
|
22
|
+
vi.clearAllMocks();
|
|
23
|
+
if (server && typeof server.close === 'function') {
|
|
24
|
+
server.close();
|
|
25
|
+
}
|
|
16
26
|
});
|
|
17
27
|
describe('getDevices', () => {
|
|
18
28
|
it('should retrieve the list of devices', async () => {
|
|
19
29
|
const mockDevicesResponse = { body: { devices: [] }, statusCode: 200 };
|
|
20
30
|
request.mockResolvedValue({
|
|
21
31
|
body: {
|
|
22
|
-
json:
|
|
32
|
+
json: vi.fn().mockResolvedValue(mockDevicesResponse.body),
|
|
23
33
|
},
|
|
24
34
|
statusCode: mockDevicesResponse.statusCode,
|
|
25
35
|
});
|
|
@@ -38,7 +48,7 @@ describe('switchBotOpenAPI', () => {
|
|
|
38
48
|
const mockControlResponse = { body: {}, statusCode: 200 };
|
|
39
49
|
request.mockResolvedValue({
|
|
40
50
|
body: {
|
|
41
|
-
json:
|
|
51
|
+
json: vi.fn().mockResolvedValue(mockControlResponse.body),
|
|
42
52
|
},
|
|
43
53
|
statusCode: mockControlResponse.statusCode,
|
|
44
54
|
});
|
|
@@ -57,7 +67,7 @@ describe('switchBotOpenAPI', () => {
|
|
|
57
67
|
const mockStatusResponse = { body: {}, statusCode: 200 };
|
|
58
68
|
request.mockResolvedValue({
|
|
59
69
|
body: {
|
|
60
|
-
json:
|
|
70
|
+
json: vi.fn().mockResolvedValue(mockStatusResponse.body),
|
|
61
71
|
},
|
|
62
72
|
statusCode: mockStatusResponse.statusCode,
|
|
63
73
|
});
|
|
@@ -76,21 +86,65 @@ describe('switchBotOpenAPI', () => {
|
|
|
76
86
|
const mockWebhookResponse = { body: {}, statusCode: 200 };
|
|
77
87
|
request.mockResolvedValue({
|
|
78
88
|
body: {
|
|
79
|
-
json:
|
|
89
|
+
json: vi.fn().mockResolvedValue(mockWebhookResponse.body),
|
|
80
90
|
},
|
|
81
91
|
statusCode: mockWebhookResponse.statusCode,
|
|
82
92
|
});
|
|
83
|
-
const url =
|
|
93
|
+
const url = `http://localhost:${port}/webhook`;
|
|
84
94
|
await switchBotAPI.setupWebhook(url);
|
|
85
95
|
expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
|
|
86
96
|
});
|
|
87
97
|
it('should log an error if the webhook setup fails', async () => {
|
|
88
98
|
const errorMessage = 'Failed to create webhook listener';
|
|
89
99
|
request.mockRejectedValue(new Error(errorMessage));
|
|
90
|
-
const url =
|
|
100
|
+
const url = `http://localhost:${port}/webhook`;
|
|
91
101
|
await switchBotAPI.setupWebhook(url);
|
|
92
102
|
expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
|
|
93
103
|
});
|
|
94
104
|
});
|
|
105
|
+
describe('deleteWebhook', () => {
|
|
106
|
+
it('should delete the webhook listener and remove the webhook from the server', async () => {
|
|
107
|
+
const mockDeleteResponse = { body: {}, statusCode: 200 };
|
|
108
|
+
request.mockResolvedValue({
|
|
109
|
+
body: {
|
|
110
|
+
json: vi.fn().mockResolvedValue(mockDeleteResponse.body),
|
|
111
|
+
},
|
|
112
|
+
statusCode: mockDeleteResponse.statusCode,
|
|
113
|
+
});
|
|
114
|
+
const url = `http://localhost:${port}/webhook`;
|
|
115
|
+
await switchBotAPI.deleteWebhook(url);
|
|
116
|
+
expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
|
|
117
|
+
});
|
|
118
|
+
it('should log an error if the webhook deletion fails', async () => {
|
|
119
|
+
const errorMessage = 'Failed to delete webhook listener';
|
|
120
|
+
request.mockRejectedValue(new Error(errorMessage));
|
|
121
|
+
const url = `http://localhost:${port}/webhook`;
|
|
122
|
+
await switchBotAPI.deleteWebhook(url);
|
|
123
|
+
expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
|
|
124
|
+
});
|
|
125
|
+
});
|
|
95
126
|
});
|
|
127
|
+
function startServer(port) {
|
|
128
|
+
const server = createServer((req, res) => {
|
|
129
|
+
if (req.method === 'POST' && req.url === '/webhook') {
|
|
130
|
+
req.on('data', () => {
|
|
131
|
+
// Process the chunk if needed
|
|
132
|
+
});
|
|
133
|
+
req.on('end', () => {
|
|
134
|
+
// Log the webhook received event
|
|
135
|
+
// console.log('Webhook received:', body)
|
|
136
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
137
|
+
res.end(JSON.stringify({ message: 'Webhook received' }));
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
142
|
+
res.end(JSON.stringify({ message: 'Not Found' }));
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
server.listen(port, () => {
|
|
146
|
+
// Server is listening on port ${port}
|
|
147
|
+
});
|
|
148
|
+
return server;
|
|
149
|
+
}
|
|
96
150
|
//# sourceMappingURL=switchbot-openapi.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchbot-openapi.test.js","sourceRoot":"","sources":["../../src/test/switchbot-openapi.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"switchbot-openapi.test.js","sourceRoot":"","sources":["../../src/test/switchbot-openapi.test.ts"],"names":[],"mappings":"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"}
|
package/docs/media/BLE.md
CHANGED
|
@@ -80,7 +80,7 @@ const switchBotBLE = new SwitchBotBLE()
|
|
|
80
80
|
try {
|
|
81
81
|
await switchBotBLE.startScan()
|
|
82
82
|
} catch (e: any) {
|
|
83
|
-
console.error(`Failed to start BLE scanning
|
|
83
|
+
console.error(`Failed to start BLE scanning, Error: ${e.message ?? e}`)
|
|
84
84
|
}
|
|
85
85
|
```
|
|
86
86
|
|
|
@@ -230,7 +230,7 @@ switchBotBLE.onadvertisement = async (ad: any) => {
|
|
|
230
230
|
try {
|
|
231
231
|
this.bleEventHandler[ad.address]?.(ad.serviceData)
|
|
232
232
|
} catch (e: any) {
|
|
233
|
-
await this.errorLog(`Failed to handle BLE event
|
|
233
|
+
await this.errorLog(`Failed to handle BLE event, Error: ${e.message ?? e}`)
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
```
|
|
@@ -246,7 +246,7 @@ try {
|
|
|
246
246
|
switchBotBLE.stopScan()
|
|
247
247
|
console.log('Stopped BLE scanning to close listening.')
|
|
248
248
|
} catch (e: any) {
|
|
249
|
-
console.error(`Failed to stop BLE scanning,
|
|
249
|
+
console.error(`Failed to stop BLE scanning, Error: ${e.message ?? e}`)
|
|
250
250
|
}
|
|
251
251
|
```
|
|
252
252
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-switchbot",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.0.1",
|
|
4
|
+
"version": "3.0.2-beta.1",
|
|
5
5
|
"description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).",
|
|
6
6
|
"author": "OpenWonderLabs (https://github.com/OpenWonderLabs)",
|
|
7
7
|
"license": "MIT",
|