web components for a integrable atproto based guestbook
1import { defineConfig } from 'vite';
2import { svelte } from '@sveltejs/vite-plugin-svelte';
3import metadata from './public/client-metadata.json';
4
5const SERVER_HOST = '127.0.0.1';
6const SERVER_PORT = 5173;
7
8export default defineConfig({
9 plugins: [
10 svelte(),
11 {
12 name: 'oauth',
13 config(_conf, { command }) {
14 if (command === 'build') {
15 process.env.VITE_OAUTH_CLIENT_ID = metadata.client_id;
16 process.env.VITE_OAUTH_REDIRECT_URL = metadata.redirect_uris[0];
17 } else {
18 const redirectUri = ((): string => {
19 const url = new URL(metadata.redirect_uris[0]);
20 return `http://${SERVER_HOST}:${SERVER_PORT}${url.pathname}`;
21 })();
22
23 const clientId =
24 `http://localhost` +
25 `?redirect_uri=${encodeURIComponent(redirectUri)}` +
26 `&scope=${encodeURIComponent(metadata.scope)}`;
27
28 process.env.VITE_DEV_SERVER_PORT = '' + SERVER_PORT;
29 process.env.VITE_OAUTH_CLIENT_ID = clientId;
30 process.env.VITE_OAUTH_REDIRECT_URL = redirectUri;
31 }
32
33 process.env.VITE_CLIENT_URI = metadata.client_uri;
34 process.env.VITE_OAUTH_SCOPE = metadata.scope;
35 },
36 },
37 ],
38 server: {
39 host: SERVER_HOST,
40 port: SERVER_PORT,
41 },
42});
43