@apollo/subgraph
Version:
Apollo Subgraph Utilities
44 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.printBlockString = exports.printType = exports.printIntrospectionSchema = exports.printSubgraphSchema = void 0;
const graphql_1 = require("graphql");
const federation_internals_1 = require("@apollo/federation-internals");
function printSubgraphSchema(schema) {
const ast = (0, federation_internals_1.graphQLJSSchemaToAST)(schema);
const subgraph = (0, federation_internals_1.buildSubgraph)(federation_internals_1.FEDERATION_UNNAMED_SUBGRAPH_NAME, '', ast, false);
return subgraph.toString();
}
exports.printSubgraphSchema = printSubgraphSchema;
function printIntrospectionSchema(schema) {
const ast = (0, federation_internals_1.graphQLJSSchemaToAST)(schema);
const subgraph = (0, federation_internals_1.buildSubgraph)(federation_internals_1.FEDERATION_UNNAMED_SUBGRAPH_NAME, '', ast, false);
return (0, federation_internals_1.printSchema)(subgraph.schema);
}
exports.printIntrospectionSchema = printIntrospectionSchema;
function printType(type) {
const { definition, extensions } = (0, federation_internals_1.graphQLJSNamedTypeToAST)(type);
const defAst = definition ? [definition] : [];
return defAst.concat(extensions).map((n) => (0, graphql_1.print)(n)).join('\n\n');
}
exports.printType = printType;
function printBlockString(value, preferMultipleLines = false) {
const isSingleLine = !value.includes('\n');
const hasLeadingSpace = value[0] === ' ' || value[0] === '\t';
const hasTrailingQuote = value[value.length - 1] === '"';
const hasTrailingSlash = value[value.length - 1] === '\\';
const printAsMultipleLines = !isSingleLine ||
hasTrailingQuote ||
hasTrailingSlash ||
preferMultipleLines;
let result = '';
if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
result += '\n';
}
result += value;
if (printAsMultipleLines) {
result += '\n';
}
return '"""' + result.replace(/"""/g, '\\"""') + '"""';
}
exports.printBlockString = printBlockString;
//# sourceMappingURL=printSubgraphSchema.js.map