I have the following code:
const { query1 } = require('query1')
const { query2 } = require('query2')
const { query3 } = require('query3')
const schema = new GraphQLSchema({
  query: new GraphQLObjectType({
    name: "Query",
    fields: {
      query1,
      query2,
      query3
    }
  })
});
const permissions = shield(
  {
    Query: {
      query1: user,
      query2: user,
      query3: admin
    }
  }
)
(much longer in the reality)
And I'm looking for a way to make it clearer, like:
const { query1 } = require('query1')
const { query2 } = require('query2')
const { query3 } = require('query3')
const declaration = {
     query1: user,
     query2: user,
     query3: admin
}
const schema = new GraphQLSchema({
 query: new GraphQLObjectType({
   name: "Query",
   fields: someMagic(declaration)
 })
});
const permissions = shield(
 {
   Query: declaration
 }
)
But here declaration keys are the strings "query1", "query2" and "query3". Not the objects.
With a WeakMap we could have something like:
const declaration = new WeakMap();
declaration.set(query1, user);
declaration.set(query2, user);
declaration.set(query3, admin);
But I find it much less elegant. Is there another way ?
 
     
     
     
    