check-extension-surface.mjs

699 B · raw

1import { readFileSync } from "node:fs";23const manifest = JSON.parse(readFileSync(new URL("../manifest.json", import.meta.url), "utf8"));4const expected = readFileSync(new URL("../docs/extension-surface-inventory.txt", import.meta.url), "utf8");5const actual = [6  ...[...(manifest.permissions ?? [])].sort().map((permission) => `permission|${permission}`),7  ...[...(manifest.host_permissions ?? [])].sort().map((permission) => `host-permission|${permission}`),8].sort().join("\n") + "\n";9if (actual !== expected) {10  throw new Error(`extension surface differs from inventory:\nexpected ${expected}actual ${actual}`);11}12console.log("Browser extension permission inventory matches manifest.json");