Skip to content

Commit 1f35f9f

Browse files
committed
Remove transpilation to fix GraphiQL
Use reify instead of Babel+Webpack. Now GraphiQL works fine. The problem was probably due to a Buffer shim being added to the package by webpack.
1 parent c9fea1d commit 1f35f9f

File tree

12 files changed

+211
-613
lines changed

12 files changed

+211
-613
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ node_modules
33
.nvmrc
44
.nyc_output
55
.coverage-cache
6+
.reify-cache
67
coverage
78
yarn-error.log

Makefile

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
YARN ?= $(shell which yarn)
22
PKG ?= $(if $(YARN),$(YARN),$(shell which npm))
33

4-
.PHONY: build help
4+
.PHONY: help
55

66
help:
77
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
88

99
install: package.json ## Install dependencies
1010
@$(PKG) install
1111

12-
clean: ## Clean up the lib folder for building
13-
@rm -rf lib
14-
15-
build: clean ## Compile ES6 files to JS
16-
./node_modules/.bin/webpack
17-
1812
watch: ## continuously compile ES6 files to JS
1913
NODE_ENV=development ./node_modules/.bin/rollup -c --watch
2014

bin/json-graphql-server.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/usr/bin/env node
22

3-
var path = require('path');
4-
var express = require('express');
5-
var JsonGraphqlServer = require('../lib/');
3+
const path = require('path');
4+
const express = require('express');
5+
const JsonGraphqlServer = require('../src/');
66

77
// fixme the build fails without those
88
global.window = false;

package.json

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "json-graphql-server",
3-
"version": "0.7.0",
4-
"main": "lib/index",
3+
"version": "1.0.0",
4+
"main": "src/index",
55
"repository": "git@github.com:marmelab/json-graphql-server.git",
66
"authors": [
77
"François Zaninotto",
@@ -14,13 +14,9 @@
1414
],
1515
"license": "MIT",
1616
"scripts": {
17-
"build": "make build",
18-
"clean": "make clean",
1917
"format": "make format",
2018
"precommit": "lint-staged",
21-
"prepublish": "make build",
2219
"test": "make test",
23-
"watch": "make watch",
2420
"watch-test": "make watch-test"
2521
},
2622
"lint-staged": {
@@ -35,9 +31,9 @@
3531
"babel-core": "~6.25.0",
3632
"babel-eslint": "~7.2.3",
3733
"babel-jest": "~20.0.3",
38-
"babel-loader": "^7.1.1",
3934
"babel-plugin-add-module-exports": "^0.2.1",
4035
"babel-plugin-external-helpers": "~6.22.0",
36+
"babel-plugin-transform-runtime": "~6.23.0",
4137
"babel-preset-es2015": "~6.24.1",
4238
"babel-preset-stage-0": "~6.24.1",
4339
"eslint": "~4.2.0",
@@ -57,21 +53,20 @@
5753
"rollup-plugin-node-globals": "~1.1.0",
5854
"rollup-plugin-node-resolve": "~3.0.0",
5955
"rollup-watch": "~4.0.0",
60-
"supertest": "^3.0.0",
61-
"webpack": "~3.2.0"
56+
"supertest": "~3.0.0"
6257
},
6358
"dependencies": {
6459
"apollo-client": "~1.2.0",
6560
"apollo-test-utils": "~0.3.2",
66-
"babel-plugin-transform-runtime": "~6.23.0",
6761
"express": "~4.15.3",
6862
"express-graphql": "~0.6.7",
6963
"graphql": "~0.10.5",
7064
"graphql-tag": "~2.0.0",
7165
"graphql-tools": "~1.1.0",
7266
"graphql-type-json": "~0.1.4",
7367
"inflection": "~1.12.0",
74-
"lodash.merge": "~4.6.0"
68+
"lodash.merge": "~4.6.0",
69+
"reify": "~0.12.0"
7570
},
7671
"bin": {
7772
"json-graphql-server": "bin/json-graphql-server.js"

src/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
//export { default as createApolloClient } from './createApolloClient';
2-
//export { default as graphQLClientServer } from './graphQLClientServer';
3-
export { default as jsonGraphqlExpress } from './jsonGraphqlExpress';
2+
require('reify');
3+
4+
//const graphQLClientServer = require('./graphQLClientServer').default;
5+
const jsonGraphqlExpress = require('./jsonGraphqlExpress').default;
6+
7+
module.exports = {
8+
//graphQLClientServer,
9+
jsonGraphqlExpress,
10+
};

src/introspection/getFilterTypesFromData.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,18 @@ const getRangeFiltersFromEntities = entities => {
8989
*/
9090
export default data =>
9191
Object.keys(data).reduce(
92-
(types, key) => ({
93-
...types,
94-
[getTypeFromKey(key)]: new GraphQLInputObjectType({
95-
name: `${getTypeFromKey(key)}Filter`,
96-
fields: {
97-
q: { type: GraphQLString },
98-
...getFieldsFromEntities(data[key], false),
99-
...getRangeFiltersFromEntities(data[key]),
100-
},
92+
(types, key) =>
93+
Object.assign({}, types, {
94+
[getTypeFromKey(key)]: new GraphQLInputObjectType({
95+
name: `${getTypeFromKey(key)}Filter`,
96+
fields: Object.assign(
97+
{
98+
q: { type: GraphQLString },
99+
},
100+
getFieldsFromEntities(data[key], false),
101+
getRangeFiltersFromEntities(data[key]),
102+
),
103+
}),
101104
}),
102-
}),
103105
{},
104106
);

src/introspection/getSchemaFromData.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,13 @@ export default data => {
130130
const nullableTypeFields = Object.keys(
131131
typeFields,
132132
).reduce((f, fieldName) => {
133-
f[fieldName] = {
134-
...typeFields[fieldName],
133+
f[fieldName] = Object.assign({}, typeFields[fieldName], {
135134
type:
136135
fieldName !== 'id' &&
137136
typeFields[fieldName].type instanceof GraphQLNonNull
138137
? typeFields[fieldName].type.ofType
139138
: typeFields[fieldName].type,
140-
};
139+
});
141140
return f;
142141
}, {});
143142
fields[`create${type.name}`] = {

src/resolver/Entity/index.js

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,32 +54,29 @@ import { isRelationshipField } from '../../relationships';
5454
export default (entityName, data) => {
5555
const entityFields = Object.keys(getFieldsFromEntities(data[entityName]));
5656
const manyToOneResolvers = entityFields.filter(isRelationshipField).reduce(
57-
(resolvers, fieldName) => ({
58-
...resolvers,
59-
[getRelatedType(fieldName)]: entity =>
60-
data[getRelatedKey(fieldName)].find(
61-
relatedRecord => relatedRecord.id == entity[fieldName],
62-
),
63-
}),
57+
(resolvers, fieldName) =>
58+
Object.assign({}, resolvers, {
59+
[getRelatedType(fieldName)]: entity =>
60+
data[getRelatedKey(fieldName)].find(
61+
relatedRecord => relatedRecord.id == entity[fieldName],
62+
),
63+
}),
6464
{},
6565
);
6666
const relatedField = getReverseRelatedField(entityName); // 'posts' => 'post_id'
6767
const hasReverseRelationship = entityName =>
6868
getFieldsFromEntities(data[entityName]).hasOwnProperty(relatedField);
6969
const entities = Object.keys(data);
7070
const oneToManyResolvers = entities.filter(hasReverseRelationship).reduce(
71-
(resolvers, entityName) => ({
72-
...resolvers,
73-
[getRelationshipFromKey(entityName)]: entity =>
74-
data[entityName].filter(
75-
record => record[relatedField] == entity.id,
76-
),
77-
}),
71+
(resolvers, entityName) =>
72+
Object.assign({}, resolvers, {
73+
[getRelationshipFromKey(entityName)]: entity =>
74+
data[entityName].filter(
75+
record => record[relatedField] == entity.id,
76+
),
77+
}),
7878
{},
7979
);
8080

81-
return {
82-
...manyToOneResolvers,
83-
...oneToManyResolvers,
84-
};
81+
return Object.assign({}, manyToOneResolvers, oneToManyResolvers);
8582
};

src/resolver/Mutation/create.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
export default (entityData = []) => (_, entity) => {
22
const newId =
33
entityData.length > 0 ? entityData[entityData.length - 1].id + 1 : 0;
4-
const newEntity = {
5-
id: newId,
6-
...entity,
7-
};
4+
const newEntity = Object.assign({ id: newId }, entity);
85

96
entityData.push(newEntity);
107
return newEntity;

src/resolver/Mutation/update.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
export default (entityData = []) => (_, { id, ...updates }) => {
2-
const parsedId = parseInt(id, 10); // FIXME fails for non-integer ids
1+
export default (entityData = []) => (_, params) => {
2+
const parsedId = parseInt(params.id, 10); // FIXME fails for non-integer ids
33
const indexOfEntity = entityData.findIndex(e => e.id === parsedId);
44
if (indexOfEntity !== -1) {
5-
entityData[indexOfEntity] = {
6-
...entityData[indexOfEntity],
7-
...updates,
8-
};
5+
entityData[indexOfEntity] = Object.assign(
6+
{},
7+
entityData[indexOfEntity],
8+
params,
9+
);
910
return entityData[indexOfEntity];
1011
}
1112
};

0 commit comments

Comments
 (0)