@graphql-eslint/eslint-plugin
Version:
GraphQL plugin for ESLint
106 lines (105 loc) • 3.54 kB
JavaScript
;
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: !0 });
}, __copyProps = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function")
for (let key of __getOwnPropNames(from))
!__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: !0 }), 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"), import_valueFromASTUntyped = require("graphql/utilities/valueFromASTUntyped.js");
const valueFromNode = (...args) => (0, import_valueFromASTUntyped.valueFromASTUntyped)(...args);
function getBaseType(type) {
return (0, import_graphql.isNonNullType)(type) || (0, import_graphql.isListType)(type) ? getBaseType(type.ofType) : type;
}
function convertToken(token, type) {
const { line, column, end, start, value } = token;
return {
type,
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 extractTokens(filePath, code) {
const source = new import_graphql.Source(code, filePath), lexer = new import_graphql.Lexer(source), tokens = [];
let token = lexer.advance();
for (; 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;
for (; token; ) {
if (token.kind === import_graphql.TokenKind.COMMENT) {
const comment = convertToken(
token,
// `eslint-disable` directive works only with `Block` type comment
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, 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
};
return loc.start.column === loc.end.column && (loc.end.column += end - start), loc;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
convertLocation,
convertToken,
extractComments,
extractTokens,
getBaseType,
valueFromNode
});