// Чистая логика дедупа инлайн-CSS (без IO/Nitro) — используется в // server/plugins/dedupe-inlined-css.ts и покрыта тестами. /** Каталог собранных ассетов Nuxt — трогаем только `` оттуда. */ export const BUILD_ASSETS_DIR = '/_nuxt/'; /** Матчит теги ``. */ export const STYLESHEET_LINK_RE = /]*\brel="stylesheet"[^>]*>/gi; /** Достаёт href .css-файла из тега ``. */ export const HREF_RE = /\bhref="([^"]+\.css)"/i; const STYLE_TAG_RE = /]*>([\s\S]*?)<\/style>/gi; /** * Нормализует CSS для сравнения: схлопывает пробелы в один и обрезает края. * @param css - исходный CSS */ export const normalizeCss = (css: string): string => css.replace(/\s+/g, ' ').trim(); /** * Разбивает CSS на top-level блоки в ИСХОДНОМ виде (учитывая вложенность `@media`/`@supports` * и statement-ы вида `@charset "UTF-8";`). Нужно, потому что слитый чанк содержит CSS * нескольких компонентов, и в инлайне эти правила раскиданы по разным `