@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,gBAAgB,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE1D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG;YACV,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;SACR,CAAA;QAEnB,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAErB,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,CAAA;IAC/F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=platform.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.test.d.ts","sourceRoot":"","sources":["../src/platform.test.ts"],"names":[],"mappings":""}
@@ -1,516 +0,0 @@
1
- import { readFileSync, writeFileSync } from 'node:fs';
2
- import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest';
3
- import { AugustPlatform } from './platform.js';
4
- // Mock the august-yale module
5
- vi.mock('august-yale', () => {
6
- const MockAugust = vi.fn().mockImplementation(() => ({
7
- end: vi.fn(),
8
- }));
9
- // Type assertion to add static methods
10
- const MockConstructor = MockAugust;
11
- MockConstructor.details = vi.fn();
12
- MockConstructor.authorize = vi.fn();
13
- MockConstructor.validate = vi.fn();
14
- return {
15
- default: MockConstructor,
16
- };
17
- });
18
- // Mock file system
19
- vi.mock('node:fs', () => ({
20
- readFileSync: vi.fn(),
21
- writeFileSync: vi.fn(),
22
- }));
23
- describe('AugustPlatform', () => {
24
- let platform;
25
- let mockApi;
26
- let mockLog;
27
- let mockConfig;
28
- beforeEach(() => {
29
- // Reset all mocks
30
- vi.clearAllMocks();
31
- // Create mock API
32
- mockApi = {
33
- hap: {
34
- uuid: {
35
- generate: vi.fn(() => 'mock-uuid'),
36
- },
37
- },
38
- user: {
39
- configPath: vi.fn(() => '/mock/config.json'),
40
- },
41
- on: vi.fn(),
42
- registerPlatformAccessories: vi.fn(),
43
- updatePlatformAccessories: vi.fn(),
44
- unregisterPlatformAccessories: vi.fn(),
45
- publishExternalAccessories: vi.fn(),
46
- };
47
- // Create mock logger
48
- mockLog = {
49
- info: vi.fn(),
50
- warn: vi.fn(),
51
- error: vi.fn(),
52
- debug: vi.fn(),
53
- success: vi.fn(),
54
- };
55
- // Create mock config
56
- mockConfig = {
57
- platform: 'August',
58
- name: 'Test August',
59
- credentials: {
60
- augustId: 'test@example.com',
61
- password: 'testpassword',
62
- countryCode: 'US',
63
- installId: 'test-install-id',
64
- isValidated: true,
65
- },
66
- options: {
67
- logging: 'debug',
68
- },
69
- };
70
- // Mock readFileSync for config file
71
- vi.mocked(readFileSync).mockReturnValue(JSON.stringify({
72
- platforms: [mockConfig]
73
- }));
74
- });
75
- it('should normalize Canadian country code to US for API compatibility', async () => {
76
- const config = {
77
- platform: 'August',
78
- name: 'Test August',
79
- credentials: {
80
- installId: 'test-install-id',
81
- augustId: 'test@example.com',
82
- password: 'test-password',
83
- countryCode: 'CA',
84
- isValidated: true,
85
- },
86
- options: {
87
- logging: 'debug',
88
- },
89
- };
90
- platform = new AugustPlatform(mockLog, config, mockApi);
91
- // Access the private method for testing
92
- const normalizeMethod = platform.normalizeCredentialsForApi.bind(platform);
93
- const normalizedCredentials = await normalizeMethod(config.credentials);
94
- expect(normalizedCredentials.countryCode).toBe('US');
95
- expect(normalizedCredentials.augustId).toBe('test@example.com');
96
- expect(normalizedCredentials.password).toBe('test-password');
97
- });
98
- it('should normalize Mexican country code to US for API compatibility', async () => {
99
- const config = {
100
- platform: 'August',
101
- name: 'Test August',
102
- credentials: {
103
- installId: 'test-install-id',
104
- augustId: 'test@example.com',
105
- password: 'test-password',
106
- countryCode: 'MX',
107
- isValidated: true,
108
- },
109
- options: {
110
- logging: 'debug',
111
- },
112
- };
113
- platform = new AugustPlatform(mockLog, config, mockApi);
114
- // Access the private method for testing
115
- const normalizeMethod = platform.normalizeCredentialsForApi.bind(platform);
116
- const normalizedCredentials = await normalizeMethod(config.credentials);
117
- expect(normalizedCredentials.countryCode).toBe('US');
118
- expect(normalizedCredentials.augustId).toBe('test@example.com');
119
- expect(normalizedCredentials.password).toBe('test-password');
120
- });
121
- it('should respect disableCountryCodeNormalization option', async () => {
122
- const config = {
123
- platform: 'August',
124
- name: 'Test August',
125
- credentials: {
126
- installId: 'test-install-id',
127
- augustId: 'test@example.com',
128
- password: 'test-password',
129
- countryCode: 'CA',
130
- isValidated: true,
131
- },
132
- options: {
133
- logging: 'debug',
134
- disableCountryCodeNormalization: true,
135
- },
136
- };
137
- platform = new AugustPlatform(mockLog, config, mockApi);
138
- // Access the private method for testing
139
- const normalizeMethod = platform.normalizeCredentialsForApi.bind(platform);
140
- const normalizedCredentials = await normalizeMethod(config.credentials);
141
- expect(normalizedCredentials.countryCode).toBe('CA'); // Should remain unchanged
142
- expect(normalizedCredentials.augustId).toBe('test@example.com');
143
- expect(normalizedCredentials.password).toBe('test-password');
144
- });
145
- it('should handle case-insensitive country codes', async () => {
146
- const config = {
147
- platform: 'August',
148
- name: 'Test August',
149
- credentials: {
150
- installId: 'test-install-id',
151
- augustId: 'test@example.com',
152
- password: 'test-password',
153
- countryCode: 'ca', // lowercase
154
- isValidated: true,
155
- },
156
- options: {
157
- logging: 'debug',
158
- },
159
- };
160
- platform = new AugustPlatform(mockLog, config, mockApi);
161
- // Access the private method for testing
162
- const normalizeMethod = platform.normalizeCredentialsForApi.bind(platform);
163
- const normalizedCredentials = await normalizeMethod(config.credentials);
164
- expect(normalizedCredentials.countryCode).toBe('US');
165
- });
166
- it('should not change US country code', async () => {
167
- const config = {
168
- platform: 'August',
169
- name: 'Test August',
170
- credentials: {
171
- installId: 'test-install-id',
172
- augustId: 'test@example.com',
173
- password: 'test-password',
174
- countryCode: 'US',
175
- isValidated: true,
176
- },
177
- options: {
178
- logging: 'debug',
179
- },
180
- };
181
- platform = new AugustPlatform(mockLog, config, mockApi);
182
- // Access the private method for testing
183
- const normalizeMethod = platform.normalizeCredentialsForApi.bind(platform);
184
- const normalizedCredentials = await normalizeMethod(config.credentials);
185
- expect(normalizedCredentials.countryCode).toBe('US');
186
- });
187
- it('should preserve other credential properties when normalizing', async () => {
188
- const config = {
189
- platform: 'August',
190
- name: 'Test August',
191
- credentials: {
192
- apiKey: 'test-api-key',
193
- pnSubKey: 'test-pn-sub-key',
194
- installId: 'test-install-id',
195
- augustId: 'test@example.com',
196
- password: 'test-password',
197
- countryCode: 'CA',
198
- isValidated: true,
199
- validateCode: 'test-code',
200
- },
201
- options: {
202
- logging: 'debug',
203
- },
204
- };
205
- platform = new AugustPlatform(mockLog, config, mockApi);
206
- // Access the private method for testing
207
- const normalizeMethod = platform.normalizeCredentialsForApi.bind(platform);
208
- const normalizedCredentials = await normalizeMethod(config.credentials);
209
- expect(normalizedCredentials.apiKey).toBe('test-api-key');
210
- expect(normalizedCredentials.pnSubKey).toBe('test-pn-sub-key');
211
- expect(normalizedCredentials.installId).toBe('test-install-id');
212
- expect(normalizedCredentials.augustId).toBe('test@example.com');
213
- expect(normalizedCredentials.password).toBe('test-password');
214
- expect(normalizedCredentials.countryCode).toBe('US'); // Should be normalized
215
- expect(normalizedCredentials.isValidated).toBe(true);
216
- expect(normalizedCredentials.validateCode).toBe('test-code');
217
- });
218
- it('should provide public method to get normalized credentials', async () => {
219
- const config = {
220
- platform: 'August',
221
- name: 'Test August',
222
- credentials: {
223
- installId: 'test-install-id',
224
- augustId: 'test@example.com',
225
- password: 'test-password',
226
- countryCode: 'CA',
227
- isValidated: true,
228
- },
229
- options: {
230
- logging: 'debug',
231
- },
232
- };
233
- platform = new AugustPlatform(mockLog, config, mockApi);
234
- // Test the public method
235
- const normalizedCredentials = await platform.getNormalizedCredentials();
236
- expect(normalizedCredentials.countryCode).toBe('US');
237
- expect(normalizedCredentials.augustId).toBe('test@example.com');
238
- });
239
- it('should handle null credentials gracefully', async () => {
240
- const config = {
241
- platform: 'August',
242
- name: 'Test August',
243
- credentials: {
244
- installId: 'test-install-id',
245
- augustId: 'test@example.com',
246
- password: 'test-password',
247
- countryCode: 'CA',
248
- isValidated: true,
249
- },
250
- options: {
251
- logging: 'debug',
252
- },
253
- };
254
- platform = new AugustPlatform(mockLog, config, mockApi);
255
- // Access the private method for testing
256
- const normalizeMethod = platform.normalizeCredentialsForApi.bind(platform);
257
- await expect(normalizeMethod(null)).rejects.toThrow('Credentials cannot be null or undefined');
258
- await expect(normalizeMethod(undefined)).rejects.toThrow('Credentials cannot be null or undefined');
259
- });
260
- it('should use cached credentials for performance', async () => {
261
- const config = {
262
- platform: 'August',
263
- name: 'Test August',
264
- credentials: {
265
- installId: 'test-install-id',
266
- augustId: 'test@example.com',
267
- password: 'test-password',
268
- countryCode: 'CA',
269
- isValidated: true,
270
- },
271
- options: {
272
- logging: 'debug',
273
- },
274
- };
275
- platform = new AugustPlatform(mockLog, config, mockApi);
276
- // First call should normalize and cache
277
- const firstCall = await platform.getNormalizedCredentials();
278
- expect(firstCall.countryCode).toBe('US');
279
- // Second call should use cache
280
- const secondCall = await platform.getNormalizedCredentials();
281
- expect(secondCall.countryCode).toBe('US');
282
- expect(secondCall).toBe(firstCall); // Should be the same object reference
283
- });
284
- afterEach(() => {
285
- vi.restoreAllMocks();
286
- });
287
- describe('discoverDevices', () => {
288
- it('should handle 401 authentication errors and trigger re-authentication', async () => {
289
- // Create platform instance
290
- platform = new AugustPlatform(mockLog, mockConfig, mockApi);
291
- // Mock August.details to throw 401 error
292
- const August = await import('august-yale');
293
- const detailsMock = vi.fn().mockRejectedValueOnce(new Error('GET failed with: 401'));
294
- August.default.details = detailsMock;
295
- // Mock validated method to avoid actual re-authentication
296
- const validateSpy = vi.spyOn(platform, 'validated').mockImplementation(async () => {
297
- // Don't change the flag back to true, just simulate the method being called
298
- return;
299
- });
300
- // Call discoverDevices
301
- await expect(platform.discoverDevices()).resolves.toBeUndefined();
302
- // Verify that validation was reset and re-authentication was attempted
303
- expect(platform.config.credentials.isValidated).toBe(false);
304
- expect(writeFileSync).toHaveBeenCalled();
305
- expect(validateSpy).toHaveBeenCalled();
306
- });
307
- it('should handle "unauthorized" errors and trigger re-authentication', async () => {
308
- // Create platform instance
309
- platform = new AugustPlatform(mockLog, mockConfig, mockApi);
310
- // Mock August.details to throw unauthorized error
311
- const August = await import('august-yale');
312
- const detailsMock = vi.fn().mockRejectedValueOnce(new Error('Request failed: Unauthorized'));
313
- August.default.details = detailsMock;
314
- // Mock validated method
315
- const validateSpy = vi.spyOn(platform, 'validated').mockImplementation(async () => {
316
- return;
317
- });
318
- // Call discoverDevices
319
- await expect(platform.discoverDevices()).resolves.toBeUndefined();
320
- // Verify re-authentication was triggered
321
- expect(validateSpy).toHaveBeenCalled();
322
- });
323
- it('should re-throw non-authentication errors', async () => {
324
- // Create platform instance
325
- platform = new AugustPlatform(mockLog, mockConfig, mockApi);
326
- // Mock August.details to throw non-401 error
327
- const August = await import('august-yale');
328
- const networkError = new Error('Network timeout');
329
- const detailsMock = vi.fn().mockRejectedValueOnce(networkError);
330
- August.default.details = detailsMock;
331
- // Call discoverDevices and expect it to throw
332
- await expect(platform.discoverDevices()).rejects.toThrow('Failed to discover devices: Network timeout');
333
- });
334
- it('should process devices successfully when no errors occur', async () => {
335
- // Create platform instance
336
- platform = new AugustPlatform(mockLog, mockConfig, mockApi);
337
- // Mock successful August.details response
338
- const August = await import('august-yale');
339
- const mockDevice = {
340
- lockId: 'test-lock-id',
341
- LockName: 'Test Lock',
342
- SerialNumber: '123456',
343
- }; // Use any to avoid complex type requirements
344
- const detailsMock = vi.fn().mockResolvedValueOnce([mockDevice]);
345
- August.default.details = detailsMock;
346
- // Mock the Lock method to avoid actual device processing
347
- const lockSpy = vi.spyOn(platform, 'Lock').mockImplementation(async () => { });
348
- // Call discoverDevices
349
- await expect(platform.discoverDevices()).resolves.toBeUndefined();
350
- // Verify successful processing
351
- expect(detailsMock).toHaveBeenCalled();
352
- // Due to the existing logic, single device arrays get wrapped: [devices] becomes [[device]]
353
- // So Lock gets called with [device] instead of device
354
- expect(lockSpy).toHaveBeenCalledWith([mockDevice]);
355
- });
356
- it('should exclude locks matching excludeLockIds', async () => {
357
- const configWithExcludes = {
358
- ...mockConfig,
359
- options: {
360
- logging: 'debug',
361
- excludeLockIds: ['excluded-lock-id'],
362
- },
363
- };
364
- platform = new AugustPlatform(mockLog, configWithExcludes, mockApi);
365
- const August = await import('august-yale');
366
- const mockDeviceIncluded = { lockId: 'included-lock-id', LockName: 'Included Lock' };
367
- const mockDeviceExcluded = { lockId: 'excluded-lock-id', LockName: 'Excluded Lock' };
368
- August.default.details = vi.fn().mockResolvedValueOnce([mockDeviceIncluded, mockDeviceExcluded]);
369
- const lockSpy = vi.spyOn(platform, 'Lock').mockImplementation(async () => { });
370
- await platform.discoverDevices();
371
- // Only the non-excluded lock should be processed
372
- expect(lockSpy).toHaveBeenCalledTimes(1);
373
- expect(lockSpy).toHaveBeenCalledWith(expect.objectContaining({ lockId: 'included-lock-id' }));
374
- });
375
- it('should handle case-insensitive excludeLockIds matching', async () => {
376
- const configWithExcludes = {
377
- ...mockConfig,
378
- options: {
379
- logging: 'debug',
380
- excludeLockIds: ['EXCLUDED-LOCK-ID'],
381
- },
382
- };
383
- platform = new AugustPlatform(mockLog, configWithExcludes, mockApi);
384
- const August = await import('august-yale');
385
- const mockDeviceIncluded = { lockId: 'included-lock-id', LockName: 'Included Lock' };
386
- const mockDeviceExcluded = { lockId: 'excluded-lock-id', LockName: 'Excluded Lock' };
387
- August.default.details = vi.fn().mockResolvedValueOnce([mockDeviceIncluded, mockDeviceExcluded]);
388
- const lockSpy = vi.spyOn(platform, 'Lock').mockImplementation(async () => { });
389
- await platform.discoverDevices();
390
- expect(lockSpy).toHaveBeenCalledTimes(1);
391
- expect(lockSpy).toHaveBeenCalledWith(expect.objectContaining({ lockId: 'included-lock-id' }));
392
- });
393
- it('should unregister cached accessories for excluded lock IDs', async () => {
394
- const configWithExcludes = {
395
- ...mockConfig,
396
- options: {
397
- logging: 'debug',
398
- excludeLockIds: ['excluded-lock-id'],
399
- },
400
- };
401
- // Make uuid.generate return predictable UUIDs based on input
402
- vi.mocked(mockApi.hap.uuid.generate).mockImplementation((input) => `uuid-${input}`);
403
- platform = new AugustPlatform(mockLog, configWithExcludes, mockApi);
404
- // Simulate a cached accessory for the excluded lock
405
- const mockAccessory = {
406
- UUID: 'uuid-excluded-lock-id',
407
- displayName: 'Excluded Lock',
408
- };
409
- platform.accessories.push(mockAccessory);
410
- const August = await import('august-yale');
411
- const mockDevice = { lockId: 'included-lock-id', LockName: 'Included Lock' };
412
- August.default.details = vi.fn().mockResolvedValueOnce([mockDevice]);
413
- vi.spyOn(platform, 'Lock').mockImplementation(async () => { });
414
- await platform.discoverDevices();
415
- // Verify the cached accessory was unregistered
416
- expect(mockApi.unregisterPlatformAccessories).toHaveBeenCalledWith('homebridge-august', 'August', [mockAccessory]);
417
- // Verify the accessory was removed from the accessories array
418
- expect(platform.accessories.find(a => a.UUID === 'uuid-excluded-lock-id')).toBeUndefined();
419
- });
420
- it('should not filter when excludeLockIds is empty', async () => {
421
- const configWithEmptyExcludes = {
422
- ...mockConfig,
423
- options: {
424
- logging: 'debug',
425
- excludeLockIds: [],
426
- },
427
- };
428
- platform = new AugustPlatform(mockLog, configWithEmptyExcludes, mockApi);
429
- const August = await import('august-yale');
430
- const mockDeviceA = { lockId: 'lock-a', LockName: 'Lock A' };
431
- const mockDeviceB = { lockId: 'lock-b', LockName: 'Lock B' };
432
- August.default.details = vi.fn().mockResolvedValueOnce([mockDeviceA, mockDeviceB]);
433
- const lockSpy = vi.spyOn(platform, 'Lock').mockImplementation(async () => { });
434
- await platform.discoverDevices();
435
- expect(lockSpy).toHaveBeenCalledTimes(2);
436
- });
437
- it('should exclude locks when using per-device config', async () => {
438
- const configWithBoth = {
439
- ...mockConfig,
440
- options: {
441
- logging: 'debug',
442
- excludeLockIds: ['excluded-lock-id'],
443
- devices: [
444
- { lockId: 'included-lock-id', configLockName: 'My Lock', overrideHomeKitEnabled: false },
445
- ],
446
- },
447
- };
448
- platform = new AugustPlatform(mockLog, configWithBoth, mockApi);
449
- const August = await import('august-yale');
450
- const mockDeviceIncluded = { lockId: 'included-lock-id', LockName: 'Included Lock' };
451
- const mockDeviceExcluded = { lockId: 'excluded-lock-id', LockName: 'Excluded Lock' };
452
- August.default.details = vi.fn().mockResolvedValueOnce([mockDeviceIncluded, mockDeviceExcluded]);
453
- const lockSpy = vi.spyOn(platform, 'Lock').mockImplementation(async () => { });
454
- await platform.discoverDevices();
455
- // Only the included lock should reach the Lock method
456
- expect(lockSpy).toHaveBeenCalledTimes(1);
457
- });
458
- });
459
- describe('validated method', () => {
460
- it('should handle undefined credentials in config file gracefully', async () => {
461
- // Mock config file with undefined credentials
462
- const mockConfigFile = {
463
- platforms: [
464
- {
465
- platform: 'August',
466
- name: 'Test August',
467
- // credentials is undefined here
468
- },
469
- ],
470
- };
471
- vi.mocked(readFileSync).mockReturnValue(JSON.stringify(mockConfigFile));
472
- platform = new AugustPlatform(mockLog, mockConfig, mockApi);
473
- // This should not throw an error when trying to set installId
474
- await expect(platform.validated()).resolves.toBeUndefined();
475
- });
476
- it('should handle null credentials in config file gracefully', async () => {
477
- // Mock config file with null credentials
478
- const mockConfigFile = {
479
- platforms: [
480
- {
481
- platform: 'August',
482
- name: 'Test August',
483
- credentials: null,
484
- },
485
- ],
486
- };
487
- vi.mocked(readFileSync).mockReturnValue(JSON.stringify(mockConfigFile));
488
- platform = new AugustPlatform(mockLog, mockConfig, mockApi);
489
- // This should not throw an error when trying to set installId
490
- await expect(platform.validated()).resolves.toBeUndefined();
491
- });
492
- it('should initialize credentials object and save installId when credentials are missing', async () => {
493
- // Mock config file with undefined credentials
494
- const mockConfigFile = {
495
- platforms: [
496
- {
497
- platform: 'August',
498
- name: 'Test August',
499
- // credentials is undefined here
500
- },
501
- ],
502
- };
503
- vi.mocked(readFileSync).mockReturnValue(JSON.stringify(mockConfigFile));
504
- platform = new AugustPlatform(mockLog, mockConfig, mockApi);
505
- await platform.validated();
506
- // Verify that writeFileSync was called (meaning the config was updated)
507
- expect(writeFileSync).toHaveBeenCalled();
508
- // Verify the credentials object was created and populated
509
- const writeCall = vi.mocked(writeFileSync).mock.calls[0];
510
- const savedConfig = JSON.parse(writeCall[1]);
511
- expect(savedConfig.platforms[0].credentials).toBeDefined();
512
- expect(savedConfig.platforms[0].credentials.installId).toBeDefined();
513
- });
514
- });
515
- });
516
- //# sourceMappingURL=platform.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.test.js","sourceRoot":"","sources":["../src/platform.test.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9C,8BAA8B;AAC9B,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;IAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QACnD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;KACb,CAAC,CAAC,CAAA;IAEH,uCAAuC;IACvC,MAAM,eAAe,GAAG,UAAiB,CAAA;IACzC,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IACjC,eAAe,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IACnC,eAAe,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IAElC,OAAO;QACL,OAAO,EAAE,eAAe;KACzB,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,mBAAmB;AACnB,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;CACvB,CAAC,CAAC,CAAA;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,QAAwB,CAAA;IAC5B,IAAI,OAAY,CAAA;IAChB,IAAI,OAAgB,CAAA;IACpB,IAAI,UAAgC,CAAA;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,kBAAkB;QAClB,EAAE,CAAC,aAAa,EAAE,CAAA;QAElB,kBAAkB;QAClB,OAAO,GAAG;YACR,GAAG,EAAE;gBACH,IAAI,EAAE;oBACJ,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;iBACnC;aACF;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC;aAC7C;YACD,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;YACX,2BAA2B,EAAE,EAAE,CAAC,EAAE,EAAE;YACpC,yBAAyB,EAAE,EAAE,CAAC,EAAE,EAAE;YAClC,6BAA6B,EAAE,EAAE,CAAC,EAAE,EAAE;YACtC,0BAA0B,EAAE,EAAE,CAAC,EAAE,EAAE;SAClB,CAAA;QAEnB,qBAAqB;QACrB,OAAO,GAAG;YACR,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;SACV,CAAA;QAER,qBAAqB;QACrB,UAAU,GAAG;YACX,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,iBAAiB;gBAC5B,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,oCAAoC;QACpC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YACrD,SAAS,EAAE,CAAC,UAAU,CAAC;SACxB,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,eAAe,GAAI,QAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnF,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEvE,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/D,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,eAAe,GAAI,QAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnF,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEvE,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/D,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;gBAChB,+BAA+B,EAAE,IAAI;aACtC;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,eAAe,GAAI,QAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnF,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEvE,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,0BAA0B;QAC/E,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/D,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI,EAAE,YAAY;gBAC/B,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,eAAe,GAAI,QAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnF,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEvE,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,eAAe,GAAI,QAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnF,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEvE,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,iBAAiB;gBAC3B,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,WAAW;aAC1B;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,eAAe,GAAI,QAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnF,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEvE,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACzD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC9D,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC/D,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/D,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5D,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,uBAAuB;QAC5E,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,yBAAyB;QACzB,MAAM,qBAAqB,GAAG,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAA;QAEvE,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,eAAe,GAAI,QAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEnF,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAA;QAC9F,MAAM,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAA;IACrG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,MAAM,GAAyB;YACnC,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACX,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;QAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEvD,wCAAwC;QACxC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAA;QAC3D,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAExC,+BAA+B;QAC/B,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAA;QAC5D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,CAAC,sCAAsC;IAC3E,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,2BAA2B;YAC3B,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3D,yCAAyC;YACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;YACpF,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAA;YAEpC,0DAA0D;YAC1D,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAChF,4EAA4E;gBAC5E,OAAM;YACR,CAAC,CAAC,CAAA;YAEF,uBAAuB;YACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;YAEjE,uEAAuE;YACvE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC5D,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACxC,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,2BAA2B;YAC3B,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3D,kDAAkD;YAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAC5F,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAA;YAEpC,wBAAwB;YACxB,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAChF,OAAM;YACR,CAAC,CAAC,CAAA;YAEF,uBAAuB;YACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;YAEjE,yCAAyC;YACzC,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,2BAA2B;YAC3B,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3D,6CAA6C;YAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACjD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;YAC/D,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAA;YAEpC,8CAA8C;YAC9C,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAA;QACzG,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,2BAA2B;YAC3B,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3D,0CAA0C;YAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,UAAU,GAAG;gBACjB,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,QAAQ;aAChB,CAAA,CAAC,6CAA6C;YAEtD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;YAC/D,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAA;YAEpC,yDAAyD;YACzD,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,QAAe,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YAEpF,uBAAuB;YACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;YAEjE,+BAA+B;YAC/B,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACtC,4FAA4F;YAC5F,sDAAsD;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,kBAAkB,GAAyB;gBAC/C,GAAG,UAAU;gBACb,OAAO,EAAE;oBACP,OAAO,EAAE,OAAO;oBAChB,cAAc,EAAE,CAAC,kBAAkB,CAAC;iBACrC;aACF,CAAA;YAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAA;YAEnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,kBAAkB,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAS,CAAA;YAC3F,MAAM,kBAAkB,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAS,CAAA;YAC3F,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAA;YAEhG,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,QAAe,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YAEpF,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;YAEhC,iDAAiD;YACjD,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;QAC/F,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,kBAAkB,GAAyB;gBAC/C,GAAG,UAAU;gBACb,OAAO,EAAE;oBACP,OAAO,EAAE,OAAO;oBAChB,cAAc,EAAE,CAAC,kBAAkB,CAAC;iBACrC;aACF,CAAA;YAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAA;YAEnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,kBAAkB,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAS,CAAA;YAC3F,MAAM,kBAAkB,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAS,CAAA;YAC3F,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAA;YAEhG,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,QAAe,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YAEpF,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;YAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;QAC/F,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,kBAAkB,GAAyB;gBAC/C,GAAG,UAAU;gBACb,OAAO,EAAE;oBACP,OAAO,EAAE,OAAO;oBAChB,cAAc,EAAE,CAAC,kBAAkB,CAAC;iBACrC;aACF,CAAA;YAED,6DAA6D;YAC7D,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;YAExF,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAA;YAEnE,oDAAoD;YACpD,MAAM,aAAa,GAAG;gBACpB,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,eAAe;aACG,CAAA;YACjC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAExC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAS,CAAA;YACnF,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;YAEpE,EAAE,CAAC,KAAK,CAAC,QAAe,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YAEpE,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;YAEhC,+CAA+C;YAC/C,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,oBAAoB,CAChE,mBAAmB,EACnB,QAAQ,EACR,CAAC,aAAa,CAAC,CAChB,CAAA;YACD,8DAA8D;YAC9D,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QAC5F,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,uBAAuB,GAAyB;gBACpD,GAAG,UAAU;gBACb,OAAO,EAAE;oBACP,OAAO,EAAE,OAAO;oBAChB,cAAc,EAAE,EAAE;iBACnB;aACF,CAAA;YAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAA;YAExE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAS,CAAA;YACnE,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAS,CAAA;YACnE,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;YAElF,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,QAAe,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YAEpF,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;YAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,cAAc,GAAyB;gBAC3C,GAAG,UAAU;gBACb,OAAO,EAAE;oBACP,OAAO,EAAE,OAAO;oBAChB,cAAc,EAAE,CAAC,kBAAkB,CAAC;oBACpC,OAAO,EAAE;wBACP,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,sBAAsB,EAAE,KAAK,EAAS;qBAChG;iBACF;aACF,CAAA;YAED,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;YAE/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC1C,MAAM,kBAAkB,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAS,CAAA;YAC3F,MAAM,kBAAkB,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAS,CAAA;YAC3F,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAA;YAEhG,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,QAAe,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAA;YAEpF,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;YAEhC,sDAAsD;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,8CAA8C;YAC9C,MAAM,cAAc,GAAG;gBACrB,SAAS,EAAE;oBACT;wBACE,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,aAAa;wBACnB,gCAAgC;qBACjC;iBACF;aACF,CAAA;YAED,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;YAEvE,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3D,8DAA8D;YAC9D,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;QAC7D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,yCAAyC;YACzC,MAAM,cAAc,GAAG;gBACrB,SAAS,EAAE;oBACT;wBACE,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,aAAa;wBACnB,WAAW,EAAE,IAAI;qBAClB;iBACF;aACF,CAAA;YAED,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;YAEvE,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3D,8DAA8D;YAC9D,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;QAC7D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;YACpG,8CAA8C;YAC9C,MAAM,cAAc,GAAG;gBACrB,SAAS,EAAE;oBACT;wBACE,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,aAAa;wBACnB,gCAAgC;qBACjC;iBACF;aACF,CAAA;YAED,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;YAEvE,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3D,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;YAE1B,wEAAwE;YACxE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAExC,0DAA0D;YAC1D,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACxD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAW,CAAC,CAAA;YACtD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;YAC1D,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QACtE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=settings.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.test.d.ts","sourceRoot":"","sources":["../src/settings.test.ts"],"names":[],"mappings":""}