an independent Bluesky client using Constellation, PDS Queries, and other services reddwarf.app
frontend spa bluesky reddwarf microcosm client app
94
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 80 lines 2.3 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 [ 17 "authorization_code", 18 "refresh_token", 19 ], 20 response_types: ["code"] as ["code"], 21 token_endpoint_auth_method: "none" as "none", 22 application_type: "web" as "web", 23 dpop_bound_access_tokens: true, 24 }; 25}; 26 27export function generateMetadataPlugin({ 28 prod, 29 dev, 30 prodResolver = "https://bsky.social", 31 devResolver = prodResolver, 32}: { 33 prod: string; 34 dev: string; 35 prodResolver?: string; 36 devResolver?: string; 37}) { 38 return { 39 name: "vite-plugin-generate-metadata", 40 config(_config: any, { mode }: any) { 41 console.log('💡 vite mode =', mode) 42 let appOrigin, resolver; 43 if (mode === "production") { 44 appOrigin = prod; 45 resolver = prodResolver; 46 if (!appOrigin || !appOrigin.startsWith("https://")) { 47 throw new Error( 48 "VITE_APP_ORIGIN environment variable must be set to a valid HTTPS URL for production build." 49 ); 50 } 51 } else { 52 appOrigin = dev; 53 resolver = devResolver; 54 } 55 56 const metadata = generateClientMetadata(appOrigin); 57 const outputPath = path.resolve( 58 process.cwd(), 59 "public", 60 "client-metadata.json" 61 ); 62 63 fs.writeFileSync(outputPath, JSON.stringify(metadata, null, 2)); 64 65 const resolvers = { 66 resolver: resolver, 67 }; 68 const resolverOutPath = path.resolve( 69 process.cwd(), 70 "public", 71 "resolvers.json" 72 ); 73 74 fs.writeFileSync(resolverOutPath, JSON.stringify(resolvers, null, 2)); 75 76 77 // /*mass comment*/ console.log(`✅ Generated client-metadata.json for ${appOrigin}`); 78 }, 79 }; 80}