tailwind-styled-v4 4.0.0 → 5.0.1

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 (194) hide show
  1. package/CHANGELOG.md +398 -0
  2. package/LICENSE +21 -0
  3. package/README.md +532 -0
  4. package/dist/analyzer.d.mts +114 -0
  5. package/dist/analyzer.d.ts +114 -0
  6. package/dist/analyzer.js +1555 -0
  7. package/dist/analyzer.js.map +1 -0
  8. package/dist/analyzer.mjs +1544 -0
  9. package/dist/analyzer.mjs.map +1 -0
  10. package/dist/animate.d.mts +46 -0
  11. package/dist/animate.d.ts +41 -112
  12. package/dist/animate.js +792 -235
  13. package/dist/animate.js.map +1 -1
  14. package/dist/animate.mjs +782 -0
  15. package/dist/animate.mjs.map +1 -0
  16. package/dist/atomic.d.mts +18 -0
  17. package/dist/atomic.d.ts +18 -0
  18. package/dist/atomic.js +191 -0
  19. package/dist/atomic.js.map +1 -0
  20. package/dist/atomic.mjs +185 -0
  21. package/dist/atomic.mjs.map +1 -0
  22. package/dist/cli.d.mts +1 -0
  23. package/dist/cli.d.ts +1 -0
  24. package/dist/cli.js +6063 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/cli.mjs +6053 -0
  27. package/dist/cli.mjs.map +1 -0
  28. package/dist/{compiler.d.cts → compiler.d.mts} +503 -210
  29. package/dist/compiler.d.ts +503 -210
  30. package/dist/compiler.js +1549 -566
  31. package/dist/compiler.js.map +1 -1
  32. package/dist/{compiler.cjs → compiler.mjs} +1476 -627
  33. package/dist/compiler.mjs.map +1 -0
  34. package/dist/dashboard.d.mts +272 -0
  35. package/dist/dashboard.d.ts +272 -0
  36. package/dist/dashboard.js +249 -0
  37. package/dist/dashboard.js.map +1 -0
  38. package/dist/dashboard.mjs +239 -0
  39. package/dist/dashboard.mjs.map +1 -0
  40. package/dist/devtools.js +336 -211
  41. package/dist/devtools.js.map +1 -1
  42. package/dist/{devtools.cjs → devtools.mjs} +331 -220
  43. package/dist/devtools.mjs.map +1 -0
  44. package/dist/engine.d.mts +84 -0
  45. package/dist/engine.d.ts +84 -0
  46. package/dist/engine.js +3014 -0
  47. package/dist/engine.js.map +1 -0
  48. package/dist/engine.mjs +3005 -0
  49. package/dist/engine.mjs.map +1 -0
  50. package/dist/{index.d.cts → index.d.mts} +75 -4
  51. package/dist/index.d.ts +75 -4
  52. package/dist/index.js +1341 -149
  53. package/dist/index.js.map +1 -1
  54. package/dist/index.mjs +2162 -0
  55. package/dist/index.mjs.map +1 -0
  56. package/dist/liveTokenEngine-DYN3Zale.d.mts +34 -0
  57. package/dist/liveTokenEngine-DYN3Zale.d.ts +34 -0
  58. package/dist/next.d.mts +55 -0
  59. package/dist/next.d.ts +30 -20
  60. package/dist/next.js +6947 -149
  61. package/dist/next.js.map +1 -1
  62. package/dist/next.mjs +7050 -0
  63. package/dist/next.mjs.map +1 -0
  64. package/dist/plugin.d.mts +90 -0
  65. package/dist/plugin.d.ts +90 -0
  66. package/dist/plugin.js +185 -0
  67. package/dist/plugin.js.map +1 -0
  68. package/dist/plugin.mjs +174 -0
  69. package/dist/plugin.mjs.map +1 -0
  70. package/dist/pluginRegistry.d.mts +83 -0
  71. package/dist/pluginRegistry.d.ts +83 -0
  72. package/dist/pluginRegistry.js +303 -0
  73. package/dist/pluginRegistry.js.map +1 -0
  74. package/dist/pluginRegistry.mjs +298 -0
  75. package/dist/pluginRegistry.mjs.map +1 -0
  76. package/dist/{preset.d.cts → preset.d.mts} +29 -2
  77. package/dist/preset.d.ts +29 -2
  78. package/dist/preset.js +318 -21
  79. package/dist/preset.js.map +1 -1
  80. package/dist/preset.mjs +414 -0
  81. package/dist/preset.mjs.map +1 -0
  82. package/dist/rspack.d.mts +33 -0
  83. package/dist/rspack.d.ts +33 -0
  84. package/dist/rspack.js +55 -0
  85. package/dist/rspack.js.map +1 -0
  86. package/dist/rspack.mjs +45 -0
  87. package/dist/rspack.mjs.map +1 -0
  88. package/dist/runtime.d.mts +62 -0
  89. package/dist/runtime.d.ts +62 -0
  90. package/dist/runtime.js +207 -0
  91. package/dist/runtime.js.map +1 -0
  92. package/dist/runtime.mjs +188 -0
  93. package/dist/runtime.mjs.map +1 -0
  94. package/dist/runtimeCss.d.mts +65 -0
  95. package/dist/runtimeCss.d.ts +65 -0
  96. package/dist/runtimeCss.js +188 -0
  97. package/dist/runtimeCss.js.map +1 -0
  98. package/dist/runtimeCss.mjs +173 -0
  99. package/dist/runtimeCss.mjs.map +1 -0
  100. package/dist/scanner.d.mts +25 -0
  101. package/dist/scanner.d.ts +25 -0
  102. package/dist/scanner.js +717 -0
  103. package/dist/scanner.js.map +1 -0
  104. package/dist/scanner.mjs +703 -0
  105. package/dist/scanner.mjs.map +1 -0
  106. package/dist/shared.d.mts +85 -0
  107. package/dist/shared.d.ts +85 -0
  108. package/dist/shared.js +255 -0
  109. package/dist/shared.js.map +1 -0
  110. package/dist/shared.mjs +233 -0
  111. package/dist/shared.mjs.map +1 -0
  112. package/dist/storybookAddon.d.mts +108 -0
  113. package/dist/storybookAddon.d.ts +108 -0
  114. package/dist/storybookAddon.js +95 -0
  115. package/dist/storybookAddon.js.map +1 -0
  116. package/dist/storybookAddon.mjs +88 -0
  117. package/dist/storybookAddon.mjs.map +1 -0
  118. package/dist/svelte.d.mts +114 -0
  119. package/dist/svelte.d.ts +114 -0
  120. package/dist/svelte.js +67 -0
  121. package/dist/svelte.js.map +1 -0
  122. package/dist/svelte.mjs +59 -0
  123. package/dist/svelte.mjs.map +1 -0
  124. package/dist/testing.d.mts +185 -0
  125. package/dist/testing.d.ts +185 -0
  126. package/dist/testing.js +173 -0
  127. package/dist/testing.js.map +1 -0
  128. package/dist/testing.mjs +158 -0
  129. package/dist/testing.mjs.map +1 -0
  130. package/dist/{theme.d.cts → theme.d.mts} +18 -11
  131. package/dist/theme.d.ts +18 -11
  132. package/dist/theme.js +205 -19
  133. package/dist/theme.js.map +1 -1
  134. package/dist/theme.mjs +311 -0
  135. package/dist/theme.mjs.map +1 -0
  136. package/dist/types-DXr2PmGP.d.mts +31 -0
  137. package/dist/types-DXr2PmGP.d.ts +31 -0
  138. package/dist/vite.d.mts +51 -0
  139. package/dist/vite.d.ts +35 -6
  140. package/dist/vite.js +4254 -57
  141. package/dist/vite.js.map +1 -1
  142. package/dist/vite.mjs +4281 -0
  143. package/dist/vite.mjs.map +1 -0
  144. package/dist/vue.d.mts +89 -0
  145. package/dist/vue.d.ts +89 -0
  146. package/dist/vue.js +104 -0
  147. package/dist/vue.js.map +1 -0
  148. package/dist/vue.mjs +96 -0
  149. package/dist/vue.mjs.map +1 -0
  150. package/package.json +173 -67
  151. package/dist/animate.cjs +0 -252
  152. package/dist/animate.cjs.map +0 -1
  153. package/dist/animate.d.cts +0 -117
  154. package/dist/astTransform-ua-eapqs.d.cts +0 -41
  155. package/dist/astTransform-ua-eapqs.d.ts +0 -41
  156. package/dist/compiler.cjs.map +0 -1
  157. package/dist/css.cjs +0 -71
  158. package/dist/css.cjs.map +0 -1
  159. package/dist/css.d.cts +0 -45
  160. package/dist/css.d.ts +0 -45
  161. package/dist/css.js +0 -62
  162. package/dist/css.js.map +0 -1
  163. package/dist/devtools.cjs.map +0 -1
  164. package/dist/index.cjs +0 -1058
  165. package/dist/index.cjs.map +0 -1
  166. package/dist/next.cjs +0 -268
  167. package/dist/next.cjs.map +0 -1
  168. package/dist/next.d.cts +0 -45
  169. package/dist/plugins.cjs +0 -396
  170. package/dist/plugins.cjs.map +0 -1
  171. package/dist/plugins.d.cts +0 -231
  172. package/dist/plugins.d.ts +0 -231
  173. package/dist/plugins.js +0 -381
  174. package/dist/plugins.js.map +0 -1
  175. package/dist/preset.cjs +0 -129
  176. package/dist/preset.cjs.map +0 -1
  177. package/dist/theme.cjs +0 -154
  178. package/dist/theme.cjs.map +0 -1
  179. package/dist/turbopackLoader.cjs +0 -2689
  180. package/dist/turbopackLoader.cjs.map +0 -1
  181. package/dist/turbopackLoader.d.cts +0 -22
  182. package/dist/turbopackLoader.d.ts +0 -22
  183. package/dist/turbopackLoader.js +0 -2681
  184. package/dist/turbopackLoader.js.map +0 -1
  185. package/dist/vite.cjs +0 -105
  186. package/dist/vite.cjs.map +0 -1
  187. package/dist/vite.d.cts +0 -22
  188. package/dist/webpackLoader.cjs +0 -2670
  189. package/dist/webpackLoader.cjs.map +0 -1
  190. package/dist/webpackLoader.d.cts +0 -24
  191. package/dist/webpackLoader.d.ts +0 -24
  192. package/dist/webpackLoader.js +0 -2662
  193. package/dist/webpackLoader.js.map +0 -1
  194. /package/dist/{devtools.d.cts → devtools.d.mts} +0 -0
package/dist/vite.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../vite/src/plugin.ts"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,SAAS,oBAAA,CAAqB,IAAA,GAA0B,EAAC,EAAQ;AACtE,EAAA,MAOI,EAAA,GAAA,IAAA,EANF;AAAA,IAAA,OAAA,GAAU,oBAAA;AAAA,IACV,OAAA,GAAU,cAAA;AAAA,IACV,QAAA,GAAW,CAAC,KAAK,CAAA;AAAA,IACjB,cAAA,GAAiB,gCAAA;AAAA,IACjB,kBAAkB,UAAA,GAAa;AAAA,GA5BnC,GA8BM,EAAA,EADC,aAAA,GAAA,SAAA,CACD,EAAA,EADC;AAAA,IALH,SAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAIF,EAAA,IAAI,IAAA,GAAO,QAAQ,GAAA,EAAI;AACvB,EAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,oBAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,eAAe,MAAA,EAAa;AAC1B,MAAA,IAAA,GAAO,MAAA,CAAO,IAAA;AACd,MAAA,KAAA,GAAQ,OAAO,OAAA,KAAY,OAAA;AAAA,IAC7B,CAAA;AAAA,IAEA,SAAA,CAAU,QAAgB,EAAA,EAAY;AA5C1C,MAAA,IAAAA,GAAAA,EAAA,EAAA;AA6CM,MAAA,MAAM,QAAA,GAAW,EAAA,CAAG,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAChC,MAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,QAAQ,GAAG,OAAO,IAAA;AACpC,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,IAAA;AACnC,MAAA,IAAI,CAAC,aAAA,CAAc,QAAQ,CAAA,EAAG,OAAO,IAAA;AAErC,MAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,MAAA,EAAQ,aAAA,CAAA,cAAA,CAAA,EAAA,EAClC,aAAA,CAAA,EADkC;AAAA,QAErC,OAAMA,GAAAA,GAAA,aAAA,CAAc,SAAd,IAAA,GAAAA,GAAAA,GAAuB,QAAQ,SAAA,GAAY,cAAA;AAAA,QACjD,WAAA,EAAA,CAAa,EAAA,GAAA,aAAA,CAAc,WAAA,KAAd,IAAA,GAAA,EAAA,GAA6B,KAAA;AAAA,QAC1C,QAAA,EAAU;AAAA,OACZ,CAAC,CAAA;AAED,MAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,IAAA;AAC5B,MAAA,OAAO,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,IACxC,CAAA;AAAA,IAEA,QAAA,GAAW;AACT,MAAA,IAAI,CAAC,cAAc,KAAA,EAAO;AAE1B,MAAA,IAAI;AACF,QAAA,gBAAA;AAAA,UACE,QAAA,CAAS,IAAI,CAAC,CAAA,KAAM,KAAK,OAAA,CAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,UACzC,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,cAAc,CAAA;AAAA,UACjC;AAAA,SACF;AAAA,MACF,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,IAAA,CAAK,oDAAoD,CAAC,CAAA;AAAA,MACpE;AAAA,IACF,CAAA;AAAA,IAEA,eAAA,CAAgB,EAAE,IAAA,EAAM,MAAA,EAAO,EAAQ;AACrC,MAAA,IAAI,QAAQ,IAAA,CAAK,IAAI,CAAA,IAAK,aAAA,CAAc,IAAI,CAAA,EAAG;AAC7C,QAAA,MAAA,CAAO,EAAA,CAAG,IAAA,CAAK,EAAE,IAAA,EAAM,eAAe,CAAA;AAAA,MACxC;AAAA,IACF;AAAA,GACF;AACF;AAEA,IAAO,cAAA,GAAQ","file":"vite.js","sourcesContent":["/**\n * tailwind-styled-v4 — Vite Plugin\n *\n * Usage in vite.config.ts:\n * import { tailwindStyledPlugin } from \"tailwind-styled-v4/vite\"\n * export default defineConfig({\n * plugins: [react(), tailwindStyledPlugin()]\n * })\n */\n\nimport path from \"node:path\"\nimport type { TransformOptions } from \"@tailwind-styled/compiler\"\nimport { generateSafelist, shouldProcess, transformSource } from \"@tailwind-styled/compiler\"\n\nexport interface VitePluginOptions extends TransformOptions {\n include?: RegExp\n exclude?: RegExp\n scanDirs?: string[]\n safelistOutput?: string\n generateSafelist?: boolean\n}\n\nexport function tailwindStyledPlugin(opts: VitePluginOptions = {}): any {\n const {\n include = /\\.(tsx|ts|jsx|js)$/,\n exclude = /node_modules/,\n scanDirs = [\"src\"],\n safelistOutput = \".tailwind-styled-safelist.json\",\n generateSafelist: doSafelist = true,\n ...transformOpts\n } = opts\n\n let root = process.cwd()\n let isDev = true\n\n return {\n name: \"tailwind-styled-v4\",\n enforce: \"pre\" as const,\n\n configResolved(config: any) {\n root = config.root\n isDev = config.command === \"serve\"\n },\n\n transform(source: string, id: string) {\n const filepath = id.split(\"?\")[0]\n if (!include.test(filepath)) return null\n if (exclude.test(filepath)) return null\n if (!shouldProcess(filepath)) return null\n\n const result = transformSource(source, {\n ...transformOpts,\n mode: transformOpts.mode ?? (isDev ? \"runtime\" : \"zero-runtime\"),\n addDataAttr: transformOpts.addDataAttr ?? isDev,\n filename: filepath,\n })\n\n if (!result.changed) return null\n return { code: result.code, map: null }\n },\n\n buildEnd() {\n if (!doSafelist || isDev) return\n\n try {\n generateSafelist(\n scanDirs.map((d) => path.resolve(root, d)),\n path.resolve(root, safelistOutput),\n root\n )\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Safelist generation failed:\", e)\n }\n },\n\n handleHotUpdate({ file, server }: any) {\n if (include.test(file) && shouldProcess(file)) {\n server.ws.send({ type: \"full-reload\" })\n }\n },\n }\n}\n\nexport default tailwindStyledPlugin\n"]}
1
+ {"version":3,"sources":["../packages/compiler/src/classMerger.ts","../packages/shared/src/nativeBinding.ts","../packages/shared/src/logger.ts","../packages/shared/src/hash.ts","../packages/shared/src/index.ts","../packages/compiler/src/nativeBridge.ts","../packages/compiler/src/twDetector.ts","../packages/compiler/src/cssCompiler.ts","../packages/compiler/src/classExtractor.ts","../packages/compiler/src/incrementalEngine.ts","../packages/compiler/src/styleBucketSystem.ts","../packages/compiler/src/atomicCss.ts","../packages/compiler/src/context.ts","../packages/compiler/src/pipeline.ts","../packages/compiler/src/coreCompiler.ts","../packages/compiler/src/routeCssCollector.ts","../packages/compiler/src/loaderCore.ts","../packages/preset/src/defaultPreset.ts","../packages/compiler/src/loadTailwindConfig.ts","../packages/compiler/src/safelistGenerator.ts","../packages/compiler/src/tailwindEngine.ts","../packages/compiler/src/index.ts","../packages/scanner/src/native-bridge.ts","../packages/scanner/src/cache-native.ts","../packages/scanner/src/index.ts","../packages/analyzer/src/utils.ts","../packages/analyzer/src/binding.ts","../packages/analyzer/src/semantic.ts","../packages/analyzer/src/analyzeWorkspace.ts","../packages/analyzer/src/classToCss.ts","../packages/analyzer/src/index.ts","../packages/vite/src/plugin.ts","../packages/engine/src/index.ts","../packages/engine/src/incremental.ts","../packages/engine/src/native-bridge.ts","../packages/engine/src/metrics.ts","../packages/engine/src/plugin-api.ts","../packages/engine/src/watch.ts"],"names":["twMerge","os","path","fileURLToPath","createRequire","fs","log","createHash","getNativeBridge","nodeToCSS","defaultPreset","compileCssFromClasses","generateAtomicCss","parseAtomicClass","init_src","getBinding","_binding","runtimeDir","Worker","scanWorkspaceNative","formatErrorMessage","module","loadTailwindConfig","pathToFileURL","_loadError","_candidatePaths","throwNativeBindingError","DEFAULT_EXTENSIONS","existing","DEFAULT_IGNORES","__internal"],"mappings":"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","file":"vite.js","sourcesContent":["/**\n * tailwind-styled-v4 — classMerger\n *\n * FIX #05: Ganti custom UTILITY_GROUPS resolver dengan twMerge.\n *\n * WHY: Custom regex resolver memiliki banyak edge case yang salah\n * (ring-, text- grouping, dll). tailwind-merge sudah jadi dependency,\n * lebih akurat, dan di-maintain oleh komunitas Tailwind.\n *\n * RESULT: Output compile-time dan runtime kini identik — tidak ada\n * behavior perbedaan antara dev mode dan production build.\n */\n\nimport { twMerge } from \"tailwind-merge\"\n\n/**\n * Merge Tailwind classes statically at compile time.\n * Menggunakan tailwind-merge untuk conflict resolution yang akurat.\n *\n * FIX #05: Sebelumnya pakai custom UTILITY_GROUPS regex yang tidak\n * kompatibel dengan tailwind-merge runtime. Sekarang keduanya identik.\n *\n * @example\n * mergeClassesStatic(\"p-4 p-2 bg-red-500 bg-blue-500\")\n * → \"p-2 bg-blue-500\"\n *\n * mergeClassesStatic(\"ring-2 ring-4\")\n * → \"ring-4\" ✓ (custom resolver dulu return \"ring-2 ring-4\" — salah!)\n */\nexport function mergeClassesStatic(classes: string): string {\n return twMerge(classes)\n}\n\n/**\n * Normalize raw class string — trim, dedupe whitespace, join lines.\n */\nexport function normalizeClasses(raw: string): string {\n return raw\n .split(\"\\n\")\n .map((l) => l.trim())\n .filter(Boolean)\n .join(\" \")\n .replace(/\\s+/g, \" \")\n .trim()\n}\n","import fs from \"node:fs\"\nimport { createRequire } from \"node:module\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nexport type PlatformExtension = \".node\" | \".dll\" | \".dylib\" | \".so\"\n\nexport function getPlatformExtension(): PlatformExtension {\n const platform = os.platform()\n switch (platform) {\n case \"win32\":\n return \".node\"\n case \"darwin\":\n return \".dylib\"\n case \"linux\":\n return \".so\"\n default:\n return \".node\"\n }\n}\n\nexport function checkNativeDisabled(): { disabled: boolean; reason: string | null } {\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_NATIVE === \"true\") {\n return {\n disabled: true,\n reason: \"Native bindings disabled via TWS_NO_NATIVE=1\",\n }\n }\n if (process.env.TWS_NO_RUST === \"1\" || process.env.TWS_NO_RUST === \"true\") {\n return {\n disabled: true,\n reason: \"Native bindings disabled via TWS_NO_RUST=1\",\n }\n }\n return { disabled: false, reason: null }\n}\n\nexport interface NativeBindingLoadError {\n path: string\n message: string\n}\n\nexport interface ResolveNativeBindingCandidatesOptions {\n runtimeDir: string\n envVarNames?: string[]\n enforceNodeExtensionForEnvPath?: boolean\n includeDefaultCandidates?: boolean\n platformExtension?: PlatformExtension\n}\n\nexport interface LoadNativeBindingOptions<T> {\n runtimeDir: string\n candidates: string[]\n isValid: (module: unknown) => module is T\n invalidExportMessage: string\n}\n\nexport interface LoadNativeBindingResult<T> {\n binding: T | null\n loadedPath: string | null\n loadErrors: NativeBindingLoadError[]\n}\n\nexport function formatErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nexport function resolveRuntimeDir(\n dirnameValue: string | undefined,\n moduleImportUrl: string\n): string {\n if (typeof dirnameValue === \"string\" && dirnameValue.length > 0) return dirnameValue\n return path.dirname(fileURLToPath(moduleImportUrl))\n}\n\nexport function resolveNativeBindingCandidates(\n options: ResolveNativeBindingCandidatesOptions\n): string[] {\n const out: string[] = []\n const envVarNames = options.envVarNames ?? [\"TWS_NATIVE_PATH\"]\n\n for (const envVarName of envVarNames) {\n const raw = process.env[envVarName]?.trim()\n if (!raw) continue\n const resolved = path.resolve(raw)\n\n if (options.enforceNodeExtensionForEnvPath) {\n if (path.extname(resolved).toLowerCase() !== \".node\") {\n throw new Error(\n `Invalid native binding path from ${envVarName}=\"${raw}\". Expected a .node file.`\n )\n }\n }\n\n out.push(resolved)\n }\n\n if (options.includeDefaultCandidates !== false) {\n const ext = options.platformExtension ?? getPlatformExtension()\n const defaultBindingName = `tailwind_styled_parser${ext}`\n\n out.push(path.resolve(process.cwd(), \"native\", defaultBindingName))\n out.push(path.resolve(options.runtimeDir, \"..\", \"..\", \"..\", \"native\", defaultBindingName))\n }\n\n return Array.from(new Set(out))\n}\n\nfunction parseDebugToken(namespace: string, token: string): boolean {\n if (token === \"*\" || token === namespace || token === \"tailwind-styled:*\") return true\n return token.endsWith(\"*\") && namespace.startsWith(token.slice(0, -1))\n}\n\nexport function isDebugNamespaceEnabled(namespace: string): boolean {\n if (process.env.TWS_DEBUG === \"1\" || process.env.TAILWIND_STYLED_DEBUG === \"1\") return true\n const raw = process.env.DEBUG\n if (!raw) return false\n\n return raw\n .split(\",\")\n .map((token) => token.trim())\n .some((token) => parseDebugToken(namespace, token))\n}\n\nexport function createDebugLogger(namespace: string, label = namespace): (message: string) => void {\n const debugEnabled = isDebugNamespaceEnabled(namespace)\n return (message: string) => {\n if (!debugEnabled) return\n console.debug(`[${label}] ${message}`)\n }\n}\n\nexport function loadNativeBinding<T>(\n options: LoadNativeBindingOptions<T>\n): LoadNativeBindingResult<T> {\n const req = createRequire(path.join(options.runtimeDir, \"noop.cjs\"))\n const loadErrors: NativeBindingLoadError[] = []\n\n for (const candidate of options.candidates) {\n if (!fs.existsSync(candidate)) continue\n try {\n const mod = req(candidate)\n if (options.isValid(mod)) {\n return {\n binding: mod,\n loadedPath: candidate,\n loadErrors,\n }\n }\n loadErrors.push({\n path: candidate,\n message: options.invalidExportMessage,\n })\n } catch (error) {\n loadErrors.push({\n path: candidate,\n message: formatErrorMessage(error),\n })\n }\n }\n\n return {\n binding: null,\n loadedPath: null,\n loadErrors,\n }\n}\n\nexport function loadNativeBindingOrThrow<T>(\n options: LoadNativeBindingOptions<T> & { bindingName: string }\n): T {\n const disabledCheck = checkNativeDisabled()\n if (disabledCheck.disabled) {\n throw new Error(\n `Native binding '${options.bindingName}' cannot be loaded.\\n${disabledCheck.reason}`\n )\n }\n\n const { bindingName, ...loadOptions } = options\n const { binding, loadErrors } = loadNativeBinding<T>(loadOptions)\n\n if (binding) {\n return binding\n }\n\n const lines = [\n `FATAL: Native binding '${bindingName}' not found.`,\n \"\",\n \"This package requires native Rust bindings.\",\n \"The binding was not found in any of these paths:\",\n ...loadOptions.candidates.map((p) => ` - ${p}`),\n \"\",\n ]\n\n if (loadErrors.length > 0) {\n lines.push(\"Load errors:\")\n for (const error of loadErrors) {\n lines.push(` - ${error.path}: ${error.message}`)\n }\n lines.push(\"\")\n }\n\n lines.push(\n \"Resolution steps:\",\n \"\",\n \"1. Build the native Rust module:\",\n \" npm run build:rust\",\n \"\",\n \"2. Or install pre-built binaries:\",\n \" npm install\",\n \"\",\n \"3. Override with environment variable:\",\n \" TWS_NATIVE_PATH=/path/to/tailwind_styled_parser.node\",\n \"\",\n \"4. Disable native bindings (use JS fallback):\",\n \" TWS_NO_NATIVE=1\",\n \"\",\n \"For CI/CD environments, ensure Rust toolchain is installed and\",\n \"'npm run build:rust' is executed before running tests or building.\"\n )\n\n throw new Error(lines.join(\"\\n\"))\n}\n","/**\n * Centralized logger — replaces scattered console.log/warn/error calls\n * across packages.\n */\nexport type LogLevel = \"silent\" | \"error\" | \"warn\" | \"info\" | \"debug\"\n\nconst LEVELS: Record<LogLevel, number> = { silent: 0, error: 1, warn: 2, info: 3, debug: 4 }\n\nfunction getEnvLevel(): LogLevel {\n const env = process.env.TWS_LOG_LEVEL?.toLowerCase()\n if (env && env in LEVELS) return env as LogLevel\n return process.env.TWS_DEBUG_SCANNER === \"1\" ? \"debug\" : \"info\"\n}\n\nexport interface Logger {\n error(...args: unknown[]): void\n warn(...args: unknown[]): void\n info(...args: unknown[]): void\n debug(...args: unknown[]): void\n setLevel(level: LogLevel): void\n}\n\nexport function createLogger(prefix: string, level?: LogLevel): Logger {\n let currentLevel = level ?? getEnvLevel()\n\n const log = (msgLevel: LogLevel, stream: \"stdout\" | \"stderr\", args: unknown[]) => {\n if (LEVELS[msgLevel] > LEVELS[currentLevel]) return\n const line = `[${prefix}] ${args.map(String).join(\" \")}\\n`\n process[stream].write(line)\n }\n\n return {\n error: (...a) => log(\"error\", \"stderr\", a),\n warn: (...a) => log(\"warn\", \"stderr\", a),\n info: (...a) => log(\"info\", \"stdout\", a),\n debug: (...a) => log(\"debug\", \"stderr\", a),\n setLevel: (l) => {\n currentLevel = l\n },\n }\n}\n\nexport const logger = createLogger(\"tailwind-styled\")\n","/**\n * Centralized hash utilities\n * Replaces duplicated crypto.createHash() calls across packages\n */\nimport { createHash } from \"node:crypto\"\nimport fs from \"node:fs\"\n\n/** Hash a string content → short hex string */\nexport function hashContent(content: string, algorithm = \"md5\", length = 8): string {\n return createHash(algorithm).update(content).digest(\"hex\").slice(0, length)\n}\n\n/** Hash a file's content → short hex string */\nexport function hashFile(filePath: string, algorithm = \"md5\", length = 8): string {\n try {\n const content = fs.readFileSync(filePath, \"utf8\")\n return hashContent(content, algorithm, length)\n } catch {\n return \"00000000\"\n }\n}\n","/**\n * @tailwind-styled/shared - Centralized utilities.\n */\n\nexport { LRUCache } from \"./cache\"\nexport {\n createDebugLogger,\n formatErrorMessage,\n isDebugNamespaceEnabled,\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n type LoadNativeBindingOptions,\n type LoadNativeBindingResult,\n type NativeBindingLoadError,\n type ResolveNativeBindingCandidatesOptions,\n} from \"./nativeBinding\"\nexport { logger, createLogger, type LogLevel } from \"./logger\"\nexport { hashContent, hashFile } from \"./hash\"\nexport { debounce, throttle } from \"./timing\"\nexport { parseVersion, satisfiesMinVersion } from \"./version\"\n","/**\n * tailwind-styled-v4 — NativeBridge\n *\n * Loads the native Rust engine (.node binding via index.mjs) and exposes\n * its functions to the JS compiler pipeline.\n *\n * The bridge is loaded lazily and cached. If the .node binary is not\n * present (e.g. the user hasn't built the Rust crate yet), every function\n * returns null and the pipeline falls through to the JS implementation.\n *\n * Environment flags:\n * TWS_NO_NATIVE=1 — disable native bridge entirely\n * TWS_NO_RUST=1 — alias for TWS_NO_NATIVE\n */\n\nimport { createRequire } from \"node:module\"\nimport path from \"node:path\"\n\nimport { createLogger } from \"@tailwind-styled/shared\"\nimport type { TransformResult } from \"./astTransform\"\n\n// ── Types returned by the Rust engine ────────────────────────────────────────\n\n/** Raw shape returned by Rust transform_source — napi auto-converts snake_case → camelCase */\nexport interface NativeTransformResult {\n code: string\n classes: string[]\n changed: boolean\n /** JSON string: { isServer: boolean, needsClientDirective: boolean } */\n rscJson?: string | null\n /** JSON string: ComponentMetadata[] */\n metadataJson?: string | null\n}\n\n/** Parsed from rscJson */\nexport interface NativeRscResult {\n isServer: boolean\n needsClientDirective: boolean\n}\n\n/** Metadata for one compound component, produced by Rust and consumed by @tailwind-styled/runtime */\nexport interface ComponentMetadata {\n component: string\n tag: string\n baseClass: string\n subComponents: Record<string, { tag: string; class: string }>\n}\n\n/** Full bridge interface — all members optional so feature detection is easy */\nexport interface NativeBridge {\n /** Parse individual class tokens. Throws if binding is unavailable. */\n parseClassesNative?: (input: string) => Array<{\n raw: string\n base: string\n variants: string[]\n modifierType?: string | null\n modifierValue?: string | null\n }>\n /** Fast pre-check — returns null if binding unavailable. */\n hasTwUsageNative?: (source: string) => boolean | null\n /** Idempotency guard — returns null if binding unavailable. */\n isAlreadyTransformedNative?: (source: string) => boolean | null\n /** RSC analysis — returns null if binding unavailable. */\n analyzeRscNative?: (\n source: string,\n filename?: string\n ) => { isServer: boolean; needsClientDirective: boolean; clientReasons: string[] } | null\n /** Full transform — returns null if binding unavailable (JS pipeline takes over). */\n transformSourceNative?: (\n source: string,\n opts: Record<string, unknown>\n ) => NativeTransformResult | null\n /** AST-based class extraction (Oxc+regex hybrid) */\n astExtractClassesNative?: (\n source: string,\n filename?: string\n ) => { classes: string[]; engine: string } | null\n /** Rust-based class extraction via regex */\n extractClassesFromSourceNative?: (source: string) => string[] | null\n /** Analyze class frequency - used for DSE */\n analyzeClassesNative?: (\n filesJson: string,\n root: string,\n topN: number\n ) => {\n root: string\n totalFiles: number\n uniqueClassCount: number\n totalClassOccurrences: number\n topClasses: Array<{ name: string; count: number }>\n duplicateCandidates: Array<{ name: string; count: number }>\n safelist: string[]\n } | null\n}\n\n// ── Bridge loader ─────────────────────────────────────────────────────────────\n\nconst runtimeDir = typeof __dirname === \"string\" && __dirname.length > 0 ? __dirname : process.cwd()\nconst requireFromRuntime =\n typeof module !== \"undefined\" && typeof module.require === \"function\"\n ? module.require.bind(module)\n : createRequire(path.join(runtimeDir, \"noop.cjs\"))\n\nlet cachedBridge: NativeBridge | null | undefined\nconst log = createLogger(\"compiler:native\")\n\nfunction tryRequire(id: string): NativeBridge | null {\n try {\n const mod = requireFromRuntime(id) as NativeBridge\n return mod ?? null\n } catch (error) {\n log.debug(\n `native bridge load miss ${id}: ${error instanceof Error ? error.message : String(error)}`\n )\n return null\n }\n}\n\n/**\n * Get the native bridge - THROWS if unavailable.\n *\n * v5 CHANGE: Previously returned null and fell back to JS pipeline.\n * Now throws an error to ensure native binding is always used.\n *\n * @throws Error if native binding is not available\n */\nexport function getNativeBridge(): NativeBridge {\n if (cachedBridge !== undefined) {\n if (cachedBridge === null) {\n throw new Error(\n `[tailwind-styled/compiler v5] Native binding is required but not available.\\n` +\n `Please ensure:\\n` +\n ` 1. The native module is properly installed\\n` +\n ` 2. You have run: npm run build:native (or use prebuilt binary)\\n` +\n ` 3. TWS_NO_NATIVE environment variable is not set\\n` +\n `\\n` +\n `For help, see: https://tailwind-styled.dev/docs/install`\n )\n }\n return cachedBridge\n }\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n cachedBridge = null\n throw new Error(\n `[tailwind-styled/compiler v5] Native binding is required.\\n` +\n `The TWS_NO_NATIVE or TWS_NO_RUST environment variable is set, which disables native binding.\\n` +\n `Please unset this environment variable to use the native compiler.`\n )\n }\n\n const candidates = [\n \"@tailwind-styled/native\",\n path.resolve(process.cwd(), \"native\", \"index.mjs\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"native\", \"index.mjs\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"index.mjs\"),\n path.resolve(process.cwd(), \"native\", \"index.node\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"native\", \"index.node\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"index.node\"),\n ]\n\n for (const candidate of candidates) {\n const bridge = tryRequire(candidate)\n if (bridge) {\n log.debug(`native bridge loaded from ${candidate}`)\n cachedBridge = bridge\n return cachedBridge\n }\n }\n\n // v5: Throw error instead of returning null\n cachedBridge = null\n throw new Error(\n `[tailwind-styled/compiler v5] Native binding not found.\\n` +\n `Tried loading from:\\n` +\n candidates.map((c) => ` - ${c}`).join(\"\\n\") +\n `\\n` +\n `\\n` +\n `Please build the native module:\\n` +\n ` npm run build:native\\n` +\n `\\n` +\n `Or install a prebuilt binary for your platform.`\n )\n}\n\nexport function resetNativeBridgeCache(): void {\n cachedBridge = undefined\n}\n\n// ── Result adapter ────────────────────────────────────────────────────────────\n// Converts the raw Rust NativeTransformResult into the canonical TransformResult\n// shape the rest of the JS pipeline expects, parsing JSON fields as needed.\n\nexport function adaptNativeResult(raw: NativeTransformResult): TransformResult & {\n metadata?: ComponentMetadata[]\n} {\n // Parse rscJson → rsc object\n let rsc: TransformResult[\"rsc\"] | undefined\n if (raw.rscJson) {\n try {\n const parsed = JSON.parse(raw.rscJson) as NativeRscResult\n rsc = {\n isServer: parsed.isServer,\n needsClientDirective: parsed.needsClientDirective,\n clientReasons: [],\n }\n } catch {\n // ignore malformed JSON\n }\n }\n\n // Parse metadataJson → ComponentMetadata[]\n let metadata: ComponentMetadata[] | undefined\n if (raw.metadataJson) {\n try {\n metadata = JSON.parse(raw.metadataJson) as ComponentMetadata[]\n } catch {\n // ignore malformed JSON\n }\n }\n\n return {\n code: raw.code,\n classes: raw.classes,\n changed: raw.changed,\n rsc,\n metadata,\n }\n}\n","/**\n * tailwind-styled-v4 — twDetector\n *\n * Regex-based detector untuk semua syntax tw yang valid.\n * Dipakai sebelum transform — jika tidak ada tw usage, skip file.\n *\n * FIXED: trailing space bug di TEMPLATE_RE (#02)\n */\n\nimport { getNativeBridge } from \"./nativeBridge\"\n\n/** tw.div`...` — FIX: removed trailing space before /g */\nexport const TEMPLATE_RE = /\\btw\\.(server\\.)?(\\w+)`((?:[^`\\\\]|\\\\.)*)`/g\n\n/** tw.div({ base: \"...\", variants: {...} }) */\nexport const OBJECT_RE = /\\btw\\.(server\\.)?(\\w+)\\(\\s*(\\{[\\s\\S]*?\\})\\s*\\)/g\n\n/** tw(Component)`...` */\nexport const WRAP_RE = /\\btw\\((\\w+)\\)`((?:[^`\\\\]|\\\\.)*)`/g\n\n/** Card.extend`...` */\nexport const EXTEND_RE = /(\\w+)\\.extend`((?:[^`\\\\]|\\\\.)*)`/g\n\n/** import { tw } from \"tailwind-styled-v4\" */\nexport const IMPORT_RE = /from\\s*[\"']tailwind-styled-v4[\"']/\n\n/** Transform already-applied marker — idempotency guard (#08) */\nexport const TRANSFORM_MARKER = \"/* @tw-transformed */\"\n\nexport function hasTwUsage(source: string): boolean {\n // Rust fast-path — single regex scan di native\n const native = getNativeBridge()\n if (native?.hasTwUsageNative) {\n const result = native.hasTwUsageNative(source)\n if (result !== null && result !== undefined) return result\n }\n // JS fallback\n return IMPORT_RE.test(source) || source.includes(\"tw.\")\n}\n\n/** Check if file was already transformed — prevents double processing (#08) */\nexport function isAlreadyTransformed(source: string): boolean {\n // Rust fast-path\n const native = getNativeBridge()\n if (native?.isAlreadyTransformedNative) {\n const result = native.isAlreadyTransformedNative(source)\n if (result !== null && result !== undefined) return result\n }\n // JS fallback\n return source.includes(TRANSFORM_MARKER)\n}\n\nexport function isTwTemplateLiteral(source: string, index: number): boolean {\n const before = source.slice(Math.max(0, index - 20), index)\n return /\\btw\\.\\w+$/.test(before) || /\\btw\\(\\w+\\)$/.test(before)\n}\n\nexport function isDynamic(content: string): boolean {\n return content.includes(\"${\")\n}\n\nexport function isServerComponent(source: string): boolean {\n return !source.includes('\"use client\"') && !source.includes(\"'use client'\")\n}\n\nexport function hasInteractiveFeatures(content: string): boolean {\n return /\\b(hover:|focus:|active:|group-hover:|peer-|on[A-Z]|useState|useEffect|useRef)\\b/.test(\n content\n )\n}\n","/**\n * tailwind-styled-v4 — CSS Compiler (Rust-backed LightningCSS-style)\n *\n * v5 CHANGE: Now requires native binding. Previously fell back to JS implementation.\n *\n * Compiles Tailwind class lists to atomic CSS using Rust native engine.\n */\n\nimport path from \"node:path\"\nimport { createRequire } from \"node:module\"\n\n// ── Native binding ────────────────────────────────────────────────────────────\n\ninterface NativeCssBinding {\n compileCss?: (\n classes: string[],\n prefix: string | null\n ) => {\n css: string\n resolvedClasses: string[]\n unknownClasses: string[]\n sizeBytes: number\n }\n}\n\nlet _binding: NativeCssBinding | null | undefined\n\n/**\n * Get the CSS compiler binding - THROWS if unavailable.\n *\n * v5 CHANGE: Previously returned null and fell back to JS pipeline.\n * Now throws an error to ensure native binding is always used.\n *\n * @throws Error if native binding is not available\n */\nfunction getBinding(): NativeCssBinding {\n if (_binding !== undefined) {\n if (_binding === null) {\n throw new Error(\n `[tailwind-styled/compiler v5] Native CSS binding is required but not available.\\n` +\n `Please ensure the native module is properly built.`\n )\n }\n return _binding\n }\n\n if (process.env.TWS_NO_NATIVE === \"1\") {\n _binding = null\n throw new Error(\n `[tailwind-styled/compiler v5] Native binding is required.\\n` +\n `The TWS_NO_NATIVE environment variable is set, which disables native binding.`\n )\n }\n\n const req = typeof require === \"function\" ? require : createRequire(import.meta.url)\n const candidates = [\n path.resolve(process.cwd(), \"native\", \"tailwind_styled_parser.node\"),\n path.resolve(__dirname, \"..\", \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n ]\n for (const c of candidates) {\n try {\n const mod = req(c) as NativeCssBinding\n if (mod?.compileCss) {\n _binding = mod\n return _binding\n }\n } catch {\n /* next */\n }\n }\n\n // v5: Throw error instead of returning null\n _binding = null\n throw new Error(\n `[tailwind-styled/compiler v5] Native CSS binding not found.\\n` +\n `Tried loading from:\\n` +\n candidates.map((c) => ` - ${c}`).join(\"\\n\") +\n `\\n` +\n `\\n` +\n `Please build the native module.`\n )\n}\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport interface CssCompileResult {\n /** Generated atomic CSS */\n css: string\n /** Classes successfully resolved to native CSS */\n resolvedClasses: string[]\n /** Classes with no native mapping (get @apply fallback) */\n unknownClasses: string[]\n /** Byte size of generated CSS */\n sizeBytes: number\n /** Which engine produced this output */\n engine: \"rust\" | \"fallback\"\n}\n\n/**\n * Compile a list of Tailwind classes into atomic CSS.\n *\n * v5 CHANGE: Now THROWS if native binding is unavailable.\n * Previously fell back to JS implementation.\n *\n * Uses Rust LightningCSS-style engine when native binary is available.\n *\n * @example\n * const { css } = compileCssFromClasses(['flex', 'items-center', 'hover:bg-blue-600'])\n * // → \".flex { display: flex } .items-center { align-items: center } ...\"\n *\n * @throws Error if native binding is not available\n */\nexport function compileCssFromClasses(\n classes: string[],\n options: { prefix?: string } = {}\n): CssCompileResult {\n const binding = getBinding() // throws if unavailable\n const prefix = options.prefix ?? null\n\n // v5: Binding is guaranteed to have compileCss after getBinding() returns\n const r = binding.compileCss!(classes, prefix)\n return {\n css: r.css,\n resolvedClasses: r.resolvedClasses,\n unknownClasses: r.unknownClasses,\n sizeBytes: r.sizeBytes,\n engine: \"rust\",\n }\n}\n\n/**\n * Compile CSS for a set of classes and inject as a <style> block (SSR helper).\n */\nexport function buildStyleTag(classes: string[]): string {\n const { css } = compileCssFromClasses(classes)\n return css ? `<style data-tailwind-styled>${css}</style>` : \"\"\n}\n","/**\n * tailwind-styled-v4 — classExtractor\n *\n * FIX #02: Remove .slice(0, -1) workaround for broken TEMPLATE_RE.\n * TEMPLATE_RE trailing space is now fixed in twDetector.ts.\n *\n * Ekstrak semua Tailwind class dari source untuk safelist generation.\n */\n\nimport { parseComponentConfig } from \"./astParser\"\nimport { EXTEND_RE, OBJECT_RE, TEMPLATE_RE } from \"./twDetector\"\n\nconst VALID_CLASS_RE = /^[-a-z0-9:/[\\]!.()+%]+$/\nconst TEMPLATE_SCAN_RE = new RegExp(TEMPLATE_RE.source, \"g\")\nconst OBJECT_SCAN_RE = new RegExp(OBJECT_RE.source, \"g\")\nconst EXTEND_SCAN_RE = new RegExp(EXTEND_RE.source, \"g\")\nconst CLASS_NAME_RE = /className\\s*=\\s*[\"']([^\"']+)[\"']/g\n\nfunction resetRegex(regex: RegExp): void {\n regex.lastIndex = 0\n}\n\nfunction parseClasses(raw: string): string[] {\n const parsed: string[] = []\n\n for (const token of raw.split(/[\\n\\s]+/)) {\n if (!token) continue\n const normalized = token.trim()\n if (!normalized || !VALID_CLASS_RE.test(normalized)) continue\n parsed.push(normalized)\n }\n\n return parsed\n}\n\n/**\n * Extract all Tailwind classes from source code.\n *\n * v5 CHANGE: Now THROWS if native binding is unavailable.\n * Previously fell back to JS implementation.\n *\n * @param source - Source code to extract classes from\n * @returns Array of unique class names (sorted)\n * @throws Error if native binding is not available\n */\nexport function extractAllClasses(source: string): string[] {\n // v5: Use native bridge - throws if unavailable\n const { getNativeBridge } = require(\"./nativeBridge\") as typeof import(\"./nativeBridge\")\n const native = getNativeBridge() // throws if binding unavailable\n\n // v5: Native is required - throw if method not available\n if (!native?.extractClassesFromSourceNative) {\n throw new Error(\n `[tailwind-styled/compiler v5] extractClassesFromSourceNative is required but not available.\\n` +\n `Please ensure the native module is properly built.`\n )\n }\n\n const result = native.extractClassesFromSourceNative(source)\n if (!result || result.length < 0) {\n throw new Error(\n `[tailwind-styled/compiler v5] extractClassesFromSourceNative returned invalid result.`\n )\n }\n\n return result.sort()\n}\n\nexport { parseClasses }\n// Re-export for backward compat — now use parseComponentConfig from astParser\nexport function extractBaseFromObject(objectStr: string): string {\n return parseComponentConfig(objectStr).base\n}\nexport function extractVariantsFromObject(\n objectStr: string\n): Record<string, Record<string, string>> {\n return parseComponentConfig(objectStr).variants\n}\n","/**\n * tailwind-styled-v4 — Incremental CSS Compiler\n *\n * Hanya compile ulang file yang berubah, bukan semua file.\n * Hasil: hot-reload styling dalam 5–20ms, bukan 3–10s.\n *\n * Pipeline:\n * file watcher detects change\n * ↓ hash check → skip jika file belum berubah\n * ↓ update dependency graph (hapus rule lama, tambah rule baru)\n * ↓ compute CSS diff (only changed rules)\n * ↓ write diff ke output — bukan rewrite seluruh file\n * ↓ hot reload\n *\n * Integrasi ke webpack/turbopack loader:\n * import { incrementalEngine } from \"./incrementalEngine\"\n * incrementalEngine.processFile(filepath, source, extractedClasses)\n *\n * Cache disimpan di `.tw-cache/` — persist antar build sessions.\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport { hashContent } from \"@tailwind-styled/shared\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Satu style node dalam dependency graph */\nexport interface StyleNode {\n /** Tailwind class, e.g. \"p-4\" */\n twClass: string\n /** CSS declaration, e.g. \"padding: 1rem\" */\n declaration: string\n /** Modifier (pseudo/media), e.g. \":hover\" atau \"@media (min-width: 768px)\" */\n modifier?: string\n /** Generated atomic class name, e.g. \"tw-a1b2\" */\n atomicClass: string\n}\n\n/** Graph: filepath → style nodes yang dihasilkan file itu */\nexport type FileDependencyGraph = Map<string, StyleNode[]>\n\n/** Cache hash file untuk change detection */\nexport type FileHashCache = Map<string, string>\n\n/** Diff antara build sebelum dan setelah */\nexport interface CssDiff {\n /** Rule yang perlu ditambah ke CSS output */\n added: StyleNode[]\n /** Atomic class names yang perlu dihapus dari CSS output */\n removed: string[]\n /** true jika tidak ada perubahan */\n noChange: boolean\n}\n\n/** Summary setelah process satu file */\nexport interface ProcessResult {\n /** File yang diproses */\n filepath: string\n /** true jika file berubah dan registry di-update */\n changed: boolean\n /** CSS diff untuk file ini */\n diff: CssDiff\n /** Durasi proses dalam ms */\n durationMs: number\n}\n\n/** Stats engine */\nexport interface IncrementalStats {\n totalFiles: number\n changedFiles: number\n skippedFiles: number\n addedRules: number\n removedRules: number\n buildTimeMs: number\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Cache persistence — simpan ke disk supaya antar restart tetap cepat\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst CACHE_DIR = \".tw-cache\"\nconst HASH_CACHE_FILE = path.join(CACHE_DIR, \"file-hashes.json\")\nconst GRAPH_CACHE_FILE = path.join(CACHE_DIR, \"dep-graph.json\")\n\nfunction ensureCacheDir(): void {\n if (!fs.existsSync(CACHE_DIR)) {\n fs.mkdirSync(CACHE_DIR, { recursive: true })\n }\n}\n\nfunction loadHashCache(): FileHashCache {\n try {\n if (fs.existsSync(HASH_CACHE_FILE)) {\n const raw = fs.readFileSync(HASH_CACHE_FILE, \"utf-8\")\n return new Map(Object.entries(JSON.parse(raw)))\n }\n } catch {\n /* corrupt cache — start fresh */\n }\n return new Map()\n}\n\nfunction saveHashCache(cache: FileHashCache): void {\n try {\n ensureCacheDir()\n const obj = Object.fromEntries(cache)\n fs.writeFileSync(HASH_CACHE_FILE, JSON.stringify(obj, null, 2))\n } catch {\n /* non-fatal */\n }\n}\n\nfunction loadGraphCache(): FileDependencyGraph {\n try {\n if (fs.existsSync(GRAPH_CACHE_FILE)) {\n const raw = fs.readFileSync(GRAPH_CACHE_FILE, \"utf-8\")\n const data = JSON.parse(raw) as Record<string, StyleNode[]>\n return new Map(Object.entries(data))\n }\n } catch {\n /* corrupt cache */\n }\n return new Map()\n}\n\nfunction saveGraphCache(graph: FileDependencyGraph): void {\n try {\n ensureCacheDir()\n const obj = Object.fromEntries(graph)\n fs.writeFileSync(GRAPH_CACHE_FILE, JSON.stringify(obj, null, 2))\n } catch {\n /* non-fatal */\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hash — FNV-1a untuk konsitensi dengan styleRegistry\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction fnv1a(str: string): number {\n let h = 2166136261\n for (let i = 0; i < str.length; i++) {\n h ^= str.charCodeAt(i)\n h = (h * 16777619) >>> 0\n }\n return h\n}\n\nfunction toBase36(n: number, len = 4): string {\n const chars = \"0123456789abcdefghijklmnopqrstuvwxyz\"\n let result = \"\"\n let num = n\n for (let i = 0; i < len; i++) {\n result = chars[num % 36] + result\n num = Math.floor(num / 36)\n }\n return result\n}\n\n/**\n * Hash konten file untuk change detection.\n * Delegasi ke @tailwind-styled/shared untuk konsistensi.\n */\nfunction hashFileContent(content: string): string {\n return hashContent(content, \"md5\", 8)\n}\n\n/**\n * Generate atomic class name yang konsisten dengan styleRegistry.\n */\nfunction makeAtomicClass(declaration: string, modifier?: string): string {\n const key = modifier ? `${declaration}::${modifier}` : declaration\n return `tw-${toBase36(fnv1a(key))}`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS Diff Engine\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Hitung diff antara style nodes lama vs baru dari satu file.\n *\n * @param oldNodes - Style nodes dari build sebelumnya\n * @param newNodes - Style nodes dari build terkini\n * @returns CssDiff dengan added/removed rules\n */\nfunction computeDiff(oldNodes: StyleNode[], newNodes: StyleNode[]): CssDiff {\n const oldMap = new Map(oldNodes.map((n) => [n.atomicClass, n]))\n const newMap = new Map(newNodes.map((n) => [n.atomicClass, n]))\n\n const added: StyleNode[] = []\n const removed: string[] = []\n\n // Rule baru yang belum ada di build lama\n for (const [cls, node] of newMap) {\n if (!oldMap.has(cls)) added.push(node)\n }\n\n // Rule lama yang tidak ada di build baru\n for (const cls of oldMap.keys()) {\n if (!newMap.has(cls)) removed.push(cls)\n }\n\n return {\n added,\n removed,\n noChange: added.length === 0 && removed.length === 0,\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Global Atomic Registry — track semua rule aktif di seluruh project\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Registry global yang aggregates semua StyleNode dari semua file.\n * Key: atomicClass → StyleNode + refCount (berapa file yang pakai rule ini)\n */\ninterface GlobalEntry {\n node: StyleNode\n /** File-file yang menghasilkan rule ini (untuk proper dedup) */\n sources: Set<string>\n}\n\nclass GlobalAtomicRegistry {\n private entries = new Map<string, GlobalEntry>()\n\n /** Tambah node dari file tertentu */\n add(filepath: string, node: StyleNode): void {\n const existing = this.entries.get(node.atomicClass)\n if (existing) {\n existing.sources.add(filepath)\n } else {\n this.entries.set(node.atomicClass, {\n node,\n sources: new Set([filepath]),\n })\n }\n }\n\n /** Hapus referensi dari file tertentu; jika tidak ada source lain, rule dihapus */\n remove(filepath: string, atomicClass: string): boolean {\n const entry = this.entries.get(atomicClass)\n if (!entry) return false\n entry.sources.delete(filepath)\n if (entry.sources.size === 0) {\n this.entries.delete(atomicClass)\n return true // rule benar-benar dihapus\n }\n return false // masih dipakai file lain\n }\n\n /** Cek apakah rule ada di registry global */\n has(atomicClass: string): boolean {\n return this.entries.has(atomicClass)\n }\n\n /** Semua entries untuk CSS generation */\n all(): StyleNode[] {\n return Array.from(this.entries.values()).map((e) => e.node)\n }\n\n /** Total unique rules */\n size(): number {\n return this.entries.size\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS Writer — write/update CSS file secara incremental\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Generate CSS string dari satu StyleNode.\n */\nfunction nodeToCSS(node: StyleNode): string {\n const { atomicClass, declaration, modifier } = node\n\n if (!modifier) {\n return `.${atomicClass}{${declaration}}`\n }\n\n if (modifier.startsWith(\"@\")) {\n // Media query\n return `${modifier}{.${atomicClass}{${declaration}}}`\n }\n\n // Pseudo selector\n return `.${atomicClass}${modifier}{${declaration}}`\n}\n\n/**\n * CSS Diff Writer — update CSS file tanpa rewrite penuh.\n *\n * Strategi: simpan registry CSS sebagai Map<atomicClass, cssRule>,\n * serialize ke file. Lebih cepat dari string manipulation.\n */\nclass CssDiffWriter {\n private ruleMap = new Map<string, string>()\n private outputPath: string\n private dirty = false\n\n constructor(outputPath: string) {\n this.outputPath = outputPath\n this.loadFromDisk()\n }\n\n private loadFromDisk(): void {\n try {\n if (fs.existsSync(this.outputPath)) {\n // Parse existing CSS untuk reconstruct ruleMap\n const css = fs.readFileSync(this.outputPath, \"utf-8\")\n // Extract rule blocks — simpel: split per .tw-XXXX pattern\n const ruleRe =\n /(\\.tw-[a-z0-9]+(?::[\\w-]+)?)\\{([^}]+)\\}|(@[^{]+)\\{(\\.tw-[a-z0-9]+)\\{([^}]+)\\}\\}/g\n let m: RegExpExecArray | null\n while ((m = ruleRe.exec(css)) !== null) {\n if (m[1]) {\n const cls = m[1].replace(/\\.[^:]+:.*/, (match) => match.split(\".\")[1].split(\":\")[0])\n this.ruleMap.set(cls, m[0])\n }\n }\n }\n } catch {\n /* start fresh */\n }\n }\n\n /** Apply diff ke internal map */\n applyDiff(diff: CssDiff): void {\n if (diff.noChange) return\n\n for (const node of diff.added) {\n this.ruleMap.set(node.atomicClass, nodeToCSS(node))\n }\n for (const cls of diff.removed) {\n this.ruleMap.delete(cls)\n }\n this.dirty = true\n }\n\n /** Write ke disk jika ada perubahan. Async untuk tidak block loader. */\n async flush(): Promise<void> {\n if (!this.dirty) return\n\n try {\n ensureCacheDir()\n const css = Array.from(this.ruleMap.values()).join(\"\\n\")\n await fs.promises.writeFile(this.outputPath, css, \"utf-8\")\n this.dirty = false\n } catch {\n /* non-fatal */\n }\n }\n\n /** Sync flush untuk build end */\n flushSync(): void {\n if (!this.dirty) return\n try {\n ensureCacheDir()\n const css = Array.from(this.ruleMap.values()).join(\"\\n\")\n fs.writeFileSync(this.outputPath, css, \"utf-8\")\n this.dirty = false\n } catch {\n /* non-fatal */\n }\n }\n\n size(): number {\n return this.ruleMap.size\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// IncrementalEngine — main orchestrator\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface IncrementalEngineOptions {\n /** Output path untuk CSS file incremental. Default: \".tw-cache/atomic.css\" */\n outputPath?: string\n /** Apakah persist cache ke disk. Default: true */\n persistCache?: boolean\n /** Verbose logging. Default: false */\n verbose?: boolean\n}\n\nexport class IncrementalEngine {\n private hashCache: FileHashCache\n private depGraph: FileDependencyGraph\n private globalReg: GlobalAtomicRegistry\n private cssWriter: CssDiffWriter\n private opts: Required<IncrementalEngineOptions>\n\n // Stats untuk current build session\n private stats: IncrementalStats = {\n totalFiles: 0,\n changedFiles: 0,\n skippedFiles: 0,\n addedRules: 0,\n removedRules: 0,\n buildTimeMs: 0,\n }\n\n private sessionStart = Date.now()\n\n constructor(opts: IncrementalEngineOptions = {}) {\n this.opts = {\n outputPath: opts.outputPath ?? path.join(CACHE_DIR, \"atomic.css\"),\n persistCache: opts.persistCache ?? true,\n verbose: opts.verbose ?? false,\n }\n\n this.hashCache = this.opts.persistCache ? loadHashCache() : new Map()\n this.depGraph = this.opts.persistCache ? loadGraphCache() : new Map()\n this.globalReg = new GlobalAtomicRegistry()\n this.cssWriter = new CssDiffWriter(this.opts.outputPath)\n\n // Reconstruct global registry dari loaded dep graph\n for (const [filepath, nodes] of this.depGraph) {\n for (const node of nodes) {\n this.globalReg.add(filepath, node)\n }\n }\n }\n\n /**\n * Proses satu file. Core method dipanggil oleh webpack/turbopack loader.\n *\n * @param filepath - Absolute path ke file\n * @param source - Source code file (untuk hashing)\n * @param extractedNodes - Style nodes yang di-extract compiler dari file ini\n * @returns ProcessResult dengan diff dan stats\n */\n processFile(filepath: string, source: string, extractedNodes: StyleNode[]): ProcessResult {\n const t0 = Date.now()\n this.stats.totalFiles++\n\n // ── 1. Change detection ──────────────────────────────────────────────────\n const currentHash = hashFileContent(source)\n const cachedHash = this.hashCache.get(filepath)\n\n if (cachedHash === currentHash) {\n // File tidak berubah — skip sepenuhnya\n this.stats.skippedFiles++\n this.log(`[skip] ${path.relative(process.cwd(), filepath)}`)\n return {\n filepath,\n changed: false,\n diff: { added: [], removed: [], noChange: true },\n durationMs: Date.now() - t0,\n }\n }\n\n // ── 2. Hash update ───────────────────────────────────────────────────────\n this.hashCache.set(filepath, currentHash)\n this.stats.changedFiles++\n this.log(`[change] ${path.relative(process.cwd(), filepath)}`)\n\n // ── 3. Compute diff antara nodes lama dan baru ───────────────────────────\n const oldNodes = this.depGraph.get(filepath) ?? []\n const diff = computeDiff(oldNodes, extractedNodes)\n\n // ── 4. Update dependency graph ───────────────────────────────────────────\n this.depGraph.set(filepath, extractedNodes)\n\n // ── 5. Update global atomic registry ────────────────────────────────────\n // Hapus rule lama yang dihapus dari file ini\n const trulyRemoved: string[] = []\n for (const cls of diff.removed) {\n const wasRemoved = this.globalReg.remove(filepath, cls)\n if (wasRemoved) trulyRemoved.push(cls)\n }\n\n // Tambah rule baru\n const trulyAdded: StyleNode[] = []\n for (const node of diff.added) {\n if (!this.globalReg.has(node.atomicClass)) {\n trulyAdded.push(node)\n }\n this.globalReg.add(filepath, node)\n }\n\n // ── 6. Build final diff untuk CSS writer ────────────────────────────────\n const finalDiff: CssDiff = {\n added: trulyAdded,\n removed: trulyRemoved,\n noChange: trulyAdded.length === 0 && trulyRemoved.length === 0,\n }\n\n this.cssWriter.applyDiff(finalDiff)\n this.stats.addedRules += trulyAdded.length\n this.stats.removedRules += trulyRemoved.length\n\n return {\n filepath,\n changed: true,\n diff: finalDiff,\n durationMs: Date.now() - t0,\n }\n }\n\n /**\n * Dipanggil di akhir build. Flush CSS ke disk, persist cache.\n */\n async buildEnd(): Promise<void> {\n this.stats.buildTimeMs = Date.now() - this.sessionStart\n\n await this.cssWriter.flush()\n\n if (this.opts.persistCache) {\n saveHashCache(this.hashCache)\n saveGraphCache(this.depGraph)\n }\n\n this.log(\n `[build] done in ${this.stats.buildTimeMs}ms | ` +\n `changed: ${this.stats.changedFiles}/${this.stats.totalFiles} files | ` +\n `+${this.stats.addedRules} -${this.stats.removedRules} rules | ` +\n `total rules: ${this.cssWriter.size()}`\n )\n }\n\n /** Sync version untuk webpack buildEnd hook */\n buildEndSync(): void {\n this.stats.buildTimeMs = Date.now() - this.sessionStart\n this.cssWriter.flushSync()\n\n if (this.opts.persistCache) {\n saveHashCache(this.hashCache)\n saveGraphCache(this.depGraph)\n }\n }\n\n /**\n * Invalidate satu file (untuk hot reload — file dihapus atau renamed).\n */\n invalidateFile(filepath: string): void {\n const oldNodes = this.depGraph.get(filepath) ?? []\n for (const node of oldNodes) {\n this.globalReg.remove(filepath, node.atomicClass)\n }\n this.depGraph.delete(filepath)\n this.hashCache.delete(filepath)\n this.log(`[invalidate] ${path.relative(process.cwd(), filepath)}`)\n }\n\n /** Get all active style nodes — untuk full CSS generation */\n getAllNodes(): StyleNode[] {\n return this.globalReg.all()\n }\n\n /** Get stats untuk current build session */\n getStats(): Readonly<IncrementalStats> {\n return { ...this.stats, buildTimeMs: Date.now() - this.sessionStart }\n }\n\n /** Get output CSS path */\n getOutputPath(): string {\n return this.opts.outputPath\n }\n\n /** Reset stats untuk build session baru */\n resetStats(): void {\n this.stats = {\n totalFiles: 0,\n changedFiles: 0,\n skippedFiles: 0,\n addedRules: 0,\n removedRules: 0,\n buildTimeMs: 0,\n }\n this.sessionStart = Date.now()\n }\n\n /** Reset semua cache — untuk clean build */\n reset(): void {\n this.hashCache.clear()\n this.depGraph.clear()\n this.globalReg = new GlobalAtomicRegistry()\n this.cssWriter = new CssDiffWriter(this.opts.outputPath)\n this.resetStats()\n this.log(\"[reset] incremental cache cleared\")\n }\n\n private log(msg: string): void {\n if (this.opts.verbose) {\n console.log(`[tailwind-styled/incremental] ${msg}`)\n }\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// StyleNode extractor helpers — convert extracted Tailwind classes → StyleNodes\n// Dipanggil oleh loader setelah transformSource()\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Parse daftar Tailwind classes menjadi StyleNodes untuk incremental engine.\n * Supports: responsive variants (md:, lg:), pseudo (hover:, focus:), arbitrary.\n *\n * @example\n * parseClassesToNodes([\"p-4\", \"hover:bg-blue-500\", \"md:text-lg\"])\n */\nexport function parseClassesToNodes(classes: string[]): StyleNode[] {\n const nodes: StyleNode[] = []\n\n for (const cls of classes) {\n const node = parseOneClass(cls)\n if (node) nodes.push(node)\n }\n\n return nodes\n}\n\nfunction parseOneClass(cls: string): StyleNode | null {\n // Split modifier:utility\n const colonIdx = cls.lastIndexOf(\":\")\n let modifier: string | undefined\n let utility: string\n\n if (colonIdx > 0) {\n const modStr = cls.slice(0, colonIdx)\n utility = cls.slice(colonIdx + 1)\n modifier = resolveModifier(modStr)\n } else {\n utility = cls\n }\n\n const declaration = twToDeclaration(utility)\n if (!declaration) return null // unknown class — skip\n\n const atomicClass = makeAtomicClass(declaration, modifier)\n\n return { twClass: cls, declaration, modifier, atomicClass }\n}\n\nfunction resolveModifier(mod: string): string {\n const pseudoMap: Record<string, string> = {\n hover: \":hover\",\n focus: \":focus\",\n active: \":active\",\n disabled: \":disabled\",\n visited: \":visited\",\n checked: \":checked\",\n first: \":first-child\",\n last: \":last-child\",\n odd: \":nth-child(odd)\",\n even: \":nth-child(even)\",\n }\n const mediaMap: Record<string, string> = {\n sm: \"@media (min-width: 640px)\",\n md: \"@media (min-width: 768px)\",\n lg: \"@media (min-width: 1024px)\",\n xl: \"@media (min-width: 1280px)\",\n \"2xl\": \"@media (min-width: 1536px)\",\n dark: \"@media (prefers-color-scheme: dark)\",\n print: \"@media print\",\n }\n return pseudoMap[mod] ?? mediaMap[mod] ?? `:${mod}`\n}\n\n/** Minimal Tailwind → CSS declaration mapping (shared dengan styleRegistry) */\nfunction twToDeclaration(cls: string): string | null {\n // Spacing\n const sp = cls.match(/^(p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr|gap)-([\\d.]+)$/)\n if (sp) {\n const propMap: Record<string, string> = {\n p: \"padding\",\n px: \"padding-inline\",\n py: \"padding-block\",\n pt: \"padding-top\",\n pb: \"padding-bottom\",\n pl: \"padding-left\",\n pr: \"padding-right\",\n m: \"margin\",\n mx: \"margin-inline\",\n my: \"margin-block\",\n mt: \"margin-top\",\n mb: \"margin-bottom\",\n ml: \"margin-left\",\n mr: \"margin-right\",\n gap: \"gap\",\n }\n return `${propMap[sp[1]]}: ${parseFloat(sp[2]) * 0.25}rem`\n }\n\n // Sizing\n const w = cls.match(/^w-(.+)$/)\n if (w) return `width: ${sizeVal(w[1])}`\n const h = cls.match(/^h-(.+)$/)\n if (h) return `height: ${sizeVal(h[1])}`\n\n // Opacity, z-index\n const op = cls.match(/^opacity-(\\d+)$/)\n if (op) return `opacity: ${parseInt(op[1], 10) / 100}`\n const z = cls.match(/^z-(\\d+)$/)\n if (z) return `z-index: ${z[1]}`\n\n // Common utilities\n const map: Record<string, string> = {\n block: \"display: block\",\n \"inline-block\": \"display: inline-block\",\n flex: \"display: flex\",\n \"inline-flex\": \"display: inline-flex\",\n grid: \"display: grid\",\n hidden: \"display: none\",\n relative: \"position: relative\",\n absolute: \"position: absolute\",\n fixed: \"position: fixed\",\n sticky: \"position: sticky\",\n \"flex-row\": \"flex-direction: row\",\n \"flex-col\": \"flex-direction: column\",\n \"items-center\": \"align-items: center\",\n \"items-start\": \"align-items: flex-start\",\n \"items-end\": \"align-items: flex-end\",\n \"justify-center\": \"justify-content: center\",\n \"justify-between\": \"justify-content: space-between\",\n \"justify-start\": \"justify-content: flex-start\",\n \"justify-end\": \"justify-content: flex-end\",\n \"font-thin\": \"font-weight: 100\",\n \"font-light\": \"font-weight: 300\",\n \"font-normal\": \"font-weight: 400\",\n \"font-medium\": \"font-weight: 500\",\n \"font-semibold\": \"font-weight: 600\",\n \"font-bold\": \"font-weight: 700\",\n \"font-extrabold\": \"font-weight: 800\",\n \"text-xs\": \"font-size: 0.75rem\",\n \"text-sm\": \"font-size: 0.875rem\",\n \"text-base\": \"font-size: 1rem\",\n \"text-lg\": \"font-size: 1.125rem\",\n \"text-xl\": \"font-size: 1.25rem\",\n \"text-2xl\": \"font-size: 1.5rem\",\n \"text-3xl\": \"font-size: 1.875rem\",\n \"text-4xl\": \"font-size: 2.25rem\",\n rounded: \"border-radius: 0.25rem\",\n \"rounded-md\": \"border-radius: 0.375rem\",\n \"rounded-lg\": \"border-radius: 0.5rem\",\n \"rounded-xl\": \"border-radius: 0.75rem\",\n \"rounded-full\": \"border-radius: 9999px\",\n \"overflow-hidden\": \"overflow: hidden\",\n \"overflow-auto\": \"overflow: auto\",\n \"cursor-pointer\": \"cursor: pointer\",\n \"cursor-default\": \"cursor: default\",\n \"select-none\": \"user-select: none\",\n \"pointer-events-none\": \"pointer-events: none\",\n truncate: \"overflow: hidden; text-overflow: ellipsis; white-space: nowrap\",\n transition:\n \"transition-property: color,background-color,border-color,opacity,box-shadow,transform; transition-duration: 150ms\",\n }\n\n return map[cls] ?? null\n}\n\nfunction sizeVal(v: string): string {\n const num = parseFloat(v)\n if (!Number.isNaN(num)) return `${num * 0.25}rem`\n const special: Record<string, string> = {\n full: \"100%\",\n screen: \"100vw\",\n auto: \"auto\",\n min: \"min-content\",\n max: \"max-content\",\n fit: \"fit-content\",\n }\n return special[v] ?? v\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Singleton — satu engine per build process\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _engine: IncrementalEngine | null = null\n\nexport function getIncrementalEngine(opts?: IncrementalEngineOptions): IncrementalEngine {\n if (!_engine) {\n _engine = new IncrementalEngine(opts)\n }\n return _engine\n}\n\nexport function resetIncrementalEngine(): void {\n _engine = null\n}\n","/**\n * tailwind-styled-v4 — Style Bucket System\n *\n * Setiap CSS rule masuk ke \"bucket\" berdasarkan tipe property-nya.\n * Bucket di-emit dalam urutan yang selalu sama → CSS order stabil\n * meskipun rule di-generate dari banyak file secara incremental.\n *\n * Tanpa bucket system:\n * .tw-color { color: blue } ← dari file A\n * .tw-flex { display: flex } ← dari file B\n * .tw-color2 { color: red } ← dari file C\n * → urutan output bergantung urutan file di-process = TIDAK STABIL\n *\n * Dengan bucket system:\n * /* reset *\\/\n * /* layout *\\/ → display, position, flex, grid, overflow\n * /* spacing *\\/ → margin, padding, gap, inset\n * /* sizing *\\/ → width, height, max/min-width/height\n * /* typography *\\/ → font-size, font-weight, line-height, text-*\n * /* visual *\\/ → color, background, border, shadow, opacity\n * /* interaction *\\/ → cursor, pointer-events, user-select, transition\n * /* responsive *\\/ → @media queries (selalu di akhir)\n * → SELALU urutan ini, terlepas dari urutan file\n *\n * Keuntungan utama:\n * 1. CSS output deterministic antar build (reproducible builds)\n * 2. Specificity conflict sangat kecil — base selalu lebih awal dari responsive\n * 3. Debug lebih mudah — tahu section mana rule berada\n *\n * Integrasi:\n * import { BucketEngine, bucketSort } from \"./styleBucketSystem\"\n *\n * const engine = new BucketEngine()\n * engine.add(styleNode)\n * const css = engine.emit()\n */\n\nimport type { StyleNode } from \"./incrementalEngine\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Bucket Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * 8 bucket utama + 1 bucket \"unknown\" untuk fallback.\n * Urutan angka = urutan emit di CSS output.\n */\nexport type StyleBucket =\n | \"reset\" // 0 — *, box-sizing, root\n | \"layout\" // 1 — display, position, flex, grid, overflow, z-index\n | \"spacing\" // 2 — margin, padding, gap, inset, top/right/bottom/left\n | \"sizing\" // 3 — width, height, max/min variants\n | \"typography\" // 4 — font-size, font-weight, line-height, letter-spacing, text-align\n | \"visual\" // 5 — color, background, border, border-radius, shadow, opacity, outline\n | \"interaction\" // 6 — cursor, pointer-events, user-select, transition, transform, animation\n | \"responsive\" // 7 — @media queries (semua)\n | \"unknown\" // 8 — fallback untuk property yang tidak dikenal\n\nconst BUCKET_ORDER: StyleBucket[] = [\n \"reset\",\n \"layout\",\n \"spacing\",\n \"sizing\",\n \"typography\",\n \"visual\",\n \"interaction\",\n \"responsive\",\n \"unknown\",\n]\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Property → Bucket Mapping\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Map dari CSS property prefix/exact ke bucket */\nconst PROPERTY_BUCKET_MAP: Record<string, StyleBucket> = {\n // Layout\n display: \"layout\",\n position: \"layout\",\n flex: \"layout\",\n \"flex-direction\": \"layout\",\n \"flex-wrap\": \"layout\",\n \"flex-grow\": \"layout\",\n \"flex-shrink\": \"layout\",\n \"flex-basis\": \"layout\",\n grid: \"layout\",\n \"grid-template\": \"layout\",\n \"grid-column\": \"layout\",\n \"grid-row\": \"layout\",\n \"align-items\": \"layout\",\n \"align-self\": \"layout\",\n \"align-content\": \"layout\",\n \"justify-content\": \"layout\",\n \"justify-items\": \"layout\",\n \"justify-self\": \"layout\",\n \"place-items\": \"layout\",\n \"place-content\": \"layout\",\n overflow: \"layout\",\n \"overflow-x\": \"layout\",\n \"overflow-y\": \"layout\",\n \"z-index\": \"layout\",\n float: \"layout\",\n clear: \"layout\",\n visibility: \"layout\",\n\n // Spacing\n padding: \"spacing\",\n \"padding-top\": \"spacing\",\n \"padding-bottom\": \"spacing\",\n \"padding-left\": \"spacing\",\n \"padding-right\": \"spacing\",\n \"padding-inline\": \"spacing\",\n \"padding-block\": \"spacing\",\n margin: \"spacing\",\n \"margin-top\": \"spacing\",\n \"margin-bottom\": \"spacing\",\n \"margin-left\": \"spacing\",\n \"margin-right\": \"spacing\",\n \"margin-inline\": \"spacing\",\n \"margin-block\": \"spacing\",\n gap: \"spacing\",\n \"column-gap\": \"spacing\",\n \"row-gap\": \"spacing\",\n inset: \"spacing\",\n \"inset-inline\": \"spacing\",\n \"inset-block\": \"spacing\",\n top: \"spacing\",\n bottom: \"spacing\",\n left: \"spacing\",\n right: \"spacing\",\n\n // Sizing\n width: \"sizing\",\n height: \"sizing\",\n \"max-width\": \"sizing\",\n \"min-width\": \"sizing\",\n \"max-height\": \"sizing\",\n \"min-height\": \"sizing\",\n \"aspect-ratio\": \"sizing\",\n\n // Typography\n \"font-size\": \"typography\",\n \"font-weight\": \"typography\",\n \"font-family\": \"typography\",\n \"font-style\": \"typography\",\n \"line-height\": \"typography\",\n \"letter-spacing\": \"typography\",\n \"text-align\": \"typography\",\n \"text-decoration\": \"typography\",\n \"text-transform\": \"typography\",\n \"text-overflow\": \"typography\",\n \"white-space\": \"typography\",\n \"word-break\": \"typography\",\n \"word-wrap\": \"typography\",\n \"vertical-align\": \"typography\",\n\n // Visual\n color: \"visual\",\n background: \"visual\",\n \"background-color\": \"visual\",\n \"background-image\": \"visual\",\n \"background-size\": \"visual\",\n \"background-position\": \"visual\",\n \"background-repeat\": \"visual\",\n border: \"visual\",\n \"border-top\": \"visual\",\n \"border-bottom\": \"visual\",\n \"border-left\": \"visual\",\n \"border-right\": \"visual\",\n \"border-inline\": \"visual\",\n \"border-block\": \"visual\",\n \"border-color\": \"visual\",\n \"border-width\": \"visual\",\n \"border-style\": \"visual\",\n \"border-radius\": \"visual\",\n \"box-shadow\": \"visual\",\n opacity: \"visual\",\n outline: \"visual\",\n \"outline-color\": \"visual\",\n \"outline-width\": \"visual\",\n fill: \"visual\",\n stroke: \"visual\",\n \"text-shadow\": \"visual\",\n \"mix-blend-mode\": \"visual\",\n \"object-fit\": \"visual\",\n \"object-position\": \"visual\",\n\n // Interaction\n cursor: \"interaction\",\n \"pointer-events\": \"interaction\",\n \"user-select\": \"interaction\",\n transition: \"interaction\",\n \"transition-property\": \"interaction\",\n \"transition-duration\": \"interaction\",\n \"transition-timing-function\": \"interaction\",\n \"transition-delay\": \"interaction\",\n transform: \"interaction\",\n translate: \"interaction\",\n rotate: \"interaction\",\n scale: \"interaction\",\n animation: \"interaction\",\n \"will-change\": \"interaction\",\n \"scroll-behavior\": \"interaction\",\n \"scroll-snap-type\": \"interaction\",\n\n // Reset (jarang dipakai langsung tapi handle untuk completeness)\n \"box-sizing\": \"reset\",\n appearance: \"reset\",\n all: \"reset\",\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Bucket Classifier\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Classify satu StyleNode ke bucket yang tepat.\n *\n * Priority:\n * 1. Jika ada modifier @media → \"responsive\" (selalu paling akhir)\n * 2. Cek declaration property → lookup PROPERTY_BUCKET_MAP\n * 3. Fallback ke \"unknown\"\n */\nexport function classifyNode(node: StyleNode): StyleBucket {\n // Media queries selalu masuk responsive bucket\n if (node.modifier?.startsWith(\"@\")) return \"responsive\"\n\n // Extract property dari declaration \"property: value; ...\" (support multi-prop)\n const declarations = node.declaration\n .split(\";\")\n .map((d: string) => d.trim())\n .filter(Boolean)\n const firstProp = declarations[0]?.split(\":\")[0]?.trim()\n\n if (!firstProp) return \"unknown\"\n\n // Exact match\n if (PROPERTY_BUCKET_MAP[firstProp]) return PROPERTY_BUCKET_MAP[firstProp]\n\n // Prefix match — untuk shorthand variants\n for (const [prefix, bucket] of Object.entries(PROPERTY_BUCKET_MAP)) {\n if (firstProp.startsWith(prefix)) return bucket\n }\n\n return \"unknown\"\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Bucket Engine\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface BucketStats {\n totalNodes: number\n perBucket: Record<StyleBucket, number>\n}\n\n/**\n * BucketEngine — menyimpan dan emit CSS dalam urutan bucket yang stabil.\n *\n * @example\n * const engine = new BucketEngine()\n * for (const node of styleNodes) engine.add(node)\n * const css = engine.emit()\n */\nexport class BucketEngine {\n private buckets: Map<StyleBucket, Map<string, StyleNode>>\n\n constructor() {\n this.buckets = new Map()\n for (const b of BUCKET_ORDER) {\n this.buckets.set(b, new Map())\n }\n }\n\n /**\n * Tambah StyleNode ke bucket yang tepat.\n * Idempotent — atomic class yang sama tidak akan duplikat.\n */\n add(node: StyleNode): void {\n const bucket = classifyNode(node)\n this.buckets.get(bucket)!.set(node.atomicClass, node)\n }\n\n /**\n * Hapus node dari bucket (untuk incremental update).\n */\n remove(atomicClass: string): void {\n for (const bucket of this.buckets.values()) {\n if (bucket.delete(atomicClass)) break\n }\n }\n\n /**\n * Apply CssDiff dari incremental engine.\n */\n applyDiff(diff: { added: StyleNode[]; removed: string[] }): void {\n for (const node of diff.added) this.add(node)\n for (const cls of diff.removed) this.remove(cls)\n }\n\n /**\n * Emit seluruh CSS dalam urutan bucket yang deterministic.\n *\n * @param comments - Tambahkan komentar section per bucket. Default: true\n * @returns CSS string yang siap di-write ke file\n */\n emit(comments = true): string {\n const sections: string[] = []\n\n for (const bucketName of BUCKET_ORDER) {\n const nodes = this.buckets.get(bucketName)!\n if (nodes.size === 0) continue\n\n const rules: string[] = []\n\n for (const node of nodes.values()) {\n rules.push(nodeToCSS(node))\n }\n\n if (rules.length === 0) continue\n\n if (comments) {\n sections.push(`/* ── ${bucketName} ── */`)\n }\n sections.push(...rules)\n }\n\n return sections.join(\"\\n\")\n }\n\n /**\n * Emit dengan @layer CSS untuk native browser layering.\n * Lebih powerful — browser respects layer order untuk specificity.\n *\n * @example output:\n * @layer tw-layout, tw-spacing, tw-visual, tw-responsive;\n * @layer tw-layout { .tw-a1 { display: flex } }\n */\n emitLayered(): string {\n // Layer declaration\n const layerNames = BUCKET_ORDER.filter(\n (b) => b !== \"unknown\" && this.buckets.get(b)!.size > 0\n ).map((b) => `tw-${b}`)\n\n if (layerNames.length === 0) return \"\"\n\n const parts: string[] = [`@layer ${layerNames.join(\", \")};`, \"\"]\n\n for (const bucketName of BUCKET_ORDER) {\n const nodes = this.buckets.get(bucketName)!\n if (nodes.size === 0) continue\n\n const rules = Array.from(nodes.values()).map(nodeToCSS).join(\"\\n \")\n parts.push(`@layer tw-${bucketName} {\\n ${rules}\\n}`)\n }\n\n return parts.join(\"\\n\")\n }\n\n /** Semua nodes dari semua bucket (untuk full registry access) */\n allNodes(): StyleNode[] {\n const all: StyleNode[] = []\n for (const bucket of this.buckets.values()) {\n for (const node of bucket.values()) {\n all.push(node)\n }\n }\n return all\n }\n\n /** Stats per bucket */\n stats(): BucketStats {\n const perBucket = {} as Record<StyleBucket, number>\n let total = 0\n for (const [name, nodes] of this.buckets) {\n perBucket[name] = nodes.size\n total += nodes.size\n }\n return { totalNodes: total, perBucket }\n }\n\n /** Clear semua bucket */\n clear(): void {\n for (const bucket of this.buckets.values()) {\n bucket.clear()\n }\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// bucketSort — utility function untuk sort array StyleNodes\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Sort array StyleNodes dalam urutan bucket.\n * Berguna untuk one-off sorting tanpa perlu BucketEngine instance.\n *\n * @example\n * const sorted = bucketSort(allNodes)\n * const css = sorted.map(nodeToCSS).join(\"\\n\")\n */\nexport function bucketSort(nodes: StyleNode[]): StyleNode[] {\n const bucketIndex = Object.fromEntries(BUCKET_ORDER.map((b, i) => [b, i])) as Record<\n StyleBucket,\n number\n >\n\n return [...nodes].sort((a, b) => {\n const ai = bucketIndex[classifyNode(a)]\n const bi = bucketIndex[classifyNode(b)]\n return ai - bi\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS generation helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction nodeToCSS(node: StyleNode): string {\n const { atomicClass, declaration, modifier } = node\n\n if (!modifier) {\n return `.${atomicClass}{${declaration}}`\n }\n\n if (modifier.startsWith(\"@\")) {\n return `${modifier}{.${atomicClass}{${declaration}}}`\n }\n\n return `.${atomicClass}${modifier}{${declaration}}`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSSConflictDetector — dev-mode helper\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ConflictWarning {\n property: string\n classes: string[]\n bucket: StyleBucket\n message: string\n}\n\n/**\n * Detect potential CSS conflicts dalam satu set StyleNodes.\n * Hanya untuk dev mode — tidak perlu run di production.\n *\n * Conflict = dua node dengan property yang sama tapi value berbeda\n * di bucket yang sama (bukan responsive override).\n *\n * @example\n * const warnings = detectConflicts(nodes)\n * if (warnings.length) console.warn(warnings)\n */\nexport function detectConflicts(nodes: StyleNode[]): ConflictWarning[] {\n // property+modifier → node\n const seen = new Map<string, StyleNode>()\n const warnings: ConflictWarning[] = []\n\n for (const node of nodes) {\n // Skip responsive — by design override base\n if (node.modifier?.startsWith(\"@\")) continue\n\n const firstProp = node.declaration.split(\":\")[0]?.trim()\n if (!firstProp) continue\n\n const key = `${firstProp}::${node.modifier ?? \"\"}`\n const prev = seen.get(key)\n\n if (prev) {\n warnings.push({\n property: firstProp,\n classes: [prev.twClass, node.twClass],\n bucket: classifyNode(node),\n message: `Possible conflict: \"${prev.twClass}\" and \"${node.twClass}\" both set \"${firstProp}\"`,\n })\n } else {\n seen.set(key, node)\n }\n }\n\n return warnings\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Singleton BucketEngine\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _bucketEngine: BucketEngine | null = null\n\nexport function getBucketEngine(): BucketEngine {\n if (!_bucketEngine) _bucketEngine = new BucketEngine()\n return _bucketEngine\n}\n\nexport function resetBucketEngine(): void {\n _bucketEngine = null\n}\n","/**\n * @deprecated in v5 — Use @tailwind-styled/atomic package instead\n * This module will be removed in v6\n *\n * tailwind-styled-v4 — Atomic CSS Mode (Optional)\n *\n * Mode opsional yang mengubah Tailwind classes menjadi atomic CSS rules.\n * Mirip konsep StyleX dari Meta — setiap class menghasilkan satu CSS rule.\n *\n * Keuntungan:\n * - CSS global deduplicated (p-4 hanya satu rule di seluruh app)\n * - Bundle CSS lebih kecil untuk app besar\n * - Zero duplicate styles\n *\n * Mode ini TIDAK mengganti Tailwind — tetap pakai Tailwind utilities,\n * hanya menambahkan layer extraction untuk SSR streaming.\n *\n * Usage:\n * withTailwindStyled({ atomic: true })(nextConfig)\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Atomic class registry (singleton per build)\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst REGISTRY = new Map<string, AtomicRule>()\n\nexport interface AtomicRule {\n /** Original Tailwind class */\n twClass: string\n /** Generated atomic class name */\n atomicName: string\n /** CSS property */\n property: string\n /** CSS value */\n value: string\n /** Modifier (hover:, md:, etc.) */\n modifier?: string\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Tailwind → CSS property mapping\n// (subset — full mapping lebih baik generate dari Tailwind JIT)\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst TW_PROPERTY_MAP: Record<string, { prop: string; transform?: (val: string) => string }> = {\n // Spacing\n p: { prop: \"padding\", transform: (v) => `${Number(v) * 0.25}rem` },\n px: { prop: \"padding-inline\", transform: (v) => `${Number(v) * 0.25}rem` },\n py: { prop: \"padding-block\", transform: (v) => `${Number(v) * 0.25}rem` },\n pt: { prop: \"padding-top\", transform: (v) => `${Number(v) * 0.25}rem` },\n pb: { prop: \"padding-bottom\", transform: (v) => `${Number(v) * 0.25}rem` },\n pl: { prop: \"padding-left\", transform: (v) => `${Number(v) * 0.25}rem` },\n pr: { prop: \"padding-right\", transform: (v) => `${Number(v) * 0.25}rem` },\n m: { prop: \"margin\", transform: (v) => `${Number(v) * 0.25}rem` },\n mx: { prop: \"margin-inline\", transform: (v) => `${Number(v) * 0.25}rem` },\n my: { prop: \"margin-block\", transform: (v) => `${Number(v) * 0.25}rem` },\n mt: { prop: \"margin-top\", transform: (v) => `${Number(v) * 0.25}rem` },\n mb: { prop: \"margin-bottom\", transform: (v) => `${Number(v) * 0.25}rem` },\n ml: { prop: \"margin-left\", transform: (v) => `${Number(v) * 0.25}rem` },\n mr: { prop: \"margin-right\", transform: (v) => `${Number(v) * 0.25}rem` },\n gap: { prop: \"gap\", transform: (v) => `${Number(v) * 0.25}rem` },\n // Sizing\n w: { prop: \"width\", transform: sizeValue },\n h: { prop: \"height\", transform: sizeValue },\n // Typography\n text: { prop: \"font-size\", transform: textSize },\n font: { prop: \"font-weight\", transform: fontWeight },\n leading: { prop: \"line-height\", transform: leadingValue },\n // Misc\n opacity: { prop: \"opacity\", transform: (v) => String(Number(v) / 100) },\n z: { prop: \"z-index\" },\n rounded: { prop: \"border-radius\", transform: (v) => roundedValue(v) },\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction sizeValue(v: string): string {\n const num = Number(v)\n if (!Number.isNaN(num)) return `${num * 0.25}rem`\n const special: Record<string, string> = {\n full: \"100%\",\n screen: \"100vw\",\n auto: \"auto\",\n min: \"min-content\",\n max: \"max-content\",\n fit: \"fit-content\",\n svw: \"100svw\",\n svh: \"100svh\",\n }\n return special[v] ?? v\n}\n\nfunction textSize(v: string): string {\n const map: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n }\n return map[v] ?? v\n}\n\nfunction fontWeight(v: string): string {\n const map: Record<string, string> = {\n thin: \"100\",\n extralight: \"200\",\n light: \"300\",\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n extrabold: \"800\",\n black: \"900\",\n }\n return map[v] ?? v\n}\n\nfunction leadingValue(v: string): string {\n const map: Record<string, string> = {\n none: \"1\",\n tight: \"1.25\",\n snug: \"1.375\",\n normal: \"1.5\",\n relaxed: \"1.625\",\n loose: \"2\",\n }\n return map[v] ?? v\n}\n\nfunction roundedValue(v: string): string {\n const map: Record<string, string> = {\n \"\": \"0.25rem\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.5rem\",\n full: \"9999px\",\n none: \"0\",\n }\n return map[v] ?? `${v}rem`\n}\n\nfunction sanitizeClassName(cls: string): string {\n return cls.replace(/[/:[\\].!%]/g, \"_\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main: parse a Tailwind class into atomic rule\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function parseAtomicClass(twClass: string): AtomicRule | null {\n if (REGISTRY.has(twClass)) return REGISTRY.get(twClass)!\n\n // Strip modifier (hover:, md:, etc.)\n const colonIdx = twClass.lastIndexOf(\":\")\n const modifier = colonIdx > -1 ? twClass.slice(0, colonIdx) : undefined\n const base = colonIdx > -1 ? twClass.slice(colonIdx + 1) : twClass\n\n // Parse prefix and value\n const dashIdx = base.indexOf(\"-\")\n if (dashIdx === -1) return null\n\n const prefix = base.slice(0, dashIdx)\n const value = base.slice(dashIdx + 1)\n\n const mapping = TW_PROPERTY_MAP[prefix]\n if (!mapping) return null\n\n const cssValue = mapping.transform ? mapping.transform(value) : value\n const atomicName = `_tw_${sanitizeClassName(twClass)}`\n\n const rule: AtomicRule = {\n twClass,\n atomicName,\n property: mapping.prop,\n value: cssValue,\n modifier,\n }\n\n REGISTRY.set(twClass, rule)\n return rule\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Generate CSS string for a set of atomic rules\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function generateAtomicCss(rules: AtomicRule[]): string {\n const lines: string[] = []\n\n for (const rule of rules) {\n const selector = `.${rule.atomicName}`\n\n if (rule.modifier) {\n // Responsive modifiers\n const breakpoints: Record<string, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n }\n if (breakpoints[rule.modifier]) {\n lines.push(\n `@media (min-width: ${breakpoints[rule.modifier]}) {`,\n ` ${selector} { ${rule.property}: ${rule.value}; }`,\n `}`\n )\n continue\n }\n // Pseudo-class modifiers\n lines.push(`${selector}:${rule.modifier} { ${rule.property}: ${rule.value}; }`)\n } else {\n lines.push(`${selector} { ${rule.property}: ${rule.value}; }`)\n }\n }\n\n return lines.join(\"\\n\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Convert class string → atomic class string\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function toAtomicClasses(twClasses: string): {\n atomicClasses: string\n rules: AtomicRule[]\n unknownClasses: string[]\n} {\n const parts = twClasses.split(/\\s+/).filter(Boolean)\n const atomicNames: string[] = []\n const rules: AtomicRule[] = []\n const unknownClasses: string[] = []\n\n for (const cls of parts) {\n const rule = parseAtomicClass(cls)\n if (rule) {\n atomicNames.push(rule.atomicName)\n rules.push(rule)\n } else {\n // Unknown class — keep as-is (Tailwind will handle it)\n unknownClasses.push(cls)\n atomicNames.push(cls)\n }\n }\n\n return {\n atomicClasses: atomicNames.join(\" \"),\n rules,\n unknownClasses,\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Export registry for safelist / CSS file generation\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function getAtomicRegistry(): Map<string, AtomicRule> {\n return REGISTRY\n}\n\nexport function clearAtomicRegistry(): void {\n REGISTRY.clear()\n}\n","import type { TransformOptions, TransformResult } from \"./astTransform\"\n\nexport type CompileEngine = \"none\" | \"native\" | \"js\"\n\nexport interface CompileInput {\n filepath: string\n source: string\n options: TransformOptions\n}\n\nexport class CompileContext {\n filepath: string\n source: string\n options: TransformOptions\n result: TransformResult | null\n done: boolean\n engine: CompileEngine\n\n constructor(input: CompileInput) {\n this.filepath = input.filepath\n this.source = input.source\n this.options = input.options\n this.result = null\n this.done = false\n this.engine = \"none\"\n }\n}\n","export type PipelineStep<T> = (ctx: T) => void\n\nexport class Pipeline<T extends { done?: boolean }> {\n private steps: PipelineStep<T>[] = []\n\n use(step: PipelineStep<T>): this {\n this.steps.push(step)\n return this\n }\n\n run(ctx: T): T {\n for (const step of this.steps) {\n step(ctx)\n if (ctx.done) break\n }\n return ctx\n }\n}\n","import { createHash } from \"node:crypto\"\n\nimport type { TransformOptions, TransformResult } from \"./astTransform\"\nimport { CompileContext, type CompileEngine, type CompileInput } from \"./context\"\nimport { adaptNativeResult, type ComponentMetadata, getNativeBridge } from \"./nativeBridge\"\nimport { Pipeline } from \"./pipeline\"\n\nexport interface CoreCompileOptions extends TransformOptions {}\n\nexport interface CoreCompileResult {\n result: TransformResult\n engine: CompileEngine\n cacheHit: boolean\n /** Compound component metadata produced by Rust — undefined when the JS pipeline ran */\n metadata?: ComponentMetadata[]\n /** CSS output after DSE (when deadStyleElimination option is enabled) */\n css?: string\n}\n\nconst MAX_CACHE_ENTRIES = 512\nconst compileCache = new Map<string, CoreCompileResult>()\n\nfunction makeCacheKey(input: CompileInput): string {\n const options: TransformOptions = {\n mode: input.options.mode,\n autoClientBoundary: input.options.autoClientBoundary,\n addDataAttr: input.options.addDataAttr,\n hoist: input.options.hoist,\n filename: input.options.filename ?? input.filepath,\n deadStyleElimination: input.options.deadStyleElimination,\n }\n return createHash(\"sha1\")\n .update(input.filepath)\n .update(\"\\x1f\")\n .update(input.source)\n .update(\"\\x1f\")\n .update(JSON.stringify(options))\n .digest(\"hex\")\n}\n\nfunction cloneTransformResult(result: TransformResult): TransformResult {\n return {\n code: result.code,\n classes: [...result.classes],\n changed: result.changed,\n rsc: result.rsc\n ? {\n isServer: result.rsc.isServer,\n needsClientDirective: result.rsc.needsClientDirective,\n clientReasons: [...result.rsc.clientReasons],\n }\n : undefined,\n }\n}\n\nfunction cloneCoreCompileResult(result: CoreCompileResult): CoreCompileResult {\n return {\n result: cloneTransformResult(result.result),\n engine: result.engine,\n cacheHit: result.cacheHit,\n metadata: result.metadata ? result.metadata.map((m) => ({ ...m })) : undefined,\n css: result.css,\n }\n}\n\nfunction persistCache(key: string, value: CoreCompileResult): void {\n compileCache.set(key, { ...value, cacheHit: false })\n if (compileCache.size <= MAX_CACHE_ENTRIES) return\n const oldestKey = compileCache.keys().next().value\n if (oldestKey) compileCache.delete(oldestKey)\n}\n\nfunction createPassthrough(source: string): TransformResult {\n return { code: source, classes: [], changed: false }\n}\n\n// ── CompileContext extension for metadata ─────────────────────────────────────\n\ninterface CompileContextExtended extends CompileContext {\n metadata?: ComponentMetadata[]\n}\n\nclass CompilerCore {\n /**\n * v5 CHANGE: Pipeline now uses ONLY native step.\n * Previously fell back to JS pipeline if native was unavailable.\n */\n private pipeline: Pipeline<CompileContextExtended>\n\n constructor() {\n // v5: Only native step - throws if unavailable\n this.pipeline = new Pipeline<CompileContextExtended>().use((ctx) => this.nativeStep(ctx))\n }\n\n compile(input: CompileInput): CoreCompileResult {\n const cacheKey = makeCacheKey(input)\n const cached = compileCache.get(cacheKey)\n if (cached) {\n const hit = cloneCoreCompileResult(cached)\n hit.cacheHit = true\n return hit\n }\n\n const ctx = new CompileContext(input) as CompileContextExtended\n this.pipeline.run(ctx)\n\n const result = ctx.result ?? createPassthrough(input.source)\n\n let cssOutput: string | undefined\n if (ctx.options.deadStyleElimination && result.classes.length > 0) {\n cssOutput = this.runDeadStyleElimination(result.classes, input.options)\n }\n\n const compiled: CoreCompileResult = {\n result,\n engine: ctx.engine,\n cacheHit: false,\n metadata: ctx.metadata,\n css: cssOutput,\n }\n\n persistCache(cacheKey, compiled)\n return cloneCoreCompileResult(compiled)\n }\n\n private runDeadStyleElimination(classes: string[], options: TransformOptions): string {\n if (classes.length === 0) return \"\"\n\n const native = getNativeBridge()\n\n if (native?.analyzeClassesNative) {\n try {\n const filesJson = JSON.stringify([{ file: \"compiled\", classes }])\n const analysis = native.analyzeClassesNative(filesJson, process.cwd(), 0)\n\n if (analysis && analysis.safelist) {\n const deadClasses = new Set<string>()\n const safelistSet = new Set(analysis.safelist)\n\n for (const cls of classes) {\n if (!safelistSet.has(cls)) {\n deadClasses.add(cls)\n }\n }\n\n if (deadClasses.size > 0) {\n return \"\"\n }\n }\n } catch {}\n }\n\n return \"\"\n }\n\n /**\n * v5: Native step now THROWS if native binding is unavailable.\n * Previously returned early to allow JS fallback.\n */\n private nativeStep(ctx: CompileContextExtended): void {\n // v5: Get native bridge - throws if unavailable\n const native = getNativeBridge()\n\n // v5: Native method is required - throw if not available\n if (!native?.transformSourceNative) {\n throw new Error(\n `[tailwind-styled/compiler v5] transformSourceNative is required but not available.\\n` +\n `Please ensure the native module is properly built with transform support.`\n )\n }\n\n // Pass only string-safe opts — index.mjs also sanitises, but be explicit\n const opts: Record<string, string> = {}\n if (ctx.options.mode) opts.mode = ctx.options.mode\n if (ctx.options.filename ?? ctx.filepath) opts.filename = ctx.options.filename ?? ctx.filepath\n\n const raw = native.transformSourceNative(ctx.source, opts)\n\n // null → native explicitly declined (e.g. dynamic-only file)\n // v5: This is now an error - native should handle all files\n if (raw === null) {\n throw new Error(\n `[tailwind-styled/compiler v5] Native transform returned null for: ${ctx.filepath}\\n` +\n `This indicates an issue with the native module.`\n )\n }\n\n const adapted = adaptNativeResult(raw)\n ctx.result = adapted\n ctx.metadata = adapted.metadata\n ctx.engine = \"native\"\n ctx.done = true\n }\n\n /**\n * v5: JS pipeline has been removed.\n * Previously used as fallback when native was unavailable.\n *\n * @throws Error always - JS pipeline is no longer supported in v5\n * @deprecated JS pipeline was removed in v5\n */\n private jsStep(ctx: CompileContextExtended): void {\n throw new Error(\n `[tailwind-styled/compiler v5] JS pipeline is no longer supported.\\n` +\n `The native binding is required for all transformations.`\n )\n }\n}\n\nconst compilerCore = new CompilerCore()\n\nexport function compileWithCore(input: CompileInput): CoreCompileResult {\n return compilerCore.compile(input)\n}\n\nexport function resetCompileCache(): void {\n compileCache.clear()\n}\n","/**\n * tailwind-styled-v4 — Route CSS Collector\n *\n * Mengumpulkan Tailwind classes per-route sehingga setiap halaman\n * hanya memuat CSS yang benar-benar dipakai.\n *\n * Tailwind default: ~300kb global CSS\n * Route CSS: ~2–10kb per halaman\n *\n * Cara kerja:\n * 1. Setiap file yang di-transform oleh compiler melaporkan classnya\n * 2. Collector memetakan file → route\n * 3. Di akhir build, CSS di-generate per route\n *\n * File structure output:\n * .next/static/css/\n * _global.css ← base + reset (sekali load)\n * app/page.css ← hanya class yang dipakai di /\n * app/about/page.css ← hanya class untuk /about\n * app/dashboard/...\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface RouteClassMap {\n /** filepath → array of tw classes */\n files: Map<string, Set<string>>\n /** route → Set of files yang dipakai */\n routes: Map<string, Set<string>>\n /** Global classes (di-load semua route) */\n global: Set<string>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Singleton collector (per build)\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _collector: RouteClassMap = {\n files: new Map(),\n routes: new Map(),\n global: new Set(),\n}\n\n/**\n * Register classes dari sebuah file setelah compiler transform.\n * Dipanggil oleh turbopackLoader/webpackLoader setelah setiap file di-transform.\n */\nexport function registerFileClasses(filepath: string, classes: string[]): void {\n if (!_collector.files.has(filepath)) {\n _collector.files.set(filepath, new Set())\n }\n const fileSet = _collector.files.get(filepath)!\n classes.forEach((c) => fileSet.add(c))\n\n // Auto-detect route dari filepath\n const route = fileToRoute(filepath)\n if (route) {\n if (!_collector.routes.has(route)) {\n _collector.routes.set(route, new Set())\n }\n _collector.routes.get(route)!.add(filepath)\n }\n}\n\n/**\n * Register global classes (base styles, layout, dsb.)\n * Global classes dimuat di semua route.\n */\nexport function registerGlobalClasses(classes: string[]): void {\n classes.forEach((c) => _collector.global.add(c))\n}\n\n/**\n * Get all classes for a specific route (termasuk global)\n */\nexport function getRouteClasses(route: string): Set<string> {\n const result = new Set<string>(_collector.global)\n\n // Tambahkan classes dari semua file yang terkait route ini\n const routeFiles = _collector.routes.get(route) ?? new Set()\n for (const filepath of routeFiles) {\n const fileClasses = _collector.files.get(filepath) ?? new Set()\n fileClasses.forEach((c) => result.add(c))\n }\n\n return result\n}\n\n/**\n * Get all routes yang sudah ter-register\n */\nexport function getAllRoutes(): string[] {\n return Array.from(_collector.routes.keys()).sort()\n}\n\n/**\n * Get complete map (untuk build-time generation)\n */\nexport function getCollector(): RouteClassMap {\n return _collector\n}\n\n/**\n * Reset collector (start of each build)\n */\nexport function resetCollector(): void {\n _collector = {\n files: new Map(),\n routes: new Map(),\n global: new Set(),\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// File → Route mapping\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Konversi filepath ke Next.js App Router route.\n *\n * /src/app/page.tsx → /\n * /src/app/about/page.tsx → /about\n * /src/app/dashboard/page.tsx → /dashboard\n * /src/components/Button.tsx → null (shared component, goes to global)\n * /src/app/layout.tsx → __layout (global)\n */\nexport function fileToRoute(filepath: string): string | null {\n const normalized = filepath.replace(/\\\\/g, \"/\")\n\n // Layout files → global\n if (\n normalized.includes(\"/layout.\") ||\n normalized.includes(\"/loading.\") ||\n normalized.includes(\"/error.\")\n ) {\n return \"__global\"\n }\n\n // Page files in App Router\n const pageMatch = normalized.match(/\\/app\\/(.+?)\\/page\\.[tj]sx?$/)\n if (pageMatch) return `/${pageMatch[1]}`\n\n const rootPage = normalized.match(/\\/app\\/page\\.[tj]sx?$/)\n if (rootPage) return \"/\"\n\n // Pages Router\n const pagesMatch = normalized.match(/\\/pages\\/(.+?)\\.[tj]sx?$/)\n if (pagesMatch) {\n const route = pagesMatch[1].replace(/\\/index$/, \"\")\n return `/${route}`\n }\n\n // Shared components → global\n if (\n normalized.includes(\"/components/\") ||\n normalized.includes(\"/ui/\") ||\n normalized.includes(\"/shared/\")\n ) {\n return \"__global\"\n }\n\n return null\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Summary for logging\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function getCollectorSummary(): string {\n const routes = getAllRoutes()\n const totalFiles = _collector.files.size\n const totalGlobal = _collector.global.size\n\n const lines = [\n `[tailwind-styled-v4] Route CSS Summary:`,\n ` Files processed: ${totalFiles}`,\n ` Global classes: ${totalGlobal}`,\n ` Routes found: ${routes.length}`,\n ...routes.map((r) => {\n const cls = getRouteClasses(r).size\n return ` ${r} → ${cls} classes`\n }),\n ]\n\n return lines.join(\"\\n\")\n}\n","/**\n * tailwind-styled-v5 - loaderCore\n *\n * Unified loader path:\n * incremental precheck -> core compiler (native/js pipeline) -> finalize\n */\n\nimport type { TransformOptions, TransformResult } from \"./astTransform\"\nimport { compileWithCore } from \"./coreCompiler\"\nimport { getIncrementalEngine, parseClassesToNodes } from \"./incrementalEngine\"\nimport type { ComponentMetadata } from \"./nativeBridge\"\nimport { registerFileClasses } from \"./routeCssCollector\"\nimport { getBucketEngine } from \"./styleBucketSystem\"\n\nexport interface LoaderOptions extends TransformOptions {\n routeCss?: boolean\n incremental?: boolean\n verbose?: boolean\n autoClientBoundary?: boolean\n}\n\nexport interface LoaderContext {\n filepath: string\n source: string\n options: LoaderOptions\n isDev?: boolean\n}\n\nexport interface LoaderOutput {\n code: string\n changed: boolean\n classes: string[]\n rsc?: TransformResult[\"rsc\"]\n engine?: \"native\" | \"js\" | \"none\"\n cacheHit?: boolean\n /** Compound component metadata — only present when Rust engine ran */\n metadata?: ComponentMetadata[]\n}\n\nconst SKIP_PATHS = [\"node_modules\", \".next\", \".rspack-dist\", \".turbo\", \"dist/\", \"out/\"]\n\nexport function shouldSkipFile(filepath: string): boolean {\n return SKIP_PATHS.some((p) => filepath.includes(p)) || !/\\.[jt]sx?$/.test(filepath)\n}\n\nexport function runLoaderTransform(ctx: LoaderContext): LoaderOutput {\n const { filepath, source, options } = ctx\n const passthrough: LoaderOutput = { code: source, changed: false, classes: [] }\n\n if (shouldSkipFile(filepath)) return passthrough\n\n try {\n if (options.incremental !== false) {\n const engine = getIncrementalEngine({ verbose: options.verbose })\n const precheck = engine.processFile(filepath, source, [])\n if (!precheck.changed) return passthrough\n }\n\n const compiled = compileWithCore({\n filepath,\n source,\n options: { ...options, filename: filepath },\n })\n\n if (!compiled.result.changed) return passthrough\n\n return finalize(\n compiled.result,\n filepath,\n options,\n compiled.engine,\n compiled.cacheHit,\n compiled.metadata\n )\n } catch (err) {\n if (process.env.NODE_ENV !== \"production\") {\n const name = filepath.split(/[/\\\\]/).pop()\n console.warn(`[tailwind-styled] Transform failed for ${name}:`, err)\n }\n return passthrough\n }\n}\n\nfunction finalize(\n result: TransformResult,\n filepath: string,\n options: LoaderOptions,\n engine: \"native\" | \"js\" | \"none\",\n cacheHit: boolean,\n metadata?: ComponentMetadata[]\n): LoaderOutput {\n if (!result.changed) {\n return { code: result.code, changed: false, classes: [] }\n }\n\n if (options.routeCss && result.classes.length > 0) {\n registerFileClasses(filepath, result.classes)\n }\n\n if (options.incremental !== false) {\n try {\n const engineInst = getIncrementalEngine({ verbose: options.verbose })\n const nodes = parseClassesToNodes(result.classes)\n const diff = engineInst.processFile(filepath, result.code, nodes)\n getBucketEngine().applyDiff(diff.diff)\n } catch {\n // non-fatal\n }\n }\n\n if (options.verbose) {\n const env = result.rsc?.isServer ? \"server\" : \"client\"\n const name = filepath.split(/[/\\\\]/).pop()\n const pathHint = result.rsc ? ` (${env})` : \"\"\n const cacheText = cacheHit ? \" cache-hit\" : \"\"\n const metaText = metadata?.length ? ` [${metadata.length} compound]` : \"\"\n console.log(\n `[tailwind-styled] ${name} -> ${result.classes.length} classes${pathHint} [${engine}${cacheText}]${metaText}`\n )\n }\n\n return {\n code: result.code,\n changed: result.changed,\n classes: result.classes,\n rsc: result.rsc,\n engine,\n cacheHit,\n metadata,\n }\n}\n","/**\n * tailwind-styled-v4 — Default Preset\n *\n * Tailwind config built-in yang dipakai ketika developer tidak punya\n * tailwind.config.ts / tailwind.config.js di project mereka.\n *\n * Developer tidak perlu setup apapun:\n * npm install tailwind-styled-v4\n * → langsung bisa tw.div`p-4 bg-blue-500`\n *\n * Preset ini juga menyediakan design tokens yang consistent\n * untuk semua project yang pakai tailwind-styled-v4.\n *\n * Override per-project:\n * // tailwind.config.ts\n * import { defaultPreset } from \"tailwind-styled-v4/preset\"\n * export default { presets: [defaultPreset], theme: { extend: {...} } }\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Content paths — auto-detect berdasarkan project structure\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst STANDARD_CONTENT_PATHS = [\n // Next.js App Router\n \"./src/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./app/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./pages/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./components/**/*.{tsx,ts,jsx,js,mdx}\",\n // Vite / React\n \"./src/**/*.{tsx,ts,jsx,js}\",\n \"./index.html\",\n // Monorepo\n \"../../packages/**/src/**/*.{tsx,ts,jsx,js}\",\n]\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Design tokens — consistent across all tailwind-styled-v4 projects\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const designTokens = {\n colors: {\n primary: { DEFAULT: \"#3b82f6\", hover: \"#2563eb\", active: \"#1d4ed8\", foreground: \"#ffffff\" },\n secondary: { DEFAULT: \"#6366f1\", hover: \"#4f46e5\", active: \"#4338ca\", foreground: \"#ffffff\" },\n accent: { DEFAULT: \"#f59e0b\", hover: \"#d97706\", active: \"#b45309\", foreground: \"#000000\" },\n success: { DEFAULT: \"#10b981\", foreground: \"#ffffff\" },\n warning: { DEFAULT: \"#f59e0b\", foreground: \"#000000\" },\n danger: { DEFAULT: \"#ef4444\", foreground: \"#ffffff\" },\n info: { DEFAULT: \"#3b82f6\", foreground: \"#ffffff\" },\n surface: \"#18181b\",\n border: \"#27272a\",\n muted: \"#71717a\",\n subtle: \"#3f3f46\",\n },\n\n spacing: {\n 1: \"0.25rem\",\n 2: \"0.5rem\",\n 3: \"0.75rem\",\n 4: \"1rem\",\n 5: \"1.25rem\",\n 6: \"1.5rem\",\n 8: \"2rem\",\n 10: \"2.5rem\",\n 12: \"3rem\",\n 16: \"4rem\",\n },\n\n breakpoints: {\n sm: \"40rem\",\n md: \"48rem\",\n lg: \"64rem\",\n xl: \"80rem\",\n \"2xl\": \"96rem\",\n },\n\n fontWeight: {\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n },\n\n fontFamily: {\n sans: [\"InterVariable\", \"Inter\", \"system-ui\", \"sans-serif\"],\n mono: [\"JetBrains Mono\", \"Fira Code\", \"Consolas\", \"monospace\"],\n },\n\n borderRadius: {\n sm: \"0.25rem\",\n DEFAULT: \"0.5rem\",\n md: \"0.5rem\",\n lg: \"0.75rem\",\n xl: \"1rem\",\n \"2xl\": \"1.5rem\",\n full: \"9999px\",\n },\n\n animation: {\n \"fade-in\": \"fadeIn 0.2s ease-out\",\n \"fade-out\": \"fadeOut 0.2s ease-in\",\n \"slide-up\": \"slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"slide-down\": \"slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"scale-in\": \"scaleIn 0.2s ease-out\",\n },\n\n keyframes: {\n fadeIn: { from: { opacity: \"0\" }, to: { opacity: \"1\" } },\n fadeOut: { from: { opacity: \"1\" }, to: { opacity: \"0\" } },\n slideUp: {\n from: { transform: \"translateY(8px)\", opacity: \"0\" },\n to: { transform: \"translateY(0)\", opacity: \"1\" },\n },\n slideDown: {\n from: { transform: \"translateY(-8px)\", opacity: \"0\" },\n to: { transform: \"translateY(0)\", opacity: \"1\" },\n },\n scaleIn: {\n from: { transform: \"scale(0.95)\", opacity: \"0\" },\n to: { transform: \"scale(1)\", opacity: \"1\" },\n },\n },\n} as const\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Default Tailwind Config — dipakai sebagai fallback + preset\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultPreset = {\n content: STANDARD_CONTENT_PATHS,\n\n darkMode: \"class\" as const,\n\n theme: {\n extend: {\n colors: designTokens.colors,\n fontFamily: designTokens.fontFamily,\n borderRadius: designTokens.borderRadius,\n animation: designTokens.animation,\n keyframes: designTokens.keyframes,\n },\n },\n\n plugins: [],\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Default Theme CSS — Tailwind v4 @theme block\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultThemeCss = `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}`\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config globals.css — tidak perlu @tailwind base dll\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultGlobalCss = `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n/* tailwind-styled-v4 — zero-config base styles */\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\nhtml {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n}\n\nbody {\n margin: 0;\n font-family: var(--font-sans, system-ui, sans-serif);\n background: var(--color-surface, #18181b);\n color: var(--color-foreground, #fafafa);\n}\n`\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config Tailwind v4 CSS generator\n// Dipakai oleh CLI dan withTailwindStyled saat tidak ada user config\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function generateTailwindCss(contentPaths = STANDARD_CONTENT_PATHS): string {\n return `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n@source ${contentPaths.join(\"\\n@source \")}\n`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config tailwind.config.ts generator\n// DEPRECATED: Use generateTailwindCss for Tailwind v4 instead\n// Dipakai oleh CLI dan withTailwindStyled saat tidak ada user config\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function generateTailwindConfig(\n safelistPath = \".tailwind-styled-safelist.json\",\n contentPaths = STANDARD_CONTENT_PATHS\n): string {\n return `import type { Config } from \"tailwindcss\"\nimport { defaultPreset } from \"tailwind-styled-v4/preset\"\n\n// Auto-generated safelist dari tailwind-styled-v4 compiler\nconst safelist = (() => {\n try { return require(${JSON.stringify(safelistPath)}) as string[] }\n catch { return [] }\n})()\n\nexport default {\n presets: [defaultPreset],\n content: ${JSON.stringify(contentPaths, null, 2)},\n safelist,\n} satisfies Config\n`\n}\n","/**\n * tailwind-styled-v4 — Tailwind Config Loader\n *\n * Auto-load tailwind config dari project.\n * Jika tidak ada → fallback ke defaultPreset (zero-config mode).\n *\n * Priority:\n * 1. tailwind.config.ts (TypeScript)\n * 2. tailwind.config.js (JavaScript)\n * 3. tailwind.config.mjs (ESM)\n * 4. defaultPreset (fallback — zero-config)\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\n\nexport type TailwindConfig = Record<string, any>\n\nconst CONFIG_FILES = [\n \"tailwind.config.ts\",\n \"tailwind.config.js\",\n \"tailwind.config.mjs\",\n \"tailwind.config.cjs\",\n]\n\nlet _cachedConfig: TailwindConfig | null = null\nlet _cachedCwd: string = \"\"\n\n/**\n * Load tailwind config. Cached per process.\n * Returns defaultPreset if no config found (zero-config mode).\n */\nexport function loadTailwindConfig(cwd = process.cwd()): TailwindConfig {\n // Cache invalidation\n if (_cachedConfig && _cachedCwd === cwd) return _cachedConfig\n\n _cachedCwd = cwd\n\n // Try each config file\n for (const file of CONFIG_FILES) {\n const fullPath = path.join(cwd, file)\n if (fs.existsSync(fullPath)) {\n try {\n // For .ts files, we need ts-node or pre-compiled version\n // In practice, Next.js/Vite already handle this via their config system\n const mod = require(fullPath)\n const config = mod.default ?? mod\n _cachedConfig = config\n console.log(`[tailwind-styled-v4] Using config: ${file}`)\n return config\n } catch {}\n }\n }\n\n // Zero-config fallback\n console.log(\"[tailwind-styled-v4] No tailwind config found → using built-in preset\")\n const { defaultPreset } = require(\"../../preset/src/defaultPreset\")\n _cachedConfig = defaultPreset\n return defaultPreset\n}\n\n/**\n * Get content paths dari config (atau default paths)\n */\nexport function getContentPaths(config: TailwindConfig, cwd = process.cwd()): string[] {\n const paths: string[] = []\n\n if (Array.isArray(config.content)) {\n for (const item of config.content) {\n if (typeof item === \"string\") paths.push(item)\n else if (typeof item === \"object\" && item.raw) {\n // inline content object — skip\n }\n }\n return paths\n }\n\n if (config.content?.files) {\n return config.content.files.filter((f: any) => typeof f === \"string\")\n }\n\n // Fallback: scan standard dirs\n return [\"src\", \"app\", \"pages\", \"components\"]\n .filter((d) => fs.existsSync(path.join(cwd, d)))\n .map((d) => `./${d}/**/*.{tsx,ts,jsx,js}`)\n}\n\n/**\n * Invalidate config cache (useful for watch mode)\n */\nexport function invalidateConfigCache(): void {\n _cachedConfig = null\n _cachedCwd = \"\"\n}\n\n/**\n * Check if project has zero-config setup (no user tailwind config)\n */\nexport function isZeroConfig(cwd = process.cwd()): boolean {\n return !CONFIG_FILES.some((f) => fs.existsSync(path.join(cwd, f)))\n}\n\n/**\n * Auto-generate tailwind.config.ts dan globals.css jika tidak ada\n * (dipanggil oleh CLI dan withTailwindStyled pada first run)\n */\nexport function bootstrapZeroConfig(cwd = process.cwd()): {\n generatedConfig: boolean\n generatedCss: boolean\n} {\n let generatedConfig = false\n let generatedCss = false\n\n // Tailwind v4: CSS-first — tidak perlu tailwind.config.ts\n // Config dilakukan via CSS (@source, @theme, dsb.)\n generatedConfig = false\n\n // Generate globals.css if missing\n const cssPaths = [\n \"src/app/globals.css\",\n \"app/globals.css\",\n \"src/index.css\",\n \"src/styles/globals.css\",\n ]\n const hasGlobalCss = cssPaths.some((p) => fs.existsSync(path.join(cwd, p)))\n\n if (!hasGlobalCss) {\n const { defaultGlobalCss } = require(\"../../preset/src/defaultPreset\")\n // Try to find app directory\n const appDir = fs.existsSync(path.join(cwd, \"src/app\"))\n ? \"src/app\"\n : fs.existsSync(path.join(cwd, \"app\"))\n ? \"app\"\n : \"src\"\n const cssPath = path.join(cwd, appDir, \"globals.css\")\n if (fs.existsSync(path.dirname(cssPath))) {\n fs.writeFileSync(cssPath, defaultGlobalCss)\n generatedCss = true\n console.log(`[tailwind-styled-v4] Generated ${cssPath}`)\n }\n }\n\n return { generatedConfig, generatedCss }\n}\n","/**\n * tailwind-styled-v4 — safelistGenerator\n *\n * Scan semua source files dan extract Tailwind classes untuk safelist.\n * Output: .tailwind-styled-safelist.json\n *\n * Developer tidak perlu manual safelist.\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport { extractAllClasses } from \"./classExtractor\"\n\nconst SCAN_EXTENSIONS = [\".tsx\", \".ts\", \".jsx\", \".js\"]\n\nfunction scanDir(dir: string, files: string[] = []): string[] {\n if (!fs.existsSync(dir)) return files\n\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n if (entry.name === \"node_modules\" || entry.name === \".next\" || entry.name === \"dist\") continue\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n scanDir(fullPath, files)\n } else if (SCAN_EXTENSIONS.some((ext) => entry.name.endsWith(ext))) {\n files.push(fullPath)\n }\n }\n return files\n}\n\nexport function generateSafelist(\n scanDirs: string[],\n outputPath = \".tailwind-styled-safelist.json\",\n cwd = process.cwd()\n): string[] {\n const allClasses = new Set<string>()\n\n for (const dir of scanDirs) {\n const absDir = path.isAbsolute(dir) ? dir : path.resolve(cwd, dir)\n const files = scanDir(absDir)\n\n for (const file of files) {\n try {\n const source = fs.readFileSync(file, \"utf-8\")\n const classes = extractAllClasses(source)\n classes.forEach((c) => allClasses.add(c))\n } catch {\n // skip unreadable files\n }\n }\n }\n\n const sorted = Array.from(allClasses).sort()\n const absOutput = path.isAbsolute(outputPath) ? outputPath : path.resolve(cwd, outputPath)\n\n fs.writeFileSync(absOutput, JSON.stringify(sorted, null, 2))\n console.log(`[tailwind-styled-v4] Safelist: ${sorted.length} classes → ${absOutput}`)\n\n return sorted\n}\n\nexport function loadSafelist(safelistPath: string): string[] {\n try {\n const content = fs.readFileSync(safelistPath, \"utf-8\")\n return JSON.parse(content)\n } catch {\n return []\n }\n}\n\n/**\n * Tailwind v4 variant — output CSS dengan @source inline() bukan JSON.\n * Tailwind v4 tidak punya 'safelist' di config — pakai @source inline() di CSS.\n */\nexport function generateSafelistCss(\n scanDirs: string[],\n outputPath = \"src/app/__tw-safelist.css\",\n cwd = process.cwd()\n): string[] {\n const allClasses = new Set<string>()\n\n for (const dir of scanDirs) {\n const absDir = path.isAbsolute(dir) ? dir : path.resolve(cwd, dir)\n const files = scanDir(absDir)\n\n for (const file of files) {\n try {\n const source = fs.readFileSync(file, \"utf-8\")\n const classes = extractAllClasses(source)\n classes.forEach((c) => allClasses.add(c))\n } catch {\n // skip unreadable files\n }\n }\n }\n\n const sorted = Array.from(allClasses).sort()\n const absOutput = path.isAbsolute(outputPath) ? outputPath : path.resolve(cwd, outputPath)\n\n fs.mkdirSync(path.dirname(absOutput), { recursive: true })\n\n const css =\n sorted.length > 0\n ? `/* Auto-generated by tailwind-styled-v4 — DO NOT EDIT */\n@source inline(\"${sorted.join(\" \")}\");\n`\n : `/* Auto-generated by tailwind-styled-v4 — DO NOT EDIT */\n/* No safelist classes found */\n`\n\n fs.writeFileSync(absOutput, css)\n console.log(`[tailwind-styled-v4] Safelist: ${sorted.length} classes → ${absOutput}`)\n\n return sorted\n}\n","/**\n * tailwind-styled-v4 — Embedded Tailwind Engine\n *\n * Compiler menjalankan Tailwind internally — tidak perlu tailwind CLI,\n * tidak perlu postcss config manual.\n *\n * Cara kerja:\n * 1. Compiler extract semua class dari source (via classExtractor)\n * 2. Engine generate CSS hanya untuk class tersebut\n * 3. CSS di-output per route (route-level CSS bundling)\n *\n * Ini membuat CSS output jauh lebih kecil:\n * Tailwind normal: ~300kb global\n * Route CSS: ~2–10kb per route\n *\n * NOTE: v5 only supports Tailwind v4. v3 support has been removed.\n */\n\nimport path from \"node:path\"\nimport { loadTailwindConfig } from \"./loadTailwindConfig\"\nimport { getAllRoutes, getRouteClasses } from \"./routeCssCollector\"\n\nexport type TailwindEngineMode = \"jit\" | \"build\" | \"manual\"\n\nexport interface TailwindEngineOptions {\n mode?: TailwindEngineMode\n cwd?: string\n outputDir?: string\n config?: Record<string, any>\n minify?: boolean\n}\n\nexport interface CssGenerateResult {\n route: string\n css: string\n classes: string[]\n sizeBytes: number\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Core engine\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Try to use Tailwind's internal API for CSS generation.\n * Fallback ke manual CSS generation jika Tailwind API tidak tersedia.\n *\n * NOTE: v5 only supports Tailwind v4. v3 support has been removed.\n */\nexport async function generateCssForClasses(\n classes: string[],\n config?: Record<string, any>,\n cwd = process.cwd()\n): Promise<string> {\n // ── Strategy 0: Rust compile_css (FASTEST — always available) ───────────\n // 200+ Tailwind class mappings, full color palette, arbitrary values\n try {\n const { compileCssFromClasses } = require(\"./cssCompiler\") as typeof import(\"./cssCompiler\")\n const result = compileCssFromClasses(classes)\n if (result?.css && result.resolvedClasses.length > 0) {\n // Jika Rust bisa resolve >50% kelas, pakai hasilnya\n const resolveRate = result.resolvedClasses.length / classes.length\n if (resolveRate >= 0.5) return result.css\n }\n } catch {\n /* fallback ke PostCSS */\n }\n\n const twConfig = config ?? loadTailwindConfig(cwd)\n\n // Strategy 1: Tailwind v4 (@tailwindcss/postcss atau native)\n try {\n return await generateViaTailwindV4(classes, twConfig, cwd)\n } catch {\n // not available\n }\n\n // Strategy 2: Manual atomic CSS generation (always available)\n return generateManualCss(classes)\n}\n\n/**\n * Tailwind v4 CSS generation (via @tailwindcss/postcss)\n */\nasync function generateViaTailwindV4(\n classes: string[],\n _config: Record<string, any>,\n cwd: string\n): Promise<string> {\n // Tailwind v4 uses @import \"tailwindcss\" syntax\n // We generate a virtual CSS file that imports tailwindcss + safelist\n const virtualCss = [\n `@import \"tailwindcss\";`,\n `@layer utilities {`,\n ` /* Generated by tailwind-styled-v4 */`,\n `}`,\n ].join(\"\\n\")\n\n const postcss = require(\"postcss\")\n const tailwindcss = require(\"@tailwindcss/postcss\")\n\n const result = await postcss([\n tailwindcss({\n optimize: { minify: false },\n }),\n ]).process(virtualCss, {\n from: path.join(cwd, \"virtual.css\"),\n })\n\n // Filter to only include classes we need\n return filterCssForClasses(result.css, classes)\n}\n\n/**\n * @deprecated in v5 — Tailwind v3 is no longer supported\n * This function will be removed in v6\n * Use @tailwind-styled/atomic or Tailwind v4 instead\n */\nasync function generateViaTailwindV3(\n classes: string[],\n config: Record<string, any>\n): Promise<string> {\n const postcss = require(\"postcss\")\n const tailwindcss = require(\"tailwindcss\")\n\n // Create virtual content with only our classes\n const virtualContent = classes.map((c) => `<div class=\"${c}\">`).join(\"\\n\")\n\n const twConfigWithContent = {\n ...config,\n content: [{ raw: virtualContent, extension: \"html\" }],\n safelist: classes,\n }\n\n const inputCss = `@tailwind base;\\n@tailwind components;\\n@tailwind utilities;`\n\n const result = await postcss([tailwindcss(twConfigWithContent)]).process(inputCss, {\n from: undefined,\n })\n\n return result.css\n}\n\n/**\n * Manual atomic CSS generation — always available, no Tailwind dependency.\n * Menggunakan AtomicCss module yang sudah ada.\n */\nfunction generateManualCss(classes: string[]): string {\n const { generateAtomicCss, parseAtomicClass } = require(\"./atomicCss\")\n\n const rules = classes.map((c: string) => parseAtomicClass(c)).filter(Boolean)\n\n if (rules.length === 0) return \"\"\n\n const header = `/* Generated by tailwind-styled-v4 — ${new Date().toISOString()} */\\n`\n return header + generateAtomicCss(rules)\n}\n\n/**\n * Filter compiled Tailwind CSS to only include needed class selectors.\n * Dipakai untuk optimize output CSS size.\n */\nfunction filterCssForClasses(fullCss: string, classes: string[]): string {\n // Keep @base rules + only selectors matching our classes\n const _classSet = new Set(classes)\n\n const lines = fullCss.split(\"\\n\")\n const kept: string[] = []\n let inBlock = false\n let keepBlock = false\n let braceDepth = 0\n\n for (const line of lines) {\n // Always keep @layer base (reset styles)\n if (line.includes(\"@layer base\") || line.includes(\"*, *::before\")) {\n kept.push(line)\n continue\n }\n\n // Check if line is a selector for one of our classes\n if (!inBlock) {\n const isOurClass = classes.some((cls) => {\n const escaped = cls.replace(/[:/[\\].!%]/g, \"\\\\$&\")\n return line.includes(`.${escaped}`) || line.includes(`.${cls}`)\n })\n\n if (isOurClass) {\n keepBlock = true\n inBlock = true\n braceDepth = 0\n }\n }\n\n if (inBlock) {\n if (keepBlock) kept.push(line)\n if (line.includes(\"{\")) braceDepth++\n if (line.includes(\"}\")) {\n braceDepth--\n if (braceDepth <= 0) {\n inBlock = false\n keepBlock = false\n }\n }\n }\n }\n\n return kept.join(\"\\n\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Build-time CSS generation (dipakai di withTailwindStyled buildEnd hook)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport async function generateAllRouteCss(\n opts: TailwindEngineOptions = {}\n): Promise<CssGenerateResult[]> {\n const { cwd = process.cwd(), outputDir, config, minify = true } = opts\n\n const results: CssGenerateResult[] = []\n const routes = getAllRoutes()\n const twConfig = config ?? loadTailwindConfig(cwd)\n\n for (const route of routes) {\n const classes = Array.from(getRouteClasses(route))\n if (classes.length === 0) continue\n\n try {\n let css = await generateCssForClasses(classes, twConfig, cwd)\n\n if (minify) {\n css = minifyCss(css)\n }\n\n results.push({\n route,\n css,\n classes,\n sizeBytes: Buffer.byteLength(css, \"utf8\"),\n })\n } catch (e) {\n console.warn(`[tailwind-styled-v4] CSS generation failed for route ${route}:`, e)\n }\n }\n\n // Emit CSS files if outputDir provided\n if (outputDir) {\n const fs = require(\"node:fs\")\n fs.mkdirSync(outputDir, { recursive: true })\n\n for (const result of results) {\n const filename = routeToFilename(result.route)\n const filepath = path.join(outputDir, filename)\n fs.mkdirSync(path.dirname(filepath), { recursive: true })\n fs.writeFileSync(filepath, result.css)\n }\n\n const totalSize = results.reduce((sum, r) => sum + r.sizeBytes, 0)\n console.log(\n `[tailwind-styled-v4] Route CSS generated: ${results.length} routes, ${formatBytes(totalSize)} total`\n )\n }\n\n return results\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction routeToFilename(route: string): string {\n if (route === \"/\") return \"index.css\"\n if (route === \"__global\") return \"_global.css\"\n return `${route.replace(/^\\//, \"\").replace(/\\//g, \"_\")}.css`\n}\n\nfunction minifyCss(css: string): string {\n return css\n .replace(/\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g, \"\") // remove comments\n .replace(/\\s+/g, \" \") // collapse whitespace\n .replace(/\\s*{\\s*/g, \"{\")\n .replace(/\\s*}\\s*/g, \"}\")\n .replace(/\\s*:\\s*/g, \":\")\n .replace(/\\s*;\\s*/g, \";\")\n .trim()\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`\n return `${(bytes / 1024 / 1024).toFixed(1)}MB`\n}\n","/**\n * @tailwind-styled/compiler v5 — Public API\n *\n * This is the public API for end users.\n * For internal functions, import from \"@tailwind-styled/compiler/internal\"\n *\n * v5 Changes:\n * - Native binding is now REQUIRED (throws if unavailable)\n * - Mode option removed (zero-runtime only)\n * - API streamlined: only essential functions exported\n * - Dead Style Elimination (DSE) now available as public API\n */\n\n// ── CORE TRANSFORM ─────────────────────────────────────────────────────────\n\nexport type { TransformOptions, TransformResult } from \"./astTransform\"\nexport { transformSource } from \"./astTransform\"\n\n// ── CSS COMPILATION ────────────────────────────────────────────────────────\n\nexport type { CssCompileResult } from \"./cssCompiler\"\nexport { buildStyleTag, compileCssFromClasses } from \"./cssCompiler\"\n\n// ── CLASS EXTRACTION ───────────────────────────────────────────────────────\n\nexport { extractAllClasses } from \"./classExtractor\"\n\n// ── DEAD STYLE ELIMINATOR ─────────────────────────────────────────────────\n\nexport type { EliminationReport, VariantUsage } from \"./deadStyleEliminator\"\nexport {\n eliminateDeadCss,\n extractComponentUsage,\n findDeadVariants,\n optimizeCss,\n runElimination,\n scanProjectUsage,\n} from \"./deadStyleEliminator\"\n\n// ── INCREMENTAL COMPILATION ───────────────────────────────────────────────\n\nexport type { IncrementalEngineOptions, IncrementalStats } from \"./incrementalEngine\"\nexport {\n getIncrementalEngine,\n IncrementalEngine,\n resetIncrementalEngine,\n} from \"./incrementalEngine\"\n\n// ── RSC ANALYSIS ──────────────────────────────────────────────────────────\n\nexport type { RscAnalysis } from \"./rscAnalyzer\"\nexport { analyzeFile } from \"./rscAnalyzer\"\n\n// ── STYLE BUCKET SYSTEM ───────────────────────────────────────────────────\n\nexport type { BucketStats, StyleBucket } from \"./styleBucketSystem\"\nexport { BucketEngine, getBucketEngine, resetBucketEngine } from \"./styleBucketSystem\"\n\n////////////////////////////////////////////////////////////////////////////////\n// DEPRECATED EXPORTS - Will be removed in v6\n// Use @tailwind-styled/compiler/internal instead\n////////////////////////////////////////////////////////////////////////////////\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { shouldProcess } from \"./astTransform\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { AtomicRule } from \"./atomicCss\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport {\n clearAtomicRegistry,\n generateAtomicCss,\n getAtomicRegistry,\n parseAtomicClass,\n toAtomicClasses,\n} from \"./atomicCss\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { mergeClassesStatic, normalizeClasses } from \"./classMerger\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { HoistResult } from \"./componentHoister\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { hoistComponents } from \"./componentHoister\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { CompileEngine, CompileInput } from \"./context\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { CompileContext } from \"./context\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { CoreCompileOptions, CoreCompileResult } from \"./coreCompiler\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { compileWithCore, resetCompileCache } from \"./coreCompiler\"\n\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { CssDiff, FileDependencyGraph, ProcessResult, StyleNode } from \"./incrementalEngine\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { parseClassesToNodes } from \"./incrementalEngine\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { LoaderContext, LoaderOptions, LoaderOutput } from \"./loaderCore\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { runLoaderTransform, shouldSkipFile } from \"./loaderCore\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport {\n bootstrapZeroConfig,\n getContentPaths,\n invalidateConfigCache,\n isZeroConfig,\n loadTailwindConfig,\n} from \"./loadTailwindConfig\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { ComponentMetadata, NativeBridge, NativeTransformResult } from \"./nativeBridge\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { adaptNativeResult, getNativeBridge, resetNativeBridgeCache } from \"./nativeBridge\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { Pipeline } from \"./pipeline\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { RouteClassMap } from \"./routeCssCollector\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport {\n fileToRoute,\n getAllRoutes,\n getCollector,\n getCollectorSummary,\n getRouteClasses,\n registerFileClasses,\n registerGlobalClasses,\n resetCollector,\n} from \"./routeCssCollector\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { ComponentEnv, StaticVariantUsage } from \"./rscAnalyzer\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport {\n analyzeVariantUsage,\n injectClientDirective,\n injectServerOnlyComment,\n resolveServerVariant,\n} from \"./rscAnalyzer\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { AstExtractResult } from \"./rustCssCompiler\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { astExtractClassesNative, compileCssNative } from \"./rustCssCompiler\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { generateSafelist, generateSafelistCss, loadSafelist } from \"./safelistGenerator\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { ConflictWarning } from \"./styleBucketSystem\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { bucketSort, classifyNode, detectConflicts } from \"./styleBucketSystem\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport type { CssGenerateResult, TailwindEngineOptions } from \"./tailwindEngine\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { generateAllRouteCss, generateCssForClasses } from \"./tailwindEngine\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport {\n hasInteractiveFeatures,\n hasTwUsage,\n isDynamic,\n isServerComponent,\n} from \"./twDetector\"\n/** @deprecated Import from @tailwind-styled/compiler/internal */\nexport { compileVariants } from \"./variantCompiler\"\n","/**\n * Scanner — Rust native bridge\n *\n * Wraps the Rust scan_workspace and extract_classes_from_source functions.\n * This module REQUIRES native Rust bindings and will FAIL LOUDLY if they are not available.\n * NO JavaScript fallback is provided.\n */\nimport { createRequire } from \"node:module\"\nimport path from \"node:path\"\n\ninterface NativeScannerBinding {\n scanWorkspace?: (\n root: string,\n extensions: string[] | null\n ) => {\n files: Array<{ file: string; classes: string[]; hash: string }>\n totalFiles: number\n uniqueClasses: string[] | null\n } | null\n extractClassesFromSource?: (source: string) => string[] | null\n hashFileContent?: (content: string) => string | null\n cacheRead?: (cachePath: string) => {\n entries: Array<{\n file: string\n classes: string[]\n hash: string\n mtimeMs: number\n size: number\n hitCount: number\n }>\n version: number\n } | null\n cacheWrite?: (\n cachePath: string,\n entries: Array<{\n file: string\n classes: string[]\n hash: string\n mtimeMs: number\n size: number\n hitCount: number\n }>\n ) => boolean\n cachePriority?: (\n mtimeMs: number,\n size: number,\n cachedMtimeMs: number,\n cachedSize: number,\n cachedHitCount: number,\n cachedLastSeenMs: number,\n nowMs: number\n ) => number\n}\n\nlet _binding: NativeScannerBinding | null | undefined = undefined\nlet _loadError: string | null = null\nlet _candidatePaths: string[] = []\n\nfunction getBinding(): NativeScannerBinding {\n if (_binding !== undefined) {\n if (_binding === null) {\n throwNativeBindingError()\n }\n return _binding\n }\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n _loadError = \"Native loading is disabled by TWS_NO_NATIVE or TWS_NO_RUST environment variable.\"\n _binding = null\n _candidatePaths = []\n throwNativeBindingError()\n }\n\n const runtimeDir = typeof __dirname === \"string\" ? __dirname : process.cwd()\n _candidatePaths = [\n path.resolve(process.cwd(), \"native\", \"tailwind_styled_parser.node\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n ]\n\n const req =\n typeof require === \"function\" ? require : createRequire(path.join(runtimeDir, \"noop.cjs\"))\n\n for (const c of _candidatePaths) {\n try {\n const mod = req(c) as NativeScannerBinding\n if (\n mod?.scanWorkspace ||\n mod?.extractClassesFromSource ||\n mod?.hashFileContent ||\n mod?.cacheRead ||\n mod?.cacheWrite\n ) {\n _binding = mod\n return _binding\n }\n } catch (error) {\n _loadError = error instanceof Error ? error.message : String(error)\n }\n }\n\n // No fallback - fail loudly\n _binding = null\n throwNativeBindingError()\n}\n\nfunction throwNativeBindingError(): never {\n const lines = [\n \"FATAL: Native scanner binding not found.\",\n \"\",\n \"This package requires the Rust native binding 'tailwind_styled_parser.node'.\",\n \"The binding was not found in any of these paths:\",\n ..._candidatePaths.map((p) => ` - ${p}`),\n \"\",\n ]\n\n if (_loadError) {\n lines.push(\"Load error:\", ` ${_loadError}`, \"\")\n }\n\n lines.push(\n \"To fix this, run:\",\n \" npm run build:rust\",\n \"\",\n \"This will build the native Rust module from the 'native/' directory.\",\n \"If you're using this package in a CI/CD environment, ensure Rust toolchain is installed\",\n \"and 'npm run build:rust' is executed before running tests or building.\"\n )\n\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport function scanWorkspaceNative(\n root: string,\n extensions?: string[]\n): ReturnType<NonNullable<NativeScannerBinding[\"scanWorkspace\"]>> {\n return getBinding().scanWorkspace!(root, extensions ?? null)\n}\n\nexport function extractClassesNative(source: string): string[] {\n const result = getBinding().extractClassesFromSource?.(source)\n if (result === null || result === undefined) {\n throw new Error(\"Native extractClassesFromSource returned null/undefined\")\n }\n return result\n}\n\nexport function hashContentNative(content: string): string {\n const result = getBinding().hashFileContent?.(content)\n if (result === null || result === undefined) {\n throw new Error(\"Native hashFileContent returned null/undefined\")\n }\n return result\n}\n\nexport function isRustCacheAvailable(): boolean {\n return true // We always require native binding now\n}\n\nexport function hasNativeScannerBinding(): boolean {\n try {\n getBinding()\n return true\n } catch {\n return false\n }\n}\n\nexport function cacheReadNative(\n cachePath: string\n): ReturnType<NonNullable<NativeScannerBinding[\"cacheRead\"]>> {\n const result = getBinding().cacheRead?.(cachePath)\n if (result === null || result === undefined) {\n throw new Error(\"Native cacheRead returned null/undefined\")\n }\n return result\n}\n\nexport function cacheWriteNative(\n cachePath: string,\n entries: Parameters<NonNullable<NativeScannerBinding[\"cacheWrite\"]>>[1]\n): boolean {\n const result = getBinding().cacheWrite?.(cachePath, entries)\n if (result === null || result === undefined) {\n throw new Error(\"Native cacheWrite returned null/undefined\")\n }\n return result\n}\n\nexport function cachePriorityNative(\n mtimeMs: number,\n size: number,\n cachedMtimeMs: number,\n cachedSize: number,\n cachedHitCount: number,\n cachedLastSeenMs: number,\n nowMs = Date.now()\n): number {\n const result = getBinding().cachePriority?.(\n mtimeMs,\n size,\n cachedMtimeMs,\n cachedSize,\n cachedHitCount,\n cachedLastSeenMs,\n nowMs\n )\n if (result === null || result === undefined) {\n throw new Error(\"Native cachePriority returned null/undefined\")\n }\n return result\n}\n","/**\n * tailwind-styled-v4 — Scanner Cache (Rust-backed)\n *\n * This module REQUIRES native Rust bindings and will FAIL LOUDLY if they are not available.\n * NO JavaScript fallback is provided.\n */\n\nimport path from \"node:path\"\nimport { cachePriorityNative, cacheReadNative, cacheWriteNative } from \"./native-bridge\"\n\nfunction defaultCachePath(rootDir: string, cacheDir?: string): string {\n const dir = cacheDir\n ? path.resolve(rootDir, cacheDir)\n : path.join(process.cwd(), \".cache\", \"tailwind-styled\")\n return path.join(dir, \"scanner-cache.json\")\n}\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport interface NativeCacheEntry {\n file: string\n classes: string[]\n hash: string\n mtimeMs: number\n size: number\n hitCount: number\n}\n\n/**\n * Read scanner cache from disk using Rust parser.\n * REQUIRES native binding - throws if unavailable.\n */\nexport function readCache(rootDir: string, cacheDir?: string): NativeCacheEntry[] {\n const cachePath = defaultCachePath(rootDir, cacheDir)\n\n const result = cacheReadNative(cachePath)\n return result.entries.map((e) => ({\n file: e.file,\n classes: e.classes,\n hash: e.hash,\n mtimeMs: e.mtimeMs,\n size: e.size,\n hitCount: e.hitCount,\n }))\n}\n\n/**\n * Write scanner cache to disk using Rust serialiser.\n * REQUIRES native binding - throws if unavailable.\n */\nexport function writeCache(rootDir: string, entries: NativeCacheEntry[], cacheDir?: string): void {\n const cachePath = defaultCachePath(rootDir, cacheDir)\n\n const success = cacheWriteNative(cachePath, entries)\n if (!success) {\n throw new Error(\n \"Native cacheWrite failed. Run 'npm run build:rust' to rebuild native bindings.\"\n )\n }\n}\n\n/**\n * Compute priority score for a file using the Rust SmartCache algorithm.\n * Higher = process first.\n * REQUIRES native binding - throws if unavailable.\n */\nexport function filePriority(\n mtimeMs: number,\n size: number,\n cached: { mtimeMs: number; size: number; hitCount: number; lastSeenMs?: number } | undefined,\n nowMs = Date.now()\n): number {\n return cachePriorityNative(\n mtimeMs,\n size,\n cached?.mtimeMs ?? 0,\n cached?.size ?? 0,\n cached?.hitCount ?? 0,\n cached?.lastSeenMs ?? 0,\n nowMs\n )\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { Worker } from \"node:worker_threads\"\n\nimport { extractAllClasses } from \"@tailwind-styled/compiler\"\nimport { createLogger } from \"@tailwind-styled/shared\"\nimport { filePriority, type NativeCacheEntry, readCache, writeCache } from \"./cache-native\"\nimport { hashContentNative, isRustCacheAvailable } from \"./native-bridge\"\n\nconst log = createLogger(\"scanner\")\n\nconst SCAN_WORKER_TIMEOUT_MS = 120_000\nconst SCAN_WORKER_BOOTSTRAP = `\nconst { parentPort, workerData } = require(\"node:worker_threads\")\ntry {\n const scanner = require(workerData.modulePath)\n const result = scanner.scanWorkspace(workerData.rootDir, workerData.options ?? {})\n parentPort.postMessage({ ok: true, result })\n} catch (error) {\n parentPort.postMessage({\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n })\n}\n`\n\ntype NativeParsedClass = { raw?: string }\ntype NativeParserBinding = { parse_classes?: (input: string) => NativeParsedClass[] }\n\nlet nativeParserBinding: NativeParserBinding | null | undefined\nlet nativeParserInitError: string | null = null\n\nfunction canUseCjsRequire(): boolean {\n return typeof require === \"function\"\n}\n\nfunction debugNative(message: string): void {\n log.debug(`[native] ${message}`)\n}\n\nfunction loadNativeParserBinding(): NativeParserBinding | null {\n if (nativeParserBinding !== undefined) return nativeParserBinding\n\n if (!canUseCjsRequire()) {\n nativeParserBinding = null\n nativeParserInitError = \"require is unavailable in current module format\"\n debugNative(`fallback to JS: ${nativeParserInitError}`)\n return nativeParserBinding\n }\n\n const candidates = [\n path.resolve(process.cwd(), \"native/tailwind_styled_parser.node\"),\n path.resolve(process.cwd(), \"native/build/Release/tailwind_styled_parser.node\"),\n ]\n\n for (const fullPath of candidates) {\n if (!fs.existsSync(fullPath)) continue\n try {\n const required = require(fullPath) as NativeParserBinding\n if (required && typeof required.parse_classes === \"function\") {\n nativeParserBinding = required\n debugNative(`using native parser from ${fullPath}`)\n return nativeParserBinding\n }\n } catch (error) {\n nativeParserInitError = error instanceof Error ? error.message : String(error)\n }\n }\n\n nativeParserBinding = null\n if (!nativeParserInitError) {\n nativeParserInitError = \"native .node binding not found\"\n }\n debugNative(`fallback to JS: ${nativeParserInitError}`)\n return nativeParserBinding\n}\n\nfunction normalizeWithNativeParser(tokens: string[]): string[] {\n const binding = loadNativeParserBinding()\n if (!binding || typeof binding.parse_classes !== \"function\") {\n throw new Error(\n \"Native parser binding is required but not available. Run 'npm run build:rust' to build it.\"\n )\n }\n\n try {\n const parsed = binding.parse_classes(tokens.join(\" \"))\n const normalized = parsed.map((item) => item.raw?.trim() ?? \"\").filter(Boolean)\n return Array.from(new Set(normalized))\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Native parser failed: ${errorMessage}. Run 'npm run build:rust' to rebuild.`)\n }\n}\n\nexport interface ScanWorkspaceOptions {\n includeExtensions?: string[]\n ignoreDirectories?: string[]\n useCache?: boolean\n cacheDir?: string\n smartInvalidation?: boolean\n}\n\nexport interface ScanFileResult {\n file: string\n classes: string[]\n}\n\nexport interface ScanWorkspaceResult {\n files: ScanFileResult[]\n totalFiles: number\n uniqueClasses: string[]\n}\n\nexport const DEFAULT_EXTENSIONS = [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"]\nexport const DEFAULT_IGNORES = [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"]\n\nfunction resolveScannerWorkerModulePath(): string | null {\n const runtimeDir =\n typeof __dirname === \"string\" && __dirname.length > 0\n ? __dirname\n : path.dirname(fileURLToPath(import.meta.url))\n\n const candidates = [\n path.resolve(runtimeDir, \"index.cjs\"),\n path.resolve(runtimeDir, \"index.js\"),\n path.resolve(runtimeDir, \"index.ts\"),\n ]\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate\n }\n\n return null\n}\n\nfunction scanWorkspaceInWorker(\n rootDir: string,\n options: ScanWorkspaceOptions\n): Promise<ScanWorkspaceResult> {\n const modulePath = resolveScannerWorkerModulePath()\n if (!modulePath) {\n return Promise.reject(new Error(\"scanner worker module path could not be resolved\"))\n }\n\n return new Promise((resolve, reject) => {\n let settled = false\n\n const worker = new Worker(SCAN_WORKER_BOOTSTRAP, {\n eval: true,\n workerData: { modulePath, rootDir, options },\n })\n\n const timeout = setTimeout(() => {\n if (settled) return\n settled = true\n void worker.terminate()\n reject(new Error(`scanner worker timed out after ${SCAN_WORKER_TIMEOUT_MS}ms`))\n }, SCAN_WORKER_TIMEOUT_MS)\n\n const finish = (callback: () => void) => {\n if (settled) return\n settled = true\n clearTimeout(timeout)\n callback()\n }\n\n worker.once(\"message\", (payload: unknown) => {\n const message = payload as\n | { ok: true; result: ScanWorkspaceResult }\n | { ok: false; error?: string }\n finish(() => {\n if (message?.ok) {\n resolve(message.result)\n return\n }\n reject(new Error(message?.error ?? \"scanner worker failed without an error message\"))\n })\n })\n\n worker.once(\"error\", (error) => {\n finish(() => reject(error))\n })\n\n worker.once(\"exit\", (code) => {\n if (code !== 0) {\n finish(() => reject(new Error(`scanner worker exited with code ${code}`)))\n }\n })\n })\n}\n\nfunction buildExtensionSet(includeExtensions: string[]): Set<string> {\n return new Set(includeExtensions)\n}\n\nfunction collectCandidates(\n rootDir: string,\n ignoreDirectories: Set<string>,\n extensionSet: Set<string>\n): string[] {\n const candidates: string[] = []\n const directories = [rootDir]\n\n while (directories.length > 0) {\n const currentDir = directories.pop()\n if (!currentDir) continue\n\n let entries: fs.Dirent[] = []\n try {\n entries = fs.readdirSync(currentDir, { withFileTypes: true })\n } catch {\n continue\n }\n\n for (const entry of entries) {\n const fullPath = path.join(currentDir, entry.name)\n\n if (entry.isDirectory()) {\n if (!ignoreDirectories.has(entry.name)) directories.push(fullPath)\n continue\n }\n\n if (!entry.isFile()) continue\n if (!extensionSet.has(path.extname(entry.name))) continue\n candidates.push(fullPath)\n }\n }\n\n return candidates\n}\n\nfunction toCacheSize(size: number): number {\n if (!Number.isFinite(size)) return 0\n const normalized = Math.max(0, Math.trunc(size))\n return Math.min(normalized, 0xffffffff)\n}\n\nfunction extractClassesJs(source: string): string[] {\n return extractAllClasses(source)\n}\n\nexport function scanSource(source: string): string[] {\n const nativeBinding = loadNativeParserBinding()\n if (nativeBinding && typeof nativeBinding.parse_classes === \"function\") {\n try {\n const baseClasses = extractClassesJs(source)\n const nativeNormalized = normalizeWithNativeParser(baseClasses)\n return nativeNormalized\n } catch (error) {\n throw error\n }\n }\n\n throw new Error(\n \"Native parser binding is required but not available. Run 'npm run build:rust' to build it.\"\n )\n}\n\nexport function isScannableFile(filePath: string, includeExtensions = DEFAULT_EXTENSIONS): boolean {\n return includeExtensions.includes(path.extname(filePath))\n}\n\nexport function scanFile(filePath: string): ScanFileResult {\n const source = fs.readFileSync(filePath, \"utf8\")\n const hash = hashContentNative(source) ?? undefined\n return {\n file: filePath,\n classes: scanSource(source),\n ...(hash ? { hash } : {}),\n }\n}\n\nexport function scanWorkspace(\n rootDir: string,\n options: ScanWorkspaceOptions = {}\n): ScanWorkspaceResult {\n const includeExtensions = options.includeExtensions ?? DEFAULT_EXTENSIONS\n const extensionSet = buildExtensionSet(includeExtensions)\n const ignoreDirectories = new Set(options.ignoreDirectories ?? DEFAULT_IGNORES)\n const useCache = options.useCache ?? true\n const smartInvalidation = options.smartInvalidation ?? true\n\n const files: ScanFileResult[] = []\n const unique = new Set<string>()\n const candidates = collectCandidates(rootDir, ignoreDirectories, extensionSet)\n\n const processResult = (result: ScanFileResult) => {\n files.push(result)\n for (const cls of result.classes) unique.add(cls)\n }\n\n const { scanWorkspaceNative } = require(\"./native-bridge\")\n\n if (!options.cacheDir && !useCache) {\n const nativeResult = scanWorkspaceNative(rootDir, includeExtensions)\n if (nativeResult) {\n return {\n files: nativeResult.files.map((f: { file: string; classes: string[] }) => ({\n file: f.file,\n classes: f.classes,\n })),\n totalFiles: nativeResult.totalFiles,\n uniqueClasses: nativeResult.uniqueClasses,\n }\n }\n }\n\n if (useCache && isRustCacheAvailable()) {\n let cacheEntries: NativeCacheEntry[] = []\n try {\n cacheEntries = readCache(rootDir, options.cacheDir)\n } catch (error) {\n cacheEntries = []\n log.debug(\n `cache read failed, continuing without persisted cache: ${\n error instanceof Error ? error.message : String(error)\n }`\n )\n }\n\n const cacheMap = new Map(cacheEntries.map((entry) => [entry.file, entry]))\n const nowMs = Date.now()\n const ranked: Array<{\n filePath: string\n stat: fs.Stats\n size: number\n cached?: NativeCacheEntry\n priority: number\n }> = []\n\n for (const filePath of candidates) {\n let stat: fs.Stats\n try {\n stat = fs.statSync(filePath)\n } catch {\n continue\n }\n\n const size = toCacheSize(stat.size)\n const cached = cacheMap.get(filePath)\n const priority = filePriority(\n stat.mtimeMs,\n size,\n cached\n ? {\n mtimeMs: cached.mtimeMs,\n size: cached.size,\n hitCount: cached.hitCount,\n lastSeenMs: 0,\n }\n : undefined,\n nowMs\n )\n\n ranked.push({ filePath, stat, size, cached, priority })\n }\n\n ranked.sort((a, b) => b.priority - a.priority)\n\n const updatedEntries: NativeCacheEntry[] = []\n\n for (const { filePath, stat, size, cached } of ranked) {\n let content: string\n try {\n content = fs.readFileSync(filePath, \"utf8\")\n } catch {\n continue\n }\n\n const hash = hashContentNative(content)\n if (\n cached &&\n cached.hash === hash &&\n cached.mtimeMs === stat.mtimeMs &&\n cached.size === size\n ) {\n log.debug(`cache HIT ${filePath}`)\n processResult({ file: filePath, classes: cached.classes })\n updatedEntries.push({\n file: filePath,\n classes: cached.classes,\n hash: cached.hash,\n mtimeMs: stat.mtimeMs,\n size,\n hitCount: (cached.hitCount ?? 0) + 1,\n })\n continue\n }\n\n log.debug(`cache MISS ${filePath}`)\n const classes = scanSource(content)\n processResult({ file: filePath, classes })\n updatedEntries.push({\n file: filePath,\n classes,\n hash,\n mtimeMs: stat.mtimeMs,\n size,\n hitCount: 1,\n })\n }\n\n try {\n writeCache(rootDir, updatedEntries, options.cacheDir)\n } catch (error) {\n log.debug(`cache write failed: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n return {\n files,\n totalFiles: files.length,\n uniqueClasses: Array.from(unique).sort(),\n }\n }\n\n for (const filePath of candidates) {\n processResult(scanFile(filePath))\n }\n\n return {\n files,\n totalFiles: files.length,\n uniqueClasses: Array.from(unique).sort(),\n }\n}\n\nexport async function scanWorkspaceAsync(\n rootDir: string,\n options: ScanWorkspaceOptions = {}\n): Promise<ScanWorkspaceResult> {\n if (process.env.TWS_DISABLE_SCANNER_WORKER === \"1\") {\n return scanWorkspace(rootDir, options)\n }\n\n try {\n return await scanWorkspaceInWorker(rootDir, options)\n } catch (error) {\n log.debug(\n `worker scan failed, falling back to sync scanner: ${\n error instanceof Error ? error.message : String(error)\n }`\n )\n return scanWorkspace(rootDir, options)\n }\n}\n","import fs from \"node:fs\"\nimport { createDebugLogger } from \"@tailwind-styled/shared\"\n\nexport const DEFAULT_TOP_LIMIT = 10\nexport const DEFAULT_FREQUENT_THRESHOLD = 2\nexport const DEBUG_NAMESPACE = \"tailwind-styled:analyzer\"\n\nexport function formatErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport async function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.promises.access(filePath, fs.constants.F_OK)\n return true\n } catch {\n return false\n }\n}\n\nexport const debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\")\n\nexport function sanitizeTopLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT\n return Math.max(1, Math.trunc(value as number))\n}\n\nexport function sanitizeFrequentThreshold(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD\n return Math.max(1, Math.trunc(value as number))\n}\n","import {\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n} from \"@tailwind-styled/shared\"\n\nimport type { NativeAnalyzerBinding, NativeCssCompilerBinding } from \"./types\"\nimport { debugLog } from \"./utils\"\n\nlet bindingCache: NativeAnalyzerBinding | null | undefined\nlet bindingCandidateCache: string[] = []\nlet bindingLoadErrorsCache: Array<{ path: string; message: string }> = []\nlet loadedBindingPathCache: string | null = null\n\nfunction isAnalyzerModule(module: unknown): module is NativeAnalyzerBinding {\n const candidate = module as Partial<NativeAnalyzerBinding> | null | undefined\n return typeof candidate?.analyzeClasses === \"function\"\n}\n\nexport function getNativeBinding(): NativeAnalyzerBinding | null {\n if (bindingCache !== undefined) return bindingCache\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n bindingCandidateCache = []\n bindingLoadErrorsCache = []\n loadedBindingPathCache = null\n debugLog(\"native binding disabled by TWS_NO_NATIVE/TWS_NO_RUST\")\n bindingCache = null\n return bindingCache\n }\n\n const runtimeDir = resolveRuntimeDir(\n typeof __dirname === \"string\" ? __dirname : undefined,\n import.meta.url\n )\n const candidates = resolveNativeBindingCandidates({\n runtimeDir,\n envVarNames: [\"TWS_NATIVE_PATH\"],\n })\n\n const { binding, loadErrors, loadedPath } = loadNativeBinding<NativeAnalyzerBinding>({\n runtimeDir,\n candidates,\n isValid: isAnalyzerModule,\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\n })\n\n bindingCandidateCache = candidates\n bindingLoadErrorsCache = loadErrors\n loadedBindingPathCache = loadedPath\n\n if (binding) {\n debugLog(`native binding loaded from: ${loadedPath}`)\n bindingCache = binding\n return bindingCache\n }\n\n if (bindingLoadErrorsCache.length > 0) {\n debugLog(\n `native binding load failed for ${bindingLoadErrorsCache.length} candidate(s): ${bindingLoadErrorsCache\n .map((entry) => `${entry.path} (${entry.message})`)\n .join(\"; \")}`\n )\n } else {\n debugLog(\"native binding not found in any candidate path\")\n }\n\n bindingCache = null\n return bindingCache\n}\n\nexport function requireNativeBinding(): NativeAnalyzerBinding {\n const binding = getNativeBinding()\n if (binding?.analyzeClasses) return binding\n\n const lines = [\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\",\n ]\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n lines.push(\"Native loading is disabled by TWS_NO_NATIVE/TWS_NO_RUST.\")\n } else {\n lines.push(\"Checked paths:\")\n for (const candidate of bindingCandidateCache) lines.push(`- ${candidate}`)\n if (bindingLoadErrorsCache.length > 0) {\n lines.push(\"Load errors:\")\n for (const failure of bindingLoadErrorsCache) {\n lines.push(`- ${failure.path}: ${failure.message}`)\n }\n }\n }\n\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport function requireNativeCssCompiler(): NativeCssCompilerBinding {\n const binding = requireNativeBinding() as NativeCssCompilerBinding\n if (typeof binding.compileCss === \"function\") return binding\n\n const loadedPathText = loadedBindingPathCache ? ` (${loadedBindingPathCache})` : \"\"\n throw new Error(`Native analyzer compileCss binding is missing in v5${loadedPathText}.`)\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { pathToFileURL } from \"node:url\"\n\nimport type {\n AnalyzerSemanticReport,\n ClassConflict,\n ClassUsage,\n LoadedTailwindConfig,\n TailwindConfigCacheEntry,\n} from \"./types\"\nimport { debugLog, formatErrorMessage, isRecord, pathExists } from \"./utils\"\n\nconst SUPPORTED_TAILWIND_CONFIG_EXTENSIONS = new Set([\".ts\", \".js\", \".cjs\", \".mjs\"])\nconst KNOWN_UTILITY_PREFIXES = new Set([\n \"absolute\",\n \"align\",\n \"animate\",\n \"arbitrary\",\n \"aspect\",\n \"backdrop\",\n \"basis\",\n \"bg\",\n \"block\",\n \"border\",\n \"bottom\",\n \"col\",\n \"container\",\n \"contents\",\n \"cursor\",\n \"dark\",\n \"display\",\n \"divide\",\n \"fill\",\n \"fixed\",\n \"flex\",\n \"float\",\n \"font\",\n \"from\",\n \"gap\",\n \"grid\",\n \"grow\",\n \"h\",\n \"hidden\",\n \"inset\",\n \"inline\",\n \"isolate\",\n \"items\",\n \"justify\",\n \"left\",\n \"leading\",\n \"line\",\n \"list\",\n \"m\",\n \"max-h\",\n \"max-w\",\n \"mb\",\n \"min-h\",\n \"min-w\",\n \"ml\",\n \"mr\",\n \"mt\",\n \"mx\",\n \"my\",\n \"object\",\n \"opacity\",\n \"order\",\n \"origin\",\n \"outline\",\n \"overflow\",\n \"overscroll\",\n \"p\",\n \"pb\",\n \"pe\",\n \"perspective\",\n \"place\",\n \"pl\",\n \"pointer\",\n \"position\",\n \"pr\",\n \"ps\",\n \"pt\",\n \"px\",\n \"py\",\n \"relative\",\n \"right\",\n \"ring\",\n \"rotate\",\n \"rounded\",\n \"row\",\n \"scale\",\n \"shadow\",\n \"shrink\",\n \"size\",\n \"skew\",\n \"snap\",\n \"space-x\",\n \"space-y\",\n \"sr\",\n \"start\",\n \"static\",\n \"sticky\",\n \"stroke\",\n \"table\",\n \"text\",\n \"to\",\n \"top\",\n \"touch\",\n \"tracking\",\n \"transform\",\n \"transition\",\n \"translate\",\n \"truncate\",\n \"underline\",\n \"via\",\n \"visible\",\n \"w\",\n \"whitespace\",\n \"z\",\n])\n\nconst tailwindConfigCache = new Map<string, TailwindConfigCacheEntry>()\n\nexport function splitVariantAndBase(className: string): { variantKey: string; base: string } {\n const parts = className.split(\":\")\n if (parts.length <= 1) return { variantKey: \"\", base: className }\n const base = parts.pop() ?? className\n return { variantKey: parts.join(\":\"), base }\n}\n\nfunction isArbitraryUtility(baseClass: string): boolean {\n return baseClass.includes(\"[\") && baseClass.includes(\"]\")\n}\n\nexport function resolveConflictGroup(base: string): string | null {\n if (isArbitraryUtility(base)) return null\n if ([\"block\", \"inline\", \"inline-block\", \"inline-flex\", \"flex\", \"grid\", \"hidden\"].includes(base))\n return \"display\"\n if (base.startsWith(\"bg-\")) return \"bg\"\n if (base.startsWith(\"text-\")) return \"text\"\n if (base.startsWith(\"font-\")) return \"font\"\n if (base.startsWith(\"rounded\")) return \"rounded\"\n if (base.startsWith(\"shadow\")) return \"shadow\"\n if (base.startsWith(\"border-\")) return \"border\"\n if (base.startsWith(\"opacity-\")) return \"opacity\"\n if (base.startsWith(\"w-\") || base.startsWith(\"min-w-\") || base.startsWith(\"max-w-\"))\n return \"width\"\n if (base.startsWith(\"h-\") || base.startsWith(\"min-h-\") || base.startsWith(\"max-h-\"))\n return \"height\"\n if (base.startsWith(\"p-\") || base.startsWith(\"px-\") || base.startsWith(\"py-\")) return \"padding\"\n if (base.startsWith(\"m-\") || base.startsWith(\"mx-\") || base.startsWith(\"my-\")) return \"margin\"\n return null\n}\n\nfunction detectConflicts(usages: ClassUsage[]): {\n conflicts: ClassConflict[]\n conflictedClassNames: Set<string>\n} {\n const buckets = new Map<string, { variantKey: string; group: string; classes: Set<string> }>()\n\n for (const usage of usages) {\n const { variantKey, base } = splitVariantAndBase(usage.name)\n const group = resolveConflictGroup(base)\n if (!group) continue\n\n const key = `${variantKey}::${group}`\n const bucket = buckets.get(key) ?? {\n variantKey,\n group,\n classes: new Set<string>(),\n }\n bucket.classes.add(usage.name)\n buckets.set(key, bucket)\n }\n\n const conflicts: ClassConflict[] = []\n const conflictedClassNames = new Set<string>()\n\n for (const bucket of buckets.values()) {\n if (bucket.classes.size <= 1) continue\n const classes = Array.from(bucket.classes).sort()\n for (const className of classes) conflictedClassNames.add(className)\n\n const variantLabel = bucket.variantKey.length > 0 ? bucket.variantKey : \"base\"\n conflicts.push({\n className: bucket.group,\n variants: bucket.variantKey.length > 0 ? bucket.variantKey.split(\":\") : [],\n classes,\n message: `Multiple ${bucket.group} utilities detected for \"${variantLabel}\".`,\n })\n }\n\n conflicts.sort((left, right) => {\n if (right.classes.length !== left.classes.length)\n return right.classes.length - left.classes.length\n return left.className.localeCompare(right.className)\n })\n\n return { conflicts, conflictedClassNames }\n}\n\nfunction isSupportedTailwindConfigPath(configPath: string): boolean {\n return SUPPORTED_TAILWIND_CONFIG_EXTENSIONS.has(path.extname(configPath).toLowerCase())\n}\n\nasync function resolveTailwindConfigPath(\n root: string,\n explicitPath?: string\n): Promise<string | null> {\n if (explicitPath) {\n const resolved = path.resolve(root, explicitPath)\n if (!(await pathExists(resolved))) return null\n return resolved\n }\n\n const candidates = [\n \"tailwind.config.ts\",\n \"tailwind.config.js\",\n \"tailwind.config.cjs\",\n \"tailwind.config.mjs\",\n ]\n\n for (const candidate of candidates) {\n const fullPath = path.resolve(root, candidate)\n if (await pathExists(fullPath)) return fullPath\n }\n\n return null\n}\n\nfunction collectSafelistFromConfig(config: Record<string, unknown>): string[] {\n const raw = config.safelist\n if (!Array.isArray(raw)) return []\n\n const out = new Set<string>()\n for (const entry of raw) {\n if (typeof entry === \"string\" && entry.length > 0) {\n out.add(entry)\n continue\n }\n if (!entry || typeof entry !== \"object\") continue\n const pattern = (entry as Record<string, unknown>).pattern\n if (typeof pattern === \"string\" && pattern.length > 0) {\n out.add(pattern)\n }\n }\n\n return Array.from(out)\n}\n\nfunction collectCustomUtilities(config: Record<string, unknown>): Set<string> {\n const out = new Set<string>()\n const theme = config.theme\n if (!theme || typeof theme !== \"object\") return out\n\n const extend = (theme as Record<string, unknown>).extend\n if (!extend || typeof extend !== \"object\") return out\n\n for (const [section, value] of Object.entries(extend as Record<string, unknown>)) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) continue\n for (const key of Object.keys(value as Record<string, unknown>)) {\n out.add(`${section}-${key}`)\n if (section === \"colors\") {\n out.add(`bg-${key}`)\n out.add(`text-${key}`)\n out.add(`border-${key}`)\n } else if (section === \"spacing\") {\n out.add(`p-${key}`)\n out.add(`m-${key}`)\n out.add(`gap-${key}`)\n out.add(`w-${key}`)\n out.add(`h-${key}`)\n } else if (section === \"fontSize\") {\n out.add(`text-${key}`)\n } else if (section === \"borderRadius\") {\n out.add(`rounded-${key}`)\n } else if (section === \"boxShadow\") {\n out.add(`shadow-${key}`)\n }\n }\n }\n\n return out\n}\n\nasync function collectSafelistFromSource(configPath: string): Promise<string[]> {\n const source = await fs.promises.readFile(configPath, \"utf8\")\n const safelistBlock = source.match(/safelist\\s*:\\s*\\[([\\s\\S]*?)\\]/m)?.[1]\n if (!safelistBlock) return []\n\n const out = new Set<string>()\n const tokenRegex = /[\"'`]([^\"'`]+)[\"'`]/g\n let token = tokenRegex.exec(safelistBlock)\n while (token) {\n const value = token[1].trim()\n if (value.length > 0) out.add(value)\n token = tokenRegex.exec(safelistBlock)\n }\n return Array.from(out)\n}\n\nasync function loadTailwindConfig(\n root: string,\n semanticOption?: { tailwindConfigPath?: string }\n): Promise<LoadedTailwindConfig | null> {\n const startMs = Date.now()\n const configPath = await resolveTailwindConfigPath(root, semanticOption?.tailwindConfigPath)\n if (!configPath) return null\n\n if (!isSupportedTailwindConfigPath(configPath)) {\n return {\n path: configPath,\n loaded: false,\n warning: `Unsupported Tailwind config extension at \"${configPath}\". Supported extensions: .ts, .js, .cjs, .mjs.`,\n safelist: new Set<string>(),\n customUtilities: new Set<string>(),\n }\n }\n\n const configStat = await fs.promises.stat(configPath).catch(() => null)\n if (configStat) {\n const cached = tailwindConfigCache.get(configPath)\n if (cached && cached.mtimeMs === configStat.mtimeMs && cached.size === configStat.size) {\n debugLog(\n `tailwind config cache hit: ${configPath} (${cached.config.safelist.size} safelist entries)`\n )\n return cached.config\n }\n }\n\n let config: Record<string, unknown> | null = null\n let warning: string | undefined\n\n try {\n const cacheBustToken = Math.trunc(configStat?.mtimeMs ?? Date.now())\n const imported = await import(`${pathToFileURL(configPath).href}?tws_mtime=${cacheBustToken}`)\n const candidate = (imported.default ?? imported) as unknown\n if (isRecord(candidate)) {\n config = candidate\n } else if (typeof candidate === \"function\") {\n const evaluated = candidate()\n if (isRecord(evaluated)) {\n config = evaluated\n } else {\n warning = \"Tailwind config export function must return an object.\"\n }\n } else {\n warning = \"Tailwind config export must be an object or a function returning an object.\"\n }\n } catch (error) {\n warning = formatErrorMessage(error)\n }\n\n const safelist = new Set<string>()\n const customUtilities = new Set<string>()\n\n if (config) {\n for (const item of collectSafelistFromConfig(config)) safelist.add(item)\n for (const item of collectCustomUtilities(config)) customUtilities.add(item)\n }\n\n if (safelist.size === 0) {\n try {\n for (const item of await collectSafelistFromSource(configPath)) safelist.add(item)\n } catch (error) {\n debugLog(\n `failed to parse safelist from source at \"${configPath}\": ${formatErrorMessage(error)}`\n )\n // keep empty if source parsing fails\n }\n }\n\n const loaded = {\n path: configPath,\n loaded: config !== null,\n warning,\n safelist,\n customUtilities,\n }\n\n if (configStat) {\n tailwindConfigCache.set(configPath, {\n mtimeMs: configStat.mtimeMs,\n size: configStat.size,\n config: loaded,\n })\n }\n\n debugLog(\n `tailwind config loaded from \"${configPath}\" in ${Date.now() - startMs}ms ` +\n `(loaded=${loaded.loaded}, safelist=${loaded.safelist.size}, custom=${loaded.customUtilities.size})`\n )\n\n return loaded\n}\n\nexport function utilityPrefix(baseClass: string): string {\n const normalized = baseClass.startsWith(\"-\") ? baseClass.slice(1) : baseClass\n if (normalized.includes(\"[\") && normalized.includes(\"]\")) return \"arbitrary\"\n if (normalized.startsWith(\"min-w-\")) return \"min-w\"\n if (normalized.startsWith(\"max-w-\")) return \"max-w\"\n if (normalized.startsWith(\"min-h-\")) return \"min-h\"\n if (normalized.startsWith(\"max-h-\")) return \"max-h\"\n if (normalized.startsWith(\"space-x-\")) return \"space-x\"\n if (normalized.startsWith(\"space-y-\")) return \"space-y\"\n if (normalized.startsWith(\"inline-\")) return \"inline\"\n if (normalized.startsWith(\"border-\")) return \"border\"\n if (normalized.startsWith(\"text-\")) return \"text\"\n if (normalized.startsWith(\"bg-\")) return \"bg\"\n if (normalized.startsWith(\"rounded\")) return \"rounded\"\n if (normalized.startsWith(\"shadow\")) return \"shadow\"\n const hyphen = normalized.indexOf(\"-\")\n if (hyphen < 0) return normalized\n return normalized.slice(0, hyphen)\n}\n\nfunction isKnownTailwindClass(\n className: string,\n safelist: Set<string>,\n customUtilities: Set<string>\n): boolean {\n if (safelist.has(className) || customUtilities.has(className)) return true\n const { base } = splitVariantAndBase(className)\n if (customUtilities.has(base)) return true\n const prefix = utilityPrefix(base)\n return KNOWN_UTILITY_PREFIXES.has(prefix)\n}\n\nexport async function buildSemanticReport(\n usages: ClassUsage[],\n root: string,\n semanticOption?: { tailwindConfigPath?: string }\n): Promise<AnalyzerSemanticReport> {\n const loadedConfig = await loadTailwindConfig(root, semanticOption)\n const safelist = loadedConfig?.safelist ?? new Set<string>()\n const customUtilities = loadedConfig?.customUtilities ?? new Set<string>()\n const usageNames = new Set(usages.map((usage) => usage.name))\n\n const unusedClasses: ClassUsage[] = Array.from(safelist)\n .filter((className) => !usageNames.has(className))\n .sort()\n .map((className) => ({ name: className, count: 0, isUnused: true }))\n\n const unknownClasses: ClassUsage[] = usages\n .filter((usage) => !isKnownTailwindClass(usage.name, safelist, customUtilities))\n .map((usage) => ({ ...usage, isUnused: true }))\n\n const { conflicts } = detectConflicts(usages)\n\n return {\n unusedClasses,\n unknownClasses,\n conflicts,\n ...(loadedConfig\n ? {\n tailwindConfig: {\n path: loadedConfig.path,\n loaded: loadedConfig.loaded,\n safelistCount: loadedConfig.safelist.size,\n customUtilityCount: loadedConfig.customUtilities.size,\n ...(loadedConfig.warning ? { warning: loadedConfig.warning } : {}),\n },\n }\n : {}),\n }\n}\n","import path from \"node:path\"\n\nimport type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\n\nimport { requireNativeBinding } from \"./binding\"\nimport { buildSemanticReport } from \"./semantic\"\nimport type {\n AnalyzerOptions,\n AnalyzerReport,\n AnalyzerSemanticReport,\n ClassUsage,\n NativeReport,\n} from \"./types\"\nimport { debugLog, formatErrorMessage, sanitizeFrequentThreshold, sanitizeTopLimit } from \"./utils\"\n\nfunction normalizeScan(\n scan: ScanWorkspaceResult,\n includeClass?: (className: string) => boolean\n): ScanWorkspaceResult {\n if (!includeClass) return scan\n\n const filteredFiles = scan.files.map((file) => ({\n file: file.file,\n classes: file.classes.filter((className) => includeClass(className)),\n }))\n const unique = new Set<string>()\n for (const file of filteredFiles) {\n for (const className of file.classes) unique.add(className)\n }\n\n return {\n files: filteredFiles,\n totalFiles: scan.totalFiles,\n uniqueClasses: Array.from(unique).sort(),\n }\n}\n\nexport function collectClassCounts(scan: ScanWorkspaceResult): Map<string, number> {\n const counts = new Map<string, number>()\n for (const file of scan.files) {\n for (const className of file.classes) {\n counts.set(className, (counts.get(className) ?? 0) + 1)\n }\n }\n return counts\n}\n\nfunction buildClassUsage(counts: Map<string, number>): ClassUsage[] {\n return Array.from(counts.entries())\n .map(([name, count]) => ({ name, count }))\n .sort((left, right) => {\n if (right.count !== left.count) return right.count - left.count\n return left.name.localeCompare(right.name)\n })\n}\n\nexport function buildDistribution(usages: ClassUsage[]): Record<string, number> {\n const distribution = {\n \"1\": 0,\n \"2-3\": 0,\n \"4-7\": 0,\n \"8+\": 0,\n }\n\n for (const usage of usages) {\n if (usage.count === 1) {\n distribution[\"1\"] += 1\n continue\n }\n if (usage.count <= 3) {\n distribution[\"2-3\"] += 1\n continue\n }\n if (usage.count <= 7) {\n distribution[\"4-7\"] += 1\n continue\n }\n distribution[\"8+\"] += 1\n }\n\n return distribution\n}\n\n/**\n * Analyze Tailwind class usage in a workspace and return usage statistics.\n * Set `semantic.tailwindConfigPath` to override Tailwind config lookup.\n * @example\n * const report = await analyzeWorkspace(\"./src\", {\n * classStats: { top: 20, frequentThreshold: 2 },\n * semantic: { tailwindConfigPath: \"tailwind.config.js\" },\n * })\n */\nexport async function analyzeWorkspace(\n root: string,\n options: AnalyzerOptions = {}\n): Promise<AnalyzerReport> {\n const startedAtMs = Date.now()\n const resolvedRoot = path.resolve(root)\n\n const scanStartedAtMs = Date.now()\n let scan: ScanWorkspaceResult\n try {\n scan = await scanWorkspaceAsync(resolvedRoot, options.scanner)\n } catch (error) {\n throw new Error(`Failed to scan workspace at \"${resolvedRoot}\": ${formatErrorMessage(error)}`, {\n cause: error,\n })\n }\n debugLog(\n `scanWorkspaceAsync processed ${scan.totalFiles} files in ${Date.now() - scanStartedAtMs}ms`\n )\n\n const normalizedScan = normalizeScan(scan, options.includeClass)\n const topLimit = sanitizeTopLimit(options.classStats?.top)\n const frequentThreshold = sanitizeFrequentThreshold(options.classStats?.frequentThreshold)\n\n const binding = requireNativeBinding()\n const filesJson = JSON.stringify(\n normalizedScan.files.map((file) => ({ file: file.file, classes: file.classes }))\n )\n\n let nativeReport: NativeReport | null = null\n try {\n nativeReport = binding.analyzeClasses(filesJson, resolvedRoot, topLimit)\n } catch (error) {\n throw new Error(`Native analyzer failed for \"${resolvedRoot}\": ${formatErrorMessage(error)}`, {\n cause: error,\n })\n }\n if (!nativeReport) {\n throw new Error(`Native analyzer returned no report for \"${resolvedRoot}\".`)\n }\n\n const counts = collectClassCounts(normalizedScan)\n let all = buildClassUsage(counts)\n let semanticReport: AnalyzerSemanticReport | undefined\n\n if (options.semantic) {\n const semanticOption = typeof options.semantic === \"object\" ? options.semantic : undefined\n const semanticStartedAtMs = Date.now()\n try {\n semanticReport = await buildSemanticReport(all, resolvedRoot, semanticOption)\n } catch (error) {\n throw new Error(\n `Failed to build semantic report for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\n { cause: error }\n )\n }\n debugLog(`semantic report built in ${Date.now() - semanticStartedAtMs}ms`)\n\n if (semanticReport.conflicts.length > 0) {\n const conflicted = new Set(semanticReport.conflicts.flatMap((conflict) => conflict.classes))\n all = all.map((usage) =>\n conflicted.has(usage.name) ? { ...usage, isConflict: true } : usage\n )\n }\n }\n\n const top = all.slice(0, topLimit)\n const frequent = all.filter((usage) => usage.count >= frequentThreshold).slice(0, topLimit)\n const unique = all.filter((usage) => usage.count === 1)\n const totalClassOccurrences = all.reduce((sum, usage) => sum + usage.count, 0)\n\n debugLog(\n `analyzeWorkspace completed in ${Date.now() - startedAtMs}ms ` +\n `(files=${normalizedScan.totalFiles}, uniqueClasses=${all.length})`\n )\n\n return {\n root: nativeReport.root || resolvedRoot,\n totalFiles: nativeReport.totalFiles,\n uniqueClassCount: all.length,\n totalClassOccurrences,\n classStats: {\n all,\n top,\n frequent,\n unique,\n distribution: buildDistribution(all),\n },\n safelist: all.map((usage) => usage.name),\n ...(semanticReport ? { semantic: semanticReport } : {}),\n }\n}\n","import { requireNativeCssCompiler } from \"./binding\"\nimport type { ClassToCssOptions, ClassToCssResult, NativeCssCompileResult } from \"./types\"\nimport { formatErrorMessage } from \"./utils\"\n\nexport function normalizeClassInput(input: string | string[]): string[] {\n if (typeof input === \"string\") {\n return input\n .split(/\\s+/)\n .map((item) => item.trim())\n .filter((item) => item.length > 0)\n }\n\n if (!Array.isArray(input)) {\n throw new TypeError(\"classToCss input must be a string or an array of strings.\")\n }\n\n const out: string[] = []\n for (const item of input) {\n if (typeof item !== \"string\") {\n throw new TypeError(\"classToCss input array must contain only strings.\")\n }\n const value = item.trim()\n if (value.length > 0) out.push(value)\n }\n return out\n}\n\nfunction normalizeClassToCssOptions(options: ClassToCssOptions): {\n prefix: string | null\n strict: boolean\n} {\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new TypeError(\"classToCss options must be an object.\")\n }\n\n const strict = options.strict ?? false\n if (typeof strict !== \"boolean\") {\n throw new TypeError(\"classToCss options.strict must be a boolean when provided.\")\n }\n\n const prefix = options.prefix ?? null\n if (prefix !== null && typeof prefix !== \"string\") {\n throw new TypeError(\"classToCss options.prefix must be a string or null when provided.\")\n }\n\n return { prefix, strict }\n}\n\nfunction mergeDeclarationMap(target: Map<string, string>, css: string): void {\n const ruleRegex = /\\{([^}]*)\\}/g\n let ruleMatch = ruleRegex.exec(css)\n while (ruleMatch) {\n const body = ruleMatch[1]\n for (const raw of body.split(\";\")) {\n const declaration = raw.trim()\n if (declaration.length === 0) continue\n const colonIndex = declaration.indexOf(\":\")\n if (colonIndex <= 0) continue\n const property = declaration.slice(0, colonIndex).trim()\n const value = declaration.slice(colonIndex + 1).trim()\n if (property.length === 0 || value.length === 0) continue\n if (target.has(property)) target.delete(property)\n target.set(property, value)\n }\n ruleMatch = ruleRegex.exec(css)\n }\n}\n\nfunction declarationMapToString(declarationMap: Map<string, string>): string {\n return Array.from(declarationMap.entries())\n .map(([property, value]) => `${property}: ${value}`)\n .join(\"; \")\n}\n\n/**\n * Convert Tailwind class input into atomic CSS output via native binding.\n * @example\n * const css = await classToCss(\"opacity-0 translate-y-2\", { strict: true })\n */\nexport async function classToCss(\n input: string | string[],\n options: ClassToCssOptions = {}\n): Promise<ClassToCssResult> {\n const inputClasses = normalizeClassInput(input)\n const normalizedOptions = normalizeClassToCssOptions(options)\n if (inputClasses.length === 0) {\n return {\n inputClasses: [],\n css: \"\",\n declarations: \"\",\n resolvedClasses: [],\n unknownClasses: [],\n sizeBytes: 0,\n }\n }\n\n const binding = requireNativeCssCompiler()\n const prefix = normalizedOptions.prefix\n const cssChunks: string[] = []\n const resolvedClasses: string[] = []\n const unknownClasses: string[] = []\n let sizeBytes = 0\n const declarationMap = new Map<string, string>()\n\n for (const className of inputClasses) {\n let compiled: NativeCssCompileResult | null = null\n try {\n compiled = binding.compileCss([className], prefix)\n } catch (error) {\n throw new Error(\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\n { cause: error }\n )\n }\n\n if (!compiled) {\n throw new Error(`Native analyzer returned no result for class \"${className}\".`)\n }\n\n cssChunks.push(compiled.css)\n resolvedClasses.push(...compiled.resolvedClasses)\n unknownClasses.push(...compiled.unknownClasses)\n sizeBytes += compiled.sizeBytes\n mergeDeclarationMap(declarationMap, compiled.css)\n }\n\n const uniqueUnknown = Array.from(new Set(unknownClasses))\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`)\n }\n\n return {\n inputClasses,\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\n declarations: declarationMapToString(declarationMap),\n resolvedClasses: Array.from(new Set(resolvedClasses)),\n unknownClasses: uniqueUnknown,\n sizeBytes,\n }\n}\n","/**\n * @tailwind-styled/analyzer v5\n *\n * Native-first async analyzer with semantic reporting.\n */\n\nimport { analyzeWorkspace, buildDistribution, collectClassCounts } from \"./analyzeWorkspace\"\nimport { classToCss, normalizeClassInput } from \"./classToCss\"\nimport { resolveConflictGroup, splitVariantAndBase, utilityPrefix } from \"./semantic\"\n\nexport type {\n AnalyzerOptions,\n AnalyzerReport,\n AnalyzerSemanticReport,\n ClassConflict,\n ClassToCssOptions,\n ClassToCssResult,\n ClassUsage,\n} from \"./types\"\n\nexport { analyzeWorkspace, classToCss }\n\nexport const __internal = {\n normalizeClassInput,\n splitVariantAndBase,\n resolveConflictGroup,\n collectClassCounts,\n buildDistribution,\n utilityPrefix,\n}\n","/**\n * tailwind-styled-v4 — Vite Plugin v5\n *\n * Usage in vite.config.ts:\n * import { tailwindStyledPlugin } from \"@tailwind-styled/vite\"\n * export default defineConfig({\n * plugins: [react(), tailwindStyledPlugin()]\n * })\n *\n * v5 Changes:\n * - Simplified API (removed deprecated options)\n * - Uses @tailwind-styled/engine for build\n * - Mode always zero-runtime\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\n\nimport type { LoaderOptions, TransformOptions } from \"@tailwind-styled/compiler\"\nimport { generateSafelist, runLoaderTransform } from \"@tailwind-styled/compiler\"\nimport { createEngine } from \"@tailwind-styled/engine\"\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\n\nexport interface VitePluginOptions {\n /** File patterns to include. Default: /\\.(tsx|ts|jsx|js)$/ */\n include?: RegExp\n /** File patterns to exclude. Default: /node_modules/ */\n exclude?: RegExp\n /** Directories to scan. Default: [\"src\"] */\n scanDirs?: string[]\n /** Safelist output path. Default: \".tailwind-styled-safelist.json\" */\n safelistOutput?: string\n /** Generate safelist at build end. Default: true */\n generateSafelist?: boolean\n /** Scan report output path. Default: \".tailwind-styled-scan-report.json\" */\n scanReportOutput?: string\n /** Run engine build at build end. Default: true */\n useEngineBuild?: boolean\n /** Enable analyzer for semantic reports. Default: false */\n analyze?: boolean\n /** Throw error on engine build failure. If true, error will abort Vite build (useful for CI/CD). If false (default), error only shows console.warn. Default: false */\n strict?: boolean\n\n /** @deprecated in v5 - mode is always \"zero-runtime\" */\n mode?: \"zero-runtime\" | \"runtime\"\n /** @deprecated in v5 - handled by engine */\n routeCss?: boolean\n /** @deprecated in v5 - handled by engine with analyze: true */\n deadStyleElimination?: boolean\n /** @deprecated in v5 - no longer used */\n addDataAttr?: boolean\n /** @deprecated in v5 - no longer used */\n autoClientBoundary?: boolean\n /** @deprecated in v5 - no longer used */\n hoist?: boolean\n /** @deprecated in v5 - no longer used */\n incremental?: boolean\n}\n\nfunction warnDeprecated(options: VitePluginOptions, key: keyof VitePluginOptions, message: string) {\n if (options[key] !== undefined) {\n console.warn(`[tailwind-styled-v4] Warning: '${key}' is deprecated in v5. ${message}`)\n }\n}\n\nexport function tailwindStyledPlugin(opts: VitePluginOptions = {}): any {\n warnDeprecated(opts, \"mode\", \"Only zero-runtime is supported.\")\n warnDeprecated(opts, \"routeCss\", \"Use engine's analyzing capabilities.\")\n warnDeprecated(opts, \"deadStyleElimination\", \"Use 'analyze: true' option instead.\")\n warnDeprecated(opts, \"addDataAttr\", \"Handled by engine internally.\")\n warnDeprecated(opts, \"autoClientBoundary\", \"Handled by engine internally.\")\n warnDeprecated(opts, \"hoist\", \"Handled by engine internally.\")\n warnDeprecated(opts, \"incremental\", \"Handled by engine internally.\")\n\n const {\n include = /\\.(tsx|ts|jsx|js)$/,\n exclude = /node_modules/,\n scanDirs = [\"src\"],\n safelistOutput = \".tailwind-styled-safelist.json\",\n scanReportOutput = \".tailwind-styled-scan-report.json\",\n generateSafelist: doSafelist = true,\n useEngineBuild = true,\n analyze = false,\n strict = false,\n } = opts\n\n let root = process.cwd()\n let isDev = true\n\n return {\n name: \"tailwind-styled-v4\",\n enforce: \"pre\" as const,\n\n configResolved(config: any) {\n root = config.root\n isDev = config.command === \"serve\"\n },\n\n transform(source: string, id: string) {\n const filepath = id.split(\"?\")[0]\n if (!include.test(filepath)) return null\n if (exclude.test(filepath)) return null\n\n const loaderOptions: LoaderOptions = {\n // v5: Always zero-runtime (mode is deprecated)\n mode: \"zero-runtime\",\n addDataAttr: isDev,\n filename: filepath,\n // Preserve cv, cx, cn, etc — only tw.* is transformed\n preserveImports: true,\n }\n\n const output = runLoaderTransform({\n filepath,\n source,\n options: loaderOptions,\n isDev,\n })\n\n if (!output.changed) return null\n return { code: output.code, map: null }\n },\n\n async buildEnd() {\n if (isDev) return\n\n if (doSafelist) {\n try {\n generateSafelist(\n scanDirs.map((d) => path.resolve(root, d)),\n path.resolve(root, safelistOutput),\n root\n )\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Safelist generation failed:\", e)\n }\n }\n\n try {\n const report = await scanWorkspaceAsync(root)\n const reportPath = path.resolve(root, scanReportOutput)\n fs.writeFileSync(\n reportPath,\n JSON.stringify(\n {\n root,\n totalFiles: report.totalFiles,\n uniqueClassCount: report.uniqueClasses.length,\n },\n null,\n 2\n ) + \"\\n\"\n )\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Scan report generation failed:\", e)\n }\n\n if (useEngineBuild) {\n try {\n const engine = await createEngine({\n root,\n compileCss: true,\n analyze,\n scanner: {\n includeExtensions: [\".tsx\", \".ts\", \".jsx\", \".js\"],\n ignoreDirectories: scanDirs,\n },\n })\n await engine.build()\n console.log(\"[tailwind-styled-v4] ✓ Engine build complete\")\n } catch (e) {\n const msg = `[tailwind-styled-v4] Engine build step failed: ${e}`\n if (strict) {\n throw new Error(msg)\n } else {\n console.warn(msg)\n }\n }\n }\n },\n\n handleHotUpdate({ file, server }: any) {\n if (include.test(file) && !exclude.test(file)) {\n server.ws.send({ type: \"full-reload\" })\n }\n },\n }\n}\n\nexport default tailwindStyledPlugin\n","import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { pathToFileURL } from \"node:url\"\nimport { analyzeWorkspace } from \"@tailwind-styled/analyzer\"\nimport { generateCssForClasses, mergeClassesStatic } from \"@tailwind-styled/compiler\"\nimport {\n type ScanWorkspaceOptions,\n type ScanWorkspaceResult,\n scanWorkspaceAsync,\n} from \"@tailwind-styled/scanner\"\nimport { createLogger } from \"@tailwind-styled/shared\"\n\nimport { applyIncrementalChange } from \"./incremental\"\nimport { EngineMetricsCollector, type EngineMetricsSnapshot } from \"./metrics\"\nimport {\n type EnginePlugin,\n runAfterBuild,\n runAfterScan,\n runAfterWatch,\n runBeforeBuild,\n runBeforeScan,\n runBeforeWatch,\n runOnError,\n runTransformClasses,\n} from \"./plugin-api\"\nimport { type WorkspaceWatcher, watchWorkspace } from \"./watch\"\n\nconst DEFAULT_LARGE_FILE_THRESHOLD_BYTES = 10 * 1024 * 1024\nconst DEFAULT_FLUSH_DEBOUNCE_MS = 100\nconst DEFAULT_MAX_EVENTS_PER_FLUSH = 100\nconst log = createLogger(\"engine\")\n\nexport interface EngineOptions {\n root?: string\n scanner?: ScanWorkspaceOptions\n compileCss?: boolean\n tailwindConfigPath?: string\n plugins?: EnginePlugin[]\n /** Enable analyzer integration - provides semantic report (unused classes, conflicts). Default: false */\n analyze?: boolean\n}\n\nexport interface EngineWatchOptions {\n debounceMs?: number\n maxEventsPerFlush?: number\n largeFileThreshold?: number\n}\n\nexport interface BuildResult {\n scan: ScanWorkspaceResult\n mergedClassList: string\n css: string\n /** Analyzer semantic report - present when analyze: true in options */\n analysis?: {\n unusedClasses: unknown[]\n classConflicts: Array<{ className: string; files: string[] }>\n classUsage: Record<string, number>\n }\n}\n\ntype EngineBuildWatchEventType = \"initial\" | \"change\" | \"unlink\" | \"full-rescan\"\n\nexport type EngineWatchEvent =\n | {\n type: EngineBuildWatchEventType\n filePath?: string\n result: BuildResult\n metrics?: EngineMetricsSnapshot\n }\n | {\n type: \"error\"\n filePath?: string\n error: string\n metrics?: EngineMetricsSnapshot\n }\n\nexport interface TailwindStyledEngine {\n scan(): Promise<ScanWorkspaceResult>\n build(): Promise<BuildResult>\n watch(\n onEvent: (event: EngineWatchEvent) => void,\n options?: EngineWatchOptions\n ): Promise<{ close(): void }>\n}\n\nasync function loadTailwindConfigFromPath(\n root: string,\n tailwindConfigPath?: string\n): Promise<Record<string, unknown> | undefined> {\n if (!tailwindConfigPath) return undefined\n\n const configPath = path.resolve(root, tailwindConfigPath)\n if (!fs.existsSync(configPath)) {\n throw new Error(`tailwindConfigPath not found: ${configPath}`)\n }\n\n const imported = await import(pathToFileURL(configPath).href)\n const config = (imported.default ?? imported) as Record<string, unknown>\n return config\n}\n\nasync function tryRunAnalyzer(root: string, scan: ScanWorkspaceResult) {\n try {\n const { __internal } = await import(\"@tailwind-styled/analyzer\")\n const counts = __internal.collectClassCounts(scan)\n\n const classUsage: Record<string, number> = {}\n for (const [name, count] of counts) {\n classUsage[name] = count\n }\n\n return {\n unusedClasses: Array.from(counts.keys()).filter((c) => counts.get(c) === 0),\n classConflicts: [],\n classUsage,\n }\n } catch (e) {\n log.warn(\"Analyzer not available:\", String(e))\n return undefined\n }\n}\n\nasync function buildFromScan(\n scan: ScanWorkspaceResult,\n root: string,\n options: EngineOptions,\n tailwindConfig?: Record<string, unknown>\n): Promise<BuildResult> {\n const plugins = options.plugins ?? []\n const context = { root, timestamp: Date.now() }\n\n await runBeforeBuild(plugins, scan, context)\n const transformedClasses = await runTransformClasses(plugins, scan.uniqueClasses, context)\n const mergedClassList = mergeClassesStatic(transformedClasses.join(\" \"))\n\n let css = \"\"\n if (options.compileCss !== false && mergedClassList.length > 0) {\n css = await generateCssForClasses(\n mergedClassList.split(/\\s+/).filter(Boolean),\n tailwindConfig,\n root\n )\n }\n\n let analysis: BuildResult[\"analysis\"]\n if (options.analyze) {\n analysis = await tryRunAnalyzer(root, scan)\n }\n\n const result: BuildResult = {\n scan,\n mergedClassList,\n css,\n analysis,\n }\n\n return runAfterBuild(plugins, result, context)\n}\n\nexport async function createEngine(options: EngineOptions = {}): Promise<TailwindStyledEngine> {\n const root = options.root ?? process.cwd()\n const resolvedRoot = path.resolve(root)\n\n const plugins = options.plugins ?? []\n\n let cachedTailwindConfig: Record<string, unknown> | undefined\n let tailwindConfigLoaded = false\n\n const getTailwindConfig = async (): Promise<Record<string, unknown> | undefined> => {\n if (tailwindConfigLoaded) return cachedTailwindConfig\n cachedTailwindConfig = await loadTailwindConfigFromPath(\n resolvedRoot,\n options.tailwindConfigPath\n )\n tailwindConfigLoaded = true\n return cachedTailwindConfig\n }\n\n const reportEngineError = async (error: unknown): Promise<Error> => {\n const normalized = error instanceof Error ? error : new Error(String(error))\n const context = { root: resolvedRoot, timestamp: Date.now() }\n try {\n await runOnError(plugins, normalized, context)\n } catch (pluginError) {\n log.error(\n \"plugin onError hook failed:\",\n pluginError instanceof Error ? pluginError.message : String(pluginError)\n )\n }\n log.error(normalized.message)\n return normalized\n }\n\n const doScan = async (): Promise<ScanWorkspaceResult> => {\n try {\n const context = { root: resolvedRoot, timestamp: Date.now() }\n await runBeforeScan(plugins, context)\n const scan = await scanWorkspaceAsync(resolvedRoot, options.scanner)\n return await runAfterScan(plugins, scan, context)\n } catch (error) {\n throw await reportEngineError(error)\n }\n }\n\n return {\n scan: doScan,\n async build(): Promise<BuildResult> {\n const scan = await doScan()\n try {\n return await buildFromScan(scan, resolvedRoot, options, await getTailwindConfig())\n } catch (error) {\n throw await reportEngineError(error)\n }\n },\n async watch(\n onEvent: (event: EngineWatchEvent) => void,\n watchOptions: EngineWatchOptions = {}\n ): Promise<{ close(): void }> {\n const flushDebounceMs = watchOptions.debounceMs ?? DEFAULT_FLUSH_DEBOUNCE_MS\n const maxEventsPerFlush = watchOptions.maxEventsPerFlush ?? DEFAULT_MAX_EVENTS_PER_FLUSH\n const largeFileThreshold =\n watchOptions.largeFileThreshold ?? DEFAULT_LARGE_FILE_THRESHOLD_BYTES\n\n const tailwindConfig = await getTailwindConfig()\n const watchContext = { root: resolvedRoot, timestamp: Date.now() }\n await runBeforeWatch(plugins, watchContext)\n let currentScan = await doScan()\n try {\n onEvent({\n type: \"initial\",\n result: await buildFromScan(currentScan, resolvedRoot, options, tailwindConfig),\n })\n } catch (error) {\n const normalized = await reportEngineError(error)\n onEvent({ type: \"error\", error: normalized.message })\n throw normalized\n }\n\n let timer: NodeJS.Timeout | null = null\n const queue: Array<{ type: \"change\" | \"unlink\"; filePath: string }> = []\n const metrics = new EngineMetricsCollector()\n\n const scheduleFlush = (): void => {\n if (timer) return\n timer = setTimeout(() => {\n timer = null\n void flushBatch()\n }, flushDebounceMs)\n }\n\n const shouldForceFullRescan = (event: {\n type: \"change\" | \"unlink\"\n filePath: string\n }): boolean => {\n if (event.type === \"unlink\") return false\n try {\n const stat = fs.statSync(event.filePath)\n if (stat.size > largeFileThreshold) {\n metrics.markSkippedLargeFile()\n return true\n }\n } catch {\n return false\n }\n return false\n }\n\n const flushBatch = async (): Promise<void> => {\n if (queue.length === 0) return\n\n const batch = queue.splice(0, maxEventsPerFlush)\n metrics.markBatchProcessed(batch.length)\n\n let forceRescan = false\n for (const event of batch) {\n if (shouldForceFullRescan(event)) {\n forceRescan = true\n break\n }\n }\n\n const lastEvent = batch[batch.length - 1]\n let emittedType: EngineBuildWatchEventType = lastEvent.type\n\n try {\n if (forceRescan) {\n currentScan = await doScan()\n metrics.markFullRescan()\n emittedType = \"full-rescan\"\n } else {\n for (const event of batch) {\n currentScan = applyIncrementalChange(\n currentScan,\n event.filePath,\n event.type,\n options.scanner\n )\n metrics.markIncremental()\n }\n }\n } catch (error) {\n const normalized = await reportEngineError(error)\n log.warn(\"incremental path failed, forcing full rescan:\", normalized.message)\n currentScan = await doScan()\n metrics.markFullRescan()\n emittedType = \"full-rescan\"\n }\n\n try {\n const started = Date.now()\n const result = await buildFromScan(currentScan, resolvedRoot, options, tailwindConfig)\n metrics.markBuildDuration(Date.now() - started)\n\n onEvent({\n type: emittedType,\n filePath: lastEvent.filePath,\n result,\n metrics: metrics.snapshot(),\n })\n } catch (error) {\n const normalized = await reportEngineError(error)\n onEvent({\n type: \"error\",\n filePath: lastEvent.filePath,\n error: normalized.message,\n metrics: metrics.snapshot(),\n })\n }\n\n if (queue.length > 0) scheduleFlush()\n }\n\n const watcher: WorkspaceWatcher = watchWorkspace(\n resolvedRoot,\n (event) => {\n queue.push(event)\n metrics.markEventReceived(queue.length)\n scheduleFlush()\n },\n {\n ignoreDirectories: options.scanner?.ignoreDirectories,\n debounceMs: flushDebounceMs,\n onError: (error, directory) => {\n void reportEngineError(error)\n onEvent({\n type: \"error\",\n filePath: directory,\n error: error.message,\n metrics: metrics.snapshot(),\n })\n },\n }\n )\n\n return {\n async close() {\n if (timer) clearTimeout(timer)\n watcher.close()\n await runAfterWatch(plugins, watchContext)\n },\n }\n },\n }\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\n\nimport {\n type ScanWorkspaceOptions,\n type ScanWorkspaceResult,\n isScannableFile,\n scanFile,\n} from \"@tailwind-styled/scanner\"\nimport { createLogger } from \"@tailwind-styled/shared\"\n\nimport { getNativeEngineBinding } from \"./native-bridge\"\n\nconst DEFAULT_EXTENSIONS = [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"]\nconst log = createLogger(\"engine:incremental\")\n\nfunction rebuildWorkspaceResult(\n byFile: Map<string, ScanWorkspaceResult[\"files\"][number]>\n): ScanWorkspaceResult {\n const files = Array.from(byFile.values())\n const unique = new Set<string>()\n for (const file of files) {\n for (const cls of file.classes) unique.add(cls)\n }\n return {\n files,\n totalFiles: files.length,\n uniqueClasses: Array.from(unique).sort(),\n }\n}\n\nfunction applyClassDiff(existing: string[], added: string[], removed: string[]): string[] {\n const next = new Set(existing)\n for (const cls of added) next.add(cls)\n for (const cls of removed) next.delete(cls)\n return Array.from(next)\n}\n\nfunction areClassSetsEqual(a: string[], b: string[]): boolean {\n if (a.length !== b.length) return false\n const bSet = new Set(b)\n for (const cls of a) {\n if (!bSet.has(cls)) return false\n }\n return true\n}\n\n/**\n * Apply an incremental file-change event to an existing scan result.\n *\n * Tries Rust processFileChange first for per-file diffing;\n * falls back to the JS implementation when native is unavailable.\n */\nexport function applyIncrementalChange(\n previous: ScanWorkspaceResult,\n filePath: string,\n type: \"change\" | \"unlink\",\n scanner?: ScanWorkspaceOptions\n): ScanWorkspaceResult {\n const includeExtensions = scanner?.includeExtensions ?? DEFAULT_EXTENSIONS\n if (!isScannableFile(filePath, includeExtensions)) return previous\n\n const byFile = new Map(previous.files.map((f) => [path.resolve(f.file), f]))\n const normalizedPath = path.resolve(filePath)\n\n // Rust fast-path: per-file diff + native registry update.\n const native = getNativeEngineBinding()\n if (native?.processFileChange) {\n try {\n if (type === \"unlink\") {\n const existing = byFile.get(normalizedPath)\n log.debug(`native unlink ${normalizedPath}`)\n native.processFileChange(normalizedPath, existing?.classes ?? [], null)\n byFile.delete(normalizedPath)\n return rebuildWorkspaceResult(byFile)\n }\n\n log.debug(`native change ${normalizedPath}`)\n const scanned = scanFile(normalizedPath)\n const content = fs.readFileSync(normalizedPath, \"utf8\")\n const diff = native.processFileChange(normalizedPath, scanned.classes, content)\n const existing = byFile.get(normalizedPath)\n\n if (diff && existing) {\n log.debug(`native diff ${normalizedPath} +${diff.added.length} -${diff.removed.length}`)\n const diffApplied = applyClassDiff(existing.classes, diff.added, diff.removed)\n // Registry can be cold on first update; trust a full scan when delta is inconsistent.\n const classes = areClassSetsEqual(diffApplied, scanned.classes)\n ? diffApplied\n : scanned.classes\n byFile.set(normalizedPath, { file: normalizedPath, classes })\n } else {\n log.debug(`native diff cold-sync ${normalizedPath}`)\n byFile.set(normalizedPath, { file: normalizedPath, classes: scanned.classes })\n }\n\n return rebuildWorkspaceResult(byFile)\n } catch (error) {\n log.warn(\n \"native processFileChange failed, using JS fallback:\",\n error instanceof Error ? error.message : String(error)\n )\n }\n }\n\n // JS fallback.\n log.debug(`js fallback ${type} ${normalizedPath}`)\n if (type === \"unlink\") {\n byFile.delete(normalizedPath)\n } else {\n byFile.set(normalizedPath, scanFile(normalizedPath))\n }\n\n return rebuildWorkspaceResult(byFile)\n}\n","/**\n * Engine — Rust native bridge\n *\n * This module REQUIRES native Rust bindings and will FAIL LOUDLY if they are not available.\n * NO JavaScript fallback is provided.\n */\nimport { createRequire } from \"node:module\"\nimport path from \"node:path\"\n\ninterface NativeEngineBinding {\n computeIncrementalDiff?: (\n previousJson: string,\n currentJson: string\n ) => {\n addedClasses: string[]\n removedClasses: string[]\n changedFiles: string[]\n unchangedFiles: number\n } | null\n hashFileContent?: (content: string) => string | null\n processFileChange?: (\n filepath: string,\n newClasses: string[],\n content: string | null\n ) => { added: string[]; removed: string[] } | null\n}\n\nexport let _binding: NativeEngineBinding | null | undefined = undefined\nexport let _loadError: string | null = null\nexport let _candidatePaths: string[] = []\n\nexport function getNativeEngineBinding(): NativeEngineBinding {\n if (_binding !== undefined) {\n if (_binding === null) {\n throwNativeBindingError()\n }\n return _binding\n }\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n _loadError = \"Native loading is disabled by TWS_NO_NATIVE or TWS_NO_RUST environment variable.\"\n _binding = null\n _candidatePaths = []\n throwNativeBindingError()\n }\n\n const runtimeDir = typeof __dirname === \"string\" ? __dirname : process.cwd()\n _candidatePaths = [\n path.resolve(process.cwd(), \"native\", \"tailwind_styled_parser.node\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n ]\n\n const req =\n typeof require === \"function\" ? require : createRequire(path.join(runtimeDir, \"noop.cjs\"))\n\n for (const c of _candidatePaths) {\n try {\n const mod = req(c) as NativeEngineBinding\n if (mod?.computeIncrementalDiff || mod?.processFileChange || mod?.hashFileContent) {\n _binding = mod\n return _binding\n }\n } catch (error) {\n _loadError = error instanceof Error ? error.message : String(error)\n }\n }\n\n // No fallback - fail loudly\n _binding = null\n throwNativeBindingError()\n}\n\nfunction throwNativeBindingError(): never {\n const lines = [\n \"FATAL: Native engine binding not found.\",\n \"\",\n \"This package requires the Rust native binding 'tailwind_styled_parser.node'.\",\n \"The binding was not found in any of these paths:\",\n ..._candidatePaths.map((p) => ` - ${p}`),\n \"\",\n ]\n\n if (_loadError) {\n lines.push(\"Load error:\", ` ${_loadError}`, \"\")\n }\n\n lines.push(\n \"To fix this, run:\",\n \" npm run build:rust\",\n \"\",\n \"This will build the native Rust module from the 'native/' directory.\",\n \"If you're using this package in a CI/CD environment, ensure Rust toolchain is installed\",\n \"and 'npm run build:rust' is executed before running tests or building.\"\n )\n\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport function computeIncrementalDiff(\n previousJson: string,\n currentJson: string\n): {\n addedClasses: string[]\n removedClasses: string[]\n changedFiles: string[]\n unchangedFiles: number\n} {\n const result = getNativeEngineBinding().computeIncrementalDiff?.(previousJson, currentJson)\n if (result === null || result === undefined) {\n throw new Error(\"Native computeIncrementalDiff returned null/undefined\")\n }\n return result\n}\n\nexport function hashFileContent(content: string): string {\n const result = getNativeEngineBinding().hashFileContent?.(content)\n if (result === null || result === undefined) {\n throw new Error(\"Native hashFileContent returned null/undefined\")\n }\n return result\n}\n\nexport function processFileChange(\n filepath: string,\n newClasses: string[],\n content: string | null\n): { added: string[]; removed: string[] } {\n const result = getNativeEngineBinding().processFileChange?.(filepath, newClasses, content)\n if (result === null || result === undefined) {\n throw new Error(\"Native processFileChange returned null/undefined\")\n }\n return result\n}\n","export interface EngineMetricsSnapshot {\n eventsReceived: number\n eventsProcessed: number\n batchesProcessed: number\n incrementalUpdates: number\n fullRescans: number\n skippedLargeFiles: number\n queueMaxSize: number\n lastBuildMs: number\n avgBuildMs: number\n}\n\nexport class EngineMetricsCollector {\n private eventsReceived = 0\n private eventsProcessed = 0\n private batchesProcessed = 0\n private incrementalUpdates = 0\n private fullRescans = 0\n private skippedLargeFiles = 0\n private queueMaxSize = 0\n private lastBuildMs = 0\n private totalBuildMs = 0\n\n markEventReceived(queueSize: number): void {\n this.eventsReceived += 1\n if (queueSize > this.queueMaxSize) this.queueMaxSize = queueSize\n }\n\n markBatchProcessed(batchSize: number): void {\n this.batchesProcessed += 1\n this.eventsProcessed += batchSize\n }\n\n markIncremental(): void {\n this.incrementalUpdates += 1\n }\n\n markFullRescan(): void {\n this.fullRescans += 1\n }\n\n markSkippedLargeFile(): void {\n this.skippedLargeFiles += 1\n }\n\n markBuildDuration(ms: number): void {\n this.lastBuildMs = ms\n this.totalBuildMs += ms\n }\n\n snapshot(): EngineMetricsSnapshot {\n const avgBuildMs = this.batchesProcessed > 0 ? this.totalBuildMs / this.batchesProcessed : 0\n return {\n eventsReceived: this.eventsReceived,\n eventsProcessed: this.eventsProcessed,\n batchesProcessed: this.batchesProcessed,\n incrementalUpdates: this.incrementalUpdates,\n fullRescans: this.fullRescans,\n skippedLargeFiles: this.skippedLargeFiles,\n queueMaxSize: this.queueMaxSize,\n lastBuildMs: this.lastBuildMs,\n avgBuildMs,\n }\n }\n}\n","import type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\nimport type { BuildResult } from \"./index\"\n\nexport interface EnginePluginContext {\n root: string\n timestamp: number\n}\n\nexport interface EngineWatchContext {\n root: string\n timestamp: number\n}\n\nexport interface EnginePlugin {\n name: string\n beforeScan?(context: EnginePluginContext): void | Promise<void>\n afterScan?(\n scan: ScanWorkspaceResult,\n context: EnginePluginContext\n ): ScanWorkspaceResult | void | Promise<ScanWorkspaceResult | void>\n transformClasses?(\n classes: string[],\n context: EnginePluginContext\n ): string[] | void | Promise<string[] | void>\n beforeBuild?(scan: ScanWorkspaceResult, context: EnginePluginContext): void | Promise<void>\n afterBuild?(\n result: BuildResult,\n context: EnginePluginContext\n ): BuildResult | void | Promise<BuildResult | void>\n onError?(error: Error, context: EnginePluginContext): void | Promise<void>\n beforeWatch?(context: EngineWatchContext): void | Promise<void>\n afterWatch?(context: EngineWatchContext): void | Promise<void>\n}\n\nexport async function runBeforeScan(\n plugins: EnginePlugin[],\n context: EnginePluginContext\n): Promise<void> {\n for (const plugin of plugins) {\n await plugin.beforeScan?.(context)\n }\n}\n\nexport async function runAfterScan(\n plugins: EnginePlugin[],\n scan: ScanWorkspaceResult,\n context: EnginePluginContext\n): Promise<ScanWorkspaceResult> {\n let current = scan\n for (const plugin of plugins) {\n const next = await plugin.afterScan?.(current, context)\n if (next !== undefined) current = next\n }\n return current\n}\n\nexport async function runTransformClasses(\n plugins: EnginePlugin[],\n classes: string[],\n context: EnginePluginContext\n): Promise<string[]> {\n let current = classes\n for (const plugin of plugins) {\n const next = await plugin.transformClasses?.(current, context)\n if (next !== undefined) current = next\n }\n return current\n}\n\nexport async function runBeforeBuild(\n plugins: EnginePlugin[],\n scan: ScanWorkspaceResult,\n context: EnginePluginContext\n): Promise<void> {\n for (const plugin of plugins) {\n await plugin.beforeBuild?.(scan, context)\n }\n}\n\nexport async function runAfterBuild(\n plugins: EnginePlugin[],\n result: BuildResult,\n context: EnginePluginContext\n): Promise<BuildResult> {\n let current = result\n for (const plugin of plugins) {\n const next = await plugin.afterBuild?.(current, context)\n if (next !== undefined) current = next\n }\n return current\n}\n\nexport async function runOnError(\n plugins: EnginePlugin[],\n error: Error,\n context: EnginePluginContext\n): Promise<void> {\n for (const plugin of plugins) {\n await plugin.onError?.(error, context)\n }\n}\n\nexport async function runBeforeWatch(\n plugins: EnginePlugin[],\n context: EngineWatchContext\n): Promise<void> {\n for (const plugin of plugins) {\n await plugin.beforeWatch?.(context)\n }\n}\n\nexport async function runAfterWatch(\n plugins: EnginePlugin[],\n context: EngineWatchContext\n): Promise<void> {\n for (const plugin of plugins) {\n await plugin.afterWatch?.(context)\n }\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\n\nexport interface WatcherOptions {\n ignoreDirectories?: string[]\n /**\n * Delay before emitting change event to reduce noisy bursts.\n */\n debounceMs?: number\n onError?: (error: Error, directory: string) => void\n}\n\nexport interface WatcherEvent {\n type: \"change\" | \"unlink\"\n filePath: string\n}\n\nexport interface WorkspaceWatcher {\n close(): void\n}\n\nconst DEFAULT_IGNORES = [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"]\n\nexport function watchWorkspace(\n rootDir: string,\n onEvent: (event: WatcherEvent) => void,\n options: WatcherOptions = {}\n): WorkspaceWatcher {\n const ignoreDirectories = new Set(options.ignoreDirectories ?? DEFAULT_IGNORES)\n const watchers = new Map<string, fs.FSWatcher>()\n const restartTimers = new Map<string, NodeJS.Timeout>()\n const debounceMs = options.debounceMs ?? 100\n const pending = new Map<string, NodeJS.Timeout>()\n\n const shouldIgnore = (targetPath: string): boolean => {\n const parts = targetPath.split(path.sep)\n return parts.some((part) => ignoreDirectories.has(part))\n }\n\n const enqueue = (event: WatcherEvent): void => {\n const key = `${event.type}:${event.filePath}`\n const existing = pending.get(key)\n if (existing) clearTimeout(existing)\n\n const timer = setTimeout(() => {\n pending.delete(key)\n onEvent(event)\n }, debounceMs)\n\n pending.set(key, timer)\n }\n\n const safeUnwatch = (dir: string): void => {\n const watcher = watchers.get(dir)\n if (!watcher) return\n try {\n watcher.close()\n } catch {\n // ignore close errors\n }\n watchers.delete(dir)\n }\n\n const scheduleRestart = (dir: string): void => {\n const previous = restartTimers.get(dir)\n if (previous) clearTimeout(previous)\n\n const timer = setTimeout(() => {\n restartTimers.delete(dir)\n watchDir(dir)\n }, 250)\n\n restartTimers.set(dir, timer)\n }\n\n const watchDir = (dir: string): void => {\n if (watchers.has(dir) || shouldIgnore(dir) || !fs.existsSync(dir)) return\n\n try {\n const stat = fs.lstatSync(dir)\n if (!stat.isDirectory() || stat.isSymbolicLink()) return\n } catch {\n return\n }\n\n const watcher = fs.watch(dir, { persistent: true }, (_eventType, fileName) => {\n if (!fileName) return\n const fullPath = path.join(dir, fileName.toString())\n if (shouldIgnore(fullPath)) return\n\n if (fs.existsSync(fullPath)) {\n try {\n const stat = fs.lstatSync(fullPath)\n if (stat.isSymbolicLink()) return\n if (stat.isDirectory()) {\n watchDir(fullPath)\n return\n }\n enqueue({ type: \"change\", filePath: fullPath })\n return\n } catch {\n // ignore transient fs errors\n }\n }\n\n enqueue({ type: \"unlink\", filePath: fullPath })\n })\n\n watcher.on(\"error\", (error) => {\n safeUnwatch(dir)\n const watcherError = error instanceof Error ? error : new Error(String(error))\n options.onError?.(watcherError, dir)\n scheduleRestart(dir)\n })\n\n watchers.set(dir, watcher)\n\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue\n watchDir(path.join(dir, entry.name))\n }\n }\n\n watchDir(path.resolve(rootDir))\n\n return {\n close() {\n for (const timer of pending.values()) clearTimeout(timer)\n pending.clear()\n for (const timer of restartTimers.values()) clearTimeout(timer)\n restartTimers.clear()\n for (const watcher of watchers.values()) watcher.close()\n watchers.clear()\n },\n }\n}\n"]}