@ledgerhq/device-core 0.3.1-hotfix.0 → 0.3.1-nightly.0

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 (49) hide show
  1. package/CHANGELOG.md +2 -6
  2. package/lib/commands/entities/AppStorageInfo.d.ts +1 -0
  3. package/lib/commands/entities/AppStorageInfo.d.ts.map +1 -1
  4. package/lib/commands/entities/AppStorageInfo.js +16 -0
  5. package/lib/commands/entities/AppStorageInfo.js.map +1 -1
  6. package/lib/commands/entities/AppStorageInfo.test.d.ts +2 -0
  7. package/lib/commands/entities/AppStorageInfo.test.d.ts.map +1 -0
  8. package/lib/commands/entities/AppStorageInfo.test.js +48 -0
  9. package/lib/commands/entities/AppStorageInfo.test.js.map +1 -0
  10. package/lib/commands/use-cases/app-backup/getAppStorageInfo.d.ts.map +1 -1
  11. package/lib/commands/use-cases/app-backup/getAppStorageInfo.js +9 -4
  12. package/lib/commands/use-cases/app-backup/getAppStorageInfo.js.map +1 -1
  13. package/lib/commands/use-cases/app-backup/getAppStorageInfo.test.js +1 -1
  14. package/lib/firmwareUpdate/shouldForceFirmwareUpdate.js +1 -1
  15. package/lib/firmwareUpdate/shouldForceFirmwareUpdate.js.map +1 -1
  16. package/lib/firmwareUpdate/shouldForceFirmwareUpdate.test.js +0 -22
  17. package/lib/firmwareUpdate/shouldForceFirmwareUpdate.test.js.map +1 -1
  18. package/lib/index.d.ts +1 -1
  19. package/lib/index.d.ts.map +1 -1
  20. package/lib/index.js +3 -1
  21. package/lib/index.js.map +1 -1
  22. package/lib-es/commands/entities/AppStorageInfo.d.ts +1 -0
  23. package/lib-es/commands/entities/AppStorageInfo.d.ts.map +1 -1
  24. package/lib-es/commands/entities/AppStorageInfo.js +14 -1
  25. package/lib-es/commands/entities/AppStorageInfo.js.map +1 -1
  26. package/lib-es/commands/entities/AppStorageInfo.test.d.ts +2 -0
  27. package/lib-es/commands/entities/AppStorageInfo.test.d.ts.map +1 -0
  28. package/lib-es/commands/entities/AppStorageInfo.test.js +46 -0
  29. package/lib-es/commands/entities/AppStorageInfo.test.js.map +1 -0
  30. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.d.ts.map +1 -1
  31. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.js +9 -4
  32. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.js.map +1 -1
  33. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.js +1 -1
  34. package/lib-es/firmwareUpdate/shouldForceFirmwareUpdate.js +1 -1
  35. package/lib-es/firmwareUpdate/shouldForceFirmwareUpdate.js.map +1 -1
  36. package/lib-es/firmwareUpdate/shouldForceFirmwareUpdate.test.js +0 -22
  37. package/lib-es/firmwareUpdate/shouldForceFirmwareUpdate.test.js.map +1 -1
  38. package/lib-es/index.d.ts +1 -1
  39. package/lib-es/index.d.ts.map +1 -1
  40. package/lib-es/index.js +1 -0
  41. package/lib-es/index.js.map +1 -1
  42. package/package.json +3 -3
  43. package/src/commands/entities/AppStorageInfo.test.ts +57 -0
  44. package/src/commands/entities/AppStorageInfo.ts +17 -0
  45. package/src/commands/use-cases/app-backup/getAppStorageInfo.test.ts +1 -1
  46. package/src/commands/use-cases/app-backup/getAppStorageInfo.ts +9 -4
  47. package/src/firmwareUpdate/shouldForceFirmwareUpdate.test.ts +0 -46
  48. package/src/firmwareUpdate/shouldForceFirmwareUpdate.ts +1 -1
  49. package/src/index.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,14 +1,10 @@
1
1
  # @ledgerhq/device-core
2
2
 
3
- ## 0.3.1-hotfix.0
3
+ ## 0.3.1-nightly.0
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - [#7291](https://github.com/LedgerHQ/ledger-live/pull/7291) [`6b2fc93`](https://github.com/LedgerHQ/ledger-live/commit/6b2fc93beb6624fb2d991a6bb69cea3e9a8ef453) Thanks [@jdabbech-ledger](https://github.com/jdabbech-ledger)! - shouldForceFirmwareUpdate: add <1.1.1 condition for europa
8
-
9
- - Updated dependencies [[`5d508e5`](https://github.com/LedgerHQ/ledger-live/commit/5d508e5cfd296e458746adf176dd292aa884f7ea)]:
10
- - @ledgerhq/devices@8.4.2-hotfix.0
11
- - @ledgerhq/hw-transport@6.31.2-hotfix.0
7
+ - [#7328](https://github.com/LedgerHQ/ledger-live/pull/7328) [`a0a36e5`](https://github.com/LedgerHQ/ledger-live/commit/a0a36e5fe86865a5643b38ed8d56e93cbda07e15) Thanks [@jiyuzhuang](https://github.com/jiyuzhuang)! - Add and export type guard for AppStorageInfo
12
8
 
13
9
  ## 0.3.0
14
10
 
@@ -5,4 +5,5 @@ export type AppStorageInfo = {
5
5
  hasData: boolean;
6
6
  hash: string;
7
7
  };
8
+ export declare function isAppStorageInfo(data: AppStorageInfo | unknown): data is AppStorageInfo;
8
9
  //# sourceMappingURL=AppStorageInfo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppStorageInfo.d.ts","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
1
+ {"version":3,"file":"AppStorageInfo.d.ts","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,IAAI,IAAI,cAAc,CAevF"}
@@ -1,3 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAppStorageInfo = void 0;
4
+ function isAppStorageInfo(data) {
5
+ return (typeof data === "object" &&
6
+ data !== null &&
7
+ "size" in data &&
8
+ typeof data.size === "number" &&
9
+ "dataVersion" in data &&
10
+ typeof data.dataVersion === "string" &&
11
+ "hasSettings" in data &&
12
+ typeof data.hasSettings === "boolean" &&
13
+ "hasData" in data &&
14
+ typeof data.hasData === "boolean" &&
15
+ "hash" in data &&
16
+ typeof data.hash === "string");
17
+ }
18
+ exports.isAppStorageInfo = isAppStorageInfo;
3
19
  //# sourceMappingURL=AppStorageInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppStorageInfo.js","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"AppStorageInfo.js","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":";;;AAQA,SAAgB,gBAAgB,CAAC,IAA8B;IAC7D,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,aAAa,IAAI,IAAI;QACrB,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QACpC,aAAa,IAAI,IAAI;QACrB,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS;QACrC,SAAS,IAAI,IAAI;QACjB,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;QACjC,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAC9B,CAAC;AACJ,CAAC;AAfD,4CAeC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AppStorageInfo.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppStorageInfo.test.d.ts","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const AppStorageInfo_1 = require("./AppStorageInfo");
4
+ describe("isAppStorageInfo", () => {
5
+ it("should return true for valid AppStorageInfo object", () => {
6
+ const data = {
7
+ size: 1024,
8
+ dataVersion: "1.0.0",
9
+ hasSettings: true,
10
+ hasData: true,
11
+ hash: "abcd1234",
12
+ };
13
+ expect((0, AppStorageInfo_1.isAppStorageInfo)(data)).toBe(true);
14
+ });
15
+ it("should return false for non-object input", () => {
16
+ const data = "invalid";
17
+ expect((0, AppStorageInfo_1.isAppStorageInfo)(data)).toBe(false);
18
+ });
19
+ it("should return false for null input", () => {
20
+ const data = null;
21
+ expect((0, AppStorageInfo_1.isAppStorageInfo)(data)).toBe(false);
22
+ });
23
+ it("should return false for undefined input", () => {
24
+ const data = undefined;
25
+ expect((0, AppStorageInfo_1.isAppStorageInfo)(data)).toBe(false);
26
+ });
27
+ it("should return false if missing property", () => {
28
+ const data = {
29
+ // Missing size property
30
+ dataVersion: "1.0.0",
31
+ hasSettings: true,
32
+ hasData: true,
33
+ hash: "abcd1234",
34
+ };
35
+ expect((0, AppStorageInfo_1.isAppStorageInfo)(data)).toBe(false);
36
+ });
37
+ it("should return false if property type not correct", () => {
38
+ const data = {
39
+ size: 1024,
40
+ dataVersion: "1.0.0",
41
+ hasSettings: "Yes",
42
+ hasData: true,
43
+ hash: "abcd1234",
44
+ };
45
+ expect((0, AppStorageInfo_1.isAppStorageInfo)(data)).toBe(false);
46
+ });
47
+ });
48
+ //# sourceMappingURL=AppStorageInfo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppStorageInfo.test.js","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.test.ts"],"names":[],"mappings":";;AAAA,qDAAoE;AAEpE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,IAAI,GAAmB;YAC3B,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAY,SAAS,CAAC;QAEhC,MAAM,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,IAAI,GAAY,IAAI,CAAC;QAE3B,MAAM,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAY,SAAS,CAAC;QAEhC,MAAM,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAY;YACpB,wBAAwB;YACxB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAY;YACpB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getAppStorageInfo.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":";AAAA,OAAO,SAAgD,MAAM,wBAAwB,CAAC;AAEtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AA2BpE;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAqC1D"}
1
+ {"version":3,"file":"getAppStorageInfo.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":";AAAA,OAAO,SAAgD,MAAM,wBAAwB,CAAC;AAEtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AA2BpE;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA0C1D"}
@@ -84,10 +84,15 @@ function parseResponse(data) {
84
84
  offset += 4;
85
85
  const dataVersion = data.subarray(offset, offset + 4).toString(); // Len = 4
86
86
  offset += 4;
87
- const hasSettings = data.readUIntBE(offset, 1) === 1; // Len = 1
88
- offset += 1;
89
- const hasData = data.readUIntBE(offset, 1) === 1; // Len = 1
90
- offset += 1;
87
+ const properties = data.readUInt16BE(offset);
88
+ offset += 2;
89
+ /**
90
+ * The properties byte is a bitfield with the following structure:
91
+ * - Bit 0: hasSettings
92
+ * - Bit 1: hasData
93
+ */
94
+ const hasSettings = (properties & 1) === 1;
95
+ const hasData = (properties & 2) === 2;
91
96
  const hash = data.subarray(offset, offset + 32).toString(); // Len = 32
92
97
  return { size, dataVersion, hasSettings, hasData, hash };
93
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getAppStorageInfo.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getAppStorageInfo.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ jest.mock("@ledgerhq/hw-transport");
16
16
  describe("getAppStorageInfo", () => {
17
17
  let transport;
18
18
  const response = Buffer.from([
19
- 0x00, 0x00, 0x04, 0xd2, 0x31, 0x2e, 0x30, 0x31, 0x01, 0x01, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
19
+ 0x00, 0x00, 0x04, 0xd2, 0x31, 0x2e, 0x30, 0x31, 0x00, 0x03, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
20
20
  0x73, 0x68, 0x31, 0x32, 0x33, 0x34, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
21
21
  0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x90, 0x00,
22
22
  ]);
@@ -11,7 +11,7 @@ const forceUpdateConditions = {
11
11
  nanoS: noVersionCondition,
12
12
  nanoSP: noVersionCondition,
13
13
  blue: noVersionCondition,
14
- europa: "<1.1.1",
14
+ europa: noVersionCondition,
15
15
  stax: "<=1.3.0",
16
16
  };
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shouldForceFirmwareUpdate.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAG5B,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,kCAAkC;AACvE,MAAM,qBAAqB,GAAkC;IAC3D,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,aAAa,GAId;;IACC,OAAO,gBAAM,CAAC,SAAS,CACrB,MAAA,gBAAM,CAAC,MAAM,CAAC,cAAc,CAAC,mCAAI,EAAE,EACnC,qBAAqB,CAAC,aAAa,CAAC,CACrC,CAAC;AACJ,CAAC;AAXD,8DAWC"}
1
+ {"version":3,"file":"shouldForceFirmwareUpdate.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAG5B,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,kCAAkC;AACvE,MAAM,qBAAqB,GAAkC;IAC3D,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,aAAa,GAId;;IACC,OAAO,gBAAM,CAAC,SAAS,CACrB,MAAA,gBAAM,CAAC,MAAM,CAAC,cAAc,CAAC,mCAAI,EAAE,EACnC,qBAAqB,CAAC,aAAa,CAAC,CACrC,CAAC;AACJ,CAAC;AAXD,8DAWC"}
@@ -20,28 +20,6 @@ describe("shouldForceFirmwareUpdate", () => {
20
20
  deviceModelId: devices_1.DeviceModelId.stax,
21
21
  })).toBe(false);
22
22
  });
23
- it("should force firmware update for europa <1.1.1 and not other versions", () => {
24
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({ currentVersion: "1.0.0", deviceModelId: devices_1.DeviceModelId.europa })).toBe(true);
25
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({
26
- currentVersion: "1.0.0-whatever",
27
- deviceModelId: devices_1.DeviceModelId.europa,
28
- })).toBe(true);
29
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({ currentVersion: "1.1.0", deviceModelId: devices_1.DeviceModelId.europa })).toBe(true);
30
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({
31
- currentVersion: "1.1.0-whatever",
32
- deviceModelId: devices_1.DeviceModelId.europa,
33
- })).toBe(true);
34
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({ currentVersion: "1.1.1", deviceModelId: devices_1.DeviceModelId.europa })).toBe(false);
35
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({
36
- currentVersion: "1.1.1-whatever",
37
- deviceModelId: devices_1.DeviceModelId.europa,
38
- })).toBe(false);
39
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({ currentVersion: "1.2.0", deviceModelId: devices_1.DeviceModelId.europa })).toBe(false);
40
- expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({
41
- currentVersion: "1.2.0-whatever",
42
- deviceModelId: devices_1.DeviceModelId.europa,
43
- })).toBe(false);
44
- });
45
23
  it("should not force firmware update for other models", () => {
46
24
  expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({ currentVersion: "1.2.0", deviceModelId: devices_1.DeviceModelId.nanoX })).toBe(false);
47
25
  expect((0, shouldForceFirmwareUpdate_1.shouldForceFirmwareUpdate)({
@@ -1 +1 @@
1
- {"version":3,"file":"shouldForceFirmwareUpdate.test.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shouldForceFirmwareUpdate.test.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.test.ts"],"names":[],"mappings":";;AAAA,+CAAkD;AAClD,2EAAwE;AAExE,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,CACJ,IAAA,qDAAyB,EAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAa,CAAC,IAAI,EAAE,CAAC,CAC1F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,IAAA,qDAAyB,EAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,uBAAa,CAAC,IAAI;SAClC,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,IAAA,qDAAyB,EAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAa,CAAC,IAAI,EAAE,CAAC,CAC1F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,IAAA,qDAAyB,EAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,uBAAa,CAAC,IAAI;SAClC,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,IAAA,qDAAyB,EAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAa,CAAC,IAAI,EAAE,CAAC,CAC1F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,IAAA,qDAAyB,EAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,uBAAa,CAAC,IAAI;SAClC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CACJ,IAAA,qDAAyB,EAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAa,CAAC,KAAK,EAAE,CAAC,CAC3F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,IAAA,qDAAyB,EAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,uBAAa,CAAC,KAAK;SACnC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,IAAA,qDAAyB,EAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAa,CAAC,KAAK,EAAE,CAAC,CAC3F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,IAAA,qDAAyB,EAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,uBAAa,CAAC,KAAK;SACnC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,IAAA,qDAAyB,EAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAa,CAAC,KAAK,EAAE,CAAC,CAC3F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,IAAA,qDAAyB,EAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,uBAAa,CAAC,KAAK;SACnC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/lib/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export { getDeviceName } from "./commands/use-cases/getDeviceName";
16
16
  export { isHardwareVersionSupported } from "./commands/use-cases/isHardwareVersionSupported";
17
17
  export { isBootloaderVersionSupported } from "./commands/use-cases/isBootloaderVersionSupported";
18
18
  export { getVersion } from "./commands/use-cases/getVersion";
19
- export type { AppStorageInfo } from "./commands/entities/AppStorageInfo";
19
+ export { type AppStorageInfo, isAppStorageInfo } from "./commands/entities/AppStorageInfo";
20
20
  export { backupAppStorage } from "./commands/use-cases/app-backup/backupAppStorage";
21
21
  export { getAppStorageInfo } from "./commands/use-cases/app-backup/getAppStorageInfo";
22
22
  export { restoreAppStorage } from "./commands/use-cases/app-backup/restoreAppStorage";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,WAAW,EACX,2BAA2B,GAC5B,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAE9F,OAAO,EACL,KAAK,yBAAyB,EAC9B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,WAAW,EACX,2BAA2B,GAC5B,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,KAAK,cAAc,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAE9F,OAAO,EACL,KAAK,yBAAyB,EAC9B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
package/lib/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.shouldForceFirmwareUpdate = exports.supportedDeviceModelIds = exports.isSyncOnboardingSupported = exports.isEditDeviceNameSupported = exports.isCustomLockScreenSupported = exports.restoreAppStorageInit = exports.restoreAppStorageCommit = exports.restoreAppStorage = exports.getAppStorageInfo = exports.backupAppStorage = exports.getVersion = exports.isBootloaderVersionSupported = exports.isHardwareVersionSupported = exports.getDeviceName = exports.parseGetVersionResponse = exports.GET_VERSION_APDU = exports.getAppsCatalogForDevice = exports.aDeviceInfoBuilder = exports.fetchMcus = exports.getProviderIdUseCase = exports.PROVIDERS = exports.isDeviceLocalizationSupported = exports.getLatestFirmwareForDevice = exports.StubManagerApiRepository = exports.HttpManagerApiRepository = void 0;
17
+ exports.shouldForceFirmwareUpdate = exports.supportedDeviceModelIds = exports.isSyncOnboardingSupported = exports.isEditDeviceNameSupported = exports.isCustomLockScreenSupported = exports.restoreAppStorageInit = exports.restoreAppStorageCommit = exports.restoreAppStorage = exports.getAppStorageInfo = exports.backupAppStorage = exports.isAppStorageInfo = exports.getVersion = exports.isBootloaderVersionSupported = exports.isHardwareVersionSupported = exports.getDeviceName = exports.parseGetVersionResponse = exports.GET_VERSION_APDU = exports.getAppsCatalogForDevice = exports.aDeviceInfoBuilder = exports.fetchMcus = exports.getProviderIdUseCase = exports.PROVIDERS = exports.isDeviceLocalizationSupported = exports.getLatestFirmwareForDevice = exports.StubManagerApiRepository = exports.HttpManagerApiRepository = void 0;
18
18
  var HttpManagerApiRepository_1 = require("./managerApi/repositories/HttpManagerApiRepository");
19
19
  Object.defineProperty(exports, "HttpManagerApiRepository", { enumerable: true, get: function () { return HttpManagerApiRepository_1.HttpManagerApiRepository; } });
20
20
  var StubManagerApiRepository_1 = require("./managerApi/repositories/StubManagerApiRepository");
@@ -44,6 +44,8 @@ var isBootloaderVersionSupported_1 = require("./commands/use-cases/isBootloaderV
44
44
  Object.defineProperty(exports, "isBootloaderVersionSupported", { enumerable: true, get: function () { return isBootloaderVersionSupported_1.isBootloaderVersionSupported; } });
45
45
  var getVersion_2 = require("./commands/use-cases/getVersion");
46
46
  Object.defineProperty(exports, "getVersion", { enumerable: true, get: function () { return getVersion_2.getVersion; } });
47
+ var AppStorageInfo_1 = require("./commands/entities/AppStorageInfo");
48
+ Object.defineProperty(exports, "isAppStorageInfo", { enumerable: true, get: function () { return AppStorageInfo_1.isAppStorageInfo; } });
47
49
  var backupAppStorage_1 = require("./commands/use-cases/app-backup/backupAppStorage");
48
50
  Object.defineProperty(exports, "backupAppStorage", { enumerable: true, get: function () { return backupAppStorage_1.backupAppStorage; } });
49
51
  var getAppStorageInfo_1 = require("./commands/use-cases/app-backup/getAppStorageInfo");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAQA,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,gGAA+F;AAAtF,wIAAA,0BAA0B,OAAA;AACnC,oGAAmG;AAA1F,8IAAA,6BAA6B,OAAA;AACtC,oFAA8F;AAArF,iHAAA,SAAS,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AACxC,8DAA6D;AAApD,sGAAA,SAAS,OAAA;AAClB,uEAA6E;AAApE,iHAAA,kBAAkB,OAAA;AAC3B,0FAAyF;AAAhF,kIAAA,uBAAuB,OAAA;AAGhC,8DAAmE;AAA1D,8GAAA,gBAAgB,OAAA;AACzB,wFAAuF;AAA9E,kIAAA,uBAAuB,OAAA;AAChC,oEAAmE;AAA1D,8GAAA,aAAa,OAAA;AACtB,8FAA6F;AAApF,wIAAA,0BAA0B,OAAA;AACnC,kGAAiG;AAAxF,4IAAA,4BAA4B,OAAA;AACrC,8DAA6D;AAApD,wGAAA,UAAU,OAAA;AAEnB,qFAAoF;AAA3E,oHAAA,gBAAgB,OAAA;AACzB,uFAAsF;AAA7E,sHAAA,iBAAiB,OAAA;AAC1B,uFAAsF;AAA7E,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,kIAAA,uBAAuB,OAAA;AAChC,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,oBAAoB;AACpB,0FAGoD;AADlD,0IAAA,2BAA2B,OAAA;AAE7B,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,0FAAqF;AAA5E,sIAAA,uBAAuB,OAAA;AAChC,wBAAwB;AACxB,iEAA+C;AAC/C,sBAAsB;AACtB,wFAAuF;AAA9E,sIAAA,yBAAyB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAQA,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,gGAA+F;AAAtF,wIAAA,0BAA0B,OAAA;AACnC,oGAAmG;AAA1F,8IAAA,6BAA6B,OAAA;AACtC,oFAA8F;AAArF,iHAAA,SAAS,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AACxC,8DAA6D;AAApD,sGAAA,SAAS,OAAA;AAClB,uEAA6E;AAApE,iHAAA,kBAAkB,OAAA;AAC3B,0FAAyF;AAAhF,kIAAA,uBAAuB,OAAA;AAGhC,8DAAmE;AAA1D,8GAAA,gBAAgB,OAAA;AACzB,wFAAuF;AAA9E,kIAAA,uBAAuB,OAAA;AAChC,oEAAmE;AAA1D,8GAAA,aAAa,OAAA;AACtB,8FAA6F;AAApF,wIAAA,0BAA0B,OAAA;AACnC,kGAAiG;AAAxF,4IAAA,4BAA4B,OAAA;AACrC,8DAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,qEAA2F;AAA7D,kHAAA,gBAAgB,OAAA;AAC9C,qFAAoF;AAA3E,oHAAA,gBAAgB,OAAA;AACzB,uFAAsF;AAA7E,sHAAA,iBAAiB,OAAA;AAC1B,uFAAsF;AAA7E,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,kIAAA,uBAAuB,OAAA;AAChC,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,oBAAoB;AACpB,0FAGoD;AADlD,0IAAA,2BAA2B,OAAA;AAE7B,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,0FAAqF;AAA5E,sIAAA,uBAAuB,OAAA;AAChC,wBAAwB;AACxB,iEAA+C;AAC/C,sBAAsB;AACtB,wFAAuF;AAA9E,sIAAA,yBAAyB,OAAA"}
@@ -5,4 +5,5 @@ export type AppStorageInfo = {
5
5
  hasData: boolean;
6
6
  hash: string;
7
7
  };
8
+ export declare function isAppStorageInfo(data: AppStorageInfo | unknown): data is AppStorageInfo;
8
9
  //# sourceMappingURL=AppStorageInfo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppStorageInfo.d.ts","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
1
+ {"version":3,"file":"AppStorageInfo.d.ts","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,IAAI,IAAI,cAAc,CAevF"}
@@ -1,2 +1,15 @@
1
- export {};
1
+ export function isAppStorageInfo(data) {
2
+ return (typeof data === "object" &&
3
+ data !== null &&
4
+ "size" in data &&
5
+ typeof data.size === "number" &&
6
+ "dataVersion" in data &&
7
+ typeof data.dataVersion === "string" &&
8
+ "hasSettings" in data &&
9
+ typeof data.hasSettings === "boolean" &&
10
+ "hasData" in data &&
11
+ typeof data.hasData === "boolean" &&
12
+ "hash" in data &&
13
+ typeof data.hash === "string");
14
+ }
2
15
  //# sourceMappingURL=AppStorageInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppStorageInfo.js","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"AppStorageInfo.js","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,gBAAgB,CAAC,IAA8B;IAC7D,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,aAAa,IAAI,IAAI;QACrB,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QACpC,aAAa,IAAI,IAAI;QACrB,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS;QACrC,SAAS,IAAI,IAAI;QACjB,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;QACjC,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAC9B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AppStorageInfo.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppStorageInfo.test.d.ts","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { isAppStorageInfo } from "./AppStorageInfo";
2
+ describe("isAppStorageInfo", () => {
3
+ it("should return true for valid AppStorageInfo object", () => {
4
+ const data = {
5
+ size: 1024,
6
+ dataVersion: "1.0.0",
7
+ hasSettings: true,
8
+ hasData: true,
9
+ hash: "abcd1234",
10
+ };
11
+ expect(isAppStorageInfo(data)).toBe(true);
12
+ });
13
+ it("should return false for non-object input", () => {
14
+ const data = "invalid";
15
+ expect(isAppStorageInfo(data)).toBe(false);
16
+ });
17
+ it("should return false for null input", () => {
18
+ const data = null;
19
+ expect(isAppStorageInfo(data)).toBe(false);
20
+ });
21
+ it("should return false for undefined input", () => {
22
+ const data = undefined;
23
+ expect(isAppStorageInfo(data)).toBe(false);
24
+ });
25
+ it("should return false if missing property", () => {
26
+ const data = {
27
+ // Missing size property
28
+ dataVersion: "1.0.0",
29
+ hasSettings: true,
30
+ hasData: true,
31
+ hash: "abcd1234",
32
+ };
33
+ expect(isAppStorageInfo(data)).toBe(false);
34
+ });
35
+ it("should return false if property type not correct", () => {
36
+ const data = {
37
+ size: 1024,
38
+ dataVersion: "1.0.0",
39
+ hasSettings: "Yes",
40
+ hasData: true,
41
+ hash: "abcd1234",
42
+ };
43
+ expect(isAppStorageInfo(data)).toBe(false);
44
+ });
45
+ });
46
+ //# sourceMappingURL=AppStorageInfo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppStorageInfo.test.js","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AAEpE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,IAAI,GAAmB;YAC3B,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAY,SAAS,CAAC;QAEhC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,IAAI,GAAY,IAAI,CAAC;QAE3B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAY,SAAS,CAAC;QAEhC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAY;YACpB,wBAAwB;YACxB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAY;YACpB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getAppStorageInfo.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":";AAAA,OAAO,SAAgD,MAAM,wBAAwB,CAAC;AAEtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AA2BpE;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAqC1D"}
1
+ {"version":3,"file":"getAppStorageInfo.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":";AAAA,OAAO,SAAgD,MAAM,wBAAwB,CAAC;AAEtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AA2BpE;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA0C1D"}
@@ -80,10 +80,15 @@ export function parseResponse(data) {
80
80
  offset += 4;
81
81
  const dataVersion = data.subarray(offset, offset + 4).toString(); // Len = 4
82
82
  offset += 4;
83
- const hasSettings = data.readUIntBE(offset, 1) === 1; // Len = 1
84
- offset += 1;
85
- const hasData = data.readUIntBE(offset, 1) === 1; // Len = 1
86
- offset += 1;
83
+ const properties = data.readUInt16BE(offset);
84
+ offset += 2;
85
+ /**
86
+ * The properties byte is a bitfield with the following structure:
87
+ * - Bit 0: hasSettings
88
+ * - Bit 1: hasData
89
+ */
90
+ const hasSettings = (properties & 1) === 1;
91
+ const hasData = (properties & 2) === 2;
87
92
  const hash = data.subarray(offset, offset + 32).toString(); // Len = 32
88
93
  return { size, dataVersion, hasSettings, hasData, hash };
89
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getAppStorageInfo.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getAppStorageInfo.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/getAppStorageInfo.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ jest.mock("@ledgerhq/hw-transport");
14
14
  describe("getAppStorageInfo", () => {
15
15
  let transport;
16
16
  const response = Buffer.from([
17
- 0x00, 0x00, 0x04, 0xd2, 0x31, 0x2e, 0x30, 0x31, 0x01, 0x01, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
17
+ 0x00, 0x00, 0x04, 0xd2, 0x31, 0x2e, 0x30, 0x31, 0x00, 0x03, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
18
18
  0x73, 0x68, 0x31, 0x32, 0x33, 0x34, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
19
19
  0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x90, 0x00,
20
20
  ]);
@@ -5,7 +5,7 @@ const forceUpdateConditions = {
5
5
  nanoS: noVersionCondition,
6
6
  nanoSP: noVersionCondition,
7
7
  blue: noVersionCondition,
8
- europa: "<1.1.1",
8
+ europa: noVersionCondition,
9
9
  stax: "<=1.3.0",
10
10
  };
11
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shouldForceFirmwareUpdate.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,kCAAkC;AACvE,MAAM,qBAAqB,GAAkC;IAC3D,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACxC,cAAc,EACd,aAAa,GAId;;IACC,OAAO,MAAM,CAAC,SAAS,CACrB,MAAA,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,mCAAI,EAAE,EACnC,qBAAqB,CAAC,aAAa,CAAC,CACrC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"shouldForceFirmwareUpdate.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,kCAAkC;AACvE,MAAM,qBAAqB,GAAkC;IAC3D,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACxC,cAAc,EACd,aAAa,GAId;;IACC,OAAO,MAAM,CAAC,SAAS,CACrB,MAAA,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,mCAAI,EAAE,EACnC,qBAAqB,CAAC,aAAa,CAAC,CACrC,CAAC;AACJ,CAAC"}
@@ -18,28 +18,6 @@ describe("shouldForceFirmwareUpdate", () => {
18
18
  deviceModelId: DeviceModelId.stax,
19
19
  })).toBe(false);
20
20
  });
21
- it("should force firmware update for europa <1.1.1 and not other versions", () => {
22
- expect(shouldForceFirmwareUpdate({ currentVersion: "1.0.0", deviceModelId: DeviceModelId.europa })).toBe(true);
23
- expect(shouldForceFirmwareUpdate({
24
- currentVersion: "1.0.0-whatever",
25
- deviceModelId: DeviceModelId.europa,
26
- })).toBe(true);
27
- expect(shouldForceFirmwareUpdate({ currentVersion: "1.1.0", deviceModelId: DeviceModelId.europa })).toBe(true);
28
- expect(shouldForceFirmwareUpdate({
29
- currentVersion: "1.1.0-whatever",
30
- deviceModelId: DeviceModelId.europa,
31
- })).toBe(true);
32
- expect(shouldForceFirmwareUpdate({ currentVersion: "1.1.1", deviceModelId: DeviceModelId.europa })).toBe(false);
33
- expect(shouldForceFirmwareUpdate({
34
- currentVersion: "1.1.1-whatever",
35
- deviceModelId: DeviceModelId.europa,
36
- })).toBe(false);
37
- expect(shouldForceFirmwareUpdate({ currentVersion: "1.2.0", deviceModelId: DeviceModelId.europa })).toBe(false);
38
- expect(shouldForceFirmwareUpdate({
39
- currentVersion: "1.2.0-whatever",
40
- deviceModelId: DeviceModelId.europa,
41
- })).toBe(false);
42
- });
43
21
  it("should not force firmware update for other models", () => {
44
22
  expect(shouldForceFirmwareUpdate({ currentVersion: "1.2.0", deviceModelId: DeviceModelId.nanoX })).toBe(false);
45
23
  expect(shouldForceFirmwareUpdate({
@@ -1 +1 @@
1
- {"version":3,"file":"shouldForceFirmwareUpdate.test.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shouldForceFirmwareUpdate.test.js","sourceRoot":"","sources":["../../src/firmwareUpdate/shouldForceFirmwareUpdate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,CACJ,yBAAyB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAC1F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,yBAAyB,CAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,aAAa,CAAC,IAAI;SAClC,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,yBAAyB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAC1F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,yBAAyB,CAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,aAAa,CAAC,IAAI;SAClC,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,CACJ,yBAAyB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAC1F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,yBAAyB,CAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,aAAa,CAAC,IAAI;SAClC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CACJ,yBAAyB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAC3F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,yBAAyB,CAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,aAAa,CAAC,KAAK;SACnC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,yBAAyB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAC3F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,yBAAyB,CAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,aAAa,CAAC,KAAK;SACnC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,yBAAyB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAC3F,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CACJ,yBAAyB,CAAC;YACxB,cAAc,EAAE,gBAAgB;YAChC,aAAa,EAAE,aAAa,CAAC,KAAK;SACnC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/lib-es/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export { getDeviceName } from "./commands/use-cases/getDeviceName";
16
16
  export { isHardwareVersionSupported } from "./commands/use-cases/isHardwareVersionSupported";
17
17
  export { isBootloaderVersionSupported } from "./commands/use-cases/isBootloaderVersionSupported";
18
18
  export { getVersion } from "./commands/use-cases/getVersion";
19
- export type { AppStorageInfo } from "./commands/entities/AppStorageInfo";
19
+ export { type AppStorageInfo, isAppStorageInfo } from "./commands/entities/AppStorageInfo";
20
20
  export { backupAppStorage } from "./commands/use-cases/app-backup/backupAppStorage";
21
21
  export { getAppStorageInfo } from "./commands/use-cases/app-backup/getAppStorageInfo";
22
22
  export { restoreAppStorage } from "./commands/use-cases/app-backup/restoreAppStorage";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,WAAW,EACX,2BAA2B,GAC5B,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAE9F,OAAO,EACL,KAAK,yBAAyB,EAC9B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,WAAW,EACX,2BAA2B,GAC5B,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,KAAK,cAAc,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAE9F,OAAO,EACL,KAAK,yBAAyB,EAC9B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
package/lib-es/index.js CHANGED
@@ -12,6 +12,7 @@ export { getDeviceName } from "./commands/use-cases/getDeviceName";
12
12
  export { isHardwareVersionSupported } from "./commands/use-cases/isHardwareVersionSupported";
13
13
  export { isBootloaderVersionSupported } from "./commands/use-cases/isBootloaderVersionSupported";
14
14
  export { getVersion } from "./commands/use-cases/getVersion";
15
+ export { isAppStorageInfo } from "./commands/entities/AppStorageInfo";
15
16
  export { backupAppStorage } from "./commands/use-cases/app-backup/backupAppStorage";
16
17
  export { getAppStorageInfo } from "./commands/use-cases/app-backup/getAppStorageInfo";
17
18
  export { restoreAppStorage } from "./commands/use-cases/app-backup/restoreAppStorage";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAGzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,oBAAoB;AACpB,OAAO,EAEL,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,wBAAwB;AACxB,cAAc,gCAAgC,CAAC;AAC/C,sBAAsB;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAGzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAuB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,oBAAoB;AACpB,OAAO,EAEL,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,wBAAwB;AACxB,cAAc,gCAAgC,CAAC;AAC/C,sBAAsB;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/device-core",
3
- "version": "0.3.1-hotfix.0",
3
+ "version": "0.3.1-nightly.0",
4
4
  "description": "Ledger Live device core module",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -22,9 +22,9 @@
22
22
  "semver": "^7.3.5",
23
23
  "@ledgerhq/errors": "^6.18.0",
24
24
  "@ledgerhq/live-network": "^1.3.1",
25
- "@ledgerhq/hw-transport": "^6.31.2-hotfix.0",
25
+ "@ledgerhq/hw-transport": "^6.31.1",
26
26
  "@ledgerhq/logs": "^6.12.0",
27
- "@ledgerhq/devices": "^8.4.2-hotfix.0",
27
+ "@ledgerhq/devices": "^8.4.1",
28
28
  "@ledgerhq/types-live": "^6.49.0"
29
29
  },
30
30
  "devDependencies": {
@@ -0,0 +1,57 @@
1
+ import { isAppStorageInfo, AppStorageInfo } from "./AppStorageInfo";
2
+
3
+ describe("isAppStorageInfo", () => {
4
+ it("should return true for valid AppStorageInfo object", () => {
5
+ const data: AppStorageInfo = {
6
+ size: 1024,
7
+ dataVersion: "1.0.0",
8
+ hasSettings: true,
9
+ hasData: true,
10
+ hash: "abcd1234",
11
+ };
12
+
13
+ expect(isAppStorageInfo(data)).toBe(true);
14
+ });
15
+
16
+ it("should return false for non-object input", () => {
17
+ const data: unknown = "invalid";
18
+
19
+ expect(isAppStorageInfo(data)).toBe(false);
20
+ });
21
+
22
+ it("should return false for null input", () => {
23
+ const data: unknown = null;
24
+
25
+ expect(isAppStorageInfo(data)).toBe(false);
26
+ });
27
+
28
+ it("should return false for undefined input", () => {
29
+ const data: unknown = undefined;
30
+
31
+ expect(isAppStorageInfo(data)).toBe(false);
32
+ });
33
+
34
+ it("should return false if missing property", () => {
35
+ const data: unknown = {
36
+ // Missing size property
37
+ dataVersion: "1.0.0",
38
+ hasSettings: true,
39
+ hasData: true,
40
+ hash: "abcd1234",
41
+ };
42
+
43
+ expect(isAppStorageInfo(data)).toBe(false);
44
+ });
45
+
46
+ it("should return false if property type not correct", () => {
47
+ const data: unknown = {
48
+ size: 1024,
49
+ dataVersion: "1.0.0",
50
+ hasSettings: "Yes",
51
+ hasData: true,
52
+ hash: "abcd1234",
53
+ };
54
+
55
+ expect(isAppStorageInfo(data)).toBe(false);
56
+ });
57
+ });
@@ -5,3 +5,20 @@ export type AppStorageInfo = {
5
5
  hasData: boolean;
6
6
  hash: string;
7
7
  };
8
+
9
+ export function isAppStorageInfo(data: AppStorageInfo | unknown): data is AppStorageInfo {
10
+ return (
11
+ typeof data === "object" &&
12
+ data !== null &&
13
+ "size" in data &&
14
+ typeof data.size === "number" &&
15
+ "dataVersion" in data &&
16
+ typeof data.dataVersion === "string" &&
17
+ "hasSettings" in data &&
18
+ typeof data.hasSettings === "boolean" &&
19
+ "hasData" in data &&
20
+ typeof data.hasData === "boolean" &&
21
+ "hash" in data &&
22
+ typeof data.hash === "string"
23
+ );
24
+ }
@@ -8,7 +8,7 @@ jest.mock("@ledgerhq/hw-transport");
8
8
  describe("getAppStorageInfo", () => {
9
9
  let transport: Transport;
10
10
  const response = Buffer.from([
11
- 0x00, 0x00, 0x04, 0xd2, 0x31, 0x2e, 0x30, 0x31, 0x01, 0x01, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
11
+ 0x00, 0x00, 0x04, 0xd2, 0x31, 0x2e, 0x30, 0x31, 0x00, 0x03, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
12
12
  0x73, 0x68, 0x31, 0x32, 0x33, 0x34, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61,
13
13
  0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x68, 0x61, 0x73, 0x68, 0x90, 0x00,
14
14
  ]);
@@ -82,10 +82,15 @@ export function parseResponse(data: Buffer): AppStorageInfo {
82
82
  offset += 4;
83
83
  const dataVersion = data.subarray(offset, offset + 4).toString(); // Len = 4
84
84
  offset += 4;
85
- const hasSettings = data.readUIntBE(offset, 1) === 1; // Len = 1
86
- offset += 1;
87
- const hasData = data.readUIntBE(offset, 1) === 1; // Len = 1
88
- offset += 1;
85
+ const properties = data.readUInt16BE(offset);
86
+ offset += 2;
87
+ /**
88
+ * The properties byte is a bitfield with the following structure:
89
+ * - Bit 0: hasSettings
90
+ * - Bit 1: hasData
91
+ */
92
+ const hasSettings = (properties & 1) === 1;
93
+ const hasData = (properties & 2) === 2;
89
94
  const hash = data.subarray(offset, offset + 32).toString(); // Len = 32
90
95
 
91
96
  return { size, dataVersion, hasSettings, hasData, hash };
@@ -37,52 +37,6 @@ describe("shouldForceFirmwareUpdate", () => {
37
37
  ).toBe(false);
38
38
  });
39
39
 
40
- it("should force firmware update for europa <1.1.1 and not other versions", () => {
41
- expect(
42
- shouldForceFirmwareUpdate({ currentVersion: "1.0.0", deviceModelId: DeviceModelId.europa }),
43
- ).toBe(true);
44
-
45
- expect(
46
- shouldForceFirmwareUpdate({
47
- currentVersion: "1.0.0-whatever",
48
- deviceModelId: DeviceModelId.europa,
49
- }),
50
- ).toBe(true);
51
-
52
- expect(
53
- shouldForceFirmwareUpdate({ currentVersion: "1.1.0", deviceModelId: DeviceModelId.europa }),
54
- ).toBe(true);
55
-
56
- expect(
57
- shouldForceFirmwareUpdate({
58
- currentVersion: "1.1.0-whatever",
59
- deviceModelId: DeviceModelId.europa,
60
- }),
61
- ).toBe(true);
62
-
63
- expect(
64
- shouldForceFirmwareUpdate({ currentVersion: "1.1.1", deviceModelId: DeviceModelId.europa }),
65
- ).toBe(false);
66
-
67
- expect(
68
- shouldForceFirmwareUpdate({
69
- currentVersion: "1.1.1-whatever",
70
- deviceModelId: DeviceModelId.europa,
71
- }),
72
- ).toBe(false);
73
-
74
- expect(
75
- shouldForceFirmwareUpdate({ currentVersion: "1.2.0", deviceModelId: DeviceModelId.europa }),
76
- ).toBe(false);
77
-
78
- expect(
79
- shouldForceFirmwareUpdate({
80
- currentVersion: "1.2.0-whatever",
81
- deviceModelId: DeviceModelId.europa,
82
- }),
83
- ).toBe(false);
84
- });
85
-
86
40
  it("should not force firmware update for other models", () => {
87
41
  expect(
88
42
  shouldForceFirmwareUpdate({ currentVersion: "1.2.0", deviceModelId: DeviceModelId.nanoX }),
@@ -7,7 +7,7 @@ const forceUpdateConditions: Record<DeviceModelId, string> = {
7
7
  nanoS: noVersionCondition,
8
8
  nanoSP: noVersionCondition,
9
9
  blue: noVersionCondition,
10
- europa: "<1.1.1",
10
+ europa: noVersionCondition,
11
11
  stax: "<=1.3.0",
12
12
  };
13
13
 
package/src/index.ts CHANGED
@@ -22,7 +22,7 @@ export { getDeviceName } from "./commands/use-cases/getDeviceName";
22
22
  export { isHardwareVersionSupported } from "./commands/use-cases/isHardwareVersionSupported";
23
23
  export { isBootloaderVersionSupported } from "./commands/use-cases/isBootloaderVersionSupported";
24
24
  export { getVersion } from "./commands/use-cases/getVersion";
25
- export type { AppStorageInfo } from "./commands/entities/AppStorageInfo";
25
+ export { type AppStorageInfo, isAppStorageInfo } from "./commands/entities/AppStorageInfo";
26
26
  export { backupAppStorage } from "./commands/use-cases/app-backup/backupAppStorage";
27
27
  export { getAppStorageInfo } from "./commands/use-cases/app-backup/getAppStorageInfo";
28
28
  export { restoreAppStorage } from "./commands/use-cases/app-backup/restoreAppStorage";