const ATTR_REGEX = /[&"<]/g; const CONTENT_REGEX = /[&<]/g; /** * Note: this method is performance sensitive and has been optimized * https://github.com/sveltejs/svelte/pull/5701 * @param {unknown} value * @returns {string} */ export function escape(value, is_attr = false) { const str = String(value); const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX; pattern.lastIndex = 0; let escaped = ''; let last = 0; while (pattern.test(str)) { const i = pattern.lastIndex - 1; const ch = str[i]; escaped += str.substring(last, i) + (ch === '&' ? '&' : ch === '"' ? '"' : '<'); last = i + 1; } return escaped + str.substring(last); }