this repo has no description
1/* eslint-disable no-console */ 2import { 3 MarkdownRule, 4 Ruleset, 5 SlateRule 6} from "@moonlight-mod/types/coreExtensions/markdown"; 7 8export const rules: Record< 9 string, 10 (rules: Record<string, MarkdownRule>) => MarkdownRule 11> = {}; 12export const slateRules: Record< 13 string, 14 (rules: Record<string, SlateRule>) => SlateRule 15> = {}; 16export const slateDecorators: Record<string, string> = {}; 17export const ruleBlacklists: Record<Ruleset, Record<string, boolean>> = { 18 RULES: {}, 19 CHANNEL_TOPIC_RULES: {}, 20 VOICE_CHANNEL_STATUS_RULES: {}, 21 EMBED_TITLE_RULES: {}, 22 INLINE_REPLY_RULES: {}, 23 GUILD_VERIFICATION_FORM_RULES: {}, 24 GUILD_EVENT_RULES: {}, 25 PROFILE_BIO_RULES: {}, 26 AUTO_MODERATION_SYSTEM_MESSAGE_RULES: {}, 27 NATIVE_SEARCH_RESULT_LINK_RULES: {} 28}; 29 30export function addRule( 31 name: string, 32 markdown: (rules: Record<string, MarkdownRule>) => MarkdownRule, 33 slate: (rules: Record<string, SlateRule>) => SlateRule, 34 decorator?: string 35) { 36 rules[name] = markdown; 37 slateRules[name] = slate; 38 if (decorator != null) slateDecorators[name] = decorator; 39} 40 41export function blacklistFromRuleset(ruleset: Ruleset, name: string) { 42 if (ruleBlacklists[ruleset] == null) ruleBlacklists[ruleset] = {}; 43 ruleBlacklists[ruleset][name] = true; 44} 45 46export function _addRules(originalRules: Record<string, MarkdownRule>) { 47 for (const name in rules) { 48 originalRules["__moonlight_" + name] = rules[name](originalRules); 49 } 50 51 return originalRules; 52} 53 54export function _addSlateRules(originalRules: Record<string, SlateRule>) { 55 for (const name in slateRules) { 56 originalRules["__moonlight_" + name] = slateRules[name](originalRules); 57 } 58 59 return originalRules; 60} 61 62export function _addSlateDecorators(originalRules: Record<string, string>) { 63 for (const name in slateDecorators) { 64 originalRules["__moonlight_" + name] = slateDecorators[name]; 65 } 66 67 return originalRules; 68} 69 70export function _applyRulesetBlacklist( 71 rulesets: Record<Ruleset, Record<string, MarkdownRule>> 72) { 73 for (const ruleset of Object.keys(rulesets) as Ruleset[]) { 74 if (ruleset === "RULES") continue; 75 76 const rules = rulesets[ruleset]; 77 for (const rule in ruleBlacklists[ruleset] || {}) { 78 delete rules["__moonlight_" + rule]; 79 } 80 } 81}