@mega-yfue/eufy-sdk 0.5.0-beta.90 → 0.5.0-beta.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -6294,7 +6294,6 @@ var LIGHT_SWITCH_INT_STRING_TYPES = /* @__PURE__ */ new Set([
6294
6294
  DeviceType.INDOOR_OUTDOOR_CAMERA_2K,
6295
6295
  DeviceType.INDOOR_OUTDOOR_CAMERA_1080P,
6296
6296
  DeviceType.OUTDOOR_PT_CAMERA,
6297
- DeviceType.SOLO_CAMERA_E30,
6298
6297
  DeviceType.CAMERA2C,
6299
6298
  DeviceType.CAMERA2,
6300
6299
  DeviceType.CAMERA2_PRO,
@@ -6415,12 +6414,12 @@ var LIGHT = {
6415
6414
  description: "Floodlight / spotlight manual switch and brightness.",
6416
6415
  members: LIGHT_MEMBERS,
6417
6416
  properties: propertiesOf(LIGHT_MEMBERS),
6418
- // `light` = a real SPOTLIGHT, detected only from genuine spotlight params — NOT 1045 (that's the
6419
- // status LED, on every camera; it belongs to `camera`). Params: floodlight switch 1400, spotlight
6420
- // brightness/enable 1401/1403, indoor-spot enable/bright 6080/6082. Plus explicit light model names.
6417
+ // Three T8171 units on firmware 1.2.1.6 report 1400/1401/1403 without a spotlight, so those
6418
+ // param ids are not sufficient evidence for that model. The camera status LED (1045) is not light.
6419
+ // Other models keep the existing param and name evidence.
6421
6420
  detection: {
6422
- evidenceParams: [1400, 1401, 1403, 6080, 6082, 1413],
6423
- modelHints: [/floodlight|wall.?light|spot.?light|search.?light/i]
6421
+ modelHints: [/floodlight|wall.?light|spot.?light|search.?light/i],
6422
+ detect: (record) => record.model !== "T8171" && [1400, 1401, 1403, 6080, 6082, 1413].some((param) => Object.hasOwn(record.params ?? {}, param))
6424
6423
  },
6425
6424
  /**
6426
6425
  * Only what the member table cannot express: `on`/`off` as no-argument verbs over the same wire as the
@@ -11691,9 +11690,8 @@ var MODEL_REGISTRY = {
11691
11690
  // whole fleet (verified live): SoloCam (T8170/T8171) via their reported PTZ preset params
11692
11691
  // (6090/6091/6092, 6210); Indoor-PT (T8410) via its vendor deviceType 31 = INDOOR_PT_CAMERA.
11693
11692
  // The rotate command (6030) is write-only and leaves no param trace, so it is never the signal.
11694
- // `light` (spotlight) is NOT hardcoded — it's detected from real spotlight params (light.ts),
11695
- // so devices with a spotlight (T8170: 1400/1401/1403; T8442: 6080/6082) get it
11696
- // and LED-only cams (T8171/T8400/T8410) correctly do NOT. The status LED (1045) is `camera`.
11693
+ // T8171 reports 1400/1401/1403 on firmware 1.2.1.6 but has no physical spotlight.
11694
+ // Those params are not light evidence for this exact model; light.ts excludes it.
11697
11695
  // `arming` here is the STANDALONE case only — `ownedByStation` withholds it again once the record
11698
11696
  // shows a parent, so an attached cam never advertises the hub's guard mode.
11699
11697
  T8170: { codec: "camera", caps: ["battery", "arming"], name: "SoloCam" },
@@ -16534,8 +16532,8 @@ var P2PSession = class _P2PSession extends EventEmitter2 {
16534
16532
  * `resolveCipherKey`), run the ECIES unwrap with the ECC key, and `setLevel2Key()`. A cipher with no
16535
16533
  * ECC key uses its RSA key instead and holds the RSA-decrypted 16-byte key as the AES-128-ECB level-2
16536
16534
  * key. One-shot; emits `level2Ready` only when the AES-256-GCM key is negotiated, traces
16537
- * `level2-set-payload-only` instead for the AES-128-ECB key, and emits `error` on failure
16538
- * (non-fatal — level-1 traffic keeps working regardless).
16535
+ * `level2-set-payload-only` instead for the AES-128-ECB key, and emits `error` when the ECC unwrap
16536
+ * fails; an RSA unwrap failure is only traced (non-fatal either way — level-1 traffic keeps working).
16539
16537
  *
16540
16538
  * Every outcome settles the wait in {@link awaitLevel2Key}, because being one-shot is what makes a
16541
16539
  * failure final for this connection generation: nothing will retry it there, so a later command must be
@@ -16565,7 +16563,8 @@ var P2PSession = class _P2PSession extends EventEmitter2 {
16565
16563
  if (!key) {
16566
16564
  this.trace({ phase: "level2-unavailable", reason: "derivation-failed", cipherId });
16567
16565
  this.settleLevel2();
16568
- this.emit("error", new Error(`level-2 key derivation failed (cipher_id ${cipherId})`));
16566
+ if (eccPrivHex)
16567
+ this.emit("error", new Error(`level-2 key derivation failed (cipher_id ${cipherId})`));
16569
16568
  return;
16570
16569
  }
16571
16570
  if (eccPrivHex) {