feat: add bun-fullstack agent and update skills
This commit is contained in:
90
.agent/skills/tech-stack/elysiajs/plugins/graphql-apollo.md
Normal file
90
.agent/skills/tech-stack/elysiajs/plugins/graphql-apollo.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# GraphQL Apollo
|
||||
|
||||
Plugin for Elysia to use GraphQL Apollo.
|
||||
|
||||
## Installation
|
||||
```bash
|
||||
bun add graphql @elysiajs/apollo @apollo/server
|
||||
```
|
||||
|
||||
## Basic Usage
|
||||
|
||||
```typescript
|
||||
import { Elysia } from 'elysia'
|
||||
import { apollo, gql } from '@elysiajs/apollo'
|
||||
|
||||
const app = new Elysia()
|
||||
.use(
|
||||
apollo({
|
||||
typeDefs: gql`
|
||||
type Book {
|
||||
title: String
|
||||
author: String
|
||||
}
|
||||
|
||||
type Query {
|
||||
books: [Book]
|
||||
}
|
||||
`,
|
||||
resolvers: {
|
||||
Query: {
|
||||
books: () => {
|
||||
return [
|
||||
{
|
||||
title: 'Elysia',
|
||||
author: 'saltyAom'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
.listen(3000)
|
||||
```
|
||||
|
||||
Accessing `/graphql` should show Apollo GraphQL playground work with.
|
||||
|
||||
## Context
|
||||
|
||||
Because Elysia is based on Web Standard Request and Response which is different from Node's `HttpRequest` and `HttpResponse` that Express uses, results in `req, res` being undefined in context.
|
||||
|
||||
Because of this, Elysia replaces both with `context` like route parameters.
|
||||
|
||||
```typescript
|
||||
const app = new Elysia()
|
||||
.use(
|
||||
apollo({
|
||||
typeDefs,
|
||||
resolvers,
|
||||
context: async ({ request }) => {
|
||||
const authorization = request.headers.get('Authorization')
|
||||
|
||||
return {
|
||||
authorization
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
.listen(3000)
|
||||
```
|
||||
|
||||
## Config
|
||||
|
||||
This plugin extends Apollo's [ServerRegistration](https://www.apollographql.com/docs/apollo-server/api/apollo-server/#options) (which is `ApolloServer`'s' constructor parameter).
|
||||
|
||||
Below are the extended parameters for configuring Apollo Server with Elysia.
|
||||
|
||||
### path
|
||||
|
||||
@default `"/graphql"`
|
||||
|
||||
Path to expose Apollo Server.
|
||||
|
||||
---
|
||||
|
||||
### enablePlayground
|
||||
|
||||
@default `process.env.ENV !== 'production'`
|
||||
|
||||
Determine whether should Apollo should provide Apollo Playground.
|
||||
Reference in New Issue
Block a user