From a6300a2201cc41e0bd15df1065615ebe1abc8670 Mon Sep 17 00:00:00 2001 From: Yaacov Rydzinski Date: Tue, 21 Apr 2020 01:16:48 -0400 Subject: [PATCH] Graphql tools v5 (#6611) * Add test case for order option when extending the schema * Remove fit * upgrade to graphql-tools v5 revert #6515 Co-authored-by: Antonio Davi Macedo Coelho de Castro --- spec/ParseGraphQLServer.spec.js | 351 +++++++++++++---------- src/GraphQL/helpers/objectsQueries.js | 20 +- src/GraphQL/loaders/parseClassQueries.js | 11 +- src/GraphQL/loaders/parseClassTypes.js | 36 +-- 4 files changed, 232 insertions(+), 186 deletions(-) diff --git a/spec/ParseGraphQLServer.spec.js b/spec/ParseGraphQLServer.spec.js index 483b7bf7..1e5ecf4c 100644 --- a/spec/ParseGraphQLServer.spec.js +++ b/spec/ParseGraphQLServer.spec.js @@ -170,7 +170,7 @@ describe('ParseGraphQLServer', () => { new ParseGraphQLServer(parseServer, { graphQLPath: 'somepath', }).applyGraphQL({ - use: path => { + use: (path) => { useCount++; expect(path).toEqual('somepath'); }, @@ -208,7 +208,7 @@ describe('ParseGraphQLServer', () => { graphQLPath: 'graphQL', playgroundPath: 'somepath', }).applyPlayground({ - get: path => { + get: (path) => { useCount++; expect(path).toEqual('somepath'); }, @@ -436,7 +436,9 @@ describe('ParseGraphQLServer', () => { parseGraphQLServer.applyGraphQL(expressApp); parseGraphQLServer.applyPlayground(expressApp); parseGraphQLServer.createSubscriptions(httpServer); - await new Promise(resolve => httpServer.listen({ port: 13377 }, resolve)); + await new Promise((resolve) => + httpServer.listen({ port: 13377 }, resolve) + ); const subscriptionClient = new SubscriptionClient( 'ws://localhost:13377/subscriptions', @@ -504,7 +506,7 @@ describe('ParseGraphQLServer', () => { let checked = false; const apolloClient = new ApolloClient({ link: new ApolloLink((operation, forward) => { - return forward(operation).map(response => { + return forward(operation).map((response) => { const context = operation.getContext(); const { response: { headers }, @@ -539,7 +541,7 @@ describe('ParseGraphQLServer', () => { it('should handle Parse headers', async () => { let checked = false; const originalGetGraphQLOptions = parseGraphQLServer._getGraphQLOptions; - parseGraphQLServer._getGraphQLOptions = async req => { + parseGraphQLServer._getGraphQLOptions = async (req) => { expect(req.info).toBeDefined(); expect(req.config).toBeDefined(); expect(req.auth).toBeDefined(); @@ -641,7 +643,7 @@ describe('ParseGraphQLServer', () => { }) ).data['__type']; expect(fileType.kind).toEqual('OBJECT'); - expect(fileType.fields.map(field => field.name).sort()).toEqual([ + expect(fileType.fields.map((field) => field.name).sort()).toEqual([ 'name', 'url', ]); @@ -663,7 +665,7 @@ describe('ParseGraphQLServer', () => { }) ).data['__type']; expect(classType.kind).toEqual('INTERFACE'); - expect(classType.fields.map(field => field.name).sort()).toEqual([ + expect(classType.fields.map((field) => field.name).sort()).toEqual([ 'ACL', 'createdAt', 'objectId', @@ -688,7 +690,7 @@ describe('ParseGraphQLServer', () => { ).data['__type']; expect(readPreferenceType.kind).toEqual('ENUM'); expect( - readPreferenceType.enumValues.map(value => value.name).sort() + readPreferenceType.enumValues.map((value) => value.name).sort() ).toEqual([ 'NEAREST', 'PRIMARY', @@ -729,7 +731,7 @@ describe('ParseGraphQLServer', () => { } `, }) - ).data['__schema'].types.map(type => type.name); + ).data['__schema'].types.map((type) => type.name); const expectedTypes = [ 'ParseObject', @@ -739,7 +741,7 @@ describe('ParseGraphQLServer', () => { 'Upload', ]; expect( - expectedTypes.every(type => schemaTypes.indexOf(type) !== -1) + expectedTypes.every((type) => schemaTypes.indexOf(type) !== -1) ).toBeTruthy(JSON.stringify(schemaTypes.types)); }); }); @@ -766,7 +768,7 @@ describe('ParseGraphQLServer', () => { } `, }) - ).data['__schema'].types.map(type => type.name); + ).data['__schema'].types.map((type) => type.name); expect(schemaTypes).toContain('Node'); }); @@ -784,7 +786,7 @@ describe('ParseGraphQLServer', () => { } `, }) - ).data['__type'].fields.map(field => field.name); + ).data['__type'].fields.map((field) => field.name); expect(queryFields).toContain('node'); }); @@ -802,7 +804,7 @@ describe('ParseGraphQLServer', () => { } `, }) - ).data['__type'].fields.map(field => field.name); + ).data['__type'].fields.map((field) => field.name); expect(userFields).toContain('id'); expect(userFields).toContain('objectId'); @@ -822,7 +824,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createFileInputFields).toEqual(['clientMutationId', 'upload']); @@ -842,7 +844,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createFilePayloadFields).toEqual([ @@ -867,7 +869,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(callFunctionInputFields).toEqual([ @@ -893,7 +895,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(callFunctionPayloadFields).toEqual([ @@ -916,7 +918,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(inputFields).toEqual(['clientMutationId', 'fields']); @@ -936,7 +938,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(payloadFields).toEqual(['clientMutationId', 'viewer']); @@ -956,7 +958,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(inputFields).toEqual([ @@ -980,7 +982,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(payloadFields).toEqual(['clientMutationId', 'viewer']); @@ -1000,7 +1002,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(inputFields).toEqual(['clientMutationId']); @@ -1020,7 +1022,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(payloadFields).toEqual(['clientMutationId', 'viewer']); @@ -1040,7 +1042,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(inputFields).toEqual([ @@ -1064,7 +1066,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(payloadFields).toEqual(['class', 'clientMutationId']); @@ -1084,7 +1086,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(inputFields).toEqual([ @@ -1108,7 +1110,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(payloadFields).toEqual(['class', 'clientMutationId']); @@ -1128,7 +1130,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(inputFields).toEqual(['clientMutationId', 'name']); @@ -1148,7 +1150,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(payloadFields).toEqual(['class', 'clientMutationId']); @@ -1173,7 +1175,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createObjectInputFields).toEqual([ @@ -1201,7 +1203,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createObjectPayloadFields).toEqual([ @@ -1229,7 +1231,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createObjectInputFields).toEqual([ @@ -1258,7 +1260,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createObjectPayloadFields).toEqual([ @@ -1286,7 +1288,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].inputFields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createObjectInputFields).toEqual(['clientMutationId', 'id']); @@ -1311,7 +1313,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type'].fields - .map(field => field.name) + .map((field) => field.name) .sort(); expect(createObjectPayloadFields).toEqual([ @@ -1337,7 +1339,7 @@ describe('ParseGraphQLServer', () => { } `, }) - ).data['__schema'].types.map(type => type.name); + ).data['__schema'].types.map((type) => type.name); const expectedTypes = [ 'Role', @@ -1352,7 +1354,7 @@ describe('ParseGraphQLServer', () => { 'UpdateUserFieldsInput', ]; expect( - expectedTypes.every(type => schemaTypes.indexOf(type) !== -1) + expectedTypes.every((type) => schemaTypes.indexOf(type) !== -1) ).toBeTruthy(JSON.stringify(schemaTypes)); }); @@ -1371,7 +1373,7 @@ describe('ParseGraphQLServer', () => { `, }) ).data['__type']; - const possibleTypes = objectType.possibleTypes.map(o => o.name); + const possibleTypes = objectType.possibleTypes.map((o) => o.name); expect(possibleTypes).toContain('User'); expect(possibleTypes).toContain('Role'); expect(possibleTypes).toContain('Element'); @@ -1395,7 +1397,7 @@ describe('ParseGraphQLServer', () => { } `, }) - ).data['__type'].fields.map(field => field.name); + ).data['__type'].fields.map((field) => field.name); expect(userFields.indexOf('foo') !== -1).toBeTruthy(); }); @@ -1412,12 +1414,12 @@ describe('ParseGraphQLServer', () => { } `, }) - ).data['__type'].fields.map(field => field.name); + ).data['__type'].fields.map((field) => field.name); expect(userFields.includes('password')).toBeFalsy(); }); }); - describe('Configuration', function() { + describe('Configuration', function () { const resetGraphQLCache = async () => { await Promise.all([ parseGraphQLServer.parseGraphQLController.cacheController.graphQL.clear(), @@ -1894,13 +1896,13 @@ describe('ParseGraphQLServer', () => { `, }); expect( - __type.inputFields.find(o => o.name === 'price').type.kind + __type.inputFields.find((o) => o.name === 'price').type.kind ).toEqual('SCALAR'); expect( - __type.inputFields.find(o => o.name === 'engine').type.kind + __type.inputFields.find((o) => o.name === 'engine').type.kind ).toEqual('NON_NULL'); expect( - __type.inputFields.find(o => o.name === 'doors').type.kind + __type.inputFields.find((o) => o.name === 'doors').type.kind ).toEqual('NON_NULL'); const { @@ -1920,13 +1922,13 @@ describe('ParseGraphQLServer', () => { `, }); expect( - __type2.fields.find(o => o.name === 'price').type.kind + __type2.fields.find((o) => o.name === 'price').type.kind ).toEqual('SCALAR'); expect( - __type2.fields.find(o => o.name === 'engine').type.kind + __type2.fields.find((o) => o.name === 'engine').type.kind ).toEqual('NON_NULL'); expect( - __type2.fields.find(o => o.name === 'doors').type.kind + __type2.fields.find((o) => o.name === 'doors').type.kind ).toEqual('NON_NULL'); }); @@ -2785,7 +2787,7 @@ describe('ParseGraphQLServer', () => { ).toEqual(2); expect( findSecondaryObjectsResult.data.secondaryObjects.edges - .map(value => value.node.someField) + .map((value) => value.node.someField) .sort() ).toEqual(['some value 22', 'some value 44']); expect( @@ -2952,7 +2954,7 @@ describe('ParseGraphQLServer', () => { ).toEqual('some value 22'); expect( createPrimaryObjectResult.data.createPrimaryObject.primaryObject.relationField.edges - .map(value => value.node.someField) + .map((value) => value.node.someField) .sort() ).toEqual(['some value 22', 'some value 44']); expect( @@ -3191,7 +3193,7 @@ describe('ParseGraphQLServer', () => { }, }, }); - const classes = Object.keys(result.data).map(fieldName => ({ + const classes = Object.keys(result.data).map((fieldName) => ({ clientMutationId: result.data[fieldName].clientMutationId, class: { name: result.data[fieldName].class.name, @@ -3356,9 +3358,9 @@ describe('ParseGraphQLServer', () => { }, }); findResult.data.classes = findResult.data.classes - .filter(schemaClass => !schemaClass.name.startsWith('_')) + .filter((schemaClass) => !schemaClass.name.startsWith('_')) .sort((a, b) => (a.name > b.name ? 1 : -1)); - findResult.data.classes.forEach(schemaClass => { + findResult.data.classes.forEach((schemaClass) => { schemaClass.schemaFields = schemaClass.schemaFields.sort((a, b) => a.name > b.name ? 1 : -1 ); @@ -4275,10 +4277,10 @@ describe('ParseGraphQLServer', () => { expect(result.manyRelations.length).toEqual(2); const customerSubObject = result.manyRelations.find( - o => o.objectId === obj1.id + (o) => o.objectId === obj1.id ); const someClassSubObject = result.manyRelations.find( - o => o.objectId === obj2.id + (o) => o.objectId === obj2.id ); expect(customerSubObject).toBeDefined(); @@ -4287,7 +4289,7 @@ describe('ParseGraphQLServer', () => { 'imCustomerOne' ); const formatedArrayField = customerSubObject.arrayField.map( - elem => elem.value + (elem) => elem.value ); expect(formatedArrayField).toEqual(arrayField); expect(someClassSubObject.someClassField).toEqual( @@ -4417,12 +4419,13 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); async function getObject(className, id, headers) { + const alias = + className.charAt(0).toLowerCase() + className.slice(1); const specificQueryResult = await apolloClient.query({ query: gql` query GetSomeObject($id: ID!) { - get: ${className.charAt(0).toLowerCase() + - className.slice(1)}(id: $id) { - id + get: ${alias}(id: $id) { + id createdAt someField } @@ -4442,7 +4445,7 @@ describe('ParseGraphQLServer', () => { await Promise.all( objects .slice(0, 3) - .map(obj => + .map((obj) => expectAsync( getObject(obj.className, obj.id) ).toBeRejectedWith(jasmine.stringMatching('Object not found')) @@ -4453,7 +4456,7 @@ describe('ParseGraphQLServer', () => { .someField ).toEqual('someValue4'); await Promise.all( - objects.map(async obj => + objects.map(async (obj) => expect( ( await getObject(obj.className, obj.id, { @@ -4464,7 +4467,7 @@ describe('ParseGraphQLServer', () => { ) ); await Promise.all( - objects.map(async obj => + objects.map(async (obj) => expect( ( await getObject(obj.className, obj.id, { @@ -4475,7 +4478,7 @@ describe('ParseGraphQLServer', () => { ) ); await Promise.all( - objects.map(async obj => + objects.map(async (obj) => expect( ( await getObject(obj.className, obj.id, { @@ -4491,7 +4494,7 @@ describe('ParseGraphQLServer', () => { }) ).toBeRejectedWith(jasmine.stringMatching('Object not found')); await Promise.all( - [object1, object3, object4].map(async obj => + [object1, object3, object4].map(async (obj) => expect( ( await getObject(obj.className, obj.id, { @@ -4502,7 +4505,7 @@ describe('ParseGraphQLServer', () => { ) ); await Promise.all( - objects.slice(0, 3).map(obj => + objects.slice(0, 3).map((obj) => expectAsync( getObject(obj.className, obj.id, { 'X-Parse-Session-Token': user4.getSessionToken(), @@ -4518,7 +4521,7 @@ describe('ParseGraphQLServer', () => { ).data.get.someField ).toEqual('someValue4'); await Promise.all( - objects.slice(0, 2).map(obj => + objects.slice(0, 2).map((obj) => expectAsync( getObject(obj.className, obj.id, { 'X-Parse-Session-Token': user5.getSessionToken(), @@ -4643,7 +4646,7 @@ describe('ParseGraphQLServer', () => { ).toBeDefined(); }); - it('should respect protectedFields', async done => { + it('should respect protectedFields', async (done) => { await prepareData(); await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); @@ -4759,7 +4762,7 @@ describe('ParseGraphQLServer', () => { let foundUserClassReadPreference = false; databaseAdapter.database.serverConfig.cursor.calls .all() - .forEach(call => { + .forEach((call) => { if ( call.args[0].ns.collection.indexOf('GraphQLClass') >= 0 ) { @@ -4823,7 +4826,7 @@ describe('ParseGraphQLServer', () => { let foundUserClassReadPreference = false; databaseAdapter.database.serverConfig.cursor.calls .all() - .forEach(call => { + .forEach((call) => { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) { foundGraphQLClassReadPreference = true; expect(call.args[0].options.readPreference.mode).toBe( @@ -4883,7 +4886,7 @@ describe('ParseGraphQLServer', () => { let foundUserClassReadPreference = false; databaseAdapter.database.serverConfig.cursor.calls .all() - .forEach(call => { + .forEach((call) => { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) { foundGraphQLClassReadPreference = true; expect(call.args[0].options.readPreference.mode).toBe( @@ -4933,7 +4936,7 @@ describe('ParseGraphQLServer', () => { expect(result.data.customers.edges.length).toEqual(2); - result.data.customers.edges.forEach(resultObj => { + result.data.customers.edges.forEach((resultObj) => { const obj = resultObj.node.objectId === obj1.id ? obj1 : obj2; expect(resultObj.node.objectId).toEqual(obj.id); expect(resultObj.node.someField).toEqual(obj.get('someField')); @@ -4974,12 +4977,12 @@ describe('ParseGraphQLServer', () => { expect( (await findObjects('GraphQLClass')).data.find.edges.map( - object => object.node.someField + (object) => object.node.someField ) ).toEqual([]); expect( (await findObjects('PublicClass')).data.find.edges.map( - object => object.node.someField + (object) => object.node.someField ) ).toEqual(['someValue4']); expect( @@ -4988,7 +4991,7 @@ describe('ParseGraphQLServer', () => { 'X-Parse-Master-Key': 'test', }) ).data.find.edges - .map(object => object.node.someField) + .map((object) => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue2', 'someValue3']); expect( @@ -4996,7 +4999,7 @@ describe('ParseGraphQLServer', () => { await findObjects('PublicClass', { 'X-Parse-Master-Key': 'test', }) - ).data.find.edges.map(object => object.node.someField) + ).data.find.edges.map((object) => object.node.someField) ).toEqual(['someValue4']); expect( ( @@ -5004,7 +5007,7 @@ describe('ParseGraphQLServer', () => { 'X-Parse-Session-Token': user1.getSessionToken(), }) ).data.find.edges - .map(object => object.node.someField) + .map((object) => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue2', 'someValue3']); expect( @@ -5012,7 +5015,7 @@ describe('ParseGraphQLServer', () => { await findObjects('PublicClass', { 'X-Parse-Session-Token': user1.getSessionToken(), }) - ).data.find.edges.map(object => object.node.someField) + ).data.find.edges.map((object) => object.node.someField) ).toEqual(['someValue4']); expect( ( @@ -5020,7 +5023,7 @@ describe('ParseGraphQLServer', () => { 'X-Parse-Session-Token': user2.getSessionToken(), }) ).data.find.edges - .map(object => object.node.someField) + .map((object) => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue2', 'someValue3']); expect( @@ -5029,7 +5032,7 @@ describe('ParseGraphQLServer', () => { 'X-Parse-Session-Token': user3.getSessionToken(), }) ).data.find.edges - .map(object => object.node.someField) + .map((object) => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue3']); expect( @@ -5037,14 +5040,14 @@ describe('ParseGraphQLServer', () => { await findObjects('GraphQLClass', { 'X-Parse-Session-Token': user4.getSessionToken(), }) - ).data.find.edges.map(object => object.node.someField) + ).data.find.edges.map((object) => object.node.someField) ).toEqual([]); expect( ( await findObjects('GraphQLClass', { 'X-Parse-Session-Token': user5.getSessionToken(), }) - ).data.find.edges.map(object => object.node.someField) + ).data.find.edges.map((object) => object.node.someField) ).toEqual(['someValue3']); }); @@ -5097,7 +5100,7 @@ describe('ParseGraphQLServer', () => { expect( result.data.graphQLClasses.edges - .map(object => object.node.someField) + .map((object) => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue3']); }); @@ -5175,7 +5178,7 @@ describe('ParseGraphQLServer', () => { expect( result.data.graphQLClasses.edges - .map(object => object.node.someField) + .map((object) => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue2']); }); @@ -5342,7 +5345,7 @@ describe('ParseGraphQLServer', () => { }); expect( - result.data.find.edges.map(obj => obj.node.someField) + result.data.find.edges.map((obj) => obj.node.someField) ).toEqual(['someValue14', 'someValue17']); }); @@ -5413,7 +5416,7 @@ describe('ParseGraphQLServer', () => { let result = await find(); expect( - result.data.someClasses.edges.map(edge => edge.node.numberField) + result.data.someClasses.edges.map((edge) => edge.node.numberField) ).toEqual(numberArray(0, 99)); expect(result.data.someClasses.count).toEqual(100); expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual( @@ -5429,7 +5432,7 @@ describe('ParseGraphQLServer', () => { result = await find({ first: 10 }); expect( - result.data.someClasses.edges.map(edge => edge.node.numberField) + result.data.someClasses.edges.map((edge) => edge.node.numberField) ).toEqual(numberArray(0, 9)); expect(result.data.someClasses.count).toEqual(100); expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual( @@ -5448,7 +5451,7 @@ describe('ParseGraphQLServer', () => { after: result.data.someClasses.pageInfo.endCursor, }); expect( - result.data.someClasses.edges.map(edge => edge.node.numberField) + result.data.someClasses.edges.map((edge) => edge.node.numberField) ).toEqual(numberArray(10, 19)); expect(result.data.someClasses.count).toEqual(100); expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual( @@ -5464,7 +5467,7 @@ describe('ParseGraphQLServer', () => { result = await find({ last: 10 }); expect( - result.data.someClasses.edges.map(edge => edge.node.numberField) + result.data.someClasses.edges.map((edge) => edge.node.numberField) ).toEqual(numberArray(90, 99)); expect(result.data.someClasses.count).toEqual(100); expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual( @@ -5483,7 +5486,7 @@ describe('ParseGraphQLServer', () => { before: result.data.someClasses.pageInfo.startCursor, }); expect( - result.data.someClasses.edges.map(edge => edge.node.numberField) + result.data.someClasses.edges.map((edge) => edge.node.numberField) ).toEqual(numberArray(80, 89)); expect(result.data.someClasses.count).toEqual(100); expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual( @@ -5817,7 +5820,7 @@ describe('ParseGraphQLServer', () => { let foundUserClassReadPreference = false; databaseAdapter.database.serverConfig.cursor.calls .all() - .forEach(call => { + .forEach((call) => { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) { foundGraphQLClassReadPreference = true; expect(call.args[0].options.readPreference.mode).toBe( @@ -5874,7 +5877,7 @@ describe('ParseGraphQLServer', () => { let foundUserClassReadPreference = false; databaseAdapter.database.serverConfig.cursor.calls .all() - .forEach(call => { + .forEach((call) => { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) { foundGraphQLClassReadPreference = true; expect(call.args[0].options.readPreference.mode).toBe( @@ -5934,7 +5937,7 @@ describe('ParseGraphQLServer', () => { let foundUserClassReadPreference = false; databaseAdapter.database.serverConfig.cursor.calls .all() - .forEach(call => { + .forEach((call) => { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) { foundGraphQLClassReadPreference = true; expect(call.args[0].options.readPreference.mode).toBe( @@ -6005,7 +6008,7 @@ describe('ParseGraphQLServer', () => { let foundUserClassReadPreference = false; databaseAdapter.database.serverConfig.cursor.calls .all() - .forEach(call => { + .forEach((call) => { if ( call.args[0].ns.collection.indexOf('GraphQLClass') >= 0 ) { @@ -6064,7 +6067,7 @@ describe('ParseGraphQLServer', () => { } expect( - result.data.graphQLClasses.edges.map(edge => edge.node.objectId) + result.data.graphQLClasses.edges.map((edge) => edge.node.objectId) ).toEqual([object3.id, object1.id, object2.id]); }); @@ -6117,7 +6120,7 @@ describe('ParseGraphQLServer', () => { expect( result.data.parentClass.graphQLClasses.edges.map( - edge => edge.node.objectId + (edge) => edge.node.objectId ) ).toEqual([object3.id, object1.id, object2.id]); } @@ -6381,7 +6384,7 @@ describe('ParseGraphQLServer', () => { } await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( updateObject(obj.className, obj.id, { @@ -6402,7 +6405,7 @@ describe('ParseGraphQLServer', () => { await object4.fetch({ useMasterKey: true }); expect(object4.get('someField')).toEqual('changedValue1'); await Promise.all( - objects.map(async obj => { + objects.map(async (obj) => { expect( ( await updateObject( @@ -6418,7 +6421,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - objects.map(async obj => { + objects.map(async (obj) => { expect( ( await updateObject( @@ -6434,7 +6437,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - objects.map(async obj => { + objects.map(async (obj) => { expect( ( await updateObject( @@ -6450,7 +6453,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - [object1, object3, object4].map(async obj => { + [object1, object3, object4].map(async (obj) => { expect( ( await updateObject( @@ -6477,7 +6480,7 @@ describe('ParseGraphQLServer', () => { await object2.fetch({ useMasterKey: true }); expect(object2.get('someField')).toEqual(originalFieldValue); await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( updateObject( @@ -6504,7 +6507,7 @@ describe('ParseGraphQLServer', () => { await object4.fetch({ useMasterKey: true }); expect(object4.get('someField')).toEqual('changedValue6'); await Promise.all( - objects.slice(0, 2).map(async obj => { + objects.slice(0, 2).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( updateObject( @@ -6550,6 +6553,9 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); function updateObject(className, id, fields, headers) { + const mutationName = + className.charAt(0).toLowerCase() + className.slice(1); + return apolloClient.mutate({ mutation: gql` mutation UpdateSomeObject( @@ -6560,8 +6566,7 @@ describe('ParseGraphQLServer', () => { id: $id fields: $fields }) { - ${className.charAt(0).toLowerCase() + - className.slice(1)} { + ${mutationName} { updatedAt } } @@ -6578,7 +6583,7 @@ describe('ParseGraphQLServer', () => { } await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( updateObject(obj.className, obj.id, { @@ -6602,7 +6607,7 @@ describe('ParseGraphQLServer', () => { await object4.fetch({ useMasterKey: true }); expect(object4.get('someField')).toEqual('changedValue1'); await Promise.all( - objects.map(async obj => { + objects.map(async (obj) => { expect( ( await updateObject( @@ -6621,7 +6626,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - objects.map(async obj => { + objects.map(async (obj) => { expect( ( await updateObject( @@ -6640,7 +6645,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - objects.map(async obj => { + objects.map(async (obj) => { expect( ( await updateObject( @@ -6659,7 +6664,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - [object1, object3, object4].map(async obj => { + [object1, object3, object4].map(async (obj) => { expect( ( await updateObject( @@ -6689,7 +6694,7 @@ describe('ParseGraphQLServer', () => { await object2.fetch({ useMasterKey: true }); expect(object2.get('someField')).toEqual(originalFieldValue); await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( updateObject( @@ -6719,7 +6724,7 @@ describe('ParseGraphQLServer', () => { await object4.fetch({ useMasterKey: true }); expect(object4.get('someField')).toEqual('changedValue6'); await Promise.all( - objects.slice(0, 2).map(async obj => { + objects.slice(0, 2).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( updateObject( @@ -6822,14 +6827,15 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); function deleteObject(className, id, headers) { + const mutationName = + className.charAt(0).toLowerCase() + className.slice(1); return apolloClient.mutate({ mutation: gql` mutation DeleteSomeObject( $id: ID! ) { delete: delete${className}(input: { id: $id }) { - ${className.charAt(0).toLowerCase() + - className.slice(1)} { + ${mutationName} { objectId } } @@ -6845,7 +6851,7 @@ describe('ParseGraphQLServer', () => { } await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( deleteObject(obj.className, obj.id) @@ -6855,7 +6861,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( deleteObject(obj.className, obj.id, { @@ -6922,14 +6928,15 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); function deleteObject(className, id, headers) { + const mutationName = + className.charAt(0).toLowerCase() + className.slice(1); return apolloClient.mutate({ mutation: gql` mutation DeleteSomeObject( $id: ID! ) { delete${className}(input: { id: $id }) { - ${className.charAt(0).toLowerCase() + - className.slice(1)} { + ${mutationName} { objectId } } @@ -6945,7 +6952,7 @@ describe('ParseGraphQLServer', () => { } await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( deleteObject(obj.className, obj.id) @@ -6955,7 +6962,7 @@ describe('ParseGraphQLServer', () => { }) ); await Promise.all( - objects.slice(0, 3).map(async obj => { + objects.slice(0, 3).map(async (obj) => { const originalFieldValue = obj.get('someField'); await expectAsync( deleteObject(obj.className, obj.id, { @@ -7628,8 +7635,8 @@ describe('ParseGraphQLServer', () => { } }); - it('should accept different params', done => { - Parse.Cloud.define('hello', async req => { + it('should accept different params', (done) => { + Parse.Cloud.define('hello', async (req) => { expect(req.params.date instanceof Date).toBe(true); expect(req.params.date.getTime()).toBe(1463907600000); expect(req.params.dateList[0] instanceof Date).toBe(true); @@ -7765,7 +7772,7 @@ describe('ParseGraphQLServer', () => { ).data['__type']; expect(functionEnum.kind).toEqual('ENUM'); expect( - functionEnum.enumValues.map(value => value.name).sort() + functionEnum.enumValues.map((value) => value.name).sort() ).toEqual(['_underscored', 'a', 'b', 'contains1Number']); } catch (e) { handleError(e); @@ -7807,12 +7814,12 @@ describe('ParseGraphQLServer', () => { ).data['__type']; expect(functionEnum.kind).toEqual('ENUM'); expect( - functionEnum.enumValues.map(value => value.name).sort() + functionEnum.enumValues.map((value) => value.name).sort() ).toEqual(['a']); expect( parseGraphQLServer.parseGraphQLSchema.log.warn.calls .all() - .map(call => call.args[0]) + .map((call) => call.args[0]) .sort() ).toEqual([ 'Function 1NumberInTheBeggning could not be added to the auto schema because GraphQL names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/.', @@ -8708,13 +8715,13 @@ describe('ParseGraphQLServer', () => { expect(result.name).toEqual('imACountry2'); expect(result.companies.edges.length).toEqual(3); expect( - result.companies.edges.some(o => o.node.objectId === company.id) + result.companies.edges.some((o) => o.node.objectId === company.id) ).toBeTruthy(); expect( - result.companies.edges.some(o => o.node.name === 'imACompany2') + result.companies.edges.some((o) => o.node.name === 'imACompany2') ).toBeTruthy(); expect( - result.companies.edges.some(o => o.node.name === 'imACompany3') + result.companies.edges.some((o) => o.node.name === 'imACompany3') ).toBeTruthy(); } ); @@ -8799,16 +8806,16 @@ describe('ParseGraphQLServer', () => { expect(result.companies.edges.length).toEqual(2); expect( result.companies.edges.some( - c => + (c) => c.node.name === 'imACompany2' && - c.node.teams.edges.some(t => t.node.name === 'imATeam2') + c.node.teams.edges.some((t) => t.node.name === 'imATeam2') ) ).toBeTruthy(); expect( result.companies.edges.some( - c => + (c) => c.node.name === 'imACompany3' && - c.node.teams.edges.some(t => t.node.name === 'imATeam3') + c.node.teams.edges.some((t) => t.node.name === 'imATeam3') ) ).toBeTruthy(); }); @@ -8877,13 +8884,17 @@ describe('ParseGraphQLServer', () => { expect(result.objectId).toEqual(country.id); expect(result.companies.edges.length).toEqual(2); expect( - result.companies.edges.some(o => o.node.objectId === company2.id) + result.companies.edges.some( + (o) => o.node.objectId === company2.id + ) ).toBeTruthy(); expect( - result.companies.edges.some(o => o.node.name === 'imACompany3') + result.companies.edges.some((o) => o.node.name === 'imACompany3') ).toBeTruthy(); expect( - result.companies.edges.some(o => o.node.objectId === company1.id) + result.companies.edges.some( + (o) => o.node.objectId === company1.id + ) ).toBeFalsy(); } ); @@ -8955,7 +8966,7 @@ describe('ParseGraphQLServer', () => { expect(result.name).toEqual('imACountry2'); expect(result.companies.edges.length).toEqual(1); expect( - result.companies.edges.some(o => o.node.name === 'imACompany2') + result.companies.edges.some((o) => o.node.name === 'imACompany2') ).toBeTruthy(); } ); @@ -9006,10 +9017,10 @@ describe('ParseGraphQLServer', () => { expect(result1.objectId).toEqual(country.id); expect(result1.companies.edges.length).toEqual(2); expect( - result1.companies.edges.some(o => o.node.objectId === company1.id) + result1.companies.edges.some((o) => o.node.objectId === company1.id) ).toBeTruthy(); expect( - result1.companies.edges.some(o => o.node.objectId === company2.id) + result1.companies.edges.some((o) => o.node.objectId === company2.id) ).toBeTruthy(); // With where @@ -9728,12 +9739,12 @@ describe('ParseGraphQLServer', () => { const { edges } = someClasses; expect(edges.length).toEqual(2); expect( - edges.find(result => result.node.id === create1.someClass.id).node - .someField + edges.find((result) => result.node.id === create1.someClass.id) + .node.someField ).toEqual(someFieldValue); expect( - edges.find(result => result.node.id === create2.someClass.id).node - .someField + edges.find((result) => result.node.id === create2.someClass.id) + .node.someField ).toEqual(someFieldValue2); } catch (e) { handleError(e); @@ -9825,7 +9836,7 @@ describe('ParseGraphQLServer', () => { const { someField } = getResult.data.someClass; expect(Array.isArray(someField)).toBeTruthy(); - expect(someField.map(element => element.value)).toEqual( + expect(someField.map((element) => element.value)).toEqual( someFieldValue ); expect(getResult.data.someClasses.edges.length).toEqual(1); @@ -10242,7 +10253,7 @@ describe('ParseGraphQLServer', () => { [46, 47], [48, 49], [44, 45], - ].map(point => ({ + ].map((point) => ({ latitude: point[0], longitude: point[1], })); @@ -10322,7 +10333,7 @@ describe('ParseGraphQLServer', () => { 'object' ); expect(getResult.data.someClass.somePolygonField).toEqual( - somePolygonFieldValue.map(geoPoint => ({ + somePolygonFieldValue.map((geoPoint) => ({ ...geoPoint, __typename: 'GeoPoint', })) @@ -10638,7 +10649,7 @@ describe('ParseGraphQLServer', () => { `, }); parseGraphQLServer.applyGraphQL(expressApp); - await new Promise(resolve => + await new Promise((resolve) => httpServer.listen({ port: 13377 }, resolve) ); const httpLink = createUploadLink({ @@ -10692,6 +10703,52 @@ describe('ParseGraphQLServer', () => { expect(result.data.hello2).toEqual('Hello world!'); }); + + it('order option should continue working', async () => { + const schemaController = await parseServer.config.databaseController.loadSchema(); + + await schemaController.addClassIfNotExists('SuperCar', { + engine: { type: 'String' }, + doors: { type: 'Number' }, + price: { type: 'String' }, + mileage: { type: 'Number' }, + }); + + await new Parse.Object('SuperCar').save({ + engine: 'petrol', + doors: 3, + price: '£7500', + mileage: 0, + }); + + await new Parse.Object('SuperCar').save({ + engine: 'petrol', + doors: 3, + price: '£7500', + mileage: 10000, + }); + + await Promise.all([ + parseGraphQLServer.parseGraphQLController.cacheController.graphQL.clear(), + parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(), + ]); + + await expectAsync( + apolloClient.query({ + query: gql` + query FindSuperCar { + superCars(order: [mileage_ASC]) { + edges { + node { + id + } + } + } + } + `, + }) + ).toBeResolved(); + }); }); describe('SDL Based', () => { @@ -10745,7 +10802,7 @@ describe('ParseGraphQLServer', () => { fields: { nameUpperCase: { type: new GraphQLNonNull(GraphQLString), - resolve: p => p.name.toUpperCase(), + resolve: (p) => p.name.toUpperCase(), }, type: { type: TypeEnum }, language: { @@ -10765,7 +10822,7 @@ describe('ParseGraphQLServer', () => { }); parseGraphQLServer.applyGraphQL(expressApp); - await new Promise(resolve => + await new Promise((resolve) => httpServer.listen({ port: 13377 }, resolve) ); const httpLink = createUploadLink({ @@ -10872,7 +10929,7 @@ describe('ParseGraphQLServer', () => { }); parseGraphQLServer.applyGraphQL(expressApp); - await new Promise(resolve => + await new Promise((resolve) => httpServer.listen({ port: 13377 }, resolve) ); const httpLink = createUploadLink({ diff --git a/src/GraphQL/helpers/objectsQueries.js b/src/GraphQL/helpers/objectsQueries.js index e6f09223..066b3b22 100644 --- a/src/GraphQL/helpers/objectsQueries.js +++ b/src/GraphQL/helpers/objectsQueries.js @@ -7,7 +7,7 @@ import { transformQueryInputToParse } from '../transformers/query'; /* eslint-disable*/ const needToGetAllKeys = (fields, keys, parseClasses) => keys - ? keys.split(',').some(keyName => { + ? keys.split(',').some((keyName) => { const key = keyName.split('.'); if (fields[key[0]]) { if (fields[key[0]].type === 'Pointer') { @@ -30,20 +30,6 @@ const needToGetAllKeys = (fields, keys, parseClasses) => : true; /* eslint-enable*/ -const transformOrder = order => - order - .map(o => { - const direction = o.indexOf('_ASC') > 0 ? '_ASC' : '_DESC'; - let field = o.replace(direction, ''); - field = field === 'id' ? 'objectId' : field; - if (direction === '_ASC') { - return `${field}`; - } else { - return `-${field}`; - } - }) - .join(','); - const getObject = async ( className, objectId, @@ -168,7 +154,7 @@ const findObjects = async ( if ( selectedFields.find( - field => field.startsWith('edges.') || field.startsWith('pageInfo.') + (field) => field.startsWith('edges.') || field.startsWith('pageInfo.') ) ) { if (limit || limit === 0) { @@ -178,7 +164,7 @@ const findObjects = async ( } if (options.limit !== 0) { if (order) { - options.order = transformOrder(order); + options.order = order; } if (skip) { options.skip = skip; diff --git a/src/GraphQL/loaders/parseClassQueries.js b/src/GraphQL/loaders/parseClassQueries.js index 57b06d06..185be16d 100644 --- a/src/GraphQL/loaders/parseClassQueries.js +++ b/src/GraphQL/loaders/parseClassQueries.js @@ -8,7 +8,7 @@ import { ParseGraphQLClassConfig } from '../../Controllers/ParseGraphQLControlle import { transformClassNameToGraphQL } from '../transformers/className'; import { extractKeysAndInclude } from '../parseGraphQLUtils'; -const getParseClassQueryConfig = function( +const getParseClassQueryConfig = function ( parseClassConfig: ?ParseGraphQLClassConfig ) { return (parseClassConfig && parseClassConfig.query) || {}; @@ -50,7 +50,7 @@ const getQuery = async ( ); }; -const load = function( +const load = function ( parseGraphQLSchema, parseClass, parseClassConfig: ?ParseGraphQLClassConfig @@ -136,14 +136,15 @@ const load = function( const { keys, include } = extractKeysAndInclude( selectedFields - .filter(field => field.startsWith('edges.node.')) - .map(field => field.replace('edges.node.', '')) + .filter((field) => field.startsWith('edges.node.')) + .map((field) => field.replace('edges.node.', '')) ); + const parseOrder = order && order.join(','); return await objectsQueries.findObjects( className, where, - order, + parseOrder, skip, first, after, diff --git a/src/GraphQL/loaders/parseClassTypes.js b/src/GraphQL/loaders/parseClassTypes.js index 7477320f..49981a72 100644 --- a/src/GraphQL/loaders/parseClassTypes.js +++ b/src/GraphQL/loaders/parseClassTypes.js @@ -26,13 +26,13 @@ import { getParseClassMutationConfig, } from '../parseGraphQLUtils'; -const getParseClassTypeConfig = function( +const getParseClassTypeConfig = function ( parseClassConfig: ?ParseGraphQLClassConfig ) { return (parseClassConfig && parseClassConfig.type) || {}; }; -const getInputFieldsAndConstraints = function( +const getInputFieldsAndConstraints = function ( parseClass, parseClassConfig: ?ParseGraphQLClassConfig ) { @@ -51,7 +51,7 @@ const getInputFieldsAndConstraints = function( let classSortFields; // All allowed customs fields - const classCustomFields = classFields.filter(field => { + const classCustomFields = classFields.filter((field) => { return ( !Object.keys(defaultGraphQLTypes.PARSE_OBJECT_FIELDS).includes(field) && field !== 'id' @@ -59,14 +59,14 @@ const getInputFieldsAndConstraints = function( }); if (allowedInputFields && allowedInputFields.create) { - classCreateFields = classCustomFields.filter(field => { + classCreateFields = classCustomFields.filter((field) => { return allowedInputFields.create.includes(field); }); } else { classCreateFields = classCustomFields; } if (allowedInputFields && allowedInputFields.update) { - classUpdateFields = classCustomFields.filter(field => { + classUpdateFields = classCustomFields.filter((field) => { return allowedInputFields.update.includes(field); }); } else { @@ -74,7 +74,7 @@ const getInputFieldsAndConstraints = function( } if (allowedOutputFields) { - classOutputFields = classCustomFields.filter(field => { + classOutputFields = classCustomFields.filter((field) => { return allowedOutputFields.includes(field); }); } else { @@ -83,12 +83,12 @@ const getInputFieldsAndConstraints = function( // Filters the "password" field from class _User if (parseClass.className === '_User') { classOutputFields = classOutputFields.filter( - outputField => outputField !== 'password' + (outputField) => outputField !== 'password' ); } if (allowedConstraintFields) { - classConstraintFields = classCustomFields.filter(field => { + classConstraintFields = classCustomFields.filter((field) => { return allowedConstraintFields.includes(field); }); } else { @@ -107,7 +107,7 @@ const getInputFieldsAndConstraints = function( }); } } else { - classSortFields = classFields.map(field => { + classSortFields = classFields.map((field) => { return { field, asc: true, desc: true }; }); } @@ -347,11 +347,12 @@ const load = ( const updatedSortFields = { ...sortFields, }; + const value = field === 'id' ? 'objectId' : field; if (asc) { - updatedSortFields[`${field}_ASC`] = {}; + updatedSortFields[`${field}_ASC`] = { value }; } if (desc) { - updatedSortFields[`${field}_DESC`] = {}; + updatedSortFields[`${field}_DESC`] = { value: `-${value}` }; } return updatedSortFields; }, {}), @@ -382,7 +383,7 @@ const load = ( parseGraphQLSchema.relayNodeInterface, ]; const parseObjectFields = { - id: globalIdField(className, obj => obj.objectId), + id: globalIdField(className, (obj) => obj.objectId), ...defaultGraphQLTypes.PARSE_OBJECT_FIELDS, }; const outputFields = () => { @@ -430,9 +431,10 @@ const load = ( const { keys, include } = extractKeysAndInclude( selectedFields - .filter(field => field.startsWith('edges.node.')) - .map(field => field.replace('edges.node.', '')) + .filter((field) => field.startsWith('edges.node.')) + .map((field) => field.replace('edges.node.', '')) ); + const parseOrder = order && order.join(','); return objectsQueries.findObjects( source[field].className, @@ -447,7 +449,7 @@ const load = ( }, ...(where || {}), }, - order, + parseOrder, skip, first, after, @@ -481,7 +483,7 @@ const load = ( : type, async resolve(source) { if (source[field] && source[field].coordinates) { - return source[field].coordinates.map(coordinate => ({ + return source[field].coordinates.map((coordinate) => ({ latitude: coordinate[0], longitude: coordinate[1], })); @@ -501,7 +503,7 @@ const load = ( : type, async resolve(source) { if (!source[field]) return null; - return source[field].map(async elem => { + return source[field].map(async (elem) => { if ( elem.className && elem.objectId &&