@onekeyfe/hd-core 1.2.0-alpha.88 → 1.2.0-alpha.89
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/__tests__/check-all-firmware-release-protocol-v2.test.ts +24 -2
- package/__tests__/firmware-memory-host.test.ts +1 -0
- package/__tests__/firmware-update/firmware-update-plan.test.ts +47 -0
- package/__tests__/protocol-v2.test.ts +147 -12
- package/dist/api/FirmwareUpdateV4.d.ts +1 -0
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareMemoryHost.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts +15 -0
- package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +1 -1
- package/dist/index.d.ts +17 -3
- package/dist/index.js +290 -123
- package/dist/types/api/firmwareUpdate.d.ts +12 -2
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/FirmwareUpdateV4.ts +295 -55
- package/src/api/firmware/FirmwareMemoryHost.ts +9 -4
- package/src/api/firmware/FirmwareUpdatePlan.ts +49 -4
- package/src/types/api/firmwareUpdate.ts +19 -2
package/dist/index.js
CHANGED
|
@@ -836,10 +836,14 @@ const buildProtocolV2Artifacts = (release, { includeComponents = true, component
|
|
|
836
836
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 component ${key} duplicates target ${target}`, { firmwareUpdateCode: 'FirmwarePlanInvalid' });
|
|
837
837
|
}
|
|
838
838
|
componentTargetSet.add(target);
|
|
839
|
-
|
|
839
|
+
const integrity = asIntegrity({
|
|
840
840
|
size: component.expectedSize,
|
|
841
841
|
sha256: component.fingerprint,
|
|
842
|
-
})
|
|
842
|
+
});
|
|
843
|
+
if (integrity.expectedSize === undefined || integrity.expectedSha256 === undefined) {
|
|
844
|
+
planError(`Protocol V2 component ${key} integrity metadata is invalid`);
|
|
845
|
+
}
|
|
846
|
+
artifacts.push(Object.assign(Object.assign({ artifactId: `component:${target}`, role: 'component', target, url: assertArtifactUrl(component.url, `Protocol V2 component ${key}`), container: 'raw', logicalName: key }, integrity), (asVersion(component.version) ? { targetVersion: asVersion(component.version) } : {})));
|
|
843
847
|
targets.push(target);
|
|
844
848
|
}
|
|
845
849
|
return { artifacts, targets: [...new Set(targets)] };
|
|
@@ -893,6 +897,22 @@ const finalizeFirmwareUpdatePlan = ({ features, firmwareType, platform, artifact
|
|
|
893
897
|
};
|
|
894
898
|
return assertFirmwareUpdatePlan(Object.assign(Object.assign({}, planWithoutDigest), { planDigest: digestFirmwareUpdatePlan(planWithoutDigest) }));
|
|
895
899
|
};
|
|
900
|
+
const buildProtocolV2LocalFirmwareUpdatePlan = ({ features, firmwareType, platform, artifacts, }) => {
|
|
901
|
+
if (artifacts.length === 0) {
|
|
902
|
+
return planError('Protocol V2 local firmware plan has no artifacts');
|
|
903
|
+
}
|
|
904
|
+
const plan = finalizeFirmwareUpdatePlan({
|
|
905
|
+
features,
|
|
906
|
+
firmwareType,
|
|
907
|
+
platform,
|
|
908
|
+
artifacts: artifacts.map(artifact => (Object.assign(Object.assign({}, artifact), { role: artifact.target === 'resource' ? 'resourceBundle' : 'component', url: `https://local-firmware.invalid/${encodeURIComponent(artifact.artifactId)}` }))),
|
|
909
|
+
targetsToUpdate: artifacts.map(artifact => artifact.target),
|
|
910
|
+
});
|
|
911
|
+
if (plan.executor !== 'v4') {
|
|
912
|
+
return planError('Protocol V2 local firmware plan requires executor v4');
|
|
913
|
+
}
|
|
914
|
+
return plan;
|
|
915
|
+
};
|
|
896
916
|
const buildProtocolV2FirmwareUpdatePlan = ({ features, firmwareType, platform, release, targetsToUpdate, forceUpdateTargets, resourceArchive, }) => {
|
|
897
917
|
const validatedForceTargets = validateFirmwareUpdatePlanForceTargets(forceUpdateTargets);
|
|
898
918
|
if (validatedForceTargets.some(target => target === 'ble' || target === 'bootloader')) {
|
|
@@ -51229,6 +51249,88 @@ const INSTALLABLE_FIRMWARE_TARGET_IDS = new Set([
|
|
|
51229
51249
|
]);
|
|
51230
51250
|
new Map(Object.entries(ProtocolV2FirmwareTargetType).flatMap(([key, value]) => INSTALLABLE_FIRMWARE_TARGET_IDS.has(value) ? [[key, value]] : []));
|
|
51231
51251
|
|
|
51252
|
+
let memoryHostSequence = 0;
|
|
51253
|
+
const createReference = (binary, prefix) => {
|
|
51254
|
+
const digest = utils.bytesToHex(sha256.sha256(new Uint8Array(binary)));
|
|
51255
|
+
return {
|
|
51256
|
+
artifactRef: `fwmem:${prefix}:${digest.slice(0, 32)}`,
|
|
51257
|
+
size: binary.byteLength,
|
|
51258
|
+
sha256: digest,
|
|
51259
|
+
};
|
|
51260
|
+
};
|
|
51261
|
+
function prepareFirmwareUpdateV4MemoryHost({ sdk, plan, artifacts, }) {
|
|
51262
|
+
if (plan.executor !== 'v4') {
|
|
51263
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Firmware memory host only supports V4 plans');
|
|
51264
|
+
}
|
|
51265
|
+
memoryHostSequence += 1;
|
|
51266
|
+
const hostId = `${Date.now()}:${memoryHostSequence}`;
|
|
51267
|
+
const binaries = new Map();
|
|
51268
|
+
const inputs = artifacts.map((input, artifactIndex) => {
|
|
51269
|
+
var _a;
|
|
51270
|
+
const artifactBinary = new Uint8Array(input.binary).slice();
|
|
51271
|
+
const artifact = createReference(artifactBinary.buffer, `${hostId}:artifact:${artifactIndex}`);
|
|
51272
|
+
binaries.set(artifact.artifactRef, artifactBinary);
|
|
51273
|
+
const materializedEntries = (_a = input.materializedEntries) === null || _a === void 0 ? void 0 : _a.map((entry, entryIndex) => {
|
|
51274
|
+
const entryBinary = new Uint8Array(entry.binary).slice();
|
|
51275
|
+
const entryArtifact = createReference(entryBinary.buffer, `${hostId}:entry:${artifactIndex}:${entryIndex}`);
|
|
51276
|
+
binaries.set(entryArtifact.artifactRef, entryBinary);
|
|
51277
|
+
return {
|
|
51278
|
+
entryName: entry.entryName,
|
|
51279
|
+
artifact: entryArtifact,
|
|
51280
|
+
};
|
|
51281
|
+
});
|
|
51282
|
+
return Object.assign({ artifactId: input.artifactId, artifact }, ((materializedEntries === null || materializedEntries === void 0 ? void 0 : materializedEntries.length) ? { materializedEntries } : {}));
|
|
51283
|
+
});
|
|
51284
|
+
const preparedPlan = sdk.prepareFirmwareUpdatePlan({
|
|
51285
|
+
plan,
|
|
51286
|
+
leaseRef: `fwmemlease:${hostId}`,
|
|
51287
|
+
artifacts: inputs,
|
|
51288
|
+
});
|
|
51289
|
+
const readers = new Map();
|
|
51290
|
+
let readerSequence = 0;
|
|
51291
|
+
const artifactReader = {
|
|
51292
|
+
open({ artifactRef }) {
|
|
51293
|
+
const binary = binaries.get(artifactRef);
|
|
51294
|
+
if (!binary) {
|
|
51295
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Firmware memory artifact is unavailable');
|
|
51296
|
+
}
|
|
51297
|
+
readerSequence += 1;
|
|
51298
|
+
const readerId = `fwmemreader:${hostId}:${readerSequence}`;
|
|
51299
|
+
readers.set(readerId, binary);
|
|
51300
|
+
return Promise.resolve({ readerId, size: binary.byteLength });
|
|
51301
|
+
},
|
|
51302
|
+
read({ readerId, offset, length }) {
|
|
51303
|
+
const binary = readers.get(readerId);
|
|
51304
|
+
if (!binary || offset < 0 || length <= 0 || offset + length > binary.byteLength) {
|
|
51305
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Firmware memory artifact read is invalid');
|
|
51306
|
+
}
|
|
51307
|
+
const data = binary.slice(offset, offset + length).buffer;
|
|
51308
|
+
return Promise.resolve({
|
|
51309
|
+
data,
|
|
51310
|
+
bytesRead: data.byteLength,
|
|
51311
|
+
eof: offset + length === binary.byteLength,
|
|
51312
|
+
});
|
|
51313
|
+
},
|
|
51314
|
+
close({ readerId }) {
|
|
51315
|
+
readers.delete(readerId);
|
|
51316
|
+
return Promise.resolve();
|
|
51317
|
+
},
|
|
51318
|
+
};
|
|
51319
|
+
const hostBindingGeneration = sdk.registerFirmwareUpdateHostBinding({
|
|
51320
|
+
artifactReader,
|
|
51321
|
+
preparedPlanDigest: preparedPlan.preparedPlanDigest,
|
|
51322
|
+
});
|
|
51323
|
+
return {
|
|
51324
|
+
preparedPlan,
|
|
51325
|
+
hostBindingGeneration,
|
|
51326
|
+
release: () => {
|
|
51327
|
+
sdk.unregisterFirmwareUpdateHostBinding(hostBindingGeneration);
|
|
51328
|
+
readers.clear();
|
|
51329
|
+
binaries.clear();
|
|
51330
|
+
},
|
|
51331
|
+
};
|
|
51332
|
+
}
|
|
51333
|
+
|
|
51232
51334
|
const Log$6 = getLogger(exports.LoggerNames.Method);
|
|
51233
51335
|
const SESSION_ERROR$1 = 'session not found';
|
|
51234
51336
|
const PROTOCOL_V2_BOOTLOADER_RECONNECT_TIMEOUT = 90 * 1000;
|
|
@@ -51259,6 +51361,20 @@ const PROTOCOL_V2_RESOURCE_MANIFEST_MAX_BYTES = 1024 * 1024;
|
|
|
51259
51361
|
const PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT = 512;
|
|
51260
51362
|
const PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES = 256 * 1024 * 1024;
|
|
51261
51363
|
const PROTOCOL_V2_NEO_UNSUPPORTED_TARGETS = new Set(['se03', 'se04']);
|
|
51364
|
+
const getProtocolV2ZipEntrySizes = (entry) => {
|
|
51365
|
+
var _a;
|
|
51366
|
+
const { compressedSize, uncompressedSize } = (_a = entry._data) !== null && _a !== void 0 ? _a : {};
|
|
51367
|
+
if (!Number.isSafeInteger(compressedSize) ||
|
|
51368
|
+
Number(compressedSize) < 0 ||
|
|
51369
|
+
!Number.isSafeInteger(uncompressedSize) ||
|
|
51370
|
+
Number(uncompressedSize) <= 0) {
|
|
51371
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local resource ZIP entry size is invalid: ${entry.name}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
51372
|
+
}
|
|
51373
|
+
return {
|
|
51374
|
+
compressedSize: Number(compressedSize),
|
|
51375
|
+
uncompressedSize: Number(uncompressedSize),
|
|
51376
|
+
};
|
|
51377
|
+
};
|
|
51262
51378
|
function assertProtocolV2FirmwareTargetsSupported(deviceType, params) {
|
|
51263
51379
|
var _a;
|
|
51264
51380
|
const unsupportedTargets = new Set(((_a = params.targetsToUpdate) !== null && _a !== void 0 ? _a : []).filter(target => PROTOCOL_V2_NEO_UNSUPPORTED_TARGETS.has(target)));
|
|
@@ -51515,7 +51631,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51515
51631
|
return ['V2'];
|
|
51516
51632
|
}
|
|
51517
51633
|
init() {
|
|
51518
|
-
var _a, _b;
|
|
51634
|
+
var _a, _b, _c, _d, _e;
|
|
51519
51635
|
this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
|
|
51520
51636
|
this.requireDeviceMode = [];
|
|
51521
51637
|
this.unlockPolicy = 'unlock-before-run';
|
|
@@ -51547,6 +51663,8 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51547
51663
|
{ name: 'se03Binary', type: 'buffer' },
|
|
51548
51664
|
{ name: 'se04Binary', type: 'buffer' },
|
|
51549
51665
|
{ name: 'resourceArchiveBinary', type: 'buffer' },
|
|
51666
|
+
{ name: 'resourceFiles', type: 'array', allowEmpty: true },
|
|
51667
|
+
{ name: 'resourceBundleArtifacts', type: 'array', allowEmpty: true },
|
|
51550
51668
|
{ name: 'firmwareType', type: 'string' },
|
|
51551
51669
|
{ name: 'targetsToUpdate', type: 'array', allowEmpty: true },
|
|
51552
51670
|
{ name: 'platform', type: 'string' },
|
|
@@ -51556,6 +51674,9 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51556
51674
|
(payload.expectedDeviceId.length === 0 || payload.expectedDeviceId.length > 160)) {
|
|
51557
51675
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 expected device identity is invalid');
|
|
51558
51676
|
}
|
|
51677
|
+
if (((_a = payload.resourceFiles) === null || _a === void 0 ? void 0 : _a.length) || ((_b = payload.resourceBundleArtifacts) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
51678
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 resourceFiles and resourceBundleArtifacts are deprecated; provide a complete signed resource ZIP through resourceArchiveBinary or preparedPlan');
|
|
51679
|
+
}
|
|
51559
51680
|
const preparedPlan = payload.preparedPlan
|
|
51560
51681
|
? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
|
|
51561
51682
|
: undefined;
|
|
@@ -51626,16 +51747,16 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51626
51747
|
se03Binary: payload.se03Binary,
|
|
51627
51748
|
se04Binary: payload.se04Binary,
|
|
51628
51749
|
resourceArchiveBinary: payload.resourceArchiveBinary,
|
|
51629
|
-
firmwareType: (
|
|
51750
|
+
firmwareType: (_c = preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.firmwareType) !== null && _c !== void 0 ? _c : payload.firmwareType,
|
|
51630
51751
|
targetsToUpdate: preparedPlan
|
|
51631
51752
|
? [...preparedPlan.targetsToUpdate]
|
|
51632
|
-
: payload.targetsToUpdate,
|
|
51753
|
+
: (_d = payload.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.map((target) => target === 'boot_resources' ? 'resource' : target),
|
|
51633
51754
|
expectedTargetVersions: preparedPlan
|
|
51634
51755
|
? preparedExpectedTargetVersions
|
|
51635
51756
|
: payload.expectedTargetVersions,
|
|
51636
51757
|
platform: payload.platform,
|
|
51637
51758
|
expectedDeviceId: payload.expectedDeviceId,
|
|
51638
|
-
artifactReader: (
|
|
51759
|
+
artifactReader: (_e = hostBinding === null || hostBinding === void 0 ? void 0 : hostBinding.artifactReader) !== null && _e !== void 0 ? _e : payload.artifactReader,
|
|
51639
51760
|
componentArtifacts: preparedPlan ? undefined : payload.componentArtifacts,
|
|
51640
51761
|
};
|
|
51641
51762
|
}
|
|
@@ -51667,7 +51788,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51667
51788
|
});
|
|
51668
51789
|
}
|
|
51669
51790
|
runProtocolV2() {
|
|
51670
|
-
var _a, _b, _c, _d, _e;
|
|
51791
|
+
var _a, _b, _c, _d, _e, _f;
|
|
51671
51792
|
return __awaiter(this, void 0, void 0, function* () {
|
|
51672
51793
|
yield this.captureProtocolV2PhysicalIdentity();
|
|
51673
51794
|
const deviceFeatures = yield this.getProtocolV2DeviceFeatures();
|
|
@@ -51679,15 +51800,28 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51679
51800
|
const deviceFirmwareType = getFirmwareType(deviceFeatures);
|
|
51680
51801
|
const firmwareType = (_a = this.params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
|
|
51681
51802
|
this.validateExpectedTargetVersions();
|
|
51682
|
-
|
|
51803
|
+
if (!this.params.preparedPlan &&
|
|
51804
|
+
this.params.resourceArchiveBinary &&
|
|
51805
|
+
((_b = this.params.targetsToUpdate) === null || _b === void 0 ? void 0 : _b.includes('resource'))) {
|
|
51806
|
+
const localMemoryHost = yield this.prepareProtocolV2LocalMemoryHost({
|
|
51807
|
+
features: deviceFeatures,
|
|
51808
|
+
firmwareType,
|
|
51809
|
+
});
|
|
51810
|
+
try {
|
|
51811
|
+
return yield this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
|
|
51812
|
+
}
|
|
51813
|
+
finally {
|
|
51814
|
+
localMemoryHost.release();
|
|
51815
|
+
}
|
|
51816
|
+
}
|
|
51817
|
+
const hasPreparedComponentArtifacts = Object.values((_c = this.params.componentArtifacts) !== null && _c !== void 0 ? _c : {}).some(Boolean);
|
|
51683
51818
|
if (this.params.preparedPlan || hasPreparedComponentArtifacts) {
|
|
51684
51819
|
return this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
|
|
51685
51820
|
}
|
|
51686
|
-
const wantsResources = !!((
|
|
51821
|
+
const wantsResources = !!((_d = this.params.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.includes('resource'));
|
|
51687
51822
|
let fwBinaryMap = [];
|
|
51688
51823
|
let bootloaderBinary = null;
|
|
51689
51824
|
let installItems;
|
|
51690
|
-
let resourceBundles = [];
|
|
51691
51825
|
try {
|
|
51692
51826
|
this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
|
|
51693
51827
|
fwBinaryMap = this.collectExplicitTargetBinaries();
|
|
@@ -51697,16 +51831,13 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51697
51831
|
fwBinaryMap,
|
|
51698
51832
|
});
|
|
51699
51833
|
const missingFirmwareTargets = this.getMissingProtocolV2FirmwareTargets(explicitInstallItems);
|
|
51700
|
-
const needsRemoteFirmware = ((
|
|
51834
|
+
const needsRemoteFirmware = ((_e = this.params.targetsToUpdate) === null || _e === void 0 ? void 0 : _e.length)
|
|
51701
51835
|
? missingFirmwareTargets.length > 0
|
|
51702
51836
|
: explicitInstallItems.length === 0;
|
|
51703
51837
|
if (wantsResources) {
|
|
51704
|
-
|
|
51705
|
-
|
|
51706
|
-
|
|
51707
|
-
});
|
|
51708
|
-
}
|
|
51709
|
-
resourceBundles = yield this.prepareProtocolV2LocalResourceArchive(this.params.resourceArchiveBinary);
|
|
51838
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 resource archive must be provided through a local or external PreparedPlan', {
|
|
51839
|
+
firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
|
|
51840
|
+
});
|
|
51710
51841
|
}
|
|
51711
51842
|
if (needsRemoteFirmware &&
|
|
51712
51843
|
(this.params.artifactReader ||
|
|
@@ -51730,7 +51861,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51730
51861
|
if (typeof err === 'object' &&
|
|
51731
51862
|
err !== null &&
|
|
51732
51863
|
'params' in err &&
|
|
51733
|
-
((
|
|
51864
|
+
((_f = err.params) === null || _f === void 0 ? void 0 : _f.firmwareUpdateCode) === 'FirmwareArtifactsNotPrepared') {
|
|
51734
51865
|
throw err;
|
|
51735
51866
|
}
|
|
51736
51867
|
if (err instanceof hdShared.HardwareError && err.errorCode === hdShared.HardwareErrorCode.NetworkError) {
|
|
@@ -51738,14 +51869,11 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51738
51869
|
}
|
|
51739
51870
|
throw normalizeFirmwarePreparationError(err);
|
|
51740
51871
|
}
|
|
51741
|
-
if (!bootloaderBinary &&
|
|
51742
|
-
fwBinaryMap.length === 0 &&
|
|
51743
|
-
!(installItems === null || installItems === void 0 ? void 0 : installItems.length) &&
|
|
51744
|
-
resourceBundles.length === 0) {
|
|
51872
|
+
if (!bootloaderBinary && fwBinaryMap.length === 0 && !(installItems === null || installItems === void 0 ? void 0 : installItems.length)) {
|
|
51745
51873
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, 'No firmware to update');
|
|
51746
51874
|
}
|
|
51747
|
-
return this.executeProtocolV2Update(Object.assign(
|
|
51748
|
-
bootloaderBinary }, (installItems ? { installItems } : undefined))
|
|
51875
|
+
return this.executeProtocolV2Update(Object.assign({ fwBinaryMap,
|
|
51876
|
+
bootloaderBinary }, (installItems ? { installItems } : undefined)));
|
|
51749
51877
|
});
|
|
51750
51878
|
}
|
|
51751
51879
|
openProtocolV2PreparedSource(artifact) {
|
|
@@ -51840,14 +51968,127 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51840
51968
|
return installSources;
|
|
51841
51969
|
});
|
|
51842
51970
|
}
|
|
51971
|
+
prepareProtocolV2LocalMemoryHost({ features, firmwareType, }) {
|
|
51972
|
+
var _a, _b;
|
|
51973
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51974
|
+
const installItems = this.buildProtocolV2InstallItems({
|
|
51975
|
+
bootloaderBinary: this.prepareBootloaderBinary(),
|
|
51976
|
+
fwBinaryMap: this.collectExplicitTargetBinaries(),
|
|
51977
|
+
});
|
|
51978
|
+
const requestedComponentTargets = new Set(((_a = this.params.targetsToUpdate) !== null && _a !== void 0 ? _a : []).filter((target) => target !== 'resource' && target !== 'boot_resources'));
|
|
51979
|
+
const localComponentTargets = new Set(installItems.flatMap(item => {
|
|
51980
|
+
const target = PROTOCOL_V2_UPDATE_TARGET_BY_TARGET_ID.get(item.targetId);
|
|
51981
|
+
return target ? [target] : [];
|
|
51982
|
+
}));
|
|
51983
|
+
const missingTarget = Array.from(requestedComponentTargets).find(target => !localComponentTargets.has(target));
|
|
51984
|
+
if (missingTarget) {
|
|
51985
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local update has no binary for requested target ${missingTarget}`, {
|
|
51986
|
+
firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
|
|
51987
|
+
artifactName: missingTarget,
|
|
51988
|
+
});
|
|
51989
|
+
}
|
|
51990
|
+
const planArtifacts = [];
|
|
51991
|
+
const memoryArtifacts = [];
|
|
51992
|
+
for (const item of installItems) {
|
|
51993
|
+
const target = PROTOCOL_V2_UPDATE_TARGET_BY_TARGET_ID.get(item.targetId);
|
|
51994
|
+
if (!target || item.binary.byteLength <= 0) {
|
|
51995
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local firmware artifact is invalid: ${item.fileName}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
51996
|
+
}
|
|
51997
|
+
const artifactId = `component:${target}`;
|
|
51998
|
+
planArtifacts.push(Object.assign({ artifactId,
|
|
51999
|
+
target, container: 'raw', logicalName: item.fileName, expectedSize: item.binary.byteLength, expectedSha256: bytesToHex(sha256.sha256(new Uint8Array(item.binary))) }, (((_b = this.params.expectedTargetVersions) === null || _b === void 0 ? void 0 : _b[target])
|
|
52000
|
+
? { targetVersion: this.params.expectedTargetVersions[target] }
|
|
52001
|
+
: {})));
|
|
52002
|
+
memoryArtifacts.push({ artifactId, binary: item.binary });
|
|
52003
|
+
}
|
|
52004
|
+
const resourceArchive = yield this.prepareProtocolV2LocalResourceArchive(this.params.resourceArchiveBinary);
|
|
52005
|
+
const resourceArtifactId = 'resource:archive';
|
|
52006
|
+
planArtifacts.push({
|
|
52007
|
+
artifactId: resourceArtifactId,
|
|
52008
|
+
target: 'resource',
|
|
52009
|
+
container: 'zip',
|
|
52010
|
+
logicalName: 'protocol-v2-local-resource-archive',
|
|
52011
|
+
expectedSize: resourceArchive.binary.byteLength,
|
|
52012
|
+
expectedSha256: bytesToHex(sha256.sha256(new Uint8Array(resourceArchive.binary))),
|
|
52013
|
+
});
|
|
52014
|
+
memoryArtifacts.push({
|
|
52015
|
+
artifactId: resourceArtifactId,
|
|
52016
|
+
binary: resourceArchive.binary,
|
|
52017
|
+
materializedEntries: resourceArchive.materializedEntries,
|
|
52018
|
+
});
|
|
52019
|
+
const plan = buildProtocolV2LocalFirmwareUpdatePlan({
|
|
52020
|
+
features,
|
|
52021
|
+
firmwareType,
|
|
52022
|
+
platform: this.params.platform,
|
|
52023
|
+
artifacts: planArtifacts,
|
|
52024
|
+
});
|
|
52025
|
+
let memoryHost;
|
|
52026
|
+
try {
|
|
52027
|
+
memoryHost = prepareFirmwareUpdateV4MemoryHost({
|
|
52028
|
+
sdk: {
|
|
52029
|
+
prepareFirmwareUpdatePlan,
|
|
52030
|
+
registerFirmwareUpdateHostBinding,
|
|
52031
|
+
unregisterFirmwareUpdateHostBinding,
|
|
52032
|
+
},
|
|
52033
|
+
plan,
|
|
52034
|
+
artifacts: memoryArtifacts,
|
|
52035
|
+
});
|
|
52036
|
+
const preparedPlan = validateFirmwareUpdatePreparedPlan(memoryHost.preparedPlan);
|
|
52037
|
+
assertFirmwareUpdatePreparedPlanBinding({
|
|
52038
|
+
preparedPlan,
|
|
52039
|
+
executor: 'v4',
|
|
52040
|
+
platform: this.params.platform,
|
|
52041
|
+
scopeTargets: [],
|
|
52042
|
+
bindings: [],
|
|
52043
|
+
});
|
|
52044
|
+
assertFirmwareUpdatePreparedPlanDeviceIdentity({
|
|
52045
|
+
preparedPlan,
|
|
52046
|
+
deviceIdentity: this.protocolV2ExpectedSerialNumber,
|
|
52047
|
+
});
|
|
52048
|
+
const hostBinding = resolveFirmwareUpdateHostBinding(memoryHost.hostBindingGeneration, preparedPlan.preparedPlanDigest);
|
|
52049
|
+
this.params.preparedPlan = preparedPlan;
|
|
52050
|
+
this.params.targetsToUpdate = [...preparedPlan.targetsToUpdate];
|
|
52051
|
+
this.params.artifactReader = hostBinding.artifactReader;
|
|
52052
|
+
this.params.componentArtifacts = undefined;
|
|
52053
|
+
return memoryHost;
|
|
52054
|
+
}
|
|
52055
|
+
catch (error) {
|
|
52056
|
+
memoryHost === null || memoryHost === void 0 ? void 0 : memoryHost.release();
|
|
52057
|
+
throw error;
|
|
52058
|
+
}
|
|
52059
|
+
});
|
|
52060
|
+
}
|
|
51843
52061
|
prepareProtocolV2LocalResourceArchive(binary) {
|
|
51844
52062
|
var _a;
|
|
51845
52063
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52064
|
+
if (binary.byteLength <= 0 || binary.byteLength > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES) {
|
|
52065
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP archive size is invalid', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52066
|
+
}
|
|
51846
52067
|
const zip = yield JSZip__default["default"].loadAsync(binary);
|
|
51847
|
-
const
|
|
52068
|
+
const zipEntries = Object.values(zip.files);
|
|
52069
|
+
if (zipEntries.some(entry => entry.unsafeOriginalName && entry.unsafeOriginalName !== entry.name)) {
|
|
52070
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP contains an unsafe entry path', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52071
|
+
}
|
|
52072
|
+
const entries = zipEntries.filter(entry => !entry.dir);
|
|
51848
52073
|
if (entries.length === 0 || entries.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT + 1) {
|
|
51849
52074
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP entry set is invalid', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
51850
52075
|
}
|
|
52076
|
+
let declaredUncompressedSize = 0;
|
|
52077
|
+
let declaredCompressedSize = 0;
|
|
52078
|
+
for (const entry of entries) {
|
|
52079
|
+
const sizes = getProtocolV2ZipEntrySizes(entry);
|
|
52080
|
+
declaredCompressedSize += sizes.compressedSize;
|
|
52081
|
+
declaredUncompressedSize += sizes.uncompressedSize;
|
|
52082
|
+
const entryLimit = entry.name === 'manifest.json'
|
|
52083
|
+
? PROTOCOL_V2_RESOURCE_MANIFEST_MAX_BYTES
|
|
52084
|
+
: PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES;
|
|
52085
|
+
if (sizes.uncompressedSize > entryLimit ||
|
|
52086
|
+
declaredCompressedSize > binary.byteLength ||
|
|
52087
|
+
declaredUncompressedSize >
|
|
52088
|
+
PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES + PROTOCOL_V2_RESOURCE_MANIFEST_MAX_BYTES) {
|
|
52089
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP declared size exceeds the allowed limit', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52090
|
+
}
|
|
52091
|
+
}
|
|
51851
52092
|
const manifestEntry = zip.file('manifest.json');
|
|
51852
52093
|
if (!manifestEntry) {
|
|
51853
52094
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP has no manifest.json', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
@@ -51878,33 +52119,27 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
51878
52119
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 local resource ZIP contains an unexpected entry', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
51879
52120
|
}
|
|
51880
52121
|
let totalSize = 0;
|
|
51881
|
-
const
|
|
51882
|
-
|
|
52122
|
+
const materializedEntries = [
|
|
52123
|
+
{ entryName: 'manifest.json', binary: manifestBinary },
|
|
52124
|
+
];
|
|
52125
|
+
for (const file of selectedFiles) {
|
|
51883
52126
|
const entry = zip.file(file.archive_path);
|
|
51884
52127
|
if (!entry) {
|
|
51885
52128
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local resource ZIP is missing ${file.archive_path}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
51886
52129
|
}
|
|
52130
|
+
const { uncompressedSize } = getProtocolV2ZipEntrySizes(entry);
|
|
52131
|
+
totalSize += uncompressedSize;
|
|
52132
|
+
if (uncompressedSize !== file.size || totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES) {
|
|
52133
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local resource file declared size is invalid: ${file.archive_path}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
|
|
52134
|
+
}
|
|
51887
52135
|
const fileBinary = yield entry.async('arraybuffer');
|
|
51888
52136
|
const digest = bytesToHex(sha256.sha256(new Uint8Array(fileBinary)));
|
|
51889
52137
|
if (fileBinary.byteLength !== file.size || digest !== file.sha256.toLowerCase()) {
|
|
51890
52138
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 local resource file does not match manifest: ${file.archive_path}`, { firmwareUpdateCode: 'FirmwareArtifactReceiptMismatch' });
|
|
51891
52139
|
}
|
|
51892
|
-
|
|
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
|
-
: {})));
|
|
52140
|
+
materializedEntries.push({ entryName: file.archive_path, binary: fileBinary });
|
|
51906
52141
|
}
|
|
51907
|
-
return
|
|
52142
|
+
return { binary, materializedEntries };
|
|
51908
52143
|
});
|
|
51909
52144
|
}
|
|
51910
52145
|
prepareProtocolV2ResourceSources() {
|
|
@@ -52182,7 +52417,9 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52182
52417
|
const target = PROTOCOL_V2_UPDATE_TARGET_BY_TARGET_ID.get(item.targetId);
|
|
52183
52418
|
return target ? [target] : [];
|
|
52184
52419
|
}));
|
|
52185
|
-
return ((_a = this.params.targetsToUpdate) !== null && _a !== void 0 ? _a : [])
|
|
52420
|
+
return ((_a = this.params.targetsToUpdate) !== null && _a !== void 0 ? _a : [])
|
|
52421
|
+
.filter((target) => target !== 'resource' && target !== 'boot_resources')
|
|
52422
|
+
.filter(target => !preparedTargets.has(target));
|
|
52186
52423
|
}
|
|
52187
52424
|
buildProtocolV2InstallItems({ bootloaderBinary, fwBinaryMap, }) {
|
|
52188
52425
|
const installItems = [];
|
|
@@ -52231,7 +52468,17 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
|
|
|
52231
52468
|
if (!component.url) {
|
|
52232
52469
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Missing Protocol V2 firmware component url: ${key}/${component.target}`);
|
|
52233
52470
|
}
|
|
52471
|
+
const expectedFingerprint = normalizeProtocolV2Hex(component.fingerprint);
|
|
52472
|
+
if (!Number.isSafeInteger(component.expectedSize) ||
|
|
52473
|
+
Number(component.expectedSize) <= 0 ||
|
|
52474
|
+
!expectedFingerprint ||
|
|
52475
|
+
!/^[0-9a-f]{64}$/u.test(expectedFingerprint)) {
|
|
52476
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 firmware component integrity metadata is invalid: ${key}/${component.target}`, { firmwareUpdateCode: 'FirmwarePlanInvalid' });
|
|
52477
|
+
}
|
|
52234
52478
|
const { binary } = yield getSysResourceBinary(component.url);
|
|
52479
|
+
if (binary.byteLength !== component.expectedSize) {
|
|
52480
|
+
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 firmware size mismatch: ${key}/${component.target}`, { firmwareUpdateCode: 'FirmwareArtifactReceiptMismatch' });
|
|
52481
|
+
}
|
|
52235
52482
|
if (!isProtocolV2FirmwareFingerprintValid(binary, component.fingerprint)) {
|
|
52236
52483
|
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 firmware fingerprint mismatch: ${key}/${component.target}`);
|
|
52237
52484
|
}
|
|
@@ -65192,86 +65439,6 @@ const switchTransport = ({ env, Transport, plugin, }) => {
|
|
|
65192
65439
|
initConnector();
|
|
65193
65440
|
};
|
|
65194
65441
|
|
|
65195
|
-
let memoryHostSequence = 0;
|
|
65196
|
-
const createReference = (binary, prefix) => {
|
|
65197
|
-
const digest = utils.bytesToHex(sha256.sha256(new Uint8Array(binary)));
|
|
65198
|
-
return {
|
|
65199
|
-
artifactRef: `fwmem:${prefix}:${digest.slice(0, 32)}`,
|
|
65200
|
-
size: binary.byteLength,
|
|
65201
|
-
sha256: digest,
|
|
65202
|
-
};
|
|
65203
|
-
};
|
|
65204
|
-
function prepareFirmwareUpdateV4MemoryHost({ sdk, plan, artifacts, }) {
|
|
65205
|
-
if (plan.executor !== 'v4') {
|
|
65206
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Firmware memory host only supports V4 plans');
|
|
65207
|
-
}
|
|
65208
|
-
memoryHostSequence += 1;
|
|
65209
|
-
const hostId = `${Date.now()}:${memoryHostSequence}`;
|
|
65210
|
-
const binaries = new Map();
|
|
65211
|
-
const inputs = artifacts.map((input, artifactIndex) => {
|
|
65212
|
-
var _a;
|
|
65213
|
-
const artifact = createReference(input.binary, `${hostId}:artifact:${artifactIndex}`);
|
|
65214
|
-
binaries.set(artifact.artifactRef, new Uint8Array(input.binary));
|
|
65215
|
-
const materializedEntries = (_a = input.materializedEntries) === null || _a === void 0 ? void 0 : _a.map((entry, entryIndex) => {
|
|
65216
|
-
const entryArtifact = createReference(entry.binary, `${hostId}:entry:${artifactIndex}:${entryIndex}`);
|
|
65217
|
-
binaries.set(entryArtifact.artifactRef, new Uint8Array(entry.binary));
|
|
65218
|
-
return {
|
|
65219
|
-
entryName: entry.entryName,
|
|
65220
|
-
artifact: entryArtifact,
|
|
65221
|
-
};
|
|
65222
|
-
});
|
|
65223
|
-
return Object.assign({ artifactId: input.artifactId, artifact }, ((materializedEntries === null || materializedEntries === void 0 ? void 0 : materializedEntries.length) ? { materializedEntries } : {}));
|
|
65224
|
-
});
|
|
65225
|
-
const preparedPlan = sdk.prepareFirmwareUpdatePlan({
|
|
65226
|
-
plan,
|
|
65227
|
-
leaseRef: `fwmemlease:${hostId}`,
|
|
65228
|
-
artifacts: inputs,
|
|
65229
|
-
});
|
|
65230
|
-
const readers = new Map();
|
|
65231
|
-
let readerSequence = 0;
|
|
65232
|
-
const artifactReader = {
|
|
65233
|
-
open({ artifactRef }) {
|
|
65234
|
-
const binary = binaries.get(artifactRef);
|
|
65235
|
-
if (!binary) {
|
|
65236
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Firmware memory artifact is unavailable');
|
|
65237
|
-
}
|
|
65238
|
-
readerSequence += 1;
|
|
65239
|
-
const readerId = `fwmemreader:${hostId}:${readerSequence}`;
|
|
65240
|
-
readers.set(readerId, binary);
|
|
65241
|
-
return Promise.resolve({ readerId, size: binary.byteLength });
|
|
65242
|
-
},
|
|
65243
|
-
read({ readerId, offset, length }) {
|
|
65244
|
-
const binary = readers.get(readerId);
|
|
65245
|
-
if (!binary || offset < 0 || length <= 0 || offset + length > binary.byteLength) {
|
|
65246
|
-
throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Firmware memory artifact read is invalid');
|
|
65247
|
-
}
|
|
65248
|
-
const data = binary.slice(offset, offset + length).buffer;
|
|
65249
|
-
return Promise.resolve({
|
|
65250
|
-
data,
|
|
65251
|
-
bytesRead: data.byteLength,
|
|
65252
|
-
eof: offset + length === binary.byteLength,
|
|
65253
|
-
});
|
|
65254
|
-
},
|
|
65255
|
-
close({ readerId }) {
|
|
65256
|
-
readers.delete(readerId);
|
|
65257
|
-
return Promise.resolve();
|
|
65258
|
-
},
|
|
65259
|
-
};
|
|
65260
|
-
const hostBindingGeneration = sdk.registerFirmwareUpdateHostBinding({
|
|
65261
|
-
artifactReader,
|
|
65262
|
-
preparedPlanDigest: preparedPlan.preparedPlanDigest,
|
|
65263
|
-
});
|
|
65264
|
-
return {
|
|
65265
|
-
preparedPlan,
|
|
65266
|
-
hostBindingGeneration,
|
|
65267
|
-
release: () => {
|
|
65268
|
-
sdk.unregisterFirmwareUpdateHostBinding(hostBindingGeneration);
|
|
65269
|
-
readers.clear();
|
|
65270
|
-
binaries.clear();
|
|
65271
|
-
},
|
|
65272
|
-
};
|
|
65273
|
-
}
|
|
65274
|
-
|
|
65275
65442
|
const HardwareSdk = ({ init, call, dispose, eventEmitter, uiResponse, cancel, updateSettings, switchTransport, }) => inject({
|
|
65276
65443
|
init,
|
|
65277
65444
|
call,
|
|
@@ -94,7 +94,7 @@ export interface FirmwareUpdateV3Params {
|
|
|
94
94
|
}>;
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
|
-
export type FirmwareUpdateV4Target = 'boot' | 'app_v1' | 'app_v2' | 'coprocessor' | 'resource' | 'se01' | 'se02' | 'se03' | 'se04';
|
|
97
|
+
export type FirmwareUpdateV4Target = 'boot' | 'boot_resources' | 'app_v1' | 'app_v2' | 'coprocessor' | 'resource' | 'se01' | 'se02' | 'se03' | 'se04';
|
|
98
98
|
export interface FirmwareUpdateV4Params {
|
|
99
99
|
preparedPlan?: FirmwareUpdatePreparedPlan;
|
|
100
100
|
hostBindingGeneration?: number;
|
|
@@ -114,9 +114,19 @@ export interface FirmwareUpdateV4Params {
|
|
|
114
114
|
se03Binary?: ArrayBuffer;
|
|
115
115
|
se04Binary?: ArrayBuffer;
|
|
116
116
|
resourceArchiveBinary?: ArrayBuffer;
|
|
117
|
+
resourceFiles?: Array<{
|
|
118
|
+
binary: ArrayBuffer;
|
|
119
|
+
devicePath: string;
|
|
120
|
+
size?: number;
|
|
121
|
+
fileHash?: string;
|
|
122
|
+
}>;
|
|
117
123
|
forcedUpdateRes?: boolean;
|
|
118
124
|
artifactReader?: FirmwareArtifactReader;
|
|
119
|
-
componentArtifacts?: Partial<Record<Exclude<FirmwareUpdateV4Target, 'resource'>, FirmwareArtifactReference>>;
|
|
125
|
+
componentArtifacts?: Partial<Record<Exclude<FirmwareUpdateV4Target, 'resource' | 'boot_resources'>, FirmwareArtifactReference>>;
|
|
126
|
+
resourceBundleArtifacts?: Array<{
|
|
127
|
+
name: string;
|
|
128
|
+
artifact: FirmwareArtifactReference;
|
|
129
|
+
}>;
|
|
120
130
|
}
|
|
121
131
|
export declare function registerFirmwareUpdateHostBinding(binding: FirmwareUpdateHostBinding): number;
|
|
122
132
|
export declare function unregisterFirmwareUpdateHostBinding(generation?: number): boolean;
|
|
@@ -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.
|
|
3
|
+
"version": "1.2.0-alpha.89",
|
|
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.
|
|
29
|
-
"@onekeyfe/hd-transport": "1.2.0-alpha.
|
|
28
|
+
"@onekeyfe/hd-shared": "1.2.0-alpha.89",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.89",
|
|
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": "
|
|
47
|
+
"gitHead": "4730d9cdba7270cd9aef237a9076b36dd89f37c1"
|
|
48
48
|
}
|