import * as fs from 'fs';
import * as path from 'path';

import { graphql, buildSchema } from 'graphql';

import * as remark from 'remark';
import * as frontMatter from 'remark-frontmatter';
import { MDAST } from 'mdast';
import * as removePosInfo from 'unist-util-remove-position';

import * as MQ from './mqDefs';

const docFilePath = path.resolve('..', '..', 'docs', 'core', 'about.component.md');
const docSrc = fs.readFileSync(docFilePath, 'utf8');

let tree: MDAST.Root = remark()
    .use(frontMatter, ['yaml'])
    .parse(docSrc);

tree = removePosInfo(tree);

const schema = buildSchema(MQ.schema);

const root = {
    document: () => new MQ.Root(tree)
};

const query = `
    {
        document {
          metadata(key: "Status")
          heading {
            link {
              text {
                value
              }
            }
          }
          paragraph {
            plaintext
          }
        }
    }
`;

graphql(schema, query, root).then((response) => {
  console.log(JSON.stringify(response));
});