dispersa 0.4.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +73 -39
  2. package/dist/android-CRDfSB3_.d.cts +126 -0
  3. package/dist/android-DANJjjPO.d.ts +126 -0
  4. package/dist/builders.cjs +220 -64
  5. package/dist/builders.cjs.map +1 -1
  6. package/dist/builders.d.cts +15 -13
  7. package/dist/builders.d.ts +15 -13
  8. package/dist/builders.js +220 -64
  9. package/dist/builders.js.map +1 -1
  10. package/dist/cli/cli.js +120 -7
  11. package/dist/cli/cli.js.map +1 -1
  12. package/dist/cli/config.d.ts +321 -0
  13. package/dist/cli/config.js.map +1 -1
  14. package/dist/cli/index.js +119 -7
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/dispersa-BC1kDF5u.d.ts +118 -0
  17. package/dist/dispersa-DL3J_Pmz.d.cts +118 -0
  18. package/dist/errors-qT4sJgSA.d.cts +104 -0
  19. package/dist/errors-qT4sJgSA.d.ts +104 -0
  20. package/dist/errors.cjs.map +1 -1
  21. package/dist/errors.d.cts +1 -83
  22. package/dist/errors.d.ts +1 -83
  23. package/dist/errors.js.map +1 -1
  24. package/dist/filters.cjs.map +1 -1
  25. package/dist/filters.d.cts +2 -2
  26. package/dist/filters.d.ts +2 -2
  27. package/dist/filters.js.map +1 -1
  28. package/dist/{index-CNT2Meyf.d.cts → index-Dajm5rvM.d.ts} +311 -132
  29. package/dist/{index-CqdaN3X0.d.ts → index-De6SjZYH.d.cts} +311 -132
  30. package/dist/index.cjs +813 -355
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +8 -329
  33. package/dist/index.d.ts +8 -329
  34. package/dist/index.js +807 -355
  35. package/dist/index.js.map +1 -1
  36. package/dist/lint.cjs +1017 -0
  37. package/dist/lint.cjs.map +1 -0
  38. package/dist/lint.d.cts +463 -0
  39. package/dist/lint.d.ts +463 -0
  40. package/dist/lint.js +997 -0
  41. package/dist/lint.js.map +1 -0
  42. package/dist/preprocessors.d.cts +2 -2
  43. package/dist/preprocessors.d.ts +2 -2
  44. package/dist/renderers.cjs.map +1 -1
  45. package/dist/renderers.d.cts +7 -6
  46. package/dist/renderers.d.ts +7 -6
  47. package/dist/renderers.js.map +1 -1
  48. package/dist/transforms.cjs +0 -12
  49. package/dist/transforms.cjs.map +1 -1
  50. package/dist/transforms.d.cts +3 -7
  51. package/dist/transforms.d.ts +3 -7
  52. package/dist/transforms.js +1 -12
  53. package/dist/transforms.js.map +1 -1
  54. package/dist/{types-CZb19kiq.d.ts → types-8MLtztK3.d.ts} +56 -1
  55. package/dist/{types-CussyWwe.d.cts → types-BHBHRm0a.d.cts} +56 -1
  56. package/dist/{types-BAv39mum.d.cts → types-BltzwVYK.d.cts} +1 -1
  57. package/dist/{types-DWKq-eJj.d.cts → types-CAdUV-fa.d.cts} +1 -1
  58. package/dist/{types-CzHa7YkW.d.ts → types-DztXKlka.d.ts} +1 -1
  59. package/dist/{types-Bc0kA7De.d.ts → types-TQHV1MrY.d.cts} +19 -1
  60. package/dist/{types-Bc0kA7De.d.cts → types-TQHV1MrY.d.ts} +19 -1
  61. package/dist/{types-BzNcG-rI.d.ts → types-ebxDimRz.d.ts} +1 -1
  62. package/package.json +11 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/processing/transforms/built-in/color-converter.ts","../src/processing/transforms/built-in/color-format.ts","../src/processing/transforms/built-in/color-transform-factory.ts","../src/processing/transforms/built-in/color-transforms.ts","../src/shared/constants.ts","../src/processing/transforms/built-in/dimension-converter.ts","../src/processing/transforms/built-in/dimension-transforms.ts","../src/processing/transforms/built-in/name-transforms.ts","../src/processing/transforms/built-in/other-transforms.ts"],"names":["formatHex8","formatHex","formatRgb","formatHsl","dtcgObjectToCulori","converter","formatCss","camelCase","kebabCase","snakeCase","pascalCase","constantCase"],"mappings":"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","file":"transforms.cjs","sourcesContent":["/**\n * @fileoverview Color format conversion utilities for DTCG 2025.10\n * Uses culori for accurate color science and conversions\n */\n\nimport type { ColorComponent, ColorSpace, ColorValueObject } from '@tokens/types'\nimport {\n formatHex,\n formatHex8,\n type Color as CuloriColor,\n type Rgb,\n type Lrgb,\n type Hsl,\n type Hwb,\n type Lab,\n type Lch,\n type Oklab,\n type Oklch,\n type P3,\n type A98,\n type Prophoto,\n type Rec2020,\n type Xyz65,\n type Xyz50,\n} from 'culori'\n\n/**\n * Check if a color value is in DTCG object format\n */\nexport function isColorObject(value: unknown): value is ColorValueObject {\n return (\n typeof value === 'object' && value !== null && 'colorSpace' in value && 'components' in value\n )\n}\n\n/**\n * Convert a color component value to culori format\n * The \"none\" keyword becomes undefined (culori's representation of missing channels)\n */\nfunction componentToCulori(component: ColorComponent): number | undefined {\n return component === 'none' ? undefined : component\n}\n\n/**\n * Convert DTCG color object to culori color object\n * Handles all 14 DTCG color spaces and the \"none\" keyword\n */\nexport function dtcgObjectToCulori(color: ColorValueObject): CuloriColor {\n const [c1, c2, c3] = color.components.map(componentToCulori)\n const alpha = color.alpha !== undefined ? componentToCulori(color.alpha) : undefined\n\n // Normalize color space (case-insensitive, handle aliases)\n const colorSpace = color.colorSpace.toLowerCase() as Lowercase<ColorSpace>\n\n // Map DTCG color spaces to culori color objects with proper property names\n switch (colorSpace) {\n // RGB-based color spaces (components are R, G, B in 0-1 range)\n case 'srgb':\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n\n case 'srgb-linear':\n return { mode: 'lrgb', r: c1, g: c2, b: c3, alpha } as Lrgb\n\n case 'display-p3':\n return { mode: 'p3', r: c1, g: c2, b: c3, alpha } as P3\n\n case 'a98-rgb':\n return { mode: 'a98', r: c1, g: c2, b: c3, alpha } as A98\n\n case 'prophoto-rgb':\n return { mode: 'prophoto', r: c1, g: c2, b: c3, alpha } as Prophoto\n\n case 'rec2020':\n return { mode: 'rec2020', r: c1, g: c2, b: c3, alpha } as Rec2020\n\n // Cylindrical color spaces (Hue, Saturation/Whiteness, Lightness/Blackness)\n case 'hsl':\n return { mode: 'hsl', h: c1, s: c2, l: c3, alpha } as Hsl\n\n case 'hwb':\n return { mode: 'hwb', h: c1, w: c2, b: c3, alpha } as Hwb\n\n // Lab color spaces (Lightness, a/b or Chroma/Hue)\n case 'lab':\n return { mode: 'lab', l: c1, a: c2, b: c3, alpha } as Lab\n\n case 'lch':\n return { mode: 'lch', l: c1, c: c2, h: c3, alpha } as Lch\n\n case 'oklab':\n return { mode: 'oklab', l: c1, a: c2, b: c3, alpha } as Oklab\n\n case 'oklch':\n return { mode: 'oklch', l: c1, c: c2, h: c3, alpha } as Oklch\n\n // XYZ color spaces\n case 'xyz-d65':\n return { mode: 'xyz65', x: c1, y: c2, z: c3, alpha } as Xyz65\n\n case 'xyz-d50':\n return { mode: 'xyz50', x: c1, y: c2, z: c3, alpha } as Xyz50\n\n // Fallback to sRGB if color space is not recognized\n default:\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n }\n}\n\n/**\n * Convert DTCG color object to hex string\n */\nexport function colorObjectToHex(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n const alpha = color.alpha ?? 1\n\n if (alpha < 1) {\n return formatHex8(culoriColor)\n }\n\n return formatHex(culoriColor)\n}\n","/**\n * @fileoverview Color format conversions that use culori's formatRgb / formatHsl\n * Split from color-converter to avoid pulling these into bundles that only need hex.\n */\n\nimport type { ColorValueObject } from '@tokens/types'\nimport { formatRgb, formatHsl } from 'culori'\n\nimport { dtcgObjectToCulori } from './color-converter'\n\n/**\n * Convert DTCG color object to rgb/rgba string\n */\nexport function colorObjectToRgb(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatRgb(culoriColor)\n}\n\n/**\n * Convert DTCG color object to hsl/hsla string\n */\nexport function colorObjectToHsl(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatHsl(culoriColor)\n}\n","/**\n * @fileoverview Unified factory for creating color transforms\n * Handles both simple conversions and modern color space transformations\n */\n\nimport { ColorValue, ColorValueObject, ResolvedToken } from '@tokens/types'\nimport { converter, formatCss, type Mode } from 'culori'\n\nimport { Transform } from '..'\n\nimport { dtcgObjectToCulori as convertDtcgToCulori, isColorObject } from './color-converter'\n\n/**\n * Convert DTCG color value to culori color object\n * Returns null if value is not a ColorValueObject (e.g., unresolved alias reference)\n */\nexport function dtcgObjectToCulori(value: ColorValue) {\n if (!isColorObject(value)) {\n return null\n }\n return convertDtcgToCulori(value)\n}\n\n/**\n * Create a simple color transform with direct string conversion\n * Used for basic color formats (hex, rgb, hsl)\n *\n * @param converter - Function to convert color object to string\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const hexTransform = createColorTransform('color:hex', colorObjectToHex)\n * ```\n */\nexport function createColorTransform(converter: (value: ColorValueObject) => string): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n if (!isColorObject(value)) {\n // String values should be alias references that get resolved before transforms\n return token\n }\n\n try {\n const converted = converter(value)\n return { ...token, $value: converted }\n } catch {\n // If conversion fails, return token unchanged\n return token\n }\n },\n }\n}\n\n/**\n * Create a modern color transform using culori converter\n * Used for CSS Color Module Level 4 color spaces (oklch, oklab, lch, lab, hwb)\n *\n * @param mode - Culori color mode to convert to\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const oklchTransform = createModernColorTransform('color:oklch', 'oklch')\n * ```\n */\nexport function createModernColorTransform(mode: Mode): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Convert to target color space\n const converted = converter(mode)(parsed)\n const formatted = formatCss(converted)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Built-in color value transforms with alpha channel support\n * Includes both standard (hex, rgb, hsl) and modern CSS Color Module Level 4 transforms\n * Uses culori for accurate color conversions\n *\n * Note: Transforms only handle DTCG object format. String values are alias references\n * that must be resolved before transforms run.\n */\n\nimport type { ColorValue, ResolvedToken } from '@tokens/types'\nimport { formatCss } from 'culori'\n\nimport type { Transform } from '../types'\n\nimport { colorObjectToHex } from './color-converter'\nimport { colorObjectToHsl, colorObjectToRgb } from './color-format'\nimport {\n createColorTransform,\n createModernColorTransform,\n dtcgObjectToCulori,\n} from './color-transform-factory'\n\n// ============================================================================\n// Standard Color Transforms (hex, rgb, hsl)\n// ============================================================================\n\n/**\n * Convert color to hex format (with alpha support via 8-digit hex)\n */\nexport function colorToHex(): Transform {\n return createColorTransform(colorObjectToHex)\n}\n\n/**\n * Convert color to rgb/rgba format (preserves alpha)\n */\nexport function colorToRgb(): Transform {\n return createColorTransform(colorObjectToRgb)\n}\n\n/**\n * Convert color to hsl/hsla format (preserves alpha)\n */\nexport function colorToHsl(): Transform {\n return createColorTransform(colorObjectToHsl)\n}\n\n// ============================================================================\n// Modern CSS Color Module Level 4 Transforms\n// ============================================================================\n\n/**\n * Convert color to oklch format (perceptual color space)\n */\nexport function colorToOklch(): Transform {\n return createModernColorTransform('oklch')\n}\n\n/**\n * Convert color to oklab format (perceptual color space)\n */\nexport function colorToOklab(): Transform {\n return createModernColorTransform('oklab')\n}\n\n/**\n * Convert color to lch format (CIELAB lightness-chroma-hue)\n */\nexport function colorToLch(): Transform {\n return createModernColorTransform('lch')\n}\n\n/**\n * Convert color to lab format (CIELAB)\n */\nexport function colorToLab(): Transform {\n return createModernColorTransform('lab')\n}\n\n/**\n * Convert color to hwb format (hue-whiteness-blackness)\n */\nexport function colorToHwb(): Transform {\n return createModernColorTransform('hwb')\n}\n\n/**\n * Convert color to CSS color() function format\n * Uses the original color space and formats as CSS color() function\n */\nexport function colorToColorFunction(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Format as color() function (preserves original color space)\n const formatted = formatCss(parsed)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Global constants\n */\n\n/**\n * Default maximum depth for alias resolution\n * Prevents infinite recursion in circular references\n */\nexport const DEFAULT_MAX_ALIAS_DEPTH = 10\n\n/**\n * Default base font size in pixels for rem/em conversions\n */\nexport const DEFAULT_BASE_FONT_SIZE_PX = 16\n","/**\n * @fileoverview Dimension format conversion utilities for DTCG 2025.10\n * Handles dimension object format { value: number, unit: string }\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue } from '@tokens/types'\n/**\n * Check if a value is in dimension object format\n */\nexport function isDimensionObject(value: unknown): value is DimensionValue {\n return typeof value === 'object' && value !== null && 'value' in value && 'unit' in value\n}\n\n/**\n * Convert DTCG dimension object to CSS string\n */\nexport function dimensionObjectToString(dimension: DimensionValue): string {\n return `${dimension.value}${dimension.unit}`\n}\n\n/**\n * Convert a DTCG dimension object between units (px, rem).\n *\n * Converts via px as an intermediate: rem -> px -> target.\n * Returns the original value unchanged for unsupported unit combinations.\n *\n * @param value - Source dimension object\n * @param toUnit - Target CSS unit\n * @param baseFontSize - Base font size in px used for rem conversions\n */\nexport function convertDimension(\n value: DimensionValue,\n toUnit: DimensionValue['unit'],\n baseFontSize = DEFAULT_BASE_FONT_SIZE_PX,\n): DimensionValue {\n const fromUnit = value.unit\n let numValue = value.value\n\n // Convert to px first (as intermediate)\n if (fromUnit === 'rem') {\n numValue = numValue * baseFontSize\n } else if (fromUnit !== 'px' && fromUnit !== toUnit) {\n // If not px, rem, or em, and not already target unit, return as-is\n return value\n }\n\n // Convert from px to target unit\n if (toUnit === 'rem') {\n numValue = numValue / baseFontSize\n } else if (toUnit !== 'px') {\n // Can't convert to other units, return original\n return value\n }\n\n return {\n value: numValue,\n unit: toUnit,\n }\n}\n","/**\n * @fileoverview Built-in dimension value transforms\n * Handles DTCG 2025.10 object format { value: number, unit: string }\n * and converts to string format for output\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue, ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\nimport { convertDimension, dimensionObjectToString, isDimensionObject } from './dimension-converter'\n/**\n * Convert dimension to px string format\n */\nexport function dimensionToPx(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to px\n if (isDimensionObject(value)) {\n const converted = convertDimension(value as DimensionValue, 'px', DEFAULT_BASE_FONT_SIZE_PX)\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Convert dimension to rem string format\n */\nexport function dimensionToRem(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to rem\n if (isDimensionObject(value)) {\n const converted = convertDimension(\n value as DimensionValue,\n 'rem',\n DEFAULT_BASE_FONT_SIZE_PX,\n )\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Unitless dimension (extract numeric value)\n */\nexport function dimensionToUnitless(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, parse out the number\n if (typeof value === 'string') {\n const num = parseFloat(value)\n return { ...token, $value: isNaN(num) ? value : num }\n }\n\n // Extract value from dimension object\n if (isDimensionObject(value)) {\n return { ...token, $value: (value as DimensionValue).value }\n }\n\n return token\n },\n }\n}\n","/**\n * @fileoverview Built-in name transforms using change-case library for robust case conversion\n */\n\nimport { ResolvedToken } from '@tokens/types'\nimport { camelCase, kebabCase, snakeCase, pascalCase, constantCase } from 'change-case'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert token name to camelCase\n */\nexport function nameCamelCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = camelCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to kebab-case\n */\nexport function nameKebabCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = kebabCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to snake_case\n */\nexport function nameSnakeCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = snakeCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to PascalCase\n */\nexport function namePascalCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = pascalCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to CONSTANT_CASE\n */\nexport function nameConstantCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = constantCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Add prefix to token name\n *\n * @example\n * ```typescript\n * // Add 'ds-' prefix to all token names\n * transforms: [namePrefix('ds-')]\n * // 'color.primary' becomes 'ds-color.primary'\n * ```\n */\nexport function namePrefix(prefix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${prefix}${token.name}`,\n }\n },\n }\n}\n\n/**\n * Add suffix to token name\n *\n * @example\n * ```typescript\n * // Add '-token' suffix to all token names\n * transforms: [nameSuffix('-token')]\n * // 'color.primary' becomes 'color.primary-token'\n * ```\n */\nexport function nameSuffix(suffix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${token.name}${suffix}`,\n }\n },\n }\n}\n\n/**\n * Convert token name to CSS custom property format (--name)\n */\nexport function nameCssVar(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const kebabName = token.path\n .map((part) => part.replace(/[^a-zA-Z0-9-]/g, '').toLowerCase())\n .join('-')\n\n return {\n ...token,\n name: `--${kebabName}`,\n }\n },\n }\n}\n","/**\n * @fileoverview Other built-in value transforms\n */\n\nimport { ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert font weight to numeric value\n */\nexport function fontWeightToNumber(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'fontWeight',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n if (typeof value === 'number') {\n return token\n }\n\n if (typeof value === 'string') {\n const weightMap: Record<string, number> = {\n thin: 100,\n hairline: 100,\n 'extra-light': 200,\n 'ultra-light': 200,\n light: 300,\n normal: 400,\n regular: 400,\n medium: 500,\n 'semi-bold': 600,\n 'demi-bold': 600,\n bold: 700,\n 'extra-bold': 800,\n 'ultra-bold': 800,\n black: 900,\n heavy: 900,\n 'extra-black': 950,\n 'ultra-black': 950,\n }\n\n const weight = weightMap[value.toLowerCase()]\n if (weight !== undefined) {\n return { ...token, $value: weight }\n }\n }\n\n return token\n },\n }\n}\n\ntype DurationUnit = 'ms' | 's'\ntype ParsedDuration = { value: number; unit: DurationUnit }\n\n/** Parse a raw duration value (object or string form) into a normalized representation */\nfunction parseDuration(rawValue: unknown): ParsedDuration | null {\n if (\n typeof rawValue === 'object' &&\n rawValue !== null &&\n 'value' in rawValue &&\n 'unit' in rawValue\n ) {\n const unit = (rawValue as { unit: string }).unit\n const numeric = Number((rawValue as { value: unknown }).value)\n if (Number.isFinite(numeric) && (unit === 'ms' || unit === 's')) {\n return { value: numeric, unit }\n }\n return null\n }\n\n const str = typeof rawValue === 'string' || typeof rawValue === 'number' ? String(rawValue) : ''\n if (str.endsWith('ms')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 'ms' } : null\n }\n if (str.endsWith('s')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 's' } : null\n }\n\n return null\n}\n\n/** Convert a parsed duration to the target unit */\nfunction convertDurationUnit(parsed: ParsedDuration, target: DurationUnit): ParsedDuration {\n if (parsed.unit === target) {\n return parsed\n }\n return target === 'ms'\n ? { value: parsed.value * 1000, unit: 'ms' }\n : { value: parsed.value / 1000, unit: 's' }\n}\n\n/**\n * Convert duration to milliseconds\n */\nexport function durationToMs(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 'ms')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n\n/**\n * Convert duration to seconds\n */\nexport function durationToSeconds(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 's')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/processing/transforms/built-in/color-converter.ts","../src/processing/transforms/built-in/color-format.ts","../src/processing/transforms/built-in/color-transform-factory.ts","../src/processing/transforms/built-in/color-transforms.ts","../src/shared/constants.ts","../src/processing/transforms/built-in/dimension-converter.ts","../src/processing/transforms/built-in/dimension-transforms.ts","../src/processing/transforms/built-in/name-transforms.ts","../src/processing/transforms/built-in/other-transforms.ts"],"names":["formatHex8","formatHex","formatRgb","formatHsl","dtcgObjectToCulori","converter","formatCss","camelCase","kebabCase","snakeCase","pascalCase","constantCase"],"mappings":"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","file":"transforms.cjs","sourcesContent":["/**\n * @fileoverview Color format conversion utilities for DTCG 2025.10\n * Uses culori for accurate color science and conversions\n */\n\nimport type { ColorComponent, ColorSpace, ColorValueObject } from '@tokens/types'\nimport {\n formatHex,\n formatHex8,\n type Color as CuloriColor,\n type Rgb,\n type Lrgb,\n type Hsl,\n type Hwb,\n type Lab,\n type Lch,\n type Oklab,\n type Oklch,\n type P3,\n type A98,\n type Prophoto,\n type Rec2020,\n type Xyz65,\n type Xyz50,\n} from 'culori'\n\n/**\n * Check if a color value is in DTCG object format\n */\nexport function isColorObject(value: unknown): value is ColorValueObject {\n return (\n typeof value === 'object' && value !== null && 'colorSpace' in value && 'components' in value\n )\n}\n\n/**\n * Convert a color component value to culori format\n * The \"none\" keyword becomes undefined (culori's representation of missing channels)\n */\nfunction componentToCulori(component: ColorComponent): number | undefined {\n return component === 'none' ? undefined : component\n}\n\n/**\n * Convert DTCG color object to culori color object\n * Handles all 14 DTCG color spaces and the \"none\" keyword\n */\nexport function dtcgObjectToCulori(color: ColorValueObject): CuloriColor {\n const [c1, c2, c3] = color.components.map(componentToCulori)\n const alpha = color.alpha !== undefined ? componentToCulori(color.alpha) : undefined\n\n // Normalize color space (case-insensitive, handle aliases)\n const colorSpace = color.colorSpace.toLowerCase() as Lowercase<ColorSpace>\n\n // Map DTCG color spaces to culori color objects with proper property names\n switch (colorSpace) {\n // RGB-based color spaces (components are R, G, B in 0-1 range)\n case 'srgb':\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n\n case 'srgb-linear':\n return { mode: 'lrgb', r: c1, g: c2, b: c3, alpha } as Lrgb\n\n case 'display-p3':\n return { mode: 'p3', r: c1, g: c2, b: c3, alpha } as P3\n\n case 'a98-rgb':\n return { mode: 'a98', r: c1, g: c2, b: c3, alpha } as A98\n\n case 'prophoto-rgb':\n return { mode: 'prophoto', r: c1, g: c2, b: c3, alpha } as Prophoto\n\n case 'rec2020':\n return { mode: 'rec2020', r: c1, g: c2, b: c3, alpha } as Rec2020\n\n // Cylindrical color spaces (Hue, Saturation/Whiteness, Lightness/Blackness)\n case 'hsl':\n return { mode: 'hsl', h: c1, s: c2, l: c3, alpha } as Hsl\n\n case 'hwb':\n return { mode: 'hwb', h: c1, w: c2, b: c3, alpha } as Hwb\n\n // Lab color spaces (Lightness, a/b or Chroma/Hue)\n case 'lab':\n return { mode: 'lab', l: c1, a: c2, b: c3, alpha } as Lab\n\n case 'lch':\n return { mode: 'lch', l: c1, c: c2, h: c3, alpha } as Lch\n\n case 'oklab':\n return { mode: 'oklab', l: c1, a: c2, b: c3, alpha } as Oklab\n\n case 'oklch':\n return { mode: 'oklch', l: c1, c: c2, h: c3, alpha } as Oklch\n\n // XYZ color spaces\n case 'xyz-d65':\n return { mode: 'xyz65', x: c1, y: c2, z: c3, alpha } as Xyz65\n\n case 'xyz-d50':\n return { mode: 'xyz50', x: c1, y: c2, z: c3, alpha } as Xyz50\n\n // Fallback to sRGB if color space is not recognized\n default:\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n }\n}\n\n/**\n * Convert DTCG color object to hex string\n */\nexport function colorObjectToHex(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n const alpha = color.alpha ?? 1\n\n if (alpha < 1) {\n return formatHex8(culoriColor)\n }\n\n return formatHex(culoriColor)\n}\n","/**\n * @fileoverview Color format conversions that use culori's formatRgb / formatHsl\n * Split from color-converter to avoid pulling these into bundles that only need hex.\n */\n\nimport type { ColorValueObject } from '@tokens/types'\nimport { formatRgb, formatHsl } from 'culori'\n\nimport { dtcgObjectToCulori } from './color-converter'\n\n/**\n * Convert DTCG color object to rgb/rgba string\n */\nexport function colorObjectToRgb(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatRgb(culoriColor)\n}\n\n/**\n * Convert DTCG color object to hsl/hsla string\n */\nexport function colorObjectToHsl(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatHsl(culoriColor)\n}\n","/**\n * @fileoverview Unified factory for creating color transforms\n * Handles both simple conversions and modern color space transformations\n */\n\nimport { ColorValue, ColorValueObject, ResolvedToken } from '@tokens/types'\nimport { converter, formatCss, type Mode } from 'culori'\n\nimport { Transform } from '..'\n\nimport { dtcgObjectToCulori as convertDtcgToCulori, isColorObject } from './color-converter'\n\n/**\n * Convert DTCG color value to culori color object\n * Returns null if value is not a ColorValueObject (e.g., unresolved alias reference)\n */\nexport function dtcgObjectToCulori(value: ColorValue) {\n if (!isColorObject(value)) {\n return null\n }\n return convertDtcgToCulori(value)\n}\n\n/**\n * Create a simple color transform with direct string conversion\n * Used for basic color formats (hex, rgb, hsl)\n *\n * @param converter - Function to convert color object to string\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const hexTransform = createColorTransform('color:hex', colorObjectToHex)\n * ```\n */\nexport function createColorTransform(converter: (value: ColorValueObject) => string): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n if (!isColorObject(value)) {\n // String values should be alias references that get resolved before transforms\n return token\n }\n\n try {\n const converted = converter(value)\n return { ...token, $value: converted }\n } catch {\n // If conversion fails, return token unchanged\n return token\n }\n },\n }\n}\n\n/**\n * Create a modern color transform using culori converter\n * Used for CSS Color Module Level 4 color spaces (oklch, oklab, lch, lab, hwb)\n *\n * @param mode - Culori color mode to convert to\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const oklchTransform = createModernColorTransform('color:oklch', 'oklch')\n * ```\n */\nexport function createModernColorTransform(mode: Mode): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Convert to target color space\n const converted = converter(mode)(parsed)\n const formatted = formatCss(converted)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Built-in color value transforms with alpha channel support\n * Includes both standard (hex, rgb, hsl) and modern CSS Color Module Level 4 transforms\n * Uses culori for accurate color conversions\n *\n * Note: Transforms only handle DTCG object format. String values are alias references\n * that must be resolved before transforms run.\n */\n\nimport type { ColorValue, ResolvedToken } from '@tokens/types'\nimport { formatCss } from 'culori'\n\nimport type { Transform } from '../types'\n\nimport { colorObjectToHex } from './color-converter'\nimport { colorObjectToHsl, colorObjectToRgb } from './color-format'\nimport {\n createColorTransform,\n createModernColorTransform,\n dtcgObjectToCulori,\n} from './color-transform-factory'\n\n// ============================================================================\n// Standard Color Transforms (hex, rgb, hsl)\n// ============================================================================\n\n/**\n * Convert color to hex format (with alpha support via 8-digit hex)\n */\nexport function colorToHex(): Transform {\n return createColorTransform(colorObjectToHex)\n}\n\n/**\n * Convert color to rgb/rgba format (preserves alpha)\n */\nexport function colorToRgb(): Transform {\n return createColorTransform(colorObjectToRgb)\n}\n\n/**\n * Convert color to hsl/hsla format (preserves alpha)\n */\nexport function colorToHsl(): Transform {\n return createColorTransform(colorObjectToHsl)\n}\n\n// ============================================================================\n// Modern CSS Color Module Level 4 Transforms\n// ============================================================================\n\n/**\n * Convert color to oklch format (perceptual color space)\n */\nexport function colorToOklch(): Transform {\n return createModernColorTransform('oklch')\n}\n\n/**\n * Convert color to oklab format (perceptual color space)\n */\nexport function colorToOklab(): Transform {\n return createModernColorTransform('oklab')\n}\n\n/**\n * Convert color to lch format (CIELAB lightness-chroma-hue)\n */\nexport function colorToLch(): Transform {\n return createModernColorTransform('lch')\n}\n\n/**\n * Convert color to lab format (CIELAB)\n */\nexport function colorToLab(): Transform {\n return createModernColorTransform('lab')\n}\n\n/**\n * Convert color to hwb format (hue-whiteness-blackness)\n */\nexport function colorToHwb(): Transform {\n return createModernColorTransform('hwb')\n}\n\n/**\n * Convert color to CSS color() function format\n * Uses the original color space and formats as CSS color() function\n */\nexport function colorToColorFunction(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Format as color() function (preserves original color space)\n const formatted = formatCss(parsed)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Global constants\n */\n\n/**\n * Default maximum depth for alias resolution\n * Prevents infinite recursion in circular references\n */\nexport const DEFAULT_MAX_ALIAS_DEPTH = 10\n\n/**\n * Default base font size in pixels for rem/em conversions\n */\nexport const DEFAULT_BASE_FONT_SIZE_PX = 16\n","/**\n * @fileoverview Dimension format conversion utilities for DTCG 2025.10\n * Handles dimension object format { value: number, unit: string }\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue } from '@tokens/types'\n/**\n * Check if a value is in dimension object format\n */\nexport function isDimensionObject(value: unknown): value is DimensionValue {\n return typeof value === 'object' && value !== null && 'value' in value && 'unit' in value\n}\n\n/**\n * Convert DTCG dimension object to CSS string\n */\nexport function dimensionObjectToString(dimension: DimensionValue): string {\n return `${dimension.value}${dimension.unit}`\n}\n\n/**\n * Convert a DTCG dimension object between units (px, rem).\n *\n * Converts via px as an intermediate: rem -> px -> target.\n * Returns the original value unchanged for unsupported unit combinations.\n *\n * @param value - Source dimension object\n * @param toUnit - Target CSS unit\n * @param baseFontSize - Base font size in px used for rem conversions\n */\nexport function convertDimension(\n value: DimensionValue,\n toUnit: DimensionValue['unit'],\n baseFontSize = DEFAULT_BASE_FONT_SIZE_PX,\n): DimensionValue {\n const fromUnit = value.unit\n let numValue = value.value\n\n // Convert to px first (as intermediate)\n if (fromUnit === 'rem') {\n numValue = numValue * baseFontSize\n } else if (fromUnit !== 'px' && fromUnit !== toUnit) {\n // If not px, rem, or em, and not already target unit, return as-is\n return value\n }\n\n // Convert from px to target unit\n if (toUnit === 'rem') {\n numValue = numValue / baseFontSize\n } else if (toUnit !== 'px') {\n // Can't convert to other units, return original\n return value\n }\n\n return {\n value: numValue,\n unit: toUnit,\n }\n}\n","/**\n * @fileoverview Built-in dimension value transforms\n * Handles DTCG 2025.10 object format { value: number, unit: string }\n * and converts to string format for output\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue, ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\nimport { convertDimension, dimensionObjectToString, isDimensionObject } from './dimension-converter'\n/**\n * Convert dimension to px string format\n */\nexport function dimensionToPx(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to px\n if (isDimensionObject(value)) {\n const converted = convertDimension(value as DimensionValue, 'px', DEFAULT_BASE_FONT_SIZE_PX)\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Convert dimension to rem string format\n */\nexport function dimensionToRem(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to rem\n if (isDimensionObject(value)) {\n const converted = convertDimension(\n value as DimensionValue,\n 'rem',\n DEFAULT_BASE_FONT_SIZE_PX,\n )\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Unitless dimension (extract numeric value)\n */\nexport function dimensionToUnitless(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, parse out the number\n if (typeof value === 'string') {\n const num = parseFloat(value)\n return { ...token, $value: isNaN(num) ? value : num }\n }\n\n // Extract value from dimension object\n if (isDimensionObject(value)) {\n return { ...token, $value: (value as DimensionValue).value }\n }\n\n return token\n },\n }\n}\n","/**\n * @fileoverview Built-in name transforms using change-case library for robust case conversion\n */\n\nimport { ResolvedToken } from '@tokens/types'\nimport { camelCase, kebabCase, snakeCase, pascalCase, constantCase } from 'change-case'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert token name to camelCase\n */\nexport function nameCamelCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = camelCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to kebab-case\n */\nexport function nameKebabCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = kebabCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to snake_case\n */\nexport function nameSnakeCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = snakeCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to PascalCase\n */\nexport function namePascalCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = pascalCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to CONSTANT_CASE\n */\nexport function nameConstantCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = constantCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Add prefix to token name\n *\n * @example\n * ```typescript\n * // Add 'ds-' prefix to all token names\n * transforms: [namePrefix('ds-')]\n * // 'color.primary' becomes 'ds-color.primary'\n * ```\n */\nexport function namePrefix(prefix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${prefix}${token.name}`,\n }\n },\n }\n}\n\n/**\n * Add suffix to token name\n *\n * @example\n * ```typescript\n * // Add '-token' suffix to all token names\n * transforms: [nameSuffix('-token')]\n * // 'color.primary' becomes 'color.primary-token'\n * ```\n */\nexport function nameSuffix(suffix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${token.name}${suffix}`,\n }\n },\n }\n}\n","/**\n * @fileoverview Other built-in value transforms\n */\n\nimport { ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert font weight to numeric value\n */\nexport function fontWeightToNumber(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'fontWeight',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n if (typeof value === 'number') {\n return token\n }\n\n if (typeof value === 'string') {\n const weightMap: Record<string, number> = {\n thin: 100,\n hairline: 100,\n 'extra-light': 200,\n 'ultra-light': 200,\n light: 300,\n normal: 400,\n regular: 400,\n medium: 500,\n 'semi-bold': 600,\n 'demi-bold': 600,\n bold: 700,\n 'extra-bold': 800,\n 'ultra-bold': 800,\n black: 900,\n heavy: 900,\n 'extra-black': 950,\n 'ultra-black': 950,\n }\n\n const weight = weightMap[value.toLowerCase()]\n if (weight !== undefined) {\n return { ...token, $value: weight }\n }\n }\n\n return token\n },\n }\n}\n\ntype DurationUnit = 'ms' | 's'\ntype ParsedDuration = { value: number; unit: DurationUnit }\n\n/** Parse a raw duration value (object or string form) into a normalized representation */\nfunction parseDuration(rawValue: unknown): ParsedDuration | null {\n if (\n typeof rawValue === 'object' &&\n rawValue !== null &&\n 'value' in rawValue &&\n 'unit' in rawValue\n ) {\n const unit = (rawValue as { unit: string }).unit\n const numeric = Number((rawValue as { value: unknown }).value)\n if (Number.isFinite(numeric) && (unit === 'ms' || unit === 's')) {\n return { value: numeric, unit }\n }\n return null\n }\n\n const str = typeof rawValue === 'string' || typeof rawValue === 'number' ? String(rawValue) : ''\n if (str.endsWith('ms')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 'ms' } : null\n }\n if (str.endsWith('s')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 's' } : null\n }\n\n return null\n}\n\n/** Convert a parsed duration to the target unit */\nfunction convertDurationUnit(parsed: ParsedDuration, target: DurationUnit): ParsedDuration {\n if (parsed.unit === target) {\n return parsed\n }\n return target === 'ms'\n ? { value: parsed.value * 1000, unit: 'ms' }\n : { value: parsed.value / 1000, unit: 's' }\n}\n\n/**\n * Convert duration to milliseconds\n */\nexport function durationToMs(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 'ms')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n\n/**\n * Convert duration to seconds\n */\nexport function durationToSeconds(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 's')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { T as Transform } from './types-BAv39mum.cjs';
2
- import './types-Bc0kA7De.cjs';
1
+ import { T as Transform } from './types-BltzwVYK.cjs';
2
+ import './types-TQHV1MrY.cjs';
3
3
 
4
4
  /**
5
5
  * @fileoverview Built-in color value transforms with alpha channel support
@@ -113,10 +113,6 @@ declare function namePrefix(prefix: string): Transform;
113
113
  * ```
114
114
  */
115
115
  declare function nameSuffix(suffix: string): Transform;
116
- /**
117
- * Convert token name to CSS custom property format (--name)
118
- */
119
- declare function nameCssVar(): Transform;
120
116
 
121
117
  /**
122
118
  * @fileoverview Other built-in value transforms
@@ -135,4 +131,4 @@ declare function durationToMs(): Transform;
135
131
  */
136
132
  declare function durationToSeconds(): Transform;
137
133
 
138
- export { Transform, colorToColorFunction, colorToHex, colorToHsl, colorToHwb, colorToLab, colorToLch, colorToOklab, colorToOklch, colorToRgb, dimensionToPx, dimensionToRem, dimensionToUnitless, durationToMs, durationToSeconds, fontWeightToNumber, nameCamelCase, nameConstantCase, nameCssVar, nameKebabCase, namePascalCase, namePrefix, nameSnakeCase, nameSuffix };
134
+ export { Transform, colorToColorFunction, colorToHex, colorToHsl, colorToHwb, colorToLab, colorToLch, colorToOklab, colorToOklch, colorToRgb, dimensionToPx, dimensionToRem, dimensionToUnitless, durationToMs, durationToSeconds, fontWeightToNumber, nameCamelCase, nameConstantCase, nameKebabCase, namePascalCase, namePrefix, nameSnakeCase, nameSuffix };
@@ -1,5 +1,5 @@
1
- import { T as Transform } from './types-CzHa7YkW.js';
2
- import './types-Bc0kA7De.js';
1
+ import { T as Transform } from './types-DztXKlka.js';
2
+ import './types-TQHV1MrY.js';
3
3
 
4
4
  /**
5
5
  * @fileoverview Built-in color value transforms with alpha channel support
@@ -113,10 +113,6 @@ declare function namePrefix(prefix: string): Transform;
113
113
  * ```
114
114
  */
115
115
  declare function nameSuffix(suffix: string): Transform;
116
- /**
117
- * Convert token name to CSS custom property format (--name)
118
- */
119
- declare function nameCssVar(): Transform;
120
116
 
121
117
  /**
122
118
  * @fileoverview Other built-in value transforms
@@ -135,4 +131,4 @@ declare function durationToMs(): Transform;
135
131
  */
136
132
  declare function durationToSeconds(): Transform;
137
133
 
138
- export { Transform, colorToColorFunction, colorToHex, colorToHsl, colorToHwb, colorToLab, colorToLch, colorToOklab, colorToOklch, colorToRgb, dimensionToPx, dimensionToRem, dimensionToUnitless, durationToMs, durationToSeconds, fontWeightToNumber, nameCamelCase, nameConstantCase, nameCssVar, nameKebabCase, namePascalCase, namePrefix, nameSnakeCase, nameSuffix };
134
+ export { Transform, colorToColorFunction, colorToHex, colorToHsl, colorToHwb, colorToLab, colorToLch, colorToOklab, colorToOklch, colorToRgb, dimensionToPx, dimensionToRem, dimensionToUnitless, durationToMs, durationToSeconds, fontWeightToNumber, nameCamelCase, nameConstantCase, nameKebabCase, namePascalCase, namePrefix, nameSnakeCase, nameSuffix };
@@ -316,17 +316,6 @@ function nameSuffix(suffix) {
316
316
  }
317
317
  };
318
318
  }
319
- function nameCssVar() {
320
- return {
321
- transform: (token) => {
322
- const kebabName = token.path.map((part) => part.replace(/[^a-zA-Z0-9-]/g, "").toLowerCase()).join("-");
323
- return {
324
- ...token,
325
- name: `--${kebabName}`
326
- };
327
- }
328
- };
329
- }
330
319
 
331
320
  // src/processing/transforms/built-in/other-transforms.ts
332
321
  function fontWeightToNumber() {
@@ -424,6 +413,6 @@ function durationToSeconds() {
424
413
  * SPDX-License-Identifier: MIT
425
414
  */
426
415
 
427
- export { colorToColorFunction, colorToHex, colorToHsl, colorToHwb, colorToLab, colorToLch, colorToOklab, colorToOklch, colorToRgb, dimensionToPx, dimensionToRem, dimensionToUnitless, durationToMs, durationToSeconds, fontWeightToNumber, nameCamelCase, nameConstantCase, nameCssVar, nameKebabCase, namePascalCase, namePrefix, nameSnakeCase, nameSuffix };
416
+ export { colorToColorFunction, colorToHex, colorToHsl, colorToHwb, colorToLab, colorToLch, colorToOklab, colorToOklch, colorToRgb, dimensionToPx, dimensionToRem, dimensionToUnitless, durationToMs, durationToSeconds, fontWeightToNumber, nameCamelCase, nameConstantCase, nameKebabCase, namePascalCase, namePrefix, nameSnakeCase, nameSuffix };
428
417
  //# sourceMappingURL=transforms.js.map
429
418
  //# sourceMappingURL=transforms.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/processing/transforms/built-in/color-converter.ts","../src/processing/transforms/built-in/color-format.ts","../src/processing/transforms/built-in/color-transform-factory.ts","../src/processing/transforms/built-in/color-transforms.ts","../src/shared/constants.ts","../src/processing/transforms/built-in/dimension-converter.ts","../src/processing/transforms/built-in/dimension-transforms.ts","../src/processing/transforms/built-in/name-transforms.ts","../src/processing/transforms/built-in/other-transforms.ts"],"names":["dtcgObjectToCulori","converter","formatCss"],"mappings":"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","file":"transforms.js","sourcesContent":["/**\n * @fileoverview Color format conversion utilities for DTCG 2025.10\n * Uses culori for accurate color science and conversions\n */\n\nimport type { ColorComponent, ColorSpace, ColorValueObject } from '@tokens/types'\nimport {\n formatHex,\n formatHex8,\n type Color as CuloriColor,\n type Rgb,\n type Lrgb,\n type Hsl,\n type Hwb,\n type Lab,\n type Lch,\n type Oklab,\n type Oklch,\n type P3,\n type A98,\n type Prophoto,\n type Rec2020,\n type Xyz65,\n type Xyz50,\n} from 'culori'\n\n/**\n * Check if a color value is in DTCG object format\n */\nexport function isColorObject(value: unknown): value is ColorValueObject {\n return (\n typeof value === 'object' && value !== null && 'colorSpace' in value && 'components' in value\n )\n}\n\n/**\n * Convert a color component value to culori format\n * The \"none\" keyword becomes undefined (culori's representation of missing channels)\n */\nfunction componentToCulori(component: ColorComponent): number | undefined {\n return component === 'none' ? undefined : component\n}\n\n/**\n * Convert DTCG color object to culori color object\n * Handles all 14 DTCG color spaces and the \"none\" keyword\n */\nexport function dtcgObjectToCulori(color: ColorValueObject): CuloriColor {\n const [c1, c2, c3] = color.components.map(componentToCulori)\n const alpha = color.alpha !== undefined ? componentToCulori(color.alpha) : undefined\n\n // Normalize color space (case-insensitive, handle aliases)\n const colorSpace = color.colorSpace.toLowerCase() as Lowercase<ColorSpace>\n\n // Map DTCG color spaces to culori color objects with proper property names\n switch (colorSpace) {\n // RGB-based color spaces (components are R, G, B in 0-1 range)\n case 'srgb':\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n\n case 'srgb-linear':\n return { mode: 'lrgb', r: c1, g: c2, b: c3, alpha } as Lrgb\n\n case 'display-p3':\n return { mode: 'p3', r: c1, g: c2, b: c3, alpha } as P3\n\n case 'a98-rgb':\n return { mode: 'a98', r: c1, g: c2, b: c3, alpha } as A98\n\n case 'prophoto-rgb':\n return { mode: 'prophoto', r: c1, g: c2, b: c3, alpha } as Prophoto\n\n case 'rec2020':\n return { mode: 'rec2020', r: c1, g: c2, b: c3, alpha } as Rec2020\n\n // Cylindrical color spaces (Hue, Saturation/Whiteness, Lightness/Blackness)\n case 'hsl':\n return { mode: 'hsl', h: c1, s: c2, l: c3, alpha } as Hsl\n\n case 'hwb':\n return { mode: 'hwb', h: c1, w: c2, b: c3, alpha } as Hwb\n\n // Lab color spaces (Lightness, a/b or Chroma/Hue)\n case 'lab':\n return { mode: 'lab', l: c1, a: c2, b: c3, alpha } as Lab\n\n case 'lch':\n return { mode: 'lch', l: c1, c: c2, h: c3, alpha } as Lch\n\n case 'oklab':\n return { mode: 'oklab', l: c1, a: c2, b: c3, alpha } as Oklab\n\n case 'oklch':\n return { mode: 'oklch', l: c1, c: c2, h: c3, alpha } as Oklch\n\n // XYZ color spaces\n case 'xyz-d65':\n return { mode: 'xyz65', x: c1, y: c2, z: c3, alpha } as Xyz65\n\n case 'xyz-d50':\n return { mode: 'xyz50', x: c1, y: c2, z: c3, alpha } as Xyz50\n\n // Fallback to sRGB if color space is not recognized\n default:\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n }\n}\n\n/**\n * Convert DTCG color object to hex string\n */\nexport function colorObjectToHex(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n const alpha = color.alpha ?? 1\n\n if (alpha < 1) {\n return formatHex8(culoriColor)\n }\n\n return formatHex(culoriColor)\n}\n","/**\n * @fileoverview Color format conversions that use culori's formatRgb / formatHsl\n * Split from color-converter to avoid pulling these into bundles that only need hex.\n */\n\nimport type { ColorValueObject } from '@tokens/types'\nimport { formatRgb, formatHsl } from 'culori'\n\nimport { dtcgObjectToCulori } from './color-converter'\n\n/**\n * Convert DTCG color object to rgb/rgba string\n */\nexport function colorObjectToRgb(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatRgb(culoriColor)\n}\n\n/**\n * Convert DTCG color object to hsl/hsla string\n */\nexport function colorObjectToHsl(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatHsl(culoriColor)\n}\n","/**\n * @fileoverview Unified factory for creating color transforms\n * Handles both simple conversions and modern color space transformations\n */\n\nimport { ColorValue, ColorValueObject, ResolvedToken } from '@tokens/types'\nimport { converter, formatCss, type Mode } from 'culori'\n\nimport { Transform } from '..'\n\nimport { dtcgObjectToCulori as convertDtcgToCulori, isColorObject } from './color-converter'\n\n/**\n * Convert DTCG color value to culori color object\n * Returns null if value is not a ColorValueObject (e.g., unresolved alias reference)\n */\nexport function dtcgObjectToCulori(value: ColorValue) {\n if (!isColorObject(value)) {\n return null\n }\n return convertDtcgToCulori(value)\n}\n\n/**\n * Create a simple color transform with direct string conversion\n * Used for basic color formats (hex, rgb, hsl)\n *\n * @param converter - Function to convert color object to string\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const hexTransform = createColorTransform('color:hex', colorObjectToHex)\n * ```\n */\nexport function createColorTransform(converter: (value: ColorValueObject) => string): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n if (!isColorObject(value)) {\n // String values should be alias references that get resolved before transforms\n return token\n }\n\n try {\n const converted = converter(value)\n return { ...token, $value: converted }\n } catch {\n // If conversion fails, return token unchanged\n return token\n }\n },\n }\n}\n\n/**\n * Create a modern color transform using culori converter\n * Used for CSS Color Module Level 4 color spaces (oklch, oklab, lch, lab, hwb)\n *\n * @param mode - Culori color mode to convert to\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const oklchTransform = createModernColorTransform('color:oklch', 'oklch')\n * ```\n */\nexport function createModernColorTransform(mode: Mode): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Convert to target color space\n const converted = converter(mode)(parsed)\n const formatted = formatCss(converted)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Built-in color value transforms with alpha channel support\n * Includes both standard (hex, rgb, hsl) and modern CSS Color Module Level 4 transforms\n * Uses culori for accurate color conversions\n *\n * Note: Transforms only handle DTCG object format. String values are alias references\n * that must be resolved before transforms run.\n */\n\nimport type { ColorValue, ResolvedToken } from '@tokens/types'\nimport { formatCss } from 'culori'\n\nimport type { Transform } from '../types'\n\nimport { colorObjectToHex } from './color-converter'\nimport { colorObjectToHsl, colorObjectToRgb } from './color-format'\nimport {\n createColorTransform,\n createModernColorTransform,\n dtcgObjectToCulori,\n} from './color-transform-factory'\n\n// ============================================================================\n// Standard Color Transforms (hex, rgb, hsl)\n// ============================================================================\n\n/**\n * Convert color to hex format (with alpha support via 8-digit hex)\n */\nexport function colorToHex(): Transform {\n return createColorTransform(colorObjectToHex)\n}\n\n/**\n * Convert color to rgb/rgba format (preserves alpha)\n */\nexport function colorToRgb(): Transform {\n return createColorTransform(colorObjectToRgb)\n}\n\n/**\n * Convert color to hsl/hsla format (preserves alpha)\n */\nexport function colorToHsl(): Transform {\n return createColorTransform(colorObjectToHsl)\n}\n\n// ============================================================================\n// Modern CSS Color Module Level 4 Transforms\n// ============================================================================\n\n/**\n * Convert color to oklch format (perceptual color space)\n */\nexport function colorToOklch(): Transform {\n return createModernColorTransform('oklch')\n}\n\n/**\n * Convert color to oklab format (perceptual color space)\n */\nexport function colorToOklab(): Transform {\n return createModernColorTransform('oklab')\n}\n\n/**\n * Convert color to lch format (CIELAB lightness-chroma-hue)\n */\nexport function colorToLch(): Transform {\n return createModernColorTransform('lch')\n}\n\n/**\n * Convert color to lab format (CIELAB)\n */\nexport function colorToLab(): Transform {\n return createModernColorTransform('lab')\n}\n\n/**\n * Convert color to hwb format (hue-whiteness-blackness)\n */\nexport function colorToHwb(): Transform {\n return createModernColorTransform('hwb')\n}\n\n/**\n * Convert color to CSS color() function format\n * Uses the original color space and formats as CSS color() function\n */\nexport function colorToColorFunction(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Format as color() function (preserves original color space)\n const formatted = formatCss(parsed)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Global constants\n */\n\n/**\n * Default maximum depth for alias resolution\n * Prevents infinite recursion in circular references\n */\nexport const DEFAULT_MAX_ALIAS_DEPTH = 10\n\n/**\n * Default base font size in pixels for rem/em conversions\n */\nexport const DEFAULT_BASE_FONT_SIZE_PX = 16\n","/**\n * @fileoverview Dimension format conversion utilities for DTCG 2025.10\n * Handles dimension object format { value: number, unit: string }\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue } from '@tokens/types'\n/**\n * Check if a value is in dimension object format\n */\nexport function isDimensionObject(value: unknown): value is DimensionValue {\n return typeof value === 'object' && value !== null && 'value' in value && 'unit' in value\n}\n\n/**\n * Convert DTCG dimension object to CSS string\n */\nexport function dimensionObjectToString(dimension: DimensionValue): string {\n return `${dimension.value}${dimension.unit}`\n}\n\n/**\n * Convert a DTCG dimension object between units (px, rem).\n *\n * Converts via px as an intermediate: rem -> px -> target.\n * Returns the original value unchanged for unsupported unit combinations.\n *\n * @param value - Source dimension object\n * @param toUnit - Target CSS unit\n * @param baseFontSize - Base font size in px used for rem conversions\n */\nexport function convertDimension(\n value: DimensionValue,\n toUnit: DimensionValue['unit'],\n baseFontSize = DEFAULT_BASE_FONT_SIZE_PX,\n): DimensionValue {\n const fromUnit = value.unit\n let numValue = value.value\n\n // Convert to px first (as intermediate)\n if (fromUnit === 'rem') {\n numValue = numValue * baseFontSize\n } else if (fromUnit !== 'px' && fromUnit !== toUnit) {\n // If not px, rem, or em, and not already target unit, return as-is\n return value\n }\n\n // Convert from px to target unit\n if (toUnit === 'rem') {\n numValue = numValue / baseFontSize\n } else if (toUnit !== 'px') {\n // Can't convert to other units, return original\n return value\n }\n\n return {\n value: numValue,\n unit: toUnit,\n }\n}\n","/**\n * @fileoverview Built-in dimension value transforms\n * Handles DTCG 2025.10 object format { value: number, unit: string }\n * and converts to string format for output\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue, ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\nimport { convertDimension, dimensionObjectToString, isDimensionObject } from './dimension-converter'\n/**\n * Convert dimension to px string format\n */\nexport function dimensionToPx(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to px\n if (isDimensionObject(value)) {\n const converted = convertDimension(value as DimensionValue, 'px', DEFAULT_BASE_FONT_SIZE_PX)\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Convert dimension to rem string format\n */\nexport function dimensionToRem(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to rem\n if (isDimensionObject(value)) {\n const converted = convertDimension(\n value as DimensionValue,\n 'rem',\n DEFAULT_BASE_FONT_SIZE_PX,\n )\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Unitless dimension (extract numeric value)\n */\nexport function dimensionToUnitless(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, parse out the number\n if (typeof value === 'string') {\n const num = parseFloat(value)\n return { ...token, $value: isNaN(num) ? value : num }\n }\n\n // Extract value from dimension object\n if (isDimensionObject(value)) {\n return { ...token, $value: (value as DimensionValue).value }\n }\n\n return token\n },\n }\n}\n","/**\n * @fileoverview Built-in name transforms using change-case library for robust case conversion\n */\n\nimport { ResolvedToken } from '@tokens/types'\nimport { camelCase, kebabCase, snakeCase, pascalCase, constantCase } from 'change-case'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert token name to camelCase\n */\nexport function nameCamelCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = camelCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to kebab-case\n */\nexport function nameKebabCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = kebabCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to snake_case\n */\nexport function nameSnakeCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = snakeCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to PascalCase\n */\nexport function namePascalCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = pascalCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to CONSTANT_CASE\n */\nexport function nameConstantCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = constantCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Add prefix to token name\n *\n * @example\n * ```typescript\n * // Add 'ds-' prefix to all token names\n * transforms: [namePrefix('ds-')]\n * // 'color.primary' becomes 'ds-color.primary'\n * ```\n */\nexport function namePrefix(prefix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${prefix}${token.name}`,\n }\n },\n }\n}\n\n/**\n * Add suffix to token name\n *\n * @example\n * ```typescript\n * // Add '-token' suffix to all token names\n * transforms: [nameSuffix('-token')]\n * // 'color.primary' becomes 'color.primary-token'\n * ```\n */\nexport function nameSuffix(suffix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${token.name}${suffix}`,\n }\n },\n }\n}\n\n/**\n * Convert token name to CSS custom property format (--name)\n */\nexport function nameCssVar(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const kebabName = token.path\n .map((part) => part.replace(/[^a-zA-Z0-9-]/g, '').toLowerCase())\n .join('-')\n\n return {\n ...token,\n name: `--${kebabName}`,\n }\n },\n }\n}\n","/**\n * @fileoverview Other built-in value transforms\n */\n\nimport { ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert font weight to numeric value\n */\nexport function fontWeightToNumber(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'fontWeight',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n if (typeof value === 'number') {\n return token\n }\n\n if (typeof value === 'string') {\n const weightMap: Record<string, number> = {\n thin: 100,\n hairline: 100,\n 'extra-light': 200,\n 'ultra-light': 200,\n light: 300,\n normal: 400,\n regular: 400,\n medium: 500,\n 'semi-bold': 600,\n 'demi-bold': 600,\n bold: 700,\n 'extra-bold': 800,\n 'ultra-bold': 800,\n black: 900,\n heavy: 900,\n 'extra-black': 950,\n 'ultra-black': 950,\n }\n\n const weight = weightMap[value.toLowerCase()]\n if (weight !== undefined) {\n return { ...token, $value: weight }\n }\n }\n\n return token\n },\n }\n}\n\ntype DurationUnit = 'ms' | 's'\ntype ParsedDuration = { value: number; unit: DurationUnit }\n\n/** Parse a raw duration value (object or string form) into a normalized representation */\nfunction parseDuration(rawValue: unknown): ParsedDuration | null {\n if (\n typeof rawValue === 'object' &&\n rawValue !== null &&\n 'value' in rawValue &&\n 'unit' in rawValue\n ) {\n const unit = (rawValue as { unit: string }).unit\n const numeric = Number((rawValue as { value: unknown }).value)\n if (Number.isFinite(numeric) && (unit === 'ms' || unit === 's')) {\n return { value: numeric, unit }\n }\n return null\n }\n\n const str = typeof rawValue === 'string' || typeof rawValue === 'number' ? String(rawValue) : ''\n if (str.endsWith('ms')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 'ms' } : null\n }\n if (str.endsWith('s')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 's' } : null\n }\n\n return null\n}\n\n/** Convert a parsed duration to the target unit */\nfunction convertDurationUnit(parsed: ParsedDuration, target: DurationUnit): ParsedDuration {\n if (parsed.unit === target) {\n return parsed\n }\n return target === 'ms'\n ? { value: parsed.value * 1000, unit: 'ms' }\n : { value: parsed.value / 1000, unit: 's' }\n}\n\n/**\n * Convert duration to milliseconds\n */\nexport function durationToMs(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 'ms')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n\n/**\n * Convert duration to seconds\n */\nexport function durationToSeconds(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 's')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/processing/transforms/built-in/color-converter.ts","../src/processing/transforms/built-in/color-format.ts","../src/processing/transforms/built-in/color-transform-factory.ts","../src/processing/transforms/built-in/color-transforms.ts","../src/shared/constants.ts","../src/processing/transforms/built-in/dimension-converter.ts","../src/processing/transforms/built-in/dimension-transforms.ts","../src/processing/transforms/built-in/name-transforms.ts","../src/processing/transforms/built-in/other-transforms.ts"],"names":["dtcgObjectToCulori","converter","formatCss"],"mappings":"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","file":"transforms.js","sourcesContent":["/**\n * @fileoverview Color format conversion utilities for DTCG 2025.10\n * Uses culori for accurate color science and conversions\n */\n\nimport type { ColorComponent, ColorSpace, ColorValueObject } from '@tokens/types'\nimport {\n formatHex,\n formatHex8,\n type Color as CuloriColor,\n type Rgb,\n type Lrgb,\n type Hsl,\n type Hwb,\n type Lab,\n type Lch,\n type Oklab,\n type Oklch,\n type P3,\n type A98,\n type Prophoto,\n type Rec2020,\n type Xyz65,\n type Xyz50,\n} from 'culori'\n\n/**\n * Check if a color value is in DTCG object format\n */\nexport function isColorObject(value: unknown): value is ColorValueObject {\n return (\n typeof value === 'object' && value !== null && 'colorSpace' in value && 'components' in value\n )\n}\n\n/**\n * Convert a color component value to culori format\n * The \"none\" keyword becomes undefined (culori's representation of missing channels)\n */\nfunction componentToCulori(component: ColorComponent): number | undefined {\n return component === 'none' ? undefined : component\n}\n\n/**\n * Convert DTCG color object to culori color object\n * Handles all 14 DTCG color spaces and the \"none\" keyword\n */\nexport function dtcgObjectToCulori(color: ColorValueObject): CuloriColor {\n const [c1, c2, c3] = color.components.map(componentToCulori)\n const alpha = color.alpha !== undefined ? componentToCulori(color.alpha) : undefined\n\n // Normalize color space (case-insensitive, handle aliases)\n const colorSpace = color.colorSpace.toLowerCase() as Lowercase<ColorSpace>\n\n // Map DTCG color spaces to culori color objects with proper property names\n switch (colorSpace) {\n // RGB-based color spaces (components are R, G, B in 0-1 range)\n case 'srgb':\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n\n case 'srgb-linear':\n return { mode: 'lrgb', r: c1, g: c2, b: c3, alpha } as Lrgb\n\n case 'display-p3':\n return { mode: 'p3', r: c1, g: c2, b: c3, alpha } as P3\n\n case 'a98-rgb':\n return { mode: 'a98', r: c1, g: c2, b: c3, alpha } as A98\n\n case 'prophoto-rgb':\n return { mode: 'prophoto', r: c1, g: c2, b: c3, alpha } as Prophoto\n\n case 'rec2020':\n return { mode: 'rec2020', r: c1, g: c2, b: c3, alpha } as Rec2020\n\n // Cylindrical color spaces (Hue, Saturation/Whiteness, Lightness/Blackness)\n case 'hsl':\n return { mode: 'hsl', h: c1, s: c2, l: c3, alpha } as Hsl\n\n case 'hwb':\n return { mode: 'hwb', h: c1, w: c2, b: c3, alpha } as Hwb\n\n // Lab color spaces (Lightness, a/b or Chroma/Hue)\n case 'lab':\n return { mode: 'lab', l: c1, a: c2, b: c3, alpha } as Lab\n\n case 'lch':\n return { mode: 'lch', l: c1, c: c2, h: c3, alpha } as Lch\n\n case 'oklab':\n return { mode: 'oklab', l: c1, a: c2, b: c3, alpha } as Oklab\n\n case 'oklch':\n return { mode: 'oklch', l: c1, c: c2, h: c3, alpha } as Oklch\n\n // XYZ color spaces\n case 'xyz-d65':\n return { mode: 'xyz65', x: c1, y: c2, z: c3, alpha } as Xyz65\n\n case 'xyz-d50':\n return { mode: 'xyz50', x: c1, y: c2, z: c3, alpha } as Xyz50\n\n // Fallback to sRGB if color space is not recognized\n default:\n return { mode: 'rgb', r: c1, g: c2, b: c3, alpha } as Rgb\n }\n}\n\n/**\n * Convert DTCG color object to hex string\n */\nexport function colorObjectToHex(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n const alpha = color.alpha ?? 1\n\n if (alpha < 1) {\n return formatHex8(culoriColor)\n }\n\n return formatHex(culoriColor)\n}\n","/**\n * @fileoverview Color format conversions that use culori's formatRgb / formatHsl\n * Split from color-converter to avoid pulling these into bundles that only need hex.\n */\n\nimport type { ColorValueObject } from '@tokens/types'\nimport { formatRgb, formatHsl } from 'culori'\n\nimport { dtcgObjectToCulori } from './color-converter'\n\n/**\n * Convert DTCG color object to rgb/rgba string\n */\nexport function colorObjectToRgb(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatRgb(culoriColor)\n}\n\n/**\n * Convert DTCG color object to hsl/hsla string\n */\nexport function colorObjectToHsl(color: ColorValueObject): string {\n const culoriColor = dtcgObjectToCulori(color)\n return formatHsl(culoriColor)\n}\n","/**\n * @fileoverview Unified factory for creating color transforms\n * Handles both simple conversions and modern color space transformations\n */\n\nimport { ColorValue, ColorValueObject, ResolvedToken } from '@tokens/types'\nimport { converter, formatCss, type Mode } from 'culori'\n\nimport { Transform } from '..'\n\nimport { dtcgObjectToCulori as convertDtcgToCulori, isColorObject } from './color-converter'\n\n/**\n * Convert DTCG color value to culori color object\n * Returns null if value is not a ColorValueObject (e.g., unresolved alias reference)\n */\nexport function dtcgObjectToCulori(value: ColorValue) {\n if (!isColorObject(value)) {\n return null\n }\n return convertDtcgToCulori(value)\n}\n\n/**\n * Create a simple color transform with direct string conversion\n * Used for basic color formats (hex, rgb, hsl)\n *\n * @param converter - Function to convert color object to string\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const hexTransform = createColorTransform('color:hex', colorObjectToHex)\n * ```\n */\nexport function createColorTransform(converter: (value: ColorValueObject) => string): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n if (!isColorObject(value)) {\n // String values should be alias references that get resolved before transforms\n return token\n }\n\n try {\n const converted = converter(value)\n return { ...token, $value: converted }\n } catch {\n // If conversion fails, return token unchanged\n return token\n }\n },\n }\n}\n\n/**\n * Create a modern color transform using culori converter\n * Used for CSS Color Module Level 4 color spaces (oklch, oklab, lch, lab, hwb)\n *\n * @param mode - Culori color mode to convert to\n * @returns Transform object\n *\n * @example\n * ```typescript\n * const oklchTransform = createModernColorTransform('color:oklch', 'oklch')\n * ```\n */\nexport function createModernColorTransform(mode: Mode): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Convert to target color space\n const converted = converter(mode)(parsed)\n const formatted = formatCss(converted)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Built-in color value transforms with alpha channel support\n * Includes both standard (hex, rgb, hsl) and modern CSS Color Module Level 4 transforms\n * Uses culori for accurate color conversions\n *\n * Note: Transforms only handle DTCG object format. String values are alias references\n * that must be resolved before transforms run.\n */\n\nimport type { ColorValue, ResolvedToken } from '@tokens/types'\nimport { formatCss } from 'culori'\n\nimport type { Transform } from '../types'\n\nimport { colorObjectToHex } from './color-converter'\nimport { colorObjectToHsl, colorObjectToRgb } from './color-format'\nimport {\n createColorTransform,\n createModernColorTransform,\n dtcgObjectToCulori,\n} from './color-transform-factory'\n\n// ============================================================================\n// Standard Color Transforms (hex, rgb, hsl)\n// ============================================================================\n\n/**\n * Convert color to hex format (with alpha support via 8-digit hex)\n */\nexport function colorToHex(): Transform {\n return createColorTransform(colorObjectToHex)\n}\n\n/**\n * Convert color to rgb/rgba format (preserves alpha)\n */\nexport function colorToRgb(): Transform {\n return createColorTransform(colorObjectToRgb)\n}\n\n/**\n * Convert color to hsl/hsla format (preserves alpha)\n */\nexport function colorToHsl(): Transform {\n return createColorTransform(colorObjectToHsl)\n}\n\n// ============================================================================\n// Modern CSS Color Module Level 4 Transforms\n// ============================================================================\n\n/**\n * Convert color to oklch format (perceptual color space)\n */\nexport function colorToOklch(): Transform {\n return createModernColorTransform('oklch')\n}\n\n/**\n * Convert color to oklab format (perceptual color space)\n */\nexport function colorToOklab(): Transform {\n return createModernColorTransform('oklab')\n}\n\n/**\n * Convert color to lch format (CIELAB lightness-chroma-hue)\n */\nexport function colorToLch(): Transform {\n return createModernColorTransform('lch')\n}\n\n/**\n * Convert color to lab format (CIELAB)\n */\nexport function colorToLab(): Transform {\n return createModernColorTransform('lab')\n}\n\n/**\n * Convert color to hwb format (hue-whiteness-blackness)\n */\nexport function colorToHwb(): Transform {\n return createModernColorTransform('hwb')\n}\n\n/**\n * Convert color to CSS color() function format\n * Uses the original color space and formats as CSS color() function\n */\nexport function colorToColorFunction(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'color',\n transform: (token: ResolvedToken) => {\n const value = token.$value as ColorValue\n\n try {\n const parsed = dtcgObjectToCulori(value)\n\n if (parsed === null) {\n return token\n }\n\n // Format as color() function (preserves original color space)\n const formatted = formatCss(parsed)\n\n if (formatted === '') {\n return token\n }\n\n return { ...token, $value: formatted }\n } catch {\n // Gracefully fall back to original token on unsupported color values\n return token\n }\n },\n }\n}\n","/**\n * @fileoverview Global constants\n */\n\n/**\n * Default maximum depth for alias resolution\n * Prevents infinite recursion in circular references\n */\nexport const DEFAULT_MAX_ALIAS_DEPTH = 10\n\n/**\n * Default base font size in pixels for rem/em conversions\n */\nexport const DEFAULT_BASE_FONT_SIZE_PX = 16\n","/**\n * @fileoverview Dimension format conversion utilities for DTCG 2025.10\n * Handles dimension object format { value: number, unit: string }\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue } from '@tokens/types'\n/**\n * Check if a value is in dimension object format\n */\nexport function isDimensionObject(value: unknown): value is DimensionValue {\n return typeof value === 'object' && value !== null && 'value' in value && 'unit' in value\n}\n\n/**\n * Convert DTCG dimension object to CSS string\n */\nexport function dimensionObjectToString(dimension: DimensionValue): string {\n return `${dimension.value}${dimension.unit}`\n}\n\n/**\n * Convert a DTCG dimension object between units (px, rem).\n *\n * Converts via px as an intermediate: rem -> px -> target.\n * Returns the original value unchanged for unsupported unit combinations.\n *\n * @param value - Source dimension object\n * @param toUnit - Target CSS unit\n * @param baseFontSize - Base font size in px used for rem conversions\n */\nexport function convertDimension(\n value: DimensionValue,\n toUnit: DimensionValue['unit'],\n baseFontSize = DEFAULT_BASE_FONT_SIZE_PX,\n): DimensionValue {\n const fromUnit = value.unit\n let numValue = value.value\n\n // Convert to px first (as intermediate)\n if (fromUnit === 'rem') {\n numValue = numValue * baseFontSize\n } else if (fromUnit !== 'px' && fromUnit !== toUnit) {\n // If not px, rem, or em, and not already target unit, return as-is\n return value\n }\n\n // Convert from px to target unit\n if (toUnit === 'rem') {\n numValue = numValue / baseFontSize\n } else if (toUnit !== 'px') {\n // Can't convert to other units, return original\n return value\n }\n\n return {\n value: numValue,\n unit: toUnit,\n }\n}\n","/**\n * @fileoverview Built-in dimension value transforms\n * Handles DTCG 2025.10 object format { value: number, unit: string }\n * and converts to string format for output\n */\n\nimport { DEFAULT_BASE_FONT_SIZE_PX } from '@shared/constants'\nimport type { DimensionValue, ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\nimport { convertDimension, dimensionObjectToString, isDimensionObject } from './dimension-converter'\n/**\n * Convert dimension to px string format\n */\nexport function dimensionToPx(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to px\n if (isDimensionObject(value)) {\n const converted = convertDimension(value as DimensionValue, 'px', DEFAULT_BASE_FONT_SIZE_PX)\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Convert dimension to rem string format\n */\nexport function dimensionToRem(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, return as-is\n if (typeof value === 'string') {\n return token\n }\n\n // Convert dimension object to rem\n if (isDimensionObject(value)) {\n const converted = convertDimension(\n value as DimensionValue,\n 'rem',\n DEFAULT_BASE_FONT_SIZE_PX,\n )\n return { ...token, $value: dimensionObjectToString(converted) }\n }\n\n return token\n },\n }\n}\n\n/**\n * Unitless dimension (extract numeric value)\n */\nexport function dimensionToUnitless(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'dimension',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n // If already a string, parse out the number\n if (typeof value === 'string') {\n const num = parseFloat(value)\n return { ...token, $value: isNaN(num) ? value : num }\n }\n\n // Extract value from dimension object\n if (isDimensionObject(value)) {\n return { ...token, $value: (value as DimensionValue).value }\n }\n\n return token\n },\n }\n}\n","/**\n * @fileoverview Built-in name transforms using change-case library for robust case conversion\n */\n\nimport { ResolvedToken } from '@tokens/types'\nimport { camelCase, kebabCase, snakeCase, pascalCase, constantCase } from 'change-case'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert token name to camelCase\n */\nexport function nameCamelCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = camelCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to kebab-case\n */\nexport function nameKebabCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = kebabCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to snake_case\n */\nexport function nameSnakeCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = snakeCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to PascalCase\n */\nexport function namePascalCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = pascalCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Convert token name to CONSTANT_CASE\n */\nexport function nameConstantCase(): Transform {\n return {\n transform: (token: ResolvedToken) => {\n const name = constantCase(token.path.join(' '))\n return {\n ...token,\n name,\n }\n },\n }\n}\n\n/**\n * Add prefix to token name\n *\n * @example\n * ```typescript\n * // Add 'ds-' prefix to all token names\n * transforms: [namePrefix('ds-')]\n * // 'color.primary' becomes 'ds-color.primary'\n * ```\n */\nexport function namePrefix(prefix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${prefix}${token.name}`,\n }\n },\n }\n}\n\n/**\n * Add suffix to token name\n *\n * @example\n * ```typescript\n * // Add '-token' suffix to all token names\n * transforms: [nameSuffix('-token')]\n * // 'color.primary' becomes 'color.primary-token'\n * ```\n */\nexport function nameSuffix(suffix: string): Transform {\n return {\n transform: (token: ResolvedToken) => {\n return {\n ...token,\n name: `${token.name}${suffix}`,\n }\n },\n }\n}\n","/**\n * @fileoverview Other built-in value transforms\n */\n\nimport { ResolvedToken } from '@tokens/types'\n\nimport type { Transform } from '../types'\n\n/**\n * Convert font weight to numeric value\n */\nexport function fontWeightToNumber(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'fontWeight',\n transform: (token: ResolvedToken) => {\n const value = token.$value\n\n if (typeof value === 'number') {\n return token\n }\n\n if (typeof value === 'string') {\n const weightMap: Record<string, number> = {\n thin: 100,\n hairline: 100,\n 'extra-light': 200,\n 'ultra-light': 200,\n light: 300,\n normal: 400,\n regular: 400,\n medium: 500,\n 'semi-bold': 600,\n 'demi-bold': 600,\n bold: 700,\n 'extra-bold': 800,\n 'ultra-bold': 800,\n black: 900,\n heavy: 900,\n 'extra-black': 950,\n 'ultra-black': 950,\n }\n\n const weight = weightMap[value.toLowerCase()]\n if (weight !== undefined) {\n return { ...token, $value: weight }\n }\n }\n\n return token\n },\n }\n}\n\ntype DurationUnit = 'ms' | 's'\ntype ParsedDuration = { value: number; unit: DurationUnit }\n\n/** Parse a raw duration value (object or string form) into a normalized representation */\nfunction parseDuration(rawValue: unknown): ParsedDuration | null {\n if (\n typeof rawValue === 'object' &&\n rawValue !== null &&\n 'value' in rawValue &&\n 'unit' in rawValue\n ) {\n const unit = (rawValue as { unit: string }).unit\n const numeric = Number((rawValue as { value: unknown }).value)\n if (Number.isFinite(numeric) && (unit === 'ms' || unit === 's')) {\n return { value: numeric, unit }\n }\n return null\n }\n\n const str = typeof rawValue === 'string' || typeof rawValue === 'number' ? String(rawValue) : ''\n if (str.endsWith('ms')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 'ms' } : null\n }\n if (str.endsWith('s')) {\n const numeric = parseFloat(str)\n return Number.isFinite(numeric) ? { value: numeric, unit: 's' } : null\n }\n\n return null\n}\n\n/** Convert a parsed duration to the target unit */\nfunction convertDurationUnit(parsed: ParsedDuration, target: DurationUnit): ParsedDuration {\n if (parsed.unit === target) {\n return parsed\n }\n return target === 'ms'\n ? { value: parsed.value * 1000, unit: 'ms' }\n : { value: parsed.value / 1000, unit: 's' }\n}\n\n/**\n * Convert duration to milliseconds\n */\nexport function durationToMs(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 'ms')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n\n/**\n * Convert duration to seconds\n */\nexport function durationToSeconds(): Transform {\n return {\n matcher: (token: ResolvedToken) => token.$type === 'duration',\n transform: (token: ResolvedToken) => {\n const parsed = parseDuration(token.$value)\n if (!parsed) {\n return token\n }\n const converted = convertDurationUnit(parsed, 's')\n return { ...token, $value: { value: converted.value, unit: converted.unit } }\n },\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { K as InternalTokenDocument } from './types-Bc0kA7De.js';
1
+ import { K as InternalTokenDocument } from './types-TQHV1MrY.js';
2
2
  import { FromSchema, JSONSchema } from 'json-schema-to-ts';
3
3
 
4
4
  /**
@@ -356,11 +356,66 @@ declare const buildConfigSchema: {
356
356
  readonly buildPath: {
357
357
  readonly type: "string";
358
358
  };
359
+ readonly validation: {
360
+ readonly type: "object";
361
+ readonly properties: {
362
+ readonly mode: {
363
+ readonly type: "string";
364
+ readonly enum: readonly ["error", "warn", "off"];
365
+ };
366
+ };
367
+ };
359
368
  readonly hooks: {
360
369
  readonly type: "object";
361
370
  readonly description: "Global build lifecycle hooks (functions, validated at runtime)";
362
371
  readonly additionalProperties: true;
363
372
  };
373
+ readonly lint: {
374
+ readonly description: "Linting configuration";
375
+ readonly $schema: "http://json-schema.org/draft-07/schema#";
376
+ readonly type: "object";
377
+ readonly properties: {
378
+ readonly enabled: {
379
+ readonly type: "boolean";
380
+ readonly description: "Enable linting (default: false, opt-in)";
381
+ };
382
+ readonly failOnError: {
383
+ readonly type: "boolean";
384
+ readonly description: "Fail build on lint errors (default: true)";
385
+ };
386
+ readonly plugins: {
387
+ readonly type: "object";
388
+ readonly description: "Plugins to load (by object or module path string)";
389
+ readonly additionalProperties: {
390
+ readonly oneOf: readonly [{
391
+ readonly type: "string";
392
+ }, {
393
+ readonly type: "object";
394
+ }];
395
+ };
396
+ };
397
+ readonly rules: {
398
+ readonly type: "object";
399
+ readonly description: "Rule configurations";
400
+ readonly additionalProperties: {
401
+ readonly oneOf: readonly [{
402
+ readonly type: "string";
403
+ readonly enum: readonly ["off", "warn", "error"];
404
+ }, {
405
+ readonly type: "array";
406
+ readonly minItems: 2;
407
+ readonly items: readonly [{
408
+ readonly type: "string";
409
+ readonly enum: readonly ["off", "warn", "error"];
410
+ }, {
411
+ readonly type: "object";
412
+ }];
413
+ }];
414
+ };
415
+ };
416
+ };
417
+ readonly additionalProperties: false;
418
+ };
364
419
  };
365
420
  readonly additionalProperties: false;
366
421
  };
@@ -1,4 +1,4 @@
1
- import { K as InternalTokenDocument } from './types-Bc0kA7De.cjs';
1
+ import { K as InternalTokenDocument } from './types-TQHV1MrY.cjs';
2
2
  import { FromSchema, JSONSchema } from 'json-schema-to-ts';
3
3
 
4
4
  /**
@@ -356,11 +356,66 @@ declare const buildConfigSchema: {
356
356
  readonly buildPath: {
357
357
  readonly type: "string";
358
358
  };
359
+ readonly validation: {
360
+ readonly type: "object";
361
+ readonly properties: {
362
+ readonly mode: {
363
+ readonly type: "string";
364
+ readonly enum: readonly ["error", "warn", "off"];
365
+ };
366
+ };
367
+ };
359
368
  readonly hooks: {
360
369
  readonly type: "object";
361
370
  readonly description: "Global build lifecycle hooks (functions, validated at runtime)";
362
371
  readonly additionalProperties: true;
363
372
  };
373
+ readonly lint: {
374
+ readonly description: "Linting configuration";
375
+ readonly $schema: "http://json-schema.org/draft-07/schema#";
376
+ readonly type: "object";
377
+ readonly properties: {
378
+ readonly enabled: {
379
+ readonly type: "boolean";
380
+ readonly description: "Enable linting (default: false, opt-in)";
381
+ };
382
+ readonly failOnError: {
383
+ readonly type: "boolean";
384
+ readonly description: "Fail build on lint errors (default: true)";
385
+ };
386
+ readonly plugins: {
387
+ readonly type: "object";
388
+ readonly description: "Plugins to load (by object or module path string)";
389
+ readonly additionalProperties: {
390
+ readonly oneOf: readonly [{
391
+ readonly type: "string";
392
+ }, {
393
+ readonly type: "object";
394
+ }];
395
+ };
396
+ };
397
+ readonly rules: {
398
+ readonly type: "object";
399
+ readonly description: "Rule configurations";
400
+ readonly additionalProperties: {
401
+ readonly oneOf: readonly [{
402
+ readonly type: "string";
403
+ readonly enum: readonly ["off", "warn", "error"];
404
+ }, {
405
+ readonly type: "array";
406
+ readonly minItems: 2;
407
+ readonly items: readonly [{
408
+ readonly type: "string";
409
+ readonly enum: readonly ["off", "warn", "error"];
410
+ }, {
411
+ readonly type: "object";
412
+ }];
413
+ }];
414
+ };
415
+ };
416
+ };
417
+ readonly additionalProperties: false;
418
+ };
364
419
  };
365
420
  readonly additionalProperties: false;
366
421
  };
@@ -1,4 +1,4 @@
1
- import { a as ResolvedToken } from './types-Bc0kA7De.cjs';
1
+ import { R as ResolvedToken } from './types-TQHV1MrY.cjs';
2
2
 
3
3
  /**
4
4
  * @fileoverview Transform types (re-exported from main types for convenience)
@@ -1,4 +1,4 @@
1
- import { a as ResolvedToken } from './types-Bc0kA7De.cjs';
1
+ import { R as ResolvedToken } from './types-TQHV1MrY.cjs';
2
2
 
3
3
  /**
4
4
  * @fileoverview Filter system types for token selection
@@ -1,4 +1,4 @@
1
- import { a as ResolvedToken } from './types-Bc0kA7De.js';
1
+ import { R as ResolvedToken } from './types-TQHV1MrY.js';
2
2
 
3
3
  /**
4
4
  * @fileoverview Transform types (re-exported from main types for convenience)