{"version":3,"sources":["jsdelivr-header.js","/npm/@graphql-inspector/diff-command@6.0.3/cjs/index.js"],"names":[],"mappings":"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","file":"/npm/@graphql-inspector/diff-command@6.0.3/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@graphql-inspector/diff-command@6.0.3/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handler = handler;\nconst fs_1 = require(\"fs\");\nconst commands_1 = require(\"@graphql-inspector/commands\");\nconst core_1 = require(\"@graphql-inspector/core\");\nconst logger_1 = require(\"@graphql-inspector/logger\");\nasync function handler(input) {\n    const onComplete = input.onComplete\n        ? resolveCompletionHandler(input.onComplete)\n        : failOnBreakingChanges;\n    let verboseChanges = false;\n    const rules = (await Promise.all([...(input.rules ?? [])].filter(isString).map(async (name) => {\n        if (name === 'verboseChanges') {\n            verboseChanges = true;\n            return;\n        }\n        const rule = await resolveRule(name);\n        if (!rule) {\n            throw new Error(`Rule '${name}' does not exist!\\n`);\n        }\n        return rule;\n    }))).filter((f) => !!f);\n    if (!verboseChanges) {\n        rules.push(core_1.DiffRule.simplifyChanges);\n    }\n    const changes = await (0, core_1.diff)(input.oldSchema, input.newSchema, rules, {\n        checkUsage: input.onUsage ? resolveUsageHandler(input.onUsage) : undefined,\n    });\n    if (changes.length === 0) {\n        logger_1.Logger.success('No changes detected');\n        return;\n    }\n    logger_1.Logger.log(`\\nDetected the following changes (${changes.length}) between schemas:\\n`);\n    const breakingChanges = changes.filter(change => change.criticality.level === core_1.CriticalityLevel.Breaking);\n    const dangerousChanges = changes.filter(change => change.criticality.level === core_1.CriticalityLevel.Dangerous);\n    const nonBreakingChanges = changes.filter(change => change.criticality.level === core_1.CriticalityLevel.NonBreaking);\n    if (breakingChanges.length) {\n        reportBreakingChanges(breakingChanges);\n    }\n    if (dangerousChanges.length) {\n        reportDangerousChanges(dangerousChanges);\n    }\n    if (nonBreakingChanges.length) {\n        reportNonBreakingChanges(nonBreakingChanges);\n    }\n    onComplete({ breakingChanges, dangerousChanges, nonBreakingChanges });\n}\nexports.default = (0, commands_1.createCommand)(api => {\n    const { loaders } = api;\n    return {\n        command: 'diff <oldSchema> <newSchema>',\n        describe: 'Compare two GraphQL Schemas',\n        builder(yargs) {\n            return yargs\n                .positional('oldSchema', {\n                describe: 'Point to an old schema',\n                type: 'string',\n                demandOption: true,\n            })\n                .positional('newSchema', {\n                describe: 'Point to a new schema',\n                type: 'string',\n                demandOption: true,\n            })\n                .options({\n                rule: {\n                    describe: 'Add rules',\n                    array: true,\n                },\n                onComplete: {\n                    describe: 'Handle Completion',\n                    type: 'string',\n                },\n                onUsage: {\n                    describe: 'Checks usage of schema',\n                    type: 'string',\n                },\n            });\n        },\n        async handler(args) {\n            try {\n                const oldSchemaPointer = args.oldSchema;\n                const newSchemaPointer = args.newSchema;\n                const apolloFederation = args.federation || false;\n                const apolloFederationV2 = args.federationV2 || false;\n                const aws = args.aws || false;\n                const method = args.method?.toUpperCase() || 'POST';\n                const { headers, leftHeaders, rightHeaders, token } = (0, commands_1.parseGlobalArgs)(args);\n                const oldSchemaHeaders = {\n                    ...headers,\n                    ...leftHeaders,\n                };\n                const newSchemaHeaders = {\n                    ...headers,\n                    ...rightHeaders,\n                };\n                const oldSchema = await loaders.loadSchema(oldSchemaPointer, {\n                    headers: oldSchemaHeaders,\n                    token,\n                    method,\n                }, apolloFederation, apolloFederationV2, aws);\n                const newSchema = await loaders.loadSchema(newSchemaPointer, {\n                    headers: newSchemaHeaders,\n                    token,\n                    method,\n                }, apolloFederation, apolloFederationV2, aws);\n                await handler({\n                    oldSchema,\n                    newSchema,\n                    rules: args.rule,\n                    onComplete: args.onComplete,\n                    onUsage: args.onUsage,\n                });\n            }\n            catch (error) {\n                logger_1.Logger.error(error);\n                throw error;\n            }\n        },\n    };\n});\nfunction sortChanges(changes) {\n    return changes.slice().sort((a, b) => {\n        const aPath = a.path || '';\n        const bPath = b.path || '';\n        if (aPath > bPath) {\n            return 1;\n        }\n        if (bPath > aPath) {\n            return -1;\n        }\n        return 0;\n    });\n}\nfunction reportBreakingChanges(changes) {\n    const label = logger_1.symbols.error;\n    const sorted = sortChanges(changes);\n    for (const change of sorted) {\n        logger_1.Logger.log(`${label}  ${(0, logger_1.bolderize)(change.message)}`);\n    }\n}\nfunction reportDangerousChanges(changes) {\n    const label = logger_1.symbols.warning;\n    const sorted = sortChanges(changes);\n    for (const change of sorted) {\n        logger_1.Logger.log(`${label}  ${(0, logger_1.bolderize)(change.message)}`);\n    }\n}\nfunction reportNonBreakingChanges(changes) {\n    const label = logger_1.symbols.success;\n    const sorted = sortChanges(changes);\n    for (const change of sorted) {\n        logger_1.Logger.log(`${label}  ${(0, logger_1.bolderize)(change.message)}`);\n    }\n}\nasync function resolveRule(name) {\n    const filepath = (0, commands_1.ensureAbsolute)(name);\n    if ((0, fs_1.existsSync)(filepath)) {\n        return (await Promise.resolve(`${filepath}`).then(s => __importStar(require(s)))).default;\n    }\n    return core_1.DiffRule[name];\n}\nfunction resolveCompletionHandler(name) {\n    const filepath = (0, commands_1.ensureAbsolute)(name);\n    try {\n        require.resolve(filepath);\n    }\n    catch (error) {\n        throw new Error(`CompletionHandler '${name}' does not exist!`);\n    }\n    const mod = require(filepath);\n    return mod?.default || mod;\n}\nfunction resolveUsageHandler(name) {\n    const filepath = (0, commands_1.ensureAbsolute)(name);\n    try {\n        require.resolve(filepath);\n    }\n    catch (error) {\n        throw new Error(`UsageHandler '${name}' does not exist!`);\n    }\n    const mod = require(filepath);\n    return mod?.default || mod;\n}\nfunction failOnBreakingChanges({ breakingChanges }) {\n    const breakingCount = breakingChanges.length;\n    if (breakingCount) {\n        logger_1.Logger.error(`Detected ${breakingCount} breaking change${breakingCount > 1 ? 's' : ''}`);\n        process.exit(1);\n    }\n    else {\n        logger_1.Logger.success('No breaking changes detected');\n    }\n}\nfunction isString(val) {\n    return typeof val === 'string';\n}\n"]}