{"version":3,"file":"util.format-block.cjs","sources":["../../../../src/rules/limit-single-line-comments/util.format-block.ts"],"sourcesContent":["import type { TSESTree } from \"@typescript-eslint/utils\";\n\nimport type { Context } from \"../../typings.context.js\";\nimport { isAnotherWrapPointComing } from \"../../utils/is-another-wrap-point-coming.js\";\nimport { isPunctuation } from \"../../utils/is-punctuation.js\";\nimport { isURL } from \"../../utils/is-url.js\";\n\nimport { SINGLE_LINE_COMMENT_BOILERPLATE_SIZE } from \"./const.boilerplate-size.js\";\n\nexport function formatBlock(\n  block: TSESTree.LineComment,\n  context: Context,\n): string {\n  const lineStartSize =\n    context.whitespace.size + SINGLE_LINE_COMMENT_BOILERPLATE_SIZE;\n  const words = block.value.trim().split(\" \");\n  const newValue = words.reduce(\n    (acc, curr, index) => {\n      const currentWordIsURL = isURL(curr);\n      const lengthIfAdded = acc.currentLineLength + curr.length + 1;\n\n      // We can safely split to a new line in case we are reaching and\n      // overflowing line AND if there is at least one word on the current line.\n      const splitToNewline =\n        lengthIfAdded >= context.maxLength &&\n        acc.currentLineLength !== lineStartSize &&\n        (!context.ignoreUrls || !currentWordIsURL);\n\n      const previousWord = words[index - 1];\n\n      const splitEarly =\n        context.logicalWrap &&\n        acc.currentLineLength >= context.maxLength / 2 &&\n        previousWord &&\n        isPunctuation(previousWord.at(-1)) &&\n        previousWord.length > 1 &&\n        !isAnotherWrapPointComing(\n          acc.currentLineLength,\n          context.maxLength,\n          words.slice(index),\n        );\n\n      if (splitToNewline || splitEarly) {\n        return {\n          value: `${acc.value}\\n${context.whitespace.string}// ${curr}`,\n          currentLineLength: lineStartSize + curr.length,\n        };\n      } else {\n        return {\n          value: `${acc.value} ${curr}`,\n          currentLineLength: lengthIfAdded,\n        };\n      }\n    },\n    { value: \"//\", currentLineLength: lineStartSize },\n  );\n  return newValue.value;\n}\n"],"names":["SINGLE_LINE_COMMENT_BOILERPLATE_SIZE","isURL","isPunctuation","isAnotherWrapPointComing"],"mappings":";;;;;;;AASgB,SAAA,WAAA,CACd,OACA,OACQ,EAAA;AACR,EAAM,MAAA,aAAA,GACJ,OAAQ,CAAA,UAAA,CAAW,IAAO,GAAAA,0DAAA,CAAA;AAC5B,EAAA,MAAM,QAAQ,KAAM,CAAA,KAAA,CAAM,IAAK,EAAA,CAAE,MAAM,GAAG,CAAA,CAAA;AAC1C,EAAA,MAAM,WAAW,KAAM,CAAA,MAAA;AAAA,IACrB,CAAC,GAAK,EAAA,IAAA,EAAM,KAAU,KAAA;AACpB,MAAM,MAAA,gBAAA,GAAmBC,YAAM,IAAI,CAAA,CAAA;AACnC,MAAA,MAAM,aAAgB,GAAA,GAAA,CAAI,iBAAoB,GAAA,IAAA,CAAK,MAAS,GAAA,CAAA,CAAA;AAI5D,MAAM,MAAA,cAAA,GACJ,aAAiB,IAAA,OAAA,CAAQ,SACzB,IAAA,GAAA,CAAI,sBAAsB,aACzB,KAAA,CAAC,OAAQ,CAAA,UAAA,IAAc,CAAC,gBAAA,CAAA,CAAA;AAE3B,MAAM,MAAA,YAAA,GAAe,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AAEpC,MAAA,MAAM,aACJ,OAAQ,CAAA,WAAA,IACR,IAAI,iBAAqB,IAAA,OAAA,CAAQ,YAAY,CAC7C,IAAA,YAAA,IACAC,2BAAc,CAAA,YAAA,CAAa,GAAG,CAAE,CAAA,CAAC,KACjC,YAAa,CAAA,MAAA,GAAS,KACtB,CAACC,iDAAA;AAAA,QACC,GAAI,CAAA,iBAAA;AAAA,QACJ,OAAQ,CAAA,SAAA;AAAA,QACR,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,OACnB,CAAA;AAEF,MAAA,IAAI,kBAAkB,UAAY,EAAA;AAChC,QAAO,OAAA;AAAA,UACL,KAAA,EAAO,CAAG,EAAA,GAAA,CAAI,KAAK,CAAA;AAAA,EAAK,OAAQ,CAAA,UAAA,CAAW,MAAM,CAAA,GAAA,EAAM,IAAI,CAAA,CAAA;AAAA,UAC3D,iBAAA,EAAmB,gBAAgB,IAAK,CAAA,MAAA;AAAA,SAC1C,CAAA;AAAA,OACK,MAAA;AACL,QAAO,OAAA;AAAA,UACL,KAAO,EAAA,CAAA,EAAG,GAAI,CAAA,KAAK,IAAI,IAAI,CAAA,CAAA;AAAA,UAC3B,iBAAmB,EAAA,aAAA;AAAA,SACrB,CAAA;AAAA,OACF;AAAA,KACF;AAAA,IACA,EAAE,KAAA,EAAO,IAAM,EAAA,iBAAA,EAAmB,aAAc,EAAA;AAAA,GAClD,CAAA;AACA,EAAA,OAAO,QAAS,CAAA,KAAA,CAAA;AAClB;;;;"}