UNPKG

@graphql-tools/graphql

Version:
32 lines (31 loc) 1.31 kB
var _a; import { devAssert } from '../jsutils/devAssert.js'; const isSourceSymbol = Symbol.for('Source'); /** * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are * optional, but they are useful for clients who store GraphQL documents in source files. * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might * be useful for `name` to be `"Foo.graphql"` and location to be `{ line: 40, column: 1 }`. * The `line` and `column` properties in `locationOffset` are 1-indexed. */ export class Source { constructor(body, name = 'GraphQL request', locationOffset = { line: 1, column: 1 }) { this[_a] = true; this.body = body; this.name = name; this.locationOffset = locationOffset; devAssert(this.locationOffset.line > 0, 'line in locationOffset is 1-indexed and must be positive.'); devAssert(this.locationOffset.column > 0, 'column in locationOffset is 1-indexed and must be positive.'); } get [(_a = isSourceSymbol, Symbol.toStringTag)]() { return 'Source'; } } /** * Test if the given value is a Source object. * * @internal */ export function isSource(source) { return typeof source === 'object' && source != null && isSourceSymbol in source; }