| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import { stripIndent } from 'common-tags'
- import { writeFileSync } from 'node:fs'
- import path from 'node:path'
- import { fileURLToPath } from 'node:url'
- const __dirname = path.dirname(fileURLToPath(import.meta.url))
- // Note: This is a build-time script, so we use the fallback URL directly
- const DOCS_URL = process.env.NEXT_PUBLIC_DOCS_URL || 'https://supabase.com/docs'
- async function downloadGraphQLSchema() {
- const schemaEndpoint = `${DOCS_URL}/api/graphql`
- const outputPath = path.join(__dirname, './schema.graphql')
- const schemaQuery = stripIndent`
- query SchemaQuery {
- schema
- }
- `
- try {
- const response = await fetch(schemaEndpoint, {
- method: 'POST',
- body: JSON.stringify({
- query: schemaQuery.trim(),
- }),
- })
- const { data, errors } = await response.json()
- if (errors) {
- throw errors
- }
- writeFileSync(outputPath, data.schema, 'utf8')
- console.log(`✅ Successfully downloaded GraphQL schema to ${outputPath}`)
- } catch (error) {
- console.error('🚨 Error generating GraphQL schema:', error)
- process.exit(1)
- }
- }
- if (process.argv[1] === fileURLToPath(import.meta.url)) {
- downloadGraphQLSchema()
- }
|