A Prediction Market on the AT Protocol
1import "dotenv/config"
2import { defineConfig, type Plugin } from "vite"
3import react from "@vitejs/plugin-react";
4import tailwindcss from '@tailwindcss/vite'
5import path from "path";
6import metadata from "./src/web/public/oauth-client-metadata.json"
7
8const SERVER_HOST = "127.0.0.1";
9const SERVER_PORT = 12520;
10
11const atProtoOAuthPlugin: Plugin = {
12 name: "atproto-oauth-plugin",
13 config: (_conf, { command }) => {
14 if (command === "build") {
15 process.env.VITE_OAUTH_CLIENT_ID = metadata.client_id;
16 process.env.VITE_OAUTH_REDIRECT_URI = metadata.redirect_uris[0];
17 } else {
18 const redirectUri = `http://${SERVER_HOST}:${SERVER_PORT}${new URL(metadata.redirect_uris[0]!).pathname}`
19 process.env.VITE_OAUTH_CLIENT_ID = `http://localhost?redirect_uri=${encodeURIComponent(redirectUri)}&scope=${encodeURIComponent(metadata.scope)}`;
20 process.env.VITE_OAUTH_REDIRECT_URI = redirectUri;
21 }
22 process.env.VITE_OAUTH_SCOPE = metadata.scope;
23
24 }
25}
26
27export default defineConfig({
28 server: {
29 host: SERVER_HOST,
30 port: SERVER_PORT,
31 proxy: { "/api": `http://${SERVER_HOST}:${process.env.PORT}` }
32 },
33 root: path.resolve(__dirname, './src/web'),
34 plugins: [
35 atProtoOAuthPlugin,
36 react(),
37 tailwindcss(),
38 ],
39 build: {
40 outDir: "../../dist",
41 emptyOutDir: true,
42 },
43 resolve: {
44 alias: {
45 "@": path.resolve(__dirname, "./src/"),
46 }
47 },
48});