UNPKG

88.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.esm.js","sources":["../../dist/github/src/helpers/utils.js","../../dist/github/src/helpers/loaders.js","../../dist/github/src/helpers/config.js","../../dist/github/src/helpers/notifications.js","../../dist/github/src/helpers/logger.js","../../dist/github/src/schema-change-notifications.js","../../dist/github/src/helpers/types.js","../../dist/github/src/helpers/check-runs.js","../../dist/github/src/helpers/location.js","../../dist/github/src/helpers/diff.js","../../dist/github/src/helpers/errors.js","../../dist/github/src/schema-diff.js","../../dist/github/src/app.js"],"sourcesContent":["import { CriticalityLevel } from '@graphql-inspector/core';\nexport function bolderize(msg) {\n return quotesTransformer(msg, '**');\n}\nexport function quotesTransformer(msg, symbols = '**') {\n const findSingleQuotes = /\\'([^']+)\\'/gim;\n const findDoubleQuotes = /\\\"([^\"]+)\\\"/gim;\n function transformm(_, value) {\n return `${symbols}${value}${symbols}`;\n }\n return msg\n .replace(findSingleQuotes, transformm)\n .replace(findDoubleQuotes, transformm);\n}\nexport function slackCoderize(msg) {\n return quotesTransformer(msg, '`');\n}\nexport function discordCoderize(msg) {\n return quotesTransformer(msg, '`');\n}\nexport function filterChangesByLevel(level) {\n return (change) => change.criticality.level === level;\n}\nexport function createSummary(changes) {\n const breakingChanges = changes.filter(filterChangesByLevel(CriticalityLevel.Breaking));\n const dangerousChanges = changes.filter(filterChangesByLevel(CriticalityLevel.Dangerous));\n const safeChanges = changes.filter(filterChangesByLevel(CriticalityLevel.NonBreaking));\n const summary = [\n `# Found ${changes.length} change${changes.length > 1 ? 's' : ''}`,\n '',\n `Breaking: ${breakingChanges.length}`,\n `Dangerous: ${dangerousChanges.length}`,\n `Safe: ${safeChanges.length}`,\n ];\n function addChangesToSummary(type, changes) {\n summary.push(...['', `## ${type} changes`].concat(changes.map((change) => ` - ${bolderize(change.message)}`)));\n }\n if (breakingChanges.length) {\n addChangesToSummary('Breaking', breakingChanges);\n }\n if (dangerousChanges.length) {\n addChangesToSummary('Dangerous', dangerousChanges);\n }\n if (safeChanges.length) {\n addChangesToSummary('Safe', safeChanges);\n }\n summary.push([\n '',\n '___',\n `Thank you for using [GraphQL Inspector](https://graphql-inspector.com/)`,\n `If you like it, [consider supporting the project](https://github.com/sponsors/kamilkisiela).`,\n ].join('\\n'));\n return summary.join('\\n');\n}\nexport function isNil(val) {\n return !val && typeof val !== 'boolean';\n}\nexport function parseEndpoint(endpoint) {\n if (typeof endpoint === 'string') {\n return {\n url: endpoint,\n method: 'POST',\n };\n }\n return {\n url: endpoint.url,\n method: endpoint.method || 'POST',\n headers: endpoint.headers,\n };\n}\nexport function batch(items, limit) {\n const batches = [];\n const batchesNum = Math.ceil(items.length / limit);\n // We still want to update check-run and send empty annotations\n if (batchesNum === 0) {\n return [[]];\n }\n for (let i = 0; i < batchesNum; i++) {\n const start = i * limit;\n const end = start + limit;\n batches.push(items.slice(start, end));\n }\n return batches;\n}\nexport function objectFromEntries(iterable) {\n return [...iterable].reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {});\n}\n//# sourceMappingURL=utils.js.map","import { __awaiter } from \"tslib\";\nimport Dataloader from 'dataloader';\nimport yaml from 'js-yaml';\nimport axios from 'axios';\nimport { getIntrospectionQuery, buildClientSchema, printSchema, Source, } from 'graphql';\nimport { isNil, parseEndpoint, objectFromEntries } from './utils';\nfunction createGetFilesQuery(variableMap) {\n const variables = Object.keys(variableMap)\n .map((name) => `$${name}: String!`)\n .join(', ');\n const files = Object.keys(variableMap)\n .map((name) => {\n return `\n ${name}: object(expression: $${name}) {\n ... on Blob {\n text\n }\n }\n `;\n })\n .join('\\n');\n return /* GraphQL */ `\n query GetFile($repo: String!, $owner: String!, ${variables}) {\n repository(name: $repo, owner: $owner) {\n ${files}\n }\n }\n `.replace(/\\s+/g, ' ');\n}\nexport function createFileLoader(config) {\n const loader = new Dataloader((inputs) => __awaiter(this, void 0, void 0, function* () {\n const variablesMap = objectFromEntries(inputs.map((input) => [input.alias, `${input.ref}:${input.path}`]));\n const { context, repo, owner } = config;\n const result = yield context.github.graphql(createGetFilesQuery(variablesMap), Object.assign({ repo,\n owner }, variablesMap));\n return Promise.all(inputs.map((input) => __awaiter(this, void 0, void 0, function* () {\n const alias = input.alias;\n try {\n if (!result) {\n throw new Error(`No result :(`);\n }\n if (result.data) {\n return result.data.repository[alias].text;\n }\n return result.repository[alias].text;\n }\n catch (error) {\n const failure = new Error(`Failed to load '${input.path}' (ref: ${input.ref})`);\n if (input.throwNotFound === false) {\n if (input.onError) {\n input.onError(failure);\n }\n else {\n console.error(failure);\n }\n return null;\n }\n throw failure;\n }\n })));\n }), {\n batch: true,\n maxBatchSize: 5,\n cacheKeyFn(obj) {\n return `${obj.ref} - ${obj.path}`;\n },\n });\n return (input) => loader.load(input);\n}\nexport function createConfigLoader(config, loadFile) {\n const loader = new Dataloader((ids) => {\n const errors = [];\n const onError = (error) => {\n errors.push(error);\n };\n return Promise.all(ids.map((id) => __awaiter(this, void 0, void 0, function* () {\n const [yamlConfig, ymlConfig, pkgFile] = yield Promise.all([\n loadFile(Object.assign(Object.assign({}, config), { alias: 'yaml', path: `.github/${id}.yaml`, throwNotFound: false, onError })),\n loadFile(Object.assign(Object.assign({}, config), { alias: 'yml', path: `.github/${id}.yml`, throwNotFound: false, onError })),\n loadFile(Object.assign(Object.assign({}, config), { alias: 'pkg', path: 'package.json', throwNotFound: false, onError })),\n ]);\n if (yamlConfig || ymlConfig) {\n return yaml.safeLoad((yamlConfig || ymlConfig));\n }\n if (pkgFile) {\n try {\n const pkg = JSON.parse(pkgFile);\n if (pkg[id]) {\n return pkg[id];\n }\n }\n catch (error) {\n errors.push(error);\n }\n }\n console.error([`Failed to load config:`, ...errors].join('\\n'));\n return null;\n })));\n }, {\n batch: false,\n });\n return () => loader.load('graphql-inspector');\n}\nexport function printSchemaFromEndpoint(endpoint) {\n return __awaiter(this, void 0, void 0, function* () {\n const config = parseEndpoint(endpoint);\n const { data: response } = yield axios.request({\n method: config.method,\n url: config.url,\n headers: config.headers,\n data: {\n query: getIntrospectionQuery().replace(/\\s+/g, ' ').trim(),\n },\n });\n const introspection = response.data;\n return printSchema(buildClientSchema(introspection, {\n assumeValid: true,\n }));\n });\n}\nexport function loadSources({ config, oldPointer, newPointer, loadFile, }) {\n return __awaiter(this, void 0, void 0, function* () {\n // Here, config.endpoint is defined only if target's branch matches branch of environment\n // otherwise it's empty\n const useEndpoint = !isNil(config.endpoint);\n const [oldFile, newFile] = yield Promise.all([\n useEndpoint\n ? printSchemaFromEndpoint(config.endpoint)\n : loadFile(Object.assign(Object.assign({}, oldPointer), { alias: 'oldSource' })),\n loadFile(Object.assign(Object.assign({}, newPointer), { alias: 'newSource' })),\n ]);\n return {\n old: new Source(oldFile),\n new: new Source(newFile),\n };\n });\n}\n//# sourceMappingURL=loaders.js.map","import { isNil } from './utils';\nexport const defaultConfigName = '__default';\nexport const defaultFallbackBranch = '*';\nconst diffDefault = {\n annotations: true,\n failOnBreaking: true,\n};\nconst notificationsDefault = false;\nfunction normalizeConfig(config) {\n if (isLegacyConfig(config)) {\n console.log('config type - \"legacy\"');\n return {\n [defaultConfigName]: {\n name: defaultConfigName,\n schema: config.schema.path,\n branch: config.schema.ref,\n endpoint: config.endpoint,\n notifications: prioritize(config.notifications, notificationsDefault),\n diff: prioritize(config.diff, diffDefault),\n },\n };\n }\n if (isSingleEnvironmentConfig(config)) {\n console.log('config type - \"single\"');\n return {\n [config.branch]: {\n name: config.branch,\n schema: config.schema,\n branch: config.branch,\n endpoint: config.endpoint,\n notifications: prioritize(config.notifications, notificationsDefault),\n diff: prioritize(config.diff, diffDefault),\n },\n };\n }\n if (isMultipleEnvironmentConfig(config)) {\n console.log('config type - \"multiple\"');\n const normalized = {};\n for (const envName in config.env) {\n if (config.env.hasOwnProperty(envName)) {\n const env = config.env[envName];\n normalized[envName] = {\n name: envName,\n schema: config.schema,\n branch: env.branch,\n endpoint: env.endpoint,\n diff: prioritize(env.diff, config.diff, diffDefault),\n notifications: prioritize(env.notifications, config.notifications, notificationsDefault),\n };\n }\n }\n return normalized;\n }\n throw new Error('Invalid configuration');\n}\nfunction getGlobalConfig(config, fallbackBranch) {\n var _a;\n return {\n name: 'global',\n schema: config.schema,\n branch: fallbackBranch,\n notifications: false,\n diff: prioritize((_a = config.others) === null || _a === void 0 ? void 0 : _a.diff, config.diff, diffDefault),\n };\n}\nexport function createConfig(rawConfig, branches = [], fallbackBranch = defaultFallbackBranch) {\n const normalizedConfig = normalizeConfig(rawConfig);\n let config = null;\n if (isNormalizedLegacyConfig(normalizedConfig)) {\n config = normalizedConfig[defaultConfigName];\n if (branches.includes(config.branch) === false) {\n config.endpoint = undefined;\n }\n return config;\n }\n for (const branch of branches) {\n if (!config) {\n config = findConfigByBranch(branch, normalizedConfig, false);\n }\n if (config) {\n break;\n }\n }\n if (!config) {\n config = getGlobalConfig(rawConfig, fallbackBranch);\n }\n return config;\n}\nfunction isNormalizedLegacyConfig(config) {\n return typeof config[defaultConfigName] === 'object';\n}\nfunction isLegacyConfig(config) {\n return config.schema && typeof config.schema === 'object';\n}\nfunction isSingleEnvironmentConfig(config) {\n return !config.env;\n}\nfunction isMultipleEnvironmentConfig(config) {\n return !isLegacyConfig(config) && !isSingleEnvironmentConfig(config);\n}\nfunction findConfigByBranch(branch, config, throwOnMissing = true) {\n const branches = [];\n for (const name in config) {\n if (config.hasOwnProperty(name)) {\n const env = config[name];\n if (env.branch === branch) {\n return env;\n }\n branches.push(env.branch);\n }\n }\n if (throwOnMissing) {\n throw new Error(`Couldn't match branch \"${branch}\" with branches in config. Available branches: ${branches.join(', ')}`);\n }\n return null;\n}\n// I'm not very proud of it :)\nfunction prioritize(child, parent, defaults) {\n if (child === false) {\n return false;\n }\n if (child === true || isNil(child)) {\n if (parent === true || isNil(parent)) {\n return defaults || false;\n }\n return typeof parent === 'object' && typeof defaults === 'object'\n ? Object.assign(Object.assign({}, defaults), parent) : parent;\n }\n if (parent && typeof parent === 'object') {\n return Object.assign(Object.assign(Object.assign({}, defaults), parent), child);\n }\n return typeof child === 'object' && typeof defaults === 'object'\n ? Object.assign(Object.assign({}, defaults), child) : child;\n}\n//# sourceMappingURL=config.js.map","import { __awaiter } from \"tslib\";\nimport { CriticalityLevel } from '@graphql-inspector/core';\nimport axios from 'axios';\nimport { slackCoderize, discordCoderize, filterChangesByLevel } from './utils';\nimport { defaultConfigName } from './config';\nexport function notifyWithWebhook({ url, changes, environment, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const event = {\n environment: environment && environment !== defaultConfigName\n ? environment\n : 'default',\n changes: changes.map((change) => ({\n message: change.message,\n level: change.criticality.level,\n })),\n };\n yield axios.post(url, event, {\n headers: {\n 'content-type': 'application/json',\n },\n });\n });\n}\nexport function notifyWithSlack({ url, changes, environment, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const totalChanges = changes.length;\n const schemaName = environment ? `${environment} schema` : `schema`;\n const event = {\n username: 'GraphQL Inspector',\n icon_url: 'https://graphql-inspector/img/logo-slack.png',\n text: `:male-detective: Hi, I found *${totalChanges} ${pluralize('change', totalChanges)}* ${schemaName}:`,\n attachments: createAttachments(changes),\n };\n yield axios.post(url, event, {\n headers: {\n 'content-type': 'application/json',\n },\n });\n });\n}\nexport function notifyWithDiscord({ url, changes, environment, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const totalChanges = changes.length;\n const schemaName = environment ? `${environment} schema` : `schema`;\n const event = {\n username: 'GraphQL Inspector',\n avatar_url: 'https://graphql-inspector/img/logo-slack.png',\n content: `:detective: Hi, I found **${totalChanges} ${pluralize('change', totalChanges)}** in ${schemaName}:`,\n embeds: createDiscordEmbeds(changes),\n };\n yield axios.post(url, event, {\n headers: {\n 'content-type': 'application/json',\n },\n });\n });\n}\nfunction createAttachments(changes) {\n const breakingChanges = changes.filter(filterChangesByLevel(CriticalityLevel.Breaking));\n const dangerousChanges = changes.filter(filterChangesByLevel(CriticalityLevel.Dangerous));\n const safeChanges = changes.filter(filterChangesByLevel(CriticalityLevel.NonBreaking));\n const attachments = [];\n if (breakingChanges.length) {\n attachments.push(renderAttachments({\n color: '#E74C3B',\n title: 'Breaking changes',\n changes: breakingChanges,\n }));\n }\n if (dangerousChanges.length) {\n attachments.push(renderAttachments({\n color: '#F0C418',\n title: 'Dangerous changes',\n changes: dangerousChanges,\n }));\n }\n if (safeChanges.length) {\n attachments.push(renderAttachments({\n color: '#23B99A',\n title: 'Safe changes',\n changes: safeChanges,\n }));\n }\n return attachments;\n}\nfunction renderAttachments({ changes, title, color, }) {\n const text = changes\n .map((change) => slackCoderize(change.message))\n .join('\\n');\n return {\n mrkdwn_in: ['text', 'fallback'],\n color,\n author_name: title,\n text,\n fallback: text,\n };\n}\nfunction createDiscordEmbeds(changes) {\n const breakingChanges = changes.filter(filterChangesByLevel(CriticalityLevel.Breaking));\n const dangerousChanges = changes.filter(filterChangesByLevel(CriticalityLevel.Dangerous));\n const safeChanges = changes.filter(filterChangesByLevel(CriticalityLevel.NonBreaking));\n const embeds = [];\n if (breakingChanges.length) {\n embeds.push(renderDiscordEmbed({\n color: 15158331,\n title: 'Breaking changes',\n changes: breakingChanges,\n }));\n }\n if (dangerousChanges.length) {\n embeds.push(renderDiscordEmbed({\n color: 15778840,\n title: 'Dangerous changes',\n changes: dangerousChanges,\n }));\n }\n if (safeChanges.length) {\n embeds.push(renderDiscordEmbed({\n color: 2341274,\n title: 'Safe changes',\n changes: safeChanges,\n }));\n }\n return embeds;\n}\nfunction renderDiscordEmbed({ changes, title, color, }) {\n const description = changes\n .map((change) => discordCoderize(change.message))\n .join('\\n');\n return {\n color,\n title,\n description,\n };\n}\nfunction pluralize(word, num) {\n return word + (num > 1 ? 's' : '');\n}\n//# sourceMappingURL=notifications.js.map","export function createLogger(label, context) {\n const id = Math.random().toString(16).substr(2, 5);\n const prefix = (msg) => `${label} ${id} : ${msg}`;\n return {\n log(msg) {\n context.log(prefix(msg));\n },\n info(msg) {\n context.log.info(prefix(msg));\n },\n warn(msg) {\n context.log.warn(prefix(msg));\n },\n error(msg, error) {\n if (error) {\n console.error(error);\n }\n context.log.error(prefix(msg instanceof Error ? msg.message : msg));\n },\n };\n}\n//# sourceMappingURL=logger.js.map","import { __awaiter } from \"tslib\";\nimport { buildSchema } from 'graphql';\nimport { diff } from '@graphql-inspector/core';\nimport { loadSources } from './helpers/loaders';\nimport { createConfig, } from './helpers/config';\nimport { notifyWithSlack, notifyWithWebhook, notifyWithDiscord, } from './helpers/notifications';\nimport { createLogger } from './helpers/logger';\nexport function handleSchemaChangeNotifications({ context, ref, repo, owner, before, loadFile, loadConfig, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const id = `${owner}/${repo}#${ref}`;\n const logger = createLogger('NOTIFICATIONS', context);\n logger.info(`started - ${id}`);\n const isBranchPush = ref.startsWith('refs/heads/');\n if (!isBranchPush) {\n logger.warn(`Received Push event is not a branch push event (ref \"${ref}\")`);\n return;\n }\n const rawConfig = yield loadConfig();\n if (!rawConfig) {\n logger.error(`Missing config file`);\n return;\n }\n const branch = ref.replace('refs/heads/', '');\n const config = createConfig(rawConfig, [branch]);\n if (!config.notifications) {\n logger.info(`disabled. Skipping...`);\n return;\n }\n else {\n logger.info(`enabled`);\n }\n if (config.branch !== branch) {\n logger.info(`Received branch \"${branch}\" doesn't match expected branch \"${config.branch}\". Skipping...`);\n return;\n }\n const oldPointer = {\n path: config.schema,\n ref: before,\n };\n const newPointer = {\n path: config.schema,\n ref,\n };\n const sources = yield loadSources({ config, oldPointer, newPointer, loadFile });\n const schemas = {\n old: buildSchema(sources.old, {\n assumeValid: true,\n assumeValidSDL: true,\n }),\n new: buildSchema(sources.new, {\n assumeValid: true,\n assumeValidSDL: true,\n }),\n };\n logger.info(`built schemas`);\n const changes = diff(schemas.old, schemas.new);\n if (!changes.length) {\n logger.info(`schemas are equal. Skipping...`);\n return;\n }\n const notifications = config.notifications;\n if (hasNotificationsEnabled(notifications)) {\n function actionRunner(target, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield fn();\n }\n catch (error) {\n logger.error(`Failed to send a notification via ${target}`, error);\n }\n });\n }\n const actions = [];\n if (notifications.slack) {\n actions.push(actionRunner('slack', () => notifyWithSlack({\n url: notifications.slack,\n changes,\n environment: config.name,\n })));\n }\n if (notifications.discord) {\n actions.push(actionRunner('slack', () => notifyWithDiscord({\n url: notifications.slack,\n changes,\n environment: config.name,\n })));\n }\n if (notifications.webhook) {\n actions.push(actionRunner('webhook', () => notifyWithWebhook({\n url: notifications.webhook,\n changes,\n environment: config.name,\n })));\n }\n if (actions.length) {\n yield Promise.all(actions);\n }\n }\n });\n}\nfunction hasNotificationsEnabled(notifications) {\n return notifications && typeof notifications === 'object';\n}\n//# sourceMappingURL=schema-change-notifications.js.map","export var AnnotationLevel;\n(function (AnnotationLevel) {\n AnnotationLevel[\"Failure\"] = \"failure\";\n AnnotationLevel[\"Warning\"] = \"warning\";\n AnnotationLevel[\"Notice\"] = \"notice\";\n})(AnnotationLevel || (AnnotationLevel = {}));\nexport var CheckStatus;\n(function (CheckStatus) {\n CheckStatus[\"InProgress\"] = \"in_progress\";\n CheckStatus[\"Completed\"] = \"completed\";\n})(CheckStatus || (CheckStatus = {}));\nexport var CheckConclusion;\n(function (CheckConclusion) {\n CheckConclusion[\"Success\"] = \"success\";\n CheckConclusion[\"Neutral\"] = \"neutral\";\n CheckConclusion[\"Failure\"] = \"failure\";\n})(CheckConclusion || (CheckConclusion = {}));\n//# sourceMappingURL=types.js.map","import { __awaiter } from \"tslib\";\nimport { CheckStatus } from './types';\nimport { batch } from './utils';\nconst headers = { accept: 'application/vnd.github.antiope-preview+json' };\nexport function start({ context, owner, repo, sha, logger, }) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const result = yield context.github.request({\n headers,\n method: 'POST',\n url: `https://api.github.com/repos/${owner}/${repo}/check-runs`,\n name: 'graphql-inspector',\n started_at: new Date().toISOString(),\n head_sha: sha,\n status: CheckStatus.InProgress,\n });\n logger.info(`check started`);\n return result.data.url;\n }\n catch (error) {\n logger.error(`failed to start a check`, error);\n throw error;\n }\n });\n}\nexport function annotate({ context, url, annotations, title, summary, logger, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const batches = batch(annotations, 50);\n context.log.info(`annotations to be sent: ${annotations.length}`);\n context.log.info(`title: ${title}`);\n try {\n yield Promise.all(batches.map((chunk) => __awaiter(this, void 0, void 0, function* () {\n yield context.github.request({\n headers,\n url,\n method: 'PATCH',\n output: {\n annotations: chunk,\n title,\n summary,\n },\n });\n logger.info(`annotations sent (${chunk.length})`);\n })));\n }\n catch (error) {\n logger.error(`failed to send annotations`, error);\n throw error;\n }\n });\n}\nexport function complete({ context, url, conclusion, logger, }) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield context.github.request({\n headers,\n url,\n conclusion,\n method: 'PATCH',\n completed_at: new Date().toISOString(),\n status: CheckStatus.Completed,\n });\n logger.info(`check completed`);\n }\n catch (error) {\n logger.error(`failed to complete a check`, error);\n throw error;\n }\n });\n}\n//# sourceMappingURL=check-runs.js.map","import { getLocation, Kind, parse, } from 'graphql';\nexport function getLocationByPath({ path, source, }) {\n const [typeName, ...rest] = path.split('.');\n const isDirective = typeName.startsWith('@');\n const doc = parse(source);\n let resolvedNode = undefined;\n for (const definition of doc.definitions) {\n if (definition.kind === Kind.OBJECT_TYPE_DEFINITION &&\n definition.name.value === typeName) {\n resolvedNode = resolveObjectTypeDefinition(rest, definition);\n break;\n }\n if (isDirective &&\n definition.kind === Kind.DIRECTIVE_DEFINITION &&\n definition.name.value === typeName.substring(1)) {\n resolvedNode = resolveDirectiveDefinition(rest, definition);\n break;\n }\n if (definition.kind === Kind.ENUM_TYPE_DEFINITION &&\n definition.name.value === typeName) {\n resolvedNode = resolveEnumTypeDefinition(rest, definition);\n break;\n }\n if (definition.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION &&\n definition.name.value === typeName) {\n resolvedNode = resolveInputObjectTypeDefinition(rest, definition);\n break;\n }\n if (definition.kind === Kind.INTERFACE_TYPE_DEFINITION &&\n definition.name.value === typeName) {\n resolvedNode = resolveInterfaceTypeDefinition(rest, definition);\n break;\n }\n if (definition.kind === Kind.UNION_TYPE_DEFINITION &&\n definition.name.value === typeName) {\n resolvedNode = resolveUnionTypeDefinitionNode(rest, definition);\n break;\n }\n if (definition.kind === Kind.SCALAR_TYPE_DEFINITION &&\n definition.name.value === typeName) {\n resolvedNode = resolveScalarTypeDefinitionNode(rest, definition);\n break;\n }\n }\n return resolveNodeSourceLocation(source, resolvedNode);\n}\nfunction resolveScalarTypeDefinitionNode(_path, definition) {\n return definition;\n}\nfunction resolveUnionTypeDefinitionNode(_path, definition) {\n return definition;\n}\nfunction resolveArgument(argName, field) {\n var _a;\n const arg = (_a = field.arguments) === null || _a === void 0 ? void 0 : _a.find((a) => a.name.value === argName);\n return arg || field;\n}\nfunction resolveFieldDefinition(path, definition) {\n var _a;\n const [fieldName, argName] = path;\n const fieldIndex = (_a = definition.fields) === null || _a === void 0 ? void 0 : _a.findIndex((f) => f.name.value === fieldName);\n if (typeof fieldIndex === 'number' && fieldIndex > -1) {\n const field = definition.fields[fieldIndex];\n if (field.kind !== Kind.INPUT_VALUE_DEFINITION && argName) {\n return resolveArgument(argName, field);\n }\n return field;\n }\n return definition;\n}\nfunction resolveInterfaceTypeDefinition(path, definition) {\n const [fieldName, argName] = path;\n if (fieldName) {\n return resolveFieldDefinition([fieldName, argName], definition);\n }\n return definition;\n}\nfunction resolveInputObjectTypeDefinition(path, definition) {\n const [fieldName] = path;\n if (fieldName) {\n return resolveFieldDefinition([fieldName], definition);\n }\n return definition;\n}\nfunction resolveEnumTypeDefinition(path, definition) {\n const [valueName] = path;\n if (definition.values && valueName) {\n const value = definition.values.find((val) => val.name.value === valueName);\n if (value) {\n return value;\n }\n }\n return definition;\n}\nfunction resolveObjectTypeDefinition(path, definition) {\n const [fieldName, argName] = path;\n if (fieldName) {\n return resolveFieldDefinition([fieldName, argName], definition);\n }\n return definition;\n}\nfunction resolveDirectiveDefinition(path, defininition) {\n const [argName] = path;\n if (defininition.arguments && argName) {\n const arg = defininition.arguments.find((arg) => arg.name.value === argName);\n if (arg) {\n return arg;\n }\n }\n return defininition;\n}\nfunction resolveNodeSourceLocation(source, node) {\n if (!node || !node.loc) {\n return {\n line: 1,\n column: 1,\n };\n }\n const nodeLocation = getLocation(source, node.loc.start);\n if (node.description && node.description.loc) {\n return {\n line: getLocation(source, node.description.loc.end).line + 1,\n column: nodeLocation.column,\n };\n }\n return nodeLocation;\n}\n//# sourceMappingURL=location.js.map","import { __awaiter } from \"tslib\";\nimport { diff as diffSchemas, CriticalityLevel, } from '@graphql-inspector/core';\nimport axios from 'axios';\nimport { CheckConclusion, AnnotationLevel, } from './types';\nimport { getLocationByPath } from './location';\nimport { parseEndpoint, isNil } from './utils';\nexport function diff({ path, schemas, sources, interceptor, pullRequests, ref, }) {\n return __awaiter(this, void 0, void 0, function* () {\n let changes = diffSchemas(schemas.old, schemas.new);\n let forcedConclusion = null;\n if (!changes || !changes.length) {\n return {\n conclusion: CheckConclusion.Success,\n };\n }\n if (!isNil(interceptor)) {\n const interceptionResult = yield interceptChanges(interceptor, {\n pullRequests,\n ref,\n changes,\n });\n changes = interceptionResult.changes || [];\n forcedConclusion = interceptionResult.conclusion || null;\n }\n const annotations = yield Promise.all(changes.map((change) => annotate({ path, change, source: sources.new })));\n let conclusion = CheckConclusion.Success;\n if (changes.some((change) => change.criticality.level === CriticalityLevel.Breaking)) {\n conclusion = CheckConclusion.Failure;\n }\n if (forcedConclusion) {\n conclusion = forcedConclusion;\n }\n return {\n conclusion,\n annotations,\n changes,\n };\n });\n}\nconst levelMap = {\n [CriticalityLevel.Breaking]: AnnotationLevel.Failure,\n [CriticalityLevel.Dangerous]: AnnotationLevel.Warning,\n [CriticalityLevel.NonBreaking]: AnnotationLevel.Notice,\n};\nfunction annotate({ path, change, source, }) {\n const level = change.criticality.level;\n const loc = change.path\n ? getLocationByPath({ path: change.path, source })\n : { line: 1, column: 1 };\n return {\n title: change.message,\n annotation_level: levelMap[level],\n path,\n message: change.criticality.reason || change.message,\n start_line: loc.line,\n end_line: loc.line,\n };\n}\nfunction interceptChanges(interceptor, payload) {\n return __awaiter(this, void 0, void 0, function* () {\n const endpoint = parseEndpoint(interceptor);\n const { data } = yield axios.request({\n url: endpoint.url,\n method: endpoint.method,\n data: payload,\n });\n return data;\n });\n}\n//# sourceMappingURL=diff.js.map","export class MissingConfigError extends Error {\n constructor() {\n super([\n 'Failed to find a configuration',\n '',\n 'https://graphql-inspector.com/docs/products/github#usage',\n ].join('\\n'));\n }\n}\n//# sourceMappingURL=errors.js.map","import { __awaiter } from \"tslib\";\nimport { buildSchema } from 'graphql';\nimport { CheckConclusion } from './helpers/types';\nimport { loadSources } from './helpers/loaders';\nimport { start, complete, annotate } from './helpers/check-runs';\nimport { createConfig, defaultFallbackBranch, } from './helpers/config';\nimport { diff } from './helpers/diff';\nimport { createSummary } from './helpers/utils';\nimport { createLogger } from './helpers/logger';\nimport { MissingConfigError } from './helpers/errors';\nexport function handleSchemaDiff({ action, context, ref, pullRequestNumber, repo, owner, before, pullRequests = [], loadFile, loadConfig, }) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const id = `${owner}/${repo}#${ref}`;\n const logger = createLogger('DIFF', context);\n logger.info(`Started - ${id}`);\n logger.info(`Action: \"${action}\"`);\n const checkUrl = yield start({\n context,\n owner,\n repo,\n sha: ref,\n logger,\n });\n try {\n logger.info(`Looking for config`);\n const rawConfig = yield loadConfig();\n if (!rawConfig) {\n logger.error(`Config file missing`);\n throw new MissingConfigError();\n }\n const branches = pullRequests.map((pr) => pr.base.ref);\n const firstBranch = branches[0];\n const fallbackBranch = firstBranch || before;\n logger.info(`fallback branch from Pull Requests: ${firstBranch}`);\n logger.info(`SHA before push: ${before}`);\n // on non-environment related PRs, use a branch from first associated pull request\n const config = createConfig(rawConfig, branches, fallbackBranch);\n if (!config.diff) {\n logger.info(`disabled. Skipping...`);\n yield complete({\n url: checkUrl,\n context,\n conclusion: CheckConclusion.Success,\n logger,\n });\n return;\n }\n else {\n logger.info(`enabled`);\n }\n if (!config.branch || /^[0]+$/.test(config.branch)) {\n logger.info(`Nothing to compare with. Skipping...`);\n yield complete({\n url: checkUrl,\n context,\n conclusion: CheckConclusion.Success,\n logger,\n });\n return;\n }\n if (config.diff.experimental_merge) {\n if (!pullRequestNumber && (pullRequests === null || pullRequests === void 0 ? void 0 : pullRequests.length)) {\n pullRequestNumber = pullRequests[0].number;\n }\n if (pullRequestNumber) {\n ref = `refs/pull/${pullRequestNumber}/merge`;\n logger.info(`[EXPERIMENTAL] Using Pull Request: ${ref}`);\n }\n }\n const oldPointer = {\n path: config.schema,\n ref: config.branch,\n };\n const newPointer = {\n path: oldPointer.path,\n ref,\n };\n if (oldPointer.ref === defaultFallbackBranch) {\n logger.error('used default ref to get old schema');\n }\n if (newPointer.ref === defaultFallbackBranch) {\n logger.error('used default ref to get new schema');\n }\n const sources = yield loadSources({\n config,\n oldPointer,\n newPointer,\n loadFile,\n });\n const schemas = {\n old: buildSchema(sources.old, {\n assumeValid: true,\n assumeValidSDL: true,\n }),\n new: buildSchema(sources.new, {\n assumeValid: true,\n assumeValidSDL: true,\n }),\n };\n logger.info(`built schemas`);\n const action = yield diff({\n path: config.schema,\n schemas,\n sources,\n });\n logger.info(`schema diff result is ready`);\n let conclusion = action.conclusion;\n let annotations = action.annotations || [];\n const changes = action.changes || [];\n logger.info(`changes - ${changes.length}`);\n logger.info(`annotations - ${changes.length}`);\n const summary = createSummary(changes);\n const approveLabelName = config.diff.approveLabel || 'approved-breaking-change';\n const hasApprovedBreakingChangeLabel = pullRequestNumber\n ? (_a = pullRequests[0].labels) === null || _a === void 0 ? void 0 : _a.find((label) => label.name === approveLabelName) : false;\n // Force Success when failOnBreaking is disabled\n if (config.diff.failOnBreaking === false ||\n hasApprovedBreakingChangeLabel) {\n logger.info('FailOnBreaking disabled. Forcing SUCCESS');\n conclusion = CheckConclusion.Success;\n }\n const title = conclusion === CheckConclusion.Failure\n ? 'Something is wrong with your schema'\n : 'Everything looks good';\n if (config.diff.annotations === false) {\n logger.info(`Anotations are disabled. Skipping annotations...`);\n annotations = [];\n }\n else {\n logger.info(`Sending annotations (${annotations.length})`);\n }\n yield annotate({\n url: checkUrl,\n context,\n title,\n summary,\n annotations,\n logger,\n });\n logger.info(`Finishing check (${conclusion})`);\n yield complete({\n url: checkUrl,\n context,\n conclusion,\n logger,\n });\n logger.info(`done`);\n }\n catch (error) {\n logger.error(error);\n yield annotate({\n url: checkUrl,\n context,\n title: `Failed to complete schema check`,\n summary: `ERROR: ${error.message || error}`,\n annotations: [],\n logger,\n });\n yield complete({\n url: checkUrl,\n context,\n conclusion: CheckConclusion.Failure,\n logger,\n });\n }\n });\n}\n//# sourceMappingURL=schema-diff.js.map","import { __awaiter } from \"tslib\";\nimport { createConfigLoader, createFileLoader } from './helpers/loaders';\nimport { handleSchemaChangeNotifications } from './schema-change-notifications';\nimport { handleSchemaDiff } from './schema-diff';\nconst allowedCheckActions = ['requested', 'rerequested', 'gh-action'];\nexport default function handleProbot(app) {\n app.on('check_run', (context) => __awaiter(this, void 0, void 0, function* () {\n const ref = context.payload.check_run.head_sha;\n const { owner, repo } = context.repo();\n const action = context.payload.action;\n const pullRequests = context.payload.check_run.pull_requests;\n const before = context.payload.check_run.check_suite.before;\n if (allowedCheckActions.includes(action) === false) {\n return;\n }\n const loadFile = createFileLoader({ context, owner, repo });\n const loadConfig = createConfigLoader({ context, owner, repo, ref }, loadFile);\n yield handleSchemaDiff({\n action: 'check_run.' + action,\n context,\n ref,\n repo,\n owner,\n loadFile,\n loadConfig,\n before,\n pullRequests,\n });\n }));\n app.on('check_suite', (context) => __awaiter(this, void 0, void 0, function* () {\n const ref = context.payload.check_suite.head_sha;\n const { owner, repo } = context.repo();\n const action = context.payload.action;\n const pullRequests = context.payload.check_suite.pull_requests;\n const before = context.payload.check_suite.before;\n if (allowedCheckActions.includes(action) === false) {\n return;\n }\n const loadFile = createFileLoader({ context, owner, repo });\n const loadConfig = createConfigLoader({ context, owner, repo, ref }, loadFile);\n yield handleSchemaDiff({\n action: 'check_suite.' + action,\n context,\n ref,\n repo,\n owner,\n loadFile,\n loadConfig,\n before,\n pullRequests,\n });\n }));\n app.on('pull_request', (context) => __awaiter(this, void 0, void 0, function* () {\n const ref = context.payload.pull_request.head.ref;\n const pullRequestNumber = context.payload.pull_request.number;\n const { owner, repo } = context.repo();\n const action = context.payload.action;\n const pullRequests = [context.payload.pull_request];\n const before = context.payload.pull_request.base.ref;\n if (['opened', 'synchronize', 'edited', 'labeled', 'unlabeled'].includes(action) === false) {\n return;\n }\n const loadFile = createFileLoader({ context, owner, repo });\n const loadConfig = createConfigLoader({ context, owner, repo, ref }, loadFile);\n yield handleSchemaDiff({\n action: 'pull_request.' + action,\n context,\n ref,\n repo,\n owner,\n loadFile,\n loadConfig,\n before,\n pullRequests,\n pullRequestNumber,\n });\n }));\n app.on('push', (context) => __awaiter(this, void 0, void 0, function* () {\n const ref = context.payload.ref;\n const { owner, repo } = context.repo();\n const before = context.payload.before;\n const loadFile = createFileLoader({ context, owner, repo });\n const loadConfig = createConfigLoader({ context, owner, repo, ref }, loadFile);\n yield handleSchemaChangeNotifications({\n context,\n ref,\n before,\n repo,\n owner,\n loadFile,\n loadConfig,\n });\n }));\n}\n//# sourceMappingURL=app.js.map"],"names":["diff","diffSchemas","annotate"],"mappings":"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"}
\No newline at end of file