feat: перейти на изолированный контракт генерации

- добавлены независимые adapters для шести exact modes
- runtime переведён на JavaScript с отдельными декларациями
- generated output перенесён в .svg-sprite
- удалены legacy pipeline и встроенный preview
This commit is contained in:
2026-07-13 20:07:12 +03:00
parent bc4bece3c5
commit f4f464a568
108 changed files with 2187 additions and 6613 deletions

View File

@@ -1,23 +1,8 @@
import type { SpriteMode } from './targets/types.js'
/** Формат спрайта: stack или symbol. */
export type SpriteFormat = 'stack' | 'symbol'
/** Описание одного спрайта в конфиге. */
export type SpriteEntry = {
/** Уникальное имя спрайта (используется как имя файла и в типах). */
name: string
/**
* Источник SVG-файлов.
* Строка — путь к папке с SVG-файлами.
* Массив — пути к конкретным SVG-файлам.
*/
input: string | string[]
/**
* Формат спрайта.
* По умолчанию: 'stack'.
*/
format?: SpriteFormat
}
/** Параметры трансформации SVG. Все включены по умолчанию. */
export type TransformOptions = {
/**
@@ -39,22 +24,33 @@ export type TransformOptions = {
addTransition?: boolean
}
/** Конфигурация генерации SVG-спрайтов. */
export type SvgSpritesConfig = {
/** Путь к папке для сгенерированных SVG-спрайтов. */
output: string
/**
* Генерировать HTML-превью со всеми иконками.
* По умолчанию: true.
*/
preview?: boolean
/**
* Настройки трансформации SVG.
* По умолчанию: все трансформации включены.
*/
/** Единая конфигурация локального sprite-модуля. */
export type SpriteConfig = {
/** Режим можно определить в конфиге либо передать через CLI/API. */
mode?: SpriteMode
/** Логическое имя спрайта. По умолчанию выводится из каталога модуля. */
name?: string
/** Описание спрайта для generated types и manifest. */
description?: string
/** Папка с исходными SVG относительно корня модуля. По умолчанию: ./icons. */
inputFolder?: string
/** Дополнительные SVG-файлы относительно корня модуля. По умолчанию: []. */
inputFiles?: string[]
/** Настройки трансформации SVG. По умолчанию все включены. */
transform?: TransformOptions
/** Список спрайтов для генерации. */
sprites: SpriteEntry[]
/** Добавлять развёрнутое предупреждение в generated-файлы. По умолчанию: true. */
generatedNotice?: boolean
}
/** Полностью разрешённая конфигурация, готовая к генерации. */
export type ResolvedSpriteConfig = {
mode: SpriteMode
name: string
description?: string
inputFolder: string | null
inputFiles: string[]
transform: Required<TransformOptions>
generatedNotice: boolean
}
/** Результат парсинга спрайта — данные для компиляции. */
@@ -68,15 +64,3 @@ export type SpriteFolder = {
/** Абсолютные пути к SVG-файлам. */
files: string[]
}
/** Результат компиляции одного спрайта. */
export type SpriteResult = {
/** Имя спрайта. */
name: string
/** Формат спрайта. */
format: SpriteFormat
/** Путь к сгенерированному SVG-спрайту. */
spritePath: string
/** Количество иконок в спрайте. */
iconCount: number
}