import { Plugin } from 'unified';
import { visit } from 'unist-util-visit';

export const remarkPlugin: Plugin = function() {
  return (tree) => {
    visit(tree, (node) => {
      if (node.type === 'table' || node.type === 'tableCell' || node.type === 'tableRow') {

        // omit position to fix the key regardless of its position
        // see:
        //   https://github.com/remarkjs/react-markdown/issues/703
        //   https://github.com/remarkjs/react-markdown/issues/466
        //
        //   https://github.com/remarkjs/react-markdown/blob/a80dfdee2703d84ac2120d28b0e4998a5b417c85/lib/ast-to-react.js#L201-L204
        //   https://github.com/remarkjs/react-markdown/blob/a80dfdee2703d84ac2120d28b0e4998a5b417c85/lib/ast-to-react.js#L217-L222
        delete node.position;
      }
    });
  };
};
