Initial commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import { existsSync, rmSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
import { definePatch, PHASE_EXTRACTED_APP } from "./descriptor.mjs";
|
||||
|
||||
export const NON_LINUX_PAYLOADS = [
|
||||
"native/build/Release/maccopy.node",
|
||||
"native/build/Release/macos26_window_corner.node",
|
||||
"node_modules/@napi-rs/system-ocr-darwin-arm64",
|
||||
"node_modules/@nut-tree-fork/libnut-darwin",
|
||||
"node_modules/@nut-tree-fork/libnut-win32",
|
||||
"node_modules/@nut-tree-fork/node-mac-permissions",
|
||||
"bin/language-helper",
|
||||
];
|
||||
|
||||
export function verifyNonLinuxPayloadsAbsent(root) {
|
||||
const remaining = NON_LINUX_PAYLOADS.filter((relativePath) =>
|
||||
existsSync(path.join(root, relativePath)),
|
||||
);
|
||||
if (remaining.length > 0) {
|
||||
throw new Error(`Non-Linux payloads remain: ${remaining.join(", ")}`);
|
||||
}
|
||||
}
|
||||
|
||||
export function verifyNonLinuxHeaderEntries(entries) {
|
||||
const normalized = entries.map((entry) => entry.replace(/^\//, ""));
|
||||
const remaining = NON_LINUX_PAYLOADS.filter((forbidden) =>
|
||||
normalized.some((entry) => entry === forbidden || entry.startsWith(`${forbidden}/`)),
|
||||
);
|
||||
if (remaining.length > 0) {
|
||||
throw new Error(`Non-Linux payloads remain in ASAR header: ${remaining.join(", ")}`);
|
||||
}
|
||||
}
|
||||
|
||||
export default definePatch({
|
||||
id: "prune-non-linux",
|
||||
phase: PHASE_EXTRACTED_APP,
|
||||
order: 5,
|
||||
required: true,
|
||||
apply({ extractedDir }) {
|
||||
const removed = [];
|
||||
for (const relativePath of NON_LINUX_PAYLOADS) {
|
||||
const target = path.join(extractedDir, relativePath);
|
||||
if (!existsSync(target)) continue;
|
||||
rmSync(target, { recursive: true, force: true });
|
||||
removed.push(relativePath);
|
||||
}
|
||||
verifyNonLinuxPayloadsAbsent(extractedDir);
|
||||
return {
|
||||
status: removed.length > 0 ? "applied" : "already-applied",
|
||||
detail: removed.length > 0 ? `removed ${removed.length} non-Linux payloads` : undefined,
|
||||
};
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user