- Sponsors table, LNbits createInvoice, webhook handler - Sponsor routes: create, homepage, list, my-ads, click, extend, check-payment - Admin routes for sponsor management - Frontend: SponsorForm, SponsorTimeSlider, SponsorCard, SponsorsSection - Sponsors page, My Ads page, homepage sponsor block - Header login dropdown with My Ads, Create Sponsor - Transactions integration for sponsor payments - View/click tracking - OG meta fetch for sponsor images - Sponsor modal spacing, invoice polling fallback - Remove Lightning address and Category fields from sponsor form Made-with: Cursor
62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
import { defineConfig, loadEnv } from "vite";
|
|
import react from "@vitejs/plugin-react";
|
|
|
|
/** Proxy config that forwards client Host/Proto so NIP-98 URL validation matches. */
|
|
function proxyToBackendWithForwarded(backendTarget: string) {
|
|
return {
|
|
target: backendTarget,
|
|
changeOrigin: true,
|
|
configure: (proxy) => {
|
|
proxy.on("proxyReq", (proxyReq, req) => {
|
|
const host = (req.headers.host as string) || "";
|
|
const proto = (req.headers["x-forwarded-proto"] as string) || "http";
|
|
proxyReq.setHeader("X-Forwarded-Host", host);
|
|
proxyReq.setHeader("X-Forwarded-Proto", proto);
|
|
});
|
|
},
|
|
};
|
|
}
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
const env = loadEnv(mode, process.cwd(), "");
|
|
const backendTarget = env.VITE_API_URL || "http://localhost:3001";
|
|
|
|
return {
|
|
plugins: [react()],
|
|
build: {
|
|
sourcemap: false,
|
|
rollupOptions: {
|
|
output: {
|
|
manualChunks: {
|
|
vendor: ["react", "react-dom", "react-router-dom"],
|
|
nostr: ["nostr-tools"],
|
|
ui: ["framer-motion", "qrcode", "canvas-confetti"],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
preview: {
|
|
allowedHosts: ["faucet.lnpulse.app"],
|
|
},
|
|
server: {
|
|
port: 5173,
|
|
proxy: {
|
|
"/api": {
|
|
target: backendTarget,
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api/, ""),
|
|
},
|
|
"/claim": proxyToBackendWithForwarded(backendTarget),
|
|
"/auth": proxyToBackendWithForwarded(backendTarget),
|
|
"/user": proxyToBackendWithForwarded(backendTarget),
|
|
"/config": { target: backendTarget, changeOrigin: true },
|
|
"/stats": { target: backendTarget, changeOrigin: true },
|
|
"/deposit": { target: backendTarget, changeOrigin: true },
|
|
"/sponsor/": { target: backendTarget, changeOrigin: true },
|
|
"/health": { target: backendTarget, changeOrigin: true },
|
|
"/openapi.json": { target: backendTarget, changeOrigin: true },
|
|
},
|
|
},
|
|
};
|
|
});
|