UNPKG

@graphql-eslint/eslint-plugin

Version:
156 lines (155 loc) • 4.97 kB
import "./chunk-BMTV3EA2.js"; import chalk from "chalk"; import { Kind } from "graphql"; import lowerCase from "lodash.lowercase"; function requireSiblingsOperations(ruleId, context) { const { siblingOperations } = context.parserServices; if (!siblingOperations.available) { throw new Error( `Rule \`${ruleId}\` requires \`parserOptions.operations\` to be set and loaded. See https://bit.ly/graphql-eslint-operations for more info` ); } return siblingOperations; } function requireGraphQLSchemaFromContext(ruleId, context) { const { schema } = context.parserServices; if (!schema) { throw new Error( `Rule \`${ruleId}\` requires \`parserOptions.schema\` to be set and loaded. See https://bit.ly/graphql-eslint-schema for more info` ); } return schema; } const logger = { error: (...args) => ( // eslint-disable-next-line no-console console.error(chalk.red("error"), "[graphql-eslint]", chalk(...args)) ), warn: (...args) => ( // eslint-disable-next-line no-console console.warn(chalk.yellow("warning"), "[graphql-eslint]", chalk(...args)) ) }; const normalizePath = (path) => (path || "").replace(/\\/g, "/"); const VIRTUAL_DOCUMENT_REGEX = /\/\d+_document.graphql$/; const CWD = process.cwd(); const getTypeName = (node) => "type" in node ? getTypeName(node.type) : "name" in node && node.name ? node.name.value : ""; const TYPES_KINDS = [ Kind.OBJECT_TYPE_DEFINITION, Kind.INTERFACE_TYPE_DEFINITION, Kind.ENUM_TYPE_DEFINITION, Kind.SCALAR_TYPE_DEFINITION, Kind.INPUT_OBJECT_TYPE_DEFINITION, Kind.UNION_TYPE_DEFINITION ]; const pascalCase = (str) => lowerCase(str).split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(""); const camelCase = (str) => { const result = pascalCase(str); return result.charAt(0).toLowerCase() + result.slice(1); }; const convertCase = (style, str) => { switch (style) { case "camelCase": return camelCase(str); case "PascalCase": return pascalCase(str); case "snake_case": return lowerCase(str).replace(/ /g, "_"); case "UPPER_CASE": return lowerCase(str).replace(/ /g, "_").toUpperCase(); case "kebab-case": return lowerCase(str).replace(/ /g, "-"); } }; function getLocation(start, fieldName = "") { const { line, column } = start; return { start: { line, column }, end: { line, column: column + fieldName.length } }; } const REPORT_ON_FIRST_CHARACTER = { column: 0, line: 1 }; const ARRAY_DEFAULT_OPTIONS = { type: "array", uniqueItems: true, minItems: 1, items: { type: "string" } }; const englishJoinWords = (words) => new Intl.ListFormat("en-US", { type: "disjunction" }).format(words); function truthy(value) { return !!value; } const DisplayNodeNameMap = { [Kind.OBJECT_TYPE_DEFINITION]: "type", [Kind.OBJECT_TYPE_EXTENSION]: "type", [Kind.INTERFACE_TYPE_DEFINITION]: "interface", [Kind.INTERFACE_TYPE_EXTENSION]: "interface", [Kind.ENUM_TYPE_DEFINITION]: "enum", [Kind.ENUM_TYPE_EXTENSION]: "enum", [Kind.SCALAR_TYPE_DEFINITION]: "scalar", [Kind.INPUT_OBJECT_TYPE_DEFINITION]: "input", [Kind.INPUT_OBJECT_TYPE_EXTENSION]: "input", [Kind.UNION_TYPE_DEFINITION]: "union", [Kind.UNION_TYPE_EXTENSION]: "union", [Kind.DIRECTIVE_DEFINITION]: "directive", [Kind.FIELD_DEFINITION]: "field", [Kind.ENUM_VALUE_DEFINITION]: "enum value", [Kind.INPUT_VALUE_DEFINITION]: "input value", [Kind.ARGUMENT]: "argument", [Kind.VARIABLE]: "variable", [Kind.FRAGMENT_DEFINITION]: "fragment", [Kind.OPERATION_DEFINITION]: "operation", [Kind.FIELD]: "field" }; function displayNodeName(node) { var _a, _b; return `${node.kind === Kind.OPERATION_DEFINITION ? node.operation : DisplayNodeNameMap[node.kind]} "${"alias" in node && ((_a = node.alias) == null ? void 0 : _a.value) || "name" in node && ((_b = node.name) == null ? void 0 : _b.value)}"`; } function getNodeName(node) { switch (node.kind) { case Kind.OBJECT_TYPE_DEFINITION: case Kind.OBJECT_TYPE_EXTENSION: case Kind.INTERFACE_TYPE_DEFINITION: case Kind.ENUM_TYPE_DEFINITION: case Kind.SCALAR_TYPE_DEFINITION: case Kind.INPUT_OBJECT_TYPE_DEFINITION: case Kind.UNION_TYPE_DEFINITION: case Kind.DIRECTIVE_DEFINITION: return displayNodeName(node); case Kind.FIELD_DEFINITION: case Kind.INPUT_VALUE_DEFINITION: case Kind.ENUM_VALUE_DEFINITION: return `${displayNodeName(node)} in ${displayNodeName(node.parent)}`; case Kind.OPERATION_DEFINITION: return node.name ? displayNodeName(node) : node.operation; } return ""; } export { ARRAY_DEFAULT_OPTIONS, CWD, REPORT_ON_FIRST_CHARACTER, TYPES_KINDS, VIRTUAL_DOCUMENT_REGEX, camelCase, convertCase, displayNodeName, englishJoinWords, getLocation, getNodeName, getTypeName, logger, normalizePath, pascalCase, requireGraphQLSchemaFromContext, requireSiblingsOperations, truthy };