@kamaras/venpm 0.2.1 → 0.3.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/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +3 -0
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/inject.d.ts +4 -0
- package/dist/cli/inject.d.ts.map +1 -0
- package/dist/cli/inject.js +138 -0
- package/dist/cli/inject.js.map +1 -0
- package/dist/cli/kill-discord.d.ts +3 -0
- package/dist/cli/kill-discord.d.ts.map +1 -0
- package/dist/cli/kill-discord.js +39 -0
- package/dist/cli/kill-discord.js.map +1 -0
- package/dist/core/builder.d.ts +10 -5
- package/dist/core/builder.d.ts.map +1 -1
- package/dist/core/builder.js +16 -29
- package/dist/core/builder.js.map +1 -1
- package/dist/core/discord.d.ts +36 -0
- package/dist/core/discord.d.ts.map +1 -0
- package/dist/core/discord.js +183 -0
- package/dist/core/discord.js.map +1 -0
- package/dist/core/errors.d.ts +4 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +9 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/inject.d.ts +60 -0
- package/dist/core/inject.d.ts.map +1 -0
- package/dist/core/inject.js +224 -0
- package/dist/core/inject.js.map +1 -0
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAkD,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAkD,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAgLrE"}
|
package/dist/cli/context.js
CHANGED
|
@@ -48,6 +48,9 @@ export function createRealIOContext(options) {
|
|
|
48
48
|
async copyDir(src, dest) {
|
|
49
49
|
await fsPromises.cp(src, dest, { recursive: true });
|
|
50
50
|
},
|
|
51
|
+
async rename(src, dest) {
|
|
52
|
+
await fsPromises.rename(src, dest);
|
|
53
|
+
},
|
|
51
54
|
};
|
|
52
55
|
const http = {
|
|
53
56
|
async fetch(url, fetchOptions) {
|
package/dist/cli/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/cli/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwEzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6C5D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD9D"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { DISCORD_BRANCHES, detectDiscordApps, getInjectStatus, injectVencord, uninjectVencord, InjectError, } from "../core/inject.js";
|
|
2
|
+
import { ErrorCode, makeError, exitCodeForError } from "../core/errors.js";
|
|
3
|
+
import { createRealIOContext } from "./context.js";
|
|
4
|
+
function mapInjectErrorCode(code) {
|
|
5
|
+
switch (code) {
|
|
6
|
+
case "PLATFORM_UNSUPPORTED": return ErrorCode.PLATFORM_UNSUPPORTED;
|
|
7
|
+
case "DISCORD_NOT_FOUND": return ErrorCode.DISCORD_NOT_FOUND;
|
|
8
|
+
case "ALREADY_INJECTED": return ErrorCode.ALREADY_INJECTED;
|
|
9
|
+
case "NOT_INJECTED": return ErrorCode.NOT_INJECTED;
|
|
10
|
+
case "INJECT_FAILED": return ErrorCode.INJECT_FAILED;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
async function resolveTarget(fs, branch) {
|
|
14
|
+
const apps = await detectDiscordApps(fs);
|
|
15
|
+
if (apps.length === 0) {
|
|
16
|
+
if (process.platform !== "darwin") {
|
|
17
|
+
return {
|
|
18
|
+
error: ErrorCode.PLATFORM_UNSUPPORTED,
|
|
19
|
+
message: `Native inject is currently macOS-only (detected ${process.platform})`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
error: ErrorCode.DISCORD_NOT_FOUND,
|
|
24
|
+
message: "No Discord.app found in /Applications",
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (!branch) {
|
|
28
|
+
// Default: stable if present, otherwise first detected
|
|
29
|
+
const stable = apps.find(a => a.branch === "stable");
|
|
30
|
+
return stable ?? apps[0];
|
|
31
|
+
}
|
|
32
|
+
const requested = branch.toLowerCase();
|
|
33
|
+
if (!DISCORD_BRANCHES.includes(requested)) {
|
|
34
|
+
return {
|
|
35
|
+
error: ErrorCode.DISCORD_NOT_FOUND,
|
|
36
|
+
message: `Unknown branch '${branch}'. Expected one of: ${DISCORD_BRANCHES.join(", ")}`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const match = apps.find(a => a.branch === requested);
|
|
40
|
+
if (!match) {
|
|
41
|
+
return {
|
|
42
|
+
error: ErrorCode.DISCORD_NOT_FOUND,
|
|
43
|
+
message: `Discord ${requested} not found in /Applications`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return match;
|
|
47
|
+
}
|
|
48
|
+
export function registerInjectCommand(program) {
|
|
49
|
+
program
|
|
50
|
+
.command("inject")
|
|
51
|
+
.description("Patch Discord.app to load Vencord (native, no external installer)")
|
|
52
|
+
.option("-b, --branch <branch>", "Discord branch: stable (default), canary, ptb")
|
|
53
|
+
.action(async (cmdOptions) => {
|
|
54
|
+
const globalOpts = program.opts();
|
|
55
|
+
const ctx = createRealIOContext(globalOpts);
|
|
56
|
+
const { renderer } = ctx;
|
|
57
|
+
const target = await resolveTarget(ctx.fs, cmdOptions.branch);
|
|
58
|
+
if ("error" in target) {
|
|
59
|
+
renderer.error(makeError(target.error, target.message));
|
|
60
|
+
renderer.finish(false);
|
|
61
|
+
process.exitCode = exitCodeForError(target.error);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const p = renderer.progress("inject", `Injecting Vencord into ${target.branch} (${target.appPath})...`);
|
|
65
|
+
try {
|
|
66
|
+
const result = await injectVencord(ctx.fs, target);
|
|
67
|
+
p.succeed(`Patched ${result.branch} — shim at ${result.shimAsar}`);
|
|
68
|
+
renderer.text(`Original asar backed up to ${result.backupPath}`);
|
|
69
|
+
renderer.text("Restart Discord for changes to take effect.");
|
|
70
|
+
renderer.finish(true, {
|
|
71
|
+
branch: result.branch,
|
|
72
|
+
appPath: result.appPath,
|
|
73
|
+
shimAsar: result.shimAsar,
|
|
74
|
+
backupPath: result.backupPath,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
p.fail("Inject failed");
|
|
79
|
+
if (err instanceof InjectError) {
|
|
80
|
+
const mapped = mapInjectErrorCode(err.code);
|
|
81
|
+
renderer.error(makeError(mapped, err.message));
|
|
82
|
+
renderer.finish(false);
|
|
83
|
+
process.exitCode = exitCodeForError(mapped);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
renderer.error(makeError(ErrorCode.INJECT_FAILED, err.message));
|
|
87
|
+
renderer.finish(false);
|
|
88
|
+
process.exitCode = exitCodeForError(ErrorCode.INJECT_FAILED);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export function registerUninjectCommand(program) {
|
|
93
|
+
program
|
|
94
|
+
.command("uninject")
|
|
95
|
+
.description("Remove the Vencord patch from Discord.app")
|
|
96
|
+
.option("-b, --branch <branch>", "Discord branch: stable (default), canary, ptb")
|
|
97
|
+
.action(async (cmdOptions) => {
|
|
98
|
+
const globalOpts = program.opts();
|
|
99
|
+
const ctx = createRealIOContext(globalOpts);
|
|
100
|
+
const { renderer } = ctx;
|
|
101
|
+
const target = await resolveTarget(ctx.fs, cmdOptions.branch);
|
|
102
|
+
if ("error" in target) {
|
|
103
|
+
renderer.error(makeError(target.error, target.message));
|
|
104
|
+
renderer.finish(false);
|
|
105
|
+
process.exitCode = exitCodeForError(target.error);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const status = await getInjectStatus(ctx.fs, target);
|
|
109
|
+
if (!status.injected) {
|
|
110
|
+
renderer.warn(`Discord ${target.branch} is not injected — nothing to do`);
|
|
111
|
+
renderer.finish(true, { branch: target.branch, injected: false });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const p = renderer.progress("uninject", `Removing Vencord patch from ${target.branch}...`);
|
|
115
|
+
try {
|
|
116
|
+
const result = await uninjectVencord(ctx.fs, target);
|
|
117
|
+
p.succeed(`Un-patched ${result.branch}`);
|
|
118
|
+
renderer.finish(true, {
|
|
119
|
+
branch: result.branch,
|
|
120
|
+
appPath: result.appPath,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
p.fail("Uninject failed");
|
|
125
|
+
if (err instanceof InjectError) {
|
|
126
|
+
const mapped = mapInjectErrorCode(err.code);
|
|
127
|
+
renderer.error(makeError(mapped, err.message));
|
|
128
|
+
renderer.finish(false);
|
|
129
|
+
process.exitCode = exitCodeForError(mapped);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
renderer.error(makeError(ErrorCode.INJECT_FAILED, err.message));
|
|
133
|
+
renderer.finish(false);
|
|
134
|
+
process.exitCode = exitCodeForError(ErrorCode.INJECT_FAILED);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/cli/inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill-discord.d.ts","sourceRoot":"","sources":["../../src/cli/kill-discord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2CjE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { loadConfig } from "../core/config.js";
|
|
2
|
+
import { getConfigPath } from "../core/paths.js";
|
|
3
|
+
import { killDiscordProcesses } from "../core/discord.js";
|
|
4
|
+
import { createRealIOContext } from "./context.js";
|
|
5
|
+
export function registerKillDiscordCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command("kill-discord")
|
|
8
|
+
.description("Kill all running Discord instances")
|
|
9
|
+
.action(async () => {
|
|
10
|
+
const globalOpts = program.opts();
|
|
11
|
+
const ctx = createRealIOContext(globalOpts);
|
|
12
|
+
const { renderer } = ctx;
|
|
13
|
+
const configPath = globalOpts.config ?? getConfigPath();
|
|
14
|
+
const config = await loadConfig(ctx.fs, configPath);
|
|
15
|
+
const p = renderer.progress("kill", "Scanning for Discord processes...");
|
|
16
|
+
const result = await killDiscordProcesses(ctx.fs, ctx.shell, config.discord.binary);
|
|
17
|
+
if (result.found.length === 0) {
|
|
18
|
+
p.succeed("No Discord processes found");
|
|
19
|
+
renderer.finish(true, { found: [], killed: 0, forced: 0 });
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
for (const proc of result.found) {
|
|
23
|
+
renderer.dim(` PID ${proc.pid} → ${proc.exe}`);
|
|
24
|
+
}
|
|
25
|
+
const totalKilled = result.killed.length + result.forced.length;
|
|
26
|
+
if (result.forced.length > 0) {
|
|
27
|
+
p.succeed(`Killed ${totalKilled} Discord process(es) (${result.forced.length} required SIGKILL)`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
p.succeed(`Killed ${totalKilled} Discord process(es)`);
|
|
31
|
+
}
|
|
32
|
+
renderer.finish(true, {
|
|
33
|
+
found: result.found,
|
|
34
|
+
killed: totalKilled,
|
|
35
|
+
forced: result.forced.length,
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=kill-discord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill-discord.js","sourceRoot":"","sources":["../../src/cli/kill-discord.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACvD,OAAO;SACF,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAiB,CAAC;QACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;QACzB,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAEpD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACrC,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,KAAK,EACT,MAAM,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3D,OAAO;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,QAAQ,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAEhE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,CAAC,CAAC,OAAO,CAAC,UAAU,WAAW,yBAAyB,MAAM,CAAC,MAAM,CAAC,MAAM,oBAAoB,CAAC,CAAC;QACtG,CAAC;aAAM,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,UAAU,WAAW,sBAAsB,CAAC,CAAC;QAC3D,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;SAC/B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACX,CAAC"}
|
package/dist/core/builder.d.ts
CHANGED
|
@@ -12,15 +12,20 @@ export interface DeployResult {
|
|
|
12
12
|
export declare function buildVencord(shell: ShellRunner, vencordPath: string): Promise<void>;
|
|
13
13
|
/**
|
|
14
14
|
* Copy `<vencordPath>/dist/` to the platform-specific deployed location.
|
|
15
|
-
*
|
|
15
|
+
*
|
|
16
|
+
* Creates the deploy directory if it doesn't exist. Previous behaviour was to
|
|
17
|
+
* skip silently when the directory was missing, which required users to run
|
|
18
|
+
* Vencord's own installer first to bootstrap it. On macOS Apple Silicon that
|
|
19
|
+
* installer is x86-only and often fails, so we make `rebuild` self-sufficient.
|
|
16
20
|
*/
|
|
17
21
|
export declare function deployDist(fs: FileSystem, vencordPath: string): Promise<DeployResult>;
|
|
18
22
|
/**
|
|
19
|
-
* Kill Discord
|
|
20
|
-
*
|
|
21
|
-
*
|
|
23
|
+
* Kill all running Discord processes, wait for confirmed exit, then spawn
|
|
24
|
+
* the binary detached. Uses `/proc/<pid>/exe`-based discovery so only
|
|
25
|
+
* verified Discord binaries are killed (no stray processes). SIGTERM is
|
|
26
|
+
* tried first; survivors are escalated to SIGKILL.
|
|
22
27
|
*/
|
|
23
|
-
export declare function restartDiscord(shell: ShellRunner, discordBinary: string): Promise<void>;
|
|
28
|
+
export declare function restartDiscord(fs: FileSystem, shell: ShellRunner, discordBinary: string): Promise<void>;
|
|
24
29
|
export interface BuildAndDeployOptions {
|
|
25
30
|
restart?: boolean;
|
|
26
31
|
discordBinary?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK1D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,EAAE,MAAM,CAIrE,CAAC;AAIF,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACtB;AAID;;;GAGG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzF;AAID;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAY3F;AAID;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G;AAID,MAAM,WAAW,qBAAqB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,YAAY,CAAC,CAWvB"}
|
package/dist/core/builder.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
|
-
import {
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { killDiscordProcesses } from "./discord.js";
|
|
3
4
|
// ─── Deploy Paths ─────────────────────────────────────────────────────────────
|
|
4
5
|
export const DEPLOY_PATHS = {
|
|
5
6
|
linux: join(homedir(), ".config", "Vencord", "dist"),
|
|
@@ -20,14 +21,17 @@ export async function buildVencord(shell, vencordPath) {
|
|
|
20
21
|
// ─── Deploy ───────────────────────────────────────────────────────────────────
|
|
21
22
|
/**
|
|
22
23
|
* Copy `<vencordPath>/dist/` to the platform-specific deployed location.
|
|
23
|
-
*
|
|
24
|
+
*
|
|
25
|
+
* Creates the deploy directory if it doesn't exist. Previous behaviour was to
|
|
26
|
+
* skip silently when the directory was missing, which required users to run
|
|
27
|
+
* Vencord's own installer first to bootstrap it. On macOS Apple Silicon that
|
|
28
|
+
* installer is x86-only and often fails, so we make `rebuild` self-sufficient.
|
|
24
29
|
*/
|
|
25
30
|
export async function deployDist(fs, vencordPath) {
|
|
26
31
|
const platform = process.platform;
|
|
27
32
|
const deployPath = DEPLOY_PATHS[platform] ?? DEPLOY_PATHS.linux;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return { deployed: false, restarted: false };
|
|
33
|
+
if (!(await fs.exists(deployPath))) {
|
|
34
|
+
await fs.mkdir(deployPath, { recursive: true });
|
|
31
35
|
}
|
|
32
36
|
const srcDist = join(vencordPath, "dist");
|
|
33
37
|
await fs.copyDir(srcDist, deployPath);
|
|
@@ -35,30 +39,13 @@ export async function deployDist(fs, vencordPath) {
|
|
|
35
39
|
}
|
|
36
40
|
// ─── Restart ──────────────────────────────────────────────────────────────────
|
|
37
41
|
/**
|
|
38
|
-
* Kill Discord
|
|
39
|
-
*
|
|
40
|
-
*
|
|
42
|
+
* Kill all running Discord processes, wait for confirmed exit, then spawn
|
|
43
|
+
* the binary detached. Uses `/proc/<pid>/exe`-based discovery so only
|
|
44
|
+
* verified Discord binaries are killed (no stray processes). SIGTERM is
|
|
45
|
+
* tried first; survivors are escalated to SIGKILL.
|
|
41
46
|
*/
|
|
42
|
-
export async function restartDiscord(shell, discordBinary) {
|
|
43
|
-
|
|
44
|
-
if (process.platform === "win32") {
|
|
45
|
-
// taskkill /IM matches image name; /F forces termination.
|
|
46
|
-
// Exit code 128 = process not found (not an error for us).
|
|
47
|
-
const killResult = await shell.exec("taskkill", ["/IM", `${processName}.exe`, "/F"]);
|
|
48
|
-
if (killResult.exitCode !== 0 && killResult.exitCode !== 128) {
|
|
49
|
-
throw new Error(`taskkill failed (exit ${killResult.exitCode}): ${killResult.stderr}`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
// pkill returns 0 if at least one process was signalled, 1 if none found.
|
|
54
|
-
// -x = exact name match, -i = case-insensitive (binary is "discord", comm is "Discord").
|
|
55
|
-
const killResult = await shell.exec("pkill", ["-xi", processName]);
|
|
56
|
-
if (killResult.exitCode !== 0 && killResult.exitCode !== 1) {
|
|
57
|
-
throw new Error(`pkill failed (exit ${killResult.exitCode}): ${killResult.stderr}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Give the process a moment to fully exit before relaunching.
|
|
61
|
-
await new Promise(resolve => setTimeout(resolve, 500));
|
|
47
|
+
export async function restartDiscord(fs, shell, discordBinary) {
|
|
48
|
+
await killDiscordProcesses(fs, shell, discordBinary);
|
|
62
49
|
await shell.spawn(discordBinary, [], { detached: true });
|
|
63
50
|
}
|
|
64
51
|
/**
|
|
@@ -68,7 +55,7 @@ export async function buildAndDeploy(fs, shell, vencordPath, options = {}) {
|
|
|
68
55
|
await buildVencord(shell, vencordPath);
|
|
69
56
|
const result = await deployDist(fs, vencordPath);
|
|
70
57
|
if (options.restart && options.discordBinary) {
|
|
71
|
-
await restartDiscord(shell, options.discordBinary);
|
|
58
|
+
await restartDiscord(fs, shell, options.discordBinary);
|
|
72
59
|
result.restarted = true;
|
|
73
60
|
}
|
|
74
61
|
return result;
|
package/dist/core/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,iFAAiF;AAEjF,MAAM,CAAC,MAAM,YAAY,GAAiD;IACtE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACpD,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,CAAC;IAC5E,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC;CAC/F,CAAC;AAUF,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAkB,EAAE,WAAmB;IACtE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IACzE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,2BAA2B,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CACpF,CAAC;IACN,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAc,EAAE,WAAmB;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAwC,CAAC;IAClE,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC;IAEhE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEtC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAc,EAAE,KAAkB,EAAE,aAAqB;IAC1F,MAAM,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AASD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,EAAc,EACd,KAAkB,EAClB,WAAmB,EACnB,UAAiC,EAAE;IAEnC,MAAM,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { FileSystem, ShellRunner } from "./types.js";
|
|
2
|
+
export interface DiscordProcess {
|
|
3
|
+
pid: number;
|
|
4
|
+
exe: string;
|
|
5
|
+
}
|
|
6
|
+
export interface KillResult {
|
|
7
|
+
found: DiscordProcess[];
|
|
8
|
+
killed: number[];
|
|
9
|
+
forced: number[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check whether a resolved binary path belongs to a Discord installation.
|
|
13
|
+
* Matches against known install locations + the user's configured binary.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isDiscordBinary(resolvedPath: string, configuredBinary?: string | null): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Find running Discord processes on Linux by inspecting `/proc/<pid>/exe`.
|
|
18
|
+
* Only returns processes whose binary resolves to a known Discord path.
|
|
19
|
+
*
|
|
20
|
+
* On non-Linux platforms, falls back to `ps` output parsing (macOS) or
|
|
21
|
+
* returns an empty array (Windows — handled separately by the caller).
|
|
22
|
+
*/
|
|
23
|
+
export declare function findDiscordProcesses(fs: FileSystem, shell: ShellRunner, configuredBinary?: string | null): Promise<DiscordProcess[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Kill all running Discord processes with SIGTERM → wait → SIGKILL escalation.
|
|
26
|
+
*
|
|
27
|
+
* 1. Discovers processes via `/proc/<pid>/exe` (Linux) or `ps` (macOS)
|
|
28
|
+
* 2. Sends SIGTERM to all matching PIDs
|
|
29
|
+
* 3. Waits up to 5 s for graceful exit (polling every 250 ms)
|
|
30
|
+
* 4. Sends SIGKILL to any survivors
|
|
31
|
+
* 5. Waits up to 2 s for forced exit
|
|
32
|
+
*
|
|
33
|
+
* On Windows, falls back to `taskkill /F` against the configured binary name.
|
|
34
|
+
*/
|
|
35
|
+
export declare function killDiscordProcesses(fs: FileSystem, shell: ShellRunner, configuredBinary?: string | null): Promise<KillResult>;
|
|
36
|
+
//# sourceMappingURL=discord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/core/discord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAgCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAG/F;AAID;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACtC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ3B;AAkGD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACtC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// ─── Binary Allowlist ────────────────────────────────────────────────────────
|
|
2
|
+
/**
|
|
3
|
+
* Patterns matched against the resolved `/proc/<pid>/exe` path.
|
|
4
|
+
* These target the ACTUAL binaries (not wrapper scripts), since the
|
|
5
|
+
* kernel resolves through symlinks and script interpreters.
|
|
6
|
+
*/
|
|
7
|
+
const DISCORD_EXE_PATTERNS = [
|
|
8
|
+
// Standard Linux package installs (/opt/discord/Discord, /opt/discord-canary/DiscordCanary, etc.)
|
|
9
|
+
/^\/opt\/[Dd]iscord[^/]*\/[Dd]iscord/,
|
|
10
|
+
/^\/usr\/lib\/discord[^/]*\/[Dd]iscord/,
|
|
11
|
+
/^\/usr\/share\/discord[^/]*\/[Dd]iscord/,
|
|
12
|
+
// Vesktop
|
|
13
|
+
/^\/opt\/[Vv]esktop[^/]*\/[Vv]esktop/,
|
|
14
|
+
/^\/usr\/lib\/vesktop[^/]*\/[Vv]esktop/,
|
|
15
|
+
/^\/usr\/share\/vesktop[^/]*\/[Vv]esktop/,
|
|
16
|
+
// Wrapper scripts that are themselves valid executables
|
|
17
|
+
/^\/usr\/bin\/discord(?:-canary|-ptb)?$/,
|
|
18
|
+
/^\/usr\/bin\/vesktop$/,
|
|
19
|
+
// Flatpak
|
|
20
|
+
/\/app\/bin\/[Dd]iscord/,
|
|
21
|
+
/\/app\/bin\/[Vv]esktop/,
|
|
22
|
+
// Snap
|
|
23
|
+
/^\/snap\/discord\//,
|
|
24
|
+
/^\/snap\/vesktop\//,
|
|
25
|
+
// macOS
|
|
26
|
+
/^\/Applications\/Discord[^/]*\.app\/Contents\/MacOS\//,
|
|
27
|
+
/^\/Applications\/Vesktop\.app\/Contents\/MacOS\//,
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Check whether a resolved binary path belongs to a Discord installation.
|
|
31
|
+
* Matches against known install locations + the user's configured binary.
|
|
32
|
+
*/
|
|
33
|
+
export function isDiscordBinary(resolvedPath, configuredBinary) {
|
|
34
|
+
if (configuredBinary && resolvedPath === configuredBinary)
|
|
35
|
+
return true;
|
|
36
|
+
return DISCORD_EXE_PATTERNS.some(p => p.test(resolvedPath));
|
|
37
|
+
}
|
|
38
|
+
// ─── Process Discovery ──────────────────────────────────────────────────────
|
|
39
|
+
/**
|
|
40
|
+
* Find running Discord processes on Linux by inspecting `/proc/<pid>/exe`.
|
|
41
|
+
* Only returns processes whose binary resolves to a known Discord path.
|
|
42
|
+
*
|
|
43
|
+
* On non-Linux platforms, falls back to `ps` output parsing (macOS) or
|
|
44
|
+
* returns an empty array (Windows — handled separately by the caller).
|
|
45
|
+
*/
|
|
46
|
+
export async function findDiscordProcesses(fs, shell, configuredBinary) {
|
|
47
|
+
if (process.platform === "linux") {
|
|
48
|
+
return findDiscordProcessesLinux(fs, configuredBinary);
|
|
49
|
+
}
|
|
50
|
+
if (process.platform === "darwin") {
|
|
51
|
+
return findDiscordProcessesMacOS(shell, configuredBinary);
|
|
52
|
+
}
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
async function findDiscordProcessesLinux(fs, configuredBinary) {
|
|
56
|
+
let entries;
|
|
57
|
+
try {
|
|
58
|
+
entries = await fs.readdir("/proc");
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
const processes = [];
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
const pid = parseInt(entry, 10);
|
|
66
|
+
if (isNaN(pid) || pid <= 0)
|
|
67
|
+
continue;
|
|
68
|
+
try {
|
|
69
|
+
const exe = await fs.readlink(`/proc/${pid}/exe`);
|
|
70
|
+
if (isDiscordBinary(exe, configuredBinary)) {
|
|
71
|
+
processes.push({ pid, exe });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// EACCES (other user), ENOENT (process exited), etc. — skip.
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return processes;
|
|
80
|
+
}
|
|
81
|
+
async function findDiscordProcessesMacOS(shell, configuredBinary) {
|
|
82
|
+
const result = await shell.exec("ps", ["-eo", "pid=,args="]);
|
|
83
|
+
if (result.exitCode !== 0)
|
|
84
|
+
return [];
|
|
85
|
+
const processes = [];
|
|
86
|
+
for (const line of result.stdout.split("\n")) {
|
|
87
|
+
const trimmed = line.trim();
|
|
88
|
+
if (!trimmed)
|
|
89
|
+
continue;
|
|
90
|
+
const spaceIdx = trimmed.indexOf(" ");
|
|
91
|
+
if (spaceIdx === -1)
|
|
92
|
+
continue;
|
|
93
|
+
const pid = parseInt(trimmed.slice(0, spaceIdx), 10);
|
|
94
|
+
if (isNaN(pid))
|
|
95
|
+
continue;
|
|
96
|
+
const exe = trimmed.slice(spaceIdx + 1).trim().split(" ")[0];
|
|
97
|
+
if (isDiscordBinary(exe, configuredBinary)) {
|
|
98
|
+
processes.push({ pid, exe });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return processes;
|
|
102
|
+
}
|
|
103
|
+
// ─── Process Liveness ────────────────────────────────────────────────────────
|
|
104
|
+
async function isProcessAlive(fs, shell, pid) {
|
|
105
|
+
if (process.platform === "linux") {
|
|
106
|
+
return fs.exists(`/proc/${pid}`);
|
|
107
|
+
}
|
|
108
|
+
// macOS / others: kill -0 checks existence without sending a signal.
|
|
109
|
+
const result = await shell.exec("kill", ["-0", String(pid)]);
|
|
110
|
+
return result.exitCode === 0;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Poll until all PIDs have exited, or the timeout expires.
|
|
114
|
+
* Returns PIDs that are still alive after the deadline.
|
|
115
|
+
*/
|
|
116
|
+
async function waitForExit(fs, shell, pids, timeoutMs, pollMs = 250) {
|
|
117
|
+
const deadline = Date.now() + timeoutMs;
|
|
118
|
+
let remaining = [...pids];
|
|
119
|
+
while (remaining.length > 0 && Date.now() < deadline) {
|
|
120
|
+
await new Promise(r => setTimeout(r, pollMs));
|
|
121
|
+
const alive = [];
|
|
122
|
+
for (const pid of remaining) {
|
|
123
|
+
if (await isProcessAlive(fs, shell, pid)) {
|
|
124
|
+
alive.push(pid);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
remaining = alive;
|
|
128
|
+
}
|
|
129
|
+
return remaining;
|
|
130
|
+
}
|
|
131
|
+
// ─── Kill ────────────────────────────────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* Kill all running Discord processes with SIGTERM → wait → SIGKILL escalation.
|
|
134
|
+
*
|
|
135
|
+
* 1. Discovers processes via `/proc/<pid>/exe` (Linux) or `ps` (macOS)
|
|
136
|
+
* 2. Sends SIGTERM to all matching PIDs
|
|
137
|
+
* 3. Waits up to 5 s for graceful exit (polling every 250 ms)
|
|
138
|
+
* 4. Sends SIGKILL to any survivors
|
|
139
|
+
* 5. Waits up to 2 s for forced exit
|
|
140
|
+
*
|
|
141
|
+
* On Windows, falls back to `taskkill /F` against the configured binary name.
|
|
142
|
+
*/
|
|
143
|
+
export async function killDiscordProcesses(fs, shell, configuredBinary) {
|
|
144
|
+
// Windows fallback — no /proc, no ps.
|
|
145
|
+
if (process.platform === "win32") {
|
|
146
|
+
return killDiscordProcessesWin32(shell, configuredBinary);
|
|
147
|
+
}
|
|
148
|
+
const found = await findDiscordProcesses(fs, shell, configuredBinary);
|
|
149
|
+
if (found.length === 0) {
|
|
150
|
+
return { found: [], killed: [], forced: [] };
|
|
151
|
+
}
|
|
152
|
+
const pids = found.map(p => p.pid);
|
|
153
|
+
// SIGTERM
|
|
154
|
+
await shell.exec("kill", ["-TERM", ...pids.map(String)]);
|
|
155
|
+
// Wait for graceful shutdown
|
|
156
|
+
const survivorsAfterTerm = await waitForExit(fs, shell, pids, 5000);
|
|
157
|
+
const killed = pids.filter(p => !survivorsAfterTerm.includes(p));
|
|
158
|
+
// SIGKILL survivors
|
|
159
|
+
let forced = [];
|
|
160
|
+
if (survivorsAfterTerm.length > 0) {
|
|
161
|
+
await shell.exec("kill", ["-KILL", ...survivorsAfterTerm.map(String)]);
|
|
162
|
+
const survivorsAfterKill = await waitForExit(fs, shell, survivorsAfterTerm, 2000);
|
|
163
|
+
forced = survivorsAfterTerm.filter(p => !survivorsAfterKill.includes(p));
|
|
164
|
+
}
|
|
165
|
+
return { found, killed, forced };
|
|
166
|
+
}
|
|
167
|
+
async function killDiscordProcessesWin32(shell, configuredBinary) {
|
|
168
|
+
// Best-effort: kill known image names.
|
|
169
|
+
const imageNames = ["Discord.exe", "DiscordCanary.exe", "DiscordPTB.exe", "Vesktop.exe"];
|
|
170
|
+
if (configuredBinary) {
|
|
171
|
+
const base = configuredBinary.split(/[/\\]/).pop();
|
|
172
|
+
if (base && !imageNames.includes(base)) {
|
|
173
|
+
imageNames.push(base);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
for (const name of imageNames) {
|
|
177
|
+
// taskkill /F /IM — exit 128 means "no such process", which is fine.
|
|
178
|
+
await shell.exec("taskkill", ["/F", "/IM", name]);
|
|
179
|
+
}
|
|
180
|
+
// Can't reliably introspect PIDs on Windows via IOContext, so return minimal info.
|
|
181
|
+
return { found: [], killed: [], forced: [] };
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=discord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../src/core/discord.ts"],"names":[],"mappings":"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"}
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ export declare const ErrorCode: {
|
|
|
19
19
|
readonly BUILD_FAILED: "BUILD_FAILED";
|
|
20
20
|
readonly DISCORD_NOT_FOUND: "DISCORD_NOT_FOUND";
|
|
21
21
|
readonly NON_INTERACTIVE: "NON_INTERACTIVE";
|
|
22
|
+
readonly INJECT_FAILED: "INJECT_FAILED";
|
|
23
|
+
readonly ALREADY_INJECTED: "ALREADY_INJECTED";
|
|
24
|
+
readonly NOT_INJECTED: "NOT_INJECTED";
|
|
25
|
+
readonly PLATFORM_UNSUPPORTED: "PLATFORM_UNSUPPORTED";
|
|
22
26
|
};
|
|
23
27
|
export type ErrorCodeValue = typeof ErrorCode[keyof typeof ErrorCode];
|
|
24
28
|
export declare const ExitCode: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAsBtE,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAY7D;AAED,wBAAgB,SAAS,CACrB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3E,SAAS,CAsBX"}
|
package/dist/core/errors.js
CHANGED
|
@@ -12,6 +12,10 @@ export const ErrorCode = {
|
|
|
12
12
|
BUILD_FAILED: "BUILD_FAILED",
|
|
13
13
|
DISCORD_NOT_FOUND: "DISCORD_NOT_FOUND",
|
|
14
14
|
NON_INTERACTIVE: "NON_INTERACTIVE",
|
|
15
|
+
INJECT_FAILED: "INJECT_FAILED",
|
|
16
|
+
ALREADY_INJECTED: "ALREADY_INJECTED",
|
|
17
|
+
NOT_INJECTED: "NOT_INJECTED",
|
|
18
|
+
PLATFORM_UNSUPPORTED: "PLATFORM_UNSUPPORTED",
|
|
15
19
|
};
|
|
16
20
|
const DEFAULT_SUGGESTIONS = {
|
|
17
21
|
VENCORD_NOT_FOUND: "Run: venpm config set vencord.path /path/to/Vencord",
|
|
@@ -27,6 +31,10 @@ const DEFAULT_SUGGESTIONS = {
|
|
|
27
31
|
BUILD_FAILED: "Run: venpm doctor to check your environment",
|
|
28
32
|
DISCORD_NOT_FOUND: "Set: venpm config set discord.binary /path/to/discord",
|
|
29
33
|
NON_INTERACTIVE: "Use --yes to auto-confirm, or set config explicitly",
|
|
34
|
+
INJECT_FAILED: "Run: venpm inject --verbose to see details",
|
|
35
|
+
ALREADY_INJECTED: "Run: venpm uninject to remove the existing patch",
|
|
36
|
+
NOT_INJECTED: "Run: venpm inject to patch Discord",
|
|
37
|
+
PLATFORM_UNSUPPORTED: "Native inject is currently macOS-only; fall back to Vencord's pnpm inject on other platforms",
|
|
30
38
|
};
|
|
31
39
|
export const ExitCode = {
|
|
32
40
|
SUCCESS: 0,
|
|
@@ -41,6 +49,7 @@ export function exitCodeForError(code) {
|
|
|
41
49
|
case ErrorCode.PNPM_NOT_AVAILABLE:
|
|
42
50
|
case ErrorCode.BUILD_FAILED:
|
|
43
51
|
case ErrorCode.DISCORD_NOT_FOUND:
|
|
52
|
+
case ErrorCode.PLATFORM_UNSUPPORTED:
|
|
44
53
|
return ExitCode.ENV_ERROR;
|
|
45
54
|
default:
|
|
46
55
|
return ExitCode.COMMAND_ERROR;
|
package/dist/core/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,oBAAoB,EAAE,sBAAsB;CACtC,CAAC;AAIX,MAAM,mBAAmB,GAA2B;IAChD,iBAAiB,EAAE,qDAAqD;IACxE,gBAAgB,EAAE,qDAAqD;IACvE,gBAAgB,EAAE,+CAA+C;IACjE,oBAAoB,EAAE,0CAA0C;IAChE,iBAAiB,EAAE,iCAAiC;IACpD,iBAAiB,EAAE,+BAA+B;IAClD,kBAAkB,EAAE,6BAA6B;IACjD,mBAAmB,EAAE,mCAAmC;IACxD,iBAAiB,EAAE,oDAAoD;IACvE,cAAc,EAAE,kDAAkD;IAClE,YAAY,EAAE,6CAA6C;IAC3D,iBAAiB,EAAE,uDAAuD;IAC1E,eAAe,EAAE,qDAAqD;IACtE,aAAa,EAAE,4CAA4C;IAC3D,gBAAgB,EAAE,kDAAkD;IACpE,YAAY,EAAE,oCAAoC;IAClD,oBAAoB,EAAE,8FAA8F;CACvH,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;CACN,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACjD,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,SAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,SAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,SAAS,CAAC,kBAAkB,CAAC;QAClC,KAAK,SAAS,CAAC,YAAY,CAAC;QAC5B,KAAK,SAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,SAAS,CAAC,oBAAoB;YAC/B,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC9B;YACI,OAAO,QAAQ,CAAC,aAAa,CAAC;IACtC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CACrB,IAAoB,EACpB,OAAe,EACf,OAA0E;IAE1E,IAAI,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAErC,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,UAAU,GAAG,iBAAiB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,wBAAwB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACH,IAAI;QACJ,OAAO;QACP,UAAU;QACV,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,OAAO,EAAE,OAAO,EAAE,OAAO;KAC5B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { FileSystem } from "./types.js";
|
|
2
|
+
export type DiscordBranch = "stable" | "canary" | "ptb";
|
|
3
|
+
export declare const DISCORD_BRANCHES: DiscordBranch[];
|
|
4
|
+
export interface InjectTarget {
|
|
5
|
+
branch: DiscordBranch;
|
|
6
|
+
appPath: string;
|
|
7
|
+
platform: NodeJS.Platform;
|
|
8
|
+
}
|
|
9
|
+
export interface InjectStatus {
|
|
10
|
+
injected: boolean;
|
|
11
|
+
/** True when Resources/app.asar exists (either original or our shim). */
|
|
12
|
+
asarPresent: boolean;
|
|
13
|
+
/** True when Resources/_app.asar (Discord's renamed original) exists. */
|
|
14
|
+
backupPresent: boolean;
|
|
15
|
+
/** True when a legacy Resources/app/ directory shim exists. */
|
|
16
|
+
legacyShimDirPresent: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface InjectResult {
|
|
19
|
+
branch: DiscordBranch;
|
|
20
|
+
appPath: string;
|
|
21
|
+
shimAsar: string;
|
|
22
|
+
backupPath: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class InjectError extends Error {
|
|
25
|
+
code: InjectErrorCode;
|
|
26
|
+
constructor(code: InjectErrorCode, message: string);
|
|
27
|
+
}
|
|
28
|
+
export type InjectErrorCode = "PLATFORM_UNSUPPORTED" | "DISCORD_NOT_FOUND" | "ALREADY_INJECTED" | "NOT_INJECTED" | "INJECT_FAILED";
|
|
29
|
+
/**
|
|
30
|
+
* Discover installed Discord branches on the current platform.
|
|
31
|
+
*
|
|
32
|
+
* On unsupported platforms, returns an empty array. Callers should treat
|
|
33
|
+
* that as "not supported" rather than "none installed".
|
|
34
|
+
*/
|
|
35
|
+
export declare function detectDiscordApps(fs: FileSystem, platform?: NodeJS.Platform): Promise<InjectTarget[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Inspect an on-disk Discord.app and report injection status. Does not
|
|
38
|
+
* modify anything. Returns a detailed breakdown so callers can decide
|
|
39
|
+
* whether to re-inject, warn, or abort.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getInjectStatus(fs: FileSystem, target: InjectTarget): Promise<InjectStatus>;
|
|
42
|
+
/**
|
|
43
|
+
* Patch a Discord.app so Electron loads Vencord's patcher before the
|
|
44
|
+
* original asar. Uses the asar-shim layout:
|
|
45
|
+
*
|
|
46
|
+
* 1. Rename Discord's app.asar → _app.asar
|
|
47
|
+
* 2. Pack a shim asar (package.json + index.js) and place it at app.asar
|
|
48
|
+
*
|
|
49
|
+
* Also cleans up legacy plain-directory shims from older venpm versions.
|
|
50
|
+
*
|
|
51
|
+
* On failure during shim packing, the rename is rolled back so the next
|
|
52
|
+
* Discord launch reverts cleanly to stock behaviour.
|
|
53
|
+
*/
|
|
54
|
+
export declare function injectVencord(fs: FileSystem, target: InjectTarget): Promise<InjectResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Reverse an inject: remove the shim asar, rename backup back to app.asar.
|
|
57
|
+
* Also cleans up any legacy plain-directory shim.
|
|
58
|
+
*/
|
|
59
|
+
export declare function uninjectVencord(fs: FileSystem, target: InjectTarget): Promise<InjectResult>;
|
|
60
|
+
//# sourceMappingURL=inject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/core/inject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAAgC,CAAC;AAe7E,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,aAAa,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,oBAAoB,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAY,SAAQ,KAAK;IACf,IAAI,EAAE,eAAe;gBAArB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM;CAI5D;AAED,MAAM,MAAM,eAAe,GACrB,sBAAsB,GACtB,mBAAmB,GACnB,kBAAkB,GAClB,cAAc,GACd,eAAe,CAAC;AAmCtB;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACnC,EAAE,EAAE,UAAU,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC7C,OAAO,CAAC,YAAY,EAAE,CAAC,CAWzB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC,CAoBvB;AA6CD;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAC/B,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC,CAoEvB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACjC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC,CAuCvB"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { mkdtemp, writeFile, rm } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { createPackage } from "@electron/asar";
|
|
5
|
+
export const DISCORD_BRANCHES = ["stable", "canary", "ptb"];
|
|
6
|
+
/**
|
|
7
|
+
* Platform-specific Discord.app paths, keyed by branch. Only macOS is
|
|
8
|
+
* currently supported by the native inject; Linux and Windows should continue
|
|
9
|
+
* to use Vencord's bundled `pnpm inject`.
|
|
10
|
+
*/
|
|
11
|
+
const MACOS_BRANCH_PATHS = {
|
|
12
|
+
stable: "/Applications/Discord.app",
|
|
13
|
+
canary: "/Applications/Discord Canary.app",
|
|
14
|
+
ptb: "/Applications/Discord PTB.app",
|
|
15
|
+
};
|
|
16
|
+
export class InjectError extends Error {
|
|
17
|
+
code;
|
|
18
|
+
constructor(code, message) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.code = code;
|
|
21
|
+
this.name = "InjectError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// ─── Path helpers ────────────────────────────────────────────────────────────
|
|
25
|
+
/**
|
|
26
|
+
* Filesystem layout inside Discord.app on macOS (asar-shim mode):
|
|
27
|
+
* Contents/Resources/app.asar — OUR shim, packed as an asar
|
|
28
|
+
* Contents/Resources/_app.asar — Discord's original, renamed
|
|
29
|
+
*
|
|
30
|
+
* Electron prefers app.asar over app/, so the shim must be packed as an asar
|
|
31
|
+
* file for Electron to load it. When the shim runs, `require.main.path` ends
|
|
32
|
+
* with `app.asar`, which Vencord's patcher detects (see src/main/patcher.ts
|
|
33
|
+
* line 32) to resolve the original at `_app.asar` and load it.
|
|
34
|
+
*
|
|
35
|
+
* An earlier implementation used a plain `app/` directory alongside
|
|
36
|
+
* `app.asar`. That appeared to work — the shim files existed, uninject could
|
|
37
|
+
* roll back — but Electron silently ignored the directory because app.asar
|
|
38
|
+
* took precedence, so Vencord never actually loaded. Confirmed empirically:
|
|
39
|
+
* moving app.asar aside made the directory-shim load.
|
|
40
|
+
*/
|
|
41
|
+
function macosPaths(appPath) {
|
|
42
|
+
const resources = join(appPath, "Contents", "Resources");
|
|
43
|
+
return {
|
|
44
|
+
resources,
|
|
45
|
+
/** Post-inject: OUR shim asar (pre-inject: Discord's original). */
|
|
46
|
+
asar: join(resources, "app.asar"),
|
|
47
|
+
/** Post-inject: Discord's original asar, renamed. */
|
|
48
|
+
backup: join(resources, "_app.asar"),
|
|
49
|
+
/** Legacy plain-directory shim path — cleaned up if found. */
|
|
50
|
+
legacyShimDir: join(resources, "app"),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// ─── Detection ───────────────────────────────────────────────────────────────
|
|
54
|
+
/**
|
|
55
|
+
* Discover installed Discord branches on the current platform.
|
|
56
|
+
*
|
|
57
|
+
* On unsupported platforms, returns an empty array. Callers should treat
|
|
58
|
+
* that as "not supported" rather than "none installed".
|
|
59
|
+
*/
|
|
60
|
+
export async function detectDiscordApps(fs, platform = process.platform) {
|
|
61
|
+
if (platform !== "darwin")
|
|
62
|
+
return [];
|
|
63
|
+
const found = [];
|
|
64
|
+
for (const branch of DISCORD_BRANCHES) {
|
|
65
|
+
const appPath = MACOS_BRANCH_PATHS[branch];
|
|
66
|
+
if (await fs.exists(appPath)) {
|
|
67
|
+
found.push({ branch, appPath, platform });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return found;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Inspect an on-disk Discord.app and report injection status. Does not
|
|
74
|
+
* modify anything. Returns a detailed breakdown so callers can decide
|
|
75
|
+
* whether to re-inject, warn, or abort.
|
|
76
|
+
*/
|
|
77
|
+
export async function getInjectStatus(fs, target) {
|
|
78
|
+
if (target.platform !== "darwin") {
|
|
79
|
+
throw new InjectError("PLATFORM_UNSUPPORTED", `Native inject is not supported on ${target.platform}`);
|
|
80
|
+
}
|
|
81
|
+
const p = macosPaths(target.appPath);
|
|
82
|
+
const [asarPresent, backupPresent, legacyShimDirPresent] = await Promise.all([
|
|
83
|
+
fs.exists(p.asar),
|
|
84
|
+
fs.exists(p.backup),
|
|
85
|
+
fs.exists(p.legacyShimDir),
|
|
86
|
+
]);
|
|
87
|
+
// Injected iff both the shim asar (at p.asar) and the backup exist.
|
|
88
|
+
// A bare backup without a shim asar is a broken state (orphan).
|
|
89
|
+
const injected = asarPresent && backupPresent;
|
|
90
|
+
return { injected, asarPresent, backupPresent, legacyShimDirPresent };
|
|
91
|
+
}
|
|
92
|
+
// ─── Inject / uninject ───────────────────────────────────────────────────────
|
|
93
|
+
/**
|
|
94
|
+
* Contents of the shim's package.json — points Electron at index.js.
|
|
95
|
+
*/
|
|
96
|
+
function shimPackageJson() {
|
|
97
|
+
return JSON.stringify({ name: "discord", main: "index.js" }, null, 2) + "\n";
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Contents of the shim's index.js. When this runs, `require.main.path` ends
|
|
101
|
+
* with `app.asar`, so Vencord's patcher (see Vencord src/main/patcher.ts) sets
|
|
102
|
+
* asarName = "_app.asar" and loads Discord's renamed original itself. This
|
|
103
|
+
* file does not need to chain to _app.asar manually.
|
|
104
|
+
*/
|
|
105
|
+
function shimIndexJs() {
|
|
106
|
+
return `// Generated by venpm inject — do not edit.
|
|
107
|
+
const { join } = require("path");
|
|
108
|
+
const { homedir } = require("os");
|
|
109
|
+
const vencordDist = join(homedir(), "Library", "Application Support", "Vencord", "dist", "patcher.js");
|
|
110
|
+
require(vencordDist);
|
|
111
|
+
`;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Build a shim asar containing package.json + index.js under a temp dir,
|
|
115
|
+
* then pack it to `destAsar`. Cleans up the temp dir regardless of outcome.
|
|
116
|
+
*
|
|
117
|
+
* @electron/asar's createPackage operates on a source directory, so we
|
|
118
|
+
* materialise the two shim files to a temp dir first rather than using
|
|
119
|
+
* the stream API (simpler, no byte-counting gymnastics).
|
|
120
|
+
*/
|
|
121
|
+
async function packShimAsar(destAsar) {
|
|
122
|
+
const tmp = await mkdtemp(join(tmpdir(), "venpm-inject-"));
|
|
123
|
+
try {
|
|
124
|
+
await writeFile(join(tmp, "package.json"), shimPackageJson(), "utf8");
|
|
125
|
+
await writeFile(join(tmp, "index.js"), shimIndexJs(), "utf8");
|
|
126
|
+
await createPackage(tmp, destAsar);
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
await rm(tmp, { recursive: true, force: true });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Patch a Discord.app so Electron loads Vencord's patcher before the
|
|
134
|
+
* original asar. Uses the asar-shim layout:
|
|
135
|
+
*
|
|
136
|
+
* 1. Rename Discord's app.asar → _app.asar
|
|
137
|
+
* 2. Pack a shim asar (package.json + index.js) and place it at app.asar
|
|
138
|
+
*
|
|
139
|
+
* Also cleans up legacy plain-directory shims from older venpm versions.
|
|
140
|
+
*
|
|
141
|
+
* On failure during shim packing, the rename is rolled back so the next
|
|
142
|
+
* Discord launch reverts cleanly to stock behaviour.
|
|
143
|
+
*/
|
|
144
|
+
export async function injectVencord(fs, target) {
|
|
145
|
+
if (target.platform !== "darwin") {
|
|
146
|
+
throw new InjectError("PLATFORM_UNSUPPORTED", `Native inject is not supported on ${target.platform}`);
|
|
147
|
+
}
|
|
148
|
+
const p = macosPaths(target.appPath);
|
|
149
|
+
if (!(await fs.exists(target.appPath))) {
|
|
150
|
+
throw new InjectError("DISCORD_NOT_FOUND", `Discord.app not found at ${target.appPath}`);
|
|
151
|
+
}
|
|
152
|
+
const status = await getInjectStatus(fs, target);
|
|
153
|
+
if (status.injected) {
|
|
154
|
+
throw new InjectError("ALREADY_INJECTED", `Discord at ${target.appPath} is already injected`);
|
|
155
|
+
}
|
|
156
|
+
// Clean up any legacy plain-directory shim so Electron doesn't get
|
|
157
|
+
// confused if something leaves one behind.
|
|
158
|
+
if (status.legacyShimDirPresent) {
|
|
159
|
+
await fs.rm(p.legacyShimDir, { recursive: true, force: true });
|
|
160
|
+
}
|
|
161
|
+
if (!status.asarPresent) {
|
|
162
|
+
throw new InjectError("INJECT_FAILED", `Missing ${p.asar} — Discord install appears incomplete`);
|
|
163
|
+
}
|
|
164
|
+
// Rename original out of the way. If a stale _app.asar is lingering,
|
|
165
|
+
// remove it first so rename doesn't collide.
|
|
166
|
+
if (status.backupPresent) {
|
|
167
|
+
await fs.rm(p.backup, { force: true });
|
|
168
|
+
}
|
|
169
|
+
await fs.rename(p.asar, p.backup);
|
|
170
|
+
try {
|
|
171
|
+
await packShimAsar(p.asar);
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
// Roll back rename so Discord still launches stock.
|
|
175
|
+
try {
|
|
176
|
+
if (!(await fs.exists(p.asar)) && await fs.exists(p.backup)) {
|
|
177
|
+
await fs.rename(p.backup, p.asar);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// Swallow — surface the original error.
|
|
182
|
+
}
|
|
183
|
+
throw new InjectError("INJECT_FAILED", `Shim asar packing failed: ${err.message}`);
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
branch: target.branch,
|
|
187
|
+
appPath: target.appPath,
|
|
188
|
+
shimAsar: p.asar,
|
|
189
|
+
backupPath: p.backup,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Reverse an inject: remove the shim asar, rename backup back to app.asar.
|
|
194
|
+
* Also cleans up any legacy plain-directory shim.
|
|
195
|
+
*/
|
|
196
|
+
export async function uninjectVencord(fs, target) {
|
|
197
|
+
if (target.platform !== "darwin") {
|
|
198
|
+
throw new InjectError("PLATFORM_UNSUPPORTED", `Native uninject is not supported on ${target.platform}`);
|
|
199
|
+
}
|
|
200
|
+
const p = macosPaths(target.appPath);
|
|
201
|
+
const status = await getInjectStatus(fs, target);
|
|
202
|
+
if (!status.injected && !status.legacyShimDirPresent && !status.backupPresent) {
|
|
203
|
+
throw new InjectError("NOT_INJECTED", `Discord at ${target.appPath} is not injected`);
|
|
204
|
+
}
|
|
205
|
+
// Clean up a legacy directory shim if one lingers.
|
|
206
|
+
if (status.legacyShimDirPresent) {
|
|
207
|
+
await fs.rm(p.legacyShimDir, { recursive: true, force: true });
|
|
208
|
+
}
|
|
209
|
+
// Remove our shim asar (identified by presence of a backup).
|
|
210
|
+
if (status.asarPresent && status.backupPresent) {
|
|
211
|
+
await fs.rm(p.asar, { force: true });
|
|
212
|
+
}
|
|
213
|
+
// Restore the original.
|
|
214
|
+
if (status.backupPresent) {
|
|
215
|
+
await fs.rename(p.backup, p.asar);
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
branch: target.branch,
|
|
219
|
+
appPath: target.appPath,
|
|
220
|
+
shimAsar: p.asar,
|
|
221
|
+
backupPath: p.backup,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/core/inject.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -117,6 +117,7 @@ export interface FileSystem {
|
|
|
117
117
|
isSymbolicLink(): boolean;
|
|
118
118
|
}>;
|
|
119
119
|
copyDir(src: string, dest: string): Promise<void>;
|
|
120
|
+
rename(src: string, dest: string): Promise<void>;
|
|
120
121
|
}
|
|
121
122
|
export interface HttpResponseHeaders {
|
|
122
123
|
get(name: string): string | null;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,8 @@ import { registerDoctorCommand } from "./cli/doctor.js";
|
|
|
15
15
|
import { registerValidateCommand } from "./cli/validate.js";
|
|
16
16
|
import { configureHelp } from "./cli/help.js";
|
|
17
17
|
import { registerCompletionsCommand } from "./cli/completions.js";
|
|
18
|
+
import { registerKillDiscordCommand } from "./cli/kill-discord.js";
|
|
19
|
+
import { registerInjectCommand, registerUninjectCommand } from "./cli/inject.js";
|
|
18
20
|
import { createRealIOContext } from "./cli/context.js";
|
|
19
21
|
import { needsFirstRun, runFirstTimeSetup } from "./cli/first-run.js";
|
|
20
22
|
const _require = createRequire(import.meta.url);
|
|
@@ -44,6 +46,9 @@ registerRebuildCommand(program);
|
|
|
44
46
|
registerDoctorCommand(program);
|
|
45
47
|
registerValidateCommand(program);
|
|
46
48
|
registerCompletionsCommand(program);
|
|
49
|
+
registerKillDiscordCommand(program);
|
|
50
|
+
registerInjectCommand(program);
|
|
51
|
+
registerUninjectCommand(program);
|
|
47
52
|
program.hook("preAction", async (thisCommand) => {
|
|
48
53
|
const commandName = thisCommand.args[0] ?? "";
|
|
49
54
|
if (needsFirstRun(commandName)) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEtE,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAEvE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,QAAQ,EAAE,uDAAuD,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;KAClD,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;AAEpD,aAAa,CAAC,OAAO,CAAC,CAAC;AAEvB,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kamaras/venpm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Vencord Plugin Manager — CLI and index spec for distributing userplugins",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -33,8 +33,11 @@
|
|
|
33
33
|
],
|
|
34
34
|
"author": "kamaras",
|
|
35
35
|
"license": "MIT",
|
|
36
|
-
"publishConfig": {
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
37
39
|
"dependencies": {
|
|
40
|
+
"@electron/asar": "^4.2.0",
|
|
38
41
|
"ajv": "^8.17.0",
|
|
39
42
|
"ajv-formats": "^3.0.1",
|
|
40
43
|
"commander": "^13.0.0",
|