Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/danielroe/roe.dev. This is the code and content for my personal website, built in Nuxt. roe.dev
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233import type { ForgeProvider, RepoRef } from 'forges'import { github } from 'forges/github'
export const SLIDES_REPO: RepoRef = { forge: 'github', instance: 'github.com', owner: 'danielroe', name: 'slides' }
export function createGitHub (token: string): ForgeProvider { return github({ auth: { type: 'token', token }, userAgent: 'roe (https://roe.dev, 0.1)', }).create()}
export async function githubGraphQL<T> ( gh: ForgeProvider, query: string, variables?: Record<string, unknown>,): Promise<T> { const { data } = await gh.request<{ data?: T, errors?: Array<{ message: string }> }>('POST', '/graphql', { body: { query, variables }, }) if (data.errors?.length || !data.data) { throw new Error(`GitHub GraphQL request failed: ${data.errors?.map(e => e.message).join('; ') || 'empty response'}`) } return data.data}
export async function downloadSlides (gh: ForgeProvider, tag: string): Promise<ArrayBuffer | undefined> { const release = await gh.releases.getByTag(SLIDES_REPO, tag) const asset = release.assets?.find(a => a.name.endsWith('.pdf'))?.ref if (!asset) return return new Response(await gh.releases.downloadAsset(asset)).arrayBuffer()}