an appview-less Bluesky client using Constellation and PDS Queries reddwarf.app
frontend spa bluesky reddwarf microcosm
at button 1.8 kB view raw
1import fs from 'fs'; 2import path from 'path'; 3//import { generateClientMetadata } from './src/helpers/oauthClient' 4export const generateClientMetadata = (appOrigin: string) => { 5 const callbackPath = '/callback'; 6 7 return { 8 "client_id": `${appOrigin}/client-metadata.json`, 9 "client_name": "ForumTest", 10 "client_uri": appOrigin, 11 "logo_uri": `${appOrigin}/logo192.png`, 12 "tos_uri": `${appOrigin}/terms-of-service`, 13 "policy_uri": `${appOrigin}/privacy-policy`, 14 "redirect_uris": [`${appOrigin}${callbackPath}`] as [string, ...string[]], 15 "scope": "atproto transition:generic", 16 "grant_types": ["authorization_code", "refresh_token"] as ["authorization_code", "refresh_token"], 17 "response_types": ["code"] as ["code"], 18 "token_endpoint_auth_method": "none" as "none", 19 "application_type": "web" as "web", 20 "dpop_bound_access_tokens": true 21 }; 22} 23 24 25export function generateMetadataPlugin({prod, dev}:{prod: string, dev: string}) { 26 return { 27 name: 'vite-plugin-generate-metadata', 28 config(_config: any, { mode }: any) { 29 let appOrigin; 30 if (mode === 'production') { 31 appOrigin = prod 32 if (!appOrigin || !appOrigin.startsWith('https://')) { 33 throw new Error('VITE_APP_ORIGIN environment variable must be set to a valid HTTPS URL for production build.'); 34 } 35 } else { 36 appOrigin = dev; 37 } 38 39 40 const metadata = generateClientMetadata(appOrigin); 41 const outputPath = path.resolve(process.cwd(), 'public', 'client-metadata.json'); 42 43 fs.writeFileSync(outputPath, JSON.stringify(metadata, null, 2)); 44 45 // /*mass comment*/ console.log(`✅ Generated client-metadata.json for ${appOrigin}`); 46 }, 47 }; 48}