@kamaras/venpm 0.2.1 → 0.4.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/README.md +11 -5
- package/actions/publish-index/action.yml +1 -1
- 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/create.js +1 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/inject.d.ts +12 -0
- package/dist/cli/inject.d.ts.map +1 -0
- package/dist/cli/inject.js +205 -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/fetcher.d.ts.map +1 -1
- package/dist/core/fetcher.js +14 -0
- package/dist/core/fetcher.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 +293 -0
- package/dist/core/inject.js.map +1 -0
- package/dist/core/json.d.ts +11 -0
- package/dist/core/json.d.ts.map +1 -0
- package/dist/core/json.js +14 -0
- package/dist/core/json.js.map +1 -0
- package/dist/core/log.d.ts +14 -0
- package/dist/core/log.d.ts.map +1 -0
- package/dist/core/log.js +24 -0
- package/dist/core/log.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
|
@@ -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 supports macOS and standard Linux Discord installs; 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,yHAAyH;CAClJ,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,WAAW,CAC7B,GAAG,EAAE,SAAS,EACd,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,WAAW,CAAC,CAoCtB;AAID,wBAAsB,eAAe,CACjC,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAID,wBAAsB,aAAa,CAC/B,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,WAAW,CAC7B,GAAG,EAAE,SAAS,EACd,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,WAAW,CAAC,CAoCtB;AAID,wBAAsB,eAAe,CACjC,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAID,wBAAsB,aAAa,CAC/B,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAuBtB;AAID,wBAAsB,WAAW,CAC7B,KAAK,EAAE,gBAAgB,EACvB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC1D,OAAO,CAAC,WAAW,CAAC,CAqCtB"}
|
package/dist/core/fetcher.js
CHANGED
|
@@ -55,6 +55,20 @@ export async function fetchViaLocal(fs, localPath, dest) {
|
|
|
55
55
|
if (!found) {
|
|
56
56
|
throw new Error(`Local path not found: ${localPath}`);
|
|
57
57
|
}
|
|
58
|
+
try {
|
|
59
|
+
const destStat = await fs.lstat(dest);
|
|
60
|
+
if (destStat.isSymbolicLink()) {
|
|
61
|
+
await fs.rm(dest, { force: true });
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw new Error(`Destination already exists and is not a symlink: ${dest}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
if (err.code !== "ENOENT") {
|
|
69
|
+
throw err;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
58
72
|
await fs.symlink(localPath, dest);
|
|
59
73
|
return { method: "local" };
|
|
60
74
|
}
|
package/dist/core/fetcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAc9B,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,GAAc,EACd,EAAc,EACd,MAAc,EACd,IAAY,EACZ,UAA2C,EAAE;IAE7C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,OAAO,EAAE,CAAC;QACV,mEAAmE;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,UAAU,EAAE,EAAE,CAAC,CAAC;QAE9D,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAErE,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEpD,sDAAsD;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE/B,2BAA2B;QAC3B,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,qBAAqB;IACrB,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAE/C,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,IAAgB,EAChB,EAAc,EACd,UAAkB,EAClB,IAAY;IAEZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE9C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACX,mCAAmC,UAAU,UAAU,QAAQ,CAAC,MAAM,EAAE,CAC3E,CAAC;IACN,CAAC;IAED,qEAAqE;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,UAAU,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACP,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,EAAc,EACd,SAAiB,EACjB,IAAY;IAEZ,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAED,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAElC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,KAAuB,EACvB,aAAqB,EACrB,GAAyD;IAEzD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAEvC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,KAAK,CAAC,CAAC,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,4BAA4B,CAAC,CAAC;YACjE,CAAC;YACD,+DAA+D;YAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACxC,MAAM,GAAG,GAAG,YAAY,EAAE,OAAO,CAAC;YAClC,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;gBAClD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG;aACN,CAAC,CAAC;QACP,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,gCAAgC,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,+BAA+B,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAA0B,KAA0B,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;AACL,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 install 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 install 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;AAsB7E,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;AA0CtB;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACnC,EAAE,EAAE,UAAU,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC7C,OAAO,CAAC,YAAY,EAAE,CAAC,CA8BzB;AA2CD;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAiDD;;;;;;;;;;;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,CA8CvB"}
|