@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 +23 -4
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
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
|
|
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
|
|
983
|
-
if (
|
|
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;
|