All files / packages/fds-uif/core/src index.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80                                                                                                                                                               
/**
 * @fds-uif/core
 *
 * Core utilities for Universal Interface Format (UIF).
 *
 * This package provides utilities for working with UIFs:
 *
 * **Merge & Resolution:**
 * - `merge()`: Deep merge UIF foundations and systems with identifier-based array merging
 * - `resolveExtends()`: Resolve `extends` chains to produce fully merged definitions
 *
 * **Validation:**
 * - `validateUif()`: Comprehensive validation of UIF definitions
 * - `validateResolved()`: Validate resolved/merged UIFs
 * - `validateIdentifiers()`: Validate uniqueness of identifiers in UIF arrays
 * - `validateStateReferences()`: Validate state references in stateClasses
 * - `validateVariantConflicts()`: Detect conflicting variant structural changes
 * - `validateMarkers()`: Validate positional markers ($before/$after)
 *
 * **Extraction (for resolved UIFs):**
 * - `getStates()`, `getModifiers()`, `getVariants()`: Extract definitions
 * - `getSlots()`, `getBoundAttributes()`: Traverse structure
 * - `isGenReady()`, `hasState()`, `hasModifier()`: Check properties
 * - `getPropNames()`: Get all prop names for a UIF
 *
 * @example
 * ```ts
 * import {
 *   merge,
 *   resolveExtends,
 *   validateResolved,
 *   getStates,
 *   getSlots,
 *   isGenReady,
 * } from '@fds-uif/core';
 *
 * // Resolve a file's extends chain
 * const resolved = await resolveExtends('./badge.slds.uif.json');
 *
 * // Validate resolved UIF
 * const result = validateResolved(resolved);
 *
 * // Extract information
 * const states = getStates(resolved);
 * const slots = getSlots(resolved);
 * const ready = isGenReady(resolved);
 * ```
 *
 * @packageDocumentation
 */
 
// Re-export all browser-safe utilities
export * from './shared-exports.js';
 
// =============================================================================
// Node.js-only exports (require fs/path)
// =============================================================================
 
// Resolution utilities (require Node.js fs/path)
export { clearResolveCache, hasExtends, resolveExtends, resolveExtendsFromObject } from './resolve.js';
 
// ResolveOptions type (only needed for Node.js resolution)
export type { ResolveOptions } from './types.js';
 
// CSS parsing utilities (require PostCSS/Node.js)
export { generateCssMetadata, parseCssSource, extractCssMetadata } from './css/index.js';
 
// UIF manifest utilities (require Node.js fs)
export {
  createManifest,
  addComponent,
  removeComponent,
  readManifest,
  writeManifest,
  generateManifest,
  updateManifestForComponent,
  removeFromManifest,
} from './manifest/index.js';
export type { SourceManifest, ComponentEntry, BuildResult } from './manifest/types.js';