eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.12 kB
JavaScript
import{formatSlackLink,markdownBoldToSlackMrkdwn,slackMrkdwnToMarkdown}from"#compiled/@chat-adapter/slack/format.js";function gfmToSlackMrkdwn(e){return splitCodeFences(e).map(e=>e.kind===`code`?e.text:markdownToSlack(e.text)).join(``)}function slackMrkdwnToGfm(e){return splitCodeFences(e).map(e=>e.kind===`code`?e.text:slackToMarkdown(e.text)).join(``)}function splitCodeFences(e){let t=[],n=/```[\s\S]*?```|`[^`\n]+`/gu,r=0;for(let i of e.matchAll(n)){let n=i.index??0;n>r&&t.push({kind:`text`,text:e.slice(r,n)}),t.push({kind:`code`,text:i[0]}),r=n+i[0].length}return r<e.length&&t.push({kind:`text`,text:e.slice(r)}),t}function markdownToSlack(e){let t=markdownBoldToSlackMrkdwn(e);return t=t.replace(/__([^_\n]+)__/gu,`*$1*`),t=t.replace(/~~([^~\n]+)~~/gu,`~$1~`),t=t.replace(/\[([^\]\n]+)\]\(([^)\s]+)\)/gu,(e,t,n)=>formatMarkdownLink(e,t,n)),t}function slackToMarkdown(e){return slackMrkdwnToMarkdown(e.replace(/<!(channel|here|everyone)>/gu,`@$1`))}function formatMarkdownLink(e,t,n){try{return formatSlackLink(n,t)}catch(t){if(t instanceof TypeError)return e;throw t}}export{gfmToSlackMrkdwn,slackMrkdwnToGfm};