@onekeyfe/hd-core 1.2.0-alpha.120 → 1.2.0-alpha.121
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__/get-device-state.test.ts +33 -0
- package/dist/device/Device.d.ts +11 -3
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.js +22 -13
- package/package.json +4 -4
- package/src/device/Device.ts +32 -10
|
@@ -116,6 +116,39 @@ describe('getDeviceState', () => {
|
|
|
116
116
|
expect(state).not.toHaveProperty('session');
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
+
test('emits an authoritative Protocol V1 settings snapshot when the SDK cache is unchanged', async () => {
|
|
120
|
+
const typedCall = jest.fn().mockResolvedValue({
|
|
121
|
+
message: {
|
|
122
|
+
onekey_device_type: 'PRO',
|
|
123
|
+
initialized: true,
|
|
124
|
+
language: 'zh_hk',
|
|
125
|
+
brightness_prcent: 88,
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
const device = createV1Device(typedCall);
|
|
129
|
+
await device.getDeviceState({ refreshSections: ['settings'] });
|
|
130
|
+
const cachedRevision = device.state?.revision;
|
|
131
|
+
const onState = jest.fn();
|
|
132
|
+
device.on(DEVICE.STATE, onState);
|
|
133
|
+
|
|
134
|
+
const state = await device.getDeviceState({ refreshSections: ['settings'] });
|
|
135
|
+
|
|
136
|
+
expect(typedCall).toHaveBeenCalledTimes(2);
|
|
137
|
+
expect(typedCall).toHaveBeenLastCalledWith('GetFeatures', 'Features', {});
|
|
138
|
+
expect(state.settings.language).toBe('zh_hk');
|
|
139
|
+
expect(state.revision).toBe(cachedRevision);
|
|
140
|
+
expect(onState).toHaveBeenCalledWith(
|
|
141
|
+
device,
|
|
142
|
+
expect.objectContaining({
|
|
143
|
+
source: 'settings-read',
|
|
144
|
+
changedKeys: ['settings'],
|
|
145
|
+
state: expect.objectContaining({
|
|
146
|
+
settings: expect.objectContaining({ language: 'zh_hk', brightness: 88 }),
|
|
147
|
+
}),
|
|
148
|
+
})
|
|
149
|
+
);
|
|
150
|
+
});
|
|
151
|
+
|
|
119
152
|
test('hydrates Protocol V2 with separate DeviceInfoGet and DeviceStatusGet', async () => {
|
|
120
153
|
const typedCall = jest.fn().mockImplementation((requestType: string) => {
|
|
121
154
|
if (requestType === 'DeviceInfoGet') {
|
package/dist/device/Device.d.ts
CHANGED
|
@@ -146,10 +146,18 @@ export declare class Device extends EventEmitter {
|
|
|
146
146
|
clearStandardInternalState(_deviceId?: string): void;
|
|
147
147
|
initialize(options?: InitOptions): Promise<void>;
|
|
148
148
|
private _initializeProtocolV2;
|
|
149
|
-
getFeatures(
|
|
149
|
+
getFeatures(options?: {
|
|
150
|
+
source?: DeviceStateUpdateSource;
|
|
151
|
+
forceChangedKeys?: string[];
|
|
152
|
+
}): Promise<Features | undefined>;
|
|
150
153
|
getDeviceState(params?: DeviceStateReadOptions): Promise<import("../types").DeviceState>;
|
|
151
|
-
_updateFeatures(protoFeatures: PROTO.Features | Features, initSession?: boolean
|
|
152
|
-
|
|
154
|
+
_updateFeatures(protoFeatures: PROTO.Features | Features, initSession?: boolean, options?: {
|
|
155
|
+
source?: DeviceStateUpdateSource;
|
|
156
|
+
forceChangedKeys?: string[];
|
|
157
|
+
}): void;
|
|
158
|
+
updateState(patch: DeviceStatePatch, source: DeviceStateUpdateSource, options?: {
|
|
159
|
+
forceChangedKeys?: string[];
|
|
160
|
+
}): import("../types").DeviceState & {
|
|
153
161
|
raw?: import("../types").DeviceFeaturesRaw | undefined;
|
|
154
162
|
};
|
|
155
163
|
updateFeaturesPatch(patch: Partial<Features>, source: DeviceStateUpdateSource): Features | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -925,10 +925,18 @@ declare class Device extends EventEmitter {
|
|
|
925
925
|
* features state directly from DeviceInfoGet.
|
|
926
926
|
*/
|
|
927
927
|
private _initializeProtocolV2;
|
|
928
|
-
getFeatures(
|
|
928
|
+
getFeatures(options?: {
|
|
929
|
+
source?: DeviceStateUpdateSource;
|
|
930
|
+
forceChangedKeys?: string[];
|
|
931
|
+
}): Promise<Features | undefined>;
|
|
929
932
|
getDeviceState(params?: DeviceStateReadOptions): Promise<DeviceState>;
|
|
930
|
-
_updateFeatures(protoFeatures: Messages.Features | Features, initSession?: boolean
|
|
931
|
-
|
|
933
|
+
_updateFeatures(protoFeatures: Messages.Features | Features, initSession?: boolean, options?: {
|
|
934
|
+
source?: DeviceStateUpdateSource;
|
|
935
|
+
forceChangedKeys?: string[];
|
|
936
|
+
}): void;
|
|
937
|
+
updateState(patch: DeviceStatePatch, source: DeviceStateUpdateSource, options?: {
|
|
938
|
+
forceChangedKeys?: string[];
|
|
939
|
+
}): DeviceState & {
|
|
932
940
|
raw?: DeviceFeaturesRaw | undefined;
|
|
933
941
|
};
|
|
934
942
|
updateFeaturesPatch(patch: Partial<Features>, source: DeviceStateUpdateSource): Features | undefined;
|
package/dist/index.js
CHANGED
|
@@ -45624,7 +45624,7 @@ class Device extends events.exports {
|
|
|
45624
45624
|
}
|
|
45625
45625
|
});
|
|
45626
45626
|
}
|
|
45627
|
-
getFeatures() {
|
|
45627
|
+
getFeatures(options) {
|
|
45628
45628
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45629
45629
|
if (this.isProtocolV2()) {
|
|
45630
45630
|
const deviceInfo = yield requestProtocolV2DeviceInfo({
|
|
@@ -45633,7 +45633,7 @@ class Device extends events.exports {
|
|
|
45633
45633
|
return this.probeProtocolV2RuntimeState(deviceInfo);
|
|
45634
45634
|
}
|
|
45635
45635
|
const { message } = yield this.commands.typedCall('GetFeatures', 'Features', {});
|
|
45636
|
-
this._updateFeatures(message);
|
|
45636
|
+
this._updateFeatures(message, undefined, options);
|
|
45637
45637
|
return this.features;
|
|
45638
45638
|
});
|
|
45639
45639
|
}
|
|
@@ -45650,6 +45650,12 @@ class Device extends events.exports {
|
|
|
45650
45650
|
};
|
|
45651
45651
|
let initializedWithDeviceInfo = false;
|
|
45652
45652
|
let refreshedDeviceInfo;
|
|
45653
|
+
const protocolV1RefreshOptions = refresh.has('settings')
|
|
45654
|
+
? {
|
|
45655
|
+
source: 'settings-read',
|
|
45656
|
+
forceChangedKeys: ['settings'],
|
|
45657
|
+
}
|
|
45658
|
+
: undefined;
|
|
45653
45659
|
if (!this.state) {
|
|
45654
45660
|
if (this.isProtocolV2()) {
|
|
45655
45661
|
const deviceInfo = yield requestProtocolV2DeviceInfo({
|
|
@@ -45661,11 +45667,11 @@ class Device extends events.exports {
|
|
|
45661
45667
|
initializedWithDeviceInfo = true;
|
|
45662
45668
|
}
|
|
45663
45669
|
else {
|
|
45664
|
-
yield this.getFeatures();
|
|
45670
|
+
yield this.getFeatures(protocolV1RefreshOptions);
|
|
45665
45671
|
}
|
|
45666
45672
|
}
|
|
45667
45673
|
else if (!this.isProtocolV2() && refresh.size > 0) {
|
|
45668
|
-
yield this.getFeatures();
|
|
45674
|
+
yield this.getFeatures(protocolV1RefreshOptions);
|
|
45669
45675
|
}
|
|
45670
45676
|
const supportsProtocolV1OnekeyFeatures = this.getCurrentDeviceType() === hdShared.EDeviceType.Touch ||
|
|
45671
45677
|
this.getCurrentDeviceType() === hdShared.EDeviceType.Pro;
|
|
@@ -45702,36 +45708,39 @@ class Device extends events.exports {
|
|
|
45702
45708
|
return params.includeRaw ? cloneDeviceState(this.state) : createPublicDeviceState(this.state);
|
|
45703
45709
|
});
|
|
45704
45710
|
}
|
|
45705
|
-
_updateFeatures(protoFeatures, initSession) {
|
|
45706
|
-
var _a;
|
|
45711
|
+
_updateFeatures(protoFeatures, initSession, options) {
|
|
45712
|
+
var _a, _b;
|
|
45707
45713
|
const previousDeviceId = this.getCurrentDeviceId();
|
|
45708
45714
|
let feat = 'protocol' in protoFeatures
|
|
45709
45715
|
? protoFeatures
|
|
45710
45716
|
: buildProtocolV1FeaturesPayload(protoFeatures, this.features);
|
|
45711
45717
|
feat.unlocked = (_a = feat.unlocked) !== null && _a !== void 0 ? _a : true;
|
|
45712
45718
|
feat = fixFeaturesFirmwareVersion(feat);
|
|
45713
|
-
this.updateState(mapFeaturesToState(feat), 'initialize'
|
|
45719
|
+
this.updateState(mapFeaturesToState(feat), (_b = options === null || options === void 0 ? void 0 : options.source) !== null && _b !== void 0 ? _b : 'initialize', {
|
|
45720
|
+
forceChangedKeys: options === null || options === void 0 ? void 0 : options.forceChangedKeys,
|
|
45721
|
+
});
|
|
45714
45722
|
this.reconcileSessionCacheDeviceIdentity(previousDeviceId);
|
|
45715
45723
|
if (feat.deviceId && feat.sessionId) {
|
|
45716
45724
|
this.setInternalState(feat.sessionId, initSession);
|
|
45717
45725
|
}
|
|
45718
45726
|
}
|
|
45719
|
-
updateState(patch, source) {
|
|
45720
|
-
var _a;
|
|
45727
|
+
updateState(patch, source, options) {
|
|
45728
|
+
var _a, _b;
|
|
45721
45729
|
const result = this.stateStore.update(patch, source);
|
|
45722
|
-
|
|
45730
|
+
const changedKeys = result.changedKeys.length > 0 ? result.changedKeys : (_a = options === null || options === void 0 ? void 0 : options.forceChangedKeys) !== null && _a !== void 0 ? _a : [];
|
|
45731
|
+
if (changedKeys.length === 0)
|
|
45723
45732
|
return result.state;
|
|
45724
45733
|
const event = {
|
|
45725
|
-
connectId: (
|
|
45734
|
+
connectId: (_b = this.getConnectId()) !== null && _b !== void 0 ? _b : null,
|
|
45726
45735
|
state: createPublicDeviceState(result.state),
|
|
45727
45736
|
revision: result.revision,
|
|
45728
45737
|
source,
|
|
45729
|
-
changedKeys
|
|
45738
|
+
changedKeys,
|
|
45730
45739
|
};
|
|
45731
45740
|
Log$g.debug('Device state updated', {
|
|
45732
45741
|
source,
|
|
45733
45742
|
revision: result.revision,
|
|
45734
|
-
changedKeyCount:
|
|
45743
|
+
changedKeyCount: changedKeys.length,
|
|
45735
45744
|
});
|
|
45736
45745
|
this.emit(DEVICE.STATE, this, event);
|
|
45737
45746
|
if (result.state.protocol === 'V1') {
|
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.121",
|
|
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.121",
|
|
29
|
+
"@onekeyfe/hd-transport": "1.2.0-alpha.121",
|
|
30
30
|
"axios": "1.15.2",
|
|
31
31
|
"bignumber.js": "^9.0.2",
|
|
32
32
|
"buffer": "^6.0.3",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"@types/w3c-web-usb": "^1.0.10",
|
|
47
47
|
"@types/web-bluetooth": "^0.0.21"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "916633f46e4d8e0599af2956a639474dd3cbd9ec"
|
|
50
50
|
}
|
package/src/device/Device.ts
CHANGED
|
@@ -989,7 +989,7 @@ export class Device extends EventEmitter {
|
|
|
989
989
|
}
|
|
990
990
|
}
|
|
991
991
|
|
|
992
|
-
async getFeatures() {
|
|
992
|
+
async getFeatures(options?: { source?: DeviceStateUpdateSource; forceChangedKeys?: string[] }) {
|
|
993
993
|
if (this.isProtocolV2()) {
|
|
994
994
|
const deviceInfo = await requestProtocolV2DeviceInfo({
|
|
995
995
|
commands: this.commands,
|
|
@@ -998,7 +998,7 @@ export class Device extends EventEmitter {
|
|
|
998
998
|
}
|
|
999
999
|
|
|
1000
1000
|
const { message } = await this.commands.typedCall('GetFeatures', 'Features', {});
|
|
1001
|
-
this._updateFeatures(message);
|
|
1001
|
+
this._updateFeatures(message, undefined, options);
|
|
1002
1002
|
return this.features;
|
|
1003
1003
|
}
|
|
1004
1004
|
|
|
@@ -1012,6 +1012,13 @@ export class Device extends EventEmitter {
|
|
|
1012
1012
|
let initializedWithDeviceInfo = false;
|
|
1013
1013
|
let refreshedDeviceInfo: ProtocolV2DeviceInfo | undefined;
|
|
1014
1014
|
|
|
1015
|
+
const protocolV1RefreshOptions = refresh.has('settings')
|
|
1016
|
+
? {
|
|
1017
|
+
source: 'settings-read' as const,
|
|
1018
|
+
forceChangedKeys: ['settings'],
|
|
1019
|
+
}
|
|
1020
|
+
: undefined;
|
|
1021
|
+
|
|
1015
1022
|
if (!this.state) {
|
|
1016
1023
|
if (this.isProtocolV2()) {
|
|
1017
1024
|
const deviceInfo = await requestProtocolV2DeviceInfo({
|
|
@@ -1022,10 +1029,10 @@ export class Device extends EventEmitter {
|
|
|
1022
1029
|
refreshedDeviceInfo = deviceInfo;
|
|
1023
1030
|
initializedWithDeviceInfo = true;
|
|
1024
1031
|
} else {
|
|
1025
|
-
await this.getFeatures();
|
|
1032
|
+
await this.getFeatures(protocolV1RefreshOptions);
|
|
1026
1033
|
}
|
|
1027
1034
|
} else if (!this.isProtocolV2() && refresh.size > 0) {
|
|
1028
|
-
await this.getFeatures();
|
|
1035
|
+
await this.getFeatures(protocolV1RefreshOptions);
|
|
1029
1036
|
}
|
|
1030
1037
|
|
|
1031
1038
|
const supportsProtocolV1OnekeyFeatures =
|
|
@@ -1079,7 +1086,14 @@ export class Device extends EventEmitter {
|
|
|
1079
1086
|
return params.includeRaw ? cloneDeviceState(this.state) : createPublicDeviceState(this.state);
|
|
1080
1087
|
}
|
|
1081
1088
|
|
|
1082
|
-
_updateFeatures(
|
|
1089
|
+
_updateFeatures(
|
|
1090
|
+
protoFeatures: PROTO.Features | Features,
|
|
1091
|
+
initSession?: boolean,
|
|
1092
|
+
options?: {
|
|
1093
|
+
source?: DeviceStateUpdateSource;
|
|
1094
|
+
forceChangedKeys?: string[];
|
|
1095
|
+
}
|
|
1096
|
+
) {
|
|
1083
1097
|
const previousDeviceId = this.getCurrentDeviceId();
|
|
1084
1098
|
let feat =
|
|
1085
1099
|
'protocol' in protoFeatures
|
|
@@ -1090,28 +1104,36 @@ export class Device extends EventEmitter {
|
|
|
1090
1104
|
|
|
1091
1105
|
feat = fixFeaturesFirmwareVersion(feat);
|
|
1092
1106
|
|
|
1093
|
-
this.updateState(mapFeaturesToState(feat), 'initialize'
|
|
1107
|
+
this.updateState(mapFeaturesToState(feat), options?.source ?? 'initialize', {
|
|
1108
|
+
forceChangedKeys: options?.forceChangedKeys,
|
|
1109
|
+
});
|
|
1094
1110
|
this.reconcileSessionCacheDeviceIdentity(previousDeviceId);
|
|
1095
1111
|
if (feat.deviceId && feat.sessionId) {
|
|
1096
1112
|
this.setInternalState(feat.sessionId, initSession);
|
|
1097
1113
|
}
|
|
1098
1114
|
}
|
|
1099
1115
|
|
|
1100
|
-
updateState(
|
|
1116
|
+
updateState(
|
|
1117
|
+
patch: DeviceStatePatch,
|
|
1118
|
+
source: DeviceStateUpdateSource,
|
|
1119
|
+
options?: { forceChangedKeys?: string[] }
|
|
1120
|
+
) {
|
|
1101
1121
|
const result = this.stateStore.update(patch, source);
|
|
1102
|
-
|
|
1122
|
+
const changedKeys =
|
|
1123
|
+
result.changedKeys.length > 0 ? result.changedKeys : options?.forceChangedKeys ?? [];
|
|
1124
|
+
if (changedKeys.length === 0) return result.state;
|
|
1103
1125
|
|
|
1104
1126
|
const event: DeviceStateEvent = {
|
|
1105
1127
|
connectId: this.getConnectId() ?? null,
|
|
1106
1128
|
state: createPublicDeviceState(result.state),
|
|
1107
1129
|
revision: result.revision,
|
|
1108
1130
|
source,
|
|
1109
|
-
changedKeys
|
|
1131
|
+
changedKeys,
|
|
1110
1132
|
};
|
|
1111
1133
|
Log.debug('Device state updated', {
|
|
1112
1134
|
source,
|
|
1113
1135
|
revision: result.revision,
|
|
1114
|
-
changedKeyCount:
|
|
1136
|
+
changedKeyCount: changedKeys.length,
|
|
1115
1137
|
});
|
|
1116
1138
|
this.emit(DEVICE.STATE, this, event);
|
|
1117
1139
|
if (result.state.protocol === 'V1') {
|