/* eslint-disable */ import { spawnSync } from 'child_process'; import { writeFileSync, readFileSync, copyFileSync } from 'fs' import inlineWorkerPlugin from 'esbuild-plugin-inline-worker'; import esbuild from "esbuild"; import esbuildSvelte from "esbuild-svelte"; import sveltePreprocess from "svelte-preprocess"; //import path from 'path'; //import ChromeExtension from 'crx'; //const crx = new ChromeExtension({ // codebase: 'https://github.com/coomdev/pngextraembedder/raw/branch/%E4%B8%AD%E5%87%BA%E3%81%97/PEE-chrome.crx', // privateKey: readFileSync('./key.pem') //}); let res = spawnSync("git", ["rev-list", "--count", "HEAD"]); let rev = +res.stdout; const domains = [ "https://*.coom.tech/*", "https://*.4chan.org/*", "https://*.4channel.org/*", "https://*.4plebs.org/*", "https://desuarchive.org/*", "https://archived.moe/*", "https://archive.nyafuu.org/*", "https://arch.b4k.co/*", "https://archive.wakarimasen.moe/*", "https://b4k.co/*", "https://fireden.net/*", "https://thebarchive.com/*", "https://archiveofsins.com/*", "https://kohlchan.net/*", "https://*.kohlchan.net/*" ]; const manif3 = { manifest_version: 3, // "update_url": "https://github.com/coomdev/pngextraembedder/raw/branch/%E4%B8%AD%E5%87%BA%E3%81%97/chrome_update.xml", name: "PngExtraEmbedder", description: "Discover embedded files on 4chan and archives!", version: "0." + rev, icons: { 64: "1449696017588.png" }, permissions: [ "storage", "activeTab", "scripting", "declarativeNetRequestWithHostAccess" ], background: { service_worker: "bg.js" }, "host_permissions": [""], web_accessible_resources: [{ resources: ["*.html", "*.js"], matches: [""] }], content_scripts: [ { matches: domains, css: [], run_at: "document_start", js: ["dist/main.js"], world: "ISOLATED" } ], declarative_net_request: { rule_resources: [ { id: "rule1", enabled: true, path: "b4k-csp.json" } ] } }; (async () => { let res; const lmanif = manif3; res = await esbuild .build({ entryPoints: ["src/main.ts"], bundle: true, treeShaking: true, outfile: "./chrome/dist/main.js", define: { global: 'window', execution_mode: '"chrome_api"', manifest: lmanif.version, isBackground: 'false', BUILD_VERSION: JSON.stringify([0, rev]) }, inject: ['./esbuild.inject.js'], plugins: [ esbuildSvelte({ compilerOptions: { css: true, accessors: true }, preprocess: sveltePreprocess(), }), inlineWorkerPlugin({ minify: false, bundle: true, treeShaking: true, target: "es2022", loader: { '.css': 'text', '.png': 'binary' }, define: { global: 'self', execution_mode: '"worker"', manifest: lmanif.version, isBackground: 'false', BUILD_VERSION: JSON.stringify([0, rev]) }, inject: ['./esbuild.inject.js'], }) ], loader: { '.css': 'text', '.png': 'binary' }, metafile: true }) console.log(res.metafile.inputs); console.log(Object.entries(res.metafile.inputs).sort((a, b) => a[1].bytes - b[1].bytes).map(e => `${e[0]} -> ${e[1].bytes}`).join('\n')); res = await esbuild .build({ entryPoints: ["src/background.ts"], bundle: true, treeShaking: true, outfile: "./chrome/dist/background.js", define: { global: 'window', execution_mode: '"chrome_api"', manifest: lmanif.version, isBackground: 'true', BUILD_VERSION: JSON.stringify([0, rev]) }, inject: ['./esbuild.inject.js'], metafile: true }); console.log(res.metafile.inputs); console.log(Object.entries(res.metafile.inputs).sort((a, b) => a[1].bytes - b[1].bytes).map(e => `${e[0]} -> ${e[1].bytes}`).join('\n')); writeFileSync('./chrome/manifest.json', JSON.stringify(lmanif, null, 2)); copyFileSync("./logo.png", "./chrome/1449696017588.png"); //const ext = await crx.load('./chrome'); //const crxBuffer = await ext.pack(); //const updateXML = crx.generateUpdateXML(); //writeFileSync('./chrome_update.xml', updateXML); //writeFileSync('./PEE-chrome.crx', crxBuffer); })();