UNPKG

@graphql-eslint/eslint-plugin

Version:
136 lines (135 loc) 4.34 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var utils_exports = {}; __export(utils_exports, { convertLocation: () => convertLocation, convertToken: () => convertToken, extractComments: () => extractComments, extractTokens: () => extractTokens, getBaseType: () => getBaseType, valueFromNode: () => valueFromNode }); module.exports = __toCommonJS(utils_exports); var import_graphql = require("graphql"); var import_valueFromASTUntyped = require("graphql/utilities/valueFromASTUntyped.js"); const valueFromNode = (...args) => { return (0, import_valueFromASTUntyped.valueFromASTUntyped)(...args); }; function getBaseType(type) { if ((0, import_graphql.isNonNullType)(type) || (0, import_graphql.isListType)(type)) { return getBaseType(type.ofType); } return type; } function convertToken(token, type) { const { line, column, end, start, value } = token; return { type, // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TODO: remove `!` when drop support of graphql@15 value, /* * ESLint has 0-based column number * https://eslint.org/docs/developer-guide/working-with-rules#contextreport */ loc: { start: { line, column: column - 1 }, end: { line, column: column - 1 + (end - start) } }, range: [start, end] }; } function getLexer(source) { const gqlLanguage = require("graphql/language"); if (gqlLanguage == null ? void 0 : gqlLanguage.createLexer) { return gqlLanguage.createLexer(source, {}); } const { Lexer: LexerCls } = require("graphql"); if (LexerCls && typeof LexerCls === "function") { return new LexerCls(source); } throw new Error("Unsupported GraphQL version! Please make sure to use GraphQL v14 or newer!"); } function extractTokens(filePath, code) { const source = new import_graphql.Source(code, filePath); const lexer = getLexer(source); const tokens = []; let token = lexer.advance(); while (token && token.kind !== import_graphql.TokenKind.EOF) { const result = convertToken(token, token.kind); tokens.push(result); token = lexer.advance(); } return tokens; } function extractComments(loc) { if (!loc) { return []; } const comments = []; let token = loc.startToken; while (token) { if (token.kind === import_graphql.TokenKind.COMMENT) { const comment = convertToken( token, // `eslint-disable` directive works only with `Block` type comment // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TODO: remove `!` when drop support of graphql@15 token.value.trimStart().startsWith("eslint") ? "Block" : "Line" ); comments.push(comment); } token = token.next; } return comments; } function convertLocation(location) { const { startToken, endToken, source, start, end } = location; const loc = { start: { /* * Kind.Document has startToken: { line: 0, column: 0 }, we set line as 1 and column as 0 */ line: startToken.line === 0 ? 1 : startToken.line, column: startToken.column === 0 ? 0 : startToken.column - 1 }, end: { line: endToken.line, column: endToken.column - 1 }, source: source.body }; if (loc.start.column === loc.end.column) { loc.end.column += end - start; } return loc; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { convertLocation, convertToken, extractComments, extractTokens, getBaseType, valueFromNode });