Skip to content

Commit

Permalink
Merge pull request #60 from Enigmatis/upgrade-apollo
Browse files Browse the repository at this point in the history
fix: update apollo server
  • Loading branch information
chenshoo authored Jun 14, 2020
2 parents ab06be2 + 9e55809 commit 7de8077
Show file tree
Hide file tree
Showing 21 changed files with 474 additions and 343 deletions.
668 changes: 397 additions & 271 deletions package-lock.json

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,21 +68,21 @@
},
"homepage": "https://github.com/Enigmatis/polaris-core#readme",
"dependencies": {
"@enigmatis/polaris-common": "^1.4.3",
"@enigmatis/polaris-common": "^1.4.4",
"@enigmatis/polaris-graphql-logger": "^1.4.2",
"@enigmatis/polaris-logs": "^2.8.2",
"@enigmatis/polaris-middlewares": "^1.4.5",
"@enigmatis/polaris-schema": "^1.1.1",
"@enigmatis/polaris-typeorm": "^2.3.4",
"apollo-server-express": "2.11.0",
"apollo-server-express": "^2.14.3",
"apollo-server-plugin-base": "^0.6.10",
"express": "^4.17.1",
"graphql": "^14.6.0",
"graphql-middleware": "^4.0.2",
"http-status": "^1.4.2",
"lodash": "^4.17.15",
"subscriptions-transport-ws": "^0.9.16",
"ts-node": "^8.10.1",
"ts-node": "^8.10.2",
"uuid": "^3.4.0"
},
"devDependencies": {
Expand All @@ -92,8 +92,8 @@
"@semantic-release/git": "^9.0.0",
"@types/express": "4.17.4",
"@types/graphql": "^14.5.0",
"@types/jest": "^25.2.1",
"@types/lodash": "^4.14.150",
"@types/jest": "^25.2.3",
"@types/lodash": "^4.14.155",
"@types/uuid": "^3.4.9",
"axios": "^0.19.2",
"graphql-request": "^1.8.2",
Expand All @@ -102,16 +102,16 @@
"pg": "^7.18.2",
"prettier": "^1.19.1",
"rimraf": "^3.0.2",
"semantic-release": "^17.0.7",
"semantic-release": "^17.0.8",
"travis-deploy-once": "^5.0.11",
"ts-jest": "^25.4.0",
"ts-jest": "^25.5.1",
"tslint": "^5.20.1",
"tslint-config-prettier": "^1.18.0",
"tslint-consistent-codestyle": "^1.16.0",
"tslint-eslint-rules": "^5.4.0",
"tslint-plugin-prettier": "^2.3.0",
"typescript": "^3.8.3",
"ws": "^7.2.5"
"typescript": "^3.9.5",
"ws": "^7.3.0"
},
"husky": {
"hooks": {
Expand Down
21 changes: 10 additions & 11 deletions src/config/create-apollo-config-util.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
ApplicationProperties,
DATA_VERSION,
INCLUDE_LINKED_OPER,
OICD_CLAIM_UPN,
Expand Down Expand Up @@ -30,23 +31,21 @@ import { SnapshotListener } from '../plugins/snapshot/snapshot-listener';
import { SnapshotPlugin } from '../plugins/snapshot/snapshot-plugin';
import { PolarisServerConfig } from './polaris-server-config';

export function createPolarisLoggerFromPolarisServerConfig(
config: PolarisServerConfig,
): AbstractPolarisLogger {
return config.logger instanceof PolarisGraphQLLogger
? config.logger
: new PolarisGraphQLLogger(
config.logger as LoggerConfiguration,
config.applicationProperties,
);
export function createPolarisLoggerFromPolarisServerOptions(
loggerDef: LoggerConfiguration | PolarisGraphQLLogger,
applicationProperties: ApplicationProperties,
): PolarisGraphQLLogger {
return loggerDef instanceof PolarisGraphQLLogger
? loggerDef
: new PolarisGraphQLLogger(loggerDef as LoggerConfiguration, applicationProperties);
}

export function createPolarisPlugins(
polarisLogger: PolarisGraphQLLogger,
config: PolarisServerConfig,
connectionManager?: PolarisConnectionManager,
): Array<ApolloServerPlugin | (() => ApolloServerPlugin)> {
const plugins: Array<ApolloServerPlugin | (() => ApolloServerPlugin)> = [
): any[] {
const plugins: any[] = [
new ExtensionsPlugin(polarisLogger, config.shouldAddWarningsToExtensions),
new ResponseHeadersPlugin(polarisLogger),
new PolarisLoggerPlugin(polarisLogger),
Expand Down
11 changes: 4 additions & 7 deletions src/config/polaris-server-config.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import { RealitiesHolder } from '@enigmatis/polaris-common';
import {
AbstractPolarisLogger,
ApplicationProperties,
LoggerConfiguration,
} from '@enigmatis/polaris-logs';
import { PolarisGraphQLLogger } from '@enigmatis/polaris-graphql-logger';
import { ApplicationProperties } from '@enigmatis/polaris-logs';
import { PolarisConnectionManager } from '@enigmatis/polaris-typeorm';
import { ApolloServerExpressConfig } from 'apollo-server-express';
import { DocumentNode } from 'graphql';
Expand All @@ -12,12 +9,12 @@ import { ExpressContext } from '..';
import { MiddlewareConfiguration } from '../index';
import { SnapshotConfiguration } from './snapshot-configuration';

export interface PolarisServerConfig extends ApolloServerExpressConfig {
export interface PolarisServerConfig extends Omit<ApolloServerExpressConfig, 'logger'> {
typeDefs: DocumentNode | DocumentNode[] | string | string[];
resolvers: IResolvers | IResolvers[];
port: number;
applicationProperties: ApplicationProperties;
logger: LoggerConfiguration | AbstractPolarisLogger;
logger: PolarisGraphQLLogger;
middlewareConfiguration: MiddlewareConfiguration;
allowSubscription: boolean;
customMiddlewares?: any[];
Expand Down
2 changes: 1 addition & 1 deletion src/config/polaris-server-options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { IResolvers } from 'graphql-tools';
import { ExpressContext, MiddlewareConfiguration } from '..';
import { SnapshotConfiguration } from './snapshot-configuration';

export interface PolarisServerOptions extends ApolloServerExpressConfig {
export interface PolarisServerOptions extends Omit<ApolloServerExpressConfig, 'logger'> {
typeDefs: DocumentNode | DocumentNode[] | string | string[];
resolvers: IResolvers | IResolvers[];
port: number;
Expand Down
3 changes: 2 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Entity } from '@enigmatis/polaris-typeorm';
export { ExpressContext } from './server/express-context';
export { PolarisServer, app } from './server/polaris-server';
export * from './config/create-apollo-config-util';
Expand All @@ -15,7 +16,7 @@ export * from '@enigmatis/polaris-graphql-logger';
export * from '@enigmatis/polaris-middlewares';
export * from '@enigmatis/polaris-schema';
export * from '@enigmatis/polaris-typeorm';
export { Entity } from '@enigmatis/polaris-typeorm';
export { Entity };
export { getPolarisServerConfigFromOptions } from './server/configurations-manager';
export {
IResolvers,
Expand Down
3 changes: 1 addition & 2 deletions src/plugins/snapshot/snapshot-listener.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
SnapshotPage,
} from '@enigmatis/polaris-typeorm';
import { runHttpQuery } from 'apollo-server-core';
import { GraphQLOptions } from 'apollo-server-express';
import {
GraphQLRequestContext,
GraphQLRequestListener,
Expand All @@ -16,7 +15,7 @@ import {
import { SnapshotConfiguration } from '../..';

export class SnapshotListener implements GraphQLRequestListener<PolarisGraphQLContext> {
public static graphQLOptions: GraphQLOptions;
public static graphQLOptions: any;

public constructor(
private readonly logger: PolarisGraphQLLogger,
Expand Down
17 changes: 13 additions & 4 deletions src/server/configurations-manager.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import { RealitiesHolder } from '@enigmatis/polaris-common';
import { LoggerConfiguration } from '@enigmatis/polaris-logs';
import { MiddlewareConfiguration, PolarisServerOptions, SnapshotConfiguration } from '..';
import { PolarisServerConfig } from '../config/polaris-server-config';
import {
createPolarisLoggerFromPolarisServerOptions,
MiddlewareConfiguration,
PolarisServerConfig,
PolarisServerOptions,
SnapshotConfiguration,
} from '..';

export const getDefaultMiddlewareConfiguration = (): MiddlewareConfiguration => {
return {
Expand Down Expand Up @@ -49,12 +54,16 @@ export function getSupportedRealities(options: PolarisServerOptions): RealitiesH
export const getPolarisServerConfigFromOptions = (
options: PolarisServerOptions,
): PolarisServerConfig => {
const applicationProperties = options.applicationProperties || { version: 'v1' };
return {
...options,
middlewareConfiguration:
options.middlewareConfiguration || getDefaultMiddlewareConfiguration(),
logger: options.logger || getDefaultLoggerConfiguration(),
applicationProperties: options.applicationProperties || { version: 'v1' },
logger: createPolarisLoggerFromPolarisServerOptions(
options.logger || getDefaultLoggerConfiguration(),
applicationProperties,
),
applicationProperties,
allowSubscription: options.allowSubscription || false,
shouldAddWarningsToExtensions:
options.shouldAddWarningsToExtensions === undefined
Expand Down
15 changes: 7 additions & 8 deletions src/server/polaris-server.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { REALITY_ID } from '@enigmatis/polaris-common';
import { PolarisGraphQLLogger } from '@enigmatis/polaris-graphql-logger';
import { AbstractPolarisLogger } from '@enigmatis/polaris-logs';
import { makeExecutablePolarisSchema } from '@enigmatis/polaris-schema';
import {
Expand All @@ -16,15 +15,14 @@ import {
createIntrospectionConfig,
createPlaygroundConfig,
createPolarisContext,
createPolarisLoggerFromPolarisServerConfig,
createPolarisPlugins,
createPolarisSchemaWithMiddlewares,
createPolarisSubscriptionsConfig,
initSnapshotGraphQLOptions,
polarisFormatError,
PolarisServerConfig,
PolarisServerOptions,
} from '..';
import { PolarisServerConfig } from '../config/polaris-server-config';
import {
clearSnapshotCleanerInterval,
setSnapshotCleanerInterval,
Expand All @@ -42,12 +40,12 @@ export class PolarisServer {

public constructor(config: PolarisServerOptions) {
this.polarisServerConfig = getPolarisServerConfigFromOptions(config);
this.polarisLogger = createPolarisLoggerFromPolarisServerConfig(this.polarisServerConfig);
this.polarisLogger = this.polarisServerConfig.logger;
this.apolloServerConfiguration = this.getApolloServerConfigurations();
this.apolloServer = new ApolloServer(this.apolloServerConfiguration);
if (config.connectionManager) {
initSnapshotGraphQLOptions(
this.polarisLogger as PolarisGraphQLLogger,
this.polarisServerConfig.logger,
this.polarisServerConfig,
this.apolloServer,
this.createSchemaWithMiddlewares(),
Expand Down Expand Up @@ -113,12 +111,13 @@ export class PolarisServer {

private getApolloServerConfigurations(): ApolloServerExpressConfig {
const schema: GraphQLSchema = this.createSchemaWithMiddlewares();
const config: Omit<PolarisServerConfig, 'logger'> = this.polarisServerConfig;
return {
...this.polarisServerConfig,
...config,
schema,
context: createPolarisContext(this.polarisLogger, this.polarisServerConfig),
plugins: createPolarisPlugins(
this.polarisLogger as PolarisGraphQLLogger,
this.polarisServerConfig.logger,
this.polarisServerConfig,
this.polarisServerConfig.connectionManager,
),
Expand All @@ -137,7 +136,7 @@ export class PolarisServer {
);
return createPolarisSchemaWithMiddlewares(
schema,
this.polarisLogger as PolarisGraphQLLogger,
this.polarisServerConfig.logger,
this.polarisServerConfig,
this.polarisServerConfig.connectionManager,
);
Expand Down
2 changes: 1 addition & 1 deletion src/snapshot/snapshot-cleaner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const setSnapshotCleanerInterval = (
logger: AbstractPolarisLogger,
connectionManager: PolarisConnectionManager,
): void => {
snapshotCleanerInterval = setInterval(
snapshotCleanerInterval = global.setInterval(
() =>
deleteOutdatedSnapshotPages(
realitiesHolder,
Expand Down
7 changes: 3 additions & 4 deletions test/integration/tests/concurrent-mutations.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { startTestServer, stopTestServer } from '../server/test-server';
import { graphqlRawRequest, graphQLRequest } from '../server/utils/graphql-client';
import * as concurrentMutations from './jsonRequestsAndHeaders/concurrentMutations.json';
import * as simpleQuery from './jsonRequestsAndHeaders/simpleQuery.json';
import validate = WebAssembly.validate;

let polarisServer: PolarisServer;

Expand All @@ -31,7 +30,7 @@ describe('concurrent mutations tests', () => {
concurrentMutations.request,
concurrentMutations.headers,
concurrentMutations.variables,
).then(res => {
).then((res: any) => {
expect(res.createAuthor).toBeDefined();
expect(res.createAuthor.firstName).toBe(concurrentMutations.variables.firstName);
expect(res.createAuthor.lastName).toBe(concurrentMutations.variables.lastName);
Expand All @@ -48,7 +47,7 @@ describe('concurrent mutations tests', () => {
concurrentMutations.requestTwo,
concurrentMutations.headers,
concurrentMutations.variables,
).then(res => {
).then((res: any) => {
expect(res.createAuthor).toBeDefined();
expect(res.createAuthor.firstName).toBe(concurrentMutations.variables.fName);
expect(res.createAuthor.lastName).toBe(concurrentMutations.variables.lName);
Expand All @@ -65,7 +64,7 @@ describe('concurrent mutations tests', () => {
concurrentMutations.requestThree,
concurrentMutations.headers,
concurrentMutations.variables,
).then(res => {
).then((res: any) => {
expect(res.createAuthor).toBeDefined();
expect(res.createAuthor.firstName).toBe(concurrentMutations.variables.first);
expect(res.createAuthor.lastName).toBe(concurrentMutations.variables.last);
Expand Down
6 changes: 3 additions & 3 deletions test/integration/tests/custom-context.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ afterEach(async () => {

describe('custom context tests', () => {
test('querying author by custom header in the custom context', async () => {
const result = await graphQLRequest(
const result: any = await graphQLRequest(
customHeadersRequest.query,
customHeadersRequest.headers,
);
Expand All @@ -30,7 +30,7 @@ describe('custom context tests', () => {
});

test('querying custom field in the custom context', async () => {
const result = await graphQLRequest(
const result: any = await graphQLRequest(
customContextCustomFieldRequest.query,
customContextCustomFieldRequest.headers,
);
Expand All @@ -39,7 +39,7 @@ describe('custom context tests', () => {
});

test('querying method of a TestClassInContext instance in the custom context', async () => {
const result = await graphQLRequest(
const result: any = await graphQLRequest(
customContextInstanceMethodRequest.query,
customContextInstanceMethodRequest.headers,
);
Expand Down
2 changes: 1 addition & 1 deletion test/integration/tests/data-version.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ describe('data version tests', () => {
});
describe('data version filtering', () => {
it('should filter entities below the requested data version', async () => {
const response = await graphQLRequest(
const response: any = await graphQLRequest(
dataVersionFiltering.request,
dataVersionFiltering.headers,
);
Expand Down
2 changes: 1 addition & 1 deletion test/integration/tests/directives.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ afterEach(async () => {

describe('directives tests', () => {
it('query a field with directive, directive logic activated', async () => {
const result = await graphQLRequest(
const result: any = await graphQLRequest(
`
{
allBooks {
Expand Down
10 changes: 6 additions & 4 deletions test/integration/tests/irrelevant-entities.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ afterEach(() => {

describe('irrelevant entities in response', () => {
it('should have irrelevant entities if the response is partial', async () => {
const result = await graphqlRawRequest(
const result: any = await graphqlRawRequest(
irrelevantEntities.request,
irrelevantEntities.headers,
);
const irrelevantId = (await graphQLRequest(simpleQuery.request, simpleQuery.headers))
.allBooks[1].id;
const irrelevantId = ((await graphQLRequest(
simpleQuery.request,
simpleQuery.headers,
)) as any).allBooks[1].id;
expect(result.extensions.irrelevantEntities.bookByTitle).toContain(irrelevantId);
});

Expand All @@ -34,7 +36,7 @@ describe('irrelevant entities in response', () => {
});

it('should place irrelevant response in the specific field info', async () => {
const result = await graphqlRawRequest(
const result: any = await graphqlRawRequest(
multipleIrrelevantEntities.request,
multipleIrrelevantEntities.headers,
);
Expand Down
4 changes: 2 additions & 2 deletions test/integration/tests/query-without-connection.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ afterEach(async () => {

describe('simple queries without connection', () => {
it('all entities query', async () => {
const result = await graphQLRequest(simpleQuery.request, simpleQuery.headers);
const result: any = await graphQLRequest(simpleQuery.request, simpleQuery.headers);
expect(result.allBooks[0].title).toEqual('Book1');
expect(result.allBooks[1].title).toEqual('Book2');
});

it('query with arguments', async () => {
const result = await graphQLRequest(argsQuery.request, argsQuery.headers);
const result: any = await graphQLRequest(argsQuery.request, argsQuery.headers);
expect(result.bookByTitle[0].title).toEqual('Book3');
});
});
Loading

0 comments on commit 7de8077

Please sign in to comment.