@bitblit/ratchet-epsilon-common
Version:
Tiny adapter to simplify building API gateway Lambda APIS
49 lines • 2.35 kB
JavaScript
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