tailwind-styled-v4 5.0.11 → 5.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/{analyzeWorkspace-DDOQdzzI.d.ts → analyzeWorkspace-CopJNGmi.d.ts} +2 -0
  2. package/dist/{analyzeWorkspace-BS5O4rhC.d.mts → analyzeWorkspace-DpVPccjz.d.mts} +2 -0
  3. package/dist/analyzer.d.mts +4 -4
  4. package/dist/analyzer.d.ts +4 -4
  5. package/dist/analyzer.js +34 -69
  6. package/dist/analyzer.js.map +1 -1
  7. package/dist/analyzer.mjs +33 -68
  8. package/dist/analyzer.mjs.map +1 -1
  9. package/dist/animate.js +11 -11
  10. package/dist/animate.js.map +1 -1
  11. package/dist/animate.mjs +11 -11
  12. package/dist/animate.mjs.map +1 -1
  13. package/dist/atomic.js +16 -7
  14. package/dist/atomic.js.map +1 -1
  15. package/dist/atomic.mjs +16 -7
  16. package/dist/atomic.mjs.map +1 -1
  17. package/dist/cli.js +262 -190
  18. package/dist/cli.js.map +1 -1
  19. package/dist/cli.mjs +259 -187
  20. package/dist/cli.mjs.map +1 -1
  21. package/dist/compiler.d.mts +2543 -109
  22. package/dist/compiler.d.ts +2543 -109
  23. package/dist/compiler.js +1962 -435
  24. package/dist/compiler.js.map +1 -1
  25. package/dist/compiler.mjs +1816 -382
  26. package/dist/compiler.mjs.map +1 -1
  27. package/dist/devtools.js +17 -4
  28. package/dist/devtools.js.map +1 -1
  29. package/dist/devtools.mjs +17 -4
  30. package/dist/devtools.mjs.map +1 -1
  31. package/dist/engine.d.mts +11 -470
  32. package/dist/engine.d.ts +11 -470
  33. package/dist/engine.js +1442 -417
  34. package/dist/engine.js.map +1 -1
  35. package/dist/engine.mjs +1442 -417
  36. package/dist/engine.mjs.map +1 -1
  37. package/dist/index-BDQw13kn.d.ts +464 -0
  38. package/dist/index-DJv28Uzq.d.mts +464 -0
  39. package/dist/index.browser.mjs +143 -255
  40. package/dist/index.browser.mjs.map +1 -1
  41. package/dist/index.d.mts +23 -39
  42. package/dist/index.d.ts +23 -39
  43. package/dist/index.js +6000 -1463
  44. package/dist/index.js.map +1 -1
  45. package/dist/index.mjs +5995 -1458
  46. package/dist/index.mjs.map +1 -1
  47. package/dist/next.d.mts +44 -1
  48. package/dist/next.d.ts +44 -1
  49. package/dist/next.js +3197 -1128
  50. package/dist/next.js.map +1 -1
  51. package/dist/next.mjs +3196 -1129
  52. package/dist/next.mjs.map +1 -1
  53. package/dist/rspack.d.mts +9 -0
  54. package/dist/rspack.d.ts +9 -0
  55. package/dist/rspack.js +99 -61
  56. package/dist/rspack.js.map +1 -1
  57. package/dist/rspack.mjs +99 -61
  58. package/dist/rspack.mjs.map +1 -1
  59. package/dist/runtime-css.d.mts +8 -0
  60. package/dist/runtime-css.d.ts +8 -0
  61. package/dist/runtime-css.js +23 -7
  62. package/dist/runtime-css.js.map +1 -1
  63. package/dist/runtime-css.mjs +23 -7
  64. package/dist/runtime-css.mjs.map +1 -1
  65. package/dist/scanner.js +16 -37
  66. package/dist/scanner.js.map +1 -1
  67. package/dist/scanner.mjs +15 -36
  68. package/dist/scanner.mjs.map +1 -1
  69. package/dist/shared.d.mts +107 -1
  70. package/dist/shared.d.ts +107 -1
  71. package/dist/shared.js +1627 -376
  72. package/dist/shared.js.map +1 -1
  73. package/dist/shared.mjs +1620 -354
  74. package/dist/shared.mjs.map +1 -1
  75. package/dist/svelte.js +39 -35
  76. package/dist/svelte.js.map +1 -1
  77. package/dist/svelte.mjs +38 -34
  78. package/dist/svelte.mjs.map +1 -1
  79. package/dist/theme.js +85 -76
  80. package/dist/theme.js.map +1 -1
  81. package/dist/theme.mjs +83 -74
  82. package/dist/theme.mjs.map +1 -1
  83. package/dist/turbopackLoader.js +943 -76
  84. package/dist/turbopackLoader.js.map +1 -1
  85. package/dist/turbopackLoader.mjs +943 -76
  86. package/dist/turbopackLoader.mjs.map +1 -1
  87. package/dist/tw.js +262 -190
  88. package/dist/tw.js.map +1 -1
  89. package/dist/tw.mjs +259 -187
  90. package/dist/tw.mjs.map +1 -1
  91. package/dist/vite.js +1336 -296
  92. package/dist/vite.js.map +1 -1
  93. package/dist/vite.mjs +1336 -296
  94. package/dist/vite.mjs.map +1 -1
  95. package/dist/vue.js +39 -35
  96. package/dist/vue.js.map +1 -1
  97. package/dist/vue.mjs +38 -34
  98. package/dist/vue.mjs.map +1 -1
  99. package/dist/webpackLoader.js +140 -34
  100. package/dist/webpackLoader.js.map +1 -1
  101. package/dist/webpackLoader.mjs +140 -34
  102. package/dist/webpackLoader.mjs.map +1 -1
  103. package/native/index.node +0 -0
  104. package/native/tailwind-styled-native.node +0 -0
  105. package/native/tailwind-styled-native.win32-x64-msvc.node +0 -0
  106. package/package.json +9 -4
  107. package/CHANGELOG.md +0 -285
@@ -1 +1 @@
1
- {"version":3,"sources":["../packages/domain/shared/src/trace.ts","../packages/domain/shared/src/error-codes.ts","../packages/domain/shared/src/compatibility.ts","../packages/domain/shared/src/native-schemas.ts","../packages/domain/shared/src/esmHelpers.ts","../packages/domain/shared/src/telemetry.ts","../packages/domain/shared/src/configSchemas.ts","../packages/domain/shared/src/workerResolver.ts","../packages/domain/shared/src/codegen.ts","../packages/domain/shared/src/native-resolution.ts","../packages/domain/shared/src/observability.ts","../packages/domain/shared/src/index.ts"],"names":["path","z","isBrowser","exports","fs","_require","createRequire"],"mappings":"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","file":"shared.mjs","sourcesContent":["/**\r\n * Shared trace utilities for CLI, devtools, and dashboard\r\n * \r\n * Provides reusable trace snapshot handling, formatting, and analysis\r\n * across the tailwind-styled-v4 ecosystem without introducing coupling.\r\n */\r\n\r\nexport interface TraceSnapshot {\r\n generatedAt: string\r\n buildMs: number | null\r\n scanMs: number | null\r\n analyzeMs: number | null\r\n compileMs: number | null\r\n memoryMb: { rss: number; heapUsed: number; heapTotal: number } | null\r\n classCount: number | null\r\n fileCount: number | null\r\n cssBytes: number | null\r\n mode: string | null\r\n eventsReceived?: number\r\n eventsProcessed?: number\r\n batchesProcessed?: number\r\n incrementalUpdates?: number\r\n fullRescans?: number\r\n}\r\n\r\nexport interface TraceSummary {\r\n workspace: {\r\n totalPackages: number\r\n totalFiles: number\r\n totalClasses: number\r\n lastScanDurationMs: number\r\n lastBuildDurationMs: number\r\n }\r\n cache: {\r\n hitRate: number\r\n totalEntries: number\r\n memoryUsageMb: number\r\n }\r\n pipeline: {\r\n scanDurationMs: number\r\n analyzeDurationMs: number\r\n compileDurationMs: number\r\n totalDurationMs: number\r\n }\r\n health: {\r\n status: \"healthy\" | \"degraded\" | \"unhealthy\"\r\n issues: Array<{ severity: string; message: string }>\r\n }\r\n}\r\n\r\n/**\r\n * Get health status color for UI rendering\r\n */\r\nexport function getHealthColor(status?: string): string {\r\n switch (status) {\r\n case \"healthy\":\r\n return \"#34d399\"\r\n case \"degraded\":\r\n return \"#fbbf24\"\r\n case \"unhealthy\":\r\n return \"#f87171\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Get mode color for UI rendering\r\n */\r\nexport function getModeColor(mode?: string | null): string {\r\n switch (mode) {\r\n case \"build\":\r\n return \"#fbbf24\"\r\n case \"watch\":\r\n return \"#34d399\"\r\n case \"jit\":\r\n return \"#60a5fa\"\r\n case \"error\":\r\n return \"#f87171\"\r\n case \"idle\":\r\n return \"#71717a\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Format memory in human-readable format\r\n */\r\nexport function formatMemory(bytes: number): string {\r\n if (bytes < 1024) return `${Math.round(bytes)}B`\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`\r\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`\r\n}\r\n\r\n/**\r\n * Format duration in human-readable format\r\n */\r\nexport function formatDuration(ms: number | null): string {\r\n if (ms === null) return \"—\"\r\n if (ms < 1000) return `${ms}ms`\r\n return `${(ms / 1000).toFixed(1)}s`\r\n}\r\n\r\n/**\r\n * Calculate health status from metrics\r\n */\r\nexport function calculateHealth(\r\n metrics: TraceSnapshot,\r\n summary?: TraceSummary\r\n): \"healthy\" | \"degraded\" | \"unhealthy\" {\r\n if (summary?.health?.status) return summary.health.status\r\n\r\n // Fallback to simple heuristics\r\n if (metrics.mode === \"error\") return \"unhealthy\"\r\n if ((metrics.buildMs ?? 0) > 5000) return \"degraded\"\r\n if (metrics.memoryMb && metrics.memoryMb.heapUsed > 500) return \"degraded\"\r\n return \"healthy\"\r\n}\r\n\r\n/**\r\n * Get color for build time indicator\r\n */\r\nexport function getBuildTimeColor(ms: number | null): string {\r\n if (ms === null) return \"#52525b\"\r\n if (ms > 1000) return \"#f87171\" // red - very slow\r\n if (ms > 500) return \"#fbbf24\" // amber - acceptable\r\n return \"#34d399\" // green - fast\r\n}\r\n\r\n/**\r\n * Get color for memory usage indicator\r\n */\r\nexport function getMemoryColor(mb: number): string {\r\n if (mb > 500) return \"#f87171\" // red - high\r\n if (mb > 250) return \"#fbbf24\" // amber - moderate\r\n return \"#34d399\" // green - low\r\n}\r\n\r\n/**\r\n * Create trace snapshot from dashboard data\r\n */\r\nexport function createTraceSnapshot(data: Record<string, unknown>): TraceSnapshot {\r\n return {\r\n generatedAt: (data.generatedAt as string) || new Date().toISOString(),\r\n buildMs: (data.buildMs as number) ?? null,\r\n scanMs: (data.scanMs as number) ?? null,\r\n analyzeMs: (data.analyzeMs as number) ?? null,\r\n compileMs: (data.compileMs as number) ?? null,\r\n memoryMb: (data.memoryMb as { rss: number; heapUsed: number; heapTotal: number } | null) ?? null,\r\n classCount: (data.classCount as number) ?? null,\r\n fileCount: (data.fileCount as number) ?? null,\r\n cssBytes: (data.cssBytes as number) ?? null,\r\n mode: (data.mode as string) ?? null,\r\n eventsReceived: (data.eventsReceived as number | undefined) ?? undefined,\r\n eventsProcessed: (data.eventsProcessed as number | undefined) ?? undefined,\r\n batchesProcessed: (data.batchesProcessed as number | undefined) ?? undefined,\r\n incrementalUpdates: (data.incrementalUpdates as number | undefined) ?? undefined,\r\n fullRescans: (data.fullRescans as number | undefined) ?? undefined,\r\n }\r\n}\r\n\r\n/**\r\n * Calculate pipeline time distribution\r\n */\r\nexport function getPipelinePercentages(metrics: TraceSnapshot): {\r\n scanPct: number\r\n analyzePct: number\r\n compilePct: number\r\n} {\r\n const scan = metrics.scanMs ?? 0\r\n const analyze = metrics.analyzeMs ?? 0\r\n const compile = metrics.compileMs ?? 0\r\n const total = scan + analyze + compile\r\n\r\n if (total === 0) {\r\n return { scanPct: 0, analyzePct: 0, compilePct: 0 }\r\n }\r\n\r\n return {\r\n scanPct: (scan / total) * 100,\r\n analyzePct: (analyze / total) * 100,\r\n compilePct: (compile / total) * 100,\r\n }\r\n}\r\n","/**\r\n * Error code registry — single source of truth for all error codes.\r\n *\r\n * Format: E[0-9]xx for errors, W[0-9]xx for warnings.\r\n * Use with TwError for consistent error handling.\r\n */\r\n\r\nexport const ERROR_CODES = {\r\n // E0xx — Native binding\r\n NATIVE_NOT_FOUND: \"E001\",\r\n NATIVE_LOAD_FAILED: \"E002\",\r\n NATIVE_VERSION_MISMATCH: \"E003\",\r\n SCANNER_NATIVE_NOT_FOUND: \"E004\",\r\n SCANNER_HASH_FAILED: \"E005\",\r\n NATIVE_TRANSFORM_UNAVAILABLE: \"E006\",\r\n\r\n // E2xx — Compilation\r\n MISSING_REACT_IMPORT: \"E201\",\r\n UNSUPPORTED_PATTERN: \"E202\",\r\n TEMPLATE_PARSE_ERROR: \"E203\",\r\n COMPILE_TIMEOUT: \"E204\",\r\n\r\n // E3xx — Compatibility\r\n TAILWIND_VERSION_UNSUPPORTED: \"E301\",\r\n NODE_VERSION_UNSUPPORTED: \"E302\",\r\n\r\n // E4xx — Cache\r\n CACHE_READ_FAILED: \"E401\",\r\n CACHE_WRITE_FAILED: \"E402\",\r\n CACHE_CORRUPTED: \"E403\",\r\n\r\n // E5xx — RSC\r\n RSC_BOUNDARY_CONFLICT: \"E501\",\r\n\r\n // W1xx — Warnings\r\n DYNAMIC_CONTENT: \"W101\",\r\n INVALID_VARIANT_VALUE: \"W201\",\r\n DEPRECATED_MODE: \"W301\",\r\n} as const\r\n\r\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]\r\n\r\nconst ERROR_SUGGESTIONS: Record<string, string> = {\r\n E001: \"Run: npm install @tailwind-styled/native-{platform} or build from source\",\r\n E002: \"Try: npm rebuild or reinstall the package\",\r\n E003: \"Run: npm install tailwind-styled-v4@latest to sync versions\",\r\n E004: \"Run: npm install @tailwind-styled/scanner\",\r\n E006: \"Run: npm install @tailwind-styled/compiler\",\r\n E301: \"Upgrade: npm install tailwindcss@^4\",\r\n}\r\n\r\nexport function getSuggestion(code: string): string | undefined {\r\n return ERROR_SUGGESTIONS[code]\r\n}\r\n\r\nexport function formatErrorCode(code: string): string {\r\n const prefix = code.startsWith(\"E\") ? \"Error\" : code.startsWith(\"W\") ? \"Warning\" : \"Code\"\r\n return `[${prefix} ${code}]`\r\n}\r\n","/**\r\n * Tailwind CSS version detection and compatibility checks.\r\n *\r\n * tailwind-styled-v4 requires Tailwind CSS v4.x.\r\n * This module detects the installed version and provides\r\n * clear error messages for unsupported versions.\r\n */\r\n\r\nexport interface TailwindInfo {\r\n version: string\r\n major: number\r\n supported: boolean\r\n path: string | null\r\n}\r\n\r\nexport function detectTailwind(): TailwindInfo {\r\n try {\r\n const pkgPath = require.resolve(\"tailwindcss/package.json\")\r\n const { version } = require(pkgPath)\r\n const major = Number.parseInt(version.split(\".\")[0], 10)\r\n return { version, major, supported: major >= 4, path: pkgPath }\r\n } catch {\r\n return { version: \"not-installed\", major: 0, supported: false, path: null }\r\n }\r\n}\r\n\r\nexport function assertTailwindV4(): void {\r\n const info = detectTailwind()\r\n if (!info.supported) {\r\n const message = info.major === 0\r\n ? \"tailwindcss is not installed. Run: npm install tailwindcss@^4\"\r\n : `tailwind-styled-v4 requires Tailwind CSS v4.x. Found: v${info.version}. Upgrade: npm install tailwindcss@^4`\r\n\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`[tailwind-styled] ${message}`)\r\n }\r\n }\r\n}\r\n\r\nexport function getTailwindVersion(): string {\r\n return detectTailwind().version\r\n}\r\n\r\nexport function isTailwindV4(): boolean {\r\n return detectTailwind().supported\r\n}\r\n","/**\r\n * Zod schemas untuk validasi native binding responses.\r\n *\r\n * Dipakai untuk memvalidasi data yang datang dari Rust native bindings\r\n * sebelum masuk ke domain logic TypeScript.\r\n *\r\n * Pattern:\r\n * const raw = native.scanWorkspace(root)\r\n * const validated = NativeScanResultSchema.parse(raw)\r\n * // Setelah ini, gunakan `validated` (trusted typed object)\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan ─────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeScanFileSchema = z.object({\r\n file: z.string().min(1, \"file path cannot be empty\"),\r\n classes: z.array(z.string()),\r\n hash: z.string().optional(),\r\n})\r\n\r\nexport type NativeScanFile = z.infer<typeof NativeScanFileSchema>\r\n\r\nexport const NativeScanResultSchema = z.object({\r\n files: z.array(NativeScanFileSchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueClasses: z.array(z.string()),\r\n})\r\n\r\nexport type NativeScanResult = z.infer<typeof NativeScanResultSchema>\r\n\r\n// ── Analyzer ──────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: z.number().int().nonnegative(),\r\n files: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeClassUsage = z.infer<typeof NativeClassUsageSchema>\r\n\r\nexport const NativeAnalyzerReportSchema = z.object({\r\n root: z.string(),\r\n topClasses: z.array(NativeClassUsageSchema).optional(),\r\n safelist: z.array(z.string()).optional(),\r\n css: z.string().optional(),\r\n conflicts: z.array(z.unknown()).optional(),\r\n unusedClasses: z.array(z.string()).optional(),\r\n durationMs: z.number().nonnegative().optional(),\r\n})\r\n\r\nexport type NativeAnalyzerReport = z.infer<typeof NativeAnalyzerReportSchema>\r\n\r\n// ── Transform ─────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeTransformResultSchema = z.object({\r\n code: z.string(),\r\n classes: z.array(z.string()),\r\n changed: z.boolean(),\r\n rsc: z.object({\r\n isServer: z.boolean(),\r\n needsClientDirective: z.boolean(),\r\n clientReasons: z.array(z.string()),\r\n }).optional(),\r\n})\r\n\r\nexport type NativeTransformResult = z.infer<typeof NativeTransformResultSchema>\r\n\r\n// ── CSS Compile ───────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unresolvedClasses: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeCssCompileResult = z.infer<typeof NativeCssCompileResultSchema>\r\n\r\n// ── Watch ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeWatchEventSchema = z.object({\r\n type: z.enum([\"change\", \"unlink\", \"create\"]),\r\n path: z.string(),\r\n})\r\n\r\nexport type NativeWatchEvent = z.infer<typeof NativeWatchEventSchema>\r\n\r\nexport const NativeWatchResultSchema = z.object({\r\n status: z.enum([\"ok\", \"error\"]),\r\n handleId: z.string().optional(),\r\n error: z.string().optional(),\r\n})\r\n\r\nexport type NativeWatchResult = z.infer<typeof NativeWatchResultSchema>\r\n\r\n// ── Cache ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCacheEntrySchema = z.object({\r\n file: z.string(),\r\n hash: z.string(),\r\n classes: z.array(z.string()),\r\n timestamp: z.number(),\r\n size: z.number().optional(),\r\n})\r\n\r\nexport type NativeCacheEntry = z.infer<typeof NativeCacheEntrySchema>\r\n\r\nexport const NativeCacheReadResultSchema = z.object({\r\n entries: z.array(NativeCacheEntrySchema),\r\n version: z.string().optional(),\r\n})\r\n\r\nexport type NativeCacheReadResult = z.infer<typeof NativeCacheReadResultSchema>\r\n\r\n// ── Helpers ───────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Validasi native binding response dengan fallback ke nilai default.\r\n * Gunakan ini di hot path agar tidak crash saat native returns unexpected shape.\r\n *\r\n * @example\r\n * const raw = native.scanWorkspace(root)\r\n * const result = safeParseNative(NativeScanResultSchema, raw, {\r\n * files: [], totalFiles: 0, uniqueClasses: []\r\n * })\r\n */\r\nexport function safeParseNative<T>(\r\n schema: z.ZodType<T>,\r\n data: unknown,\r\n fallback: T\r\n): T {\r\n const result = schema.safeParse(data)\r\n return result.success ? result.data : fallback\r\n}\r\n\r\n/**\r\n * Parse native response — throw TwError jika gagal.\r\n * Gunakan ini di boundary entry points.\r\n */\r\nexport function parseNative<T>(schema: z.ZodType<T>, data: unknown, context: string): T {\r\n const result = schema.safeParse(data)\r\n if (!result.success) {\r\n const first = result.error.issues[0]\r\n const path = first?.path?.join(\".\") ?? \"(root)\"\r\n throw new Error(\r\n `[${context}] Native binding returned unexpected data: ${path}: ${first?.message ?? \"validation failed\"}`\r\n )\r\n }\r\n return result.data\r\n}\r\n","/**\r\n * ESM-safe runtime helpers untuk monorepo.\r\n *\r\n * Menggantikan pola fragile seperti:\r\n * - `createRequire(import.meta.url)` → gunakan `createEsmRequire()`\r\n * - `__dirname` → gunakan `getDirname(import.meta.url)`\r\n * - `__filename` → gunakan `getFilename(import.meta.url)`\r\n *\r\n * Semua helper ini bekerja di ESM dan CJS.\r\n *\r\n * @module @tailwind-styled/shared/esmHelpers\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// Safe check for require availability - works in both CJS and ESM\r\nlet nodeModuleRef: any = null\r\nfunction getNodeModuleRef() {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n // Test if require actually works\r\n const test = typeof require === 'function' ? require('node:module') : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodePath: any = null\r\nlet _nodeUrl: any = null\r\nlet _nodeFs: any = null\r\nlet _nodeCrypto: any = null\r\nlet _nodeOs: any = null\r\n\r\nfunction getNodePath() {\r\n if (isBrowser) throw new Error(\"node:path not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeUrl() {\r\n if (isBrowser) throw new Error(\"node:url not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeUrl) _nodeUrl = nodeRequire.createRequire(import.meta.url)(\"node:url\")\r\n return _nodeUrl!\r\n}\r\nfunction getNodeFs() {\r\n if (isBrowser) throw new Error(\"node:fs not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\")\r\n return _nodeFs!\r\n}\r\nfunction getNodeCrypto() {\r\n if (isBrowser) throw new Error(\"node:crypto not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeCrypto) _nodeCrypto = nodeRequire.createRequire(import.meta.url)(\"node:crypto\")\r\n return _nodeCrypto!\r\n}\r\nfunction getNodeOs() {\r\n if (isBrowser) throw new Error(\"node:os not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeOs) _nodeOs = nodeRequire.createRequire(import.meta.url)(\"node:os\")\r\n return _nodeOs!\r\n}\r\n\r\n/**\r\n * Buat `require()` function yang relative terhadap sebuah ESM module.\r\n *\r\n * @example\r\n * // Ganti: createRequire(import.meta.url)(\"some-pkg\")\r\n * const req = createEsmRequire(import.meta.url)\r\n * const mod = req(\"some-pkg\")\r\n */\r\nexport function createEsmRequire(importMetaUrl: string): NodeRequire {\r\n if (isBrowser) throw new Error(\"require not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n return nodeRequire.createRequire(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Dapat `__dirname` dari `import.meta.url`.\r\n *\r\n * @example\r\n * // Ganti: const __dirname = ...\r\n * const dir = getDirname(import.meta.url)\r\n */\r\nexport function getDirname(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n const nodePath = getNodePath()\r\n const nodeUrl = getNodeUrl()\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n}\r\n\r\n/**\r\n * Dapat `__filename` dari `import.meta.url`.\r\n */\r\nexport function getFilename(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n return getNodeUrl().fileURLToPath(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Resolve path dari root monorepo (bukan CWD).\r\n * Berguna untuk scripts dan tools yang dipanggil dari lokasi berbeda.\r\n *\r\n * @example\r\n * const root = resolveFromRoot(\"packages/domain/shared/src\")\r\n */\r\nexport function resolveFromRoot(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\")\r\n\r\n const nodePath = getNodePath()\r\n const nodeFs = getNodeFs()\r\n \r\n let dir = getDirname(import.meta.url)\r\n for (let i = 0; i < 10; i++) {\r\n const pkgPath = nodePath.join(dir, \"package.json\")\r\n try {\r\n const pkg = JSON.parse(nodeFs.readFileSync(pkgPath, \"utf-8\"))\r\n if (pkg.workspaces) {\r\n return nodePath.resolve(dir, ...segments)\r\n }\r\n } catch { /* intentionally silent */ }\r\n dir = nodePath.dirname(dir)\r\n }\r\n return nodePath.resolve(process.cwd(), ...segments)\r\n}\r\n\r\n/**\r\n * Require sebuah module dengan fallback ke null jika tidak tersedia.\r\n * Berguna untuk optional dependencies.\r\n *\r\n * @example\r\n * const oxc = tryRequire(\"oxc-parser\", import.meta.url)\r\n * if (!oxc) console.warn(\"oxc-parser not installed\")\r\n */\r\nexport function tryRequire<T = unknown>(\r\n moduleName: string,\r\n importMetaUrl: string\r\n): T | null {\r\n if (isBrowser) return null\r\n try {\r\n return createEsmRequire(importMetaUrl)(moduleName) as T\r\n } catch { /* intentionally silent — optional dep */ }\r\n return null\r\n}\r\n\r\n/**\r\n * Resolve .node binary path yang cross-platform dan ESM-safe.\r\n * Menggantikan pola `path.resolve(__dirname, \"../native.node\")`.\r\n */\r\nexport function resolveNativeNodePath(\r\n importMetaUrl: string,\r\n ...relativeSegments: string[]\r\n): string {\r\n if (isBrowser) return relativeSegments.join(\"/\")\r\n return getNodePath().resolve(getDirname(importMetaUrl), ...relativeSegments)\r\n}\r\n","/**\r\n * Build performance telemetry untuk tailwind-styled-v4.\r\n * QA #14: Visibility ke build performance — scan speed, cache hit rate, trends.\r\n *\r\n * Design: zero-dependency, ring-buffer based, opt-in via TWS_TELEMETRY=1.\r\n */\r\n\r\nexport interface BuildPhases {\r\n scan: number\r\n compile: number\r\n engine: number\r\n output: number\r\n}\r\n\r\nexport interface BuildTelemetry {\r\n timestamp: number\r\n durationMs: number\r\n filesScanned: number\r\n filesCached: number\r\n classesExtracted: number\r\n nativeVersion?: string\r\n phases: BuildPhases\r\n cacheHitRate: number\r\n mode?: string\r\n}\r\n\r\nexport interface TelemetrySummary {\r\n totalBuilds: number\r\n avgDurationMs: number\r\n p95DurationMs: number\r\n avgCacheHitRate: number\r\n avgFilesScanned: number\r\n avgClassesExtracted: number\r\n phaseAvgs: BuildPhases\r\n slowestBuildMs: number\r\n fastestBuildMs: number\r\n}\r\n\r\nconst RING_BUFFER_SIZE = 100\r\n\r\nexport class TelemetryCollector {\r\n private data: BuildTelemetry[] = []\r\n private enabled: boolean\r\n\r\n constructor(enabled?: boolean) {\r\n this.enabled =\r\n enabled ??\r\n (process.env.TWS_TELEMETRY === \"1\" || process.env.TWS_TELEMETRY === \"true\")\r\n }\r\n\r\n record(build: BuildTelemetry): void {\r\n if (!this.enabled) return\r\n if (this.data.length >= RING_BUFFER_SIZE) {\r\n this.data.shift() // ring buffer — hapus entri tertua\r\n }\r\n this.data.push(build)\r\n }\r\n\r\n snapshot(): BuildTelemetry[] {\r\n return [...this.data]\r\n }\r\n\r\n summary(): TelemetrySummary | null {\r\n if (this.data.length === 0) return null\r\n\r\n const durations = this.data.map(d => d.durationMs).sort((a, b) => a - b)\r\n const p95Idx = Math.floor(durations.length * 0.95)\r\n\r\n const avg = (arr: number[]) => arr.reduce((a, b) => a + b, 0) / arr.length\r\n\r\n return {\r\n totalBuilds: this.data.length,\r\n avgDurationMs: avg(durations),\r\n p95DurationMs: durations[p95Idx] ?? durations[durations.length - 1] ?? 0,\r\n avgCacheHitRate: avg(this.data.map(d => d.cacheHitRate)),\r\n avgFilesScanned: avg(this.data.map(d => d.filesScanned)),\r\n avgClassesExtracted: avg(this.data.map(d => d.classesExtracted)),\r\n phaseAvgs: {\r\n scan: avg(this.data.map(d => d.phases.scan)),\r\n compile: avg(this.data.map(d => d.phases.compile)),\r\n engine: avg(this.data.map(d => d.phases.engine)),\r\n output: avg(this.data.map(d => d.phases.output)),\r\n },\r\n slowestBuildMs: durations[durations.length - 1] ?? 0,\r\n fastestBuildMs: durations[0] ?? 0,\r\n }\r\n }\r\n\r\n reset(): void {\r\n this.data = []\r\n }\r\n\r\n /** Format ringkas untuk CLI output */\r\n formatCli(): string {\r\n const s = this.summary()\r\n if (!s) return \"[telemetry] no data\"\r\n return [\r\n `[telemetry] ${s.totalBuilds} builds`,\r\n `avg ${s.avgDurationMs.toFixed(0)}ms`,\r\n `p95 ${s.p95DurationMs.toFixed(0)}ms`,\r\n `cache hit ${(s.avgCacheHitRate * 100).toFixed(0)}%`,\r\n `${s.avgFilesScanned.toFixed(0)} files`,\r\n ].join(\" · \")\r\n }\r\n\r\n /** Export sebagai JSON untuk dashboard/prometheus */\r\n toJSON(): object {\r\n return {\r\n summary: this.summary(),\r\n history: this.data.slice(-20), // last 20 builds\r\n }\r\n }\r\n}\r\n\r\n/** Global singleton telemetry collector */\r\nlet _globalCollector: TelemetryCollector | null = null\r\n\r\nexport function getGlobalTelemetry(): TelemetryCollector {\r\n if (!_globalCollector) {\r\n _globalCollector = new TelemetryCollector()\r\n }\r\n return _globalCollector\r\n}\r\n\r\nexport function resetGlobalTelemetry(): void {\r\n _globalCollector = null\r\n}\r\n\r\n/** Helper untuk record build dengan timing otomatis */\r\nexport function createBuildTimer() {\r\n const start = Date.now()\r\n const phases: Partial<BuildPhases> = {}\r\n let phaseStart = start\r\n\r\n return {\r\n phase(name: keyof BuildPhases): void {\r\n const now = Date.now()\r\n phases[name] = now - phaseStart\r\n phaseStart = now\r\n },\r\n finish(opts: Omit<BuildTelemetry, \"timestamp\" | \"durationMs\" | \"phases\" | \"cacheHitRate\"> & {\r\n cacheHitRate?: number\r\n }): BuildTelemetry {\r\n const now = Date.now()\r\n const record: BuildTelemetry = {\r\n timestamp: start,\r\n durationMs: now - start,\r\n phases: {\r\n scan: phases.scan ?? 0,\r\n compile: phases.compile ?? 0,\r\n engine: phases.engine ?? 0,\r\n output: phases.output ?? now - start,\r\n },\r\n cacheHitRate: opts.cacheHitRate ?? 0,\r\n ...opts,\r\n }\r\n getGlobalTelemetry().record(record)\r\n return record\r\n },\r\n }\r\n}\r\n","/**\r\n * Zod schemas untuk JSON, cache, manifest, dan config reads.\r\n * PLAN.md: \"JSON, cache, manifest, and config reads should be parsed into typed schema-backed values\"\r\n *\r\n * Pattern: validate at the I/O boundary, pass typed values inward.\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan Cache ────────────────────────────────────────────────────────────────\r\n\r\n/** Schema untuk .tailwind-styled/scan-cache.json */\r\nexport const ScanCacheClassEntrySchema = z.object({\r\n name: z.string().min(1),\r\n usedIn: z.array(z.string()),\r\n risk: z.enum([\"low\", \"medium\", \"high\"]).default(\"low\"),\r\n bundleContribution: z.number().nonnegative().default(0),\r\n variants: z.array(z.string()).default([]),\r\n})\r\nexport type ScanCacheClassEntry = z.infer<typeof ScanCacheClassEntrySchema>\r\n\r\nexport const ScanCacheSchema = z.object({\r\n version: z.string().default(\"1\"),\r\n generatedAt: z.string(),\r\n root: z.string(),\r\n classNames: z.array(ScanCacheClassEntrySchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueCount: z.number().int().nonnegative(),\r\n})\r\nexport type ScanCache = z.infer<typeof ScanCacheSchema>\r\n\r\n// ── Tailwind Config ───────────────────────────────────────────────────────────\r\n\r\nexport const TailwindContentItemSchema = z.union([\r\n z.string(),\r\n z.object({\r\n raw: z.string(),\r\n extension: z.string().optional(),\r\n }),\r\n z.object({\r\n files: z.array(z.string()),\r\n transform: z.record(z.string(), z.unknown()).optional(),\r\n }),\r\n])\r\n\r\nexport const TailwindConfigSchema = z.object({\r\n content: z.array(TailwindContentItemSchema).optional(),\r\n theme: z.record(z.string(), z.unknown()).optional(),\r\n plugins: z.array(z.unknown()).optional(),\r\n darkMode: z.union([z.literal(\"class\"), z.literal(\"media\"), z.literal(false)]).optional(),\r\n prefix: z.string().optional(),\r\n safelist: z.array(z.union([z.string(), z.object({ pattern: z.instanceof(RegExp) })])).optional(),\r\n blocklist: z.array(z.string()).optional(),\r\n}).passthrough() // Allow additional Tailwind v4 config keys\r\nexport type TailwindConfig = z.infer<typeof TailwindConfigSchema>\r\n\r\n// ── Plugin Registry Entry ─────────────────────────────────────────────────────\r\n\r\nexport const RegistryPluginEntrySchema = z.object({\r\n name: z.string().min(1),\r\n description: z.string(),\r\n version: z.string(),\r\n tags: z.array(z.string()).default([]),\r\n official: z.boolean().default(false),\r\n docs: z.string().url().optional(),\r\n install: z.string().optional(),\r\n integrity: z.string().optional(),\r\n})\r\nexport type RegistryPluginEntry = z.infer<typeof RegistryPluginEntrySchema>\r\n\r\nexport const RegistryFileSchema = z.object({\r\n version: z.string(),\r\n official: z.array(RegistryPluginEntrySchema).default([]),\r\n community: z.array(RegistryPluginEntrySchema).default([]),\r\n})\r\nexport type RegistryFile = z.infer<typeof RegistryFileSchema>\r\n\r\n// ── Package.json (minimal) ────────────────────────────────────────────────────\r\n\r\nexport const PackageJsonSchema = z.object({\r\n name: z.string(),\r\n version: z.string(),\r\n scripts: z.record(z.string(), z.string()).optional(),\r\n dependencies: z.record(z.string(), z.string()).optional(),\r\n devDependencies: z.record(z.string(), z.string()).optional(),\r\n peerDependencies: z.record(z.string(), z.string()).optional(),\r\n main: z.string().optional(),\r\n module: z.string().optional(),\r\n exports: z.unknown().optional(),\r\n type: z.enum([\"module\", \"commonjs\"]).optional(),\r\n}).passthrough()\r\nexport type PackageJson = z.infer<typeof PackageJsonSchema>\r\n\r\n// ── Helpers ────────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Parse JSON string dengan schema validation.\r\n * Melempar error yang human-readable jika gagal.\r\n *\r\n * @example\r\n * const cache = parseJsonWithSchema(\r\n * fs.readFileSync(\".tailwind-styled/scan-cache.json\", \"utf-8\"),\r\n * ScanCacheSchema,\r\n * \"scan-cache.json\"\r\n * )\r\n */\r\nexport function parseJsonWithSchema<T>(\r\n jsonString: string,\r\n schema: z.ZodType<T>,\r\n sourceName: string\r\n): T {\r\n let parsed: unknown\r\n try {\r\n parsed = JSON.parse(jsonString)\r\n } catch (err) {\r\n throw new Error(\r\n `[${sourceName}] Invalid JSON: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n const result = schema.safeParse(parsed)\r\n if (!result.success) {\r\n const issues = result.error.issues\r\n .map((e) => ` ${e.path.join(\".\")}: ${e.message}`)\r\n .join(\"\\n\")\r\n throw new Error(`[${sourceName}] Schema validation failed:\\n${issues}`)\r\n }\r\n\r\n return result.data\r\n}\r\n\r\n/**\r\n * Parse JSON file dengan schema validation.\r\n *\r\n * @example\r\n * const pkg = parseJsonFileWithSchema(\"package.json\", PackageJsonSchema)\r\n */\r\nexport function parseJsonFileWithSchema<T>(\r\n filePath: string,\r\n schema: z.ZodType<T>\r\n): T {\r\n const { readFileSync } = require(\"node:fs\") as typeof import(\"node:fs\")\r\n const { basename } = require(\"node:path\") as typeof import(\"node:path\")\r\n\r\n let content: string\r\n try {\r\n content = readFileSync(filePath, \"utf-8\")\r\n } catch (err) {\r\n throw new Error(\r\n `[${basename(filePath)}] Could not read file: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n return parseJsonWithSchema(content, schema, basename(filePath))\r\n}\r\n","/**\r\n * Worker/bootstrap path resolution untuk artifact release safety.\r\n * Dari monorepo checklist: \"Perkuat worker/bootstrap path agar artifact release aman\"\r\n *\r\n * Masalah: path ke worker/loader script bisa berbeda antara:\r\n * - Development (src/*.ts)\r\n * - Built dist (dist/*.js / dist/*.cjs)\r\n * - Packed npm artifact (dist/ saja, tanpa src/)\r\n *\r\n * Solusi: resolve path secara hierarchical dengan fallback yang eksplisit.\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\nconst NODE_URL = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:url\" : null\r\nconst NODE_FS = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:fs\" : null\r\nconst NODE_PATH = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:path\" : null\r\n\r\nfunction getDirnameFromUrl(importMetaUrl: string): string {\r\n if (!importMetaUrl) return \"\"\r\n if (isBrowser) return \"\"\r\n\r\n try {\r\n const nodeUrl = require(NODE_URL!)\r\n const nodePath = require(NODE_PATH!)\r\n // fileURLToPath returns the file path — we need the directory\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n } catch {\r\n if (importMetaUrl.startsWith(\"file://\")) {\r\n const filePath = importMetaUrl.slice(7)\r\n // strip the filename to get the directory\r\n const lastSlash = filePath.lastIndexOf(\"/\")\r\n return lastSlash >= 0 ? filePath.slice(0, lastSlash) : filePath\r\n }\r\n return \"\"\r\n }\r\n}\r\n\r\nfunction resolvePath(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n try {\r\n const nodePath = require(NODE_PATH!)\r\n return nodePath.resolve(...segments)\r\n } catch {\r\n return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n }\r\n}\r\n\r\nfunction existsSync(path: string): boolean {\r\n if (isBrowser) return false\r\n try {\r\n const nodeFs = require(NODE_FS!)\r\n return nodeFs.existsSync(path)\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport interface WorkerPathOptions {\r\n /** Nama file worker tanpa extension */\r\n basename: string\r\n /** Import meta URL dari caller module */\r\n importMetaUrl: string\r\n /** Extensions yang dicoba secara urutan (default: [\".cjs\", \".js\", \".mjs\"]) */\r\n extensions?: string[]\r\n /** Sub-directories relatif dari runtimeDir yang dicoba */\r\n subdirs?: string[]\r\n /** Throw jika tidak ditemukan (default: true) */\r\n required?: boolean\r\n}\r\n\r\nexport interface WorkerPathResult {\r\n /** Absolute path ke worker file */\r\n path: string\r\n /** Extension yang ditemukan */\r\n extension: string\r\n /** Apakah ini dari CJS atau ESM artifact */\r\n format: \"cjs\" | \"esm\"\r\n}\r\n\r\n/**\r\n * Resolve worker/loader script path yang aman untuk release artifacts.\r\n *\r\n * Prioritas:\r\n * 1. CJS (.cjs) — untuk Node.js workers yang butuh require()\r\n * 2. JS (.js) — bundled output\r\n * 3. MJS (.mjs) — explicit ESM\r\n *\r\n * @example\r\n * const workerPath = resolveWorkerPath({\r\n * basename: \"scanner-worker\",\r\n * importMetaUrl: import.meta.url,\r\n * })\r\n * // → \"/path/to/dist/scanner-worker.cjs\"\r\n */\r\nexport function resolveWorkerPath(opts: WorkerPathOptions): WorkerPathResult {\r\n if (isBrowser) {\r\n throw new Error(\"Worker resolution not available in browser\")\r\n }\r\n\r\n const {\r\n basename,\r\n importMetaUrl,\r\n extensions = [\".cjs\", \".js\", \".mjs\"],\r\n subdirs = [\".\", \"workers\", \"lib\"],\r\n required = true,\r\n } = opts\r\n\r\n const runtimeDir = getDirnameFromUrl(importMetaUrl)\r\n\r\n // Try each subdir + extension combination\r\n for (const subdir of subdirs) {\r\n for (const ext of extensions) {\r\n const candidate = resolvePath(runtimeDir, subdir, `${basename}${ext}`)\r\n if (existsSync(candidate)) {\r\n return {\r\n path: candidate,\r\n extension: ext,\r\n format: ext === \".cjs\" ? \"cjs\" : \"esm\",\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (required) {\r\n const tried = subdirs.flatMap(d =>\r\n extensions.map(e => resolvePath(runtimeDir, d, `${basename}${e}`))\r\n )\r\n throw new Error(\r\n `[worker-resolver] Could not find worker script \"${basename}\".\\n` +\r\n `Tried:\\n${tried.map(p => ` - ${p}`).join(\"\\n\")}\\n` +\r\n `Ensure the package is built: npm run build`\r\n )\r\n }\r\n\r\n return { path: \"\", extension: \"\", format: \"cjs\" }\r\n}\r\n\r\n/**\r\n * Resolve loader path (untuk webpack/rspack/vite loaders).\r\n * Same as resolveWorkerPath but dengan nama yang lebih eksplisit.\r\n */\r\nexport function resolveLoaderPath(\r\n loaderBasename: string,\r\n importMetaUrl: string\r\n): string {\r\n return resolveWorkerPath({\r\n basename: loaderBasename,\r\n importMetaUrl,\r\n extensions: [\".cjs\", \".js\", \".mjs\"],\r\n subdirs: [\".\", \"loaders\", \"lib\"],\r\n }).path\r\n}","/**\r\n * Codegen helpers untuk tailwind-styled-v4.\r\n * Dari monorepo checklist: \"Tambahkan helper codegen bila memang relevan\"\r\n *\r\n * Berguna untuk:\r\n * - Generate component boilerplate dari config\r\n * - Generate type definitions dari variant schemas\r\n * - Generate Storybook stories dari cv() configs\r\n * - Generate migration codemods\r\n *\r\n * Design: tidak ada coupling ke compiler — hanya string manipulation.\r\n */\r\n\r\nexport interface ComponentCodegenOptions {\r\n /** Nama komponen (PascalCase) */\r\n name: string\r\n /** HTML tag */\r\n tag?: string\r\n /** Base classes */\r\n base?: string\r\n /** Variant definitions */\r\n variants?: Record<string, Record<string, string>>\r\n /** Default variants */\r\n defaultVariants?: Record<string, string>\r\n /** Compound variants */\r\n compoundVariants?: Array<{ class: string; [key: string]: string }>\r\n /** Framework target */\r\n framework?: \"react\" | \"vue\" | \"svelte\" | \"vanilla\"\r\n /** Include TypeScript types */\r\n withTypes?: boolean\r\n /** Include Storybook story */\r\n withStory?: boolean\r\n}\r\n\r\n/**\r\n * Generate cv() component boilerplate.\r\n *\r\n * @example\r\n * const code = generateComponentCode({\r\n * name: \"Button\",\r\n * tag: \"button\",\r\n * base: \"px-4 py-2 rounded font-medium\",\r\n * variants: {\r\n * intent: { primary: \"bg-blue-500 text-white\", danger: \"bg-red-500 text-white\" },\r\n * size: { sm: \"h-8 text-sm\", lg: \"h-12 text-lg\" },\r\n * },\r\n * defaultVariants: { intent: \"primary\", size: \"sm\" },\r\n * })\r\n */\r\nexport function generateComponentCode(opts: ComponentCodegenOptions): string {\r\n const {\r\n name,\r\n tag = \"div\",\r\n base = \"\",\r\n variants = {},\r\n defaultVariants = {},\r\n compoundVariants = [],\r\n framework = \"react\",\r\n withTypes = true,\r\n } = opts\r\n\r\n const variantKeys = Object.keys(variants)\r\n const lines: string[] = []\r\n\r\n // Imports\r\n if (framework === \"react\") {\r\n lines.push(`import { tw } from \"tailwind-styled-v4\"`)\r\n if (withTypes && variantKeys.length > 0) {\r\n lines.push(`import type { InferVariantProps } from \"tailwind-styled-v4\"`)\r\n }\r\n } else if (framework === \"vue\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/vue\"`)\r\n } else if (framework === \"svelte\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/svelte\"`)\r\n }\r\n\r\n lines.push(\"\")\r\n\r\n // Config object\r\n const configLines: string[] = [`export const ${name} = tw.${tag}({`]\r\n if (base) configLines.push(` base: \"${base}\",`)\r\n\r\n if (variantKeys.length > 0) {\r\n configLines.push(` variants: {`)\r\n for (const [key, values] of Object.entries(variants)) {\r\n configLines.push(` ${key}: {`)\r\n for (const [val, cls] of Object.entries(values)) {\r\n configLines.push(` ${val}: \"${cls}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n if (compoundVariants.length > 0) {\r\n configLines.push(` compoundVariants: [`)\r\n for (const cv of compoundVariants) {\r\n const { class: cls, ...conditions } = cv\r\n const condStr = Object.entries(conditions)\r\n .map(([k, v]) => `${k}: \"${v}\"`)\r\n .join(\", \")\r\n configLines.push(` { ${condStr}, class: \"${cls}\" },`)\r\n }\r\n configLines.push(` ],`)\r\n }\r\n\r\n if (Object.keys(defaultVariants).length > 0) {\r\n configLines.push(` defaultVariants: {`)\r\n for (const [k, v] of Object.entries(defaultVariants)) {\r\n configLines.push(` ${k}: \"${v}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n configLines.push(`})`)\r\n lines.push(...configLines)\r\n\r\n // TypeScript type alias\r\n if (withTypes && variantKeys.length > 0 && framework === \"react\") {\r\n lines.push(\"\")\r\n lines.push(`export type ${name}Props = InferVariantProps<typeof ${name}> & {`)\r\n lines.push(` children?: React.ReactNode`)\r\n lines.push(` className?: string`)\r\n lines.push(`}`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate Storybook stories dari component config.\r\n *\r\n * @example\r\n * const stories = generateStorybookStory({ name: \"Button\", ... })\r\n */\r\nexport function generateStorybookStory(opts: ComponentCodegenOptions): string {\r\n const { name, variants = {}, defaultVariants = {} } = opts\r\n const lines: string[] = []\r\n\r\n lines.push(`import type { Meta, StoryObj } from \"@storybook/react\"`)\r\n lines.push(`import { ${name} } from \"./${name}\"`)\r\n lines.push(`import { generateArgTypes, generateDefaultArgs } from \"tailwind-styled-v4\"`)\r\n lines.push(``)\r\n lines.push(`const config = {`)\r\n if (Object.keys(variants).length > 0) {\r\n lines.push(` variants: ${JSON.stringify(variants, null, 2).replace(/^/gm, \" \")},`)\r\n }\r\n if (Object.keys(defaultVariants).length > 0) {\r\n lines.push(` defaultVariants: ${JSON.stringify(defaultVariants)},`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const meta: Meta<typeof ${name}> = {`)\r\n lines.push(` title: \"Components/${name}\",`)\r\n lines.push(` component: ${name},`)\r\n lines.push(` argTypes: generateArgTypes(config),`)\r\n lines.push(` args: generateDefaultArgs(config),`)\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`export default meta`)\r\n lines.push(`type Story = StoryObj<typeof ${name}>`)\r\n lines.push(``)\r\n lines.push(`export const Default: Story = {}`)\r\n\r\n // Generate one story per variant combo (up to 6)\r\n const variantEntries = Object.entries(variants)\r\n if (variantEntries.length > 0) {\r\n const [firstKey, firstValues] = variantEntries[0]\r\n const valueKeys = Object.keys(firstValues).slice(0, 4)\r\n for (const val of valueKeys) {\r\n const storyName = `${firstKey.charAt(0).toUpperCase()}${firstKey.slice(1)}${val.charAt(0).toUpperCase()}${val.slice(1)}`\r\n lines.push(``)\r\n lines.push(`export const ${storyName}: Story = {`)\r\n lines.push(` args: { ${firstKey}: \"${val}\" },`)\r\n lines.push(`}`)\r\n }\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate migration codemod untuk class renames.\r\n * Berguna saat ada class yang deprecated atau diganti nama.\r\n *\r\n * @example\r\n * const codemod = generateClassRenameCodemod({\r\n * \"btn-primary\": \"bg-blue-500 text-white\",\r\n * \"btn-danger\": \"bg-red-500 text-white\",\r\n * })\r\n */\r\nexport function generateClassRenameCodemod(\r\n renames: Record<string, string>,\r\n opts: { format?: \"jscodeshift\" | \"regex\"; filename?: string } = {}\r\n): string {\r\n const { format = \"regex\", filename = \"rename-classes.mjs\" } = opts\r\n const lines: string[] = []\r\n\r\n if (format === \"regex\") {\r\n lines.push(`#!/usr/bin/env node`)\r\n lines.push(`/**`)\r\n lines.push(` * Auto-generated class rename codemod`)\r\n lines.push(` * Usage: node ${filename} ./src`)\r\n lines.push(` */`)\r\n lines.push(`import fs from \"node:fs\"`)\r\n lines.push(`import path from \"node:path\"`)\r\n lines.push(`import { execSync } from \"node:child_process\"`)\r\n lines.push(``)\r\n lines.push(`const RENAMES = {`)\r\n for (const [from, to] of Object.entries(renames)) {\r\n lines.push(` \"${from}\": \"${to}\",`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const dir = process.argv[2] ?? \".\"`)\r\n lines.push(`const files = execSync(\\`find \\${dir} -name \"*.tsx\" -o -name \"*.ts\" -o -name \"*.jsx\"\\`, { encoding: \"utf-8\" }).split(\"\\\\n\").filter(Boolean)`)\r\n lines.push(``)\r\n lines.push(`let total = 0`)\r\n lines.push(`for (const file of files) {`)\r\n lines.push(` let content = fs.readFileSync(file, \"utf-8\")`)\r\n lines.push(` let changed = false`)\r\n lines.push(` for (const [from, to] of Object.entries(RENAMES)) {`)\r\n lines.push(' const re = new RegExp(`\\\\\\\\b${from.replace(/[.*+?^${}()|[\\\\\\\\]\\\\\\\\]/g, \"\\\\\\\\$&\")}\\\\\\\\b`, \"g\")')\r\n lines.push(` if (re.test(content)) { content = content.replace(re, to); changed = true; total++ }`)\r\n lines.push(` }`)\r\n lines.push(` if (changed) fs.writeFileSync(file, content)`)\r\n lines.push(`}`)\r\n lines.push(`console.log(\\`Renamed \\${total} occurrences in \\${files.length} files\\`)`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate index barrel file untuk sebuah directory.\r\n *\r\n * @example\r\n * const barrel = generateBarrelFile([\"Button\", \"Card\", \"Input\"], \"src/components\")\r\n */\r\nexport function generateBarrelFile(\r\n exports: string[],\r\n dir: string,\r\n opts: { includeTypes?: boolean } = {}\r\n): string {\r\n const { includeTypes = true } = opts\r\n const lines: string[] = []\r\n lines.push(`// Auto-generated barrel file for ${dir}`)\r\n lines.push(`// Run: npx tsx scripts/generate-barrel.ts to regenerate`)\r\n lines.push(``)\r\n for (const name of exports) {\r\n lines.push(`export { default as ${name}, type ${name}Props } from \"./${name}\"`)\r\n if (includeTypes) {\r\n lines.push(`export type * from \"./${name}\"`)\r\n }\r\n }\r\n return lines.join(\"\\n\")\r\n}\r\n","/**\r\n * Prebuilt binary resolution untuk native NAPI bindings.\r\n * QA #1: Resolve native binary dari prebuilt packages atau local build.\r\n *\r\n * Prioritas:\r\n * 1. TW_NATIVE_PATH env var (explicit override)\r\n * 2. Prebuilt binary dari platform-specific npm package\r\n * 3. Local build dari source (developer mode)\r\n */\r\n\r\nimport { createRequire } from \"node:module\"\r\nimport * as fs from \"node:fs\"\r\nimport * as path from \"node:path\"\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// ESM-safe require — works in both ESM and CJS contexts\r\nconst _require = typeof require !== \"undefined\" ? require : createRequire(import.meta.url)\r\n\r\nexport interface NativeResolutionResult {\r\n path: string | null\r\n source: \"env\" | \"prebuilt\" | \"local\" | \"not-found\"\r\n platform: string\r\n tried: string[]\r\n}\r\n\r\n/** Platform key → prebuilt npm package name */\r\nconst PLATFORM_MAP: Record<string, string[]> = {\r\n \"linux-x64\": [\"@tailwind-styled/native-linux-x64-gnu\", \"@tailwind-styled/native-linux-x64\"],\r\n \"linux-arm64\": [\"@tailwind-styled/native-linux-arm64-gnu\", \"@tailwind-styled/native-linux-arm64\"],\r\n \"darwin-x64\": [\"@tailwind-styled/native-darwin-x64\"],\r\n \"darwin-arm64\": [\"@tailwind-styled/native-darwin-arm64\"],\r\n \"win32-x64\": [\"@tailwind-styled/native-win32-x64-msvc\", \"@tailwind-styled/native-win32-x64\"],\r\n \"win32-arm64\": [\"@tailwind-styled/native-win32-arm64-msvc\", \"@tailwind-styled/native-win32-arm64\"],\r\n}\r\n\r\nfunction platformKey(): string {\r\n if (isBrowser) return \"browser\"\r\n return `${process.platform}-${process.arch}`\r\n}\r\n\r\n/**\r\n * Resolve native binary path dari semua sumber yang tersedia.\r\n *\r\n * @example\r\n * const result = resolveNativeBinary()\r\n * if (result.path) {\r\n * const binding = require(result.path)\r\n * } else {\r\n * throw new Error(\"Native binding not found — run npm run build:rust\")\r\n * }\r\n */\r\nexport function resolveNativeBinary(runtimeDir?: string): NativeResolutionResult {\r\n const platform = platformKey()\r\n const tried: string[] = []\r\n\r\n if (isBrowser) {\r\n return { path: null, source: \"not-found\", platform, tried: [\"not available in browser\"] }\r\n }\r\n\r\n // 0. Disabled flag — always short-circuit before any I/O\r\n if (process.env.TWS_DISABLE_NATIVE === \"1\") {\r\n return { path: null, source: \"not-found\", platform, tried: [] }\r\n }\r\n\r\n // 1. Env var override\r\n const envPath = process.env.TW_NATIVE_PATH?.trim()\r\n if (envPath) {\r\n if (fs.existsSync(envPath)) {\r\n return { path: envPath, source: \"env\", platform, tried }\r\n }\r\n tried.push(`env:${envPath} (not found)`)\r\n }\r\n\r\n // 2. Prebuilt binary dari platform-specific npm package\r\n const prebuiltPkgs = PLATFORM_MAP[platform] ?? []\r\n for (const pkg of prebuiltPkgs) {\r\n try {\r\n const candidate = _require.resolve(`${pkg}/tailwind_styled_parser.node`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"prebuilt\", platform, tried }\r\n }\r\n tried.push(`prebuilt:${pkg} (resolved but missing)`)\r\n } catch {\r\n tried.push(`prebuilt:${pkg} (not installed)`)\r\n }\r\n }\r\n\r\n // 2b. .node file bundled inside this package itself (via \"files\": [\"native/*.node\"])\r\n // Covers the case where user installs tailwind-styled-v4 directly from npm\r\n // and the .node file lands at node_modules/tailwind-styled-v4/native/*.node\r\n const napiPlatform = platform === \"linux-x64\" ? \"linux-x64-gnu\"\r\n : platform === \"linux-arm64\" ? \"linux-arm64-gnu\"\r\n : platform\r\n const BINARY_NAMES_SELF = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n if (runtimeDir) {\r\n // runtimeDir is typically dist/ — go up to package root, then into native/\r\n for (const depth of [\"..\", path.join(\"..\", \"..\"), path.join(\"..\", \"..\", \"..\")]) {\r\n const pkgRoot = path.resolve(runtimeDir, depth)\r\n for (const bin of BINARY_NAMES_SELF) {\r\n for (const suffix of [\"\", `.${platform}`, `.${napiPlatform}`]) {\r\n const candidate = path.resolve(pkgRoot, \"native\", `${bin}${suffix}.node`)\r\n tried.push(`self-bundled:${candidate}`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"prebuilt\", platform, tried }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 3. Local build candidates\r\n const cwd = process.cwd()\r\n const base = runtimeDir ?? cwd\r\n // napi-rs naming: platform key may have -gnu suffix on Linux (already computed above)\r\n\r\n // Both possible binary names:\r\n // - \"tailwind_styled_parser\" (old hardcoded name in resolvers)\r\n // - \"tailwind-styled-native\" (actual binaryName in native/package.json)\r\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n\r\n const localCandidates: string[] = []\r\n\r\n for (const bin of BINARY_NAMES) {\r\n localCandidates.push(path.resolve(base, `${bin}.node`))\r\n localCandidates.push(path.resolve(base, \"..\", `${bin}.node`))\r\n localCandidates.push(path.resolve(base, `${bin}.${platform}.node`))\r\n localCandidates.push(path.resolve(base, `${bin}.${napiPlatform}.node`))\r\n }\r\n\r\n // Walk up from cwd AND base to find repo root native/ dir\r\n // Needed when npm workspaces sets cwd to the package subdir\r\n for (const startDir of [cwd, base]) {\r\n let dir = startDir\r\n for (let i = 0; i < 6; i++) {\r\n const nativeDir = path.resolve(dir, \"native\")\r\n for (const bin of BINARY_NAMES) {\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.node`))\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.${platform}.node`))\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.${napiPlatform}.node`))\r\n localCandidates.push(path.resolve(nativeDir, \"target\", \"release\", `${bin}.node`))\r\n }\r\n const parent = path.resolve(dir, \"..\")\r\n if (parent === dir) break\r\n dir = parent\r\n }\r\n }\r\n\r\n for (const candidate of localCandidates) {\r\n tried.push(`local:${candidate}`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"local\", platform, tried }\r\n }\r\n }\r\n\r\n return { path: null, source: \"not-found\", platform, tried }\r\n}\r\n\r\n/**\r\n * Format human-readable error untuk \"binary not found\".\r\n */\r\nexport function formatNativeNotFoundError(result: NativeResolutionResult): string {\r\n const lines = [\r\n `[tailwind-styled] Native binding not found for ${result.platform}`,\r\n ``,\r\n `Tried:`,\r\n ...result.tried.map(t => ` - ${t}`),\r\n ``,\r\n `Solutions:`,\r\n ` 1. Build locally: npm run build:rust`,\r\n ` 2. Install prebuilt: npm install @tailwind-styled/native-${result.platform}`,\r\n ` 3. Override path: TW_NATIVE_PATH=/path/to/parser.node`,\r\n ]\r\n return lines.join(\"\\n\")\r\n}","/**\r\n * Shared observability contract lintas CLI, dashboard, dan devtools.\r\n * Dari execution-log: \"Stabilkan shared observability contract\"\r\n *\r\n * Semua surface inspection (CLI why, DevTools trace, dashboard /inspect)\r\n * menggunakan type contract yang sama di sini.\r\n */\r\n\r\n// ── Class Inspection Surface ─────────────────────────────────────────────────\r\n\r\nexport interface ClassProperty {\r\n property: string\r\n value: string\r\n}\r\n\r\nexport interface ClassUsageLocation {\r\n file: string\r\n line: number\r\n column: number\r\n usage: \"direct\" | \"variant\" | \"component\"\r\n}\r\n\r\n/** Unified inspection result - dipakai oleh CLI, DevTools, Dashboard */\r\nexport interface ClassInspection {\r\n className: string\r\n /** CSS properties yang di-set oleh class ini */\r\n properties: ClassProperty[]\r\n /** Konflik dengan class lain (property conflicts) */\r\n conflicts: string[]\r\n /** Files yang menggunakan class ini */\r\n usedIn: ClassUsageLocation[]\r\n /** Risk level untuk removal */\r\n risk: \"low\" | \"medium\" | \"high\"\r\n /** Estimated bundle contribution dalam bytes */\r\n bundleBytes: number\r\n /** Raw CSS string */\r\n css: string\r\n /** Variant chain (hover:, md:, dll) */\r\n variants: string[]\r\n /** Timestamp */\r\n inspectedAt: number\r\n}\r\n\r\n// ── Build Trace Surface ───────────────────────────────────────────────────────\r\n\r\nexport interface BuildPhaseTrace {\r\n phase: \"scan\" | \"compile\" | \"engine\" | \"output\"\r\n durationMs: number\r\n filesProcessed?: number\r\n classesFound?: number\r\n}\r\n\r\nexport interface BuildTrace {\r\n buildId: string\r\n totalDurationMs: number\r\n phases: BuildPhaseTrace[]\r\n classCount: number\r\n fileCount: number\r\n cacheHitRate: number\r\n mode: string\r\n timestamp: number\r\n}\r\n\r\n// ── Dashboard Metrics Surface ─────────────────────────────────────────────────\r\n\r\nexport interface DashboardMetrics {\r\n buildMs: number\r\n scanMs: number\r\n analyzeMs: number\r\n compileMs: number\r\n classCount: number\r\n fileCount: number\r\n mode: string\r\n cacheHitRate?: number\r\n nativeVersion?: string\r\n}\r\n\r\nexport interface DashboardSummary {\r\n totalBuilds: number\r\n avgBuildMs: number\r\n p95BuildMs: number\r\n avgCacheHitRate: number\r\n lastBuild: DashboardMetrics | null\r\n}\r\n\r\n// ── Observability Client ──────────────────────────────────────────────────────\r\n\r\nexport interface ObservabilityClient {\r\n /** Fetch class inspection dari dashboard */\r\n inspectClass(className: string): Promise<ClassInspection | null>\r\n /** Fetch current metrics */\r\n getMetrics(): Promise<DashboardMetrics | null>\r\n /** Fetch summary */\r\n getSummary(): Promise<DashboardSummary | null>\r\n /** Fetch build history */\r\n getHistory(): Promise<BuildTrace[]>\r\n}\r\n\r\n/** Buat observability client yang connect ke dashboard server */\r\nexport function createObservabilityClient(\r\n opts: { baseUrl?: string; timeoutMs?: number } = {}\r\n): ObservabilityClient {\r\n const { baseUrl = \"http://localhost:7421\", timeoutMs = 3000 } = opts\r\n\r\n async function fetchJson<T>(path: string): Promise<T | null> {\r\n try {\r\n const res = await fetch(`${baseUrl}${path}`, {\r\n signal: AbortSignal.timeout(timeoutMs),\r\n })\r\n if (!res.ok) return null\r\n return await res.json() as T\r\n } catch {\r\n return null\r\n }\r\n }\r\n\r\n return {\r\n async inspectClass(className: string): Promise<ClassInspection | null> {\r\n const data = await fetchJson<ClassInspection>(`/inspect?class=${encodeURIComponent(className)}`)\r\n if (!data) return null\r\n return { ...data, inspectedAt: Date.now() }\r\n },\r\n\r\n async getMetrics(): Promise<DashboardMetrics | null> {\r\n return fetchJson<DashboardMetrics>(\"/metrics\")\r\n },\r\n\r\n async getSummary(): Promise<DashboardSummary | null> {\r\n return fetchJson<DashboardSummary>(\"/summary\")\r\n },\r\n\r\n async getHistory(): Promise<BuildTrace[]> {\r\n const data = await fetchJson<BuildTrace[]>(\"/history\")\r\n return Array.isArray(data) ? data : []\r\n },\r\n }\r\n}\r\n","import { createHash } from \"node:crypto\"\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport { createRequire } from \"node:module\"\r\n\r\n// Native-only: Node.js is always available. No browser fallback.\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Types\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type TokenMap = Record<string, string>\r\n\r\nexport type VariantValue = string | number | boolean | undefined\r\n\r\nexport type VariantProps = Record<string, VariantValue>\r\n\r\nexport type HtmlTagName = keyof HTMLElementTagNameMap\r\n\r\nexport type CompoundCondition = Record<string, string | number | boolean>\r\n\r\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Logging\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface Logger {\r\n warn(...args: unknown[]): void\r\n debug(...args: unknown[]): void\r\n error(...args: unknown[]): void\r\n log(...args: unknown[]): void\r\n}\r\n\r\nexport function createLogger(namespace: string): Logger {\r\n const prefix = `[${namespace}]`\r\n return {\r\n warn(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n debug(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n error(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n log(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n }\r\n}\r\n\r\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\r\n const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\r\n return (msg: string) => {\r\n if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\r\n console.debug(prefix, msg)\r\n }\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error handling\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\r\n\r\ntype ZodLikeIssue = {\r\n path?: readonly PropertyKey[]\r\n message?: string\r\n}\r\n\r\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\r\n if (!path || path.length === 0) return \"(root)\"\r\n return path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n}\r\n\r\nexport class TwError extends Error {\r\n /** @deprecated Gunakan source */\r\n public readonly domain: string\r\n public readonly source: ErrorSource\r\n public readonly code: string\r\n public readonly originalCause?: unknown\r\n\r\n constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\r\n super(message)\r\n this.name = \"TwError\"\r\n this.domain = domainOrSource\r\n this.source = domainOrSource as ErrorSource\r\n this.code = code\r\n this.originalCause = cause\r\n if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\r\n }\r\n\r\n static fromIo(code: string, message: string): TwError {\r\n return new TwError(\"io\", code, message)\r\n }\r\n\r\n static fromCompile(code: string, message: string): TwError {\r\n return new TwError(\"compile\", code, message)\r\n }\r\n\r\n static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\r\n if (err && typeof err === \"object\") {\r\n const e = err as { code?: string; message?: string }\r\n return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\r\n }\r\n return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\r\n }\r\n\r\n /** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\r\n static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\r\n const first = err.issues?.[0] ?? err.errors?.[0]\r\n const path = formatIssuePath(first?.path)\r\n const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\r\n return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\r\n }\r\n\r\n static wrap(source: string, code: string, err: unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(source, code, err.message, err)\r\n return new TwError(source, code, String(err), err)\r\n }\r\n\r\n override toString(): string {\r\n return `TwError [${this.source}:${this.code}] ${this.message}`\r\n }\r\n\r\n toJSON(): { name: string; source: string; code: string; message: string } {\r\n return { name: this.name, source: this.source, code: this.code, message: this.message }\r\n }\r\n\r\n toCliMessage(): string {\r\n return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\r\n }\r\n}\r\n\r\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\r\n return TwError.wrap(domain, code, error)\r\n}\r\n\r\nexport function isTwError(err: unknown): err is TwError {\r\n return err instanceof TwError\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Native binding resolution\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface LoadNativeBindingOptions<T> {\r\n runtimeDir: string\r\n candidates: string[]\r\n isValid: (module: unknown) => module is T\r\n invalidExportMessage: string\r\n}\r\n\r\nexport interface LoadNativeBindingResult<T> {\r\n binding: T | null\r\n loadErrors: Array<{ path: string; message: string }>\r\n loadedPath?: string\r\n}\r\n\r\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\r\n const { runtimeDir, candidates, isValid } = options\r\n const loadErrors: Array<{ path: string; message: string }> = []\r\n\r\n for (const candidate of candidates) {\r\n const candidatePath = path.resolve(runtimeDir, candidate)\r\n try {\r\n if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\r\n continue\r\n }\r\n const mod = requireNativeModule(candidatePath)\r\n if (mod && isValid(mod)) {\r\n return { binding: mod, loadErrors, loadedPath: candidatePath }\r\n }\r\n loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\r\n } catch (e) {\r\n loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\r\n }\r\n }\r\n\r\n return { binding: null, loadErrors }\r\n}\r\n\r\nconst _require = createRequire(import.meta.url)\r\n\r\nfunction requireNativeModule(p: string): unknown {\r\n return _require(p)\r\n}\r\n\r\nexport interface ResolveCandidatesOptions {\r\n runtimeDir?: string\r\n envVarNames?: string[]\r\n includeDefaultCandidates?: boolean\r\n enforceNodeExtensionForEnvPath?: boolean\r\n /** @deprecated — ignored, kept for backward compat */\r\n packageName?: string\r\n}\r\n\r\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\r\n const {\r\n envVarNames = [\"TW_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\r\n includeDefaultCandidates = true,\r\n enforceNodeExtensionForEnvPath = false,\r\n } = options\r\n // Default ke cwd kalau runtimeDir tidak disediakan\r\n const runtimeDir = options.runtimeDir || process.cwd()\r\n const candidates: string[] = []\r\n\r\n for (const envVar of envVarNames) {\r\n const envPath = process.env[envVar]\r\n if (envPath) {\r\n candidates.push(enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\") ? envPath + \".node\" : envPath)\r\n }\r\n }\r\n\r\n if (!includeDefaultCandidates) return candidates\r\n\r\n if (fs.existsSync(runtimeDir)) {\r\n try {\r\n for (const entry of fs.readdirSync(runtimeDir)) {\r\n if (entry.endsWith(\".node\")) candidates.push(entry)\r\n }\r\n } catch { /* ignore read errors */ }\r\n }\r\n\r\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n const napiPlatform = process.platform === \"linux\" && process.arch === \"x64\" ? \"linux-x64-gnu\"\r\n : process.platform === \"linux\" && process.arch === \"arm64\" ? \"linux-arm64-gnu\"\r\n : `${process.platform}-${process.arch}`\r\n\r\n for (const bin of BINARY_NAMES) {\r\n candidates.push(path.resolve(runtimeDir, `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, `${bin}.${napiPlatform}.node`))\r\n // 1 level: dist/ → package-root/native/ (published npm package)\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.${napiPlatform}.node`))\r\n // cwd fallback (user project root)\r\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.${napiPlatform}.node`))\r\n // 4 level: dist/ → package/ → domain/ → packages/ → repo-root/ (monorepo dev)\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.${napiPlatform}.node`))\r\n // 3 level fallback\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\r\n }\r\n\r\n return Array.from(new Set(candidates))\r\n}\r\n\r\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\r\n if (dir) return path.resolve(dir)\r\n try {\r\n return path.dirname(fileURLToPath(importMetaUrl))\r\n } catch {\r\n return process.cwd()\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Hashing\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\r\n const hash = createHash(algorithm).update(content).digest(\"hex\")\r\n return length ? hash.slice(0, length) : hash\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error formatting\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n if (error instanceof TwError) return error.toString()\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LRU Cache\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport class LRUCache<K, V> {\r\n private capacity: number\r\n private cache: Map<K, V>\r\n\r\n constructor(capacity: number) {\r\n this.capacity = capacity\r\n this.cache = new Map()\r\n }\r\n\r\n get(key: K): V | undefined {\r\n if (!this.cache.has(key)) return undefined\r\n const value = this.cache.get(key)!\r\n this.cache.delete(key)\r\n this.cache.set(key, value)\r\n return value\r\n }\r\n\r\n set(key: K, value: V): void {\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key)\r\n } else if (this.cache.size >= this.capacity) {\r\n const firstKey = this.cache.keys().next().value\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey)\r\n }\r\n }\r\n this.cache.set(key, value)\r\n }\r\n\r\n delete(key: K): boolean {\r\n return this.cache.delete(key)\r\n }\r\n\r\n has(key: K): boolean {\r\n return this.cache.has(key)\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear()\r\n }\r\n\r\n entries(): IterableIterator<[K, V]> {\r\n return this.cache.entries()\r\n }\r\n\r\n get size(): number {\r\n return this.cache.size\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Trace Utilities\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\r\nexport {\r\n getHealthColor,\r\n getModeColor,\r\n formatMemory,\r\n formatDuration,\r\n calculateHealth,\r\n getBuildTimeColor,\r\n getMemoryColor,\r\n createTraceSnapshot,\r\n getPipelinePercentages,\r\n} from \"./trace\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Performance Telemetry\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error Codes\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { ErrorCode } from \"./error-codes\"\r\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind Compatibility\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TailwindInfo } from \"./compatibility\"\r\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\r\n\r\n// ── Native binding schemas (Zod boundary validation)\r\nexport {\r\n NativeScanFileSchema, NativeScanResultSchema,\r\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\r\n NativeCssCompileResultSchema, NativeWatchResultSchema,\r\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\r\n safeParseNative, parseNative,\r\n} from './native-schemas'\r\n\r\n// ── ESM-safe runtime helpers ──────────────────────────────────────────────\r\nexport {\r\n createEsmRequire,\r\n getDirname,\r\n getFilename,\r\n resolveFromRoot,\r\n tryRequire,\r\n resolveNativeNodePath,\r\n} from \"./esmHelpers\"\r\n\r\n// ── Performance telemetry ────────────────────────────────────────────────────\r\nexport {\r\n TelemetryCollector,\r\n getGlobalTelemetry,\r\n resetGlobalTelemetry,\r\n createBuildTimer,\r\n type BuildTelemetry,\r\n type TelemetrySummary,\r\n type BuildPhases,\r\n} from \"./telemetry\"\r\n\r\n// ── Config/JSON schema validation ─────────────────────────────────────────────\r\nexport {\r\n ScanCacheSchema,\r\n ScanCacheClassEntrySchema,\r\n TailwindConfigSchema,\r\n RegistryPluginEntrySchema,\r\n RegistryFileSchema,\r\n PackageJsonSchema,\r\n parseJsonWithSchema,\r\n parseJsonFileWithSchema,\r\n type ScanCache,\r\n type ScanCacheClassEntry,\r\n type TailwindConfig,\r\n type RegistryPluginEntry,\r\n type RegistryFile,\r\n type PackageJson,\r\n} from \"./configSchemas\"\r\n\r\n// ── Worker/bootstrap path resolution ─────────────────────────────────────────\r\nexport {\r\n resolveWorkerPath,\r\n resolveLoaderPath,\r\n type WorkerPathOptions,\r\n type WorkerPathResult,\r\n} from \"./workerResolver\"\r\n\r\n// ── Codegen helpers ───────────────────────────────────────────────────────────\r\nexport {\r\n generateComponentCode,\r\n generateStorybookStory,\r\n generateClassRenameCodemod,\r\n generateBarrelFile,\r\n type ComponentCodegenOptions,\r\n} from \"./codegen\"\r\n\r\n// ── Native binary resolution (QA #1) ─────────────────────────────────────────\r\nexport {\r\n resolveNativeBinary,\r\n formatNativeNotFoundError,\r\n type NativeResolutionResult,\r\n} from \"./native-resolution\"\r\n\r\n// ── Shared observability contract ────────────────────────────────────────────\r\nexport {\r\n createObservabilityClient,\r\n type ClassInspection,\r\n type ClassProperty,\r\n type ClassUsageLocation,\r\n type BuildTrace,\r\n type BuildPhaseTrace,\r\n type DashboardMetrics,\r\n type DashboardSummary,\r\n type ObservabilityClient,\r\n} from \"./observability\""]}
1
+ {"version":3,"sources":["../packages/domain/shared/src/trace.ts","../packages/domain/shared/src/error-codes.ts","../packages/domain/shared/src/compatibility.ts","../packages/domain/shared/src/native-schemas.ts","../packages/domain/shared/src/esmHelpers.ts","../packages/domain/shared/src/telemetry.ts","../packages/domain/shared/src/configSchemas.ts","../packages/domain/shared/src/workerResolver.ts","../packages/domain/shared/src/codegen.ts","../packages/domain/shared/src/native-resolution.ts","../packages/domain/shared/src/observability.ts","../packages/domain/compiler/src/nativeBridge.ts","../packages/domain/compiler/src/tailwindEngine.ts","../packages/domain/compiler/src/cssGeneratorNative.ts","../packages/domain/compiler/src/index.ts","../packages/domain/compiler/src/internal.ts","../packages/domain/shared/src/staticStateExtractor.ts","../packages/domain/shared/src/logger.ts","../packages/domain/shared/src/index.ts","../src/umbrella/shared.ts"],"names":["path","z","isBrowser","exports","fs","init_src","require","existsSync","resolve","createRequire","runCssPipeline","log","createLogger","_require"],"mappings":"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","file":"shared.mjs","sourcesContent":["/**\r\n * Shared trace utilities for CLI, devtools, and dashboard\r\n * \r\n * Provides reusable trace snapshot handling, formatting, and analysis\r\n * across the tailwind-styled-v4 ecosystem without introducing coupling.\r\n */\r\n\r\nexport interface TraceSnapshot {\r\n generatedAt: string\r\n buildMs: number | null\r\n scanMs: number | null\r\n analyzeMs: number | null\r\n compileMs: number | null\r\n memoryMb: { rss: number; heapUsed: number; heapTotal: number } | null\r\n classCount: number | null\r\n fileCount: number | null\r\n cssBytes: number | null\r\n mode: string | null\r\n eventsReceived?: number\r\n eventsProcessed?: number\r\n batchesProcessed?: number\r\n incrementalUpdates?: number\r\n fullRescans?: number\r\n}\r\n\r\nexport interface TraceSummary {\r\n workspace: {\r\n totalPackages: number\r\n totalFiles: number\r\n totalClasses: number\r\n lastScanDurationMs: number\r\n lastBuildDurationMs: number\r\n }\r\n cache: {\r\n hitRate: number\r\n totalEntries: number\r\n memoryUsageMb: number\r\n }\r\n pipeline: {\r\n scanDurationMs: number\r\n analyzeDurationMs: number\r\n compileDurationMs: number\r\n totalDurationMs: number\r\n }\r\n health: {\r\n status: \"healthy\" | \"degraded\" | \"unhealthy\"\r\n issues: Array<{ severity: string; message: string }>\r\n }\r\n}\r\n\r\n/**\r\n * Get health status color for UI rendering\r\n */\r\nexport function getHealthColor(status?: string): string {\r\n switch (status) {\r\n case \"healthy\":\r\n return \"#34d399\"\r\n case \"degraded\":\r\n return \"#fbbf24\"\r\n case \"unhealthy\":\r\n return \"#f87171\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Get mode color for UI rendering\r\n */\r\nexport function getModeColor(mode?: string | null): string {\r\n switch (mode) {\r\n case \"build\":\r\n return \"#fbbf24\"\r\n case \"watch\":\r\n return \"#34d399\"\r\n case \"jit\":\r\n return \"#60a5fa\"\r\n case \"error\":\r\n return \"#f87171\"\r\n case \"idle\":\r\n return \"#71717a\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Format memory in human-readable format\r\n */\r\nexport function formatMemory(bytes: number): string {\r\n if (bytes < 1024) return `${Math.round(bytes)}B`\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`\r\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`\r\n}\r\n\r\n/**\r\n * Format duration in human-readable format\r\n */\r\nexport function formatDuration(ms: number | null): string {\r\n if (ms === null) return \"—\"\r\n if (ms < 1000) return `${ms}ms`\r\n return `${(ms / 1000).toFixed(1)}s`\r\n}\r\n\r\n/**\r\n * Calculate health status from metrics\r\n */\r\nexport function calculateHealth(\r\n metrics: TraceSnapshot,\r\n summary?: TraceSummary\r\n): \"healthy\" | \"degraded\" | \"unhealthy\" {\r\n if (summary?.health?.status) return summary.health.status\r\n\r\n // Fallback to simple heuristics\r\n if (metrics.mode === \"error\") return \"unhealthy\"\r\n if ((metrics.buildMs ?? 0) > 5000) return \"degraded\"\r\n if (metrics.memoryMb && metrics.memoryMb.heapUsed > 500) return \"degraded\"\r\n return \"healthy\"\r\n}\r\n\r\n/**\r\n * Get color for build time indicator\r\n */\r\nexport function getBuildTimeColor(ms: number | null): string {\r\n if (ms === null) return \"#52525b\"\r\n if (ms > 1000) return \"#f87171\" // red - very slow\r\n if (ms > 500) return \"#fbbf24\" // amber - acceptable\r\n return \"#34d399\" // green - fast\r\n}\r\n\r\n/**\r\n * Get color for memory usage indicator\r\n */\r\nexport function getMemoryColor(mb: number): string {\r\n if (mb > 500) return \"#f87171\" // red - high\r\n if (mb > 250) return \"#fbbf24\" // amber - moderate\r\n return \"#34d399\" // green - low\r\n}\r\n\r\n/**\r\n * Create trace snapshot from dashboard data\r\n */\r\nexport function createTraceSnapshot(data: Record<string, unknown>): TraceSnapshot {\r\n return {\r\n generatedAt: (data.generatedAt as string) || new Date().toISOString(),\r\n buildMs: (data.buildMs as number) ?? null,\r\n scanMs: (data.scanMs as number) ?? null,\r\n analyzeMs: (data.analyzeMs as number) ?? null,\r\n compileMs: (data.compileMs as number) ?? null,\r\n memoryMb: (data.memoryMb as { rss: number; heapUsed: number; heapTotal: number } | null) ?? null,\r\n classCount: (data.classCount as number) ?? null,\r\n fileCount: (data.fileCount as number) ?? null,\r\n cssBytes: (data.cssBytes as number) ?? null,\r\n mode: (data.mode as string) ?? null,\r\n eventsReceived: (data.eventsReceived as number | undefined) ?? undefined,\r\n eventsProcessed: (data.eventsProcessed as number | undefined) ?? undefined,\r\n batchesProcessed: (data.batchesProcessed as number | undefined) ?? undefined,\r\n incrementalUpdates: (data.incrementalUpdates as number | undefined) ?? undefined,\r\n fullRescans: (data.fullRescans as number | undefined) ?? undefined,\r\n }\r\n}\r\n\r\n/**\r\n * Calculate pipeline time distribution\r\n */\r\nexport function getPipelinePercentages(metrics: TraceSnapshot): {\r\n scanPct: number\r\n analyzePct: number\r\n compilePct: number\r\n} {\r\n const scan = metrics.scanMs ?? 0\r\n const analyze = metrics.analyzeMs ?? 0\r\n const compile = metrics.compileMs ?? 0\r\n const total = scan + analyze + compile\r\n\r\n if (total === 0) {\r\n return { scanPct: 0, analyzePct: 0, compilePct: 0 }\r\n }\r\n\r\n return {\r\n scanPct: (scan / total) * 100,\r\n analyzePct: (analyze / total) * 100,\r\n compilePct: (compile / total) * 100,\r\n }\r\n}\r\n","/**\r\n * Error code registry — single source of truth for all error codes.\r\n *\r\n * Format: E[0-9]xx for errors, W[0-9]xx for warnings.\r\n * Use with TwError for consistent error handling.\r\n */\r\n\r\nexport const ERROR_CODES = {\r\n // E0xx — Native binding\r\n NATIVE_NOT_FOUND: \"E001\",\r\n NATIVE_LOAD_FAILED: \"E002\",\r\n NATIVE_VERSION_MISMATCH: \"E003\",\r\n SCANNER_NATIVE_NOT_FOUND: \"E004\",\r\n SCANNER_HASH_FAILED: \"E005\",\r\n NATIVE_TRANSFORM_UNAVAILABLE: \"E006\",\r\n\r\n // E2xx — Compilation\r\n MISSING_REACT_IMPORT: \"E201\",\r\n UNSUPPORTED_PATTERN: \"E202\",\r\n TEMPLATE_PARSE_ERROR: \"E203\",\r\n COMPILE_TIMEOUT: \"E204\",\r\n\r\n // E3xx — Compatibility\r\n TAILWIND_VERSION_UNSUPPORTED: \"E301\",\r\n NODE_VERSION_UNSUPPORTED: \"E302\",\r\n\r\n // E4xx — Cache\r\n CACHE_READ_FAILED: \"E401\",\r\n CACHE_WRITE_FAILED: \"E402\",\r\n CACHE_CORRUPTED: \"E403\",\r\n\r\n // E5xx — RSC\r\n RSC_BOUNDARY_CONFLICT: \"E501\",\r\n\r\n // W1xx — Warnings\r\n DYNAMIC_CONTENT: \"W101\",\r\n INVALID_VARIANT_VALUE: \"W201\",\r\n DEPRECATED_MODE: \"W301\",\r\n} as const\r\n\r\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]\r\n\r\nconst ERROR_SUGGESTIONS: Record<string, string> = {\r\n E001: \"Run: npm install @tailwind-styled/native-{platform} or build from source\",\r\n E002: \"Try: npm rebuild or reinstall the package\",\r\n E003: \"Run: npm install tailwind-styled-v4@latest to sync versions\",\r\n E004: \"Run: npm install @tailwind-styled/scanner\",\r\n E006: \"Run: npm install @tailwind-styled/compiler\",\r\n E301: \"Upgrade: npm install tailwindcss@^4\",\r\n}\r\n\r\nexport function getSuggestion(code: string): string | undefined {\r\n return ERROR_SUGGESTIONS[code]\r\n}\r\n\r\nexport function formatErrorCode(code: string): string {\r\n const prefix = code.startsWith(\"E\") ? \"Error\" : code.startsWith(\"W\") ? \"Warning\" : \"Code\"\r\n return `[${prefix} ${code}]`\r\n}\r\n","/**\r\n * Tailwind CSS version detection and compatibility checks.\r\n *\r\n * tailwind-styled-v4 requires Tailwind CSS v4.x.\r\n * This module detects the installed version and provides\r\n * clear error messages for unsupported versions.\r\n */\r\n\r\nexport interface TailwindInfo {\r\n version: string\r\n major: number\r\n supported: boolean\r\n path: string | null\r\n}\r\n\r\nexport function detectTailwind(): TailwindInfo {\r\n try {\r\n const pkgPath = require.resolve(\"tailwindcss/package.json\")\r\n const { version } = require(pkgPath)\r\n const major = Number.parseInt(version.split(\".\")[0], 10)\r\n return { version, major, supported: major >= 4, path: pkgPath }\r\n } catch {\r\n return { version: \"not-installed\", major: 0, supported: false, path: null }\r\n }\r\n}\r\n\r\nexport function assertTailwindV4(): void {\r\n const info = detectTailwind()\r\n if (!info.supported) {\r\n const message = info.major === 0\r\n ? \"tailwindcss is not installed. Run: npm install tailwindcss@^4\"\r\n : `tailwind-styled-v4 requires Tailwind CSS v4.x. Found: v${info.version}. Upgrade: npm install tailwindcss@^4`\r\n\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`[tailwind-styled] ${message}`)\r\n }\r\n }\r\n}\r\n\r\nexport function getTailwindVersion(): string {\r\n return detectTailwind().version\r\n}\r\n\r\nexport function isTailwindV4(): boolean {\r\n return detectTailwind().supported\r\n}\r\n","/**\r\n * Zod schemas untuk validasi native binding responses.\r\n *\r\n * Dipakai untuk memvalidasi data yang datang dari Rust native bindings\r\n * sebelum masuk ke domain logic TypeScript.\r\n *\r\n * Pattern:\r\n * const raw = native.scanWorkspace(root)\r\n * const validated = NativeScanResultSchema.parse(raw)\r\n * // Setelah ini, gunakan `validated` (trusted typed object)\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan ─────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeScanFileSchema = z.object({\r\n file: z.string().min(1, \"file path cannot be empty\"),\r\n classes: z.array(z.string()),\r\n hash: z.string().optional(),\r\n})\r\n\r\nexport type NativeScanFile = z.infer<typeof NativeScanFileSchema>\r\n\r\nexport const NativeScanResultSchema = z.object({\r\n files: z.array(NativeScanFileSchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueClasses: z.array(z.string()),\r\n})\r\n\r\nexport type NativeScanResult = z.infer<typeof NativeScanResultSchema>\r\n\r\n// ── Analyzer ──────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: z.number().int().nonnegative(),\r\n files: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeClassUsage = z.infer<typeof NativeClassUsageSchema>\r\n\r\nexport const NativeAnalyzerReportSchema = z.object({\r\n root: z.string(),\r\n topClasses: z.array(NativeClassUsageSchema).optional(),\r\n safelist: z.array(z.string()).optional(),\r\n css: z.string().optional(),\r\n conflicts: z.array(z.unknown()).optional(),\r\n unusedClasses: z.array(z.string()).optional(),\r\n durationMs: z.number().nonnegative().optional(),\r\n})\r\n\r\nexport type NativeAnalyzerReport = z.infer<typeof NativeAnalyzerReportSchema>\r\n\r\n// ── Transform ─────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeTransformResultSchema = z.object({\r\n code: z.string(),\r\n classes: z.array(z.string()),\r\n changed: z.boolean(),\r\n rsc: z.object({\r\n isServer: z.boolean(),\r\n needsClientDirective: z.boolean(),\r\n clientReasons: z.array(z.string()),\r\n }).optional(),\r\n})\r\n\r\nexport type NativeTransformResult = z.infer<typeof NativeTransformResultSchema>\r\n\r\n// ── CSS Compile ───────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unresolvedClasses: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeCssCompileResult = z.infer<typeof NativeCssCompileResultSchema>\r\n\r\n// ── Watch ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeWatchEventSchema = z.object({\r\n type: z.enum([\"change\", \"unlink\", \"create\"]),\r\n path: z.string(),\r\n})\r\n\r\nexport type NativeWatchEvent = z.infer<typeof NativeWatchEventSchema>\r\n\r\nexport const NativeWatchResultSchema = z.object({\r\n status: z.enum([\"ok\", \"error\"]),\r\n handleId: z.string().optional(),\r\n error: z.string().optional(),\r\n})\r\n\r\nexport type NativeWatchResult = z.infer<typeof NativeWatchResultSchema>\r\n\r\n// ── Cache ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCacheEntrySchema = z.object({\r\n file: z.string(),\r\n hash: z.string(),\r\n classes: z.array(z.string()),\r\n timestamp: z.number(),\r\n size: z.number().optional(),\r\n})\r\n\r\nexport type NativeCacheEntry = z.infer<typeof NativeCacheEntrySchema>\r\n\r\nexport const NativeCacheReadResultSchema = z.object({\r\n entries: z.array(NativeCacheEntrySchema),\r\n version: z.string().optional(),\r\n})\r\n\r\nexport type NativeCacheReadResult = z.infer<typeof NativeCacheReadResultSchema>\r\n\r\n// ── Helpers ───────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Validasi native binding response dengan fallback ke nilai default.\r\n * Gunakan ini di hot path agar tidak crash saat native returns unexpected shape.\r\n *\r\n * @example\r\n * const raw = native.scanWorkspace(root)\r\n * const result = safeParseNative(NativeScanResultSchema, raw, {\r\n * files: [], totalFiles: 0, uniqueClasses: []\r\n * })\r\n */\r\nexport function safeParseNative<T>(\r\n schema: z.ZodType<T>,\r\n data: unknown,\r\n fallback: T\r\n): T {\r\n const result = schema.safeParse(data)\r\n return result.success ? result.data : fallback\r\n}\r\n\r\n/**\r\n * Parse native response — throw TwError jika gagal.\r\n * Gunakan ini di boundary entry points.\r\n */\r\nexport function parseNative<T>(schema: z.ZodType<T>, data: unknown, context: string): T {\r\n const result = schema.safeParse(data)\r\n if (!result.success) {\r\n const first = result.error.issues[0]\r\n const path = first?.path?.join(\".\") ?? \"(root)\"\r\n throw new Error(\r\n `[${context}] Native binding returned unexpected data: ${path}: ${first?.message ?? \"validation failed\"}`\r\n )\r\n }\r\n return result.data\r\n}\r\n","/**\r\n * ESM-safe runtime helpers untuk monorepo.\r\n *\r\n * Menggantikan pola fragile seperti:\r\n * - `createRequire(import.meta.url)` → gunakan `createEsmRequire()`\r\n * - `__dirname` → gunakan `getDirname(import.meta.url)`\r\n * - `__filename` → gunakan `getFilename(import.meta.url)`\r\n *\r\n * Semua helper ini bekerja di ESM dan CJS.\r\n *\r\n * @module @tailwind-styled/shared/esmHelpers\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// Safe check for require availability - works in both CJS and ESM\r\nlet nodeModuleRef: typeof import(\"node:module\") | null = null\r\nfunction getNodeModuleRef(): typeof import(\"node:module\") | null {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n // Test if require actually works\r\n const test = typeof require === 'function' ? (require('node:module') as typeof import(\"node:module\")) : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodePath: typeof import(\"node:path\") | null = null\r\nlet _nodeUrl: typeof import(\"node:url\") | null = null\r\nlet _nodeFs: typeof import(\"node:fs\") | null = null\r\nlet _nodeCrypto: typeof import(\"node:crypto\") | null = null\r\nlet _nodeOs: typeof import(\"node:os\") | null = null\r\n\r\nfunction getNodePath(): typeof import(\"node:path\") {\r\n if (isBrowser) throw new Error(\"node:path not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\") as typeof import(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeUrl(): typeof import(\"node:url\") {\r\n if (isBrowser) throw new Error(\"node:url not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeUrl) _nodeUrl = nodeRequire.createRequire(import.meta.url)(\"node:url\") as typeof import(\"node:url\")\r\n return _nodeUrl!\r\n}\r\nfunction getNodeFs(): typeof import(\"node:fs\") {\r\n if (isBrowser) throw new Error(\"node:fs not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\") as typeof import(\"node:fs\")\r\n return _nodeFs!\r\n}\r\nfunction getNodeCrypto(): typeof import(\"node:crypto\") {\r\n if (isBrowser) throw new Error(\"node:crypto not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeCrypto) _nodeCrypto = nodeRequire.createRequire(import.meta.url)(\"node:crypto\") as typeof import(\"node:crypto\")\r\n return _nodeCrypto!\r\n}\r\nfunction getNodeOs(): typeof import(\"node:os\") {\r\n if (isBrowser) throw new Error(\"node:os not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeOs) _nodeOs = nodeRequire.createRequire(import.meta.url)(\"node:os\") as typeof import(\"node:os\")\r\n return _nodeOs!\r\n}\r\n\r\n/**\r\n * Buat `require()` function yang relative terhadap sebuah ESM module.\r\n *\r\n * @example\r\n * // Ganti: createRequire(import.meta.url)(\"some-pkg\")\r\n * const req = createEsmRequire(import.meta.url)\r\n * const mod = req(\"some-pkg\")\r\n */\r\nexport function createEsmRequire(importMetaUrl: string): NodeRequire {\r\n if (isBrowser) throw new Error(\"require not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n return nodeRequire.createRequire(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Dapat `__dirname` dari `import.meta.url`.\r\n *\r\n * @example\r\n * // Ganti: const __dirname = ...\r\n * const dir = getDirname(import.meta.url)\r\n */\r\nexport function getDirname(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n const nodePath = getNodePath()\r\n const nodeUrl = getNodeUrl()\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n}\r\n\r\n/**\r\n * Dapat `__filename` dari `import.meta.url`.\r\n */\r\nexport function getFilename(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n return getNodeUrl().fileURLToPath(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Resolve path dari root monorepo (bukan CWD).\r\n * Berguna untuk scripts dan tools yang dipanggil dari lokasi berbeda.\r\n *\r\n * @example\r\n * const root = resolveFromRoot(\"packages/domain/shared/src\")\r\n */\r\nexport function resolveFromRoot(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\")\r\n\r\n const nodePath = getNodePath()\r\n const nodeFs = getNodeFs()\r\n \r\n let dir = getDirname(import.meta.url)\r\n for (let i = 0; i < 10; i++) {\r\n const pkgPath = nodePath.join(dir, \"package.json\")\r\n try {\r\n const pkg = JSON.parse(nodeFs.readFileSync(pkgPath, \"utf-8\"))\r\n if (pkg.workspaces) {\r\n return nodePath.resolve(dir, ...segments)\r\n }\r\n } catch { /* intentionally silent */ }\r\n dir = nodePath.dirname(dir)\r\n }\r\n return nodePath.resolve(process.cwd(), ...segments)\r\n}\r\n\r\n/**\r\n * Require sebuah module dengan fallback ke null jika tidak tersedia.\r\n * Berguna untuk optional dependencies.\r\n *\r\n * @example\r\n * const oxc = tryRequire(\"oxc-parser\", import.meta.url)\r\n * if (!oxc) console.warn(\"oxc-parser not installed\")\r\n */\r\nexport function tryRequire<T = unknown>(\r\n moduleName: string,\r\n importMetaUrl: string\r\n): T | null {\r\n if (isBrowser) return null\r\n try {\r\n return createEsmRequire(importMetaUrl)(moduleName) as T\r\n } catch { /* intentionally silent — optional dep */ }\r\n return null\r\n}\r\n\r\n/**\r\n * Resolve .node binary path yang cross-platform dan ESM-safe.\r\n * Menggantikan pola `path.resolve(__dirname, \"../native.node\")`.\r\n */\r\nexport function resolveNativeNodePath(\r\n importMetaUrl: string,\r\n ...relativeSegments: string[]\r\n): string {\r\n if (isBrowser) return relativeSegments.join(\"/\")\r\n return getNodePath().resolve(getDirname(importMetaUrl), ...relativeSegments)\r\n}","/**\r\n * Build performance telemetry untuk tailwind-styled-v4.\r\n * QA #14: Visibility ke build performance — scan speed, cache hit rate, trends.\r\n *\r\n * Design: zero-dependency, ring-buffer based, opt-in via TWS_TELEMETRY=1.\r\n */\r\n\r\nexport interface BuildPhases {\r\n scan: number\r\n compile: number\r\n engine: number\r\n output: number\r\n}\r\n\r\nexport interface BuildTelemetry {\r\n timestamp: number\r\n durationMs: number\r\n filesScanned: number\r\n filesCached: number\r\n classesExtracted: number\r\n nativeVersion?: string\r\n phases: BuildPhases\r\n cacheHitRate: number\r\n mode?: string\r\n}\r\n\r\nexport interface TelemetrySummary {\r\n totalBuilds: number\r\n avgDurationMs: number\r\n p95DurationMs: number\r\n avgCacheHitRate: number\r\n avgFilesScanned: number\r\n avgClassesExtracted: number\r\n phaseAvgs: BuildPhases\r\n slowestBuildMs: number\r\n fastestBuildMs: number\r\n}\r\n\r\nconst RING_BUFFER_SIZE = 100\r\n\r\nexport class TelemetryCollector {\r\n private data: BuildTelemetry[] = []\r\n private enabled: boolean\r\n\r\n constructor(enabled?: boolean) {\r\n this.enabled =\r\n enabled ??\r\n (process.env.TWS_TELEMETRY === \"1\" || process.env.TWS_TELEMETRY === \"true\")\r\n }\r\n\r\n record(build: BuildTelemetry): void {\r\n if (!this.enabled) return\r\n if (this.data.length >= RING_BUFFER_SIZE) {\r\n this.data.shift() // ring buffer — hapus entri tertua\r\n }\r\n this.data.push(build)\r\n }\r\n\r\n snapshot(): BuildTelemetry[] {\r\n return [...this.data]\r\n }\r\n\r\n summary(): TelemetrySummary | null {\r\n if (this.data.length === 0) return null\r\n\r\n const durations = this.data.map(d => d.durationMs).sort((a, b) => a - b)\r\n const p95Idx = Math.floor(durations.length * 0.95)\r\n\r\n const avg = (arr: number[]) => arr.reduce((a, b) => a + b, 0) / arr.length\r\n\r\n return {\r\n totalBuilds: this.data.length,\r\n avgDurationMs: avg(durations),\r\n p95DurationMs: durations[p95Idx] ?? durations[durations.length - 1] ?? 0,\r\n avgCacheHitRate: avg(this.data.map(d => d.cacheHitRate)),\r\n avgFilesScanned: avg(this.data.map(d => d.filesScanned)),\r\n avgClassesExtracted: avg(this.data.map(d => d.classesExtracted)),\r\n phaseAvgs: {\r\n scan: avg(this.data.map(d => d.phases.scan)),\r\n compile: avg(this.data.map(d => d.phases.compile)),\r\n engine: avg(this.data.map(d => d.phases.engine)),\r\n output: avg(this.data.map(d => d.phases.output)),\r\n },\r\n slowestBuildMs: durations[durations.length - 1] ?? 0,\r\n fastestBuildMs: durations[0] ?? 0,\r\n }\r\n }\r\n\r\n reset(): void {\r\n this.data = []\r\n }\r\n\r\n /** Format ringkas untuk CLI output */\r\n formatCli(): string {\r\n const s = this.summary()\r\n if (!s) return \"[telemetry] no data\"\r\n return [\r\n `[telemetry] ${s.totalBuilds} builds`,\r\n `avg ${s.avgDurationMs.toFixed(0)}ms`,\r\n `p95 ${s.p95DurationMs.toFixed(0)}ms`,\r\n `cache hit ${(s.avgCacheHitRate * 100).toFixed(0)}%`,\r\n `${s.avgFilesScanned.toFixed(0)} files`,\r\n ].join(\" · \")\r\n }\r\n\r\n /** Export sebagai JSON untuk dashboard/prometheus */\r\n toJSON(): object {\r\n return {\r\n summary: this.summary(),\r\n history: this.data.slice(-20), // last 20 builds\r\n }\r\n }\r\n}\r\n\r\n/** Global singleton telemetry collector */\r\nlet _globalCollector: TelemetryCollector | null = null\r\n\r\nexport function getGlobalTelemetry(): TelemetryCollector {\r\n if (!_globalCollector) {\r\n _globalCollector = new TelemetryCollector()\r\n }\r\n return _globalCollector\r\n}\r\n\r\nexport function resetGlobalTelemetry(): void {\r\n _globalCollector = null\r\n}\r\n\r\n/** Helper untuk record build dengan timing otomatis */\r\nexport function createBuildTimer() {\r\n const start = Date.now()\r\n const phases: Partial<BuildPhases> = {}\r\n let phaseStart = start\r\n\r\n return {\r\n phase(name: keyof BuildPhases): void {\r\n const now = Date.now()\r\n phases[name] = now - phaseStart\r\n phaseStart = now\r\n },\r\n finish(opts: Omit<BuildTelemetry, \"timestamp\" | \"durationMs\" | \"phases\" | \"cacheHitRate\"> & {\r\n cacheHitRate?: number\r\n }): BuildTelemetry {\r\n const now = Date.now()\r\n const record: BuildTelemetry = {\r\n timestamp: start,\r\n durationMs: now - start,\r\n phases: {\r\n scan: phases.scan ?? 0,\r\n compile: phases.compile ?? 0,\r\n engine: phases.engine ?? 0,\r\n output: phases.output ?? now - start,\r\n },\r\n cacheHitRate: opts.cacheHitRate ?? 0,\r\n ...opts,\r\n }\r\n getGlobalTelemetry().record(record)\r\n return record\r\n },\r\n }\r\n}\r\n","/**\r\n * Zod schemas untuk JSON, cache, manifest, dan config reads.\r\n * PLAN.md: \"JSON, cache, manifest, and config reads should be parsed into typed schema-backed values\"\r\n *\r\n * Pattern: validate at the I/O boundary, pass typed values inward.\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan Cache ────────────────────────────────────────────────────────────────\r\n\r\n/** Schema untuk .tailwind-styled/scan-cache.json */\r\nexport const ScanCacheClassEntrySchema = z.object({\r\n name: z.string().min(1),\r\n usedIn: z.array(z.string()),\r\n risk: z.enum([\"low\", \"medium\", \"high\"]).default(\"low\"),\r\n bundleContribution: z.number().nonnegative().default(0),\r\n variants: z.array(z.string()).default([]),\r\n})\r\nexport type ScanCacheClassEntry = z.infer<typeof ScanCacheClassEntrySchema>\r\n\r\nexport const ScanCacheSchema = z.object({\r\n version: z.string().default(\"1\"),\r\n generatedAt: z.string(),\r\n root: z.string(),\r\n classNames: z.array(ScanCacheClassEntrySchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueCount: z.number().int().nonnegative(),\r\n})\r\nexport type ScanCache = z.infer<typeof ScanCacheSchema>\r\n\r\n// ── Tailwind Config ───────────────────────────────────────────────────────────\r\n\r\nexport const TailwindContentItemSchema = z.union([\r\n z.string(),\r\n z.object({\r\n raw: z.string(),\r\n extension: z.string().optional(),\r\n }),\r\n z.object({\r\n files: z.array(z.string()),\r\n transform: z.record(z.string(), z.unknown()).optional(),\r\n }),\r\n])\r\n\r\nexport const TailwindConfigSchema = z.object({\r\n content: z.array(TailwindContentItemSchema).optional(),\r\n theme: z.record(z.string(), z.unknown()).optional(),\r\n plugins: z.array(z.unknown()).optional(),\r\n darkMode: z.union([z.literal(\"class\"), z.literal(\"media\"), z.literal(false)]).optional(),\r\n prefix: z.string().optional(),\r\n safelist: z.array(z.union([z.string(), z.object({ pattern: z.instanceof(RegExp) })])).optional(),\r\n blocklist: z.array(z.string()).optional(),\r\n}).passthrough() // Allow additional Tailwind v4 config keys\r\nexport type TailwindConfig = z.infer<typeof TailwindConfigSchema>\r\n\r\n// ── Plugin Registry Entry ─────────────────────────────────────────────────────\r\n\r\nexport const RegistryPluginEntrySchema = z.object({\r\n name: z.string().min(1),\r\n description: z.string(),\r\n version: z.string(),\r\n tags: z.array(z.string()).default([]),\r\n official: z.boolean().default(false),\r\n docs: z.string().url().optional(),\r\n install: z.string().optional(),\r\n integrity: z.string().optional(),\r\n})\r\nexport type RegistryPluginEntry = z.infer<typeof RegistryPluginEntrySchema>\r\n\r\nexport const RegistryFileSchema = z.object({\r\n version: z.string(),\r\n official: z.array(RegistryPluginEntrySchema).default([]),\r\n community: z.array(RegistryPluginEntrySchema).default([]),\r\n})\r\nexport type RegistryFile = z.infer<typeof RegistryFileSchema>\r\n\r\n// ── Package.json (minimal) ────────────────────────────────────────────────────\r\n\r\nexport const PackageJsonSchema = z.object({\r\n name: z.string(),\r\n version: z.string(),\r\n scripts: z.record(z.string(), z.string()).optional(),\r\n dependencies: z.record(z.string(), z.string()).optional(),\r\n devDependencies: z.record(z.string(), z.string()).optional(),\r\n peerDependencies: z.record(z.string(), z.string()).optional(),\r\n main: z.string().optional(),\r\n module: z.string().optional(),\r\n exports: z.unknown().optional(),\r\n type: z.enum([\"module\", \"commonjs\"]).optional(),\r\n}).passthrough()\r\nexport type PackageJson = z.infer<typeof PackageJsonSchema>\r\n\r\n// ── Helpers ────────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Parse JSON string dengan schema validation.\r\n * Melempar error yang human-readable jika gagal.\r\n *\r\n * @example\r\n * const cache = parseJsonWithSchema(\r\n * fs.readFileSync(\".tailwind-styled/scan-cache.json\", \"utf-8\"),\r\n * ScanCacheSchema,\r\n * \"scan-cache.json\"\r\n * )\r\n */\r\nexport function parseJsonWithSchema<T>(\r\n jsonString: string,\r\n schema: z.ZodType<T>,\r\n sourceName: string\r\n): T {\r\n let parsed: unknown\r\n try {\r\n parsed = JSON.parse(jsonString)\r\n } catch (err) {\r\n throw new Error(\r\n `[${sourceName}] Invalid JSON: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n const result = schema.safeParse(parsed)\r\n if (!result.success) {\r\n const issues = result.error.issues\r\n .map((e) => ` ${e.path.join(\".\")}: ${e.message}`)\r\n .join(\"\\n\")\r\n throw new Error(`[${sourceName}] Schema validation failed:\\n${issues}`)\r\n }\r\n\r\n return result.data\r\n}\r\n\r\n/**\r\n * Parse JSON file dengan schema validation.\r\n *\r\n * @example\r\n * const pkg = parseJsonFileWithSchema(\"package.json\", PackageJsonSchema)\r\n */\r\nexport function parseJsonFileWithSchema<T>(\r\n filePath: string,\r\n schema: z.ZodType<T>\r\n): T {\r\n const { readFileSync } = require(\"node:fs\") as typeof import(\"node:fs\")\r\n const { basename } = require(\"node:path\") as typeof import(\"node:path\")\r\n\r\n let content: string\r\n try {\r\n content = readFileSync(filePath, \"utf-8\")\r\n } catch (err) {\r\n throw new Error(\r\n `[${basename(filePath)}] Could not read file: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n return parseJsonWithSchema(content, schema, basename(filePath))\r\n}\r\n","/**\r\n * Worker/bootstrap path resolution untuk artifact release safety.\r\n * Dari monorepo checklist: \"Perkuat worker/bootstrap path agar artifact release aman\"\r\n *\r\n * Masalah: path ke worker/loader script bisa berbeda antara:\r\n * - Development (src/*.ts)\r\n * - Built dist (dist/*.js / dist/*.cjs)\r\n * - Packed npm artifact (dist/ saja, tanpa src/)\r\n *\r\n * Solusi: resolve path secara hierarchical dengan fallback yang eksplisit.\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\nconst NODE_URL = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:url\" : null\r\nconst NODE_FS = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:fs\" : null\r\nconst NODE_PATH = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:path\" : null\r\n\r\nfunction getDirnameFromUrl(importMetaUrl: string): string {\r\n if (!importMetaUrl) return \"\"\r\n if (isBrowser) return \"\"\r\n\r\n try {\r\n const nodeUrl = require(NODE_URL!)\r\n const nodePath = require(NODE_PATH!)\r\n // fileURLToPath returns the file path — we need the directory\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n } catch {\r\n if (importMetaUrl.startsWith(\"file://\")) {\r\n const filePath = importMetaUrl.slice(7)\r\n // strip the filename to get the directory\r\n const lastSlash = filePath.lastIndexOf(\"/\")\r\n return lastSlash >= 0 ? filePath.slice(0, lastSlash) : filePath\r\n }\r\n return \"\"\r\n }\r\n}\r\n\r\nfunction resolvePath(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n try {\r\n const nodePath = require(NODE_PATH!)\r\n return nodePath.resolve(...segments)\r\n } catch {\r\n return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n }\r\n}\r\n\r\nfunction existsSync(path: string): boolean {\r\n if (isBrowser) return false\r\n try {\r\n const nodeFs = require(NODE_FS!)\r\n return nodeFs.existsSync(path)\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport interface WorkerPathOptions {\r\n /** Nama file worker tanpa extension */\r\n basename: string\r\n /** Import meta URL dari caller module */\r\n importMetaUrl: string\r\n /** Extensions yang dicoba secara urutan (default: [\".cjs\", \".js\", \".mjs\"]) */\r\n extensions?: string[]\r\n /** Sub-directories relatif dari runtimeDir yang dicoba */\r\n subdirs?: string[]\r\n /** Throw jika tidak ditemukan (default: true) */\r\n required?: boolean\r\n}\r\n\r\nexport interface WorkerPathResult {\r\n /** Absolute path ke worker file */\r\n path: string\r\n /** Extension yang ditemukan */\r\n extension: string\r\n /** Apakah ini dari CJS atau ESM artifact */\r\n format: \"cjs\" | \"esm\"\r\n}\r\n\r\n/**\r\n * Resolve worker/loader script path yang aman untuk release artifacts.\r\n *\r\n * Prioritas:\r\n * 1. CJS (.cjs) — untuk Node.js workers yang butuh require()\r\n * 2. JS (.js) — bundled output\r\n * 3. MJS (.mjs) — explicit ESM\r\n *\r\n * @example\r\n * const workerPath = resolveWorkerPath({\r\n * basename: \"scanner-worker\",\r\n * importMetaUrl: import.meta.url,\r\n * })\r\n * // → \"/path/to/dist/scanner-worker.cjs\"\r\n */\r\nexport function resolveWorkerPath(opts: WorkerPathOptions): WorkerPathResult {\r\n if (isBrowser) {\r\n throw new Error(\"Worker resolution not available in browser\")\r\n }\r\n\r\n const {\r\n basename,\r\n importMetaUrl,\r\n extensions = [\".cjs\", \".js\", \".mjs\"],\r\n subdirs = [\".\", \"workers\", \"lib\"],\r\n required = true,\r\n } = opts\r\n\r\n const runtimeDir = getDirnameFromUrl(importMetaUrl)\r\n\r\n // Try each subdir + extension combination\r\n for (const subdir of subdirs) {\r\n for (const ext of extensions) {\r\n const candidate = resolvePath(runtimeDir, subdir, `${basename}${ext}`)\r\n if (existsSync(candidate)) {\r\n return {\r\n path: candidate,\r\n extension: ext,\r\n format: ext === \".cjs\" ? \"cjs\" : \"esm\",\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (required) {\r\n const tried = subdirs.flatMap(d =>\r\n extensions.map(e => resolvePath(runtimeDir, d, `${basename}${e}`))\r\n )\r\n throw new Error(\r\n `[worker-resolver] Could not find worker script \"${basename}\".\\n` +\r\n `Tried:\\n${tried.map(p => ` - ${p}`).join(\"\\n\")}\\n` +\r\n `Ensure the package is built: npm run build`\r\n )\r\n }\r\n\r\n return { path: \"\", extension: \"\", format: \"cjs\" }\r\n}\r\n\r\n/**\r\n * Resolve loader path (untuk webpack/rspack/vite loaders).\r\n * Same as resolveWorkerPath but dengan nama yang lebih eksplisit.\r\n */\r\nexport function resolveLoaderPath(\r\n loaderBasename: string,\r\n importMetaUrl: string\r\n): string {\r\n return resolveWorkerPath({\r\n basename: loaderBasename,\r\n importMetaUrl,\r\n extensions: [\".cjs\", \".js\", \".mjs\"],\r\n subdirs: [\".\", \"loaders\", \"lib\"],\r\n }).path\r\n}","/**\r\n * Codegen helpers untuk tailwind-styled-v4.\r\n * Dari monorepo checklist: \"Tambahkan helper codegen bila memang relevan\"\r\n *\r\n * Berguna untuk:\r\n * - Generate component boilerplate dari config\r\n * - Generate type definitions dari variant schemas\r\n * - Generate Storybook stories dari cv() configs\r\n * - Generate migration codemods\r\n *\r\n * Design: tidak ada coupling ke compiler — hanya string manipulation.\r\n */\r\n\r\nexport interface ComponentCodegenOptions {\r\n /** Nama komponen (PascalCase) */\r\n name: string\r\n /** HTML tag */\r\n tag?: string\r\n /** Base classes */\r\n base?: string\r\n /** Variant definitions */\r\n variants?: Record<string, Record<string, string>>\r\n /** Default variants */\r\n defaultVariants?: Record<string, string>\r\n /** Compound variants */\r\n compoundVariants?: Array<{ class: string; [key: string]: string }>\r\n /** Framework target */\r\n framework?: \"react\" | \"vue\" | \"svelte\" | \"vanilla\"\r\n /** Include TypeScript types */\r\n withTypes?: boolean\r\n /** Include Storybook story */\r\n withStory?: boolean\r\n}\r\n\r\n/**\r\n * Generate cv() component boilerplate.\r\n *\r\n * @example\r\n * const code = generateComponentCode({\r\n * name: \"Button\",\r\n * tag: \"button\",\r\n * base: \"px-4 py-2 rounded font-medium\",\r\n * variants: {\r\n * intent: { primary: \"bg-blue-500 text-white\", danger: \"bg-red-500 text-white\" },\r\n * size: { sm: \"h-8 text-sm\", lg: \"h-12 text-lg\" },\r\n * },\r\n * defaultVariants: { intent: \"primary\", size: \"sm\" },\r\n * })\r\n */\r\nexport function generateComponentCode(opts: ComponentCodegenOptions): string {\r\n const {\r\n name,\r\n tag = \"div\",\r\n base = \"\",\r\n variants = {},\r\n defaultVariants = {},\r\n compoundVariants = [],\r\n framework = \"react\",\r\n withTypes = true,\r\n } = opts\r\n\r\n const variantKeys = Object.keys(variants)\r\n const lines: string[] = []\r\n\r\n // Imports\r\n if (framework === \"react\") {\r\n lines.push(`import { tw } from \"tailwind-styled-v4\"`)\r\n if (withTypes && variantKeys.length > 0) {\r\n lines.push(`import type { InferVariantProps } from \"tailwind-styled-v4\"`)\r\n }\r\n } else if (framework === \"vue\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/vue\"`)\r\n } else if (framework === \"svelte\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/svelte\"`)\r\n }\r\n\r\n lines.push(\"\")\r\n\r\n // Config object\r\n const configLines: string[] = [`export const ${name} = tw.${tag}({`]\r\n if (base) configLines.push(` base: \"${base}\",`)\r\n\r\n if (variantKeys.length > 0) {\r\n configLines.push(` variants: {`)\r\n for (const [key, values] of Object.entries(variants)) {\r\n configLines.push(` ${key}: {`)\r\n for (const [val, cls] of Object.entries(values)) {\r\n configLines.push(` ${val}: \"${cls}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n if (compoundVariants.length > 0) {\r\n configLines.push(` compoundVariants: [`)\r\n for (const cv of compoundVariants) {\r\n const { class: cls, ...conditions } = cv\r\n const condStr = Object.entries(conditions)\r\n .map(([k, v]) => `${k}: \"${v}\"`)\r\n .join(\", \")\r\n configLines.push(` { ${condStr}, class: \"${cls}\" },`)\r\n }\r\n configLines.push(` ],`)\r\n }\r\n\r\n if (Object.keys(defaultVariants).length > 0) {\r\n configLines.push(` defaultVariants: {`)\r\n for (const [k, v] of Object.entries(defaultVariants)) {\r\n configLines.push(` ${k}: \"${v}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n configLines.push(`})`)\r\n lines.push(...configLines)\r\n\r\n // TypeScript type alias\r\n if (withTypes && variantKeys.length > 0 && framework === \"react\") {\r\n lines.push(\"\")\r\n lines.push(`export type ${name}Props = InferVariantProps<typeof ${name}> & {`)\r\n lines.push(` children?: React.ReactNode`)\r\n lines.push(` className?: string`)\r\n lines.push(`}`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate Storybook stories dari component config.\r\n *\r\n * @example\r\n * const stories = generateStorybookStory({ name: \"Button\", ... })\r\n */\r\nexport function generateStorybookStory(opts: ComponentCodegenOptions): string {\r\n const { name, variants = {}, defaultVariants = {} } = opts\r\n const lines: string[] = []\r\n\r\n lines.push(`import type { Meta, StoryObj } from \"@storybook/react\"`)\r\n lines.push(`import { ${name} } from \"./${name}\"`)\r\n lines.push(`import { generateArgTypes, generateDefaultArgs } from \"tailwind-styled-v4\"`)\r\n lines.push(``)\r\n lines.push(`const config = {`)\r\n if (Object.keys(variants).length > 0) {\r\n lines.push(` variants: ${JSON.stringify(variants, null, 2).replace(/^/gm, \" \")},`)\r\n }\r\n if (Object.keys(defaultVariants).length > 0) {\r\n lines.push(` defaultVariants: ${JSON.stringify(defaultVariants)},`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const meta: Meta<typeof ${name}> = {`)\r\n lines.push(` title: \"Components/${name}\",`)\r\n lines.push(` component: ${name},`)\r\n lines.push(` argTypes: generateArgTypes(config),`)\r\n lines.push(` args: generateDefaultArgs(config),`)\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`export default meta`)\r\n lines.push(`type Story = StoryObj<typeof ${name}>`)\r\n lines.push(``)\r\n lines.push(`export const Default: Story = {}`)\r\n\r\n // Generate one story per variant combo (up to 6)\r\n const variantEntries = Object.entries(variants)\r\n if (variantEntries.length > 0) {\r\n const [firstKey, firstValues] = variantEntries[0]\r\n const valueKeys = Object.keys(firstValues).slice(0, 4)\r\n for (const val of valueKeys) {\r\n const storyName = `${firstKey.charAt(0).toUpperCase()}${firstKey.slice(1)}${val.charAt(0).toUpperCase()}${val.slice(1)}`\r\n lines.push(``)\r\n lines.push(`export const ${storyName}: Story = {`)\r\n lines.push(` args: { ${firstKey}: \"${val}\" },`)\r\n lines.push(`}`)\r\n }\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate migration codemod untuk class renames.\r\n * Berguna saat ada class yang deprecated atau diganti nama.\r\n *\r\n * @example\r\n * const codemod = generateClassRenameCodemod({\r\n * \"btn-primary\": \"bg-blue-500 text-white\",\r\n * \"btn-danger\": \"bg-red-500 text-white\",\r\n * })\r\n */\r\nexport function generateClassRenameCodemod(\r\n renames: Record<string, string>,\r\n opts: { format?: \"jscodeshift\" | \"regex\"; filename?: string } = {}\r\n): string {\r\n const { format = \"regex\", filename = \"rename-classes.mjs\" } = opts\r\n const lines: string[] = []\r\n\r\n if (format === \"regex\") {\r\n lines.push(`#!/usr/bin/env node`)\r\n lines.push(`/**`)\r\n lines.push(` * Auto-generated class rename codemod`)\r\n lines.push(` * Usage: node ${filename} ./src`)\r\n lines.push(` */`)\r\n lines.push(`import fs from \"node:fs\"`)\r\n lines.push(`import path from \"node:path\"`)\r\n lines.push(`import { execSync } from \"node:child_process\"`)\r\n lines.push(``)\r\n lines.push(`const RENAMES = {`)\r\n for (const [from, to] of Object.entries(renames)) {\r\n lines.push(` \"${from}\": \"${to}\",`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const dir = process.argv[2] ?? \".\"`)\r\n lines.push(`const files = execSync(\\`find \\${dir} -name \"*.tsx\" -o -name \"*.ts\" -o -name \"*.jsx\"\\`, { encoding: \"utf-8\" }).split(\"\\\\n\").filter(Boolean)`)\r\n lines.push(``)\r\n lines.push(`let total = 0`)\r\n lines.push(`for (const file of files) {`)\r\n lines.push(` let content = fs.readFileSync(file, \"utf-8\")`)\r\n lines.push(` let changed = false`)\r\n lines.push(` for (const [from, to] of Object.entries(RENAMES)) {`)\r\n lines.push(' const re = new RegExp(`\\\\\\\\b${from.replace(/[.*+?^${}()|[\\\\\\\\]\\\\\\\\]/g, \"\\\\\\\\$&\")}\\\\\\\\b`, \"g\")')\r\n lines.push(` if (re.test(content)) { content = content.replace(re, to); changed = true; total++ }`)\r\n lines.push(` }`)\r\n lines.push(` if (changed) fs.writeFileSync(file, content)`)\r\n lines.push(`}`)\r\n lines.push(`console.log(\\`Renamed \\${total} occurrences in \\${files.length} files\\`)`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate index barrel file untuk sebuah directory.\r\n *\r\n * @example\r\n * const barrel = generateBarrelFile([\"Button\", \"Card\", \"Input\"], \"src/components\")\r\n */\r\nexport function generateBarrelFile(\r\n exports: string[],\r\n dir: string,\r\n opts: { includeTypes?: boolean } = {}\r\n): string {\r\n const { includeTypes = true } = opts\r\n const lines: string[] = []\r\n lines.push(`// Auto-generated barrel file for ${dir}`)\r\n lines.push(`// Run: npx tsx scripts/generate-barrel.ts to regenerate`)\r\n lines.push(``)\r\n for (const name of exports) {\r\n lines.push(`export { default as ${name}, type ${name}Props } from \"./${name}\"`)\r\n if (includeTypes) {\r\n lines.push(`export type * from \"./${name}\"`)\r\n }\r\n }\r\n return lines.join(\"\\n\")\r\n}\r\n","/**\r\n * Prebuilt binary resolution untuk native NAPI bindings.\r\n * QA #1: Resolve native binary dari prebuilt packages atau local build.\r\n *\r\n * Prioritas:\r\n * 1. TW_NATIVE_PATH env var (explicit override)\r\n * 2. Prebuilt binary dari platform-specific npm package\r\n * 3. Local build dari source (developer mode)\r\n */\r\n\r\nimport { createRequire } from \"node:module\"\r\nimport * as fs from \"node:fs\"\r\nimport * as path from \"node:path\"\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// ESM-safe require — works in both ESM and CJS contexts\r\nconst _require = typeof require !== \"undefined\" ? require : createRequire(import.meta.url)\r\n\r\nexport interface NativeResolutionResult {\r\n path: string | null\r\n source: \"env\" | \"prebuilt\" | \"local\" | \"not-found\"\r\n platform: string\r\n tried: string[]\r\n}\r\n\r\n/** Platform key → prebuilt npm package name */\r\nconst PLATFORM_MAP: Record<string, string[]> = {\r\n \"linux-x64\": [\"@tailwind-styled/native-linux-x64-gnu\", \"@tailwind-styled/native-linux-x64\"],\r\n \"linux-arm64\": [\"@tailwind-styled/native-linux-arm64-gnu\", \"@tailwind-styled/native-linux-arm64\"],\r\n \"darwin-x64\": [\"@tailwind-styled/native-darwin-x64\"],\r\n \"darwin-arm64\": [\"@tailwind-styled/native-darwin-arm64\"],\r\n \"win32-x64\": [\"@tailwind-styled/native-win32-x64-msvc\", \"@tailwind-styled/native-win32-x64\"],\r\n \"win32-arm64\": [\"@tailwind-styled/native-win32-arm64-msvc\", \"@tailwind-styled/native-win32-arm64\"],\r\n}\r\n\r\nfunction platformKey(): string {\r\n if (isBrowser) return \"browser\"\r\n return `${process.platform}-${process.arch}`\r\n}\r\n\r\n/**\r\n * Resolve native binary path dari semua sumber yang tersedia.\r\n *\r\n * @example\r\n * const result = resolveNativeBinary()\r\n * if (result.path) {\r\n * const binding = require(result.path)\r\n * } else {\r\n * throw new Error(\"Native binding not found — run npm run build:rust\")\r\n * }\r\n */\r\nexport function resolveNativeBinary(runtimeDir?: string): NativeResolutionResult {\r\n const platform = platformKey()\r\n const tried: string[] = []\r\n\r\n if (isBrowser) {\r\n return { path: null, source: \"not-found\", platform, tried: [\"not available in browser\"] }\r\n }\r\n\r\n // 0. Disabled flag — always short-circuit before any I/O\r\n // TWS_NO_NATIVE adalah nama canonical; TWS_DISABLE_NATIVE diterima untuk backward compat\r\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_DISABLE_NATIVE === \"1\") {\r\n return { path: null, source: \"not-found\", platform, tried: [] }\r\n }\r\n\r\n // 1. Env var override\r\n const envPath = process.env.TW_NATIVE_PATH?.trim()\r\n if (envPath) {\r\n if (fs.existsSync(envPath)) {\r\n return { path: envPath, source: \"env\", platform, tried }\r\n }\r\n tried.push(`env:${envPath} (not found)`)\r\n }\r\n\r\n // 2. Prebuilt binary dari platform-specific npm package\r\n const prebuiltPkgs = PLATFORM_MAP[platform] ?? []\r\n for (const pkg of prebuiltPkgs) {\r\n try {\r\n const candidate = _require.resolve(`${pkg}/tailwind_styled_parser.node`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"prebuilt\", platform, tried }\r\n }\r\n tried.push(`prebuilt:${pkg} (resolved but missing)`)\r\n } catch {\r\n tried.push(`prebuilt:${pkg} (not installed)`)\r\n }\r\n }\r\n\r\n // 2b. .node file bundled inside this package itself (via \"files\": [\"native/*.node\"])\r\n // Covers the case where user installs tailwind-styled-v4 directly from npm\r\n // and the .node file lands at node_modules/tailwind-styled-v4/native/*.node\r\n const napiPlatform = platform === \"linux-x64\" ? \"linux-x64-gnu\"\r\n : platform === \"linux-arm64\" ? \"linux-arm64-gnu\"\r\n : platform\r\n const BINARY_NAMES_SELF = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n if (runtimeDir) {\r\n // runtimeDir is typically dist/ — go up to package root, then into native/\r\n for (const depth of [\"..\", path.join(\"..\", \"..\"), path.join(\"..\", \"..\", \"..\")]) {\r\n const pkgRoot = path.resolve(runtimeDir, depth)\r\n for (const bin of BINARY_NAMES_SELF) {\r\n for (const suffix of [\"\", `.${platform}`, `.${napiPlatform}`]) {\r\n const candidate = path.resolve(pkgRoot, \"native\", `${bin}${suffix}.node`)\r\n tried.push(`self-bundled:${candidate}`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"prebuilt\", platform, tried }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 3. Local build candidates\r\n const cwd = process.cwd()\r\n const base = runtimeDir ?? cwd\r\n // napi-rs naming: platform key may have -gnu suffix on Linux (already computed above)\r\n\r\n // Both possible binary names:\r\n // - \"tailwind_styled_parser\" (old hardcoded name in resolvers)\r\n // - \"tailwind-styled-native\" (actual binaryName in native/package.json)\r\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n\r\n const localCandidates: string[] = []\r\n\r\n for (const bin of BINARY_NAMES) {\r\n localCandidates.push(path.resolve(base, `${bin}.node`))\r\n localCandidates.push(path.resolve(base, \"..\", `${bin}.node`))\r\n localCandidates.push(path.resolve(base, `${bin}.${platform}.node`))\r\n localCandidates.push(path.resolve(base, `${bin}.${napiPlatform}.node`))\r\n }\r\n\r\n // Walk up from cwd AND base to find repo root native/ dir\r\n // Needed when npm workspaces sets cwd to the package subdir\r\n for (const startDir of [cwd, base]) {\r\n let dir = startDir\r\n for (let i = 0; i < 6; i++) {\r\n const nativeDir = path.resolve(dir, \"native\")\r\n for (const bin of BINARY_NAMES) {\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.node`))\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.${platform}.node`))\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.${napiPlatform}.node`))\r\n localCandidates.push(path.resolve(nativeDir, \"target\", \"release\", `${bin}.node`))\r\n }\r\n const parent = path.resolve(dir, \"..\")\r\n if (parent === dir) break\r\n dir = parent\r\n }\r\n }\r\n\r\n for (const candidate of localCandidates) {\r\n tried.push(`local:${candidate}`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"local\", platform, tried }\r\n }\r\n }\r\n\r\n return { path: null, source: \"not-found\", platform, tried }\r\n}\r\n\r\n/**\r\n * Format human-readable error untuk \"binary not found\".\r\n */\r\nexport function formatNativeNotFoundError(result: NativeResolutionResult): string {\r\n const lines = [\r\n `[tailwind-styled] Native binding not found for ${result.platform}`,\r\n ``,\r\n `Tried:`,\r\n ...result.tried.map(t => ` - ${t}`),\r\n ``,\r\n `Solutions:`,\r\n ` 1. Build locally: npm run build:rust`,\r\n ` 2. Install prebuilt: npm install @tailwind-styled/native-${result.platform}`,\r\n ` 3. Override path: TW_NATIVE_PATH=/path/to/parser.node`,\r\n ]\r\n return lines.join(\"\\n\")\r\n}","/**\r\n * Shared observability contract lintas CLI, dashboard, dan devtools.\r\n * Dari execution-log: \"Stabilkan shared observability contract\"\r\n *\r\n * Semua surface inspection (CLI why, DevTools trace, dashboard /inspect)\r\n * menggunakan type contract yang sama di sini.\r\n */\r\n\r\n// ── Class Inspection Surface ─────────────────────────────────────────────────\r\n\r\nexport interface ClassProperty {\r\n property: string\r\n value: string\r\n}\r\n\r\nexport interface ClassUsageLocation {\r\n file: string\r\n line: number\r\n column: number\r\n usage: \"direct\" | \"variant\" | \"component\"\r\n}\r\n\r\n/** Unified inspection result - dipakai oleh CLI, DevTools, Dashboard */\r\nexport interface ClassInspection {\r\n className: string\r\n /** CSS properties yang di-set oleh class ini */\r\n properties: ClassProperty[]\r\n /** Konflik dengan class lain (property conflicts) */\r\n conflicts: string[]\r\n /** Files yang menggunakan class ini */\r\n usedIn: ClassUsageLocation[]\r\n /** Risk level untuk removal */\r\n risk: \"low\" | \"medium\" | \"high\"\r\n /** Estimated bundle contribution dalam bytes */\r\n bundleBytes: number\r\n /** Raw CSS string */\r\n css: string\r\n /** Variant chain (hover:, md:, dll) */\r\n variants: string[]\r\n /** Timestamp */\r\n inspectedAt: number\r\n}\r\n\r\n// ── Build Trace Surface ───────────────────────────────────────────────────────\r\n\r\nexport interface BuildPhaseTrace {\r\n phase: \"scan\" | \"compile\" | \"engine\" | \"output\"\r\n durationMs: number\r\n filesProcessed?: number\r\n classesFound?: number\r\n}\r\n\r\nexport interface BuildTrace {\r\n buildId: string\r\n totalDurationMs: number\r\n phases: BuildPhaseTrace[]\r\n classCount: number\r\n fileCount: number\r\n cacheHitRate: number\r\n mode: string\r\n timestamp: number\r\n}\r\n\r\n// ── Dashboard Metrics Surface ─────────────────────────────────────────────────\r\n\r\nexport interface DashboardMetrics {\r\n buildMs: number\r\n scanMs: number\r\n analyzeMs: number\r\n compileMs: number\r\n classCount: number\r\n fileCount: number\r\n mode: string\r\n cacheHitRate?: number\r\n nativeVersion?: string\r\n}\r\n\r\nexport interface DashboardSummary {\r\n totalBuilds: number\r\n avgBuildMs: number\r\n p95BuildMs: number\r\n avgCacheHitRate: number\r\n lastBuild: DashboardMetrics | null\r\n}\r\n\r\n// ── Observability Client ──────────────────────────────────────────────────────\r\n\r\nexport interface ObservabilityClient {\r\n /** Fetch class inspection dari dashboard */\r\n inspectClass(className: string): Promise<ClassInspection | null>\r\n /** Fetch current metrics */\r\n getMetrics(): Promise<DashboardMetrics | null>\r\n /** Fetch summary */\r\n getSummary(): Promise<DashboardSummary | null>\r\n /** Fetch build history */\r\n getHistory(): Promise<BuildTrace[]>\r\n}\r\n\r\n/** Buat observability client yang connect ke dashboard server */\r\nexport function createObservabilityClient(\r\n opts: { baseUrl?: string; timeoutMs?: number } = {}\r\n): ObservabilityClient {\r\n const { baseUrl = \"http://localhost:7421\", timeoutMs = 3000 } = opts\r\n\r\n async function fetchJson<T>(path: string): Promise<T | null> {\r\n try {\r\n const res = await fetch(`${baseUrl}${path}`, {\r\n signal: AbortSignal.timeout(timeoutMs),\r\n })\r\n if (!res.ok) return null\r\n return await res.json() as T\r\n } catch {\r\n return null\r\n }\r\n }\r\n\r\n return {\r\n async inspectClass(className: string): Promise<ClassInspection | null> {\r\n const data = await fetchJson<ClassInspection>(`/inspect?class=${encodeURIComponent(className)}`)\r\n if (!data) return null\r\n return { ...data, inspectedAt: Date.now() }\r\n },\r\n\r\n async getMetrics(): Promise<DashboardMetrics | null> {\r\n return fetchJson<DashboardMetrics>(\"/metrics\")\r\n },\r\n\r\n async getSummary(): Promise<DashboardSummary | null> {\r\n return fetchJson<DashboardSummary>(\"/summary\")\r\n },\r\n\r\n async getHistory(): Promise<BuildTrace[]> {\r\n const data = await fetchJson<BuildTrace[]>(\"/history\")\r\n return Array.isArray(data) ? data : []\r\n },\r\n }\r\n}\r\n","/**\r\n * tailwind-styled-v5 — Native Bridge Loader\r\n *\r\n * Uses @tailwind-styled/shared for native binding resolution.\r\n * All functions require native Rust binding - no JS fallback.\r\n */\r\n\r\nimport { resolveNativeBinary, resolveRuntimeDir } from \"@tailwind-styled/shared\"\r\n\r\n// require() is safe here — tsup banner injects CJS-compatible require into ESM output.\r\n// See tsup.config.ts esbuildOptions banner for how this is set up.\r\nconst _loadNative = (path: string): unknown => require(path)\r\n\r\nexport interface ComponentMetadata {\r\n component: string\r\n tag: string\r\n baseClass: string\r\n subComponents: Record<string, { tag?: string; class: string }>\r\n}\r\n\r\nexport interface NativeRscResult {\r\n isServer: boolean\r\n needsClientDirective: boolean\r\n clientReasons: string[]\r\n}\r\n\r\nconst log = (...args: unknown[]) => {\r\n if (process.env.DEBUG?.includes(\"compiler:native\")) {\r\n console.log(\"[compiler:native]\", ...args)\r\n }\r\n}\r\n\r\n// ── Structured Type Definitions ─────────────────────────────────────────────\r\n\r\nexport interface ScanWorkspaceResult {\r\n files: string[]\r\n total_files: number\r\n classes: string[]\r\n unique_classes: number\r\n duration_ms: number\r\n errors: string[]\r\n}\r\n\r\nexport interface ScanFileResult {\r\n file: string\r\n classes: string[]\r\n class_count: number\r\n has_tw_usage: boolean\r\n size_bytes: number\r\n duration_ms: number\r\n}\r\n\r\nexport interface BatchExtractResult {\r\n file: string\r\n classes: string[]\r\n contentHash: string\r\n ok: boolean\r\n error?: string\r\n}\r\n\r\nexport interface SafelistCheckResult {\r\n matched: string[]\r\n unmatched: string[]\r\n safelistSize: number\r\n}\r\n\r\nexport interface PrefilterFileResult {\r\n file: string\r\n has_tw_usage: boolean\r\n duration_ms: number\r\n size_bytes: number\r\n status: \"processed\" | \"skipped\" | \"error\"\r\n error?: string\r\n}\r\n\r\nexport interface DeadCodeResult {\r\n deadInCss: string[]\r\n deadInSource: string[]\r\n liveClasses: string[]\r\n totalCssClasses: number\r\n totalSourceClasses: number\r\n}\r\n\r\nexport interface ProcessedCssResult {\r\n css: string\r\n size_bytes: number\r\n resolved_classes: string[]\r\n unknown_classes: string[]\r\n}\r\n\r\nexport interface ContainerConfig {\r\n tag: string\r\n containerJson: string\r\n containerName?: string\r\n breakpoints: Array<{ key: string; classes: string }>\r\n}\r\n\r\nexport interface HoistResult {\r\n code: string\r\n hoisted: string[]\r\n warnings: string[]\r\n}\r\n\r\nexport interface VariantTableResult {\r\n id: string\r\n tableJson: string\r\n keys: string[]\r\n defaultKey: string\r\n combinations: number\r\n}\r\n\r\nexport interface ClassifyResult {\r\n className: string\r\n bucket: string\r\n sortOrder: number\r\n}\r\n\r\nexport interface MergeResult {\r\n declarationsJson: string\r\n declarationString: string\r\n count: number\r\n}\r\n\r\nexport interface ClassUsageItem {\r\n className: string\r\n usageCount: number\r\n filesJson: string\r\n bundleSizeBytes: number\r\n isDeadCode: boolean\r\n}\r\n\r\nexport interface StateCssConfig {\r\n tag: string\r\n componentName: string\r\n statesJson: string\r\n sourceFile: string\r\n}\r\n\r\nexport interface GeneratedStateCss {\r\n selector: string\r\n declarations: string\r\n cssRule: string\r\n componentName: string\r\n stateName: string\r\n}\r\n\r\n// ── Type Exports ────────────────────────────────────────────────────────────────\r\n\r\nexport interface NativeBridge {\r\n // CSS Compiler - New Rust implementation\r\n generateCssNative?: (classes: string[], theme_json: string) => string\r\n getCacheStats?: () => [number, number]\r\n clearThemeCache?: () => void\r\n // Core transform\r\n transformSource?: (source: string, opts?: Record<string, string>) => NativeTransformResult | null\r\n extractClassesFromSource?: (source: string) => string[]\r\n hasTwUsage?: (source: string) => boolean\r\n isAlreadyTransformed?: (source: string) => boolean\r\n // Phase 5: Scanner functions (snake_case from Rust)\r\n scan_workspace?: (root: string, extensions?: string[]) => ScanWorkspaceResult\r\n extract_classes_from_source?: (source: string) => string[]\r\n batch_extract_classes?: (filePaths: string[]) => BatchExtractResult[]\r\n check_against_safelist?: (classes: string[], safelist: string[]) => SafelistCheckResult\r\n scan_file?: (filePath: string) => ScanFileResult\r\n collect_files?: (root: string, extensions?: string[]) => string[]\r\n walk_and_prefilter_source_files?: (root: string, extensions?: string[]) => PrefilterFileResult[]\r\n generate_sub_component_types?: (root: string, outputPath?: string) => string\r\n // Class Extractor\r\n extractAllClasses?: (source: string) => string[]\r\n parseClasses?: (raw: string) => Array<{ raw: string; type: string }>\r\n // Application functions\r\n extractComponentUsage?: (source: string) => Array<{ component: string; propsJson: string }>\r\n normalizeAndDedupClasses?: (raw: string) => { normalized: string; duplicatesRemoved: number; uniqueCount: number }\r\n diffClassLists?: (previous: string[], current: string[]) => { added: string[]; removed: string[]; unchanged: string[]; hasChanges: boolean }\r\n batchExtractClasses?: (filePaths: string[]) => Array<{ file: string; classes: string[]; contentHash: string; ok: boolean; error?: string }>\r\n checkAgainstSafelist?: (classes: string[], safelist: string[]) => { matched: string[]; unmatched: string[]; safelistSize: number }\r\n // Batch 2\r\n hoistComponents?: (source: string) => HoistResult\r\n compileVariantTable?: (configJson: string) => VariantTableResult\r\n classifyAndSortClasses?: (classes: string[]) => ClassifyResult[]\r\n mergeCssDeclarations?: (cssChunks: string[]) => MergeResult\r\n analyzeClassUsage?: (classes: string[], scanResultJson: string, css: string) => ClassUsageItem[]\r\n analyzeRsc?: (source: string, filename: string) => {\r\n isServer: boolean\r\n needsClientDirective: boolean\r\n clientReasons: string[]\r\n }\r\n analyzeClasses?: (\r\n filesJson: string,\r\n cwd: string,\r\n flags: number\r\n ) => {\r\n css?: string\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rscJson?: string\r\n metadataJson?: string\r\n safelist?: string[]\r\n } | null\r\n // CSS compilation\r\n compileCss?: (classes: string[], prefix?: string | null) => { css: string; classes: string[] }\r\n compileCssLightning?: (classes: string[]) => string\r\n /** Post-process raw Tailwind-generated CSS dengan LightningCSS di Rust */\r\n detectDeadCode?: (scanResultJson: string, css: string) => DeadCodeResult\r\n processTailwindCssLightning?: (css: string) => ProcessedCssResult\r\n processTailwindCssWithTargets?: (css: string, targets: string | null) => { css: string; size_bytes: number }\r\n // Atomic CSS (atomic.rs)\r\n parseAtomicClass?: (twClass: string) => string | null\r\n generateAtomicCss?: (rulesJson: string) => string\r\n toAtomicClasses?: (twClasses: string) => string\r\n clearAtomicRegistry?: () => void\r\n atomicRegistrySize?: () => number\r\n // Impact analysis (impact_analysis.rs)\r\n calculateImpact?: (impactJson: string) => string\r\n calculateRisk?: (className: string, totalComponents: number) => string\r\n calculateSavings?: (bundleSizeBytes: number, componentCount: number) => number\r\n // Static state CSS pre-generation (state_css.rs)\r\n extractTwStateConfigs?: (source: string, filename: string) => StateCssConfig[]\r\n generateStaticStateCss?: (inputs: Array<{\r\n tag: string\r\n componentName: string\r\n statesJson: string\r\n }>, resolvedCss: string | null) => GeneratedStateCss[]\r\n extractAndGenerateStateCss?: (source: string, filename: string) => GeneratedStateCss[]\r\n /**\r\n * Convert layout/utility class string ke CSS declarations.\r\n * Dipakai oleh extractContainerCssFromSource sebagai Rust-accelerated fallback.\r\n */\r\n layoutClassesToCss?: (classes: string) => string\r\n /**\r\n * Hash string dengan algoritma tertentu, return n karakter pertama.\r\n * Dipakai untuk generate deterministic container CSS IDs.\r\n */\r\n hashContent?: (input: string, algo: string, length: number) => string\r\n /** Hapus dead CSS selectors + minify via Lightning CSS. */\r\n eliminateDeadCss?: (css: string, deadClasses: string[]) => string\r\n /** Dead code detection + strip + Lightning CSS minify dalam satu call. */\r\n optimizeCss?: (css: string) => string\r\n /** Extract tw container configs dari source untuk static @container CSS generation. */\r\n extractTwContainerConfigs?: (source: string) => Array<{\r\n tag: string\r\n containerJson: string\r\n containerName?: string\r\n breakpoints: Array<{ key: string; classes: string }>\r\n }>\r\n \r\n // Phase 5.1: Cache Management (9 functions)\r\n get_cache_statistics?: () => string // Returns JSON\r\n clear_all_caches?: () => void\r\n clear_parse_cache?: () => void\r\n clear_resolve_cache?: () => void\r\n clear_compile_cache?: () => void\r\n clear_css_gen_cache?: () => void\r\n get_cache_optimization_hints?: (hit_rate_percent: number, memory_used_mb: number) => string // Returns JSON\r\n estimate_optimal_cache_config_native?: (total_budget_mb: number, workload_type: string) => string // Returns JSON\r\n cache_read?: (cache_path: string) => { entries_json: string }\r\n cache_write?: (cache_path: string, entries: Array<{ file: string; content_hash: string; classes: string[]; mtime_ms: number; size_bytes: number }>) => boolean\r\n cache_priority?: (mtime_ms: number, size_bytes: number, hit_count: number) => number\r\n \r\n // Phase 5.1: Theme Resolution Extended (7 functions)\r\n resolve_variants?: (configJson: string) => string // Returns JSON\r\n validate_variant_config?: (configJson: string) => string // Returns JSON\r\n resolve_cascade?: (baseThemeJson: string, overridesJson: string) => string // Returns JSON\r\n resolve_class_names?: (classNames: string[], themeJson: string) => string // Returns JSON\r\n resolve_conflict_group?: (groupName: string, themeJson: string) => string // Returns JSON\r\n resolve_theme_value?: (keyPath: string, themeJson: string) => string | null\r\n resolve_simple_variants?: (configJson: string) => string // Returns JSON\r\n \r\n // Phase 5.1: Streaming & Incremental Processing (8 functions)\r\n process_file_change?: (fileChangeJson: string) => string // Returns JSON\r\n compute_incremental_diff?: (oldScanJson: string, newScanJson: string) => string // Returns JSON\r\n create_fingerprint?: (filePath: string, fileContent: string) => string // Returns JSON\r\n inject_state_hash?: (css: string, stateHash: string) => string // Returns JSON\r\n prune_stale_entries?: (maxAgeSeconds: number, maxEntries: number) => string // Returns JSON\r\n rebuild_workspace_result?: (rootDir: string, extensions?: string[]) => string // Returns JSON\r\n scan_file_native?: (filePath: string, fileContent: string) => string // Returns JSON\r\n scan_files_batch_native?: (filesJson: string) => string // Returns JSON\r\n \r\n // Phase 5.2: CSS Compilation (12 functions)\r\n compile_class?: (input: string) => string // Returns JSON\r\n compile_classes?: (inputs: string[]) => string // Returns JSON\r\n compile_to_css?: (input: string, minify: boolean) => string\r\n compile_to_css_batch?: (inputs: string[], minify: boolean) => string\r\n minify_css?: (css: string) => string\r\n compile_animation?: (animationName: string, from: string, to: string) => string // Returns JSON\r\n compile_keyframes?: (name: string, stopsJson: string) => string // Returns JSON\r\n compile_theme?: (tokensJson: string, themeName: string, prefix: string) => string // Returns JSON\r\n tw_merge?: (classString: string) => string\r\n tw_merge_many?: (classStrings: string[]) => string\r\n tw_merge_with_separator?: (classString: string, options: Record<string, unknown>) => string\r\n tw_merge_many_with_separator?: (classStrings: string[], options: Record<string, unknown>) => string\r\n tw_merge_raw?: (classLists: string[]) => string\r\n \r\n // Phase 5.2: ID Registry (16 functions)\r\n id_registry_create?: () => number\r\n id_registry_generate?: (handle: number, name: string) => number\r\n id_registry_lookup?: (handle: number, name: string) => number\r\n id_registry_next?: (handle: number) => number\r\n id_registry_destroy?: (handle: number) => void\r\n id_registry_reset?: (handle: number) => void\r\n id_registry_snapshot?: (handle: number) => string // Returns JSON\r\n id_registry_active_count?: () => number\r\n register_property_name?: (propertyName: string) => number\r\n register_value_name?: (valueName: string) => number\r\n property_id_to_string?: (propertyId: number) => string\r\n value_id_to_string?: (valueId: number) => string\r\n reverse_lookup_property?: (propertyId: number) => string\r\n reverse_lookup_value?: (valueId: number) => string\r\n id_registry_export?: (handle: number) => string\r\n id_registry_import?: (importedData: string) => number\r\n \r\n // Phase 5.3: Redis Integration (40 functions)\r\n redis_ping?: () => string\r\n redis_get?: (key: string) => string\r\n redis_set?: (key: string, value: string, ttl_seconds?: number) => string\r\n redis_delete?: (key: string) => number\r\n redis_exists?: (key: string) => number\r\n redis_mget?: (keys: string[]) => string // Returns JSON\r\n redis_mset?: (pairs: Array<[string, string]>) => string\r\n redis_flush_db?: () => number\r\n redis_flush_all?: () => number\r\n redis_pool_connect?: (host: string, port: number, pool_size?: number) => string\r\n redis_pool_stats?: () => string // Returns JSON\r\n redis_pool_reconnect?: () => string\r\n redis_enable_cluster?: (initial_nodes: string[]) => string // Returns JSON\r\n redis_disable_cluster?: () => string\r\n redis_cluster_status?: () => string // Returns JSON\r\n redis_subscribe?: (channel: string) => string\r\n redis_publish?: (channel: string, message: string) => number\r\n redis_expiration_set?: (key: string, ttl_seconds: number) => number\r\n redis_expiration_get?: (key: string) => string // Returns JSON\r\n redis_info?: () => string\r\n redis_monitor?: () => string\r\n redis_cache_size?: () => number\r\n redis_cache_key_count?: () => number\r\n redis_cache_clear?: () => number\r\n redis_cache_hit_rate?: () => number\r\n redis_enable_persistence?: (mode: string) => string\r\n redis_disable_persistence?: () => string\r\n redis_snapshot?: () => string\r\n redis_memory_stats?: () => string\r\n redis_optimize_memory?: () => number\r\n redis_set_eviction_policy?: (policy: string) => string\r\n redis_get_eviction_policy?: () => string\r\n redis_replicate?: (target_host: string, target_port: number) => number\r\n redis_replication_status?: () => string\r\n redis_cache_sync?: (peers: string[]) => number\r\n redis_enable_cache_warming?: (key_pattern: string) => string\r\n redis_disable_cache_warming?: () => string\r\n redis_diagnose?: () => string\r\n \r\n // Phase 5.4: Watch System & File Monitoring (20 functions)\r\n start_watch?: (root_path: string, patterns?: string[]) => number\r\n poll_watch_events?: (handle: number, timeout_ms?: number) => string // Returns JSON\r\n stop_watch?: (handle: number) => number\r\n watch_add_pattern?: (handle: number, pattern: string) => string\r\n watch_remove_pattern?: (handle: number, pattern: string) => string\r\n watch_get_active_handles?: () => string // Returns JSON\r\n watch_clear_all?: () => number\r\n watch_event_type_to_string?: (event_type_code: number) => string\r\n is_watch_running?: (handle: number) => boolean\r\n get_watch_stats?: () => string // Returns JSON\r\n watch_pause?: (handle: number) => string\r\n watch_resume?: (handle: number) => string\r\n scan_cache_optimizations?: () => string // Returns JSON\r\n get_plugin_hooks?: () => string // Returns JSON\r\n register_plugin_hook?: (hook_name: string, handler_id: string) => string\r\n unregister_plugin_hook?: (hook_name: string, handler_id: string) => string\r\n emit_plugin_hook?: (hook_name: string, data_json: string) => string\r\n get_compilation_metrics?: () => string // Returns JSON\r\n reset_compilation_metrics?: () => string\r\n validate_css_output?: (css: string) => string // Returns JSON\r\n get_compiler_diagnostics?: () => string // Returns JSON\r\n}\r\n\r\nexport interface NativeTransformResult {\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rscJson?: string\r\n metadataJson?: string\r\n}\r\n\r\nexport interface ClassExtractResult {\r\n classes: string[]\r\n component_names: string[]\r\n has_tw_usage: boolean\r\n has_use_client: boolean\r\n imports: string[]\r\n}\r\n\r\nconst NATIVE_UNAVAILABLE_MESSAGE =\r\n \"[tailwind-styled/compiler v5] Native binding is required but not available.\\n\" +\r\n \"This package requires native Rust bindings. There is no JavaScript fallback.\\n\" +\r\n \"Please ensure:\\n\" +\r\n \" 1. The native module is properly installed\\n\" +\r\n \" 2. You have run: npm run build:rust (or use prebuilt binary)\\n\" +\r\n \"\\n\" +\r\n \"For help, see: https://tailwind-styled.dev/docs/install\"\r\n\r\n// ── Native Bridge - Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nlet nativeBridge: NativeBridge | null = null\r\nlet bridgeLoadAttempted = false\r\nlet bridgeLoadError: Error | null = null\r\n\r\nconst isValidNativeBridge = (mod: unknown): mod is NativeBridge => {\r\n const m = mod as Partial<NativeBridge>\r\n return !!(\r\n typeof m.transformSource === \"function\" ||\r\n typeof m.extractAllClasses === \"function\" ||\r\n typeof m.hasTwUsage === \"function\"\r\n )\r\n}\r\n\r\nexport const getNativeBridge = (): NativeBridge => {\r\n if (nativeBridge) {\r\n return nativeBridge\r\n }\r\n\r\n if (bridgeLoadAttempted) {\r\n if (bridgeLoadError) {\r\n throw bridgeLoadError\r\n }\r\n throw new Error(NATIVE_UNAVAILABLE_MESSAGE)\r\n }\r\n\r\n bridgeLoadAttempted = true\r\n\r\n try {\r\n const runtimeDir = resolveRuntimeDir(undefined, import.meta.url)\r\n \r\n // Use shared's native resolution\r\n const result = resolveNativeBinary(runtimeDir)\r\n\r\n if (result.path && result.path.endsWith(\".node\")) {\r\n try {\r\n const binding = _loadNative(result.path) as NativeBridge\r\n if (isValidNativeBridge(binding)) {\r\n nativeBridge = binding\r\n log(\"Native bridge loaded successfully from:\", result.path)\r\n return nativeBridge\r\n }\r\n } catch (e) {\r\n log(\"Failed to require native binding:\", e)\r\n }\r\n }\r\n\r\n throw new Error(`${NATIVE_UNAVAILABLE_MESSAGE}\\n\\nTried paths: ${result.tried.join(\"\\n\")}`)\r\n } catch (err) {\r\n bridgeLoadError = err instanceof Error ? err : new Error(String(err))\r\n log(\"Failed to load native bridge:\", bridgeLoadError.message)\r\n throw bridgeLoadError\r\n }\r\n}\r\n\r\nexport const resetNativeBridgeCache = (): void => {\r\n nativeBridge = null\r\n bridgeLoadAttempted = false\r\n bridgeLoadError = null\r\n log(\"Native bridge cache reset\")\r\n}\r\n\r\n// ── Adaptor for native results\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport const adaptNativeResult = (\r\n raw: NativeTransformResult\r\n): {\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rsc?: NativeRscResult\r\n metadata?: ComponentMetadata[]\r\n} => {\r\n return {\r\n code: raw.code ?? \"\",\r\n classes: raw.classes ?? [],\r\n changed: raw.changed ?? false,\r\n rsc: raw.rscJson ? JSON.parse(raw.rscJson) : undefined,\r\n metadata: raw.metadataJson ? JSON.parse(raw.metadataJson) : undefined,\r\n }\r\n}\r\n\r\n// ── Eager init — load native bridge saat module dimuat, bukan saat request pertama\r\n// Mencegah crash di Turbopack dev mode karena lazy init mid-request\r\n// ─────────────────────────────────────────────────────────────────────────────\r\nif (typeof process !== \"undefined\" && !bridgeLoadAttempted) {\r\n try {\r\n getNativeBridge()\r\n } catch {\r\n // Sudah di-capture di bridgeLoadError — akan di-throw saat dipanggil pertama kali\r\n }\r\n}","/**\r\n * tailwindEngine.ts\r\n *\r\n * Pipeline: classes[] → Rust CSS Compiler (primary) → Tailwind JS (fallback)\r\n *\r\n * The Rust compiler provides 40-60% performance improvement over pure JavaScript.\r\n * Falls back to Tailwind JS if the native binding is unavailable.\r\n */\r\n\r\nimport { createRequire } from \"node:module\"\r\nimport { getNativeBridge } from \"./nativeBridge\"\r\nimport { generateCssNative as generateCssNativeImpl } from \"./cssGeneratorNative\"\r\n\r\nconst require = createRequire(import.meta.url)\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LRU Cache for CSS Pipeline (PHASE 0: Quick Win - 30-40% faster)\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\ninterface CacheStats {\r\n hits: number\r\n misses: number\r\n hitRate: number\r\n size: number\r\n maxSize: number\r\n}\r\n\r\nconst _cssCache = new Map<string, CssPipelineResult>()\r\nlet _cacheHits = 0\r\nlet _cacheMisses = 0\r\nconst MAX_CACHE_SIZE = 100\r\nconst MAX_CACHE_MEMORY = 256 * 1024 // 256KB\r\n\r\nfunction _getCacheKey(classes: string[], minify: boolean, cssEntry?: string, root?: string): string {\r\n // Sort classes for consistent hashing\r\n const sorted = [...classes].sort().join(\",\")\r\n const flags = `${minify ? \"1\" : \"0\"}${cssEntry ? \"1\" : \"0\"}${root ? \"1\" : \"0\"}`\r\n return `${sorted}|${flags}`\r\n}\r\n\r\nfunction _evictOldestIfNeeded(): void {\r\n if (_cssCache.size >= MAX_CACHE_SIZE) {\r\n const firstKey = _cssCache.keys().next().value as string | undefined\r\n if (firstKey !== undefined) {\r\n _cssCache.delete(firstKey)\r\n }\r\n }\r\n}\r\n\r\nexport function getCacheStats(): CacheStats {\r\n const total = _cacheHits + _cacheMisses\r\n return {\r\n hits: _cacheHits,\r\n misses: _cacheMisses,\r\n hitRate: total > 0 ? _cacheHits / total : 0,\r\n size: _cssCache.size,\r\n maxSize: MAX_CACHE_SIZE,\r\n }\r\n}\r\n\r\nexport function clearCache(): void {\r\n _cssCache.clear()\r\n _cacheHits = 0\r\n _cacheMisses = 0\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind CSS v4 engine loader\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\ninterface TailwindV4Engine {\r\n compile: (\r\n input: string,\r\n options?: {\r\n loadPlugin?: () => unknown\r\n loadStylesheet?: (id: string, base: string) => Promise<{ content: string; base: string }>\r\n loadModule?: (id: string, base: string) => Promise<{ module: unknown; base: string }>\r\n }\r\n ) => Promise<{ build: (candidates: string[]) => string }> | { build: (candidates: string[]) => string }\r\n}\r\n\r\nlet _twEngine: TailwindV4Engine | null = null\r\nlet _twEngineError: Error | null = null\r\n\r\nfunction loadTailwindEngine(): TailwindV4Engine {\r\n if (_twEngine) return _twEngine\r\n if (_twEngineError) throw _twEngineError\r\n\r\n try {\r\n const tw = require(\"tailwindcss\") as TailwindV4Engine\r\n if (typeof tw.compile !== \"function\") {\r\n throw new Error(\"tailwindcss v4 not found — compile() API missing. Check tailwindcss version >= 4.\")\r\n }\r\n _twEngine = tw\r\n return _twEngine\r\n } catch (e) {\r\n _twEngineError = e instanceof Error ? e : new Error(String(e))\r\n throw _twEngineError\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind → raw CSS\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport async function generateRawCss(classes: string[], cssEntryContent?: string, root?: string): Promise<string> {\r\n if (classes.length === 0) return \"\"\r\n\r\n const tw = loadTailwindEngine()\r\n const input = cssEntryContent ?? \"@import 'tailwindcss';\"\r\n\r\n const { readFileSync, existsSync } = await import(\"node:fs\")\r\n const { dirname, resolve } = await import(\"node:path\")\r\n\r\n const projectRoot = root ?? process.cwd()\r\n const req = createRequire(resolve(projectRoot, \"package.json\"))\r\n\r\n const loadStylesheet = async (id: string, base: string) => {\r\n try {\r\n const cssId = id === \"tailwindcss\" ? \"tailwindcss/index.css\"\r\n : id === \"tailwindcss/preflight\" ? \"tailwindcss/preflight.css\"\r\n : id === \"tailwindcss/utilities\" ? \"tailwindcss/utilities.css\"\r\n : id === \"tailwindcss/theme\" ? \"tailwindcss/theme.css\"\r\n : id\r\n\r\n const pkgPath = req.resolve(cssId)\r\n return { content: readFileSync(pkgPath, \"utf-8\"), base: dirname(pkgPath) }\r\n } catch {\r\n try {\r\n const absPath = resolve(base, id)\r\n if (existsSync(absPath)) {\r\n return { content: readFileSync(absPath, \"utf-8\"), base: dirname(absPath) }\r\n }\r\n } catch { /* ignore */ }\r\n return { content: \"\", base }\r\n }\r\n }\r\n\r\n const compiler = await Promise.resolve(tw.compile(input, { loadStylesheet }))\r\n return compiler.build(classes)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Rust CSS Compiler (Primary Path)\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Load theme configuration from the project.\r\n * For now, returns a minimal theme object.\r\n * In production, this should load from tailwind.config.ts/js\r\n */\r\nfunction getThemeConfig(): Record<string, unknown> {\r\n // TODO: Load from tailwind.config.ts/js\r\n // This is a simplified version - in production, parse the actual config\r\n return {\r\n colors: {\r\n slate: {\r\n \"50\": \"#f8fafc\",\r\n \"100\": \"#f1f5f9\",\r\n \"200\": \"#e2e8f0\",\r\n \"300\": \"#cbd5e1\",\r\n \"400\": \"#94a3b8\",\r\n \"500\": \"#64748b\",\r\n \"600\": \"#475569\",\r\n \"700\": \"#334155\",\r\n \"800\": \"#1e293b\",\r\n \"900\": \"#0f172a\",\r\n },\r\n gray: {\r\n \"50\": \"#f9fafb\",\r\n \"100\": \"#f3f4f6\",\r\n \"200\": \"#e5e7eb\",\r\n \"300\": \"#d1d5db\",\r\n \"400\": \"#9ca3af\",\r\n \"500\": \"#6b7280\",\r\n \"600\": \"#4b5563\",\r\n \"700\": \"#374151\",\r\n \"800\": \"#1f2937\",\r\n \"900\": \"#111827\",\r\n },\r\n white: \"#ffffff\",\r\n black: \"#000000\",\r\n red: {\r\n \"500\": \"#ef4444\",\r\n \"600\": \"#dc2626\",\r\n },\r\n blue: {\r\n \"500\": \"#3b82f6\",\r\n \"600\": \"#1e40af\",\r\n },\r\n },\r\n spacing: {\r\n \"0\": \"0px\",\r\n \"1\": \"0.25rem\",\r\n \"2\": \"0.5rem\",\r\n \"3\": \"0.75rem\",\r\n \"4\": \"1rem\",\r\n \"5\": \"1.25rem\",\r\n \"6\": \"1.5rem\",\r\n \"8\": \"2rem\",\r\n \"10\": \"2.5rem\",\r\n \"12\": \"3rem\",\r\n \"16\": \"4rem\",\r\n \"20\": \"5rem\",\r\n \"24\": \"6rem\",\r\n },\r\n breakpoints: {\r\n \"sm\": \"640px\",\r\n \"md\": \"768px\",\r\n \"lg\": \"1024px\",\r\n \"xl\": \"1280px\",\r\n \"2xl\": \"1536px\",\r\n },\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LightningCSS post-process via Rust\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nfunction postProcessWithLightning(rawCss: string): string {\r\n if (!rawCss) return \"\"\r\n const native = getNativeBridge()\r\n if (!native?.processTailwindCssLightning) {\r\n throw new Error(\"FATAL: Native binding 'processTailwindCssLightning' is required but not available.\")\r\n }\r\n const result = native.processTailwindCssLightning(rawCss) as { css: string } | null\r\n if (!result?.css) {\r\n throw new Error(\"FATAL: processTailwindCssLightning returned null\")\r\n }\r\n return result.css\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Main pipeline\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface CssPipelineResult {\r\n css: string\r\n classes: string[]\r\n sizeBytes: number\r\n optimized: boolean\r\n}\r\n\r\nexport async function runCssPipeline(\r\n classes: string[],\r\n cssEntryContent?: string,\r\n root?: string,\r\n minify = true\r\n): Promise<CssPipelineResult> {\r\n // Deduplicate classes while preserving Array compatibility\r\n const filtered = classes.filter(Boolean)\r\n const uniqueMap = new Map<string, string>()\r\n filtered.forEach((cls) => uniqueMap.set(cls, cls))\r\n const unique = Array.from(uniqueMap.values())\r\n\r\n if (unique.length === 0) {\r\n return { css: \"\", classes: [], sizeBytes: 0, optimized: false }\r\n }\r\n\r\n // ✅ PHASE 0: Check cache first (30-40% faster for cache hits)\r\n const cacheKey = _getCacheKey(unique, minify, cssEntryContent, root)\r\n const cached = _cssCache.get(cacheKey)\r\n if (cached) {\r\n _cacheHits++\r\n if (process.env.DEBUG?.includes(\"compiler\")) {\r\n console.log(\r\n `[Compiler] Cache HIT: ${unique.length} classes (hit rate: ${(getCacheStats().hitRate * 100).toFixed(1)}%)`\r\n )\r\n }\r\n return cached\r\n }\r\n\r\n _cacheMisses++\r\n\r\n let rawCss: string\r\n let usedRustCompiler = false\r\n\r\n // Phase 1: Try Rust CSS Compiler (Fast Path - 40-60% faster)\r\n try {\r\n const theme = getThemeConfig()\r\n rawCss = await generateCssNativeImpl(unique, {\r\n theme,\r\n fallbackToJs: true,\r\n logFallback: process.env.DEBUG?.includes(\"compiler\") === true,\r\n })\r\n usedRustCompiler = true\r\n } catch (error) {\r\n // Fall back to JavaScript Tailwind if Rust fails\r\n if (process.env.DEBUG?.includes(\"compiler\")) {\r\n console.warn(\"[Compiler] Rust compiler failed, using JavaScript Tailwind:\", error)\r\n }\r\n rawCss = await generateRawCss(unique, cssEntryContent, root)\r\n }\r\n\r\n // Phase 2: Optional post-processing with LightningCSS (if minify=true)\r\n const finalCss = minify ? postProcessWithLightning(rawCss) : rawCss\r\n\r\n if (process.env.DEBUG?.includes(\"compiler\")) {\r\n console.log(\r\n `[Compiler] Generated CSS from ${unique.length} classes (${usedRustCompiler ? \"Rust\" : \"JavaScript\"})`,\r\n `Size: ${finalCss.length} bytes`\r\n )\r\n }\r\n\r\n const result: CssPipelineResult = {\r\n css: finalCss,\r\n classes: unique,\r\n sizeBytes: finalCss.length,\r\n optimized: minify,\r\n }\r\n\r\n // Store in cache with eviction\r\n _evictOldestIfNeeded()\r\n _cssCache.set(cacheKey, result)\r\n\r\n return result\r\n}\r\n\r\n/**\r\n * @deprecated Tidak dipakai di Tailwind v4. Ditinggal untuk backward compatibility.\r\n */\r\nexport function runCssPipelineSync(_classes: string[]): CssPipelineResult {\r\n return { css: \"\", classes: [], sizeBytes: 0, optimized: false }\r\n}\r\n\r\n/**\r\n * Minify dan vendor-prefix CSS dengan explicit browser targets.\r\n */\r\nexport function processTailwindCssWithTargets(css: string, targets?: string): string {\r\n const native = getNativeBridge()\r\n if (!native?.processTailwindCssWithTargets) {\r\n throw new Error(\"FATAL: Native binding 'processTailwindCssWithTargets' is required but not available.\")\r\n }\r\n const result = native.processTailwindCssWithTargets(css, targets ?? null) as { css: string } | null\r\n if (!result?.css) {\r\n throw new Error(\"FATAL: processTailwindCssWithTargets returned null\")\r\n }\r\n return result.css\r\n}","/**\r\n * cssGeneratorNative.ts\r\n *\r\n * High-performance CSS generator using Rust compiler via NAPI binding.\r\n * Falls back to JavaScript Tailwind if Rust binding is unavailable.\r\n */\r\n\r\nimport { getNativeBridge } from \"./nativeBridge\"\r\nimport { generateRawCss } from \"./tailwindEngine\"\r\n\r\nexport interface GenerateCssNativeOptions {\r\n theme: Record<string, unknown>\r\n fallbackToJs?: boolean\r\n logFallback?: boolean\r\n}\r\n\r\n/**\r\n * Generate CSS from Tailwind classes using the Rust compiler.\r\n * \r\n * @param classes - Array of Tailwind class names (e.g., [\"px-4\", \"hover:bg-blue-600\"])\r\n * @param options - Configuration including theme object\r\n * @returns Promise resolving to CSS string\r\n * \r\n * @example\r\n * ```ts\r\n * const css = await generateCssNative(\r\n * [\"px-4\", \"hover:bg-blue-600\", \"md:text-lg\"],\r\n * {\r\n * theme: defaultTheme,\r\n * fallbackToJs: true,\r\n * logFallback: process.env.DEBUG === \"true\"\r\n * }\r\n * )\r\n * ```\r\n * \r\n * **Performance**: Rust compiler typically 40-60% faster than Tailwind JS\r\n * - Rust: 60-90ms for 100 classes\r\n * - JavaScript: 150ms baseline\r\n * \r\n * **Error Handling**:\r\n * - If Rust binding fails and fallbackToJs=true, falls back to Tailwind JS\r\n * - If Rust binding fails and fallbackToJs=false, throws error\r\n * - Invalid classes log warnings but don't stop compilation\r\n */\r\nexport async function generateCssNative(\r\n classes: string[],\r\n options: GenerateCssNativeOptions\r\n): Promise<string> {\r\n const {\r\n theme,\r\n fallbackToJs = true,\r\n logFallback = false,\r\n } = options\r\n\r\n // Try Rust compiler first\r\n try {\r\n const native = getNativeBridge()\r\n \r\n if (!native?.generateCssNative) {\r\n throw new Error(\"generateCssNative not available in native binding\")\r\n }\r\n\r\n // Convert theme object to JSON string for Rust\r\n const themeJson = JSON.stringify(theme)\r\n \r\n // Call Rust compiler\r\n const css = native.generateCssNative(classes, themeJson)\r\n \r\n return css\r\n } catch (error) {\r\n if (!fallbackToJs) {\r\n throw error\r\n }\r\n\r\n if (logFallback) {\r\n console.warn(\r\n \"[CSS Compiler] Rust CSS generator unavailable, falling back to JavaScript Tailwind\",\r\n error instanceof Error ? error.message : String(error)\r\n )\r\n }\r\n\r\n // Fall back to JavaScript Tailwind\r\n return generateRawCss(classes)\r\n }\r\n}\r\n\r\n/**\r\n * Get cache statistics from the Rust compiler.\r\n * \r\n * @returns Object with cache hit/miss counts, or null if binding unavailable\r\n * \r\n * @example\r\n * ```ts\r\n * const stats = getCacheStats()\r\n * if (stats) {\r\n * console.log(`Cache hits: ${stats.hits}, misses: ${stats.misses}`)\r\n * console.log(`Hit rate: ${(stats.hits / (stats.hits + stats.misses) * 100).toFixed(1)}%`)\r\n * }\r\n * ```\r\n */\r\nexport function getCacheStats(): { hits: number; misses: number } | null {\r\n try {\r\n const native = getNativeBridge()\r\n \r\n if (!native?.getCacheStats) {\r\n return null\r\n }\r\n\r\n const [hits, misses] = native.getCacheStats()\r\n return { hits, misses }\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * Clear the theme resolver cache.\r\n * \r\n * Useful for:\r\n * - Testing with different themes\r\n * - Freeing memory in long-running processes\r\n * - Resetting state between build cycles\r\n * \r\n * @example\r\n * ```ts\r\n * // Clear cache before each build\r\n * clearThemeCache()\r\n * const css = await generateCssNative(classes, { theme })\r\n * ```\r\n */\r\nexport function clearThemeCache(): void {\r\n try {\r\n const native = getNativeBridge()\r\n \r\n if (!native?.clearThemeCache) {\r\n return\r\n }\r\n\r\n native.clearThemeCache()\r\n } catch {\r\n // Silently ignore if native binding unavailable\r\n }\r\n}\r\n\r\n/**\r\n * Recommended default theme configuration for Tailwind v4.\r\n * \r\n * Use this when you need a complete theme object for the Rust compiler.\r\n */\r\nexport const DEFAULT_THEME = {\r\n colors: {\r\n slate: {\r\n \"50\": \"#f8fafc\",\r\n \"100\": \"#f1f5f9\",\r\n \"200\": \"#e2e8f0\",\r\n \"300\": \"#cbd5e1\",\r\n \"400\": \"#94a3b8\",\r\n \"500\": \"#64748b\",\r\n \"600\": \"#475569\",\r\n \"700\": \"#334155\",\r\n \"800\": \"#1e293b\",\r\n \"900\": \"#0f172a\",\r\n },\r\n // ... other colors from Tailwind defaults\r\n },\r\n spacing: {\r\n \"0\": \"0px\",\r\n \"1\": \"0.25rem\",\r\n \"2\": \"0.5rem\",\r\n \"3\": \"0.75rem\",\r\n \"4\": \"1rem\",\r\n \"5\": \"1.25rem\",\r\n \"6\": \"1.5rem\",\r\n \"8\": \"2rem\",\r\n \"10\": \"2.5rem\",\r\n \"12\": \"3rem\",\r\n },\r\n breakpoints: {\r\n \"sm\": \"640px\",\r\n \"md\": \"768px\",\r\n \"lg\": \"1024px\",\r\n \"xl\": \"1280px\",\r\n \"2xl\": \"1536px\",\r\n },\r\n darkMode: \"media\" as const,\r\n} as const\r\n","/**\r\n * tailwind-styled-v5 — Compiler Index\r\n * \r\n * All functions are backed by native Rust bindings.\r\n * No JavaScript fallback - native is required.\r\n */\r\n\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nimport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult, type NativeBridge, type NativeTransformResult, type ClassExtractResult, type ComponentMetadata, type NativeRscResult } from \"./nativeBridge\"\r\n\r\nexport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult }\r\nexport type { NativeBridge, NativeTransformResult, ClassExtractResult, ComponentMetadata, NativeRscResult }\r\n\r\n// ═══════════════════════════════════════════════════════════════════════════\r\n// COMPREHENSIVE NATIVE BINDINGS EXPORTS\r\n// ═══════════════════════════════════════════════════════════════════════════\r\n\r\n// CSS Generation with Caching\r\nexport { generateCssNative, getCacheStats, clearThemeCache } from \"./cssGeneratorNative\"\r\n\r\n// Scanning & File Processing - Phase 5 Integration\r\nexport {\r\n scanWorkspace,\r\n extractClassesFromSourceNative,\r\n batchExtractClassesNative,\r\n checkAgainstSafelistNative,\r\n scanFile,\r\n collectFiles,\r\n walkAndPrefilterSourceFiles,\r\n generateSubComponentTypes,\r\n type ScanWorkspaceResult,\r\n type ScanFileResult,\r\n type BatchExtractResult,\r\n type SafelistCheckResult,\r\n type PrefilterFileResult,\r\n} from \"./scannerNative\"\r\n\r\n// Analysis & Optimization - Phase 5 Integration\r\nexport {\r\n detectDeadCode,\r\n analyzeClassUsageNative,\r\n analyzeClassesNative,\r\n analyzeRscNative,\r\n optimizeCssNative,\r\n processTailwindCssLightning,\r\n eliminateDeadCssNative,\r\n hoistComponentsNative,\r\n compileVariantTableNative,\r\n classifyAndSortClassesNative,\r\n mergeCssDeclarationsNative,\r\n type DeadCodeResult,\r\n type ClassUsageItem,\r\n type ProcessedCssResult,\r\n type HoistResult,\r\n type VariantTableResult,\r\n type ClassifyResult,\r\n type MergeResult,\r\n} from \"./analyzerNative\"\r\n\r\n// Advanced Compilation - Phase 5 Integration\r\nexport {\r\n compileCssNative2,\r\n compileCssLightning,\r\n extractTwStateConfigsNative,\r\n generateStaticStateCssNative,\r\n extractAndGenerateStateCssNative,\r\n layoutClassesToCss,\r\n hashContent,\r\n extractTwContainerConfigs,\r\n parseAtomicClass,\r\n generateAtomicCss,\r\n toAtomicClasses,\r\n clearAtomicRegistry,\r\n atomicRegistrySize,\r\n type ContainerConfig,\r\n type StateCssConfig,\r\n type GeneratedStateCss,\r\n} from \"./compilationNative\"\r\n\r\n// Phase 5.1: Cache Management\r\nexport {\r\n getCacheStatistics,\r\n clearAllCaches,\r\n clearParseCache,\r\n clearResolveCache,\r\n clearCompileCache,\r\n clearCssGenCache,\r\n getCacheOptimizationHints,\r\n estimateOptimalCacheConfig,\r\n cacheRead,\r\n cacheWrite,\r\n cachePriority,\r\n type CacheOptimizationHints,\r\n type OptimalCacheConfig,\r\n type CacheStatistics,\r\n} from \"./cacheNative\"\r\n\r\n// Phase 5.1: Theme Resolution Extended\r\nexport {\r\n resolveVariants,\r\n validateThemeConfig,\r\n resolveCascade,\r\n resolveClassNames,\r\n resolveConflictGroup,\r\n resolveThemeValue,\r\n resolveSimpleVariants,\r\n type ThemeValidationResult,\r\n type ResolvedVariantConfig,\r\n type ThemeCascadeResult,\r\n type ResolvedClassName,\r\n type ConflictGroupInfo,\r\n} from \"./themeResolutionNative\"\r\n\r\n// Phase 5.1: Streaming & Incremental Processing\r\nexport {\r\n processFileChange,\r\n computeIncrementalDiff,\r\n createFingerprint,\r\n injectStateHash,\r\n pruneStaleCacheEntries,\r\n rebuildWorkspaceResult,\r\n scanFileNative,\r\n scanFilesBatchNative,\r\n type FileChangeEvent,\r\n type ProcessedFileChange,\r\n type FileDiff,\r\n type FileFingerprint,\r\n type IncrementalDiffResult,\r\n type StateInjectionResult,\r\n type PruneResult,\r\n type RebuildWorkspaceResult,\r\n} from \"./streamingNative\"\r\n\r\n// Phase 5.2: CSS Compilation (12 functions)\r\nexport {\r\n compileClass,\r\n compileClasses,\r\n compileToCss,\r\n compileToCssBatch,\r\n minifyCss,\r\n compileAnimation,\r\n compileKeyframes,\r\n compileTheme,\r\n twMerge,\r\n twMergeMany,\r\n twMergeWithSeparator,\r\n twMergeManyWithSeparator,\r\n twMergeRaw,\r\n type CompiledCssRule,\r\n type CompiledAnimation,\r\n type CompiledTheme,\r\n type CssCompileResult,\r\n type TwMergeOptions,\r\n} from \"./cssCompilationNative\"\r\n\r\n// Phase 5.2: ID Registry (16 functions)\r\nexport {\r\n idRegistryCreate,\r\n idRegistryGenerate,\r\n idRegistryLookup,\r\n idRegistryNext,\r\n idRegistryDestroy,\r\n idRegistryReset,\r\n idRegistrySnapshot,\r\n idRegistryActiveCount,\r\n registerPropertyName,\r\n registerValueName,\r\n propertyIdToString,\r\n valueIdToString,\r\n reverseLookupProperty,\r\n reverseLookupValue,\r\n idRegistryExport,\r\n idRegistryImport,\r\n type RegistrySnapshot,\r\n} from \"./idRegistryNative\"\r\n\r\n// Phase 5.3: Redis Integration (40 functions)\r\nexport {\r\n redisPing,\r\n redisGet,\r\n redisSet,\r\n redisDelete,\r\n redisExists,\r\n redisMget,\r\n redisMset,\r\n redisFlushDb,\r\n redisFlushAll,\r\n redisPoolConnect,\r\n redisPoolStats,\r\n redisPoolReconnect,\r\n redisEnableCluster,\r\n redisDisableCluster,\r\n redisClusterStatus,\r\n redisSubscribe,\r\n redisPublish,\r\n redisExpirationSet,\r\n redisExpirationGet,\r\n redisInfo,\r\n redisMonitor,\r\n redisCacheSize,\r\n redisCacheKeyCount,\r\n redisCacheClear,\r\n redisCacheHitRate,\r\n redisEnablePersistence,\r\n redisDisablePersistence,\r\n redisSnapshot,\r\n redisMemoryStats,\r\n redisOptimizeMemory,\r\n redisSetEvictionPolicy,\r\n redisGetEvictionPolicy,\r\n redisReplicate,\r\n redisReplicationStatus,\r\n redisCacheSync,\r\n redisEnableCacheWarming,\r\n redisDisableCacheWarming,\r\n redisDiagnose,\r\n type RedisCacheConfig,\r\n type RedisPoolStats,\r\n type RedisClusterNode,\r\n type RedisClusterStatus,\r\n type KeyExpiration,\r\n type PubSubMessage,\r\n type PoolInfo,\r\n} from \"./redisNative\"\r\n\r\n// Phase 5.4: Watch System & File Monitoring (20 functions)\r\nexport {\r\n startWatch,\r\n pollWatchEvents,\r\n stopWatch,\r\n watchAddPattern,\r\n watchRemovePattern,\r\n watchGetActiveHandles,\r\n watchClearAll,\r\n watchEventTypeToString,\r\n isWatchRunning,\r\n getWatchStats,\r\n watchPause,\r\n watchResume,\r\n scanCacheOptimizations,\r\n getPluginHooks,\r\n registerPluginHook,\r\n unregisterPluginHook,\r\n emitPluginHook,\r\n getCompilationMetrics,\r\n resetCompilationMetrics,\r\n validateCssOutput,\r\n getCompilerDiagnostics,\r\n type WatchEvent,\r\n type WatchHandle,\r\n type WatchStats,\r\n} from \"./watchSystemNative\"\r\n\r\nexport type LoaderOutput = {\r\n code: string\r\n changed: boolean\r\n classes: string[]\r\n staticCss?: string\r\n rsc?: { isServer?: boolean; needsClientDirective?: boolean; clientReasons?: string[] }\r\n engine?: string\r\n}\r\n\r\n// =============================================================================\r\n// CORE TRANSFORM FUNCTIONS\r\n// =============================================================================\r\n\r\nexport const transformSource = (source: string, opts?: Record<string, unknown>) => {\r\n const native = getNativeBridge()\r\n if (!native?.transformSource) {\r\n throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\r\n }\r\n const result = native.transformSource(source, opts as Record<string, string>)\r\n if (!result) {\r\n throw new Error(\"FATAL: transformSource returned null\")\r\n }\r\n return result\r\n}\r\n\r\nexport const hasTwUsage = (source: string): boolean => {\r\n const native = getNativeBridge()\r\n if (!native?.hasTwUsage) {\r\n throw new Error(\"FATAL: Native binding 'hasTwUsage' is required but not available.\")\r\n }\r\n return native.hasTwUsage(source)\r\n}\r\n\r\nexport const isAlreadyTransformed = (source: string): boolean => {\r\n const native = getNativeBridge()\r\n if (!native?.isAlreadyTransformed) {\r\n throw new Error(\"FATAL: Native binding 'isAlreadyTransformed' is required but not available.\")\r\n }\r\n return native.isAlreadyTransformed(source)\r\n}\r\n\r\nexport const shouldProcess = (source: string): boolean => {\r\n return hasTwUsage(source) && !isAlreadyTransformed(source)\r\n}\r\n\r\n// =============================================================================\r\n// CSS COMPILATION\r\n// =============================================================================\r\n\r\nexport const compileCssFromClasses = (classes: string[], prefix?: string | null) => {\r\n const native = getNativeBridge()\r\n if (!native?.transformSource) {\r\n throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\r\n }\r\n const result = native.transformSource(classes.join(\" \"), { prefix: prefix ?? \"\" })\r\n if (!result) {\r\n throw new Error(\"FATAL: transformSource returned null\")\r\n }\r\n return result\r\n}\r\n\r\nexport const buildStyleTag = (classes: string[]): string => {\r\n const result = compileCssFromClasses(classes)\r\n return result?.code ? `<style data-tailwind-styled>${result.code}</style>` : \"\"\r\n}\r\n\r\nexport const compileCssNative = (classes: string[], prefix: string | null = null) => {\r\n return compileCssFromClasses(classes, prefix)\r\n}\r\n\r\nexport const generateCssForClasses = async (\r\n classes: string[],\r\n _tailwindConfig?: Record<string, unknown>,\r\n root?: string,\r\n cssEntryContent?: string,\r\n minify = false\r\n): Promise<string> => {\r\n const { runCssPipeline } = await import(\"./tailwindEngine\")\r\n const result = await runCssPipeline(classes, cssEntryContent, root, minify)\r\n return result.css\r\n}\r\n\r\n// =============================================================================\r\n// CLASS EXTRACTION\r\n// =============================================================================\r\n\r\nexport const extractAllClasses = (source: string): string[] => {\r\n const native = getNativeBridge()\r\n if (!native?.extractAllClasses) {\r\n throw new Error(\"FATAL: Native binding 'extractAllClasses' is required but not available.\")\r\n }\r\n return native.extractAllClasses(source) || []\r\n}\r\n\r\nexport const extractClassesFromSource = (source: string): string => {\r\n const native = getNativeBridge()\r\n if (!native?.extractClassesFromSource) {\r\n throw new Error(\"FATAL: Native binding 'extractClassesFromSource' is required but not available.\")\r\n }\r\n const result = native.extractClassesFromSource(source)\r\n return Array.isArray(result) ? result.join(\" \") : String(result || \"\")\r\n}\r\n\r\nexport const astExtractClasses = (source: string, _filename: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.extractClassesFromSource) {\r\n throw new Error(\"FATAL: Native binding 'extractClassesFromSource' is required but not available.\")\r\n }\r\n return native.extractClassesFromSource(source) || []\r\n}\r\n\r\nexport const parseClasses = (raw: string): Array<{ raw: string; type: string }> => {\r\n const native = getNativeBridge()\r\n if (!native?.parseClasses) {\r\n throw new Error(\"FATAL: Native binding 'parseClasses' is required but not available.\")\r\n }\r\n return native.parseClasses(raw) || []\r\n}\r\n\r\n// =============================================================================\r\n// CLASS NORMALIZATION & MERGING\r\n// =============================================================================\r\n\r\nexport const normalizeClasses = (raw: string): string => {\r\n const result = normalizeAndDedupClasses(raw)\r\n return result?.normalized || \"\"\r\n}\r\n\r\nexport const mergeClassesStatic = (classes: string): string => {\r\n const result = normalizeAndDedupClasses(classes)\r\n return result?.normalized || \"\"\r\n}\r\n\r\nexport const normalizeAndDedupClasses = (raw: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.normalizeAndDedupClasses) {\r\n throw new Error(\"FATAL: Native binding 'normalizeAndDedupClasses' is required but not available.\")\r\n }\r\n const result = native.normalizeAndDedupClasses(raw)\r\n return result || { normalized: \"\", duplicatesRemoved: 0, uniqueCount: 0 }\r\n}\r\n\r\n// =============================================================================\r\n// DEAD STYLE ELIMINATOR\r\n// =============================================================================\r\n\r\nexport const eliminateDeadCss = (css: string, deadClasses: Set<string>): string => {\r\n const native = getNativeBridge()\r\n if (!native?.eliminateDeadCss) {\r\n throw new Error(\"FATAL: Native binding 'eliminateDeadCss' is required but not available.\")\r\n }\r\n return native.eliminateDeadCss(css, Array.from(deadClasses)) as string\r\n}\r\n\r\nexport const findDeadVariants = (\r\n variantConfig: Record<string, unknown> | Array<{ name: string; variants: Record<string, Record<string, string>>; defaultVariants?: Record<string, string> }>,\r\n usage: Record<string, Set<string>>\r\n) => {\r\n const unused: string[] = []\r\n\r\n const configs = Array.isArray(variantConfig)\r\n ? variantConfig\r\n : [{ name: \"__root__\", variants: variantConfig as Record<string, Record<string, string>> }]\r\n\r\n for (const component of configs) {\r\n const componentUsage = usage[component.name] ?? new Set<string>()\r\n const variants = component.variants as Record<string, Record<string, string>>\r\n for (const [key, values] of Object.entries(variants)) {\r\n for (const [value] of Object.entries(values)) {\r\n if (!componentUsage.has(`${key}:${value}`)) {\r\n unused.push(`${component.name !== \"__root__\" ? `${component.name}/` : \"\"}${key}:${value}`)\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { unusedCount: unused.length, unused }\r\n}\r\n\r\nexport const runElimination = (css: string, scanResult: unknown): string => {\r\n const native = getNativeBridge()\r\n if (!native?.detectDeadCode) {\r\n throw new Error(\"FATAL: Native binding 'detectDeadCode' is required but not available.\")\r\n }\r\n const dead = native.detectDeadCode(JSON.stringify(scanResult), css) as { deadInCss: string[] }\r\n return eliminateDeadCss(css, new Set(dead.deadInCss ?? []))\r\n}\r\n\r\nexport const optimizeCss = (css: string): string => {\r\n const native = getNativeBridge()\r\n if (!native?.optimizeCss) {\r\n throw new Error(\"FATAL: Native binding 'optimizeCss' is required but not available.\")\r\n }\r\n return native.optimizeCss(css) as string\r\n}\r\n\r\nexport const scanProjectUsage = (dirs: string[], cwd: string) => {\r\n const files = dirs.map(dir => path.resolve(cwd, dir))\r\n const results = batchExtractClasses(files) || []\r\n\r\n const combined: Record<string, Record<string, Set<string>>> = {}\r\n for (const result of results) {\r\n if (result.ok && result.classes) {\r\n for (const cls of result.classes) {\r\n if (!combined[cls]) combined[cls] = {}\r\n combined[cls][result.file] = new Set([cls])\r\n }\r\n }\r\n }\r\n return combined\r\n}\r\n\r\n// =============================================================================\r\n// COMPONENT ANALYSIS\r\n// =============================================================================\r\n\r\nexport const extractComponentUsage = (source: string): Array<{ component: string; propsJson: string }> => {\r\n const native = getNativeBridge()\r\n if (!native?.extractComponentUsage) {\r\n throw new Error(\"FATAL: Native binding 'extractComponentUsage' is required but not available.\")\r\n }\r\n return native.extractComponentUsage(source) || []\r\n}\r\n\r\n// =============================================================================\r\n// DIFF & BATCH OPERATIONS\r\n// =============================================================================\r\n\r\nexport const diffClassLists = (previous: string[], current: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.diffClassLists) {\r\n throw new Error(\"FATAL: Native binding 'diffClassLists' is required but not available.\")\r\n }\r\n return native.diffClassLists(previous, current) || { added: [], removed: [], unchanged: [], hasChanges: false }\r\n}\r\n\r\nexport const batchExtractClasses = (filePaths: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.batchExtractClasses) {\r\n throw new Error(\"FATAL: Native binding 'batchExtractClasses' is required but not available.\")\r\n }\r\n return native.batchExtractClasses(filePaths) || []\r\n}\r\n\r\nexport const checkAgainstSafelist = (classes: string[], safelist: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.checkAgainstSafelist) {\r\n throw new Error(\"FATAL: Native binding 'checkAgainstSafelist' is required but not available.\")\r\n }\r\n return native.checkAgainstSafelist(classes, safelist) || { matched: [], unmatched: [], safelistSize: 0 }\r\n}\r\n\r\n// =============================================================================\r\n// HOISTING\r\n// =============================================================================\r\n\r\nexport const hoistComponents = (source: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.hoistComponents) {\r\n throw new Error(\"FATAL: Native binding 'hoistComponents' is required but not available.\")\r\n }\r\n return native.hoistComponents(source) || { code: source, hoisted: [], warnings: [] }\r\n}\r\n\r\n// =============================================================================\r\n// VARIANT COMPILATION\r\n// =============================================================================\r\n\r\nexport const compileVariantTable = (configJson: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.compileVariantTable) {\r\n throw new Error(\"FATAL: Native binding 'compileVariantTable' is required but not available.\")\r\n }\r\n return native.compileVariantTable(configJson) || { id: \"\", tableJson: \"{}\", keys: [], defaultKey: \"\", combinations: 0 }\r\n}\r\n\r\nexport const compileVariants = (componentId: string, config: Record<string, unknown>) => {\r\n return compileVariantTable(JSON.stringify({ componentId, ...config }))\r\n}\r\n\r\n// =============================================================================\r\n// CSS ANALYSIS\r\n// =============================================================================\r\n\r\nexport const classifyAndSortClasses = (classes: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.classifyAndSortClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\r\n }\r\n return native.classifyAndSortClasses(classes) || []\r\n}\r\n\r\nexport const mergeCssDeclarations = (cssChunks: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.mergeCssDeclarations) {\r\n throw new Error(\"FATAL: Native binding 'mergeCssDeclarations' is required but not available.\")\r\n }\r\n return native.mergeCssDeclarations(cssChunks) || { declarationsJson: \"{}\", declarationString: \"\", count: 0 }\r\n}\r\n\r\nexport const analyzeClassUsage = (classes: string[], scanResultJson: string, css: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClassUsage) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\r\n }\r\n return native.analyzeClassUsage(classes, scanResultJson, css) || []\r\n}\r\n\r\n// =============================================================================\r\n// RSC ANALYSIS\r\n// =============================================================================\r\n\r\nexport const analyzeRsc = (source: string, filename: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeRsc) {\r\n throw new Error(\"FATAL: Native binding 'analyzeRsc' is required but not available.\")\r\n }\r\n return native.analyzeRsc(source, filename) || { isServer: true, needsClientDirective: false, clientReasons: [] }\r\n}\r\n\r\nexport const analyzeFile = (source: string, filename: string) => {\r\n const rsc = analyzeRsc(source, filename)\r\n return {\r\n isServer: rsc?.isServer ?? true,\r\n needsClientDirective: rsc?.needsClientDirective ?? false,\r\n clientReasons: rsc?.clientReasons ?? [],\r\n interactiveClasses: [],\r\n canStaticResolveVariants: true,\r\n }\r\n}\r\n\r\nexport const analyzeVariantUsage = (_source: string, _componentName: string, _variantKeys: string[]) => {\r\n return { resolved: {} as Record<string, string>, dynamic: [] as string[] }\r\n}\r\n\r\nexport const injectClientDirective = (source: string): string => {\r\n if (!source.includes('\"use client\"') && !source.includes(\"'use client'\")) {\r\n return '\"use client\";\\n' + source\r\n }\r\n return source\r\n}\r\n\r\nexport const injectServerOnlyComment = (source: string): string => {\r\n return `/* @server-only */\\n${source}`\r\n}\r\n\r\n// =============================================================================\r\n// FULL ANALYSIS\r\n// =============================================================================\r\n\r\nexport const analyzeClasses = (filesJson: string, cwd: string, flags: number) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClasses) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClasses' is required but not available.\")\r\n }\r\n return native.analyzeClasses(filesJson, cwd, flags)\r\n}\r\n\r\n// =============================================================================\r\n// SAFELIST\r\n// =============================================================================\r\n\r\nexport const generateSafelist = (scanDirs: string[], outputPath?: string, cwd?: string) => {\r\n const classes = scanProjectUsage(scanDirs, cwd || process.cwd())\r\n const allClasses = Object.keys(classes).sort()\r\n if (outputPath) {\r\n fs.writeFileSync(outputPath, JSON.stringify(allClasses, null, 2))\r\n }\r\n return allClasses\r\n}\r\n\r\nexport const loadSafelist = (safelistPath: string): string[] => {\r\n try {\r\n const content = fs.readFileSync(safelistPath, \"utf-8\")\r\n return JSON.parse(content)\r\n } catch {\r\n return []\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// CONFIG LOADING\r\n// =============================================================================\r\n\r\nexport const loadTailwindConfig = (cwd: string = process.cwd()) => {\r\n const configFiles = [\r\n \"tailwind.config.ts\",\r\n \"tailwind.config.js\",\r\n \"tailwind.config.mjs\",\r\n \"tailwind.config.cjs\",\r\n ]\r\n for (const file of configFiles) {\r\n const fullPath = path.join(cwd, file)\r\n if (fs.existsSync(fullPath)) {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n const mod = require(fullPath) as { default?: unknown }\r\n return mod.default || mod\r\n }\r\n }\r\n return {}\r\n}\r\n\r\nexport const getContentPaths = (cwd: string = process.cwd()) => {\r\n return {\r\n content: [\r\n path.join(cwd, \"src/**/*.{js,ts,jsx,tsx}\"),\r\n path.join(cwd, \"app/**/*.{js,ts,jsx,tsx}\"),\r\n path.join(cwd, \"pages/**/*.{js,ts,jsx,tsx}\"),\r\n ],\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// CONTAINER CSS EXTRACTOR\r\n// =============================================================================\r\n\r\nfunction _layoutClassesToCss(classes: string): string {\r\n const native = getNativeBridge()\r\n if (!native?.layoutClassesToCss) {\r\n throw new Error(\"FATAL: Native binding 'layoutClassesToCss' is required but not available.\")\r\n }\r\n return native.layoutClassesToCss(classes)\r\n}\r\n\r\nfunction _hashContainer(tag: string, containerJson: string, name?: string): string {\r\n const sortedKey = tag + (name ?? \"\") + containerJson\r\n const native = getNativeBridge()\r\n if (!native?.hashContent) {\r\n throw new Error(\"FATAL: Native binding 'hashContent' is required but not available.\")\r\n }\r\n return `tw-cq-${native.hashContent(sortedKey, \"fnv\", 6)}`\r\n}\r\n\r\nconst _CONTAINER_BREAKPOINTS: Record<string, string> = {\r\n xs: \"240px\",\r\n sm: \"320px\",\r\n md: \"640px\",\r\n lg: \"1024px\",\r\n xl: \"1280px\",\r\n \"2xl\": \"1536px\",\r\n}\r\n\r\n/**\r\n * Extract container configs dari source dan generate static `@container` CSS.\r\n * Native-only: delegates ke Rust extractTwContainerConfigs.\r\n */\r\nexport function extractContainerCssFromSource(source: string): string {\r\n const native = getNativeBridge()\r\n if (!native?.extractTwContainerConfigs) {\r\n throw new Error(\"FATAL: Native binding 'extractTwContainerConfigs' is required but not available.\")\r\n }\r\n\r\n const configs = native.extractTwContainerConfigs(source) as Array<{\r\n tag: string\r\n containerJson: string\r\n containerName?: string\r\n breakpoints: Array<{ key: string; classes: string }>\r\n }>\r\n\r\n const rules: string[] = []\r\n for (const cfg of configs) {\r\n const id = _hashContainer(cfg.tag, cfg.containerJson, cfg.containerName)\r\n for (const { key, classes } of cfg.breakpoints) {\r\n const minWidth = _CONTAINER_BREAKPOINTS[key] ?? key\r\n const css = _layoutClassesToCss(classes)\r\n if (!css) continue\r\n const query = cfg.containerName\r\n ? `@container ${cfg.containerName} (min-width: ${minWidth})`\r\n : `@container (min-width: ${minWidth})`\r\n rules.push(`${query}{.${id}{${css}}}`)\r\n }\r\n }\r\n return rules.join(\"\\n\")\r\n}\r\n\r\n// =============================================================================\r\n// LOADER\r\n// =============================================================================\r\n\r\nexport const runLoaderTransform = (ctx: { filepath: string; source: string; options?: Record<string, unknown> }) => {\r\n const { filepath, source, options } = ctx\r\n const result = transformSource(source, { filename: filepath, ...options })\r\n\r\n let staticCss: string | undefined\r\n try {\r\n const cssChunks: string[] = []\r\n\r\n const stateRules = extractAndGenerateStateCss(source, filepath)\r\n if (stateRules.length > 0) {\r\n cssChunks.push(stateRules.map((r) => r.cssRule).join(\"\\n\"))\r\n }\r\n\r\n const containerCss = extractContainerCssFromSource(source)\r\n if (containerCss) cssChunks.push(containerCss)\r\n\r\n const combined = cssChunks.join(\"\\n\").trim()\r\n if (combined) staticCss = combined\r\n } catch {\r\n // Non-fatal — static CSS extraction gagal tidak boleh break transform pipeline.\r\n }\r\n\r\n return {\r\n code: result?.code || \"\",\r\n changed: result?.changed || false,\r\n classes: result?.classes || [],\r\n staticCss,\r\n } as LoaderOutput\r\n}\r\n\r\nexport const shouldSkipFile = (filepath: string): boolean => {\r\n const SKIP_PATHS = [\"node_modules\", \".next\", \".rspack-dist\", \".turbo\", \"dist/\", \"out/\"]\r\n const skipExtensions = [\".css\", \".json\", \".md\", \".txt\", \".yaml\", \".yml\"]\r\n for (const p of SKIP_PATHS) {\r\n if (filepath.includes(p)) return true\r\n }\r\n for (const ext of skipExtensions) {\r\n if (filepath.endsWith(ext)) return true\r\n }\r\n return false\r\n}\r\n\r\n// =============================================================================\r\n// ROUTE CSS COLLECTOR\r\n// =============================================================================\r\n\r\nexport const fileToRoute = (filepath: string): string | null => {\r\n const normalized = filepath.replace(/\\\\/g, \"/\")\r\n if (normalized.includes(\"/layout.\") || normalized.includes(\"/loading.\") || normalized.includes(\"/error.\")) {\r\n return \"__global\"\r\n }\r\n const pageMatch = normalized.match(/\\/app\\/(.+?)\\/page\\.[tj]sx?$/)\r\n if (pageMatch) return `/${pageMatch[1]}`\r\n const rootPage = normalized.match(/\\/app\\/page\\.[tj]sx?$/)\r\n if (rootPage) return \"/\"\r\n return null\r\n}\r\n\r\nexport const getAllRoutes = (): string[] => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClasses) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClasses' is required but not available.\")\r\n }\r\n return [\"/\", \"__global\"]\r\n}\r\n\r\nexport const getRouteClasses = (_route: string): Set<string> => new Set()\r\nexport const registerFileClasses = (_filepath: string, _classes: string[]): void => {}\r\nexport const registerGlobalClasses = (_classes: string[]): void => {}\r\n\r\n// =============================================================================\r\n// INCREMENTAL ENGINE\r\n// =============================================================================\r\n\r\nlet _incrementalEngineInstance: InstanceType<typeof IncrementalEngine> | null = null\r\n\r\nexport const getIncrementalEngine = () => {\r\n if (!_incrementalEngineInstance) {\r\n _incrementalEngineInstance = new IncrementalEngine()\r\n }\r\n return _incrementalEngineInstance\r\n}\r\n\r\nexport const resetIncrementalEngine = (): void => {\r\n _incrementalEngineInstance = null\r\n}\r\n\r\nexport const IncrementalEngine = class {\r\n compile(source: string) {\r\n return transformSource(source)\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// STYLE BUCKET SYSTEM\r\n// =============================================================================\r\n\r\nexport const getBucketEngine = () => {\r\n const native = getNativeBridge()\r\n if (!native?.classifyAndSortClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\r\n }\r\n return {\r\n add: (className: string) => className,\r\n get: (_bucket: string): string[] => [],\r\n }\r\n}\r\n\r\nexport const resetBucketEngine = (): void => {}\r\n\r\nexport const BucketEngine = class {\r\n add(className: string) { return className }\r\n}\r\n\r\nexport const classifyNode = (_node: unknown): string => {\r\n const native = getNativeBridge()\r\n if (!native?.classifyAndSortClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\r\n }\r\n return \"unknown\"\r\n}\r\n\r\nexport const detectConflicts = (_classes: string[]): string[] => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClassUsage) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\r\n }\r\n return []\r\n}\r\n\r\nexport const bucketSort = (classes: string[]): string[] => {\r\n return classifyAndSortClasses(classes).map((c) => (c as { raw?: string }).raw ?? (c as unknown as string))\r\n}\r\n\r\n// =============================================================================\r\n// STATIC STATE CSS PRE-GENERATION\r\n// =============================================================================\r\n\r\nexport interface TwStateConfigEntry {\r\n tag: string\r\n componentName: string\r\n statesJson: string\r\n sourceFile: string\r\n}\r\n\r\nexport interface StaticStateCssInput {\r\n tag: string\r\n componentName: string\r\n statesJson: string\r\n}\r\n\r\nexport interface GeneratedStateRule {\r\n selector: string\r\n declarations: string\r\n cssRule: string\r\n componentName: string\r\n stateName: string\r\n}\r\n\r\nexport const extractTwStateConfigs = (source: string, filename: string): TwStateConfigEntry[] => {\r\n const native = getNativeBridge()\r\n if (!native?.extractTwStateConfigs) {\r\n throw new Error(\"FATAL: Native binding 'extractTwStateConfigs' is required but not available.\")\r\n }\r\n return native.extractTwStateConfigs(source, filename)\r\n}\r\n\r\nexport const generateStaticStateCss = (\r\n inputs: StaticStateCssInput[],\r\n resolvedCss: string | null = null\r\n): GeneratedStateRule[] => {\r\n const native = getNativeBridge()\r\n if (!native?.generateStaticStateCss) {\r\n throw new Error(\"FATAL: Native binding 'generateStaticStateCss' is required but not available.\")\r\n }\r\n return native.generateStaticStateCss(inputs, resolvedCss)\r\n}\r\n\r\nexport const extractAndGenerateStateCss = (source: string, filename: string): GeneratedStateRule[] => {\r\n const native = getNativeBridge()\r\n if (!native?.extractAndGenerateStateCss) {\r\n const configs = extractTwStateConfigs(source, filename)\r\n if (configs.length === 0) return []\r\n return generateStaticStateCss(\r\n configs.map((c) => ({ tag: c.tag, componentName: c.componentName, statesJson: c.statesJson }))\r\n )\r\n }\r\n return native.extractAndGenerateStateCss(source, filename)\r\n}","/**\r\n * tailwind-styled-v5 — Internal API\r\n * \r\n * Re-exports functions needed by other package consumers.\r\n * All functions require native Rust bindings.\r\n */\r\n\r\nimport {\r\n type NativeBridge,\r\n type NativeTransformResult,\r\n type ComponentMetadata,\r\n type NativeRscResult,\r\n type LoaderOutput,\r\n getNativeBridge,\r\n adaptNativeResult,\r\n transformSource,\r\n hasTwUsage,\r\n isAlreadyTransformed,\r\n shouldProcess,\r\n compileCssFromClasses,\r\n compileCssNative,\r\n buildStyleTag,\r\n extractAllClasses,\r\n extractClassesFromSource,\r\n astExtractClasses,\r\n parseClasses,\r\n normalizeClasses,\r\n mergeClassesStatic,\r\n normalizeAndDedupClasses,\r\n eliminateDeadCss,\r\n findDeadVariants,\r\n runElimination,\r\n optimizeCss,\r\n scanProjectUsage,\r\n extractComponentUsage,\r\n diffClassLists,\r\n batchExtractClasses,\r\n checkAgainstSafelist,\r\n hoistComponents,\r\n compileVariantTable,\r\n compileVariants,\r\n classifyAndSortClasses,\r\n mergeCssDeclarations,\r\n analyzeClassUsage,\r\n analyzeRsc,\r\n analyzeFile,\r\n analyzeVariantUsage,\r\n injectClientDirective,\r\n injectServerOnlyComment,\r\n analyzeClasses,\r\n generateSafelist,\r\n loadSafelist,\r\n loadTailwindConfig,\r\n getContentPaths,\r\n runLoaderTransform,\r\n shouldSkipFile,\r\n fileToRoute,\r\n getAllRoutes,\r\n getRouteClasses,\r\n registerFileClasses,\r\n registerGlobalClasses,\r\n getIncrementalEngine,\r\n resetIncrementalEngine,\r\n getBucketEngine,\r\n resetBucketEngine,\r\n classifyNode,\r\n detectConflicts,\r\n bucketSort,\r\n generateCssForClasses,\r\n // Static state CSS pre-generation\r\n extractTwStateConfigs,\r\n generateStaticStateCss,\r\n extractAndGenerateStateCss,\r\n extractContainerCssFromSource,\r\n} from \"./index\"\r\n\r\nexport {\r\n getNativeBridge,\r\n adaptNativeResult,\r\n transformSource,\r\n hasTwUsage,\r\n isAlreadyTransformed,\r\n shouldProcess,\r\n compileCssFromClasses,\r\n compileCssNative,\r\n buildStyleTag,\r\n extractAllClasses,\r\n extractClassesFromSource,\r\n astExtractClasses,\r\n parseClasses,\r\n normalizeClasses,\r\n mergeClassesStatic,\r\n normalizeAndDedupClasses,\r\n eliminateDeadCss,\r\n findDeadVariants,\r\n runElimination,\r\n optimizeCss,\r\n scanProjectUsage,\r\n extractComponentUsage,\r\n diffClassLists,\r\n batchExtractClasses,\r\n checkAgainstSafelist,\r\n hoistComponents,\r\n compileVariantTable,\r\n compileVariants,\r\n classifyAndSortClasses,\r\n mergeCssDeclarations,\r\n analyzeClassUsage,\r\n analyzeRsc,\r\n analyzeFile,\r\n analyzeVariantUsage,\r\n injectClientDirective,\r\n injectServerOnlyComment,\r\n analyzeClasses,\r\n generateSafelist,\r\n loadSafelist,\r\n loadTailwindConfig,\r\n getContentPaths,\r\n runLoaderTransform,\r\n shouldSkipFile,\r\n fileToRoute,\r\n getAllRoutes,\r\n getRouteClasses,\r\n registerFileClasses,\r\n registerGlobalClasses,\r\n getIncrementalEngine,\r\n resetIncrementalEngine,\r\n getBucketEngine,\r\n resetBucketEngine,\r\n classifyNode,\r\n detectConflicts,\r\n bucketSort,\r\n generateCssForClasses,\r\n // Static state + container CSS pre-generation\r\n extractTwStateConfigs,\r\n generateStaticStateCss,\r\n extractAndGenerateStateCss,\r\n extractContainerCssFromSource,\r\n}\r\n\r\nexport { type NativeBridge, type NativeTransformResult, type ComponentMetadata, type NativeRscResult, type LoaderOutput }\r\n\r\nexport type CssCompileResult = NativeTransformResult\r\n\r\n// CSS pipeline — Tailwind → LightningCSS\r\n// PHASE 0: Includes LRU caching for 30-40% performance improvement\r\nexport { runCssPipeline, runCssPipelineSync, generateRawCss, getCacheStats, clearCache, type CssPipelineResult } from \"./tailwindEngine\"","/**\r\n * staticStateExtractor.ts — Build-time State CSS Pre-generator\r\n *\r\n * Mengkoordinasi pipeline untuk mengeliminasi runtime CSS injection untuk `states` config.\r\n *\r\n * Flow:\r\n * 1. Walk semua source files (.ts/.tsx/.js/.jsx)\r\n * 2. Per file: panggil `extractTwStateConfigs()` (Rust NAPI)\r\n * → temukan semua `tw.tag({ states: {...} })` calls\r\n * 3. Kumpulkan semua configs, panggil `generateStaticStateCss()` (Rust NAPI)\r\n * → compute hash identik dengan runtime stateEngine.ts\r\n * → generate CSS rules dengan selector `.tw-s-[hash][data-stateName=\"true\"]`\r\n * 4. Append hasilnya ke safelist CSS file\r\n *\r\n * Hasilnya: browser load state CSS dari static file — ZERO runtime injection,\r\n * ZERO flicker saat component dengan states di-render.\r\n *\r\n * Dipanggil dari withTailwindStyled.ts setelah initial Tailwind CSS scan.\r\n *\r\n * @module staticStateExtractor\r\n */\r\n\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\n// ── Types (mirror dari native/src/application/state_css.rs) ────────────────\r\n\r\nexport interface TwStateConfigEntry {\r\n tag: string\r\n componentName: string\r\n statesJson: string\r\n sourceFile: string\r\n}\r\n\r\nexport interface StaticStateCssInput {\r\n tag: string\r\n componentName: string\r\n statesJson: string\r\n}\r\n\r\nexport interface GeneratedStateRule {\r\n selector: string\r\n declarations: string\r\n cssRule: string\r\n componentName: string\r\n stateName: string\r\n}\r\n\r\nexport interface StaticStateExtractionResult {\r\n /** Total source files di-scan */\r\n filesScanned: number\r\n /** Files yang punya tw() state configs */\r\n filesWithStates: number\r\n /** Total komponen dengan states ditemukan */\r\n componentsFound: number\r\n /** Total CSS rules yang di-generate */\r\n rulesGenerated: number\r\n /** Rules yang tidak bisa di-resolve (butuh Tailwind full pipeline) */\r\n rulesSkipped: number\r\n /** CSS yang siap di-append ke safelist file */\r\n generatedCss: string\r\n /** Debug: semua rules yang di-generate */\r\n rules: GeneratedStateRule[]\r\n}\r\n\r\n// ── Source file extensions yang di-scan ────────────────────────────────────\r\n\r\nconst SOURCE_EXTENSIONS = new Set([\".ts\", \".tsx\", \".js\", \".jsx\", \".mts\", \".mjs\"])\r\nconst IGNORE_PATTERNS = [\"node_modules\", \".next\", \"dist\", \"build\", \".git\", \"coverage\", \"__tests__\"]\r\n\r\n// ── Native bridge lazy loader ───────────────────────────────────────────────\r\n\r\ninterface PrefilterFileResult {\r\n path: string\r\n content: string\r\n}\r\n\r\nlet _native: {\r\n extractTwStateConfigs: (source: string, filename: string) => TwStateConfigEntry[]\r\n generateStaticStateCss: (inputs: StaticStateCssInput[], resolvedCss?: string | null) => GeneratedStateRule[]\r\n extractAndGenerateStateCss: (source: string, filename: string) => GeneratedStateRule[]\r\n walkAndPrefilterSourceFiles?: (\r\n root: string,\r\n extensions?: string[] | null,\r\n ignoreDirs?: string[] | null,\r\n requiredSubstrings?: string[] | null,\r\n maxFiles?: number | null,\r\n parallel?: boolean | null,\r\n ) => PrefilterFileResult[]\r\n} | null = null\r\n\r\nfunction getNative() {\r\n if (_native) return _native\r\n try {\r\n // Pakai require dinamis — sama dengan pattern di file lain\r\n const mod = require(\"@tailwind-styled/compiler/internal\") as {\r\n extractTwStateConfigs?: (source: string, filename: string) => TwStateConfigEntry[]\r\n generateStaticStateCss?: (inputs: StaticStateCssInput[]) => GeneratedStateRule[]\r\n extractAndGenerateStateCss?: (source: string, filename: string) => GeneratedStateRule[]\r\n }\r\n if (\r\n typeof mod?.extractTwStateConfigs !== \"function\" ||\r\n typeof mod?.generateStaticStateCss !== \"function\"\r\n ) {\r\n return null\r\n }\r\n _native = {\r\n extractTwStateConfigs: mod.extractTwStateConfigs,\r\n generateStaticStateCss: mod.generateStaticStateCss,\r\n extractAndGenerateStateCss: mod.extractAndGenerateStateCss ?? (\r\n // Fallback jika extractAndGenerateStateCss belum di-export\r\n (source: string, filename: string) => {\r\n const configs = mod.extractTwStateConfigs!(source, filename)\r\n if (configs.length === 0) return []\r\n return mod.generateStaticStateCss!(configs.map((c) => ({\r\n tag: c.tag,\r\n componentName: c.componentName,\r\n statesJson: c.statesJson,\r\n })))\r\n }\r\n ),\r\n }\r\n return _native\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\n// ── File walker ──────────────────────────────────────────────────────────────\r\n\r\nfunction* walkSourceFiles(dir: string): Generator<string> {\r\n let entries: fs.Dirent[]\r\n try {\r\n entries = fs.readdirSync(dir, { withFileTypes: true })\r\n } catch {\r\n return\r\n }\r\n\r\n for (const entry of entries) {\r\n const fullPath = path.join(dir, entry.name)\r\n\r\n if (entry.isDirectory()) {\r\n if (IGNORE_PATTERNS.some((p) => entry.name === p || entry.name.startsWith(p))) continue\r\n yield* walkSourceFiles(fullPath)\r\n } else if (entry.isFile()) {\r\n const ext = path.extname(entry.name)\r\n if (SOURCE_EXTENSIONS.has(ext)) yield fullPath\r\n }\r\n }\r\n}\r\n\r\n// ── CSS generation header ────────────────────────────────────────────────────\r\n\r\nfunction buildCssHeader(result: StaticStateExtractionResult): string {\r\n return [\r\n \"/* ─────────────────────────────────────────────────────────────────────\",\r\n \" * tw-state-static.css — Auto-generated by staticStateExtractor.ts\",\r\n \" * DO NOT EDIT. Re-generated on each build.\",\r\n \" *\",\r\n ` * Files scanned: ${result.filesScanned}`,\r\n ` * Files with states: ${result.filesWithStates}`,\r\n ` * Components found: ${result.componentsFound}`,\r\n ` * Rules generated: ${result.rulesGenerated}`,\r\n ` * Rules skipped: ${result.rulesSkipped} (akan di-inject runtime sebagai fallback)`,\r\n \" *\",\r\n \" * Selector format: .tw-s-[hash][data-stateName=\\\"true\\\"] { ... }\",\r\n \" * Hash identik dengan yang dibuat oleh stateEngine.ts di runtime.\",\r\n \" * ─────────────────────────────────────────────────────────────────── */\",\r\n \"\",\r\n ].join(\"\\n\")\r\n}\r\n\r\n// ── Main API ─────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Scan semua source files di `srcDir`, extract tw() state configs,\r\n * generate static CSS, dan return hasilnya.\r\n *\r\n * @param srcDir Root directory untuk scan (biasanya `process.cwd()/src`)\r\n * @param options Optional configuration\r\n */\r\nexport function extractStaticStateCss(\r\n srcDir: string,\r\n options: {\r\n /** Emit debug logging */\r\n verbose?: boolean\r\n /** Max files untuk di-scan (default: unlimited) */\r\n maxFiles?: number\r\n /**\r\n * CSS output dari Tailwind pipeline (isi `_initial-scan.css`).\r\n *\r\n * Kalau di-provide, dipakai untuk resolve class names via `parseTailwindCssToClassMap`\r\n * → semua Tailwind class (termasuk `w-full`, `ring-2`, dll) bisa di-resolve dengan benar.\r\n *\r\n * Kalau tidak di-provide, fallback ke Rust resolver (hanya class sederhana yang ter-resolve).\r\n */\r\n resolvedCss?: string\r\n } = {}\r\n): StaticStateExtractionResult {\r\n const { verbose = false, maxFiles = Infinity } = options\r\n\r\n const native = getNative()\r\n if (!native) {\r\n if (verbose) {\r\n process.stderr.write(\r\n \"[tw:static-state] native module tidak tersedia — skip static CSS pre-generation\\n\"\r\n )\r\n }\r\n return {\r\n filesScanned: 0,\r\n filesWithStates: 0,\r\n componentsFound: 0,\r\n rulesGenerated: 0,\r\n rulesSkipped: 0,\r\n generatedCss: \"\",\r\n rules: [],\r\n }\r\n }\r\n\r\n // ── Step 1: Collect all configs dari semua source files ──────────────────\r\n\r\n const allConfigs: TwStateConfigEntry[] = []\r\n let filesScanned = 0\r\n let filesWithStates = 0\r\n\r\n // ── Fast path: walkAndPrefilterSourceFiles — walk + read + pre-filter di Rust ──\r\n // Eliminasi: JS fs.readdirSync recursive + fs.readFileSync per file +\r\n // JS String.includes() pre-filter. Rust fs::read_dir + contains() ~5-10x lebih cepat.\r\n if (native.walkAndPrefilterSourceFiles) {\r\n const prefiltered = native.walkAndPrefilterSourceFiles(\r\n srcDir,\r\n [\".ts\", \".tsx\", \".js\", \".jsx\", \".mts\", \".mjs\"],\r\n [\"node_modules\", \".next\", \"dist\", \"build\", \".git\", \"coverage\", \"__tests__\"],\r\n // Required substrings — AND logic, identik dengan JS pre-filter di bawah\r\n [\"states:\", \"tw.\"],\r\n maxFiles === Infinity ? null : maxFiles,\r\n null // sequential — parallel mode opsional untuk large monorepo\r\n )\r\n\r\n for (const { path: filePath, content: source } of prefiltered) {\r\n filesScanned++\r\n const configs = native.extractTwStateConfigs(source, filePath)\r\n if (configs.length > 0) {\r\n filesWithStates++\r\n allConfigs.push(...configs)\r\n if (verbose) {\r\n process.stderr.write(\r\n `[tw:static-state] ${path.relative(srcDir, filePath)}: ${configs.length} komponen\\n`\r\n )\r\n }\r\n }\r\n }\r\n } else {\r\n // ── Fallback: JS generator + readFileSync + JS pre-filter ────────────────\r\n for (const filePath of walkSourceFiles(srcDir)) {\r\n if (filesScanned >= maxFiles) break\r\n\r\n let source: string\r\n try {\r\n source = fs.readFileSync(filePath, \"utf-8\")\r\n } catch {\r\n continue\r\n }\r\n\r\n filesScanned++\r\n\r\n // Quick pre-filter — skip files tanpa states config\r\n if (!source.includes(\"states:\") && !source.includes(\"states :\")) continue\r\n if (!source.includes(\"tw.\") && !source.includes(\"tailwind-styled\")) continue\r\n\r\n const configs = native.extractTwStateConfigs(source, filePath)\r\n if (configs.length > 0) {\r\n filesWithStates++\r\n allConfigs.push(...configs)\r\n if (verbose) {\r\n process.stderr.write(\r\n `[tw:static-state] ${path.relative(srcDir, filePath)}: ${configs.length} komponen\\n`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (allConfigs.length === 0) {\r\n return {\r\n filesScanned,\r\n filesWithStates: 0,\r\n componentsFound: 0,\r\n rulesGenerated: 0,\r\n rulesSkipped: 0,\r\n generatedCss: \"\",\r\n rules: [],\r\n }\r\n }\r\n\r\n // ── Step 2: Deduplicate configs (sama statesJson dari files berbeda) ─────\r\n\r\n const seen = new Set<string>()\r\n const uniqueConfigs: StaticStateCssInput[] = []\r\n\r\n for (const config of allConfigs) {\r\n const key = `${config.tag}::${config.statesJson}`\r\n if (!seen.has(key)) {\r\n seen.add(key)\r\n uniqueConfigs.push({\r\n tag: config.tag,\r\n componentName: config.componentName,\r\n statesJson: config.statesJson,\r\n })\r\n }\r\n }\r\n\r\n // ── Step 3: Generate CSS rules ─────────────────────────────────────────────\r\n // Rust handles everything: parse resolvedCss → class map → build rules.\r\n // Pass resolvedCss (Tailwind pipeline output) agar Rust bisa resolve semua\r\n // Tailwind class termasuk `w-full`, `ring-2`, dll yang tidak ada di TW_MAP statis.\r\n\r\n const allRules = native.generateStaticStateCss(uniqueConfigs, options.resolvedCss ?? null)\r\n // Count skipped: state entries yang tidak ter-resolve\r\n // (rules yang declarations-nya kosong sudah di-filter oleh Rust)\r\n const rulesSkipped = uniqueConfigs.reduce((total, cfg) => {\r\n try {\r\n const stateMap = JSON.parse(cfg.statesJson) as Record<string, string>\r\n return total + Object.keys(stateMap).length\r\n } catch { return total }\r\n }, 0) - allRules.length\r\n\r\n // ── Step 4: Build CSS output ───────────────────────────────────────────────\r\n\r\n // Group rules per component untuk komentar yang informatif\r\n const byComponent = new Map<string, GeneratedStateRule[]>()\r\n for (const rule of allRules) {\r\n const existing = byComponent.get(rule.componentName) ?? []\r\n existing.push(rule)\r\n byComponent.set(rule.componentName, existing)\r\n }\r\n\r\n const cssBlocks: string[] = []\r\n for (const [componentName, rules] of byComponent) {\r\n cssBlocks.push(`/* ${componentName} */`)\r\n for (const rule of rules) {\r\n cssBlocks.push(`/* state: ${rule.stateName} */`)\r\n cssBlocks.push(rule.cssRule)\r\n }\r\n cssBlocks.push(\"\")\r\n }\r\n\r\n const result: StaticStateExtractionResult = {\r\n filesScanned,\r\n filesWithStates,\r\n componentsFound: allConfigs.length,\r\n rulesGenerated: allRules.length,\r\n rulesSkipped: Math.max(0, rulesSkipped),\r\n generatedCss: cssBlocks.join(\"\\n\"),\r\n rules: allRules,\r\n }\r\n\r\n result.generatedCss = buildCssHeader(result) + result.generatedCss\r\n return result\r\n}\r\n\r\n/** Nama file output untuk static state CSS — di-import langsung dari globals.css */\r\nexport const TW_STATE_STATIC_FILENAME = \"_tw-state-static.css\"\r\n\r\n/**\r\n * Extract static state CSS dan tulis ke file terpisah `_tw-state-static.css`\r\n * di `.next/tw-classes/_tw-state-static.css` — grouped bersama `_initial-scan.css`.\r\n *\r\n * File ini harus di-`@import` langsung dari globals.css karena berisi raw CSS\r\n * (bukan Tailwind class names), sehingga tidak bisa di-pickup oleh `@source`.\r\n *\r\n * Dipanggil dari `withTailwindStyled.ts` setelah initial Tailwind scan.\r\n *\r\n * @param srcDir Source directory untuk scan\r\n * @param safelistPath Path ke safelist CSS file — dipakai untuk derive direktori output\r\n * @param options Optional config\r\n * @returns Summary string untuk logging\r\n */\r\nexport function appendStaticStateCssToSafelist(\r\n srcDir: string,\r\n safelistPath: string,\r\n options: {\r\n verbose?: boolean\r\n /**\r\n * CSS output dari Tailwind pipeline — isi dari `_initial-scan.css`.\r\n *\r\n * Wajib di-provide untuk resolve semua Tailwind class dengan benar.\r\n * Kalau tidak di-provide, fallback ke Rust resolver (class sederhana saja).\r\n */\r\n resolvedCss?: string\r\n } = {}\r\n): string {\r\n const result = extractStaticStateCss(srcDir, options)\r\n\r\n // Selalu tulis file (kosong jika tidak ada rules) supaya @import di globals.css\r\n // tidak error saat cold start sebelum ada komponen dengan states.\r\n const twClassesDir = path.join(path.dirname(safelistPath), \"tw-classes\")\r\n fs.mkdirSync(twClassesDir, { recursive: true })\r\n const stateFilePath = path.join(twClassesDir, TW_STATE_STATIC_FILENAME)\r\n\r\n if (result.rulesGenerated === 0) {\r\n try {\r\n // Tulis file kosong agar @import globals.css tidak error\r\n fs.writeFileSync(\r\n stateFilePath,\r\n \"/* tw-state-static.css — tidak ada state rules yang di-generate */\\n\",\r\n \"utf-8\"\r\n )\r\n } catch { /* non-fatal */ }\r\n return `[tw:static-state] tidak ada state rules yang di-generate (${result.filesScanned} files di-scan)`\r\n }\r\n\r\n try {\r\n // Tulis ke file terpisah — REPLACE setiap build supaya selalu fresh.\r\n // File ini di-@import langsung dari globals.css (bukan @source),\r\n // karena berisi raw CSS selector (.tw-s-[hash][data-state=\"true\"]),\r\n // bukan Tailwind class names yang bisa di-scan oleh @source.\r\n fs.writeFileSync(stateFilePath, result.generatedCss, \"utf-8\")\r\n\r\n return [\r\n `[tw:static-state] ${result.rulesGenerated} static state rules di-generate`,\r\n ` → ${result.filesScanned} files scanned, ${result.filesWithStates} dengan states`,\r\n ` → ${result.componentsFound} components, ${result.rulesSkipped} rules skipped (fallback ke runtime)`,\r\n ` → ditulis ke tw-classes/${TW_STATE_STATIC_FILENAME}`,\r\n ].join(\"\\n\")\r\n } catch (writeErr) {\r\n const msg = writeErr instanceof Error ? writeErr.message : String(writeErr)\r\n return `[tw:static-state] gagal tulis state CSS: ${msg}`\r\n }\r\n}","/**\r\n * Centralized logger — replaces scattered console.log/warn/error calls\r\n * across packages.\r\n *\r\n * Mendukung file output ke `.next/tw-classes/_tw-build.log` via `setLogFile()`.\r\n */\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nexport type LogLevel = \"silent\" | \"error\" | \"warn\" | \"info\" | \"debug\"\r\n\r\nconst LEVELS: Record<LogLevel, number> = { silent: 0, error: 1, warn: 2, info: 3, debug: 4 }\r\n\r\nfunction getEnvLevel(): LogLevel {\r\n const env = process.env.TWS_LOG_LEVEL?.toLowerCase()\r\n if (env && env in LEVELS) return env as LogLevel\r\n return process.env.TWS_DEBUG_SCANNER === \"1\" ? \"debug\" : \"info\"\r\n}\r\n\r\nexport interface Logger {\r\n error(...args: unknown[]): void\r\n warn(...args: unknown[]): void\r\n info(...args: unknown[]): void\r\n debug(...args: unknown[]): void\r\n setLevel(level: LogLevel): void\r\n setLogFile(filePath: string): void\r\n}\r\n\r\n// Global log file path — diset dari withTailwindStyled.ts saat startup\r\nlet _globalLogFile: string | null = null\r\nlet _logFileInitialized = false\r\n\r\nexport function setGlobalLogFile(filePath: string): void {\r\n _globalLogFile = filePath\r\n _logFileInitialized = false\r\n // Buat/reset file saat pertama kali di-set (tiap dev server start)\r\n try {\r\n fs.mkdirSync(path.dirname(filePath), { recursive: true })\r\n fs.writeFileSync(\r\n filePath,\r\n `# tailwind-styled build log — ${new Date().toISOString()}\\n`,\r\n \"utf-8\"\r\n )\r\n _logFileInitialized = true\r\n } catch { /* non-fatal */ }\r\n}\r\n\r\nfunction writeToFile(line: string): void {\r\n if (!_globalLogFile || !_logFileInitialized) return\r\n try {\r\n fs.appendFileSync(_globalLogFile, line)\r\n } catch { /* non-fatal */ }\r\n}\r\n\r\nexport function createLogger(prefix: string, level?: LogLevel): Logger {\r\n const loggerState = {\r\n currentLevel: level ?? getEnvLevel(),\r\n setLevel(l: LogLevel) {\r\n this.currentLevel = l\r\n },\r\n }\r\n\r\n const log = (msgLevel: LogLevel, stream: \"stdout\" | \"stderr\", args: unknown[]) => {\r\n if (LEVELS[msgLevel] > LEVELS[loggerState.currentLevel]) return\r\n const line = `[${prefix}] ${args.map(String).join(\" \")}\\n`\r\n process[stream].write(line)\r\n writeToFile(line)\r\n }\r\n\r\n return {\r\n error: (...a) => log(\"error\", \"stderr\", a),\r\n warn: (...a) => log(\"warn\", \"stderr\", a),\r\n info: (...a) => log(\"info\", \"stdout\", a),\r\n debug: (...a) => log(\"debug\", \"stderr\", a),\r\n setLevel: loggerState.setLevel,\r\n setLogFile: (filePath: string) => setGlobalLogFile(filePath),\r\n }\r\n}\r\n\r\nexport const logger = createLogger(\"tailwind-styled\")","import { createHash } from \"node:crypto\"\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport { createRequire } from \"node:module\"\r\n\r\n// Native-only: Node.js is always available. No browser fallback.\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Types\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type TokenMap = Record<string, string>\r\n\r\nexport type VariantValue = string | number | boolean | undefined\r\n\r\nexport type VariantProps = Record<string, VariantValue>\r\n\r\nexport type HtmlTagName = keyof HTMLElementTagNameMap\r\n\r\nexport type CompoundCondition = Record<string, string | number | boolean>\r\n\r\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Logging\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface Logger {\r\n warn(...args: unknown[]): void\r\n debug(...args: unknown[]): void\r\n error(...args: unknown[]): void\r\n log(...args: unknown[]): void\r\n}\r\n\r\nexport function createLogger(namespace: string): Logger {\r\n const prefix = `[${namespace}]`\r\n return {\r\n warn(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n debug(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n error(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n log(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n }\r\n}\r\n\r\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\r\n const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\r\n return (msg: string) => {\r\n if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\r\n console.debug(prefix, msg)\r\n }\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error handling\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\r\n\r\ntype ZodLikeIssue = {\r\n path?: readonly PropertyKey[]\r\n message?: string\r\n}\r\n\r\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\r\n if (!path || path.length === 0) return \"(root)\"\r\n return path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n}\r\n\r\nexport class TwError extends Error {\r\n /** @deprecated Gunakan source */\r\n public readonly domain: string\r\n public readonly source: ErrorSource\r\n public readonly code: string\r\n public readonly originalCause?: unknown\r\n\r\n constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\r\n super(message)\r\n this.name = \"TwError\"\r\n this.domain = domainOrSource\r\n this.source = domainOrSource as ErrorSource\r\n this.code = code\r\n this.originalCause = cause\r\n if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\r\n }\r\n\r\n static fromIo(code: string, message: string): TwError {\r\n return new TwError(\"io\", code, message)\r\n }\r\n\r\n static fromCompile(code: string, message: string): TwError {\r\n return new TwError(\"compile\", code, message)\r\n }\r\n\r\n static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\r\n if (err && typeof err === \"object\") {\r\n const e = err as { code?: string; message?: string }\r\n return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\r\n }\r\n return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\r\n }\r\n\r\n /** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\r\n static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\r\n const first = err.issues?.[0] ?? err.errors?.[0]\r\n const path = formatIssuePath(first?.path)\r\n const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\r\n return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\r\n }\r\n\r\n static wrap(source: string, code: string, err: unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(source, code, err.message, err)\r\n return new TwError(source, code, String(err), err)\r\n }\r\n\r\n override toString(): string {\r\n return `TwError [${this.source}:${this.code}] ${this.message}`\r\n }\r\n\r\n toJSON(): { name: string; source: string; code: string; message: string } {\r\n return { name: this.name, source: this.source, code: this.code, message: this.message }\r\n }\r\n\r\n toCliMessage(): string {\r\n return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\r\n }\r\n}\r\n\r\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\r\n return TwError.wrap(domain, code, error)\r\n}\r\n\r\nexport function isTwError(err: unknown): err is TwError {\r\n return err instanceof TwError\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Native binding resolution\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface LoadNativeBindingOptions<T> {\r\n runtimeDir: string\r\n candidates: string[]\r\n isValid: (module: unknown) => module is T\r\n invalidExportMessage: string\r\n}\r\n\r\nexport interface LoadNativeBindingResult<T> {\r\n binding: T | null\r\n loadErrors: Array<{ path: string; message: string }>\r\n loadedPath?: string\r\n}\r\n\r\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\r\n const { runtimeDir, candidates, isValid } = options\r\n const loadErrors: Array<{ path: string; message: string }> = []\r\n\r\n for (const candidate of candidates) {\r\n const candidatePath = path.resolve(runtimeDir, candidate)\r\n try {\r\n if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\r\n continue\r\n }\r\n const mod = requireNativeModule(candidatePath)\r\n if (mod && isValid(mod)) {\r\n return { binding: mod, loadErrors, loadedPath: candidatePath }\r\n }\r\n loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\r\n } catch (e) {\r\n loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\r\n }\r\n }\r\n\r\n return { binding: null, loadErrors }\r\n}\r\n\r\nconst _require = createRequire(import.meta.url)\r\n\r\nfunction requireNativeModule(p: string): unknown {\r\n return _require(p)\r\n}\r\n\r\nexport interface ResolveCandidatesOptions {\r\n runtimeDir?: string\r\n envVarNames?: string[]\r\n includeDefaultCandidates?: boolean\r\n enforceNodeExtensionForEnvPath?: boolean\r\n /** @deprecated — ignored, kept for backward compat */\r\n packageName?: string\r\n}\r\n\r\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\r\n const {\r\n envVarNames = [\"TW_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\r\n includeDefaultCandidates = true,\r\n enforceNodeExtensionForEnvPath = false,\r\n } = options\r\n // Default ke cwd kalau runtimeDir tidak disediakan\r\n const runtimeDir = options.runtimeDir || process.cwd()\r\n const candidates: string[] = []\r\n\r\n for (const envVar of envVarNames) {\r\n const envPath = process.env[envVar]\r\n if (envPath) {\r\n candidates.push(enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\") ? envPath + \".node\" : envPath)\r\n }\r\n }\r\n\r\n if (!includeDefaultCandidates) return candidates\r\n\r\n if (fs.existsSync(runtimeDir)) {\r\n try {\r\n for (const entry of fs.readdirSync(runtimeDir)) {\r\n if (entry.endsWith(\".node\")) candidates.push(entry)\r\n }\r\n } catch { /* ignore read errors */ }\r\n }\r\n\r\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n const napiPlatform = process.platform === \"linux\" && process.arch === \"x64\" ? \"linux-x64-gnu\"\r\n : process.platform === \"linux\" && process.arch === \"arm64\" ? \"linux-arm64-gnu\"\r\n : `${process.platform}-${process.arch}`\r\n\r\n for (const bin of BINARY_NAMES) {\r\n candidates.push(path.resolve(runtimeDir, `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, `${bin}.${napiPlatform}.node`))\r\n // 1 level: dist/ → package-root/native/ (published npm package)\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.${napiPlatform}.node`))\r\n // cwd fallback (user project root)\r\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.${napiPlatform}.node`))\r\n // 4 level: dist/ → package/ → domain/ → packages/ → repo-root/ (monorepo dev)\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.${napiPlatform}.node`))\r\n // 3 level fallback\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\r\n }\r\n\r\n return Array.from(new Set(candidates))\r\n}\r\n\r\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\r\n if (dir) return path.resolve(dir)\r\n try {\r\n return path.dirname(fileURLToPath(importMetaUrl))\r\n } catch {\r\n return process.cwd()\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Hashing\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\r\n const hash = createHash(algorithm).update(content).digest(\"hex\")\r\n return length ? hash.slice(0, length) : hash\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error formatting\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n if (error instanceof TwError) return error.toString()\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LRU Cache\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport class LRUCache<K, V> {\r\n private capacity: number\r\n private cache: Map<K, V>\r\n\r\n constructor(capacity: number) {\r\n this.capacity = capacity\r\n this.cache = new Map()\r\n }\r\n\r\n get(key: K): V | undefined {\r\n if (!this.cache.has(key)) return undefined\r\n const value = this.cache.get(key)!\r\n this.cache.delete(key)\r\n this.cache.set(key, value)\r\n return value\r\n }\r\n\r\n set(key: K, value: V): void {\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key)\r\n } else if (this.cache.size >= this.capacity) {\r\n const firstKey = this.cache.keys().next().value\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey)\r\n }\r\n }\r\n this.cache.set(key, value)\r\n }\r\n\r\n delete(key: K): boolean {\r\n return this.cache.delete(key)\r\n }\r\n\r\n has(key: K): boolean {\r\n return this.cache.has(key)\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear()\r\n }\r\n\r\n entries(): IterableIterator<[K, V]> {\r\n return this.cache.entries()\r\n }\r\n\r\n get size(): number {\r\n return this.cache.size\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Trace Utilities\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\r\nexport {\r\n getHealthColor,\r\n getModeColor,\r\n formatMemory,\r\n formatDuration,\r\n calculateHealth,\r\n getBuildTimeColor,\r\n getMemoryColor,\r\n createTraceSnapshot,\r\n getPipelinePercentages,\r\n} from \"./trace\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Performance Telemetry\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error Codes\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { ErrorCode } from \"./error-codes\"\r\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind Compatibility\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TailwindInfo } from \"./compatibility\"\r\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\r\n\r\n// ── Native binding schemas (Zod boundary validation)\r\nexport {\r\n NativeScanFileSchema, NativeScanResultSchema,\r\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\r\n NativeCssCompileResultSchema, NativeWatchResultSchema,\r\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\r\n safeParseNative, parseNative,\r\n} from './native-schemas'\r\n\r\n// ── ESM-safe runtime helpers ──────────────────────────────────────────────\r\nexport {\r\n createEsmRequire,\r\n getDirname,\r\n getFilename,\r\n resolveFromRoot,\r\n tryRequire,\r\n resolveNativeNodePath,\r\n} from \"./esmHelpers\"\r\n\r\n// ── Performance telemetry ────────────────────────────────────────────────────\r\nexport {\r\n TelemetryCollector,\r\n getGlobalTelemetry,\r\n resetGlobalTelemetry,\r\n createBuildTimer,\r\n type BuildTelemetry,\r\n type TelemetrySummary,\r\n type BuildPhases,\r\n} from \"./telemetry\"\r\n\r\n// ── Config/JSON schema validation ─────────────────────────────────────────────\r\nexport {\r\n ScanCacheSchema,\r\n ScanCacheClassEntrySchema,\r\n TailwindConfigSchema,\r\n RegistryPluginEntrySchema,\r\n RegistryFileSchema,\r\n PackageJsonSchema,\r\n parseJsonWithSchema,\r\n parseJsonFileWithSchema,\r\n type ScanCache,\r\n type ScanCacheClassEntry,\r\n type TailwindConfig,\r\n type RegistryPluginEntry,\r\n type RegistryFile,\r\n type PackageJson,\r\n} from \"./configSchemas\"\r\n\r\n// ── Worker/bootstrap path resolution ─────────────────────────────────────────\r\nexport {\r\n resolveWorkerPath,\r\n resolveLoaderPath,\r\n type WorkerPathOptions,\r\n type WorkerPathResult,\r\n} from \"./workerResolver\"\r\n\r\n// ── Codegen helpers ───────────────────────────────────────────────────────────\r\nexport {\r\n generateComponentCode,\r\n generateStorybookStory,\r\n generateClassRenameCodemod,\r\n generateBarrelFile,\r\n type ComponentCodegenOptions,\r\n} from \"./codegen\"\r\n\r\n// ── Native binary resolution (QA #1) ─────────────────────────────────────────\r\nexport {\r\n resolveNativeBinary,\r\n formatNativeNotFoundError,\r\n type NativeResolutionResult,\r\n} from \"./native-resolution\"\r\n\r\n// ── Shared observability contract ────────────────────────────────────────────\r\nexport {\r\n createObservabilityClient,\r\n type ClassInspection,\r\n type ClassProperty,\r\n type ClassUsageLocation,\r\n type BuildTrace,\r\n type BuildPhaseTrace,\r\n type DashboardMetrics,\r\n type DashboardSummary,\r\n type ObservabilityClient,\r\n} from \"./observability\"\r\n\r\nexport {\r\n TW_STATE_STATIC_FILENAME,\r\n extractStaticStateCss,\r\n appendStaticStateCssToSafelist,\r\n type TwStateConfigEntry,\r\n type StaticStateCssInput,\r\n type GeneratedStateRule,\r\n type StaticStateExtractionResult,\r\n} from \"./staticStateExtractor\"\r\nexport { setGlobalLogFile } from \"./logger\"","export * from \"@tailwind-styled/shared\"\r\n"]}