@mega-yfue/eufy-sdk 0.5.0-beta.44 → 0.5.0-beta.45

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
@@ -620,7 +620,8 @@ function scanEntropy(tail, subsampling, extraTables) {
620
620
  // dist/transport/http/decodeImageV2.js
621
621
  import { decode as jpegDecode } from "jpeg-js";
622
622
  var V2_PREFIX = "v2_eufysecurity:";
623
- var DC_CHROMA = Buffer.from([255, 196, 0, 31, 1]);
623
+ var DRI_SEGMENT = Buffer.from([255, 221, 0, 4]);
624
+ var SOS_HEADER = Buffer.from([255, 218, 0, 12, 3]);
624
625
  var ZIGZAG = [
625
626
  0,
626
627
  1,
@@ -821,6 +822,9 @@ var QUANT_CHROMA = [
821
822
  ];
822
823
  var DHT_DC_LUMA = Buffer.from("ffc4001f0000010501010101010100000000000000000102030405060708090a0b", "hex");
823
824
  var DHT_AC_LUMA = Buffer.from("ffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9fa", "hex");
825
+ var DHT_DC_CHROMA = Buffer.from("ffc4001f0100030101010101010101010000000000000102030405060708090a0b", "hex");
826
+ var DC_CHROMA = DHT_DC_CHROMA.subarray(0, 5);
827
+ var DHT_AC_CHROMA = Buffer.from("ffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9fa", "hex");
824
828
  var SOI = Buffer.from([255, 216]);
825
829
  var APP0 = Buffer.from("ffe000104a46494600010100000100010000", "hex");
826
830
  var MCU = { 0: [8, 8], 1: [16, 8], 2: [16, 16] };
@@ -973,16 +977,31 @@ function findGeometry(tail) {
973
977
  }
974
978
  return best;
975
979
  }
980
+ function findScanCut(data) {
981
+ const sos = data.lastIndexOf(SOS_HEADER);
982
+ if (sos < 0)
983
+ return -1;
984
+ const dri = sos - DRI_SEGMENT.length - 2;
985
+ return dri >= 0 && data.subarray(dri, dri + DRI_SEGMENT.length).equals(DRI_SEGMENT) ? dri : -1;
986
+ }
987
+ function plaintextTail(data) {
988
+ const cut = data.indexOf(DC_CHROMA);
989
+ if (cut >= 0)
990
+ return data.subarray(cut);
991
+ const scan = findScanCut(data);
992
+ if (scan < 0)
993
+ return null;
994
+ return Buffer.concat([DHT_DC_CHROMA, DHT_AC_CHROMA, data.subarray(scan)]);
995
+ }
976
996
  function isV2Image(data) {
977
997
  return data.length >= V2_PREFIX.length && data.subarray(0, V2_PREFIX.length).toString("latin1") === V2_PREFIX;
978
998
  }
979
999
  function decodeImageV2(data) {
980
1000
  if (!isV2Image(data))
981
1001
  return null;
982
- const cut = data.indexOf(DC_CHROMA);
983
- if (cut < 0)
1002
+ const tail = plaintextTail(data);
1003
+ if (!tail)
984
1004
  return null;
985
- const tail = data.subarray(cut);
986
1005
  const geometry = findGeometry(tail);
987
1006
  if (!geometry)
988
1007
  return null;