@lynker-desktop/electron-ipc 0.0.9-alpha.4 → 0.0.9-alpha.41

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/renderer/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  const index = require('../common/index.js');
2
2
 
3
- // import { getRandomUUID } from '../common';
4
3
  const getIpc = () => {
5
4
  try {
6
5
  // @ts-ignore
@@ -18,101 +17,82 @@ class RendererIPC {
18
17
  static get ipcRenderer() {
19
18
  return getIpc();
20
19
  }
21
- /**
22
- * 发送一次性给主进程消息
23
- * @param channel
24
- * @param args
25
- * @returns
26
- */
27
- static invokeMainOnce(channel, ...args) {
28
- return new Promise(resolve => {
29
- getIpc().once(`${channel}-reply`, (_event, result) => {
30
- resolve(result);
31
- });
32
- getIpc().send(channel, ...args);
33
- });
34
- }
35
20
  /**
36
21
  * 发送给主进程消息
37
- * @param channel
38
- * @param args
39
- * @returns
22
+ * 使用 Electron 原生的 invoke 方法,支持并发请求
23
+ * @param channel 消息通道名称
24
+ * @param args 传递给处理器的参数
25
+ * @returns Promise<any> 返回处理结果
40
26
  */
41
27
  static async invokeMain(channel, ...args) {
42
- return await getIpc().invoke(channel, ...args);
43
- }
44
- /**
45
- * 处理一次性主进程发送过来的消息
46
- * @param channel
47
- * @param handler
48
- */
49
- static handleMainOnce(channel, handler) {
50
- getIpc().once(channel, async (_event, ...args) => {
51
- const result = await handler(...args);
52
- getIpc().send(`${channel}-reply`, result);
53
- });
28
+ return await RendererIPC.ipcRenderer.invoke(channel, ...args);
54
29
  }
55
30
  /**
56
31
  * 处理主进程发送过来的消息
57
- * @param channel
58
- * @param handler
32
+ * 支持 requestId 机制,确保并发请求正确匹配
33
+ * @param channel 消息通道名称
34
+ * @param handler 处理函数,接收除 requestId 外的所有参数
59
35
  */
60
36
  static handleMain(channel, handler) {
61
- getIpc().on(channel, async (_event, ...args) => {
37
+ RendererIPC.ipcRenderer.on(channel, async (_event, requestId, ...args) => {
62
38
  const result = await handler(...args);
63
- getIpc().send(`${channel}-reply`, result);
39
+ RendererIPC.ipcRenderer.send(`${channel}-reply-${requestId}`, result);
64
40
  });
41
+ return {
42
+ cancel: () => {
43
+ RendererIPC.ipcRenderer.removeListener(channel, handler);
44
+ }
45
+ };
65
46
  }
66
47
  /**
67
48
  * 发送给渲染进程消息
68
- * @param channel
69
- * @param args
70
- * @returns
49
+ * 使用唯一的 requestId 确保并发请求不会互相干扰
50
+ * @param channel 消息通道名称
51
+ * @param args 传递给渲染进程的参数
52
+ * @returns Promise<any> 返回渲染进程的处理结果
71
53
  */
72
54
  static invokeRenderer(channel, ...args) {
73
55
  return new Promise(resolve => {
74
- getIpc().once(`${channel}-reply`, (_event, result) => {
56
+ const requestId = index.getRandomUUID();
57
+ RendererIPC.ipcRenderer.once(`${channel}-reply-${requestId}`, (_event, result) => {
75
58
  resolve(result);
76
59
  });
77
- getIpc().send('relay-message', { channel, args });
60
+ RendererIPC.ipcRenderer.send('relay-message', { channel, requestId, args });
78
61
  });
79
62
  }
80
63
  /**
81
64
  * 发送给指定渲染进程消息
82
- * @param targetWindowId
83
- * @param channel
84
- * @param args
85
- * @returns
65
+ * 使用唯一的 requestId 确保并发请求不会互相干扰
66
+ * @param targetWindowId 目标窗口ID
67
+ * @param channel 消息通道名称
68
+ * @param args 传递给渲染进程的参数
69
+ * @returns Promise<any> 返回渲染进程的处理结果
86
70
  */
87
71
  static invokeRendererByWinId(targetWindowId, channel, ...args) {
88
72
  return new Promise(resolve => {
89
- getIpc().once(`${channel}-reply`, (_event, result) => {
73
+ const requestId = index.getRandomUUID();
74
+ RendererIPC.ipcRenderer.once(`${channel}-reply-${requestId}`, (_event, result) => {
90
75
  resolve(result);
91
76
  });
92
- getIpc().send('relay-message', { targetWindowId, channel, args });
93
- });
94
- }
95
- /**
96
- * 处理一次性渲染进程发送过来的消息
97
- * @param channel
98
- * @param handler
99
- */
100
- static handleRendererOnce(channel, handler) {
101
- getIpc().once(channel, async (_event, ...args) => {
102
- const result = await handler(...args);
103
- getIpc().send('relay-reply', { originalChannel: channel, result });
77
+ RendererIPC.ipcRenderer.send('relay-message', { targetWindowId, channel, requestId, args });
104
78
  });
105
79
  }
106
80
  /**
107
81
  * 处理渲染进程发送过来的消息
108
- * @param channel
109
- * @param handler
82
+ * 支持 requestId 机制,确保并发请求正确匹配
83
+ * @param channel 消息通道名称
84
+ * @param handler 处理函数,接收除 requestId 外的所有参数
110
85
  */
111
86
  static handleRenderer(channel, handler) {
112
- getIpc().on(channel, async (_event, ...args) => {
87
+ RendererIPC.ipcRenderer.on(channel, async (_event, requestId, ...args) => {
113
88
  const result = await handler(...args);
114
- getIpc().send('relay-reply', { originalChannel: channel, result });
89
+ RendererIPC.ipcRenderer.send('relay-reply', { originalChannel: channel, requestId, result });
115
90
  });
91
+ return {
92
+ cancel: () => {
93
+ RendererIPC.ipcRenderer.removeListener(channel, handler);
94
+ }
95
+ };
116
96
  }
117
97
  /**
118
98
  * 获取当前渲染进程id
@@ -120,10 +100,10 @@ class RendererIPC {
120
100
  static async getCurrentWebContentId() {
121
101
  return new Promise(resolve => {
122
102
  const channel = `__GetCurrentWebContentId__`;
123
- getIpc().once(`${channel}-reply`, (_event, result) => {
103
+ RendererIPC.ipcRenderer.once(`${channel}-reply`, (_event, result) => {
124
104
  resolve(result);
125
105
  });
126
- getIpc().send(channel);
106
+ RendererIPC.ipcRenderer.send(channel);
127
107
  });
128
108
  }
129
109
  /**
@@ -133,10 +113,10 @@ class RendererIPC {
133
113
  static async openCurrentWebContentDevTools() {
134
114
  return new Promise(resolve => {
135
115
  const channel = `__OpenCurrentWebContentDevTools__`;
136
- getIpc().once(`${channel}-reply`, (_event, result) => {
116
+ RendererIPC.ipcRenderer.once(`${channel}-reply`, (_event, result) => {
137
117
  resolve(result);
138
118
  });
139
- getIpc().send(channel);
119
+ RendererIPC.ipcRenderer.send(channel);
140
120
  });
141
121
  }
142
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/src/renderer/index.ts"],"sourcesContent":["import type { IpcRenderer, IpcRendererEvent } from 'electron'\n// import { getRandomUUID } from '../common';\n\nexport { WINDOWL_GLOBAL_KEY } from '../common'\n\nexport const getIpc = (): IpcRenderer => {\n try {\n // @ts-ignore\n return window.__ELECTRON_IPC__ || window?.require('electron').ipcRenderer\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n return {} as IpcRenderer;\n }\n}\n\nexport class RendererIPC {\n /**\n * 原生ipcRenderer\n */\n static get ipcRenderer() {\n return getIpc()\n }\n /**\n * 发送一次性给主进程消息\n * @param channel\n * @param args\n * @returns\n */\n\tstatic invokeMainOnce(channel: string, ...args: any[]): Promise<any> {\n\t\treturn new Promise(resolve => {\n\t\t\tgetIpc().once(`${channel}-reply`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tgetIpc().send(channel, ...args)\n\t\t})\n\t}\n /**\n * 发送给主进程消息\n * @param channel\n * @param args\n * @returns\n */\n\tstatic async invokeMain(channel: string, ...args: any[]): Promise<any> {\n\t\treturn await getIpc().invoke(channel, ...args)\n\t}\n /**\n * 处理一次性主进程发送过来的消息\n * @param channel\n * @param handler\n */\n\tstatic handleMainOnce(channel: string, handler: (...args: any[]) => Promise<any>) {\n\t\tgetIpc().once(channel, async (_event: IpcRendererEvent, ...args: any[]) => {\n\t\t\tconst result = await handler(...args)\n\t\t\tgetIpc().send(`${channel}-reply`, result)\n\t\t})\n\t}\n /**\n * 处理主进程发送过来的消息\n * @param channel\n * @param handler\n */\n\tstatic handleMain(channel: string, handler: (...args: any[]) => Promise<any>) {\n\t\tgetIpc().on(channel, async (_event: IpcRendererEvent, ...args: any[]) => {\n\t\t\tconst result = await handler(...args)\n\t\t\tgetIpc().send(`${channel}-reply`, result)\n\t\t})\n\t}\n /**\n * 发送给渲染进程消息\n * @param channel\n * @param args\n * @returns\n */\n\tstatic invokeRenderer(channel: string, ...args: any[]): Promise<any> {\n\t\treturn new Promise(resolve => {\n\t\t\tgetIpc().once(`${channel}-reply`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tgetIpc().send('relay-message', { channel, args })\n\t\t})\n\t}\n\n /**\n * 发送给指定渲染进程消息\n * @param targetWindowId\n * @param channel\n * @param args\n * @returns\n */\n\tstatic invokeRendererByWinId(targetWindowId: number, channel: string, ...args: any[]): Promise<any> {\n\t\treturn new Promise(resolve => {\n\t\t\tgetIpc().once(`${channel}-reply`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tgetIpc().send('relay-message', { targetWindowId, channel, args })\n\t\t})\n\t}\n\n /**\n * 处理一次性渲染进程发送过来的消息\n * @param channel\n * @param handler\n */\n\tstatic handleRendererOnce(channel: string, handler: (...args: any[]) => Promise<any>) {\n\t\tgetIpc().once(channel, async (_event: IpcRendererEvent, ...args: any[]) => {\n\t\t\tconst result = await handler(...args)\n\t\t\tgetIpc().send('relay-reply', { originalChannel: channel, result })\n\t\t})\n\t}\n\n /**\n * 处理渲染进程发送过来的消息\n * @param channel\n * @param handler\n */\n\tstatic handleRenderer(channel: string, handler: (...args: any[]) => Promise<any>) {\n\t\tgetIpc().on(channel, async (_event: IpcRendererEvent, ...args: any[]) => {\n\t\t\tconst result = await handler(...args)\n\t\t\tgetIpc().send('relay-reply', { originalChannel: channel, result })\n\t\t})\n\t}\n\n /**\n * 获取当前渲染进程id\n */\n static async getCurrentWebContentId(): Promise<number> {\n return new Promise(resolve => {\n const channel = `__GetCurrentWebContentId__`\n\t\t\tgetIpc().once(`${channel}-reply`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tgetIpc().send(channel)\n\t\t})\n }\n\n /**\n * 打开当前窗口的开发者工具\n * @returns\n */\n static async openCurrentWebContentDevTools(): Promise<number> {\n return new Promise(resolve => {\n const channel = `__OpenCurrentWebContentDevTools__`\n\t\t\tgetIpc().once(`${channel}-reply`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tgetIpc().send(channel)\n\t\t})\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/src/renderer/index.ts"],"sourcesContent":["import type { IpcRenderer, IpcRendererEvent } from 'electron'\nimport { getRandomUUID } from '../common';\n\nexport { WINDOWL_GLOBAL_KEY } from '../common'\n\nexport const getIpc = (): IpcRenderer => {\n try {\n // @ts-ignore\n return window.__ELECTRON_IPC__ || window?.require('electron').ipcRenderer\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n return {} as IpcRenderer;\n }\n}\n\nexport class RendererIPC {\n /**\n * 原生ipcRenderer\n */\n static get ipcRenderer() {\n return getIpc()\n }\n /**\n * 发送给主进程消息\n * 使用 Electron 原生的 invoke 方法,支持并发请求\n * @param channel 消息通道名称\n * @param args 传递给处理器的参数\n * @returns Promise<any> 返回处理结果\n */\n\tstatic async invokeMain(channel: string, ...args: any[]): Promise<any> {\n\t\treturn await RendererIPC.ipcRenderer.invoke(channel, ...args)\n\t}\n /**\n * 处理主进程发送过来的消息\n * 支持 requestId 机制,确保并发请求正确匹配\n * @param channel 消息通道名称\n * @param handler 处理函数,接收除 requestId 外的所有参数\n */\n\tstatic handleMain(channel: string, handler: (...args: any[]) => Promise<any>) {\n\t\tRendererIPC.ipcRenderer.on(channel, async (_event: IpcRendererEvent, requestId: string, ...args: any[]) => {\n\t\t\tconst result = await handler(...args)\n\t\t\tRendererIPC.ipcRenderer.send(`${channel}-reply-${requestId}`, result)\n\t\t})\n return {\n cancel: () => {\n RendererIPC.ipcRenderer.removeListener(channel, handler)\n }\n };\n\t}\n /**\n * 发送给渲染进程消息\n * 使用唯一的 requestId 确保并发请求不会互相干扰\n * @param channel 消息通道名称\n * @param args 传递给渲染进程的参数\n * @returns Promise<any> 返回渲染进程的处理结果\n */\n\tstatic invokeRenderer(channel: string, ...args: any[]): Promise<any> {\n\t\treturn new Promise(resolve => {\n\t\t\tconst requestId = getRandomUUID()\n\t\t\tRendererIPC.ipcRenderer.once(`${channel}-reply-${requestId}`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tRendererIPC.ipcRenderer.send('relay-message', { channel, requestId, args })\n\t\t})\n\t}\n\n /**\n * 发送给指定渲染进程消息\n * 使用唯一的 requestId 确保并发请求不会互相干扰\n * @param targetWindowId 目标窗口ID\n * @param channel 消息通道名称\n * @param args 传递给渲染进程的参数\n * @returns Promise<any> 返回渲染进程的处理结果\n */\n\tstatic invokeRendererByWinId(targetWindowId: number, channel: string, ...args: any[]): Promise<any> {\n\t\treturn new Promise(resolve => {\n\t\t\tconst requestId = getRandomUUID()\n\t\t\tRendererIPC.ipcRenderer.once(`${channel}-reply-${requestId}`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tRendererIPC.ipcRenderer.send('relay-message', { targetWindowId, channel, requestId, args })\n\t\t})\n\t}\n\n /**\n * 处理渲染进程发送过来的消息\n * 支持 requestId 机制,确保并发请求正确匹配\n * @param channel 消息通道名称\n * @param handler 处理函数,接收除 requestId 外的所有参数\n */\n\tstatic handleRenderer(channel: string, handler: (...args: any[]) => Promise<any>) {\n\t\tRendererIPC.ipcRenderer.on(channel, async (_event: IpcRendererEvent, requestId: string, ...args: any[]) => {\n\t\t\tconst result = await handler(...args)\n\t\t\tRendererIPC.ipcRenderer.send('relay-reply', { originalChannel: channel, requestId, result })\n\t\t})\n return {\n cancel: () => {\n RendererIPC.ipcRenderer.removeListener(channel, handler)\n }\n };\n\t}\n\n /**\n * 获取当前渲染进程id\n */\n static async getCurrentWebContentId(): Promise<number> {\n return new Promise(resolve => {\n const channel = `__GetCurrentWebContentId__`\n\t\t\tRendererIPC.ipcRenderer.once(`${channel}-reply`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tRendererIPC.ipcRenderer.send(channel)\n\t\t})\n }\n\n /**\n * 打开当前窗口的开发者工具\n * @returns\n */\n static async openCurrentWebContentDevTools(): Promise<number> {\n return new Promise(resolve => {\n const channel = `__OpenCurrentWebContentDevTools__`\n\t\t\tRendererIPC.ipcRenderer.once(`${channel}-reply`, (_event: IpcRendererEvent, result: any) => {\n\t\t\t\tresolve(result)\n\t\t\t})\n\t\t\tRendererIPC.ipcRenderer.send(channel)\n\t\t})\n }\n}\n"],"names":["getRandomUUID"],"mappings":"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"}