@trezor/transport
Advanced tools
Comparing version 1.3.2-beta.1 to 1.3.2
@@ -1,48 +0,8 @@ | ||
import type { Descriptor } from '../types'; | ||
import { SessionsBackground } from './background'; | ||
import { RegisterBackgroundCallbacks } from './types'; | ||
export declare const initBackgroundInBrowser: () => { | ||
background: SharedWorker; | ||
requestFn: (params: Parameters<SessionsBackground["handleMessage"]>[0]) => Promise<import("./types").HandshakeResponse | import("./types").EnumerateDoneResponse | ({ | ||
success: false; | ||
error: "wrong previous session"; | ||
} & { | ||
id: number; | ||
}) | (import("../types").Success<{ | ||
session: import("../types").Session; | ||
path: import("../types").PathInternal; | ||
}> & { | ||
id: number; | ||
}) | ({ | ||
success: false; | ||
error: "descriptor not found"; | ||
} & { | ||
id: number; | ||
}) | (import("../types").Success<{ | ||
session: import("../types").Session; | ||
descriptors: Descriptor[]; | ||
}> & { | ||
id: number; | ||
}) | (import("../types").Success<{ | ||
path: import("../types").PathInternal; | ||
}> & { | ||
id: number; | ||
}) | ({ | ||
success: false; | ||
error: "session not found"; | ||
} & { | ||
id: number; | ||
}) | import("./types").ReleaseDoneResponse | import("./types").GetSessionsResponse | (import("../types").Success<{ | ||
path: import("../types").PathInternal; | ||
}> & { | ||
id: number; | ||
}) | (import("../types").Success<void> & { | ||
id: number; | ||
})>; | ||
export declare const initBackgroundInBrowser: (sessionsBackgroundUrl?: string) => Promise<{ | ||
background: SessionsBackground | SharedWorker; | ||
requestFn: SessionsBackground["handleMessage"]; | ||
registerBackgroundCallbacks: RegisterBackgroundCallbacks; | ||
} | { | ||
background: SessionsBackground; | ||
requestFn: <M extends import("./types").HandleMessageParams>(message: M) => Promise<import("./types").HandleMessageResponse<M>>; | ||
registerBackgroundCallbacks: RegisterBackgroundCallbacks; | ||
}; | ||
}>; | ||
//# sourceMappingURL=background-browser.d.ts.map |
@@ -6,6 +6,15 @@ "use strict"; | ||
const background_1 = require("./background"); | ||
const background_sharedworker_1 = tslib_1.__importDefault(require("./background-sharedworker")); | ||
const initBackgroundInBrowser = () => { | ||
const defaultSessionsBackgroundUrl = window.location.origin + | ||
`${process.env.ASSET_PREFIX || ''}/workers/sessions-background-sharedworker.js` | ||
.replace(/\/+/g, '/'); | ||
const initBackgroundInBrowser = (...args_1) => tslib_1.__awaiter(void 0, [...args_1], void 0, function* (sessionsBackgroundUrl = defaultSessionsBackgroundUrl) { | ||
try { | ||
const background = new background_sharedworker_1.default(); | ||
yield fetch(sessionsBackgroundUrl, { method: 'HEAD' }).then(response => { | ||
if (!response.ok) { | ||
throw new Error(`Failed to fetch sessions-background SharedWorker from url: ${sessionsBackgroundUrl}`); | ||
} | ||
}); | ||
const background = new SharedWorker(sessionsBackgroundUrl, { | ||
name: '@trezor/connect-web transport sessions worker', | ||
}); | ||
const requestFn = (params) => new Promise(resolve => { | ||
@@ -37,3 +46,3 @@ const onmessage = (message) => { | ||
catch (err) { | ||
console.warn('Unable to load background-sharedworker. Falling back to use local module. Say bye bye to tabs synchronization'); | ||
console.warn('Unable to load background-sharedworker. Falling back to use local module. Say bye bye to tabs synchronization. Error details: ', err.message); | ||
const background = new background_1.SessionsBackground(); | ||
@@ -51,4 +60,4 @@ const registerBackgroundCallbacks = onDescriptorsCallback => { | ||
} | ||
}; | ||
}); | ||
exports.initBackgroundInBrowser = initBackgroundInBrowser; | ||
//# sourceMappingURL=background-browser.js.map |
@@ -11,6 +11,6 @@ import { TypedEmitter } from '@trezor/utils'; | ||
private id; | ||
constructor({ requestFn, registerBackgroundCallbacks, }: { | ||
init({ requestFn, registerBackgroundCallbacks, }: { | ||
requestFn: SessionsBackground['handleMessage']; | ||
registerBackgroundCallbacks?: RegisterBackgroundCallbacks; | ||
}); | ||
}): void; | ||
handshake(): Promise<import("./types").HandshakeResponse>; | ||
@@ -17,0 +17,0 @@ enumerateDone(payload: EnumerateDoneRequest): Promise<import("./types").EnumerateDoneResponse>; |
@@ -7,7 +7,16 @@ "use strict"; | ||
class SessionsClient extends utils_2.TypedEmitter { | ||
constructor({ requestFn, registerBackgroundCallbacks, }) { | ||
super(); | ||
constructor() { | ||
super(...arguments); | ||
this.request = () => { | ||
throw new Error('SessionsClient: request method not provided'); | ||
}; | ||
this.caller = (0, utils_1.getWeakRandomId)(3); | ||
this.id = 0; | ||
} | ||
init({ requestFn, registerBackgroundCallbacks, }) { | ||
this.id = 0; | ||
this.request = params => { | ||
if (!requestFn) { | ||
throw new Error('SessionsClient: requestFn not provided'); | ||
} | ||
params.caller = this.caller; | ||
@@ -14,0 +23,0 @@ params.id = this.id; |
@@ -7,18 +7,10 @@ import { AbstractTransport, AbstractTransportParams, AbstractTransportMethodParams } from './abstract'; | ||
api: AbstractApi; | ||
sessionsClient: (typeof SessionsClient)['prototype']; | ||
} | ||
export declare abstract class AbstractApiTransport extends AbstractTransport { | ||
private sessionsClient; | ||
protected sessionsClient: SessionsClient; | ||
private sessionsBackground; | ||
protected api: AbstractApi; | ||
constructor({ messages, api, sessionsClient, logger }: ConstructorParams); | ||
init({ signal }?: AbstractTransportMethodParams<'init'>): Promise<import("../types").Success<undefined> | { | ||
constructor({ messages, api, logger }: ConstructorParams); | ||
init({ signal }?: AbstractTransportMethodParams<'init'>): Promise<import("../sessions/types").HandshakeResponse | { | ||
success: false; | ||
error: never; | ||
message: string | undefined; | ||
} | { | ||
success: false; | ||
error: "unexpected error"; | ||
message: string; | ||
} | { | ||
success: false; | ||
error: NonNullable<"Aborted by signal" | "Aborted by timeout">; | ||
@@ -25,0 +17,0 @@ message: string | undefined; |
@@ -5,2 +5,3 @@ "use strict"; | ||
const tslib_1 = require("tslib"); | ||
const background_1 = require("../sessions/background"); | ||
const utils_1 = require("@trezor/utils"); | ||
@@ -11,7 +12,9 @@ const protocol_1 = require("@trezor/protocol"); | ||
const receive_1 = require("../utils/receive"); | ||
const client_1 = require("../sessions/client"); | ||
const ERRORS = tslib_1.__importStar(require("../errors")); | ||
class AbstractApiTransport extends abstract_1.AbstractTransport { | ||
constructor({ messages, api, sessionsClient, logger }) { | ||
constructor({ messages, api, logger }) { | ||
super({ messages, logger }); | ||
this.sessionsClient = sessionsClient; | ||
this.sessionsClient = new client_1.SessionsClient(); | ||
this.sessionsBackground = new background_1.SessionsBackground(); | ||
this.api = api; | ||
@@ -21,7 +24,12 @@ } | ||
return this.scheduleAction(() => tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
this.sessionsClient.init({ | ||
requestFn: args => this.sessionsBackground.handleMessage(args), | ||
registerBackgroundCallbacks: () => { }, | ||
}); | ||
this.sessionsBackground.on('descriptors', descriptors => { | ||
this.sessionsClient.emit('descriptors', descriptors); | ||
}); | ||
const handshakeRes = yield this.sessionsClient.handshake(); | ||
this.stopped = !handshakeRes.success; | ||
return handshakeRes.success | ||
? this.success(undefined) | ||
: this.unknownError('handshake error'); | ||
return handshakeRes; | ||
}), { signal }); | ||
@@ -222,2 +230,3 @@ } | ||
}); | ||
this.sessionsBackground.dispose(); | ||
} | ||
@@ -224,0 +233,0 @@ } |
@@ -5,3 +5,2 @@ import { AbstractTransportParams } from './abstract'; | ||
name: "NodeUsbTransport"; | ||
private readonly sessionsBackground; | ||
constructor(params: AbstractTransportParams); | ||
@@ -13,4 +12,3 @@ listen(): import("../types").Success<undefined> | { | ||
}; | ||
stop(): void; | ||
} | ||
//# sourceMappingURL=nodeusb.d.ts.map |
@@ -6,4 +6,2 @@ "use strict"; | ||
const abstractApi_1 = require("./abstractApi"); | ||
const client_1 = require("../sessions/client"); | ||
const background_1 = require("../sessions/background"); | ||
const usb_2 = require("../api/usb"); | ||
@@ -13,10 +11,2 @@ class NodeUsbTransport extends abstractApi_1.AbstractApiTransport { | ||
const { messages, logger, debugLink } = params; | ||
const sessionsBackground = new background_1.SessionsBackground(); | ||
const sessionsClient = new client_1.SessionsClient({ | ||
requestFn: args => sessionsBackground.handleMessage(args), | ||
registerBackgroundCallbacks: () => { }, | ||
}); | ||
sessionsBackground.on('descriptors', descriptors => { | ||
sessionsClient.emit('descriptors', descriptors); | ||
}); | ||
super({ | ||
@@ -31,6 +21,4 @@ messages, | ||
}), | ||
sessionsClient, | ||
}); | ||
this.name = 'NodeUsbTransport'; | ||
this.sessionsBackground = sessionsBackground; | ||
} | ||
@@ -41,8 +29,4 @@ listen() { | ||
} | ||
stop() { | ||
super.stop(); | ||
this.sessionsBackground.dispose(); | ||
} | ||
} | ||
exports.NodeUsbTransport = NodeUsbTransport; | ||
//# sourceMappingURL=nodeusb.js.map |
@@ -6,3 +6,2 @@ import { AbstractTransportParams } from './abstract'; | ||
private enumerateTimeout; | ||
private readonly sessionsBackground; | ||
constructor(params: AbstractTransportParams); | ||
@@ -9,0 +8,0 @@ listen(): import("../types").Success<undefined> | { |
@@ -6,15 +6,5 @@ "use strict"; | ||
const abstractApi_1 = require("./abstractApi"); | ||
const client_1 = require("../sessions/client"); | ||
const background_1 = require("../sessions/background"); | ||
class UdpTransport extends abstractApi_1.AbstractApiTransport { | ||
constructor(params) { | ||
const { messages, logger, debugLink } = params; | ||
const sessionsBackground = new background_1.SessionsBackground(); | ||
const sessionsClient = new client_1.SessionsClient({ | ||
requestFn: args => sessionsBackground.handleMessage(args), | ||
registerBackgroundCallbacks: () => { }, | ||
}); | ||
sessionsBackground.on('descriptors', descriptors => { | ||
sessionsClient.emit('descriptors', descriptors); | ||
}); | ||
super({ | ||
@@ -24,6 +14,4 @@ messages, | ||
logger, | ||
sessionsClient, | ||
}); | ||
this.name = 'UdpTransport'; | ||
this.sessionsBackground = sessionsBackground; | ||
} | ||
@@ -39,3 +27,2 @@ listen() { | ||
} | ||
this.sessionsBackground.dispose(); | ||
return super.stop(); | ||
@@ -42,0 +29,0 @@ } |
@@ -1,6 +0,19 @@ | ||
import { AbstractTransportParams } from './abstract'; | ||
import { AbstractTransportMethodParams, AbstractTransportParams } from './abstract'; | ||
import { AbstractApiTransport } from './abstractApi'; | ||
type WebUsbTransportParams = AbstractTransportParams & { | ||
sessionsBackgroundUrl?: string; | ||
}; | ||
export declare class WebUsbTransport extends AbstractApiTransport { | ||
name: "WebUsbTransport"; | ||
constructor(params: AbstractTransportParams); | ||
private readonly sessionsBackgroundUrl; | ||
constructor({ messages, logger, sessionsBackgroundUrl }: WebUsbTransportParams); | ||
init({ signal }?: AbstractTransportMethodParams<'init'>): Promise<import("../sessions/types").HandshakeResponse | { | ||
success: false; | ||
error: NonNullable<"Aborted by signal" | "Aborted by timeout">; | ||
message: string | undefined; | ||
} | { | ||
success: false; | ||
error: "unexpected error"; | ||
message: string; | ||
}>; | ||
listen(): import("../types").Success<undefined> | { | ||
@@ -12,2 +25,3 @@ success: false; | ||
} | ||
export {}; | ||
//# sourceMappingURL=webusb.browser.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.WebUsbTransport = void 0; | ||
const tslib_1 = require("tslib"); | ||
const abstractApi_1 = require("./abstractApi"); | ||
const client_1 = require("../sessions/client"); | ||
const usb_1 = require("../api/usb"); | ||
const background_browser_1 = require("../sessions/background-browser"); | ||
class WebUsbTransport extends abstractApi_1.AbstractApiTransport { | ||
constructor(params) { | ||
const { messages, logger } = params; | ||
const { requestFn, registerBackgroundCallbacks } = (0, background_browser_1.initBackgroundInBrowser)(); | ||
constructor({ messages, logger, sessionsBackgroundUrl }) { | ||
super({ | ||
@@ -19,9 +17,19 @@ messages, | ||
logger, | ||
sessionsClient: new client_1.SessionsClient({ | ||
requestFn, | ||
registerBackgroundCallbacks, | ||
}), | ||
}); | ||
this.name = 'WebUsbTransport'; | ||
this.sessionsBackgroundUrl = sessionsBackgroundUrl; | ||
} | ||
init({ signal } = {}) { | ||
return this.scheduleAction(() => tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
const { sessionsBackgroundUrl } = this; | ||
const { requestFn, registerBackgroundCallbacks } = yield (0, background_browser_1.initBackgroundInBrowser)(sessionsBackgroundUrl); | ||
this.sessionsClient.init({ | ||
requestFn, | ||
registerBackgroundCallbacks, | ||
}); | ||
const handshakeRes = yield this.sessionsClient.handshake(); | ||
this.stopped = !handshakeRes.success; | ||
return handshakeRes; | ||
}), { signal }); | ||
} | ||
listen() { | ||
@@ -28,0 +36,0 @@ this.api.listen(); |
{ | ||
"name": "@trezor/transport", | ||
"version": "1.3.2-beta.1", | ||
"version": "1.3.2", | ||
"description": "Low level library facilitating protocol buffers based communication with Trezor devices", | ||
@@ -66,3 +66,3 @@ "npmPublishAccess": "public", | ||
"dependencies": { | ||
"@trezor/protobuf": "1.2.2-beta.1", | ||
"@trezor/protobuf": "1.2.2", | ||
"@trezor/protocol": "1.2.1", | ||
@@ -69,0 +69,0 @@ "@trezor/utils": "9.2.1", |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
1
174183
3715
1
2
+ Added@trezor/protobuf@1.2.2(transitive)
- Removed@trezor/protobuf@1.2.2-beta.1(transitive)
Updated@trezor/protobuf@1.2.2