feat: init
This commit is contained in:
		
							
								
								
									
										41
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										41
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
 | 
			
		||||
 | 
			
		||||
.vscode
 | 
			
		||||
.idea
 | 
			
		||||
 | 
			
		||||
# WunderGraph build output
 | 
			
		||||
.wundergraph/cache
 | 
			
		||||
.wundergraph/generated
 | 
			
		||||
 | 
			
		||||
# dependencies
 | 
			
		||||
node_modules
 | 
			
		||||
/.pnp
 | 
			
		||||
.pnp.js
 | 
			
		||||
 | 
			
		||||
# testing
 | 
			
		||||
/coverage
 | 
			
		||||
 | 
			
		||||
# next.js
 | 
			
		||||
/.next/
 | 
			
		||||
/out/
 | 
			
		||||
 | 
			
		||||
# production
 | 
			
		||||
/build
 | 
			
		||||
 | 
			
		||||
# misc
 | 
			
		||||
.DS_Store
 | 
			
		||||
*.pem
 | 
			
		||||
 | 
			
		||||
# debug
 | 
			
		||||
npm-debug.log*
 | 
			
		||||
yarn-debug.log*
 | 
			
		||||
yarn-error.log*
 | 
			
		||||
 | 
			
		||||
# local env files
 | 
			
		||||
.env.local
 | 
			
		||||
.env.development.local
 | 
			
		||||
.env.test.local
 | 
			
		||||
.env.production.local
 | 
			
		||||
 | 
			
		||||
# vercel
 | 
			
		||||
.vercel
 | 
			
		||||
							
								
								
									
										19
									
								
								.wundergraph/.graphqlconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.wundergraph/.graphqlconfig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
{
 | 
			
		||||
  "projects": {
 | 
			
		||||
    "app": {
 | 
			
		||||
      "name": "app",
 | 
			
		||||
      "schemaPath": "generated/wundergraph.app.schema.graphql",
 | 
			
		||||
      "extensions": {
 | 
			
		||||
        "endpoints": {
 | 
			
		||||
          "app": {
 | 
			
		||||
            "introspect": false,
 | 
			
		||||
            "url": "http://localhost:9991/app/main/graphql",
 | 
			
		||||
            "headers": {
 | 
			
		||||
              "user-agent": "WunderGraph Client"
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								.wundergraph/operations/Starters.graphql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.wundergraph/operations/Starters.graphql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
query Starters {
 | 
			
		||||
    pokemon_pokemons(limit: 12) {
 | 
			
		||||
        results {
 | 
			
		||||
            id
 | 
			
		||||
            name
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										51
									
								
								.wundergraph/wundergraph.config.ts
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										51
									
								
								.wundergraph/wundergraph.config.ts
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,51 @@
 | 
			
		||||
import {
 | 
			
		||||
    Application,
 | 
			
		||||
    configureWunderGraphApplication,
 | 
			
		||||
    cors,
 | 
			
		||||
    EnvironmentVariable,
 | 
			
		||||
    introspect,
 | 
			
		||||
    templates,
 | 
			
		||||
} from '@wundergraph/sdk';
 | 
			
		||||
import server from './wundergraph.server';
 | 
			
		||||
import operations from './wundergraph.operations';
 | 
			
		||||
 | 
			
		||||
const pokemonAPI = introspect.graphql({
 | 
			
		||||
    apiNamespace: 'pokemon',
 | 
			
		||||
    url: 'https://graphql-pokeapi.graphcdn.app/',
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const myApplication = new Application({
 | 
			
		||||
    name: 'app',
 | 
			
		||||
    apis: [
 | 
			
		||||
        pokemonAPI,
 | 
			
		||||
    ],
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// configureWunderGraph emits the configuration
 | 
			
		||||
configureWunderGraphApplication({
 | 
			
		||||
    application: myApplication,
 | 
			
		||||
    server,
 | 
			
		||||
    operations,
 | 
			
		||||
    codeGenerators: [
 | 
			
		||||
        {
 | 
			
		||||
            templates: [
 | 
			
		||||
                ...templates.typescript.all,
 | 
			
		||||
                templates.typescript.operations,
 | 
			
		||||
                templates.typescript.linkBuilder,
 | 
			
		||||
            ],
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
    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')],
 | 
			
		||||
    },
 | 
			
		||||
    dotGraphQLConfig: {
 | 
			
		||||
        hasDotWunderGraphDirectory: false,
 | 
			
		||||
    },
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										32
									
								
								.wundergraph/wundergraph.operations.ts
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								.wundergraph/wundergraph.operations.ts
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
import { configureWunderGraphOperations } from '@wundergraph/sdk';
 | 
			
		||||
import type { OperationsConfiguration } from './generated/wundergraph.operations';
 | 
			
		||||
 | 
			
		||||
export default configureWunderGraphOperations<OperationsConfiguration>({
 | 
			
		||||
	operations: {
 | 
			
		||||
		defaultConfig: {
 | 
			
		||||
			authentication: {
 | 
			
		||||
				required: false,
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		queries: (config) => ({
 | 
			
		||||
			...config,
 | 
			
		||||
			caching: {
 | 
			
		||||
				enable: false,
 | 
			
		||||
				staleWhileRevalidate: 60,
 | 
			
		||||
				maxAge: 60,
 | 
			
		||||
				public: true,
 | 
			
		||||
			},
 | 
			
		||||
			liveQuery: {
 | 
			
		||||
				enable: true,
 | 
			
		||||
				pollingIntervalSeconds: 1,
 | 
			
		||||
			},
 | 
			
		||||
		}),
 | 
			
		||||
		mutations: (config) => ({
 | 
			
		||||
			...config,
 | 
			
		||||
		}),
 | 
			
		||||
		subscriptions: (config) => ({
 | 
			
		||||
			...config,
 | 
			
		||||
		}),
 | 
			
		||||
		custom: {},
 | 
			
		||||
	},
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										11
									
								
								.wundergraph/wundergraph.server.ts
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								.wundergraph/wundergraph.server.ts
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
import {configureWunderGraphServer} from '@wundergraph/sdk';
 | 
			
		||||
import type {HooksConfig} from './generated/wundergraph.hooks';
 | 
			
		||||
import type {InternalClient} from './generated/wundergraph.internal.client';
 | 
			
		||||
 | 
			
		||||
export default configureWunderGraphServer<HooksConfig, InternalClient>(() => ({
 | 
			
		||||
    hooks: {
 | 
			
		||||
        queries: {},
 | 
			
		||||
        mutations: {},
 | 
			
		||||
    },
 | 
			
		||||
    graphqlServers: []
 | 
			
		||||
}));
 | 
			
		||||
							
								
								
									
										31
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
# Simple starter for WunderGraph Cloud
 | 
			
		||||
 | 
			
		||||
A simple starter that consumes the [Pokémon GraphQL API](https://graphql-pokeapi.vercel.app).
 | 
			
		||||
 | 
			
		||||
### Getting started locally
 | 
			
		||||
 | 
			
		||||
```shell
 | 
			
		||||
npm install && npm start
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Get first 3 starter Pokémon and their evolutions
 | 
			
		||||
 | 
			
		||||
```shell
 | 
			
		||||
curl -X GET http://localhost:9991/app/main/operations/Starters
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
### Deploy to WunderGraph Cloud
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
1. Fork this repo
 | 
			
		||||
2. Sign in to [WunderGraph Cloud](https://cloud.wundergraph.com)
 | 
			
		||||
3. Create a new project
 | 
			
		||||
4. Import the forked repo
 | 
			
		||||
5. Deploy the project
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
### Learn More
 | 
			
		||||
 | 
			
		||||
Read the [Docs](https://wundergraph.com/docs).
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								package.json
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								package.json
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "wundergraph-simple",
 | 
			
		||||
  "version": "1.0.0",
 | 
			
		||||
  "description": "",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "start": "wunderctl up --debug",
 | 
			
		||||
    "generate": "wunderctl generate up --debug",
 | 
			
		||||
    "check": "tsc --noEmit"
 | 
			
		||||
  },
 | 
			
		||||
  "author": "",
 | 
			
		||||
  "license": "ISC",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@wundergraph/sdk": "^0.117.0",
 | 
			
		||||
    "graphql": "^16.3.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/node": "^14.14.37",
 | 
			
		||||
    "typescript": "^4.8.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								tsconfig.json
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										18
									
								
								tsconfig.json
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "target": "ESNext",
 | 
			
		||||
    "module": "commonjs",
 | 
			
		||||
    "allowJs": true,
 | 
			
		||||
    "skipLibCheck": true,
 | 
			
		||||
    "esModuleInterop": true,
 | 
			
		||||
    "allowSyntheticDefaultImports": true,
 | 
			
		||||
    "strict": true,
 | 
			
		||||
    "forceConsistentCasingInFileNames": true,
 | 
			
		||||
    "noFallthroughCasesInSwitch": true,
 | 
			
		||||
    "moduleResolution": "node",
 | 
			
		||||
    "resolveJsonModule": true,
 | 
			
		||||
    "isolatedModules": true,
 | 
			
		||||
    "noEmit": true
 | 
			
		||||
  },
 | 
			
		||||
  "include": [".wundergraph/**/*.ts"]
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user