fix(transport-bridge): match essential fields of the Descriptor

This commit is contained in:
Szymon Lesisz
2026-01-26 17:17:51 +01:00
committed by Tomáš Martykán
parent 7f1b910df6
commit 1634ca8d83
4 changed files with 22 additions and 20 deletions

View File

@@ -18,7 +18,6 @@
"build:lib": "yarn build:js"
},
"devDependencies": {
"@types/json-stable-stringify": "^1",
"esbuild": "^0.25.2",
"html-inline-script-webpack-plugin": "^3.2.1",
"html-webpack-plugin": "5.6.5",
@@ -32,7 +31,6 @@
"@trezor/theme": "workspace:*",
"@trezor/transport": "workspace:*",
"@trezor/utils": "workspace:*",
"json-stable-stringify": "^1.2.1",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-intl": "^8.0.6",

View File

@@ -1,5 +1,4 @@
import fs from 'fs/promises';
import stringify from 'json-stable-stringify';
import path from 'path';
import { URL } from 'url';
@@ -143,12 +142,28 @@ export class TrezordNode {
`http: resolving listen subscriptions. n of aborted subscriptions: ${aborted.length}`,
);
}
const [affected, unaffected] = arrayPartition(notAborted, subscription => {
const currentState = new Map(this.descriptors.map(d => [d.path, d]));
const changed = subscription.descriptors.some(d => {
const current = currentState.get(d.path);
if (!current) return true;
const [affected, unaffected] = arrayPartition(
notAborted,
// TODO this may be tricky comparison, e.g. when client send something extra in the descriptors
subscription => stringify(subscription.descriptors) !== stringify(this.descriptors),
);
currentState.delete(d.path);
const fields = [
'id',
'type',
'session',
'sessionOwner',
'debugSession',
'vendor',
'product',
] as (keyof Descriptor)[];
return fields.some(f => current[f] !== d[f]);
});
return changed || currentState.size > 0;
});
this.logger?.debug(
`http: affected subscriptions ${affected.length}. unaffected subscriptions ${unaffected.length}`,

View File

@@ -11,7 +11,6 @@
@types/chrome
@types/flexsearch
@types/git-url-parse
@types/json-stable-stringify
@types/jws
@types/karma
@types/lodash
@@ -47,7 +46,6 @@ git-url-parse
groestl-hash-js
html-inline-script-webpack-plugin
intersection-observer
json-stable-stringify
json5
jssha
karma

View File

@@ -15440,11 +15440,9 @@ __metadata:
"@trezor/theme": "workspace:*"
"@trezor/transport": "workspace:*"
"@trezor/utils": "workspace:*"
"@types/json-stable-stringify": "npm:^1"
esbuild: "npm:^0.25.2"
html-inline-script-webpack-plugin: "npm:^3.2.1"
html-webpack-plugin: "npm:5.6.5"
json-stable-stringify: "npm:^1.2.1"
react: "npm:19.1.0"
react-dom: "npm:19.1.0"
react-intl: "npm:^8.0.6"
@@ -16480,13 +16478,6 @@ __metadata:
languageName: node
linkType: hard
"@types/json-stable-stringify@npm:^1":
version: 1.0.36
resolution: "@types/json-stable-stringify@npm:1.0.36"
checksum: 10/765b07589e11a3896c3d06bb9e3a9be681e7edd95adf27370df0647a91bd2bfcfaf0e091fd4a13729343b388973f73f7e789d6cc62ab988240518a2d27c4a4e2
languageName: node
linkType: hard
"@types/json5@npm:^0.0.29":
version: 0.0.29
resolution: "@types/json5@npm:0.0.29"
@@ -31285,7 +31276,7 @@ __metadata:
languageName: node
linkType: hard
"json-stable-stringify@npm:^1.0.2, json-stable-stringify@npm:^1.2.1":
"json-stable-stringify@npm:^1.0.2":
version: 1.2.1
resolution: "json-stable-stringify@npm:1.2.1"
dependencies: