@onekeyfe/hd-core 1.2.0-alpha.86 → 1.2.0-alpha.88

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
@@ -51347,6 +51347,10 @@ const PROTOCOL_V2_UPDATE_TARGET_BY_TARGET_ID = new Map([
51347
51347
  [ProtocolV2FirmwareTargetType.FW_MGMT_TARGET_SE03, 'se03'],
51348
51348
  [ProtocolV2FirmwareTargetType.FW_MGMT_TARGET_SE04, 'se04'],
51349
51349
  ]);
51350
+ const PROTOCOL_V2_INSTALL_TARGET_BY_UPDATE_TARGET = new Map(Object.values(PROTOCOL_V2_REMOTE_COMPONENT_TARGETS).map(target => [
51351
+ PROTOCOL_V2_UPDATE_TARGET_BY_TARGET_ID.get(target.targetId),
51352
+ target,
51353
+ ]));
51350
51354
  const PROTOCOL_V2_ROMLOADER_UNSUPPORTED_MESSAGE = 'FW_MGMT_TARGET_ROMLOADER is not accepted by the current Pro2 bootloader update request. Flash romloader with the loader-specific flow instead of firmwareUpdateV4.';
51351
51355
  const PROTOCOL_V2_TARGET_ID_BY_DECODED_NAME = new Map(Object.entries(ProtocolV2FirmwareTargetType).map(([key, value]) => [key, value]));
51352
51356
  const PROTOCOL_V2_TARGET_STATUS_BY_DECODED_NAME = new Map([
@@ -51542,6 +51546,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51542
51546
  { name: 'se02Binary', type: 'buffer' },
51543
51547
  { name: 'se03Binary', type: 'buffer' },
51544
51548
  { name: 'se04Binary', type: 'buffer' },
51549
+ { name: 'resourceArchiveBinary', type: 'buffer' },
51545
51550
  { name: 'firmwareType', type: 'string' },
51546
51551
  { name: 'targetsToUpdate', type: 'array', allowEmpty: true },
51547
51552
  { name: 'platform', type: 'string' },
@@ -51554,28 +51559,59 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51554
51559
  const preparedPlan = payload.preparedPlan
51555
51560
  ? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
51556
51561
  : undefined;
51557
- const hostBinding = preparedPlan || payload.componentArtifacts
51562
+ const hasLocalArtifacts = [
51563
+ payload.bootloaderBinary,
51564
+ payload.romloaderBinary,
51565
+ payload.applicationP1Binary,
51566
+ payload.applicationP2Binary,
51567
+ payload.coprocessorBinary,
51568
+ payload.se01Binary,
51569
+ payload.se02Binary,
51570
+ payload.se03Binary,
51571
+ payload.se04Binary,
51572
+ payload.resourceArchiveBinary,
51573
+ ].some(Boolean);
51574
+ if (preparedPlan && hasLocalArtifacts) {
51575
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Prepared firmware plans cannot be combined with local firmware or resource binaries');
51576
+ }
51577
+ const hostBinding = payload.hostBindingGeneration !== undefined
51558
51578
  ? resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration, preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.preparedPlanDigest)
51559
51579
  : undefined;
51560
- if (hostBinding) {
51561
- const componentArtifacts = ((_a = payload.componentArtifacts) !== null && _a !== void 0 ? _a : {});
51580
+ if (preparedPlan) {
51562
51581
  assertFirmwareUpdatePreparedPlanBinding({
51563
- preparedPlan: preparedPlan !== null && preparedPlan !== void 0 ? preparedPlan : payload.preparedPlan,
51582
+ preparedPlan,
51564
51583
  executor: 'v4',
51565
51584
  platform: payload.platform,
51566
- scopeTargets: ['boot', 'app_v1', 'app_v2', 'coprocessor', 'se01', 'se02', 'se03', 'se04'],
51567
- bindings: [
51568
- ...Object.entries(componentArtifacts).flatMap(([target, artifact]) => artifact
51569
- ? [
51570
- {
51571
- target: target,
51572
- artifact,
51573
- },
51574
- ]
51575
- : []),
51576
- ],
51585
+ scopeTargets: [],
51586
+ bindings: [],
51577
51587
  });
51588
+ if (payload.componentArtifacts) {
51589
+ const componentBindings = Object.entries(payload.componentArtifacts).flatMap(([target, artifact]) => artifact
51590
+ ? [
51591
+ {
51592
+ target: target,
51593
+ artifact: artifact,
51594
+ },
51595
+ ]
51596
+ : []);
51597
+ assertFirmwareUpdatePreparedPlanBinding({
51598
+ preparedPlan,
51599
+ executor: 'v4',
51600
+ platform: payload.platform,
51601
+ scopeTargets: componentBindings.map(binding => binding.target),
51602
+ bindings: componentBindings,
51603
+ });
51604
+ }
51578
51605
  }
51606
+ const preparedExpectedTargetVersions = preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.artifacts.reduce((result, artifact) => {
51607
+ if (artifact.role === 'component' &&
51608
+ artifact.target !== 'resource' &&
51609
+ artifact.targetVersion &&
51610
+ PROTOCOL_V2_INSTALL_TARGET_BY_UPDATE_TARGET.has(artifact.target)) {
51611
+ result[artifact.target] = artifact.targetVersion;
51612
+ }
51613
+ return result;
51614
+ }, {});
51579
51615
  this.params = {
51580
51616
  preparedPlan,
51581
51617
  chunkSize: payload.chunkSize,
@@ -51589,13 +51625,18 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51589
51625
  se02Binary: payload.se02Binary,
51590
51626
  se03Binary: payload.se03Binary,
51591
51627
  se04Binary: payload.se04Binary,
51592
- firmwareType: payload.firmwareType,
51593
- targetsToUpdate: payload.targetsToUpdate,
51594
- expectedTargetVersions: payload.expectedTargetVersions,
51628
+ resourceArchiveBinary: payload.resourceArchiveBinary,
51629
+ firmwareType: (_a = preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.firmwareType) !== null && _a !== void 0 ? _a : payload.firmwareType,
51630
+ targetsToUpdate: preparedPlan
51631
+ ? [...preparedPlan.targetsToUpdate]
51632
+ : payload.targetsToUpdate,
51633
+ expectedTargetVersions: preparedPlan
51634
+ ? preparedExpectedTargetVersions
51635
+ : payload.expectedTargetVersions,
51595
51636
  platform: payload.platform,
51596
51637
  expectedDeviceId: payload.expectedDeviceId,
51597
51638
  artifactReader: (_b = hostBinding === null || hostBinding === void 0 ? void 0 : hostBinding.artifactReader) !== null && _b !== void 0 ? _b : payload.artifactReader,
51598
- componentArtifacts: payload.componentArtifacts,
51639
+ componentArtifacts: preparedPlan ? undefined : payload.componentArtifacts,
51599
51640
  };
51600
51641
  }
51601
51642
  getProtocolV2FirmwareChunkSize(direction, filePath) {
@@ -51626,7 +51667,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51626
51667
  });
51627
51668
  }
51628
51669
  runProtocolV2() {
51629
- var _a, _b, _c, _d;
51670
+ var _a, _b, _c, _d, _e;
51630
51671
  return __awaiter(this, void 0, void 0, function* () {
51631
51672
  yield this.captureProtocolV2PhysicalIdentity();
51632
51673
  const deviceFeatures = yield this.getProtocolV2DeviceFeatures();
@@ -51638,13 +51679,15 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51638
51679
  const deviceFirmwareType = getFirmwareType(deviceFeatures);
51639
51680
  const firmwareType = (_a = this.params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
51640
51681
  this.validateExpectedTargetVersions();
51641
- if (this.params.preparedPlan) {
51682
+ const hasPreparedComponentArtifacts = Object.values((_b = this.params.componentArtifacts) !== null && _b !== void 0 ? _b : {}).some(Boolean);
51683
+ if (this.params.preparedPlan || hasPreparedComponentArtifacts) {
51642
51684
  return this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
51643
51685
  }
51644
- const wantsResources = !!((_b = this.params.targetsToUpdate) === null || _b === void 0 ? void 0 : _b.includes('resource'));
51686
+ const wantsResources = !!((_c = this.params.targetsToUpdate) === null || _c === void 0 ? void 0 : _c.includes('resource'));
51645
51687
  let fwBinaryMap = [];
51646
51688
  let bootloaderBinary = null;
51647
51689
  let installItems;
51690
+ let resourceBundles = [];
51648
51691
  try {
51649
51692
  this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
51650
51693
  fwBinaryMap = this.collectExplicitTargetBinaries();
@@ -51654,13 +51697,16 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51654
51697
  fwBinaryMap,
51655
51698
  });
51656
51699
  const missingFirmwareTargets = this.getMissingProtocolV2FirmwareTargets(explicitInstallItems);
51657
- const needsRemoteFirmware = ((_c = this.params.targetsToUpdate) === null || _c === void 0 ? void 0 : _c.length)
51700
+ const needsRemoteFirmware = ((_d = this.params.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.length)
51658
51701
  ? missingFirmwareTargets.length > 0
51659
51702
  : explicitInstallItems.length === 0;
51660
51703
  if (wantsResources) {
51661
- throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 resource manifest must be prepared by the external firmware host', {
51662
- firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
51663
- });
51704
+ if (!this.params.resourceArchiveBinary) {
51705
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 resource archive must be provided for a local resource update', {
51706
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
51707
+ });
51708
+ }
51709
+ resourceBundles = yield this.prepareProtocolV2LocalResourceArchive(this.params.resourceArchiveBinary);
51664
51710
  }
51665
51711
  if (needsRemoteFirmware &&
51666
51712
  (this.params.artifactReader ||
@@ -51684,7 +51730,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51684
51730
  if (typeof err === 'object' &&
51685
51731
  err !== null &&
51686
51732
  'params' in err &&
51687
- ((_d = err.params) === null || _d === void 0 ? void 0 : _d.firmwareUpdateCode) === 'FirmwareArtifactsNotPrepared') {
51733
+ ((_e = err.params) === null || _e === void 0 ? void 0 : _e.firmwareUpdateCode) === 'FirmwareArtifactsNotPrepared') {
51688
51734
  throw err;
51689
51735
  }
51690
51736
  if (err instanceof hdShared.HardwareError && err.errorCode === hdShared.HardwareErrorCode.NetworkError) {
@@ -51692,11 +51738,14 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51692
51738
  }
51693
51739
  throw normalizeFirmwarePreparationError(err);
51694
51740
  }
51695
- if (!bootloaderBinary && fwBinaryMap.length === 0 && !(installItems === null || installItems === void 0 ? void 0 : installItems.length)) {
51741
+ if (!bootloaderBinary &&
51742
+ fwBinaryMap.length === 0 &&
51743
+ !(installItems === null || installItems === void 0 ? void 0 : installItems.length) &&
51744
+ resourceBundles.length === 0) {
51696
51745
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, 'No firmware to update');
51697
51746
  }
51698
- return this.executeProtocolV2Update(Object.assign({ fwBinaryMap,
51699
- bootloaderBinary }, (installItems ? { installItems } : undefined)));
51747
+ return this.executeProtocolV2Update(Object.assign(Object.assign({ fwBinaryMap,
51748
+ bootloaderBinary }, (installItems ? { installItems } : undefined)), (resourceBundles.length > 0 ? { resourceBundles } : undefined)));
51700
51749
  });
51701
51750
  }
51702
51751
  openProtocolV2PreparedSource(artifact) {
@@ -51733,6 +51782,34 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51733
51782
  prepareProtocolV2InstallSources(firmwareType, features) {
51734
51783
  var _a, _b;
51735
51784
  return __awaiter(this, void 0, void 0, function* () {
51785
+ if (this.params.preparedPlan) {
51786
+ const requestedTargets = new Set(this.params.preparedPlan.targetsToUpdate.filter((target) => target !== 'resource'));
51787
+ const installSources = [];
51788
+ const preparedTargets = new Set();
51789
+ for (const artifact of this.params.preparedPlan.artifacts) {
51790
+ if (artifact.target !== 'resource') {
51791
+ const target = artifact.target;
51792
+ const installTarget = PROTOCOL_V2_INSTALL_TARGET_BY_UPDATE_TARGET.get(target);
51793
+ if (!requestedTargets.has(target) ||
51794
+ artifact.role !== 'component' ||
51795
+ artifact.container !== 'raw' ||
51796
+ !installTarget ||
51797
+ preparedTargets.has(target)) {
51798
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 prepared component artifact is invalid: ${artifact.artifactId}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51799
+ }
51800
+ installSources.push(Object.assign(Object.assign({}, installTarget), { source: yield this.openProtocolV2PreparedSource(artifact.artifact) }));
51801
+ preparedTargets.add(target);
51802
+ }
51803
+ }
51804
+ const missingTarget = Array.from(requestedTargets).find(target => !preparedTargets.has(target));
51805
+ if (missingTarget) {
51806
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 ${missingTarget} artifact is not prepared`, {
51807
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
51808
+ artifactName: missingTarget,
51809
+ });
51810
+ }
51811
+ return installSources;
51812
+ }
51736
51813
  const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
51737
51814
  if (!release) {
51738
51815
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 firmware release is unavailable');
@@ -51763,6 +51840,73 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51763
51840
  return installSources;
51764
51841
  });
51765
51842
  }
51843
+ prepareProtocolV2LocalResourceArchive(binary) {
51844
+ var _a;
51845
+ return __awaiter(this, void 0, void 0, function* () {
51846
+ const zip = yield JSZip__default["default"].loadAsync(binary);
51847
+ const entries = Object.values(zip.files).filter(entry => !entry.dir);
51848
+ if (entries.length === 0 || entries.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT + 1) {
51849
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP entry set is invalid', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51850
+ }
51851
+ const manifestEntry = zip.file('manifest.json');
51852
+ if (!manifestEntry) {
51853
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP has no manifest.json', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51854
+ }
51855
+ const manifestBinary = yield manifestEntry.async('arraybuffer');
51856
+ if (manifestBinary.byteLength <= 0 ||
51857
+ manifestBinary.byteLength > PROTOCOL_V2_RESOURCE_MANIFEST_MAX_BYTES) {
51858
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource manifest size is invalid', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51859
+ }
51860
+ let manifestValue;
51861
+ try {
51862
+ manifestValue = JSON.parse(new TextDecoder().decode(manifestBinary));
51863
+ }
51864
+ catch (error) {
51865
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local resource manifest is invalid: ${String(error)}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51866
+ }
51867
+ const manifest = parseProtocolV2ResourceManifest(manifestValue);
51868
+ const selectedFiles = selectProtocolV2ResourceManifestFiles({
51869
+ manifest,
51870
+ targetsToUpdate: (_a = this.params.targetsToUpdate) !== null && _a !== void 0 ? _a : [],
51871
+ });
51872
+ const expectedEntryNames = new Set([
51873
+ 'manifest.json',
51874
+ ...selectedFiles.map(file => file.archive_path),
51875
+ ]);
51876
+ if (entries.length !== expectedEntryNames.size ||
51877
+ entries.some(entry => !expectedEntryNames.has(entry.name))) {
51878
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP contains an unexpected entry', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51879
+ }
51880
+ let totalSize = 0;
51881
+ const resourceBundles = [];
51882
+ for (const [index, file] of selectedFiles.entries()) {
51883
+ const entry = zip.file(file.archive_path);
51884
+ if (!entry) {
51885
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local resource ZIP is missing ${file.archive_path}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51886
+ }
51887
+ const fileBinary = yield entry.async('arraybuffer');
51888
+ const digest = bytesToHex(sha256.sha256(new Uint8Array(fileBinary)));
51889
+ if (fileBinary.byteLength !== file.size || digest !== file.sha256.toLowerCase()) {
51890
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local resource file does not match manifest: ${file.archive_path}`, { firmwareUpdateCode: 'FirmwareArtifactReceiptMismatch' });
51891
+ }
51892
+ totalSize += fileBinary.byteLength;
51893
+ if (totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES) {
51894
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP exceeds the total size limit', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
51895
+ }
51896
+ const header = fileBinary.byteLength >= PROTOCOL_V2_OKPP_HEADER_SIZE
51897
+ ? parseProtocolV2OkppHeader(new Uint8Array(fileBinary))
51898
+ : null;
51899
+ resourceBundles.push(Object.assign({ name: file.original_name || `resource-${index}`, binary: fileBinary, devicePath: file.device_path }, (header
51900
+ ? {
51901
+ version: header.version,
51902
+ payloadHash: header.payloadHash,
51903
+ headerHash: header.headerHash,
51904
+ }
51905
+ : {})));
51906
+ }
51907
+ return resourceBundles;
51908
+ });
51909
+ }
51766
51910
  prepareProtocolV2ResourceSources() {
51767
51911
  var _a, _b;
51768
51912
  return __awaiter(this, void 0, void 0, function* () {
@@ -52415,7 +52559,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
52415
52559
  });
52416
52560
  });
52417
52561
  }
52418
- executeProtocolV2Update({ fwBinaryMap, bootloaderBinary, installItems, }) {
52562
+ executeProtocolV2Update({ fwBinaryMap, bootloaderBinary, installItems, resourceBundles = [], }) {
52419
52563
  return __awaiter(this, void 0, void 0, function* () {
52420
52564
  const memoryInstallItems = installItems !== null && installItems !== void 0 ? installItems : this.buildProtocolV2InstallItems({
52421
52565
  fwBinaryMap: fwBinaryMap !== null && fwBinaryMap !== void 0 ? fwBinaryMap : [],
@@ -52430,9 +52574,12 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
52430
52574
  kind: item.kind,
52431
52575
  });
52432
52576
  })));
52577
+ const resourceSources = yield Promise.all(resourceBundles.map((resource) => __awaiter(this, void 0, void 0, function* () {
52578
+ return (Object.assign(Object.assign(Object.assign({ name: resource.name, source: yield this.openProtocolV2MemorySource(resource.binary), devicePath: resource.devicePath }, (resource.version ? { version: resource.version } : {})), (resource.payloadHash ? { payloadHash: resource.payloadHash } : {})), (resource.headerHash ? { headerHash: resource.headerHash } : {})));
52579
+ })));
52433
52580
  return yield this.executeProtocolV2Phases({
52434
52581
  installSources,
52435
- resourceSources: [],
52582
+ resourceSources,
52436
52583
  });
52437
52584
  }
52438
52585
  finally {
@@ -65046,17 +65193,6 @@ const switchTransport = ({ env, Transport, plugin, }) => {
65046
65193
  };
65047
65194
 
65048
65195
  let memoryHostSequence = 0;
65049
- const FIRMWARE_UPDATE_V4_COMPONENT_TARGETS = new Set([
65050
- 'boot',
65051
- 'app_v1',
65052
- 'app_v2',
65053
- 'coprocessor',
65054
- 'se01',
65055
- 'se02',
65056
- 'se03',
65057
- 'se04',
65058
- ]);
65059
- const isFirmwareUpdateV4ComponentTarget = (target) => FIRMWARE_UPDATE_V4_COMPONENT_TARGETS.has(target);
65060
65196
  const createReference = (binary, prefix) => {
65061
65197
  const digest = utils.bytesToHex(sha256.sha256(new Uint8Array(binary)));
65062
65198
  return {
@@ -65125,23 +65261,9 @@ function prepareFirmwareUpdateV4MemoryHost({ sdk, plan, artifacts, }) {
65125
65261
  artifactReader,
65126
65262
  preparedPlanDigest: preparedPlan.preparedPlanDigest,
65127
65263
  });
65128
- const componentArtifacts = {};
65129
- const expectedTargetVersions = {};
65130
- for (const artifact of preparedPlan.artifacts) {
65131
- if (artifact.role === 'component' && isFirmwareUpdateV4ComponentTarget(artifact.target)) {
65132
- componentArtifacts[artifact.target] = artifact.artifact;
65133
- }
65134
- if (artifact.targetVersion) {
65135
- expectedTargetVersions[artifact.target] = artifact.targetVersion;
65136
- }
65137
- }
65138
65264
  return {
65139
65265
  preparedPlan,
65140
65266
  hostBindingGeneration,
65141
- targetsToUpdate: [...preparedPlan.targetsToUpdate],
65142
- expectedDeviceId: preparedPlan.deviceIdentity,
65143
- expectedTargetVersions,
65144
- componentArtifacts,
65145
65267
  release: () => {
65146
65268
  sdk.unregisterFirmwareUpdateHostBinding(hostBindingGeneration);
65147
65269
  readers.clear();
@@ -113,6 +113,7 @@ export interface FirmwareUpdateV4Params {
113
113
  se02Binary?: ArrayBuffer;
114
114
  se03Binary?: ArrayBuffer;
115
115
  se04Binary?: ArrayBuffer;
116
+ resourceArchiveBinary?: ArrayBuffer;
116
117
  forcedUpdateRes?: boolean;
117
118
  artifactReader?: FirmwareArtifactReader;
118
119
  componentArtifacts?: Partial<Record<Exclude<FirmwareUpdateV4Target, 'resource'>, FirmwareArtifactReference>>;
@@ -1 +1 @@
1
- {"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "1.2.0-alpha.86",
3
+ "version": "1.2.0-alpha.88",
4
4
  "description": "Core processes and APIs for communicating with OneKey hardware devices.",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,8 +25,8 @@
25
25
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-shared": "1.2.0-alpha.86",
29
- "@onekeyfe/hd-transport": "1.2.0-alpha.86",
28
+ "@onekeyfe/hd-shared": "1.2.0-alpha.88",
29
+ "@onekeyfe/hd-transport": "1.2.0-alpha.88",
30
30
  "axios": "1.15.2",
31
31
  "bignumber.js": "^9.0.2",
32
32
  "bytebuffer": "^5.0.1",
@@ -44,5 +44,5 @@
44
44
  "@types/w3c-web-usb": "^1.0.10",
45
45
  "@types/web-bluetooth": "^0.0.21"
46
46
  },
47
- "gitHead": "1db5bcce604523bf3b0ee5079c76bdebb328088c"
47
+ "gitHead": "004b8385657f82848f58fd91f25bd3d12d7e33c7"
48
48
  }