{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../packages/domain/shared/src/native-resolution.ts","../packages/domain/shared/src/index.ts","../packages/domain/compiler/src/nativeBridge.ts","../packages/domain/compiler/src/compiler/cssGeneratorNative.ts","../packages/domain/compiler/src/compiler/compilationNative.ts","../packages/domain/compiler/src/compiler/cssCompilationNative.ts","../packages/domain/compiler/src/compiler/idRegistryNative.ts","../packages/domain/compiler/src/compiler/streamingNative.ts","../packages/domain/compiler/src/tailwindEngine.ts","../packages/domain/compiler/src/compiler/tailwindEngine.ts","../packages/domain/compiler/src/compiler/index.ts","../packages/domain/compiler/src/parser/index.ts","../packages/domain/compiler/src/analyzer/analyzerNative.ts","../packages/domain/compiler/src/analyzer/themeResolutionNative.ts","../packages/domain/compiler/src/analyzer/scannerNative.ts","../packages/domain/compiler/src/analyzer/index.ts","../packages/domain/compiler/src/cache/cacheNative.ts","../packages/domain/compiler/src/cache/index.ts","../packages/domain/compiler/src/redis/redisNative.ts","../packages/domain/compiler/src/redis/index.ts","../packages/domain/compiler/src/watch/watchSystemNative.ts","../packages/domain/compiler/src/watch/index.ts","../packages/domain/compiler/src/routeGraph.ts","../packages/domain/compiler/src/semanticComponentAnalyzer.ts","../packages/domain/compiler/src/typeGeneratorFromMetadata.ts","../packages/domain/compiler/src/typeGenerationPlugin.ts","../packages/domain/compiler/src/index.ts","../src/umbrella/compiler.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","/**\n * Prebuilt binary resolution untuk native NAPI bindings.\n * QA #1: Resolve native binary dari prebuilt packages atau local build.\n *\n * Prioritas:\n * 1. TW_NATIVE_PATH env var (explicit override)\n * 2. Prebuilt binary dari platform-specific npm package\n * 3. Local build dari source (developer mode)\n */\n\nimport { createRequire } from \"node:module\"\nimport * as fs from \"node:fs\"\nimport * as path from \"node:path\"\n\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\n\n// ESM-safe require — works in both ESM and CJS contexts.\n// Ref: Node.js docs — module.createRequire(filename) hanya terima:\n//   - file URL object, file URL string, atau absolute path string.\n// \"file://unknown\" crash karena bukan URL valid — gunakan process.cwd() sebagai fallback.\n// Ref: https://nodejs.org/api/module.html#modulecreaterequirefilename\nfunction _safeCreateRequire(): NodeRequire {\n  // ESM context: import.meta.url selalu absolute file URL yang valid\n  if (typeof import.meta !== \"undefined\" && import.meta.url && !import.meta.url.includes(\"unknown\")) {\n    return createRequire(import.meta.url)\n  }\n  // CJS context: __filename adalah absolute path yang valid\n  if (typeof __filename !== \"undefined\") {\n    return createRequire(__filename)\n  }\n  // Fallback: process.cwd() mengembalikan absolute path (Node.js docs — process.cwd())\n  return createRequire(new URL(`file://${process.cwd()}/`).href)\n}\n\nconst _require = _safeCreateRequire()\n\nexport interface NativeResolutionResult {\n  path: string | null\n  source: \"env\" | \"prebuilt\" | \"local\" | \"not-found\"\n  platform: string\n  tried: string[]\n}\n\n/** Platform key → prebuilt npm package name */\nconst PLATFORM_MAP: Record<string, string[]> = {\n  \"linux-x64\":    [\"@tailwind-styled/native-linux-x64-gnu\", \"@tailwind-styled/native-linux-x64\"],\n  \"linux-arm64\":  [\"@tailwind-styled/native-linux-arm64-gnu\", \"@tailwind-styled/native-linux-arm64\"],\n  \"darwin-x64\":   [\"@tailwind-styled/native-darwin-x64\"],\n  \"darwin-arm64\": [\"@tailwind-styled/native-darwin-arm64\"],\n  \"win32-x64\":    [\"@tailwind-styled/native-win32-x64-msvc\", \"@tailwind-styled/native-win32-x64\"],\n  \"win32-arm64\":  [\"@tailwind-styled/native-win32-arm64-msvc\", \"@tailwind-styled/native-win32-arm64\"],\n}\n\nfunction platformKey(): string {\n  if (isBrowser) return \"browser\"\n  return `${process.platform}-${process.arch}`\n}\n\n/**\n * Resolve native binary path dari semua sumber yang tersedia.\n *\n * @example\n * const result = resolveNativeBinary()\n * if (result.path) {\n *   const binding = require(result.path)\n * } else {\n *   throw new Error(\"Native binding not found — run npm run build:rust\")\n * }\n */\nexport function resolveNativeBinary(runtimeDir?: string): NativeResolutionResult {\n  const platform = platformKey()\n  const tried: string[] = []\n\n  if (isBrowser) {\n    return { path: null, source: \"not-found\", platform, tried: [\"not available in browser\"] }\n  }\n\n  // 0. Disabled flag — always short-circuit before any I/O\n  // TWS_NO_NATIVE adalah nama canonical; TWS_DISABLE_NATIVE diterima untuk backward compat\n  if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_DISABLE_NATIVE === \"1\") {\n    return { path: null, source: \"not-found\", platform, tried: [] }\n  }\n\n  // 1. Env var override\n  const envPath = process.env.TW_NATIVE_PATH?.trim()\n  if (envPath) {\n    if (fs.existsSync(envPath)) {\n      return { path: envPath, source: \"env\", platform, tried }\n    }\n    tried.push(`env:${envPath} (not found)`)\n  }\n\n  // 2. Prebuilt binary dari platform-specific npm package\n  const prebuiltPkgs = PLATFORM_MAP[platform] ?? []\n  for (const pkg of prebuiltPkgs) {\n    try {\n      const candidate = _require.resolve(`${pkg}/tailwind_styled_parser.node`)\n      if (fs.existsSync(candidate)) {\n        return { path: candidate, source: \"prebuilt\", platform, tried }\n      }\n      tried.push(`prebuilt:${pkg} (resolved but missing)`)\n    } catch {\n      tried.push(`prebuilt:${pkg} (not installed)`)\n    }\n  }\n\n  // 2b. .node file bundled inside this package itself (via \"files\": [\"native/*.node\"])\n  //     Covers the case where user installs tailwind-styled-v4 directly from npm\n  //     and the .node file lands at node_modules/tailwind-styled-v4/native/*.node\n  const napiPlatform = platform === \"linux-x64\" ? \"linux-x64-gnu\"\n    : platform === \"linux-arm64\" ? \"linux-arm64-gnu\"\n    : platform\n  const BINARY_NAMES_SELF = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\n  if (runtimeDir) {\n    // runtimeDir is typically dist/ — go up to package root, then into native/\n    for (const depth of [\"..\", path.join(\"..\", \"..\"), path.join(\"..\", \"..\", \"..\")]) {\n      const pkgRoot = path.resolve(runtimeDir, depth)\n      for (const bin of BINARY_NAMES_SELF) {\n        for (const suffix of [\"\", `.${platform}`, `.${napiPlatform}`]) {\n          const candidate = path.resolve(pkgRoot, \"native\", `${bin}${suffix}.node`)\n          tried.push(`self-bundled:${candidate}`)\n          if (fs.existsSync(candidate)) {\n            return { path: candidate, source: \"prebuilt\", platform, tried }\n          }\n        }\n      }\n    }\n  }\n\n  // 3. Local build candidates\n  const cwd = process.cwd()\n  const base = runtimeDir ?? cwd\n  // napi-rs naming: platform key may have -gnu suffix on Linux (already computed above)\n\n  // Both possible binary names:\n  // - \"tailwind_styled_parser\" (old hardcoded name in resolvers)\n  // - \"tailwind-styled-native\" (actual binaryName in native/package.json)\n  const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\n\n  const localCandidates: string[] = []\n\n  for (const bin of BINARY_NAMES) {\n    localCandidates.push(path.resolve(base, `${bin}.node`))\n    localCandidates.push(path.resolve(base, \"..\", `${bin}.node`))\n    localCandidates.push(path.resolve(base, `${bin}.${platform}.node`))\n    localCandidates.push(path.resolve(base, `${bin}.${napiPlatform}.node`))\n  }\n\n  // Walk up from cwd AND base to find repo root native/ dir\n  // Needed when npm workspaces sets cwd to the package subdir\n  for (const startDir of [cwd, base]) {\n    let dir = startDir\n    for (let i = 0; i < 6; i++) {\n      const nativeDir = path.resolve(dir, \"native\")\n      for (const bin of BINARY_NAMES) {\n        localCandidates.push(path.resolve(nativeDir, `${bin}.node`))\n        localCandidates.push(path.resolve(nativeDir, `${bin}.${platform}.node`))\n        localCandidates.push(path.resolve(nativeDir, `${bin}.${napiPlatform}.node`))\n        localCandidates.push(path.resolve(nativeDir, \"target\", \"release\", `${bin}.node`))\n      }\n      const parent = path.resolve(dir, \"..\")\n      if (parent === dir) break\n      dir = parent\n    }\n  }\n\n  for (const candidate of localCandidates) {\n    tried.push(`local:${candidate}`)\n    if (fs.existsSync(candidate)) {\n      return { path: candidate, source: \"local\", platform, tried }\n    }\n  }\n\n  return { path: null, source: \"not-found\", platform, tried }\n}\n\n/**\n * Format human-readable error untuk \"binary not found\".\n */\nexport function formatNativeNotFoundError(result: NativeResolutionResult): string {\n  const lines = [\n    `[tailwind-styled] Native binding not found for ${result.platform}`,\n    ``,\n    `Tried:`,\n    ...result.tried.map(t => `  - ${t}`),\n    ``,\n    `Solutions:`,\n    `  1. Build locally:     npm run build:rust`,\n    `  2. Install prebuilt:  npm install @tailwind-styled/native-${result.platform}`,\n    `  3. Override path:     TW_NATIVE_PATH=/path/to/parser.node`,\n  ]\n  return lines.join(\"\\n\")\n}","import { createHash } from \"node:crypto\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { createRequire } from \"node:module\"\n\n// Native-only: Node.js is always available. No browser fallback.\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type TokenMap = Record<string, string>\n\nexport type VariantValue = string | number | boolean | undefined\n\nexport type VariantProps = Record<string, VariantValue>\n\nexport type HtmlTagName = keyof HTMLElementTagNameMap\n\nexport type CompoundCondition = Record<string, string | number | boolean>\n\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Logging\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface Logger {\n  warn(...args: unknown[]): void\n  debug(...args: unknown[]): void\n  error(...args: unknown[]): void\n  log(...args: unknown[]): void\n}\n\nexport function createLogger(namespace: string): Logger {\n  const prefix = `[${namespace}]`\n  return {\n    warn(...args: unknown[]) {\n      process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n    },\n    debug(...args: unknown[]) {\n      process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n    },\n    error(...args: unknown[]) {\n      process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n    },\n    log(...args: unknown[]) {\n      process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n    },\n  }\n}\n\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\n  const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\n  return (msg: string) => {\n    if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\n      console.debug(prefix, msg)\n    }\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Error handling\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\n\ntype ZodLikeIssue = {\n  path?: readonly PropertyKey[]\n  message?: string\n}\n\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\n  if (!path || path.length === 0) return \"(root)\"\n  return path\n    .map((segment) =>\n      typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\n    )\n    .join(\".\")\n}\n\nexport class TwError extends Error {\n  /** @deprecated Gunakan source */\n  public readonly domain: string\n  public readonly source: ErrorSource\n  public readonly code: string\n  public readonly originalCause?: unknown\n\n  constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\n    super(message)\n    this.name = \"TwError\"\n    this.domain = domainOrSource\n    this.source = domainOrSource as ErrorSource\n    this.code = code\n    this.originalCause = cause\n    if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\n  }\n\n  static fromIo(code: string, message: string): TwError {\n    return new TwError(\"io\", code, message)\n  }\n\n  static fromCompile(code: string, message: string): TwError {\n    return new TwError(\"compile\", code, message)\n  }\n\n  static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\n    if (err instanceof TwError) return err\n    if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\n    if (err && typeof err === \"object\") {\n      const e = err as { code?: string; message?: string }\n      return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\n    }\n    return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\n  }\n\n  /** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\n  static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\n    const first = err.issues?.[0] ?? err.errors?.[0]\n    const path = formatIssuePath(first?.path)\n    const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\n    return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\n  }\n\n  static wrap(source: string, code: string, err: unknown): TwError {\n    if (err instanceof TwError) return err\n    if (err instanceof Error) return new TwError(source, code, err.message, err)\n    return new TwError(source, code, String(err), err)\n  }\n\n  override toString(): string {\n    return `TwError [${this.source}:${this.code}] ${this.message}`\n  }\n\n  toJSON(): { name: string; source: string; code: string; message: string } {\n    return { name: this.name, source: this.source, code: this.code, message: this.message }\n  }\n\n  toCliMessage(): string {\n    return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\n  }\n}\n\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\n  return TwError.wrap(domain, code, error)\n}\n\nexport function isTwError(err: unknown): err is TwError {\n  return err instanceof TwError\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Native binding resolution\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface LoadNativeBindingOptions<T> {\n  runtimeDir: string\n  candidates: string[]\n  isValid: (module: unknown) => module is T\n  invalidExportMessage: string\n}\n\nexport interface LoadNativeBindingResult<T> {\n  binding: T | null\n  loadErrors: Array<{ path: string; message: string }>\n  loadedPath?: string\n}\n\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\n  const { runtimeDir, candidates, isValid } = options\n  const loadErrors: Array<{ path: string; message: string }> = []\n\n  for (const candidate of candidates) {\n    const candidatePath = path.resolve(runtimeDir, candidate)\n    try {\n      if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\n        continue\n      }\n      const mod = requireNativeModule(candidatePath)\n      if (mod && isValid(mod)) {\n        return { binding: mod, loadErrors, loadedPath: candidatePath }\n      }\n      loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\n    } catch (e) {\n      loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\n    }\n  }\n\n  return { binding: null, loadErrors }\n}\n\nconst _require = createRequire(\n  typeof __filename !== \"undefined\"\n    ? `file://${__filename}`\n    : (import.meta.url ?? \"file://unknown\")\n)\n\nfunction requireNativeModule(p: string): unknown {\n  return _require(p)\n}\n\nexport interface ResolveCandidatesOptions {\n  runtimeDir?: string\n  envVarNames?: string[]\n  includeDefaultCandidates?: boolean\n  enforceNodeExtensionForEnvPath?: boolean\n  /** @deprecated — ignored, kept for backward compat */\n  packageName?: string\n}\n\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\n  const {\n    envVarNames = [\"TW_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\n    includeDefaultCandidates = true,\n    enforceNodeExtensionForEnvPath = false,\n  } = options\n  // Default ke cwd kalau runtimeDir tidak disediakan\n  const runtimeDir = options.runtimeDir || process.cwd()\n  const candidates: string[] = []\n\n  for (const envVar of envVarNames) {\n    const envPath = process.env[envVar]\n    if (envPath) {\n      candidates.push(enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\") ? envPath + \".node\" : envPath)\n    }\n  }\n\n  if (!includeDefaultCandidates) return candidates\n\n  if (fs.existsSync(runtimeDir)) {\n    try {\n      for (const entry of fs.readdirSync(runtimeDir)) {\n        if (entry.endsWith(\".node\")) candidates.push(entry)\n      }\n    } catch { /* ignore read errors */ }\n  }\n\n  const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\n  const napiPlatform = process.platform === \"linux\" && process.arch === \"x64\" ? \"linux-x64-gnu\"\n    : process.platform === \"linux\" && process.arch === \"arm64\" ? \"linux-arm64-gnu\"\n      : `${process.platform}-${process.arch}`\n\n  for (const bin of BINARY_NAMES) {\n    candidates.push(path.resolve(runtimeDir, `${bin}.node`))\n    candidates.push(path.resolve(runtimeDir, `${bin}.${napiPlatform}.node`))\n    // 1 level: dist/ → package-root/native/ (published npm package)\n    candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.node`))\n    candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.${napiPlatform}.node`))\n    // cwd fallback (user project root)\n    candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.node`))\n    candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.${napiPlatform}.node`))\n    // 4 level: dist/ → package/ → domain/ → packages/ → repo-root/ (monorepo dev)\n    candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\n    candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.${napiPlatform}.node`))\n    // 3 level fallback\n    candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\n  }\n\n  return Array.from(new Set(candidates))\n}\n\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\n  if (dir) return path.resolve(dir)\n  try {\n    return path.dirname(fileURLToPath(importMetaUrl))\n  } catch {\n    return process.cwd()\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hashing\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\n  const hash = createHash(algorithm).update(content).digest(\"hex\")\n  return length ? hash.slice(0, length) : hash\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Error formatting\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function formatErrorMessage(error: unknown): string {\n  if (error instanceof TwError) return error.toString()\n  if (error instanceof Error) return error.message\n  return String(error)\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LRU Cache\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class LRUCache<K, V> {\n  private capacity: number\n  private cache: Map<K, V>\n\n  constructor(capacity: number) {\n    this.capacity = capacity\n    this.cache = new Map()\n  }\n\n  get(key: K): V | undefined {\n    if (!this.cache.has(key)) return undefined\n    const value = this.cache.get(key)!\n    this.cache.delete(key)\n    this.cache.set(key, value)\n    return value\n  }\n\n  set(key: K, value: V): void {\n    if (this.cache.has(key)) {\n      this.cache.delete(key)\n    } else if (this.cache.size >= this.capacity) {\n      const firstKey = this.cache.keys().next().value\n      if (firstKey !== undefined) {\n        this.cache.delete(firstKey)\n      }\n    }\n    this.cache.set(key, value)\n  }\n\n  delete(key: K): boolean {\n    return this.cache.delete(key)\n  }\n\n  has(key: K): boolean {\n    return this.cache.has(key)\n  }\n\n  clear(): void {\n    this.cache.clear()\n  }\n\n  entries(): IterableIterator<[K, V]> {\n    return this.cache.entries()\n  }\n\n  get size(): number {\n    return this.cache.size\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Trace Utilities\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\nexport {\n  getHealthColor,\n  getModeColor,\n  formatMemory,\n  formatDuration,\n  calculateHealth,\n  getBuildTimeColor,\n  getMemoryColor,\n  createTraceSnapshot,\n  getPipelinePercentages,\n} from \"./trace\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Performance Telemetry\n// ─────────────────────────────────────────────────────────────────────────────\n\n\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Error Codes\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type { ErrorCode } from \"./error-codes\"\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Tailwind Compatibility\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type { TailwindInfo } from \"./compatibility\"\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\n\n// ── Native binding schemas (Zod boundary validation)\nexport {\n  NativeScanFileSchema, NativeScanResultSchema,\n  NativeAnalyzerReportSchema, NativeTransformResultSchema,\n  NativeCssCompileResultSchema, NativeWatchResultSchema,\n  NativeCacheEntrySchema, NativeCacheReadResultSchema,\n  safeParseNative, parseNative,\n} from './native-schemas'\n\n// ── ESM-safe runtime helpers ──────────────────────────────────────────────\nexport {\n  createEsmRequire,\n  getDirname,\n  getFilename,\n  resolveFromRoot,\n  tryRequire,\n  resolveNativeNodePath,\n} from \"./esmHelpers\"\n\n// ── Performance telemetry ────────────────────────────────────────────────────\nexport {\n  TelemetryCollector,\n  getGlobalTelemetry,\n  resetGlobalTelemetry,\n  createBuildTimer,\n  type BuildTelemetry,\n  type TelemetrySummary,\n  type BuildPhases,\n} from \"./telemetry\"\n\n// ── Config/JSON schema validation ─────────────────────────────────────────────\nexport {\n  ScanCacheSchema,\n  ScanCacheClassEntrySchema,\n  TailwindConfigSchema,\n  RegistryPluginEntrySchema,\n  RegistryFileSchema,\n  PackageJsonSchema,\n  parseJsonWithSchema,\n  parseJsonFileWithSchema,\n  type ScanCache,\n  type ScanCacheClassEntry,\n  type TailwindConfig,\n  type RegistryPluginEntry,\n  type RegistryFile,\n  type PackageJson,\n} from \"./configSchemas\"\n\n// ── Worker/bootstrap path resolution ─────────────────────────────────────────\nexport {\n  resolveWorkerPath,\n  resolveLoaderPath,\n  type WorkerPathOptions,\n  type WorkerPathResult,\n} from \"./workerResolver\"\n\n// ── Codegen helpers ───────────────────────────────────────────────────────────\nexport {\n  generateComponentCode,\n  generateStorybookStory,\n  generateClassRenameCodemod,\n  generateBarrelFile,\n  type ComponentCodegenOptions,\n} from \"./codegen\"\n\n// ── Native binary resolution (QA #1) ─────────────────────────────────────────\nexport {\n  resolveNativeBinary,\n  formatNativeNotFoundError,\n  type NativeResolutionResult,\n} from \"./native-resolution\"\n\n// ── Shared observability contract ────────────────────────────────────────────\nexport {\n  createObservabilityClient,\n  type ClassInspection,\n  type ClassProperty,\n  type ClassUsageLocation,\n  type BuildTrace,\n  type BuildPhaseTrace,\n  type DashboardMetrics,\n  type DashboardSummary,\n  type ObservabilityClient,\n} from \"./observability\"\n\nexport {\n  TW_STATE_STATIC_FILENAME,\n  extractStaticStateCss,\n  appendStaticStateCssToSafelist,\n  type TwStateConfigEntry,\n  type StaticStateCssInput,\n  type GeneratedStateRule,\n  type StaticStateExtractionResult,\n} from \"./staticStateExtractor\"\nexport { setGlobalLogFile } from \"./logger\"","/**\n * tailwind-styled-v5 — Native Bridge Loader\n *\n * Uses @tailwind-styled/shared for native binding resolution.\n * All functions require native Rust binding - no JS fallback.\n */\n\nimport { resolveNativeBinary, resolveRuntimeDir } from \"@tailwind-styled/shared\"\n\n// require() is safe here — tsup banner injects CJS-compatible require into ESM output.\n// See tsup.config.ts esbuildOptions banner for how this is set up.\nconst _loadNative = (path: string): unknown => require(path)\n\nexport interface ComponentMetadata {\n  component: string\n  tag: string\n  baseClass: string\n  subComponents: Record<string, { tag?: string; class: string }>\n}\n\nexport interface NativeRscResult {\n  isServer: boolean\n  needsClientDirective: boolean\n  clientReasons: string[]\n}\n\nconst log = (...args: unknown[]) => {\n  if (process.env.DEBUG?.includes(\"compiler:native\")) {\n    console.log(\"[compiler:native]\", ...args)\n  }\n}\n\n// ── Structured Type Definitions ─────────────────────────────────────────────\n\nexport interface ScanWorkspaceResult {\n  files: string[]\n  total_files: number\n  classes: string[]\n  unique_classes: number\n  duration_ms: number\n  errors: string[]\n}\n\nexport interface ScanFileResult {\n  file: string\n  classes: string[]\n  class_count: number\n  has_tw_usage: boolean\n  size_bytes: number\n  duration_ms: number\n}\n\nexport interface BatchExtractResult {\n  file: string\n  classes: string[]\n  contentHash: string\n  ok: boolean\n  error?: string\n}\n\nexport interface SafelistCheckResult {\n  matched: string[]\n  unmatched: string[]\n  safelistSize: number\n}\n\nexport interface PrefilterFileResult {\n  file: string\n  has_tw_usage: boolean\n  duration_ms: number\n  size_bytes: number\n  status: \"processed\" | \"skipped\" | \"error\"\n  error?: string\n}\n\nexport interface DeadCodeResult {\n  deadInCss: string[]\n  deadInSource: string[]\n  liveClasses: string[]\n  totalCssClasses: number\n  totalSourceClasses: number\n}\n\nexport interface ProcessedCssResult {\n  css: string\n  size_bytes: number\n  resolved_classes: string[]\n  unknown_classes: string[]\n}\n\nexport interface ContainerConfig {\n  tag: string\n  containerJson: string\n  containerName?: string\n  breakpoints: Array<{ key: string; classes: string }>\n}\n\nexport interface HoistResult {\n  code: string\n  hoisted: string[]\n  warnings: string[]\n}\n\nexport interface VariantTableResult {\n  id: string\n  tableJson: string\n  keys: string[]\n  defaultKey: string\n  combinations: number\n}\n\nexport interface ClassifyResult {\n  className: string\n  bucket: string\n  sortOrder: number\n}\n\nexport interface MergeResult {\n  declarationsJson: string\n  declarationString: string\n  count: number\n}\n\nexport interface ClassUsageItem {\n  className: string\n  usageCount: number\n  filesJson: string\n  bundleSizeBytes: number\n  isDeadCode: boolean\n}\n\nexport interface StateCssConfig {\n  tag: string\n  componentName: string\n  statesJson: string\n  sourceFile: string\n}\n\nexport interface GeneratedStateCss {\n  selector: string\n  declarations: string\n  cssRule: string\n  componentName: string\n  stateName: string\n}\n\n// ── Type Exports ────────────────────────────────────────────────────────────────\n\nexport interface NativeBridge {\n  // CSS Compiler - New Rust implementation\n  generateCssNative?: (classes: string[], theme_json: string) => string\n  getCacheStats?: () => [number, number]\n  clearThemeCache?: () => void\n  // Core transform\n  transformSource?: (source: string, opts?: Record<string, string>) => NativeTransformResult | null\n  extractClassesFromSource?: (source: string) => string[]\n  hasTwUsage?: (source: string) => boolean\n  isAlreadyTransformed?: (source: string) => boolean\n  // Phase 5: Scanner functions (snake_case from Rust)\n  scan_workspace?: (root: string, extensions?: string[]) => ScanWorkspaceResult\n  extract_classes_from_source?: (source: string) => string[]\n  batch_extract_classes?: (filePaths: string[]) => BatchExtractResult[]\n  check_against_safelist?: (classes: string[], safelist: string[]) => SafelistCheckResult\n  scan_file?: (filePath: string) => ScanFileResult\n  collect_files?: (root: string, extensions?: string[]) => string[]\n  walk_and_prefilter_source_files?: (root: string, extensions?: string[]) => PrefilterFileResult[]\n  generate_sub_component_types?: (root: string, outputPath?: string) => string\n  // Class Extractor\n  extractAllClasses?: (source: string) => string[]\n  parseClasses?: (raw: string) => Array<{ raw: string; type: string }>\n  // Application functions\n  extractComponentUsage?: (source: string) => Array<{ component: string; propsJson: string }>\n  normalizeAndDedupClasses?: (raw: string) => { normalized: string; duplicatesRemoved: number; uniqueCount: number }\n  diffClassLists?: (previous: string[], current: string[]) => { added: string[]; removed: string[]; unchanged: string[]; hasChanges: boolean }\n  batchExtractClasses?: (filePaths: string[]) => Array<{ file: string; classes: string[]; contentHash: string; ok: boolean; error?: string }>\n  checkAgainstSafelist?: (classes: string[], safelist: string[]) => { matched: string[]; unmatched: string[]; safelistSize: number }\n  // Batch 2\n  hoistComponents?: (source: string) => HoistResult\n  compileVariantTable?: (configJson: string) => VariantTableResult\n  classifyAndSortClasses?: (classes: string[]) => ClassifyResult[]\n  mergeCssDeclarations?: (cssChunks: string[]) => MergeResult\n  analyzeClassUsage?: (classes: string[], scanResultJson: string, css: string) => ClassUsageItem[]\n  analyzeRsc?: (source: string, filename: string) => {\n    isServer: boolean\n    needsClientDirective: boolean\n    clientReasons: string[]\n  }\n  analyzeClasses?: (\n    filesJson: string,\n    cwd: string,\n    flags: number\n  ) => {\n    css?: string\n    code: string\n    classes: string[]\n    changed: boolean\n    rscJson?: string\n    metadataJson?: string\n    safelist?: string[]\n  } | null\n  // CSS compilation\n  compileCss?: (classes: string[], prefix?: string | null) => { css: string; classes: string[] }\n  compileCssLightning?: (classes: string[]) => string\n  /** Post-process raw Tailwind-generated CSS dengan LightningCSS di Rust */\n  detectDeadCode?: (scanResultJson: string, css: string) => DeadCodeResult\n  processTailwindCssLightning?: (css: string) => ProcessedCssResult\n  processTailwindCssWithTargets?: (css: string, targets: string | null) => { css: string; size_bytes: number }\n  // Atomic CSS (atomic.rs)\n  parseAtomicClass?: (twClass: string) => string | null\n  generateAtomicCss?: (rulesJson: string) => string\n  toAtomicClasses?: (twClasses: string) => string\n  clearAtomicRegistry?: () => void\n  atomicRegistrySize?: () => number\n  // Impact analysis (impact_analysis.rs)\n  calculateImpact?: (impactJson: string) => string\n  calculateRisk?: (className: string, totalComponents: number) => string\n  calculateSavings?: (bundleSizeBytes: number, componentCount: number) => number\n  // Static state CSS pre-generation (state_css.rs)\n  extractTwStateConfigs?: (source: string, filename: string) => StateCssConfig[]\n  generateStaticStateCss?: (inputs: Array<{\n    tag: string\n    componentName: string\n    statesJson: string\n  }>, resolvedCss: string | null) => GeneratedStateCss[]\n  extractAndGenerateStateCss?: (source: string, filename: string) => GeneratedStateCss[]\n  /**\n   * Convert layout/utility class string ke CSS declarations.\n   * Dipakai oleh extractContainerCssFromSource sebagai Rust-accelerated fallback.\n   */\n  layoutClassesToCss?: (classes: string) => string\n  /**\n   * Hash string dengan algoritma tertentu, return n karakter pertama.\n   * Dipakai untuk generate deterministic container CSS IDs.\n   */\n  hashContent?: (input: string, algo: string, length: number) => string\n  /** Hapus dead CSS selectors + minify via Lightning CSS. */\n  eliminateDeadCss?: (css: string, deadClasses: string[]) => string\n  /** Dead code detection + strip + Lightning CSS minify dalam satu call. */\n  optimizeCss?: (css: string) => string\n  /** Extract tw container configs dari source untuk static @container CSS generation. */\n  extractTwContainerConfigs?: (source: string) => Array<{\n    tag: string\n    containerJson: string\n    containerName?: string\n    breakpoints: Array<{ key: string; classes: string }>\n  }>\n  \n  // Phase 5.1: Cache Management (9 functions)\n  get_cache_statistics?: () => string  // Returns JSON\n  clear_all_caches?: () => void\n  clear_parse_cache?: () => void\n  clear_resolve_cache?: () => void\n  clear_compile_cache?: () => void\n  clear_css_gen_cache?: () => void\n  get_cache_optimization_hints?: (hit_rate_percent: number, memory_used_mb: number) => string  // Returns JSON\n  estimate_optimal_cache_config_native?: (total_budget_mb: number, workload_type: string) => string  // Returns JSON\n  cache_read?: (cache_path: string) => { entries_json: string }\n  cache_write?: (cache_path: string, entries: Array<{ file: string; content_hash: string; classes: string[]; mtime_ms: number; size_bytes: number }>) => boolean\n  cache_priority?: (mtime_ms: number, size_bytes: number, hit_count: number) => number\n  \n  // Phase 5.1: Theme Resolution Extended (7 functions)\n  resolve_variants?: (configJson: string) => string  // Returns JSON\n  validate_variant_config?: (configJson: string) => string  // Returns JSON\n  resolve_cascade?: (baseThemeJson: string, overridesJson: string) => string  // Returns JSON\n  resolve_class_names?: (classNames: string[], themeJson: string) => string  // Returns JSON\n  resolve_conflict_group?: (groupName: string, themeJson: string) => string  // Returns JSON\n  resolve_theme_value?: (keyPath: string, themeJson: string) => string | null\n  resolve_simple_variants?: (configJson: string) => string  // Returns JSON\n  \n  // Phase 5.1: Streaming & Incremental Processing (8 functions)\n  process_file_change?: (fileChangeJson: string) => string  // Returns JSON\n  compute_incremental_diff?: (oldScanJson: string, newScanJson: string) => string  // Returns JSON\n  create_fingerprint?: (filePath: string, fileContent: string) => string  // Returns JSON\n  inject_state_hash?: (css: string, stateHash: string) => string  // Returns JSON\n  prune_stale_entries?: (maxAgeSeconds: number, maxEntries: number) => string  // Returns JSON\n  rebuild_workspace_result?: (rootDir: string, extensions?: string[]) => string  // Returns JSON\n  scan_file_native?: (filePath: string, fileContent: string) => string  // Returns JSON\n  scan_files_batch_native?: (filesJson: string) => string  // Returns JSON\n  \n  // Phase 5.2: CSS Compilation (12 functions)\n  generate_css?: (rule_json: string, minify?: boolean | null) => string\n  generate_css_batch?: (rules_json: string, minify?: boolean | null) => string\n  compile_class?: (input: string) => string  // Returns JSON\n  compile_classes?: (inputs: string[]) => string  // Returns JSON\n  compile_to_css?: (input: string, minify: boolean) => string\n  compile_to_css_batch?: (inputs: string[], minify: boolean) => string\n  minify_css?: (css: string) => string\n  compile_animation?: (animationName: string, from: string, to: string) => string  // Returns JSON\n  compile_keyframes?: (name: string, stopsJson: string) => string  // Returns JSON\n  compile_theme?: (tokensJson: string, themeName: string, prefix: string) => string  // Returns JSON\n  tw_merge?: (classString: string) => string\n  tw_merge_many?: (classStrings: string[]) => string\n  tw_merge_with_separator?: (classString: string, options: Record<string, unknown>) => string\n  tw_merge_many_with_separator?: (classStrings: string[], options: Record<string, unknown>) => string\n  tw_merge_raw?: (classLists: string[]) => string\n  \n  // Phase 5.2: ID Registry (16 functions)\n  id_registry_create?: () => number\n  id_registry_generate?: (handle: number, name: string) => number\n  id_registry_lookup?: (handle: number, name: string) => number\n  id_registry_next?: (handle: number) => number\n  id_registry_destroy?: (handle: number) => void\n  id_registry_reset?: (handle: number) => void\n  id_registry_snapshot?: (handle: number) => string  // Returns JSON\n  id_registry_active_count?: () => number\n  register_property_name?: (propertyName: string) => number\n  register_value_name?: (valueName: string) => number\n  property_id_to_string?: (propertyId: number) => string\n  value_id_to_string?: (valueId: number) => string\n  reverse_lookup_property?: (propertyId: number) => string\n  reverse_lookup_value?: (valueId: number) => string\n  id_registry_export?: (handle: number) => string\n  id_registry_import?: (importedData: string) => number\n  \n  // Phase 5.3: Redis Integration (40 functions)\n  redis_ping?: () => string\n  redis_get?: (key: string) => string\n  redis_set?: (key: string, value: string, ttl_seconds?: number) => string\n  redis_delete?: (key: string) => number\n  redis_exists?: (key: string) => number\n  redis_mget?: (keys: string[]) => string  // Returns JSON\n  redis_mset?: (pairs: Array<[string, string]>) => string\n  redis_flush_db?: () => number\n  redis_flush_all?: () => number\n  redis_pool_connect?: (host: string, port: number, pool_size?: number) => string\n  redis_pool_stats?: () => string  // Returns JSON\n  redis_pool_reconnect?: () => string\n  redis_enable_cluster?: (initial_nodes: string[]) => string  // Returns JSON\n  redis_disable_cluster?: () => string\n  redis_cluster_status?: () => string  // Returns JSON\n  redis_subscribe?: (channel: string) => string\n  redis_publish?: (channel: string, message: string) => number\n  redis_expiration_set?: (key: string, ttl_seconds: number) => number\n  redis_expiration_get?: (key: string) => string  // Returns JSON\n  redis_info?: () => string\n  redis_monitor?: () => string\n  redis_cache_size?: () => number\n  redis_cache_key_count?: () => number\n  redis_cache_clear?: () => number\n  redis_cache_hit_rate?: () => number\n  redis_enable_persistence?: (mode: string) => string\n  redis_disable_persistence?: () => string\n  redis_snapshot?: () => string\n  redis_memory_stats?: () => string\n  redis_optimize_memory?: () => number\n  redis_set_eviction_policy?: (policy: string) => string\n  redis_get_eviction_policy?: () => string\n  redis_replicate?: (target_host: string, target_port: number) => number\n  redis_replication_status?: () => string\n  redis_cache_sync?: (peers: string[]) => number\n  redis_enable_cache_warming?: (key_pattern: string) => string\n  redis_disable_cache_warming?: () => string\n  redis_diagnose?: () => string\n  \n  // Phase 5.4: Watch System & File Monitoring (20 functions)\n  start_watch?: (root_path: string, patterns?: string[]) => number\n  poll_watch_events?: (handle: number, timeout_ms?: number) => string  // Returns JSON\n  stop_watch?: (handle: number) => number\n  watch_add_pattern?: (handle: number, pattern: string) => string\n  watch_remove_pattern?: (handle: number, pattern: string) => string\n  watch_get_active_handles?: () => string  // Returns JSON\n  watch_clear_all?: () => number\n  watch_event_type_to_string?: (event_type_code: number) => string\n  is_watch_running?: (handle: number) => boolean\n  get_watch_stats?: () => string  // Returns JSON\n  watch_pause?: (handle: number) => string\n  watch_resume?: (handle: number) => string\n  scan_cache_optimizations?: () => string  // Returns JSON\n  get_plugin_hooks?: () => string  // Returns JSON\n  register_plugin_hook?: (hook_name: string, handler_id: string) => string\n  unregister_plugin_hook?: (hook_name: string, handler_id: string) => string\n  emit_plugin_hook?: (hook_name: string, data_json: string) => string\n  get_compilation_metrics?: () => string  // Returns JSON\n  reset_compilation_metrics?: () => string\n  validate_css_output?: (css: string) => string  // Returns JSON\n  get_compiler_diagnostics?: () => string  // Returns JSON\n\n  // ── Cache Management (napi_bridge_cache.rs) ────────────────────────────────\n  configureCacheBackend?: (configJson: string) => string\n  getRecommendedCacheConfig?: (workloadType: string) => string\n  clearAllCachesNapi?: () => void\n  clearResolveCacheNapi?: () => void\n  clearCompileCacheNapi?: () => void\n  clearCssGenCacheNapi?: () => void\n  getResolverPoolStats?: () => string\n  clearResolverPool?: () => string\n  resolveColorCached?: (themeId: number, color: string, configJson: string) => string\n  resolveSpacingCached?: (themeId: number, spacing: string, configJson: string) => string\n  resolveFontSizeCached?: (themeId: number, size: string, configJson: string) => string\n  resetResolverPoolStats?: () => void\n  getCacheOptimizationHints?: () => string\n  estimateStreamingBatchSize?: (targetMemoryMb: number) => string\n\n  // ── Parsing (napi_bridge_parsing.rs) ──────────────────────────────────────\n  parseClass?: (input: string) => string\n  compileClassNapi?: (input: string) => string\n  getParseStats?: () => string\n  clearParseCacheNapi?: () => void\n\n  // ── Theme Parsing (napi_bridge_theme_parsing.rs) ───────────────────────────\n  parseColorsNapi?: (colorsJson: string) => string | Record<string, string>\n  parseSpacingNapi?: (spacingJson: string) => string | Record<string, string>\n  parseTransformNapi?: (transformJson: string) => string | Record<string, string>\n  normalizeColorNapi?: (color: string, opacity: string) => string\n  sanitizeColorNapi?: (color: string) => string\n  splitRgbaNapi?: (color: string) => string | { r: number; g: number; b: number; a: number }\n  validateColorsNapi?: (colorsJson: string) => boolean\n  validateBreakpointsNapi?: (breakpointsJson: string) => boolean\n  runHealthCheck?: () => void\n\n  // ── Watch (napi_bridge_watch.rs) ───────────────────────────────────────────\n  watchFiles?: (rootDir: string, optionsJson?: string | null) => string\n  stopWatching?: (handleId: number) => string\n  getWatchEvents?: (handleId: number, maxEvents?: number | null) => string\n  getWatchPerformance?: () => string\n  clearWatchStats?: () => string\n  getActiveWatches?: () => number\n  setWatchMetrics?: (metricName: string, value: string) => string\n  setWatchAggregation?: (aggregationType: string) => string\n\n  // ── Week 6 Optimization (week6_api.rs) ────────────────────────────────────\n  getOptimizationRecommendations?: (hitRate: number, memoryMb: number, classCount: number) => string\n  estimateOptimalBatchSize?: (totalClasses: number, memoryAvailableMb: number) => number\n  predictMemoryUsage?: (uniqueClasses: number, avgClassSizeBytes: number) => number\n  recommendCachingStrategy?: (isSsr: boolean, memoryConstraintMb: number) => string\n  benchmarkStreamingVsBuffered?: (classCount: number) => string\n  getWeek6OptimizationStatus?: () => string\n\n  // ── Analysis & Memory Profiling (napi_bridge_analysis.rs) ──────────────────\n  getWeek6FeaturesStatus?: () => string\n  getMemoryStatsNative?: () => string\n  getMemoryRecommendationsNative?: () => string\n  estimateOptimalCacheConfigNative?: (workloadType: string, expectedEntries: number) => string\n  resetMemoryStats?: () => void\n\n  // ── Scan Cache (scan_cache_api.rs) ────────────────────────────────────────\n  scanCacheGet?: (filePath: string, contentHash: string) => string[] | null\n  scanCachePut?: (filePath: string, contentHash: string, classes: string[], mtimeMs: number, size: number) => void\n  scanCacheInvalidate?: (filePath: string) => void\n  scanCacheStats?: () => { size: number }\n\n  // ── Missing Theme, Redis, and Utility Functions ──────────────────────────\n  resolveColor?: (color: string) => string\n  resolveSpacing?: (spacing: string) => string\n  resolveFontSize?: (size: string) => string\n  resolveBreakpoint?: (breakpoint: string) => string\n  redisExpire?: (key: string, ttlSeconds: number) => string\n  redisTtl?: (key: string) => string\n  redisGetConfig?: () => string\n  redisShutdown?: () => string\n  redisSyncNodes?: () => string\n  resetCacheStats?: () => void\n}\n\nexport interface NativeTransformResult {\n  code: string\n  classes: string[]\n  changed: boolean\n  rscJson?: string\n  metadataJson?: string\n}\n\nexport interface ClassExtractResult {\n  classes: string[]\n  component_names: string[]\n  has_tw_usage: boolean\n  has_use_client: boolean\n  imports: string[]\n}\n\nconst NATIVE_UNAVAILABLE_MESSAGE =\n  \"[tailwind-styled/compiler v5] Native binding is required but not available.\\n\" +\n  \"This package requires native Rust bindings. There is no JavaScript fallback.\\n\" +\n  \"Please ensure:\\n\" +\n  \"  1. The native module is properly installed\\n\" +\n  \"  2. You have run: npm run build:rust (or use prebuilt binary)\\n\" +\n  \"\\n\" +\n  \"For help, see: https://tailwind-styled.dev/docs/install\"\n\n// ── Native Bridge - Factory Pattern\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet nativeBridge: NativeBridge | null = null\nlet bridgeLoadAttempted = false\nlet bridgeLoadError: Error | null = null\n\nconst isValidNativeBridge = (mod: unknown): mod is NativeBridge => {\n  const m = mod as Partial<NativeBridge>\n  return !!(\n    typeof m.transformSource === \"function\" ||\n    typeof m.extractAllClasses === \"function\" ||\n    typeof m.hasTwUsage === \"function\"\n  )\n}\n\nexport const getNativeBridge = (): NativeBridge => {\n  if (nativeBridge) {\n    return nativeBridge\n  }\n\n  if (bridgeLoadAttempted) {\n    if (bridgeLoadError) {\n      throw bridgeLoadError\n    }\n    throw new Error(NATIVE_UNAVAILABLE_MESSAGE)\n  }\n\n  bridgeLoadAttempted = true\n\n  try {\n    const runtimeDir = resolveRuntimeDir(undefined, import.meta.url)\n    \n    // Use shared's native resolution\n    const result = resolveNativeBinary(runtimeDir)\n\n    if (result.path && result.path.endsWith(\".node\")) {\n      try {\n        const binding = _loadNative(result.path) as NativeBridge\n        if (isValidNativeBridge(binding)) {\n          const toCamelCase = (str: string): string => {\n            return str.replace(/_([a-z0-9])/g, (_, g) => g.toUpperCase())\n          }\n          nativeBridge = new Proxy(binding, {\n            get(target, prop) {\n              if (typeof prop === \"string\") {\n                if (prop in target) {\n                  return target[prop as keyof typeof target]\n                }\n                const camelKey = toCamelCase(prop)\n                if (camelKey in target) {\n                  const val = target[camelKey as keyof typeof target]\n                  if (typeof val === \"function\") {\n                    return (val as Function).bind(target)\n                  }\n                  return val\n                }\n                const napiKey = `${camelKey}Napi`\n                if (napiKey in target) {\n                  const val = target[napiKey as keyof typeof target]\n                  if (typeof val === \"function\") {\n                    return (val as Function).bind(target)\n                  }\n                  return val\n                }\n                const napiInnerKey = `${camelKey}NapiInner`\n                if (napiInnerKey in target) {\n                  const val = target[napiInnerKey as keyof typeof target]\n                  if (typeof val === \"function\") {\n                    return (val as Function).bind(target)\n                  }\n                  return val\n                }\n              }\n              return target[prop as keyof typeof target]\n            }\n          }) as NativeBridge\n          log(\"Native bridge loaded successfully and proxy-wrapped from:\", result.path)\n          return nativeBridge\n        }\n      } catch (e) {\n        log(\"Failed to require native binding:\", e)\n      }\n    }\n\n    throw new Error(`${NATIVE_UNAVAILABLE_MESSAGE}\\n\\nTried paths: ${result.tried.join(\"\\n\")}`)\n  } catch (err) {\n    bridgeLoadError = err instanceof Error ? err : new Error(String(err))\n    log(\"Failed to load native bridge:\", bridgeLoadError.message)\n    throw bridgeLoadError\n  }\n}\n\nexport const resetNativeBridgeCache = (): void => {\n  nativeBridge = null\n  bridgeLoadAttempted = false\n  bridgeLoadError = null\n  log(\"Native bridge cache reset\")\n}\n\n// ── Adaptor for native results\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const adaptNativeResult = (\n  raw: NativeTransformResult\n): {\n  code: string\n  classes: string[]\n  changed: boolean\n  rsc?: NativeRscResult\n  metadata?: ComponentMetadata[]\n} => {\n  return {\n    code: raw.code ?? \"\",\n    classes: raw.classes ?? [],\n    changed: raw.changed ?? false,\n    rsc: raw.rscJson ? JSON.parse(raw.rscJson) : undefined,\n    metadata: raw.metadataJson ? JSON.parse(raw.metadataJson) : undefined,\n  }\n}\n\n// ── Eager init — load native bridge saat module dimuat, bukan saat request pertama\n// Mencegah crash di Turbopack dev mode karena lazy init mid-request\n// ─────────────────────────────────────────────────────────────────────────────\nif (typeof process !== \"undefined\" && !bridgeLoadAttempted) {\n  try {\n    getNativeBridge()\n  } catch {\n    // Sudah di-capture di bridgeLoadError — akan di-throw saat dipanggil pertama kali\n  }\n}\n\n// ── Re-export all 63 wrapper functions from nativeBridgeWrappers\n// These provide complete type safety, error handling, and JSDoc documentation\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport {\n  // Redis Cache Functions (40)\n  redis_pool_connect,\n  redis_pool_stats,\n  redis_pool_reconnect,\n  redis_ping,\n  redis_get,\n  redis_set,\n  redis_delete,\n  redis_exists,\n  redis_mget,\n  redis_mset,\n  redis_flush_db,\n  redis_flush_all,\n  redis_cache_size,\n  redis_cache_key_count,\n  redis_cache_clear,\n  redis_cache_hit_rate,\n  redis_info,\n  redis_monitor,\n  redis_enable_cluster,\n  redis_disable_cluster,\n  redis_cluster_status,\n  redis_expiration_set,\n  redis_expiration_get,\n  redis_subscribe,\n  redis_publish,\n  redis_enable_persistence,\n  redis_disable_persistence,\n  redis_snapshot,\n  redis_replicate,\n  redis_replication_status,\n  redis_enable_cache_warming,\n  redis_disable_cache_warming,\n  redis_cache_sync,\n  redis_set_eviction_policy,\n  redis_get_eviction_policy,\n  redis_memory_stats,\n  redis_optimize_memory,\n  redis_diagnose,\n  // Watch System Functions (20)\n  start_watch,\n  poll_watch_events,\n  stop_watch,\n  watch_add_pattern,\n  watch_remove_pattern,\n  watch_pause,\n  watch_resume,\n  is_watch_running,\n  get_watch_stats,\n  watch_get_active_handles,\n  watch_clear_all,\n  register_plugin_hook,\n  unregister_plugin_hook,\n  emit_plugin_hook,\n  get_plugin_hooks,\n  // ID Registry Functions (16)\n  id_registry_create,\n  id_registry_generate,\n  id_registry_lookup,\n  id_registry_next,\n  id_registry_destroy,\n  id_registry_reset,\n  id_registry_snapshot,\n  id_registry_active_count,\n  register_property_name,\n  register_value_name,\n  property_id_to_string,\n  value_id_to_string,\n  reverse_lookup_property,\n  reverse_lookup_value,\n  id_registry_export,\n  id_registry_import,\n  // Incremental Compilation Functions (8)\n  process_file_change,\n  compute_incremental_diff,\n  create_fingerprint,\n  inject_state_hash,\n  prune_stale_entries,\n  rebuild_workspace_result,\n  scan_files_batch_native,\n  // Theme Resolution Functions (7)\n  resolve_variants,\n  validate_variant_config,\n  resolve_cascade,\n  resolve_class_names,\n  resolve_conflict_group,\n  resolve_theme_value,\n  resolve_simple_variants,\n  generate_css,\n  generate_css_batch,\n  resolve_color_cached,\n  resolve_spacing_cached,\n  resolve_font_size_cached,\n  reset_resolver_pool_stats,\n  get_week6_features_status,\n  get_memory_stats_native,\n  get_memory_recommendations_native,\n  estimate_optimal_cache_config_native,\n  reset_memory_stats,\n} from \"./nativeBridgeWrappers\"","/**\n * cssGeneratorNative.ts\n *\n * High-performance CSS generator using Rust compiler via NAPI binding.\n * Rust-only implementation - no JavaScript fallback.\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\nexport interface GenerateCssNativeOptions {\n  theme: Record<string, unknown>\n}\n\n/**\n * Generate CSS from Tailwind classes using the Rust compiler.\n * \n * @param classes - Array of Tailwind class names (e.g., [\"px-4\", \"hover:bg-blue-600\"])\n * @param options - Configuration including theme object\n * @returns Promise resolving to CSS string\n * \n * @example\n * ```ts\n * const css = await generateCssNative(\n *   [\"px-4\", \"hover:bg-blue-600\", \"md:text-lg\"],\n *   {\n *     theme: defaultTheme,\n *     fallbackToJs: true,\n *     logFallback: process.env.DEBUG === \"true\"\n *   }\n * )\n * ```\n * \n * **Performance**: Rust compiler typically 40-60% faster than Tailwind JS\n * - Rust: 60-90ms for 100 classes\n * - JavaScript: 150ms baseline\n * \n * **Error Handling**:\n * - If Rust binding fails and fallbackToJs=true, falls back to Tailwind JS\n * - If Rust binding fails and fallbackToJs=false, throws error\n * - Invalid classes log warnings but don't stop compilation\n */\nexport async function generateCssNative(\n  classes: string[],\n  options: GenerateCssNativeOptions\n): Promise<string> {\n  const { theme } = options\n\n  const native = getNativeBridge()\n  \n  if (!native?.generateCssNative) {\n    throw new Error(\n      \"FATAL: Rust CSS generator (generateCssNative) is required but not available. \" +\n      \"Ensure native binding is properly loaded. Check that native/.node binary exists.\"\n    )\n  }\n\n  // Convert theme object to JSON string for Rust\n  const themeJson = JSON.stringify(theme)\n  \n  // Call Rust compiler - no fallback, fail fast\n  const css = native.generateCssNative(classes, themeJson)\n  \n  return css\n}\n\n/**\n * Get cache statistics from the Rust compiler.\n * \n * @returns Object with cache hit/miss counts, or null if binding unavailable\n * \n * @example\n * ```ts\n * const stats = getCacheStats()\n * if (stats) {\n *   console.log(`Cache hits: ${stats.hits}, misses: ${stats.misses}`)\n *   console.log(`Hit rate: ${(stats.hits / (stats.hits + stats.misses) * 100).toFixed(1)}%`)\n * }\n * ```\n */\nexport function getCacheStats(): { hits: number; misses: number } | null {\n  const native = getNativeBridge()\n  try {\n    if (!native?.getCacheStats) {\n      return null\n    }\n\n    const [hits, misses] = native.getCacheStats()\n    return { hits, misses }\n  } catch {\n    return null\n  }\n}\n\n/**\n * Clear the theme resolver cache.\n * \n * Useful for:\n * - Testing with different themes\n * - Freeing memory in long-running processes\n * - Resetting state between build cycles\n * \n * @example\n * ```ts\n * // Clear cache before each build\n * clearThemeCache()\n * const css = await generateCssNative(classes, { theme })\n * ```\n */\nexport function clearThemeCache(): void {\n  const native = getNativeBridge()\n  try {\n    if (!native?.clearThemeCache) {\n      return\n    }\n\n    native.clearThemeCache()\n  } catch {\n    // Silently ignore if native binding unavailable\n  }\n}\n\n/**\n * Reset cache statistics in the Rust compiler.\n */\nexport function resetCacheStats(): void {\n  const native = getNativeBridge()\n  try {\n    if (!native?.resetCacheStats) {\n      return\n    }\n    native.resetCacheStats()\n  } catch {\n    // Silently ignore if native binding unavailable\n  }\n}\n\n/**\n * Recommended default theme configuration for Tailwind v4.\n * \n * Use this when you need a complete theme object for the Rust compiler.\n */\nexport const DEFAULT_THEME = {\n  colors: {\n    slate: {\n      \"50\": \"#f8fafc\",\n      \"100\": \"#f1f5f9\",\n      \"200\": \"#e2e8f0\",\n      \"300\": \"#cbd5e1\",\n      \"400\": \"#94a3b8\",\n      \"500\": \"#64748b\",\n      \"600\": \"#475569\",\n      \"700\": \"#334155\",\n      \"800\": \"#1e293b\",\n      \"900\": \"#0f172a\",\n    },\n    // ... other colors from Tailwind defaults\n  },\n  spacing: {\n    \"0\": \"0px\",\n    \"1\": \"0.25rem\",\n    \"2\": \"0.5rem\",\n    \"3\": \"0.75rem\",\n    \"4\": \"1rem\",\n    \"5\": \"1.25rem\",\n    \"6\": \"1.5rem\",\n    \"8\": \"2rem\",\n    \"10\": \"2.5rem\",\n    \"12\": \"3rem\",\n  },\n  breakpoints: {\n    \"sm\": \"640px\",\n    \"md\": \"768px\",\n    \"lg\": \"1024px\",\n    \"xl\": \"1280px\",\n    \"2xl\": \"1536px\",\n  },\n  darkMode: \"media\" as const,\n} as const\n","/**\n * compilationNative.ts\n *\n * Native Rust bindings for CSS compilation and advanced features.\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\nexport type {\n  ContainerConfig,\n  StateCssConfig,\n  GeneratedStateCss,\n} from \"../nativeBridge\"\n\n/**\n * Compile Tailwind classes directly to CSS.\n */\nexport function compileCssNative2(classes: string[], prefix?: string | null) {\n  const native = getNativeBridge()\n  if (!native?.compileCss) throw new Error(\"compileCss not available\")\n  return native.compileCss(classes, prefix)\n}\n\n/**\n * Compile CSS using Lightning CSS post-processing.\n */\nexport function compileCssLightning(classes: string[]): string {\n  const native = getNativeBridge()\n  if (!native?.compileCssLightning) throw new Error(\"compileCssLightning not available\")\n  return native.compileCssLightning(classes)\n}\n\n/**\n * Extract Tailwind state configurations from source code.\n */\nexport function extractTwStateConfigsNative(source: string, filename: string) {\n  const native = getNativeBridge()\n  if (!native?.extractTwStateConfigs) throw new Error(\"extractTwStateConfigs not available\")\n  return native.extractTwStateConfigs(source, filename)\n}\n\n/**\n * Generate static state CSS from configuration.\n */\nexport function generateStaticStateCssNative(\n  inputs: Array<{\n    tag: string\n    componentName: string\n    statesJson: string\n  }>,\n  resolvedCss?: string | null\n) {\n  const native = getNativeBridge()\n  if (!native?.generateStaticStateCss) throw new Error(\"generateStaticStateCss not available\")\n  return native.generateStaticStateCss(inputs, resolvedCss ?? null)\n}\n\n/**\n * Extract and generate state CSS in one step.\n */\nexport function extractAndGenerateStateCssNative(source: string, filename: string) {\n  const native = getNativeBridge()\n  if (!native?.extractAndGenerateStateCss) throw new Error(\"extractAndGenerateStateCss not available\")\n  return native.extractAndGenerateStateCss(source, filename)\n}\n\n/**\n * Convert layout/utility class string to CSS declarations.\n */\nexport function layoutClassesToCss(classes: string): string {\n  const native = getNativeBridge()\n  if (!native?.layoutClassesToCss) throw new Error(\"layoutClassesToCss not available\")\n  return native.layoutClassesToCss(classes)\n}\n\n/**\n * Hash content for deterministic ID generation.\n */\nexport function hashContent(input: string, algorithm: string = \"sha256\", length: number = 8): string {\n  const native = getNativeBridge()\n  if (!native?.hashContent) throw new Error(\"hashContent not available\")\n  return native.hashContent(input, algorithm, length)\n}\n\n/**\n * Extract container query configurations from source.\n */\nexport function extractTwContainerConfigs(source: string) {\n  const native = getNativeBridge()\n  if (!native?.extractTwContainerConfigs) throw new Error(\"extractTwContainerConfigs not available\")\n  return native.extractTwContainerConfigs(source)\n}\n\n/**\n * Parse Tailwind class into atomic CSS representation.\n */\nexport function parseAtomicClass(twClass: string): string | null {\n  const native = getNativeBridge()\n  if (!native?.parseAtomicClass) throw new Error(\"parseAtomicClass not available\")\n  return native.parseAtomicClass(twClass)\n}\n\n/**\n * Generate atomic CSS from rules.\n */\nexport function generateAtomicCss(rulesJson: string): string {\n  const native = getNativeBridge()\n  if (!native?.generateAtomicCss) throw new Error(\"generateAtomicCss not available\")\n  return native.generateAtomicCss(rulesJson)\n}\n\n/**\n * Convert Tailwind classes to atomic CSS classes.\n */\nexport function toAtomicClasses(twClasses: string): string {\n  const native = getNativeBridge()\n  if (!native?.toAtomicClasses) throw new Error(\"toAtomicClasses not available\")\n  return native.toAtomicClasses(twClasses)\n}\n\n/**\n * Clear atomic CSS registry.\n */\nexport function clearAtomicRegistry(): void {\n  const native = getNativeBridge()\n  if (!native?.clearAtomicRegistry) return\n  native.clearAtomicRegistry()\n}\n\n/**\n * Get atomic registry size.\n */\nexport function atomicRegistrySize(): number {\n  const native = getNativeBridge()\n  if (!native?.atomicRegistrySize) return 0\n  return native.atomicRegistrySize()\n}\n\n","/**\n * cssCompilationNative.ts\n *\n * Phase 5.2: Advanced CSS Compilation - Complex CSS generation and transformations\n * Exposes 12 CSS compilation functions for animations, themes, and merging\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\n/**\n * Compiled CSS rule result\n */\nexport interface CompiledCssRule {\n  selector: string\n  declarations: string\n  properties: Array<{ key: string; value: string }>\n  specificity: number\n  source?: { file: string; line: number; column: number }\n}\n\n/**\n * Compiled animation result\n */\nexport interface CompiledAnimation {\n  animation_id: string\n  keyframes_css: string\n  animation_rule: string\n  duration_ms: number\n}\n\n/**\n * Compiled theme result\n */\nexport interface CompiledTheme {\n  selector: string\n  variables: Array<{ name: string; value: string }>\n  variables_css: string\n  theme_name: string\n}\n\n/**\n * CSS compile result with metadata\n */\nexport interface CssCompileResult {\n  css: string\n  resolved_classes: string[]\n  unknown_classes: string[]\n  size_bytes: number\n  duration_ms: number\n}\n\n/**\n * tw_merge options\n */\nexport interface TwMergeOptions {\n  separator?: string\n  debug?: boolean\n}\n\n/**\n * Compile a single Tailwind class to CSS rule\n * Full compilation pipeline: parse → resolve → generate\n *\n * @param input - Single Tailwind class (e.g., \"md:hover:bg-blue-600/50\")\n * @returns Compiled CSS rule as JSON\n *\n * @example\n * ```ts\n * const rule = compileClass('md:hover:bg-blue-600')\n * // Returns: {\n * //   selector: '.md\\\\:hover\\\\:bg-blue-600',\n * //   declarations: 'background-color: #2563eb;',\n * //   ...\n * // }\n * ```\n */\nexport function compileClass(input: string): CompiledCssRule {\n  const native = getNativeBridge()\n  if (!native?.compile_class) throw new Error(\"compile_class not available\")\n  const resultJson = native.compile_class(input)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      selector: \"\",\n      declarations: \"\",\n      properties: [],\n      specificity: 0,\n    }\n  }\n}\n\n/**\n * Compile multiple Tailwind classes to CSS rules\n * Batch processing with parallel compilation\n *\n * @param inputs - Array of Tailwind classes\n * @returns JSON string of compiled rules\n *\n * @example\n * ```ts\n * const rules = compileClasses(['px-4', 'bg-blue-600', 'hover:opacity-80'])\n * ```\n */\nexport function compileClasses(inputs: string[]): CssCompileResult {\n  const native = getNativeBridge()\n  if (!native?.compile_classes) throw new Error(\"compile_classes not available\")\n  const resultJson = native.compile_classes(inputs)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      css: \"\",\n      resolved_classes: [],\n      unknown_classes: [],\n      size_bytes: 0,\n      duration_ms: 0,\n    }\n  }\n}\n\n/**\n * One-step: class → CSS string\n * Compiles and generates in single call\n *\n * @param input - Single Tailwind class\n * @param minify - Whether to minify output (default: false)\n * @returns Generated CSS string\n *\n * @example\n * ```ts\n * const css = compileToCss('bg-blue-600')\n * // Returns: \".bg-blue-600 { background-color: #2563eb; }\"\n *\n * const minified = compileToCss('bg-blue-600', true)\n * // Returns: \".bg-blue-600{background-color:#2563eb}\"\n * ```\n */\nexport function compileToCss(input: string, minify?: boolean): string {\n  const native = getNativeBridge()\n  if (!native?.compile_to_css) throw new Error(\"compile_to_css not available\")\n  return native.compile_to_css(input, minify ?? false)\n}\n\n/**\n * Batch compile to CSS\n * Compiles multiple classes and generates combined CSS\n *\n * @param inputs - Array of Tailwind classes\n * @param minify - Whether to minify output\n * @returns Combined CSS string\n *\n * @example\n * ```ts\n * const css = compileToCssBatch(['px-4', 'bg-blue-600'], true)\n * ```\n */\nexport function compileToCssBatch(inputs: string[], minify?: boolean): string {\n  const native = getNativeBridge()\n  if (!native?.compile_to_css_batch) throw new Error(\"compile_to_css_batch not available\")\n  return native.compile_to_css_batch(inputs, minify ?? false)\n}\n\n/**\n * Minify CSS string\n * Removes unnecessary whitespace and formatting\n *\n * @param css - Raw CSS string\n * @returns Minified CSS (40-60% size reduction)\n *\n * @example\n * ```ts\n * const css = \".px-4 { padding-left: 1rem; padding-right: 1rem; }\"\n * const minified = minifyCss(css)\n * // Returns: \".px-4{padding-left:1rem;padding-right:1rem}\"\n * ```\n */\nexport function minifyCss(css: string): string {\n  const native = getNativeBridge()\n  if (!native?.minify_css) throw new Error(\"minify_css not available\")\n  return native.minify_css(css)\n}\n\n/**\n * Generate CSS from a single CSS rule representation\n * \n * @param ruleJson - JSON representation of CssRule\n * @param minify - Whether to minify the CSS output\n * @returns Generated CSS string\n */\nexport function generateCss(ruleJson: string, minify?: boolean | null): string {\n  const native = getNativeBridge()\n  if (!native?.generate_css) throw new Error(\"generate_css not available\")\n  return native.generate_css(ruleJson, minify)\n}\n\n/**\n * Generate CSS from multiple CSS rules in batch\n * \n * @param rulesJson - JSON array of CssRule objects\n * @param minify - Whether to minify the CSS output\n * @returns Combined CSS string\n */\nexport function generateCssBatch(rulesJson: string, minify?: boolean | null): string {\n  const native = getNativeBridge()\n  if (!native?.generate_css_batch) throw new Error(\"generate_css_batch not available\")\n  return native.generate_css_batch(rulesJson, minify)\n}\n\n\n/**\n * Compile animation from from/to states\n * Generates @keyframes and animation rule\n *\n * @param animationName - Animation name\n * @param from - From state classes (e.g., \"opacity-0 scale-95\")\n * @param to - To state classes (e.g., \"opacity-100 scale-100\")\n * @returns Compiled animation with keyframes\n *\n * @example\n * ```ts\n * const anim = compileAnimation('fade-in', 'opacity-0', 'opacity-100')\n * console.log(anim.keyframes_css)  // @keyframes fade-in { ... }\n * console.log(anim.animation_rule) // animation: fade-in 300ms;\n * ```\n */\nexport function compileAnimation(\n  animationName: string,\n  from: string,\n  to: string\n): CompiledAnimation {\n  const native = getNativeBridge()\n  if (!native?.compile_animation) throw new Error(\"compile_animation not available\")\n  const resultJson = native.compile_animation(animationName, from, to)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      animation_id: \"\",\n      keyframes_css: \"\",\n      animation_rule: \"\",\n      duration_ms: 0,\n    }\n  }\n}\n\n/**\n * Compile keyframes from stop definitions\n * Creates @keyframes from percentage stops\n *\n * @param name - Keyframes name\n * @param stopsJson - JSON array of stops: `[{\"stop\":\"0%\",\"classes\":\"opacity-0\"}...]`\n * @returns Compiled @keyframes rule\n *\n * @example\n * ```ts\n * const kf = compileKeyframes('slide-in', JSON.stringify([\n *   { stop: '0%', classes: 'translate-x-full' },\n *   { stop: '100%', classes: 'translate-x-0' }\n * ]))\n * ```\n */\nexport function compileKeyframes(name: string, stopsJson: string): CompiledAnimation {\n  const native = getNativeBridge()\n  if (!native?.compile_keyframes) throw new Error(\"compile_keyframes not available\")\n  const resultJson = native.compile_keyframes(name, stopsJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      animation_id: \"\",\n      keyframes_css: \"\",\n      animation_rule: \"\",\n      duration_ms: 0,\n    }\n  }\n}\n\n/**\n * Compile theme to CSS variables\n * Converts token map to CSS custom properties\n *\n * @param tokensJson - Theme tokens as JSON\n * @param themeName - Theme name (\"light\", \"dark\", etc.)\n * @param prefix - CSS variable prefix (e.g., \"tw\" → \"--tw-color-primary\")\n * @returns Compiled theme with variables CSS\n *\n * @example\n * ```ts\n * const theme = compileTheme(\n *   JSON.stringify({ colors: { blue: { 600: '#2563eb' } } }),\n *   'light',\n *   'tw'\n * )\n * // Returns CSS: :root { --tw-color-blue-600: #2563eb; }\n * ```\n */\nexport function compileTheme(\n  tokensJson: string,\n  themeName: string,\n  prefix: string\n): CompiledTheme {\n  const native = getNativeBridge()\n  if (!native?.compile_theme) throw new Error(\"compile_theme not available\")\n  const resultJson = native.compile_theme(tokensJson, themeName, prefix)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      selector: \":root\",\n      variables: [],\n      variables_css: \"\",\n      theme_name: themeName,\n    }\n  }\n}\n\n/**\n * Merge conflicting Tailwind classes\n * Resolves conflicts intelligently (last-one-wins by default)\n *\n * @param classString - Space-separated class string (e.g., \"px-4 px-8 bg-red-500 bg-blue-600\")\n * @returns Merged classes with conflicts resolved\n *\n * @example\n * ```ts\n * const merged = twMerge('px-4 px-8 bg-red-500 bg-blue-600')\n * // Returns: \"px-8 bg-blue-600\"\n * ```\n */\nexport function twMerge(classString: string): string {\n  const native = getNativeBridge()\n  if (!native?.tw_merge) throw new Error(\"tw_merge not available\")\n  return native.tw_merge(classString)\n}\n\n/**\n * Merge multiple class strings\n * Combines and resolves conflicts across multiple strings\n *\n * @param classStrings - Array of class strings\n * @returns Merged result\n *\n * @example\n * ```ts\n * const merged = twMergeMany([\n *   'px-4 hover:bg-blue-600',\n *   'px-8 hover:opacity-80'\n * ])\n * // Returns: \"px-8 hover:bg-blue-600 hover:opacity-80\"\n * ```\n */\nexport function twMergeMany(classStrings: string[]): string {\n  const native = getNativeBridge()\n  if (!native?.tw_merge_many) throw new Error(\"tw_merge_many not available\")\n  return native.tw_merge_many(classStrings)\n}\n\n/**\n * Merge with custom separator\n * Useful for non-standard class separators\n *\n * @param classString - Classes to merge\n * @param options - Merge options (separator, debug)\n * @returns Merged classes\n *\n * @example\n * ```ts\n * const merged = twMergeWithSeparator(\n *   'px-4,px-8,bg-red-500,bg-blue-600',\n *   { separator: ',' }\n * )\n * ```\n */\nexport function twMergeWithSeparator(\n  classString: string,\n  options: TwMergeOptions\n): string {\n  const native = getNativeBridge()\n  if (!native?.tw_merge_with_separator)\n    throw new Error(\"tw_merge_with_separator not available\")\n  const opts = {\n    separator: options.separator,\n    debug: options.debug,\n  }\n  return native.tw_merge_with_separator(classString, opts)\n}\n\n/**\n * Merge many with custom separator\n * Batch merge with custom separator\n *\n * @param classStrings - Array of class strings\n * @param options - Merge options\n * @returns Merged result\n */\nexport function twMergeManyWithSeparator(\n  classStrings: string[],\n  options: TwMergeOptions\n): string {\n  const native = getNativeBridge()\n  if (!native?.tw_merge_many_with_separator)\n    throw new Error(\"tw_merge_many_with_separator not available\")\n  const opts = {\n    separator: options.separator,\n    debug: options.debug,\n  }\n  return native.tw_merge_many_with_separator(classStrings, opts)\n}\n\n/**\n * Raw merge from class lists\n * Direct merge without preprocessing\n *\n * @param classLists - Array of class lists\n * @returns Merged classes\n *\n * @example\n * ```ts\n * const merged = twMergeRaw(['px-4 px-8', 'bg-red bg-blue'])\n * ```\n */\nexport function twMergeRaw(classLists: string[]): string {\n  const native = getNativeBridge()\n  if (!native?.tw_merge_raw) throw new Error(\"tw_merge_raw not available\")\n  return native.tw_merge_raw(classLists)\n}\n\n","/**\n * idRegistryNative.ts\n *\n * Phase 5.2: ID Registry Management - Efficient ID generation and lookup\n * Exposes 16 ID registry functions for deterministic class/component identification\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\n/**\n * Registry snapshot data\n */\nexport interface RegistrySnapshot {\n  handle: number\n  next_id: number\n  entries: Array<{ name: string; id: number }>\n  total_entries: number\n}\n\n/**\n * Create a new ID generator\n * Returns a handle to be used in subsequent operations\n *\n * @returns Generator handle (u32)\n *\n * @example\n * ```ts\n * const handle = idRegistryCreate()\n * // Use handle for all subsequent operations\n * try {\n *   const id = idRegistryGenerate(handle, 'MyComponent')\n *   // ... use id ...\n * } finally {\n *   idRegistryDestroy(handle)  // Clean up\n * }\n * ```\n */\nexport function idRegistryCreate(): number {\n  const native = getNativeBridge()\n  if (!native?.id_registry_create) throw new Error(\"id_registry_create not available\")\n  return native.id_registry_create()\n}\n\n/**\n * Generate a new ID for a name\n * Same name always returns same ID (deterministic)\n *\n * @param handle - Generator handle from idRegistryCreate()\n * @param name - Identifier name (e.g., component name, class name)\n * @returns Generated ID\n *\n * @example\n * ```ts\n * const handle = idRegistryCreate()\n * const id1 = idRegistryGenerate(handle, 'Button')  // Returns 1\n * const id2 = idRegistryGenerate(handle, 'Button')  // Returns 1 (same)\n * const id3 = idRegistryGenerate(handle, 'Card')    // Returns 2 (different)\n * ```\n */\nexport function idRegistryGenerate(handle: number, name: string): number {\n  const native = getNativeBridge()\n  if (!native?.id_registry_generate) throw new Error(\"id_registry_generate not available\")\n  return native.id_registry_generate(handle, name)\n}\n\n/**\n * Lookup existing ID for a name\n * Returns -1 if not found\n *\n * @param handle - Generator handle\n * @param name - Name to look up\n * @returns ID if found, -1 if not found\n *\n * @example\n * ```ts\n * const id = idRegistryLookup(handle, 'Button')\n * if (id !== -1) {\n *   console.log(`Button has ID: ${id}`)\n * } else {\n *   console.log('Button not in registry yet')\n * }\n * ```\n */\nexport function idRegistryLookup(handle: number, name: string): number {\n  const native = getNativeBridge()\n  if (!native?.id_registry_lookup) throw new Error(\"id_registry_lookup not available\")\n  return native.id_registry_lookup(handle, name)\n}\n\n/**\n * Get the next ID that would be assigned\n * Useful for knowing how many unique IDs exist\n *\n * @param handle - Generator handle\n * @returns Next available ID\n *\n * @example\n * ```ts\n * const handle = idRegistryCreate()\n * idRegistryGenerate(handle, 'Button')\n * idRegistryGenerate(handle, 'Card')\n * const nextId = idRegistryNext(handle)  // Returns 2 (next available)\n * ```\n */\nexport function idRegistryNext(handle: number): number {\n  const native = getNativeBridge()\n  if (!native?.id_registry_next) throw new Error(\"id_registry_next not available\")\n  return native.id_registry_next(handle)\n}\n\n/**\n * Destroy a registry (clean up resources)\n * Must be called when done with registry\n *\n * @param handle - Generator handle\n *\n * @example\n * ```ts\n * const handle = idRegistryCreate()\n * try {\n *   // Use registry\n * } finally {\n *   idRegistryDestroy(handle)\n * }\n * ```\n */\nexport function idRegistryDestroy(handle: number): void {\n  const native = getNativeBridge()\n  if (!native?.id_registry_destroy) return\n  native.id_registry_destroy(handle)\n}\n\n/**\n * Reset registry to initial state\n * Clears all entries but reuses handle\n *\n * @param handle - Generator handle\n *\n * @example\n * ```ts\n * const handle = idRegistryCreate()\n * idRegistryGenerate(handle, 'Component1')\n * idRegistryGenerate(handle, 'Component2')\n * idRegistryReset(handle)  // Clear all\n * const id = idRegistryNext(handle)  // Back to 0\n * ```\n */\nexport function idRegistryReset(handle: number): void {\n  const native = getNativeBridge()\n  if (!native?.id_registry_reset) return\n  native.id_registry_reset(handle)\n}\n\n/**\n * Get snapshot of current registry state\n * Useful for serialization/debugging\n *\n * @param handle - Generator handle\n * @returns Snapshot with all entries\n *\n * @example\n * ```ts\n * const handle = idRegistryCreate()\n * idRegistryGenerate(handle, 'Button')\n * idRegistryGenerate(handle, 'Card')\n * const snapshot = idRegistrySnapshot(handle)\n * console.log(JSON.stringify(snapshot, null, 2))\n * ```\n */\nexport function idRegistrySnapshot(handle: number): RegistrySnapshot {\n  const native = getNativeBridge()\n  if (!native?.id_registry_snapshot) throw new Error(\"id_registry_snapshot not available\")\n  const snapshotJson = native.id_registry_snapshot(handle)\n  try {\n    return JSON.parse(snapshotJson)\n  } catch {\n    return {\n      handle,\n      next_id: 0,\n      entries: [],\n      total_entries: 0,\n    }\n  }\n}\n\n/**\n * Get count of active registries\n * Useful for monitoring resource usage\n *\n * @returns Number of active generator handles\n *\n * @example\n * ```ts\n * console.log(`Active registries: ${idRegistryActiveCount()}`)\n * ```\n */\nexport function idRegistryActiveCount(): number {\n  const native = getNativeBridge()\n  if (!native?.id_registry_active_count) throw new Error(\"id_registry_active_count not available\")\n  return native.id_registry_active_count()\n}\n\n/**\n * Register a property name with global registry\n * Maps property names to consistent IDs\n *\n * @param propertyName - Property name (e.g., \"background-color\")\n * @returns Assigned property ID\n *\n * @example\n * ```ts\n * const bgColorId = registerPropertyName('background-color')\n * const paddingId = registerPropertyName('padding')\n * ```\n */\nexport function registerPropertyName(propertyName: string): number {\n  const native = getNativeBridge()\n  if (!native?.register_property_name)\n    throw new Error(\"register_property_name not available\")\n  return native.register_property_name(propertyName)\n}\n\n/**\n * Register a value name with global registry\n * Maps values to consistent IDs\n *\n * @param valueName - Value name (e.g., \"blue-600\")\n * @returns Assigned value ID\n *\n * @example\n * ```ts\n * const blueId = registerValueName('blue-600')\n * const redId = registerValueName('red-500')\n * ```\n */\nexport function registerValueName(valueName: string): number {\n  const native = getNativeBridge()\n  if (!native?.register_value_name) throw new Error(\"register_value_name not available\")\n  return native.register_value_name(valueName)\n}\n\n/**\n * Convert property ID back to name\n * Reverse lookup for serialized data\n *\n * @param propertyId - Property ID\n * @returns Property name or empty string if not found\n *\n * @example\n * ```ts\n * const bgColorId = registerPropertyName('background-color')\n * const name = propertyIdToString(bgColorId)\n * console.log(name)  // \"background-color\"\n * ```\n */\nexport function propertyIdToString(propertyId: number): string {\n  const native = getNativeBridge()\n  if (!native?.property_id_to_string) throw new Error(\"property_id_to_string not available\")\n  return native.property_id_to_string(propertyId)\n}\n\n/**\n * Convert value ID back to name\n * Reverse lookup for serialized data\n *\n * @param valueId - Value ID\n * @returns Value name or empty string if not found\n *\n * @example\n * ```ts\n * const blueId = registerValueName('blue-600')\n * const value = valueIdToString(blueId)\n * console.log(value)  // \"blue-600\"\n * ```\n */\nexport function valueIdToString(valueId: number): string {\n  const native = getNativeBridge()\n  if (!native?.value_id_to_string) throw new Error(\"value_id_to_string not available\")\n  return native.value_id_to_string(valueId)\n}\n\n/**\n * Reverse lookup: find property by ID\n * Alternative way to look up property names\n *\n * @param propertyId - Property ID to look up\n * @returns Property name\n */\nexport function reverseLookupProperty(propertyId: number): string {\n  const native = getNativeBridge()\n  if (!native?.reverse_lookup_property)\n    throw new Error(\"reverse_lookup_property not available\")\n  return native.reverse_lookup_property(propertyId)\n}\n\n/**\n * Reverse lookup: find value by ID\n * Alternative way to look up value names\n *\n * @param valueId - Value ID to look up\n * @returns Value name\n */\nexport function reverseLookupValue(valueId: number): string {\n  const native = getNativeBridge()\n  if (!native?.reverse_lookup_value) throw new Error(\"reverse_lookup_value not available\")\n  return native.reverse_lookup_value(valueId)\n}\n\n/**\n * Export registry state for persistence\n * Useful for saving/restoring registry data\n *\n * @param handle - Generator handle\n * @returns Serialized registry state\n *\n * @example\n * ```ts\n * const exported = idRegistryExport(handle)\n * // Save to file/database\n * ```\n */\nexport function idRegistryExport(handle: number): string {\n  const native = getNativeBridge()\n  if (!native?.id_registry_export) throw new Error(\"id_registry_export not available\")\n  return native.id_registry_export(handle)\n}\n\n/**\n * Import registry state\n * Restore registry from saved state\n *\n * @param importedData - Serialized registry data\n * @returns New handle with imported data\n *\n * @example\n * ```ts\n * const handle = idRegistryImport(savedData)\n * // Registry restored with same IDs\n * ```\n */\nexport function idRegistryImport(importedData: string): number {\n  const native = getNativeBridge()\n  if (!native?.id_registry_import) throw new Error(\"id_registry_import not available\")\n  return native.id_registry_import(importedData)\n}\n\n","/**\n * streamingNative.ts\n *\n * Phase 5.1: Streaming & Incremental Processing - Handle file changes efficiently\n * Exposes 8 functions for real-time incremental compilation\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\n/**\n * File change notification\n */\nexport interface FileChangeEvent {\n  file_path: string\n  event_type: \"added\" | \"modified\" | \"deleted\"\n  old_content?: string\n  new_content?: string\n  timestamp_ms: number\n}\n\n/**\n * Processed file change result\n */\nexport interface ProcessedFileChange {\n  file_path: string\n  status: \"processed\" | \"skipped\" | \"error\"\n  old_classes: string[]\n  new_classes: string[]\n  added_classes: string[]\n  removed_classes: string[]\n  changed: boolean\n  fingerprint: string\n  error?: string\n}\n\n/**\n * Diff between two scan results\n */\nexport interface FileDiff {\n  added_files: string[]\n  removed_files: string[]\n  modified_files: string[]\n  added_classes: string[]\n  removed_classes: string[]\n  total_changes: number\n}\n\n/**\n * File fingerprint for change detection\n */\nexport interface FileFingerprint {\n  file_path: string\n  content_hash: string\n  size_bytes: number\n  mtime_ms: number\n  class_hash: string\n  signature: string\n}\n\n/**\n * Incremental diff result\n */\nexport interface IncrementalDiffResult {\n  is_changed: boolean\n  changes_count: number\n  diff: FileDiff\n  processing_time_ms: number\n}\n\n/**\n * State injection result\n */\nexport interface StateInjectionResult {\n  injected: boolean\n  state_hash: string\n  affected_files: number\n  total_injected_bytes: number\n}\n\n/**\n * Stale entry pruning result\n */\nexport interface PruneResult {\n  entries_before: number\n  entries_after: number\n  entries_removed: number\n  freed_bytes: number\n}\n\n/**\n * Rebuilt workspace result\n */\nexport interface RebuildWorkspaceResult {\n  total_files_scanned: number\n  total_classes_found: number\n  unique_classes: number\n  build_time_ms: number\n  files_with_changes: number\n}\n\n/**\n * Process a single file change event\n * Called when a file is added, modified, or deleted\n *\n * @param fileChangeJson - JSON string describing the file change\n * @returns Processing result with class changes\n *\n * @example\n * ```ts\n * const change = processFileChange(JSON.stringify({\n *   file_path: 'src/Button.tsx',\n *   event_type: 'modified',\n *   new_content: 'export const Button = ...',\n *   timestamp_ms: Date.now()\n * }))\n *\n * console.log('Added classes:', change.added_classes)\n * console.log('Removed classes:', change.removed_classes)\n * ```\n */\nexport function processFileChange(fileChangeJson: string): ProcessedFileChange {\n  const native = getNativeBridge()\n  if (!native?.process_file_change) throw new Error(\"process_file_change not available\")\n  const resultJson = native.process_file_change(fileChangeJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      file_path: \"\",\n      status: \"error\",\n      old_classes: [],\n      new_classes: [],\n      added_classes: [],\n      removed_classes: [],\n      changed: false,\n      fingerprint: \"\",\n      error: \"Failed to parse result\",\n    }\n  }\n}\n\n/**\n * Compute incremental diff between old and new scan results\n * Efficient way to identify only what changed\n *\n * @param oldScanJson - JSON string of previous scan result\n * @param newScanJson - JSON string of new scan result\n * @returns Diff showing what changed\n *\n * @example\n * ```ts\n * const oldResult = scanWorkspace('./src')\n * // ... files changed ...\n * const newResult = scanWorkspace('./src')\n *\n * const diff = computeIncrementalDiff(\n *   JSON.stringify(oldResult),\n *   JSON.stringify(newResult)\n * )\n *\n * if (diff.is_changed) {\n *   console.log(`${diff.changes_count} files changed`)\n *   console.log('Added:', diff.diff.added_classes)\n *   console.log('Removed:', diff.diff.removed_classes)\n * }\n * ```\n */\nexport function computeIncrementalDiff(\n  oldScanJson: string,\n  newScanJson: string\n): IncrementalDiffResult {\n  const native = getNativeBridge()\n  if (!native?.compute_incremental_diff)\n    throw new Error(\"compute_incremental_diff not available\")\n  const resultJson = native.compute_incremental_diff(oldScanJson, newScanJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      is_changed: false,\n      changes_count: 0,\n      diff: {\n        added_files: [],\n        removed_files: [],\n        modified_files: [],\n        added_classes: [],\n        removed_classes: [],\n        total_changes: 0,\n      },\n      processing_time_ms: 0,\n    }\n  }\n}\n\n/**\n * Create a fingerprint of a file for change detection\n * Use fingerprints to quickly check if file needs reprocessing\n *\n * @param filePath - Path to file\n * @param fileContent - File content\n * @returns File fingerprint\n *\n * @example\n * ```ts\n * const fingerprint = createFingerprint('src/Button.tsx', fileContent)\n * // Store fingerprint, check later if content changed\n * const newFingerprint = createFingerprint('src/Button.tsx', newContent)\n * if (fingerprint.signature !== newFingerprint.signature) {\n *   // Content changed, needs reprocessing\n * }\n * ```\n */\nexport function createFingerprint(filePath: string, fileContent: string): FileFingerprint {\n  const native = getNativeBridge()\n  if (!native?.create_fingerprint) throw new Error(\"create_fingerprint not available\")\n  const fingerprintJson = native.create_fingerprint(filePath, fileContent)\n  try {\n    return JSON.parse(fingerprintJson)\n  } catch {\n    return {\n      file_path: filePath,\n      content_hash: \"\",\n      size_bytes: fileContent.length,\n      mtime_ms: Date.now(),\n      class_hash: \"\",\n      signature: \"\",\n    }\n  }\n}\n\n/**\n * Inject state hash into compiled CSS\n * Marks CSS with version/state hash for cache busting\n *\n * @param css - Raw CSS string\n * @param stateHash - State hash to inject\n * @returns Modified CSS with injected state\n *\n * @example\n * ```ts\n * const css = compileCssNative2(['px-4', 'bg-blue-600'])\n * const withState = injectStateHash(css, 'v5-hash-123')\n * // CSS now includes version marker for cache control\n * ```\n */\nexport function injectStateHash(css: string, stateHash: string): StateInjectionResult {\n  const native = getNativeBridge()\n  if (!native?.inject_state_hash) throw new Error(\"inject_state_hash not available\")\n  const resultJson = native.inject_state_hash(css, stateHash)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      injected: false,\n      state_hash: stateHash,\n      affected_files: 0,\n      total_injected_bytes: 0,\n    }\n  }\n}\n\n/**\n * Prune stale entries from cache\n * Removes old/unused cache entries to free memory\n *\n * @param maxAgeSeconds - Remove entries older than this many seconds\n * @param maxEntries - Keep only this many most-recent entries\n * @returns Result of pruning operation\n *\n * @example\n * ```ts\n * // Remove cache entries older than 1 hour, keep max 10000 entries\n * const result = pruneStaleCacheEntries(3600, 10000)\n * console.log(`Freed ${result.freed_bytes / 1024}KB`)\n * ```\n */\nexport function pruneStaleCacheEntries(maxAgeSeconds: number, maxEntries: number): PruneResult {\n  const native = getNativeBridge()\n  if (!native?.prune_stale_entries) throw new Error(\"prune_stale_entries not available\")\n  const resultJson = native.prune_stale_entries(maxAgeSeconds, maxEntries)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      entries_before: 0,\n      entries_after: 0,\n      entries_removed: 0,\n      freed_bytes: 0,\n    }\n  }\n}\n\n/**\n * Rebuild workspace result from scratch\n * Useful after major configuration changes\n *\n * @param rootDir - Root directory to scan\n * @param extensions - File extensions to scan (e.g., [\".tsx\", \".ts\"])\n * @returns Rebuilt workspace result\n *\n * @example\n * ```ts\n * const result = rebuildWorkspaceResult('./src', ['.tsx', '.ts'])\n * console.log(`Found ${result.unique_classes} unique classes`)\n * console.log(`${result.files_with_changes} files had changes`)\n * ```\n */\nexport function rebuildWorkspaceResult(\n  rootDir: string,\n  extensions?: string[]\n): RebuildWorkspaceResult {\n  const native = getNativeBridge()\n  if (!native?.rebuild_workspace_result)\n    throw new Error(\"rebuild_workspace_result not available\")\n  const resultJson = native.rebuild_workspace_result(rootDir, extensions || [])\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      total_files_scanned: 0,\n      total_classes_found: 0,\n      unique_classes: 0,\n      build_time_ms: 0,\n      files_with_changes: 0,\n    }\n  }\n}\n\n/**\n * Scan a single file with incremental state\n * Returns only new/changed classes since last scan\n *\n * @param filePath - Path to file\n * @param fileContent - File content\n * @returns Updated classes and change status\n *\n * @example\n * ```ts\n * // On file change, get only what changed\n * const file = scanFileNative('src/Button.tsx', newContent)\n * if (file.changed) {\n *   console.log('Added:', file.added_classes)\n *   console.log('Removed:', file.removed_classes)\n * }\n * ```\n */\nexport function scanFileNative(\n  filePath: string,\n  fileContent: string\n): {\n  file: string\n  classes: string[]\n  added_classes: string[]\n  removed_classes: string[]\n  changed: boolean\n} {\n  const native = getNativeBridge()\n  if (!native?.scan_file_native) throw new Error(\"scan_file_native not available\")\n  const resultJson = native.scan_file_native(filePath, fileContent)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      file: filePath,\n      classes: [],\n      added_classes: [],\n      removed_classes: [],\n      changed: false,\n    }\n  }\n}\n\n/**\n * Scan multiple files in batch with incremental state\n * Efficient batch processing of file changes\n *\n * @param filesJson - JSON array of {file, content} objects\n * @returns Results for each file\n *\n * @example\n * ```ts\n * const files = [\n *   { file: 'src/Button.tsx', content: newButtonContent },\n *   { file: 'src/Card.tsx', content: newCardContent }\n * ]\n * const results = scanFilesBatchNative(JSON.stringify(files))\n * ```\n */\nexport function scanFilesBatchNative(\n  filesJson: string\n): Array<{\n  file: string\n  classes: string[]\n  changed: boolean\n}> {\n  const native = getNativeBridge()\n  if (!native?.scan_files_batch_native)\n    throw new Error(\"scan_files_batch_native not available\")\n  const resultJson = native.scan_files_batch_native(filesJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return []\n  }\n}\n\n","/**\n * tailwindEngine.ts\n *\n * Pipeline: classes[] → Rust CSS Compiler (primary) → Tailwind JS (fallback)\n *\n * The Rust compiler provides 40-60% performance improvement over pure JavaScript.\n * Falls back to Tailwind JS if the native binding is unavailable.\n */\n\nimport { createRequire } from \"node:module\"\nimport { getNativeBridge } from \"./nativeBridge\"\nimport { generateCssNative as generateCssNativeImpl } from \"./cssGeneratorNative\"\n\nconst require = createRequire(\n  typeof __filename !== \"undefined\"\n    ? `file://${__filename}`\n    : (typeof import.meta !== \"undefined\" && import.meta.url ? import.meta.url : \"file://unknown\")\n)\n\ninterface CacheStats {\n  hits: number\n  misses: number\n  hitRate: number\n  size: number\n  maxSize: number\n}\n\nconst _cssCache = new Map<string, CssPipelineResult>()\nlet _cacheHits = 0\nlet _cacheMisses = 0\nconst MAX_CACHE_SIZE = 100\nconst MAX_CACHE_MEMORY = 256 * 1024 // 256KB\n\nfunction _getCacheKey(classes: string[], minify: boolean, cssEntry?: string, root?: string): string {\n  // Sort classes for consistent hashing\n  const sorted = [...classes].sort().join(\",\")\n  const flags = `${minify ? \"1\" : \"0\"}${cssEntry ? \"1\" : \"0\"}${root ? \"1\" : \"0\"}`\n  return `${sorted}|${flags}`\n}\n\nfunction _evictOldestIfNeeded(): void {\n  if (_cssCache.size >= MAX_CACHE_SIZE) {\n    const firstKey = _cssCache.keys().next().value as string | undefined\n    if (firstKey !== undefined) {\n      _cssCache.delete(firstKey)\n    }\n  }\n}\n\nexport function getCacheStats(): CacheStats {\n  const total = _cacheHits + _cacheMisses\n  return {\n    hits: _cacheHits,\n    misses: _cacheMisses,\n    hitRate: total > 0 ? _cacheHits / total : 0,\n    size: _cssCache.size,\n    maxSize: MAX_CACHE_SIZE,\n  }\n}\n\nexport function clearCache(): void {\n  _cssCache.clear()\n  _cacheHits = 0\n  _cacheMisses = 0\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Tailwind CSS v4 engine loader\n// ─────────────────────────────────────────────────────────────────────────────\n\ninterface TailwindV4Engine {\n  compile: (\n    input: string,\n    options?: {\n      loadPlugin?: () => unknown\n      loadStylesheet?: (id: string, base: string) => Promise<{ content: string; base: string }>\n      loadModule?: (id: string, base: string) => Promise<{ module: unknown; base: string }>\n    }\n  ) => Promise<{ build: (candidates: string[]) => string }> | { build: (candidates: string[]) => string }\n}\n\nlet _twEngine: TailwindV4Engine | null = null\nlet _twEngineError: Error | null = null\n\nfunction loadTailwindEngine(): TailwindV4Engine {\n  if (_twEngine) return _twEngine\n  if (_twEngineError) throw _twEngineError\n\n  try {\n    const tw = require(\"tailwindcss\") as TailwindV4Engine\n    if (typeof tw.compile !== \"function\") {\n      throw new Error(\"tailwindcss v4 not found — compile() API missing. Check tailwindcss version >= 4.\")\n    }\n    _twEngine = tw\n    return _twEngine\n  } catch (e) {\n    _twEngineError = e instanceof Error ? e : new Error(String(e))\n    throw _twEngineError\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Tailwind → raw CSS\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport async function generateRawCss(classes: string[], cssEntryContent?: string, root?: string): Promise<string> {\n  if (classes.length === 0) return \"\"\n\n  const tw = loadTailwindEngine()\n  const input = cssEntryContent ?? \"@import 'tailwindcss';\"\n\n  const { readFileSync, existsSync } = await import(\"node:fs\")\n  const { dirname, resolve } = await import(\"node:path\")\n\n  const projectRoot = root ?? process.cwd()\n  const req = createRequire(resolve(projectRoot, \"package.json\"))\n\n  const loadStylesheet = async (id: string, base: string) => {\n    try {\n      const cssId = id === \"tailwindcss\" ? \"tailwindcss/index.css\"\n        : id === \"tailwindcss/preflight\" ? \"tailwindcss/preflight.css\"\n        : id === \"tailwindcss/utilities\" ? \"tailwindcss/utilities.css\"\n        : id === \"tailwindcss/theme\" ? \"tailwindcss/theme.css\"\n        : id\n\n      const pkgPath = req.resolve(cssId)\n      return { content: readFileSync(pkgPath, \"utf-8\"), base: dirname(pkgPath) }\n    } catch {\n      try {\n        const absPath = resolve(base, id)\n        if (existsSync(absPath)) {\n          return { content: readFileSync(absPath, \"utf-8\"), base: dirname(absPath) }\n        }\n      } catch { /* ignore */ }\n      return { content: \"\", base }\n    }\n  }\n\n  const compiler = await Promise.resolve(tw.compile(input, { loadStylesheet }))\n  return compiler.build(classes)\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Rust CSS Compiler (Primary Path)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load theme configuration from the project.\n * For now, returns a minimal theme object.\n * In production, this should load from tailwind.config.ts/js\n */\nfunction getThemeConfig(): Record<string, unknown> {\n  // TODO: Load from tailwind.config.ts/js\n  // This is a simplified version - in production, parse the actual config\n  return {\n    colors: {\n      slate: {\n        \"50\": \"#f8fafc\",\n        \"100\": \"#f1f5f9\",\n        \"200\": \"#e2e8f0\",\n        \"300\": \"#cbd5e1\",\n        \"400\": \"#94a3b8\",\n        \"500\": \"#64748b\",\n        \"600\": \"#475569\",\n        \"700\": \"#334155\",\n        \"800\": \"#1e293b\",\n        \"900\": \"#0f172a\",\n      },\n      gray: {\n        \"50\": \"#f9fafb\",\n        \"100\": \"#f3f4f6\",\n        \"200\": \"#e5e7eb\",\n        \"300\": \"#d1d5db\",\n        \"400\": \"#9ca3af\",\n        \"500\": \"#6b7280\",\n        \"600\": \"#4b5563\",\n        \"700\": \"#374151\",\n        \"800\": \"#1f2937\",\n        \"900\": \"#111827\",\n      },\n      white: \"#ffffff\",\n      black: \"#000000\",\n      red: {\n        \"500\": \"#ef4444\",\n        \"600\": \"#dc2626\",\n      },\n      blue: {\n        \"500\": \"#3b82f6\",\n        \"600\": \"#1e40af\",\n      },\n    },\n    spacing: {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\",\n    },\n    breakpoints: {\n      \"sm\": \"640px\",\n      \"md\": \"768px\",\n      \"lg\": \"1024px\",\n      \"xl\": \"1280px\",\n      \"2xl\": \"1536px\",\n    },\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LightningCSS post-process via Rust\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction postProcessWithLightning(rawCss: string): string {\n  if (!rawCss) return \"\"\n  const native = getNativeBridge()\n  if (!native?.processTailwindCssLightning) {\n    throw new Error(\"FATAL: Native binding 'processTailwindCssLightning' is required but not available.\")\n  }\n  const result = native.processTailwindCssLightning(rawCss) as { css: string } | null\n  if (!result?.css) {\n    throw new Error(\"FATAL: processTailwindCssLightning returned null\")\n  }\n  return result.css\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main pipeline\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface CssPipelineResult {\n  css: string\n  classes: string[]\n  sizeBytes: number\n  optimized: boolean\n}\n\nexport async function runCssPipeline(\n  classes: string[],\n  cssEntryContent?: string,\n  root?: string,\n  minify = true\n): Promise<CssPipelineResult> {\n  // Deduplicate classes while preserving Array compatibility\n  const filtered = classes.filter(Boolean)\n  const uniqueMap = new Map<string, string>()\n  filtered.forEach((cls) => uniqueMap.set(cls, cls))\n  const unique = Array.from(uniqueMap.values())\n\n  if (unique.length === 0) {\n    return { css: \"\", classes: [], sizeBytes: 0, optimized: false }\n  }\n\n  // ✅ PHASE 0: Check cache first (30-40% faster for cache hits)\n  const cacheKey = _getCacheKey(unique, minify, cssEntryContent, root)\n  const cached = _cssCache.get(cacheKey)\n  if (cached) {\n    _cacheHits++\n    if (process.env.DEBUG?.includes(\"compiler\")) {\n      console.log(\n        `[Compiler] Cache HIT: ${unique.length} classes (hit rate: ${(getCacheStats().hitRate * 100).toFixed(1)}%)`\n      )\n    }\n    return cached\n  }\n\n  _cacheMisses++\n\n  let rawCss: string\n  let usedRustCompiler = false\n\n  // Phase 1: Try Rust CSS Compiler (Fast Path - 40-60% faster)\n  try {\n    const theme = getThemeConfig()\n    rawCss = await generateCssNativeImpl(unique, {\n      theme,\n      fallbackToJs: true,\n      logFallback: process.env.DEBUG?.includes(\"compiler\") === true,\n    })\n    usedRustCompiler = true\n  } catch (error) {\n    // Fall back to JavaScript Tailwind if Rust fails\n    if (process.env.DEBUG?.includes(\"compiler\")) {\n      console.warn(\"[Compiler] Rust compiler failed, using JavaScript Tailwind:\", error)\n    }\n    rawCss = await generateRawCss(unique, cssEntryContent, root)\n  }\n\n  // Phase 2: Optional post-processing with LightningCSS (if minify=true)\n  const finalCss = minify ? postProcessWithLightning(rawCss) : rawCss\n\n  if (process.env.DEBUG?.includes(\"compiler\")) {\n    console.log(\n      `[Compiler] Generated CSS from ${unique.length} classes (${usedRustCompiler ? \"Rust\" : \"JavaScript\"})`,\n      `Size: ${finalCss.length} bytes`\n    )\n  }\n\n  const result: CssPipelineResult = {\n    css: finalCss,\n    classes: unique,\n    sizeBytes: finalCss.length,\n    optimized: minify,\n  }\n\n  // Store in cache with eviction\n  _evictOldestIfNeeded()\n  _cssCache.set(cacheKey, result)\n\n  return result\n}\n\n/**\n * @deprecated Tidak dipakai di Tailwind v4. Ditinggal untuk backward compatibility.\n */\nexport function runCssPipelineSync(_classes: string[]): CssPipelineResult {\n  return { css: \"\", classes: [], sizeBytes: 0, optimized: false }\n}\n\n/**\n * Minify dan vendor-prefix CSS dengan explicit browser targets.\n */\nexport function processTailwindCssWithTargets(css: string, targets?: string): string {\n  const native = getNativeBridge()\n  if (!native?.processTailwindCssWithTargets) {\n    throw new Error(\"FATAL: Native binding 'processTailwindCssWithTargets' is required but not available.\")\n  }\n  const result = native.processTailwindCssWithTargets(css, targets ?? null) as { css: string } | null\n  if (!result?.css) {\n    throw new Error(\"FATAL: processTailwindCssWithTargets returned null\")\n  }\n  return result.css\n}","/**\n * tailwindEngine.ts\n *\n * Pipeline: classes[] → Rust CSS Compiler (only path)\n *\n * The Rust compiler provides 40-60% performance improvement over pure JavaScript.\n * No JavaScript fallback - fail fast if native binding unavailable.\n */\n\nimport { createRequire } from \"node:module\"\nimport { getNativeBridge } from \"../nativeBridge\"\nimport { generateCssNative as generateCssNativeImpl } from \"./cssGeneratorNative\"\nimport { minifyCss } from \"./cssCompilationNative\"\nimport { generateRawCss } from \"../tailwindEngine\"\n\nconst require = createRequire(\n  typeof __filename !== \"undefined\"\n    ? `file://${__filename}`\n    : (typeof import.meta !== \"undefined\" && import.meta.url ? import.meta.url : \"file://unknown\")\n)\n\ninterface CacheStats {\n  hits: number\n  misses: number\n  hitRate: number\n  size: number\n  maxSize: number\n}\n\nconst _cssCache = new Map<string, CssPipelineResult>()\nlet _cacheHits = 0\nlet _cacheMisses = 0\nconst MAX_CACHE_SIZE = 100\nconst MAX_CACHE_MEMORY = 256 * 1024 // 256KB\n\nfunction _getCacheKey(classes: string[], minify: boolean, cssEntry?: string, root?: string): string {\n  // Sort classes for consistent hashing\n  const sorted = [...classes].sort().join(\",\")\n  const flags = `${minify ? \"1\" : \"0\"}${cssEntry ? \"1\" : \"0\"}${root ? \"1\" : \"0\"}`\n  return `${sorted}|${flags}`\n}\n\nfunction _evictOldestIfNeeded(): void {\n  if (_cssCache.size >= MAX_CACHE_SIZE) {\n    const firstKey = _cssCache.keys().next().value as string | undefined\n    if (firstKey !== undefined) {\n      _cssCache.delete(firstKey)\n    }\n  }\n}\n\nexport function getCacheStats(): CacheStats {\n  const total = _cacheHits + _cacheMisses\n  return {\n    hits: _cacheHits,\n    misses: _cacheMisses,\n    hitRate: total > 0 ? _cacheHits / total : 0,\n    size: _cssCache.size,\n    maxSize: MAX_CACHE_SIZE,\n  }\n}\n\nexport function clearCache(): void {\n  _cssCache.clear()\n  _cacheHits = 0\n  _cacheMisses = 0\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Deprecated - Kept for reference only, not used\n// ─────────────────────────────────────────────────────────────────────────────\n// The JavaScript Tailwind engine path has been removed in favor of Rust-only\n// compilation. The code below is legacy and can be removed in future cleanup.\n\n// export async function generateRawCss(...) { /* removed */ }\n// export function loadTailwindEngine() { /* removed */ }\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Rust CSS Compiler (Primary Path)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load theme configuration from the project.\n * For now, returns a minimal theme object.\n * In production, this should load from tailwind.config.ts/js\n */\nfunction getThemeConfig(): Record<string, unknown> {\n  // TODO: Load from tailwind.config.ts/js\n  // This is a simplified version - in production, parse the actual config\n  return {\n    colors: {\n      slate: {\n        \"50\": \"#f8fafc\",\n        \"100\": \"#f1f5f9\",\n        \"200\": \"#e2e8f0\",\n        \"300\": \"#cbd5e1\",\n        \"400\": \"#94a3b8\",\n        \"500\": \"#64748b\",\n        \"600\": \"#475569\",\n        \"700\": \"#334155\",\n        \"800\": \"#1e293b\",\n        \"900\": \"#0f172a\",\n      },\n      gray: {\n        \"50\": \"#f9fafb\",\n        \"100\": \"#f3f4f6\",\n        \"200\": \"#e5e7eb\",\n        \"300\": \"#d1d5db\",\n        \"400\": \"#9ca3af\",\n        \"500\": \"#6b7280\",\n        \"600\": \"#4b5563\",\n        \"700\": \"#374151\",\n        \"800\": \"#1f2937\",\n        \"900\": \"#111827\",\n      },\n      white: \"#ffffff\",\n      black: \"#000000\",\n      red: {\n        \"500\": \"#ef4444\",\n        \"600\": \"#dc2626\",\n      },\n      blue: {\n        \"500\": \"#3b82f6\",\n        \"600\": \"#1e40af\",\n      },\n    },\n    spacing: {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\",\n    },\n    breakpoints: {\n      \"sm\": \"640px\",\n      \"md\": \"768px\",\n      \"lg\": \"1024px\",\n      \"xl\": \"1280px\",\n      \"2xl\": \"1536px\",\n    },\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LightningCSS post-process via Rust\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction postProcessWithLightning(rawCss: string): string {\n  if (!rawCss) return \"\"\n  const native = getNativeBridge()\n  if (!native?.processTailwindCssLightning) {\n    throw new Error(\"FATAL: Native binding 'processTailwindCssLightning' is required but not available.\")\n  }\n  const result = native.processTailwindCssLightning(rawCss) as { css: string } | null\n  if (!result?.css) {\n    throw new Error(\"FATAL: processTailwindCssLightning returned null\")\n  }\n  return result.css\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main pipeline\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface CssPipelineResult {\n  css: string\n  classes: string[]\n  sizeBytes: number\n  optimized: boolean\n}\n\nexport async function runCssPipeline(\n  classes: string[],\n  cssEntryContent?: string,\n  root?: string,\n  minify = true,\n  minifier: \"lightning\" | \"fast\" = \"lightning\"\n): Promise<CssPipelineResult> {\n  // Deduplicate classes while preserving Array compatibility\n  const filtered = classes.filter(Boolean)\n  const uniqueMap = new Map<string, string>()\n  filtered.forEach((cls) => uniqueMap.set(cls, cls))\n  const unique = Array.from(uniqueMap.values())\n\n  if (unique.length === 0) {\n    return { css: \"\", classes: [], sizeBytes: 0, optimized: false }\n  }\n\n  // ✅ PHASE 0: Check cache first (30-40% faster for cache hits)\n  const cacheKey = _getCacheKey(unique, minify, cssEntryContent, root) + `|${minifier}`\n  const cached = _cssCache.get(cacheKey)\n  if (cached) {\n    _cacheHits++\n    if (process.env.DEBUG?.includes(\"compiler\")) {\n      console.log(\n        `[Compiler] Cache HIT: ${unique.length} classes (hit rate: ${(getCacheStats().hitRate * 100).toFixed(1)}%)`\n      )\n    }\n    return cached\n  }\n\n  _cacheMisses++\n\n  // Phase 1: Tailwind JS engine (primary path — generates real CSS)\n  let rawCss: string\n  try {\n    rawCss = await generateRawCss(unique, cssEntryContent, root)\n  } catch {\n    // Fallback: Rust CSS compiler (stub — returns class list, not full CSS)\n    rawCss = await generateCssNativeImpl(unique, { theme: getThemeConfig() })\n  }\n\n  // Phase 2: Optional post-processing with LightningCSS or fast minifier (if minify=true)\n  let finalCss = rawCss\n  if (minify) {\n    if (minifier === \"fast\") {\n      finalCss = minifyCss(rawCss)\n    } else {\n      finalCss = postProcessWithLightning(rawCss)\n    }\n  }\n\n  if (process.env.DEBUG?.includes(\"compiler\")) {\n    console.log(\n      `[Compiler] Generated CSS from ${unique.length} classes`,\n      `Size: ${finalCss.length} bytes`\n    )\n  }\n\n  const result: CssPipelineResult = {\n    css: finalCss,\n    classes: unique,\n    sizeBytes: finalCss.length,\n    optimized: minify,\n  }\n\n  // Store in cache with eviction\n  _evictOldestIfNeeded()\n  _cssCache.set(cacheKey, result)\n\n  return result\n}\n\n/**\n * @deprecated Tidak dipakai di Tailwind v4. Ditinggal untuk backward compatibility.\n */\nexport function runCssPipelineSync(_classes: string[]): CssPipelineResult {\n  return { css: \"\", classes: [], sizeBytes: 0, optimized: false }\n}\n\n/**\n * Minify dan vendor-prefix CSS dengan explicit browser targets.\n */\nexport function processTailwindCssWithTargets(css: string, targets?: string): string {\n  const native = getNativeBridge()\n  if (!native?.processTailwindCssWithTargets) {\n    throw new Error(\"FATAL: Native binding 'processTailwindCssWithTargets' is required but not available.\")\n  }\n  const result = native.processTailwindCssWithTargets(css, targets ?? null) as { css: string } | null\n  if (!result?.css) {\n    throw new Error(\"FATAL: processTailwindCssWithTargets returned null\")\n  }\n  return result.css\n}\n","/**\n * Compiler Sub-entry Point\n * \n * Exports CSS generation and compilation functionality.\n * - CSS generation with caching\n * - Compilation of classes to CSS\n * - ID registry management\n * - Streaming and incremental processing\n */\n\nexport {\n  generateCssNative,\n  getCacheStats,\n  clearThemeCache,\n  resetCacheStats,\n} from './cssGeneratorNative'\n\nexport {\n  compileCssNative2,\n  compileCssLightning,\n  extractTwStateConfigsNative,\n  generateStaticStateCssNative,\n  extractAndGenerateStateCssNative,\n  layoutClassesToCss,\n  hashContent,\n  extractTwContainerConfigs,\n  parseAtomicClass,\n  generateAtomicCss,\n  toAtomicClasses,\n  clearAtomicRegistry,\n  atomicRegistrySize,\n  type ContainerConfig,\n  type StateCssConfig,\n  type GeneratedStateCss,\n} from './compilationNative'\n\nexport {\n  generateCss,\n  generateCssBatch,\n  compileClass,\n  compileClasses,\n  compileToCss,\n  compileToCssBatch,\n  minifyCss,\n  compileAnimation,\n  compileKeyframes,\n  compileTheme,\n  twMerge,\n  twMergeMany,\n  twMergeWithSeparator,\n  twMergeManyWithSeparator,\n  twMergeRaw,\n  type CompiledCssRule,\n  type CompiledAnimation,\n  type CompiledTheme,\n  type CssCompileResult,\n  type TwMergeOptions,\n} from './cssCompilationNative'\n\nexport {\n  idRegistryCreate,\n  idRegistryGenerate,\n  idRegistryLookup,\n  idRegistryNext,\n  idRegistryDestroy,\n  idRegistryReset,\n  idRegistrySnapshot,\n  idRegistryActiveCount,\n  registerPropertyName,\n  registerValueName,\n  propertyIdToString,\n  valueIdToString,\n  reverseLookupProperty,\n  reverseLookupValue,\n  idRegistryExport,\n  idRegistryImport,\n  type RegistrySnapshot,\n} from './idRegistryNative'\n\nexport {\n  processFileChange,\n  computeIncrementalDiff,\n  createFingerprint,\n  injectStateHash,\n  pruneStaleCacheEntries,\n  rebuildWorkspaceResult,\n  scanFileNative,\n  scanFilesBatchNative,\n  type FileChangeEvent,\n  type ProcessedFileChange,\n  type FileDiff,\n  type FileFingerprint,\n  type IncrementalDiffResult,\n  type StateInjectionResult,\n  type PruneResult,\n  type RebuildWorkspaceResult,\n} from './streamingNative'\n\nexport { runCssPipeline } from './tailwindEngine'\n","/**\n * Parser Sub-entry Point\n * \n * Exports class parsing and extraction functionality.\n * - Tailwind class parsing\n * - Class extraction from source\n * - Class normalization and deduplication\n * - Component analysis\n */\n\nimport { getNativeBridge } from '../nativeBridge'\n\n// ============================================================================\n// PARSING FUNCTIONS\n// ============================================================================\n\nexport const parseClasses = (raw: string): Array<{ raw: string; type: string }> => {\n  const native = getNativeBridge()\n  if (!native?.parseClasses) {\n    throw new Error('FATAL: Native binding \\'parseClasses\\' is required but not available.')\n  }\n  return native.parseClasses(raw) || []\n}\n\nexport const parseClass = (input: string): Record<string, unknown> => {\n  const native = getNativeBridge()\n  if (!native?.parseClass) {\n    throw new Error('FATAL: Native binding \\'parseClass\\' is required but not available.')\n  }\n  const result = native.parseClass(input)\n  return typeof result === 'string' ? JSON.parse(result) : result\n}\n\n// ============================================================================\n// CLASS EXTRACTION\n// ============================================================================\n\nexport const extractAllClasses = (source: string): string[] => {\n  const native = getNativeBridge()\n  if (!native?.extractAllClasses) {\n    throw new Error('FATAL: Native binding \\'extractAllClasses\\' is required but not available.')\n  }\n  return native.extractAllClasses(source) || []\n}\n\nexport const extractClassesFromSource = (source: string): string => {\n  const native = getNativeBridge()\n  if (!native?.extractClassesFromSource) {\n    throw new Error('FATAL: Native binding \\'extractClassesFromSource\\' is required but not available.')\n  }\n  const result = native.extractClassesFromSource(source)\n  return Array.isArray(result) ? result.join(' ') : String(result || '')\n}\n\nexport const astExtractClasses = (source: string, _filename: string) => {\n  const native = getNativeBridge()\n  if (!native?.extractClassesFromSource) {\n    throw new Error('FATAL: Native binding \\'extractClassesFromSource\\' is required but not available.')\n  }\n  return native.extractClassesFromSource(source) || []\n}\n\n// ============================================================================\n// CLASS NORMALIZATION & MERGING\n// ============================================================================\n\nexport const normalizeClasses = (raw: string): string => {\n  const result = normalizeAndDedupClasses(raw)\n  return result?.normalized || ''\n}\n\nexport const mergeClassesStatic = (classes: string): string => {\n  const result = normalizeAndDedupClasses(classes)\n  return result?.normalized || ''\n}\n\nexport const normalizeAndDedupClasses = (raw: string) => {\n  const native = getNativeBridge()\n  if (!native?.normalizeAndDedupClasses) {\n    throw new Error('FATAL: Native binding \\'normalizeAndDedupClasses\\' is required but not available.')\n  }\n  const result = native.normalizeAndDedupClasses(raw)\n  return result || { normalized: '', duplicatesRemoved: 0, uniqueCount: 0 }\n}\n\n// ============================================================================\n// COMPONENT ANALYSIS\n// ============================================================================\n\nexport const extractComponentUsage = (source: string): Array<{ component: string; propsJson: string }> => {\n  const native = getNativeBridge()\n  if (!native?.extractComponentUsage) {\n    throw new Error('FATAL: Native binding \\'extractComponentUsage\\' is required but not available.')\n  }\n  return native.extractComponentUsage(source) || []\n}\n\n// ============================================================================\n// BATCH OPERATIONS\n// ============================================================================\n\nexport const batchExtractClasses = (filePaths: string[]) => {\n  const native = getNativeBridge()\n  if (!native?.batchExtractClasses) {\n    throw new Error('FATAL: Native binding \\'batchExtractClasses\\' is required but not available.')\n  }\n  return native.batchExtractClasses(filePaths) || []\n}\n\nexport const checkAgainstSafelist = (classes: string[], safelist: string[]) => {\n  const native = getNativeBridge()\n  if (!native?.checkAgainstSafelist) {\n    throw new Error('FATAL: Native binding \\'checkAgainstSafelist\\' is required but not available.')\n  }\n  return native.checkAgainstSafelist(classes, safelist) || { matched: [], unmatched: [], safelistSize: 0 }\n}\n\n// ============================================================================\n// DIFF & MERGING\n// ============================================================================\n\nexport const diffClassLists = (previous: string[], current: string[]) => {\n  const native = getNativeBridge()\n  if (!native?.diffClassLists) {\n    throw new Error('FATAL: Native binding \\'diffClassLists\\' is required but not available.')\n  }\n  return native.diffClassLists(previous, current) || { added: [], removed: [], unchanged: [], hasChanges: false }\n}\n\n// Re-export types if any\nexport type { ClassExtractResult, ComponentMetadata } from '../nativeBridge'\n","/**\n * analyzerNative.ts\n *\n * Native Rust bindings for CSS analysis and optimization.\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\nexport type {\n  DeadCodeResult,\n  ClassUsageItem,\n  ContainerConfig,\n  HoistResult,\n  VariantTableResult,\n  ClassifyResult,\n  MergeResult,\n  ProcessedCssResult,\n} from \"../nativeBridge\"\n\n/**\n * Detect dead CSS selectors in generated CSS.\n */\nexport function detectDeadCode(scanResultJson: string, css: string) {\n  const native = getNativeBridge()\n  if (!native?.detectDeadCode) throw new Error(\"detectDeadCode not available\")\n  return native.detectDeadCode(scanResultJson, css)\n}\n\n/**\n * Analyze class usage across scanned files.\n */\nexport function analyzeClassUsageNative(classes: string[], scanResultJson: string, css: string) {\n  const native = getNativeBridge()\n  if (!native?.analyzeClassUsage) throw new Error(\"analyzeClassUsage not available\")\n  return native.analyzeClassUsage(classes, scanResultJson, css)\n}\n\n/**\n * Analyze entire class list and generate CSS.\n */\nexport function analyzeClassesNative(filesJson: string, cwd: string, flags?: number) {\n  const native = getNativeBridge()\n  if (!native?.analyzeClasses) throw new Error(\"analyzeClasses not available\")\n  return native.analyzeClasses(filesJson, cwd, flags ?? 0)\n}\n\n/**\n * Analyze React Server Component requirements.\n */\nexport function analyzeRscNative(source: string, filename: string) {\n  const native = getNativeBridge()\n  if (!native?.analyzeRsc) throw new Error(\"analyzeRsc not available\")\n  return native.analyzeRsc(source, filename)\n}\n\n/**\n * Optimize CSS by removing dead code and minifying.\n */\nexport function optimizeCssNative(css: string) {\n  const native = getNativeBridge()\n  if (!native?.processTailwindCssLightning) throw new Error(\"processTailwindCssLightning not available\")\n  const result = native.processTailwindCssLightning(css)\n  return {\n    css: result.css,\n    originalSize: css.length,\n    optimizedSize: result.size_bytes,\n    reductionPercentage: ((css.length - result.size_bytes) / css.length) * 100,\n  }\n}\n\n/**\n * Process Tailwind CSS with Lightning CSS post-processing.\n */\nexport function processTailwindCssLightning(css: string) {\n  const native = getNativeBridge()\n  if (!native?.processTailwindCssLightning) throw new Error(\"processTailwindCssLightning not available\")\n  return native.processTailwindCssLightning(css)\n}\n\n/**\n * Eliminate dead CSS selectors.\n */\nexport function eliminateDeadCssNative(css: string, deadClasses: string[]): string {\n  const native = getNativeBridge()\n  if (!native?.eliminateDeadCss) throw new Error(\"eliminateDeadCss not available\")\n  return native.eliminateDeadCss(css, deadClasses)\n}\n\n/**\n * Hoist components from source code.\n */\nexport function hoistComponentsNative(source: string) {\n  const native = getNativeBridge()\n  if (!native?.hoistComponents) throw new Error(\"hoistComponents not available\")\n  return native.hoistComponents(source)\n}\n\n/**\n * Compile variant configuration table.\n */\nexport function compileVariantTableNative(configJson: string) {\n  const native = getNativeBridge()\n  if (!native?.compileVariantTable) throw new Error(\"compileVariantTable not available\")\n  return native.compileVariantTable(configJson)\n}\n\n/**\n * Classify and sort classes by bucket.\n */\nexport function classifyAndSortClassesNative(classes: string[]) {\n  const native = getNativeBridge()\n  if (!native?.classifyAndSortClasses) throw new Error(\"classifyAndSortClasses not available\")\n  return native.classifyAndSortClasses(classes)\n}\n\n/**\n * Merge CSS declarations from multiple chunks.\n */\nexport function mergeCssDeclarationsNative(cssChunks: string[]) {\n  const native = getNativeBridge()\n  if (!native?.mergeCssDeclarations) throw new Error(\"mergeCssDeclarations not available\")\n  return native.mergeCssDeclarations(cssChunks)\n}\n\n// ── TYPE DEFINITIONS: Analysis & Memory Profiling ───────────────────────────\n\nexport interface MemoryStats {\n  status: string\n  memory: {\n    allocated_bytes: number\n    freed_bytes: number\n    in_use_bytes: number\n    allocated_mb: number\n    freed_mb: number\n    in_use_mb: number\n  }\n  system: {\n    cache_entries: number\n    active_operations: number\n  }\n}\n\nexport interface MemoryRecommendations {\n  status: string\n  current_memory_mb: number\n  recommendation: string\n  priority: string\n  suggestions: string[]\n}\n\nexport interface OptimalCacheConfigAnalysis {\n  status: string\n  workload_type: string\n  expected_entries: number\n  recommended_backend: string\n  recommended_capacity: number\n  estimated_memory_mb: number\n  ttl_seconds: number\n  details: {\n    backend_explanation: string\n    capacity_explanation: string\n    memory_estimate: string\n  }\n}\n\nexport interface Week6FeaturesStatus {\n  status: string\n  week: number\n  features: Record<string, {\n    implemented: boolean\n    status: string\n    capacity?: string\n    hit_rate_optimization?: boolean\n    metrics?: string[]\n  }>\n  optimization_hints: Record<string, string>\n}\n\n// ── EXPORTED WRAPPERS ───────────────────────────────────────────────────────\n\n/**\n * Get Week 6 features status.\n */\nexport function getWeek6FeaturesStatus(): Week6FeaturesStatus {\n  const native = getNativeBridge()\n  if (!native?.getWeek6FeaturesStatus) throw new Error(\"getWeek6FeaturesStatus not available\")\n  const resultJson = native.getWeek6FeaturesStatus()\n  return JSON.parse(resultJson)\n}\n\n/**\n * Get current memory statistics from native Rust engine.\n */\nexport function getMemoryStatsNative(): MemoryStats {\n  const native = getNativeBridge()\n  if (!native?.getMemoryStatsNative) throw new Error(\"getMemoryStatsNative not available\")\n  const resultJson = native.getMemoryStatsNative()\n  return JSON.parse(resultJson)\n}\n\n/**\n * Get memory recommendations based on current usage.\n */\nexport function getMemoryRecommendationsNative(): MemoryRecommendations {\n  const native = getNativeBridge()\n  if (!native?.getMemoryRecommendationsNative) throw new Error(\"getMemoryRecommendationsNative not available\")\n  const resultJson = native.getMemoryRecommendationsNative()\n  return JSON.parse(resultJson)\n}\n\n/**\n * Estimate optimal cache config based on workload and entries count.\n */\nexport function estimateOptimalCacheConfigNative(workloadType: string, expectedEntries: number): OptimalCacheConfigAnalysis {\n  const native = getNativeBridge()\n  if (!native?.estimateOptimalCacheConfigNative) throw new Error(\"estimateOptimalCacheConfigNative not available\")\n  const resultJson = native.estimateOptimalCacheConfigNative(workloadType, expectedEntries)\n  return JSON.parse(resultJson)\n}\n\n/**\n * Reset memory statistics tracking counters.\n */\nexport function resetMemoryStats(): void {\n  const native = getNativeBridge()\n  if (!native?.resetMemoryStats) throw new Error(\"resetMemoryStats not available\")\n  native.resetMemoryStats()\n}\n","/**\n * themeResolutionNative.ts\n *\n * Phase 5.1: Theme Resolution Extended - Advanced theme configuration handling\n * Exposes 7 theme resolution functions for complex Tailwind configurations\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\n/**\n * Validation result for theme config\n */\nexport interface ThemeValidationResult {\n  is_valid: boolean\n  errors: string[]\n  warnings: string[]\n  suggestions: string[]\n}\n\n/**\n * Resolved variant configuration\n */\nexport interface ResolvedVariantConfig {\n  variants: string[]\n  supported: string[]\n  deprecated: string[]\n  conflicting: string[]\n}\n\n/**\n * Theme cascade resolution result\n */\nexport interface ThemeCascadeResult {\n  base_theme: Record<string, unknown>\n  user_overrides: Record<string, unknown>\n  merged_theme: Record<string, unknown>\n  conflict_resolutions: Array<{\n    key: string\n    base_value: unknown\n    override_value: unknown\n    resolution: \"override\" | \"merge\" | \"error\"\n  }>\n}\n\n/**\n * Class name resolution from theme\n */\nexport interface ResolvedClassName {\n  class_name: string\n  property: string\n  value: string\n  from_theme_path: string\n  is_responsive: boolean\n  variants: string[]\n}\n\n/**\n * Conflict group information\n */\nexport interface ConflictGroupInfo {\n  group_name: string\n  conflicting_classes: string[]\n  description: string\n  resolution_strategy: string\n}\n\n/**\n * Get all resolved variants from theme configuration\n * Parses theme config and returns all variant prefixes\n *\n * @param configJson - JSON string of theme configuration\n * @returns Resolved variants with metadata\n *\n * @example\n * ```ts\n * const config = {\n *   screens: { md: '768px', lg: '1024px' },\n *   state: { hover: '&:hover', focus: '&:focus' }\n * }\n * const variants = resolveVariants(JSON.stringify(config))\n * console.log(variants.variants)  // ['md', 'lg', 'hover', 'focus', ...]\n * ```\n */\nexport function resolveVariants(configJson: string): ResolvedVariantConfig {\n  const native = getNativeBridge()\n  if (!native?.resolve_variants) throw new Error(\"resolve_variants not available\")\n  const resultJson = native.resolve_variants(configJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      variants: [],\n      supported: [],\n      deprecated: [],\n      conflicting: [],\n    }\n  }\n}\n\n/**\n * Validate theme configuration for correctness\n * Checks for common issues and provides warnings\n *\n * @param configJson - JSON string of theme configuration\n * @returns Validation result with errors and suggestions\n *\n * @example\n * ```ts\n * const result = validateThemeConfig(JSON.stringify(myTheme))\n * if (!result.is_valid) {\n *   console.error('Errors:', result.errors)\n *   console.warn('Warnings:', result.warnings)\n * }\n * ```\n */\nexport function validateThemeConfig(configJson: string): ThemeValidationResult {\n  const native = getNativeBridge()\n  if (!native?.validate_variant_config) throw new Error(\"validate_variant_config not available\")\n  const resultJson = native.validate_variant_config(configJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      is_valid: false,\n      errors: [\"Unable to parse configuration\"],\n      warnings: [],\n      suggestions: [],\n    }\n  }\n}\n\n/**\n * Resolve theme cascade (base + overrides)\n * Merges base theme with user overrides intelligently\n *\n * @param baseThemeJson - Base theme configuration\n * @param overridesJson - User overrides configuration\n * @returns Merged theme with conflict information\n *\n * @example\n * ```ts\n * const cascade = resolveCascade(\n *   JSON.stringify(baseTheme),\n *   JSON.stringify(userOverrides)\n * )\n * console.log(cascade.merged_theme)\n * console.log('Conflicts resolved:', cascade.conflict_resolutions.length)\n * ```\n */\nexport function resolveCascade(\n  baseThemeJson: string,\n  overridesJson: string\n): ThemeCascadeResult {\n  const native = getNativeBridge()\n  if (!native?.resolve_cascade) throw new Error(\"resolve_cascade not available\")\n  const resultJson = native.resolve_cascade(baseThemeJson, overridesJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      base_theme: {},\n      user_overrides: {},\n      merged_theme: {},\n      conflict_resolutions: [],\n    }\n  }\n}\n\n/**\n * Resolve class names from theme\n * Maps Tailwind class names to theme values\n *\n * @param classNames - Array of Tailwind class names (e.g., [\"text-lg\", \"bg-blue-600\"])\n * @param themeJson - Theme configuration\n * @returns Resolved class name information\n *\n * @example\n * ```ts\n * const resolved = resolveClassNames(\n *   ['text-lg', 'bg-blue-600', 'md:p-4'],\n *   JSON.stringify(theme)\n * )\n * resolved.forEach(item => {\n *   console.log(`${item.class_name} -> ${item.property}: ${item.value}`)\n * })\n * ```\n */\nexport function resolveClassNames(\n  classNames: string[],\n  themeJson: string\n): ResolvedClassName[] {\n  const native = getNativeBridge()\n  if (!native?.resolve_class_names) throw new Error(\"resolve_class_names not available\")\n  const resultJson = native.resolve_class_names(classNames, themeJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return []\n  }\n}\n\n/**\n * Get conflict group information\n * Identifies classes that conflict with each other\n *\n * @param groupName - Conflict group name (e.g., \"display\", \"position\", \"flex-direction\")\n * @param themeJson - Theme configuration\n * @returns Information about the conflict group\n *\n * @example\n * ```ts\n * const info = resolveConflictGroup('display', JSON.stringify(theme))\n * console.log('Conflicting classes:', info.conflicting_classes)\n * console.log('Strategy:', info.resolution_strategy)\n * ```\n */\nexport function resolveConflictGroup(groupName: string, themeJson: string): ConflictGroupInfo {\n  const native = getNativeBridge()\n  if (!native?.resolve_conflict_group)\n    throw new Error(\"resolve_conflict_group not available\")\n  const resultJson = native.resolve_conflict_group(groupName, themeJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return {\n      group_name: groupName,\n      conflicting_classes: [],\n      description: \"\",\n      resolution_strategy: \"last-wins\",\n    }\n  }\n}\n\n/**\n * Resolve theme value from key path\n * Navigates nested theme config to find values\n *\n * @param keyPath - Dot-separated path (e.g., \"colors.blue.600\")\n * @param themeJson - Theme configuration\n * @returns Resolved value or null if not found\n *\n * @example\n * ```ts\n * const color = resolveThemeValue('colors.blue.600', JSON.stringify(theme))\n * console.log(color)  // \"#2563eb\" or similar\n * ```\n */\nexport function resolveThemeValue(keyPath: string, themeJson: string): string | null {\n  const native = getNativeBridge()\n  if (!native?.resolve_theme_value) throw new Error(\"resolve_theme_value not available\")\n  return native.resolve_theme_value(keyPath, themeJson)\n}\n\n/**\n * Get all simple variants from configuration\n * Returns variants that don't require complex selector nesting\n *\n * @param configJson - Theme/variant configuration\n * @returns Array of simple variant names\n *\n * @example\n * ```ts\n * const simpleVariants = resolveSimpleVariants(JSON.stringify(config))\n * console.log(simpleVariants)\n * // [\"hover\", \"focus\", \"active\", \"group-hover\", ...]\n * ```\n */\nexport function resolveSimpleVariants(configJson: string): string[] {\n  const native = getNativeBridge()\n  if (!native?.resolve_simple_variants) throw new Error(\"resolve_simple_variants not available\")\n  const resultJson = native.resolve_simple_variants(configJson)\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return []\n  }\n}\n","/**\n * scannerNative.ts - Rust bindings for workspace scanning and class extraction\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\nexport type {\n  ScanWorkspaceResult,\n  ScanFileResult,\n  BatchExtractResult,\n  SafelistCheckResult,\n  PrefilterFileResult,\n} from \"../nativeBridge\"\n\nexport function scanWorkspace(root: string, extensions?: string[]) {\n  const native = getNativeBridge()\n  if (!native?.scan_workspace) throw new Error(\"scan_workspace not available\")\n  return native.scan_workspace(root, extensions)\n}\n\nexport function extractClassesFromSourceNative(source: string): string[] {\n  const native = getNativeBridge()\n  if (!native?.extract_classes_from_source) throw new Error(\"extract_classes_from_source not available\")\n  return native.extract_classes_from_source(source)\n}\n\nexport function batchExtractClassesNative(filePaths: string[]) {\n  const native = getNativeBridge()\n  if (!native?.batch_extract_classes) throw new Error(\"batch_extract_classes not available\")\n  return native.batch_extract_classes(filePaths)\n}\n\nexport function checkAgainstSafelistNative(classes: string[], safelist: string[]) {\n  const native = getNativeBridge()\n  if (!native?.check_against_safelist) throw new Error(\"check_against_safelist not available\")\n  return native.check_against_safelist(classes, safelist)\n}\n\nexport function scanFile(filePath: string) {\n  const native = getNativeBridge()\n  if (!native?.scan_file) throw new Error(\"scan_file not available\")\n  return native.scan_file(filePath)\n}\n\nexport function collectFiles(root: string, extensions?: string[]) {\n  const native = getNativeBridge()\n  if (!native?.collect_files) throw new Error(\"collect_files not available\")\n  return native.collect_files(root, extensions)\n}\n\nexport function walkAndPrefilterSourceFiles(root: string, extensions?: string[], _parallel?: boolean) {\n  const native = getNativeBridge()\n  if (!native?.walk_and_prefilter_source_files) throw new Error(\"walk_and_prefilter_source_files not available\")\n  return native.walk_and_prefilter_source_files(root, extensions)\n}\n\nexport function generateSubComponentTypes(root: string, outputPath?: string): string {\n  const native = getNativeBridge()\n  if (!native?.generate_sub_component_types) throw new Error(\"generate_sub_component_types not available\")\n  return native.generate_sub_component_types(root, outputPath)\n}\n","/**\n * Analyzer Sub-entry Point\n * \n * Exports analysis and optimization functionality.\n * - CSS and class analysis\n * - Dead code detection\n * - Theme resolution and validation\n * - Code classification and optimization\n */\n\nexport {\n  detectDeadCode,\n  analyzeClassUsageNative,\n  analyzeClassesNative,\n  analyzeRscNative,\n  optimizeCssNative,\n  processTailwindCssLightning,\n  eliminateDeadCssNative,\n  hoistComponentsNative,\n  compileVariantTableNative,\n  classifyAndSortClassesNative,\n  mergeCssDeclarationsNative,\n  getWeek6FeaturesStatus,\n  getMemoryStatsNative,\n  getMemoryRecommendationsNative,\n  estimateOptimalCacheConfigNative,\n  resetMemoryStats,\n  type DeadCodeResult,\n  type ClassUsageItem,\n  type ProcessedCssResult,\n  type HoistResult,\n  type VariantTableResult,\n  type ClassifyResult,\n  type MergeResult,\n  type MemoryStats,\n  type MemoryRecommendations,\n  type OptimalCacheConfigAnalysis,\n  type Week6FeaturesStatus,\n} from './analyzerNative'\n\nexport {\n  resolveVariants,\n  validateThemeConfig,\n  resolveCascade,\n  resolveClassNames,\n  resolveConflictGroup,\n  resolveThemeValue,\n  resolveSimpleVariants,\n  type ThemeValidationResult,\n  type ResolvedVariantConfig,\n  type ThemeCascadeResult,\n  type ResolvedClassName,\n  type ConflictGroupInfo,\n} from './themeResolutionNative'\n\nexport {\n  scanWorkspace,\n  extractClassesFromSourceNative,\n  batchExtractClassesNative,\n  checkAgainstSafelistNative,\n  scanFile,\n  collectFiles,\n  walkAndPrefilterSourceFiles,\n  generateSubComponentTypes,\n  type ScanWorkspaceResult,\n  type ScanFileResult,\n  type BatchExtractResult,\n  type SafelistCheckResult,\n  type PrefilterFileResult,\n} from './scannerNative'\n","/**\n * cacheNative.ts\n *\n * Phase 5.1: Cache Management - Advanced caching strategies and optimization\n * Exposes 9 cache-related Rust functions for improved performance tuning\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\nimport { type ResolverPoolStatsResult } from \"../nativeBridgeWrappers\"\nexport { type ResolverPoolStatsResult }\n\n/**\n * Cache optimization hints and recommendations\n */\nexport interface CacheOptimizationHints {\n  current_strategy: string\n  recommended_strategy: string\n  estimated_improvement_percent: number\n  suggested_memory_mb: number\n  notes: string[]\n}\n\n/**\n * Optimal cache configuration recommendations\n */\nexport interface OptimalCacheConfig {\n  parse_cache_size: number\n  resolve_cache_size: number\n  compile_cache_size: number\n  css_gen_cache_size: number\n  recommended_eviction_policy: string\n  ttl_seconds: number\n  expected_hit_rate_percent: number\n}\n\n/**\n * Cache statistics from all layers\n */\nexport interface CacheStatistics {\n  parse_cache: { hits: number; misses: number; size: number }\n  resolve_cache: { hits: number; misses: number; size: number }\n  compile_cache: { hits: number; misses: number; size: number }\n  css_gen_cache: { hits: number; misses: number; size: number }\n  overall_hit_rate: number\n  total_memory_bytes: number\n}\n\n/**\n * Get comprehensive cache statistics across all layers\n * Useful for monitoring and optimization\n *\n * @returns Cache stats including hit rates, sizes, and recommendations\n * @example\n * ```ts\n * const stats = getCacheStatistics()\n * console.log(`Overall hit rate: ${stats.overall_hit_rate}%`)\n * console.log(`Total memory used: ${stats.total_memory_bytes / 1024}KB`)\n * ```\n */\nexport function getCacheStatistics(): CacheStatistics {\n  const native = getNativeBridge()\n  if (!native?.get_cache_statistics) throw new Error(\"get_cache_statistics not available\")\n  const statsJson = native.get_cache_statistics()\n  try {\n    return JSON.parse(statsJson)\n  } catch {\n    return {\n      parse_cache: { hits: 0, misses: 0, size: 0 },\n      resolve_cache: { hits: 0, misses: 0, size: 0 },\n      compile_cache: { hits: 0, misses: 0, size: 0 },\n      css_gen_cache: { hits: 0, misses: 0, size: 0 },\n      overall_hit_rate: 0,\n      total_memory_bytes: 0,\n    }\n  }\n}\n\n/**\n * Clear all caches (parse, resolve, compile, CSS generation)\n * Use when switching themes or major configuration changes\n *\n * @example\n * ```ts\n * // Clear before switching themes\n * clearAllCaches()\n * const css = await generateCssNative(classes, { theme: newTheme })\n * ```\n */\nexport function clearAllCaches(): void {\n  const native = getNativeBridge()\n  if (!native?.clear_all_caches) return\n  try {\n    native.clear_all_caches()\n  } catch {\n    // Silently ignore if not available\n  }\n}\n\n/**\n * Clear only the parse cache\n * Useful when parser behavior changes or cache gets stale\n */\nexport function clearParseCache(): void {\n  const native = getNativeBridge()\n  if (!native?.clear_parse_cache) return\n  try {\n    native.clear_parse_cache()\n  } catch {\n    // Silently ignore\n  }\n}\n\n/**\n * Clear only the resolve cache\n * Use when theme configuration changes\n */\nexport function clearResolveCache(): void {\n  const native = getNativeBridge()\n  if (!native?.clear_resolve_cache) return\n  try {\n    native.clear_resolve_cache()\n  } catch {\n    // Silently ignore\n  }\n}\n\n/**\n * Clear only the compile cache\n * Use when Tailwind configuration changes\n */\nexport function clearCompileCache(): void {\n  const native = getNativeBridge()\n  if (!native?.clear_compile_cache) return\n  try {\n    native.clear_compile_cache()\n  } catch {\n    // Silently ignore\n  }\n}\n\n/**\n * Clear only the CSS generation cache\n * Use when theme or layout changes\n */\nexport function clearCssGenCache(): void {\n  const native = getNativeBridge()\n  if (!native?.clear_css_gen_cache) return\n  try {\n    native.clear_css_gen_cache()\n  } catch {\n    // Silently ignore\n  }\n}\n\n/**\n * Get optimization hints based on current cache performance\n * Analyzes hit rates and suggests improvements\n *\n * @param hitRatePercent - Current hit rate (0-100)\n * @param memoryUsedMb - Memory currently used in MB\n * @returns Optimization recommendations\n *\n * @example\n * ```ts\n * const stats = getCacheStatistics()\n * const hints = getCacheOptimizationHints(\n *   stats.overall_hit_rate,\n *   stats.total_memory_bytes / (1024 * 1024)\n * )\n * console.log(`Recommendation: ${hints.recommended_strategy}`)\n * console.log(`Potential improvement: ${hints.estimated_improvement_percent}%`)\n * ```\n */\nexport function getCacheOptimizationHints(\n  hitRatePercent: number,\n  memoryUsedMb: number\n): CacheOptimizationHints {\n  const native = getNativeBridge()\n  if (!native?.get_cache_optimization_hints)\n    throw new Error(\"get_cache_optimization_hints not available\")\n  const hintsJson = native.get_cache_optimization_hints(\n    Math.min(100, Math.max(0, hitRatePercent)),\n    Math.max(1, memoryUsedMb)\n  )\n  try {\n    return JSON.parse(hintsJson)\n  } catch {\n    return {\n      current_strategy: \"unknown\",\n      recommended_strategy: \"increase_size\",\n      estimated_improvement_percent: 0,\n      suggested_memory_mb: 256,\n      notes: [\"Unable to analyze cache statistics\"],\n    }\n  }\n}\n\n/**\n * Estimate optimal cache configuration for your workload\n * Analyzes typical patterns and recommends sizes\n *\n * @param totalBudgetMb - Maximum memory budget in MB\n * @param workloadType - \"small\" (< 100 files), \"medium\" (100-1000), \"large\" (1000+)\n * @returns Recommended cache configuration\n *\n * @example\n * ```ts\n * const config = estimateOptimalCacheConfig(512, 'large')\n * console.log(`Parse cache: ${config.parse_cache_size}MB`)\n * console.log(`Expected hit rate: ${config.expected_hit_rate_percent}%`)\n * ```\n */\nexport function estimateOptimalCacheConfig(\n  totalBudgetMb: number,\n  workloadType: \"small\" | \"medium\" | \"large\"\n): OptimalCacheConfig {\n  const native = getNativeBridge()\n  if (!native?.estimate_optimal_cache_config_native)\n    throw new Error(\"estimate_optimal_cache_config_native not available\")\n  const configJson = native.estimate_optimal_cache_config_native(\n    Math.max(64, totalBudgetMb),\n    workloadType\n  )\n  try {\n    return JSON.parse(configJson)\n  } catch {\n    // Return sensible defaults\n    return {\n      parse_cache_size: 128,\n      resolve_cache_size: 64,\n      compile_cache_size: 256,\n      css_gen_cache_size: 128,\n      recommended_eviction_policy: \"lru\",\n      ttl_seconds: 3600,\n      expected_hit_rate_percent: 75,\n    }\n  }\n}\n\n/**\n * Read cache from disk (persistence)\n * Restores cached data from previous sessions\n *\n * @param cachePath - Path to cache file\n * @returns Entries loaded from disk\n *\n * @example\n * ```ts\n * const entries = cacheRead('./.tw-cache/scan.json')\n * // Warm up cache with persisted data\n * ```\n */\nexport function cacheRead(cachePath: string): Array<{\n  file: string\n  contentHash: string\n  classes: string[]\n  mtimeMs: number\n  sizeBytes: number\n}> {\n  const native = getNativeBridge()\n  if (!native?.cache_read) throw new Error(\"cache_read not available\")\n  const result = native.cache_read(cachePath)\n  try {\n    return JSON.parse(result.entries_json || \"[]\")\n  } catch {\n    return []\n  }\n}\n\n/**\n * Write cache to disk (persistence)\n * Saves cached data for next session\n *\n * @param cachePath - Path where cache should be written\n * @param entries - Cache entries to persist\n * @returns Success status\n *\n * @example\n * ```ts\n * const stats = getCacheStatistics()\n * const success = cacheWrite(\n *   './.tw-cache/scan.json',\n *   // entries array from previous scan\n * )\n * ```\n */\nexport function cacheWrite(\n  cachePath: string,\n  entries: Array<{\n    file: string\n    contentHash: string\n    classes: string[]\n    mtimeMs: number\n    sizeBytes: number\n  }>\n): boolean {\n  const native = getNativeBridge()\n  if (!native?.cache_write) throw new Error(\"cache_write not available\")\n  try {\n    const result = native.cache_write(\n      cachePath,\n      entries.map((e) => ({\n        file: e.file,\n        content_hash: e.contentHash,\n        classes: e.classes,\n        mtime_ms: e.mtimeMs,\n        size_bytes: e.sizeBytes,\n      }))\n    )\n    return typeof result === \"boolean\" ? result : result === true\n  } catch {\n    return false\n  }\n}\n\n/**\n * Calculate cache priority score for file ordering\n * Useful for prioritizing which files to scan first\n *\n * @param mtimeMs - File modification time in milliseconds\n * @param sizeBytes - File size in bytes\n * @param hitCount - Number of times this file was accessed from cache\n * @returns Priority score (higher = process first)\n *\n * @example\n * ```ts\n * const priority = cachePriority(Date.now(), 2048, 5)\n * // Use priority to sort files for scanning\n * ```\n */\nexport function cachePriority(mtimeMs: number, sizeBytes: number, hitCount: number): number {\n  const native = getNativeBridge()\n  if (!native?.cache_priority) throw new Error(\"cache_priority not available\")\n  return native.cache_priority(mtimeMs, sizeBytes, hitCount)\n}\n\n/**\n * Get theme resolver pool statistics.\n *\n * @returns Resolver pool statistics (hits, misses, etc.)\n */\nexport function getResolverPoolStats(): ResolverPoolStatsResult {\n  const native = getNativeBridge()\n  if (!native?.getResolverPoolStats) throw new Error(\"getResolverPoolStats not available\")\n  const statsJson = native.getResolverPoolStats()\n  try {\n    return JSON.parse(statsJson)\n  } catch {\n    return {\n      hits: 0,\n      misses: 0,\n      total: 0,\n      hit_rate: 0,\n      cached_resolvers: 0,\n    }\n  }\n}\n\n/**\n * Clear and reset the theme resolver pool.\n *\n * @returns Status of the operation\n */\nexport function clearResolverPool(): { status: string } {\n  const native = getNativeBridge()\n  if (!native?.clearResolverPool) throw new Error(\"clearResolverPool not available\")\n  const resultJson = native.clearResolverPool()\n  try {\n    return JSON.parse(resultJson)\n  } catch {\n    return { status: \"error\" }\n  }\n}\n\n/**\n * Resolve a color value using the resolver pool (cached per themeId)\n *\n * @param themeId - Unique theme identifier\n * @param color - Color name or path\n * @param configJson - Theme configuration as JSON string\n * @returns Resolved color value\n */\nexport function resolveColorCached(themeId: number, color: string, configJson: string): string {\n  const native = getNativeBridge()\n  if (!native?.resolveColorCached) throw new Error(\"resolveColorCached not available\")\n  return native.resolveColorCached(themeId, color, configJson)\n}\n\n/**\n * Resolve a spacing value using the resolver pool (cached per themeId)\n *\n * @param themeId - Unique theme identifier\n * @param spacing - Spacing key or path\n * @param configJson - Theme configuration as JSON string\n * @returns Resolved spacing value\n */\nexport function resolveSpacingCached(themeId: number, spacing: string, configJson: string): string {\n  const native = getNativeBridge()\n  if (!native?.resolveSpacingCached) throw new Error(\"resolveSpacingCached not available\")\n  return native.resolveSpacingCached(themeId, spacing, configJson)\n}\n\n/**\n * Resolve a font size value using the resolver pool (cached per themeId)\n *\n * @param themeId - Unique theme identifier\n * @param size - Font size key or path\n * @param configJson - Theme configuration as JSON string\n * @returns Resolved font size value\n */\nexport function resolveFontSizeCached(themeId: number, size: string, configJson: string): string {\n  const native = getNativeBridge()\n  if (!native?.resolveFontSizeCached) throw new Error(\"resolveFontSizeCached not available\")\n  return native.resolveFontSizeCached(themeId, size, configJson)\n}\n\n/**\n * Reset resolver pool statistics while keeping cached resolvers.\n */\nexport function resetResolverPoolStats(): void {\n  const native = getNativeBridge()\n  if (!native?.resetResolverPoolStats) throw new Error(\"resetResolverPoolStats not available\")\n  native.resetResolverPoolStats()\n}\n","/**\n * Cache Sub-entry Point\n * \n * Exports cache management functionality.\n * - Cache statistics retrieval\n * - Cache clearing operations\n * - Cache optimization\n * - Cache configuration\n */\n\nexport {\n  getCacheStatistics,\n  clearAllCaches,\n  clearParseCache,\n  clearResolveCache,\n  clearCompileCache,\n  clearCssGenCache,\n  getCacheOptimizationHints,\n  estimateOptimalCacheConfig,\n  cacheRead,\n  cacheWrite,\n  cachePriority,\n  getResolverPoolStats,\n  clearResolverPool,\n  resolveColorCached,\n  resolveSpacingCached,\n  resolveFontSizeCached,\n  resetResolverPoolStats,\n  type CacheOptimizationHints,\n  type OptimalCacheConfig,\n  type CacheStatistics,\n  type ResolverPoolStatsResult,\n} from './cacheNative'\n","/**\n * redisNative.ts\n *\n * Phase 5.3: Redis Integration - Distributed caching and cluster support\n * Exposes 40 Redis functions for high-performance distributed CSS compilation caching\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\n/**\n * Redis pool configuration\n */\nexport interface RedisCacheConfig {\n  host: string\n  port: number\n  database: number\n  password?: string\n  pool_size: number\n  connection_timeout_ms: number\n}\n\n/**\n * Redis pool statistics\n */\nexport interface RedisPoolStats {\n  connected_count: number\n  idle_count: number\n  waiting_count: number\n  total_requests: number\n  total_errors: number\n}\n\n/**\n * Redis cluster node information\n */\nexport interface RedisClusterNode {\n  node_id: string\n  host: string\n  port: number\n  is_master: boolean\n  slot_range: Array<{ start: number; end: number }>\n  connected: boolean\n}\n\n/**\n * Redis cluster status\n */\nexport interface RedisClusterStatus {\n  enabled: boolean\n  cluster_state: string\n  nodes: RedisClusterNode[]\n  slots_assigned: number\n  slots_ok: number\n  slots_fail: number\n}\n\n/**\n * Key expiration information\n */\nexport interface KeyExpiration {\n  key: string\n  ttl_seconds: number\n  expiration_timestamp: number\n  is_persistent: boolean\n}\n\n/**\n * Pub/Sub message\n */\nexport interface PubSubMessage {\n  channel: string\n  message: string\n  timestamp_ms: number\n  subscriber_count: number\n}\n\n/**\n * Connection pool information\n */\nexport interface PoolInfo {\n  host: string\n  port: number\n  pool_size: number\n  active_connections: number\n  idle_connections: number\n  average_latency_ms: number\n}\n\n/**\n * Ping Redis server for connectivity check\n *\n * @returns \"PONG\" if connected, error message otherwise\n *\n * @example\n * ```ts\n * const response = redisPing()\n * if (response === \"PONG\") console.log(\"Connected\")\n * ```\n */\nexport function redisPing(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_ping) throw new Error(\"redis_ping not available\")\n  return native.redis_ping()\n}\n\n/**\n * Get value from Redis\n *\n * @param key - Cache key\n * @returns Value if found, null if not found\n *\n * @example\n * ```ts\n * const value = redisGet('compiled:bg-blue-600')\n * if (value) console.log(JSON.parse(value))\n * ```\n */\nexport function redisGet(key: string): string | null {\n  const native = getNativeBridge()\n  if (!native?.redis_get) throw new Error(\"redis_get not available\")\n  const result = native.redis_get(key)\n  return result === \"nil\" ? null : result\n}\n\n/**\n * Set value in Redis\n *\n * @param key - Cache key\n * @param value - Value to store\n * @param ttl_seconds - Time to live in seconds (optional)\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisSet('compiled:bg-blue-600', JSON.stringify(css), 3600)\n * ```\n */\nexport function redisSet(key: string, value: string, ttl_seconds?: number): string {\n  const native = getNativeBridge()\n  if (!native?.redis_set) throw new Error(\"redis_set not available\")\n  return native.redis_set(key, value, ttl_seconds)\n}\n\n/**\n * Delete key from Redis\n *\n * @param key - Cache key\n * @returns Number of keys deleted\n *\n * @example\n * ```ts\n * const deleted = redisDelete('compiled:bg-blue-600')\n * console.log(`Deleted ${deleted} keys`)\n * ```\n */\nexport function redisDelete(key: string): number {\n  const native = getNativeBridge()\n  if (!native?.redis_delete) throw new Error(\"redis_delete not available\")\n  return native.redis_delete(key)\n}\n\n/**\n * Check if key exists in Redis\n *\n * @param key - Cache key\n * @returns 1 if exists, 0 if not\n *\n * @example\n * ```ts\n * if (redisExists('compiled:bg-blue-600')) {\n *   console.log('Cache hit')\n * }\n * ```\n */\nexport function redisExists(key: string): number {\n  const native = getNativeBridge()\n  if (!native?.redis_exists) throw new Error(\"redis_exists not available\")\n  return native.redis_exists(key)\n}\n\n/**\n * Get multiple values from Redis (atomic operation)\n *\n * @param keys - Array of cache keys\n * @returns Array of values (null for missing keys)\n *\n * @example\n * ```ts\n * const values = redisMget(['key1', 'key2', 'key3'])\n * ```\n */\nexport function redisMget(keys: string[]): Array<string | null> {\n  const native = getNativeBridge()\n  if (!native?.redis_mget) throw new Error(\"redis_mget not available\")\n  const result = native.redis_mget(keys)\n  try {\n    return JSON.parse(result)\n  } catch {\n    return keys.map(() => null)\n  }\n}\n\n/**\n * Set multiple key-value pairs in Redis (atomic operation)\n *\n * @param pairs - Array of [key, value] tuples\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisMset([\n *   ['key1', 'value1'],\n *   ['key2', 'value2']\n * ])\n * ```\n */\nexport function redisMset(pairs: Array<[string, string]>): string {\n  const native = getNativeBridge()\n  if (!native?.redis_mset) throw new Error(\"redis_mset not available\")\n  return native.redis_mset(pairs)\n}\n\n/**\n * Flush all keys from current Redis database\n *\n * @returns Number of keys deleted\n *\n * @example\n * ```ts\n * const flushed = redisFlushDb()\n * console.log(`Flushed ${flushed} keys from database`)\n * ```\n */\nexport function redisFlushDb(): number {\n  const native = getNativeBridge()\n  if (!native?.redis_flush_db) throw new Error(\"redis_flush_db not available\")\n  return native.redis_flush_db()\n}\n\n/**\n * Flush all keys from all Redis databases (cluster-wide)\n *\n * @returns Number of keys deleted\n *\n * @example\n * ```ts\n * const flushed = redisFlushAll()\n * console.log(`Flushed ${flushed} keys from all databases`)\n * ```\n */\nexport function redisFlushAll(): number {\n  const native = getNativeBridge()\n  if (!native?.redis_flush_all) throw new Error(\"redis_flush_all not available\")\n  return native.redis_flush_all()\n}\n\n/**\n * Initialize Redis connection pool\n *\n * @param host - Redis host (e.g., \"localhost\")\n * @param port - Redis port (default: 6379)\n * @param pool_size - Connection pool size (default: 32)\n * @returns Pool info JSON\n *\n * @example\n * ```ts\n * const info = redisPoolConnect('localhost', 6379, 32)\n * console.log(info)\n * ```\n */\nexport function redisPoolConnect(host: string, port: number, pool_size?: number): string {\n  const native = getNativeBridge()\n  if (!native?.redis_pool_connect) throw new Error(\"redis_pool_connect not available\")\n  return native.redis_pool_connect(host, port, pool_size)\n}\n\n/**\n * Get Redis pool statistics\n *\n * @returns Pool stats as JSON string\n *\n * @example\n * ```ts\n * const stats = redisPoolStats()\n * const parsed: RedisPoolStats = JSON.parse(stats)\n * console.log(`Connected: ${parsed.connected_count}`)\n * ```\n */\nexport function redisPoolStats(): RedisPoolStats {\n  const native = getNativeBridge()\n  if (!native?.redis_pool_stats) throw new Error(\"redis_pool_stats not available\")\n  const result = native.redis_pool_stats()\n  try {\n    return JSON.parse(result)\n  } catch {\n    return {\n      connected_count: 0,\n      idle_count: 0,\n      waiting_count: 0,\n      total_requests: 0,\n      total_errors: 0,\n    }\n  }\n}\n\n/**\n * Reconnect Redis pool after disconnect\n *\n * @returns \"OK\" if reconnected\n *\n * @example\n * ```ts\n * const result = redisPoolReconnect()\n * console.log(result)\n * ```\n */\nexport function redisPoolReconnect(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_pool_reconnect) throw new Error(\"redis_pool_reconnect not available\")\n  return native.redis_pool_reconnect()\n}\n\n/**\n * Enable Redis cluster mode\n *\n * @param initial_nodes - Initial cluster nodes (host:port format)\n * @returns Cluster status JSON\n *\n * @example\n * ```ts\n * const status = redisEnableCluster(['localhost:6379', 'localhost:6380'])\n * ```\n */\nexport function redisEnableCluster(initial_nodes: string[]): RedisClusterStatus {\n  const native = getNativeBridge()\n  if (!native?.redis_enable_cluster) throw new Error(\"redis_enable_cluster not available\")\n  const result = native.redis_enable_cluster(initial_nodes)\n  try {\n    return JSON.parse(result)\n  } catch {\n    return {\n      enabled: false,\n      cluster_state: \"error\",\n      nodes: [],\n      slots_assigned: 0,\n      slots_ok: 0,\n      slots_fail: 0,\n    }\n  }\n}\n\n/**\n * Disable Redis cluster mode\n *\n * @returns \"OK\" when disabled\n *\n * @example\n * ```ts\n * const result = redisDisableCluster()\n * ```\n */\nexport function redisDisableCluster(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_disable_cluster) throw new Error(\"redis_disable_cluster not available\")\n  return native.redis_disable_cluster()\n}\n\n/**\n * Get current Redis cluster status\n *\n * @returns Cluster status information\n *\n * @example\n * ```ts\n * const status = redisClusterStatus()\n * if (status.enabled) console.log(`Cluster has ${status.nodes.length} nodes`)\n * ```\n */\nexport function redisClusterStatus(): RedisClusterStatus {\n  const native = getNativeBridge()\n  if (!native?.redis_cluster_status) throw new Error(\"redis_cluster_status not available\")\n  const result = native.redis_cluster_status()\n  try {\n    return JSON.parse(result)\n  } catch {\n    return {\n      enabled: false,\n      cluster_state: \"unknown\",\n      nodes: [],\n      slots_assigned: 0,\n      slots_ok: 0,\n      slots_fail: 0,\n    }\n  }\n}\n\n/**\n * Subscribe to Redis pub/sub channel\n *\n * @param channel - Channel name\n * @param callback - Function to call on message (optional)\n * @returns Subscription ID\n *\n * @example\n * ```ts\n * const id = redisSubscribe('cache:updates', (msg) => {\n *   console.log(`Update: ${msg.message}`)\n * })\n * ```\n */\nexport function redisSubscribe(channel: string): string {\n  const native = getNativeBridge()\n  if (!native?.redis_subscribe) throw new Error(\"redis_subscribe not available\")\n  return native.redis_subscribe(channel)\n}\n\n/**\n * Publish message to Redis pub/sub channel\n *\n * @param channel - Channel name\n * @param message - Message to publish\n * @returns Number of subscribers that received the message\n *\n * @example\n * ```ts\n * const count = redisPublish('cache:updates', 'CSS compiled')\n * console.log(`Delivered to ${count} subscribers`)\n * ```\n */\nexport function redisPublish(channel: string, message: string): number {\n  const native = getNativeBridge()\n  if (!native?.redis_publish) throw new Error(\"redis_publish not available\")\n  return native.redis_publish(channel, message)\n}\n\n/**\n * Set expiration on key\n *\n * @param key - Cache key\n * @param ttl_seconds - Time to live in seconds\n * @returns 1 if timeout set, 0 if key doesn't exist\n *\n * @example\n * ```ts\n * redisExpirationSet('compiled:bg-blue-600', 3600)\n * ```\n */\nexport function redisExpirationSet(key: string, ttl_seconds: number): number {\n  const native = getNativeBridge()\n  if (!native?.redis_expiration_set) throw new Error(\"redis_expiration_set not available\")\n  return native.redis_expiration_set(key, ttl_seconds)\n}\n\n/**\n * Get expiration info for key\n *\n * @param key - Cache key\n * @returns Expiration information\n *\n * @example\n * ```ts\n * const info = redisExpirationGet('compiled:bg-blue-600')\n * console.log(`TTL: ${info.ttl_seconds} seconds`)\n * ```\n */\nexport function redisExpirationGet(key: string): KeyExpiration {\n  const native = getNativeBridge()\n  if (!native?.redis_expiration_get) throw new Error(\"redis_expiration_get not available\")\n  const result = native.redis_expiration_get(key)\n  try {\n    return JSON.parse(result)\n  } catch {\n    return {\n      key,\n      ttl_seconds: -1,\n      expiration_timestamp: 0,\n      is_persistent: true,\n    }\n  }\n}\n\n/**\n * Get Redis server info\n *\n * @returns Server information JSON\n *\n * @example\n * ```ts\n * const info = redisInfo()\n * ```\n */\nexport function redisInfo(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_info) throw new Error(\"redis_info not available\")\n  return native.redis_info()\n}\n\n/**\n * Monitor Redis operations in real-time (for debugging)\n *\n * @returns Monitor output stream\n *\n * @example\n * ```ts\n * const monitor = redisMonitor()\n * // Logs all Redis operations\n * ```\n */\nexport function redisMonitor(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_monitor) throw new Error(\"redis_monitor not available\")\n  return native.redis_monitor()\n}\n\n/**\n * Get size of cache in bytes\n *\n * @returns Total memory usage in bytes\n *\n * @example\n * ```ts\n * const bytes = redisCacheSize()\n * console.log(`Cache: ${bytes / 1024 / 1024} MB`)\n * ```\n */\nexport function redisCacheSize(): number {\n  const native = getNativeBridge()\n  if (!native?.redis_cache_size) throw new Error(\"redis_cache_size not available\")\n  return native.redis_cache_size()\n}\n\n/**\n * Get number of keys in cache\n *\n * @returns Total key count\n *\n * @example\n * ```ts\n * const count = redisCacheKeyCount()\n * console.log(`Cached keys: ${count}`)\n * ```\n */\nexport function redisCacheKeyCount(): number {\n  const native = getNativeBridge()\n  if (!native?.redis_cache_key_count) throw new Error(\"redis_cache_key_count not available\")\n  return native.redis_cache_key_count()\n}\n\n/**\n * Clear Redis cache and reset statistics\n *\n * @returns Number of keys cleared\n *\n * @example\n * ```ts\n * const cleared = redisCacheClear()\n * console.log(`Cleared ${cleared} keys`)\n * ```\n */\nexport function redisCacheClear(): number {\n  const native = getNativeBridge()\n  if (!native?.redis_cache_clear) throw new Error(\"redis_cache_clear not available\")\n  return native.redis_cache_clear()\n}\n\n/**\n * Get Redis cache hit rate statistics\n *\n * @returns Hit rate percentage (0-100)\n *\n * @example\n * ```ts\n * const hitRate = redisCacheHitRate()\n * console.log(`Hit rate: ${hitRate}%`)\n * ```\n */\nexport function redisCacheHitRate(): number {\n  const native = getNativeBridge()\n  if (!native?.redis_cache_hit_rate) throw new Error(\"redis_cache_hit_rate not available\")\n  return native.redis_cache_hit_rate()\n}\n\n/**\n * Enable Redis persistence (AOF/RDB)\n *\n * @param mode - \"aof\" or \"rdb\"\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisEnablePersistence('aof')\n * ```\n */\nexport function redisEnablePersistence(mode: string): string {\n  const native = getNativeBridge()\n  if (!native?.redis_enable_persistence) throw new Error(\"redis_enable_persistence not available\")\n  return native.redis_enable_persistence(mode)\n}\n\n/**\n * Disable Redis persistence\n *\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisDisablePersistence()\n * ```\n */\nexport function redisDisablePersistence(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_disable_persistence) throw new Error(\"redis_disable_persistence not available\")\n  return native.redis_disable_persistence()\n}\n\n/**\n * Save Redis data to disk (snapshot)\n *\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisSnapshot()\n * ```\n */\nexport function redisSnapshot(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_snapshot) throw new Error(\"redis_snapshot not available\")\n  return native.redis_snapshot()\n}\n\n/**\n * Get Redis memory statistics and recommendations\n *\n * @returns Memory info JSON\n *\n * @example\n * ```ts\n * const memory = redisMemoryStats()\n * console.log(memory)\n * ```\n */\nexport function redisMemoryStats(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_memory_stats) throw new Error(\"redis_memory_stats not available\")\n  return native.redis_memory_stats()\n}\n\n/**\n * Optimize Redis memory usage\n *\n * @returns Number of keys optimized\n *\n * @example\n * ```ts\n * const optimized = redisOptimizeMemory()\n * console.log(`Optimized ${optimized} keys`)\n * ```\n */\nexport function redisOptimizeMemory(): number {\n  const native = getNativeBridge()\n  if (!native?.redis_optimize_memory) throw new Error(\"redis_optimize_memory not available\")\n  return native.redis_optimize_memory()\n}\n\n/**\n * Set Redis key eviction policy\n *\n * @param policy - LRU, LFU, TTL, RANDOM, etc.\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisSetEvictionPolicy('allkeys-lru')\n * ```\n */\nexport function redisSetEvictionPolicy(policy: string): string {\n  const native = getNativeBridge()\n  if (!native?.redis_set_eviction_policy) throw new Error(\"redis_set_eviction_policy not available\")\n  return native.redis_set_eviction_policy(policy)\n}\n\n/**\n * Get current Redis eviction policy\n *\n * @returns Current policy name\n *\n * @example\n * ```ts\n * const policy = redisGetEvictionPolicy()\n * console.log(`Eviction policy: ${policy}`)\n * ```\n */\nexport function redisGetEvictionPolicy(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_get_eviction_policy) throw new Error(\"redis_get_eviction_policy not available\")\n  return native.redis_get_eviction_policy()\n}\n\n/**\n * Replicate data to another Redis instance\n *\n * @param target_host - Target host\n * @param target_port - Target port\n * @returns Number of keys replicated\n *\n * @example\n * ```ts\n * const replicated = redisReplicate('replica.example.com', 6379)\n * console.log(`Replicated ${replicated} keys`)\n * ```\n */\nexport function redisReplicate(target_host: string, target_port: number): number {\n  const native = getNativeBridge()\n  if (!native?.redis_replicate) throw new Error(\"redis_replicate not available\")\n  return native.redis_replicate(target_host, target_port)\n}\n\n/**\n * Get replication status\n *\n * @returns Replication info JSON\n *\n * @example\n * ```ts\n * const status = redisReplicationStatus()\n * console.log(status)\n * ```\n */\nexport function redisReplicationStatus(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_replication_status) throw new Error(\"redis_replication_status not available\")\n  return native.redis_replication_status()\n}\n\n/**\n * Sync cache between Redis instances (distributed cache sync)\n *\n * @param peers - Array of peer Redis addresses\n * @returns Number of keys synced\n *\n * @example\n * ```ts\n * const synced = redisCacheSync(['redis1:6379', 'redis2:6379'])\n * console.log(`Synced ${synced} keys`)\n * ```\n */\nexport function redisCacheSync(peers: string[]): number {\n  const native = getNativeBridge()\n  if (!native?.redis_cache_sync) throw new Error(\"redis_cache_sync not available\")\n  return native.redis_cache_sync(peers)\n}\n\n/**\n * Enable automatic cache warming\n *\n * @param key_pattern - Glob pattern for keys to warm (e.g., \"compiled:*\")\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisEnableCacheWarming('compiled:*')\n * ```\n */\nexport function redisEnableCacheWarming(key_pattern: string): string {\n  const native = getNativeBridge()\n  if (!native?.redis_enable_cache_warming) throw new Error(\"redis_enable_cache_warming not available\")\n  return native.redis_enable_cache_warming(key_pattern)\n}\n\n/**\n * Disable cache warming\n *\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * redisDisableCacheWarming()\n * ```\n */\nexport function redisDisableCacheWarming(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_disable_cache_warming) throw new Error(\"redis_disable_cache_warming not available\")\n  return native.redis_disable_cache_warming()\n}\n\n/**\n * Diagnose Redis connection issues\n *\n * @returns Diagnostic report\n *\n * @example\n * ```ts\n * const diagnosis = redisDiagnose()\n * console.log(diagnosis)\n * ```\n */\nexport function redisDiagnose(): string {\n  const native = getNativeBridge()\n  if (!native?.redis_diagnose) throw new Error(\"redis_diagnose not available\")\n  return native.redis_diagnose()\n}\n","/**\n * Redis Sub-entry Point\n * \n * Exports Redis and distributed cache functionality.\n * - Redis operations (get, set, delete, etc.)\n * - Redis pool management\n * - Cluster management\n * - Cache synchronization\n * - Persistence management\n */\n\nexport {\n  redisPing,\n  redisGet,\n  redisSet,\n  redisDelete,\n  redisExists,\n  redisMget,\n  redisMset,\n  redisFlushDb,\n  redisFlushAll,\n  redisPoolConnect,\n  redisPoolStats,\n  redisPoolReconnect,\n  redisEnableCluster,\n  redisDisableCluster,\n  redisClusterStatus,\n  redisSubscribe,\n  redisPublish,\n  redisExpirationSet,\n  redisExpirationGet,\n  redisInfo,\n  redisMonitor,\n  redisCacheSize,\n  redisCacheKeyCount,\n  redisCacheClear,\n  redisCacheHitRate,\n  redisEnablePersistence,\n  redisDisablePersistence,\n  redisSnapshot,\n  redisMemoryStats,\n  redisOptimizeMemory,\n  redisSetEvictionPolicy,\n  redisGetEvictionPolicy,\n  redisReplicate,\n  redisReplicationStatus,\n  redisCacheSync,\n  redisEnableCacheWarming,\n  redisDisableCacheWarming,\n  redisDiagnose,\n  type RedisCacheConfig,\n  type RedisPoolStats,\n  type RedisClusterNode,\n  type RedisClusterStatus,\n  type KeyExpiration,\n  type PubSubMessage,\n  type PoolInfo,\n} from './redisNative'\n","/**\n * watchSystemNative.ts\n *\n * Phase 5.4: Watch System & File Monitoring - Real-time CSS recompilation\n * Exposes 12 watch/monitoring functions for hot-reload and incremental compilation\n */\n\nimport { getNativeBridge } from \"../nativeBridge\"\n\n/**\n * File watch event\n */\nexport interface WatchEvent {\n  event_type: \"create\" | \"modify\" | \"delete\" | \"rename\"\n  file_path: string\n  timestamp_ms: number\n  is_dir: boolean\n}\n\n/**\n * Watch handle for tracking active watchers\n */\nexport interface WatchHandle {\n  handle_id: number\n  patterns: string[]\n  is_running: boolean\n  created_at_ms: number\n}\n\n/**\n * Watch statistics\n */\nexport interface WatchStats {\n  active_watchers: number\n  total_events: number\n  events_this_second: number\n  average_latency_ms: number\n  largest_batch_size: number\n}\n\n/**\n * Start file system watcher for directory\n *\n * @param root_path - Directory to watch\n * @param patterns - Glob patterns to match (e.g., [\"*.tsx\", \"*.ts\"])\n * @returns Handle ID for the watcher\n *\n * @example\n * ```ts\n * const handle = startWatch('./src', ['*.tsx', '*.ts'])\n * // Watcher is now active\n * ```\n */\nexport function startWatch(root_path: string, patterns?: string[]): number {\n  const native = getNativeBridge()\n  if (!native?.start_watch) throw new Error(\"start_watch not available\")\n  return native.start_watch(root_path, patterns)\n}\n\n/**\n * Poll for watch events (non-blocking)\n *\n * @param handle - Watcher handle from startWatch()\n * @param timeout_ms - Max time to wait for events (default: 100)\n * @returns Array of watch events\n *\n * @example\n * ```ts\n * const handle = startWatch('./src', ['*.tsx'])\n * const events = pollWatchEvents(handle, 100)\n * events.forEach(evt => {\n *   console.log(`${evt.event_type}: ${evt.file_path}`)\n * })\n * ```\n */\nexport function pollWatchEvents(handle: number, timeout_ms?: number): WatchEvent[] {\n  const native = getNativeBridge()\n  if (!native?.poll_watch_events) throw new Error(\"poll_watch_events not available\")\n  const result = native.poll_watch_events(handle, timeout_ms)\n  try {\n    return JSON.parse(result)\n  } catch {\n    return []\n  }\n}\n\n/**\n * Stop file system watcher\n *\n * @param handle - Watcher handle\n * @returns Number of events processed before stopping\n *\n * @example\n * ```ts\n * const eventsProcessed = stopWatch(handle)\n * console.log(`Watcher processed ${eventsProcessed} events`)\n * ```\n */\nexport function stopWatch(handle: number): number {\n  const native = getNativeBridge()\n  if (!native?.stop_watch) throw new Error(\"stop_watch not available\")\n  return native.stop_watch(handle)\n}\n\n/**\n * Add pattern to active watcher\n *\n * @param handle - Watcher handle\n * @param pattern - Glob pattern to add (e.g., \"*.md\")\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * watchAddPattern(handle, '*.md')\n * // Now watching markdown files too\n * ```\n */\nexport function watchAddPattern(handle: number, pattern: string): string {\n  const native = getNativeBridge()\n  if (!native?.watch_add_pattern) throw new Error(\"watch_add_pattern not available\")\n  return native.watch_add_pattern(handle, pattern)\n}\n\n/**\n * Remove pattern from watcher\n *\n * @param handle - Watcher handle\n * @param pattern - Pattern to remove\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * watchRemovePattern(handle, '*.md')\n * ```\n */\nexport function watchRemovePattern(handle: number, pattern: string): string {\n  const native = getNativeBridge()\n  if (!native?.watch_remove_pattern) throw new Error(\"watch_remove_pattern not available\")\n  return native.watch_remove_pattern(handle, pattern)\n}\n\n/**\n * Get all active watcher handles\n *\n * @returns Array of active watch handles\n *\n * @example\n * ```ts\n * const handles = watchGetActiveHandles()\n * console.log(`${handles.length} active watchers`)\n * ```\n */\nexport function watchGetActiveHandles(): WatchHandle[] {\n  const native = getNativeBridge()\n  if (!native?.watch_get_active_handles) throw new Error(\"watch_get_active_handles not available\")\n  const result = native.watch_get_active_handles()\n  try {\n    return JSON.parse(result)\n  } catch {\n    return []\n  }\n}\n\n/**\n * Clear all active watchers\n *\n * @returns Number of watchers cleared\n *\n * @example\n * ```ts\n * const cleared = watchClearAll()\n * console.log(`Cleared ${cleared} watchers`)\n * ```\n */\nexport function watchClearAll(): number {\n  const native = getNativeBridge()\n  if (!native?.watch_clear_all) throw new Error(\"watch_clear_all not available\")\n  return native.watch_clear_all()\n}\n\n/**\n * Convert watch event type to string\n *\n * @param event_type_code - Event type code (0-3)\n * @returns Event type as string\n *\n * @example\n * ```ts\n * const typeStr = watchEventTypeToString(0)\n * console.log(typeStr)  // \"create\"\n * ```\n */\nexport function watchEventTypeToString(event_type_code: number): string {\n  const native = getNativeBridge()\n  if (!native?.watch_event_type_to_string) throw new Error(\"watch_event_type_to_string not available\")\n  return native.watch_event_type_to_string(event_type_code)\n}\n\n/**\n * Check if watcher is running\n *\n * @param handle - Watcher handle\n * @returns True if running\n *\n * @example\n * ```ts\n * if (isWatchRunning(handle)) {\n *   console.log(\"Watcher is active\")\n * }\n * ```\n */\nexport function isWatchRunning(handle: number): boolean {\n  const native = getNativeBridge()\n  if (!native?.is_watch_running) throw new Error(\"is_watch_running not available\")\n  return native.is_watch_running(handle)\n}\n\n/**\n * Get watch system statistics\n *\n * @returns Watch statistics\n *\n * @example\n * ```ts\n * const stats = getWatchStats()\n * console.log(`Active: ${stats.active_watchers}, Events: ${stats.total_events}`)\n * ```\n */\nexport function getWatchStats(): WatchStats {\n  const native = getNativeBridge()\n  if (!native?.get_watch_stats) throw new Error(\"get_watch_stats not available\")\n  const result = native.get_watch_stats()\n  try {\n    return JSON.parse(result)\n  } catch {\n    return {\n      active_watchers: 0,\n      total_events: 0,\n      events_this_second: 0,\n      average_latency_ms: 0,\n      largest_batch_size: 0,\n    }\n  }\n}\n\n/**\n * Pause watching (pause event delivery without stopping watcher)\n *\n * @param handle - Watcher handle\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * watchPause(handle)\n * // Events still detected but not delivered\n * ```\n */\nexport function watchPause(handle: number): string {\n  const native = getNativeBridge()\n  if (!native?.watch_pause) throw new Error(\"watch_pause not available\")\n  return native.watch_pause(handle)\n}\n\n/**\n * Resume watching after pause\n *\n * @param handle - Watcher handle\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * watchResume(handle)\n * // Event delivery resumes\n * ```\n */\nexport function watchResume(handle: number): string {\n  const native = getNativeBridge()\n  if (!native?.watch_resume) throw new Error(\"watch_resume not available\")\n  return native.watch_resume(handle)\n}\n\n/**\n * Scan cache and get optimization recommendations\n *\n * @returns Optimization hints JSON\n *\n * @example\n * ```ts\n * const hints = scanCacheOptimizations()\n * console.log(hints)\n * ```\n */\nexport function scanCacheOptimizations(): string {\n  const native = getNativeBridge()\n  if (!native?.scan_cache_optimizations) throw new Error(\"scan_cache_optimizations not available\")\n  return native.scan_cache_optimizations()\n}\n\n/**\n * Get plugin hook list\n *\n * @returns Available plugin hooks\n *\n * @example\n * ```ts\n * const hooks = getPluginHooks()\n * console.log(hooks)\n * ```\n */\nexport function getPluginHooks(): string[] {\n  const native = getNativeBridge()\n  if (!native?.get_plugin_hooks) throw new Error(\"get_plugin_hooks not available\")\n  const result = native.get_plugin_hooks()\n  try {\n    return JSON.parse(result)\n  } catch {\n    return []\n  }\n}\n\n/**\n * Register plugin hook handler\n *\n * @param hook_name - Hook name\n * @param handler_id - Handler identifier\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * registerPluginHook('compile:before', 'my-handler-1')\n * ```\n */\nexport function registerPluginHook(hook_name: string, handler_id: string): string {\n  const native = getNativeBridge()\n  if (!native?.register_plugin_hook) throw new Error(\"register_plugin_hook not available\")\n  return native.register_plugin_hook(hook_name, handler_id)\n}\n\n/**\n * Unregister plugin hook handler\n *\n * @param hook_name - Hook name\n * @param handler_id - Handler identifier\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * unregisterPluginHook('compile:before', 'my-handler-1')\n * ```\n */\nexport function unregisterPluginHook(hook_name: string, handler_id: string): string {\n  const native = getNativeBridge()\n  if (!native?.unregister_plugin_hook) throw new Error(\"unregister_plugin_hook not available\")\n  return native.unregister_plugin_hook(hook_name, handler_id)\n}\n\n/**\n * Emit plugin hook event\n *\n * @param hook_name - Hook name\n * @param data_json - Event data as JSON\n * @returns Modified data\n *\n * @example\n * ```ts\n * const result = emitPluginHook('compile:before', JSON.stringify({css: '...'}))\n * ```\n */\nexport function emitPluginHook(hook_name: string, data_json: string): string {\n  const native = getNativeBridge()\n  if (!native?.emit_plugin_hook) throw new Error(\"emit_plugin_hook not available\")\n  return native.emit_plugin_hook(hook_name, data_json)\n}\n\n/**\n * Get compilation performance metrics\n *\n * @returns Performance metrics\n *\n * @example\n * ```ts\n * const metrics = getCompilationMetrics()\n * console.log(metrics)\n * ```\n */\nexport function getCompilationMetrics(): string {\n  const native = getNativeBridge()\n  if (!native?.get_compilation_metrics) throw new Error(\"get_compilation_metrics not available\")\n  return native.get_compilation_metrics()\n}\n\n/**\n * Reset compilation performance counters\n *\n * @returns \"OK\" on success\n *\n * @example\n * ```ts\n * resetCompilationMetrics()\n * ```\n */\nexport function resetCompilationMetrics(): string {\n  const native = getNativeBridge()\n  if (!native?.reset_compilation_metrics) throw new Error(\"reset_compilation_metrics not available\")\n  return native.reset_compilation_metrics()\n}\n\n/**\n * Validate CSS output for errors\n *\n * @param css - CSS to validate\n * @returns Validation result as JSON\n *\n * @example\n * ```ts\n * const result = validateCssOutput('.test { color: red; }')\n * ```\n */\nexport function validateCssOutput(css: string): string {\n  const native = getNativeBridge()\n  if (!native?.validate_css_output) throw new Error(\"validate_css_output not available\")\n  return native.validate_css_output(css)\n}\n\n/**\n * Get compiler diagnostics\n *\n * @returns Diagnostic information\n *\n * @example\n * ```ts\n * const diagnostics = getCompilerDiagnostics()\n * console.log(diagnostics)\n * ```\n */\nexport function getCompilerDiagnostics(): string {\n  const native = getNativeBridge()\n  if (!native?.get_compiler_diagnostics) throw new Error(\"get_compiler_diagnostics not available\")\n  return native.get_compiler_diagnostics()\n}\n","/**\n * Watch Sub-entry Point\n * \n * Exports file watching and compilation monitoring functionality.\n * - File system watching\n * - Watch event polling and management\n * - Watch statistics\n * - Plugin hooks\n * - Compilation metrics\n */\n\nexport {\n  startWatch,\n  pollWatchEvents,\n  stopWatch,\n  watchAddPattern,\n  watchRemovePattern,\n  watchGetActiveHandles,\n  watchClearAll,\n  watchEventTypeToString,\n  isWatchRunning,\n  getWatchStats,\n  watchPause,\n  watchResume,\n  scanCacheOptimizations,\n  getPluginHooks,\n  registerPluginHook,\n  unregisterPluginHook,\n  emitPluginHook,\n  getCompilationMetrics,\n  resetCompilationMetrics,\n  validateCssOutput,\n  getCompilerDiagnostics,\n  type WatchEvent,\n  type WatchHandle,\n  type WatchStats,\n} from './watchSystemNative'\n","/**\n * tailwind-styled-v4 — Route class attribution via static import graph\n *\n * Per-route CSS splitting yang sesungguhnya: bukan cuma \"semua classes jadi\n * satu bucket __global\", tapi exclusive-per-route classes vs shared classes.\n *\n * KENAPA INI BISA DIBANGUN SEKARANG (sebelumnya ditandai \"butuh import-graph\n * tracing yang belum ada\"): scanWorkspace() Rust SUDAH balikin classes\n * per-file (ScannedFile { file, classes, hash }) — yang belum ada cuma\n * relasi \"file A import file B\"-nya. Itu yang dibangun di sini, di sisi TS,\n * pakai static regex-based import extractor + resolusi tsconfig `paths`.\n * Tidak perlu native binding baru / rebuild Rust.\n *\n * ALGORITMA:\n *   1. Build adjacency list (file -> Set<file yang di-import>), regex-based,\n *      dibatasi ke file yang ada di dalam srcDir saja (bare/node_modules\n *      imports diabaikan — di luar scope atribusi route).\n *   2. Entry point per route = file yang match `app/.../page.{tsx,ts,jsx,js}`\n *      (sama heuristik dengan fileToRoute() di index.ts).\n *   3. BFS dari tiap entry -> reachable file set untuk route itu.\n *   4. Reverse: untuk tiap file, hitung berapa route yang bisa menjangkaunya.\n *      - Tepat 1 route -> classes file itu eksklusif ke route tersebut.\n *      - 0 atau 2+ route (termasuk layout/loading/error/template/\n *        not-found/default, dan file yang gak ke-reach sama sekali —\n *        misal dead code atau import yang gak ke-detect static parser\n *        ini, contoh: import dinamis berbasis variable) -> fallback ke\n *        \"__global\". Default selalu aman (gak pernah salah atribusi ke\n *        route yang salah), cuma bisa under-split di dynamic-import edge\n *        case.\n *\n * KETERBATASAN YANG DISADARI (belum di-handle, scope sengaja dibatasi):\n *   - Nested layout HARUSNYA cuma global utk subtree-nya (bukan whole app),\n *     tapi di sini SEMUA layout/loading/error/template selalu -> __global.\n *     Konservatif (over-share ke global), tidak pernah salah, tapi belum\n *     \"true\" subtree-scoped splitting.\n *   - Dynamic import dengan path non-literal (`import(someVar)`) tidak bisa\n *     di-resolve static parser ini — file tujuan jadi unreachable -> jatuh\n *     ke __global (aman, tapi gak ke-split).\n *   - Hanya resolve alias dari tsconfig.json/jsconfig.json root project\n *     (compilerOptions.paths + baseUrl). Alias yang didefinisikan di tempat\n *     lain (custom resolver webpack/turbopack) tidak ke-detect.\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\n\nexport interface ScannedFileInput {\n  file: string\n  classes: string[]\n}\n\nexport interface RouteClassBuckets {\n  /** route path (\"/\", \"/docs\", \"/blog/[slug]\", ...) -> classes eksklusif route itu */\n  routes: Map<string, Set<string>>\n  /** classes shared 2+ route, layout/loading/error/template, atau unresolved */\n  global: Set<string>\n}\n\nconst CODE_EXTENSIONS = [\".tsx\", \".ts\", \".jsx\", \".js\", \".mjs\", \".cjs\"]\nconst SHARED_SEGMENT_RE = /(?:^|[\\\\/])(layout|loading|error|template|not-found|default)\\.(?:tsx|ts|jsx|js)$/\nconst PAGE_RE = /(?:^|[\\\\/])app[\\\\/](.*?)[\\\\/]page\\.(?:tsx|ts|jsx|js)$/\nconst ROOT_PAGE_RE = /(?:^|[\\\\/])app[\\\\/]page\\.(?:tsx|ts|jsx|js)$/\n\n/** Derive route path dari path file page.tsx App Router. Sama heuristik dengan fileToRoute() di index.ts. */\nfunction deriveRouteFromPageFile(normalizedFile: string): string | null {\n  const rootMatch = normalizedFile.match(ROOT_PAGE_RE)\n  if (rootMatch) return \"/\"\n  const match = normalizedFile.match(PAGE_RE)\n  if (!match) return null\n  // Strip Next.js route group segments seperti \"(marketing)\" — tidak masuk URL.\n  const segments = match[1]!.split(\"/\").filter((s) => !(s.startsWith(\"(\") && s.endsWith(\")\")))\n  return `/${segments.join(\"/\")}`\n}\n\ninterface TsconfigAliasInfo {\n  baseDir: string\n  paths: Array<{ prefix: string; targets: string[] }>\n}\n\n/**\n * Strip // dan /* *\\/ comment dari tsconfig.json/jsconfig.json, TANPA merusak\n * string literal. Naive `input.replace(/\\/\\*...*\\//, \"\")` salah: tsconfig\n * path alias umum kayak \"@/*\" mengandung literal \"/*\", dan glob pattern di\n * \"include\" kayak \"**\\/*.ts\" mengandung literal \"*\\/\" — regex buta bakal\n * ngira itu comment delimiter dan makan sebagian JSON di antaranya, bikin\n * parse error. Tokenizer ini lacak in-string state (termasuk escape \\\") jadi\n * cuma strip comment yang BENERAN di luar string.\n */\nfunction stripJsonComments(input: string): string {\n  let out = \"\"\n  let i = 0\n  let inString = false\n  let stringChar = \"\"\n  while (i < input.length) {\n    const ch = input[i]!\n    if (inString) {\n      out += ch\n      if (ch === \"\\\\\" && i + 1 < input.length) {\n        out += input[i + 1]\n        i += 2\n        continue\n      }\n      if (ch === stringChar) inString = false\n      i++\n      continue\n    }\n    if (ch === '\"' || ch === \"'\") {\n      inString = true\n      stringChar = ch\n      out += ch\n      i++\n      continue\n    }\n    if (ch === \"/\" && input[i + 1] === \"/\") {\n      while (i < input.length && input[i] !== \"\\n\") i++\n      continue\n    }\n    if (ch === \"/\" && input[i + 1] === \"*\") {\n      i += 2\n      while (i < input.length && !(input[i] === \"*\" && input[i + 1] === \"/\")) i++\n      i += 2\n      continue\n    }\n    out += ch\n    i++\n  }\n  return out\n}\n\nfunction loadTsconfigAliases(root: string): TsconfigAliasInfo | null {\n  for (const candidate of [\"tsconfig.json\", \"jsconfig.json\"]) {\n    const configPath = path.join(root, candidate)\n    if (!fs.existsSync(configPath)) continue\n    try {\n      const raw = stripJsonComments(fs.readFileSync(configPath, \"utf-8\"))\n      const parsed = JSON.parse(raw) as {\n        compilerOptions?: { baseUrl?: string; paths?: Record<string, string[]> }\n      }\n      const co = parsed.compilerOptions\n      if (!co?.paths) continue\n      const baseDir = path.join(root, co.baseUrl ?? \".\")\n      const paths = Object.entries(co.paths).map(([prefix, targets]) => ({\n        prefix: prefix.replace(/\\*$/, \"\"),\n        targets: targets.map((t) => t.replace(/\\*$/, \"\")),\n      }))\n      return { baseDir, paths }\n    } catch {\n      // Tsconfig korup/gak valid JSON — skip, fallback ke relative-only.\n      continue\n    }\n  }\n  return null\n}\n\n/** Resolve satu module specifier ke absolute file path, atau null kalau gak bisa/di luar scope. */\nfunction resolveSpecifier(\n  specifier: string,\n  fromFile: string,\n  aliasInfo: TsconfigAliasInfo | null\n): string | null {\n  let candidate: string | null = null\n\n  if (specifier.startsWith(\".\")) {\n    candidate = path.resolve(path.dirname(fromFile), specifier)\n  } else if (aliasInfo) {\n    for (const { prefix, targets } of aliasInfo.paths) {\n      if (specifier.startsWith(prefix)) {\n        const rest = specifier.slice(prefix.length)\n        candidate = path.join(aliasInfo.baseDir, targets[0] ?? \"\", rest)\n        break\n      }\n    }\n  }\n\n  if (!candidate) return null // bare specifier (node_modules/framework) — di luar scope\n\n  // Asset non-kode (css, image, dll) — bukan node graph, biarin gak ke-resolve.\n  if (/\\.(css|scss|sass|less|svg|png|jpe?g|gif|webp|json|woff2?|ttf|eot)$/i.test(candidate)) return null\n\n  if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) return candidate\n  for (const ext of CODE_EXTENSIONS) {\n    if (fs.existsSync(candidate + ext)) return candidate + ext\n  }\n  for (const ext of CODE_EXTENSIONS) {\n    const indexPath = path.join(candidate, `index${ext}`)\n    if (fs.existsSync(indexPath)) return indexPath\n  }\n  return null\n}\n\nconst IMPORT_FROM_RE = /(?:import|export)(?:[^'\"`;]*?)from\\s+[\"']([^\"']+)[\"']/g\nconst SIDE_EFFECT_IMPORT_RE = /^\\s*import\\s+[\"']([^\"']+)[\"']/gm\nconst DYNAMIC_IMPORT_RE = /\\bimport\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g\n\nfunction extractImportSpecifiers(source: string): string[] {\n  const specs = new Set<string>()\n  for (const re of [IMPORT_FROM_RE, SIDE_EFFECT_IMPORT_RE, DYNAMIC_IMPORT_RE]) {\n    re.lastIndex = 0\n    let m: RegExpExecArray | null\n    while ((m = re.exec(source))) {\n      if (m[1]) specs.add(m[1])\n    }\n  }\n  return [...specs]\n}\n\n/**\n * Build route -> exclusive-classes map + global fallback bucket, dari hasil\n * scanWorkspace() (files[].classes) plus static import graph antar file.\n */\nexport function buildRouteClassBuckets(root: string, srcDir: string, files: ScannedFileInput[]): RouteClassBuckets {\n  const aliasInfo = loadTsconfigAliases(root)\n  const classesByFile = new Map<string, string[]>()\n  const adjacency = new Map<string, Set<string>>()\n\n  for (const f of files) {\n    const normalized = path.normalize(f.file)\n    classesByFile.set(normalized, f.classes)\n    if (!adjacency.has(normalized)) adjacency.set(normalized, new Set())\n  }\n\n  for (const f of files) {\n    const normalized = path.normalize(f.file)\n    let source: string\n    try {\n      source = fs.readFileSync(normalized, \"utf-8\")\n    } catch {\n      continue // file mungkin udah kehapus/HMR race — skip, classes-nya tetap masuk ke __global lewat fallback unreachable\n    }\n    const edges = adjacency.get(normalized)!\n    for (const spec of extractImportSpecifiers(source)) {\n      const resolved = resolveSpecifier(spec, normalized, aliasInfo)\n      if (resolved && classesByFile.has(resolved)) edges.add(resolved)\n    }\n  }\n\n  // Entry point per route.\n  const routeEntries: Array<{ route: string; file: string }> = []\n  for (const f of files) {\n    const normalized = path.normalize(f.file).replace(/\\\\/g, \"/\")\n    const route = deriveRouteFromPageFile(normalized)\n    if (route) routeEntries.push({ route, file: path.normalize(f.file) })\n  }\n\n  // BFS per route -> set file yang reachable.\n  const reachableByRoute = new Map<string, Set<string>>()\n  for (const { route, file } of routeEntries) {\n    const visited = new Set<string>()\n    const queue = [file]\n    while (queue.length > 0) {\n      const current = queue.shift()!\n      if (visited.has(current)) continue\n      visited.add(current)\n      for (const next of adjacency.get(current) ?? []) {\n        if (!visited.has(next)) queue.push(next)\n      }\n    }\n    reachableByRoute.set(route, visited)\n  }\n\n  // Reverse: file -> routes yang menjangkaunya.\n  const routesByFile = new Map<string, Set<string>>()\n  for (const [route, fileSet] of reachableByRoute) {\n    for (const file of fileSet) {\n      if (!routesByFile.has(file)) routesByFile.set(file, new Set())\n      routesByFile.get(file)!.add(route)\n    }\n  }\n\n  const result: RouteClassBuckets = { routes: new Map(), global: new Set() }\n  for (const [file, classes] of classesByFile) {\n    const normalizedSlash = file.replace(/\\\\/g, \"/\")\n    const isSharedSegment = SHARED_SEGMENT_RE.test(normalizedSlash)\n    const reachingRoutes = isSharedSegment ? new Set<string>() : routesByFile.get(file)\n\n    if (!isSharedSegment && reachingRoutes && reachingRoutes.size === 1) {\n      const [route] = reachingRoutes\n      if (!result.routes.has(route!)) result.routes.set(route!, new Set())\n      const bucket = result.routes.get(route!)!\n      for (const cls of classes) bucket.add(cls)\n    } else {\n      for (const cls of classes) result.global.add(cls)\n    }\n  }\n\n  return result\n}\n\n/** Slugify route path jadi nama file CSS yang aman. \"/\" -> \"root\", \"/blog/[slug]\" -> \"blog__slug_\". */\nexport function routeToCssFilename(route: string): string {\n  const slug = route\n    .replace(/^\\/+/, \"\")\n    .replace(/[^a-zA-Z0-9_-]+/g, \"_\")\n    .replace(/^_+|_+$/g, \"\")\n  return `route_${slug || \"root\"}.css`\n}\n","/**\n * Semantic Component Analyzer\n * \n * Build-time analyzer untuk extract component metadata (@semantic, @aria, @state)\n * dari component config dan determine semantic intent.\n */\n\n/**\n * Semantic intent type - represents semantic meaning ng component\n */\nexport type SemanticIntent =\n    | 'button'\n    | 'link'\n    | 'navigation'\n    | 'heading'\n    | 'paragraph'\n    | 'list'\n    | 'input'\n    | 'form'\n    | 'dialog'\n    | 'alert'\n    | 'tab'\n    | 'checkbox'\n    | 'radio'\n    | 'select'\n    | 'custom'\n\n/**\n * Semantic metadata annotations\n */\nexport interface SemanticMetadata {\n    /**\n     * Semantic intent ng component (e.g., \"button\", \"link\")\n     * Guides ARIA role assignment at build-time\n     */\n    '@semantic'?: SemanticIntent\n\n    /**\n     * Explicit ARIA attributes to inject\n     */\n    '@aria'?: Record<string, string>\n\n    /**\n     * State-to-ARIA property mappings\n     * e.g., { checked: \"aria-checked\", disabled: \"aria-disabled\" }\n     */\n    '@state'?: Record<string, string>\n\n    /**\n     * Custom semantic mappings\n     */\n    [key: string]: unknown\n}\n\n/**\n * Component config type - basic shape\n */\nexport interface ComponentConfig {\n    tag?: string\n    variants?: Record<string, unknown>\n    defaultVariants?: Record<string, unknown>\n    [key: string]: unknown\n}\n\n/**\n * Analysis result from semantic analyzer\n */\nexport interface SemanticAnalysisResult {\n    componentName: string\n    tag: string\n    semantic: SemanticIntent\n    metadata: SemanticMetadata\n    ariaRole?: string\n    stateProperties: Map<string, string>\n}\n\n/**\n * Infer semantic intent from HTML tag\n */\nfunction inferSemanticFromTag(tag: string): SemanticIntent {\n    const tagLower = tag.toLowerCase()\n\n    const semanticMap: Record<string, SemanticIntent> = {\n        'button': 'button',\n        'a': 'link',\n        'nav': 'navigation',\n        'h1': 'heading',\n        'h2': 'heading',\n        'h3': 'heading',\n        'h4': 'heading',\n        'h5': 'heading',\n        'h6': 'heading',\n        'p': 'paragraph',\n        'ul': 'list',\n        'ol': 'list',\n        'input': 'input',\n        'form': 'form',\n        'dialog': 'dialog',\n        'select': 'select',\n        'textarea': 'input',\n    }\n\n    return semanticMap[tagLower] ?? 'custom'\n}\n\n/**\n * Extract semantic metadata from component config\n * Looks for @semantic, @aria, @state annotations\n */\nexport function extractSemanticMetadata(config: ComponentConfig): SemanticMetadata {\n    const metadata: SemanticMetadata = {}\n\n    // Extract prefixed fields (@semantic, @aria, @state)\n    for (const [key, value] of Object.entries(config)) {\n        if (key.startsWith('@')) {\n            metadata[key] = value\n        }\n    }\n\n    return metadata\n}\n\n/**\n * Analyze component config untuk determine semantic intent\n * Priority: explicit @semantic > tag-based inference\n */\nexport function analyzeComponentSemantics(\n    componentName: string,\n    config: ComponentConfig\n): SemanticAnalysisResult {\n    // Extract metadata\n    const metadata = extractSemanticMetadata(config)\n\n    // Get HTML tag (default: div)\n    const tag = config.tag ?? 'div'\n\n    // Determine semantic intent\n    let semantic = inferSemanticFromTag(tag)\n    if (metadata['@semantic']) {\n        semantic = metadata['@semantic'] as SemanticIntent\n    }\n\n    // Convert state mappings to Map\n    const stateProperties = new Map<string, string>()\n    if (metadata['@state']) {\n        for (const [key, value] of Object.entries(metadata['@state'])) {\n            if (typeof value === 'string') {\n                stateProperties.set(key, value)\n            }\n        }\n    }\n\n    return {\n        componentName,\n        tag,\n        semantic,\n        metadata,\n        stateProperties,\n    }\n}\n\n/**\n * Get ARIA role from semantic intent\n * Used by ARIA injection plugin at build-time\n */\nexport function getAriaRoleForSemantic(semantic: SemanticIntent): string | undefined {\n    const roleMap: Record<SemanticIntent, string | undefined> = {\n        'button': 'button',\n        'link': 'link',\n        'navigation': 'navigation',\n        'heading': 'heading',\n        'paragraph': undefined, // paragraph tidak perlu explicit role\n        'list': 'list',\n        'input': 'textbox',\n        'form': 'form',\n        'dialog': 'dialog',\n        'alert': 'alert',\n        'tab': 'tab',\n        'checkbox': 'checkbox',\n        'radio': 'radio',\n        'select': 'listbox',\n        'custom': undefined,\n    }\n\n    return roleMap[semantic]\n}\n\n/**\n * Batch analyze multiple components\n * Returns map of componentName → SemanticAnalysisResult\n */\nexport function analyzeComponentBatch(\n    components: Map<string, ComponentConfig>\n): Map<string, SemanticAnalysisResult> {\n    const results = new Map<string, SemanticAnalysisResult>()\n\n    for (const [name, config] of components) {\n        const analysis = analyzeComponentSemantics(name, config)\n        results.set(name, analysis)\n    }\n\n    return results\n}\n\n/**\n * Validate semantic metadata untuk consistency\n * Returns array of validation issues (empty = valid)\n */\nexport function validateSemanticMetadata(metadata: SemanticMetadata): string[] {\n    const issues: string[] = []\n\n    // Validate @semantic value\n    const validSemantics: SemanticIntent[] = [\n        'button', 'link', 'navigation', 'heading', 'paragraph', 'list',\n        'input', 'form', 'dialog', 'alert', 'tab', 'checkbox', 'radio', 'select', 'custom'\n    ]\n\n    if (metadata['@semantic'] && !validSemantics.includes(metadata['@semantic'] as SemanticIntent)) {\n        issues.push(`Invalid @semantic value: ${metadata['@semantic']}`)\n    }\n\n    // Validate @aria object\n    if (metadata['@aria']) {\n        if (typeof metadata['@aria'] !== 'object' || Array.isArray(metadata['@aria'])) {\n            issues.push('@aria must be object')\n        }\n    }\n\n    // Validate @state object\n    if (metadata['@state']) {\n        if (typeof metadata['@state'] !== 'object' || Array.isArray(metadata['@state'])) {\n            issues.push('@state must be object')\n        }\n\n        // Validate that values are string (ARIA property names)\n        for (const [key, value] of Object.entries(metadata['@state'] as Record<string, unknown>)) {\n            if (typeof value !== 'string') {\n                issues.push(`@state.${key} must be string (ARIA property name)`)\n            }\n        }\n    }\n\n    return issues\n}\n","/**\n * Type Stub Generator\n * \n * Build-time generator untuk create TypeScript .d.ts files dari semantic metadata.\n * Generates type stubs dengan semantic information untuk better IDE intellisense.\n */\n\nimport type { SemanticAnalysisResult, SemanticIntent } from './semanticComponentAnalyzer'\n\n/**\n * TypeScript interface definition untuk generated type\n */\nexport interface GeneratedTypeDefinition {\n    interfaceName: string\n    extendsFrom: string\n    properties: Map<string, TypeProperty>\n    jsDocComment?: string\n}\n\n/**\n * Individual property definition\n */\nexport interface TypeProperty {\n    name: string\n    type: string\n    description?: string\n    optional?: boolean\n}\n\n/**\n * Generate JSDoc comment dari semantic analysis\n */\nfunction generateJsDocFromSemantic(analysis: SemanticAnalysisResult): string {\n    const lines: string[] = [\n        '/**',\n        ` * ${analysis.componentName}`,\n        ` * `,\n        ` * Semantic intent: ${analysis.semantic}`,\n        ` * Tag: ${analysis.tag}`,\n    ]\n\n    if (analysis.metadata['@aria']) {\n        lines.push(` * ARIA: auto-injected dari semantic metadata`)\n    }\n\n    if (analysis.stateProperties.size > 0) {\n        const states = Array.from(analysis.stateProperties.entries())\n            .map(([k, v]) => `${k} → ${v}`)\n            .join(', ')\n        lines.push(` * State mappings: ${states}`)\n    }\n\n    lines.push(' */')\n    return lines.join('\\n')\n}\n\n/**\n * Get base type untuk component props\n * Depends on semantic intent dan HTML tag\n */\nfunction getBaseComponentType(analysis: SemanticAnalysisResult): string {\n    const tag = analysis.tag.toLowerCase()\n\n    // React.ComponentPropsWithoutRef untuk specific tags\n    const tagMap: Record<string, string> = {\n        'button': 'React.ButtonHTMLAttributes<HTMLButtonElement>',\n        'a': 'React.AnchorHTMLAttributes<HTMLAnchorElement>',\n        'input': 'React.InputHTMLAttributes<HTMLInputElement>',\n        'textarea': 'React.TextareaHTMLAttributes<HTMLTextAreaElement>',\n        'select': 'React.SelectHTMLAttributes<HTMLSelectElement>',\n        'form': 'React.FormHTMLAttributes<HTMLFormElement>',\n        'div': 'React.HTMLAttributes<HTMLDivElement>',\n        'span': 'React.HTMLAttributes<HTMLSpanElement>',\n        'nav': 'React.HTMLAttributes<HTMLElement>',\n        'dialog': 'React.DialogHTMLAttributes<HTMLDialogElement>',\n    }\n\n    return tagMap[tag] ?? 'React.HTMLAttributes<HTMLElement>'\n}\n\n/**\n * Generate state properties dari semantic metadata\n */\nfunction generateStateProperties(analysis: SemanticAnalysisResult): Map<string, TypeProperty> {\n    const props = new Map<string, TypeProperty>()\n\n    // Add state properties\n    for (const [stateName, ariaProp] of analysis.stateProperties) {\n        props.set(stateName, {\n            name: stateName,\n            type: 'boolean | undefined',\n            description: `State mapped to ARIA property: ${ariaProp}`,\n            optional: true,\n        })\n    }\n\n    return props\n}\n\n/**\n * Generate .d.ts interface definition\n */\nexport function generateTypeDefinition(\n    analysis: SemanticAnalysisResult,\n    componentName: string\n): GeneratedTypeDefinition {\n    const interfaceName = `${componentName}Props`\n    const baseType = getBaseComponentType(analysis)\n    const stateProps = generateStateProperties(analysis)\n\n    return {\n        interfaceName,\n        extendsFrom: baseType,\n        properties: stateProps,\n        jsDocComment: generateJsDocFromSemantic(analysis),\n    }\n}\n\n/**\n * Render TypeScript interface code\n */\nexport function renderTypeDefinition(def: GeneratedTypeDefinition): string {\n    const lines: string[] = []\n\n    if (def.jsDocComment) {\n        lines.push(def.jsDocComment)\n    }\n\n    lines.push(`export interface ${def.interfaceName} extends ${def.extendsFrom} {`)\n\n    // Add documented state properties\n    for (const prop of def.properties.values()) {\n        const optional = prop.optional ? '?' : ''\n\n        if (prop.description) {\n            lines.push(`  /** ${prop.description} */`)\n        }\n\n        lines.push(`  ${prop.name}${optional}: ${prop.type}`)\n    }\n\n    lines.push('}')\n\n    return lines.join('\\n')\n}\n\n/**\n * Generate complete .d.ts file content\n * Includes imports, interfaces, exports\n */\nexport function generateTypeStubFile(\n    analyses: Map<string, SemanticAnalysisResult>,\n    packageName: string = 'tailwind-styled'\n): string {\n    const lines: string[] = [\n        '/**',\n        ` * Auto-generated type definitions dari semantic component metadata`,\n        ` * Generated at build-time dari @semantic, @aria, @state annotations`,\n        ` * Package: ${packageName}`,\n        ` */`,\n        '',\n        \"import type * as React from 'react'\",\n        '',\n    ]\n\n    // Generate interface untuk setiap component\n    const interfaces: string[] = []\n\n    for (const [name, analysis] of analyses) {\n        const def = generateTypeDefinition(analysis, name)\n        interfaces.push(renderTypeDefinition(def))\n    }\n\n    lines.push(interfaces.join('\\n\\n'))\n    lines.push('')\n\n    // Generate namespace export\n    lines.push('export namespace Components {')\n    for (const analysis of analyses.values()) {\n        lines.push(`  export type ${analysis.componentName}Props = ${analysis.componentName}Props`)\n    }\n    lines.push('}')\n    lines.push('')\n\n    return lines.join('\\n')\n}\n\n/**\n * Write type stub file ke disk\n * Handles both ESM dan CJS output paths\n */\nexport interface TypeStubOutput {\n    filePath: string\n    content: string\n    format: 'esm' | 'cjs' | 'dts'\n}\n\n/**\n * Generate output paths untuk type stubs\n */\nexport function generateTypeStubOutputPaths(\n    outputDir: string,\n    packageName: string\n): TypeStubOutput[] {\n    return [\n        {\n            filePath: `${outputDir}/${packageName}.d.ts`,\n            content: '', // Will be set by caller\n            format: 'dts',\n        },\n    ]\n}\n\n/**\n * Batch generate type definitions dari multiple analyses\n */\nexport function generateTypeDefinitionsBatch(\n    analyses: Map<string, SemanticAnalysisResult>\n): Map<string, string> {\n    const results = new Map<string, string>()\n\n    for (const [name, analysis] of analyses) {\n        const def = generateTypeDefinition(analysis, name)\n        const code = renderTypeDefinition(def)\n        results.set(name, code)\n    }\n\n    return results\n}\n\n/**\n * Combine multiple type definitions into single file\n */\nexport function combineTypeDefinitions(\n    definitions: Map<string, string>,\n    packageName: string = 'tailwind-styled'\n): string {\n    const lines: string[] = [\n        '/**',\n        ` * Auto-generated type definitions dari semantic component metadata`,\n        ` * Generated at build-time dari @semantic, @aria, @state annotations`,\n        ` * Package: ${packageName}`,\n        ' */',\n        '',\n        \"import type * as React from 'react'\",\n        '',\n    ]\n\n    // Add all type definitions\n    const defs = Array.from(definitions.values())\n    lines.push(defs.join('\\n\\n'))\n\n    return lines.join('\\n')\n}\n","/**\n * Type Generation Plugin untuk tsup/build pipeline\n * \n * Integration point untuk run semantic analyzer + type generator\n * sebagai part dari build process.\n * \n * Usage di tsup.config.ts:\n * ```\n * import { createTypeGenerationPlugin } from './src/typeGenerationPlugin'\n * \n * export default defineConfig({\n *   plugins: [createTypeGenerationPlugin()],\n *   ...\n * })\n * ```\n */\n\nimport fs from 'node:fs'\nimport path from 'node:path'\nimport type { Plugin } from 'esbuild'\n\nimport {\n    analyzeComponentBatch,\n    type ComponentConfig,\n} from './semanticComponentAnalyzer'\nimport {\n    generateTypeStubFile,\n} from './typeGeneratorFromMetadata'\n\n/**\n * Options untuk type generation plugin\n */\nexport interface TypeGenerationPluginOptions {\n    /**\n     * Directory dimana akan output .d.ts files\n     * Default: './dist/types'\n     */\n    outputDir?: string\n\n    /**\n     * Package name untuk generated header\n     * Default: 'tailwind-styled'\n     */\n    packageName?: string\n\n    /**\n     * Enable logging\n     * Default: false\n     */\n    verbose?: boolean\n\n    /**\n     * Source file path untuk component registry\n     * Jika tidak provided, akan skip type generation\n     */\n    componentRegistryPath?: string\n}\n\n/**\n * Create tsup plugin untuk type generation\n * Runs at build-time to generate .d.ts files dari semantic metadata\n */\nexport function createTypeGenerationPlugin(options: TypeGenerationPluginOptions = {}): Plugin {\n    const {\n        outputDir = './dist/types',\n        packageName = 'tailwind-styled',\n        verbose = false,\n        componentRegistryPath,\n    } = options\n\n    return {\n        name: 'type-generation',\n\n        async setup(build) {\n            // This plugin uses esbuild setup hook\n            // For actual type generation, use onEnd callback if available\n            if (verbose) {\n                console.log('[type-generation] Plugin loaded')\n            }\n        },\n    }\n}\n\n/**\n * Load component registry dari file\n * Expected format: JSON with component configs\n */\nfunction loadComponentRegistry(filePath: string): Map<string, ComponentConfig> {\n    const registry = new Map<string, ComponentConfig>()\n\n    if (!fs.existsSync(filePath)) {\n        console.warn(`[type-generation] Component registry not found: ${filePath}`)\n        return registry\n    }\n\n    try {\n        const content = fs.readFileSync(filePath, 'utf8')\n        const data = JSON.parse(content)\n\n        // Expect format: { components: { name: config, ... } } atau direct object\n        const components = data.components ?? data\n\n        for (const [name, config] of Object.entries(components)) {\n            if (typeof config === 'object' && config !== null) {\n                registry.set(name, config as ComponentConfig)\n            }\n        }\n    } catch (error) {\n        console.warn(`[type-generation] Failed to load registry from ${filePath}:`, error)\n    }\n\n    return registry\n}\n\n/**\n * Standalone function untuk generate types from components\n * Useful untuk scripts atau CLI\n */\nexport async function generateTypesFromComponents(\n    components: Map<string, ComponentConfig>,\n    outputPath: string,\n    packageName: string = 'tailwind-styled'\n): Promise<void> {\n    if (components.size === 0) {\n        console.warn('No components provided')\n        return\n    }\n\n    // Analyze components\n    const analyses = analyzeComponentBatch(components)\n\n    // Generate type stubs\n    const typeContent = generateTypeStubFile(analyses, packageName)\n\n    // Ensure output directory exists\n    const dir = path.dirname(outputPath)\n    if (!fs.existsSync(dir)) {\n        fs.mkdirSync(dir, { recursive: true })\n    }\n\n    // Write file\n    fs.writeFileSync(outputPath, typeContent, 'utf8')\n\n    console.log(`Generated type stubs → ${outputPath} (${components.size} components)`)\n}","/**\n * tailwind-styled-v5 — Compiler Main Entry Point\n * \n * Re-exports all sub-entry points for backward compatibility.\n * For better tree-shaking, import from specific sub-entries:\n * - '@tailwind-styled/compiler/compiler' - CSS generation and compilation\n * - '@tailwind-styled/compiler/parser' - Class parsing and extraction\n * - '@tailwind-styled/compiler/analyzer' - Analysis and optimization\n * - '@tailwind-styled/compiler/cache' - Cache management\n * - '@tailwind-styled/compiler/redis' - Redis and distributed cache\n * - '@tailwind-styled/compiler/watch' - File watching and monitoring\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport { createRequire } from \"node:module\"\n\nconst _require = createRequire(\n  typeof require !== \"undefined\"\n    ? (typeof __filename !== \"undefined\" ? `file://${__filename}` : \"file://unknown\")\n    : import.meta.url\n)\n\nimport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult, type NativeBridge, type NativeTransformResult, type ClassExtractResult, type ComponentMetadata, type NativeRscResult } from \"./nativeBridge\"\n\nexport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult }\nexport type { NativeBridge, NativeTransformResult, ClassExtractResult, ComponentMetadata, NativeRscResult }\n\n// ═══════════════════════════════════════════════════════════════════════════\n// RE-EXPORT ALL SUB-ENTRIES FOR BACKWARD COMPATIBILITY\n// ═══════════════════════════════════════════════════════════════════════════\n\n// Compiler sub-entry - CSS generation, compilation, ID registry, streaming\nexport * from './compiler'\n\n// Parser sub-entry - Class parsing and extraction\nexport * from './parser'\n\n// Analyzer sub-entry - Analysis, optimization, theme resolution\nexport * from './analyzer'\n\n// Cache sub-entry - Cache management\nexport * from './cache'\n\n// Redis sub-entry - Redis and distributed cache\nexport * from './redis'\n\n// Watch sub-entry - File watching and monitoring\nexport * from './watch'\n\n// Route graph - static import-graph based per-route class attribution\nexport * from './routeGraph'\n\n// Semantic components - Type inference dan metadata analysis (Build-time)\nexport * from './semanticComponentAnalyzer'\nexport * from './typeGeneratorFromMetadata'\nexport * from './typeGenerationPlugin'\n\n// ═══════════════════════════════════════════════════════════════════════════\n// PURE RUST SYNC API (v5.0.19+) — NO FALLBACK\n// ═══════════════════════════════════════════════════════════════════════════\n// These are the ONLY scanning/generation paths for production builds\n// All must go through native Rust module — fail-fast if unavailable\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TRANSFORM & CORE FUNCTIONS\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const transformSource = (source: string, opts?: Record<string, unknown>) => {\n  const native = getNativeBridge()\n  if (!native?.transformSource) {\n    throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\n  }\n  const stringOpts = opts\n    ? Object.fromEntries(Object.entries(opts).map(([k, v]) => [k, String(v)]))\n    : undefined\n  const result = native.transformSource(source, stringOpts as Record<string, string>)\n  if (!result) {\n    throw new Error(\"FATAL: transformSource returned null\")\n  }\n  return result\n}\n\nexport const hasTwUsage = (source: string): boolean => {\n  const native = getNativeBridge()\n  if (!native?.hasTwUsage) {\n    throw new Error(\"FATAL: Native binding 'hasTwUsage' is required but not available.\")\n  }\n  return native.hasTwUsage(source)\n}\n\nexport const isAlreadyTransformed = (source: string): boolean => {\n  const native = getNativeBridge()\n  if (!native?.isAlreadyTransformed) {\n    throw new Error(\"FATAL: Native binding 'isAlreadyTransformed' is required but not available.\")\n  }\n  return native.isAlreadyTransformed(source)\n}\n\nexport const shouldProcess = (source: string): boolean => {\n  return hasTwUsage(source) && !isAlreadyTransformed(source)\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ADDITIONAL UTILITIES\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const compileCssFromClasses = (classes: string[], prefix?: string | null) => {\n  const native = getNativeBridge()\n  if (!native?.transformSource) {\n    throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\n  }\n  const result = native.transformSource(classes.join(\" \"), { prefix: prefix ?? \"\" })\n  if (!result) {\n    throw new Error(\"FATAL: transformSource returned null\")\n  }\n  return result\n}\n\nexport const buildStyleTag = (classes: string[]): string => {\n  const result = compileCssFromClasses(classes)\n  return result?.code ? `<style data-tailwind-styled>${result.code}</style>` : \"\"\n}\n\nexport const generateCssForClasses = async (\n  classes: string[],\n  _tailwindConfig?: Record<string, unknown>,\n  root?: string,\n  cssEntryContent?: string,\n  minify = false\n): Promise<string> => {\n  try {\n    const { runCssPipeline } = await import(\"./compiler/tailwindEngine\")\n    const result = await runCssPipeline(classes, cssEntryContent, root, minify)\n    return result.css\n  } catch {\n    // Fallback if import fails\n    const native = getNativeBridge()\n    if (!native?.transformSource) {\n      throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\n    }\n    const result = native.transformSource(classes.join(\" \"), {})\n    return result?.code || \"\"\n  }\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// DEAD STYLE ELIMINATION\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const eliminateDeadCss = (css: string, deadClasses: Set<string>): string => {\n  const native = getNativeBridge()\n  if (!native?.eliminateDeadCss) {\n    throw new Error(\"FATAL: Native binding 'eliminateDeadCss' is required but not available.\")\n  }\n  return native.eliminateDeadCss(css, Array.from(deadClasses)) as string\n}\n\nexport const findDeadVariants = (\n  variantConfig: Record<string, unknown> | Array<{ name: string; variants: Record<string, Record<string, string>>; defaultVariants?: Record<string, string> }>,\n  usage: Record<string, Set<string>>\n) => {\n  const unused: string[] = []\n\n  const configs = Array.isArray(variantConfig)\n    ? variantConfig\n    : [{ name: \"__root__\", variants: variantConfig as Record<string, Record<string, string>> }]\n\n  for (const component of configs) {\n    const componentUsage = usage[component.name] ?? new Set<string>()\n    const variants = component.variants as Record<string, Record<string, string>>\n    for (const [key, values] of Object.entries(variants)) {\n      for (const [value] of Object.entries(values)) {\n        if (!componentUsage.has(`${key}:${value}`)) {\n          unused.push(`${component.name !== \"__root__\" ? `${component.name}/` : \"\"}${key}:${value}`)\n        }\n      }\n    }\n  }\n\n  return { unusedCount: unused.length, unused }\n}\n\nexport const runElimination = (css: string, scanResult: unknown): string => {\n  const native = getNativeBridge()\n  if (!native?.detectDeadCode) {\n    throw new Error(\"FATAL: Native binding 'detectDeadCode' is required but not available.\")\n  }\n  const dead = native.detectDeadCode(JSON.stringify(scanResult), css) as { deadInCss: string[] }\n  return eliminateDeadCss(css, new Set(dead.deadInCss ?? []))\n}\n\nexport const scanProjectUsage = (dirs: string[], cwd: string) => {\n  // Import locally to avoid circular dependency\n  const { batchExtractClasses } = _require('./parser')\n  const files = dirs.map(dir => path.resolve(cwd, dir))\n  const results = batchExtractClasses(files) || []\n\n  const combined: Record<string, Record<string, Set<string>>> = {}\n  for (const result of results) {\n    if (result.ok && result.classes) {\n      for (const cls of result.classes) {\n        if (!combined[cls]) combined[cls] = {}\n        combined[cls][result.file] = new Set([cls])\n      }\n    }\n  }\n  return combined\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// CONFIG & UTILITIES\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const generateSafelist = (scanDirs: string[], outputPath?: string, cwd?: string) => {\n  const classes = scanProjectUsage(scanDirs, cwd || process.cwd())\n  const allClasses = Object.keys(classes).sort()\n  if (outputPath) {\n    fs.writeFileSync(outputPath, JSON.stringify(allClasses, null, 2))\n  }\n  return allClasses\n}\n\nexport const loadSafelist = (safelistPath: string): string[] => {\n  try {\n    const content = fs.readFileSync(safelistPath, \"utf-8\")\n    return JSON.parse(content)\n  } catch {\n    return []\n  }\n}\n\nexport const loadTailwindConfig = (cwd: string = process.cwd()) => {\n  const configFiles = [\n    \"tailwind.config.ts\",\n    \"tailwind.config.js\",\n    \"tailwind.config.mjs\",\n    \"tailwind.config.cjs\",\n  ]\n  for (const file of configFiles) {\n    const fullPath = path.join(cwd, file)\n    if (fs.existsSync(fullPath)) {\n      const mod = require(fullPath) as { default?: unknown }\n      return mod.default || mod\n    }\n  }\n  return {}\n}\n\nexport const getContentPaths = (cwd: string = process.cwd()) => {\n  return {\n    content: [\n      path.join(cwd, \"src/**/*.{js,ts,jsx,tsx}\"),\n      path.join(cwd, \"app/**/*.{js,ts,jsx,tsx}\"),\n      path.join(cwd, \"pages/**/*.{js,ts,jsx,tsx}\"),\n    ],\n  }\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// CONTAINER CSS EXTRACTION\n// ═══════════════════════════════════════════════════════════════════════════\n\nfunction _layoutClassesToCss(classes: string): string {\n  const native = getNativeBridge()\n  if (!native?.layoutClassesToCss) {\n    throw new Error(\"FATAL: Native binding 'layoutClassesToCss' is required but not available.\")\n  }\n  return native.layoutClassesToCss(classes)\n}\n\nfunction _hashContainer(tag: string, containerJson: string, name?: string): string {\n  const sortedKey = tag + (name ?? \"\") + containerJson\n  const native = getNativeBridge()\n  if (!native?.hashContent) {\n    throw new Error(\"FATAL: Native binding 'hashContent' is required but not available.\")\n  }\n  return `tw-cq-${native.hashContent(sortedKey, \"fnv\", 6)}`\n}\n\nconst _CONTAINER_BREAKPOINTS: Record<string, string> = {\n  xs: \"240px\",\n  sm: \"320px\",\n  md: \"640px\",\n  lg: \"1024px\",\n  xl: \"1280px\",\n  \"2xl\": \"1536px\",\n}\n\nexport function extractContainerCssFromSource(source: string): string {\n  const native = getNativeBridge()\n  if (!native?.extractTwContainerConfigs) {\n    throw new Error(\"FATAL: Native binding 'extractTwContainerConfigs' is required but not available.\")\n  }\n\n  const configs = native.extractTwContainerConfigs(source) as Array<{\n    tag: string\n    containerJson: string\n    containerName?: string\n    breakpoints: Array<{ key: string; classes: string }>\n  }>\n\n  const rules: string[] = []\n  for (const cfg of configs) {\n    const id = _hashContainer(cfg.tag, cfg.containerJson, cfg.containerName)\n    for (const { key, classes } of cfg.breakpoints) {\n      const minWidth = _CONTAINER_BREAKPOINTS[key] ?? key\n      const css = _layoutClassesToCss(classes)\n      if (!css) continue\n      const query = cfg.containerName\n        ? `@container ${cfg.containerName} (min-width: ${minWidth})`\n        : `@container (min-width: ${minWidth})`\n      rules.push(`${query}{.${id}{${css}}}`)\n    }\n  }\n  return rules.join(\"\\n\")\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// LOADER INTERFACE\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport type LoaderOutput = {\n  code: string\n  changed: boolean\n  classes: string[]\n  staticCss?: string\n  rsc?: { isServer?: boolean; needsClientDirective?: boolean; clientReasons?: string[] }\n  engine?: string\n}\n\nexport const runLoaderTransform = (ctx: { filepath: string; source: string; options?: Record<string, unknown> }) => {\n  const { filepath, source, options } = ctx\n  const result = transformSource(source, { filename: filepath, ...options })\n\n  let staticCss: string | undefined\n  try {\n    const cssChunks: string[] = []\n\n    const stateRules = extractAndGenerateStateCss(source, filepath)\n    if (stateRules.length > 0) {\n      // Filter out unresolved rules: when Rust can't resolve a Tailwind class,\n      // `declarations` contains the raw class name (e.g. \"w-full\") instead of\n      // a real CSS declaration (e.g. \"width: 100%\"). Real declarations always\n      // contain \":\". Emitting unresolved rules causes Tailwind v4 PostCSS to\n      // throw \"CssSyntaxError: Invalid declaration: `w-full`\".\n      // Mirror of the identical guard in staticStateExtractor.ts.\n      const resolvedRules = stateRules.filter((r) => {\n        const decl = r.declarations.trim()\n        return decl.length === 0 || decl.includes(\":\")\n      })\n      if (resolvedRules.length > 0) {\n        cssChunks.push(resolvedRules.map((r) => r.cssRule).join(\"\\n\"))\n      }\n    }\n\n    const containerCss = extractContainerCssFromSource(source)\n    if (containerCss) cssChunks.push(containerCss)\n\n    const combined = cssChunks.join(\"\\n\").trim()\n    if (combined) staticCss = combined\n  } catch (err) {\n    // Non-fatal — static CSS extraction failure should not break transform pipeline.\n    console.debug(\"Static CSS extraction warning:\", err)\n  }\n\n  return {\n    code: result?.code || \"\",\n    changed: result?.changed || false,\n    classes: result?.classes || [],\n    staticCss,\n  } as LoaderOutput\n}\n\nexport const shouldSkipFile = (filepath: string): boolean => {\n  const SKIP_PATHS = [\"node_modules\", \".next\", \".rspack-dist\", \".turbo\", \"dist/\", \"out/\"]\n  const skipExtensions = [\".css\", \".json\", \".md\", \".txt\", \".yaml\", \".yml\"]\n  for (const p of SKIP_PATHS) {\n    if (filepath.includes(p)) return true\n  }\n  for (const ext of skipExtensions) {\n    if (filepath.endsWith(ext)) return true\n  }\n  return false\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ROUTE MANAGEMENT\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const fileToRoute = (filepath: string): string | null => {\n  const normalized = filepath.replace(/\\\\/g, \"/\")\n  if (normalized.includes(\"/layout.\") || normalized.includes(\"/loading.\") || normalized.includes(\"/error.\")) {\n    return \"__global\"\n  }\n  const pageMatch = normalized.match(/(?:^|\\/)app\\/(.+?)\\/page\\.[tj]sx?$/)\n  if (pageMatch) return `/${pageMatch[1]}`\n  const rootPage = normalized.match(/(?:^|\\/)app\\/page\\.[tj]sx?$/)\n  if (rootPage) return \"/\"\n  return null\n}\n\nexport const getAllRoutes = (): string[] => {\n  const native = getNativeBridge()\n  if (!native?.analyzeClasses) {\n    throw new Error(\"FATAL: Native binding 'analyzeClasses' is required but not available.\")\n  }\n  return [\"/\", \"__global\"]\n}\n\n// ── Route/class registry (FIX) ──────────────────────────────────────────────\n// Sebelumnya getRouteClasses/registerFileClasses/registerGlobalClasses adalah\n// no-op stubs (params di-prefix underscore, body kosong) — akibatnya\n// TwCssInjector SELALU gagal nemu manifest CSS walau \"routeCss: true\" sudah\n// diset di withTailwindStyled(...), karena memang tidak ada satu pun kode\n// yang pernah menulis isi map ini. webpackLoader.ts/turbopackLoader.ts sudah\n// benar memanggil registerFileClasses(filepath, output.classes) per file,\n// tapi panggilan itu jatuh ke lubang hitam.\n//\n// Map ini di-key per filepath (bukan per route langsung) — sama pola dengan\n// _fileStaticCssMap di staticCssWebpackPlugin.ts — supaya file yang\n// diedit/dihapus saat HMR gak nyisain stale classes dari versi lama file\n// tersebut. getRouteClasses() menghitung ulang dari scratch tiap dipanggil\n// dengan mem-bucket lewat fileToRoute(); ini O(files) per call, yang cukup\n// murah untuk ukuran project tipikal dan menghindari kelas bug \"double\n// counting\" kalau dihitung incremental.\nconst _fileClassesMap = new Map<string, Set<string>>()\nconst _globalClasses = new Set<string>()\n\nexport const getRouteClasses = (route: string): Set<string> => {\n  const result = new Set<string>()\n  for (const [filepath, classes] of _fileClassesMap) {\n    const fileRoute = fileToRoute(filepath) ?? \"__global\"\n    if (fileRoute === route) {\n      for (const cls of classes) result.add(cls)\n    }\n  }\n  return result\n}\n\n/**\n * Semua classes yang ke-register dari semua file + registerGlobalClasses(),\n * tanpa peduli route. TIDAK dipakai untuk manifest per-route (lihat\n * withTailwindStyled.ts — manifest ditulis dari `result.files` hasil\n * scanWorkspace() + buildRouteClassBuckets() di ./routeGraph.ts, karena\n * registry ini baru ke-isi progresif saat bundler benar-benar meng-compile\n * file, sementara manifest ditulis di config-eval time, sebelum itu).\n * getRouteClasses()/fileToRoute() di bawah juga TIDAK dipakai jalur itu —\n * cuma mengenali page.tsx/layout.tsx/loading.tsx/error.tsx secara langsung,\n * gak ngikutin import transitif. Per-route splitting yang sesungguhnya\n * (import-graph tracing: file mana di-import transitif oleh route mana)\n * sudah ada — lihat ./routeGraph.ts (buildRouteClassBuckets), dipanggil\n * dari withTailwindStyled.ts, bukan dari registry/fungsi di bawah ini.\n * Fungsi-fungsi di bawah dipertahankan untuk konsumer lain (CLI `tw split`,\n * dll) yang mungkin masih bergantung pada registry incremental ini.\n */\nexport const getAllRegisteredClasses = (): Set<string> => {\n  const result = new Set<string>(_globalClasses)\n  for (const classes of _fileClassesMap.values()) {\n    for (const cls of classes) result.add(cls)\n  }\n  return result\n}\n\n/** Dipanggil oleh webpackLoader.ts/turbopackLoader.ts setiap file di-transform. */\nexport const registerFileClasses = (filepath: string, classes: string[]): void => {\n  if (!classes || classes.length === 0) {\n    _fileClassesMap.delete(filepath)\n    return\n  }\n  _fileClassesMap.set(filepath, new Set(classes))\n}\n\nexport const registerGlobalClasses = (classes: string[]): void => {\n  for (const cls of classes) _globalClasses.add(cls)\n}\n\n/** Reset registry — dipakai test, atau awal compilation run kalau perlu state bersih. */\nexport const resetRouteClassRegistry = (): void => {\n  _fileClassesMap.clear()\n  _globalClasses.clear()\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// INCREMENTAL ENGINE\n// ═══════════════════════════════════════════════════════════════════════════\n\nlet _incrementalEngineInstance: InstanceType<typeof IncrementalEngine> | null = null\n\nexport const getIncrementalEngine = () => {\n  if (!_incrementalEngineInstance) {\n    _incrementalEngineInstance = new IncrementalEngine()\n  }\n  return _incrementalEngineInstance\n}\n\nexport const resetIncrementalEngine = (): void => {\n  _incrementalEngineInstance = null\n}\n\nexport class IncrementalEngine {\n  compile(source: string) {\n    return transformSource(source)\n  }\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// STYLE BUCKET SYSTEM\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const getBucketEngine = () => {\n  const native = getNativeBridge()\n  if (!native?.classifyAndSortClasses) {\n    throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\n  }\n  return {\n    add: (className: string) => className,\n    get: (_bucket: string): string[] => [],\n  }\n}\n\nexport const resetBucketEngine = (): void => { }\n\nexport class BucketEngine {\n  add(className: string) { return className }\n}\n\nexport const classifyNode = (_node: unknown): string => {\n  const native = getNativeBridge()\n  if (!native?.classifyAndSortClasses) {\n    throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\n  }\n  return \"unknown\"\n}\n\nexport const detectConflicts = (_classes: string[]): string[] => {\n  const native = getNativeBridge()\n  if (!native?.analyzeClassUsage) {\n    throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\n  }\n  return []\n}\n\nexport const bucketSort = (classes: string[]): string[] => {\n  const native = getNativeBridge()\n  if (!native?.classifyAndSortClasses) {\n    throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\n  }\n  const sorted = native.classifyAndSortClasses(classes)\n  return sorted.map((c) => (c as { raw?: string }).raw ?? (c as unknown as string))\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// RSC & FILE ANALYSIS CONTINUED\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const analyzeFile = (source: string, filename: string) => {\n  const native = getNativeBridge()\n  if (!native?.analyzeRsc) {\n    throw new Error(\"FATAL: Native binding 'analyzeRsc' is required but not available.\")\n  }\n  const rsc = native.analyzeRsc(source, filename)\n  return {\n    isServer: rsc?.isServer ?? true,\n    needsClientDirective: rsc?.needsClientDirective ?? false,\n    clientReasons: rsc?.clientReasons ?? [],\n    interactiveClasses: [],\n    canStaticResolveVariants: true,\n  }\n}\n\nexport const analyzeVariantUsage = (_source: string, _componentName: string, _variantKeys: string[]) => {\n  return { resolved: {} as Record<string, string>, dynamic: [] as string[] }\n}\n\nexport const injectClientDirective = (source: string): string => {\n  if (!source.includes('\"use client\"') && !source.includes(\"'use client'\")) {\n    return '\"use client\";\\n' + source\n  }\n  return source\n}\n\nexport const injectServerOnlyComment = (source: string): string => {\n  return `/* @server-only */\\n${source}`\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// FULL ANALYSIS\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const analyzeClasses = (filesJson: string, cwd: string, flags: number) => {\n  const native = getNativeBridge()\n  if (!native?.analyzeClasses) {\n    throw new Error(\"FATAL: Native binding 'analyzeClasses' is required but not available.\")\n  }\n  return native.analyzeClasses(filesJson, cwd, flags)\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// STATE CSS PRE-GENERATION\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport interface TwStateConfigEntry {\n  tag: string\n  componentName: string\n  statesJson: string\n  sourceFile: string\n}\n\nexport interface StaticStateCssInput {\n  tag: string\n  componentName: string\n  statesJson: string\n}\n\nexport interface GeneratedStateRule {\n  selector: string\n  declarations: string\n  cssRule: string\n  componentName: string\n  stateName: string\n}\n\nexport const extractTwStateConfigs = (source: string, filename: string): TwStateConfigEntry[] => {\n  const native = getNativeBridge()\n  if (!native?.extractTwStateConfigs) {\n    throw new Error(\"FATAL: Native binding 'extractTwStateConfigs' is required but not available.\")\n  }\n  return native.extractTwStateConfigs(source, filename)\n}\n\nexport const generateStaticStateCss = (\n  entries: TwStateConfigEntry[],\n  resolvedCssOrThemeConfig?: string | Record<string, unknown>\n): GeneratedStateRule[] => {\n  const native = getNativeBridge()\n  if (!native?.generateStaticStateCss) {\n    throw new Error(\"FATAL: Native binding 'generateStaticStateCss' is required but not available.\")\n  }\n  // Normalize: resolvedCssOrThemeConfig bisa string (resolvedCss) atau object (legacy themeConfig)\n  const resolvedCss = typeof resolvedCssOrThemeConfig === \"string\" ? resolvedCssOrThemeConfig : null\n  const inputs = entries.map((e) => ({\n    tag: e.tag,\n    componentName: e.componentName,\n    statesJson: e.statesJson,\n  }))\n  return native.generateStaticStateCss(inputs, resolvedCss) as GeneratedStateRule[]\n}\n\nexport const extractAndGenerateStateCss = (source: string, filename: string): GeneratedStateRule[] => {\n  const native = getNativeBridge()\n  if (!native?.extractAndGenerateStateCss) {\n    // Fallback: extract lalu generate secara terpisah\n    const entries = extractTwStateConfigs(source, filename)\n    return generateStaticStateCss(entries)\n  }\n  return native.extractAndGenerateStateCss(source, filename) as GeneratedStateRule[]\n}\n","export * from \"@tailwind-styled/compiler\"\n"],"mappings":"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","names":["path","fs","path","fileURLToPath","createRequire","_require","path","createRequire","require","existsSync","resolve","getCacheStats","createRequire","require","MAX_CACHE_MEMORY","init_tailwindEngine","init_tailwindEngine","fs","path","fs","path","fs","path","createRequire","_require","init_src","runCssPipeline","batchExtractClasses","init_src"]}