{"version":3,"file":"flags.mjs","names":[],"sources":["../../../src/message/parser/flags.ts"],"sourcesContent":["import type { TwitchFlagList } from \"../flags\";\nimport { TwitchFlag } from \"../flag\";\n\nexport function parseFlags(\n  messageText: string,\n  flagsSource: string,\n): TwitchFlagList {\n  const flags: TwitchFlagList = [];\n\n  // eslint-disable-next-line regexp/no-super-linear-backtracking\n  const regex = /^(?:,?\\d+-\\d+:(?:[AIPS]\\.\\d+\\/?)*)+$/g;\n\n  const matchFlagsSource = flagsSource.match(regex);\n  if (flagsSource.length <= 0 || matchFlagsSource === null) {\n    return flags;\n  }\n\n  const messageCharacters = messageText.split(\"\");\n\n  for (const flagInstancesSource of flagsSource.split(\",\")) {\n    const [indexes, instancesSource] = flagInstancesSource.split(\":\", 2) as [\n      string,\n      string,\n    ];\n\n    let [startIndex, endIndex] = indexes.split(\"-\", 2).map(Number) as [\n      number,\n      number,\n    ];\n\n    // to make endIndex exclusive\n    endIndex = endIndex + 1;\n\n    // flags tag can have wildly out-of-bounds indexes\n    if (startIndex < 0) {\n      startIndex = 0;\n    }\n    if (endIndex > messageCharacters.length) {\n      endIndex = messageCharacters.length;\n    }\n\n    const flagText = messageCharacters.slice(startIndex, endIndex).join(\"\");\n\n    const categories: TwitchFlag[\"categories\"] = [];\n    for (const instanceSource of instancesSource.split(\"/\")) {\n      if (instanceSource.length > 0) {\n        const [category, score] = instanceSource.split(\".\");\n        categories.push({\n          category: category!,\n          score: Number(score),\n        });\n      }\n    }\n\n    flags.push(new TwitchFlag(startIndex, endIndex, flagText, categories));\n  }\n\n  // sort by start index\n  flags.sort((a, b) => a.startIndex - b.startIndex);\n\n  return flags;\n}\n"],"mappings":";;AAGA,SAAgB,WACd,aACA,aACgB;CAChB,MAAM,QAAwB,EAAE;CAKhC,MAAM,mBAAmB,YAAY,MAFvB,wCAEmC;AACjD,KAAI,YAAY,UAAU,KAAK,qBAAqB,KAClD,QAAO;CAGT,MAAM,oBAAoB,YAAY,MAAM,GAAG;AAE/C,MAAK,MAAM,uBAAuB,YAAY,MAAM,IAAI,EAAE;EACxD,MAAM,CAAC,SAAS,mBAAmB,oBAAoB,MAAM,KAAK,EAAE;EAKpE,IAAI,CAAC,YAAY,YAAY,QAAQ,MAAM,KAAK,EAAE,CAAC,IAAI,OAAO;AAM9D,aAAW,WAAW;AAGtB,MAAI,aAAa,EACf,cAAa;AAEf,MAAI,WAAW,kBAAkB,OAC/B,YAAW,kBAAkB;EAG/B,MAAM,WAAW,kBAAkB,MAAM,YAAY,SAAS,CAAC,KAAK,GAAG;EAEvE,MAAM,aAAuC,EAAE;AAC/C,OAAK,MAAM,kBAAkB,gBAAgB,MAAM,IAAI,CACrD,KAAI,eAAe,SAAS,GAAG;GAC7B,MAAM,CAAC,UAAU,SAAS,eAAe,MAAM,IAAI;AACnD,cAAW,KAAK;IACJ;IACV,OAAO,OAAO,MAAM;IACrB,CAAC;;AAIN,QAAM,KAAK,IAAI,WAAW,YAAY,UAAU,UAAU,WAAW,CAAC;;AAIxE,OAAM,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,WAAW;AAEjD,QAAO"}