electron-json-rpc 1.0.0
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/LICENSE +21 -0
- package/README.md +978 -0
- package/README.zh-CN.md +978 -0
- package/dist/debug.d.mts +92 -0
- package/dist/debug.d.mts.map +1 -0
- package/dist/debug.mjs +206 -0
- package/dist/debug.mjs.map +1 -0
- package/dist/error-xVRu7Lxq.mjs +131 -0
- package/dist/error-xVRu7Lxq.mjs.map +1 -0
- package/dist/event.d.mts +71 -0
- package/dist/event.d.mts.map +1 -0
- package/dist/event.mjs +60 -0
- package/dist/event.mjs.map +1 -0
- package/dist/index.d.mts +78 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +4 -0
- package/dist/internal-BZK_0O3n.mjs +23 -0
- package/dist/internal-BZK_0O3n.mjs.map +1 -0
- package/dist/main.d.mts +151 -0
- package/dist/main.d.mts.map +1 -0
- package/dist/main.mjs +329 -0
- package/dist/main.mjs.map +1 -0
- package/dist/preload.d.mts +23 -0
- package/dist/preload.d.mts.map +1 -0
- package/dist/preload.mjs +417 -0
- package/dist/preload.mjs.map +1 -0
- package/dist/renderer/builder.d.mts +64 -0
- package/dist/renderer/builder.d.mts.map +1 -0
- package/dist/renderer/builder.mjs +101 -0
- package/dist/renderer/builder.mjs.map +1 -0
- package/dist/renderer/client.d.mts +42 -0
- package/dist/renderer/client.d.mts.map +1 -0
- package/dist/renderer/client.mjs +136 -0
- package/dist/renderer/client.mjs.map +1 -0
- package/dist/renderer/event.d.mts +17 -0
- package/dist/renderer/event.d.mts.map +1 -0
- package/dist/renderer/event.mjs +117 -0
- package/dist/renderer/event.mjs.map +1 -0
- package/dist/renderer/index.d.mts +6 -0
- package/dist/renderer/index.mjs +6 -0
- package/dist/stream.d.mts +38 -0
- package/dist/stream.d.mts.map +1 -0
- package/dist/stream.mjs +80 -0
- package/dist/stream.mjs.map +1 -0
- package/dist/types-BnGse9DF.d.mts +201 -0
- package/dist/types-BnGse9DF.d.mts.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
//#region src/types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* JSON-RPC 2.0 types for Electron IPC communication
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* JSON-RPC 2.0 Request
|
|
7
|
+
* id is optional for notifications (one-way calls)
|
|
8
|
+
*/
|
|
9
|
+
interface JsonRpcRequest {
|
|
10
|
+
jsonrpc: "2.0";
|
|
11
|
+
id?: string | number | null;
|
|
12
|
+
method: string;
|
|
13
|
+
params?: unknown[] | Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* JSON-RPC 2.0 Response
|
|
17
|
+
*/
|
|
18
|
+
interface JsonRpcResponse {
|
|
19
|
+
jsonrpc: "2.0";
|
|
20
|
+
id: string | number | null;
|
|
21
|
+
result?: unknown;
|
|
22
|
+
error?: JsonRpcError;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* JSON-RPC 2.0 Error
|
|
26
|
+
*/
|
|
27
|
+
interface JsonRpcError {
|
|
28
|
+
code: number;
|
|
29
|
+
message: string;
|
|
30
|
+
data?: unknown;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* JSON-RPC 2.0 Error codes
|
|
34
|
+
*/
|
|
35
|
+
declare enum JsonRpcErrorCode {
|
|
36
|
+
ParseError = -32700,
|
|
37
|
+
InvalidRequest = -32600,
|
|
38
|
+
MethodNotFound = -32601,
|
|
39
|
+
InvalidParams = -32602,
|
|
40
|
+
InternalError = -32603,
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* RPC method handler type
|
|
44
|
+
*/
|
|
45
|
+
type RpcHandler = (...params: unknown[]) => unknown | Promise<unknown>;
|
|
46
|
+
/**
|
|
47
|
+
* Validator function for params
|
|
48
|
+
* Throw an error to reject the request with InvalidParams error
|
|
49
|
+
*/
|
|
50
|
+
type RpcValidator = (params: unknown[]) => void | Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* RPC method registration options
|
|
53
|
+
*/
|
|
54
|
+
interface RpcMethodOptions {
|
|
55
|
+
/** Optional validator for parameters */
|
|
56
|
+
validate?: RpcValidator;
|
|
57
|
+
/** Optional description for documentation */
|
|
58
|
+
description?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Typed API interface for RPC client
|
|
62
|
+
* Converts method signatures to match JSON-RPC behavior
|
|
63
|
+
*/
|
|
64
|
+
type RpcApi<T extends Record<string, (...args: any[]) => any>> = { [K in keyof T]: T[K] extends ((...args: infer P) => infer R) ? R extends void ? (...params: P) => void : (...params: P) => Promise<Awaited<R>> : never };
|
|
65
|
+
/**
|
|
66
|
+
* Options for RPC client
|
|
67
|
+
*/
|
|
68
|
+
interface RpcClientOptions {
|
|
69
|
+
/** Timeout in milliseconds (default: 30000) */
|
|
70
|
+
timeout?: number;
|
|
71
|
+
/** API name exposed by preload (default: 'rpc') */
|
|
72
|
+
apiName?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Options for exposing RPC API in preload
|
|
76
|
+
*/
|
|
77
|
+
interface ExposeRpcApiOptions {
|
|
78
|
+
contextBridge: {
|
|
79
|
+
exposeInMainWorld: (name: string, api: Record<string, unknown>) => void;
|
|
80
|
+
};
|
|
81
|
+
ipcRenderer: {
|
|
82
|
+
send: (channel: string, ...args: unknown[]) => void;
|
|
83
|
+
on: (channel: string, listener: (event: unknown, ...args: unknown[]) => void) => void;
|
|
84
|
+
removeListener: (channel: string, listener: (...args: unknown[]) => void) => void;
|
|
85
|
+
};
|
|
86
|
+
/** Optional whitelist of methods to expose */
|
|
87
|
+
methods?: string[];
|
|
88
|
+
/** API name exposed to renderer (default: 'rpc') */
|
|
89
|
+
apiName?: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Stream chunk message for IPC
|
|
93
|
+
*/
|
|
94
|
+
interface StreamChunk {
|
|
95
|
+
streamId: string | number;
|
|
96
|
+
type: "chunk" | "end" | "error";
|
|
97
|
+
data?: unknown;
|
|
98
|
+
error?: JsonRpcError;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Stream request with stream flag
|
|
102
|
+
*/
|
|
103
|
+
interface StreamRequest extends JsonRpcRequest {
|
|
104
|
+
stream?: true;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Stream handler - returns a ReadableStream
|
|
108
|
+
*/
|
|
109
|
+
type StreamHandler = (...params: unknown[]) => ReadableStream;
|
|
110
|
+
/**
|
|
111
|
+
* Stream method registration options
|
|
112
|
+
*/
|
|
113
|
+
interface StreamMethodOptions extends RpcMethodOptions {
|
|
114
|
+
/** Indicates this method returns a stream */
|
|
115
|
+
stream?: true;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Underlying source for ReadableStream
|
|
119
|
+
*/
|
|
120
|
+
type UnderlyingSource<T> = {
|
|
121
|
+
start?: (controller: ReadableStreamDefaultController<T>) => void | Promise<void>;
|
|
122
|
+
pull?: (controller: ReadableStreamDefaultController<T>) => void | Promise<void>;
|
|
123
|
+
cancel?: (reason?: unknown) => void | Promise<void>;
|
|
124
|
+
type?: undefined;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Event handler callback type
|
|
128
|
+
*/
|
|
129
|
+
type EventHandler<T = unknown> = (data: T) => void;
|
|
130
|
+
/**
|
|
131
|
+
* Event subscriber information
|
|
132
|
+
*/
|
|
133
|
+
interface EventSubscriber {
|
|
134
|
+
windowId: number;
|
|
135
|
+
eventName: string;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Event bus API type
|
|
139
|
+
* Maps event names to their data types
|
|
140
|
+
*/
|
|
141
|
+
type EventBusEvents<T extends Record<string, unknown>> = { [K in keyof T]: T[K] };
|
|
142
|
+
/**
|
|
143
|
+
* Typed event bus interface
|
|
144
|
+
*/
|
|
145
|
+
type EventBus<T extends Record<string, unknown> = Record<string, unknown>> = {
|
|
146
|
+
/**
|
|
147
|
+
* Subscribe to an event
|
|
148
|
+
* @returns Unsubscribe function
|
|
149
|
+
*/
|
|
150
|
+
on<K extends keyof T>(eventName: K, callback: EventHandler<T[K]>): () => void;
|
|
151
|
+
/**
|
|
152
|
+
* Unsubscribe from an event
|
|
153
|
+
* If no callback is provided, removes all handlers for the event
|
|
154
|
+
*/
|
|
155
|
+
off<K extends keyof T>(eventName: K, callback?: EventHandler<T[K]>): void;
|
|
156
|
+
/**
|
|
157
|
+
* Subscribe to an event once (auto-unsubscribe after first call)
|
|
158
|
+
*/
|
|
159
|
+
once<K extends keyof T>(eventName: K, callback: EventHandler<T[K]>): void;
|
|
160
|
+
/**
|
|
161
|
+
* Get list of subscribed event names
|
|
162
|
+
*/
|
|
163
|
+
getSubscribedEvents(): string[];
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* RPC debug log entry type
|
|
167
|
+
*/
|
|
168
|
+
interface RpcLogEntry {
|
|
169
|
+
/** Log entry type */
|
|
170
|
+
type: "request" | "response" | "error" | "notify" | "stream" | "event";
|
|
171
|
+
/** RPC method or event name */
|
|
172
|
+
method: string;
|
|
173
|
+
/** Request parameters */
|
|
174
|
+
params?: unknown[];
|
|
175
|
+
/** Response result */
|
|
176
|
+
result?: unknown;
|
|
177
|
+
/** Error message */
|
|
178
|
+
error?: string;
|
|
179
|
+
/** Timestamp in milliseconds */
|
|
180
|
+
timestamp: number;
|
|
181
|
+
/** Duration in milliseconds (for responses/errors) */
|
|
182
|
+
duration?: number;
|
|
183
|
+
/** Request ID for correlating request/response */
|
|
184
|
+
requestId?: string | number;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* RPC logger function type
|
|
188
|
+
*/
|
|
189
|
+
type RpcLogger = (entry: RpcLogEntry) => void;
|
|
190
|
+
/**
|
|
191
|
+
* Debug options for RPC clients
|
|
192
|
+
*/
|
|
193
|
+
interface RpcDebugOptions {
|
|
194
|
+
/** Enable debug logging */
|
|
195
|
+
debug?: boolean;
|
|
196
|
+
/** Custom logger function */
|
|
197
|
+
logger?: RpcLogger;
|
|
198
|
+
}
|
|
199
|
+
//#endregion
|
|
200
|
+
export { UnderlyingSource as S, RpcValidator as _, ExposeRpcApiOptions as a, StreamMethodOptions as b, JsonRpcRequest as c, RpcClientOptions as d, RpcDebugOptions as f, RpcMethodOptions as g, RpcLogger as h, EventSubscriber as i, JsonRpcResponse as l, RpcLogEntry as m, EventBusEvents as n, JsonRpcError as o, RpcHandler as p, EventHandler as r, JsonRpcErrorCode as s, EventBus as t, RpcApi as u, StreamChunk as v, StreamRequest as x, StreamHandler as y };
|
|
201
|
+
//# sourceMappingURL=types-BnGse9DF.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-BnGse9DF.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "electron-json-rpc",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "JSON-RPC implementation for Electron",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"type": "module",
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./main": {
|
|
18
|
+
"types": "./dist/main.d.ts",
|
|
19
|
+
"import": "./dist/main.js"
|
|
20
|
+
},
|
|
21
|
+
"./preload": {
|
|
22
|
+
"types": "./dist/preload.d.ts",
|
|
23
|
+
"import": "./dist/preload.js"
|
|
24
|
+
},
|
|
25
|
+
"./renderer": {
|
|
26
|
+
"types": "./dist/renderer/index.d.ts",
|
|
27
|
+
"import": "./dist/renderer/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./renderer/client": {
|
|
30
|
+
"types": "./dist/renderer/client.d.ts",
|
|
31
|
+
"import": "./dist/renderer/client.js"
|
|
32
|
+
},
|
|
33
|
+
"./renderer/builder": {
|
|
34
|
+
"types": "./dist/renderer/builder.d.ts",
|
|
35
|
+
"import": "./dist/renderer/builder.js"
|
|
36
|
+
},
|
|
37
|
+
"./renderer/event": {
|
|
38
|
+
"types": "./dist/renderer/event.d.ts",
|
|
39
|
+
"import": "./dist/renderer/event.js"
|
|
40
|
+
},
|
|
41
|
+
"./stream": {
|
|
42
|
+
"types": "./dist/stream.d.ts",
|
|
43
|
+
"import": "./dist/stream.js"
|
|
44
|
+
},
|
|
45
|
+
"./event": {
|
|
46
|
+
"types": "./dist/event.d.ts",
|
|
47
|
+
"import": "./dist/event.js"
|
|
48
|
+
},
|
|
49
|
+
"./debug": {
|
|
50
|
+
"types": "./dist/debug.d.ts",
|
|
51
|
+
"import": "./dist/debug.js"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"lint": "oxlint",
|
|
56
|
+
"format": "oxfmt .",
|
|
57
|
+
"format:check": "oxfmt --check .",
|
|
58
|
+
"typecheck": "tsc --noEmit",
|
|
59
|
+
"build": "tsdown",
|
|
60
|
+
"dev": "tsdown --watch",
|
|
61
|
+
"prepublishOnly": "bun run typecheck && bun run lint && bun run test:run && bun run build",
|
|
62
|
+
"test": "vitest",
|
|
63
|
+
"test:run": "vitest run",
|
|
64
|
+
"test:coverage": "vitest run --coverage",
|
|
65
|
+
"test:ui": "vitest --ui",
|
|
66
|
+
"release": "semantic-release"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@commitlint/cli": "^20.3.1",
|
|
70
|
+
"@commitlint/config-conventional": "^20.3.1",
|
|
71
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
72
|
+
"@semantic-release/commit-analyzer": "^13.0.0",
|
|
73
|
+
"@semantic-release/git": "^10.0.1",
|
|
74
|
+
"@semantic-release/npm": "^12.0.0",
|
|
75
|
+
"@semantic-release/release-notes-generator": "^14.0.0",
|
|
76
|
+
"@types/bun": "latest",
|
|
77
|
+
"@types/node": "^25.0.8",
|
|
78
|
+
"@vitest/coverage-v8": "^4.0.17",
|
|
79
|
+
"@vitest/ui": "^4.0.17",
|
|
80
|
+
"electron": "^39.2.7",
|
|
81
|
+
"happy-dom": "^20.3.1",
|
|
82
|
+
"oxfmt": "^0.24.0",
|
|
83
|
+
"oxlint": "^1.39.0",
|
|
84
|
+
"semantic-release": "^25.0.2",
|
|
85
|
+
"tsdown": "^0.20.0-beta.3",
|
|
86
|
+
"typescript": "^5.9.3",
|
|
87
|
+
"vitest": "^4.0.17"
|
|
88
|
+
},
|
|
89
|
+
"peerDependencies": {
|
|
90
|
+
"electron": "*"
|
|
91
|
+
}
|
|
92
|
+
}
|