UNPKG

6.55 kBSource Map (JSON)View Raw
1{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":";;AAAA,wCAA0C;AAC1C,+BAA0B;AAC1B,sCAAyC;AACzC,gDAMiC;AAEjC,SAAgB,SAAS,CAAC,KAAuB;;IAC/C,IAAM,OAAO;QACX,GAAC,uBAAgB,CAAC,SAAS,IAAG,UAAU,CAAC,OAAO;QAChD,GAAC,uBAAgB,CAAC,QAAQ,IAAG,UAAU,CAAC,KAAK;QAC7C,GAAC,uBAAgB,CAAC,WAAW,IAAG,UAAU,CAAC,OAAO;WACnD,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AARD,8BAQC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC;AAFD,oCAEC;AAED,SAAgB,SAAS,CAAC,GAAW;IACnC,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;IAC1C,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;IAE1C,OAAO,GAAG;SACP,OAAO,CAAC,gBAAgB,EAAE,UAAC,CAAS,EAAE,KAAa,IAAK,OAAA,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC;SAC1E,OAAO,CAAC,gBAAgB,EAAE,UAAC,CAAS,EAAE,KAAa,IAAK,OAAA,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CAAC;AAChF,CAAC;AAPD,8BAOC;AAED,SAAgB,qBAAqB,CAAC,UAA2B;IAC/D,IAAM,MAAM,GAAG,UAAU,CAAC,MAAM;SAC7B,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,QAAM,SAAS,CAAC,CAAC,CAAC,OAAO,CAAG,EAA5B,CAA4B,CAAC;SACtC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,eAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACxB,QAAM,UAAU,CAAC,MAAM,CAAC,IAAI,UAAO;QACnC,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AAXD,sDAWC;AAED,SAAgB,+BAA+B,CAC7C,UAA2B,EAC3B,UAAkB;IAAlB,2BAAA,EAAA,kBAAkB;IAElB,IAAM,UAAU,GAAG,UAAU,CAAC,UAAU;SACrC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,QAAM,SAAS,CAAC,CAAC,CAAC,OAAO,CAAG,EAA5B,CAA4B,CAAC;SACtC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,UAAU,CAAC,CAAC,CAAC,eAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QAClE,QAAM,UAAU,CAAC,MAAM,CAAC,IAAI,UAAO;QACnC,UAAU;QACV,MAAM;KACP,CAAC;AACJ,CAAC;AAdD,0EAcC;AASD;IAAA;IAgDA,CAAC;IA/CC,8BAAI,GAAJ;QAAK,cAAiB;aAAjB,UAAiB,EAAjB,qBAAiB,EAAjB,IAAiB;YAAjB,yBAAiB;;QACpB,OAAO,CAAC,GAAG,OAAX,OAAO,EAAQ,IAAI,EAAE;IACvB,CAAC;IAED,kCAAQ,GAAR,UAAS,QAAwB;QAC/B,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAEtD,KAAK,IAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;YACrC,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAC3C,IAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAE9C,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,oBAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAC5C,eAAK,CAAC,IAAI,CAAC,KAAG,QAAU,CAAC,EACzB,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAChB,CAAC;gBAEF,KAAK,IAAM,SAAS,IAAI,YAAY,CAAC,QAAQ,EAAE;oBAC7C,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;wBACnD,IAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAEvD,IAAI,aAAa,CAAC,IAAI,EAAE;4BACtB,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EACpB,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAK,aAAa,CAAC,IAAM,CAAC,CAC7C,CAAC;yBACH;6BAAM;4BACL,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EACrC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CACzB,CAAC;yBACH;qBACF;iBACF;gBAED,IAAI,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC9B;SACF;IACH,CAAC;IAED,iCAAO,GAAP;QAAQ,cAAiB;aAAjB,UAAiB,EAAjB,qBAAiB,EAAjB,IAAiB;YAAjB,yBAAiB;;QACvB,OAAO,CAAC,GAAG,CAAC,OAAK,eAAK,CAAC,WAAW,CAAC,SAAS,CAAC,SAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAG,CAAC,CAAC;IACrE,CAAC;IAED,+BAAK,GAAL;QAAM,cAAiB;aAAjB,UAAiB,EAAjB,qBAAiB,EAAjB,IAAiB;YAAjB,yBAAiB;;QACrB,OAAO,CAAC,GAAG,CAAC,OAAK,eAAK,CAAC,SAAS,CAAC,OAAO,CAAC,SAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAG,CAAC,CAAC;IACjE,CAAC;IACH,sBAAC;AAAD,CAAC,AAhDD,IAgDC;AAhDY,0CAAe","sourcesContent":["import * as logSymbols from 'log-symbols';\nimport chalk from 'chalk';\nimport indent = require('indent-string');\nimport {\n Change,\n CriticalityLevel,\n InvalidDocument,\n SchemaCoverage,\n getTypePrefix,\n} from '@graphql-inspector/core';\n\nexport function getSymbol(level: CriticalityLevel): string {\n const symbols = {\n [CriticalityLevel.Dangerous]: logSymbols.warning,\n [CriticalityLevel.Breaking]: logSymbols.error,\n [CriticalityLevel.NonBreaking]: logSymbols.success,\n };\n\n return symbols[level];\n}\n\nexport function renderChange(change: Change): string[] {\n return [getSymbol(change.criticality.level), bolderize(change.message)];\n}\n\nexport function bolderize(msg: string): string {\n const findSingleQuotes = /\\'([^']+)\\'/gim;\n const findDoubleQuotes = /\\\"([^\"]+)\\\"/gim;\n\n return msg\n .replace(findSingleQuotes, (_: string, value: string) => chalk.bold(value))\n .replace(findDoubleQuotes, (_: string, value: string) => chalk.bold(value));\n}\n\nexport function renderInvalidDocument(invalidDoc: InvalidDocument): string[] {\n const errors = invalidDoc.errors\n .map(e => ` - ${bolderize(e.message)}`)\n .join('\\n');\n\n return [\n chalk.redBright('error'),\n `in ${invalidDoc.source.name}:\\n\\n`,\n errors,\n '\\n\\n',\n ];\n}\n\nexport function renderDeprecatedUsageInDocument(\n invalidDoc: InvalidDocument,\n isCritical = false,\n): string[] {\n const deprecated = invalidDoc.deprecated\n .map(e => ` - ${bolderize(e.message)}`)\n .join('\\n');\n\n return [\n isCritical ? chalk.redBright('error') : chalk.yellowBright('warn'),\n `in ${invalidDoc.source.name}:\\n\\n`,\n deprecated,\n '\\n\\n',\n ];\n}\n\nexport interface Renderer {\n emit(...msgs: string[]): void;\n success(...msgs: string[]): void;\n error(...msgs: string[]): void;\n coverage(coverage: SchemaCoverage): void;\n}\n\nexport class ConsoleRenderer implements Renderer {\n emit(...msgs: string[]) {\n console.log(...msgs);\n }\n\n coverage(coverage: SchemaCoverage) {\n this.success('Schema coverage based on documents:\\n');\n\n for (const typeName in coverage.types) {\n if (coverage.types.hasOwnProperty(typeName)) {\n const typeCoverage = coverage.types[typeName];\n\n this.emit(\n chalk.grey(getTypePrefix(typeCoverage.type)),\n chalk.bold(`${typeName}`),\n chalk.grey('{'),\n );\n\n for (const childName in typeCoverage.children) {\n if (typeCoverage.children.hasOwnProperty(childName)) {\n const childCoverage = typeCoverage.children[childName];\n\n if (childCoverage.hits) {\n this.emit(\n indent(childName, 2),\n chalk.italic.grey(`x ${childCoverage.hits}`),\n );\n } else {\n this.emit(\n chalk.redBright(indent(childName, 2)),\n chalk.italic.grey('x 0'),\n );\n }\n }\n }\n\n this.emit(chalk.grey('}\\n'));\n }\n }\n }\n\n success(...msgs: string[]) {\n console.log(`\\n${chalk.greenBright('success')} ${msgs.join(' ')}`);\n }\n\n error(...msgs: string[]) {\n console.log(`\\n${chalk.redBright('error')} ${msgs.join(' ')}`);\n }\n}\n"]}
\No newline at end of file