-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
40 lines (34 loc) · 1.11 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import 'source-map-support/register';
import { ApolloServer } from 'apollo-server-lambda';
import { ApolloServerPluginLandingPageLocalDefault } from 'apollo-server-core';
import "reflect-metadata";
import { buildSchema } from 'type-graphql';
import { ItemsResolver } from './src/resolvers/Items';
import { StatusResolver } from './src/resolvers/Status';
const emitSchemaFile = !!process.env.GENERATE_SCHEMA;
const isProd = process.env.NODE_ENV === 'prod';
export async function bootstrap() {
const schema = await buildSchema({
resolvers: [ItemsResolver, StatusResolver],
emitSchemaFile,
});
return new ApolloServer({
schema,
csrfPrevention: true,
cache: 'bounded',
plugins: [
ApolloServerPluginLandingPageLocalDefault({ embed: true }),
],
});
}
exports.handler = async (event: any, ctx: any, callback: any) => {
return bootstrap()
.then(server => server.createHandler({ expressGetMiddlewareOptions: {
cors: {
// TODO: fix prod origin
origin: isProd ? '*' : '*',
credentials: true,
}
}}))
.then(handler => handler(event, ctx, callback))
};