{"version":3,"sources":["../src/utils.ts","../src/styleLibrary.ts","../src/parser/textToHTML.ts","../src/parser/JSONToHTML.ts","../src/parser/JSONToCleanedText.ts","../src/parser/textToJSON.ts","../src/parser/autoToHTML.ts","../src/parser/autoCleanToText.ts","../src/index.ts"],"sourcesContent":["/*\n * minecraft motd parser\n * (c) 2023 Kevin Zheng\n * Released under the MIT license\n */\n\nimport { motdJsonType } from \"./types\";\n\n\n\n\n// 類型檢查\nexport function isMotdJSONType(object: object): object is motdJsonType {\n  return !!object;\n};\n\n\n\n/**\n *\n * replace all html tags to &...\n */\nexport function htmlStringFormatting(text: string): string {\n  return (\n    text\n      // space\n      // .replace(/ /g, \"\\u00a0\")\n      //\n      .replace(/&/g, \"&amp;\")\n      .replace(/</g, \"&lt;\")\n      .replace(/>/g, \"&gt;\")\n      .replace(/\"/g, \"&quot;\")\n      .replace(/'/g, \"&#39;\")\n      // return\n      .replace(/\\n/g, \"<br/>\")\n  );\n  // .replace(/\\//g, '&#x2F;');\n};\n\n\n\n/**\n * clean html tags\n * \n * @param text\n * example: `<span>hello world</span>`\n * \n * result: `hello world`\n */\nexport function cleanHtmlTags(text: string): string {\n  return text.replace(/<[^>]*>?/gm, '');\n};\n\n\n\n/**\n * clean motd codes\n * \n * Clean all codes from motd source string.\n * \n * @param {string} text - motd string include tag § will remove\n */\nexport function cleanCodes(text: string) {\n  const REGEX = /(?:§)([0-9a-fA-FklmnorFKLMNOR])/g;\n  let textResult = \"\";\n\n  textResult = text.replace(REGEX, \"\");\n\n  return textResult;\n};\n","import { extraLibraryType } from \"./types\";\n\n\n\n// color code to font styles\nconst extras: extraLibraryType = {\n  \"§k\": \"obfuscated;\",\n  \"§l\": \"font-weight: bold;\",\n  \"§m\": \"text-decoration: line-through;\",\n  \"§n\": \"text-decoration: underline;\",\n  \"§o\": \"font-style: italic;\",\n  \"§r\": \"color: inherit;text-decoration: none !important;font-weight:normal!important;font-style: normal!important;\",\n};\n\n// json extra font styles\nconst extraFontStyles: extraLibraryType = {\n  bold: \"font-weight: bold;\",\n  italic: \"font-style: italic;\",\n  underlined: \"text-decoration:underline;\",\n  strikethrough: \"text-decoration: line-through;\",\n  obfuscated: \"mc_obfuscated;\",\n  reset: \"color: inherit;text-decoration: none !important;font-weight:normal!important;font-style: normal!important;\",\n};\n\n// text to json extra name\nconst textToJsonExtras: extraLibraryType = {\n  \"§k\": \"obfuscated\",\n  \"§l\": \"bold\",\n  \"§m\": \"strikethrough\",\n  \"§n\": \"underlined\",\n  \"§o\": \"italic\",\n  \"§r\": \"reset\",\n};\n\n// base color hex\nconst colorCodeToHex: extraLibraryType = {\n  \"§0\": \"#000000\",\n  \"§1\": \"#0000AA\",\n  \"§2\": \"#00AA00\",\n  \"§3\": \"#00AAAA\",\n  \"§4\": \"#AA0000\",\n  \"§5\": \"#AA00AA\",\n  \"§6\": \"#FFAA00\",\n  \"§7\": \"#AAAAAA\",\n  \"§8\": \"#555555\",\n  \"§9\": \"#5555FF\",\n  \"§a\": \"#55FF55\",\n  \"§b\": \"#55FFFF\",\n  \"§c\": \"#FF5555\",\n  \"§d\": \"#FF55FF\",\n  \"§e\": \"#FFFF55\",\n  \"§f\": \"#FFFFFF\",\n};\n\n// json extra to hex color\nconst extraColorsToHex: extraLibraryType = {\n  black: \"#000000\",\n  dark_blue: \"#0000AA\",\n  dark_green: \"#00AA00\",\n  dark_aqua: \"#00AAAA\",\n  dark_red: \"#AA0000\",\n  dark_purple: \"#AA00AA\",\n  gold: \"#FFAA00\",\n  gray: \"#AAAAAA\",\n  dark_gray: \"#555555\",\n  blue: \"#5555FF\",\n  green: \"#55FF55\",\n  aqua: \"#55FFFF\",\n  red: \"#FF5555\",\n  light_purple: \"#FF55FF\",\n  yellow: \"#FFFF55\",\n  white: \"#FFFFFF\",\n};\n\n\n\nexport {\n  extras,\n  extraFontStyles,\n  textToJsonExtras,\n  colorCodeToHex,\n  extraColorsToHex,\n};\n","import {\n  extras,\n  colorCodeToHex,\n} from '../styleLibrary';\nimport {\n  htmlStringFormatting,\n} from \"../utils\";\n\n\n\n/**\n * Convert motd text to html.\n * @param motdString\n */\nexport default function textToHTML(motdString: string) {\n  const motdText = motdString;\n\n  const colorCodeReg = /([§][0-9a-f0-9a-fA-FklmnorFKLMNOR])/g;\n  const codeREGEX = new RegExp(colorCodeReg.source);\n  const codeSplit = motdText.split(codeREGEX).filter(item => item !== '');\n\n  let fontStyle = \"\";\n  let colorHex = \"\";\n  let resultHTML = \"\";\n\n  codeSplit.forEach((item) => {\n    const motdStringToLowerCase = item.toLowerCase();\n    // console.log('motdStringToLowerCase', motdStringToLowerCase);\n\n    // 過濾 hex\n    if (Object.hasOwn(colorCodeToHex, motdStringToLowerCase)) {\n      //console.log(`偵測出 ${ colorCodeToHex[item] }`)\n      colorHex = colorCodeToHex[motdStringToLowerCase];\n\n      // §f reset\n      if(motdStringToLowerCase === \"§f\") {\n        fontStyle = \"\";\n      }\n      // 過濾文字 style\n    } else if (Object.hasOwn(extras, motdStringToLowerCase)) {\n      if(motdStringToLowerCase === \"§r\") {\n        colorHex = \"\";\n        fontStyle = \"\";\n      } else {\n        // font style code 轉換\n        // console.log(`偵測出 style ${ extras[motdStringToLowerCase] }`);\n        fontStyle += extras[motdStringToLowerCase];\n      }\n      // console.log('motdStringToLowerCase', motdStringToLowerCase);\n      // console.log('textFont: ' + fontStyle);\n      // 正常文字\n    } else {\n      let resultColor = \"\";\n      let textContent = item;\n      //console.log(fontStyle)\n\n      // 檢查 Hex color\n      if (colorHex !== \"\") {\n        resultColor = `color:${colorHex};`;\n      }\n\n      if (textContent !== \"\") {\n        //console.log('font: ' + fontStyle)\n        //console.log('color: ' + colorHex)\n        //console.log('text: ' + item)\n        //console.log('---------------------------------')\n        // replace html tags\n        textContent = htmlStringFormatting(textContent);\n\n        if (resultColor.length !== 0 || fontStyle.length !== 0) {\n          resultHTML += `<span style=\"${resultColor}${fontStyle}\">${textContent}</span>`;\n        } else {\n          resultHTML += textContent;\n        }\n      }\n    }\n  });\n\n  return resultHTML;\n}\n","import { motdJsonType } from \"../types\";\nimport {\n  extraFontStyles,\n  colorCodeToHex,\n  extraColorsToHex,\n} from '../styleLibrary';\nimport {\n  isMotdJSONType,\n} from \"../utils\";\nimport textToHTML from \"./textToHTML\";\n\n\n\n/**\n * Convert JSON to HTML.\n * \n * @param sourceJson\n */\nexport default function parseJSONToHTML(\n  sourceJson: motdJsonType,\n) {\n  let htmlElement = \"\";\n  let colorStyle = \"\";\n  let fontStyle = \"\";\n\n  // console.log('sourceJson', sourceJson);\n  // console.log('---------');\n\n  for (let key of Object.keys(sourceJson)) {\n    // console.log('sourceJson key', key);\n    key = key.toLowerCase();\n\n    // text styles\n    if (Object.hasOwn(extraFontStyles, key)) {\n      if (sourceJson[key]) {\n        fontStyle += `${extraFontStyles[key]}`;\n      }\n    }\n\n    // ---------- old text process ----------\n    // if (key === \"text\") {\n    //   if (\n    //     typeof sourceJson.text === \"string\" ||\n    //     typeof sourceJson.text === \"number\"\n    //   ) {\n    //     // convert all type to string\n    //     htmlElement += textToHTML(String(sourceJson.text));\n    //   }\n    // }\n\n    // color\n    if (key === \"color\") {\n      const colorKey = sourceJson[key];\n      let colorHex = \"\";\n\n      if (typeof colorKey === \"string\") {\n        // Hex color\n        if (Object.hasOwn(extraColorsToHex, colorKey)) {\n          colorHex = extraColorsToHex[colorKey];\n          // color code\n        } else if (Object.hasOwn(colorCodeToHex, colorKey)) {\n          colorHex = colorCodeToHex[colorKey];\n          // custom color\n        } else {\n          // custom hex color code mode\n          colorHex = colorKey;\n        }\n      }\n\n      if(colorHex !== \"\") {\n        colorStyle = `color:${colorHex};`;\n      }\n    }\n\n    // extra\n    if (key === \"extra\" && typeof sourceJson.extra === \"object\") {\n      // ---------- with extra text ----------\n      if (sourceJson.text !== undefined\n        && (typeof sourceJson.text === \"string\" || typeof sourceJson.text === \"number\")\n      ) {\n        // content to html\n        htmlElement += textToHTML(String(sourceJson.text));\n      }\n\n      // ---------- foreach extra data and parse ----------\n      for (const sourceJsonExtra of sourceJson.extra) {\n        // console.log('sourceJsonExtra', sourceJsonExtra);\n        if (typeof sourceJsonExtra === 'string') {\n            // Process string elements directly with textToHTML\n            htmlElement += textToHTML(sourceJsonExtra);\n          } else if (isMotdJSONType(sourceJsonExtra)) {\n            htmlElement += parseJSONToHTML(sourceJsonExtra);\n          }\n      }\n    }\n  }\n\n  // ---------- without extra text content ----------\n  if (sourceJson.extra === undefined && sourceJson.text !== undefined) {\n    const currentText = sourceJson.text;\n    if (\n      typeof sourceJson.text === \"string\" ||\n      typeof sourceJson.text === \"number\"\n    ) {\n      // convert all type to string\n      htmlElement += textToHTML(String(currentText));\n    }\n  }\n\n\n\n  let returnHTML = \"\";\n  if (fontStyle.length !== 0 || colorStyle.length !== 0) {\n    returnHTML = `<span style=\"${colorStyle + fontStyle}\">${htmlElement}</span>`;\n  } else {\n    returnHTML = htmlElement;\n  }\n\n  return returnHTML;\n}\n","import { motdJsonType } from \"../types\";\nimport {\n  isMotdJSONType,\n  cleanCodes\n} from \"../utils\";\n\n\n\n/**\n * Convert JSON to Cleaned Text.\n * \n * @param sourceJson\n */\nexport default function JSONToCleanedText(\n  sourceJson: motdJsonType,\n) {\n  let textString = \"\";\n\n  for (let key of Object.keys(sourceJson)) {\n    key = key.toLowerCase();\n\n    // extra\n    if (key === \"extra\" && typeof sourceJson.extra === \"object\") {\n      // ---------- with extra text ----------\n      if (sourceJson.text !== undefined\n        && (typeof sourceJson.text === \"string\" || typeof sourceJson.text === \"number\")\n      ) {\n        // content to html\n        textString += cleanCodes(String(sourceJson.text));\n      }\n\n      // ---------- foreach extra data and parse ----------\n      for (const sourceJsonExtra of sourceJson.extra) {\n        // console.log('sourceJsonExtra', sourceJsonExtra);\n        if (typeof sourceJsonExtra === 'string') {\n          // Add string elements directly to the output\n          textString += cleanCodes(sourceJsonExtra);\n        } else if (isMotdJSONType(sourceJsonExtra)) {\n          textString += JSONToCleanedText(sourceJsonExtra);\n        }\n      }\n    }\n  }\n\n  // ---------- without extra text content ----------\n  if (sourceJson.extra === undefined && sourceJson.text !== undefined) {\n    const currentText = sourceJson.text;\n    if (\n      typeof sourceJson.text === \"string\" ||\n      typeof sourceJson.text === \"number\"\n    ) {\n      // convert all type to string\n      textString += cleanCodes(String(currentText));\n    }\n  }\n\n  return textString;\n}\n","import { motdJsonType } from \"../types\";\nimport {\n  textToJsonExtras,\n  colorCodeToHex,\n} from '../styleLibrary';\n\n\n\n/**\n * Convert motd text to JSON.\n * \n * @param text\n */\nexport default function parseTextToJSON(text: string) {\n  const motdText = text;\n\n  // color code regex: /([§][0-9a-fklmnor])/g\n  // color hex regex: /^#(?:[0-9a-f]{3}){1,2}$/g\n  const colorCodeReg = /([§][0-9a-f0-9a-fA-FklmnorFKLMNOR])/g;\n  const codeREGEX = new RegExp(colorCodeReg.source);\n  const textSplit = motdText.split(codeREGEX);\n  let fontStyle = \"\";\n  let colorHex = \"\";\n\n  const resultObject: motdJsonType = {\n    text: \"\",\n    extra: [],\n  };\n\n  // console.log('textSplit', textSplit);\n  textSplit.forEach((item) => {\n    const stringToLowerCase = item.toLowerCase();\n\n    // color code 轉換成 hex\n    if (Object.hasOwn(colorCodeToHex, stringToLowerCase)) {\n      //console.log(`偵測出 ${ colorCodeToHex[item] }`)\n      colorHex = colorCodeToHex[stringToLowerCase];\n      // §f reset\n      if(stringToLowerCase === \"§f\") {\n        fontStyle = \"\";\n      }\n    } else if (Object.hasOwn(textToJsonExtras, stringToLowerCase)) {\n      if(stringToLowerCase === \"§r\") {\n        fontStyle = \"\";\n        colorHex = \"\";\n      } else {\n        // font style code 轉換\n        //console.log(`偵測出 style ${ textToJsonExtras[item] }`)\n        fontStyle = textToJsonExtras[stringToLowerCase];\n      }\n    } else {\n      const innerObject: motdJsonType = {\n        text: \"\",\n        extra: [],\n      };\n\n      // 其餘字串\n      if (fontStyle !== \"\") {\n        innerObject[fontStyle] = true;\n      }\n\n      innerObject.text = item;\n\n      if (colorHex !== \"\") {\n        innerObject.color = colorHex;\n      }\n\n      if (typeof resultObject.extra === \"object\") {\n        resultObject.extra.push(innerObject);\n      }\n    }\n  });\n\n  // code styles merge\n  let newExtra: Array<motdJsonType> = [];\n  // console.log('resultObject', resultObject);\n  if (resultObject.extra) {\n    if (resultObject.extra.length > 1) {\n      // if text is '', remove it and merge to next array\n      resultObject.extra.forEach((item, index) => {\n        // console.log('item', item);\n        if (item.text === \"\") {\n          if (\n            resultObject.extra\n            && typeof resultObject.extra[index + 1] === \"object\"\n          ) {\n            newExtra.push({\n              ...(item as motdJsonType),\n              ...resultObject.extra[index + 1],\n            });\n          }\n        } else {\n          if (\n            item.text !== (newExtra[newExtra.length - 1]\n              && newExtra[newExtra.length - 1].text)\n          ) {\n            newExtra.push(item as motdJsonType);\n          }\n        }\n      });\n    } else {\n      newExtra.push(resultObject.extra[0] as motdJsonType);\n    }\n  }\n\n  // console.log('newExtra', newExtra);\n  // remove blank content\n  newExtra = newExtra.filter((item) => item.text !== \"\");\n  // console.log('newExtra', newExtra);\n\n  return {\n    text: resultObject.text,\n    extra: newExtra,\n  };\n}\n","import { motdJsonType } from \"../types\";\nimport {\n  JSONToHTML,\n  textToHTML,\n} from \"./\";\n\n\n\n// make sure JSON data is JSON object and then convert.\nexport function JSONRender(json: object) {\n  return JSONToHTML(json as motdJsonType);\n}\n\n/**\n * auto check data type then convert to html.\n */\nexport function autoToHTML(motd: string | object): string {\n  // type check\n  if (typeof motd === \"object\") {\n    // console.log('process mode: Object mode');\n    return JSONRender(motd);\n  } else if (typeof motd === \"string\") {\n    // console.log('process mode: String mode');\n    // console.log('textToJSON(motd)', textToJSON(motd));\n    return textToHTML(motd);\n    // return jsonRender(textToJSON(motd));\n  } else {\n    return \"unknown motd data type\";\n  }\n}\n\n\n\nexport default autoToHTML;\n","import { motdJsonType } from \"../types\";\nimport {\n  JSONToCleanedText,\n} from \".\";\nimport { cleanCodes } from \"../utils\";\n\n\n\n/**\n * auto check data type then convert to html.\n */\nexport function autoCleanToText(motd: string | object): string {\n  // type check\n  if (typeof motd === \"object\") {\n    // console.log('process mode: Object mode');\n    return JSONToCleanedText(motd as motdJsonType);\n  } else if (typeof motd === \"string\") {\n    // console.log('process mode: String mode');\n    return cleanCodes(motd);\n  } else {\n    return \"unknown motd data type\";\n  }\n}\n\n\n\nexport default autoCleanToText;\n","/*\n * minecraft motd parser\n * (c) 2021 Kevin Zheng\n * Released under the MIT license\n */\nimport {\n  htmlStringFormatting,\n  cleanCodes,\n  cleanHtmlTags,\n} from \"./utils\";\nimport {\n  JSONToHTML,\n  JSONToCleanedText,\n\n  textToHTML,\n  textToJSON,\n\n  JSONRender,\n  autoToHTML,\n  autoCleanToText,\n} from \"./parser\";\n\n\n\n\n\n\nexport * from './utils';\nexport * from \"./parser\";\n\n\n\n/*\n * #### minecraft motd parser\n * * [github](https://github.com/SnowFireWolf/minecraft-motd-parser/tree/main#minecraft-server-motd-parser)\n * * [npm](https://www.npmjs.com/package/@sfirew/minecraft-motd-parser)\n *\n * (c) 2021 Kevin Zheng\n *\n * Released under the MIT license\n */\nconst motdParser = {\n  // --- normal format ---\n  // text convert to HTML\n  textToHTML,\n  // text convert to JSON\n  textToJSON,\n  // JSON convert to HTML\n  JSONToHTML,\n  // JSON string to JSON object and convert to HTML\n  JSONRender,\n  // auto check type to convert\n  autoToHTML,\n\n  // --- utils ---\n  // html string formatter\n  htmlStringFormatting,\n  // clean all motd codes\n  cleanCodes,\n  // clean all html tags\n  cleanHtmlTags,\n  // json to not html text\n  JSONToCleanedText,\n  // auto check type and convert to cleaned text\n  autoCleanToText,\n};\n\nexport default motdParser;\n"],"mappings":"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","names":["isMotdJSONType","object","htmlStringFormatting","text","cleanHtmlTags","cleanCodes","REGEX","textResult","extras","extraFontStyles","textToJsonExtras","colorCodeToHex","extraColorsToHex","textToHTML","motdString","motdText","colorCodeReg","codeREGEX","codeSplit","item","fontStyle","colorHex","resultHTML","motdStringToLowerCase","colorCodeToHex","extras","resultColor","textContent","htmlStringFormatting","parseJSONToHTML","sourceJson","htmlElement","colorStyle","fontStyle","key","extraFontStyles","colorKey","colorHex","extraColorsToHex","colorCodeToHex","textToHTML","sourceJsonExtra","isMotdJSONType","currentText","returnHTML","JSONToCleanedText","sourceJson","textString","key","cleanCodes","sourceJsonExtra","isMotdJSONType","currentText","parseTextToJSON","text","motdText","colorCodeReg","codeREGEX","textSplit","fontStyle","colorHex","resultObject","item","stringToLowerCase","colorCodeToHex","textToJsonExtras","innerObject","newExtra","index","__spreadValues","JSONRender","json","parseJSONToHTML","autoToHTML","motd","textToHTML","autoCleanToText","motd","JSONToCleanedText","cleanCodes","autoCleanToText_default","motdParser","textToHTML","parseTextToJSON","parseJSONToHTML","JSONRender","autoToHTML","htmlStringFormatting","cleanCodes","cleanHtmlTags","JSONToCleanedText","autoCleanToText_default","index_default"]}