@homebridge-plugins/homebridge-eufy-security 5.0.0-beta.35 → 5.0.0-beta.36

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 (86) hide show
  1. package/CONTRIBUTING.md +9 -17
  2. package/config.schema.json +6 -0
  3. package/dist/account/ownership.js +16 -16
  4. package/dist/account/ownership.js.map +1 -1
  5. package/dist/account/persistence.js +24 -74
  6. package/dist/account/persistence.js.map +1 -1
  7. package/dist/account/temporary-authentication.js +2 -2
  8. package/dist/account/temporary-authentication.js.map +1 -1
  9. package/dist/configuration.js +18 -25
  10. package/dist/configuration.js.map +1 -1
  11. package/dist/device/member-evidence.js +1 -1
  12. package/dist/device/member-evidence.js.map +1 -1
  13. package/dist/device/member-trust.js +14 -32
  14. package/dist/device/member-trust.js.map +1 -1
  15. package/dist/device/snapshot.js +5 -17
  16. package/dist/device/snapshot.js.map +1 -1
  17. package/dist/diagnostics.js +246 -300
  18. package/dist/diagnostics.js.map +1 -1
  19. package/dist/homekit/adapter.js +4 -1
  20. package/dist/homekit/adapter.js.map +1 -1
  21. package/dist/homekit/adapters/battery.js +3 -3
  22. package/dist/homekit/adapters/battery.js.map +1 -1
  23. package/dist/homekit/adapters/camera-controls.js +15 -37
  24. package/dist/homekit/adapters/camera-controls.js.map +1 -1
  25. package/dist/homekit/adapters/camera-streaming.js +9 -19
  26. package/dist/homekit/adapters/camera-streaming.js.map +1 -1
  27. package/dist/homekit/adapters/contact.js +5 -5
  28. package/dist/homekit/adapters/contact.js.map +1 -1
  29. package/dist/homekit/adapters/doorbell.js +3 -15
  30. package/dist/homekit/adapters/doorbell.js.map +1 -1
  31. package/dist/homekit/adapters/lock.js +15 -214
  32. package/dist/homekit/adapters/lock.js.map +1 -1
  33. package/dist/homekit/adapters/motion.js +2 -2
  34. package/dist/homekit/adapters/motion.js.map +1 -1
  35. package/dist/homekit/adapters/package-sensor.js +2 -2
  36. package/dist/homekit/adapters/package-sensor.js.map +1 -1
  37. package/dist/homekit/adapters/security-system.js +11 -211
  38. package/dist/homekit/adapters/security-system.js.map +1 -1
  39. package/dist/homekit/adapters/siren.js +5 -33
  40. package/dist/homekit/adapters/siren.js.map +1 -1
  41. package/dist/homekit/adapters/smart-light.js +19 -217
  42. package/dist/homekit/adapters/smart-light.js.map +1 -1
  43. package/dist/homekit/coverage-matrix.js +8 -65
  44. package/dist/homekit/coverage-matrix.js.map +1 -1
  45. package/dist/homekit/device-control.js +249 -13
  46. package/dist/homekit/device-control.js.map +1 -1
  47. package/dist/homekit/reconciler.js +5 -5
  48. package/dist/homekit/reconciler.js.map +1 -1
  49. package/dist/media/last-successful-image.js +3 -20
  50. package/dist/media/last-successful-image.js.map +1 -1
  51. package/dist/media/live-preview.js +163 -42
  52. package/dist/media/live-preview.js.map +1 -1
  53. package/dist/media/live-stream.js +108 -67
  54. package/dist/media/live-stream.js.map +1 -1
  55. package/dist/media/recording.js +37 -120
  56. package/dist/media/recording.js.map +1 -1
  57. package/dist/media/snapshot.js +1 -9
  58. package/dist/media/snapshot.js.map +1 -1
  59. package/dist/media/station-live-sessions.js +0 -15
  60. package/dist/media/station-live-sessions.js.map +1 -1
  61. package/dist/platform.js +10 -10
  62. package/dist/platform.js.map +1 -1
  63. package/dist/runtime/channel.js +91 -69
  64. package/dist/runtime/channel.js.map +1 -1
  65. package/dist/runtime/owner.js +6 -6
  66. package/dist/runtime/owner.js.map +1 -1
  67. package/dist/runtime/sdk-client.js +3 -14
  68. package/dist/runtime/sdk-client.js.map +1 -1
  69. package/dist/runtime/tracker.js +8 -38
  70. package/dist/runtime/tracker.js.map +1 -1
  71. package/dist/storage.js +1 -1
  72. package/dist/storage.js.map +1 -1
  73. package/dist/ui/runtime-channel-client.js +145 -282
  74. package/dist/ui/runtime-channel-client.js.map +1 -1
  75. package/dist/ui/server.js +39 -53
  76. package/dist/ui/server.js.map +1 -1
  77. package/homebridge-ui/public/app.css +150 -78
  78. package/homebridge-ui/public/i18n/en.json +14 -2
  79. package/homebridge-ui/public/i18n/fr.json +14 -2
  80. package/homebridge-ui/public/index.html +59 -10
  81. package/homebridge-ui/public/js/app.js +206 -42
  82. package/homebridge-ui/public/js/dashboard.js +4 -19
  83. package/package.json +3 -7
  84. package/homebridge-ui/public/js/legacy-settings.js +0 -37
  85. package/homebridge-ui/public/js/profile-wizard.js +0 -31
  86. package/homebridge-ui/public/js/setup-wizard.js +0 -52
package/dist/ui/server.js CHANGED
@@ -4,15 +4,15 @@ import { EufyMega } from '@mega-yfue/eufy-sdk';
4
4
  import { AccountOwnership } from '../account/ownership.js';
5
5
  import { AccountSessionPersistence } from '../account/persistence.js';
6
6
  import { observationOnlyAuthenticationClient, TemporaryAuthentication, } from '../account/temporary-authentication.js';
7
- import { parseConfig } from '../configuration.js';
7
+ import { isRecord, parseConfig } from '../configuration.js';
8
8
  import { GuidedDiagnostics, isDiagnosticsProfile, isDiagnosticsReproductionMode, isDiagnosticsUiEvent, } from '../diagnostics.js';
9
9
  import { PersistedLastSuccessfulImages } from '../media/last-successful-image.js';
10
10
  import { readDeviceImage } from './device-image.js';
11
- import { noticedDeviceSettingWrite, runtimeChannelEndpointForHost, } from '../runtime/channel.js';
11
+ import { noticedDeviceSettingWrite, noticedLivePreviewQuery, runtimeChannelEndpointForHost, } from '../runtime/channel.js';
12
12
  import { RuntimeTracker } from '../runtime/tracker.js';
13
13
  import { resolveStorageRoot } from '../storage.js';
14
14
  import { readDashboard } from './dashboard.js';
15
- import { RuntimeChannelClient, } from './runtime-channel-client.js';
15
+ import { RuntimeChannelClient } from './runtime-channel-client.js';
16
16
  const AUTHENTICATION_FLOW_TIMEOUT_MS = 5 * 60_000;
17
17
  const AUTHENTICATION_CLEANUP_TIMEOUT_MS = 10_000;
18
18
  /** Binds every custom-UI child-process exit path to one bounded authentication cleanup. */
@@ -36,13 +36,11 @@ function requiredString(value, maximumLength) {
36
36
  * browser or into an error path that a diagnostic could record.
37
37
  */
38
38
  export function parseAuthenticationStart(value) {
39
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
39
+ if (!isRecord(value)) {
40
40
  throw new RequestError('Invalid authentication request', { status: 400 });
41
41
  }
42
42
  const payload = value;
43
- if (typeof payload.configuration !== 'object' ||
44
- payload.configuration === null ||
45
- Array.isArray(payload.configuration)) {
43
+ if (!isRecord(payload.configuration)) {
46
44
  throw new RequestError('Invalid authentication request', { status: 400 });
47
45
  }
48
46
  const candidate = payload.configuration;
@@ -74,7 +72,7 @@ export function parseAuthenticationStart(value) {
74
72
  * Every rejection raises the same generic message so no submitted challenge answer is echoed back.
75
73
  */
76
74
  export function parseAuthenticationAnswer(value, key) {
77
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
75
+ if (!isRecord(value)) {
78
76
  throw new RequestError('Invalid authentication continuation', { status: 400 });
79
77
  }
80
78
  const answer = requiredString(value[key], 128)?.trim();
@@ -87,16 +85,14 @@ function parseRepresentationPreferences(value) {
87
85
  if (value === undefined) {
88
86
  return {};
89
87
  }
90
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
88
+ if (!isRecord(value)) {
91
89
  throw new RequestError('Invalid dashboard request', { status: 400 });
92
90
  }
93
91
  const preferences = value.representationPreferences;
94
92
  if (preferences === undefined) {
95
93
  return {};
96
94
  }
97
- if (typeof preferences !== 'object' ||
98
- preferences === null ||
99
- Array.isArray(preferences) ||
95
+ if (!isRecord(preferences) ||
100
96
  Object.entries(preferences).some(([serial, represented]) => serial.length === 0 || serial.length > 128 || typeof represented !== 'boolean')) {
101
97
  throw new RequestError('Invalid dashboard request', { status: 400 });
102
98
  }
@@ -119,7 +115,7 @@ function isAffectedDevices(value) {
119
115
  value.every((serial) => typeof serial === 'string' && serial.length > 0 && serial.length <= LONGEST_SERIAL));
120
116
  }
121
117
  export function parseDiagnosticsAuthorization(value) {
122
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
118
+ if (!isRecord(value)) {
123
119
  throw new RequestError('Invalid diagnostics request', { status: 400 });
124
120
  }
125
121
  const payload = value;
@@ -139,34 +135,25 @@ export function parseDiagnosticsAuthorization(value) {
139
135
  };
140
136
  }
141
137
  /**
142
- * Validates a browser-submitted request for one device's retained image.
138
+ * Validates a browser-submitted request that names one device serial and nothing else.
143
139
  *
144
- * The serial names which image is asked for and arrives from the browser, so it is bounded and constrained to
145
- * the shape a serial has before it reaches storage. Rejection carries one generic message that never repeats
146
- * what was submitted.
140
+ * The serial arrives from the browser, so it is bounded and constrained to the shape a serial has before it reaches
141
+ * storage or the runtime. Rejection carries one generic `message` that never repeats what was submitted.
147
142
  */
148
- export function parseDeviceImageRequest(value) {
149
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
150
- throw new RequestError('Invalid device image request', { status: 400 });
151
- }
152
- const payload = value;
153
- const serial = requiredString(payload.serial, 128);
154
- if (Object.keys(payload).join(',') !== 'serial' || !serial?.match(/^[A-Za-z0-9]{1,128}$/)) {
155
- throw new RequestError('Invalid device image request', { status: 400 });
143
+ export function parseSerialRequest(value, message, bound) {
144
+ const serial = isRecord(value) ? requiredString(value.serial, bound) : undefined;
145
+ if (!serial?.match(/^[A-Za-z0-9]+$/) || Object.keys(value).join(',') !== 'serial') {
146
+ throw new RequestError(message, { status: 400 });
156
147
  }
157
148
  return serial;
158
149
  }
159
- /** Validates a browser-submitted request for one device's eufy settings, which names a serial and nothing else. */
160
- export function parseDeviceSettingsRequest(value) {
161
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
162
- throw new RequestError('Invalid device settings request', { status: 400 });
150
+ /** A live preview request: one device serial and the settings its HomeKit side is coded with. */
151
+ function parseLivePreviewRequest(value) {
152
+ const query = noticedLivePreviewQuery(value);
153
+ if (!query?.serial.match(/^[A-Za-z0-9]{1,64}$/)) {
154
+ throw new RequestError('Invalid live preview request', { status: 400 });
163
155
  }
164
- const payload = value;
165
- const serial = requiredString(payload.serial, 64);
166
- if (Object.keys(payload).join(',') !== 'serial' || !serial?.match(/^[A-Za-z0-9]{1,64}$/)) {
167
- throw new RequestError('Invalid device settings request', { status: 400 });
168
- }
169
- return serial;
156
+ return query;
170
157
  }
171
158
  /**
172
159
  * Validates a browser-submitted write of one eufy setting.
@@ -186,7 +173,7 @@ export function parseDeviceSettingWriteRequest(value) {
186
173
  return write;
187
174
  }
188
175
  function parseArchiveReview(value) {
189
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
176
+ if (!isRecord(value)) {
190
177
  throw new RequestError('Invalid support archive request', { status: 400 });
191
178
  }
192
179
  const reviewId = requiredString(value.reviewId, 36);
@@ -196,7 +183,7 @@ function parseArchiveReview(value) {
196
183
  return reviewId;
197
184
  }
198
185
  export function parseDiagnosticsUiEvent(value) {
199
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
186
+ if (!isRecord(value)) {
200
187
  throw new RequestError('Invalid diagnostics UI event', { status: 400 });
201
188
  }
202
189
  const payload = value;
@@ -206,7 +193,7 @@ export function parseDiagnosticsUiEvent(value) {
206
193
  return payload.event;
207
194
  }
208
195
  /** Creates the production SDK client without enabling realtime ownership. */
209
- export const createTemporaryAuthenticationClient = (options) => observationOnlyAuthenticationClient(new EufyMega({
196
+ const createTemporaryAuthenticationClient = (options) => observationOnlyAuthenticationClient(new EufyMega({
210
197
  email: options.account,
211
198
  password: options.password,
212
199
  countryCode: options.country,
@@ -218,7 +205,6 @@ export const createTemporaryAuthenticationClient = (options) => observationOnlyA
218
205
  }));
219
206
  /** Homebridge custom-UI child process that exclusively owns interactive authentication. */
220
207
  export class EufyAuthenticationUiServer extends HomebridgePluginUiServer {
221
- clientFactory;
222
208
  authentication;
223
209
  ownership;
224
210
  persistence;
@@ -230,16 +216,15 @@ export class EufyAuthenticationUiServer extends HomebridgePluginUiServer {
230
216
  diagnostics;
231
217
  startPending = false;
232
218
  flowGeneration = 0;
233
- constructor(clientFactory = createTemporaryAuthenticationClient) {
219
+ constructor() {
234
220
  super();
235
- this.clientFactory = clientFactory;
236
221
  if (!this.homebridgeStoragePath) {
237
222
  throw new Error('Homebridge storage path is unavailable');
238
223
  }
239
224
  const root = resolveStorageRoot(this.homebridgeStoragePath);
240
225
  this.ownership = new AccountOwnership(join(root, 'ownership'));
241
226
  this.images = new PersistedLastSuccessfulImages(root);
242
- this.persistence = new AccountSessionPersistence(join(root, 'accounts'), undefined, undefined, () => this.images.discardAll());
227
+ this.persistence = new AccountSessionPersistence(join(root, 'accounts'), undefined, () => this.images.discardAll());
243
228
  this.runtimeTracker = new RuntimeTracker(join(root, 'tracker.json'));
244
229
  this.runtimeChannel = new RuntimeChannelClient(runtimeChannelEndpointForHost(root));
245
230
  this.diagnostics = new GuidedDiagnostics(root);
@@ -249,27 +234,31 @@ export class EufyAuthenticationUiServer extends HomebridgePluginUiServer {
249
234
  this.onRequest('/auth/close', () => this.closeAuthentication());
250
235
  this.onRequest('/dashboard', (payload) => readDashboard(this.runtimeTracker, Date.now, parseRepresentationPreferences(payload), this.runtimeChannel, this.persistence));
251
236
  this.onRequest('/update/restart', () => this.runtimeChannel.requestRestart());
252
- this.onRequest('/device/image', (payload) => readDeviceImage(this.images, this.runtimeChannel, parseDeviceImageRequest(payload)));
237
+ this.onRequest('/device/image', (payload) => readDeviceImage(this.images, this.runtimeChannel, parseSerialRequest(payload, 'Invalid device image request', 128)));
253
238
  this.onRequest('/device/settings', async (payload) => {
254
- const settings = await this.runtimeChannel.readDeviceSettings(parseDeviceSettingsRequest(payload));
239
+ const settings = await this.runtimeChannel.readDeviceSettings(parseSerialRequest(payload, 'Invalid device settings request', 64));
255
240
  return settings ? { available: true, settings } : { available: false };
256
241
  });
257
242
  this.onRequest('/device/settings/write', async (payload) => ({
258
243
  ok: await this.runtimeChannel.writeDeviceSetting(parseDeviceSettingWriteRequest(payload)),
259
244
  }));
260
245
  this.onRequest('/device/live/start', (payload) => {
261
- const serial = parseDeviceSettingsRequest(payload);
246
+ const query = parseLivePreviewRequest(payload);
247
+ const { serial } = query;
262
248
  this.live?.abort();
263
249
  const live = new AbortController();
264
250
  this.live = live;
265
251
  void this.runtimeChannel
266
- .liveDevice(serial, (image) => this.pushEvent('device-live', { serial, image }), live.signal)
267
- .finally(() => {
252
+ .liveDevice(query, (image, coding) => this.pushEvent('device-live', { serial, image, ...coding }), live.signal)
253
+ .then((unplayable) => {
268
254
  if (!live.signal.aborted)
269
- this.pushEvent('device-live-end', { serial });
255
+ this.pushEvent('device-live-end', { serial, unplayable });
270
256
  });
271
257
  return { started: true };
272
258
  });
259
+ this.onRequest('/device/live/adapt', async (payload) => ({
260
+ ok: await this.runtimeChannel.adaptLive(parseLivePreviewRequest(payload)),
261
+ }));
273
262
  this.onRequest('/device/live/stop', () => {
274
263
  this.live?.abort();
275
264
  this.live = undefined;
@@ -293,7 +282,7 @@ export class EufyAuthenticationUiServer extends HomebridgePluginUiServer {
293
282
  const exported = await this.diagnostics.exportSupportArchive(parseArchiveReview(payload));
294
283
  return { ...exported, archive: exported.archive.toString('base64') };
295
284
  });
296
- this.installCleanupHandlers();
285
+ bindTemporaryAuthenticationProcessCleanup(process, () => this.closeAuthentication());
297
286
  this.ready();
298
287
  }
299
288
  async startAuthentication(payload) {
@@ -307,7 +296,7 @@ export class EufyAuthenticationUiServer extends HomebridgePluginUiServer {
307
296
  if (generation !== this.flowGeneration) {
308
297
  return { status: 'closed' };
309
298
  }
310
- this.authentication = new TemporaryAuthentication(this.ownership, this.persistence, this.clientFactory, {
299
+ this.authentication = new TemporaryAuthentication(this.ownership, this.persistence, createTemporaryAuthenticationClient, {
311
300
  flowTimeoutMs: AUTHENTICATION_FLOW_TIMEOUT_MS,
312
301
  cleanupTimeoutMs: AUTHENTICATION_CLEANUP_TIMEOUT_MS,
313
302
  }, this.runtimeTracker, this.runtimeChannel);
@@ -331,8 +320,5 @@ export class EufyAuthenticationUiServer extends HomebridgePluginUiServer {
331
320
  this.authentication = undefined;
332
321
  return authentication?.close() ?? { status: 'closed' };
333
322
  }
334
- installCleanupHandlers() {
335
- bindTemporaryAuthenticationProcessCleanup(process, () => this.closeAuthentication());
336
- }
337
323
  }
338
324
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"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"}