@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.
@@ -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,CA4KrE"}
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"}
@@ -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) {
@@ -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":"AAAA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAE3C,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACtD,MAAM,EAAE,GAAe;QACnB,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,QAAwB;YACjD,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,QAAyB;YACjE,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,IAAY;YACrB,IAAI,CAAC;gBACD,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,IAA8B;YACpD,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,IAAY,EAAE,IAA+C;YAClE,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,IAAY;YACtC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,IAAY;YACvB,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,IAAY;YACtB,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAY;YACnB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,IAAY;YACpB,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAY;YACnC,MAAM,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,IAAY;YAClC,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;KACJ,CAAC;IAEF,MAAM,IAAI,GAAe;QACrB,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,YAAmD;YACxE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5E,OAAO;gBACH,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;gBACtB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAsB;gBAC1C,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE;aACvC,CAAC;QACN,CAAC;KACJ,CAAC;IAEF,MAAM,GAAG,GAAc;QACnB,KAAK,CAAC,SAAS;YACX,IAAI,CAAC;gBACD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC1C,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAY,EAAE,YAAqE;YACxG,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;YAC7C,IAAI,YAAY,EAAE,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,YAAY,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEjC,IAAI,YAAY,EAAE,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/F,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,QAAgB;YACvB,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,GAAW;YACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,GAAW;YACxC,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;KACJ,CAAC;IAEF,MAAM,KAAK,GAAgB;QACvB,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,IAAc,EAAE,WAA4D;YAChG,IAAI,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;oBACtD,GAAG,EAAE,WAAW,EAAE,GAAG;oBACrB,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;iBAC7E,CAAC,CAAC;gBACH,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACvE,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,MAAM,CAAC,GAAG,GAA0D,CAAC;gBACrE,OAAO;oBACH,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;oBACtB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;oBACtB,QAAQ,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;iBACxB,CAAC;YACN,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAc,EAAE,YAAiF;YACtH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;oBAC5B,GAAG,EAAE,YAAY,EAAE,GAAG;oBACtB,QAAQ,EAAE,YAAY,EAAE,QAAQ;oBAChC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;oBAC5E,KAAK,EAAE,QAAQ;iBAClB,CAAC,CAAC;gBACH,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;oBACzB,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,OAAO,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACJ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;wBACvB,IAAI,IAAI,KAAK,CAAC;4BAAE,OAAO,EAAE,CAAC;;4BACrB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;oBACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;IAE/C,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC;IACtF,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC5B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,MAAM,IAAI,UAAU,IAAI,KAAK;QACjD,cAAc;KACjB,CAAC,CAAC;IAEH,IAAI,QAA+B,CAAC;IACpC,IAAI,UAAU,EAAE,CAAC;QACb,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACtC,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAChB,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACpC,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,QAAQ,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IACvG,CAAC;SAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAK,OAAmC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACjG,QAAQ,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IACzG,CAAC;SAAM,CAAC;QACJ,QAAQ,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerInjectCommand(program: Command): void;
3
+ export declare function registerUninjectCommand(program: Command): void;
4
+ //# sourceMappingURL=inject.d.ts.map
@@ -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,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerKillDiscordCommand(program: Command): void;
3
+ //# sourceMappingURL=kill-discord.d.ts.map
@@ -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"}
@@ -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
- * Skips silently when the deployed directory does not exist on disk.
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 via `pkill`, wait briefly, then spawn the binary detached.
20
- * If pkill reports the process is not running (exit code 1) the kill step is
21
- * skipped Discord is still spawned so the caller can open it fresh.
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;AAI1D,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;;;GAGG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAa3F;AAID;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7F;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"}
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"}
@@ -1,5 +1,6 @@
1
1
  import { homedir } from "node:os";
2
- import { basename, join } from "node:path";
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
- * Skips silently when the deployed directory does not exist on disk.
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
- const deployedDirExists = await fs.exists(deployPath);
29
- if (!deployedDirExists) {
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 via `pkill`, wait briefly, then spawn the binary detached.
39
- * If pkill reports the process is not running (exit code 1) the kill step is
40
- * skipped Discord is still spawned so the caller can open it fresh.
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
- const processName = basename(discordBinary);
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;
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"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"}
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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"}
@@ -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;;;;;;;;;;;;;;CAcZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAkBtE,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAW7D;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"}
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"}
@@ -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;
@@ -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;CAC5B,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;CACzE,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;YAC5B,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"}
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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"}
@@ -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;
@@ -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":"AAEA,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACd;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IACzB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACxC;AAID,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,2CAA2C;AAC3C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE;QACL,kFAAkF;QAClF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE;QACL,OAAO,EAAE,WAAW,CAAC;QACrB,yDAAyD;QACzD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;CACL;AAID,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAID,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,2DAA2D;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAID,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,IAAI,OAAO,CAAC;QAAC,MAAM,IAAI,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzF,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,IAAI,OAAO,CAAC;QAAC,MAAM,IAAI,OAAO,CAAC;QAAC,cAAc,IAAI,OAAO,CAAA;KAAE,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QACxE,EAAE,EAAE,OAAO,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,mBAAmB,CAAC;QAC9B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QACzB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;KACvC,CAAC,CAAC;CACN;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QACjG,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnI;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;CACtB;AAID,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,IAAI,EAAE,OAAO,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;IACnD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE5B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,eAAe,EAAE,cAAc,CAAC;IAE9E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,yFAAyF;IACzF,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACvE;AAID,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,aAAa,EAAE,SAAS,CAAA;CAAE,CAAC"}
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":"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"}
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.2.1",
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": { "access": "public" },
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",