UNPKG

@bitblit/ratchet-epsilon-common

Version:

Tiny adapter to simplify building API gateway Lambda APIS

49 lines 2.35 kB
import { Logger } from '@bitblit/ratchet-common/logger/logger'; import { PromiseRatchet } from '@bitblit/ratchet-common/lang/promise-ratchet'; import { ApolloServer } from '@apollo/server'; import { gql } from 'graphql-tag'; import { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default'; import { ApolloFilter } from '../built-in/http/apollo-filter.js'; import { SampleServerStaticFiles } from './sample-server-static-files.js'; import { ApolloUtil } from '../built-in/http/apollo/apollo-util.js'; import { SampleServerComponents } from './sample-server-components'; import { EpsilonCorsApproach } from '../config/http/epsilon-cors-approach.js'; export class SampleServerComponentsWithApollo { constructor() { } static async createSampleApollo() { const gqlString = SampleServerStaticFiles.SAMPLE_SERVER_GRAPHQL; Logger.silly('Creating apollo from : %s', gqlString); const typeDefs = gql(gqlString); const resolvers = { RootQueryType: { serverMeta: async (_root) => { return { version: 'A1', serverTime: new Date().toISOString() }; }, forceTimeout: async (_root) => { await PromiseRatchet.wait(1000 * 60 * 30); return { placeholder: 'A1' }; }, }, }; const server = new ApolloServer({ introspection: true, typeDefs, resolvers, plugins: [ ApolloServerPluginLandingPageLocalDefault({ footer: false }), ], }); await server.start(); return server; } static async createSampleEpsilonConfig(label) { const cfg = await SampleServerComponents.createSampleEpsilonConfig(label); ApolloFilter.addApolloFilterToList(cfg.httpConfig.defaultMetaHandling.preFilters, new RegExp('.*graphql.*'), await SampleServerComponentsWithApollo.createSampleApollo(), { context: (arg) => ApolloUtil.defaultEpsilonApolloContext(arg, { jwtRatchet: SampleServerComponents.createSampleTokenManipulator().jwtRatchet }), timeoutMS: 5_000, corsMethod: EpsilonCorsApproach.All, }); return cfg; } } //# sourceMappingURL=sample-server-components-with-apollo.js.map