Как ts-graphql-plugin автоматически заполняется внутри литералов шаблона? - PullRequest
0 голосов
/ 03 марта 2020

Как ts-graphql-plugin автодополнить содержимое GraphQL внутри литералов шаблона?

Это плагин службы языка TS, включающий преобразователь, который может преобразовывать теги шаблона в литералы объектов, представляющие GraphQL. Узлы AST.

Я могу представить себе что-то вроде этого: - для каждого файла TS создайте скомпилированную версию в памяти. В скомпилированной версии литералы шаблона GraphQL заменены на литералы объекта. - когда есть запрос информации в позиции внутри литерала шаблона graphql, выясните, какой строке скомпилированного файла соответствует эта позиция, повторите запрос к скомпилированному файлу, а затем переведите позиции символов обратно.

В псевдокоде:

function getQuickInfoAtPosition(file, pos) {
     if (pos is in a gql template literal) {
          return getQuickInfoAtPosition(transpiledFile, pos);
     }
     ...
}

function getSemanticDiagnostics(file) {
    const diagnostics = getSemanticDiagnositcs(transpiledFile);
    return diagnostics.map(adaptPositions);
}

Я просмотрел исходный код, и это не похоже на то, что делает ts-graphql-plugin. В чем прикол?

...