@homebridge-plugins/homebridge-updater 3.1.5 → 3.1.6
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.
|
@@ -3,12 +3,15 @@ export declare class PluginUpdateMatterPlatform {
|
|
|
3
3
|
private readonly api;
|
|
4
4
|
private updateSensor;
|
|
5
5
|
private failureSensor;
|
|
6
|
+
private readonly staleAccessories;
|
|
6
7
|
constructor(log: Logging, config: PlatformConfig, api: API);
|
|
7
8
|
/**
|
|
8
9
|
* Called by Homebridge for each accessory found in the platform cache.
|
|
9
|
-
* When running in Matter mode, all cached HAP accessories are stale —
|
|
10
|
-
* them
|
|
10
|
+
* When running in Matter mode, all cached HAP accessories are stale — collect
|
|
11
|
+
* them here so they can be removed once `didFinishLaunching` fires, at which
|
|
12
|
+
* point the bridge is fully initialized and can process unregister calls.
|
|
11
13
|
*/
|
|
12
14
|
configureAccessory(accessory: PlatformAccessory): void;
|
|
15
|
+
private removeStaleAccessories;
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=Platform.Matter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.Matter.d.ts","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAOjF,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAe;
|
|
1
|
+
{"version":3,"file":"Platform.Matter.d.ts","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAOjF,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;gBAE/C,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAiB1D;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAItD,OAAO,CAAC,sBAAsB;CAO/B"}
|
package/dist/Platform.Matter.js
CHANGED
|
@@ -6,6 +6,7 @@ export class PluginUpdateMatterPlatform {
|
|
|
6
6
|
api;
|
|
7
7
|
updateSensor;
|
|
8
8
|
failureSensor;
|
|
9
|
+
staleAccessories = [];
|
|
9
10
|
constructor(log, config, api) {
|
|
10
11
|
this.api = api;
|
|
11
12
|
this.failureSensor = new FailureSensor(log, api, config.failureSensorType || config.sensorType, 'matter');
|
|
@@ -19,14 +20,24 @@ export class PluginUpdateMatterPlatform {
|
|
|
19
20
|
const failureDeviceName = `${deviceName} Failure`;
|
|
20
21
|
this.failureSensor.configure({ displayName: failureDeviceName });
|
|
21
22
|
}
|
|
23
|
+
// Defer removal of stale HAP accessories until the bridge is fully initialized
|
|
24
|
+
api.on('didFinishLaunching', this.removeStaleAccessories.bind(this));
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* Called by Homebridge for each accessory found in the platform cache.
|
|
25
|
-
* When running in Matter mode, all cached HAP accessories are stale —
|
|
26
|
-
* them
|
|
28
|
+
* When running in Matter mode, all cached HAP accessories are stale — collect
|
|
29
|
+
* them here so they can be removed once `didFinishLaunching` fires, at which
|
|
30
|
+
* point the bridge is fully initialized and can process unregister calls.
|
|
27
31
|
*/
|
|
28
32
|
configureAccessory(accessory) {
|
|
29
|
-
this.
|
|
33
|
+
this.staleAccessories.push(accessory);
|
|
34
|
+
}
|
|
35
|
+
removeStaleAccessories() {
|
|
36
|
+
if (this.staleAccessories.length === 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [...this.staleAccessories]);
|
|
40
|
+
this.staleAccessories.length = 0;
|
|
30
41
|
}
|
|
31
42
|
}
|
|
32
43
|
//# sourceMappingURL=Platform.Matter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.Matter.js","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,OAAO,0BAA0B;IACpB,GAAG,CAAK;IACjB,YAAY,CAAc;IAC1B,aAAa,CAAe;
|
|
1
|
+
{"version":3,"file":"Platform.Matter.js","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,OAAO,0BAA0B;IACpB,GAAG,CAAK;IACjB,YAAY,CAAc;IAC1B,aAAa,CAAe;IACnB,gBAAgB,GAAwB,EAAE,CAAA;IAE3D,YAAY,GAAY,EAAE,MAAsB,EAAE,GAAQ;QACxD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACzG,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;YACrD,QAAQ,EAAE,QAAQ;YAClB,oBAAoB,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACnH,CAAC,CAAA;QACF,4EAA4E;QAC5E,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAI,MAAc,CAAC,IAAI,IAAI,qBAAqB,CAAA;YAChE,MAAM,iBAAiB,GAAG,GAAG,UAAU,UAAU,CAAA;YACjD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAS,CAAC,CAAA;QACzE,CAAC;QACD,+EAA+E;QAC/E,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACtE,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,SAA4B;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAM;QACR,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAC9F,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAA;IAClC,CAAC;CACF"}
|
|
@@ -6,10 +6,16 @@ import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
|
|
|
6
6
|
* When the platform runs in Matter mode, any cached HAP accessories from a previous
|
|
7
7
|
* HAP-mode run (including legacy v2 accessories) are stale and must be unregistered
|
|
8
8
|
* to prevent ghost/duplicate sensors in HomeKit.
|
|
9
|
+
*
|
|
10
|
+
* Removal is intentionally deferred to `didFinishLaunching` — calling
|
|
11
|
+
* `unregisterPlatformAccessories` during the `configureAccessory` phase (before the
|
|
12
|
+
* bridge is fully initialized) causes Homebridge to throw
|
|
13
|
+
* "Cannot find the bridged Accessory to remove."
|
|
9
14
|
*/
|
|
10
15
|
describe('PluginUpdateMatterPlatform stale HAP cleanup', () => {
|
|
11
16
|
function buildMocks() {
|
|
12
17
|
const unregisterCalls = [];
|
|
18
|
+
const didFinishListeners = [];
|
|
13
19
|
const mockLog = {
|
|
14
20
|
info: vi.fn(),
|
|
15
21
|
warn: vi.fn(),
|
|
@@ -19,7 +25,11 @@ describe('PluginUpdateMatterPlatform stale HAP cleanup', () => {
|
|
|
19
25
|
const mockApi = {
|
|
20
26
|
matter: { registerPlatformAccessories: vi.fn(), uuid: { generate: vi.fn().mockReturnValue('matter-uuid') } },
|
|
21
27
|
hap: { uuid: { generate: vi.fn().mockReturnValue('hap-uuid') } },
|
|
22
|
-
on: vi.fn()
|
|
28
|
+
on: vi.fn((event, cb) => {
|
|
29
|
+
if (event === 'didFinishLaunching') {
|
|
30
|
+
didFinishListeners.push(cb);
|
|
31
|
+
}
|
|
32
|
+
}),
|
|
23
33
|
user: { storagePath: vi.fn().mockReturnValue('/tmp') },
|
|
24
34
|
unregisterPlatformAccessories: vi.fn((...args) => {
|
|
25
35
|
unregisterCalls.push({ pluginName: args[0], platformName: args[1], accessories: args[2] });
|
|
@@ -34,42 +44,81 @@ describe('PluginUpdateMatterPlatform stale HAP cleanup', () => {
|
|
|
34
44
|
autoUpdatePlugins: false,
|
|
35
45
|
autoUpdateNode: false,
|
|
36
46
|
};
|
|
37
|
-
|
|
47
|
+
function fireDidFinishLaunching() {
|
|
48
|
+
for (const cb of didFinishListeners) {
|
|
49
|
+
cb();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return { mockLog, mockApi, mockConfig, unregisterCalls, fireDidFinishLaunching };
|
|
38
53
|
}
|
|
39
54
|
/**
|
|
40
|
-
*
|
|
55
|
+
* Build a simulator that mirrors PluginUpdateMatterPlatform's stale-accessory
|
|
56
|
+
* handling without importing the real class (which would pull in Homebridge modules).
|
|
41
57
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
58
|
+
* - configureAccessory: collects accessories into a stale list (no immediate removal)
|
|
59
|
+
* - removeStaleAccessories: called on didFinishLaunching; batches all collected
|
|
60
|
+
* accessories into a single unregisterPlatformAccessories call
|
|
44
61
|
*/
|
|
45
|
-
function
|
|
46
|
-
|
|
62
|
+
function buildSimulator(api) {
|
|
63
|
+
const staleAccessories = [];
|
|
64
|
+
function configureAccessory(accessory) {
|
|
65
|
+
staleAccessories.push(accessory);
|
|
66
|
+
}
|
|
67
|
+
function removeStaleAccessories() {
|
|
68
|
+
if (staleAccessories.length === 0) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [...staleAccessories]);
|
|
72
|
+
staleAccessories.length = 0;
|
|
73
|
+
}
|
|
74
|
+
return { configureAccessory, removeStaleAccessories };
|
|
47
75
|
}
|
|
48
|
-
it('
|
|
76
|
+
it('does not unregister stale accessories immediately during configureAccessory', () => {
|
|
77
|
+
const { mockApi, unregisterCalls } = buildMocks();
|
|
78
|
+
const { configureAccessory } = buildSimulator(mockApi);
|
|
79
|
+
const legacyAccessory = { UUID: mockApi.hap.uuid.generate('PluginUpdate'), displayName: 'Homebridge Plugin Update' };
|
|
80
|
+
configureAccessory(legacyAccessory);
|
|
81
|
+
// Must NOT be called yet — bridge is not fully initialized until didFinishLaunching
|
|
82
|
+
expect(unregisterCalls).toHaveLength(0);
|
|
83
|
+
});
|
|
84
|
+
it('unregisters a stale legacy v2 HAP accessory (PluginUpdate UUID) after didFinishLaunching', () => {
|
|
49
85
|
const { mockApi, unregisterCalls } = buildMocks();
|
|
86
|
+
const { configureAccessory, removeStaleAccessories } = buildSimulator(mockApi);
|
|
50
87
|
const legacyAccessory = { UUID: mockApi.hap.uuid.generate('PluginUpdate'), displayName: 'Homebridge Plugin Update' };
|
|
51
|
-
|
|
88
|
+
configureAccessory(legacyAccessory);
|
|
89
|
+
removeStaleAccessories();
|
|
52
90
|
expect(unregisterCalls).toHaveLength(1);
|
|
53
91
|
expect(unregisterCalls[0].pluginName).toBe(PLUGIN_NAME);
|
|
54
92
|
expect(unregisterCalls[0].platformName).toBe(PLATFORM_NAME);
|
|
55
93
|
expect(unregisterCalls[0].accessories).toContain(legacyAccessory);
|
|
56
94
|
});
|
|
57
|
-
it('unregisters a stale v3 HAP update-sensor accessory (PluginUpdateCheck-UpdateSensor UUID)', () => {
|
|
95
|
+
it('unregisters a stale v3 HAP update-sensor accessory (PluginUpdateCheck-UpdateSensor UUID) after didFinishLaunching', () => {
|
|
58
96
|
const { mockApi, unregisterCalls } = buildMocks();
|
|
97
|
+
const { configureAccessory, removeStaleAccessories } = buildSimulator(mockApi);
|
|
59
98
|
const v3Accessory = { UUID: mockApi.hap.uuid.generate('PluginUpdateCheck-UpdateSensor'), displayName: 'PluginUpdate' };
|
|
60
|
-
|
|
99
|
+
configureAccessory(v3Accessory);
|
|
100
|
+
removeStaleAccessories();
|
|
61
101
|
expect(unregisterCalls).toHaveLength(1);
|
|
62
102
|
expect(unregisterCalls[0].accessories).toContain(v3Accessory);
|
|
63
103
|
});
|
|
64
|
-
it('unregisters multiple stale accessories
|
|
104
|
+
it('unregisters multiple stale accessories in a single batch after didFinishLaunching', () => {
|
|
65
105
|
const { mockApi, unregisterCalls } = buildMocks();
|
|
106
|
+
const { configureAccessory, removeStaleAccessories } = buildSimulator(mockApi);
|
|
66
107
|
const accessory1 = { UUID: 'uuid-1', displayName: 'Accessory 1' };
|
|
67
108
|
const accessory2 = { UUID: 'uuid-2', displayName: 'Accessory 2' };
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
109
|
+
configureAccessory(accessory1);
|
|
110
|
+
configureAccessory(accessory2);
|
|
111
|
+
removeStaleAccessories();
|
|
112
|
+
// All stale accessories are batched into a single unregister call
|
|
113
|
+
expect(unregisterCalls).toHaveLength(1);
|
|
71
114
|
expect(unregisterCalls[0].accessories).toContain(accessory1);
|
|
72
|
-
expect(unregisterCalls[
|
|
115
|
+
expect(unregisterCalls[0].accessories).toContain(accessory2);
|
|
116
|
+
});
|
|
117
|
+
it('does not call unregisterPlatformAccessories when there are no cached accessories', () => {
|
|
118
|
+
const { mockApi, unregisterCalls } = buildMocks();
|
|
119
|
+
const { removeStaleAccessories } = buildSimulator(mockApi);
|
|
120
|
+
removeStaleAccessories();
|
|
121
|
+
expect(unregisterCalls).toHaveLength(0);
|
|
73
122
|
});
|
|
74
123
|
});
|
|
75
124
|
//# sourceMappingURL=Platform.Matter.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.Matter.test.js","sourceRoot":"","sources":["../src/Platform.Matter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE1D
|
|
1
|
+
{"version":3,"file":"Platform.Matter.test.js","sourceRoot":"","sources":["../src/Platform.Matter.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@homebridge-plugins/homebridge-updater",
|
|
3
3
|
"displayName": "Homebridge Updater",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "3.1.
|
|
5
|
+
"version": "3.1.6",
|
|
6
6
|
"description": "A Homebridge plugin for checking for updates to Homebridge and plugins",
|
|
7
7
|
"author": "David Maher",
|
|
8
8
|
"license": "BSD-2-Clause",
|