import vue from '@vitejs/plugin-vue'; import * as path from "path"; import { defineConfig, loadEnv } from 'vite'; import zlib from 'zlib'; export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); return { plugins: [vue()], resolve: { alias: { 'src': path.resolve(__dirname, './src/'), '@': path.resolve(__dirname, './src/'), }, extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] }, server: { port: 3000, strictPort: true, watch: { usePolling: true }, proxy: { '/marbas/': { target: env.MARBAS_URL, changeOrigin: true, followRedirects: true, rewrite: path => path.replace(/^\/marbas/, ''), selfHandleResponse: true, configure: proxy => { proxy.on('proxyRes', (proxyRes, req, res) => { const chunks = []; proxyRes.on("data", (chunk) => chunks.push(chunk)); proxyRes.on("end", () => { const buffer = Buffer.concat(chunks); const encoding = proxyRes.headers["content-encoding"]; const relace = (b: Buffer) => { let remoteBody = b.toString(); const modifiedBody = remoteBody.replace(env.MARBAS_URL, '/marbas/'); res.write(modifiedBody); res.end(); } if (!encoding) { relace(buffer); } else if (encoding === "gzip" || encoding === "deflate") { zlib.unzip(buffer, (err, b) => { if (!err) { relace(b); } else { console.error(err); } }); } else { console.error(`Unsupported encoding: ${encoding}`); } }); }); } }, '/pocketbase/': { target: env.POCKET_BASE_URL, changeOrigin: true, followRedirects: true, rewrite: path => path.replace(/^\/pocketbase/, ''), }, '/evepraisal/': { target: env.EVEPRAISAL_URL, changeOrigin: true, followRedirects: true, rewrite: path => path.replace(/^\/evepraisal/, ''), }, '/esi/': { target: env.ESI_URL, changeOrigin: true, followRedirects: true, rewrite: path => path.replace(/^\/esi/, ''), headers: { 'User-Agent': env.ESI_USER_AGENT }, } } } }; })