@onekeyfe/hd-transport 1.1.27-alpha.37 → 1.1.27-alpha.38
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__/protocol-v2.test.js +21 -0
- package/dist/index.js +38 -34
- package/dist/protocols/v2/session.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/protocols/v2/session.ts +53 -49
|
@@ -262,6 +262,27 @@ describe('Protocol V2 framing and session', () => {
|
|
|
262
262
|
});
|
|
263
263
|
});
|
|
264
264
|
|
|
265
|
+
test('session starts response timeout after the frame is written', async () => {
|
|
266
|
+
const response = ProtocolV2.encodeFrame(schemas, 'Success', {
|
|
267
|
+
message: 'ok',
|
|
268
|
+
});
|
|
269
|
+
const session = new ProtocolV2Session({
|
|
270
|
+
schemas,
|
|
271
|
+
router: 1,
|
|
272
|
+
writeFrame: () => new Promise(resolve => setTimeout(resolve, 30)),
|
|
273
|
+
readFrame: () => Promise.resolve(response),
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
await expect(
|
|
277
|
+
session.call('Ping', { message: 'hello' }, { timeoutMs: 10, expectedTypes: ['Success'] })
|
|
278
|
+
).resolves.toEqual({
|
|
279
|
+
type: 'Success',
|
|
280
|
+
message: {
|
|
281
|
+
message: 'ok',
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
|
|
265
286
|
test('session accepts response frames with a device-owned seq', async () => {
|
|
266
287
|
const response = ProtocolV2.encodeFrame(schemas, 'ProtoVersion', {
|
|
267
288
|
major_version: 2,
|
package/dist/index.js
CHANGED
|
@@ -902,7 +902,7 @@ class ProtocolV2Session {
|
|
|
902
902
|
call(name, data, callOptions = {}) {
|
|
903
903
|
const { schemas, router, packetSrc = PROTOCOL_V2_PACKET_SRC_COMMAND, writeFrame, readFrame, logger, logPrefix = 'ProtocolV2', createTimeoutError, } = this.options;
|
|
904
904
|
const callPromise = () => __awaiter(this, void 0, void 0, function* () {
|
|
905
|
-
var _a, _b
|
|
905
|
+
var _a, _b;
|
|
906
906
|
const shouldReduceDebug = shouldReduceProtocolV2Debug(name);
|
|
907
907
|
const frame = ProtocolV2.encodeFrame(schemas, name, data, {
|
|
908
908
|
packetSrc,
|
|
@@ -917,41 +917,45 @@ class ProtocolV2Session {
|
|
|
917
917
|
(_b = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _b === void 0 ? void 0 : _b.call(logger, `[${logPrefix}] TX frame name=${name} len=${frame.length} router=${frame[4]} attr=${frame[5]} seq=${expectedSeq} hex=${bytesToDebugHex(frame)}`);
|
|
918
918
|
}
|
|
919
919
|
yield writeFrame(frame);
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
920
|
+
const readResponse = () => __awaiter(this, void 0, void 0, function* () {
|
|
921
|
+
var _c, _d, _e, _f, _g, _h, _j, _k;
|
|
922
|
+
while (true) {
|
|
923
|
+
const rxFrame = yield readFrame();
|
|
924
|
+
if (!shouldReduceDebug) {
|
|
925
|
+
(_c = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _c === void 0 ? void 0 : _c.call(logger, `[${logPrefix}] RX frame len=${rxFrame.length} router=${rxFrame[4]} attr=${rxFrame[5]} seq=${rxFrame[6]} hex=${bytesToDebugHex(rxFrame)}`);
|
|
926
|
+
}
|
|
927
|
+
const decoded = ProtocolV2.decodeFrame(schemas, rxFrame, {
|
|
928
|
+
logger: shouldReduceDebug ? undefined : logger,
|
|
929
|
+
logPrefix,
|
|
930
|
+
context: `rx:${name}`,
|
|
931
|
+
});
|
|
932
|
+
if (!shouldReduceDebug && decoded.seq !== expectedSeq) {
|
|
933
|
+
(_d = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _d === void 0 ? void 0 : _d.call(logger, `[${logPrefix}] seq differs for ${name}: tx=${expectedSeq}, rx=${decoded.seq}`);
|
|
934
|
+
}
|
|
935
|
+
if (!shouldReduceDebug) {
|
|
936
|
+
(_e = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _e === void 0 ? void 0 : _e.call(logger, `[${logPrefix}] TX name=${name} seq=${expectedSeq} | RX seq=${decoded.seq} messageTypeId=${decoded.messageTypeId} pbPayload=${decoded.pbPayload.length}B`);
|
|
937
|
+
(_f = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _f === void 0 ? void 0 : _f.call(logger, `[${logPrefix}] RX payload type=${decoded.type} messageTypeId=${decoded.messageTypeId}`, sanitizeProtocolV2DebugPayload(decoded.message));
|
|
938
|
+
}
|
|
939
|
+
const response = call(decoded);
|
|
940
|
+
if ((_g = callOptions.intermediateTypes) === null || _g === void 0 ? void 0 : _g.includes(response.type)) {
|
|
941
|
+
(_h = callOptions.onIntermediateResponse) === null || _h === void 0 ? void 0 : _h.call(callOptions, response);
|
|
942
|
+
}
|
|
943
|
+
else if (isExpectedTerminalResponse(response, callOptions.expectedTypes)) {
|
|
944
|
+
return response;
|
|
945
|
+
}
|
|
946
|
+
else {
|
|
947
|
+
(_j = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _j === void 0 ? void 0 : _j.call(logger, `[${logPrefix}] skip unexpected response for ${name}: expected=${(_k = callOptions.expectedTypes) === null || _k === void 0 ? void 0 : _k.join('|')} got=${response.type}`);
|
|
948
|
+
}
|
|
924
949
|
}
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
}
|
|
933
|
-
if (!shouldReduceDebug) {
|
|
934
|
-
(_e = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _e === void 0 ? void 0 : _e.call(logger, `[${logPrefix}] TX name=${name} seq=${expectedSeq} | RX seq=${decoded.seq} messageTypeId=${decoded.messageTypeId} pbPayload=${decoded.pbPayload.length}B`);
|
|
935
|
-
(_f = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _f === void 0 ? void 0 : _f.call(logger, `[${logPrefix}] RX payload type=${decoded.type} messageTypeId=${decoded.messageTypeId}`, sanitizeProtocolV2DebugPayload(decoded.message));
|
|
936
|
-
}
|
|
937
|
-
const response = call(decoded);
|
|
938
|
-
if ((_g = callOptions.intermediateTypes) === null || _g === void 0 ? void 0 : _g.includes(response.type)) {
|
|
939
|
-
(_h = callOptions.onIntermediateResponse) === null || _h === void 0 ? void 0 : _h.call(callOptions, response);
|
|
940
|
-
}
|
|
941
|
-
else if (isExpectedTerminalResponse(response, callOptions.expectedTypes)) {
|
|
942
|
-
return response;
|
|
943
|
-
}
|
|
944
|
-
else {
|
|
945
|
-
(_j = logger === null || logger === void 0 ? void 0 : logger.debug) === null || _j === void 0 ? void 0 : _j.call(logger, `[${logPrefix}] skip unexpected response for ${name}: expected=${(_k = callOptions.expectedTypes) === null || _k === void 0 ? void 0 : _k.join('|')} got=${response.type}`);
|
|
946
|
-
}
|
|
947
|
-
}
|
|
948
|
-
});
|
|
949
|
-
return withProtocolTimeout(callPromise(), callOptions.timeoutMs, () => {
|
|
950
|
-
var _a;
|
|
951
|
-
return createTimeoutError
|
|
952
|
-
? createTimeoutError(name, (_a = callOptions.timeoutMs) !== null && _a !== void 0 ? _a : 0)
|
|
953
|
-
: new Error(`Protocol V2 response timeout after ${callOptions.timeoutMs}ms for ${name}`);
|
|
950
|
+
});
|
|
951
|
+
return withProtocolTimeout(readResponse(), callOptions.timeoutMs, () => {
|
|
952
|
+
var _a;
|
|
953
|
+
return createTimeoutError
|
|
954
|
+
? createTimeoutError(name, (_a = callOptions.timeoutMs) !== null && _a !== void 0 ? _a : 0)
|
|
955
|
+
: new Error(`Protocol V2 response timeout after ${callOptions.timeoutMs}ms for ${name}`);
|
|
956
|
+
});
|
|
954
957
|
});
|
|
958
|
+
return callPromise();
|
|
955
959
|
}
|
|
956
960
|
}
|
|
957
961
|
function probeProtocolV2({ call, timeoutMs, logger, logPrefix = 'ProtocolV2', onBeforeProbe, onProbeFailed, }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/protocols/v2/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKhF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,CAAC;AAEvD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AA0ID,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,UAQ7C;AAED,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,kBAAkB,EAAE,MAAM,KAAK,GAC9B,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;gBAEvC,OAAO,EAAE,wBAAwB;IAI7C,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,GAAE,qBAA0B,GACtC,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/protocols/v2/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/hd-transport",
|
|
3
|
-
"version": "1.1.27-alpha.
|
|
3
|
+
"version": "1.1.27-alpha.38",
|
|
4
4
|
"description": "Transport layer abstractions and utilities for OneKey hardware SDK.",
|
|
5
5
|
"author": "OneKey",
|
|
6
6
|
"homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
"long": "^4.0.0",
|
|
29
29
|
"protobufjs": "^6.11.2"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "71f3b20e3ec0d2c4b21b444501115dc8c0eba20b"
|
|
32
32
|
}
|
|
@@ -267,59 +267,63 @@ export class ProtocolV2Session {
|
|
|
267
267
|
|
|
268
268
|
await writeFrame(frame);
|
|
269
269
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
rxFrame[
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
270
|
+
const readResponse = async () => {
|
|
271
|
+
// Some Protocol V2 operations emit progress notifications before the
|
|
272
|
+
// terminal response. Consume those frames here so callers still see a
|
|
273
|
+
// request/terminal-response shaped API.
|
|
274
|
+
// eslint-disable-next-line no-constant-condition
|
|
275
|
+
while (true) {
|
|
276
|
+
const rxFrame = await readFrame();
|
|
277
|
+
if (!shouldReduceDebug) {
|
|
278
|
+
logger?.debug?.(
|
|
279
|
+
`[${logPrefix}] RX frame len=${rxFrame.length} router=${rxFrame[4]} attr=${
|
|
280
|
+
rxFrame[5]
|
|
281
|
+
} seq=${rxFrame[6]} hex=${bytesToDebugHex(rxFrame)}`
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
const decoded = ProtocolV2.decodeFrame(schemas, rxFrame, {
|
|
285
|
+
logger: shouldReduceDebug ? undefined : logger,
|
|
286
|
+
logPrefix,
|
|
287
|
+
context: `rx:${name}`,
|
|
288
|
+
});
|
|
289
|
+
if (!shouldReduceDebug && decoded.seq !== expectedSeq) {
|
|
290
|
+
logger?.debug?.(
|
|
291
|
+
`[${logPrefix}] seq differs for ${name}: tx=${expectedSeq}, rx=${decoded.seq}`
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
if (!shouldReduceDebug) {
|
|
295
|
+
logger?.debug?.(
|
|
296
|
+
`[${logPrefix}] TX name=${name} seq=${expectedSeq} | RX seq=${decoded.seq} messageTypeId=${decoded.messageTypeId} pbPayload=${decoded.pbPayload.length}B`
|
|
297
|
+
);
|
|
298
|
+
logger?.debug?.(
|
|
299
|
+
`[${logPrefix}] RX payload type=${decoded.type} messageTypeId=${decoded.messageTypeId}`,
|
|
300
|
+
sanitizeProtocolV2DebugPayload(decoded.message)
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
const response = check.call(decoded);
|
|
305
|
+
if (callOptions.intermediateTypes?.includes(response.type)) {
|
|
306
|
+
callOptions.onIntermediateResponse?.(response);
|
|
307
|
+
} else if (isExpectedTerminalResponse(response, callOptions.expectedTypes)) {
|
|
308
|
+
return response;
|
|
309
|
+
} else {
|
|
310
|
+
logger?.debug?.(
|
|
311
|
+
`[${logPrefix}] skip unexpected response for ${name}: expected=${callOptions.expectedTypes?.join(
|
|
312
|
+
'|'
|
|
313
|
+
)} got=${response.type}`
|
|
314
|
+
);
|
|
315
|
+
}
|
|
301
316
|
}
|
|
317
|
+
};
|
|
302
318
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
callOptions.
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
} else {
|
|
309
|
-
logger?.debug?.(
|
|
310
|
-
`[${logPrefix}] skip unexpected response for ${name}: expected=${callOptions.expectedTypes?.join(
|
|
311
|
-
'|'
|
|
312
|
-
)} got=${response.type}`
|
|
313
|
-
);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
319
|
+
return withProtocolTimeout(readResponse(), callOptions.timeoutMs, () =>
|
|
320
|
+
createTimeoutError
|
|
321
|
+
? createTimeoutError(name, callOptions.timeoutMs ?? 0)
|
|
322
|
+
: new Error(`Protocol V2 response timeout after ${callOptions.timeoutMs}ms for ${name}`)
|
|
323
|
+
);
|
|
316
324
|
};
|
|
317
325
|
|
|
318
|
-
return
|
|
319
|
-
createTimeoutError
|
|
320
|
-
? createTimeoutError(name, callOptions.timeoutMs ?? 0)
|
|
321
|
-
: new Error(`Protocol V2 response timeout after ${callOptions.timeoutMs}ms for ${name}`)
|
|
322
|
-
);
|
|
326
|
+
return callPromise();
|
|
323
327
|
}
|
|
324
328
|
}
|
|
325
329
|
|