Size: a a a

GraphQL — русскоговорящее сообщество

2019 October 25

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Вызываю парсинг gql и он возвращает анонимные объекты, вместо GraphQLObjectType или прочих - это норма?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Во, одно после парсинга, а другое руками
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
И это как бы вообще два разных типа почему-то
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
а, ну после парсинга AST, понял
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
спасибо, вопросов больше нет)
источник

a

artalar in GraphQL — русскоговорящее сообщество
🦆
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Ну я это не просто так затевал)
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
let query = graphql
   .buildSchema(`
       schema {
           query: A
       }
       type A @example {
           field: String!
       }
       
       directive @example on OBJECT
   `)
   .getQueryType();
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Вопрос, а где в query директивы?)
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Это типа норма, что они тупо игнорируются?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Короче, я смотрел интерфейсы типов всех и обнаружил внезапно, что директивы определены только у схемы, а в остальных местах их тупо нет. Подумал, может это я дурак такой, не может быть такого, что к типам нельзя их прифигачить...
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
По-этому завёл ноду, и решил проверить
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
ну и соответсвенно:

new GraphQLObjectType({ 
 ...,
 directives: new GraphQLDirective(...)
}));


Не работает. Занавес
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
А, ну как знал, @nodkz об этом позаботился https://github.com/graphql/graphql-js/issues/1262
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
И кажется я понимаю почему так сделано. Всё же директивы в SDL имеют вид и дефенишенов и экспрешенов. Отсюда и  требования иметь рантайм для этих самых директив во время определения
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
ну и линковку с дефенишеном соответсвенно
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Типа должно быть как-то так:
let directive = new GraphQLDirective({
   name: "Example",
   locations: ["OBJECT"],
   args: [...]
});

let object = new GraphQLObjectType({
   name: "Example",
   directives: [
       directive.execute({argument: 42})
   ]
});
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
По-этому Lee и отказался от рантайма в определениях, т.к. сейчас они выполняют роль DTO/дефенишенов онли
источник