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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/oxc-parser/src-js/bindings.js","../../../node_modules/oxc-parser/src-js/wrap.js","../../../node_modules/oxc-parser/src-js/generated/visit/keys.js","../../../node_modules/oxc-parser/src-js/visit/index.js","../../../node_modules/oxc-parser/src-js/raw-transfer/supported.js","../../../node_modules/oxc-parser/src-js/index.js","../../compiler/src/atomicCss.ts","../../preset/src/defaultPreset.ts","../../compiler/src/classMerger.ts","../../compiler/src/componentHoister.ts","../../compiler/src/rscAnalyzer.ts","../../compiler/src/twDetector.ts","../../compiler/src/astParser.ts","../../compiler/src/variantCompiler.ts","../../compiler/src/astTransform.ts","../../compiler/src/index.ts","../../compiler/src/classExtractor.ts","../../compiler/src/deadStyleEliminator.ts","../../compiler/src/incrementalEngine.ts","../../compiler/src/loadTailwindConfig.ts","../../compiler/src/routeCssCollector.ts","../../compiler/src/safelistGenerator.ts","../../compiler/src/styleBucketSystem.ts","../../compiler/src/tailwindEngine.ts"],"names":["_a","_b","require","createRequire","import_meta","rawTransferSupported","match","parse","parseSync","parseRaw","twMerge","TEMPLATE_RE","OBJECT_RE","EXTEND_RE","findAfterImports","fs","path","crypto","defaultPreset","defaultGlobalCss","SCAN_EXTENSIONS","nodeToCSS","generateAtomicCss","parseAtomicClass"],"mappings":"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","file":"compiler.cjs","sourcesContent":["// prettier-ignore\n/* eslint-disable */\n// @ts-nocheck\n/* auto-generated by NAPI-RS */\n\nimport { createRequire } from 'node:module'\nconst require = createRequire(import.meta.url)\nconst __dirname = new URL('.', import.meta.url).pathname\n\nconst { readFileSync } = require('node:fs')\nlet nativeBinding = null\nconst loadErrors = []\n\nconst isMusl = () => {\n let musl = false\n if (process.platform === 'linux') {\n musl = isMuslFromFilesystem()\n if (musl === null) {\n musl = isMuslFromReport()\n }\n if (musl === null) {\n musl = isMuslFromChildProcess()\n }\n }\n return musl\n}\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')\n\nconst isMuslFromFilesystem = () => {\n try {\n return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')\n } catch {\n return null\n }\n}\n\nconst isMuslFromReport = () => {\n let report = null\n if (typeof process.report?.getReport === 'function') {\n process.report.excludeNetwork = true\n report = process.report.getReport()\n }\n if (!report) {\n return null\n }\n if (report.header && report.header.glibcVersionRuntime) {\n return false\n }\n if (Array.isArray(report.sharedObjects)) {\n if (report.sharedObjects.some(isFileMusl)) {\n return true\n }\n }\n return false\n}\n\nconst isMuslFromChildProcess = () => {\n try {\n return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')\n } catch (e) {\n // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false\n return false\n }\n}\n\nfunction requireNative() {\n if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {\n try {\n return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);\n } catch (err) {\n loadErrors.push(err)\n }\n } else if (process.platform === 'android') {\n if (process.arch === 'arm64') {\n try {\n return require('./parser.android-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-android-arm64')\n const bindingPackageVersion = require('@oxc-parser/binding-android-arm64/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm') {\n try {\n return require('./parser.android-arm-eabi.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-android-arm-eabi')\n const bindingPackageVersion = require('@oxc-parser/binding-android-arm-eabi/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))\n }\n } else if (process.platform === 'win32') {\n if (process.arch === 'x64') {\n if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {\n try {\n return require('./parser.win32-x64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-win32-x64-gnu')\n const bindingPackageVersion = require('@oxc-parser/binding-win32-x64-gnu/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./parser.win32-x64-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-win32-x64-msvc')\n const bindingPackageVersion = require('@oxc-parser/binding-win32-x64-msvc/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'ia32') {\n try {\n return require('./parser.win32-ia32-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-win32-ia32-msvc')\n const bindingPackageVersion = require('@oxc-parser/binding-win32-ia32-msvc/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./parser.win32-arm64-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-win32-arm64-msvc')\n const bindingPackageVersion = require('@oxc-parser/binding-win32-arm64-msvc/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))\n }\n } else if (process.platform === 'darwin') {\n try {\n return require('./parser.darwin-universal.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-darwin-universal')\n const bindingPackageVersion = require('@oxc-parser/binding-darwin-universal/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n if (process.arch === 'x64') {\n try {\n return require('./parser.darwin-x64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-darwin-x64')\n const bindingPackageVersion = require('@oxc-parser/binding-darwin-x64/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./parser.darwin-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-darwin-arm64')\n const bindingPackageVersion = require('@oxc-parser/binding-darwin-arm64/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))\n }\n } else if (process.platform === 'freebsd') {\n if (process.arch === 'x64') {\n try {\n return require('./parser.freebsd-x64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-freebsd-x64')\n const bindingPackageVersion = require('@oxc-parser/binding-freebsd-x64/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./parser.freebsd-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-freebsd-arm64')\n const bindingPackageVersion = require('@oxc-parser/binding-freebsd-arm64/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))\n }\n } else if (process.platform === 'linux') {\n if (process.arch === 'x64') {\n if (isMusl()) {\n try {\n return require('./parser.linux-x64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-x64-musl')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-x64-musl/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./parser.linux-x64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-x64-gnu')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-x64-gnu/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'arm64') {\n if (isMusl()) {\n try {\n return require('./parser.linux-arm64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-arm64-musl')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-arm64-musl/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./parser.linux-arm64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-arm64-gnu')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-arm64-gnu/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'arm') {\n if (isMusl()) {\n try {\n return require('./parser.linux-arm-musleabihf.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-arm-musleabihf')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-arm-musleabihf/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./parser.linux-arm-gnueabihf.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-arm-gnueabihf')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-arm-gnueabihf/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'loong64') {\n if (isMusl()) {\n try {\n return require('./parser.linux-loong64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-loong64-musl')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-loong64-musl/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./parser.linux-loong64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-loong64-gnu')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-loong64-gnu/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'riscv64') {\n if (isMusl()) {\n try {\n return require('./parser.linux-riscv64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-riscv64-musl')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-riscv64-musl/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./parser.linux-riscv64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-riscv64-gnu')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-riscv64-gnu/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'ppc64') {\n try {\n return require('./parser.linux-ppc64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-ppc64-gnu')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-ppc64-gnu/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 's390x') {\n try {\n return require('./parser.linux-s390x-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-linux-s390x-gnu')\n const bindingPackageVersion = require('@oxc-parser/binding-linux-s390x-gnu/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))\n }\n } else if (process.platform === 'openharmony') {\n if (process.arch === 'arm64') {\n try {\n return require('./parser.openharmony-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-openharmony-arm64')\n const bindingPackageVersion = require('@oxc-parser/binding-openharmony-arm64/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'x64') {\n try {\n return require('./parser.openharmony-x64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-openharmony-x64')\n const bindingPackageVersion = require('@oxc-parser/binding-openharmony-x64/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm') {\n try {\n return require('./parser.openharmony-arm.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n const binding = require('@oxc-parser/binding-openharmony-arm')\n const bindingPackageVersion = require('@oxc-parser/binding-openharmony-arm/package.json').version\n if (bindingPackageVersion !== '0.118.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n throw new Error(`Native binding package version mismatch, expected 0.118.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n }\n return binding\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))\n }\n } else {\n loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))\n }\n}\n\nnativeBinding = requireNative()\n\nif (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n let wasiBinding = null\n let wasiBindingError = null\n try {\n wasiBinding = require('./parser.wasi.cjs')\n nativeBinding = wasiBinding\n } catch (err) {\n if (process.env.NAPI_RS_FORCE_WASI) {\n wasiBindingError = err\n }\n }\n if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n try {\n wasiBinding = require('@oxc-parser/binding-wasm32-wasi')\n nativeBinding = wasiBinding\n } catch (err) {\n if (process.env.NAPI_RS_FORCE_WASI) {\n if (!wasiBindingError) {\n wasiBindingError = err\n } else {\n wasiBindingError.cause = err\n }\n loadErrors.push(err)\n }\n }\n }\n if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {\n const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')\n error.cause = wasiBindingError\n throw error\n }\n}\n\nif (!nativeBinding && globalThis.process?.versions?.[\"webcontainer\"]) {\n try {\n nativeBinding = require('./webcontainer-fallback.cjs');\n } catch (err) {\n loadErrors.push(err)\n }\n}\n\nif (!nativeBinding) {\n if (loadErrors.length > 0) {\n throw new Error(\n `Cannot find native binding. ` +\n `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +\n 'Please try `npm i` again after removing both package-lock.json and node_modules directory.',\n {\n cause: loadErrors.reduce((err, cur) => {\n cur.cause = err\n return cur\n }),\n },\n )\n }\n throw new Error(`Failed to load native binding`)\n}\n\nconst { Severity, ParseResult, ExportExportNameKind, ExportImportNameKind, ExportLocalNameKind, ImportNameKind, parse, parseSync, rawTransferSupported } = nativeBinding\nexport { Severity }\nexport { ParseResult }\nexport { ExportExportNameKind }\nexport { ExportImportNameKind }\nexport { ExportLocalNameKind }\nexport { ImportNameKind }\nexport { parse }\nexport { parseSync }\nexport { rawTransferSupported }\nconst { getBufferOffset, parseRaw, parseRawSync } = nativeBinding\nexport { getBufferOffset, parseRaw, parseRawSync }\n","export function wrap(result) {\n let program, module, comments, errors;\n return {\n get program() {\n if (!program) program = jsonParseAst(result.program);\n return program;\n },\n get module() {\n if (!module) module = result.module;\n return module;\n },\n get comments() {\n if (!comments) comments = result.comments;\n return comments;\n },\n get errors() {\n if (!errors) errors = result.errors;\n return errors;\n },\n };\n}\n\n// Used by `napi/playground/scripts/patch.js`.\n//\n// Set `value` field of `Literal`s which are `BigInt`s or `RegExp`s.\n//\n// Returned JSON contains an array `fixes` with paths to these nodes\n// e.g. for `123n; foo(/xyz/)`, `fixes` will be\n// `[[\"body\", 0, \"expression\"], [\"body\", 1, \"expression\", \"arguments\", 2]]`.\n//\n// Walk down the AST to these nodes and alter them.\n// Compiling the list of fixes on Rust side avoids having to do a full AST traversal on JS side\n// to locate the likely very few `Literal`s which need fixing.\nexport function jsonParseAst(programJson) {\n const { node: program, fixes } = JSON.parse(programJson);\n for (const fixPath of fixes) {\n applyFix(program, fixPath);\n }\n return program;\n}\n\nfunction applyFix(program, fixPath) {\n let node = program;\n for (const key of fixPath) {\n node = node[key];\n }\n\n if (node.bigint) {\n node.value = BigInt(node.bigint);\n } else {\n try {\n node.value = RegExp(node.regex.pattern, node.regex.flags);\n } catch {\n // Invalid regexp, or valid regexp using syntax not supported by this version of NodeJS\n }\n }\n}\n","// Auto-generated code, DO NOT EDIT DIRECTLY!\n// To edit this generated file you have to edit `tasks/ast_tools/src/generators/estree_visit.rs`.\n\nconst { freeze } = Object;\n\nconst $EMPTY = freeze([]),\n DECORATORS__KEY__TYPE_ANNOTATION__VALUE = freeze([\n \"decorators\",\n \"key\",\n \"typeAnnotation\",\n \"value\",\n ]),\n LEFT__RIGHT = freeze([\"left\", \"right\"]),\n ARGUMENT = freeze([\"argument\"]),\n BODY = freeze([\"body\"]),\n LABEL = freeze([\"label\"]),\n CALLEE__TYPE_ARGUMENTS__ARGUMENTS = freeze([\"callee\", \"typeArguments\", \"arguments\"]),\n EXPRESSION = freeze([\"expression\"]),\n DECORATORS__ID__TYPE_PARAMETERS__SUPER_CLASS__SUPER_TYPE_ARGUMENTS__IMPLEMENTS__BODY = freeze([\n \"decorators\",\n \"id\",\n \"typeParameters\",\n \"superClass\",\n \"superTypeArguments\",\n \"implements\",\n \"body\",\n ]),\n TEST__CONSEQUENT__ALTERNATE = freeze([\"test\", \"consequent\", \"alternate\"]),\n LEFT__RIGHT__BODY = freeze([\"left\", \"right\", \"body\"]),\n ID__TYPE_PARAMETERS__PARAMS__RETURN_TYPE__BODY = freeze([\n \"id\",\n \"typeParameters\",\n \"params\",\n \"returnType\",\n \"body\",\n ]),\n KEY__VALUE = freeze([\"key\", \"value\"]),\n LOCAL = freeze([\"local\"]),\n OBJECT__PROPERTY = freeze([\"object\", \"property\"]),\n DECORATORS__KEY__TYPE_ANNOTATION = freeze([\"decorators\", \"key\", \"typeAnnotation\"]),\n EXPRESSION__TYPE_ANNOTATION = freeze([\"expression\", \"typeAnnotation\"]),\n TYPE_PARAMETERS__PARAMS__RETURN_TYPE = freeze([\"typeParameters\", \"params\", \"returnType\"]),\n EXPRESSION__TYPE_ARGUMENTS = freeze([\"expression\", \"typeArguments\"]),\n MEMBERS = freeze([\"members\"]),\n ID__BODY = freeze([\"id\", \"body\"]),\n TYPES = freeze([\"types\"]),\n TYPE_ANNOTATION = freeze([\"typeAnnotation\"]),\n PARAMS = freeze([\"params\"]);\n\nexport default freeze({\n // Leaf nodes\n DebuggerStatement: $EMPTY,\n EmptyStatement: $EMPTY,\n Literal: $EMPTY,\n PrivateIdentifier: $EMPTY,\n Super: $EMPTY,\n TemplateElement: $EMPTY,\n ThisExpression: $EMPTY,\n JSXClosingFragment: $EMPTY,\n JSXEmptyExpression: $EMPTY,\n JSXIdentifier: $EMPTY,\n JSXOpeningFragment: $EMPTY,\n JSXText: $EMPTY,\n TSAnyKeyword: $EMPTY,\n TSBigIntKeyword: $EMPTY,\n TSBooleanKeyword: $EMPTY,\n TSIntrinsicKeyword: $EMPTY,\n TSJSDocUnknownType: $EMPTY,\n TSNeverKeyword: $EMPTY,\n TSNullKeyword: $EMPTY,\n TSNumberKeyword: $EMPTY,\n TSObjectKeyword: $EMPTY,\n TSStringKeyword: $EMPTY,\n TSSymbolKeyword: $EMPTY,\n TSThisType: $EMPTY,\n TSUndefinedKeyword: $EMPTY,\n TSUnknownKeyword: $EMPTY,\n TSVoidKeyword: $EMPTY,\n // Non-leaf nodes\n AccessorProperty: DECORATORS__KEY__TYPE_ANNOTATION__VALUE,\n ArrayExpression: freeze([\"elements\"]),\n ArrayPattern: freeze([\"decorators\", \"elements\", \"typeAnnotation\"]),\n ArrowFunctionExpression: freeze([\"typeParameters\", \"params\", \"returnType\", \"body\"]),\n AssignmentExpression: LEFT__RIGHT,\n AssignmentPattern: freeze([\"decorators\", \"left\", \"right\", \"typeAnnotation\"]),\n AwaitExpression: ARGUMENT,\n BinaryExpression: LEFT__RIGHT,\n BlockStatement: BODY,\n BreakStatement: LABEL,\n CallExpression: CALLEE__TYPE_ARGUMENTS__ARGUMENTS,\n CatchClause: freeze([\"param\", \"body\"]),\n ChainExpression: EXPRESSION,\n ClassBody: BODY,\n ClassDeclaration:\n DECORATORS__ID__TYPE_PARAMETERS__SUPER_CLASS__SUPER_TYPE_ARGUMENTS__IMPLEMENTS__BODY,\n ClassExpression:\n DECORATORS__ID__TYPE_PARAMETERS__SUPER_CLASS__SUPER_TYPE_ARGUMENTS__IMPLEMENTS__BODY,\n ConditionalExpression: TEST__CONSEQUENT__ALTERNATE,\n ContinueStatement: LABEL,\n Decorator: EXPRESSION,\n DoWhileStatement: freeze([\"body\", \"test\"]),\n ExportAllDeclaration: freeze([\"exported\", \"source\", \"attributes\"]),\n ExportDefaultDeclaration: freeze([\"declaration\"]),\n ExportNamedDeclaration: freeze([\"declaration\", \"specifiers\", \"source\", \"attributes\"]),\n ExportSpecifier: freeze([\"local\", \"exported\"]),\n ExpressionStatement: EXPRESSION,\n ForInStatement: LEFT__RIGHT__BODY,\n ForOfStatement: LEFT__RIGHT__BODY,\n ForStatement: freeze([\"init\", \"test\", \"update\", \"body\"]),\n FunctionDeclaration: ID__TYPE_PARAMETERS__PARAMS__RETURN_TYPE__BODY,\n FunctionExpression: ID__TYPE_PARAMETERS__PARAMS__RETURN_TYPE__BODY,\n Identifier: freeze([\"decorators\", \"typeAnnotation\"]),\n IfStatement: TEST__CONSEQUENT__ALTERNATE,\n ImportAttribute: KEY__VALUE,\n ImportDeclaration: freeze([\"specifiers\", \"source\", \"attributes\"]),\n ImportDefaultSpecifier: LOCAL,\n ImportExpression: freeze([\"source\", \"options\"]),\n ImportNamespaceSpecifier: LOCAL,\n ImportSpecifier: freeze([\"imported\", \"local\"]),\n LabeledStatement: freeze([\"label\", \"body\"]),\n LogicalExpression: LEFT__RIGHT,\n MemberExpression: OBJECT__PROPERTY,\n MetaProperty: freeze([\"meta\", \"property\"]),\n MethodDefinition: freeze([\"decorators\", \"key\", \"value\"]),\n NewExpression: CALLEE__TYPE_ARGUMENTS__ARGUMENTS,\n ObjectExpression: freeze([\"properties\"]),\n ObjectPattern: freeze([\"decorators\", \"properties\", \"typeAnnotation\"]),\n ParenthesizedExpression: EXPRESSION,\n Program: BODY,\n Property: KEY__VALUE,\n PropertyDefinition: DECORATORS__KEY__TYPE_ANNOTATION__VALUE,\n RestElement: freeze([\"decorators\", \"argument\", \"typeAnnotation\"]),\n ReturnStatement: ARGUMENT,\n SequenceExpression: freeze([\"expressions\"]),\n SpreadElement: ARGUMENT,\n StaticBlock: BODY,\n SwitchCase: freeze([\"test\", \"consequent\"]),\n SwitchStatement: freeze([\"discriminant\", \"cases\"]),\n TaggedTemplateExpression: freeze([\"tag\", \"typeArguments\", \"quasi\"]),\n TemplateLiteral: freeze([\"quasis\", \"expressions\"]),\n ThrowStatement: ARGUMENT,\n TryStatement: freeze([\"block\", \"handler\", \"finalizer\"]),\n UnaryExpression: ARGUMENT,\n UpdateExpression: ARGUMENT,\n V8IntrinsicExpression: freeze([\"name\", \"arguments\"]),\n VariableDeclaration: freeze([\"declarations\"]),\n VariableDeclarator: freeze([\"id\", \"init\"]),\n WhileStatement: freeze([\"test\", \"body\"]),\n WithStatement: freeze([\"object\", \"body\"]),\n YieldExpression: ARGUMENT,\n JSXAttribute: freeze([\"name\", \"value\"]),\n JSXClosingElement: freeze([\"name\"]),\n JSXElement: freeze([\"openingElement\", \"children\", \"closingElement\"]),\n JSXExpressionContainer: EXPRESSION,\n JSXFragment: freeze([\"openingFragment\", \"children\", \"closingFragment\"]),\n JSXMemberExpression: OBJECT__PROPERTY,\n JSXNamespacedName: freeze([\"namespace\", \"name\"]),\n JSXOpeningElement: freeze([\"name\", \"typeArguments\", \"attributes\"]),\n JSXSpreadAttribute: ARGUMENT,\n JSXSpreadChild: EXPRESSION,\n TSAbstractAccessorProperty: DECORATORS__KEY__TYPE_ANNOTATION,\n TSAbstractMethodDefinition: KEY__VALUE,\n TSAbstractPropertyDefinition: DECORATORS__KEY__TYPE_ANNOTATION,\n TSArrayType: freeze([\"elementType\"]),\n TSAsExpression: EXPRESSION__TYPE_ANNOTATION,\n TSCallSignatureDeclaration: TYPE_PARAMETERS__PARAMS__RETURN_TYPE,\n TSClassImplements: EXPRESSION__TYPE_ARGUMENTS,\n TSConditionalType: freeze([\"checkType\", \"extendsType\", \"trueType\", \"falseType\"]),\n TSConstructSignatureDeclaration: TYPE_PARAMETERS__PARAMS__RETURN_TYPE,\n TSConstructorType: TYPE_PARAMETERS__PARAMS__RETURN_TYPE,\n TSDeclareFunction: ID__TYPE_PARAMETERS__PARAMS__RETURN_TYPE__BODY,\n TSEmptyBodyFunctionExpression: freeze([\"id\", \"typeParameters\", \"params\", \"returnType\"]),\n TSEnumBody: MEMBERS,\n TSEnumDeclaration: ID__BODY,\n TSEnumMember: freeze([\"id\", \"initializer\"]),\n TSExportAssignment: EXPRESSION,\n TSExternalModuleReference: EXPRESSION,\n TSFunctionType: TYPE_PARAMETERS__PARAMS__RETURN_TYPE,\n TSImportEqualsDeclaration: freeze([\"id\", \"moduleReference\"]),\n TSImportType: freeze([\"source\", \"options\", \"qualifier\", \"typeArguments\"]),\n TSIndexSignature: freeze([\"parameters\", \"typeAnnotation\"]),\n TSIndexedAccessType: freeze([\"objectType\", \"indexType\"]),\n TSInferType: freeze([\"typeParameter\"]),\n TSInstantiationExpression: EXPRESSION__TYPE_ARGUMENTS,\n TSInterfaceBody: BODY,\n TSInterfaceDeclaration: freeze([\"id\", \"typeParameters\", \"extends\", \"body\"]),\n TSInterfaceHeritage: EXPRESSION__TYPE_ARGUMENTS,\n TSIntersectionType: TYPES,\n TSJSDocNonNullableType: TYPE_ANNOTATION,\n TSJSDocNullableType: TYPE_ANNOTATION,\n TSLiteralType: freeze([\"literal\"]),\n TSMappedType: freeze([\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]),\n TSMethodSignature: freeze([\"key\", \"typeParameters\", \"params\", \"returnType\"]),\n TSModuleBlock: BODY,\n TSModuleDeclaration: ID__BODY,\n TSNamedTupleMember: freeze([\"label\", \"elementType\"]),\n TSNamespaceExportDeclaration: freeze([\"id\"]),\n TSNonNullExpression: EXPRESSION,\n TSOptionalType: TYPE_ANNOTATION,\n TSParameterProperty: freeze([\"decorators\", \"parameter\"]),\n TSParenthesizedType: TYPE_ANNOTATION,\n TSPropertySignature: freeze([\"key\", \"typeAnnotation\"]),\n TSQualifiedName: LEFT__RIGHT,\n TSRestType: TYPE_ANNOTATION,\n TSSatisfiesExpression: EXPRESSION__TYPE_ANNOTATION,\n TSTemplateLiteralType: freeze([\"quasis\", \"types\"]),\n TSTupleType: freeze([\"elementTypes\"]),\n TSTypeAliasDeclaration: freeze([\"id\", \"typeParameters\", \"typeAnnotation\"]),\n TSTypeAnnotation: TYPE_ANNOTATION,\n TSTypeAssertion: freeze([\"typeAnnotation\", \"expression\"]),\n TSTypeLiteral: MEMBERS,\n TSTypeOperator: TYPE_ANNOTATION,\n TSTypeParameter: freeze([\"name\", \"constraint\", \"default\"]),\n TSTypeParameterDeclaration: PARAMS,\n TSTypeParameterInstantiation: PARAMS,\n TSTypePredicate: freeze([\"parameterName\", \"typeAnnotation\"]),\n TSTypeQuery: freeze([\"exprName\", \"typeArguments\"]),\n TSTypeReference: freeze([\"typeName\", \"typeArguments\"]),\n TSUnionType: TYPES,\n});\n","import { createRequire } from \"node:module\";\n\n// Lazy-loaded when first construct a `Visitor`\nlet walkProgram = null,\n addVisitorToCompiled,\n createCompiledVisitor,\n finalizeCompiledVisitor;\n\n/**\n * Visitor class for traversing AST.\n */\nexport class Visitor {\n #compiledVisitor = null;\n\n constructor(visitor) {\n if (walkProgram === null) {\n const require = createRequire(import.meta.url);\n ({ walkProgram } = require(\"../generated/visit/walk.js\"));\n ({\n addVisitorToCompiled,\n createCompiledVisitor,\n finalizeCompiledVisitor,\n } = require(\"./visitor.js\"));\n }\n\n const compiledVisitor = createCompiledVisitor();\n addVisitorToCompiled(visitor);\n const needsVisit = finalizeCompiledVisitor();\n if (needsVisit) this.#compiledVisitor = compiledVisitor;\n }\n\n /**\n * Visit AST.\n * @param program - The AST to visit.\n * @returns {undefined}\n */\n visit(program) {\n const compiledVisitor = this.#compiledVisitor;\n if (compiledVisitor !== null) walkProgram(program, compiledVisitor);\n }\n}\n","import { rawTransferSupported as rawTransferSupportedBinding } from \"../bindings.js\";\n\nlet rawTransferIsSupported = null;\n\n/**\n * Returns `true` if `experimentalRawTransfer` is option is supported.\n *\n * Raw transfer is only supported on 64-bit little-endian systems,\n * and NodeJS >= v22.0.0 or Deno >= v2.0.0.\n *\n * Versions of NodeJS prior to v22.0.0 do not support creating an `ArrayBuffer` larger than 4 GiB.\n * Bun (as at v1.2.4) also does not support creating an `ArrayBuffer` larger than 4 GiB.\n * Support on Deno v1 is unknown and it's EOL, so treating Deno before v2.0.0 as unsupported.\n *\n * No easy way to determining pointer width (64 bit or 32 bit) in JS,\n * so call a function on Rust side to find out.\n *\n * @returns {boolean} - `true` if raw transfer is supported on this platform\n */\nexport function rawTransferSupported() {\n if (rawTransferIsSupported === null) {\n rawTransferIsSupported = rawTransferRuntimeSupported() && rawTransferSupportedBinding();\n }\n return rawTransferIsSupported;\n}\n\n// Checks copied from:\n// https://github.com/unjs/std-env/blob/ab15595debec9e9115a9c1d31bc7597a8e71dbfd/src/runtimes.ts\n// MIT license: https://github.com/unjs/std-env/blob/ab15595debec9e9115a9c1d31bc7597a8e71dbfd/LICENCE\nfunction rawTransferRuntimeSupported() {\n let global;\n try {\n global = globalThis;\n } catch {\n return false;\n }\n\n const isBun = !!global.Bun || !!global.process?.versions?.bun;\n if (isBun) return false;\n\n const isDeno = !!global.Deno;\n if (isDeno) {\n const match = Deno.version?.deno?.match(/^(\\d+)\\./);\n return !!match && match[1] * 1 >= 2;\n }\n\n const isNode = global.process?.release?.name === \"node\";\n if (!isNode) return false;\n\n const match = process.version?.match(/^v(\\d+)\\./);\n return !!match && match[1] * 1 >= 22;\n}\n","import { createRequire } from \"node:module\";\nimport { parse as parseBinding, parseSync as parseSyncBinding } from \"./bindings.js\";\nimport { wrap } from \"./wrap.js\";\n\nexport { default as visitorKeys } from \"./generated/visit/keys.js\";\nexport { Visitor } from \"./visit/index.js\";\n\nexport {\n ExportExportNameKind,\n ExportImportNameKind,\n ExportLocalNameKind,\n ImportNameKind,\n ParseResult,\n Severity,\n} from \"./bindings.js\";\nexport { rawTransferSupported } from \"./raw-transfer/supported.js\";\n\nconst require = createRequire(import.meta.url);\n\n// Lazily loaded as needed\nlet parseSyncRaw = null,\n parseRaw,\n parseSyncLazy = null,\n parseLazy,\n LazyVisitor;\n\n/**\n * Lazy-load code related to raw transfer.\n * @returns {undefined}\n */\nfunction loadRawTransfer() {\n if (parseSyncRaw === null) {\n ({ parseSyncRaw, parse: parseRaw } = require(\"./raw-transfer/eager.js\"));\n }\n}\n\n/**\n * Lazy-load code related to raw transfer lazy deserialization.\n * @returns {undefined}\n */\nfunction loadRawTransferLazy() {\n if (parseSyncLazy === null) {\n ({ parseSyncLazy, parse: parseLazy, Visitor: LazyVisitor } = require(\"./raw-transfer/lazy.js\"));\n }\n}\n\n/**\n * Parse JS/TS source synchronously on current thread.\n *\n * @param {string} filename - Filename\n * @param {string} sourceText - Source text of file\n * @param {Object|undefined} options - Parsing options\n * @returns {Object} - Object with property getters for `program`, `module`, `comments`, and `errors`\n * @throws {Error} - If `experimentalRawTransfer` or `experimentalLazy` option is enabled,\n * and raw transfer is not supported on this platform\n */\nexport function parseSync(filename, sourceText, options) {\n if (options?.experimentalRawTransfer) {\n loadRawTransfer();\n return parseSyncRaw(filename, sourceText, options);\n }\n if (options?.experimentalLazy) {\n loadRawTransferLazy();\n return parseSyncLazy(filename, sourceText, options);\n }\n return wrap(parseSyncBinding(filename, sourceText, options));\n}\n\n/**\n * Parse JS/TS source asynchronously on a separate thread.\n *\n * Note that not all of the workload can happen on a separate thread.\n * Parsing on Rust side does happen in a separate thread, but deserialization of the AST to JS objects\n * has to happen on current thread. This synchronous deserialization work typically outweighs\n * the asynchronous parsing by a factor of between 3 and 20.\n *\n * i.e. the majority of the workload cannot be parallelized by using this method.\n *\n * Generally `parseSync` is preferable to use as it does not have the overhead of spawning a thread.\n * If you need to parallelize parsing multiple files, it is recommended to use worker threads.\n *\n * @param {string} filename - Filename\n * @param {string} sourceText - Source text of file\n * @param {Object|undefined} options - Parsing options\n * @returns {Object} - Object with property getters for `program`, `module`, `comments`, and `errors`\n * @throws {Error} - If `experimentalRawTransfer` or `experimentalLazy` option is enabled,\n * and raw transfer is not supported on this platform\n */\nexport async function parse(filename, sourceText, options) {\n if (options?.experimentalRawTransfer) {\n loadRawTransfer();\n return await parseRaw(filename, sourceText, options);\n }\n if (options?.experimentalLazy) {\n loadRawTransferLazy();\n return await parseLazy(filename, sourceText, options);\n }\n return wrap(await parseBinding(filename, sourceText, options));\n}\n\n/**\n * Get `Visitor` class to construct visitors with.\n * @returns {function} - `Visitor` class\n */\nexport function experimentalGetLazyVisitor() {\n loadRawTransferLazy();\n return LazyVisitor;\n}\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","/**\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 // Brand\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 // Semantic\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 // Neutral\n surface: \"#18181b\",\n border: \"#27272a\",\n muted: \"#71717a\",\n subtle: \"#3f3f46\",\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// Zero-config tailwind.config.ts generator\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// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config globals.css — tidak perlu @tailwind base dll\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultGlobalCss = `@import \"tailwindcss\";\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-background, #09090b);\n color: var(--color-foreground, #fafafa);\n}\n`\n","/**\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","/**\n * tailwind-styled-v4 — Component Hoister\n *\n * Problem: Component yang didefinisikan di dalam fungsi lain\n * akan direcreate setiap render — sangat buruk untuk performa.\n *\n * BEFORE (buruk):\n * export default function Page() {\n * const Box = tw.div`p-4` ← dibuat ulang tiap render!\n * return <Box/>\n * }\n *\n * AFTER (benar):\n * const Box = tw.div`p-4` ← module scope, dibuat sekali\n * export default function Page() {\n * return <Box/>\n * }\n *\n * Hoister mendeteksi pola ini dan memindahkan deklarasi ke module scope.\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Patterns\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Match: const Name = tw.tag`...` atau const Name = tw.tag({...})\n// yang ada di dalam function body (indent > 0)\nconst INDENTED_TW_DECL_RE = /^([ \\t]+)(const|let)\\s+([A-Z]\\w*)\\s*=\\s*tw\\.[\\w]+[`(]/gm\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hoist analysis\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface HoistResult {\n code: string\n hoisted: string[]\n warnings: string[]\n}\n\nexport function hoistComponents(source: string): HoistResult {\n const hoisted: string[] = []\n const warnings: string[] = []\n\n // Cari semua tw declarations yang indented (di dalam function body)\n const indentedDecls: Array<{\n fullMatch: string\n indent: string\n keyword: string\n name: string\n startIndex: number\n }> = []\n\n let m: RegExpExecArray | null\n const re = new RegExp(INDENTED_TW_DECL_RE.source, \"gm\")\n\n while ((m = re.exec(source)) !== null) {\n const indent = m[1]\n const keyword = m[2]\n const name = m[3]\n\n // Hanya hoist components (PascalCase), bukan variables biasa\n if (!/^[A-Z]/.test(name)) continue\n // Hanya hoist jika di dalam function (indent > 0)\n if (indent.length === 0) continue\n\n indentedDecls.push({\n fullMatch: m[0],\n indent,\n keyword,\n name,\n startIndex: m.index,\n })\n }\n\n if (indentedDecls.length === 0) {\n return { code: source, hoisted: [], warnings: [] }\n }\n\n // Untuk setiap indented declaration, extract full statement\n // dan pindahkan ke top of file\n let code = source\n const hoistedDecls: string[] = []\n\n // Process in reverse order to maintain correct indices\n for (const decl of [...indentedDecls].reverse()) {\n const { startIndex, indent, name } = decl\n\n // Cari end of the tw statement (sampai semicolon atau newline setelah `)`)\n const lineStart = code.lastIndexOf(\"\\n\", startIndex) + 1\n const restFromDecl = code.slice(lineStart)\n\n // Extract full statement — bisa multi-line untuk template literals\n const fullStmt = extractFullStatement(restFromDecl)\n if (!fullStmt) continue\n\n // Dedent statement\n const dedented = fullStmt\n .split(\"\\n\")\n .map((line) => (line.startsWith(indent) ? line.slice(indent.length) : line))\n .join(\"\\n\")\n .trim()\n\n // Remove from original position\n code = code.slice(0, lineStart) + code.slice(lineStart + fullStmt.length)\n\n // Collect for hoisting\n hoistedDecls.unshift(dedented)\n hoisted.push(name)\n\n warnings.push(\n `[tw-hoist] '${name}' moved to module scope for better performance. ` +\n `Avoid defining tw components inside render functions.`\n )\n }\n\n // Inject hoisted declarations after imports\n if (hoistedDecls.length > 0) {\n const insertPoint = findAfterImports(code)\n const hoistBlock = `\\n${hoistedDecls.join(\"\\n\\n\")}\\n`\n code = code.slice(0, insertPoint) + hoistBlock + code.slice(insertPoint)\n }\n\n return { code, hoisted, warnings }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction extractFullStatement(source: string): string | null {\n // Match tw template literal statement\n const templateRe = /^[ \\t]*(const|let)\\s+\\w+\\s*=\\s*tw\\.\\w+`[^`]*`.*\\n?/\n const templateMatch = source.match(templateRe)\n if (templateMatch) return templateMatch[0]\n\n // Match tw object config statement — may span multiple lines\n // Find balancing braces\n const objStart = source.indexOf(\"tw.\")\n if (objStart === -1) return null\n\n const parenStart = source.indexOf(\"(\", objStart)\n if (parenStart === -1) return null\n\n let depth = 0\n let i = parenStart\n\n while (i < source.length) {\n if (source[i] === \"(\") depth++\n if (source[i] === \")\") {\n depth--\n if (depth === 0) {\n // Include trailing semicolon and newline\n const end = source.indexOf(\"\\n\", i)\n return source.slice(0, end === -1 ? i + 1 : end + 1)\n }\n }\n i++\n }\n\n return null\n}\n\nfunction findAfterImports(source: string): number {\n const lines = source.split(\"\\n\")\n let lastImportLine = 0\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim()\n if (\n line.startsWith(\"import \") ||\n line.startsWith(\"'use client'\") ||\n line.startsWith('\"use client\"')\n ) {\n lastImportLine = i\n } else if (line && !line.startsWith(\"//\") && !line.startsWith(\"/*\") && lastImportLine > 0) {\n // First non-import, non-comment line after imports\n break\n }\n }\n\n // Return character index after last import line\n return lines.slice(0, lastImportLine + 1).join(\"\\n\").length + 1\n}\n","/**\n * tailwind-styled-v4 — RSC Analyzer\n *\n * Inti dari RSC-Aware upgrade.\n * Menganalisis setiap file untuk menentukan:\n * - Server Component atau Client Component\n * - Variant mana yang bisa di-resolve di server\n * - Class mana yang membutuhkan client runtime\n * - Auto client boundary injection\n *\n * Hasilnya:\n * - Server Component → pure static className, zero JS ke client\n * - Client Component → tetap seperti biasa dengan lookup table\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// RSC Analysis Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type ComponentEnv = \"server\" | \"client\" | \"auto\"\n\nexport interface RscAnalysis {\n /** File ini adalah server component */\n isServer: boolean\n /** File ini butuh \"use client\" directive */\n needsClientDirective: boolean\n /** Alasan butuh client */\n clientReasons: string[]\n /** Classes yang membutuhkan client interaction */\n interactiveClasses: string[]\n /** Apakah semua variants bisa di-resolve statically di server */\n canStaticResolveVariants: boolean\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Interactive class patterns — butuh client-side event handling\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** CSS classes yang TIDAK butuh JS — tetap bisa di server */\nconst CSS_INTERACTIVE_OK = [\n /^hover:/, // CSS :hover — no JS needed\n /^focus:/, // CSS :focus — no JS needed\n /^focus-within:/, // CSS :focus-within\n /^focus-visible:/, // CSS :focus-visible\n /^active:/, // CSS :active\n /^group-hover:/, // Tailwind group variant — CSS only\n /^group-focus:/, // CSS only\n /^peer-/, // Tailwind peer — CSS only\n /^first:/, // CSS :first-child\n /^last:/, // CSS :last-child\n /^odd:/, // CSS :nth-child(odd)\n /^even:/, // CSS :nth-child(even)\n /^disabled:/, // CSS :disabled\n /^placeholder:/, // CSS ::placeholder\n /^dark:/, // CSS @media prefers-color-scheme\n /^print:/, // CSS @media print\n /^md:|^sm:|^lg:|^xl:|^2xl:/, // Responsive breakpoints — CSS only\n]\n\n/** Patterns yang BENAR-BENAR butuh JS runtime */\nconst REQUIRES_JS_PATTERNS = [\n // React hooks\n /\\buseState\\b/,\n /\\buseEffect\\b/,\n /\\buseRef\\b/,\n /\\buseCallback\\b/,\n /\\buseMemo\\b/,\n /\\buseReducer\\b/,\n /\\buseContext\\b/,\n // Event handlers\n /\\bon[A-Z][a-zA-Z]+\\s*[=:]/, // onClick=, onMouseEnter:, etc.\n // Browser APIs\n /\\bwindow\\./,\n /\\bdocument\\./,\n /\\blocalStorage\\b/,\n /\\bsessionStorage\\b/,\n // Dynamic imports\n /import\\s*\\(/,\n]\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main analyzer\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function analyzeFile(source: string, _filename = \"\"): RscAnalysis {\n const clientReasons: string[] = []\n const interactiveClasses: string[] = []\n\n // 1. Explicit \"use client\" directive\n const hasClientDirective =\n source.trimStart().startsWith('\"use client\"') || source.trimStart().startsWith(\"'use client'\")\n\n if (hasClientDirective) {\n clientReasons.push(\"explicit 'use client' directive\")\n }\n\n // 2. React hooks → needs client\n for (const pattern of REQUIRES_JS_PATTERNS) {\n if (pattern.test(source)) {\n const match = source.match(pattern)\n if (match) clientReasons.push(`uses ${match[0].trim()}`)\n }\n }\n\n // 3. Check for tw.server.* usage — force server\n const hasServerMarker = source.includes(\"tw.server.\")\n\n // 4. Collect interactive classes from tw templates\n const templateRe = /\\btw\\.(?:server\\.)?(\\w+)`((?:[^`\\\\]|\\\\.)*)`/g\n const _objectRe = /\\btw\\.(?:server\\.)?(\\w+)\\(\\s*(\\{[\\s\\S]*?\\})\\s*\\)/g\n let m: RegExpExecArray | null\n\n while ((m = templateRe.exec(source)) !== null) {\n const classes = m[2]\n // CSS-only interaction is fine for server, skip\n // But collect them for reference\n const parts = classes.split(/\\s+/).filter(Boolean)\n for (const cls of parts) {\n const isOk = CSS_INTERACTIVE_OK.some((re) => re.test(cls))\n if (!isOk && /^[a-z-]+:/.test(cls)) {\n interactiveClasses.push(cls)\n clientReasons.push(`uses JS-interactive class: ${cls}`)\n }\n }\n }\n\n const needsClientDirective = !hasServerMarker && (hasClientDirective || clientReasons.length > 0)\n\n const isServer = !needsClientDirective || hasServerMarker\n\n return {\n isServer,\n needsClientDirective,\n clientReasons: [...new Set(clientReasons)],\n interactiveClasses: [...new Set(interactiveClasses)],\n canStaticResolveVariants: isServer,\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Server-side static variant resolution\n//\n// Ketika sebuah file adalah server component dan variant value diketahui\n// di compile time (literal string), compiler bisa langsung inline className.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface StaticVariantUsage {\n /** Variant prop values yang ditemukan di JSX — bisa di-resolve di server */\n resolved: Record<string, string>\n /** Variant props yang dinamis — butuh runtime */\n dynamic: string[]\n}\n\n/**\n * Deteksi penggunaan variant dalam JSX:\n * <Button variant=\"primary\"/> → dapat di-resolve statically\n * <Button variant={userVariant}/> → dinamis, butuh runtime\n */\nexport function analyzeVariantUsage(\n source: string,\n componentName: string,\n variantKeys: string[]\n): StaticVariantUsage {\n const resolved: Record<string, string> = {}\n const dynamic: string[] = []\n\n for (const key of variantKeys) {\n // Static: variant=\"primary\"\n const staticRe = new RegExp(`<${componentName}[^>]*\\\\b${key}=[\"']([^\"']+)[\"'][^>]*>`, \"g\")\n // Dynamic: variant={someVar}\n const dynamicRe = new RegExp(`<${componentName}[^>]*\\\\b${key}=\\\\{[^\"'][^}]*\\\\}[^>]*>`, \"g\")\n\n const staticMatch = source.match(staticRe)\n const dynamicMatch = source.match(dynamicRe)\n\n if (dynamicMatch) {\n dynamic.push(key)\n } else if (staticMatch) {\n const valMatch = staticMatch[0].match(new RegExp(`${key}=[\"']([^\"']+)[\"']`))\n if (valMatch) resolved[key] = valMatch[1]\n }\n }\n\n return { resolved, dynamic }\n}\n\n/**\n * Untuk server component dengan variant usage statically known,\n * resolve langsung ke className string — nol runtime.\n *\n * Input:\n * base = \"px-4 py-2\"\n * table = { variant: { primary: \"px-4 py-2 bg-blue-500\" } }\n * resolved = { variant: \"primary\" }\n *\n * Output:\n * \"px-4 py-2 bg-blue-500\" ← langsung inline di server\n */\nexport function resolveServerVariant(\n base: string,\n table: Record<string, Record<string, string>>,\n defaults: Record<string, string>,\n resolved: Record<string, string>\n): string {\n const parts: string[] = [base]\n\n for (const key in table) {\n const val = resolved[key] ?? defaults[key]\n if (val && table[key][val]) {\n parts.push(table[key][val])\n }\n }\n\n // Dedupe dengan last-wins\n const seen = new Map<string, string>()\n for (const part of parts) {\n for (const cls of part.split(/\\s+/).filter(Boolean)) {\n const prefix = cls.replace(/^(?:[\\w-]+:)*/, \"\").split(\"-\")[0]\n seen.set(prefix, cls)\n }\n }\n\n return Array.from(seen.values()).join(\" \")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Client boundary auto-injection helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function injectClientDirective(code: string): string {\n if (code.startsWith('\"use client\"') || code.startsWith(\"'use client'\")) {\n return code\n }\n return `\"use client\";\\n${code}`\n}\n\nexport function injectServerOnlyComment(code: string): string {\n // Hint untuk bundler — RSC optimizer bisa tree-shake client deps\n return `/* @tw-server-only */\\n${code}`\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\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 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 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 — astParser\n *\n * UPGRADE RUST: oxc-parser (Rust-based, via napi-rs) menggantikan\n * hand-written bracket-counting tokenizer.\n *\n * Keuntungan oxc-parser:\n * - ~10x lebih cepat dari tokenizer TypeScript\n * - Handles semua edge case TypeScript/JS secara native\n * - Same parser yang dipakai Rolldown, Vite 6, Biome\n * - Zero maintenance — battle-tested di ekosistem besar\n *\n * Strategy: oxc-parser sebagai primary, tokenizer lama sebagai fallback.\n * Jika oxc gagal parse (malformed input), fallback transparan — zero breakage.\n *\n * Compatibility: Next.js, Vite, Rspack — semua fully supported.\n * oxc-parser adalah native Node addon (napi-rs), tidak ada WASM overhead.\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Public types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ParsedComponentConfig {\n base: string\n variants: Record<string, Record<string, string>>\n compounds: Array<{ class: string; [key: string]: any }>\n defaults: Record<string, string>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// oxc-parser — Rust AST walker (primary)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Resolve key from Identifier or Literal node */\nfunction oxcKey(node: any): string | null {\n if (!node) return null\n if (node.type === \"Identifier\") return node.name as string\n if (node.type === \"Literal\" && typeof node.value === \"string\") return node.value\n return null\n}\n\n/** Resolve string value from Literal or no-expression TemplateLiteral */\nfunction oxcStringVal(node: any): string | null {\n if (!node) return null\n if (node.type === \"Literal\" && typeof node.value === \"string\") return node.value\n if (node.type === \"TemplateLiteral\" && node.expressions?.length === 0) {\n return (node.quasis as any[]).map((q: any) => q.value?.cooked ?? q.value?.raw ?? \"\").join(\"\")\n }\n return null\n}\n\n/** Recursively walk ObjectExpression → plain Record */\nfunction oxcWalkObject(node: any): Record<string, any> {\n const result: Record<string, any> = {}\n if (node?.type !== \"ObjectExpression\") return result\n\n for (const prop of node.properties ?? []) {\n if (prop.type !== \"Property\") continue\n const key = oxcKey(prop.key)\n if (!key) continue\n\n const val = prop.value\n const strVal = oxcStringVal(val)\n\n if (strVal !== null) {\n result[key] = strVal\n } else if (val?.type === \"ObjectExpression\") {\n result[key] = oxcWalkObject(val)\n } else if (val?.type === \"ArrayExpression\") {\n result[key] = (val.elements as any[])\n .filter((el: any) => el?.type === \"ObjectExpression\")\n .map((el: any) => oxcWalkObject(el))\n }\n // skip dynamic expressions, functions, computed props, etc.\n }\n return result\n}\n\n/**\n * Parse config object string using oxc-parser (Rust).\n * Wraps string sebagai valid statement agar oxc bisa parse.\n * Returns null jika parse gagal → fallback ke tokenizer.\n */\nfunction parseWithOxc(objectStr: string): ParsedComponentConfig | null {\n let parseSync: (filename: string, source: string, options?: any) => any\n try {\n // Dynamic require agar tidak crash jika oxc-parser tidak terinstall\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n parseSync = require(\"oxc-parser\").parseSync\n } catch {\n return null // oxc-parser not available → silently fallback\n }\n\n try {\n const source = `const __c = ${objectStr}`\n const { program, errors } = parseSync(\"config.ts\", source, { sourceType: \"script\" })\n\n if (errors?.length > 0 || !program?.body?.[0]) return null\n\n const varDecl = program.body[0]\n if (varDecl.type !== \"VariableDeclaration\") return null\n\n const init = varDecl.declarations?.[0]?.init\n if (init?.type !== \"ObjectExpression\") return null\n\n const raw = oxcWalkObject(init)\n\n // ── base ────────────────────────────────────────────────────────────\n const base = typeof raw.base === \"string\" ? raw.base.trim() : \"\"\n\n // ── variants ─────────────────────────────────────────────────────────\n const variants: Record<string, Record<string, string>> = {}\n const rawVariants = raw.variants\n if (rawVariants && typeof rawVariants === \"object\" && !Array.isArray(rawVariants)) {\n for (const [vName, vMap] of Object.entries(rawVariants)) {\n if (vMap && typeof vMap === \"object\" && !Array.isArray(vMap)) {\n variants[vName] = {}\n for (const [vVal, cls] of Object.entries(vMap as Record<string, any>)) {\n if (typeof cls === \"string\") variants[vName][vVal] = cls.trim()\n }\n }\n }\n }\n\n // ── compoundVariants ─────────────────────────────────────────────────\n const compounds: Array<{ class: string; [key: string]: any }> = []\n const rawCompounds = raw.compoundVariants\n if (Array.isArray(rawCompounds)) {\n for (const item of rawCompounds) {\n if (item && typeof item.class === \"string\") {\n compounds.push(item as { class: string })\n }\n }\n }\n\n // ── defaultVariants ──────────────────────────────────────────────────\n const defaults: Record<string, string> = {}\n const rawDefaults = raw.defaultVariants\n if (rawDefaults && typeof rawDefaults === \"object\" && !Array.isArray(rawDefaults)) {\n for (const [k, v] of Object.entries(rawDefaults)) {\n if (typeof v === \"string\") defaults[k] = v\n }\n }\n\n return { base, variants, compounds, defaults }\n } catch {\n return null // parse error → fallback\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Tokenizer fallback (original implementation — preserved as-is)\n// ─────────────────────────────────────────────────────────────────────────────\n\ntype TokenType =\n | \"string\"\n | \"key\"\n | \"colon\"\n | \"comma\"\n | \"lbrace\"\n | \"rbrace\"\n | \"lbracket\"\n | \"rbracket\"\n | \"other\"\n\ninterface Token {\n type: TokenType\n value: string\n pos: number\n}\n\nfunction tokenize(src: string): Token[] {\n const tokens: Token[] = []\n let i = 0\n\n while (i < src.length) {\n const ch = src[i]\n\n if (/\\s/.test(ch)) {\n i++\n continue\n }\n\n if (ch === '\"' || ch === \"'\" || ch === \"`\") {\n const quote = ch\n let j = i + 1\n let str = ch\n while (j < src.length) {\n if (src[j] === \"\\\\\" && quote !== \"`\") {\n str += src[j] + src[j + 1]\n j += 2\n continue\n }\n if (src[j] === \"\\\\\" && quote === \"`\") {\n str += src[j] + src[j + 1]\n j += 2\n continue\n }\n str += src[j]\n if (src[j] === quote) {\n j++\n break\n }\n j++\n }\n tokens.push({ type: \"string\", value: str.slice(1, -1), pos: i })\n i = j\n continue\n }\n\n if (ch === \":\") {\n tokens.push({ type: \"colon\", value: \":\", pos: i })\n i++\n continue\n }\n if (ch === \",\") {\n tokens.push({ type: \"comma\", value: \",\", pos: i })\n i++\n continue\n }\n if (ch === \"{\") {\n tokens.push({ type: \"lbrace\", value: \"{\", pos: i })\n i++\n continue\n }\n if (ch === \"}\") {\n tokens.push({ type: \"rbrace\", value: \"}\", pos: i })\n i++\n continue\n }\n if (ch === \"[\") {\n tokens.push({ type: \"lbracket\", value: \"[\", pos: i })\n i++\n continue\n }\n if (ch === \"]\") {\n tokens.push({ type: \"rbracket\", value: \"]\", pos: i })\n i++\n continue\n }\n\n if (/[\\w$]/.test(ch)) {\n let j = i\n while (j < src.length && /[\\w$]/.test(src[j])) j++\n tokens.push({ type: \"key\", value: src.slice(i, j), pos: i })\n i = j\n continue\n }\n\n tokens.push({ type: \"other\", value: ch, pos: i })\n i++\n }\n\n return tokens\n}\n\ninterface ParsedObject {\n [key: string]: string | ParsedObject | Array<ParsedObject>\n}\n\nfunction parseObject(tokens: Token[], startIdx: number): { obj: ParsedObject; endIdx: number } {\n const obj: ParsedObject = {}\n let i = startIdx\n\n if (tokens[i]?.type !== \"lbrace\") return { obj, endIdx: i }\n i++\n\n while (i < tokens.length && tokens[i]?.type !== \"rbrace\") {\n if (tokens[i]?.type === \"comma\") {\n i++\n continue\n }\n\n let key: string | null = null\n if (tokens[i]?.type === \"string\") {\n key = tokens[i].value\n i++\n } else if (tokens[i]?.type === \"key\") {\n key = tokens[i].value\n i++\n } else {\n i++\n continue\n }\n\n if (tokens[i]?.type !== \"colon\") continue\n i++\n\n if (tokens[i]?.type === \"lbrace\") {\n const { obj: nested, endIdx } = parseObject(tokens, i)\n obj[key] = nested\n i = endIdx + 1\n } else if (tokens[i]?.type === \"lbracket\") {\n const { arr, endIdx } = parseArray(tokens, i)\n obj[key] = arr as any\n i = endIdx + 1\n } else if (tokens[i]?.type === \"string\") {\n obj[key] = tokens[i].value\n i++\n } else if (tokens[i]?.type === \"key\") {\n obj[key] = tokens[i].value\n i++\n } else {\n i++\n }\n }\n\n return { obj, endIdx: i }\n}\n\nfunction parseArray(tokens: Token[], startIdx: number): { arr: ParsedObject[]; endIdx: number } {\n const arr: ParsedObject[] = []\n let i = startIdx\n\n if (tokens[i]?.type !== \"lbracket\") return { arr, endIdx: i }\n i++\n\n while (i < tokens.length && tokens[i]?.type !== \"rbracket\") {\n if (tokens[i]?.type === \"comma\") {\n i++\n continue\n }\n if (tokens[i]?.type === \"lbrace\") {\n const { obj, endIdx } = parseObject(tokens, i)\n arr.push(obj)\n i = endIdx + 1\n } else {\n i++\n }\n }\n\n return { arr, endIdx: i }\n}\n\nfunction parseComponentConfigFallback(objectStr: string): ParsedComponentConfig {\n const tokens = tokenize(objectStr)\n const { obj } = parseObject(tokens, 0)\n\n const base = typeof obj.base === \"string\" ? obj.base.trim() : \"\"\n\n const variants: Record<string, Record<string, string>> = {}\n const rawVariants = obj.variants\n if (rawVariants && typeof rawVariants === \"object\" && !Array.isArray(rawVariants)) {\n for (const [variantName, variantValues] of Object.entries(rawVariants as ParsedObject)) {\n if (typeof variantValues === \"object\" && !Array.isArray(variantValues)) {\n variants[variantName] = {}\n for (const [valueName, cls] of Object.entries(variantValues as ParsedObject)) {\n if (typeof cls === \"string\") variants[variantName][valueName] = cls.trim()\n }\n }\n }\n }\n\n const compounds: Array<{ class: string; [key: string]: any }> = []\n const rawCompounds = obj.compoundVariants\n if (Array.isArray(rawCompounds)) {\n for (const item of rawCompounds as ParsedObject[]) {\n if (item && typeof item.class === \"string\") compounds.push(item as any)\n }\n }\n\n const defaults: Record<string, string> = {}\n const rawDefaults = obj.defaultVariants\n if (rawDefaults && typeof rawDefaults === \"object\" && !Array.isArray(rawDefaults)) {\n for (const [k, v] of Object.entries(rawDefaults as ParsedObject)) {\n if (typeof v === \"string\") defaults[k] = v\n }\n }\n\n return { base, variants, compounds, defaults }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Public API — oxc-parser primary, tokenizer fallback\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Parse a ComponentConfig object literal string.\n *\n * PRIMARY: oxc-parser (Rust, napi-rs) — ~10x faster, full TS/JS support.\n * FALLBACK: bracket-counting tokenizer — transparan, zero breakage.\n *\n * @example\n * parseComponentConfig(`{\n * base: \"px-4 py-2\",\n * variants: { size: { sm: \"text-sm\", lg: \"text-lg\" } },\n * defaultVariants: { size: \"sm\" }\n * }`)\n */\nexport function parseComponentConfig(objectStr: string): ParsedComponentConfig {\n const oxcResult = parseWithOxc(objectStr)\n if (oxcResult !== null) return oxcResult\n\n // Fallback: original tokenizer\n return parseComponentConfigFallback(objectStr)\n}\n","/**\n * tailwind-styled-v4 — variantCompiler\n *\n * FIXES:\n * #01 — Don't pre-merge base into variant table values (double-merge bug)\n * #06 — Use proper AST parser instead of fragile regex\n *\n * BEFORE (double-merge):\n * compileVariants: table[\"size\"][\"sm\"] = \"px-4 py-2 text-sm\" ← base included\n * astTransform: [base, table[\"size\"][...]] ← base AGAIN → DUPE\n *\n * AFTER (correct):\n * compileVariants: table[\"size\"][\"sm\"] = \"text-sm\" ← variant only\n * astTransform: [base, table[\"size\"][...], className] ← base once, correct\n *\n * Input:\n * { base: \"px-4 py-2\", variants: { size: { sm: \"text-sm\" } } }\n *\n * Output code:\n * const __vt_abc123 = { size: { sm: \"text-sm\" } }\n * // className = [base, table[variant]] → no duplication\n */\n\nimport { parseComponentConfig } from \"./astParser\"\nimport { normalizeClasses } from \"./classMerger\"\n\nexport interface CompiledVariants {\n base: string\n table: Record<string, Record<string, string>>\n compounds: Array<{ class: string; [key: string]: any }>\n defaults: Record<string, string>\n}\n\n/**\n * Compile variant config into lookup table.\n *\n * FIX #01: Do NOT pre-merge base into table values.\n * Table contains variant-specific classes only.\n * Base is always injected separately in the component className array.\n */\nexport function compileVariants(\n base: string,\n variants: Record<string, Record<string, string>>,\n compounds: Array<{ class: string; [key: string]: any }> = [],\n defaults: Record<string, string> = {}\n): CompiledVariants {\n const table: Record<string, Record<string, string>> = {}\n\n for (const key in variants) {\n table[key] = {}\n for (const val in variants[key]) {\n // FIX #01: variant classes only — NOT merged with base\n // Base is injected separately in renderVariantComponent\n table[key][val] = normalizeClasses(variants[key][val])\n }\n }\n\n return { base, table, compounds, defaults }\n}\n\nexport function generateVariantCode(id: string, compiled: CompiledVariants): string {\n const { table, compounds, defaults } = compiled\n\n const tableJson = JSON.stringify(table, null, 2)\n const compoundsJson = JSON.stringify(compounds, null, 2)\n const defaultsJson = JSON.stringify(defaults, null, 2)\n\n return `const __vt_${id} = ${tableJson};\nconst __vc_${id} = ${compoundsJson};\nconst __vd_${id} = ${defaultsJson};`\n}\n\n/**\n * Parse object config string.\n * UPGRADE #4: Uses proper AST parser — handles all edge cases.\n *\n * FIX #02 (indirect): classExtractor no longer needs .slice(0, -1) workaround\n * since TEMPLATE_RE trailing space is fixed in twDetector.ts\n */\nexport function parseObjectConfig(objectStr: string): {\n base: string\n variants: Record<string, Record<string, string>>\n compounds: Array<{ class: string; [key: string]: any }>\n defaults: Record<string, string>\n} {\n return parseComponentConfig(objectStr)\n}\n","/**\n * tailwind-styled-v4 v2 — AST Transform (RSC-Aware)\n *\n * FIXES:\n * #01 — Double-merge base in variant component className array\n * #08 — Idempotency guard — skip if already transformed\n *\n * Pipeline:\n * source code\n * ↓ idempotency check (new)\n * ↓ analyze RSC context\n * ↓ hoist components (if needed)\n * ↓ detect tw.server.* vs tw.*\n * ↓ extract + merge classes\n * ↓ compile variants → lookup table (variant-only, no base dupe)\n * ↓ generate React.forwardRef component\n * ↓ auto \"use client\" if interactive\n * ↓ strip tw import\n * ↓ inject transform marker\n */\n\nimport { normalizeClasses } from \"./classMerger\"\nimport { hoistComponents } from \"./componentHoister\"\nimport { analyzeFile, injectClientDirective } from \"./rscAnalyzer\"\nimport { hasTwUsage, isAlreadyTransformed, isDynamic, TRANSFORM_MARKER } from \"./twDetector\"\nimport { compileVariants, generateVariantCode, parseObjectConfig } from \"./variantCompiler\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface TransformOptions {\n mode?: \"zero-runtime\" | \"runtime\" | \"extract-only\"\n autoClientBoundary?: boolean\n addDataAttr?: boolean\n hoist?: boolean\n filename?: string\n}\n\nexport interface TransformResult {\n code: string\n classes: string[]\n rsc?: {\n isServer: boolean\n needsClientDirective: boolean\n clientReasons: string[]\n }\n changed: boolean\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Patterns — updated to include server. group\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst TEMPLATE_RE = /\\btw\\.(server\\.)?(\\w+)`((?:[^`\\\\]|\\\\.)*)`/g\nconst OBJECT_RE = /\\btw\\.(server\\.)?(\\w+)\\(\\s*(\\{[\\s\\S]*?\\})\\s*\\)/g\nconst EXTEND_RE = /(\\w+)\\.extend`((?:[^`\\\\]|\\\\.)*)`/g\nconst WRAP_RE = /\\btw\\((\\w+)\\)`((?:[^`\\\\]|\\\\.)*)`/g\n\nlet _idCounter = 0\nfunction genId(): string {\n return `c${(++_idCounter).toString(36)}`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Static component output\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction renderStaticComponent(\n tag: string,\n classes: string,\n opts: { addDataAttr: boolean; isServer: boolean; compName?: string }\n): string {\n const { addDataAttr, compName } = opts\n const fnName = compName ? `_Tw_${compName}` : `_Tw_${tag}`\n const dataAttr = addDataAttr\n ? `, \"data-tw\": \"${fnName}:${classes.split(\" \").slice(0, 3).join(\" \")}${classes.split(\" \").length > 3 ? \"...\" : \"\"}\"`\n : \"\"\n\n return `React.forwardRef(function ${fnName}(props, ref) {\n var _c = props.className;\n var _r = Object.assign({}, props);\n delete _r.className;\n return React.createElement(\"${tag}\", Object.assign({ ref }, _r${dataAttr}, { className: [${JSON.stringify(classes)}, _c].filter(Boolean).join(\" \") }));\n})`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Variant component output\n//\n// FIX #01: base is injected here in className array.\n// lookup table contains ONLY variant-specific classes (not base).\n// Previously: compileVariants pre-merged base into table → double base.\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction renderVariantComponent(\n tag: string,\n id: string,\n base: string,\n variantKeys: string[],\n defaults: Record<string, string>,\n opts: { addDataAttr: boolean; isServer: boolean }\n): string {\n const { addDataAttr } = opts\n const fnName = `_TwV_${tag}_${id}`\n const dataAttr = addDataAttr ? `, \"data-tw\": \"${fnName}\"` : \"\"\n\n // Destructure variant props to prevent leaking to DOM\n const vKeys = variantKeys.map((k) => `\"${k}\"`).join(\", \")\n const destructure =\n variantKeys.length > 0\n ? `var _vp = {}; [${vKeys}].forEach(function(k){ _vp[k] = props[k]; delete _rest[k]; });`\n : \"\"\n\n // FIX #01: table values are variant-only (no base pre-merged).\n // base is injected separately as first element — correct, no duplication.\n const variantLookup =\n variantKeys.length > 0\n ? variantKeys\n .map(\n (k) =>\n `(__vt_${id}[\"${k}\"] && __vt_${id}[\"${k}\"][_vp[\"${k}\"] ?? ${JSON.stringify(defaults[k] ?? \"\")}] || \"\")`\n )\n .join(\", \")\n : \"\"\n\n // FIX #01: [base, ...variantClasses, className] — base appears exactly once\n const classParts =\n variantKeys.length > 0\n ? `[${JSON.stringify(base)}, ${variantLookup}, _rest.className]`\n : `[${JSON.stringify(base)}, _rest.className]`\n\n return `React.forwardRef(function ${fnName}(props, ref) {\n var _rest = Object.assign({}, props);\n delete _rest.className;\n ${destructure}\n return React.createElement(\"${tag}\", Object.assign({ ref }, _rest${dataAttr}, { className: ${classParts}.filter(Boolean).join(\" \") }));\n})`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main transform — RSC-Aware pipeline\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function transformSource(source: string, opts: TransformOptions = {}): TransformResult {\n const {\n mode = \"zero-runtime\",\n autoClientBoundary = true,\n addDataAttr = false,\n hoist = true,\n filename = \"\",\n } = opts\n\n // ── Fast exits ────────────────────────────────────────────────────────\n if (!hasTwUsage(source)) {\n return { code: source, classes: [], changed: false }\n }\n\n // FIX #08: Idempotency guard — do not transform already-transformed code\n if (isAlreadyTransformed(source)) {\n return { code: source, classes: [], changed: false }\n }\n\n if (mode === \"runtime\" || mode === \"extract-only\") {\n return { code: source, classes: [], changed: false }\n }\n\n // ── STEP 1: RSC Analysis ───────────────────────────────────────────────\n const rscAnalysis = analyzeFile(source, filename)\n\n // ── STEP 2: Component Hoisting ─────────────────────────────────────────\n let code = source\n if (hoist) {\n const hoistResult = hoistComponents(source)\n if (hoistResult.hoisted.length > 0) {\n code = hoistResult.code\n if (process.env.NODE_ENV !== \"production\") {\n for (const w of hoistResult.warnings) {\n console.warn(w)\n }\n }\n }\n }\n\n let changed = false\n const allClasses: string[] = []\n const prelude: string[] = []\n let needsReact = false\n\n // ── STEP 3a: tw.tag`classes` → static forwardRef ───────────────────────\n code = code.replace(\n TEMPLATE_RE,\n (match, serverMark: string | undefined, tag: string, content: string) => {\n if (isDynamic(content)) return match\n\n const classes = normalizeClasses(content)\n if (!classes) return match\n\n const isServerOnly = !!serverMark\n allClasses.push(...classes.split(/\\s+/).filter(Boolean))\n changed = true\n needsReact = true\n\n const rendered = renderStaticComponent(tag, classes, {\n addDataAttr,\n isServer: rscAnalysis.isServer || isServerOnly,\n })\n\n return isServerOnly ? `/* @server-only */ ${rendered}` : rendered\n }\n )\n\n // ── STEP 3b: tw.tag({...}) → lookup table + variant forwardRef ─────────\n code = code.replace(\n OBJECT_RE,\n (match, serverMark: string | undefined, tag: string, objectStr: string) => {\n const { base, variants, compounds, defaults } = parseObjectConfig(objectStr)\n if (!base && Object.keys(variants).length === 0) return match\n\n const isServerOnly = !!serverMark\n\n allClasses.push(...base.split(/\\s+/).filter(Boolean))\n for (const vMap of Object.values(variants)) {\n for (const cls of Object.values(vMap)) {\n allClasses.push(...cls.split(/\\s+/).filter(Boolean))\n }\n }\n\n changed = true\n needsReact = true\n\n const id = genId()\n // FIX #01: compileVariants no longer merges base into table\n const compiled = compileVariants(base, variants, compounds, defaults)\n prelude.push(generateVariantCode(id, compiled))\n\n const variantKeys = Object.keys(variants)\n const rendered = renderVariantComponent(tag, id, base, variantKeys, defaults, {\n addDataAttr,\n isServer: rscAnalysis.isServer || isServerOnly,\n })\n\n return isServerOnly ? `/* @server-only */ ${rendered}` : rendered\n }\n )\n\n // ── STEP 3c: tw(Component)`classes` ─────────────────────────────────────\n code = code.replace(WRAP_RE, (match, compName: string, content: string) => {\n if (isDynamic(content)) return match\n\n const classes = normalizeClasses(content)\n if (!classes) return match\n\n allClasses.push(...classes.split(/\\s+/).filter(Boolean))\n changed = true\n needsReact = true\n\n return `React.forwardRef(function _TwWrap_${compName}(props, ref) {\n var _c = [${JSON.stringify(classes)}, props.className].filter(Boolean).join(\" \");\n return React.createElement(${compName}, Object.assign({}, props, { ref, className: _c }));\n})`\n })\n\n // ── STEP 3d: Component.extend`classes` ──────────────────────────────────\n code = code.replace(EXTEND_RE, (match, compName: string, content: string) => {\n if (isDynamic(content)) return match\n\n const extra = normalizeClasses(content)\n if (!extra) return match\n\n allClasses.push(...extra.split(/\\s+/).filter(Boolean))\n changed = true\n needsReact = true\n\n return `React.forwardRef(function _TwExt_${compName}(props, ref) {\n var _c = [${JSON.stringify(extra)}, props.className].filter(Boolean).join(\" \");\n return React.createElement(${compName}, Object.assign({}, props, { ref, className: _c }));\n})`\n })\n\n if (!changed) {\n return { code: source, classes: [], rsc: rscAnalysis, changed: false }\n }\n\n // ── STEP 4: Inject variant lookup tables (prelude) ─────────────────────\n if (prelude.length > 0) {\n const importEnd = findAfterImports(code)\n code = `${code.slice(0, importEnd)}\\n${prelude.join(\"\\n\")}\\n${code.slice(importEnd)}`\n }\n\n // ── STEP 5: Ensure React import ─────────────────────────────────────────\n if (needsReact && !hasReactImport(source)) {\n code = `import React from \"react\";\\n${code}`\n }\n\n // ── STEP 6: RSC auto client boundary ────────────────────────────────────\n if (autoClientBoundary && rscAnalysis.needsClientDirective) {\n code = injectClientDirective(code)\n }\n\n // ── STEP 7: Strip tw import when fully transformed ──────────────────────\n const stillUsesTw = /\\btw\\.(server\\.)?\\w+[`(]/.test(code) || /\\btw\\(\\w+\\)/.test(code)\n if (!stillUsesTw) {\n code = code.replace(\n /import\\s*\\{[^}]*\\btw\\b[^}]*\\}\\s*from\\s*[\"']tailwind-styled-v4[\"'];?\\n?/g,\n \"\"\n )\n }\n\n // ── STEP 8: Inject transform marker (FIX #08 — idempotency) ─────────────\n code = `${TRANSFORM_MARKER}\\n${code}`\n\n return {\n code,\n classes: Array.from(new Set(allClasses)),\n rsc: {\n isServer: rscAnalysis.isServer,\n needsClientDirective: rscAnalysis.needsClientDirective,\n clientReasons: rscAnalysis.clientReasons,\n },\n changed: true,\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction hasReactImport(source: string): boolean {\n return (\n source.includes(\"import React\") ||\n source.includes(\"from 'react'\") ||\n source.includes('from \"react\"')\n )\n}\n\nfunction findAfterImports(source: string): number {\n const lines = source.split(\"\\n\")\n let lastImportIdx = 0\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim()\n if (\n line.startsWith(\"import \") ||\n line.startsWith('\"use client\"') ||\n line.startsWith(\"'use client'\") ||\n line.startsWith(TRANSFORM_MARKER) ||\n line === \"\"\n ) {\n lastImportIdx = i\n } else if (line && !line.startsWith(\"//\") && !line.startsWith(\"/*\")) {\n break\n }\n }\n\n return lines.slice(0, lastImportIdx + 1).join(\"\\n\").length + 1\n}\n\nexport { hasTwUsage as shouldProcess }\n","// ── Core transform pipeline ──────────────────────────────────────────────────\n\nexport type { TransformOptions, TransformResult } from \"./astTransform\"\nexport { shouldProcess, transformSource } from \"./astTransform\"\nexport type { AtomicRule } from \"./atomicCss\"\n// ── Atomic CSS ────────────────────────────────────────────────────────────────\nexport {\n clearAtomicRegistry,\n generateAtomicCss,\n getAtomicRegistry,\n parseAtomicClass,\n toAtomicClasses,\n} from \"./atomicCss\"\n// ── Class utilities ───────────────────────────────────────────────────────────\nexport { extractAllClasses } from \"./classExtractor\"\nexport { mergeClassesStatic, normalizeClasses } from \"./classMerger\"\nexport type { HoistResult } from \"./componentHoister\"\n// ── Component hoisting ────────────────────────────────────────────────────────\nexport { hoistComponents } from \"./componentHoister\"\nexport type {\n EliminationReport,\n VariantUsage,\n} from \"./deadStyleEliminator\"\n// ── Dead Style Eliminator ─────────────────────────────────────────────────────\nexport {\n extractComponentUsage,\n runElimination,\n scanProjectUsage,\n} from \"./deadStyleEliminator\"\nexport type {\n CssDiff,\n FileDependencyGraph,\n IncrementalEngineOptions,\n IncrementalStats,\n ProcessResult,\n StyleNode,\n} from \"./incrementalEngine\"\n// ── Incremental CSS Compiler ──────────────────────────────────────────────────\nexport {\n getIncrementalEngine,\n IncrementalEngine,\n parseClassesToNodes,\n resetIncrementalEngine,\n} from \"./incrementalEngine\"\n// ── Zero-config Tailwind config loader ───────────────────────────────────────\nexport {\n bootstrapZeroConfig,\n getContentPaths,\n invalidateConfigCache,\n isZeroConfig,\n loadTailwindConfig,\n} from \"./loadTailwindConfig\"\nexport type { RouteClassMap } from \"./routeCssCollector\"\n// ── Route CSS collector ────────────────────────────────────────────────────────\nexport {\n fileToRoute,\n getAllRoutes,\n getCollector,\n getCollectorSummary,\n getRouteClasses,\n registerFileClasses,\n registerGlobalClasses,\n resetCollector,\n} from \"./routeCssCollector\"\nexport type { ComponentEnv, RscAnalysis, StaticVariantUsage } from \"./rscAnalyzer\"\n// ── RSC-Aware ─────────────────────────────────────────────────────────────────\nexport {\n analyzeFile,\n analyzeVariantUsage,\n injectClientDirective,\n injectServerOnlyComment,\n resolveServerVariant,\n} from \"./rscAnalyzer\"\n// ── Safelist ──────────────────────────────────────────────────────────────────\nexport { generateSafelist, generateSafelistCss, loadSafelist } from \"./safelistGenerator\"\nexport type {\n BucketStats,\n ConflictWarning,\n StyleBucket,\n} from \"./styleBucketSystem\"\n// ── Style Bucket System ───────────────────────────────────────────────────────\nexport {\n BucketEngine,\n bucketSort,\n classifyNode,\n detectConflicts,\n getBucketEngine,\n resetBucketEngine,\n} from \"./styleBucketSystem\"\nexport type { CssGenerateResult, TailwindEngineOptions } from \"./tailwindEngine\"\n// ── Embedded Tailwind engine ──────────────────────────────────────────────────\nexport { generateAllRouteCss, generateCssForClasses } from \"./tailwindEngine\"\n// ── Detectors ─────────────────────────────────────────────────────────────────\nexport {\n hasInteractiveFeatures,\n hasTwUsage,\n isDynamic,\n isServerComponent,\n} from \"./twDetector\"\nexport { compileVariants } from \"./variantCompiler\"\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:/[\\]!.()+%]+$/\n\nfunction parseClasses(raw: string): string[] {\n return raw\n .split(/[\\n\\s]+/)\n .map((c) => c.trim())\n .filter((c) => c.length > 0 && VALID_CLASS_RE.test(c))\n}\n\nexport function extractAllClasses(source: string): string[] {\n const classes = new Set<string>()\n const add = (str: string) => {\n for (const c of parseClasses(str)) classes.add(c)\n }\n\n let m: RegExpExecArray | null\n\n // FIX #02: Use TEMPLATE_RE directly — no more .slice(0, -1) workaround\n // because trailing space in TEMPLATE_RE is now fixed in twDetector.ts\n const re1 = new RegExp(TEMPLATE_RE.source, \"g\")\n while ((m = re1.exec(source)) !== null) {\n add(m[3]) // group 3 = content (after adding server. group to TEMPLATE_RE)\n }\n\n // UPGRADE #4: Use proper AST parser for object configs\n const re2 = new RegExp(OBJECT_RE.source, \"g\")\n while ((m = re2.exec(source)) !== null) {\n const parsed = parseComponentConfig(m[3])\n if (parsed.base) add(parsed.base)\n for (const vMap of Object.values(parsed.variants)) {\n for (const cls of Object.values(vMap)) add(cls)\n }\n for (const compound of parsed.compounds) {\n if (compound.class) add(compound.class)\n }\n }\n\n const re3 = new RegExp(EXTEND_RE.source, \"g\")\n while ((m = re3.exec(source)) !== null) add(m[2])\n\n // className=\"...\" in JSX\n const classNameRe = /className\\s*=\\s*[\"']([^\"']+)[\"']/g\n while ((m = classNameRe.exec(source)) !== null) add(m[1])\n\n return Array.from(classes).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 — Dead Style Eliminator\n *\n * Build-time analysis yang scan component usage dan hapus variant + class\n * yang tidak pernah dipakai. Hasilnya: CSS output yang sangat kecil.\n *\n * Pipeline:\n * scan all .tsx/.ts files\n * ↓ extract component usage (JSX props)\n * ↓ compare dengan registered variants\n * ↓ mark unused variants as dead\n * ↓ remove from CSS output\n *\n * @example\n * const Button = tw.button({\n * base: \"px-4 py-2\",\n * variants: {\n * size: { sm: \"text-sm\", lg: \"text-lg\", xl: \"text-xl\" }, // xl never used!\n * intent: { primary: \"bg-blue-500\", danger: \"bg-red-500\" }\n * }\n * })\n *\n * // In codebase: only <Button size=\"sm\"> and <Button size=\"lg\"> appear\n * // Eliminator removes: size.xl → saves CSS\n *\n * Result:\n * Before: 3 size variants in CSS\n * After: 2 size variants in CSS (xl eliminated)\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface VariantUsage {\n /** Component name */\n component: string\n /** Which variant props were used with which values */\n usedValues: Record<string, Set<string>>\n /** Files where component is used */\n usedInFiles: string[]\n}\n\nexport interface EliminationReport {\n /** Total unused variant values found */\n unusedCount: number\n /** Estimated bytes saved */\n bytesSaved: number\n /** Details per component */\n components: Record<\n string,\n {\n usedVariants: Record<string, string[]>\n unusedVariants: Record<string, string[]>\n }\n >\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Step 1: Scan files for component usage\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Extract all JSX component usages from source.\n * Finds: <ComponentName prop=\"value\" /> patterns.\n */\nexport function extractComponentUsage(source: string): Record<string, Record<string, Set<string>>> {\n const usage: Record<string, Record<string, Set<string>>> = {}\n\n // Match JSX elements: <ComponentName ...props...>\n // Only match PascalCase (components, not HTML tags)\n const jsxRe = /<([A-Z][A-Za-z0-9]*)\\s([^>]*?)(?:\\/?>)/g\n let m: RegExpExecArray | null\n\n while ((m = jsxRe.exec(source)) !== null) {\n const compName = m[1]\n const propsStr = m[2]\n\n if (!usage[compName]) usage[compName] = {}\n\n // Extract static prop=\"value\" patterns\n const propRe = /(\\w+)=[\"']([^\"']+)[\"']/g\n let p: RegExpExecArray | null\n while ((p = propRe.exec(propsStr)) !== null) {\n const [, propName, propValue] = p\n // Skip non-variant props\n if ([\"className\", \"style\", \"id\", \"href\", \"src\", \"alt\", \"type\"].includes(propName)) continue\n\n if (!usage[compName][propName]) {\n usage[compName][propName] = new Set()\n }\n usage[compName][propName].add(propValue)\n }\n }\n\n return usage\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Step 2: Scan directory for all usages\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst SCAN_EXTENSIONS = [\".tsx\", \".ts\", \".jsx\", \".js\"]\nconst SKIP_DIRS = new Set([\"node_modules\", \".next\", \"dist\", \".git\", \"out\"])\n\nfunction scanFiles(dir: string): string[] {\n const files: string[] = []\n\n function walk(current: string) {\n if (!fs.existsSync(current)) return\n const entries = fs.readdirSync(current, { withFileTypes: true })\n for (const entry of entries) {\n if (SKIP_DIRS.has(entry.name)) continue\n const fullPath = path.join(current, entry.name)\n if (entry.isDirectory()) {\n walk(fullPath)\n } else if (SCAN_EXTENSIONS.some((ext) => entry.name.endsWith(ext))) {\n files.push(fullPath)\n }\n }\n }\n\n walk(dir)\n return files\n}\n\n/**\n * Scan entire project for component usage.\n *\n * @param dirs - Directories to scan (e.g. [\"src\"])\n * @param cwd - Project root\n */\nexport function scanProjectUsage(\n dirs: string[],\n cwd = process.cwd()\n): Record<string, Record<string, Set<string>>> {\n const combined: Record<string, Record<string, Set<string>>> = {}\n\n for (const dir of dirs) {\n const absDir = path.isAbsolute(dir) ? dir : path.resolve(cwd, dir)\n const files = scanFiles(absDir)\n\n for (const file of files) {\n try {\n const source = fs.readFileSync(file, \"utf-8\")\n const usage = extractComponentUsage(source)\n\n for (const [comp, props] of Object.entries(usage)) {\n if (!combined[comp]) combined[comp] = {}\n for (const [prop, values] of Object.entries(props)) {\n if (!combined[comp][prop]) combined[comp][prop] = new Set()\n values.forEach((v) => combined[comp][prop].add(v))\n }\n }\n } catch {\n // skip unreadable\n }\n }\n }\n\n return combined\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Step 3: Compare with registered variant configs\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface RegisteredComponent {\n name: string\n variants: Record<string, Record<string, string>> // { size: { sm: \"text-sm\", lg: \"text-lg\" } }\n}\n\n/**\n * Find unused variant values by comparing registered components with actual usage.\n */\nexport function findDeadVariants(\n registered: RegisteredComponent[],\n projectUsage: Record<string, Record<string, Set<string>>>\n): EliminationReport {\n const report: EliminationReport = {\n unusedCount: 0,\n bytesSaved: 0,\n components: {},\n }\n\n for (const component of registered) {\n const usage = projectUsage[component.name] ?? {}\n const usedVariants: Record<string, string[]> = {}\n const unusedVariants: Record<string, string[]> = {}\n\n for (const [variantKey, variantValues] of Object.entries(component.variants)) {\n usedVariants[variantKey] = []\n unusedVariants[variantKey] = []\n\n const usedValueSet = usage[variantKey] ?? new Set()\n\n for (const [valueName, classes] of Object.entries(variantValues)) {\n if (usedValueSet.has(valueName)) {\n usedVariants[variantKey].push(valueName)\n } else {\n unusedVariants[variantKey].push(valueName)\n report.unusedCount++\n // Rough estimate: avg 20 bytes per class, avg 3 classes per variant\n report.bytesSaved += classes.split(/\\s+/).length * 20\n }\n }\n }\n\n if (report.unusedCount > 0) {\n report.components[component.name] = { usedVariants, unusedVariants }\n }\n }\n\n return report\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Step 4: Eliminate dead CSS from compiled output\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Filter a CSS string to remove selectors for unused classes.\n *\n * @param css - Full CSS string\n * @param deadClasses - Set of class names to remove\n */\nexport function eliminateDeadCss(css: string, deadClasses: Set<string>): string {\n if (deadClasses.size === 0) return css\n\n const lines = css.split(\"\\n\")\n const kept: string[] = []\n let inBlock = false\n let removeBlock = false\n let depth = 0\n\n for (const line of lines) {\n if (!inBlock) {\n // Check if this selector matches a dead class\n const isDead = Array.from(deadClasses).some((cls) => {\n const escaped = cls.replace(/[:/[\\].!%]/g, \"\\\\$&\")\n return line.includes(`.${escaped}`) || line.includes(`.${cls}`)\n })\n\n if (isDead && line.includes(\"{\")) {\n removeBlock = true\n inBlock = true\n depth = 1\n continue\n } else if (line.includes(\"{\") && !line.trim().startsWith(\"@\")) {\n inBlock = true\n depth = 1\n removeBlock = false\n }\n } else {\n if (line.includes(\"{\")) depth++\n if (line.includes(\"}\")) {\n depth--\n if (depth <= 0) {\n inBlock = false\n if (removeBlock) {\n removeBlock = false\n continue // skip closing brace of dead block\n }\n }\n }\n if (removeBlock) continue\n }\n\n kept.push(line)\n }\n\n return kept.join(\"\\n\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS Performance Optimizer\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Merge duplicate CSS rules and deduplicate media queries.\n * Reduces final CSS size for atomic outputs.\n *\n * @example\n * optimizeCss(\".tw-a1{padding:16px} .tw-b1{padding:16px}\")\n * → \".tw-a1,.tw-b1{padding:16px}\"\n */\nexport function optimizeCss(css: string): string {\n // Parse rules into { declaration: selector[] }\n const ruleMap = new Map<string, Set<string>>()\n const _mediaRules = new Map<string, string[]>()\n const _others: string[] = []\n\n // Simple rule parser (handles single-line rules)\n const ruleRe = /^(\\.[\\w-]+)\\s*\\{([^}]+)\\}$/gm\n const mediaRe = /@media[^{]+\\{[\\s\\S]*?\\}\\s*\\}/g\n\n let m: RegExpExecArray | null\n let remaining = css\n\n // Extract @media blocks first (preserve order)\n const mediaBlocks: string[] = []\n remaining = remaining.replace(mediaRe, (block) => {\n mediaBlocks.push(block)\n return \"\"\n })\n\n // Process regular rules\n while ((m = ruleRe.exec(remaining)) !== null) {\n const selector = m[1].trim()\n const declaration = m[2].trim()\n\n if (!ruleMap.has(declaration)) {\n ruleMap.set(declaration, new Set())\n }\n ruleMap.get(declaration)!.add(selector)\n }\n\n // Build optimized CSS\n const lines: string[] = []\n\n for (const [declaration, selectors] of ruleMap) {\n lines.push(`${Array.from(selectors).join(\",\")} { ${declaration} }`)\n }\n\n // Re-append @media blocks\n lines.push(...mediaBlocks)\n\n return lines.join(\"\\n\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main: runElimination — full pipeline\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface EliminationOptions {\n dirs?: string[]\n cwd?: string\n registered?: RegisteredComponent[]\n inputCss: string\n verbose?: boolean\n}\n\n/**\n * Run full dead style elimination pipeline.\n *\n * @example\n * const result = await runElimination({\n * dirs: [\"src\"],\n * inputCss: fs.readFileSync(\"dist/styles.css\", \"utf-8\"),\n * registered: [...componentConfigs],\n * })\n * fs.writeFileSync(\"dist/styles.min.css\", result.css)\n * console.log(result.report)\n */\nexport function runElimination(opts: EliminationOptions): {\n css: string\n report: EliminationReport\n} {\n const { dirs = [\"src\"], cwd = process.cwd(), registered = [], inputCss, verbose = false } = opts\n\n // Step 1: Scan project\n const usage = scanProjectUsage(dirs, cwd)\n\n // Step 2: Find dead variants\n const report = findDeadVariants(registered, usage)\n\n // Step 3: Collect dead classes\n const deadClasses = new Set<string>()\n for (const [, { unusedVariants }] of Object.entries(report.components)) {\n for (const values of Object.values(unusedVariants)) {\n values.forEach((v) => deadClasses.add(v))\n }\n }\n\n // Step 4: Eliminate + optimize\n let css = eliminateDeadCss(inputCss, deadClasses)\n css = optimizeCss(css)\n\n if (verbose) {\n const saved = (report.bytesSaved / 1024).toFixed(1)\n console.log(`[tailwind-styled-v4] Dead style elimination:`)\n console.log(` Unused variants: ${report.unusedCount}`)\n console.log(` Estimated savings: ~${saved}KB`)\n\n for (const [comp, { unusedVariants }] of Object.entries(report.components)) {\n for (const [variant, values] of Object.entries(unusedVariants)) {\n if (values.length > 0) {\n console.log(` ${comp}.${variant}: ${values.join(\", \")} (unused)`)\n }\n }\n }\n }\n\n return { css, report }\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 crypto from \"node:crypto\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\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 * Pakai MD5 — cepat, tidak perlu kriptografi.\n */\nfunction hashFileContent(content: string): string {\n return crypto.createHash(\"md5\").update(content).digest(\"hex\").slice(0, 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 — 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 — 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-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 — 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 * 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 * Mode operasi:\n * \"jit\" → generate CSS saat file berubah (dev mode)\n * \"build\" → generate semua CSS di akhir build (production)\n * \"manual\" → tidak generate, hanya extract (default untuk kompatibilitas)\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: Tailwind v4 mengubah API internal — kita support keduanya.\n */\nexport async function generateCssForClasses(\n classes: string[],\n config?: Record<string, any>,\n cwd = process.cwd()\n): Promise<string> {\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: Tailwind v3 API\n try {\n return await generateViaTailwindV3(classes, twConfig)\n } catch {\n // not available\n }\n\n // Strategy 3: 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 * Tailwind v3 CSS generation (via tailwindcss package API)\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"]}