79 lines
2.2 KiB
TypeScript
79 lines
2.2 KiB
TypeScript
import { configureWunderGraphApplication, cors, EnvironmentVariable, introspect, templates } from '@wundergraph/sdk';
|
|
import server from './wundergraph.server';
|
|
import operations from './wundergraph.operations';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import dotenv from 'dotenv';
|
|
dotenv.config();
|
|
|
|
const directusSchema = fs.readFileSync(path.join(path.resolve(), './schemas/directus.graphql'), 'utf8');
|
|
const directusSystemSchema = fs.readFileSync(path.join(path.resolve(), './schemas/directus_system.graphql'), 'utf8');
|
|
|
|
const db = introspect.graphql({
|
|
apiNamespace: 'db',
|
|
loadSchemaFromString: directusSchema,
|
|
url: 'https://directus.andert.me/graphql',
|
|
headers: (builder) => builder
|
|
.addStaticHeader('Authorization', new EnvironmentVariable('DIRECTUS', process.env.DIRECTUS))
|
|
});
|
|
|
|
const placeholder = introspect.openApiV2({
|
|
apiNamespace: 'placeholder',
|
|
source: {
|
|
kind: "file",
|
|
filePath: "./schemas/placeholder.json"
|
|
},
|
|
baseURL: 'https://jsonplaceholder.typicode.com',
|
|
});
|
|
|
|
const system_db = introspect.graphql({
|
|
apiNamespace: 'system_db',
|
|
loadSchemaFromString: directusSystemSchema,
|
|
url: 'https://directus.andert.me/graphql/system',
|
|
headers: (builder) => builder
|
|
.addStaticHeader('Authorization', new EnvironmentVariable('DIRECTUS', process.env.DIRECTUS))
|
|
});
|
|
|
|
// configureWunderGraph emits the configuration
|
|
configureWunderGraphApplication({
|
|
apis: [db, system_db, placeholder],
|
|
server,
|
|
operations,
|
|
generate: {
|
|
codeGenerators: [
|
|
{
|
|
templates: [
|
|
// use all the typescript react templates to generate a client
|
|
...templates.typescript.all,
|
|
],
|
|
path: '../src/lib/.wundergraph/generated',
|
|
},
|
|
],
|
|
},
|
|
cors: {
|
|
...cors.allowAll,
|
|
allowedOrigins:
|
|
process.env.NODE_ENV === 'production'
|
|
? [
|
|
// change this before deploying to production to the actual domain where you're deploying your app
|
|
'http://localhost:3000',
|
|
]
|
|
: ['http://localhost:3000', new EnvironmentVariable('WG_ALLOWED_ORIGIN')],
|
|
},
|
|
security: {
|
|
enableGraphQLEndpoint: process.env.NODE_ENV !== 'production' || process.env.GITPOD_WORKSPACE_ID !== undefined,
|
|
},
|
|
authentication: {
|
|
tokenBased: {
|
|
providers: [
|
|
{
|
|
userInfoEndpoint: 'http://localhost:3000/server/wundergraph',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
authorization: {
|
|
roles: ['owner'],
|
|
},
|
|
});
|