Presence embeds

This commit is contained in:
Samuel Elliott
2023-12-27 16:40:09 +00:00
parent f122ef8c92
commit cbf6e257be
11 changed files with 1366 additions and 11 deletions

View File

@@ -40,3 +40,14 @@ export function timeoutSignal(ms = 60 * 1000) {
return [controller.signal, () => clearTimeout(timeout), controller] as const;
}
export const RawValueSymbol = Symbol('RawValue');
export type RawValue = {[RawValueSymbol]: string};
export function htmlentities(strings: TemplateStringsArray, ...args: (string | number | RawValue)[]): string {
return strings.map((s, i) => s + (args[i] ? (
typeof args[i] === 'object' && RawValueSymbol in (args[i] as object) ?
(args[i] as RawValue)[RawValueSymbol] :
args[i].toString().replace(/[\u00A0-\u9999<>\&]/gim, c => '&#' + c.charCodeAt(0) + ';')
) : '')).join('');
}