@nubisco/openbridge 0.29.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/LICENSE +21 -0
- package/README.md +306 -0
- package/dist/__tests__/homekit-service-type.test.d.ts +2 -0
- package/dist/__tests__/homekit-service-type.test.d.ts.map +1 -0
- package/dist/__tests__/homekit-service-type.test.js +239 -0
- package/dist/__tests__/homekit-service-type.test.js.map +1 -0
- package/dist/__tests__/homekit-visibility.test.d.ts +2 -0
- package/dist/__tests__/homekit-visibility.test.d.ts.map +1 -0
- package/dist/__tests__/homekit-visibility.test.js +157 -0
- package/dist/__tests__/homekit-visibility.test.js.map +1 -0
- package/dist/__tests__/server.test.d.ts +2 -0
- package/dist/__tests__/server.test.d.ts.map +1 -0
- package/dist/__tests__/server.test.js +837 -0
- package/dist/__tests__/server.test.js.map +1 -0
- package/dist/__tests__/timeseries.test.d.ts +2 -0
- package/dist/__tests__/timeseries.test.d.ts.map +1 -0
- package/dist/__tests__/timeseries.test.js +216 -0
- package/dist/__tests__/timeseries.test.js.map +1 -0
- package/dist/auth.d.ts +23 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +171 -0
- package/dist/auth.js.map +1 -0
- package/dist/daemon.d.ts +57 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +636 -0
- package/dist/daemon.js.map +1 -0
- package/dist/homekit-service-type.d.ts +82 -0
- package/dist/homekit-service-type.d.ts.map +1 -0
- package/dist/homekit-service-type.js +184 -0
- package/dist/homekit-service-type.js.map +1 -0
- package/dist/homekit-visibility.d.ts +79 -0
- package/dist/homekit-visibility.d.ts.map +1 -0
- package/dist/homekit-visibility.js +164 -0
- package/dist/homekit-visibility.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/metrics.d.ts +17 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +52 -0
- package/dist/metrics.js.map +1 -0
- package/dist/platform-client.d.ts +42 -0
- package/dist/platform-client.d.ts.map +1 -0
- package/dist/platform-client.js +92 -0
- package/dist/platform-client.js.map +1 -0
- package/dist/server.d.ts +30 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1744 -0
- package/dist/server.js.map +1 -0
- package/dist/timeseries.d.ts +134 -0
- package/dist/timeseries.d.ts.map +1 -0
- package/dist/timeseries.js +378 -0
- package/dist/timeseries.js.map +1 -0
- package/dist/version.d.ts +4 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +28 -0
- package/dist/version.js.map +1 -0
- package/package.json +79 -0
- package/scripts/entrypoint.sh +82 -0
- package/scripts/fix-node-pty.mjs +22 -0
- package/ui-dist/android-chrome-192x192.png +0 -0
- package/ui-dist/android-chrome-512x512.png +0 -0
- package/ui-dist/apple-touch-icon.png +0 -0
- package/ui-dist/assets/index-Q0sxZHIR.css +32 -0
- package/ui-dist/assets/index-ZZYyAzBo.js +106 -0
- package/ui-dist/favicon-16x16.png +0 -0
- package/ui-dist/favicon-32x32.png +0 -0
- package/ui-dist/favicon.ico +0 -0
- package/ui-dist/fonts/MesloLGLDZNerdFontMono-Bold.woff2 +0 -0
- package/ui-dist/fonts/MesloLGLDZNerdFontMono-BoldItalic.woff2 +0 -0
- package/ui-dist/fonts/MesloLGLDZNerdFontMono-Italic.woff2 +0 -0
- package/ui-dist/fonts/MesloLGLDZNerdFontMono-Regular.woff2 +0 -0
- package/ui-dist/index.html +18 -0
- package/ui-dist/logo.svg +30 -0
- package/ui-dist/nubisco-logo.svg +120 -0
- package/ui-dist/site.webmanifest +19 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
+
import { mkdtempSync, rmSync, readFileSync, existsSync, writeFileSync } from 'fs';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { HomeKitVisibility } from '../homekit-visibility.js';
|
|
6
|
+
let dir;
|
|
7
|
+
let path;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
dir = mkdtempSync(join(tmpdir(), 'ob-hk-'));
|
|
10
|
+
path = join(dir, 'homekit-hidden.json');
|
|
11
|
+
});
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
rmSync(dir, { recursive: true, force: true });
|
|
14
|
+
});
|
|
15
|
+
/** Minimal stand-in for the hap-nodejs Bridge surface this code touches. */
|
|
16
|
+
function fakeBridge() {
|
|
17
|
+
return {
|
|
18
|
+
added: [],
|
|
19
|
+
removed: [],
|
|
20
|
+
displayName: 'OpenBridge',
|
|
21
|
+
addBridgedAccessory(acc) {
|
|
22
|
+
this.added.push(acc);
|
|
23
|
+
return acc;
|
|
24
|
+
},
|
|
25
|
+
removeBridgedAccessory(acc) {
|
|
26
|
+
this.removed.push(acc);
|
|
27
|
+
},
|
|
28
|
+
getService() {
|
|
29
|
+
return { setCharacteristic: () => ({ setCharacteristic: () => ({}) }) };
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const accessory = (uuid, displayName = uuid) => ({ UUID: uuid, displayName });
|
|
34
|
+
describe('bridge wrapping', () => {
|
|
35
|
+
it('passes visible accessories straight through', () => {
|
|
36
|
+
const v = new HomeKitVisibility(path);
|
|
37
|
+
const bridge = fakeBridge();
|
|
38
|
+
const wrapped = v.wrapBridge(bridge);
|
|
39
|
+
wrapped.addBridgedAccessory(accessory('pool-switch'));
|
|
40
|
+
expect(bridge.added.map((a) => a.UUID)).toEqual(['pool-switch']);
|
|
41
|
+
});
|
|
42
|
+
it('blocks hidden accessories from reaching HomeKit', () => {
|
|
43
|
+
writeFileSync(path, JSON.stringify(['meter-total']));
|
|
44
|
+
const v = new HomeKitVisibility(path);
|
|
45
|
+
const bridge = fakeBridge();
|
|
46
|
+
const wrapped = v.wrapBridge(bridge);
|
|
47
|
+
wrapped.addBridgedAccessory(accessory('meter-total'));
|
|
48
|
+
wrapped.addBridgedAccessory(accessory('pool-switch'));
|
|
49
|
+
// The meter never reaches the bridge; its sibling switch still does. That
|
|
50
|
+
// separation is the whole point: one plugin, two different answers.
|
|
51
|
+
expect(bridge.added.map((a) => a.UUID)).toEqual(['pool-switch']);
|
|
52
|
+
});
|
|
53
|
+
it('leaves every other bridge method untouched', () => {
|
|
54
|
+
const v = new HomeKitVisibility(path);
|
|
55
|
+
const bridge = fakeBridge();
|
|
56
|
+
const wrapped = v.wrapBridge(bridge);
|
|
57
|
+
expect(wrapped.displayName).toBe('OpenBridge');
|
|
58
|
+
expect(typeof wrapped.getService).toBe('function');
|
|
59
|
+
expect(() => wrapped.getService()).not.toThrow();
|
|
60
|
+
});
|
|
61
|
+
it('does not ask hap-nodejs to remove an accessory it never received', () => {
|
|
62
|
+
writeFileSync(path, JSON.stringify(['meter-total']));
|
|
63
|
+
const v = new HomeKitVisibility(path);
|
|
64
|
+
const bridge = fakeBridge();
|
|
65
|
+
const wrapped = v.wrapBridge(bridge);
|
|
66
|
+
wrapped.addBridgedAccessory(accessory('meter-total'));
|
|
67
|
+
wrapped.removeBridgedAccessory(accessory('meter-total'));
|
|
68
|
+
expect(bridge.removed).toEqual([]);
|
|
69
|
+
});
|
|
70
|
+
it('tolerates accessories with no UUID', () => {
|
|
71
|
+
const v = new HomeKitVisibility(path);
|
|
72
|
+
const wrapped = v.wrapBridge(fakeBridge());
|
|
73
|
+
expect(() => wrapped.addBridgedAccessory({ displayName: 'nameless' })).not.toThrow();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('toggling', () => {
|
|
77
|
+
it('removes a live accessory immediately when hidden', () => {
|
|
78
|
+
const v = new HomeKitVisibility(path);
|
|
79
|
+
const bridge = fakeBridge();
|
|
80
|
+
const wrapped = v.wrapBridge(bridge);
|
|
81
|
+
const acc = accessory('meter-total');
|
|
82
|
+
wrapped.addBridgedAccessory(acc);
|
|
83
|
+
const result = v.setVisible('meter-total', false);
|
|
84
|
+
// Without applying live, the Home app keeps showing a device the user just
|
|
85
|
+
// hid until the next restart, which reads as a broken toggle.
|
|
86
|
+
expect(result).toEqual({ changed: true, applied: true });
|
|
87
|
+
expect(bridge.removed.map((a) => a.UUID)).toEqual(['meter-total']);
|
|
88
|
+
});
|
|
89
|
+
it('re-adds an accessory when shown again', () => {
|
|
90
|
+
const v = new HomeKitVisibility(path);
|
|
91
|
+
const bridge = fakeBridge();
|
|
92
|
+
const wrapped = v.wrapBridge(bridge);
|
|
93
|
+
wrapped.addBridgedAccessory(accessory('meter-total'));
|
|
94
|
+
v.setVisible('meter-total', false);
|
|
95
|
+
v.setVisible('meter-total', true);
|
|
96
|
+
expect(bridge.added.map((a) => a.UUID)).toEqual(['meter-total', 'meter-total']);
|
|
97
|
+
});
|
|
98
|
+
it('reports no change when the state already matches', () => {
|
|
99
|
+
const v = new HomeKitVisibility(path);
|
|
100
|
+
expect(v.setVisible('never-seen', true)).toEqual({ changed: false, applied: true });
|
|
101
|
+
});
|
|
102
|
+
it('persists the preference even when it cannot be applied live', () => {
|
|
103
|
+
const v = new HomeKitVisibility(path);
|
|
104
|
+
// Never wrapped a bridge, so there is nothing running to update.
|
|
105
|
+
const result = v.setVisible('meter-total', false);
|
|
106
|
+
expect(result).toEqual({ changed: true, applied: false });
|
|
107
|
+
expect(v.isHidden('meter-total')).toBe(true);
|
|
108
|
+
expect(JSON.parse(readFileSync(path, 'utf8'))).toEqual(['meter-total']);
|
|
109
|
+
});
|
|
110
|
+
it('keeps the preference when the bridge throws', () => {
|
|
111
|
+
const v = new HomeKitVisibility(path);
|
|
112
|
+
const bridge = fakeBridge();
|
|
113
|
+
bridge.removeBridgedAccessory = () => {
|
|
114
|
+
throw new Error('not bridged');
|
|
115
|
+
};
|
|
116
|
+
const wrapped = v.wrapBridge(bridge);
|
|
117
|
+
wrapped.addBridgedAccessory(accessory('meter-total'));
|
|
118
|
+
const result = v.setVisible('meter-total', false);
|
|
119
|
+
expect(result).toEqual({ changed: true, applied: false });
|
|
120
|
+
// A restart must still honour it.
|
|
121
|
+
expect(v.isHidden('meter-total')).toBe(true);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe('persistence', () => {
|
|
125
|
+
it('survives a restart', () => {
|
|
126
|
+
new HomeKitVisibility(path).setVisible('meter-total', false);
|
|
127
|
+
const reloaded = new HomeKitVisibility(path);
|
|
128
|
+
expect(reloaded.isHidden('meter-total')).toBe(true);
|
|
129
|
+
expect(reloaded.hiddenList()).toEqual(['meter-total']);
|
|
130
|
+
});
|
|
131
|
+
it('hides nothing when the file is absent', () => {
|
|
132
|
+
const v = new HomeKitVisibility(join(dir, 'does-not-exist.json'));
|
|
133
|
+
expect(v.hiddenList()).toEqual([]);
|
|
134
|
+
});
|
|
135
|
+
it('falls back to showing everything when the file is corrupt', () => {
|
|
136
|
+
writeFileSync(path, 'not json at all');
|
|
137
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
138
|
+
try {
|
|
139
|
+
// Failing open is deliberate: a bad file should not silently strip a
|
|
140
|
+
// user's HomeKit devices.
|
|
141
|
+
expect(new HomeKitVisibility(path).hiddenList()).toEqual([]);
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
warn.mockRestore();
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
it('ignores non-string entries', () => {
|
|
148
|
+
writeFileSync(path, JSON.stringify(['ok', 42, null, { uuid: 'x' }]));
|
|
149
|
+
expect(new HomeKitVisibility(path).hiddenList()).toEqual(['ok']);
|
|
150
|
+
});
|
|
151
|
+
it('creates the file on first write', () => {
|
|
152
|
+
expect(existsSync(path)).toBe(false);
|
|
153
|
+
new HomeKitVisibility(path).setVisible('x', false);
|
|
154
|
+
expect(existsSync(path)).toBe(true);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=homekit-visibility.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homekit-visibility.test.js","sourceRoot":"","sources":["../../src/__tests__/homekit-visibility.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":""}
|