@vibecook/ghosttea-electron 0.9.3 → 0.9.4
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/backend.d.ts +1 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +2 -2
- package/dist/backend.js.map +1 -1
- package/dist/supervisor.d.ts +3 -1
- package/dist/supervisor.d.ts.map +1 -1
- package/dist/supervisor.js +111 -25
- package/dist/supervisor.js.map +1 -1
- package/package.json +3 -3
package/dist/backend.d.ts
CHANGED
|
@@ -23,6 +23,6 @@ export declare class GhostteaElectronBackend extends EventEmitter {
|
|
|
23
23
|
get automation(): GhostteaAutomationClient;
|
|
24
24
|
start(): Promise<void>;
|
|
25
25
|
attachRenderer(webContents: WebContents): void;
|
|
26
|
-
stop(): void
|
|
26
|
+
stop(): Promise<void>;
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=backend.d.ts.map
|
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,KAAK,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAA0B,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,8BAA8B,GACtC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,CAAC;AAEN,qBAAa,uBAAwB,SAAQ,YAAY;;IAMvD,YAAY,OAAO,EAAE,8BAA8B,EAQlD;IASD,IAAI,UAAU,IAAI,wBAAwB,CAEzC;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAED,IAAI,UAAU,IAAI,wBAAwB,CAGzC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3B;IAED,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAE7C;
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,KAAK,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAA0B,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,8BAA8B,GACtC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,CAAC;AAEN,qBAAa,uBAAwB,SAAQ,YAAY;;IAMvD,YAAY,OAAO,EAAE,8BAA8B,EAQlD;IASD,IAAI,UAAU,IAAI,wBAAwB,CAEzC;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAED,IAAI,UAAU,IAAI,wBAAwB,CAGzC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3B;IAED,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAE7C;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;CACF"}
|
package/dist/backend.js
CHANGED
|
@@ -55,9 +55,9 @@ export class GhostteaElectronBackend extends EventEmitter {
|
|
|
55
55
|
attachRenderer(webContents) {
|
|
56
56
|
this.#bridge?.attachRenderer(webContents);
|
|
57
57
|
}
|
|
58
|
-
stop() {
|
|
58
|
+
async stop() {
|
|
59
59
|
this.#resetClients();
|
|
60
|
-
this.#supervisor?.stop();
|
|
60
|
+
await this.#supervisor?.stop();
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
//# sourceMappingURL=backend.js.map
|
package/dist/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
|
package/dist/supervisor.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface TerminalSupervisorOptions {
|
|
|
17
17
|
runtimeDirectory?: string;
|
|
18
18
|
environment?: NodeJS.ProcessEnv;
|
|
19
19
|
startupTimeoutMs?: number;
|
|
20
|
+
/** Grace after the shutdown request before SIGKILL. Must exceed the daemon's drain budget. */
|
|
21
|
+
shutdownTimeoutMs?: number;
|
|
20
22
|
onStderr?: (line: string) => void;
|
|
21
23
|
}
|
|
22
24
|
export declare class TerminalSupervisor extends EventEmitter {
|
|
@@ -25,6 +27,6 @@ export declare class TerminalSupervisor extends EventEmitter {
|
|
|
25
27
|
constructor(options: TerminalSupervisorOptions);
|
|
26
28
|
start(): Promise<void>;
|
|
27
29
|
get running(): boolean;
|
|
28
|
-
stop(): void
|
|
30
|
+
stop(): Promise<void>;
|
|
29
31
|
}
|
|
30
32
|
//# sourceMappingURL=supervisor.d.ts.map
|
package/dist/supervisor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAU3D,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEnG,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,qBAAa,kBAAmB,SAAQ,YAAY;;IAUlD,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAE9C,YAAY,OAAO,EAAE,yBAAyB,EAmB7C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAO3B;IAkFD,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1B;CA4GF"}
|
package/dist/supervisor.js
CHANGED
|
@@ -5,17 +5,29 @@ import { existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
|
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
7
|
import { endpointPersists, localEndpoints } from "@vibecook/ghosttea-client";
|
|
8
|
+
const DAEMON_DRAIN_BUDGET_MS = 10_000;
|
|
9
|
+
const DEFAULT_SHUTDOWN_TIMEOUT_MS = 12_000;
|
|
10
|
+
const FORCE_EXIT_TIMEOUT_MS = 2_000;
|
|
11
|
+
function childHasExited(child) {
|
|
12
|
+
return child.exitCode !== null || child.signalCode !== null;
|
|
13
|
+
}
|
|
8
14
|
export class TerminalSupervisor extends EventEmitter {
|
|
9
15
|
#child;
|
|
10
16
|
#startPromise;
|
|
17
|
+
#stopPromise;
|
|
11
18
|
#ready = false;
|
|
12
19
|
#expectedExits = new WeakSet();
|
|
20
|
+
#childStops = new WeakMap();
|
|
13
21
|
#options;
|
|
14
22
|
#runtimeDir;
|
|
15
23
|
#ownsRuntimeDir;
|
|
16
24
|
connection;
|
|
17
25
|
constructor(options) {
|
|
18
26
|
super();
|
|
27
|
+
if (options.shutdownTimeoutMs !== undefined &&
|
|
28
|
+
(!Number.isFinite(options.shutdownTimeoutMs) || options.shutdownTimeoutMs <= DAEMON_DRAIN_BUDGET_MS)) {
|
|
29
|
+
throw new RangeError(`shutdownTimeoutMs must exceed the daemon's ${DAEMON_DRAIN_BUDGET_MS} ms drain budget`);
|
|
30
|
+
}
|
|
19
31
|
this.#options = options;
|
|
20
32
|
this.#ownsRuntimeDir = options.runtimeDirectory === undefined;
|
|
21
33
|
this.#runtimeDir =
|
|
@@ -30,6 +42,8 @@ export class TerminalSupervisor extends EventEmitter {
|
|
|
30
42
|
};
|
|
31
43
|
}
|
|
32
44
|
async start() {
|
|
45
|
+
if (this.#stopPromise)
|
|
46
|
+
await this.#stopPromise;
|
|
33
47
|
if (this.#ready)
|
|
34
48
|
return;
|
|
35
49
|
this.#startPromise ??= this.#start().finally(() => {
|
|
@@ -51,6 +65,9 @@ export class TerminalSupervisor extends EventEmitter {
|
|
|
51
65
|
GHOSTTEA_CONTROL_SOCKET: this.connection.controlSocket,
|
|
52
66
|
GHOSTTEA_FRAME_SOCKET: this.connection.frameSocket,
|
|
53
67
|
GHOSTTEA_AUTH_TOKEN: this.connection.authToken,
|
|
68
|
+
// EOF is a portable parent-death signal. It covers crashes and force
|
|
69
|
+
// termination, where Electron never gets a chance to call stop().
|
|
70
|
+
GHOSTTEA_PARENT_WATCH: "1",
|
|
54
71
|
};
|
|
55
72
|
const binary = this.#options.binary;
|
|
56
73
|
if (binary.kind === "executable") {
|
|
@@ -59,7 +76,7 @@ export class TerminalSupervisor extends EventEmitter {
|
|
|
59
76
|
this.#child = spawn(binary.path, binary.args ?? [], {
|
|
60
77
|
cwd: binary.cwd,
|
|
61
78
|
env: environment,
|
|
62
|
-
stdio: ["
|
|
79
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
63
80
|
});
|
|
64
81
|
}
|
|
65
82
|
else {
|
|
@@ -75,24 +92,42 @@ export class TerminalSupervisor extends EventEmitter {
|
|
|
75
92
|
], {
|
|
76
93
|
cwd: dirname(binary.manifestPath),
|
|
77
94
|
env: environment,
|
|
78
|
-
stdio: ["
|
|
95
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
79
96
|
});
|
|
80
97
|
}
|
|
81
|
-
this.#child
|
|
98
|
+
const running = this.#child;
|
|
99
|
+
if (!running)
|
|
100
|
+
throw new Error("ghosttead failed to start");
|
|
101
|
+
running.stderr?.on("data", (chunk) => {
|
|
82
102
|
const line = String(chunk).trimEnd();
|
|
83
103
|
if (this.#options.onStderr)
|
|
84
104
|
this.#options.onStderr(line);
|
|
85
105
|
else
|
|
86
106
|
console.error(`[ghosttead] ${line}`);
|
|
87
107
|
});
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
108
|
+
try {
|
|
109
|
+
await this.#waitUntilReady(running);
|
|
110
|
+
if (childHasExited(running) || this.#expectedExits.has(running)) {
|
|
111
|
+
throw new Error("ghosttead exited immediately after startup");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
this.#expectedExits.add(running);
|
|
116
|
+
try {
|
|
117
|
+
await this.#stopChild(running);
|
|
118
|
+
this.#cleanupRuntime();
|
|
119
|
+
}
|
|
120
|
+
catch (stopError) {
|
|
121
|
+
throw new Error(`ghosttead startup failed (${String(error)}) and cleanup also failed`, { cause: stopError });
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
if (childHasExited(running) && this.#child === running)
|
|
125
|
+
this.#child = undefined;
|
|
126
|
+
}
|
|
127
|
+
throw error;
|
|
93
128
|
}
|
|
94
129
|
this.#ready = true;
|
|
95
|
-
running
|
|
130
|
+
running.once("exit", (code, signal) => {
|
|
96
131
|
const expected = this.#expectedExits.delete(running);
|
|
97
132
|
if (this.#child !== running)
|
|
98
133
|
return;
|
|
@@ -105,31 +140,85 @@ export class TerminalSupervisor extends EventEmitter {
|
|
|
105
140
|
get running() {
|
|
106
141
|
return this.#ready && this.#child !== undefined;
|
|
107
142
|
}
|
|
108
|
-
stop() {
|
|
143
|
+
async stop() {
|
|
144
|
+
this.#stopPromise ??= this.#stop().finally(() => {
|
|
145
|
+
this.#stopPromise = undefined;
|
|
146
|
+
});
|
|
147
|
+
return this.#stopPromise;
|
|
148
|
+
}
|
|
149
|
+
async #stop() {
|
|
109
150
|
this.#ready = false;
|
|
110
151
|
const child = this.#child;
|
|
111
152
|
if (child) {
|
|
112
153
|
this.#expectedExits.add(child);
|
|
113
|
-
child
|
|
114
|
-
// A daemon wedged past SIGTERM would linger holding PTYs and sockets.
|
|
115
|
-
// The timer is unref'd so a quitting app never waits on it; if the app
|
|
116
|
-
// exits first the daemon dies with its pipes as before.
|
|
117
|
-
const escalation = setTimeout(() => {
|
|
118
|
-
if (child.exitCode === null && child.signalCode === null)
|
|
119
|
-
child.kill("SIGKILL");
|
|
120
|
-
}, 3_000);
|
|
121
|
-
escalation.unref?.();
|
|
122
|
-
child.once("exit", () => clearTimeout(escalation));
|
|
154
|
+
await this.#stopChild(child);
|
|
123
155
|
if (this.#child === child)
|
|
124
156
|
this.#child = undefined;
|
|
125
157
|
}
|
|
158
|
+
this.#cleanupRuntime();
|
|
159
|
+
}
|
|
160
|
+
#stopChild(child) {
|
|
161
|
+
const existing = this.#childStops.get(child);
|
|
162
|
+
if (existing)
|
|
163
|
+
return existing;
|
|
164
|
+
const stopping = new Promise((resolve, reject) => {
|
|
165
|
+
if (childHasExited(child)) {
|
|
166
|
+
resolve();
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
let forceExit;
|
|
170
|
+
let settled = false;
|
|
171
|
+
const cleanup = () => {
|
|
172
|
+
clearTimeout(escalation);
|
|
173
|
+
if (forceExit)
|
|
174
|
+
clearTimeout(forceExit);
|
|
175
|
+
child.off("exit", onExit);
|
|
176
|
+
child.off("close", onExit);
|
|
177
|
+
};
|
|
178
|
+
const finish = (error) => {
|
|
179
|
+
if (settled)
|
|
180
|
+
return;
|
|
181
|
+
settled = true;
|
|
182
|
+
cleanup();
|
|
183
|
+
if (error)
|
|
184
|
+
reject(error);
|
|
185
|
+
else
|
|
186
|
+
resolve();
|
|
187
|
+
};
|
|
188
|
+
const onExit = () => finish();
|
|
189
|
+
child.once("exit", onExit);
|
|
190
|
+
child.once("close", onExit);
|
|
191
|
+
const escalation = setTimeout(() => {
|
|
192
|
+
if (!childHasExited(child))
|
|
193
|
+
child.kill("SIGKILL");
|
|
194
|
+
forceExit = setTimeout(() => finish(new Error("ghosttead did not exit after forced termination")), FORCE_EXIT_TIMEOUT_MS);
|
|
195
|
+
}, this.#options.shutdownTimeoutMs ?? DEFAULT_SHUTDOWN_TIMEOUT_MS);
|
|
196
|
+
// Closing stdin is both the ordinary managed-shutdown request and the
|
|
197
|
+
// parent-death channel. A direct Unix executable also receives the
|
|
198
|
+
// compatibility signal for older daemon binaries. A `cargo run` wrapper
|
|
199
|
+
// must stay alive to wait for the actual daemon that inherited the pipe.
|
|
200
|
+
try {
|
|
201
|
+
child.stdin?.end();
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// A concurrently exiting child can close the stream first; the exit
|
|
205
|
+
// listener above is still the authority for completion.
|
|
206
|
+
}
|
|
207
|
+
if (this.#options.binary.kind === "executable" && process.platform !== "win32" && !childHasExited(child)) {
|
|
208
|
+
child.kill("SIGTERM");
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
const tracked = stopping.finally(() => this.#childStops.delete(child));
|
|
212
|
+
this.#childStops.set(child, tracked);
|
|
213
|
+
return tracked;
|
|
214
|
+
}
|
|
215
|
+
#cleanupRuntime() {
|
|
126
216
|
rmSync(this.connection.controlSocket, { force: true });
|
|
127
217
|
rmSync(this.connection.frameSocket, { force: true });
|
|
128
218
|
if (this.#ownsRuntimeDir)
|
|
129
219
|
rmSync(this.#runtimeDir, { recursive: true, force: true });
|
|
130
220
|
}
|
|
131
|
-
async #waitUntilReady() {
|
|
132
|
-
const child = this.#child;
|
|
221
|
+
async #waitUntilReady(child) {
|
|
133
222
|
if (!child?.stdout)
|
|
134
223
|
throw new Error("ghosttead did not expose stdout");
|
|
135
224
|
const stdout = child.stdout;
|
|
@@ -147,9 +236,6 @@ export class TerminalSupervisor extends EventEmitter {
|
|
|
147
236
|
return;
|
|
148
237
|
settled = true;
|
|
149
238
|
cleanup();
|
|
150
|
-
child.kill("SIGTERM");
|
|
151
|
-
if (this.#child === child)
|
|
152
|
-
this.#child = undefined;
|
|
153
239
|
reject(error);
|
|
154
240
|
};
|
|
155
241
|
const timeout = setTimeout(() => fail(new Error("ghosttead startup timed out")), this.#options.startupTimeoutMs ?? 120_000);
|
package/dist/supervisor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibecook/ghosttea-electron",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"description": "Electron lifecycle and direct renderer transport for Ghosttea.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "James Yong",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"prepublishOnly": "npm run build"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@vibecook/ghosttea-client": "0.9.
|
|
68
|
-
"@vibecook/ghosttea-protocol": "0.9.
|
|
67
|
+
"@vibecook/ghosttea-client": "0.9.4",
|
|
68
|
+
"@vibecook/ghosttea-protocol": "0.9.4"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
71
|
"electron": ">=35"
|