@homebridge-plugins/homebridge-august 3.0.11 → 3.1.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.
Files changed (64) hide show
  1. package/.github/workflows/release.yml +79 -31
  2. package/CHANGELOG.md +149 -868
  3. package/config.schema.json +8 -1
  4. package/dist/devices/device.d.ts.map +1 -1
  5. package/dist/devices/device.js +4 -3
  6. package/dist/devices/device.js.map +1 -1
  7. package/dist/devices/lock.js +2 -2
  8. package/dist/devices/lock.js.map +1 -1
  9. package/dist/homebridge-ui/server.js.map +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +15 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/package.json +83 -0
  14. package/dist/platform.d.ts +2 -3
  15. package/dist/platform.d.ts.map +1 -1
  16. package/dist/platform.js +10 -10
  17. package/dist/platform.js.map +1 -1
  18. package/dist/platform.matter.d.ts +96 -0
  19. package/dist/platform.matter.d.ts.map +1 -0
  20. package/dist/platform.matter.js +331 -0
  21. package/dist/platform.matter.js.map +1 -0
  22. package/dist/settings.d.ts +5 -4
  23. package/dist/settings.d.ts.map +1 -1
  24. package/docs/assets/icons.js +1 -1
  25. package/docs/assets/icons.svg +1 -1
  26. package/docs/assets/main.js +5 -5
  27. package/docs/assets/navigation.js +1 -0
  28. package/docs/assets/search.js +1 -0
  29. package/docs/assets/style.css +248 -226
  30. package/docs/hierarchy.html +1 -0
  31. package/docs/index.html +17 -13
  32. package/docs/modules.html +1 -2
  33. package/docs/variables/default.html +1 -0
  34. package/eslint.config.js +6 -9
  35. package/package.json +22 -30
  36. package/typedoc.json +1 -5
  37. package/vitest.config.ts +7 -0
  38. package/.github/workflows/beta-release.yml +0 -55
  39. package/dist/devices/device.test.d.ts +0 -2
  40. package/dist/devices/device.test.d.ts.map +0 -1
  41. package/dist/devices/device.test.js +0 -281
  42. package/dist/devices/device.test.js.map +0 -1
  43. package/dist/devices/lock.test.d.ts +0 -2
  44. package/dist/devices/lock.test.d.ts.map +0 -1
  45. package/dist/devices/lock.test.js +0 -265
  46. package/dist/devices/lock.test.js.map +0 -1
  47. package/dist/index.test.d.ts +0 -2
  48. package/dist/index.test.d.ts.map +0 -1
  49. package/dist/index.test.js +0 -14
  50. package/dist/index.test.js.map +0 -1
  51. package/dist/platform.test.d.ts +0 -2
  52. package/dist/platform.test.d.ts.map +0 -1
  53. package/dist/platform.test.js +0 -516
  54. package/dist/platform.test.js.map +0 -1
  55. package/dist/settings.test.d.ts +0 -2
  56. package/dist/settings.test.d.ts.map +0 -1
  57. package/dist/settings.test.js +0 -127
  58. package/dist/settings.test.js.map +0 -1
  59. package/docs/assets/dmt/dmt-component-data.js +0 -1
  60. package/docs/assets/dmt/dmt-components.css +0 -20
  61. package/docs/assets/dmt/dmt-components.js +0 -67
  62. package/docs/assets/dmt/dmt-search.cmp +0 -0
  63. package/docs/assets/dmt/dmt-theme.css +0 -1
  64. package/docs/functions/default.html +0 -2
@@ -0,0 +1,96 @@
1
+ import type { MatterAccessory, MatterAPI, PlatformAccessory } from 'homebridge';
2
+ import type { device, devicesConfig } from './settings.js';
3
+ import { AugustPlatform } from './platform.js';
4
+ /**
5
+ * AugustMatterPlatform
6
+ * Extends AugustPlatform to register August locks as Matter DoorLock accessories
7
+ * instead of HAP accessories. Used when Homebridge Matter support is available,
8
+ * enabled, and not disabled by the `disableMatter` config option.
9
+ */
10
+ export declare class AugustMatterPlatform extends AugustPlatform {
11
+ readonly matterAccessories: Map<string, MatterAccessory>;
12
+ private readonly pendingHapCleanup;
13
+ private readonly matterPubNubUnsubscribes;
14
+ private readonly matterPollingSubscriptions;
15
+ /**
16
+ * Called when homebridge restores cached HAP accessories from disk at startup.
17
+ * HAP accessories are staged here and removed only after Matter registration
18
+ * succeeds for the same lock, so that if Matter init fails the user is not
19
+ * left with zero accessories.
20
+ */
21
+ configureAccessory(accessory: PlatformAccessory): Promise<void>;
22
+ /**
23
+ * Called when homebridge restores cached Matter accessories from disk at startup.
24
+ * Stores the restored accessory so we can update it later during device discovery.
25
+ */
26
+ configureMatterAccessory(accessory: MatterAccessory): void;
27
+ /**
28
+ * Run device discovery, then sweep any staged HAP accessories that were not
29
+ * handled during discovery.
30
+ *
31
+ * The normal deferred-cleanup flow removes a staged HAP accessory when Lock()
32
+ * is called for its UUID and Matter registration succeeds. But if a lock has
33
+ * been removed from the user's August account entirely, Lock() is never
34
+ * called for its UUID — leaving the staged HAP accessory registered with
35
+ * Homebridge indefinitely and the pendingHapCleanup map growing on every
36
+ * restart.
37
+ *
38
+ * After discoverDevices() finishes, any remaining entries in
39
+ * pendingHapCleanup correspond to locks no longer in the account, so it is
40
+ * safe to unregister them.
41
+ */
42
+ discoverDevices(): Promise<void>;
43
+ private sweepUnhandledHapAccessories;
44
+ /**
45
+ * Register an August lock as a Matter DoorLock accessory.
46
+ * Overrides the HAP-based Lock() method from AugustPlatform.
47
+ */
48
+ protected Lock(device: device & devicesConfig): Promise<void>;
49
+ /**
50
+ * Subscribe to August real-time lock events and update the Matter DoorLock state.
51
+ * Captures the unsubscribe function returned by August.subscribe() to allow proper
52
+ * cleanup on lock removal (equivalent of the fix in lock.ts / PR #206 for HAP).
53
+ */
54
+ private subscribeAugustMatter;
55
+ /**
56
+ * Map an August lock state (from details() or a PubNub event) to a Matter
57
+ * DoorLock.LockState enum value.
58
+ *
59
+ * If both `locked` and `unlocked` are set simultaneously (unexpected), we
60
+ * treat the lock as Locked (fail-safe). If neither is set, we report
61
+ * NotFullyLocked, which is the correct Matter state for "position unknown".
62
+ */
63
+ private mapLockState;
64
+ /**
65
+ * Fetch the current lock status from the August API and update the Matter DoorLock state.
66
+ * On failure, attempts a session refresh and retries once. The 5-minute cooldown in
67
+ * refreshAugustSession() (added by PR #209 for the HAP path) prevents refresh spam
68
+ * during prolonged network outages.
69
+ */
70
+ fetchAndUpdateMatterLockState(device: device & devicesConfig, uuid: string, matterApi: MatterAPI): Promise<void>;
71
+ /**
72
+ * Single fetch-and-apply pass: read details from the August API and push the
73
+ * derived state into the Matter accessory. Throws on API/network errors so
74
+ * callers can decide whether to retry after a session refresh.
75
+ */
76
+ private fetchAndApplyMatterLockState;
77
+ /**
78
+ * Poll the August API for lock status at the configured refresh rate and update the Matter
79
+ * DoorLock state. Uses `timer(0, ...)` for an immediate first fetch (accurate initial state)
80
+ * and `exhaustMap` to prevent overlapping concurrent requests.
81
+ *
82
+ * Idempotent: disposes any previous polling subscription for the same UUID
83
+ * before starting a new one. The subscription is tracked in
84
+ * matterPollingSubscriptions so it can be disposed on lock removal — otherwise
85
+ * the timer keeps firing forever even after the accessory is gone.
86
+ */
87
+ private startMatterStatusPolling;
88
+ /**
89
+ * Release all resources associated with a given Matter lock UUID:
90
+ * the registered Matter accessory, the PubNub subscription, and the
91
+ * RxJS polling subscription. Safe to call when some or all of these
92
+ * do not exist.
93
+ */
94
+ private tearDownMatterLock;
95
+ }
96
+ //# sourceMappingURL=platform.matter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.matter.d.ts","sourceRoot":"","sources":["../src/platform.matter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG/E,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAa,MAAM,eAAe,CAAA;AAMrE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9C;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IAEtD,SAAgB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAY;IAI3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAM9E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAqC;IAK9E,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAuC;IAElF;;;;;OAKG;IACY,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAK1D;;;;;;;;;;;;;;OAcG;IACY,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAKjC,4BAA4B;IAY1C;;;OAGG;cACsB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA0G5E;;;;OAIG;YACW,qBAAqB;IAuCnC;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAapB;;;;;OAKG;IACG,6BAA6B,CACjC,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,IAAI,CAAC;IAgBhB;;;;OAIG;YACW,4BAA4B;IAkB1C;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;;;;OAKG;YACW,kBAAkB;CA6BjC"}
@@ -0,0 +1,331 @@
1
+ import August from 'august-yale';
2
+ import { timer } from 'rxjs';
3
+ import { exhaustMap } from 'rxjs/operators';
4
+ import { AugustPlatform } from './platform.js';
5
+ import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
6
+ /**
7
+ * AugustMatterPlatform
8
+ * Extends AugustPlatform to register August locks as Matter DoorLock accessories
9
+ * instead of HAP accessories. Used when Homebridge Matter support is available,
10
+ * enabled, and not disabled by the `disableMatter` config option.
11
+ */
12
+ export class AugustMatterPlatform extends AugustPlatform {
13
+ // Track restored Matter cached accessories
14
+ matterAccessories = new Map();
15
+ // HAP accessories staged for removal after Matter registration succeeds.
16
+ // Deferred to avoid leaving users with zero accessories if Matter init fails.
17
+ pendingHapCleanup = new Map();
18
+ // PubNub unsubscribe functions keyed by accessory UUID.
19
+ // Must be captured from August.subscribe() and called on lock removal to
20
+ // prevent accumulating orphaned PubNub instances (equivalent of the fix in
21
+ // lock.ts / PR #206 for the HAP path).
22
+ matterPubNubUnsubscribes = new Map();
23
+ // RxJS polling subscriptions keyed by accessory UUID. Must be tracked so
24
+ // they can be unsubscribed when a lock is removed or re-registered, otherwise
25
+ // the polling timer keeps firing forever even after the accessory is gone.
26
+ matterPollingSubscriptions = new Map();
27
+ /**
28
+ * Called when homebridge restores cached HAP accessories from disk at startup.
29
+ * HAP accessories are staged here and removed only after Matter registration
30
+ * succeeds for the same lock, so that if Matter init fails the user is not
31
+ * left with zero accessories.
32
+ */
33
+ async configureAccessory(accessory) {
34
+ this.log.debug(`Staging cached HAP accessory for deferred cleanup: ${accessory.displayName}`);
35
+ this.pendingHapCleanup.set(accessory.UUID, accessory);
36
+ }
37
+ /**
38
+ * Called when homebridge restores cached Matter accessories from disk at startup.
39
+ * Stores the restored accessory so we can update it later during device discovery.
40
+ */
41
+ configureMatterAccessory(accessory) {
42
+ this.log.debug(`Loading cached Matter accessory: ${accessory.displayName}`);
43
+ this.matterAccessories.set(accessory.UUID, accessory);
44
+ }
45
+ /**
46
+ * Run device discovery, then sweep any staged HAP accessories that were not
47
+ * handled during discovery.
48
+ *
49
+ * The normal deferred-cleanup flow removes a staged HAP accessory when Lock()
50
+ * is called for its UUID and Matter registration succeeds. But if a lock has
51
+ * been removed from the user's August account entirely, Lock() is never
52
+ * called for its UUID — leaving the staged HAP accessory registered with
53
+ * Homebridge indefinitely and the pendingHapCleanup map growing on every
54
+ * restart.
55
+ *
56
+ * After discoverDevices() finishes, any remaining entries in
57
+ * pendingHapCleanup correspond to locks no longer in the account, so it is
58
+ * safe to unregister them.
59
+ */
60
+ async discoverDevices() {
61
+ await super.discoverDevices();
62
+ await this.sweepUnhandledHapAccessories();
63
+ }
64
+ async sweepUnhandledHapAccessories() {
65
+ if (this.pendingHapCleanup.size === 0) {
66
+ return;
67
+ }
68
+ const accessories = Array.from(this.pendingHapCleanup.values());
69
+ this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, accessories);
70
+ for (const accessory of accessories) {
71
+ this.log.debug(`Removing unhandled cached HAP accessory (no matching lock found): ${accessory.displayName}`);
72
+ }
73
+ this.pendingHapCleanup.clear();
74
+ }
75
+ /**
76
+ * Register an August lock as a Matter DoorLock accessory.
77
+ * Overrides the HAP-based Lock() method from AugustPlatform.
78
+ */
79
+ async Lock(device) {
80
+ const matterApi = this.api.matter;
81
+ if (!matterApi) {
82
+ await this.errorLog('Matter API is not available. Cannot register Matter accessory.');
83
+ return;
84
+ }
85
+ const uuid = matterApi.uuid.generate(device.lockId);
86
+ // Determine whether the device should be registered. If not, clean up any stale Matter
87
+ // accessory from a previous session and return early.
88
+ const shouldRegister = await this.registerDevice(device);
89
+ if (!shouldRegister) {
90
+ // Tear down all per-lock state atomically. Whether there's a stale Matter
91
+ // accessory from a previous session, a PubNub subscription, or a polling
92
+ // subscription, they all need to go together when a lock is hidden or
93
+ // removed from the account.
94
+ await this.tearDownMatterLock(uuid, device.LockName, matterApi);
95
+ await this.debugErrorLog(`Unable to Register: ${device.LockName}, Lock ID: ${device.lockId} Check Config to see if is being Hidden.`);
96
+ return;
97
+ }
98
+ const displayName = device.configLockName
99
+ ? await this.validateAndCleanDisplayName(device.configLockName, 'configLockName', device.configLockName)
100
+ : await this.validateAndCleanDisplayName(device.LockName, 'LockName', device.LockName);
101
+ const existingAccessory = this.matterAccessories.get(uuid);
102
+ const accessory = {
103
+ UUID: uuid,
104
+ displayName,
105
+ deviceType: matterApi.deviceTypes.DoorLock,
106
+ serialNumber: device.SerialNumber || device.lockId,
107
+ manufacturer: 'August Home Inc.',
108
+ model: device.skuNumber || 'August Lock',
109
+ firmwareRevision: device.currentFirmwareVersion || this.version || '0.0.0',
110
+ hardwareRevision: device.currentFirmwareVersion || this.version || '0.0.0',
111
+ context: {
112
+ lockId: device.lockId,
113
+ },
114
+ clusters: {
115
+ doorLock: {
116
+ // Use DoorLock.LockState enum for type safety and readability:
117
+ // NotFullyLocked = 0 (unknown until first poll), Locked = 1, Unlocked = 2.
118
+ // timer(0, ...) fires immediately so accurate state is pushed on the first poll tick.
119
+ lockState: matterApi.types.DoorLock.LockState.NotFullyLocked,
120
+ lockType: 0, // 0 = DeadBolt
121
+ actuatorEnabled: true,
122
+ operatingMode: 0, // 0 = Normal
123
+ },
124
+ },
125
+ handlers: {
126
+ doorLock: {
127
+ lockDoor: async () => {
128
+ try {
129
+ await this.augustCredentials();
130
+ await this.augustConfig.lock(device.lockId);
131
+ await this.successLog(`Matter: Locked ${displayName}`);
132
+ await matterApi.updateAccessoryState(uuid, 'doorLock', { lockState: matterApi.types.DoorLock.LockState.Locked });
133
+ }
134
+ catch (e) {
135
+ await this.errorLog(`Matter: lockDoor failed: ${e.message ?? e}`);
136
+ }
137
+ },
138
+ unlockDoor: async () => {
139
+ try {
140
+ await this.augustCredentials();
141
+ await this.augustConfig.unlock(device.lockId);
142
+ await this.successLog(`Matter: Unlocked ${displayName}`);
143
+ await matterApi.updateAccessoryState(uuid, 'doorLock', { lockState: matterApi.types.DoorLock.LockState.Unlocked });
144
+ }
145
+ catch (e) {
146
+ await this.errorLog(`Matter: unlockDoor failed: ${e.message ?? e}`);
147
+ }
148
+ },
149
+ },
150
+ },
151
+ };
152
+ if (existingAccessory) {
153
+ await this.infoLog(`Restoring existing Matter accessory from cache: ${displayName}, Lock ID: ${device.lockId}`);
154
+ }
155
+ else {
156
+ await this.infoLog(`Adding new Matter accessory: ${displayName}, Lock ID: ${device.lockId}`);
157
+ }
158
+ // Register (or re-register to update handlers/context) with Homebridge Matter
159
+ await matterApi.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
160
+ this.matterAccessories.set(uuid, accessory);
161
+ // After Matter registration succeeds, clean up any staged HAP accessory for this lock.
162
+ // This deferred removal ensures that if Matter registration had failed, the user would
163
+ // have kept the HAP accessory rather than being left with no accessory at all.
164
+ const stagedHapAccessory = this.pendingHapCleanup.get(uuid);
165
+ if (stagedHapAccessory) {
166
+ this.log.debug(`Removing migrated HAP accessory after successful Matter registration: ${stagedHapAccessory.displayName}`);
167
+ this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [stagedHapAccessory]);
168
+ this.pendingHapCleanup.delete(uuid);
169
+ }
170
+ // Subscribe to August real-time events for instant state updates
171
+ await this.subscribeAugustMatter(device, uuid, matterApi);
172
+ // Start polling for periodic status refresh (fires immediately at 0ms for accurate initial state)
173
+ this.startMatterStatusPolling(device, uuid, matterApi);
174
+ }
175
+ /**
176
+ * Subscribe to August real-time lock events and update the Matter DoorLock state.
177
+ * Captures the unsubscribe function returned by August.subscribe() to allow proper
178
+ * cleanup on lock removal (equivalent of the fix in lock.ts / PR #206 for HAP).
179
+ */
180
+ async subscribeAugustMatter(device, uuid, matterApi) {
181
+ try {
182
+ await this.augustCredentials();
183
+ if (this.config.credentials) {
184
+ // Tear down any previous subscription for this lock before creating a new one
185
+ // (defensive: makes this method safe to call on re-registration).
186
+ const existingUnsubscribe = this.matterPubNubUnsubscribes.get(uuid);
187
+ if (existingUnsubscribe) {
188
+ try {
189
+ existingUnsubscribe();
190
+ }
191
+ catch { /* ignore */ }
192
+ this.matterPubNubUnsubscribes.delete(uuid);
193
+ }
194
+ const normalizedCredentials = await this.getNormalizedCredentials();
195
+ const unsubscribe = await August.subscribe(normalizedCredentials, device.lockId, async (augustEvent) => {
196
+ await this.debugLog(`Matter AugustEvent: ${JSON.stringify(augustEvent)}`);
197
+ if (augustEvent.state) {
198
+ const lockState = this.mapLockState(augustEvent.state, matterApi);
199
+ try {
200
+ await matterApi.updateAccessoryState(uuid, 'doorLock', { lockState });
201
+ await this.debugLog(`Matter: Updated lockState to ${lockState} for ${device.LockName}`);
202
+ }
203
+ catch (e) {
204
+ await this.errorLog(`Matter: updateAccessoryState failed: ${e.message ?? e}`);
205
+ }
206
+ }
207
+ });
208
+ if (typeof unsubscribe === 'function') {
209
+ this.matterPubNubUnsubscribes.set(uuid, unsubscribe);
210
+ }
211
+ }
212
+ }
213
+ catch (e) {
214
+ await this.errorLog(`Matter: subscribeAugust failed: ${e.message ?? e}`);
215
+ }
216
+ }
217
+ /**
218
+ * Map an August lock state (from details() or a PubNub event) to a Matter
219
+ * DoorLock.LockState enum value.
220
+ *
221
+ * If both `locked` and `unlocked` are set simultaneously (unexpected), we
222
+ * treat the lock as Locked (fail-safe). If neither is set, we report
223
+ * NotFullyLocked, which is the correct Matter state for "position unknown".
224
+ */
225
+ mapLockState(state, matterApi) {
226
+ if (state.locked) {
227
+ return matterApi.types.DoorLock.LockState.Locked;
228
+ }
229
+ if (state.unlocked) {
230
+ return matterApi.types.DoorLock.LockState.Unlocked;
231
+ }
232
+ return matterApi.types.DoorLock.LockState.NotFullyLocked;
233
+ }
234
+ /**
235
+ * Fetch the current lock status from the August API and update the Matter DoorLock state.
236
+ * On failure, attempts a session refresh and retries once. The 5-minute cooldown in
237
+ * refreshAugustSession() (added by PR #209 for the HAP path) prevents refresh spam
238
+ * during prolonged network outages.
239
+ */
240
+ async fetchAndUpdateMatterLockState(device, uuid, matterApi) {
241
+ try {
242
+ await this.fetchAndApplyMatterLockState(device, uuid, matterApi, 'Poll');
243
+ }
244
+ catch (e) {
245
+ await this.debugLog(`Matter: refreshStatus failed: ${e.message ?? e}`);
246
+ // Attempt session refresh and retry once. The 5-minute cooldown in refreshAugustSession()
247
+ // prevents spam when every poll fails during a prolonged network outage.
248
+ try {
249
+ await this.refreshAugustSession();
250
+ await this.fetchAndApplyMatterLockState(device, uuid, matterApi, 'Poll (retry)');
251
+ }
252
+ catch (retryError) {
253
+ await this.debugLog(`Matter: refreshStatus retry failed: ${retryError.message ?? retryError}`);
254
+ }
255
+ }
256
+ }
257
+ /**
258
+ * Single fetch-and-apply pass: read details from the August API and push the
259
+ * derived state into the Matter accessory. Throws on API/network errors so
260
+ * callers can decide whether to retry after a session refresh.
261
+ */
262
+ async fetchAndApplyMatterLockState(device, uuid, matterApi, logLabel) {
263
+ if (!this.augustConfig?.details) {
264
+ return;
265
+ }
266
+ const lockDetails = await this.augustConfig.details(device.lockId);
267
+ if (!lockDetails?.LockStatus?.state) {
268
+ return;
269
+ }
270
+ const lockState = this.mapLockState(lockDetails.LockStatus.state, matterApi);
271
+ await matterApi.updateAccessoryState(uuid, 'doorLock', { lockState });
272
+ await this.debugLog(`Matter: ${logLabel} updated lockState to ${lockState} for ${device.LockName}`);
273
+ }
274
+ /**
275
+ * Poll the August API for lock status at the configured refresh rate and update the Matter
276
+ * DoorLock state. Uses `timer(0, ...)` for an immediate first fetch (accurate initial state)
277
+ * and `exhaustMap` to prevent overlapping concurrent requests.
278
+ *
279
+ * Idempotent: disposes any previous polling subscription for the same UUID
280
+ * before starting a new one. The subscription is tracked in
281
+ * matterPollingSubscriptions so it can be disposed on lock removal — otherwise
282
+ * the timer keeps firing forever even after the accessory is gone.
283
+ */
284
+ startMatterStatusPolling(device, uuid, matterApi) {
285
+ const refreshRate = this.platformRefreshRate ?? 30;
286
+ if (refreshRate === 0) {
287
+ return;
288
+ }
289
+ // Dispose any previous polling subscription for this UUID before starting a new one
290
+ const existing = this.matterPollingSubscriptions.get(uuid);
291
+ if (existing) {
292
+ existing.unsubscribe();
293
+ this.matterPollingSubscriptions.delete(uuid);
294
+ }
295
+ const subscription = timer(0, refreshRate * 1000)
296
+ .pipe(exhaustMap(() => this.fetchAndUpdateMatterLockState(device, uuid, matterApi)))
297
+ .subscribe();
298
+ this.matterPollingSubscriptions.set(uuid, subscription);
299
+ }
300
+ /**
301
+ * Release all resources associated with a given Matter lock UUID:
302
+ * the registered Matter accessory, the PubNub subscription, and the
303
+ * RxJS polling subscription. Safe to call when some or all of these
304
+ * do not exist.
305
+ */
306
+ async tearDownMatterLock(uuid, lockName, matterApi) {
307
+ // Polling subscription — must be disposed or the timer keeps firing
308
+ const pollingSub = this.matterPollingSubscriptions.get(uuid);
309
+ if (pollingSub) {
310
+ pollingSub.unsubscribe();
311
+ this.matterPollingSubscriptions.delete(uuid);
312
+ }
313
+ // PubNub subscription — calls the unsubscribe function returned by August.subscribe()
314
+ const pubnubUnsubscribe = this.matterPubNubUnsubscribes.get(uuid);
315
+ if (pubnubUnsubscribe) {
316
+ try {
317
+ pubnubUnsubscribe();
318
+ }
319
+ catch { /* best-effort */ }
320
+ this.matterPubNubUnsubscribes.delete(uuid);
321
+ }
322
+ // Registered Matter accessory
323
+ const staleAccessory = this.matterAccessories.get(uuid);
324
+ if (staleAccessory) {
325
+ await matterApi.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [staleAccessory]);
326
+ this.matterAccessories.delete(uuid);
327
+ await this.warnLog(`Removing stale Matter accessory: ${lockName}`);
328
+ }
329
+ }
330
+ }
331
+ //# sourceMappingURL=platform.matter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.matter.js","sourceRoot":"","sources":["../src/platform.matter.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ export interface options {
30
30
  pushRate?: number;
31
31
  logging?: string;
32
32
  disableCountryCodeNormalization?: boolean;
33
+ disableMatter?: boolean;
33
34
  }
34
35
  export interface device {
35
36
  LockName: string;
@@ -56,11 +57,11 @@ export interface device {
56
57
  zWaveEnabled: boolean;
57
58
  isGalileo: boolean;
58
59
  Bridge: Bridge;
59
- parametersToSet: Record<any, undefined>;
60
- users: Record<any, undefined>;
60
+ parametersToSet: Record<string, unknown>;
61
+ users: Record<string, unknown>;
61
62
  pubsubChannel: string;
62
- ruleHash: any;
63
- cameras: any[];
63
+ ruleHash: unknown;
64
+ cameras: unknown[];
64
65
  lockId: string;
65
66
  }
66
67
  export interface BatteryInfo {
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  function addIcons() {
4
4
  if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons);
5
5
  const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg"));
6
- svg.innerHTML = `<g id="icon-1" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-2" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">N</text></g><g id="icon-8" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-enum)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">E</text></g><g id="icon-16" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-32" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-variable)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">V</text></g><g id="icon-64" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-128" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-256" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-interface)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">I</text></g><g id="icon-512" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-1024" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-2048" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-method)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4096" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-8192" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-16384" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-32768" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-65536" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-131072" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-262144" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-524288" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-1048576" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-2097152" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-4194304" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-reference)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">R</text></g><g id="icon-8388608" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="6,5 6,19 18,19, 18,10 13,5"></polygon><line x1="9" y1="9" x2="13" y2="9"></line><line x1="9" y1="12" x2="15" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></g></g><g id="icon-folder" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="5,5 10,5 12,8 19,8 19,18 5,18"></polygon></g></g><g id="icon-chevronDown" class="tsd-no-select"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-icon-text)"></path></g><g id="icon-chevronSmall" class="tsd-no-select"><path d="M1.5 5.50969L8 11.6609L14.5 5.50969L12.5466 3.66086L8 7.96494L3.45341 3.66086L1.5 5.50969Z" fill="var(--color-icon-text)"></path></g><g id="icon-checkbox" class="tsd-no-select"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></g><g id="icon-menu" class="tsd-no-select"><rect x="1" y="3" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-icon-text)"></rect></g><g id="icon-search" class="tsd-no-select"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z" fill="var(--color-icon-text)"></path></g><g id="icon-anchor" class="tsd-no-select"><g stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></g></g><g id="icon-alertNote" class="tsd-no-select"><path fill="var(--color-alert-note)" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g><g id="icon-alertTip" class="tsd-no-select"><path fill="var(--color-alert-tip)" d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></g><g id="icon-alertImportant" class="tsd-no-select"><path fill="var(--color-alert-important)" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertWarning" class="tsd-no-select"><path fill="var(--color-alert-warning)" d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertCaution" class="tsd-no-select"><path fill="var(--color-alert-caution)" d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g>`;
6
+ svg.innerHTML = `<symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Module" id="icon-1"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">M</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Module" id="icon-2"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">M</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Namespace" id="icon-4"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">N</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Enumeration" id="icon-8"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-enum)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">E</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Enumeration Member" id="icon-16"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Variable" id="icon-32"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-variable)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">V</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Function" id="icon-64"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">F</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Class" id="icon-128"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">C</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Interface" id="icon-256"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-interface)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">I</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Constructor" id="icon-512"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">C</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Property" id="icon-1024"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Method" id="icon-2048"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-method)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">M</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Function" id="icon-4096"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">F</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Index Signature" id="icon-8192"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Constructor" id="icon-16384"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">C</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Property" id="icon-32768"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Type Alias" id="icon-65536"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">T</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Type Alias" id="icon-131072"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">T</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Accessor" id="icon-262144"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">A</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Accessor" id="icon-524288"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">A</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Accessor" id="icon-1048576"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">A</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Type Alias" id="icon-2097152"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">T</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Reference" id="icon-4194304"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-reference)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">R</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Document" id="icon-8388608"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="6,5 6,19 18,19, 18,10 13,5"></polygon><line x1="9" y1="9" x2="13" y2="9"></line><line x1="9" y1="12" x2="15" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></g></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Folder" id="icon-folder"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="5,5 10,5 12,8 19,8 19,18 5,18"></polygon></g></symbol><symbol width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true" id="icon-chevronDown" class="tsd-no-select"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-icon-text)"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" id="icon-chevronSmall" class="tsd-no-select"><path d="M1.5 5.50969L8 11.6609L14.5 5.50969L12.5466 3.66086L8 7.96494L3.45341 3.66086L1.5 5.50969Z" fill="var(--color-icon-text)"></path></symbol><symbol width="32" height="32" viewBox="0 0 32 32" aria-hidden="true" id="icon-checkbox" class="tsd-no-select"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" id="icon-menu" class="tsd-no-select"><rect x="1" y="3" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-icon-text)"></rect></symbol><symbol width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" id="icon-search" class="tsd-no-select"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z" fill="var(--color-icon-text)"></path></symbol><symbol viewBox="0 0 24 24" aria-hidden="true" id="icon-anchor" class="tsd-no-select"><g stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></g></symbol><symbol xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertNote" class="tsd-no-select"><path fill="var(--color-alert-note)" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertTip" class="tsd-no-select"><path fill="var(--color-alert-tip)" d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertImportant" class="tsd-no-select"><path fill="var(--color-alert-important)" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertWarning" class="tsd-no-select"><path fill="var(--color-alert-warning)" d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertCaution" class="tsd-no-select"><path fill="var(--color-alert-caution)" d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></symbol>`;
7
7
  svg.style.display = "none";
8
8
  if (location.protocol === "file:") updateUseElements();
9
9
  }