text: // @ts-check
  
  "use strict";
  
  const { addErrorDetailIf } = require("../helpers");
  const { flattenedLists } = require("./cache");
  
  module.exports = {
    "names": [ "MD030", "list-marker-space" ],
    "description": "Spaces after list markers",
    "tags": [ "ol", "ul", "whitespace" ],
    "function": function MD030(params, onError) {
      const ulSingle = Number(params.config.ul_single || 1);
      const olSingle = Number(params.config.ol_single || 1);
      const ulMulti = Number(params.config.ul_multi || 1);
      const olMulti = Number(params.config.ol_multi || 1);
      flattenedLists().forEach((list) => {
        const lineCount = list.lastLineIndex - list.open.map[0];
        const allSingle = lineCount === list.items.length;
        const expectedSpaces = list.unordered ?
          (allSingle ? ulSingle : ulMulti) :
          (allSingle ? olSingle : olMulti);
        list.items.forEach((item) => {
          const { line, lineNumber } = item;
          const match = /^[\s>]*\S+(\s*)/.exec(line);
          const [ { "length": matchLength }, { "length": actualSpaces } ] = match;
          if (matchLength < line.length) {
            let fixInfo = null;
            if (expectedSpaces !== actualSpaces) {
              fixInfo = {
                "editColumn": matchLength - actualSpaces + 1,
                "deleteCount": actualSpaces,
                "insertText": "".padEnd(expectedSpaces)
              };
            }
            addErrorDetailIf(
              onError,
              lineNumber,
              expectedSpaces,
              actualSpaces,
              null,
              null,
              [ 1, matchLength ],
              fixInfo
            );
          }
        });
      });
    }
  };
  