@bytezhang/trezor-transport-electron 0.0.1
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/dist/chunk-5PQU6ERJ.mjs +62 -0
- package/dist/chunk-5PQU6ERJ.mjs.map +1 -0
- package/dist/chunk-BJTO5JO5.mjs +11 -0
- package/dist/chunk-BJTO5JO5.mjs.map +1 -0
- package/dist/chunk-XEHCGRYI.mjs +23 -0
- package/dist/chunk-XEHCGRYI.mjs.map +1 -0
- package/dist/chunk-Z33SFKVN.mjs +33 -0
- package/dist/chunk-Z33SFKVN.mjs.map +1 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +136 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +16 -0
- package/dist/index.mjs.map +1 -0
- package/dist/main.d.mts +15 -0
- package/dist/main.d.ts +15 -0
- package/dist/main.js +82 -0
- package/dist/main.js.map +1 -0
- package/dist/main.mjs +8 -0
- package/dist/main.mjs.map +1 -0
- package/dist/preload.d.mts +11 -0
- package/dist/preload.d.ts +11 -0
- package/dist/preload.js +47 -0
- package/dist/preload.js.map +1 -0
- package/dist/preload.mjs +8 -0
- package/dist/preload.mjs.map +1 -0
- package/dist/renderer.d.mts +38 -0
- package/dist/renderer.d.ts +38 -0
- package/dist/renderer.js +57 -0
- package/dist/renderer.js.map +1 -0
- package/dist/renderer.mjs +8 -0
- package/dist/renderer.mjs.map +1 -0
- package/dist/types.d.mts +14 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.js +34 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +10 -0
- package/dist/types.mjs.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__require
|
|
3
|
+
} from "./chunk-BJTO5JO5.mjs";
|
|
4
|
+
|
|
5
|
+
// src/main.ts
|
|
6
|
+
import { ipcMain } from "electron";
|
|
7
|
+
var TrezorConnect = __require("@trezor/connect").default;
|
|
8
|
+
function createElectronTrezorBridge(win) {
|
|
9
|
+
let initialized = false;
|
|
10
|
+
let eventsRegistered = false;
|
|
11
|
+
ipcMain.handle("tc:init", async (_event, settings) => {
|
|
12
|
+
if (!eventsRegistered) {
|
|
13
|
+
eventsRegistered = true;
|
|
14
|
+
for (const eventType of [
|
|
15
|
+
"DEVICE_EVENT",
|
|
16
|
+
"UI_EVENT",
|
|
17
|
+
"TRANSPORT_EVENT"
|
|
18
|
+
]) {
|
|
19
|
+
TrezorConnect.on(eventType, (event) => {
|
|
20
|
+
if (!win.isDestroyed()) {
|
|
21
|
+
win.webContents.send("tc:event", event);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (initialized) {
|
|
27
|
+
TrezorConnect.dispose();
|
|
28
|
+
initialized = false;
|
|
29
|
+
}
|
|
30
|
+
await TrezorConnect.init(settings);
|
|
31
|
+
initialized = true;
|
|
32
|
+
});
|
|
33
|
+
ipcMain.handle("tc:dispose", async () => {
|
|
34
|
+
if (initialized) {
|
|
35
|
+
TrezorConnect.dispose();
|
|
36
|
+
initialized = false;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
ipcMain.handle(
|
|
40
|
+
"tc:call",
|
|
41
|
+
async (_event, { method, params }) => {
|
|
42
|
+
if (typeof TrezorConnect[method] !== "function") {
|
|
43
|
+
return {
|
|
44
|
+
success: false,
|
|
45
|
+
payload: { error: `Unknown method: ${method}` }
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return TrezorConnect[method](params);
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
ipcMain.handle("tc:cancel", async (_event, reason) => {
|
|
52
|
+
TrezorConnect.cancel(reason);
|
|
53
|
+
});
|
|
54
|
+
ipcMain.handle("tc:uiResponse", async (_event, response) => {
|
|
55
|
+
TrezorConnect.uiResponse(response);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export {
|
|
60
|
+
createElectronTrezorBridge
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=chunk-5PQU6ERJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import { ipcMain, type BrowserWindow } from 'electron';\n\n// IMPORTANT: Use require(), not import.\n// @trezor/connect's browser field redirects import to a stub in bundlers.\n// require() in Node.js main process loads the real implementation.\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst TrezorConnect = require('@trezor/connect').default;\n\n/**\n * Set up all Trezor Connect IPC handlers in the Electron main process.\n *\n * This function:\n * - Registers IPC handlers for init, dispose, call, cancel, uiResponse\n * - Forwards DEVICE_EVENT, UI_EVENT, TRANSPORT_EVENT to the renderer\n * - Manages the TrezorConnect singleton lifecycle (dispose before re-init)\n *\n * Call once after creating the BrowserWindow.\n */\nexport function createElectronTrezorBridge(win: BrowserWindow): void {\n let initialized = false;\n let eventsRegistered = false;\n\n ipcMain.handle('tc:init', async (_event, settings) => {\n // Register event forwarding only once (TrezorConnect is singleton)\n if (!eventsRegistered) {\n eventsRegistered = true;\n for (const eventType of [\n 'DEVICE_EVENT',\n 'UI_EVENT',\n 'TRANSPORT_EVENT',\n ]) {\n TrezorConnect.on(eventType, (event: any) => {\n if (!win.isDestroyed()) {\n win.webContents.send('tc:event', event);\n }\n });\n }\n }\n\n // Dispose before re-init (singleton constraint)\n if (initialized) {\n TrezorConnect.dispose();\n initialized = false;\n }\n\n await TrezorConnect.init(settings);\n initialized = true;\n });\n\n ipcMain.handle('tc:dispose', async () => {\n if (initialized) {\n TrezorConnect.dispose();\n initialized = false;\n }\n });\n\n ipcMain.handle(\n 'tc:call',\n async (_event, { method, params }: { method: string; params: any }) => {\n if (typeof (TrezorConnect as any)[method] !== 'function') {\n return {\n success: false,\n payload: { error: `Unknown method: ${method}` },\n };\n }\n return (TrezorConnect as any)[method](params);\n },\n );\n\n ipcMain.handle('tc:cancel', async (_event, reason?: string) => {\n TrezorConnect.cancel(reason);\n });\n\n ipcMain.handle('tc:uiResponse', async (_event, response: any) => {\n TrezorConnect.uiResponse(response);\n });\n}\n"],"mappings":";;;;;AAAA,SAAS,eAAmC;AAM5C,IAAM,gBAAgB,UAAQ,iBAAiB,EAAE;AAY1C,SAAS,2BAA2B,KAA0B;AACnE,MAAI,cAAc;AAClB,MAAI,mBAAmB;AAEvB,UAAQ,OAAO,WAAW,OAAO,QAAQ,aAAa;AAEpD,QAAI,CAAC,kBAAkB;AACrB,yBAAmB;AACnB,iBAAW,aAAa;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG;AACD,sBAAc,GAAG,WAAW,CAAC,UAAe;AAC1C,cAAI,CAAC,IAAI,YAAY,GAAG;AACtB,gBAAI,YAAY,KAAK,YAAY,KAAK;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,aAAa;AACf,oBAAc,QAAQ;AACtB,oBAAc;AAAA,IAChB;AAEA,UAAM,cAAc,KAAK,QAAQ;AACjC,kBAAc;AAAA,EAChB,CAAC;AAED,UAAQ,OAAO,cAAc,YAAY;AACvC,QAAI,aAAa;AACf,oBAAc,QAAQ;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,UAAQ;AAAA,IACN;AAAA,IACA,OAAO,QAAQ,EAAE,QAAQ,OAAO,MAAuC;AACrE,UAAI,OAAQ,cAAsB,MAAM,MAAM,YAAY;AACxD,eAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,EAAE,OAAO,mBAAmB,MAAM,GAAG;AAAA,QAChD;AAAA,MACF;AACA,aAAQ,cAAsB,MAAM,EAAE,MAAM;AAAA,IAC9C;AAAA,EACF;AAEA,UAAQ,OAAO,aAAa,OAAO,QAAQ,WAAoB;AAC7D,kBAAc,OAAO,MAAM;AAAA,EAC7B,CAAC;AAED,UAAQ,OAAO,iBAAiB,OAAO,QAAQ,aAAkB;AAC/D,kBAAc,WAAW,QAAQ;AAAA,EACnC,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
__require
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=chunk-BJTO5JO5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/preload.ts
|
|
2
|
+
import { ipcRenderer, contextBridge } from "electron";
|
|
3
|
+
function exposeTrezorConnectApi(apiName = "trezorConnect") {
|
|
4
|
+
const api = {
|
|
5
|
+
init: (settings) => ipcRenderer.invoke("tc:init", settings),
|
|
6
|
+
dispose: () => ipcRenderer.invoke("tc:dispose"),
|
|
7
|
+
call: (method, params) => ipcRenderer.invoke("tc:call", { method, params }),
|
|
8
|
+
cancel: (reason) => ipcRenderer.invoke("tc:cancel", reason),
|
|
9
|
+
uiResponse: (response) => ipcRenderer.invoke("tc:uiResponse", response),
|
|
10
|
+
onEvent: (callback) => {
|
|
11
|
+
ipcRenderer.on("tc:event", (_event, data) => callback(data));
|
|
12
|
+
},
|
|
13
|
+
removeEventListeners: () => {
|
|
14
|
+
ipcRenderer.removeAllListeners("tc:event");
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
contextBridge.exposeInMainWorld(apiName, api);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
exposeTrezorConnectApi
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=chunk-XEHCGRYI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/preload.ts"],"sourcesContent":["import { ipcRenderer, contextBridge } from 'electron';\nimport type { TrezorConnectBridge } from './types';\n\n/**\n * Expose a TrezorConnect IPC bridge to the renderer process via contextBridge.\n *\n * Call this in your Electron preload script. The renderer can then access\n * the bridge at `window[apiName]` (default: `window.trezorConnect`).\n *\n * @param apiName — the key on `window` where the bridge is exposed\n */\nexport function exposeTrezorConnectApi(apiName = 'trezorConnect'): void {\n const api: TrezorConnectBridge = {\n init: (settings) => ipcRenderer.invoke('tc:init', settings),\n dispose: () => ipcRenderer.invoke('tc:dispose'),\n call: (method, params) =>\n ipcRenderer.invoke('tc:call', { method, params }),\n cancel: (reason) => ipcRenderer.invoke('tc:cancel', reason),\n uiResponse: (response) => ipcRenderer.invoke('tc:uiResponse', response),\n onEvent: (callback) => {\n ipcRenderer.on('tc:event', (_event, data) => callback(data));\n },\n removeEventListeners: () => {\n ipcRenderer.removeAllListeners('tc:event');\n },\n };\n\n contextBridge.exposeInMainWorld(apiName, api);\n}\n"],"mappings":";AAAA,SAAS,aAAa,qBAAqB;AAWpC,SAAS,uBAAuB,UAAU,iBAAuB;AACtE,QAAM,MAA2B;AAAA,IAC/B,MAAM,CAAC,aAAa,YAAY,OAAO,WAAW,QAAQ;AAAA,IAC1D,SAAS,MAAM,YAAY,OAAO,YAAY;AAAA,IAC9C,MAAM,CAAC,QAAQ,WACb,YAAY,OAAO,WAAW,EAAE,QAAQ,OAAO,CAAC;AAAA,IAClD,QAAQ,CAAC,WAAW,YAAY,OAAO,aAAa,MAAM;AAAA,IAC1D,YAAY,CAAC,aAAa,YAAY,OAAO,iBAAiB,QAAQ;AAAA,IACtE,SAAS,CAAC,aAAa;AACrB,kBAAY,GAAG,YAAY,CAAC,QAAQ,SAAS,SAAS,IAAI,CAAC;AAAA,IAC7D;AAAA,IACA,sBAAsB,MAAM;AAC1B,kBAAY,mBAAmB,UAAU;AAAA,IAC3C;AAAA,EACF;AAEA,gBAAc,kBAAkB,SAAS,GAAG;AAC9C;","names":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// src/renderer.ts
|
|
2
|
+
import { TrezorProxyClient } from "@bytezhang/hardware-trezor-adapter";
|
|
3
|
+
var TrezorIpcConnect = class _TrezorIpcConnect extends TrezorProxyClient {
|
|
4
|
+
constructor(bridge) {
|
|
5
|
+
super();
|
|
6
|
+
this.bridge = bridge;
|
|
7
|
+
bridge.onEvent((event) => this.dispatchEvent(event));
|
|
8
|
+
}
|
|
9
|
+
static async create(bridge, initSettings) {
|
|
10
|
+
const instance = new _TrezorIpcConnect(bridge);
|
|
11
|
+
await bridge.init(initSettings);
|
|
12
|
+
return instance;
|
|
13
|
+
}
|
|
14
|
+
sendCall(method, params) {
|
|
15
|
+
return this.bridge.call(method, params);
|
|
16
|
+
}
|
|
17
|
+
dispose() {
|
|
18
|
+
this.removeAllListeners();
|
|
19
|
+
this.bridge.removeEventListeners();
|
|
20
|
+
this.bridge.dispose();
|
|
21
|
+
}
|
|
22
|
+
cancel(reason) {
|
|
23
|
+
this.bridge.cancel(reason);
|
|
24
|
+
}
|
|
25
|
+
uiResponse(response) {
|
|
26
|
+
this.bridge.uiResponse(response);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
TrezorIpcConnect
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chunk-Z33SFKVN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/renderer.ts"],"sourcesContent":["import { TrezorProxyClient } from '@bytezhang/hardware-trezor-adapter';\nimport type { TrezorConnectBridge } from './types';\n\n/**\n * ITrezorConnect-compatible proxy that forwards all calls to\n * the Electron main process via IPC.\n *\n * Usage:\n * ```ts\n * const bridge = (window as any).trezorConnect;\n * const connect = await TrezorIpcConnect.create(bridge, {\n * manifest: { appUrl: '...', email: '...' },\n * transports: ['NodeUsbTransport'],\n * });\n * // connect now implements ITrezorConnect\n * ```\n */\nexport class TrezorIpcConnect extends TrezorProxyClient {\n constructor(private bridge: TrezorConnectBridge) {\n super();\n bridge.onEvent((event: any) => this.dispatchEvent(event));\n }\n\n static async create(\n bridge: TrezorConnectBridge,\n initSettings: {\n manifest: { appUrl: string; email: string };\n transports?: string[];\n [key: string]: any;\n },\n ): Promise<TrezorIpcConnect> {\n const instance = new TrezorIpcConnect(bridge);\n await bridge.init(initSettings);\n return instance;\n }\n\n protected sendCall(method: string, params?: unknown): Promise<unknown> {\n return this.bridge.call(method, params);\n }\n\n dispose(): void {\n this.removeAllListeners();\n this.bridge.removeEventListeners();\n this.bridge.dispose();\n }\n\n cancel(reason?: string): void {\n this.bridge.cancel(reason);\n }\n\n uiResponse(response: { type: string; payload: unknown }): void {\n this.bridge.uiResponse(response);\n }\n}\n"],"mappings":";AAAA,SAAS,yBAAyB;AAiB3B,IAAM,mBAAN,MAAM,0BAAyB,kBAAkB;AAAA,EACtD,YAAoB,QAA6B;AAC/C,UAAM;AADY;AAElB,WAAO,QAAQ,CAAC,UAAe,KAAK,cAAc,KAAK,CAAC;AAAA,EAC1D;AAAA,EAEA,aAAa,OACX,QACA,cAK2B;AAC3B,UAAM,WAAW,IAAI,kBAAiB,MAAM;AAC5C,UAAM,OAAO,KAAK,YAAY;AAC9B,WAAO;AAAA,EACT;AAAA,EAEU,SAAS,QAAgB,QAAoC;AACrE,WAAO,KAAK,OAAO,KAAK,QAAQ,MAAM;AAAA,EACxC;AAAA,EAEA,UAAgB;AACd,SAAK,mBAAmB;AACxB,SAAK,OAAO,qBAAqB;AACjC,SAAK,OAAO,QAAQ;AAAA,EACtB;AAAA,EAEA,OAAO,QAAuB;AAC5B,SAAK,OAAO,OAAO,MAAM;AAAA,EAC3B;AAAA,EAEA,WAAW,UAAoD;AAC7D,SAAK,OAAO,WAAW,QAAQ;AAAA,EACjC;AACF;","names":[]}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createElectronTrezorBridge } from './main.mjs';
|
|
2
|
+
export { exposeTrezorConnectApi } from './preload.mjs';
|
|
3
|
+
export { TrezorIpcConnect } from './renderer.mjs';
|
|
4
|
+
export { TrezorConnectBridge } from './types.mjs';
|
|
5
|
+
import 'electron';
|
|
6
|
+
import '@bytezhang/hardware-trezor-adapter';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createElectronTrezorBridge } from './main.js';
|
|
2
|
+
export { exposeTrezorConnectApi } from './preload.js';
|
|
3
|
+
export { TrezorIpcConnect } from './renderer.js';
|
|
4
|
+
export { TrezorConnectBridge } from './types.js';
|
|
5
|
+
import 'electron';
|
|
6
|
+
import '@bytezhang/hardware-trezor-adapter';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
TrezorIpcConnect: () => TrezorIpcConnect,
|
|
24
|
+
createElectronTrezorBridge: () => createElectronTrezorBridge,
|
|
25
|
+
exposeTrezorConnectApi: () => exposeTrezorConnectApi
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(src_exports);
|
|
28
|
+
|
|
29
|
+
// src/main.ts
|
|
30
|
+
var import_electron = require("electron");
|
|
31
|
+
var TrezorConnect = require("@trezor/connect").default;
|
|
32
|
+
function createElectronTrezorBridge(win) {
|
|
33
|
+
let initialized = false;
|
|
34
|
+
let eventsRegistered = false;
|
|
35
|
+
import_electron.ipcMain.handle("tc:init", async (_event, settings) => {
|
|
36
|
+
if (!eventsRegistered) {
|
|
37
|
+
eventsRegistered = true;
|
|
38
|
+
for (const eventType of [
|
|
39
|
+
"DEVICE_EVENT",
|
|
40
|
+
"UI_EVENT",
|
|
41
|
+
"TRANSPORT_EVENT"
|
|
42
|
+
]) {
|
|
43
|
+
TrezorConnect.on(eventType, (event) => {
|
|
44
|
+
if (!win.isDestroyed()) {
|
|
45
|
+
win.webContents.send("tc:event", event);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (initialized) {
|
|
51
|
+
TrezorConnect.dispose();
|
|
52
|
+
initialized = false;
|
|
53
|
+
}
|
|
54
|
+
await TrezorConnect.init(settings);
|
|
55
|
+
initialized = true;
|
|
56
|
+
});
|
|
57
|
+
import_electron.ipcMain.handle("tc:dispose", async () => {
|
|
58
|
+
if (initialized) {
|
|
59
|
+
TrezorConnect.dispose();
|
|
60
|
+
initialized = false;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
import_electron.ipcMain.handle(
|
|
64
|
+
"tc:call",
|
|
65
|
+
async (_event, { method, params }) => {
|
|
66
|
+
if (typeof TrezorConnect[method] !== "function") {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
payload: { error: `Unknown method: ${method}` }
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return TrezorConnect[method](params);
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
import_electron.ipcMain.handle("tc:cancel", async (_event, reason) => {
|
|
76
|
+
TrezorConnect.cancel(reason);
|
|
77
|
+
});
|
|
78
|
+
import_electron.ipcMain.handle("tc:uiResponse", async (_event, response) => {
|
|
79
|
+
TrezorConnect.uiResponse(response);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// src/preload.ts
|
|
84
|
+
var import_electron2 = require("electron");
|
|
85
|
+
function exposeTrezorConnectApi(apiName = "trezorConnect") {
|
|
86
|
+
const api = {
|
|
87
|
+
init: (settings) => import_electron2.ipcRenderer.invoke("tc:init", settings),
|
|
88
|
+
dispose: () => import_electron2.ipcRenderer.invoke("tc:dispose"),
|
|
89
|
+
call: (method, params) => import_electron2.ipcRenderer.invoke("tc:call", { method, params }),
|
|
90
|
+
cancel: (reason) => import_electron2.ipcRenderer.invoke("tc:cancel", reason),
|
|
91
|
+
uiResponse: (response) => import_electron2.ipcRenderer.invoke("tc:uiResponse", response),
|
|
92
|
+
onEvent: (callback) => {
|
|
93
|
+
import_electron2.ipcRenderer.on("tc:event", (_event, data) => callback(data));
|
|
94
|
+
},
|
|
95
|
+
removeEventListeners: () => {
|
|
96
|
+
import_electron2.ipcRenderer.removeAllListeners("tc:event");
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
import_electron2.contextBridge.exposeInMainWorld(apiName, api);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/renderer.ts
|
|
103
|
+
var import_hardware_trezor_adapter = require("@bytezhang/hardware-trezor-adapter");
|
|
104
|
+
var TrezorIpcConnect = class _TrezorIpcConnect extends import_hardware_trezor_adapter.TrezorProxyClient {
|
|
105
|
+
constructor(bridge) {
|
|
106
|
+
super();
|
|
107
|
+
this.bridge = bridge;
|
|
108
|
+
bridge.onEvent((event) => this.dispatchEvent(event));
|
|
109
|
+
}
|
|
110
|
+
static async create(bridge, initSettings) {
|
|
111
|
+
const instance = new _TrezorIpcConnect(bridge);
|
|
112
|
+
await bridge.init(initSettings);
|
|
113
|
+
return instance;
|
|
114
|
+
}
|
|
115
|
+
sendCall(method, params) {
|
|
116
|
+
return this.bridge.call(method, params);
|
|
117
|
+
}
|
|
118
|
+
dispose() {
|
|
119
|
+
this.removeAllListeners();
|
|
120
|
+
this.bridge.removeEventListeners();
|
|
121
|
+
this.bridge.dispose();
|
|
122
|
+
}
|
|
123
|
+
cancel(reason) {
|
|
124
|
+
this.bridge.cancel(reason);
|
|
125
|
+
}
|
|
126
|
+
uiResponse(response) {
|
|
127
|
+
this.bridge.uiResponse(response);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
131
|
+
0 && (module.exports = {
|
|
132
|
+
TrezorIpcConnect,
|
|
133
|
+
createElectronTrezorBridge,
|
|
134
|
+
exposeTrezorConnectApi
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/main.ts","../src/preload.ts","../src/renderer.ts"],"sourcesContent":["export { createElectronTrezorBridge } from './main';\nexport { exposeTrezorConnectApi } from './preload';\nexport { TrezorIpcConnect } from './renderer';\nexport type { TrezorConnectBridge } from './types';\n","import { ipcMain, type BrowserWindow } from 'electron';\n\n// IMPORTANT: Use require(), not import.\n// @trezor/connect's browser field redirects import to a stub in bundlers.\n// require() in Node.js main process loads the real implementation.\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst TrezorConnect = require('@trezor/connect').default;\n\n/**\n * Set up all Trezor Connect IPC handlers in the Electron main process.\n *\n * This function:\n * - Registers IPC handlers for init, dispose, call, cancel, uiResponse\n * - Forwards DEVICE_EVENT, UI_EVENT, TRANSPORT_EVENT to the renderer\n * - Manages the TrezorConnect singleton lifecycle (dispose before re-init)\n *\n * Call once after creating the BrowserWindow.\n */\nexport function createElectronTrezorBridge(win: BrowserWindow): void {\n let initialized = false;\n let eventsRegistered = false;\n\n ipcMain.handle('tc:init', async (_event, settings) => {\n // Register event forwarding only once (TrezorConnect is singleton)\n if (!eventsRegistered) {\n eventsRegistered = true;\n for (const eventType of [\n 'DEVICE_EVENT',\n 'UI_EVENT',\n 'TRANSPORT_EVENT',\n ]) {\n TrezorConnect.on(eventType, (event: any) => {\n if (!win.isDestroyed()) {\n win.webContents.send('tc:event', event);\n }\n });\n }\n }\n\n // Dispose before re-init (singleton constraint)\n if (initialized) {\n TrezorConnect.dispose();\n initialized = false;\n }\n\n await TrezorConnect.init(settings);\n initialized = true;\n });\n\n ipcMain.handle('tc:dispose', async () => {\n if (initialized) {\n TrezorConnect.dispose();\n initialized = false;\n }\n });\n\n ipcMain.handle(\n 'tc:call',\n async (_event, { method, params }: { method: string; params: any }) => {\n if (typeof (TrezorConnect as any)[method] !== 'function') {\n return {\n success: false,\n payload: { error: `Unknown method: ${method}` },\n };\n }\n return (TrezorConnect as any)[method](params);\n },\n );\n\n ipcMain.handle('tc:cancel', async (_event, reason?: string) => {\n TrezorConnect.cancel(reason);\n });\n\n ipcMain.handle('tc:uiResponse', async (_event, response: any) => {\n TrezorConnect.uiResponse(response);\n });\n}\n","import { ipcRenderer, contextBridge } from 'electron';\nimport type { TrezorConnectBridge } from './types';\n\n/**\n * Expose a TrezorConnect IPC bridge to the renderer process via contextBridge.\n *\n * Call this in your Electron preload script. The renderer can then access\n * the bridge at `window[apiName]` (default: `window.trezorConnect`).\n *\n * @param apiName — the key on `window` where the bridge is exposed\n */\nexport function exposeTrezorConnectApi(apiName = 'trezorConnect'): void {\n const api: TrezorConnectBridge = {\n init: (settings) => ipcRenderer.invoke('tc:init', settings),\n dispose: () => ipcRenderer.invoke('tc:dispose'),\n call: (method, params) =>\n ipcRenderer.invoke('tc:call', { method, params }),\n cancel: (reason) => ipcRenderer.invoke('tc:cancel', reason),\n uiResponse: (response) => ipcRenderer.invoke('tc:uiResponse', response),\n onEvent: (callback) => {\n ipcRenderer.on('tc:event', (_event, data) => callback(data));\n },\n removeEventListeners: () => {\n ipcRenderer.removeAllListeners('tc:event');\n },\n };\n\n contextBridge.exposeInMainWorld(apiName, api);\n}\n","import { TrezorProxyClient } from '@bytezhang/hardware-trezor-adapter';\nimport type { TrezorConnectBridge } from './types';\n\n/**\n * ITrezorConnect-compatible proxy that forwards all calls to\n * the Electron main process via IPC.\n *\n * Usage:\n * ```ts\n * const bridge = (window as any).trezorConnect;\n * const connect = await TrezorIpcConnect.create(bridge, {\n * manifest: { appUrl: '...', email: '...' },\n * transports: ['NodeUsbTransport'],\n * });\n * // connect now implements ITrezorConnect\n * ```\n */\nexport class TrezorIpcConnect extends TrezorProxyClient {\n constructor(private bridge: TrezorConnectBridge) {\n super();\n bridge.onEvent((event: any) => this.dispatchEvent(event));\n }\n\n static async create(\n bridge: TrezorConnectBridge,\n initSettings: {\n manifest: { appUrl: string; email: string };\n transports?: string[];\n [key: string]: any;\n },\n ): Promise<TrezorIpcConnect> {\n const instance = new TrezorIpcConnect(bridge);\n await bridge.init(initSettings);\n return instance;\n }\n\n protected sendCall(method: string, params?: unknown): Promise<unknown> {\n return this.bridge.call(method, params);\n }\n\n dispose(): void {\n this.removeAllListeners();\n this.bridge.removeEventListeners();\n this.bridge.dispose();\n }\n\n cancel(reason?: string): void {\n this.bridge.cancel(reason);\n }\n\n uiResponse(response: { type: string; payload: unknown }): void {\n this.bridge.uiResponse(response);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,sBAA4C;AAM5C,IAAM,gBAAgB,QAAQ,iBAAiB,EAAE;AAY1C,SAAS,2BAA2B,KAA0B;AACnE,MAAI,cAAc;AAClB,MAAI,mBAAmB;AAEvB,0BAAQ,OAAO,WAAW,OAAO,QAAQ,aAAa;AAEpD,QAAI,CAAC,kBAAkB;AACrB,yBAAmB;AACnB,iBAAW,aAAa;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG;AACD,sBAAc,GAAG,WAAW,CAAC,UAAe;AAC1C,cAAI,CAAC,IAAI,YAAY,GAAG;AACtB,gBAAI,YAAY,KAAK,YAAY,KAAK;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,aAAa;AACf,oBAAc,QAAQ;AACtB,oBAAc;AAAA,IAChB;AAEA,UAAM,cAAc,KAAK,QAAQ;AACjC,kBAAc;AAAA,EAChB,CAAC;AAED,0BAAQ,OAAO,cAAc,YAAY;AACvC,QAAI,aAAa;AACf,oBAAc,QAAQ;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,0BAAQ;AAAA,IACN;AAAA,IACA,OAAO,QAAQ,EAAE,QAAQ,OAAO,MAAuC;AACrE,UAAI,OAAQ,cAAsB,MAAM,MAAM,YAAY;AACxD,eAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,EAAE,OAAO,mBAAmB,MAAM,GAAG;AAAA,QAChD;AAAA,MACF;AACA,aAAQ,cAAsB,MAAM,EAAE,MAAM;AAAA,IAC9C;AAAA,EACF;AAEA,0BAAQ,OAAO,aAAa,OAAO,QAAQ,WAAoB;AAC7D,kBAAc,OAAO,MAAM;AAAA,EAC7B,CAAC;AAED,0BAAQ,OAAO,iBAAiB,OAAO,QAAQ,aAAkB;AAC/D,kBAAc,WAAW,QAAQ;AAAA,EACnC,CAAC;AACH;;;AC5EA,IAAAA,mBAA2C;AAWpC,SAAS,uBAAuB,UAAU,iBAAuB;AACtE,QAAM,MAA2B;AAAA,IAC/B,MAAM,CAAC,aAAa,6BAAY,OAAO,WAAW,QAAQ;AAAA,IAC1D,SAAS,MAAM,6BAAY,OAAO,YAAY;AAAA,IAC9C,MAAM,CAAC,QAAQ,WACb,6BAAY,OAAO,WAAW,EAAE,QAAQ,OAAO,CAAC;AAAA,IAClD,QAAQ,CAAC,WAAW,6BAAY,OAAO,aAAa,MAAM;AAAA,IAC1D,YAAY,CAAC,aAAa,6BAAY,OAAO,iBAAiB,QAAQ;AAAA,IACtE,SAAS,CAAC,aAAa;AACrB,mCAAY,GAAG,YAAY,CAAC,QAAQ,SAAS,SAAS,IAAI,CAAC;AAAA,IAC7D;AAAA,IACA,sBAAsB,MAAM;AAC1B,mCAAY,mBAAmB,UAAU;AAAA,IAC3C;AAAA,EACF;AAEA,iCAAc,kBAAkB,SAAS,GAAG;AAC9C;;;AC5BA,qCAAkC;AAiB3B,IAAM,mBAAN,MAAM,0BAAyB,iDAAkB;AAAA,EACtD,YAAoB,QAA6B;AAC/C,UAAM;AADY;AAElB,WAAO,QAAQ,CAAC,UAAe,KAAK,cAAc,KAAK,CAAC;AAAA,EAC1D;AAAA,EAEA,aAAa,OACX,QACA,cAK2B;AAC3B,UAAM,WAAW,IAAI,kBAAiB,MAAM;AAC5C,UAAM,OAAO,KAAK,YAAY;AAC9B,WAAO;AAAA,EACT;AAAA,EAEU,SAAS,QAAgB,QAAoC;AACrE,WAAO,KAAK,OAAO,KAAK,QAAQ,MAAM;AAAA,EACxC;AAAA,EAEA,UAAgB;AACd,SAAK,mBAAmB;AACxB,SAAK,OAAO,qBAAqB;AACjC,SAAK,OAAO,QAAQ;AAAA,EACtB;AAAA,EAEA,OAAO,QAAuB;AAC5B,SAAK,OAAO,OAAO,MAAM;AAAA,EAC3B;AAAA,EAEA,WAAW,UAAoD;AAC7D,SAAK,OAAO,WAAW,QAAQ;AAAA,EACjC;AACF;","names":["import_electron"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createElectronTrezorBridge
|
|
3
|
+
} from "./chunk-5PQU6ERJ.mjs";
|
|
4
|
+
import {
|
|
5
|
+
exposeTrezorConnectApi
|
|
6
|
+
} from "./chunk-XEHCGRYI.mjs";
|
|
7
|
+
import {
|
|
8
|
+
TrezorIpcConnect
|
|
9
|
+
} from "./chunk-Z33SFKVN.mjs";
|
|
10
|
+
import "./chunk-BJTO5JO5.mjs";
|
|
11
|
+
export {
|
|
12
|
+
TrezorIpcConnect,
|
|
13
|
+
createElectronTrezorBridge,
|
|
14
|
+
exposeTrezorConnectApi
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/main.d.mts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BrowserWindow } from 'electron';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Set up all Trezor Connect IPC handlers in the Electron main process.
|
|
5
|
+
*
|
|
6
|
+
* This function:
|
|
7
|
+
* - Registers IPC handlers for init, dispose, call, cancel, uiResponse
|
|
8
|
+
* - Forwards DEVICE_EVENT, UI_EVENT, TRANSPORT_EVENT to the renderer
|
|
9
|
+
* - Manages the TrezorConnect singleton lifecycle (dispose before re-init)
|
|
10
|
+
*
|
|
11
|
+
* Call once after creating the BrowserWindow.
|
|
12
|
+
*/
|
|
13
|
+
declare function createElectronTrezorBridge(win: BrowserWindow): void;
|
|
14
|
+
|
|
15
|
+
export { createElectronTrezorBridge };
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BrowserWindow } from 'electron';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Set up all Trezor Connect IPC handlers in the Electron main process.
|
|
5
|
+
*
|
|
6
|
+
* This function:
|
|
7
|
+
* - Registers IPC handlers for init, dispose, call, cancel, uiResponse
|
|
8
|
+
* - Forwards DEVICE_EVENT, UI_EVENT, TRANSPORT_EVENT to the renderer
|
|
9
|
+
* - Manages the TrezorConnect singleton lifecycle (dispose before re-init)
|
|
10
|
+
*
|
|
11
|
+
* Call once after creating the BrowserWindow.
|
|
12
|
+
*/
|
|
13
|
+
declare function createElectronTrezorBridge(win: BrowserWindow): void;
|
|
14
|
+
|
|
15
|
+
export { createElectronTrezorBridge };
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/main.ts
|
|
21
|
+
var main_exports = {};
|
|
22
|
+
__export(main_exports, {
|
|
23
|
+
createElectronTrezorBridge: () => createElectronTrezorBridge
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(main_exports);
|
|
26
|
+
var import_electron = require("electron");
|
|
27
|
+
var TrezorConnect = require("@trezor/connect").default;
|
|
28
|
+
function createElectronTrezorBridge(win) {
|
|
29
|
+
let initialized = false;
|
|
30
|
+
let eventsRegistered = false;
|
|
31
|
+
import_electron.ipcMain.handle("tc:init", async (_event, settings) => {
|
|
32
|
+
if (!eventsRegistered) {
|
|
33
|
+
eventsRegistered = true;
|
|
34
|
+
for (const eventType of [
|
|
35
|
+
"DEVICE_EVENT",
|
|
36
|
+
"UI_EVENT",
|
|
37
|
+
"TRANSPORT_EVENT"
|
|
38
|
+
]) {
|
|
39
|
+
TrezorConnect.on(eventType, (event) => {
|
|
40
|
+
if (!win.isDestroyed()) {
|
|
41
|
+
win.webContents.send("tc:event", event);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (initialized) {
|
|
47
|
+
TrezorConnect.dispose();
|
|
48
|
+
initialized = false;
|
|
49
|
+
}
|
|
50
|
+
await TrezorConnect.init(settings);
|
|
51
|
+
initialized = true;
|
|
52
|
+
});
|
|
53
|
+
import_electron.ipcMain.handle("tc:dispose", async () => {
|
|
54
|
+
if (initialized) {
|
|
55
|
+
TrezorConnect.dispose();
|
|
56
|
+
initialized = false;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
import_electron.ipcMain.handle(
|
|
60
|
+
"tc:call",
|
|
61
|
+
async (_event, { method, params }) => {
|
|
62
|
+
if (typeof TrezorConnect[method] !== "function") {
|
|
63
|
+
return {
|
|
64
|
+
success: false,
|
|
65
|
+
payload: { error: `Unknown method: ${method}` }
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return TrezorConnect[method](params);
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
import_electron.ipcMain.handle("tc:cancel", async (_event, reason) => {
|
|
72
|
+
TrezorConnect.cancel(reason);
|
|
73
|
+
});
|
|
74
|
+
import_electron.ipcMain.handle("tc:uiResponse", async (_event, response) => {
|
|
75
|
+
TrezorConnect.uiResponse(response);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
+
0 && (module.exports = {
|
|
80
|
+
createElectronTrezorBridge
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import { ipcMain, type BrowserWindow } from 'electron';\n\n// IMPORTANT: Use require(), not import.\n// @trezor/connect's browser field redirects import to a stub in bundlers.\n// require() in Node.js main process loads the real implementation.\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst TrezorConnect = require('@trezor/connect').default;\n\n/**\n * Set up all Trezor Connect IPC handlers in the Electron main process.\n *\n * This function:\n * - Registers IPC handlers for init, dispose, call, cancel, uiResponse\n * - Forwards DEVICE_EVENT, UI_EVENT, TRANSPORT_EVENT to the renderer\n * - Manages the TrezorConnect singleton lifecycle (dispose before re-init)\n *\n * Call once after creating the BrowserWindow.\n */\nexport function createElectronTrezorBridge(win: BrowserWindow): void {\n let initialized = false;\n let eventsRegistered = false;\n\n ipcMain.handle('tc:init', async (_event, settings) => {\n // Register event forwarding only once (TrezorConnect is singleton)\n if (!eventsRegistered) {\n eventsRegistered = true;\n for (const eventType of [\n 'DEVICE_EVENT',\n 'UI_EVENT',\n 'TRANSPORT_EVENT',\n ]) {\n TrezorConnect.on(eventType, (event: any) => {\n if (!win.isDestroyed()) {\n win.webContents.send('tc:event', event);\n }\n });\n }\n }\n\n // Dispose before re-init (singleton constraint)\n if (initialized) {\n TrezorConnect.dispose();\n initialized = false;\n }\n\n await TrezorConnect.init(settings);\n initialized = true;\n });\n\n ipcMain.handle('tc:dispose', async () => {\n if (initialized) {\n TrezorConnect.dispose();\n initialized = false;\n }\n });\n\n ipcMain.handle(\n 'tc:call',\n async (_event, { method, params }: { method: string; params: any }) => {\n if (typeof (TrezorConnect as any)[method] !== 'function') {\n return {\n success: false,\n payload: { error: `Unknown method: ${method}` },\n };\n }\n return (TrezorConnect as any)[method](params);\n },\n );\n\n ipcMain.handle('tc:cancel', async (_event, reason?: string) => {\n TrezorConnect.cancel(reason);\n });\n\n ipcMain.handle('tc:uiResponse', async (_event, response: any) => {\n TrezorConnect.uiResponse(response);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA4C;AAM5C,IAAM,gBAAgB,QAAQ,iBAAiB,EAAE;AAY1C,SAAS,2BAA2B,KAA0B;AACnE,MAAI,cAAc;AAClB,MAAI,mBAAmB;AAEvB,0BAAQ,OAAO,WAAW,OAAO,QAAQ,aAAa;AAEpD,QAAI,CAAC,kBAAkB;AACrB,yBAAmB;AACnB,iBAAW,aAAa;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG;AACD,sBAAc,GAAG,WAAW,CAAC,UAAe;AAC1C,cAAI,CAAC,IAAI,YAAY,GAAG;AACtB,gBAAI,YAAY,KAAK,YAAY,KAAK;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,aAAa;AACf,oBAAc,QAAQ;AACtB,oBAAc;AAAA,IAChB;AAEA,UAAM,cAAc,KAAK,QAAQ;AACjC,kBAAc;AAAA,EAChB,CAAC;AAED,0BAAQ,OAAO,cAAc,YAAY;AACvC,QAAI,aAAa;AACf,oBAAc,QAAQ;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,0BAAQ;AAAA,IACN;AAAA,IACA,OAAO,QAAQ,EAAE,QAAQ,OAAO,MAAuC;AACrE,UAAI,OAAQ,cAAsB,MAAM,MAAM,YAAY;AACxD,eAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,EAAE,OAAO,mBAAmB,MAAM,GAAG;AAAA,QAChD;AAAA,MACF;AACA,aAAQ,cAAsB,MAAM,EAAE,MAAM;AAAA,IAC9C;AAAA,EACF;AAEA,0BAAQ,OAAO,aAAa,OAAO,QAAQ,WAAoB;AAC7D,kBAAc,OAAO,MAAM;AAAA,EAC7B,CAAC;AAED,0BAAQ,OAAO,iBAAiB,OAAO,QAAQ,aAAkB;AAC/D,kBAAc,WAAW,QAAQ;AAAA,EACnC,CAAC;AACH;","names":[]}
|
package/dist/main.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expose a TrezorConnect IPC bridge to the renderer process via contextBridge.
|
|
3
|
+
*
|
|
4
|
+
* Call this in your Electron preload script. The renderer can then access
|
|
5
|
+
* the bridge at `window[apiName]` (default: `window.trezorConnect`).
|
|
6
|
+
*
|
|
7
|
+
* @param apiName — the key on `window` where the bridge is exposed
|
|
8
|
+
*/
|
|
9
|
+
declare function exposeTrezorConnectApi(apiName?: string): void;
|
|
10
|
+
|
|
11
|
+
export { exposeTrezorConnectApi };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expose a TrezorConnect IPC bridge to the renderer process via contextBridge.
|
|
3
|
+
*
|
|
4
|
+
* Call this in your Electron preload script. The renderer can then access
|
|
5
|
+
* the bridge at `window[apiName]` (default: `window.trezorConnect`).
|
|
6
|
+
*
|
|
7
|
+
* @param apiName — the key on `window` where the bridge is exposed
|
|
8
|
+
*/
|
|
9
|
+
declare function exposeTrezorConnectApi(apiName?: string): void;
|
|
10
|
+
|
|
11
|
+
export { exposeTrezorConnectApi };
|
package/dist/preload.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/preload.ts
|
|
21
|
+
var preload_exports = {};
|
|
22
|
+
__export(preload_exports, {
|
|
23
|
+
exposeTrezorConnectApi: () => exposeTrezorConnectApi
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(preload_exports);
|
|
26
|
+
var import_electron = require("electron");
|
|
27
|
+
function exposeTrezorConnectApi(apiName = "trezorConnect") {
|
|
28
|
+
const api = {
|
|
29
|
+
init: (settings) => import_electron.ipcRenderer.invoke("tc:init", settings),
|
|
30
|
+
dispose: () => import_electron.ipcRenderer.invoke("tc:dispose"),
|
|
31
|
+
call: (method, params) => import_electron.ipcRenderer.invoke("tc:call", { method, params }),
|
|
32
|
+
cancel: (reason) => import_electron.ipcRenderer.invoke("tc:cancel", reason),
|
|
33
|
+
uiResponse: (response) => import_electron.ipcRenderer.invoke("tc:uiResponse", response),
|
|
34
|
+
onEvent: (callback) => {
|
|
35
|
+
import_electron.ipcRenderer.on("tc:event", (_event, data) => callback(data));
|
|
36
|
+
},
|
|
37
|
+
removeEventListeners: () => {
|
|
38
|
+
import_electron.ipcRenderer.removeAllListeners("tc:event");
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
import_electron.contextBridge.exposeInMainWorld(apiName, api);
|
|
42
|
+
}
|
|
43
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
44
|
+
0 && (module.exports = {
|
|
45
|
+
exposeTrezorConnectApi
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=preload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/preload.ts"],"sourcesContent":["import { ipcRenderer, contextBridge } from 'electron';\nimport type { TrezorConnectBridge } from './types';\n\n/**\n * Expose a TrezorConnect IPC bridge to the renderer process via contextBridge.\n *\n * Call this in your Electron preload script. The renderer can then access\n * the bridge at `window[apiName]` (default: `window.trezorConnect`).\n *\n * @param apiName — the key on `window` where the bridge is exposed\n */\nexport function exposeTrezorConnectApi(apiName = 'trezorConnect'): void {\n const api: TrezorConnectBridge = {\n init: (settings) => ipcRenderer.invoke('tc:init', settings),\n dispose: () => ipcRenderer.invoke('tc:dispose'),\n call: (method, params) =>\n ipcRenderer.invoke('tc:call', { method, params }),\n cancel: (reason) => ipcRenderer.invoke('tc:cancel', reason),\n uiResponse: (response) => ipcRenderer.invoke('tc:uiResponse', response),\n onEvent: (callback) => {\n ipcRenderer.on('tc:event', (_event, data) => callback(data));\n },\n removeEventListeners: () => {\n ipcRenderer.removeAllListeners('tc:event');\n },\n };\n\n contextBridge.exposeInMainWorld(apiName, api);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA2C;AAWpC,SAAS,uBAAuB,UAAU,iBAAuB;AACtE,QAAM,MAA2B;AAAA,IAC/B,MAAM,CAAC,aAAa,4BAAY,OAAO,WAAW,QAAQ;AAAA,IAC1D,SAAS,MAAM,4BAAY,OAAO,YAAY;AAAA,IAC9C,MAAM,CAAC,QAAQ,WACb,4BAAY,OAAO,WAAW,EAAE,QAAQ,OAAO,CAAC;AAAA,IAClD,QAAQ,CAAC,WAAW,4BAAY,OAAO,aAAa,MAAM;AAAA,IAC1D,YAAY,CAAC,aAAa,4BAAY,OAAO,iBAAiB,QAAQ;AAAA,IACtE,SAAS,CAAC,aAAa;AACrB,kCAAY,GAAG,YAAY,CAAC,QAAQ,SAAS,SAAS,IAAI,CAAC;AAAA,IAC7D;AAAA,IACA,sBAAsB,MAAM;AAC1B,kCAAY,mBAAmB,UAAU;AAAA,IAC3C;AAAA,EACF;AAEA,gCAAc,kBAAkB,SAAS,GAAG;AAC9C;","names":[]}
|
package/dist/preload.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TrezorProxyClient } from '@bytezhang/hardware-trezor-adapter';
|
|
2
|
+
import { TrezorConnectBridge } from './types.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ITrezorConnect-compatible proxy that forwards all calls to
|
|
6
|
+
* the Electron main process via IPC.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```ts
|
|
10
|
+
* const bridge = (window as any).trezorConnect;
|
|
11
|
+
* const connect = await TrezorIpcConnect.create(bridge, {
|
|
12
|
+
* manifest: { appUrl: '...', email: '...' },
|
|
13
|
+
* transports: ['NodeUsbTransport'],
|
|
14
|
+
* });
|
|
15
|
+
* // connect now implements ITrezorConnect
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare class TrezorIpcConnect extends TrezorProxyClient {
|
|
19
|
+
private bridge;
|
|
20
|
+
constructor(bridge: TrezorConnectBridge);
|
|
21
|
+
static create(bridge: TrezorConnectBridge, initSettings: {
|
|
22
|
+
manifest: {
|
|
23
|
+
appUrl: string;
|
|
24
|
+
email: string;
|
|
25
|
+
};
|
|
26
|
+
transports?: string[];
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}): Promise<TrezorIpcConnect>;
|
|
29
|
+
protected sendCall(method: string, params?: unknown): Promise<unknown>;
|
|
30
|
+
dispose(): void;
|
|
31
|
+
cancel(reason?: string): void;
|
|
32
|
+
uiResponse(response: {
|
|
33
|
+
type: string;
|
|
34
|
+
payload: unknown;
|
|
35
|
+
}): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { TrezorIpcConnect };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TrezorProxyClient } from '@bytezhang/hardware-trezor-adapter';
|
|
2
|
+
import { TrezorConnectBridge } from './types.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ITrezorConnect-compatible proxy that forwards all calls to
|
|
6
|
+
* the Electron main process via IPC.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```ts
|
|
10
|
+
* const bridge = (window as any).trezorConnect;
|
|
11
|
+
* const connect = await TrezorIpcConnect.create(bridge, {
|
|
12
|
+
* manifest: { appUrl: '...', email: '...' },
|
|
13
|
+
* transports: ['NodeUsbTransport'],
|
|
14
|
+
* });
|
|
15
|
+
* // connect now implements ITrezorConnect
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare class TrezorIpcConnect extends TrezorProxyClient {
|
|
19
|
+
private bridge;
|
|
20
|
+
constructor(bridge: TrezorConnectBridge);
|
|
21
|
+
static create(bridge: TrezorConnectBridge, initSettings: {
|
|
22
|
+
manifest: {
|
|
23
|
+
appUrl: string;
|
|
24
|
+
email: string;
|
|
25
|
+
};
|
|
26
|
+
transports?: string[];
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}): Promise<TrezorIpcConnect>;
|
|
29
|
+
protected sendCall(method: string, params?: unknown): Promise<unknown>;
|
|
30
|
+
dispose(): void;
|
|
31
|
+
cancel(reason?: string): void;
|
|
32
|
+
uiResponse(response: {
|
|
33
|
+
type: string;
|
|
34
|
+
payload: unknown;
|
|
35
|
+
}): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { TrezorIpcConnect };
|
package/dist/renderer.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/renderer.ts
|
|
21
|
+
var renderer_exports = {};
|
|
22
|
+
__export(renderer_exports, {
|
|
23
|
+
TrezorIpcConnect: () => TrezorIpcConnect
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(renderer_exports);
|
|
26
|
+
var import_hardware_trezor_adapter = require("@bytezhang/hardware-trezor-adapter");
|
|
27
|
+
var TrezorIpcConnect = class _TrezorIpcConnect extends import_hardware_trezor_adapter.TrezorProxyClient {
|
|
28
|
+
constructor(bridge) {
|
|
29
|
+
super();
|
|
30
|
+
this.bridge = bridge;
|
|
31
|
+
bridge.onEvent((event) => this.dispatchEvent(event));
|
|
32
|
+
}
|
|
33
|
+
static async create(bridge, initSettings) {
|
|
34
|
+
const instance = new _TrezorIpcConnect(bridge);
|
|
35
|
+
await bridge.init(initSettings);
|
|
36
|
+
return instance;
|
|
37
|
+
}
|
|
38
|
+
sendCall(method, params) {
|
|
39
|
+
return this.bridge.call(method, params);
|
|
40
|
+
}
|
|
41
|
+
dispose() {
|
|
42
|
+
this.removeAllListeners();
|
|
43
|
+
this.bridge.removeEventListeners();
|
|
44
|
+
this.bridge.dispose();
|
|
45
|
+
}
|
|
46
|
+
cancel(reason) {
|
|
47
|
+
this.bridge.cancel(reason);
|
|
48
|
+
}
|
|
49
|
+
uiResponse(response) {
|
|
50
|
+
this.bridge.uiResponse(response);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
54
|
+
0 && (module.exports = {
|
|
55
|
+
TrezorIpcConnect
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/renderer.ts"],"sourcesContent":["import { TrezorProxyClient } from '@bytezhang/hardware-trezor-adapter';\nimport type { TrezorConnectBridge } from './types';\n\n/**\n * ITrezorConnect-compatible proxy that forwards all calls to\n * the Electron main process via IPC.\n *\n * Usage:\n * ```ts\n * const bridge = (window as any).trezorConnect;\n * const connect = await TrezorIpcConnect.create(bridge, {\n * manifest: { appUrl: '...', email: '...' },\n * transports: ['NodeUsbTransport'],\n * });\n * // connect now implements ITrezorConnect\n * ```\n */\nexport class TrezorIpcConnect extends TrezorProxyClient {\n constructor(private bridge: TrezorConnectBridge) {\n super();\n bridge.onEvent((event: any) => this.dispatchEvent(event));\n }\n\n static async create(\n bridge: TrezorConnectBridge,\n initSettings: {\n manifest: { appUrl: string; email: string };\n transports?: string[];\n [key: string]: any;\n },\n ): Promise<TrezorIpcConnect> {\n const instance = new TrezorIpcConnect(bridge);\n await bridge.init(initSettings);\n return instance;\n }\n\n protected sendCall(method: string, params?: unknown): Promise<unknown> {\n return this.bridge.call(method, params);\n }\n\n dispose(): void {\n this.removeAllListeners();\n this.bridge.removeEventListeners();\n this.bridge.dispose();\n }\n\n cancel(reason?: string): void {\n this.bridge.cancel(reason);\n }\n\n uiResponse(response: { type: string; payload: unknown }): void {\n this.bridge.uiResponse(response);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qCAAkC;AAiB3B,IAAM,mBAAN,MAAM,0BAAyB,iDAAkB;AAAA,EACtD,YAAoB,QAA6B;AAC/C,UAAM;AADY;AAElB,WAAO,QAAQ,CAAC,UAAe,KAAK,cAAc,KAAK,CAAC;AAAA,EAC1D;AAAA,EAEA,aAAa,OACX,QACA,cAK2B;AAC3B,UAAM,WAAW,IAAI,kBAAiB,MAAM;AAC5C,UAAM,OAAO,KAAK,YAAY;AAC9B,WAAO;AAAA,EACT;AAAA,EAEU,SAAS,QAAgB,QAAoC;AACrE,WAAO,KAAK,OAAO,KAAK,QAAQ,MAAM;AAAA,EACxC;AAAA,EAEA,UAAgB;AACd,SAAK,mBAAmB;AACxB,SAAK,OAAO,qBAAqB;AACjC,SAAK,OAAO,QAAQ;AAAA,EACtB;AAAA,EAEA,OAAO,QAAuB;AAC5B,SAAK,OAAO,OAAO,MAAM;AAAA,EAC3B;AAAA,EAEA,WAAW,UAAoD;AAC7D,SAAK,OAAO,WAAW,QAAQ;AAAA,EACjC;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/types.d.mts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Shape of the API exposed by preload to renderer */
|
|
2
|
+
interface TrezorConnectBridge {
|
|
3
|
+
init: (settings: any) => Promise<void>;
|
|
4
|
+
dispose: () => Promise<void>;
|
|
5
|
+
call: (method: string, params: any) => Promise<any>;
|
|
6
|
+
cancel: (reason?: string) => Promise<void>;
|
|
7
|
+
uiResponse: (response: any) => Promise<void>;
|
|
8
|
+
onEvent: (callback: (event: any) => void) => void;
|
|
9
|
+
removeEventListeners: () => void;
|
|
10
|
+
}
|
|
11
|
+
declare const IPC_CHANNEL = "trezor-connect";
|
|
12
|
+
declare const IPC_EVENT_CHANNEL = "trezor-connect-event";
|
|
13
|
+
|
|
14
|
+
export { IPC_CHANNEL, IPC_EVENT_CHANNEL, type TrezorConnectBridge };
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Shape of the API exposed by preload to renderer */
|
|
2
|
+
interface TrezorConnectBridge {
|
|
3
|
+
init: (settings: any) => Promise<void>;
|
|
4
|
+
dispose: () => Promise<void>;
|
|
5
|
+
call: (method: string, params: any) => Promise<any>;
|
|
6
|
+
cancel: (reason?: string) => Promise<void>;
|
|
7
|
+
uiResponse: (response: any) => Promise<void>;
|
|
8
|
+
onEvent: (callback: (event: any) => void) => void;
|
|
9
|
+
removeEventListeners: () => void;
|
|
10
|
+
}
|
|
11
|
+
declare const IPC_CHANNEL = "trezor-connect";
|
|
12
|
+
declare const IPC_EVENT_CHANNEL = "trezor-connect-event";
|
|
13
|
+
|
|
14
|
+
export { IPC_CHANNEL, IPC_EVENT_CHANNEL, type TrezorConnectBridge };
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/types.ts
|
|
21
|
+
var types_exports = {};
|
|
22
|
+
__export(types_exports, {
|
|
23
|
+
IPC_CHANNEL: () => IPC_CHANNEL,
|
|
24
|
+
IPC_EVENT_CHANNEL: () => IPC_EVENT_CHANNEL
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(types_exports);
|
|
27
|
+
var IPC_CHANNEL = "trezor-connect";
|
|
28
|
+
var IPC_EVENT_CHANNEL = "trezor-connect-event";
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
IPC_CHANNEL,
|
|
32
|
+
IPC_EVENT_CHANNEL
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["/** Shape of the API exposed by preload to renderer */\nexport interface TrezorConnectBridge {\n init: (settings: any) => Promise<void>;\n dispose: () => Promise<void>;\n call: (method: string, params: any) => Promise<any>;\n cancel: (reason?: string) => Promise<void>;\n uiResponse: (response: any) => Promise<void>;\n onEvent: (callback: (event: any) => void) => void;\n removeEventListeners: () => void;\n}\n\nexport const IPC_CHANNEL = 'trezor-connect';\nexport const IPC_EVENT_CHANNEL = 'trezor-connect-event';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWO,IAAM,cAAc;AACpB,IAAM,oBAAoB;","names":[]}
|
package/dist/types.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["/** Shape of the API exposed by preload to renderer */\nexport interface TrezorConnectBridge {\n init: (settings: any) => Promise<void>;\n dispose: () => Promise<void>;\n call: (method: string, params: any) => Promise<any>;\n cancel: (reason?: string) => Promise<void>;\n uiResponse: (response: any) => Promise<void>;\n onEvent: (callback: (event: any) => void) => void;\n removeEventListeners: () => void;\n}\n\nexport const IPC_CHANNEL = 'trezor-connect';\nexport const IPC_EVENT_CHANNEL = 'trezor-connect-event';\n"],"mappings":";;;AAWO,IAAM,cAAc;AACpB,IAAM,oBAAoB;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bytezhang/trezor-transport-electron",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Electron IPC bridge for @trezor/connect — handles all main/renderer process communication",
|
|
5
|
+
"author": "OneKey",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"module": "dist/index.mjs",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": { "types": "./dist/index.d.mts", "default": "./dist/index.mjs" },
|
|
13
|
+
"require": { "types": "./dist/index.d.ts", "default": "./dist/index.js" }
|
|
14
|
+
},
|
|
15
|
+
"./main": {
|
|
16
|
+
"import": { "types": "./dist/main.d.mts", "default": "./dist/main.mjs" },
|
|
17
|
+
"require": { "types": "./dist/main.d.ts", "default": "./dist/main.js" }
|
|
18
|
+
},
|
|
19
|
+
"./preload": {
|
|
20
|
+
"import": { "types": "./dist/preload.d.mts", "default": "./dist/preload.mjs" },
|
|
21
|
+
"require": { "types": "./dist/preload.d.ts", "default": "./dist/preload.js" }
|
|
22
|
+
},
|
|
23
|
+
"./renderer": {
|
|
24
|
+
"import": { "types": "./dist/renderer.d.mts", "default": "./dist/renderer.mjs" },
|
|
25
|
+
"require": { "types": "./dist/renderer.d.ts", "default": "./dist/renderer.js" }
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"files": ["dist"],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsup",
|
|
31
|
+
"dev": "tsup --watch",
|
|
32
|
+
"clean": "rimraf dist"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@bytezhang/hardware-trezor-adapter": "0.0.1"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"@trezor/connect": "^9.0.0",
|
|
39
|
+
"electron": ">=35.0.0"
|
|
40
|
+
},
|
|
41
|
+
"peerDependenciesMeta": {
|
|
42
|
+
"electron": { "optional": true }
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"electron": "^39.0.0",
|
|
46
|
+
"rimraf": "^5.0.0"
|
|
47
|
+
}
|
|
48
|
+
}
|