document optimizations v2

This commit is contained in:
Chi Vinh Le
2017-12-07 18:41:46 +01:00
parent f96146bfd9
commit 7072aa013b
6 changed files with 32 additions and 29 deletions
@@ -0,0 +1,23 @@
import graphql from '@coralproject/graphql-anywhere-optimized';
import {createTypeGetter} from 'graphql-ast-tools';
import introspectionData from './introspection.json';
// User typeGetter to get more optimized documents.
const typeGetter = createTypeGetter(introspectionData);
// Use global fragment cache for transformed fragments.
const fragmentMap = {};
export default (...args) => {
while (args.length < 7) {
args.push(undefined);
}
const transformOptions = {
typeGetter,
fragmentMap,
};
args[6] = transformOptions;
return graphql(...args);
};
-4
View File
@@ -124,10 +124,6 @@ export async function createContext({
const plugins = createPluginsService(pluginsConfig);
const graphql = createGraphQLService(
createGraphQLRegistry(plugins.getSlotFragments.bind(plugins)),
{
introspectionData,
optimize: process.env.NODE_ENV === 'production',
},
);
if (!notification) {
+1 -17
View File
@@ -1,4 +1,3 @@
import {transformDocument, createTypeGetter} from 'graphql-ast-tools';
import {addTypenameToDocument} from 'apollo-client/queries/queryTransform';
/**
@@ -6,18 +5,7 @@ import {addTypenameToDocument} from 'apollo-client/queries/queryTransform';
* @param {string} basename base path of the url
* @return {Object} histor service
*/
export function createGraphQLService(registry, {
introspectionData,
optimize = false,
}) {
const transformOptions = {
typeGetter: optimize && introspectionData ? createTypeGetter(introspectionData) : null,
// Use shared fragment map.
// Attention: Fragment names must be unique otherwise weird things will happen.
fragmentMap: {},
};
export function createGraphQLService(registry) {
return {
registry,
resolveDocument(documentOrCallback, props, context) {
@@ -26,10 +14,6 @@ export function createGraphQLService(registry, {
: documentOrCallback;
document = registry.resolveFragments(document);
if (optimize) {
document = transformDocument(document, transformOptions);
}
// We also add typenames to the document which apollo would usually do,
// but we also use the network interface in subscriptions directly
// which require the resolved typenames.
+1 -1
View File
@@ -106,7 +106,7 @@
"fs-extra": "^4.0.1",
"gql-merge": "^0.0.4",
"graphql": "^0.9.1",
"graphql-ast-tools": "^0.1.5",
"graphql-ast-tools": "0.2.2",
"graphql-docs": "0.2.0",
"graphql-errors": "^2.1.0",
"graphql-redis-subscriptions": "1.3.0",
+1 -1
View File
@@ -120,7 +120,7 @@ const config = {
},
resolve: {
alias: {
'graphql-anywhere': '@coralproject/graphql-anywhere-optimized',
'graphql-anywhere': path.resolve(__dirname, 'client/coral-framework/graphql/anywhere'),
'plugin-api': path.resolve(__dirname, 'plugin-api/'),
plugins: path.resolve(__dirname, 'plugins/'),
pluginsConfig: pluginsPath
+6 -6
View File
@@ -12,10 +12,10 @@
eslint-plugin-react "^7.3.0"
"@coralproject/graphql-anywhere-optimized@^0.1.0":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@coralproject/graphql-anywhere-optimized/-/graphql-anywhere-optimized-0.1.3.tgz#f92f3906bb04f001aef725697237786752c49bd6"
version "0.1.5"
resolved "https://registry.yarnpkg.com/@coralproject/graphql-anywhere-optimized/-/graphql-anywhere-optimized-0.1.5.tgz#67c862bf908ea717d9521ea76266b5bc9f109c65"
dependencies:
graphql-ast-tools "^0.1.6"
graphql-ast-tools "^0.2.2"
"@kadira/storybook-deployer@^1.1.0":
version "1.2.0"
@@ -3521,9 +3521,9 @@ graphql-anywhere@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-3.1.0.tgz#3ea0d8e8646b5cee68035016a9a7557c15c21e96"
graphql-ast-tools@^0.1.5, graphql-ast-tools@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/graphql-ast-tools/-/graphql-ast-tools-0.1.6.tgz#48eb656434bf4c7dba2a0d4784f1fdb988ab70ed"
graphql-ast-tools@0.2.2, graphql-ast-tools@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/graphql-ast-tools/-/graphql-ast-tools-0.2.2.tgz#2f149b427697a5d966825e1a9b4be0d7a0608bd6"
dependencies:
apollo-utilities "^1.0.3"