@oldzy/conduit-electron-adapter 1.0.0 → 1.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/README.md +53 -34
- package/dist/index.d.mts +14 -8
- package/dist/index.d.ts +14 -8
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/preload.d.mts +5 -4
- package/dist/preload.d.ts +5 -4
- package/dist/preload.js +1 -1
- package/dist/preload.mjs +1 -1
- package/package.json +3 -5
package/README.md
CHANGED
|
@@ -6,10 +6,11 @@ Electron IPC adapter for [@oldzy/conduit](https://github.com/oldzy/conduit), ena
|
|
|
6
6
|
|
|
7
7
|
- 🔌 IPC-based communication between main and renderer processes
|
|
8
8
|
- 🎯 Request/Response pattern with UUID tracking
|
|
9
|
-
- 📡
|
|
9
|
+
- 📡 Separate handlers for simple and streaming responses
|
|
10
10
|
- 🚫 Request cancellation support
|
|
11
11
|
- 💉 Automatic dependency injection for Electron App and IpcMain
|
|
12
12
|
- 🔄 AbortController integration for async operations
|
|
13
|
+
- 🔒 Type-safe with TypeScript generics
|
|
13
14
|
|
|
14
15
|
## Installation
|
|
15
16
|
|
|
@@ -55,7 +56,7 @@ const mainWindow = new BrowserWindow({
|
|
|
55
56
|
```
|
|
56
57
|
|
|
57
58
|
The preload script automatically:
|
|
58
|
-
- Exposes `
|
|
59
|
+
- Exposes `conduit` to the renderer via `contextBridge`
|
|
59
60
|
- Handles all IPC listeners for streaming, errors, and cancellation
|
|
60
61
|
- Manages request timeout (30 seconds)
|
|
61
62
|
- Cleans up listeners automatically
|
|
@@ -63,32 +64,28 @@ The preload script automatically:
|
|
|
63
64
|
### Renderer Process
|
|
64
65
|
|
|
65
66
|
```typescript
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
interface Window {
|
|
69
|
-
electronService: IElectronService;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Simple request/response
|
|
74
|
-
const response = await window.electronService.send({
|
|
67
|
+
// Simple request/response (for SimpleHandler)
|
|
68
|
+
const response = await window.conduit.send<GetUserResponse>({
|
|
75
69
|
uuid: crypto.randomUUID(),
|
|
76
|
-
|
|
70
|
+
type: 'GET_USER',
|
|
71
|
+
userId: '123'
|
|
77
72
|
});
|
|
73
|
+
console.log(response.userName);
|
|
78
74
|
|
|
79
|
-
// Streaming request
|
|
80
|
-
await window.
|
|
75
|
+
// Streaming request (for StreamingHandler)
|
|
76
|
+
await window.conduit.stream<LogChunkResponse>(
|
|
81
77
|
{
|
|
82
78
|
uuid: crypto.randomUUID(),
|
|
83
|
-
|
|
79
|
+
type: 'STREAM_LOGS',
|
|
80
|
+
filename: 'app.log'
|
|
84
81
|
},
|
|
85
82
|
(chunk) => {
|
|
86
|
-
console.log('Received chunk:', chunk);
|
|
83
|
+
console.log('Received chunk:', chunk.line);
|
|
87
84
|
}
|
|
88
85
|
);
|
|
89
86
|
|
|
90
87
|
// Cancel a request
|
|
91
|
-
await window.
|
|
88
|
+
await window.conduit.cancel('request-uuid');
|
|
92
89
|
```
|
|
93
90
|
|
|
94
91
|
## API
|
|
@@ -96,34 +93,54 @@ await window.electronService.cancel('request-uuid');
|
|
|
96
93
|
### ElectronAdapter (Main Process)
|
|
97
94
|
|
|
98
95
|
The adapter automatically:
|
|
99
|
-
- Registers `conduit:send` IPC handler for
|
|
96
|
+
- Registers `conduit:send` IPC handler for simple requests (SimpleHandler)
|
|
97
|
+
- Registers `conduit:stream` IPC handler for streaming requests (StreamingHandler)
|
|
100
98
|
- Registers `conduit:cancel` IPC handler for cancelling requests
|
|
101
99
|
- Injects `ElectronApp` (app instance) and `IpcMain` into the service container
|
|
102
100
|
- Manages streaming responses via IPC events
|
|
103
101
|
- Handles request cancellation with AbortController
|
|
104
102
|
|
|
105
|
-
###
|
|
103
|
+
### IConduitService (Renderer Process)
|
|
104
|
+
|
|
105
|
+
The `window.conduit` object is automatically typed when you import the package:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
import '@oldzy/conduit-electron-adapter';
|
|
109
|
+
|
|
110
|
+
// Now window.conduit is fully typed!
|
|
111
|
+
const response = await window.conduit.send<MyResponse>(request);
|
|
112
|
+
```
|
|
106
113
|
|
|
107
114
|
```typescript
|
|
108
|
-
interface
|
|
109
|
-
send: (
|
|
115
|
+
interface IConduitService {
|
|
116
|
+
send: <TResponse extends BaseResponse>(
|
|
117
|
+
request: BaseRequest
|
|
118
|
+
) => Promise<TResponse>;
|
|
119
|
+
stream: <TResponse extends BaseResponse>(
|
|
110
120
|
request: BaseRequest,
|
|
111
|
-
onData
|
|
112
|
-
) => Promise<
|
|
121
|
+
onData: (response: TResponse) => void
|
|
122
|
+
) => Promise<void>;
|
|
113
123
|
cancel: (requestUuid: string) => Promise<void>;
|
|
114
124
|
}
|
|
115
125
|
```
|
|
116
126
|
|
|
117
|
-
####
|
|
127
|
+
#### Methodstimeout (30s) and cleanup
|
|
128
|
+
|
|
129
|
+
- **`cancel(requestUuid)`** - Cancel a pending request by UUID
|
|
130
|
+
|
|
131
|
+
**Important**: Use `send()` for SimpleHandler and `stream()` for StreamingHandler. Using the wrong method will result in an error.
|
|
132
|
+
|
|
133
|
+
### IPC Channels
|
|
118
134
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
- Resolves when streaming is complete
|
|
123
|
-
- Automatically handles timeout (30s) and cleanup
|
|
135
|
+
Internal channels (handled automatically by the preload script):
|
|
136
|
+
- `conduit:send` - Send a simple request (invoke) - returns response
|
|
137
|
+
- `conduit:stream` - Start a streaming request (invoke) - sends chunks via eventsuest (invoke) - sends chunks via eventsd cleanup
|
|
124
138
|
|
|
125
139
|
- **`cancel(requestUuid)`** - Cancel a pending request by UUID
|
|
126
140
|
|
|
141
|
+
**Important**: Use `send()` for SimpleHandler and `stream()` for StreamingHandler. Using the wrong method will result in an error.
|
|
142
|
+
- **`cancel(requestUuid)`** - Cancel a pending request by UUID
|
|
143
|
+
|
|
127
144
|
### IPC Channels
|
|
128
145
|
|
|
129
146
|
Internal channels (handled automatically by the preload script):
|
|
@@ -138,14 +155,16 @@ Internal channels (handled automatically by the preload script):
|
|
|
138
155
|
|
|
139
156
|
```typescript
|
|
140
157
|
interface ErrorResponse {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
158
|
+
class ErrorResponse extends BaseResponse {
|
|
159
|
+
constructor(
|
|
160
|
+
public requestUuid: string,
|
|
161
|
+
public error: string,
|
|
162
|
+
public stack?: string
|
|
163
|
+
);
|
|
146
164
|
}
|
|
147
165
|
```
|
|
148
166
|
|
|
167
|
+
**Note**: The `window.conduit` type is automatically available when you import the package in your TypeScript files.
|
|
149
168
|
## License
|
|
150
169
|
|
|
151
170
|
MIT
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IApplicationAdapter, ServiceCollection, Application } from '@oldzy/conduit';
|
|
2
|
-
|
|
1
|
+
import { IApplicationAdapter, ServiceCollection, Application, BaseResponse } from '@oldzy/conduit';
|
|
2
|
+
import { IConduitService } from './preload.mjs';
|
|
3
3
|
|
|
4
4
|
declare class ElectronAdapter implements IApplicationAdapter {
|
|
5
5
|
name: string;
|
|
@@ -7,19 +7,25 @@ declare class ElectronAdapter implements IApplicationAdapter {
|
|
|
7
7
|
private requestControllers;
|
|
8
8
|
configure(services: ServiceCollection): void | Promise<void>;
|
|
9
9
|
initialize(app: Application): void | Promise<void>;
|
|
10
|
-
private
|
|
10
|
+
private handleSendRequest;
|
|
11
|
+
private handleStreamRequest;
|
|
11
12
|
private handleStream;
|
|
12
13
|
private handleCancel;
|
|
13
14
|
private createErrorResponse;
|
|
14
15
|
dispose(): void | Promise<void>;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
success: false;
|
|
18
|
+
declare class ErrorResponse extends BaseResponse {
|
|
19
19
|
requestUuid: string;
|
|
20
|
-
timestamp: Date;
|
|
21
20
|
error: string;
|
|
22
|
-
stack?: string;
|
|
21
|
+
stack?: string | undefined;
|
|
22
|
+
constructor(requestUuid: string, error: string, stack?: string | undefined);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
declare global {
|
|
26
|
+
interface Window {
|
|
27
|
+
conduit: IConduitService;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { ElectronAdapter, ErrorResponse, IConduitService };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IApplicationAdapter, ServiceCollection, Application } from '@oldzy/conduit';
|
|
2
|
-
|
|
1
|
+
import { IApplicationAdapter, ServiceCollection, Application, BaseResponse } from '@oldzy/conduit';
|
|
2
|
+
import { IConduitService } from './preload.js';
|
|
3
3
|
|
|
4
4
|
declare class ElectronAdapter implements IApplicationAdapter {
|
|
5
5
|
name: string;
|
|
@@ -7,19 +7,25 @@ declare class ElectronAdapter implements IApplicationAdapter {
|
|
|
7
7
|
private requestControllers;
|
|
8
8
|
configure(services: ServiceCollection): void | Promise<void>;
|
|
9
9
|
initialize(app: Application): void | Promise<void>;
|
|
10
|
-
private
|
|
10
|
+
private handleSendRequest;
|
|
11
|
+
private handleStreamRequest;
|
|
11
12
|
private handleStream;
|
|
12
13
|
private handleCancel;
|
|
13
14
|
private createErrorResponse;
|
|
14
15
|
dispose(): void | Promise<void>;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
success: false;
|
|
18
|
+
declare class ErrorResponse extends BaseResponse {
|
|
19
19
|
requestUuid: string;
|
|
20
|
-
timestamp: Date;
|
|
21
20
|
error: string;
|
|
22
|
-
stack?: string;
|
|
21
|
+
stack?: string | undefined;
|
|
22
|
+
constructor(requestUuid: string, error: string, stack?: string | undefined);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
declare global {
|
|
26
|
+
interface Window {
|
|
27
|
+
conduit: IConduitService;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { ElectronAdapter, ErrorResponse, IConduitService };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use strict';var electron=require('electron'),conduit=require('@oldzy/conduit');/* conduit - MIT License */
|
|
2
|
-
var
|
|
2
|
+
var h=Object.defineProperty;var m=(o,s,e)=>s in o?h(o,s,{enumerable:true,configurable:true,writable:true,value:e}):o[s]=e;var d=(o,s)=>h(o,"name",{value:s,configurable:true});var t=(o,s,e)=>m(o,typeof s!="symbol"?s+"":s,e);var u=class u extends conduit.BaseResponse{constructor(e,r,n){super("ERROR_RESPONSE");t(this,"requestUuid");t(this,"error");t(this,"stack");this.requestUuid=e,this.error=r,this.stack=n,this.success=false;}};d(u,"ErrorResponse");var c=u;var p=class p{constructor(){t(this,"name","ElectronAdapter");t(this,"app");t(this,"requestControllers",new Map);}configure(s){s.addSingleton("ElectronApp",electron.app),s.addSingleton("IpcMain",electron.ipcMain);}initialize(s){if(this.app=s,!this.app)throw new Error("Application not initialized");electron.ipcMain.handle("conduit:send",async(e,r)=>await this.handleSendRequest(e,r)),electron.ipcMain.handle("conduit:stream",async(e,r)=>{await this.handleStreamRequest(e,r);}),electron.ipcMain.handle("conduit:cancel",async(e,r)=>{await this.handleCancel(e,r);});}async handleSendRequest(s,e){try{return await this.app.send(e)}catch(r){throw this.createErrorResponse(e.uuid,r)}}async handleStreamRequest(s,e){let r=new AbortController;this.requestControllers.set(e.uuid,r);try{let n=await this.app.stream(e);await this.handleStream(s,e,n,r);}catch(n){let i=this.createErrorResponse(e.uuid,n);s.sender.send(`conduit:response:error:${e.uuid}`,i),this.requestControllers.delete(e.uuid);}}async handleStream(s,e,r,n){try{for await(let i of r){if(n.signal.aborted){s.sender.send(`conduit:response:cancelled:${e.uuid}`,{success:!1,requestUuid:e.uuid,error:"Request was cancelled"});return}s.sender.send(`conduit:response:data:${e.uuid}`,i);}s.sender.send(`conduit:response:complete:${e.uuid}`);}catch(i){if(n.signal.aborted)s.sender.send(`conduit:response:cancelled:${e.uuid}`,{success:false,requestUuid:e.uuid,error:"Request was cancelled"});else {let f=this.createErrorResponse(e.uuid,i);s.sender.send(`conduit:response:error:${e.uuid}`,f);}}finally{this.requestControllers.delete(e.uuid);}}async handleCancel(s,e){let r=this.requestControllers.get(e);r&&(r.abort(),this.requestControllers.delete(e),s.sender.send(`conduit:response:cancelled:${e}`,{success:false,requestUuid:e,error:"Request cancelled by user"}));}createErrorResponse(s,e){return new c(s,e instanceof Error?e.message:"Unknown error",e instanceof Error?e.stack:void 0)}dispose(){for(let[s,e]of this.requestControllers.entries())e.abort(),this.requestControllers.delete(s);electron.ipcMain.removeHandler("conduit:send"),electron.ipcMain.removeHandler("conduit:stream"),electron.ipcMain.removeHandler("conduit:cancel");}};d(p,"ElectronAdapter");var l=p;exports.ElectronAdapter=l;
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import {app,ipcMain}from'electron';import {BaseResponse}from'@oldzy/conduit';/* conduit - MIT License */
|
|
2
|
-
var
|
|
2
|
+
var h=Object.defineProperty;var m=(o,s,e)=>s in o?h(o,s,{enumerable:true,configurable:true,writable:true,value:e}):o[s]=e;var d=(o,s)=>h(o,"name",{value:s,configurable:true});var t=(o,s,e)=>m(o,typeof s!="symbol"?s+"":s,e);var u=class u extends BaseResponse{constructor(e,r,n){super("ERROR_RESPONSE");t(this,"requestUuid");t(this,"error");t(this,"stack");this.requestUuid=e,this.error=r,this.stack=n,this.success=false;}};d(u,"ErrorResponse");var c=u;var p=class p{constructor(){t(this,"name","ElectronAdapter");t(this,"app");t(this,"requestControllers",new Map);}configure(s){s.addSingleton("ElectronApp",app),s.addSingleton("IpcMain",ipcMain);}initialize(s){if(this.app=s,!this.app)throw new Error("Application not initialized");ipcMain.handle("conduit:send",async(e,r)=>await this.handleSendRequest(e,r)),ipcMain.handle("conduit:stream",async(e,r)=>{await this.handleStreamRequest(e,r);}),ipcMain.handle("conduit:cancel",async(e,r)=>{await this.handleCancel(e,r);});}async handleSendRequest(s,e){try{return await this.app.send(e)}catch(r){throw this.createErrorResponse(e.uuid,r)}}async handleStreamRequest(s,e){let r=new AbortController;this.requestControllers.set(e.uuid,r);try{let n=await this.app.stream(e);await this.handleStream(s,e,n,r);}catch(n){let i=this.createErrorResponse(e.uuid,n);s.sender.send(`conduit:response:error:${e.uuid}`,i),this.requestControllers.delete(e.uuid);}}async handleStream(s,e,r,n){try{for await(let i of r){if(n.signal.aborted){s.sender.send(`conduit:response:cancelled:${e.uuid}`,{success:!1,requestUuid:e.uuid,error:"Request was cancelled"});return}s.sender.send(`conduit:response:data:${e.uuid}`,i);}s.sender.send(`conduit:response:complete:${e.uuid}`);}catch(i){if(n.signal.aborted)s.sender.send(`conduit:response:cancelled:${e.uuid}`,{success:false,requestUuid:e.uuid,error:"Request was cancelled"});else {let f=this.createErrorResponse(e.uuid,i);s.sender.send(`conduit:response:error:${e.uuid}`,f);}}finally{this.requestControllers.delete(e.uuid);}}async handleCancel(s,e){let r=this.requestControllers.get(e);r&&(r.abort(),this.requestControllers.delete(e),s.sender.send(`conduit:response:cancelled:${e}`,{success:false,requestUuid:e,error:"Request cancelled by user"}));}createErrorResponse(s,e){return new c(s,e instanceof Error?e.message:"Unknown error",e instanceof Error?e.stack:void 0)}dispose(){for(let[s,e]of this.requestControllers.entries())e.abort(),this.requestControllers.delete(s);ipcMain.removeHandler("conduit:send"),ipcMain.removeHandler("conduit:stream"),ipcMain.removeHandler("conduit:cancel");}};d(p,"ElectronAdapter");var l=p;export{l as ElectronAdapter};
|
package/dist/preload.d.mts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseResponse, BaseRequest } from '@oldzy/conduit';
|
|
2
2
|
|
|
3
|
-
interface
|
|
4
|
-
send: (request: BaseRequest
|
|
3
|
+
interface IConduitService {
|
|
4
|
+
send: <TResponse extends BaseResponse>(request: BaseRequest) => Promise<TResponse>;
|
|
5
|
+
stream: <TResponse extends BaseResponse>(request: BaseRequest, onData: (response: TResponse) => void) => Promise<void>;
|
|
5
6
|
cancel: (requestUuid: string) => Promise<void>;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
|
-
export type {
|
|
9
|
+
export type { IConduitService };
|
package/dist/preload.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseResponse, BaseRequest } from '@oldzy/conduit';
|
|
2
2
|
|
|
3
|
-
interface
|
|
4
|
-
send: (request: BaseRequest
|
|
3
|
+
interface IConduitService {
|
|
4
|
+
send: <TResponse extends BaseResponse>(request: BaseRequest) => Promise<TResponse>;
|
|
5
|
+
stream: <TResponse extends BaseResponse>(request: BaseRequest, onData: (response: TResponse) => void) => Promise<void>;
|
|
5
6
|
cancel: (requestUuid: string) => Promise<void>;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
|
-
export type {
|
|
9
|
+
export type { IConduitService };
|
package/dist/preload.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use strict';var electron=require('electron');/* conduit - MIT License */
|
|
2
|
-
var
|
|
2
|
+
var l=Object.defineProperty;var i=(e,r)=>l(e,"name",{value:r,configurable:true});function s(e,r){return setTimeout(()=>{e(),r(new Error("The request timed out"));},3e4)}i(s,"setTimeoutError");electron.contextBridge.exposeInMainWorld("conduit",{send:i(async e=>electron.ipcRenderer.invoke("conduit:send",e),"send"),stream:i(async(e,r)=>new Promise(async(a,t)=>{let o=i(()=>{clearTimeout(d),electron.ipcRenderer.removeAllListeners(`conduit:response:data:${e.uuid}`),electron.ipcRenderer.removeAllListeners(`conduit:response:complete:${e.uuid}`),electron.ipcRenderer.removeAllListeners(`conduit:response:error:${e.uuid}`),electron.ipcRenderer.removeAllListeners(`conduit:response:cancelled:${e.uuid}`);},"cleanup"),d=s(o,t);electron.ipcRenderer.on(`conduit:response:data:${e.uuid}`,(c,u)=>{clearTimeout(d),d=s(o,t),r(u);}),electron.ipcRenderer.on(`conduit:response:complete:${e.uuid}`,()=>{o(),a();}),electron.ipcRenderer.on(`conduit:response:error:${e.uuid}`,(c,u)=>{o(),t(u);}),electron.ipcRenderer.on(`conduit:response:cancelled:${e.uuid}`,(c,u)=>{o(),t(u);});try{await electron.ipcRenderer.invoke("conduit:stream",e);}catch(c){o(),t(c);}}),"stream"),cancel:i(async e=>electron.ipcRenderer.invoke("conduit:cancel",e),"cancel")});
|
package/dist/preload.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import {contextBridge,ipcRenderer}from'electron';/* conduit - MIT License */
|
|
2
|
-
var
|
|
2
|
+
var l=Object.defineProperty;var i=(e,r)=>l(e,"name",{value:r,configurable:true});function s(e,r){return setTimeout(()=>{e(),r(new Error("The request timed out"));},3e4)}i(s,"setTimeoutError");contextBridge.exposeInMainWorld("conduit",{send:i(async e=>ipcRenderer.invoke("conduit:send",e),"send"),stream:i(async(e,r)=>new Promise(async(a,t)=>{let o=i(()=>{clearTimeout(d),ipcRenderer.removeAllListeners(`conduit:response:data:${e.uuid}`),ipcRenderer.removeAllListeners(`conduit:response:complete:${e.uuid}`),ipcRenderer.removeAllListeners(`conduit:response:error:${e.uuid}`),ipcRenderer.removeAllListeners(`conduit:response:cancelled:${e.uuid}`);},"cleanup"),d=s(o,t);ipcRenderer.on(`conduit:response:data:${e.uuid}`,(c,u)=>{clearTimeout(d),d=s(o,t),r(u);}),ipcRenderer.on(`conduit:response:complete:${e.uuid}`,()=>{o(),a();}),ipcRenderer.on(`conduit:response:error:${e.uuid}`,(c,u)=>{o(),t(u);}),ipcRenderer.on(`conduit:response:cancelled:${e.uuid}`,(c,u)=>{o(),t(u);});try{await ipcRenderer.invoke("conduit:stream",e);}catch(c){o(),t(c);}}),"stream"),cancel:i(async e=>ipcRenderer.invoke("conduit:cancel",e),"cancel")});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oldzy/conduit-electron-adapter",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Electron IPC adapter for @oldzy/conduit - enables seamless communication between main and renderer processes",
|
|
5
5
|
"author": "oldzy",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,10 +64,8 @@
|
|
|
64
64
|
"vitest": "^4.0.9"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@oldzy/conduit": "^1.0.
|
|
68
|
-
"electron": "^39.2.7"
|
|
69
|
-
"reflect-metadata": "^0.2.2",
|
|
70
|
-
"uuid": "^13.0.0"
|
|
67
|
+
"@oldzy/conduit": "^1.0.3",
|
|
68
|
+
"electron": "^39.2.7"
|
|
71
69
|
},
|
|
72
70
|
"engines": {
|
|
73
71
|
"node": ">=18.0.0"
|