// @flow strict

import flatMap from '../polyfills/flatMap';

import type { DocumentNode } from '../language/ast';

/**
 * Provided a collection of ASTs, presumably each from different files,
 * concatenate the ASTs together into batched AST, useful for validating many
 * GraphQL source files which together represent one conceptual application.
 */
export function concatAST(asts: $ReadOnlyArray<DocumentNode>): DocumentNode {
  return {
    kind: 'Document',
    definitions: flatMap(asts, (ast) => ast.definitions),
  };
}
