import { valueToEstree } from 'estree-util-value-to-estree';
import { parse as parseToml } from 'toml';
import { define } from 'unist-util-mdx-define';
import { parse as parseYaml } from 'yaml';
/**
 * A remark plugin to expose frontmatter data as named exports.
 *
 * @param options
 *   Optional options to configure the output.
 * @returns
 *   A unified transformer.
 */
const remarkMdxFrontmatter = ({ name = 'frontmatter', parsers, ...options } = {}) => {
    const allParsers = {
        yaml: parseYaml,
        toml: parseToml,
        ...parsers
    };
    return (ast, file) => {
        let data = options.default;
        const node = ast.children.find((child) => Object.hasOwn(allParsers, child.type));
        if (node) {
            const parser = allParsers[node.type];
            const { value } = node;
            data = parser(value);
        }
        define(ast, file, { [name]: valueToEstree(data, { preserveReferences: true }) }, options);
    };
};
export default remarkMdxFrontmatter;
//# sourceMappingURL=remark-mdx-frontmatter.js.map