tailwind-styled-v4 5.0.9 → 5.0.10

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 (137) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/{analyzeWorkspace-DuJKh7Ty.d.mts → analyzeWorkspace-BS5O4rhC.d.mts} +47 -2
  3. package/dist/{analyzeWorkspace-Ct_NTAWt.d.ts → analyzeWorkspace-DDOQdzzI.d.ts} +47 -2
  4. package/dist/analyzer.d.mts +5 -3
  5. package/dist/analyzer.d.ts +5 -3
  6. package/dist/analyzer.js +563 -468
  7. package/dist/analyzer.js.map +1 -1
  8. package/dist/analyzer.mjs +562 -467
  9. package/dist/analyzer.mjs.map +1 -1
  10. package/dist/animate.d.mts +4 -7
  11. package/dist/animate.d.ts +4 -7
  12. package/dist/animate.js +171 -265
  13. package/dist/animate.js.map +1 -1
  14. package/dist/animate.mjs +165 -264
  15. package/dist/animate.mjs.map +1 -1
  16. package/dist/atomic.d.mts +22 -1
  17. package/dist/atomic.d.ts +22 -1
  18. package/dist/atomic.js +221 -165
  19. package/dist/atomic.js.map +1 -1
  20. package/dist/atomic.mjs +200 -165
  21. package/dist/atomic.mjs.map +1 -1
  22. package/dist/cli.d.mts +60 -1
  23. package/dist/cli.d.ts +60 -1
  24. package/dist/cli.js +1261 -1517
  25. package/dist/cli.js.map +1 -1
  26. package/dist/cli.mjs +1238 -1513
  27. package/dist/cli.mjs.map +1 -1
  28. package/dist/compiler.d.mts +38 -7
  29. package/dist/compiler.d.ts +38 -7
  30. package/dist/compiler.js +174 -197
  31. package/dist/compiler.js.map +1 -1
  32. package/dist/compiler.mjs +151 -194
  33. package/dist/compiler.mjs.map +1 -1
  34. package/dist/devtools.js +7 -31
  35. package/dist/devtools.js.map +1 -1
  36. package/dist/devtools.mjs +7 -31
  37. package/dist/devtools.mjs.map +1 -1
  38. package/dist/engine.d.mts +134 -63
  39. package/dist/engine.d.ts +134 -63
  40. package/dist/engine.js +2863 -2482
  41. package/dist/engine.js.map +1 -1
  42. package/dist/engine.mjs +2852 -2485
  43. package/dist/engine.mjs.map +1 -1
  44. package/dist/{index-eWAocnD2.d.mts → index-NDINUhLN.d.mts} +3 -1
  45. package/dist/{index-eWAocnD2.d.ts → index-NDINUhLN.d.ts} +3 -1
  46. package/dist/index.d.mts +45 -32
  47. package/dist/index.d.ts +45 -32
  48. package/dist/index.js +271 -158
  49. package/dist/index.js.map +1 -1
  50. package/dist/index.mjs +251 -158
  51. package/dist/index.mjs.map +1 -1
  52. package/dist/{liveTokenEngine-DSUk88P6.d.ts → liveTokenEngine-CN9ian1R.d.ts} +1 -1
  53. package/dist/{liveTokenEngine-CX5_0c4q.d.mts → liveTokenEngine-DKoWRtqH.d.mts} +1 -1
  54. package/dist/next.js +20 -39
  55. package/dist/next.js.map +1 -1
  56. package/dist/next.mjs +18 -37
  57. package/dist/next.mjs.map +1 -1
  58. package/dist/plugin-api.d.mts +8 -2
  59. package/dist/plugin-api.d.ts +8 -2
  60. package/dist/plugin-api.js +14 -2
  61. package/dist/plugin-api.js.map +1 -1
  62. package/dist/plugin-api.mjs +14 -3
  63. package/dist/plugin-api.mjs.map +1 -1
  64. package/dist/plugin-registry.js +51 -11
  65. package/dist/plugin-registry.js.map +1 -1
  66. package/dist/plugin-registry.mjs +51 -11
  67. package/dist/plugin-registry.mjs.map +1 -1
  68. package/dist/plugin.d.mts +5 -7
  69. package/dist/plugin.d.ts +5 -7
  70. package/dist/plugin.js +16 -15
  71. package/dist/plugin.js.map +1 -1
  72. package/dist/plugin.mjs +16 -16
  73. package/dist/plugin.mjs.map +1 -1
  74. package/dist/rspack.js +17 -38
  75. package/dist/rspack.js.map +1 -1
  76. package/dist/rspack.mjs +15 -36
  77. package/dist/rspack.mjs.map +1 -1
  78. package/dist/runtime.d.mts +2 -2
  79. package/dist/runtime.d.ts +2 -2
  80. package/dist/scanner.d.mts +10 -1
  81. package/dist/scanner.d.ts +10 -1
  82. package/dist/scanner.js +298 -124
  83. package/dist/scanner.js.map +1 -1
  84. package/dist/scanner.mjs +296 -124
  85. package/dist/scanner.mjs.map +1 -1
  86. package/dist/shared.d.mts +1 -1
  87. package/dist/shared.d.ts +1 -1
  88. package/dist/shared.js +104 -176
  89. package/dist/shared.js.map +1 -1
  90. package/dist/shared.mjs +85 -176
  91. package/dist/shared.mjs.map +1 -1
  92. package/dist/storybook-addon.d.mts +1 -1
  93. package/dist/storybook-addon.d.ts +1 -1
  94. package/dist/svelte.d.mts +1 -1
  95. package/dist/svelte.d.ts +1 -1
  96. package/dist/svelte.js +166 -3
  97. package/dist/svelte.js.map +1 -1
  98. package/dist/svelte.mjs +143 -1
  99. package/dist/svelte.mjs.map +1 -1
  100. package/dist/syntax.js +21 -21
  101. package/dist/syntax.js.map +1 -1
  102. package/dist/syntax.mjs +21 -21
  103. package/dist/syntax.mjs.map +1 -1
  104. package/dist/testing.js +9 -1
  105. package/dist/testing.js.map +1 -1
  106. package/dist/testing.mjs +9 -1
  107. package/dist/testing.mjs.map +1 -1
  108. package/dist/theme.d.mts +2 -2
  109. package/dist/theme.d.ts +2 -2
  110. package/dist/theme.js +40 -112
  111. package/dist/theme.js.map +1 -1
  112. package/dist/theme.mjs +37 -110
  113. package/dist/theme.mjs.map +1 -1
  114. package/dist/turbopackLoader.js +79 -124
  115. package/dist/turbopackLoader.js.map +1 -1
  116. package/dist/turbopackLoader.mjs +63 -122
  117. package/dist/turbopackLoader.mjs.map +1 -1
  118. package/dist/tw.js +1256 -1517
  119. package/dist/tw.js.map +1 -1
  120. package/dist/tw.mjs +1236 -1513
  121. package/dist/tw.mjs.map +1 -1
  122. package/dist/vite.js +1783 -823
  123. package/dist/vite.js.map +1 -1
  124. package/dist/vite.mjs +1767 -821
  125. package/dist/vite.mjs.map +1 -1
  126. package/dist/vue.d.mts +1 -1
  127. package/dist/vue.d.ts +1 -1
  128. package/dist/vue.js +165 -4
  129. package/dist/vue.js.map +1 -1
  130. package/dist/vue.mjs +141 -1
  131. package/dist/vue.mjs.map +1 -1
  132. package/dist/webpackLoader.js +65 -108
  133. package/dist/webpackLoader.js.map +1 -1
  134. package/dist/webpackLoader.mjs +45 -104
  135. package/dist/webpackLoader.mjs.map +1 -1
  136. package/native/tailwind-styled-native.node +0 -0
  137. package/package.json +22 -24
package/dist/tw.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../packages/infrastructure/cli/node_modules/commander/lib/error.js","../packages/infrastructure/cli/node_modules/commander/lib/argument.js","../packages/infrastructure/cli/node_modules/commander/lib/help.js","../packages/infrastructure/cli/node_modules/commander/lib/option.js","../packages/infrastructure/cli/node_modules/commander/lib/suggestSimilar.js","../packages/infrastructure/cli/node_modules/commander/lib/command.js","../packages/infrastructure/cli/node_modules/commander/index.js","../packages/infrastructure/cli/node_modules/commander/esm.mjs","../packages/infrastructure/cli/src/utils/errors.ts","../packages/domain/shared/src/esmHelpers.ts","../packages/domain/shared/src/native-resolution.ts","../packages/domain/shared/src/index.ts","../packages/domain/scanner/src/native-bridge.ts","../packages/domain/scanner/src/cache-native.ts","../packages/domain/scanner/src/schemas.ts","../packages/domain/scanner/src/index.ts","../packages/domain/analyzer/src/utils.ts","../packages/domain/analyzer/src/binding.ts","../packages/domain/analyzer/src/schemas.ts","../packages/domain/analyzer/src/semantic.ts","../packages/domain/analyzer/src/analyzeWorkspace.ts","../packages/domain/analyzer/src/classToCss.ts","../packages/domain/analyzer/src/index.ts","../packages/infrastructure/cli/src/utils/fs.ts","../node_modules/picocolors/picocolors.js","../packages/infrastructure/cli/src/utils/json.ts","../packages/infrastructure/cli/src/utils/output.ts","../packages/infrastructure/cli/src/utils/args.ts","../packages/infrastructure/cli/src/utils/paths.ts","../packages/infrastructure/cli/src/utils/runtime.ts","../packages/infrastructure/cli/src/createApp.ts","../packages/domain/compiler/src/nativeBridge.ts","../packages/infrastructure/cli/src/commands/program.ts","../packages/infrastructure/cli/src/utils/analyzer.ts","../packages/infrastructure/cli/src/analyze.ts","../packages/infrastructure/cli/src/extract.ts","../packages/infrastructure/cli/src/init.ts","../packages/infrastructure/cli/src/migrateWizard.ts","../packages/infrastructure/cli/src/migrate.ts","../packages/infrastructure/cli/src/scan.ts","../packages/infrastructure/cli/src/setup.ts","../packages/infrastructure/cli/src/commands/setup/patchers.ts","../packages/infrastructure/cli/src/commands/setup/prompt.ts","../packages/infrastructure/cli/src/commands/setup/workspace.ts","../packages/infrastructure/cli/src/utils/process.ts","../packages/infrastructure/cli/src/utils/logger.ts","../packages/infrastructure/cli/src/stats.ts","../packages/infrastructure/cli/src/commands/boundary.ts","../packages/infrastructure/cli/src/commands/create.ts","../packages/infrastructure/cli/src/commands/dashboard.ts","../packages/infrastructure/cli/src/commands/helpers.ts","../packages/infrastructure/cli/src/commands/deploy.ts","../packages/infrastructure/cli/src/commands/doctor.ts","../packages/infrastructure/cli/src/utils/doctorService.ts","../packages/infrastructure/cli/src/commands/misc.ts","../packages/infrastructure/cli/src/commands/plugin.ts","../packages/infrastructure/cli/src/preflight.ts","../packages/infrastructure/cli/src/commands/preflight.ts","../packages/infrastructure/cli/src/commands/registry.ts","../packages/infrastructure/cli/src/commands/scriptCommands.ts","../packages/infrastructure/cli/src/commands/storybook.ts","../packages/infrastructure/cli/src/commands/studio.ts","../packages/infrastructure/cli/src/commands/sync.ts","../packages/infrastructure/cli/src/commands/trace.ts","../packages/domain/compiler/src/index.ts","../packages/domain/engine/src/native-bridge.ts","../packages/domain/engine/src/bundleAnalyzer.ts","../packages/domain/engine/src/impactTracker.ts","../packages/domain/engine/src/ir.ts","../packages/domain/engine/src/reverseLookup.ts","../packages/infrastructure/cli/src/utils/traceService.ts","../packages/infrastructure/cli/src/utils/traceTargetService.ts","../packages/infrastructure/cli/src/generateTypes.ts","../packages/infrastructure/cli/src/commands/why.ts","../packages/infrastructure/cli/src/utils/whyService.ts","../packages/infrastructure/cli/src/index.ts"],"names":["exports","CommanderError","InvalidArgumentError","Argument","Help","cmd","Option","str","path","fs","process","Command","option","text","commander","getNodeModuleRef","isBrowser","nodeModuleRef","getNodePath","_nodePath","cwd","getNodeFs","_nodeFs","getNodeUrl","_nodeUrl","getRequire","_require","getDirname","scannerGetBinding","formatIssuePath","fileURLToPath","scanWorkspaceNative","log","init_src","formatIssues","parseWithSchema","init_schemas","z","pathExists","clackIsTTY","pc","clackNote","clackIntro","clackOutro","clackSpinner","parseNodeArgs","program","isCancel","select","require","createRequire","import_picocolors","hasSafelistSource","selected","writeLine","createCommand","fsp","check","DEFAULT_TAILWIND_CSS","pathToFileURL","formatCommand","script","commandArgs","rules","loadNativeBinding","main"],"mappings":"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","file":"tw.mjs","sourcesContent":["/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n /**\n * Constructs the CommanderError class\n * @param {number} exitCode suggested exit code which could be used with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n */\n constructor(exitCode, code, message) {\n super(message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n this.code = code;\n this.exitCode = exitCode;\n this.nestedError = undefined;\n }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n /**\n * Constructs the InvalidArgumentError class\n * @param {string} [message] explanation of why argument is invalid\n */\n constructor(message) {\n super(1, 'commander.invalidArgument', message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n","const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n /**\n * Initialize a new command argument with the given name and description.\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @param {string} name\n * @param {string} [description]\n */\n\n constructor(name, description) {\n this.description = description || '';\n this.variadic = false;\n this.parseArg = undefined;\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.argChoices = undefined;\n\n switch (name[0]) {\n case '<': // e.g. <required>\n this.required = true;\n this._name = name.slice(1, -1);\n break;\n case '[': // e.g. [optional]\n this.required = false;\n this._name = name.slice(1, -1);\n break;\n default:\n this.required = true;\n this._name = name;\n break;\n }\n\n if (this._name.length > 3 && this._name.slice(-3) === '...') {\n this.variadic = true;\n this._name = this._name.slice(0, -3);\n }\n }\n\n /**\n * Return argument name.\n *\n * @return {string}\n */\n\n name() {\n return this._name;\n }\n\n /**\n * @package\n */\n\n _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Argument}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI command arguments into argument values.\n *\n * @param {Function} [fn]\n * @return {Argument}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Only allow argument value to be one of choices.\n *\n * @param {string[]} values\n * @return {Argument}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._concatValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Make argument required.\n *\n * @returns {Argument}\n */\n argRequired() {\n this.required = true;\n return this;\n }\n\n /**\n * Make argument optional.\n *\n * @returns {Argument}\n */\n argOptional() {\n this.required = false;\n return this;\n }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n","const { humanReadableArgName } = require('./argument.js');\n\n/**\n * TypeScript import types for JSDoc, used by Visual Studio Code IntelliSense and `npm run typescript-checkJS`\n * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types\n * @typedef { import(\"./argument.js\").Argument } Argument\n * @typedef { import(\"./command.js\").Command } Command\n * @typedef { import(\"./option.js\").Option } Option\n */\n\n// Although this is a class, methods are static in style to allow override using subclass or just functions.\nclass Help {\n constructor() {\n this.helpWidth = undefined;\n this.sortSubcommands = false;\n this.sortOptions = false;\n this.showGlobalOptions = false;\n }\n\n /**\n * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.\n *\n * @param {Command} cmd\n * @returns {Command[]}\n */\n\n visibleCommands(cmd) {\n const visibleCommands = cmd.commands.filter((cmd) => !cmd._hidden);\n const helpCommand = cmd._getHelpCommand();\n if (helpCommand && !helpCommand._hidden) {\n visibleCommands.push(helpCommand);\n }\n if (this.sortSubcommands) {\n visibleCommands.sort((a, b) => {\n // @ts-ignore: because overloaded return type\n return a.name().localeCompare(b.name());\n });\n }\n return visibleCommands;\n }\n\n /**\n * Compare options for sort.\n *\n * @param {Option} a\n * @param {Option} b\n * @returns {number}\n */\n compareOptions(a, b) {\n const getSortKey = (option) => {\n // WYSIWYG for order displayed in help. Short used for comparison if present. No special handling for negated.\n return option.short\n ? option.short.replace(/^-/, '')\n : option.long.replace(/^--/, '');\n };\n return getSortKey(a).localeCompare(getSortKey(b));\n }\n\n /**\n * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleOptions(cmd) {\n const visibleOptions = cmd.options.filter((option) => !option.hidden);\n // Built-in help option.\n const helpOption = cmd._getHelpOption();\n if (helpOption && !helpOption.hidden) {\n // Automatically hide conflicting flags. Bit dubious but a historical behaviour that is convenient for single-command programs.\n const removeShort = helpOption.short && cmd._findOption(helpOption.short);\n const removeLong = helpOption.long && cmd._findOption(helpOption.long);\n if (!removeShort && !removeLong) {\n visibleOptions.push(helpOption); // no changes needed\n } else if (helpOption.long && !removeLong) {\n visibleOptions.push(\n cmd.createOption(helpOption.long, helpOption.description),\n );\n } else if (helpOption.short && !removeShort) {\n visibleOptions.push(\n cmd.createOption(helpOption.short, helpOption.description),\n );\n }\n }\n if (this.sortOptions) {\n visibleOptions.sort(this.compareOptions);\n }\n return visibleOptions;\n }\n\n /**\n * Get an array of the visible global options. (Not including help.)\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleGlobalOptions(cmd) {\n if (!this.showGlobalOptions) return [];\n\n const globalOptions = [];\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n const visibleOptions = ancestorCmd.options.filter(\n (option) => !option.hidden,\n );\n globalOptions.push(...visibleOptions);\n }\n if (this.sortOptions) {\n globalOptions.sort(this.compareOptions);\n }\n return globalOptions;\n }\n\n /**\n * Get an array of the arguments if any have a description.\n *\n * @param {Command} cmd\n * @returns {Argument[]}\n */\n\n visibleArguments(cmd) {\n // Side effect! Apply the legacy descriptions before the arguments are displayed.\n if (cmd._argsDescription) {\n cmd.registeredArguments.forEach((argument) => {\n argument.description =\n argument.description || cmd._argsDescription[argument.name()] || '';\n });\n }\n\n // If there are any arguments with a description then return all the arguments.\n if (cmd.registeredArguments.find((argument) => argument.description)) {\n return cmd.registeredArguments;\n }\n return [];\n }\n\n /**\n * Get the command term to show in the list of subcommands.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandTerm(cmd) {\n // Legacy. Ignores custom usage string, and nested commands.\n const args = cmd.registeredArguments\n .map((arg) => humanReadableArgName(arg))\n .join(' ');\n return (\n cmd._name +\n (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') +\n (cmd.options.length ? ' [options]' : '') + // simplistic check for non-help option\n (args ? ' ' + args : '')\n );\n }\n\n /**\n * Get the option term to show in the list of options.\n *\n * @param {Option} option\n * @returns {string}\n */\n\n optionTerm(option) {\n return option.flags;\n }\n\n /**\n * Get the argument term to show in the list of arguments.\n *\n * @param {Argument} argument\n * @returns {string}\n */\n\n argumentTerm(argument) {\n return argument.name();\n }\n\n /**\n * Get the longest command term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestSubcommandTermLength(cmd, helper) {\n return helper.visibleCommands(cmd).reduce((max, command) => {\n return Math.max(max, helper.subcommandTerm(command).length);\n }, 0);\n }\n\n /**\n * Get the longest option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestOptionTermLength(cmd, helper) {\n return helper.visibleOptions(cmd).reduce((max, option) => {\n return Math.max(max, helper.optionTerm(option).length);\n }, 0);\n }\n\n /**\n * Get the longest global option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestGlobalOptionTermLength(cmd, helper) {\n return helper.visibleGlobalOptions(cmd).reduce((max, option) => {\n return Math.max(max, helper.optionTerm(option).length);\n }, 0);\n }\n\n /**\n * Get the longest argument term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestArgumentTermLength(cmd, helper) {\n return helper.visibleArguments(cmd).reduce((max, argument) => {\n return Math.max(max, helper.argumentTerm(argument).length);\n }, 0);\n }\n\n /**\n * Get the command usage to be displayed at the top of the built-in help.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandUsage(cmd) {\n // Usage\n let cmdName = cmd._name;\n if (cmd._aliases[0]) {\n cmdName = cmdName + '|' + cmd._aliases[0];\n }\n let ancestorCmdNames = '';\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n ancestorCmdNames = ancestorCmd.name() + ' ' + ancestorCmdNames;\n }\n return ancestorCmdNames + cmdName + ' ' + cmd.usage();\n }\n\n /**\n * Get the description for the command.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.description();\n }\n\n /**\n * Get the subcommand summary to show in the list of subcommands.\n * (Fallback to description for backwards compatibility.)\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.summary() || cmd.description();\n }\n\n /**\n * Get the option description to show in the list of options.\n *\n * @param {Option} option\n * @return {string}\n */\n\n optionDescription(option) {\n const extraInfo = [];\n\n if (option.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (option.defaultValue !== undefined) {\n // default for boolean and negated more for programmer than end user,\n // but show true/false for boolean option as may be for hand-rolled env or config processing.\n const showDefault =\n option.required ||\n option.optional ||\n (option.isBoolean() && typeof option.defaultValue === 'boolean');\n if (showDefault) {\n extraInfo.push(\n `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`,\n );\n }\n }\n // preset for boolean and negated are more for programmer than end user\n if (option.presetArg !== undefined && option.optional) {\n extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);\n }\n if (option.envVar !== undefined) {\n extraInfo.push(`env: ${option.envVar}`);\n }\n if (extraInfo.length > 0) {\n return `${option.description} (${extraInfo.join(', ')})`;\n }\n\n return option.description;\n }\n\n /**\n * Get the argument description to show in the list of arguments.\n *\n * @param {Argument} argument\n * @return {string}\n */\n\n argumentDescription(argument) {\n const extraInfo = [];\n if (argument.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (argument.defaultValue !== undefined) {\n extraInfo.push(\n `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n );\n }\n if (extraInfo.length > 0) {\n const extraDescripton = `(${extraInfo.join(', ')})`;\n if (argument.description) {\n return `${argument.description} ${extraDescripton}`;\n }\n return extraDescripton;\n }\n return argument.description;\n }\n\n /**\n * Generate the built-in help text.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {string}\n */\n\n formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term, description) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.wrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`Usage: ${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([\n helper.wrap(commandDescription, helpWidth, 0),\n '',\n ]);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat(['Arguments:', formatList(argumentList), '']);\n }\n\n // Options\n const optionList = helper.visibleOptions(cmd).map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat(['Options:', formatList(optionList), '']);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = helper\n .visibleGlobalOptions(cmd)\n .map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n 'Global Options:',\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat(['Commands:', formatList(commandList), '']);\n }\n\n return output.join('\\n');\n }\n\n /**\n * Calculate the pad width from the maximum term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n padWidth(cmd, helper) {\n return Math.max(\n helper.longestOptionTermLength(cmd, helper),\n helper.longestGlobalOptionTermLength(cmd, helper),\n helper.longestSubcommandTermLength(cmd, helper),\n helper.longestArgumentTermLength(cmd, helper),\n );\n }\n\n /**\n * Wrap the given string to width characters per line, with lines after the first indented.\n * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted.\n *\n * @param {string} str\n * @param {number} width\n * @param {number} indent\n * @param {number} [minColumnWidth=40]\n * @return {string}\n *\n */\n\n wrap(str, width, indent, minColumnWidth = 40) {\n // Full \\s characters, minus the linefeeds.\n const indents =\n ' \\\\f\\\\t\\\\v\\u00a0\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff';\n // Detect manually wrapped and indented strings by searching for line break followed by spaces.\n const manualIndent = new RegExp(`[\\\\n][${indents}]+`);\n if (str.match(manualIndent)) return str;\n // Do not wrap if not enough room for a wrapped column of text (as could end up with a word per line).\n const columnWidth = width - indent;\n if (columnWidth < minColumnWidth) return str;\n\n const leadingStr = str.slice(0, indent);\n const columnText = str.slice(indent).replace('\\r\\n', '\\n');\n const indentString = ' '.repeat(indent);\n const zeroWidthSpace = '\\u200B';\n const breaks = `\\\\s${zeroWidthSpace}`;\n // Match line end (so empty lines don't collapse),\n // or as much text as will fit in column, or excess text up to first break.\n const regex = new RegExp(\n `\\n|.{1,${columnWidth - 1}}([${breaks}]|$)|[^${breaks}]+?([${breaks}]|$)`,\n 'g',\n );\n const lines = columnText.match(regex) || [];\n return (\n leadingStr +\n lines\n .map((line, i) => {\n if (line === '\\n') return ''; // preserve empty lines\n return (i > 0 ? indentString : '') + line.trimEnd();\n })\n .join('\\n')\n );\n }\n}\n\nexports.Help = Help;\n","const { InvalidArgumentError } = require('./error.js');\n\nclass Option {\n /**\n * Initialize a new `Option` with the given `flags` and `description`.\n *\n * @param {string} flags\n * @param {string} [description]\n */\n\n constructor(flags, description) {\n this.flags = flags;\n this.description = description || '';\n\n this.required = flags.includes('<'); // A value must be supplied when the option is specified.\n this.optional = flags.includes('['); // A value is optional when the option is specified.\n // variadic test ignores <value,...> et al which might be used to describe custom splitting of single argument\n this.variadic = /\\w\\.\\.\\.[>\\]]$/.test(flags); // The option can take multiple values.\n this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line.\n const optionFlags = splitOptionFlags(flags);\n this.short = optionFlags.shortFlag;\n this.long = optionFlags.longFlag;\n this.negate = false;\n if (this.long) {\n this.negate = this.long.startsWith('--no-');\n }\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.presetArg = undefined;\n this.envVar = undefined;\n this.parseArg = undefined;\n this.hidden = false;\n this.argChoices = undefined;\n this.conflictsWith = [];\n this.implied = undefined;\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Option}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n * The custom processing (parseArg) is called.\n *\n * @example\n * new Option('--color').default('GREYSCALE').preset('RGB');\n * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n *\n * @param {*} arg\n * @return {Option}\n */\n\n preset(arg) {\n this.presetArg = arg;\n return this;\n }\n\n /**\n * Add option name(s) that conflict with this option.\n * An error will be displayed if conflicting options are found during parsing.\n *\n * @example\n * new Option('--rgb').conflicts('cmyk');\n * new Option('--js').conflicts(['ts', 'jsx']);\n *\n * @param {(string | string[])} names\n * @return {Option}\n */\n\n conflicts(names) {\n this.conflictsWith = this.conflictsWith.concat(names);\n return this;\n }\n\n /**\n * Specify implied option values for when this option is set and the implied options are not.\n *\n * The custom processing (parseArg) is not called on the implied values.\n *\n * @example\n * program\n * .addOption(new Option('--log', 'write logging information to file'))\n * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n *\n * @param {object} impliedOptionValues\n * @return {Option}\n */\n implies(impliedOptionValues) {\n let newImplied = impliedOptionValues;\n if (typeof impliedOptionValues === 'string') {\n // string is not documented, but easy mistake and we can do what user probably intended.\n newImplied = { [impliedOptionValues]: true };\n }\n this.implied = Object.assign(this.implied || {}, newImplied);\n return this;\n }\n\n /**\n * Set environment variable to check for option value.\n *\n * An environment variable is only used if when processed the current option value is\n * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n *\n * @param {string} name\n * @return {Option}\n */\n\n env(name) {\n this.envVar = name;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI option arguments into option values.\n *\n * @param {Function} [fn]\n * @return {Option}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Whether the option is mandatory and must have a value after parsing.\n *\n * @param {boolean} [mandatory=true]\n * @return {Option}\n */\n\n makeOptionMandatory(mandatory = true) {\n this.mandatory = !!mandatory;\n return this;\n }\n\n /**\n * Hide option in help.\n *\n * @param {boolean} [hide=true]\n * @return {Option}\n */\n\n hideHelp(hide = true) {\n this.hidden = !!hide;\n return this;\n }\n\n /**\n * @package\n */\n\n _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\n }\n\n /**\n * Only allow option value to be one of choices.\n *\n * @param {string[]} values\n * @return {Option}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._concatValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Return option name.\n *\n * @return {string}\n */\n\n name() {\n if (this.long) {\n return this.long.replace(/^--/, '');\n }\n return this.short.replace(/^-/, '');\n }\n\n /**\n * Return option name, in a camelcase format that can be used\n * as a object attribute key.\n *\n * @return {string}\n */\n\n attributeName() {\n return camelcase(this.name().replace(/^no-/, ''));\n }\n\n /**\n * Check if `arg` matches the short or long flag.\n *\n * @param {string} arg\n * @return {boolean}\n * @package\n */\n\n is(arg) {\n return this.short === arg || this.long === arg;\n }\n\n /**\n * Return whether a boolean option.\n *\n * Options are one of boolean, negated, required argument, or optional argument.\n *\n * @return {boolean}\n * @package\n */\n\n isBoolean() {\n return !this.required && !this.optional && !this.negate;\n }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n /**\n * @param {Option[]} options\n */\n constructor(options) {\n this.positiveOptions = new Map();\n this.negativeOptions = new Map();\n this.dualOptions = new Set();\n options.forEach((option) => {\n if (option.negate) {\n this.negativeOptions.set(option.attributeName(), option);\n } else {\n this.positiveOptions.set(option.attributeName(), option);\n }\n });\n this.negativeOptions.forEach((value, key) => {\n if (this.positiveOptions.has(key)) {\n this.dualOptions.add(key);\n }\n });\n }\n\n /**\n * Did the value come from the option, and not from possible matching dual option?\n *\n * @param {*} value\n * @param {Option} option\n * @returns {boolean}\n */\n valueFromOption(value, option) {\n const optionKey = option.attributeName();\n if (!this.dualOptions.has(optionKey)) return true;\n\n // Use the value to deduce if (probably) came from the option.\n const preset = this.negativeOptions.get(optionKey).presetArg;\n const negativeValue = preset !== undefined ? preset : false;\n return option.negate === (negativeValue === value);\n }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n return str.split('-').reduce((str, word) => {\n return str + word[0].toUpperCase() + word.slice(1);\n });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n let shortFlag;\n let longFlag;\n // Use original very loose parsing to maintain backwards compatibility for now,\n // which allowed for example unintended `-sw, --short-word` [sic].\n const flagParts = flags.split(/[ |,]+/);\n if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1]))\n shortFlag = flagParts.shift();\n longFlag = flagParts.shift();\n // Add support for lone short flag without significantly changing parsing!\n if (!shortFlag && /^-[^-]$/.test(longFlag)) {\n shortFlag = longFlag;\n longFlag = undefined;\n }\n return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n","const maxDistance = 3;\n\nfunction editDistance(a, b) {\n // https://en.wikipedia.org/wiki/Damerau–Levenshtein_distance\n // Calculating optimal string alignment distance, no substring is edited more than once.\n // (Simple implementation.)\n\n // Quick early exit, return worst case.\n if (Math.abs(a.length - b.length) > maxDistance)\n return Math.max(a.length, b.length);\n\n // distance between prefix substrings of a and b\n const d = [];\n\n // pure deletions turn a into empty string\n for (let i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n // pure insertions turn empty string into b\n for (let j = 0; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n // fill matrix\n for (let j = 1; j <= b.length; j++) {\n for (let i = 1; i <= a.length; i++) {\n let cost = 1;\n if (a[i - 1] === b[j - 1]) {\n cost = 0;\n } else {\n cost = 1;\n }\n d[i][j] = Math.min(\n d[i - 1][j] + 1, // deletion\n d[i][j - 1] + 1, // insertion\n d[i - 1][j - 1] + cost, // substitution\n );\n // transposition\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n }\n }\n }\n\n return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n if (!candidates || candidates.length === 0) return '';\n // remove possible duplicates\n candidates = Array.from(new Set(candidates));\n\n const searchingOptions = word.startsWith('--');\n if (searchingOptions) {\n word = word.slice(2);\n candidates = candidates.map((candidate) => candidate.slice(2));\n }\n\n let similar = [];\n let bestDistance = maxDistance;\n const minSimilarity = 0.4;\n candidates.forEach((candidate) => {\n if (candidate.length <= 1) return; // no one character guesses\n\n const distance = editDistance(word, candidate);\n const length = Math.max(word.length, candidate.length);\n const similarity = (length - distance) / length;\n if (similarity > minSimilarity) {\n if (distance < bestDistance) {\n // better edit distance, throw away previous worse matches\n bestDistance = distance;\n similar = [candidate];\n } else if (distance === bestDistance) {\n similar.push(candidate);\n }\n }\n });\n\n similar.sort((a, b) => a.localeCompare(b));\n if (searchingOptions) {\n similar = similar.map((candidate) => `--${candidate}`);\n }\n\n if (similar.length > 1) {\n return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n }\n if (similar.length === 1) {\n return `\\n(Did you mean ${similar[0]}?)`;\n }\n return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n","const EventEmitter = require('node:events').EventEmitter;\nconst childProcess = require('node:child_process');\nconst path = require('node:path');\nconst fs = require('node:fs');\nconst process = require('node:process');\n\nconst { Argument, humanReadableArgName } = require('./argument.js');\nconst { CommanderError } = require('./error.js');\nconst { Help } = require('./help.js');\nconst { Option, DualOptions } = require('./option.js');\nconst { suggestSimilar } = require('./suggestSimilar');\n\nclass Command extends EventEmitter {\n /**\n * Initialize a new `Command`.\n *\n * @param {string} [name]\n */\n\n constructor(name) {\n super();\n /** @type {Command[]} */\n this.commands = [];\n /** @type {Option[]} */\n this.options = [];\n this.parent = null;\n this._allowUnknownOption = false;\n this._allowExcessArguments = true;\n /** @type {Argument[]} */\n this.registeredArguments = [];\n this._args = this.registeredArguments; // deprecated old name\n /** @type {string[]} */\n this.args = []; // cli args with options removed\n this.rawArgs = [];\n this.processedArgs = []; // like .args but after custom processing and collecting variadic\n this._scriptPath = null;\n this._name = name || '';\n this._optionValues = {};\n this._optionValueSources = {}; // default, env, cli etc\n this._storeOptionsAsProperties = false;\n this._actionHandler = null;\n this._executableHandler = false;\n this._executableFile = null; // custom name for executable\n this._executableDir = null; // custom search directory for subcommands\n this._defaultCommandName = null;\n this._exitCallback = null;\n this._aliases = [];\n this._combineFlagAndOptionalValue = true;\n this._description = '';\n this._summary = '';\n this._argsDescription = undefined; // legacy\n this._enablePositionalOptions = false;\n this._passThroughOptions = false;\n this._lifeCycleHooks = {}; // a hash of arrays\n /** @type {(boolean | string)} */\n this._showHelpAfterError = false;\n this._showSuggestionAfterError = true;\n\n // see .configureOutput() for docs\n this._outputConfiguration = {\n writeOut: (str) => process.stdout.write(str),\n writeErr: (str) => process.stderr.write(str),\n getOutHelpWidth: () =>\n process.stdout.isTTY ? process.stdout.columns : undefined,\n getErrHelpWidth: () =>\n process.stderr.isTTY ? process.stderr.columns : undefined,\n outputError: (str, write) => write(str),\n };\n\n this._hidden = false;\n /** @type {(Option | null | undefined)} */\n this._helpOption = undefined; // Lazy created on demand. May be null if help option is disabled.\n this._addImplicitHelpCommand = undefined; // undecided whether true or false yet, not inherited\n /** @type {Command} */\n this._helpCommand = undefined; // lazy initialised, inherited\n this._helpConfiguration = {};\n }\n\n /**\n * Copy settings that are useful to have in common across root command and subcommands.\n *\n * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n *\n * @param {Command} sourceCommand\n * @return {Command} `this` command for chaining\n */\n copyInheritedSettings(sourceCommand) {\n this._outputConfiguration = sourceCommand._outputConfiguration;\n this._helpOption = sourceCommand._helpOption;\n this._helpCommand = sourceCommand._helpCommand;\n this._helpConfiguration = sourceCommand._helpConfiguration;\n this._exitCallback = sourceCommand._exitCallback;\n this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n this._combineFlagAndOptionalValue =\n sourceCommand._combineFlagAndOptionalValue;\n this._allowExcessArguments = sourceCommand._allowExcessArguments;\n this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n this._showHelpAfterError = sourceCommand._showHelpAfterError;\n this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n return this;\n }\n\n /**\n * @returns {Command[]}\n * @private\n */\n\n _getCommandAndAncestors() {\n const result = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n for (let command = this; command; command = command.parent) {\n result.push(command);\n }\n return result;\n }\n\n /**\n * Define a command.\n *\n * There are two styles of command: pay attention to where to put the description.\n *\n * @example\n * // Command implemented using action handler (description is supplied separately to `.command`)\n * program\n * .command('clone <source> [destination]')\n * .description('clone a repository into a newly created directory')\n * .action((source, destination) => {\n * console.log('clone command called');\n * });\n *\n * // Command implemented using separate executable file (description is second parameter to `.command`)\n * program\n * .command('start <service>', 'start named service')\n * .command('stop [service]', 'stop named service, or all if no name supplied');\n *\n * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n * @param {object} [execOpts] - configuration options (for executable)\n * @return {Command} returns new command for action handler, or `this` for executable command\n */\n\n command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n let desc = actionOptsOrExecDesc;\n let opts = execOpts;\n if (typeof desc === 'object' && desc !== null) {\n opts = desc;\n desc = null;\n }\n opts = opts || {};\n const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n const cmd = this.createCommand(name);\n if (desc) {\n cmd.description(desc);\n cmd._executableHandler = true;\n }\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n if (args) cmd.arguments(args);\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd.copyInheritedSettings(this);\n\n if (desc) return this;\n return cmd;\n }\n\n /**\n * Factory routine to create a new unattached command.\n *\n * See .command() for creating an attached subcommand, which uses this routine to\n * create the command. You can override createCommand to customise subcommands.\n *\n * @param {string} [name]\n * @return {Command} new command\n */\n\n createCommand(name) {\n return new Command(name);\n }\n\n /**\n * You can customise the help with a subclass of Help by overriding createHelp,\n * or by overriding Help properties using configureHelp().\n *\n * @return {Help}\n */\n\n createHelp() {\n return Object.assign(new Help(), this.configureHelp());\n }\n\n /**\n * You can customise the help by overriding Help properties using configureHelp(),\n * or with a subclass of Help by overriding createHelp().\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureHelp(configuration) {\n if (configuration === undefined) return this._helpConfiguration;\n\n this._helpConfiguration = configuration;\n return this;\n }\n\n /**\n * The default output goes to stdout and stderr. You can customise this for special\n * applications. You can also customise the display of errors by overriding outputError.\n *\n * The configuration properties are all functions:\n *\n * // functions to change where being written, stdout and stderr\n * writeOut(str)\n * writeErr(str)\n * // matching functions to specify width for wrapping help\n * getOutHelpWidth()\n * getErrHelpWidth()\n * // functions based on what is being written out\n * outputError(str, write) // used for displaying errors, and not used for displaying help\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureOutput(configuration) {\n if (configuration === undefined) return this._outputConfiguration;\n\n Object.assign(this._outputConfiguration, configuration);\n return this;\n }\n\n /**\n * Display the help or a custom message after an error occurs.\n *\n * @param {(boolean|string)} [displayHelp]\n * @return {Command} `this` command for chaining\n */\n showHelpAfterError(displayHelp = true) {\n if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n this._showHelpAfterError = displayHelp;\n return this;\n }\n\n /**\n * Display suggestion of similar commands for unknown commands, or options for unknown options.\n *\n * @param {boolean} [displaySuggestion]\n * @return {Command} `this` command for chaining\n */\n showSuggestionAfterError(displaySuggestion = true) {\n this._showSuggestionAfterError = !!displaySuggestion;\n return this;\n }\n\n /**\n * Add a prepared subcommand.\n *\n * See .command() for creating an attached subcommand which inherits settings from its parent.\n *\n * @param {Command} cmd - new subcommand\n * @param {object} [opts] - configuration options\n * @return {Command} `this` command for chaining\n */\n\n addCommand(cmd, opts) {\n if (!cmd._name) {\n throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n }\n\n opts = opts || {};\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd._checkForBrokenPassThrough();\n\n return this;\n }\n\n /**\n * Factory routine to create a new unattached argument.\n *\n * See .argument() for creating an attached argument, which uses this routine to\n * create the argument. You can override createArgument to return a custom argument.\n *\n * @param {string} name\n * @param {string} [description]\n * @return {Argument} new argument\n */\n\n createArgument(name, description) {\n return new Argument(name, description);\n }\n\n /**\n * Define argument syntax for command.\n *\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @example\n * program.argument('<input-file>');\n * program.argument('[output-file]');\n *\n * @param {string} name\n * @param {string} [description]\n * @param {(Function|*)} [fn] - custom argument processing function\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n argument(name, description, fn, defaultValue) {\n const argument = this.createArgument(name, description);\n if (typeof fn === 'function') {\n argument.default(defaultValue).argParser(fn);\n } else {\n argument.default(fn);\n }\n this.addArgument(argument);\n return this;\n }\n\n /**\n * Define argument syntax for command, adding multiple at once (without descriptions).\n *\n * See also .argument().\n *\n * @example\n * program.arguments('<cmd> [env]');\n *\n * @param {string} names\n * @return {Command} `this` command for chaining\n */\n\n arguments(names) {\n names\n .trim()\n .split(/ +/)\n .forEach((detail) => {\n this.argument(detail);\n });\n return this;\n }\n\n /**\n * Define argument syntax for command, adding a prepared argument.\n *\n * @param {Argument} argument\n * @return {Command} `this` command for chaining\n */\n addArgument(argument) {\n const previousArgument = this.registeredArguments.slice(-1)[0];\n if (previousArgument && previousArgument.variadic) {\n throw new Error(\n `only the last argument can be variadic '${previousArgument.name()}'`,\n );\n }\n if (\n argument.required &&\n argument.defaultValue !== undefined &&\n argument.parseArg === undefined\n ) {\n throw new Error(\n `a default value for a required argument is never used: '${argument.name()}'`,\n );\n }\n this.registeredArguments.push(argument);\n return this;\n }\n\n /**\n * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n *\n * @example\n * program.helpCommand('help [cmd]');\n * program.helpCommand('help [cmd]', 'show help');\n * program.helpCommand(false); // suppress default help command\n * program.helpCommand(true); // add help command even if no subcommands\n *\n * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n * @param {string} [description] - custom description\n * @return {Command} `this` command for chaining\n */\n\n helpCommand(enableOrNameAndArgs, description) {\n if (typeof enableOrNameAndArgs === 'boolean') {\n this._addImplicitHelpCommand = enableOrNameAndArgs;\n return this;\n }\n\n enableOrNameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n const [, helpName, helpArgs] = enableOrNameAndArgs.match(/([^ ]+) *(.*)/);\n const helpDescription = description ?? 'display help for command';\n\n const helpCommand = this.createCommand(helpName);\n helpCommand.helpOption(false);\n if (helpArgs) helpCommand.arguments(helpArgs);\n if (helpDescription) helpCommand.description(helpDescription);\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n\n return this;\n }\n\n /**\n * Add prepared custom help command.\n *\n * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n * @return {Command} `this` command for chaining\n */\n addHelpCommand(helpCommand, deprecatedDescription) {\n // If not passed an object, call through to helpCommand for backwards compatibility,\n // as addHelpCommand was originally used like helpCommand is now.\n if (typeof helpCommand !== 'object') {\n this.helpCommand(helpCommand, deprecatedDescription);\n return this;\n }\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n return this;\n }\n\n /**\n * Lazy create help command.\n *\n * @return {(Command|null)}\n * @package\n */\n _getHelpCommand() {\n const hasImplicitHelpCommand =\n this._addImplicitHelpCommand ??\n (this.commands.length &&\n !this._actionHandler &&\n !this._findCommand('help'));\n\n if (hasImplicitHelpCommand) {\n if (this._helpCommand === undefined) {\n this.helpCommand(undefined, undefined); // use default name and description\n }\n return this._helpCommand;\n }\n return null;\n }\n\n /**\n * Add hook for life cycle event.\n *\n * @param {string} event\n * @param {Function} listener\n * @return {Command} `this` command for chaining\n */\n\n hook(event, listener) {\n const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n if (!allowedValues.includes(event)) {\n throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n if (this._lifeCycleHooks[event]) {\n this._lifeCycleHooks[event].push(listener);\n } else {\n this._lifeCycleHooks[event] = [listener];\n }\n return this;\n }\n\n /**\n * Register callback to use as replacement for calling process.exit.\n *\n * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n * @return {Command} `this` command for chaining\n */\n\n exitOverride(fn) {\n if (fn) {\n this._exitCallback = fn;\n } else {\n this._exitCallback = (err) => {\n if (err.code !== 'commander.executeSubCommandAsync') {\n throw err;\n } else {\n // Async callback from spawn events, not useful to throw.\n }\n };\n }\n return this;\n }\n\n /**\n * Call process.exit, and _exitCallback if defined.\n *\n * @param {number} exitCode exit code for using with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n * @return never\n * @private\n */\n\n _exit(exitCode, code, message) {\n if (this._exitCallback) {\n this._exitCallback(new CommanderError(exitCode, code, message));\n // Expecting this line is not reached.\n }\n process.exit(exitCode);\n }\n\n /**\n * Register callback `fn` for the command.\n *\n * @example\n * program\n * .command('serve')\n * .description('start service')\n * .action(function() {\n * // do work here\n * });\n *\n * @param {Function} fn\n * @return {Command} `this` command for chaining\n */\n\n action(fn) {\n const listener = (args) => {\n // The .action callback takes an extra parameter which is the command or options.\n const expectedArgsCount = this.registeredArguments.length;\n const actionArgs = args.slice(0, expectedArgsCount);\n if (this._storeOptionsAsProperties) {\n actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n } else {\n actionArgs[expectedArgsCount] = this.opts();\n }\n actionArgs.push(this);\n\n return fn.apply(this, actionArgs);\n };\n this._actionHandler = listener;\n return this;\n }\n\n /**\n * Factory routine to create a new unattached option.\n *\n * See .option() for creating an attached option, which uses this routine to\n * create the option. You can override createOption to return a custom option.\n *\n * @param {string} flags\n * @param {string} [description]\n * @return {Option} new option\n */\n\n createOption(flags, description) {\n return new Option(flags, description);\n }\n\n /**\n * Wrap parseArgs to catch 'commander.invalidArgument'.\n *\n * @param {(Option | Argument)} target\n * @param {string} value\n * @param {*} previous\n * @param {string} invalidArgumentMessage\n * @private\n */\n\n _callParseArg(target, value, previous, invalidArgumentMessage) {\n try {\n return target.parseArg(value, previous);\n } catch (err) {\n if (err.code === 'commander.invalidArgument') {\n const message = `${invalidArgumentMessage} ${err.message}`;\n this.error(message, { exitCode: err.exitCode, code: err.code });\n }\n throw err;\n }\n }\n\n /**\n * Check for option flag conflicts.\n * Register option if no conflicts found, or throw on conflict.\n *\n * @param {Option} option\n * @private\n */\n\n _registerOption(option) {\n const matchingOption =\n (option.short && this._findOption(option.short)) ||\n (option.long && this._findOption(option.long));\n if (matchingOption) {\n const matchingFlag =\n option.long && this._findOption(option.long)\n ? option.long\n : option.short;\n throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n- already used by option '${matchingOption.flags}'`);\n }\n\n this.options.push(option);\n }\n\n /**\n * Check for command name and alias conflicts with existing commands.\n * Register command if no conflicts found, or throw on conflict.\n *\n * @param {Command} command\n * @private\n */\n\n _registerCommand(command) {\n const knownBy = (cmd) => {\n return [cmd.name()].concat(cmd.aliases());\n };\n\n const alreadyUsed = knownBy(command).find((name) =>\n this._findCommand(name),\n );\n if (alreadyUsed) {\n const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n const newCmd = knownBy(command).join('|');\n throw new Error(\n `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n );\n }\n\n this.commands.push(command);\n }\n\n /**\n * Add an option.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addOption(option) {\n this._registerOption(option);\n\n const oname = option.name();\n const name = option.attributeName();\n\n // store default value\n if (option.negate) {\n // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n const positiveLongFlag = option.long.replace(/^--no-/, '--');\n if (!this._findOption(positiveLongFlag)) {\n this.setOptionValueWithSource(\n name,\n option.defaultValue === undefined ? true : option.defaultValue,\n 'default',\n );\n }\n } else if (option.defaultValue !== undefined) {\n this.setOptionValueWithSource(name, option.defaultValue, 'default');\n }\n\n // handler for cli and env supplied values\n const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n // val is null for optional option used without an optional-argument.\n // val is undefined for boolean and negated option.\n if (val == null && option.presetArg !== undefined) {\n val = option.presetArg;\n }\n\n // custom processing\n const oldValue = this.getOptionValue(name);\n if (val !== null && option.parseArg) {\n val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n } else if (val !== null && option.variadic) {\n val = option._concatValue(val, oldValue);\n }\n\n // Fill-in appropriate missing values. Long winded but easy to follow.\n if (val == null) {\n if (option.negate) {\n val = false;\n } else if (option.isBoolean() || option.optional) {\n val = true;\n } else {\n val = ''; // not normal, parseArg might have failed or be a mock function for testing\n }\n }\n this.setOptionValueWithSource(name, val, valueSource);\n };\n\n this.on('option:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'cli');\n });\n\n if (option.envVar) {\n this.on('optionEnv:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'env');\n });\n }\n\n return this;\n }\n\n /**\n * Internal implementation shared by .option() and .requiredOption()\n *\n * @return {Command} `this` command for chaining\n * @private\n */\n _optionEx(config, flags, description, fn, defaultValue) {\n if (typeof flags === 'object' && flags instanceof Option) {\n throw new Error(\n 'To add an Option object use addOption() instead of option() or requiredOption()',\n );\n }\n const option = this.createOption(flags, description);\n option.makeOptionMandatory(!!config.mandatory);\n if (typeof fn === 'function') {\n option.default(defaultValue).argParser(fn);\n } else if (fn instanceof RegExp) {\n // deprecated\n const regex = fn;\n fn = (val, def) => {\n const m = regex.exec(val);\n return m ? m[0] : def;\n };\n option.default(defaultValue).argParser(fn);\n } else {\n option.default(fn);\n }\n\n return this.addOption(option);\n }\n\n /**\n * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n *\n * See the README for more details, and see also addOption() and requiredOption().\n *\n * @example\n * program\n * .option('-p, --pepper', 'add pepper')\n * .option('-p, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n * .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n option(flags, description, parseArg, defaultValue) {\n return this._optionEx({}, flags, description, parseArg, defaultValue);\n }\n\n /**\n * Add a required option which must have a value after parsing. This usually means\n * the option must be specified on the command line. (Otherwise the same as .option().)\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n requiredOption(flags, description, parseArg, defaultValue) {\n return this._optionEx(\n { mandatory: true },\n flags,\n description,\n parseArg,\n defaultValue,\n );\n }\n\n /**\n * Alter parsing of short flags with optional values.\n *\n * @example\n * // for `.option('-f,--flag [value]'):\n * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour\n * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n *\n * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n * @return {Command} `this` command for chaining\n */\n combineFlagAndOptionalValue(combine = true) {\n this._combineFlagAndOptionalValue = !!combine;\n return this;\n }\n\n /**\n * Allow unknown options on the command line.\n *\n * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n * @return {Command} `this` command for chaining\n */\n allowUnknownOption(allowUnknown = true) {\n this._allowUnknownOption = !!allowUnknown;\n return this;\n }\n\n /**\n * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n *\n * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n * @return {Command} `this` command for chaining\n */\n allowExcessArguments(allowExcess = true) {\n this._allowExcessArguments = !!allowExcess;\n return this;\n }\n\n /**\n * Enable positional options. Positional means global options are specified before subcommands which lets\n * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n * The default behaviour is non-positional and global options may appear anywhere on the command line.\n *\n * @param {boolean} [positional]\n * @return {Command} `this` command for chaining\n */\n enablePositionalOptions(positional = true) {\n this._enablePositionalOptions = !!positional;\n return this;\n }\n\n /**\n * Pass through options that come after command-arguments rather than treat them as command-options,\n * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n * positional options to have been enabled on the program (parent commands).\n * The default behaviour is non-positional and options may appear before or after command-arguments.\n *\n * @param {boolean} [passThrough] for unknown options.\n * @return {Command} `this` command for chaining\n */\n passThroughOptions(passThrough = true) {\n this._passThroughOptions = !!passThrough;\n this._checkForBrokenPassThrough();\n return this;\n }\n\n /**\n * @private\n */\n\n _checkForBrokenPassThrough() {\n if (\n this.parent &&\n this._passThroughOptions &&\n !this.parent._enablePositionalOptions\n ) {\n throw new Error(\n `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n );\n }\n }\n\n /**\n * Whether to store option values as properties on command object,\n * or store separately (specify false). In both cases the option values can be accessed using .opts().\n *\n * @param {boolean} [storeAsProperties=true]\n * @return {Command} `this` command for chaining\n */\n\n storeOptionsAsProperties(storeAsProperties = true) {\n if (this.options.length) {\n throw new Error('call .storeOptionsAsProperties() before adding options');\n }\n if (Object.keys(this._optionValues).length) {\n throw new Error(\n 'call .storeOptionsAsProperties() before setting option values',\n );\n }\n this._storeOptionsAsProperties = !!storeAsProperties;\n return this;\n }\n\n /**\n * Retrieve option value.\n *\n * @param {string} key\n * @return {object} value\n */\n\n getOptionValue(key) {\n if (this._storeOptionsAsProperties) {\n return this[key];\n }\n return this._optionValues[key];\n }\n\n /**\n * Store option value.\n *\n * @param {string} key\n * @param {object} value\n * @return {Command} `this` command for chaining\n */\n\n setOptionValue(key, value) {\n return this.setOptionValueWithSource(key, value, undefined);\n }\n\n /**\n * Store option value and where the value came from.\n *\n * @param {string} key\n * @param {object} value\n * @param {string} source - expected values are default/config/env/cli/implied\n * @return {Command} `this` command for chaining\n */\n\n setOptionValueWithSource(key, value, source) {\n if (this._storeOptionsAsProperties) {\n this[key] = value;\n } else {\n this._optionValues[key] = value;\n }\n this._optionValueSources[key] = source;\n return this;\n }\n\n /**\n * Get source of option value.\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSource(key) {\n return this._optionValueSources[key];\n }\n\n /**\n * Get source of option value. See also .optsWithGlobals().\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSourceWithGlobals(key) {\n // global overwrites local, like optsWithGlobals\n let source;\n this._getCommandAndAncestors().forEach((cmd) => {\n if (cmd.getOptionValueSource(key) !== undefined) {\n source = cmd.getOptionValueSource(key);\n }\n });\n return source;\n }\n\n /**\n * Get user arguments from implied or explicit arguments.\n * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n *\n * @private\n */\n\n _prepareUserArgs(argv, parseOptions) {\n if (argv !== undefined && !Array.isArray(argv)) {\n throw new Error('first parameter to parse must be array or undefined');\n }\n parseOptions = parseOptions || {};\n\n // auto-detect argument conventions if nothing supplied\n if (argv === undefined && parseOptions.from === undefined) {\n if (process.versions?.electron) {\n parseOptions.from = 'electron';\n }\n // check node specific options for scenarios where user CLI args follow executable without scriptname\n const execArgv = process.execArgv ?? [];\n if (\n execArgv.includes('-e') ||\n execArgv.includes('--eval') ||\n execArgv.includes('-p') ||\n execArgv.includes('--print')\n ) {\n parseOptions.from = 'eval'; // internal usage, not documented\n }\n }\n\n // default to using process.argv\n if (argv === undefined) {\n argv = process.argv;\n }\n this.rawArgs = argv.slice();\n\n // extract the user args and scriptPath\n let userArgs;\n switch (parseOptions.from) {\n case undefined:\n case 'node':\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n break;\n case 'electron':\n // @ts-ignore: because defaultApp is an unknown property\n if (process.defaultApp) {\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n } else {\n userArgs = argv.slice(1);\n }\n break;\n case 'user':\n userArgs = argv.slice(0);\n break;\n case 'eval':\n userArgs = argv.slice(1);\n break;\n default:\n throw new Error(\n `unexpected parse option { from: '${parseOptions.from}' }`,\n );\n }\n\n // Find default name for program from arguments.\n if (!this._name && this._scriptPath)\n this.nameFromFilename(this._scriptPath);\n this._name = this._name || 'program';\n\n return userArgs;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Use parseAsync instead of parse if any of your action handlers are async.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * program.parse(); // parse process.argv and auto-detect electron and special node flags\n * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv] - optional, defaults to process.argv\n * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n * @return {Command} `this` command for chaining\n */\n\n parse(argv, parseOptions) {\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv]\n * @param {object} [parseOptions]\n * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n * @return {Promise}\n */\n\n async parseAsync(argv, parseOptions) {\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n await this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Execute a sub-command executable.\n *\n * @private\n */\n\n _executeSubCommand(subcommand, args) {\n args = args.slice();\n let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n function findFile(baseDir, baseName) {\n // Look for specified file\n const localBin = path.resolve(baseDir, baseName);\n if (fs.existsSync(localBin)) return localBin;\n\n // Stop looking if candidate already has an expected extension.\n if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n // Try all the extensions.\n const foundExt = sourceExt.find((ext) =>\n fs.existsSync(`${localBin}${ext}`),\n );\n if (foundExt) return `${localBin}${foundExt}`;\n\n return undefined;\n }\n\n // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // executableFile and executableDir might be full path, or just a name\n let executableFile =\n subcommand._executableFile || `${this._name}-${subcommand._name}`;\n let executableDir = this._executableDir || '';\n if (this._scriptPath) {\n let resolvedScriptPath; // resolve possible symlink for installed npm binary\n try {\n resolvedScriptPath = fs.realpathSync(this._scriptPath);\n } catch (err) {\n resolvedScriptPath = this._scriptPath;\n }\n executableDir = path.resolve(\n path.dirname(resolvedScriptPath),\n executableDir,\n );\n }\n\n // Look for a local file in preference to a command in PATH.\n if (executableDir) {\n let localFile = findFile(executableDir, executableFile);\n\n // Legacy search using prefix of script name instead of command name\n if (!localFile && !subcommand._executableFile && this._scriptPath) {\n const legacyName = path.basename(\n this._scriptPath,\n path.extname(this._scriptPath),\n );\n if (legacyName !== this._name) {\n localFile = findFile(\n executableDir,\n `${legacyName}-${subcommand._name}`,\n );\n }\n }\n executableFile = localFile || executableFile;\n }\n\n launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n let proc;\n if (process.platform !== 'win32') {\n if (launchWithNode) {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n } else {\n proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n }\n } else {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n }\n\n if (!proc.killed) {\n // testing mainly to avoid leak warnings during unit tests with mocked spawn\n const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n signals.forEach((signal) => {\n process.on(signal, () => {\n if (proc.killed === false && proc.exitCode === null) {\n // @ts-ignore because signals not typed to known strings\n proc.kill(signal);\n }\n });\n });\n }\n\n // By default terminate process when spawned process terminates.\n const exitCallback = this._exitCallback;\n proc.on('close', (code) => {\n code = code ?? 1; // code is null if spawned process terminated due to a signal\n if (!exitCallback) {\n process.exit(code);\n } else {\n exitCallback(\n new CommanderError(\n code,\n 'commander.executeSubCommandAsync',\n '(close)',\n ),\n );\n }\n });\n proc.on('error', (err) => {\n // @ts-ignore: because err.code is an unknown property\n if (err.code === 'ENOENT') {\n const executableDirMessage = executableDir\n ? `searched for local subcommand relative to directory '${executableDir}'`\n : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n const executableMissing = `'${executableFile}' does not exist\n - if '${subcommand._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n throw new Error(executableMissing);\n // @ts-ignore: because err.code is an unknown property\n } else if (err.code === 'EACCES') {\n throw new Error(`'${executableFile}' not executable`);\n }\n if (!exitCallback) {\n process.exit(1);\n } else {\n const wrappedError = new CommanderError(\n 1,\n 'commander.executeSubCommandAsync',\n '(error)',\n );\n wrappedError.nestedError = err;\n exitCallback(wrappedError);\n }\n });\n\n // Store the reference to the child process\n this.runningCommand = proc;\n }\n\n /**\n * @private\n */\n\n _dispatchSubcommand(commandName, operands, unknown) {\n const subCommand = this._findCommand(commandName);\n if (!subCommand) this.help({ error: true });\n\n let promiseChain;\n promiseChain = this._chainOrCallSubCommandHook(\n promiseChain,\n subCommand,\n 'preSubcommand',\n );\n promiseChain = this._chainOrCall(promiseChain, () => {\n if (subCommand._executableHandler) {\n this._executeSubCommand(subCommand, operands.concat(unknown));\n } else {\n return subCommand._parseCommand(operands, unknown);\n }\n });\n return promiseChain;\n }\n\n /**\n * Invoke help directly if possible, or dispatch if necessary.\n * e.g. help foo\n *\n * @private\n */\n\n _dispatchHelpCommand(subcommandName) {\n if (!subcommandName) {\n this.help();\n }\n const subCommand = this._findCommand(subcommandName);\n if (subCommand && !subCommand._executableHandler) {\n subCommand.help();\n }\n\n // Fallback to parsing the help flag to invoke the help.\n return this._dispatchSubcommand(\n subcommandName,\n [],\n [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n );\n }\n\n /**\n * Check this.args against expected this.registeredArguments.\n *\n * @private\n */\n\n _checkNumberOfArguments() {\n // too few\n this.registeredArguments.forEach((arg, i) => {\n if (arg.required && this.args[i] == null) {\n this.missingArgument(arg.name());\n }\n });\n // too many\n if (\n this.registeredArguments.length > 0 &&\n this.registeredArguments[this.registeredArguments.length - 1].variadic\n ) {\n return;\n }\n if (this.args.length > this.registeredArguments.length) {\n this._excessArguments(this.args);\n }\n }\n\n /**\n * Process this.args using this.registeredArguments and save as this.processedArgs!\n *\n * @private\n */\n\n _processArguments() {\n const myParseArg = (argument, value, previous) => {\n // Extra processing for nice error message on parsing failure.\n let parsedValue = value;\n if (value !== null && argument.parseArg) {\n const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n parsedValue = this._callParseArg(\n argument,\n value,\n previous,\n invalidValueMessage,\n );\n }\n return parsedValue;\n };\n\n this._checkNumberOfArguments();\n\n const processedArgs = [];\n this.registeredArguments.forEach((declaredArg, index) => {\n let value = declaredArg.defaultValue;\n if (declaredArg.variadic) {\n // Collect together remaining arguments for passing together as an array.\n if (index < this.args.length) {\n value = this.args.slice(index);\n if (declaredArg.parseArg) {\n value = value.reduce((processed, v) => {\n return myParseArg(declaredArg, v, processed);\n }, declaredArg.defaultValue);\n }\n } else if (value === undefined) {\n value = [];\n }\n } else if (index < this.args.length) {\n value = this.args[index];\n if (declaredArg.parseArg) {\n value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n }\n }\n processedArgs[index] = value;\n });\n this.processedArgs = processedArgs;\n }\n\n /**\n * Once we have a promise we chain, but call synchronously until then.\n *\n * @param {(Promise|undefined)} promise\n * @param {Function} fn\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCall(promise, fn) {\n // thenable\n if (promise && promise.then && typeof promise.then === 'function') {\n // already have a promise, chain callback\n return promise.then(() => fn());\n }\n // callback might return a promise\n return fn();\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallHooks(promise, event) {\n let result = promise;\n const hooks = [];\n this._getCommandAndAncestors()\n .reverse()\n .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n .forEach((hookedCommand) => {\n hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n hooks.push({ hookedCommand, callback });\n });\n });\n if (event === 'postAction') {\n hooks.reverse();\n }\n\n hooks.forEach((hookDetail) => {\n result = this._chainOrCall(result, () => {\n return hookDetail.callback(hookDetail.hookedCommand, this);\n });\n });\n return result;\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {Command} subCommand\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallSubCommandHook(promise, subCommand, event) {\n let result = promise;\n if (this._lifeCycleHooks[event] !== undefined) {\n this._lifeCycleHooks[event].forEach((hook) => {\n result = this._chainOrCall(result, () => {\n return hook(this, subCommand);\n });\n });\n }\n return result;\n }\n\n /**\n * Process arguments in context of this command.\n * Returns action result, in case it is a promise.\n *\n * @private\n */\n\n _parseCommand(operands, unknown) {\n const parsed = this.parseOptions(unknown);\n this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n this._parseOptionsImplied();\n operands = operands.concat(parsed.operands);\n unknown = parsed.unknown;\n this.args = operands.concat(unknown);\n\n if (operands && this._findCommand(operands[0])) {\n return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n }\n if (\n this._getHelpCommand() &&\n operands[0] === this._getHelpCommand().name()\n ) {\n return this._dispatchHelpCommand(operands[1]);\n }\n if (this._defaultCommandName) {\n this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n return this._dispatchSubcommand(\n this._defaultCommandName,\n operands,\n unknown,\n );\n }\n if (\n this.commands.length &&\n this.args.length === 0 &&\n !this._actionHandler &&\n !this._defaultCommandName\n ) {\n // probably missing subcommand and no handler, user needs help (and exit)\n this.help({ error: true });\n }\n\n this._outputHelpIfRequested(parsed.unknown);\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n const checkForUnknownOptions = () => {\n if (parsed.unknown.length > 0) {\n this.unknownOption(parsed.unknown[0]);\n }\n };\n\n const commandEvent = `command:${this.name()}`;\n if (this._actionHandler) {\n checkForUnknownOptions();\n this._processArguments();\n\n let promiseChain;\n promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n promiseChain = this._chainOrCall(promiseChain, () =>\n this._actionHandler(this.processedArgs),\n );\n if (this.parent) {\n promiseChain = this._chainOrCall(promiseChain, () => {\n this.parent.emit(commandEvent, operands, unknown); // legacy\n });\n }\n promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n return promiseChain;\n }\n if (this.parent && this.parent.listenerCount(commandEvent)) {\n checkForUnknownOptions();\n this._processArguments();\n this.parent.emit(commandEvent, operands, unknown); // legacy\n } else if (operands.length) {\n if (this._findCommand('*')) {\n // legacy default command\n return this._dispatchSubcommand('*', operands, unknown);\n }\n if (this.listenerCount('command:*')) {\n // skip option check, emit event for possible misspelling suggestion\n this.emit('command:*', operands, unknown);\n } else if (this.commands.length) {\n this.unknownCommand();\n } else {\n checkForUnknownOptions();\n this._processArguments();\n }\n } else if (this.commands.length) {\n checkForUnknownOptions();\n // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n this.help({ error: true });\n } else {\n checkForUnknownOptions();\n this._processArguments();\n // fall through for caller to handle after calling .parse()\n }\n }\n\n /**\n * Find matching command.\n *\n * @private\n * @return {Command | undefined}\n */\n _findCommand(name) {\n if (!name) return undefined;\n return this.commands.find(\n (cmd) => cmd._name === name || cmd._aliases.includes(name),\n );\n }\n\n /**\n * Return an option matching `arg` if any.\n *\n * @param {string} arg\n * @return {Option}\n * @package\n */\n\n _findOption(arg) {\n return this.options.find((option) => option.is(arg));\n }\n\n /**\n * Display an error message if a mandatory option does not have a value.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n\n _checkForMissingMandatoryOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd.options.forEach((anOption) => {\n if (\n anOption.mandatory &&\n cmd.getOptionValue(anOption.attributeName()) === undefined\n ) {\n cmd.missingMandatoryOptionValue(anOption);\n }\n });\n });\n }\n\n /**\n * Display an error message if conflicting options are used together in this.\n *\n * @private\n */\n _checkForConflictingLocalOptions() {\n const definedNonDefaultOptions = this.options.filter((option) => {\n const optionKey = option.attributeName();\n if (this.getOptionValue(optionKey) === undefined) {\n return false;\n }\n return this.getOptionValueSource(optionKey) !== 'default';\n });\n\n const optionsWithConflicting = definedNonDefaultOptions.filter(\n (option) => option.conflictsWith.length > 0,\n );\n\n optionsWithConflicting.forEach((option) => {\n const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n option.conflictsWith.includes(defined.attributeName()),\n );\n if (conflictingAndDefined) {\n this._conflictingOption(option, conflictingAndDefined);\n }\n });\n }\n\n /**\n * Display an error message if conflicting options are used together.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n _checkForConflictingOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd._checkForConflictingLocalOptions();\n });\n }\n\n /**\n * Parse options from `argv` removing known options,\n * and return argv split into operands and unknown arguments.\n *\n * Examples:\n *\n * argv => operands, unknown\n * --known kkk op => [op], []\n * op --known kkk => [op], []\n * sub --unknown uuu op => [sub], [--unknown uuu op]\n * sub -- --unknown uuu op => [sub --unknown uuu op], []\n *\n * @param {string[]} argv\n * @return {{operands: string[], unknown: string[]}}\n */\n\n parseOptions(argv) {\n const operands = []; // operands, not options or values\n const unknown = []; // first unknown option and remaining unknown args\n let dest = operands;\n const args = argv.slice();\n\n function maybeOption(arg) {\n return arg.length > 1 && arg[0] === '-';\n }\n\n // parse options\n let activeVariadicOption = null;\n while (args.length) {\n const arg = args.shift();\n\n // literal\n if (arg === '--') {\n if (dest === unknown) dest.push(arg);\n dest.push(...args);\n break;\n }\n\n if (activeVariadicOption && !maybeOption(arg)) {\n this.emit(`option:${activeVariadicOption.name()}`, arg);\n continue;\n }\n activeVariadicOption = null;\n\n if (maybeOption(arg)) {\n const option = this._findOption(arg);\n // recognised option, call listener to assign value with possible custom processing\n if (option) {\n if (option.required) {\n const value = args.shift();\n if (value === undefined) this.optionMissingArgument(option);\n this.emit(`option:${option.name()}`, value);\n } else if (option.optional) {\n let value = null;\n // historical behaviour is optional value is following arg unless an option\n if (args.length > 0 && !maybeOption(args[0])) {\n value = args.shift();\n }\n this.emit(`option:${option.name()}`, value);\n } else {\n // boolean flag\n this.emit(`option:${option.name()}`);\n }\n activeVariadicOption = option.variadic ? option : null;\n continue;\n }\n }\n\n // Look for combo options following single dash, eat first one if known.\n if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n const option = this._findOption(`-${arg[1]}`);\n if (option) {\n if (\n option.required ||\n (option.optional && this._combineFlagAndOptionalValue)\n ) {\n // option with value following in same argument\n this.emit(`option:${option.name()}`, arg.slice(2));\n } else {\n // boolean option, emit and put back remainder of arg for further processing\n this.emit(`option:${option.name()}`);\n args.unshift(`-${arg.slice(2)}`);\n }\n continue;\n }\n }\n\n // Look for known long flag with value, like --foo=bar\n if (/^--[^=]+=/.test(arg)) {\n const index = arg.indexOf('=');\n const option = this._findOption(arg.slice(0, index));\n if (option && (option.required || option.optional)) {\n this.emit(`option:${option.name()}`, arg.slice(index + 1));\n continue;\n }\n }\n\n // Not a recognised option by this command.\n // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n if (maybeOption(arg)) {\n dest = unknown;\n }\n\n // If using positionalOptions, stop processing our options at subcommand.\n if (\n (this._enablePositionalOptions || this._passThroughOptions) &&\n operands.length === 0 &&\n unknown.length === 0\n ) {\n if (this._findCommand(arg)) {\n operands.push(arg);\n if (args.length > 0) unknown.push(...args);\n break;\n } else if (\n this._getHelpCommand() &&\n arg === this._getHelpCommand().name()\n ) {\n operands.push(arg);\n if (args.length > 0) operands.push(...args);\n break;\n } else if (this._defaultCommandName) {\n unknown.push(arg);\n if (args.length > 0) unknown.push(...args);\n break;\n }\n }\n\n // If using passThroughOptions, stop processing options at first command-argument.\n if (this._passThroughOptions) {\n dest.push(arg);\n if (args.length > 0) dest.push(...args);\n break;\n }\n\n // add arg\n dest.push(arg);\n }\n\n return { operands, unknown };\n }\n\n /**\n * Return an object containing local option values as key-value pairs.\n *\n * @return {object}\n */\n opts() {\n if (this._storeOptionsAsProperties) {\n // Preserve original behaviour so backwards compatible when still using properties\n const result = {};\n const len = this.options.length;\n\n for (let i = 0; i < len; i++) {\n const key = this.options[i].attributeName();\n result[key] =\n key === this._versionOptionName ? this._version : this[key];\n }\n return result;\n }\n\n return this._optionValues;\n }\n\n /**\n * Return an object containing merged local and global option values as key-value pairs.\n *\n * @return {object}\n */\n optsWithGlobals() {\n // globals overwrite locals\n return this._getCommandAndAncestors().reduce(\n (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n {},\n );\n }\n\n /**\n * Display error message and exit (or call exitOverride).\n *\n * @param {string} message\n * @param {object} [errorOptions]\n * @param {string} [errorOptions.code] - an id string representing the error\n * @param {number} [errorOptions.exitCode] - used with process.exit\n */\n error(message, errorOptions) {\n // output handling\n this._outputConfiguration.outputError(\n `${message}\\n`,\n this._outputConfiguration.writeErr,\n );\n if (typeof this._showHelpAfterError === 'string') {\n this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n } else if (this._showHelpAfterError) {\n this._outputConfiguration.writeErr('\\n');\n this.outputHelp({ error: true });\n }\n\n // exit handling\n const config = errorOptions || {};\n const exitCode = config.exitCode || 1;\n const code = config.code || 'commander.error';\n this._exit(exitCode, code, message);\n }\n\n /**\n * Apply any option related environment variables, if option does\n * not have a value from cli or client code.\n *\n * @private\n */\n _parseOptionsEnv() {\n this.options.forEach((option) => {\n if (option.envVar && option.envVar in process.env) {\n const optionKey = option.attributeName();\n // Priority check. Do not overwrite cli or options from unknown source (client-code).\n if (\n this.getOptionValue(optionKey) === undefined ||\n ['default', 'config', 'env'].includes(\n this.getOptionValueSource(optionKey),\n )\n ) {\n if (option.required || option.optional) {\n // option can take a value\n // keep very simple, optional always takes value\n this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n } else {\n // boolean\n // keep very simple, only care that envVar defined and not the value\n this.emit(`optionEnv:${option.name()}`);\n }\n }\n }\n });\n }\n\n /**\n * Apply any implied option values, if option is undefined or default value.\n *\n * @private\n */\n _parseOptionsImplied() {\n const dualHelper = new DualOptions(this.options);\n const hasCustomOptionValue = (optionKey) => {\n return (\n this.getOptionValue(optionKey) !== undefined &&\n !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n );\n };\n this.options\n .filter(\n (option) =>\n option.implied !== undefined &&\n hasCustomOptionValue(option.attributeName()) &&\n dualHelper.valueFromOption(\n this.getOptionValue(option.attributeName()),\n option,\n ),\n )\n .forEach((option) => {\n Object.keys(option.implied)\n .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n .forEach((impliedKey) => {\n this.setOptionValueWithSource(\n impliedKey,\n option.implied[impliedKey],\n 'implied',\n );\n });\n });\n }\n\n /**\n * Argument `name` is missing.\n *\n * @param {string} name\n * @private\n */\n\n missingArgument(name) {\n const message = `error: missing required argument '${name}'`;\n this.error(message, { code: 'commander.missingArgument' });\n }\n\n /**\n * `Option` is missing an argument.\n *\n * @param {Option} option\n * @private\n */\n\n optionMissingArgument(option) {\n const message = `error: option '${option.flags}' argument missing`;\n this.error(message, { code: 'commander.optionMissingArgument' });\n }\n\n /**\n * `Option` does not have a value, and is a mandatory option.\n *\n * @param {Option} option\n * @private\n */\n\n missingMandatoryOptionValue(option) {\n const message = `error: required option '${option.flags}' not specified`;\n this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n }\n\n /**\n * `Option` conflicts with another option.\n *\n * @param {Option} option\n * @param {Option} conflictingOption\n * @private\n */\n _conflictingOption(option, conflictingOption) {\n // The calling code does not know whether a negated option is the source of the\n // value, so do some work to take an educated guess.\n const findBestOptionFromValue = (option) => {\n const optionKey = option.attributeName();\n const optionValue = this.getOptionValue(optionKey);\n const negativeOption = this.options.find(\n (target) => target.negate && optionKey === target.attributeName(),\n );\n const positiveOption = this.options.find(\n (target) => !target.negate && optionKey === target.attributeName(),\n );\n if (\n negativeOption &&\n ((negativeOption.presetArg === undefined && optionValue === false) ||\n (negativeOption.presetArg !== undefined &&\n optionValue === negativeOption.presetArg))\n ) {\n return negativeOption;\n }\n return positiveOption || option;\n };\n\n const getErrorMessage = (option) => {\n const bestOption = findBestOptionFromValue(option);\n const optionKey = bestOption.attributeName();\n const source = this.getOptionValueSource(optionKey);\n if (source === 'env') {\n return `environment variable '${bestOption.envVar}'`;\n }\n return `option '${bestOption.flags}'`;\n };\n\n const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n this.error(message, { code: 'commander.conflictingOption' });\n }\n\n /**\n * Unknown option `flag`.\n *\n * @param {string} flag\n * @private\n */\n\n unknownOption(flag) {\n if (this._allowUnknownOption) return;\n let suggestion = '';\n\n if (flag.startsWith('--') && this._showSuggestionAfterError) {\n // Looping to pick up the global options too\n let candidateFlags = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n do {\n const moreFlags = command\n .createHelp()\n .visibleOptions(command)\n .filter((option) => option.long)\n .map((option) => option.long);\n candidateFlags = candidateFlags.concat(moreFlags);\n command = command.parent;\n } while (command && !command._enablePositionalOptions);\n suggestion = suggestSimilar(flag, candidateFlags);\n }\n\n const message = `error: unknown option '${flag}'${suggestion}`;\n this.error(message, { code: 'commander.unknownOption' });\n }\n\n /**\n * Excess arguments, more than expected.\n *\n * @param {string[]} receivedArgs\n * @private\n */\n\n _excessArguments(receivedArgs) {\n if (this._allowExcessArguments) return;\n\n const expected = this.registeredArguments.length;\n const s = expected === 1 ? '' : 's';\n const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n this.error(message, { code: 'commander.excessArguments' });\n }\n\n /**\n * Unknown command.\n *\n * @private\n */\n\n unknownCommand() {\n const unknownName = this.args[0];\n let suggestion = '';\n\n if (this._showSuggestionAfterError) {\n const candidateNames = [];\n this.createHelp()\n .visibleCommands(this)\n .forEach((command) => {\n candidateNames.push(command.name());\n // just visible alias\n if (command.alias()) candidateNames.push(command.alias());\n });\n suggestion = suggestSimilar(unknownName, candidateNames);\n }\n\n const message = `error: unknown command '${unknownName}'${suggestion}`;\n this.error(message, { code: 'commander.unknownCommand' });\n }\n\n /**\n * Get or set the program version.\n *\n * This method auto-registers the \"-V, --version\" option which will print the version number.\n *\n * You can optionally supply the flags and description to override the defaults.\n *\n * @param {string} [str]\n * @param {string} [flags]\n * @param {string} [description]\n * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n */\n\n version(str, flags, description) {\n if (str === undefined) return this._version;\n this._version = str;\n flags = flags || '-V, --version';\n description = description || 'output the version number';\n const versionOption = this.createOption(flags, description);\n this._versionOptionName = versionOption.attributeName();\n this._registerOption(versionOption);\n\n this.on('option:' + versionOption.name(), () => {\n this._outputConfiguration.writeOut(`${str}\\n`);\n this._exit(0, 'commander.version', str);\n });\n return this;\n }\n\n /**\n * Set the description.\n *\n * @param {string} [str]\n * @param {object} [argsDescription]\n * @return {(string|Command)}\n */\n description(str, argsDescription) {\n if (str === undefined && argsDescription === undefined)\n return this._description;\n this._description = str;\n if (argsDescription) {\n this._argsDescription = argsDescription;\n }\n return this;\n }\n\n /**\n * Set the summary. Used when listed as subcommand of parent.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n summary(str) {\n if (str === undefined) return this._summary;\n this._summary = str;\n return this;\n }\n\n /**\n * Set an alias for the command.\n *\n * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n *\n * @param {string} [alias]\n * @return {(string|Command)}\n */\n\n alias(alias) {\n if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n /** @type {Command} */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n if (\n this.commands.length !== 0 &&\n this.commands[this.commands.length - 1]._executableHandler\n ) {\n // assume adding alias for last added executable subcommand, rather than this\n command = this.commands[this.commands.length - 1];\n }\n\n if (alias === command._name)\n throw new Error(\"Command alias can't be the same as its name\");\n const matchingCommand = this.parent?._findCommand(alias);\n if (matchingCommand) {\n // c.f. _registerCommand\n const existingCmd = [matchingCommand.name()]\n .concat(matchingCommand.aliases())\n .join('|');\n throw new Error(\n `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n );\n }\n\n command._aliases.push(alias);\n return this;\n }\n\n /**\n * Set aliases for the command.\n *\n * Only the first alias is shown in the auto-generated help.\n *\n * @param {string[]} [aliases]\n * @return {(string[]|Command)}\n */\n\n aliases(aliases) {\n // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n if (aliases === undefined) return this._aliases;\n\n aliases.forEach((alias) => this.alias(alias));\n return this;\n }\n\n /**\n * Set / get the command usage `str`.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n usage(str) {\n if (str === undefined) {\n if (this._usage) return this._usage;\n\n const args = this.registeredArguments.map((arg) => {\n return humanReadableArgName(arg);\n });\n return []\n .concat(\n this.options.length || this._helpOption !== null ? '[options]' : [],\n this.commands.length ? '[command]' : [],\n this.registeredArguments.length ? args : [],\n )\n .join(' ');\n }\n\n this._usage = str;\n return this;\n }\n\n /**\n * Get or set the name of the command.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n name(str) {\n if (str === undefined) return this._name;\n this._name = str;\n return this;\n }\n\n /**\n * Set the name of the command from script filename, such as process.argv[1],\n * or require.main.filename, or __filename.\n *\n * (Used internally and public although not documented in README.)\n *\n * @example\n * program.nameFromFilename(require.main.filename);\n *\n * @param {string} filename\n * @return {Command}\n */\n\n nameFromFilename(filename) {\n this._name = path.basename(filename, path.extname(filename));\n\n return this;\n }\n\n /**\n * Get or set the directory for searching for executable subcommands of this command.\n *\n * @example\n * program.executableDir(__dirname);\n * // or\n * program.executableDir('subcommands');\n *\n * @param {string} [path]\n * @return {(string|null|Command)}\n */\n\n executableDir(path) {\n if (path === undefined) return this._executableDir;\n this._executableDir = path;\n return this;\n }\n\n /**\n * Return program help documentation.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n * @return {string}\n */\n\n helpInformation(contextOptions) {\n const helper = this.createHelp();\n if (helper.helpWidth === undefined) {\n helper.helpWidth =\n contextOptions && contextOptions.error\n ? this._outputConfiguration.getErrHelpWidth()\n : this._outputConfiguration.getOutHelpWidth();\n }\n return helper.formatHelp(this, helper);\n }\n\n /**\n * @private\n */\n\n _getHelpContext(contextOptions) {\n contextOptions = contextOptions || {};\n const context = { error: !!contextOptions.error };\n let write;\n if (context.error) {\n write = (arg) => this._outputConfiguration.writeErr(arg);\n } else {\n write = (arg) => this._outputConfiguration.writeOut(arg);\n }\n context.write = contextOptions.write || write;\n context.command = this;\n return context;\n }\n\n /**\n * Output help information for this command.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n outputHelp(contextOptions) {\n let deprecatedCallback;\n if (typeof contextOptions === 'function') {\n deprecatedCallback = contextOptions;\n contextOptions = undefined;\n }\n const context = this._getHelpContext(contextOptions);\n\n this._getCommandAndAncestors()\n .reverse()\n .forEach((command) => command.emit('beforeAllHelp', context));\n this.emit('beforeHelp', context);\n\n let helpInformation = this.helpInformation(context);\n if (deprecatedCallback) {\n helpInformation = deprecatedCallback(helpInformation);\n if (\n typeof helpInformation !== 'string' &&\n !Buffer.isBuffer(helpInformation)\n ) {\n throw new Error('outputHelp callback must return a string or a Buffer');\n }\n }\n context.write(helpInformation);\n\n if (this._getHelpOption()?.long) {\n this.emit(this._getHelpOption().long); // deprecated\n }\n this.emit('afterHelp', context);\n this._getCommandAndAncestors().forEach((command) =>\n command.emit('afterAllHelp', context),\n );\n }\n\n /**\n * You can pass in flags and a description to customise the built-in help option.\n * Pass in false to disable the built-in help option.\n *\n * @example\n * program.helpOption('-?, --help' 'show help'); // customise\n * program.helpOption(false); // disable\n *\n * @param {(string | boolean)} flags\n * @param {string} [description]\n * @return {Command} `this` command for chaining\n */\n\n helpOption(flags, description) {\n // Support disabling built-in help option.\n if (typeof flags === 'boolean') {\n if (flags) {\n this._helpOption = this._helpOption ?? undefined; // preserve existing option\n } else {\n this._helpOption = null; // disable\n }\n return this;\n }\n\n // Customise flags and description.\n flags = flags ?? '-h, --help';\n description = description ?? 'display help for command';\n this._helpOption = this.createOption(flags, description);\n\n return this;\n }\n\n /**\n * Lazy create help option.\n * Returns null if has been disabled with .helpOption(false).\n *\n * @returns {(Option | null)} the help option\n * @package\n */\n _getHelpOption() {\n // Lazy create help option on demand.\n if (this._helpOption === undefined) {\n this.helpOption(undefined, undefined);\n }\n return this._helpOption;\n }\n\n /**\n * Supply your own option to use for the built-in help option.\n * This is an alternative to using helpOption() to customise the flags and description etc.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addHelpOption(option) {\n this._helpOption = option;\n return this;\n }\n\n /**\n * Output help information and exit.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n help(contextOptions) {\n this.outputHelp(contextOptions);\n let exitCode = process.exitCode || 0;\n if (\n exitCode === 0 &&\n contextOptions &&\n typeof contextOptions !== 'function' &&\n contextOptions.error\n ) {\n exitCode = 1;\n }\n // message: do not have all displayed text available so only passing placeholder.\n this._exit(exitCode, 'commander.help', '(outputHelp)');\n }\n\n /**\n * Add additional text to be displayed with the built-in help.\n *\n * Position is 'before' or 'after' to affect just this command,\n * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n *\n * @param {string} position - before or after built-in help\n * @param {(string | Function)} text - string to add, or a function returning a string\n * @return {Command} `this` command for chaining\n */\n addHelpText(position, text) {\n const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n if (!allowedValues.includes(position)) {\n throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n const helpEvent = `${position}Help`;\n this.on(helpEvent, (context) => {\n let helpStr;\n if (typeof text === 'function') {\n helpStr = text({ error: context.error, command: context.command });\n } else {\n helpStr = text;\n }\n // Ignore falsy value when nothing to output.\n if (helpStr) {\n context.write(`${helpStr}\\n`);\n }\n });\n return this;\n }\n\n /**\n * Output help information if help flags specified\n *\n * @param {Array} args - array of options to search for help flags\n * @private\n */\n\n _outputHelpIfRequested(args) {\n const helpOption = this._getHelpOption();\n const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n if (helpRequested) {\n this.outputHelp();\n // (Do not have all displayed text available so only passing placeholder.)\n this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n }\n }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n // Testing for these options:\n // --inspect[=[host:]port]\n // --inspect-brk[=[host:]port]\n // --inspect-port=[host:]port\n return args.map((arg) => {\n if (!arg.startsWith('--inspect')) {\n return arg;\n }\n let debugOption;\n let debugHost = '127.0.0.1';\n let debugPort = '9229';\n let match;\n if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n // e.g. --inspect\n debugOption = match[1];\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n ) {\n debugOption = match[1];\n if (/^\\d+$/.test(match[3])) {\n // e.g. --inspect=1234\n debugPort = match[3];\n } else {\n // e.g. --inspect=localhost\n debugHost = match[3];\n }\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n ) {\n // e.g. --inspect=localhost:1234\n debugOption = match[1];\n debugHost = match[3];\n debugPort = match[4];\n }\n\n if (debugOption && debugPort !== '0') {\n return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n }\n return arg;\n });\n}\n\nexports.Command = Command;\n","const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n","import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n program,\n createCommand,\n createArgument,\n createOption,\n CommanderError,\n InvalidArgumentError,\n InvalidOptionArgumentError, // deprecated old name\n Command,\n Argument,\n Option,\n Help,\n} = commander;\n","export class CliError extends Error {\r\n readonly exitCode: number\r\n readonly code: string\r\n\r\n constructor(\r\n message: string,\r\n options: {\r\n exitCode?: number\r\n code?: string\r\n cause?: unknown\r\n } = {}\r\n ) {\r\n super(message, options.cause ? { cause: options.cause } : undefined)\r\n this.name = \"CliError\"\r\n this.exitCode = options.exitCode ?? 1\r\n this.code = options.code ?? \"CLI_ERROR\"\r\n }\r\n}\r\n\r\nexport class CliUsageError extends CliError {\r\n constructor(message: string, options: { cause?: unknown } = {}) {\r\n super(message, { ...options, exitCode: 2, code: \"CLI_USAGE_ERROR\" })\r\n this.name = \"CliUsageError\"\r\n }\r\n}\r\n\r\nexport function errorMessage(error: unknown): string {\r\n return error instanceof Error ? error.message : String(error)\r\n}\r\n\r\nexport function errorToJson(error: unknown, debug = false, command?: string): string {\r\n const payload: Record<string, unknown> = {\r\n ok: false,\r\n error: true,\r\n message: errorMessage(error),\r\n code: error instanceof CliError ? error.code : \"CLI_ERROR\",\r\n exitCode: error instanceof CliError ? error.exitCode : 1,\r\n command: command ?? null,\r\n generatedAt: new Date().toISOString(),\r\n }\r\n\r\n if (debug && error instanceof Error && error.stack) {\r\n payload.stack = error.stack\r\n }\r\n\r\n return JSON.stringify(payload, null, 2)\r\n}\r\n\r\nexport function errorExitCode(error: unknown): number {\r\n return error instanceof CliError ? error.exitCode : 1\r\n}\r\n","/**\r\n * ESM-safe runtime helpers untuk monorepo.\r\n *\r\n * Menggantikan pola fragile seperti:\r\n * - `createRequire(import.meta.url)` → gunakan `createEsmRequire()`\r\n * - `__dirname` → gunakan `getDirname(import.meta.url)`\r\n * - `__filename` → gunakan `getFilename(import.meta.url)`\r\n *\r\n * Semua helper ini bekerja di ESM dan CJS.\r\n *\r\n * @module @tailwind-styled/shared/esmHelpers\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// Safe check for require availability - works in both CJS and ESM\r\nlet nodeModuleRef: any = null\r\nfunction getNodeModuleRef() {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n // Test if require actually works\r\n const test = typeof require === 'function' ? require('node:module') : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodePath: any = null\r\nlet _nodeUrl: any = null\r\nlet _nodeFs: any = null\r\nlet _nodeCrypto: any = null\r\nlet _nodeOs: any = null\r\n\r\nfunction getNodePath() {\r\n if (isBrowser) throw new Error(\"node:path not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeUrl() {\r\n if (isBrowser) throw new Error(\"node:url not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeUrl) _nodeUrl = nodeRequire.createRequire(import.meta.url)(\"node:url\")\r\n return _nodeUrl!\r\n}\r\nfunction getNodeFs() {\r\n if (isBrowser) throw new Error(\"node:fs not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\")\r\n return _nodeFs!\r\n}\r\nfunction getNodeCrypto() {\r\n if (isBrowser) throw new Error(\"node:crypto not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeCrypto) _nodeCrypto = nodeRequire.createRequire(import.meta.url)(\"node:crypto\")\r\n return _nodeCrypto!\r\n}\r\nfunction getNodeOs() {\r\n if (isBrowser) throw new Error(\"node:os not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeOs) _nodeOs = nodeRequire.createRequire(import.meta.url)(\"node:os\")\r\n return _nodeOs!\r\n}\r\n\r\n/**\r\n * Buat `require()` function yang relative terhadap sebuah ESM module.\r\n *\r\n * @example\r\n * // Ganti: createRequire(import.meta.url)(\"some-pkg\")\r\n * const req = createEsmRequire(import.meta.url)\r\n * const mod = req(\"some-pkg\")\r\n */\r\nexport function createEsmRequire(importMetaUrl: string): NodeRequire {\r\n if (isBrowser) throw new Error(\"require not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n return nodeRequire.createRequire(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Dapat `__dirname` dari `import.meta.url`.\r\n *\r\n * @example\r\n * // Ganti: const __dirname = ...\r\n * const dir = getDirname(import.meta.url)\r\n */\r\nexport function getDirname(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n const nodePath = getNodePath()\r\n const nodeUrl = getNodeUrl()\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n}\r\n\r\n/**\r\n * Dapat `__filename` dari `import.meta.url`.\r\n */\r\nexport function getFilename(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n return getNodeUrl().fileURLToPath(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Resolve path dari root monorepo (bukan CWD).\r\n * Berguna untuk scripts dan tools yang dipanggil dari lokasi berbeda.\r\n *\r\n * @example\r\n * const root = resolveFromRoot(\"packages/domain/shared/src\")\r\n */\r\nexport function resolveFromRoot(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\")\r\n\r\n const nodePath = getNodePath()\r\n const nodeFs = getNodeFs()\r\n \r\n let dir = getDirname(import.meta.url)\r\n for (let i = 0; i < 10; i++) {\r\n const pkgPath = nodePath.join(dir, \"package.json\")\r\n try {\r\n const pkg = JSON.parse(nodeFs.readFileSync(pkgPath, \"utf-8\"))\r\n if (pkg.workspaces) {\r\n return nodePath.resolve(dir, ...segments)\r\n }\r\n } catch { /* intentionally silent */ }\r\n dir = nodePath.dirname(dir)\r\n }\r\n return nodePath.resolve(process.cwd(), ...segments)\r\n}\r\n\r\n/**\r\n * Require sebuah module dengan fallback ke null jika tidak tersedia.\r\n * Berguna untuk optional dependencies.\r\n *\r\n * @example\r\n * const oxc = tryRequire(\"oxc-parser\", import.meta.url)\r\n * if (!oxc) console.warn(\"oxc-parser not installed\")\r\n */\r\nexport function tryRequire<T = unknown>(\r\n moduleName: string,\r\n importMetaUrl: string\r\n): T | null {\r\n if (isBrowser) return null\r\n try {\r\n return createEsmRequire(importMetaUrl)(moduleName) as T\r\n } catch { /* intentionally silent — optional dep */ }\r\n return null\r\n}\r\n\r\n/**\r\n * Resolve .node binary path yang cross-platform dan ESM-safe.\r\n * Menggantikan pola `path.resolve(__dirname, \"../native.node\")`.\r\n */\r\nexport function resolveNativeNodePath(\r\n importMetaUrl: string,\r\n ...relativeSegments: string[]\r\n): string {\r\n if (isBrowser) return relativeSegments.join(\"/\")\r\n return getNodePath().resolve(getDirname(importMetaUrl), ...relativeSegments)\r\n}\r\n","/**\r\n * Prebuilt binary resolution untuk native NAPI bindings.\r\n * QA #1: Resolve native binary dari prebuilt packages atau local build.\r\n *\r\n * Prioritas:\r\n * 1. TW_NATIVE_PATH env var (explicit override)\r\n * 2. Prebuilt binary dari platform-specific npm package\r\n * 3. Local build dari source (developer mode)\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// ESM-safe require detection\r\nlet nodeModuleRef: any = null\r\nfunction getNodeModuleRef() {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n const test = typeof require === 'function' ? require('node:module') : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodeFs: any = null\r\nlet _nodePath: any = null\r\nlet _nodeModule: any = null\r\nlet _require: any = null\r\n\r\nfunction getNodeFs() {\r\n if (isBrowser) return { existsSync: () => false }\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) return { existsSync: () => false }\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\")\r\n return _nodeFs\r\n}\r\nfunction getNodePath() {\r\n if (isBrowser) return { resolve: () => \"\", dirname: \"\" }\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) return { resolve: () => \"\", dirname: \"\" }\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeModule() {\r\n if (isBrowser) return { createRequire: () => { throw new Error(\"node:module not available\") } }\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) return { createRequire: () => { throw new Error(\"require not available\") } }\r\n if (!_nodeModule) _nodeModule = nodeRequire\r\n return _nodeModule\r\n}\r\nfunction getRequire(_importMetaUrl: string) {\r\n if (isBrowser) return () => { throw new Error(\"node:module not available\") }\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) return () => { throw new Error(\"require not available\") }\r\n if (!_require) _require = nodeRequire.createRequire(_importMetaUrl)\r\n return _require\r\n}\r\n\r\nexport interface NativeResolutionResult {\r\n path: string | null\r\n source: \"env\" | \"prebuilt\" | \"local\" | \"not-found\"\r\n platform: string\r\n tried: string[]\r\n}\r\n\r\n/** Platform key → prebuilt npm package name */\r\nconst PLATFORM_MAP: Record<string, string[]> = {\r\n \"linux-x64\": [\"@tailwind-styled/native-linux-x64\"],\r\n \"linux-arm64\": [\"@tailwind-styled/native-linux-arm64\"],\r\n \"darwin-x64\": [\"@tailwind-styled/native-darwin-x64\"],\r\n \"darwin-arm64\": [\"@tailwind-styled/native-darwin-arm64\"],\r\n \"win32-x64\": [\"@tailwind-styled/native-win32-x64\"],\r\n \"win32-arm64\": [\"@tailwind-styled/native-win32-arm64\"],\r\n}\r\n\r\nfunction platformKey(): string {\r\n if (isBrowser) return \"browser\"\r\n return `${process.platform}-${process.arch}`\r\n}\r\n\r\n/**\r\n * Resolve native binary path dari semua sumber yang tersedia.\r\n *\r\n * @example\r\n * const result = resolveNativeBinary()\r\n * if (result.path) {\r\n * const binding = require(result.path)\r\n * } else {\r\n * throw new Error(\"Native binding not found — run npm run build:rust\")\r\n * }\r\n */\r\nexport function resolveNativeBinary(runtimeDir?: string): NativeResolutionResult {\r\n const platform = platformKey()\r\n const tried: string[] = []\r\n\r\n if (isBrowser) {\r\n return { path: null, source: \"not-found\", platform, tried: [\"not available in browser\"] }\r\n }\r\n\r\n const fs = getNodeFs()\r\n const path = getNodePath()\r\n const _req = getRequire(import.meta.url)\r\n\r\n // 1. Env var override\r\n const envPath = process.env.TW_NATIVE_PATH?.trim()\r\n if (envPath) {\r\n if (fs.existsSync(envPath)) {\r\n return { path: envPath, source: \"env\", platform, tried }\r\n }\r\n tried.push(`env:${envPath} (not found)`)\r\n }\r\n\r\n // 2. Skip jika disabled\r\n if (\r\n process.env.TWS_NO_NATIVE === \"1\" ||\r\n process.env.TWS_NO_RUST === \"1\" ||\r\n process.env.TWS_DISABLE_NATIVE === \"1\"\r\n ) {\r\n return { path: null, source: \"not-found\", platform, tried: [\"disabled by env\"] }\r\n }\r\n\r\n // 3. Prebuilt binary dari platform-specific npm package\r\n const prebuiltPkgs = PLATFORM_MAP[platform] ?? []\r\n for (const pkg of prebuiltPkgs) {\r\n try {\r\n const candidate = _req.resolve(`${pkg}/tailwind_styled_parser.node`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"prebuilt\", platform, tried }\r\n }\r\n tried.push(`prebuilt:${pkg} (resolved but missing)`)\r\n } catch {\r\n tried.push(`prebuilt:${pkg} (not installed)`)\r\n }\r\n }\r\n\r\n // 4. Local build candidates\r\n const cwd = process.cwd()\r\n const base = runtimeDir ?? cwd\r\n const localCandidates = [\r\n path.resolve(base, \"tailwind_styled_parser.node\"),\r\n path.resolve(base, \"..\", \"tailwind_styled_parser.node\"),\r\n path.resolve(cwd, \"native\", \"tailwind_styled_parser.node\"),\r\n path.resolve(cwd, \"native\", \"target\", \"release\", \"tailwind_styled_parser.node\"),\r\n // napi-rs conventional output\r\n path.resolve(base, `tailwind_styled_parser.${platform}.node`),\r\n ]\r\n\r\n for (const candidate of localCandidates) {\r\n tried.push(`local:${candidate}`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"local\", platform, tried }\r\n }\r\n }\r\n\r\n return { path: null, source: \"not-found\", platform, tried }\r\n}\r\n\r\n/**\r\n * Format human-readable error untuk \"binary not found\".\r\n */\r\nexport function formatNativeNotFoundError(result: NativeResolutionResult): string {\r\n const lines = [\r\n `[tailwind-styled] Native binding not found for ${result.platform}`,\r\n ``,\r\n `Tried:`,\r\n ...result.tried.map(t => ` - ${t}`),\r\n ``,\r\n `Solutions:`,\r\n ` 1. Build locally: npm run build:rust`,\r\n ` 2. Install prebuilt: npm install @tailwind-styled/native-${result.platform}`,\r\n ` 3. Override path: TW_NATIVE_PATH=/path/to/parser.node`,\r\n ` 4. Disable native: TWS_DISABLE_NATIVE=1 (slower, JS fallback)`,\r\n ]\r\n return lines.join(\"\\n\")\r\n}\r\n","const isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// ESM-safe require detection\r\nlet nodeModuleRef: any = null\r\nfunction getNodeModuleRef() {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n const test = typeof require === 'function' ? require('node:module') : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodeCrypto: any = null\r\nlet _nodeFs: any = null\r\nlet _nodeModule: any = null\r\nlet _nodePath: any = null\r\nlet _nodeUrl: any = null\r\n\r\nfunction getNodeCrypto() {\r\n if (isBrowser) throw new Error(\"node:crypto not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeCrypto) _nodeCrypto = nodeRequire.createRequire(import.meta.url)(\"node:crypto\")\r\n return _nodeCrypto!\r\n}\r\nfunction getNodeFs() {\r\n if (isBrowser) throw new Error(\"node:fs not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\")\r\n return _nodeFs!\r\n}\r\nfunction getNodeModule() {\r\n if (isBrowser) throw new Error(\"node:module not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeModule) _nodeModule = nodeRequire\r\n return _nodeModule!\r\n}\r\nfunction getNodePath() {\r\n if (isBrowser) throw new Error(\"node:path not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeUrl() {\r\n if (isBrowser) throw new Error(\"node:url not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeUrl) _nodeUrl = nodeRequire.createRequire(import.meta.url)(\"node:url\")\r\n return _nodeUrl!\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Types\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type TokenMap = Record<string, string>\r\n\r\nexport type VariantValue = string | number | boolean | undefined\r\n\r\nexport type VariantProps = Record<string, VariantValue>\r\n\r\nexport type HtmlTagName = keyof HTMLElementTagNameMap\r\n\r\nexport type CompoundCondition = Record<string, string | number | boolean>\r\n\r\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Logging\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface Logger {\r\n warn(...args: unknown[]): void\r\n debug(...args: unknown[]): void\r\n error(...args: unknown[]): void\r\n log(...args: unknown[]): void\r\n}\r\n\r\nexport function createLogger(namespace: string): Logger {\r\n const prefix = `[${namespace}]`\r\n return {\r\n warn(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n debug(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n error(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n log(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n }\r\n}\r\n\r\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\r\n const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\r\n return (msg: string) => {\r\n if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\r\n console.debug(prefix, msg)\r\n }\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error handling\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\r\n\r\ntype ZodLikeIssue = {\r\n path?: readonly PropertyKey[]\r\n message?: string\r\n}\r\n\r\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\r\n if (!path || path.length === 0) return \"(root)\"\r\n return path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n}\r\n\r\nexport class TwError extends Error {\r\n /** @deprecated Gunakan source */\r\n public readonly domain: string\r\n public readonly source: ErrorSource\r\n public readonly code: string\r\n public readonly originalCause?: unknown\r\n\r\n constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\r\n super(message)\r\n this.name = \"TwError\"\r\n this.domain = domainOrSource\r\n this.source = domainOrSource as ErrorSource\r\n this.code = code\r\n this.originalCause = cause\r\n if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\r\n }\r\n\r\n static fromIo(code: string, message: string): TwError {\r\n return new TwError(\"io\", code, message)\r\n }\r\n\r\n static fromCompile(code: string, message: string): TwError {\r\n return new TwError(\"compile\", code, message)\r\n }\r\n\r\n static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\r\n if (err && typeof err === \"object\") {\r\n const e = err as { code?: string; message?: string }\r\n return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\r\n }\r\n return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\r\n }\r\n\r\n /** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\r\n static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\r\n const first = err.issues?.[0] ?? err.errors?.[0]\r\n const path = formatIssuePath(first?.path)\r\n const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\r\n return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\r\n }\r\n\r\n static wrap(source: string, code: string, err: unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(source, code, err.message, err)\r\n return new TwError(source, code, String(err), err)\r\n }\r\n\r\n override toString(): string {\r\n return `TwError [${this.source}:${this.code}] ${this.message}`\r\n }\r\n\r\n toJSON(): { name: string; source: string; code: string; message: string } {\r\n return { name: this.name, source: this.source, code: this.code, message: this.message }\r\n }\r\n\r\n toCliMessage(): string {\r\n return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\r\n }\r\n}\r\n\r\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\r\n return TwError.wrap(domain, code, error)\r\n}\r\n\r\nexport function isTwError(err: unknown): err is TwError {\r\n return err instanceof TwError\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Native binding resolution\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface LoadNativeBindingOptions<T> {\r\n runtimeDir: string\r\n candidates: string[]\r\n isValid: (module: unknown) => module is T\r\n invalidExportMessage: string\r\n}\r\n\r\nexport interface LoadNativeBindingResult<T> {\r\n binding: T | null\r\n loadErrors: Array<{ path: string; message: string }>\r\n loadedPath?: string\r\n}\r\n\r\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\r\n if (isBrowser) {\r\n return { binding: null, loadErrors: [{ path: \"\", message: \"Native bindings not available in browser\" }] }\r\n }\r\n \r\n const { runtimeDir, candidates, isValid } = options\r\n const loadErrors: Array<{ path: string; message: string }> = []\r\n const path = getNodePath()\r\n const fs = getNodeFs()\r\n\r\n for (const candidate of candidates) {\r\n const candidatePath = path.resolve(runtimeDir, candidate)\r\n try {\r\n if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\r\n continue\r\n }\r\n const mod = requireNativeModule(candidatePath)\r\n if (mod && isValid(mod)) {\r\n return { binding: mod, loadErrors, loadedPath: candidatePath }\r\n }\r\n loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\r\n } catch (e) {\r\n loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\r\n }\r\n }\r\n\r\n return { binding: null, loadErrors }\r\n}\r\n\r\nfunction getRequire(): NodeRequire {\r\n if (isBrowser) return (() => { throw new Error(\"require not available in browser\") }) as unknown as NodeRequire\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) return (() => { throw new Error(\"require not available\") }) as unknown as NodeRequire\r\n return nodeRequire.createRequire(import.meta.url)\r\n}\r\n\r\nconst _require = getRequire()\r\n\r\nfunction requireNativeModule(path: string): unknown {\r\n return _require(path)\r\n}\r\n\r\nexport interface ResolveCandidatesOptions {\r\n runtimeDir: string\r\n envVarNames?: string[]\r\n includeDefaultCandidates?: boolean\r\n enforceNodeExtensionForEnvPath?: boolean\r\n}\r\n\r\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\r\n if (isBrowser) return []\r\n \r\n const { runtimeDir, envVarNames = [], includeDefaultCandidates = true, enforceNodeExtensionForEnvPath = false } = options\r\n const candidates: string[] = []\r\n const path = getNodePath()\r\n const fs = getNodeFs()\r\n\r\n for (const envVar of envVarNames) {\r\n const envPath = process.env[envVar]\r\n if (envPath) {\r\n if (enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\")) {\r\n candidates.push(envPath + \".node\")\r\n } else {\r\n candidates.push(envPath)\r\n }\r\n }\r\n }\r\n\r\n if (!includeDefaultCandidates) return candidates\r\n\r\n if (fs.existsSync(runtimeDir)) {\r\n try {\r\n const entries = fs.readdirSync(runtimeDir)\r\n for (const entry of entries) {\r\n if (entry.endsWith(\".node\")) {\r\n candidates.push(entry)\r\n }\r\n }\r\n } catch {\r\n // ignore read errors\r\n }\r\n }\r\n\r\n const platform = typeof process !== \"undefined\" ? process.platform : \"\"\r\n const ext = platform === \"win32\" ? \".dll\" : platform === \"darwin\" ? \".dylib\" : \".so\"\r\n const defaultBindingName = `tailwind_styled_parser${ext}`\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", defaultBindingName))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", defaultBindingName))\r\n candidates.push(path.resolve(process.cwd(), \"native\", defaultBindingName))\r\n\r\n return Array.from(new Set(candidates))\r\n}\r\n\r\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n \r\n if (dir) return getNodePath().resolve(dir)\r\n try {\r\n return getNodeUrl().fileURLToPath(importMetaUrl)\r\n } catch {\r\n return process.cwd()\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Hashing\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\r\n if (isBrowser) {\r\n // Simple hash fallback for browser\r\n let hash = 0\r\n for (let i = 0; i < content.length; i++) {\r\n const char = content.charCodeAt(i)\r\n hash = ((hash << 5) - hash) + char\r\n hash = hash & hash\r\n }\r\n return Math.abs(hash).toString(16).slice(0, length ?? 8)\r\n }\r\n const hash = getNodeCrypto().createHash(algorithm).update(content).digest(\"hex\")\r\n return length ? hash.slice(0, length) : hash\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error formatting\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n if (error instanceof TwError) return error.toString()\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LRU Cache\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport class LRUCache<K, V> {\r\n private capacity: number\r\n private cache: Map<K, V>\r\n\r\n constructor(capacity: number) {\r\n this.capacity = capacity\r\n this.cache = new Map()\r\n }\r\n\r\n get(key: K): V | undefined {\r\n if (!this.cache.has(key)) return undefined\r\n const value = this.cache.get(key)!\r\n this.cache.delete(key)\r\n this.cache.set(key, value)\r\n return value\r\n }\r\n\r\n set(key: K, value: V): void {\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key)\r\n } else if (this.cache.size >= this.capacity) {\r\n const firstKey = this.cache.keys().next().value\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey)\r\n }\r\n }\r\n this.cache.set(key, value)\r\n }\r\n\r\n delete(key: K): boolean {\r\n return this.cache.delete(key)\r\n }\r\n\r\n has(key: K): boolean {\r\n return this.cache.has(key)\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear()\r\n }\r\n\r\n entries(): IterableIterator<[K, V]> {\r\n return this.cache.entries()\r\n }\r\n\r\n get size(): number {\r\n return this.cache.size\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Trace Utilities\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\r\nexport {\r\n getHealthColor,\r\n getModeColor,\r\n formatMemory,\r\n formatDuration,\r\n calculateHealth,\r\n getBuildTimeColor,\r\n getMemoryColor,\r\n createTraceSnapshot,\r\n getPipelinePercentages,\r\n} from \"./trace\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Performance Telemetry\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error Codes\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { ErrorCode } from \"./error-codes\"\r\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind Compatibility\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TailwindInfo } from \"./compatibility\"\r\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\r\n\r\n// ── Native binding schemas (Zod boundary validation)\r\nexport {\r\n NativeScanFileSchema, NativeScanResultSchema,\r\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\r\n NativeCssCompileResultSchema, NativeWatchResultSchema,\r\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\r\n safeParseNative, parseNative,\r\n} from './native-schemas'\r\n\r\n// ── ESM-safe runtime helpers ──────────────────────────────────────────────\r\nexport {\r\n createEsmRequire,\r\n getDirname,\r\n getFilename,\r\n resolveFromRoot,\r\n tryRequire,\r\n resolveNativeNodePath,\r\n} from \"./esmHelpers\"\r\n\r\n// ── Performance telemetry ────────────────────────────────────────────────────\r\nexport {\r\n TelemetryCollector,\r\n getGlobalTelemetry,\r\n resetGlobalTelemetry,\r\n createBuildTimer,\r\n type BuildTelemetry,\r\n type TelemetrySummary,\r\n type BuildPhases,\r\n} from \"./telemetry\"\r\n\r\n// ── Config/JSON schema validation ─────────────────────────────────────────────\r\nexport {\r\n ScanCacheSchema,\r\n ScanCacheClassEntrySchema,\r\n TailwindConfigSchema,\r\n RegistryPluginEntrySchema,\r\n RegistryFileSchema,\r\n PackageJsonSchema,\r\n parseJsonWithSchema,\r\n parseJsonFileWithSchema,\r\n type ScanCache,\r\n type ScanCacheClassEntry,\r\n type TailwindConfig,\r\n type RegistryPluginEntry,\r\n type RegistryFile,\r\n type PackageJson,\r\n} from \"./configSchemas\"\r\n\r\n// ── Worker/bootstrap path resolution ─────────────────────────────────────────\r\nexport {\r\n resolveWorkerPath,\r\n resolveLoaderPath,\r\n type WorkerPathOptions,\r\n type WorkerPathResult,\r\n} from \"./workerResolver\"\r\n\r\n// ── Codegen helpers ───────────────────────────────────────────────────────────\r\nexport {\r\n generateComponentCode,\r\n generateStorybookStory,\r\n generateClassRenameCodemod,\r\n generateBarrelFile,\r\n type ComponentCodegenOptions,\r\n} from \"./codegen\"\r\n\r\n// ── Native binary resolution (QA #1) ─────────────────────────────────────────\r\nexport {\r\n resolveNativeBinary,\r\n formatNativeNotFoundError,\r\n type NativeResolutionResult,\r\n} from \"./native-resolution\"\r\n\r\n// ── Shared observability contract ────────────────────────────────────────────\r\nexport {\r\n createObservabilityClient,\r\n type ClassInspection,\r\n type ClassProperty,\r\n type ClassUsageLocation,\r\n type BuildTrace,\r\n type BuildPhaseTrace,\r\n type DashboardMetrics,\r\n type DashboardSummary,\r\n type ObservabilityClient,\r\n} from \"./observability\"\r\n","/**\r\n * Scanner — Rust native bridge\r\n *\r\n * Wraps the Rust scan_workspace and extract_classes_from_source functions.\r\n * Uses @tailwind-styled/shared for native binding resolution.\r\n */\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport {\r\n createDebugLogger,\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n TwError,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nconst log = createDebugLogger(\"scanner:native\")\r\n\r\n// ESM-compatible __dirname equivalent\r\nfunction getDirname(): string {\r\n if (typeof __dirname !== \"undefined\") {\r\n return __dirname\r\n }\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return path.dirname(fileURLToPath(import.meta.url))\r\n }\r\n return process.cwd()\r\n}\r\n\r\ninterface NativeScannerBinding {\r\n scanWorkspace?: (\r\n root: string,\r\n extensions: string[] | null\r\n ) => {\r\n files: Array<{ file: string; classes: string[]; hash: string }>\r\n totalFiles: number\r\n uniqueClasses: string[] | null\r\n } | null\r\n extractClassesFromSource?: (source: string) => string[] | null\r\n hashFileContent?: (content: string) => string | null\r\n cacheRead?: (cachePath: string) => {\r\n entries: Array<{\r\n file: string\r\n classes: string[]\r\n hash: string\r\n mtimeMs: number\r\n size: number\r\n hitCount: number\r\n lastSeenMs?: number\r\n }>\r\n version: number\r\n } | null\r\n cacheWrite?: (\r\n cachePath: string,\r\n entries: Array<{\r\n file: string\r\n classes: string[]\r\n hash: string\r\n mtimeMs: number\r\n size: number\r\n hitCount: number\r\n lastSeenMs?: number\r\n }>\r\n ) => boolean\r\n cachePriority?: (\r\n mtimeMs: number,\r\n size: number,\r\n cachedMtimeMs: number,\r\n cachedSize: number,\r\n cachedHitCount: number,\r\n cachedLastSeenMs: number,\r\n nowMs: number\r\n ) => number\r\n}\r\n\r\nconst isValidScannerBinding = (module: unknown): module is NativeScannerBinding => {\r\n const candidate = module as Partial<NativeScannerBinding> | null | undefined\r\n return !!(\r\n candidate &&\r\n (candidate.scanWorkspace ||\r\n candidate.extractClassesFromSource ||\r\n candidate.hashFileContent ||\r\n candidate.cacheRead ||\r\n candidate.cacheWrite)\r\n )\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Bridge - Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createScannerBridgeLoader = () => {\r\n const _state = {\r\n binding: undefined as NativeScannerBinding | null | undefined,\r\n loadError: null as string | null,\r\n candidatePaths: [] as string[],\r\n }\r\n\r\n const throwNativeBindingError = (): never => {\r\n const lines = [\r\n \"FATAL: Native scanner binding not found.\",\r\n \"\",\r\n \"This package requires the Rust native binding 'tailwind_styled_parser.node'.\",\r\n \"The binding was not found in any of these paths:\",\r\n ..._state.candidatePaths.map((p) => ` - ${p}`),\r\n \"\",\r\n ]\r\n\r\n if (_state.loadError) {\r\n lines.push(\"Load error:\", ` ${_state.loadError}`, \"\")\r\n }\r\n\r\n lines.push(\r\n \"To fix this, run:\",\r\n \" npm run build:rust\",\r\n \"\",\r\n \"This will build the native Rust module from the 'native/' directory.\",\r\n \"If you're using this package in a CI/CD environment, ensure Rust toolchain is installed\",\r\n \"and 'npm run build:rust' is executed before running tests or building.\"\r\n )\r\n\r\n throw new TwError(\"rust\", \"SCANNER_NATIVE_BINDING_NOT_FOUND\", lines.join(\"\\n\"))\r\n }\r\n\r\n const scannerGetBinding = (): NativeScannerBinding => {\r\n const cachedBinding = _state.binding\r\n if (cachedBinding !== undefined) {\r\n if (cachedBinding !== null) {\r\n return cachedBinding\r\n }\r\n return throwNativeBindingError()\r\n }\r\n\r\n const runtimeDir = getDirname()\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n includeDefaultCandidates: true,\r\n })\r\n\r\n _state.candidatePaths = candidates\r\n\r\n const { binding, loadErrors } = loadNativeBinding<NativeScannerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isValidScannerBinding,\r\n invalidExportMessage: \"Module loaded but missing expected scanner binding functions\",\r\n })\r\n\r\n if (binding) {\r\n log(`scanner native binding loaded successfully`)\r\n _state.binding = binding\r\n return _state.binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n _state.loadError = loadErrors.map((e) => `${e.path}: ${e.message}`).join(\"; \")\r\n }\r\n\r\n _state.binding = null\r\n return throwNativeBindingError()\r\n }\r\n\r\n return {\r\n get: scannerGetBinding,\r\n scannerGetBinding,\r\n reset: (): void => {\r\n _state.binding = undefined\r\n _state.loadError = null\r\n _state.candidatePaths = []\r\n },\r\n }\r\n}\r\n\r\nconst scannerBridgeLoader = createScannerBridgeLoader()\r\nconst scannerGetBinding = scannerBridgeLoader.get\r\n\r\nexport const resetScannerBridgeCache = scannerBridgeLoader.reset\r\n\r\nexport function scanWorkspaceNative(\r\n root: string,\r\n extensions?: string[]\r\n): ReturnType<NonNullable<NativeScannerBinding[\"scanWorkspace\"]>> {\r\n return scannerGetBinding().scanWorkspace!(root, extensions ?? null)\r\n}\r\n\r\nexport function extractClassesNative(source: string): string[] {\r\n const result = scannerGetBinding().extractClassesFromSource?.(source)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_EXTRACT_FAILED\",\r\n \"Native extractClassesFromSource returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function hashContentNative(content: string): string {\r\n const result = scannerGetBinding().hashFileContent?.(content)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_HASH_FAILED\",\r\n \"Native hashFileContent returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function isRustCacheAvailable(): boolean {\r\n return true\r\n}\r\n\r\nexport function hasNativeScannerBinding(): boolean {\r\n try {\r\n scannerBridgeLoader.get()\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport function cacheReadNative(\r\n cachePath: string\r\n): ReturnType<NonNullable<NativeScannerBinding[\"cacheRead\"]>> {\r\n const result = scannerGetBinding().cacheRead?.(cachePath)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_CACHE_READ_FAILED\",\r\n \"Native cacheRead returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function cacheWriteNative(\r\n cachePath: string,\r\n entries: Parameters<NonNullable<NativeScannerBinding[\"cacheWrite\"]>>[1]\r\n): boolean {\r\n const result = scannerGetBinding().cacheWrite?.(cachePath, entries)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_CACHE_WRITE_FAILED\",\r\n \"Native cacheWrite returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function cachePriorityNative(\r\n mtimeMs: number,\r\n size: number,\r\n cachedMtimeMs: number,\r\n cachedSize: number,\r\n cachedHitCount: number,\r\n cachedLastSeenMs: number,\r\n nowMs = Date.now()\r\n): number {\r\n const result = scannerGetBinding().cachePriority?.(\r\n mtimeMs,\r\n size,\r\n cachedMtimeMs,\r\n cachedSize,\r\n cachedHitCount,\r\n cachedLastSeenMs,\r\n nowMs\r\n )\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_CACHE_PRIORITY_FAILED\",\r\n \"Native cachePriority returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n","/**\r\n * tailwind-styled-v4 — Scanner Cache (Rust-backed)\r\n *\r\n * This module REQUIRES native Rust bindings and will FAIL LOUDLY if they are not available.\r\n * NO JavaScript fallback is provided.\r\n */\r\n\r\nimport path from \"node:path\"\r\nimport { cachePriorityNative, cacheReadNative, cacheWriteNative } from \"./native-bridge\"\r\n\r\nfunction defaultCachePath(rootDir: string, cacheDir?: string): string {\r\n const dir = cacheDir\r\n ? path.resolve(rootDir, cacheDir)\r\n : path.join(process.cwd(), \".cache\", \"tailwind-styled\")\r\n return path.join(dir, \"scanner-cache.json\")\r\n}\r\n\r\n// ── Public API ────────────────────────────────────────────────────────────────\r\n\r\nexport interface NativeCacheEntry {\r\n file: string\r\n classes: string[]\r\n hash: string\r\n mtimeMs: number\r\n size: number\r\n hitCount: number\r\n /** Terakhir file ditemukan di filesystem (ms epoch). Digunakan untuk stale cleanup. */\r\n lastSeenMs?: number\r\n}\r\n\r\n/** Default stale threshold — 7 hari */\r\nconst STALE_THRESHOLD_MS = 7 * 24 * 60 * 60 * 1000\r\n\r\n/**\r\n * Hapus entri cache yang sudah stale (file sudah tidak ada atau lastSeenMs terlalu lama).\r\n * QA #5a: stale entry cleanup\r\n */\r\nexport function pruneStaleEntries(\r\n entries: NativeCacheEntry[],\r\n opts: { maxAgeMs?: number; rootDir?: string } = {}\r\n): { pruned: NativeCacheEntry[]; removed: number } {\r\n const maxAge = opts.maxAgeMs ?? STALE_THRESHOLD_MS\r\n const now = Date.now()\r\n const { existsSync } = require(\"node:fs\") as typeof import(\"node:fs\")\r\n\r\n const pruned = entries.filter((entry) => {\r\n // Hapus jika file sudah tidak ada di disk\r\n if (opts.rootDir && !existsSync(entry.file)) return false\r\n // Hapus jika lastSeenMs terlalu lama\r\n if (entry.lastSeenMs && now - entry.lastSeenMs > maxAge) return false\r\n return true\r\n })\r\n\r\n return { pruned, removed: entries.length - pruned.length }\r\n}\r\n\r\n/**\r\n * Read scanner cache from disk using Rust parser.\r\n * REQUIRES native binding - throws if unavailable.\r\n */\r\nexport function readCache(rootDir: string, cacheDir?: string): NativeCacheEntry[] {\r\n const cachePath = defaultCachePath(rootDir, cacheDir)\r\n\r\n const result = cacheReadNative(cachePath)\r\n if (!result) return []\r\n\r\n return result.entries.map((e) => ({\r\n file: e.file,\r\n classes: e.classes,\r\n hash: e.hash,\r\n mtimeMs: e.mtimeMs,\r\n size: e.size,\r\n hitCount: e.hitCount,\r\n lastSeenMs: e.lastSeenMs,\r\n }))\r\n}\r\n\r\n/**\r\n * Write scanner cache to disk using Rust serialiser.\r\n * REQUIRES native binding - throws if unavailable.\r\n */\r\nexport function writeCache(rootDir: string, entries: NativeCacheEntry[], cacheDir?: string): void {\r\n const cachePath = defaultCachePath(rootDir, cacheDir)\r\n\r\n const success = cacheWriteNative(cachePath, entries)\r\n if (!success) {\r\n throw new Error(\r\n \"Native cacheWrite failed. Run 'npm run build:rust' to rebuild native bindings.\"\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Compute priority score for a file using the Rust SmartCache algorithm.\r\n * Higher = process first.\r\n * REQUIRES native binding - throws if unavailable.\r\n */\r\nexport function filePriority(\r\n mtimeMs: number,\r\n size: number,\r\n cached: { mtimeMs: number; size: number; hitCount: number; lastSeenMs?: number } | undefined,\r\n nowMs = Date.now()\r\n): number {\r\n return cachePriorityNative(\r\n mtimeMs,\r\n size,\r\n cached?.mtimeMs ?? 0,\r\n cached?.size ?? 0,\r\n cached?.hitCount ?? 0,\r\n cached?.lastSeenMs ?? 0,\r\n nowMs\r\n )\r\n}\r\n\r\nexport interface CacheStats {\r\n totalEntries: number\r\n totalClasses: number\r\n totalSizeBytes: number\r\n avgClassesPerEntry: number\r\n mostUsedClasses: Array<{ class: string; count: number }>\r\n}\r\n\r\nexport function computeCacheStats(entries: NativeCacheEntry[]): CacheStats {\r\n if (entries.length === 0) {\r\n return { totalEntries: 0, totalClasses: 0, totalSizeBytes: 0, avgClassesPerEntry: 0, mostUsedClasses: [] }\r\n }\r\n\r\n const classCounts = new Map<string, number>()\r\n let totalClasses = 0\r\n let totalSize = 0\r\n\r\n for (const entry of entries) {\r\n totalClasses += entry.classes.length\r\n totalSize += entry.size\r\n for (const cls of entry.classes) {\r\n classCounts.set(cls, (classCounts.get(cls) ?? 0) + 1)\r\n }\r\n }\r\n\r\n const mostUsedClasses = [...classCounts.entries()]\r\n .sort((a, b) => b[1] - a[1])\r\n .slice(0, 10)\r\n .map(([cls, count]) => ({ class: cls, count }))\r\n\r\n return {\r\n totalEntries: entries.length,\r\n totalClasses,\r\n totalSizeBytes: totalSize,\r\n avgClassesPerEntry: totalClasses / entries.length,\r\n mostUsedClasses,\r\n }\r\n}\r\n","import { z } from \"zod\"\r\nimport { TwError } from \"@tailwind-styled/shared\"\r\n\r\nconst formatIssuePath = (path: readonly PropertyKey[]): string =>\r\n path.length > 0\r\n ? path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n : \"<root>\"\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const path = formatIssuePath(issue.path)\r\n return `${path}: ${issue.message}`\r\n })\r\n .join(\"; \")\r\n\r\nconst parseWithSchema = <T>(schema: z.ZodType<T>, data: unknown, label: string): T => {\r\n const parsed = schema.safeParse(data)\r\n if (parsed.success) return parsed.data\r\n const details = formatIssues(parsed.error)\r\n throw new TwError(\r\n \"validation\",\r\n \"SCHEMA_VALIDATION_FAILED\",\r\n details ? `${label}: ${details}` : label,\r\n parsed.error\r\n )\r\n}\r\n\r\nconst NonNegativeIntegerSchema = z.number().int().min(0)\r\n\r\nexport const ScanWorkspaceOptionsSchema = z.object({\r\n includeExtensions: z.array(z.string()).optional(),\r\n ignoreDirectories: z.array(z.string()).optional(),\r\n useCache: z.boolean().optional(),\r\n cacheDir: z.string().min(1).optional(),\r\n smartInvalidation: z.boolean().optional(),\r\n})\r\n\r\nexport type ScanWorkspaceOptions = z.infer<typeof ScanWorkspaceOptionsSchema>\r\n\r\nexport const ScanFileResultSchema = z.object({\r\n file: z.string(),\r\n classes: z.array(z.string()),\r\n hash: z.string().optional(),\r\n})\r\n\r\nexport type ScanFileResult = z.infer<typeof ScanFileResultSchema>\r\n\r\nexport const ScanWorkspaceResultSchema = z\r\n .object({\r\n files: z.array(ScanFileResultSchema),\r\n totalFiles: NonNegativeIntegerSchema,\r\n uniqueClasses: z.array(z.string()),\r\n })\r\n .refine((value) => value.totalFiles === value.files.length, {\r\n message: \"scan result totalFiles must match files.length\",\r\n path: [\"totalFiles\"],\r\n })\r\n\r\nexport type ScanWorkspaceResult = z.infer<typeof ScanWorkspaceResultSchema>\r\n\r\nexport const ScannerWorkerRequestSchema = z.object({\r\n rootDir: z.string().min(1),\r\n options: ScanWorkspaceOptionsSchema.optional(),\r\n})\r\n\r\nexport type ScannerWorkerRequest = z.infer<typeof ScannerWorkerRequestSchema>\r\n\r\nexport const ScannerWorkerSuccessMessageSchema = z.object({\r\n ok: z.literal(true),\r\n result: ScanWorkspaceResultSchema,\r\n})\r\n\r\nexport const ScannerWorkerErrorMessageSchema = z.object({\r\n ok: z.literal(false),\r\n error: z.string().optional(),\r\n})\r\n\r\nexport const ScannerWorkerMessageSchema = z.union([\r\n ScannerWorkerSuccessMessageSchema,\r\n ScannerWorkerErrorMessageSchema,\r\n])\r\n\r\nexport type ScannerWorkerMessage = z.infer<typeof ScannerWorkerMessageSchema>\r\n\r\nexport const parseScanWorkspaceOptions = (options: unknown) =>\r\n parseWithSchema(ScanWorkspaceOptionsSchema, options ?? {}, \"scanner options are invalid\")\r\n\r\nexport const parseScanFileResult = (result: unknown) =>\r\n parseWithSchema(ScanFileResultSchema, result, \"scanner file result is invalid\")\r\n\r\nexport const parseScanWorkspaceResult = (result: unknown) =>\r\n parseWithSchema(ScanWorkspaceResultSchema, result, \"scanner workspace result is invalid\")\r\n\r\nexport const parseScannerWorkerRequest = (request: unknown) =>\r\n parseWithSchema(ScannerWorkerRequestSchema, request, \"scanner worker request is invalid\")\r\n\r\nexport const parseScannerWorkerMessage = (message: unknown) =>\r\n parseWithSchema(ScannerWorkerMessageSchema, message, \"scanner worker message is invalid\")\r\n","import fs from \"node:fs\"\r\nimport { createRequire } from \"node:module\"\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport { Worker } from \"node:worker_threads\"\r\nimport { createLogger } from \"@tailwind-styled/shared\"\r\nimport { filePriority, type NativeCacheEntry, readCache, writeCache } from \"./cache-native\"\r\nimport { hashContentNative, isRustCacheAvailable } from \"./native-bridge\"\r\nimport {\r\n parseScannerWorkerMessage,\r\n parseScanWorkspaceOptions,\r\n parseScanWorkspaceResult,\r\n type ScanFileResult,\r\n type ScanWorkspaceOptions,\r\n type ScanWorkspaceResult,\r\n} from \"./schemas\"\r\n\r\nconst log = createLogger(\"scanner\")\r\n\r\nconst SCAN_WORKER_TIMEOUT_MS = 120_000\r\n\r\ntype NativeParsedClass = { raw?: string }\r\ntype NativeParserBinding = {\r\n parse_classes?: (input: string) => NativeParsedClass[]\r\n parseClasses?: (input: string) => NativeParsedClass[]\r\n extractClassesFromSource?: (source: string) => string[] | null\r\n batchExtractClassesNative?: (filePaths: string[]) => Array<{\r\n file: string; classes: string[]; contentHash: string; ok: boolean; error?: string\r\n }>\r\n}\r\n\r\nfunction getRuntimeDir(): string {\r\n if (typeof __dirname !== \"undefined\" && __dirname.length > 0) {\r\n return __dirname\r\n }\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return path.dirname(fileURLToPath(import.meta.url))\r\n }\r\n return process.cwd()\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Parser Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createNativeParserLoader = () => {\r\n const _state = {\r\n binding: undefined as NativeParserBinding | null | undefined,\r\n initError: null as string | null,\r\n }\r\n\r\n const debugNative = (message: string): void => {\r\n log.debug(`[native] ${message}`)\r\n }\r\n\r\n const loadNativeParserBinding = (): NativeParserBinding | null => {\r\n if (_state.binding !== undefined) return _state.binding\r\n\r\n const runtimeDir = getRuntimeDir()\r\n const req = createRequire(path.join(runtimeDir, \"noop.cjs\"))\r\n\r\n const candidates = [\r\n path.resolve(process.cwd(), \"native/tailwind_styled_parser.node\"),\r\n path.resolve(process.cwd(), \"native/build/Release/tailwind_styled_parser.node\"),\r\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\r\n path.resolve(\r\n runtimeDir,\r\n \"..\",\r\n \"..\",\r\n \"..\",\r\n \"native\",\r\n \"build\",\r\n \"Release\",\r\n \"tailwind_styled_parser.node\"\r\n ),\r\n ]\r\n\r\n for (const fullPath of candidates) {\r\n if (!fs.existsSync(fullPath)) continue\r\n try {\r\n const required = req(fullPath) as NativeParserBinding\r\n if (\r\n required &&\r\n (typeof required.extractClassesFromSource === \"function\" ||\r\n typeof required.parseClasses === \"function\" ||\r\n typeof required.parse_classes === \"function\")\r\n ) {\r\n _state.binding = required\r\n debugNative(`using native parser from ${fullPath}`)\r\n return _state.binding\r\n }\r\n } catch (error) {\r\n _state.initError = error instanceof Error ? error.message : String(error)\r\n }\r\n }\r\n\r\n _state.binding = null\r\n if (!_state.initError) {\r\n _state.initError = \"native .node binding not found\"\r\n }\r\n debugNative(`native binding not available: ${_state.initError}`)\r\n return _state.binding\r\n }\r\n\r\n return {\r\n get: loadNativeParserBinding,\r\n reset: (): void => {\r\n _state.binding = undefined\r\n _state.initError = null\r\n },\r\n }\r\n}\r\n\r\nconst nativeParserLoader = createNativeParserLoader()\r\n\r\nfunction normalizeWithNativeParser(tokens: string[]): string[] {\r\n const binding = nativeParserLoader.get()\r\n const parseClasses = binding?.parseClasses ?? binding?.parse_classes\r\n if (!binding || typeof parseClasses !== \"function\") {\r\n throw new Error(\r\n \"Native parser binding is required but not available. Run 'npm run build:rust' to build it.\"\r\n )\r\n }\r\n\r\n try {\r\n const parsed = parseClasses(tokens.join(\" \"))\r\n const normalized = parsed.map((item) => item.raw?.trim() ?? \"\").filter(Boolean)\r\n return Array.from(new Set(normalized))\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error)\r\n throw new Error(`Native parser failed: ${errorMessage}. Run 'npm run build:rust' to rebuild.`)\r\n }\r\n}\r\n\r\nexport type { ScanFileResult, ScanWorkspaceOptions, ScanWorkspaceResult } from \"./schemas\"\r\nexport {\r\n parseScannerWorkerMessage,\r\n parseScanWorkspaceOptions,\r\n parseScanWorkspaceResult,\r\n} from \"./schemas\"\r\n\r\nexport const DEFAULT_EXTENSIONS = [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"]\r\nexport const DEFAULT_IGNORES = [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"]\r\n\r\nfunction resolveScannerWorkerModulePath(): string | null {\r\n const runtimeDir = (() => {\r\n if (typeof __dirname !== \"undefined\" && __dirname.length > 0) {\r\n return __dirname\r\n }\r\n // ESM fallback\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return path.dirname(fileURLToPath(import.meta.url))\r\n }\r\n // Final fallback\r\n return process.cwd()\r\n })()\r\n\r\n const candidates = [\r\n path.resolve(runtimeDir, \"worker.cjs\"),\r\n path.resolve(runtimeDir, \"worker.js\"),\r\n path.resolve(runtimeDir, \"worker.ts\"),\r\n ]\r\n\r\n for (const candidate of candidates) {\r\n if (fs.existsSync(candidate)) return candidate\r\n }\r\n\r\n return null\r\n}\r\n\r\nfunction scanWorkspaceInWorker(\r\n rootDir: string,\r\n options: ScanWorkspaceOptions\r\n): Promise<ScanWorkspaceResult> {\r\n const normalizedOptions = parseScanWorkspaceOptions(options)\r\n const modulePath = resolveScannerWorkerModulePath()\r\n if (!modulePath) {\r\n return Promise.reject(new Error(\"scanner worker module path could not be resolved\"))\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const settleState = { settled: false }\r\n\r\n const worker = new Worker(modulePath, { workerData: { rootDir, options: normalizedOptions } })\r\n\r\n const timeout = setTimeout(() => {\r\n if (!settleState.settled) {\r\n settleState.settled = true\r\n void worker.terminate()\r\n reject(new Error(`scanner worker timed out after ${SCAN_WORKER_TIMEOUT_MS}ms`))\r\n }\r\n }, SCAN_WORKER_TIMEOUT_MS)\r\n\r\n const finish = (callback: () => void) => {\r\n if (settleState.settled) return\r\n settleState.settled = true\r\n clearTimeout(timeout)\r\n callback()\r\n }\r\n\r\n worker.once(\"message\", (payload: unknown) => {\r\n const message = parseScannerWorkerMessage(payload)\r\n finish(() => {\r\n if (message?.ok) {\r\n resolve(parseScanWorkspaceResult(message.result))\r\n return\r\n }\r\n reject(new Error(message?.error ?? \"scanner worker failed without an error message\"))\r\n })\r\n })\r\n\r\n worker.once(\"error\", (error: Error) => {\r\n finish(() => reject(error))\r\n })\r\n\r\n worker.once(\"exit\", (code: number) => {\r\n if (code !== 0) {\r\n finish(() => reject(new Error(`scanner worker exited with code ${code}`)))\r\n }\r\n })\r\n })\r\n}\r\n\r\nfunction buildExtensionSet(includeExtensions: string[]): Set<string> {\r\n return new Set(includeExtensions)\r\n}\r\n\r\nfunction collectCandidates(\r\n rootDir: string,\r\n ignoreDirectories: Set<string>,\r\n extensionSet: Set<string>\r\n): string[] {\r\n const candidates: string[] = []\r\n const directories = [rootDir]\r\n\r\n while (directories.length > 0) {\r\n const currentDir = directories.pop()\r\n if (!currentDir) continue\r\n\r\n const entries = (() => {\r\n try {\r\n return fs.readdirSync(currentDir, { withFileTypes: true })\r\n } catch {\r\n return [] as fs.Dirent[]\r\n }\r\n })()\r\n\r\n for (const entry of entries) {\r\n const fullPath = path.join(currentDir, entry.name)\r\n\r\n if (entry.isDirectory()) {\r\n if (!ignoreDirectories.has(entry.name)) directories.push(fullPath)\r\n continue\r\n }\r\n\r\n if (!entry.isFile()) continue\r\n if (!extensionSet.has(path.extname(entry.name))) continue\r\n candidates.push(fullPath)\r\n }\r\n }\r\n\r\n return candidates\r\n}\r\n\r\nfunction toCacheSize(size: number): number {\r\n if (!Number.isFinite(size)) return 0\r\n const normalized = Math.max(0, Math.trunc(size))\r\n return Math.min(normalized, 0xffffffff)\r\n}\r\n\r\nexport function scanSource(source: string): string[] {\r\n const nativeBinding = nativeParserLoader.get()\r\n if (nativeBinding?.extractClassesFromSource) {\r\n const classes = nativeBinding.extractClassesFromSource(source)\r\n if (Array.isArray(classes)) {\r\n return Array.from(new Set(classes.filter(Boolean)))\r\n }\r\n }\r\n\r\n throw new Error(\r\n \"FATAL: Native parser binding is required but not available.\\n\" +\r\n \"This package requires native Rust bindings.\\n\\n\" +\r\n \"Resolution steps:\\n\" +\r\n \"1. Build the native Rust module: npm run build:rust\"\r\n )\r\n}\r\n\r\nexport function isScannableFile(filePath: string, includeExtensions = DEFAULT_EXTENSIONS): boolean {\r\n return includeExtensions.includes(path.extname(filePath))\r\n}\r\n\r\nexport function scanFile(filePath: string): ScanFileResult {\r\n const source = fs.readFileSync(filePath, \"utf8\")\r\n const hash = hashContentNative(source) ?? undefined\r\n return {\r\n file: filePath,\r\n classes: scanSource(source),\r\n ...(hash ? { hash } : {}),\r\n }\r\n}\r\n\r\nexport function scanWorkspace(\r\n rootDir: string,\r\n options: ScanWorkspaceOptions = {}\r\n): ScanWorkspaceResult {\r\n const normalizedOptions = parseScanWorkspaceOptions(options)\r\n const includeExtensions = normalizedOptions.includeExtensions ?? DEFAULT_EXTENSIONS\r\n const extensionSet = buildExtensionSet(includeExtensions)\r\n const ignoreDirectories = new Set(normalizedOptions.ignoreDirectories ?? DEFAULT_IGNORES)\r\n const useCache = normalizedOptions.useCache ?? true\r\n const _smartInvalidation = normalizedOptions.smartInvalidation ?? true\r\n\r\n const files: ScanFileResult[] = []\r\n const unique = new Set<string>()\r\n const candidates = collectCandidates(rootDir, ignoreDirectories, extensionSet)\r\n\r\n const processResult = (result: ScanFileResult) => {\r\n files.push(result)\r\n for (const cls of result.classes) unique.add(cls)\r\n }\r\n\r\n \r\n const { scanWorkspaceNative } = require(\"./native-bridge\")\r\n\r\n if (!normalizedOptions.cacheDir && !useCache) {\r\n const nativeResult = scanWorkspaceNative(rootDir, includeExtensions)\r\n if (nativeResult) {\r\n return parseScanWorkspaceResult({\r\n files: nativeResult.files.map((f: { file: string; classes: string[]; hash?: string }) => ({\r\n file: f.file,\r\n classes: f.classes,\r\n ...(f.hash ? { hash: f.hash } : {}),\r\n })),\r\n totalFiles: nativeResult.totalFiles,\r\n uniqueClasses: nativeResult.uniqueClasses,\r\n })\r\n }\r\n }\r\n\r\n if (useCache && isRustCacheAvailable()) {\r\n const cacheEntries: NativeCacheEntry[] = (() => {\r\n try {\r\n return readCache(rootDir, normalizedOptions.cacheDir)\r\n } catch (error) {\r\n log.debug(\r\n `cache read failed, continuing without persisted cache: ${\r\n error instanceof Error ? error.message : String(error)\r\n }`\r\n )\r\n return []\r\n }\r\n })()\r\n\r\n const cacheMap = new Map(cacheEntries.map((entry) => [entry.file, entry]))\r\n const nowMs = Date.now()\r\n const ranked: Array<{\r\n filePath: string\r\n stat: fs.Stats\r\n size: number\r\n cached?: NativeCacheEntry\r\n priority: number\r\n }> = []\r\n\r\n for (const filePath of candidates) {\r\n const stat = (() => {\r\n try {\r\n return fs.statSync(filePath)\r\n } catch {\r\n return null\r\n }\r\n })()\r\n if (!stat) continue\r\n\r\n const size = toCacheSize(stat.size)\r\n const cached = cacheMap.get(filePath)\r\n const priority = filePriority(\r\n stat.mtimeMs,\r\n size,\r\n cached\r\n ? {\r\n mtimeMs: cached.mtimeMs,\r\n size: cached.size,\r\n hitCount: cached.hitCount,\r\n lastSeenMs: 0,\r\n }\r\n : undefined,\r\n nowMs\r\n )\r\n\r\n ranked.push({ filePath, stat, size, cached, priority })\r\n }\r\n\r\n ranked.sort((a, b) => b.priority - a.priority)\r\n\r\n const updatedEntries: NativeCacheEntry[] = []\r\n\r\n for (const { filePath, stat, size, cached } of ranked) {\r\n const content = (() => {\r\n try {\r\n return fs.readFileSync(filePath, \"utf8\")\r\n } catch {\r\n return null\r\n }\r\n })()\r\n if (!content) continue\r\n\r\n const hash = hashContentNative(content)\r\n if (\r\n cached &&\r\n cached.hash === hash &&\r\n cached.mtimeMs === stat.mtimeMs &&\r\n cached.size === size\r\n ) {\r\n log.debug(`cache HIT ${filePath}`)\r\n processResult({ file: filePath, classes: cached.classes })\r\n updatedEntries.push({\r\n file: filePath,\r\n classes: cached.classes,\r\n hash: cached.hash,\r\n mtimeMs: stat.mtimeMs,\r\n size,\r\n hitCount: (cached.hitCount ?? 0) + 1,\r\n })\r\n continue\r\n }\r\n\r\n log.debug(`cache MISS ${filePath}`)\r\n const classes = scanSource(content)\r\n processResult({ file: filePath, classes })\r\n updatedEntries.push({\r\n file: filePath,\r\n classes,\r\n hash,\r\n mtimeMs: stat.mtimeMs,\r\n size,\r\n hitCount: 1,\r\n })\r\n }\r\n\r\n try {\r\n writeCache(rootDir, updatedEntries, normalizedOptions.cacheDir)\r\n } catch (error) {\r\n log.debug(`cache write failed: ${error instanceof Error ? error.message : String(error)}`)\r\n }\r\n\r\n return parseScanWorkspaceResult({\r\n files,\r\n totalFiles: files.length,\r\n uniqueClasses: Array.from(unique).sort(),\r\n })\r\n }\r\n\r\n // Fast path: gunakan Rust batch extraction jika tersedia (parallel, tanpa GC)\r\n const batchNative = nativeParserLoader.get()?.batchExtractClassesNative\r\n if (batchNative) {\r\n const batchResults = batchNative(candidates)\r\n for (const r of batchResults ?? []) {\r\n if (r.ok) processResult({ file: r.file, classes: r.classes })\r\n }\r\n } else {\r\n for (const filePath of candidates) {\r\n processResult(scanFile(filePath))\r\n }\r\n }\r\n\r\n return parseScanWorkspaceResult({\r\n files,\r\n totalFiles: files.length,\r\n uniqueClasses: Array.from(unique).sort(),\r\n })\r\n}\r\n\r\nexport async function scanWorkspaceAsync(\r\n rootDir: string,\r\n options: ScanWorkspaceOptions = {}\r\n): Promise<ScanWorkspaceResult> {\r\n const normalizedOptions = parseScanWorkspaceOptions(options)\r\n if (process.env.TWS_DISABLE_SCANNER_WORKER === \"1\") {\r\n return scanWorkspace(rootDir, normalizedOptions)\r\n }\r\n\r\n try {\r\n return await scanWorkspaceInWorker(rootDir, normalizedOptions)\r\n } catch (error) {\r\n log.debug(\r\n `worker scan failed, falling back to sync scanner: ${\r\n error instanceof Error ? error.message : String(error)\r\n }`\r\n )\r\n return scanWorkspace(rootDir, normalizedOptions)\r\n }\r\n}","import fs from \"node:fs\"\r\nimport { createDebugLogger } from \"@tailwind-styled/shared\"\r\n\r\nexport const DEFAULT_TOP_LIMIT = 10\r\nexport const DEFAULT_FREQUENT_THRESHOLD = 2\r\nexport const DEBUG_NAMESPACE = \"tailwind-styled:analyzer\"\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n return error instanceof Error ? error.message : String(error)\r\n}\r\n\r\nexport function isRecord(value: unknown): value is Record<string, unknown> {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nexport async function pathExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.promises.access(filePath, fs.constants.F_OK)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport const debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\")\r\n\r\nexport function sanitizeTopLimit(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n\r\nexport function sanitizeFrequentThreshold(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n","import {\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n resolveRuntimeDir,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nimport type { NativeAnalyzerBinding, NativeCssCompilerBinding } from \"./types\"\r\nimport { debugLog } from \"./utils\"\r\n\r\nconst isAnalyzerModule = (module: unknown): module is NativeAnalyzerBinding => {\r\n const candidate = module as Partial<NativeAnalyzerBinding> | null | undefined\r\n return typeof candidate?.analyzeClasses === \"function\"\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Analyzer Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createAnalyzerBindingLoader = () => {\r\n const _state = { bindingPromise: null as Promise<NativeAnalyzerBinding | null> | null }\r\n\r\n const getBindingPromise = (): Promise<NativeAnalyzerBinding | null> => {\r\n if (_state.bindingPromise) return _state.bindingPromise\r\n\r\n _state.bindingPromise = (async (): Promise<NativeAnalyzerBinding | null> => {\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { binding, loadErrors, loadedPath } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n if (binding) {\r\n debugLog(`native binding loaded from: ${loadedPath}`)\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n debugLog(\r\n `native binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\r\n .map((entry) => `${entry.path} (${entry.message})`)\r\n .join(\"; \")}`\r\n )\r\n } else {\r\n debugLog(\"native binding not found in any candidate path\")\r\n }\r\n\r\n return null\r\n })()\r\n\r\n return _state.bindingPromise\r\n }\r\n\r\n return {\r\n get: getBindingPromise,\r\n reset: (): void => {\r\n _state.bindingPromise = null\r\n },\r\n }\r\n}\r\n\r\nconst analyzerBindingLoader = createAnalyzerBindingLoader()\r\n\r\nexport async function getNativeBinding(): Promise<NativeAnalyzerBinding | null> {\r\n return analyzerBindingLoader.get()\r\n}\r\n\r\nexport async function requireNativeBinding(): Promise<NativeAnalyzerBinding> {\r\n const binding = await analyzerBindingLoader.get()\r\n if (binding?.analyzeClasses) return binding\r\n\r\n // Untuk error reporting, kita perlu akses ke candidates dan loadErrors\r\n // Tapi karena async, kita perlu load ulang atau simpan state\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { loadErrors } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n const lines = [\r\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\",\r\n ]\r\n\r\n lines.push(\"Checked paths:\")\r\n for (const candidate of candidates) lines.push(`- ${candidate}`)\r\n if (loadErrors.length > 0) {\r\n lines.push(\"Load errors:\")\r\n for (const failure of loadErrors) {\r\n lines.push(`- ${failure.path}: ${failure.message}`)\r\n }\r\n }\r\n\r\n throw new Error(lines.join(\"\\n\"))\r\n}\r\n\r\nexport async function requireNativeCssCompiler(): Promise<NativeCssCompilerBinding> {\r\n const binding = await requireNativeBinding()\r\n if (typeof binding.compileCss === \"function\") return binding as NativeCssCompilerBinding\r\n\r\n throw new Error(`Native analyzer compileCss binding is missing.`)\r\n}\r\n","import { TwError } from \"@tailwind-styled/shared\"\r\nimport type { ScanWorkspaceOptions } from \"@tailwind-styled/scanner\"\r\nimport { z } from \"zod\"\r\n\r\nconst formatIssuePath = (path: readonly PropertyKey[]): string =>\r\n path.length > 0\r\n ? path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n : \"<root>\"\r\n\r\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const path = formatIssuePath(issue.path)\r\n return `${path}: ${issue.message}`\r\n })\r\n .join(\"; \")\r\n\r\nconst parseWithSchema = <T>(schema: z.ZodType<T>, data: unknown, label: string): T => {\r\n const parsed = schema.safeParse(data)\r\n if (parsed.success) return parsed.data\r\n const details = formatIssues(parsed.error)\r\n throw new TwError(\r\n \"validation\",\r\n \"SCHEMA_VALIDATION_FAILED\",\r\n details ? `${label}: ${details}` : label,\r\n parsed.error\r\n )\r\n}\r\n\r\nconst CountSchema = z.number().int().min(0)\r\n\r\nexport const ClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n isUnused: z.boolean().optional(),\r\n isConflict: z.boolean().optional(),\r\n})\r\n\r\nexport const ClassConflictSchema = z.object({\r\n className: z.string(),\r\n variants: z.array(z.string()),\r\n classes: z.array(z.string()),\r\n message: z.string(),\r\n})\r\n\r\nconst ClassCountSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n})\r\n\r\nexport const NativeReportSchema = z.object({\r\n root: z.string(),\r\n totalFiles: CountSchema,\r\n uniqueClassCount: CountSchema,\r\n totalClassOccurrences: CountSchema,\r\n topClasses: z.array(ClassCountSchema),\r\n duplicateCandidates: z.array(ClassCountSchema),\r\n safelist: z.array(z.string()),\r\n})\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unknownClasses: z.array(z.string()),\r\n sizeBytes: CountSchema,\r\n})\r\n\r\nconst AnalyzerClassStatsSchema = z.object({\r\n top: z\r\n .number({\r\n error: \"analyzeWorkspace options.classStats.top must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n frequentThreshold: z\r\n .number({\r\n error:\r\n \"analyzeWorkspace options.classStats.frequentThreshold must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n})\r\n\r\nconst AnalyzerSemanticOptionsSchema = z.object({\r\n tailwindConfigPath: z\r\n .string({\r\n error:\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\",\r\n })\r\n .min(\r\n 1,\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const AnalyzerOptionsSchema = z.object({\r\n scanner: z\r\n .custom<ScanWorkspaceOptions>(\r\n (value) => isPlainObject(value),\r\n \"analyzeWorkspace options.scanner must be an object when provided.\"\r\n )\r\n .optional(),\r\n classStats: AnalyzerClassStatsSchema.optional(),\r\n semantic: z\r\n .union([\r\n z.boolean({\r\n error: \"analyzeWorkspace options.semantic must be a boolean or an object when provided.\",\r\n }),\r\n AnalyzerSemanticOptionsSchema,\r\n ])\r\n .optional(),\r\n includeClass: z\r\n .custom<(className: string) => boolean>(\r\n (value) => typeof value === \"function\",\r\n \"analyzeWorkspace options.includeClass must be a function when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const ClassToCssOptionsSchema = z.object({\r\n prefix: z\r\n .union([z.string(), z.null()], {\r\n error: \"classToCss options.prefix must be a string or null when provided.\",\r\n })\r\n .optional(),\r\n strict: z\r\n .boolean({\r\n error: \"classToCss options.strict must be a boolean when provided.\",\r\n })\r\n .optional(),\r\n})\r\n\r\nexport const parseAnalyzerOptions = (options: unknown) =>\r\n parseWithSchema(AnalyzerOptionsSchema, options ?? {}, \"analyzeWorkspace options are invalid\")\r\n\r\nexport const parseNativeReport = (report: unknown) =>\r\n parseWithSchema(NativeReportSchema, report, \"Native analyzer report is invalid\")\r\n\r\nexport const parseNativeCssCompileResult = (result: unknown, className?: string) =>\r\n parseWithSchema(\r\n NativeCssCompileResultSchema,\r\n result,\r\n className\r\n ? `Native CSS compile result is invalid for class \"${className}\"`\r\n : \"Native CSS compile result is invalid\"\r\n )\r\n\r\nexport const parseClassToCssOptions = (options: unknown) =>\r\n parseWithSchema(ClassToCssOptionsSchema, options ?? {}, \"classToCss options are invalid\")\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { pathToFileURL } from \"node:url\"\r\n\r\nimport type {\r\n AnalyzerSemanticReport,\r\n ClassConflict,\r\n ClassUsage,\r\n LoadedTailwindConfig,\r\n TailwindConfigCacheEntry,\r\n} from \"./types\"\r\nimport { debugLog, formatErrorMessage, isRecord, pathExists } from \"./utils\"\r\n\r\n\r\nconst SUPPORTED_TAILWIND_CONFIG_EXTENSIONS = new Set([\".ts\", \".js\", \".cjs\", \".mjs\"])\r\nconst KNOWN_UTILITY_PREFIXES = new Set([\r\n \"absolute\",\r\n \"align\",\r\n \"animate\",\r\n \"arbitrary\",\r\n \"aspect\",\r\n \"backdrop\",\r\n \"basis\",\r\n \"bg\",\r\n \"block\",\r\n \"border\",\r\n \"bottom\",\r\n \"col\",\r\n \"container\",\r\n \"contents\",\r\n \"cursor\",\r\n \"dark\",\r\n \"display\",\r\n \"divide\",\r\n \"fill\",\r\n \"fixed\",\r\n \"flex\",\r\n \"float\",\r\n \"font\",\r\n \"from\",\r\n \"gap\",\r\n \"grid\",\r\n \"grow\",\r\n \"h\",\r\n \"hidden\",\r\n \"inset\",\r\n \"inline\",\r\n \"isolate\",\r\n \"items\",\r\n \"justify\",\r\n \"left\",\r\n \"leading\",\r\n \"line\",\r\n \"list\",\r\n \"m\",\r\n \"max-h\",\r\n \"max-w\",\r\n \"mb\",\r\n \"min-h\",\r\n \"min-w\",\r\n \"ml\",\r\n \"mr\",\r\n \"mt\",\r\n \"mx\",\r\n \"my\",\r\n \"object\",\r\n \"opacity\",\r\n \"order\",\r\n \"origin\",\r\n \"outline\",\r\n \"overflow\",\r\n \"overscroll\",\r\n \"p\",\r\n \"pb\",\r\n \"pe\",\r\n \"perspective\",\r\n \"place\",\r\n \"pl\",\r\n \"pointer\",\r\n \"position\",\r\n \"pr\",\r\n \"ps\",\r\n \"pt\",\r\n \"px\",\r\n \"py\",\r\n \"relative\",\r\n \"right\",\r\n \"ring\",\r\n \"rotate\",\r\n \"rounded\",\r\n \"row\",\r\n \"scale\",\r\n \"shadow\",\r\n \"shrink\",\r\n \"size\",\r\n \"skew\",\r\n \"snap\",\r\n \"space-x\",\r\n \"space-y\",\r\n \"sr\",\r\n \"start\",\r\n \"static\",\r\n \"sticky\",\r\n \"stroke\",\r\n \"table\",\r\n \"text\",\r\n \"to\",\r\n \"top\",\r\n \"touch\",\r\n \"tracking\",\r\n \"transform\",\r\n \"transition\",\r\n \"translate\",\r\n \"truncate\",\r\n \"underline\",\r\n \"via\",\r\n \"visible\",\r\n \"w\",\r\n \"whitespace\",\r\n \"z\",\r\n])\r\n\r\nconst tailwindConfigCache = new Map<string, TailwindConfigCacheEntry>()\r\n\r\nexport const splitVariantAndBase = (className: string): { variantKey: string; base: string } => {\r\n const parts = className.split(\":\")\r\n if (parts.length <= 1) return { variantKey: \"\", base: className }\r\n const base = parts.pop() ?? className\r\n return { variantKey: parts.join(\":\"), base }\r\n}\r\n\r\nconst isArbitraryUtility = (baseClass: string): boolean => {\r\n return baseClass.includes(\"[\") && baseClass.includes(\"]\")\r\n}\r\n\r\nexport const resolveConflictGroup = (base: string): string | null => {\r\n if (isArbitraryUtility(base)) return null\r\n if ([\"block\", \"inline\", \"inline-block\", \"inline-flex\", \"flex\", \"grid\", \"hidden\"].includes(base))\r\n return \"display\"\r\n if (base.startsWith(\"bg-\")) return \"bg\"\r\n if (base.startsWith(\"text-\")) return \"text\"\r\n if (base.startsWith(\"font-\")) return \"font\"\r\n if (base.startsWith(\"rounded\")) return \"rounded\"\r\n if (base.startsWith(\"shadow\")) return \"shadow\"\r\n if (base.startsWith(\"border-\")) return \"border\"\r\n if (base.startsWith(\"opacity-\")) return \"opacity\"\r\n if (base.startsWith(\"w-\") || base.startsWith(\"min-w-\") || base.startsWith(\"max-w-\"))\r\n return \"width\"\r\n if (base.startsWith(\"h-\") || base.startsWith(\"min-h-\") || base.startsWith(\"max-h-\"))\r\n return \"height\"\r\n if (base.startsWith(\"p-\") || base.startsWith(\"px-\") || base.startsWith(\"py-\")) return \"padding\"\r\n if (base.startsWith(\"m-\") || base.startsWith(\"mx-\") || base.startsWith(\"my-\")) return \"margin\"\r\n return null\r\n}\r\n\r\nconst detectConflicts = (\r\n usages: ClassUsage[]\r\n): {\r\n conflicts: ClassConflict[]\r\n conflictedClassNames: Set<string>\r\n} => {\r\n const buckets = new Map<string, { variantKey: string; group: string; classes: Set<string> }>()\r\n\r\n for (const usage of usages) {\r\n const { variantKey, base } = splitVariantAndBase(usage.name)\r\n const group = resolveConflictGroup(base)\r\n if (!group) continue\r\n\r\n const key = `${variantKey}::${group}`\r\n const bucket = buckets.get(key) ?? {\r\n variantKey,\r\n group,\r\n classes: new Set<string>(),\r\n }\r\n bucket.classes.add(usage.name)\r\n buckets.set(key, bucket)\r\n }\r\n\r\n const conflicts: ClassConflict[] = []\r\n const conflictedClassNames = new Set<string>()\r\n\r\n for (const bucket of buckets.values()) {\r\n if (bucket.classes.size <= 1) continue\r\n const classes = Array.from(bucket.classes).sort()\r\n for (const className of classes) conflictedClassNames.add(className)\r\n\r\n const variantLabel = bucket.variantKey.length > 0 ? bucket.variantKey : \"base\"\r\n conflicts.push({\r\n className: bucket.group,\r\n variants: bucket.variantKey.length > 0 ? bucket.variantKey.split(\":\") : [],\r\n classes,\r\n message: `Multiple ${bucket.group} utilities detected for \"${variantLabel}\".`,\r\n })\r\n }\r\n\r\n conflicts.sort((left, right) => {\r\n if (right.classes.length !== left.classes.length)\r\n return right.classes.length - left.classes.length\r\n return left.className.localeCompare(right.className)\r\n })\r\n\r\n return { conflicts, conflictedClassNames }\r\n}\r\n\r\nconst isSupportedTailwindConfigPath = (configPath: string): boolean => {\r\n return SUPPORTED_TAILWIND_CONFIG_EXTENSIONS.has(path.extname(configPath).toLowerCase())\r\n}\r\n\r\nconst resolveTailwindConfigPath = async (\r\n root: string,\r\n explicitPath?: string\r\n): Promise<string | null> => {\r\n if (explicitPath) {\r\n const resolved = path.resolve(root, explicitPath)\r\n if (!(await pathExists(resolved))) return null\r\n return resolved\r\n }\r\n\r\n const candidates = [\r\n \"tailwind.config.ts\",\r\n \"tailwind.config.js\",\r\n \"tailwind.config.cjs\",\r\n \"tailwind.config.mjs\",\r\n ]\r\n\r\n for (const candidate of candidates) {\r\n const fullPath = path.resolve(root, candidate)\r\n if (await pathExists(fullPath)) return fullPath\r\n }\r\n\r\n return null\r\n}\r\n\r\nconst collectSafelistFromConfig = (config: Record<string, unknown>): string[] => {\r\n const raw = config.safelist\r\n if (!Array.isArray(raw)) return []\r\n\r\n const out = new Set<string>()\r\n for (const entry of raw) {\r\n if (typeof entry === \"string\" && entry.length > 0) {\r\n out.add(entry)\r\n continue\r\n }\r\n if (!entry || typeof entry !== \"object\") continue\r\n const pattern = (entry as Record<string, unknown>).pattern\r\n if (typeof pattern === \"string\" && pattern.length > 0) {\r\n out.add(pattern)\r\n }\r\n }\r\n\r\n return Array.from(out)\r\n}\r\n\r\nconst collectCustomUtilities = (config: Record<string, unknown>): Set<string> => {\r\n const out = new Set<string>()\r\n const theme = config.theme\r\n if (!theme || typeof theme !== \"object\") return out\r\n\r\n const extend = (theme as Record<string, unknown>).extend\r\n if (!extend || typeof extend !== \"object\") return out\r\n\r\n for (const [section, value] of Object.entries(extend as Record<string, unknown>)) {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) continue\r\n for (const key of Object.keys(value as Record<string, unknown>)) {\r\n out.add(`${section}-${key}`)\r\n if (section === \"colors\") {\r\n out.add(`bg-${key}`)\r\n out.add(`text-${key}`)\r\n out.add(`border-${key}`)\r\n } else if (section === \"spacing\") {\r\n out.add(`p-${key}`)\r\n out.add(`m-${key}`)\r\n out.add(`gap-${key}`)\r\n out.add(`w-${key}`)\r\n out.add(`h-${key}`)\r\n } else if (section === \"fontSize\") {\r\n out.add(`text-${key}`)\r\n } else if (section === \"borderRadius\") {\r\n out.add(`rounded-${key}`)\r\n } else if (section === \"boxShadow\") {\r\n out.add(`shadow-${key}`)\r\n }\r\n }\r\n }\r\n\r\n return out\r\n}\r\n\r\nconst collectSafelistFromSource = async (configPath: string): Promise<string[]> => {\r\n const source = await fs.promises.readFile(configPath, \"utf8\")\r\n const safelistBlock = source.match(/safelist\\s*:\\s*\\[([\\s\\S]*?)\\]/m)?.[1]\r\n if (!safelistBlock) return []\r\n\r\n const out = new Set<string>()\r\n for (const token of safelistBlock.matchAll(/[\"'`]([^\"'`]+)[\"'`]/g)) {\r\n const value = token[1].trim()\r\n if (value.length > 0) out.add(value)\r\n }\r\n return Array.from(out)\r\n}\r\n\r\nconst loadTailwindConfig = async (\r\n root: string,\r\n semanticOption?: { tailwindConfigPath?: string }\r\n): Promise<LoadedTailwindConfig | null> => {\r\n const startMs = Date.now()\r\n const configPath = await resolveTailwindConfigPath(root, semanticOption?.tailwindConfigPath)\r\n if (!configPath) return null\r\n\r\n if (!isSupportedTailwindConfigPath(configPath)) {\r\n return {\r\n path: configPath,\r\n loaded: false,\r\n warning: `Unsupported Tailwind config extension at \"${configPath}\". Supported extensions: .ts, .js, .cjs, .mjs.`,\r\n safelist: new Set<string>(),\r\n customUtilities: new Set<string>(),\r\n }\r\n }\r\n\r\n const configStat = await fs.promises.stat(configPath).catch(() => null)\r\n if (configStat) {\r\n const cached = tailwindConfigCache.get(configPath)\r\n if (cached && cached.mtimeMs === configStat.mtimeMs && cached.size === configStat.size) {\r\n debugLog(\r\n `tailwind config cache hit: ${configPath} (${cached.config.safelist.size} safelist entries)`\r\n )\r\n return cached.config\r\n }\r\n }\r\n\r\n const result = await (async (): Promise<{\r\n config: Record<string, unknown> | null\r\n warning: string | undefined\r\n }> => {\r\n try {\r\n const cacheBustToken = Math.trunc(configStat?.mtimeMs ?? Date.now())\r\n const imported = await import(`${pathToFileURL(configPath).href}?tws_mtime=${cacheBustToken}`)\r\n const candidate = (imported.default ?? imported) as unknown\r\n if (isRecord(candidate)) {\r\n return { config: candidate, warning: undefined }\r\n } else if (typeof candidate === \"function\") {\r\n const evaluated = candidate()\r\n if (isRecord(evaluated)) {\r\n return { config: evaluated, warning: undefined }\r\n }\r\n return { config: null, warning: \"Tailwind config export function must return an object.\" }\r\n }\r\n return {\r\n config: null,\r\n warning: \"Tailwind config export must be an object or a function returning an object.\",\r\n }\r\n } catch (error) {\r\n return { config: null, warning: formatErrorMessage(error) }\r\n }\r\n })()\r\n\r\n const { config, warning } = result\r\n\r\n const safelist = new Set<string>()\r\n const customUtilities = new Set<string>()\r\n\r\n if (config) {\r\n for (const item of collectSafelistFromConfig(config)) safelist.add(item)\r\n for (const item of collectCustomUtilities(config)) customUtilities.add(item)\r\n }\r\n\r\n if (safelist.size === 0) {\r\n try {\r\n for (const item of await collectSafelistFromSource(configPath)) safelist.add(item)\r\n } catch (error) {\r\n debugLog(\r\n `failed to parse safelist from source at \"${configPath}\": ${formatErrorMessage(error)}`\r\n )\r\n // keep empty if source parsing fails\r\n }\r\n }\r\n\r\n const loaded = {\r\n path: configPath,\r\n loaded: config !== null,\r\n warning,\r\n safelist,\r\n customUtilities,\r\n }\r\n\r\n if (configStat) {\r\n tailwindConfigCache.set(configPath, {\r\n mtimeMs: configStat.mtimeMs,\r\n size: configStat.size,\r\n config: loaded,\r\n })\r\n }\r\n\r\n debugLog(\r\n `tailwind config loaded from \"${configPath}\" in ${Date.now() - startMs}ms ` +\r\n `(loaded=${loaded.loaded}, safelist=${loaded.safelist.size}, custom=${loaded.customUtilities.size})`\r\n )\r\n\r\n return loaded\r\n}\r\n\r\nexport const utilityPrefix = (baseClass: string): string => {\r\n const normalized = baseClass.startsWith(\"-\") ? baseClass.slice(1) : baseClass\r\n if (normalized.includes(\"[\") && normalized.includes(\"]\")) return \"arbitrary\"\r\n if (normalized.startsWith(\"min-w-\")) return \"min-w\"\r\n if (normalized.startsWith(\"max-w-\")) return \"max-w\"\r\n if (normalized.startsWith(\"min-h-\")) return \"min-h\"\r\n if (normalized.startsWith(\"max-h-\")) return \"max-h\"\r\n if (normalized.startsWith(\"space-x-\")) return \"space-x\"\r\n if (normalized.startsWith(\"space-y-\")) return \"space-y\"\r\n if (normalized.startsWith(\"inline-\")) return \"inline\"\r\n if (normalized.startsWith(\"border-\")) return \"border\"\r\n if (normalized.startsWith(\"text-\")) return \"text\"\r\n if (normalized.startsWith(\"bg-\")) return \"bg\"\r\n if (normalized.startsWith(\"rounded\")) return \"rounded\"\r\n if (normalized.startsWith(\"shadow\")) return \"shadow\"\r\n const hyphen = normalized.indexOf(\"-\")\r\n if (hyphen < 0) return normalized\r\n return normalized.slice(0, hyphen)\r\n}\r\n\r\nconst isKnownTailwindClass = (\r\n className: string,\r\n safelist: Set<string>,\r\n customUtilities: Set<string>\r\n): boolean => {\r\n if (safelist.has(className) || customUtilities.has(className)) return true\r\n const { base } = splitVariantAndBase(className)\r\n if (customUtilities.has(base)) return true\r\n const prefix = utilityPrefix(base)\r\n return KNOWN_UTILITY_PREFIXES.has(prefix)\r\n}\r\n\r\nexport const buildSemanticReport = async (\r\n usages: ClassUsage[],\r\n root: string,\r\n semanticOption?: { tailwindConfigPath?: string }\r\n): Promise<AnalyzerSemanticReport> => {\r\n const loadedConfig = await loadTailwindConfig(root, semanticOption)\r\n const safelist = loadedConfig?.safelist ?? new Set<string>()\r\n const customUtilities = loadedConfig?.customUtilities ?? new Set<string>()\r\n const usageNames = new Set(usages.map((usage) => usage.name))\r\n\r\n const unusedClasses: ClassUsage[] = Array.from(safelist)\r\n .filter((className) => !usageNames.has(className))\r\n .sort()\r\n .map((className) => ({ name: className, count: 0, isUnused: true }))\r\n\r\n const unknownClasses: ClassUsage[] = usages\r\n .filter((usage) => !isKnownTailwindClass(usage.name, safelist, customUtilities))\r\n .map((usage) => ({ ...usage, isUnused: true }))\r\n\r\n const { conflicts } = detectConflicts(usages)\r\n\r\n return {\r\n unusedClasses,\r\n unknownClasses,\r\n conflicts,\r\n ...(loadedConfig\r\n ? {\r\n tailwindConfig: {\r\n path: loadedConfig.path,\r\n loaded: loadedConfig.loaded,\r\n safelistCount: loadedConfig.safelist.size,\r\n customUtilityCount: loadedConfig.customUtilities.size,\r\n ...(loadedConfig.warning ? { warning: loadedConfig.warning } : {}),\r\n },\r\n }\r\n : {}),\r\n }\r\n}\r\n","import path from \"node:path\"\r\n\r\nimport type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\r\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\r\n\r\nimport { requireNativeBinding } from \"./binding\"\r\nimport { parseAnalyzerOptions, parseNativeReport } from \"./schemas\"\r\nimport { buildSemanticReport } from \"./semantic\"\r\nimport type { AnalyzerOptions, AnalyzerReport, ClassUsage } from \"./types\"\r\nimport { debugLog, formatErrorMessage, sanitizeFrequentThreshold, sanitizeTopLimit } from \"./utils\"\r\n\r\nfunction normalizeScan(\r\n scan: ScanWorkspaceResult,\r\n includeClass?: (className: string) => boolean\r\n): ScanWorkspaceResult {\r\n if (!includeClass) return scan\r\n\r\n const filteredFiles = scan.files.map((file) => ({\r\n file: file.file,\r\n classes: file.classes.filter((className) => includeClass(className)),\r\n }))\r\n\r\n const unique = new Set<string>()\r\n for (const file of filteredFiles) {\r\n for (const className of file.classes) {\r\n unique.add(className)\r\n }\r\n }\r\n\r\n return {\r\n files: filteredFiles,\r\n totalFiles: scan.totalFiles,\r\n uniqueClasses: Array.from(unique).sort(),\r\n }\r\n}\r\n\r\nexport function collectClassCounts(scan: ScanWorkspaceResult): Map<string, number> {\r\n const counts = new Map<string, number>()\r\n for (const file of scan.files) {\r\n for (const className of file.classes) {\r\n counts.set(className, (counts.get(className) ?? 0) + 1)\r\n }\r\n }\r\n return counts\r\n}\r\n\r\nfunction buildClassUsage(counts: Map<string, number>): ClassUsage[] {\r\n return Array.from(counts.entries())\r\n .map(([name, count]) => ({ name, count }))\r\n .sort((left, right) => {\r\n if (right.count !== left.count) return right.count - left.count\r\n return left.name.localeCompare(right.name)\r\n })\r\n}\r\n\r\nexport function buildDistribution(usages: ClassUsage[]): Record<string, number> {\r\n const distribution = {\r\n \"1\": 0,\r\n \"2-3\": 0,\r\n \"4-7\": 0,\r\n \"8+\": 0,\r\n }\r\n\r\n for (const usage of usages) {\r\n if (usage.count === 1) {\r\n distribution[\"1\"] += 1\r\n } else if (usage.count <= 3) {\r\n distribution[\"2-3\"] += 1\r\n } else if (usage.count <= 7) {\r\n distribution[\"4-7\"] += 1\r\n } else {\r\n distribution[\"8+\"] += 1\r\n }\r\n }\r\n\r\n return distribution\r\n}\r\n\r\n/**\r\n * Analyze Tailwind class usage in a workspace and return usage statistics.\r\n * Set `semantic.tailwindConfigPath` to override Tailwind config lookup.\r\n * @example\r\n * const report = await analyzeWorkspace(\"./src\", {\r\n * classStats: { top: 20, frequentThreshold: 2 },\r\n * semantic: { tailwindConfigPath: \"tailwind.config.js\" },\r\n * })\r\n */\r\nexport async function analyzeWorkspace(\r\n root: string,\r\n options: AnalyzerOptions = {}\r\n): Promise<AnalyzerReport> {\r\n const startedAtMs = Date.now()\r\n const resolvedRoot = path.resolve(root)\r\n const normalizedOptions = parseAnalyzerOptions(options)\r\n\r\n // 1. Scan workspace - const dengan IIFE async\r\n const scan = await (async () => {\r\n const scanStartedAtMs = Date.now()\r\n try {\r\n const result = await scanWorkspaceAsync(resolvedRoot, normalizedOptions.scanner)\r\n debugLog(\r\n `scanWorkspaceAsync processed ${result.totalFiles} files in ${Date.now() - scanStartedAtMs}ms`\r\n )\r\n return result\r\n } catch (error) {\r\n throw new Error(\r\n `Failed to scan workspace at \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\r\n {\r\n cause: error,\r\n }\r\n )\r\n }\r\n })()\r\n\r\n const normalizedScan = normalizeScan(scan, normalizedOptions.includeClass)\r\n const topLimit = sanitizeTopLimit(normalizedOptions.classStats?.top)\r\n const frequentThreshold = sanitizeFrequentThreshold(\r\n normalizedOptions.classStats?.frequentThreshold\r\n )\r\n\r\n const binding = await requireNativeBinding()\r\n const filesJson = JSON.stringify(\r\n normalizedScan.files.map((file) => ({ file: file.file, classes: file.classes }))\r\n )\r\n\r\n // 2. Native report - const dengan IIFE\r\n const nativeReport = (() => {\r\n try {\r\n const report = binding.analyzeClasses(filesJson, resolvedRoot, topLimit)\r\n if (!report) {\r\n throw new Error(`Native analyzer returned no report for \"${resolvedRoot}\".`)\r\n }\r\n return parseNativeReport(report)\r\n } catch (error) {\r\n throw new Error(\r\n `Native analyzer failed for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\r\n {\r\n cause: error,\r\n }\r\n )\r\n }\r\n })()\r\n\r\n const counts = collectClassCounts(normalizedScan)\r\n const baseAll = buildClassUsage(counts)\r\n\r\n // 3. Semantic report - const dengan IIFE async\r\n const { all, semanticReport } = await (async () => {\r\n if (!normalizedOptions.semantic) {\r\n return { all: baseAll, semanticReport: undefined }\r\n }\r\n\r\n const semanticOption =\r\n typeof normalizedOptions.semantic === \"object\" ? normalizedOptions.semantic : undefined\r\n const semanticStartedAtMs = Date.now()\r\n\r\n try {\r\n const report = await buildSemanticReport(baseAll, resolvedRoot, semanticOption)\r\n debugLog(`semantic report built in ${Date.now() - semanticStartedAtMs}ms`)\r\n\r\n if (report.conflicts.length === 0) {\r\n return { all: baseAll, semanticReport: report }\r\n }\r\n\r\n const conflicted = new Set(report.conflicts.flatMap((conflict) => conflict.classes))\r\n const updatedAll = baseAll.map((usage) =>\r\n conflicted.has(usage.name) ? { ...usage, isConflict: true } : usage\r\n )\r\n return { all: updatedAll, semanticReport: report }\r\n } catch (error) {\r\n throw new Error(\r\n `Failed to build semantic report for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\r\n { cause: error }\r\n )\r\n }\r\n })()\r\n\r\n // 4. Statistics - semua const\r\n const top = all.slice(0, topLimit)\r\n const frequent = all.filter((usage) => usage.count >= frequentThreshold).slice(0, topLimit)\r\n const unique = all.filter((usage) => usage.count === 1)\r\n const totalClassOccurrences = all.reduce((sum, usage) => sum + usage.count, 0)\r\n\r\n debugLog(\r\n `analyzeWorkspace completed in ${Date.now() - startedAtMs}ms ` +\r\n `(files=${normalizedScan.totalFiles}, uniqueClasses=${all.length})`\r\n )\r\n\r\n return {\r\n root: nativeReport.root || resolvedRoot,\r\n totalFiles: nativeReport.totalFiles,\r\n uniqueClassCount: all.length,\r\n totalClassOccurrences,\r\n classStats: {\r\n all,\r\n top,\r\n frequent,\r\n unique,\r\n distribution: buildDistribution(all),\r\n },\r\n safelist: all.map((usage) => usage.name),\r\n ...(semanticReport ? { semantic: semanticReport } : {}),\r\n }\r\n}\r\n","import { requireNativeCssCompiler } from \"./binding\"\r\nimport { parseClassToCssOptions, parseNativeCssCompileResult } from \"./schemas\"\r\nimport type { ClassToCssOptions, ClassToCssResult } from \"./types\"\r\nimport { formatErrorMessage } from \"./utils\"\r\n\r\nexport const normalizeClassInput = (input: string | string[]): string[] => {\r\n if (typeof input === \"string\") {\r\n return input\r\n .split(/\\s+/)\r\n .map((item) => item.trim())\r\n .filter((item) => item.length > 0)\r\n }\r\n\r\n if (!Array.isArray(input)) {\r\n throw new TypeError(\"classToCss input must be a string or an array of strings.\")\r\n }\r\n\r\n const out: string[] = []\r\n for (const item of input) {\r\n if (typeof item !== \"string\") {\r\n throw new TypeError(\"classToCss input array must contain only strings.\")\r\n }\r\n const value = item.trim()\r\n if (value.length > 0) out.push(value)\r\n }\r\n return out\r\n}\r\n\r\nconst normalizeClassToCssOptions = (\r\n options: ClassToCssOptions\r\n): {\r\n prefix: string | null\r\n strict: boolean\r\n} => {\r\n const parsed = parseClassToCssOptions(options)\r\n const strict = parsed.strict ?? false\r\n const prefix = parsed.prefix ?? null\r\n\r\n return { prefix, strict }\r\n}\r\n\r\nconst mergeDeclarationMap = (target: Map<string, string>, css: string): void => {\r\n for (const ruleMatch of css.matchAll(/\\{([^}]*)\\}/g)) {\r\n const body = ruleMatch[1]\r\n for (const raw of body.split(\";\")) {\r\n const declaration = raw.trim()\r\n if (declaration.length === 0) continue\r\n const colonIndex = declaration.indexOf(\":\")\r\n if (colonIndex <= 0) continue\r\n const property = declaration.slice(0, colonIndex).trim()\r\n const value = declaration.slice(colonIndex + 1).trim()\r\n if (property.length === 0 || value.length === 0) continue\r\n if (target.has(property)) target.delete(property)\r\n target.set(property, value)\r\n }\r\n }\r\n}\r\n\r\nconst declarationMapToString = (declarationMap: Map<string, string>): string => {\r\n return Array.from(declarationMap.entries())\r\n .map(([property, value]) => `${property}: ${value}`)\r\n .join(\"; \")\r\n}\r\n\r\n/**\r\n * Convert Tailwind class input into atomic CSS output via native binding.\r\n * @example\r\n * const css = await classToCss(\"opacity-0 translate-y-2\", { strict: true })\r\n */\r\nexport const classToCss = async (\r\n input: string | string[],\r\n options: ClassToCssOptions = {}\r\n): Promise<ClassToCssResult> => {\r\n const inputClasses = normalizeClassInput(input)\r\n const normalizedOptions = normalizeClassToCssOptions(options)\r\n\r\n if (inputClasses.length === 0) {\r\n return {\r\n inputClasses: [],\r\n css: \"\",\r\n declarations: \"\",\r\n resolvedClasses: [],\r\n unknownClasses: [],\r\n sizeBytes: 0,\r\n }\r\n }\r\n\r\n const binding = await requireNativeCssCompiler()\r\n const prefix = normalizedOptions.prefix\r\n\r\n const results = await Promise.all(\r\n inputClasses.map(async (className) => {\r\n const compiled = (() => {\r\n try {\r\n return binding.compileCss([className], prefix)\r\n } catch (error) {\r\n throw new Error(\r\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\r\n { cause: error }\r\n )\r\n }\r\n })()\r\n\r\n if (!compiled) {\r\n throw new Error(`Native analyzer returned no result for class \"${className}\".`)\r\n }\r\n\r\n const validated = parseNativeCssCompileResult(compiled, className)\r\n\r\n return {\r\n className,\r\n css: validated.css,\r\n resolvedClasses: validated.resolvedClasses,\r\n unknownClasses: validated.unknownClasses,\r\n sizeBytes: validated.sizeBytes,\r\n }\r\n })\r\n )\r\n\r\n const cssChunks = results.map((r) => r.css)\r\n const resolvedClasses = results.flatMap((r) => r.resolvedClasses)\r\n const unknownClasses = results.flatMap((r) => r.unknownClasses)\r\n const sizeBytes = results.reduce((sum, r) => sum + r.sizeBytes, 0)\r\n\r\n const declarationMap = new Map<string, string>()\r\n for (const result of results) {\r\n mergeDeclarationMap(declarationMap, result.css)\r\n }\r\n\r\n const uniqueUnknown = Array.from(new Set(unknownClasses))\r\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\r\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`)\r\n }\r\n\r\n return {\r\n inputClasses,\r\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\r\n declarations: declarationMapToString(declarationMap),\r\n resolvedClasses: Array.from(new Set(resolvedClasses)),\r\n unknownClasses: uniqueUnknown,\r\n sizeBytes,\r\n }\r\n}\r\n","/**\r\n * @tailwind-styled/analyzer v5\r\n *\r\n * Native-first async analyzer with semantic reporting.\r\n */\r\n\r\nimport { analyzeWorkspace, buildDistribution, collectClassCounts } from \"./analyzeWorkspace\"\r\nimport { classToCss, normalizeClassInput } from \"./classToCss\"\r\nimport {\r\n parseAnalyzerOptions,\r\n parseClassToCssOptions,\r\n parseNativeCssCompileResult,\r\n parseNativeReport,\r\n} from \"./schemas\"\r\nimport { resolveConflictGroup, splitVariantAndBase, utilityPrefix } from \"./semantic\"\r\n\r\nexport type {\r\n AnalyzerOptions,\r\n AnalyzerReport,\r\n AnalyzerSemanticReport,\r\n ClassConflict,\r\n ClassToCssOptions,\r\n ClassToCssResult,\r\n ClassUsage,\r\n} from \"./types\"\r\n\r\nexport { analyzeWorkspace, classToCss }\r\n\r\nexport const __internal = {\r\n normalizeClassInput,\r\n splitVariantAndBase,\r\n resolveConflictGroup,\r\n collectClassCounts,\r\n buildDistribution,\r\n utilityPrefix,\r\n parseAnalyzerOptions,\r\n parseClassToCssOptions,\r\n parseNativeReport,\r\n parseNativeCssCompileResult,\r\n}\r\n","import fs from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\n\r\nexport async function pathExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport async function readFileSafe(filePath: string): Promise<string | null> {\r\n try {\r\n return await fs.readFile(filePath, \"utf8\")\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nexport async function readJsonSafe<T>(filePath: string): Promise<T | null> {\r\n const raw = await readFileSafe(filePath)\r\n if (!raw) return null\r\n try {\r\n return JSON.parse(raw) as T\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nexport async function writeFileSafe(\r\n filePath: string,\r\n content: string,\r\n options: { dryRun?: boolean; onDryRun?: (message: string) => void } = {}\r\n): Promise<void> {\r\n if (options.dryRun) {\r\n options.onDryRun?.(`write ${filePath}`)\r\n return\r\n }\r\n await fs.mkdir(path.dirname(filePath), { recursive: true })\r\n await fs.writeFile(filePath, content, \"utf8\")\r\n}\r\n\r\nexport async function ensureFileSafe(\r\n filePath: string,\r\n content: string,\r\n options: { dryRun?: boolean; onDryRun?: (message: string) => void } = {}\r\n): Promise<\"created\" | \"skipped\"> {\r\n if (await pathExists(filePath)) return \"skipped\"\r\n await writeFileSafe(filePath, content, options)\r\n return \"created\"\r\n}\r\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export interface CliJsonSuccess<T = unknown> {\r\n ok: true\r\n error: false\r\n command: string\r\n generatedAt: string\r\n data: T\r\n}\r\n\r\nexport function toJsonSuccess<T>(command: string, data: T): string {\r\n const payload: CliJsonSuccess<T> = {\r\n ok: true,\r\n error: false,\r\n command,\r\n generatedAt: new Date().toISOString(),\r\n data,\r\n }\r\n return JSON.stringify(payload, null, 2)\r\n}\r\n\r\nexport function writeJsonSuccess<T>(command: string, data: T): void {\r\n process.stdout.write(`${toJsonSuccess(command, data)}\\n`)\r\n}\r\n","import type { Writable } from \"node:stream\"\r\nimport {\r\n intro as clackIntro,\r\n isTTY as clackIsTTY,\r\n note as clackNote,\r\n outro as clackOutro,\r\n spinner as clackSpinner,\r\n} from \"@clack/prompts\"\r\nimport pc from \"picocolors\"\r\n\r\nimport { errorToJson } from \"./errors\"\r\nimport { toJsonSuccess } from \"./json\"\r\n\r\nexport interface CliOutputOptions {\r\n json?: boolean\r\n debug?: boolean\r\n verbose?: boolean\r\n stdout?: Writable\r\n stderr?: Writable\r\n}\r\n\r\nexport interface CliSpinner {\r\n start: (message?: string) => void\r\n stop: (message?: string) => void\r\n error: (message?: string) => void\r\n cancel: (message?: string) => void\r\n message: (message?: string) => void\r\n clear: () => void\r\n}\r\n\r\nexport interface CliOutput {\r\n readonly json: boolean\r\n readonly debug: boolean\r\n readonly verboseEnabled: boolean\r\n readonly interactive: boolean\r\n writeText: (message?: string, options?: { stderr?: boolean }) => void\r\n info: (message: string) => void\r\n success: (message: string) => void\r\n warn: (message: string) => void\r\n error: (message: string) => void\r\n step: (message: string) => void\r\n note: (message: string, title?: string) => void\r\n intro: (message: string) => void\r\n outro: (message: string) => void\r\n table: (rows: unknown) => void\r\n spinner: () => CliSpinner\r\n verbose: (message: string) => void\r\n jsonSuccess: <T>(command: string, data: T) => void\r\n jsonError: (error: unknown, command?: string) => void\r\n header: (message: string) => void\r\n subHeader: (message: string) => void\r\n listItem: (message: string) => void\r\n footer: (message: string) => void\r\n}\r\n\r\nfunction writeLine(stream: Writable, message = \"\"): void {\r\n stream.write(`${message}\\n`)\r\n}\r\n\r\nfunction createNoopSpinner(): CliSpinner {\r\n return {\r\n start() {},\r\n stop() {},\r\n error() {},\r\n cancel() {},\r\n message() {},\r\n clear() {},\r\n }\r\n}\r\n\r\nfunction formatLabel(colorize: (value: string) => string, label: string, message: string): string {\r\n return `${colorize(label)} ${message}`\r\n}\r\n\r\nexport function createCliOutput(options: CliOutputOptions = {}): CliOutput {\r\n const stdout = options.stdout ?? process.stdout\r\n const stderr = options.stderr ?? process.stderr\r\n const json = Boolean(options.json)\r\n const debug = Boolean(options.debug)\r\n const verboseEnabled = Boolean(options.verbose)\r\n const interactive = !json && Boolean(process.stdin.isTTY) && clackIsTTY(stdout)\r\n\r\n function writeText(message = \"\", writeOptions: { stderr?: boolean } = {}): void {\r\n writeLine(writeOptions.stderr || json ? stderr : stdout, message)\r\n }\r\n\r\n function showClackMessage(fn: (message?: string) => void, fallback: string): void {\r\n if (interactive) {\r\n fn(fallback)\r\n return\r\n }\r\n writeText(fallback)\r\n }\r\n\r\n return {\r\n json,\r\n debug,\r\n verboseEnabled,\r\n interactive,\r\n writeText,\r\n info(message: string) {\r\n writeText(formatLabel(pc.cyan, \"info\", message))\r\n },\r\n success(message: string) {\r\n writeText(formatLabel(pc.green, \"ok\", message))\r\n },\r\n warn(message: string) {\r\n writeText(formatLabel(pc.yellow, \"warn\", message), { stderr: true })\r\n },\r\n error(message: string) {\r\n writeText(formatLabel(pc.red, \"error\", message), { stderr: true })\r\n },\r\n step(message: string) {\r\n writeText(formatLabel(pc.blue, \"step\", message))\r\n },\r\n note(message: string, title?: string) {\r\n if (interactive) {\r\n clackNote(message, title)\r\n return\r\n }\r\n if (title) {\r\n writeText(`${title}\\n${message}`)\r\n return\r\n }\r\n writeText(message)\r\n },\r\n intro(message: string) {\r\n showClackMessage(clackIntro, message)\r\n },\r\n outro(message: string) {\r\n showClackMessage(clackOutro, message)\r\n },\r\n table(rows: unknown) {\r\n writeText(JSON.stringify(rows, null, 2))\r\n },\r\n spinner() {\r\n if (!interactive) return createNoopSpinner()\r\n const instance = clackSpinner({ output: stdout })\r\n return {\r\n start(message?: string) {\r\n instance.start(message)\r\n },\r\n stop(message?: string) {\r\n instance.stop(message)\r\n },\r\n error(message?: string) {\r\n instance.error(message)\r\n },\r\n cancel(message?: string) {\r\n instance.cancel(message)\r\n },\r\n message(message?: string) {\r\n instance.message(message)\r\n },\r\n clear() {\r\n instance.clear()\r\n },\r\n }\r\n },\r\n verbose(message: string) {\r\n if (!verboseEnabled) return\r\n writeText(pc.dim(message), { stderr: true })\r\n },\r\n jsonSuccess<T>(command: string, data: T) {\r\n writeLine(stdout, toJsonSuccess(command, data))\r\n },\r\n jsonError(error: unknown, command?: string) {\r\n writeLine(stdout, errorToJson(error, debug, command))\r\n },\r\n header(message: string) {\r\n writeText(`\\n${pc.bold(pc.cyan(message))}\\n`)\r\n },\r\n subHeader(message: string) {\r\n writeText(pc.bold(message))\r\n },\r\n listItem(message: string) {\r\n writeText(` ${pc.dim(\"•\")} ${message}`)\r\n },\r\n footer(message: string) {\r\n writeText(`\\n${pc.dim(message)}\\n`)\r\n },\r\n }\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nexport interface ParsedCliInput {\r\n argv: string[]\r\n command: string | undefined\r\n restArgs: string[]\r\n json: boolean\r\n debug: boolean\r\n verbose: boolean\r\n help: boolean\r\n helpCommand: string | undefined\r\n}\r\n\r\nexport function readFlag(name: string, argv: string[]): string | null {\r\n const withValuePrefix = `--${name}=`\r\n\r\n for (let index = 0; index < argv.length; index++) {\r\n const arg = argv[index]\r\n if (arg.startsWith(withValuePrefix)) {\r\n return arg.slice(withValuePrefix.length)\r\n }\r\n if (arg === `--${name}`) {\r\n const next = argv[index + 1]\r\n if (next && !next.startsWith(\"-\")) {\r\n return next\r\n }\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function hasFlag(name: string, argv: string[]): boolean {\r\n return argv.includes(`--${name}`)\r\n}\r\n\r\nexport function ensureFlag(name: string, argv: string[]): string[] {\r\n return hasFlag(name, argv) ? argv : [...argv, `--${name}`]\r\n}\r\n\r\nexport function firstPositional(argv: string[]): string | undefined {\r\n return argv.find((arg) => !arg.startsWith(\"-\"))\r\n}\r\n\r\nexport function parseCliInput(argv: string[]): ParsedCliInput {\r\n const parsed = parseNodeArgs({\r\n args: argv,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n debug: { type: \"boolean\", default: false },\r\n verbose: { type: \"boolean\", default: false },\r\n help: { type: \"boolean\", short: \"h\", default: false },\r\n },\r\n })\r\n\r\n const commandIndex = argv.findIndex((arg) => !arg.startsWith(\"-\"))\r\n const command = commandIndex >= 0 ? argv[commandIndex] : undefined\r\n const restArgs = commandIndex >= 0 ? argv.slice(commandIndex + 1) : []\r\n const firstPositionalArg = parsed.positionals[0]\r\n const helpCommand =\r\n firstPositionalArg === \"help\"\r\n ? parsed.positionals[1]\r\n : parsed.values.help\r\n ? firstPositionalArg\r\n : undefined\r\n\r\n return {\r\n argv,\r\n command,\r\n restArgs,\r\n json: Boolean(parsed.values.json),\r\n debug:\r\n Boolean(parsed.values.debug) || process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose:\r\n Boolean(parsed.values.verbose) ||\r\n process.env.TWS_VERBOSE === \"1\" ||\r\n process.env.VERBOSE === \"1\",\r\n help:\r\n Boolean(parsed.values.help) ||\r\n firstPositionalArg === \"help\" ||\r\n command === undefined ||\r\n command === \"--help\" ||\r\n command === \"-h\",\r\n helpCommand,\r\n }\r\n}\r\n","import path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\n\r\nimport { CliUsageError } from \"./errors\"\r\nimport { pathExists } from \"./fs\"\r\n\r\nexport function runtimeDirFromImportMeta(importMetaUrl: string): string {\r\n const filename = fileURLToPath(importMetaUrl)\r\n return path.dirname(filename)\r\n}\r\n\r\nexport async function resolveMonorepoPath(\r\n runtimeDir: string,\r\n relativeToRepoRoot: string\r\n): Promise<string> {\r\n const fromRuntime = path.resolve(runtimeDir, \"..\", \"..\", \"..\", relativeToRepoRoot)\r\n const fromCwd = path.resolve(process.cwd(), relativeToRepoRoot)\r\n return (await pathExists(fromRuntime)) ? fromRuntime : fromCwd\r\n}\r\n\r\nexport async function ensureScriptPath(\r\n runtimeDir: string,\r\n relativeToRepoRoot: string,\r\n label = relativeToRepoRoot\r\n): Promise<string> {\r\n const resolved = await resolveMonorepoPath(runtimeDir, relativeToRepoRoot)\r\n if (!(await pathExists(resolved))) {\r\n throw new CliUsageError(`Required script not found: ${label}`)\r\n }\r\n return resolved\r\n}\r\n\r\nexport async function firstExistingPath(paths: string[]): Promise<string | null> {\r\n for (const candidate of paths) {\r\n if (await pathExists(candidate)) return candidate\r\n }\r\n return null\r\n}\r\n","import type { Command as CommanderCommand } from \"commander\"\r\nimport type { CommandContext } from \"../commands/types\"\r\nimport { parseCliInput } from \"./args\"\r\nimport { CliUsageError, errorExitCode } from \"./errors\"\r\nimport { createCliOutput } from \"./output\"\r\nimport { runtimeDirFromImportMeta } from \"./paths\"\r\n\r\ninterface CommanderLikeError extends Error {\r\n code?: string\r\n exitCode?: number\r\n}\r\n\r\nexport interface CliMainOptions {\r\n argv?: string[]\r\n importMetaUrl: string\r\n commandHint?: string\r\n buildProgram: (context: CommandContext) => CommanderCommand\r\n}\r\n\r\nconst isCommanderLikeError = (error: unknown): error is CommanderLikeError => {\r\n return error instanceof Error && typeof (error as CommanderLikeError).code === \"string\"\r\n}\r\n\r\nconst isHelpExit = (error: unknown): boolean => {\r\n return isCommanderLikeError(error) && error.code === \"commander.helpDisplayed\"\r\n}\r\n\r\nconst normalizeCliError = (error: unknown): unknown => {\r\n if (!isCommanderLikeError(error)) return error\r\n if (!error.code?.startsWith(\"commander.\")) return error\r\n return new CliUsageError(error.message, { cause: error })\r\n}\r\n\r\nconst findCommandByPath = (program: CommanderCommand, pathParts: string[]): CommanderCommand => {\r\n const foundCommand = pathParts.reduce<CommanderCommand>((current, part) => {\r\n const next = ((current.commands ?? []) as CommanderCommand[]).find((candidate) => {\r\n const alias = typeof candidate.alias === \"function\" ? candidate.alias() : undefined\r\n return candidate.name() === part || alias === part\r\n })\r\n\r\n if (!next) {\r\n throw new CliUsageError(`Unknown help topic: ${pathParts.join(\" \")}`)\r\n }\r\n return next\r\n }, program)\r\n\r\n return foundCommand\r\n}\r\n\r\nexport const resolveCommandHelp = (program: CommanderCommand, pathParts: string[]): string => {\r\n return findCommandByPath(program, pathParts).helpInformation()\r\n}\r\n\r\nconst resolveHelpPath = (argv: string[]): string[] | null => {\r\n const positional = argv.filter((arg) => !arg.startsWith(\"-\"))\r\n\r\n if (argv.length === 0) return []\r\n if (positional.length === 0) return []\r\n if (positional[0] === \"help\") return positional.slice(1)\r\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) return positional\r\n\r\n return null\r\n}\r\n\r\nconst walkCommands = (\r\n program: CommanderCommand,\r\n visit: (command: CommanderCommand) => void\r\n): void => {\r\n visit(program)\r\n for (const command of (program.commands ?? []) as CommanderCommand[]) {\r\n walkCommands(command, visit)\r\n }\r\n}\r\n\r\nexport async function runCliMain(options: CliMainOptions): Promise<void> {\r\n const argv = options.argv ?? process.argv\r\n const input = parseCliInput(argv.slice(2))\r\n\r\n // Redirect console logs to stderr in JSON mode BEFORE anything else\r\n if (input.json) {\r\n const _origLog = console.log\r\n const _origWarn = console.warn\r\n const _origDebug = console.debug\r\n const toStderr = (...args: unknown[]) => process.stderr.write(args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \") + \"\\n\")\r\n console.log = toStderr\r\n console.warn = toStderr\r\n console.debug = toStderr\r\n process.on(\"exit\", () => { console.log = _origLog; console.warn = _origWarn; console.debug = _origDebug })\r\n }\r\n\r\n if (input.verbose) process.env.TWS_VERBOSE = \"1\"\r\n if (input.debug) process.env.TWS_DEBUG = \"1\"\r\n\r\n const output = createCliOutput({\r\n json: input.json,\r\n debug: input.debug,\r\n verbose: input.verbose,\r\n })\r\n\r\n const context: CommandContext = {\r\n runtimeDir: runtimeDirFromImportMeta(options.importMetaUrl),\r\n json: input.json,\r\n debug: input.debug,\r\n verbose: input.verbose,\r\n output,\r\n cwd: process.cwd(),\r\n }\r\n\r\n const program = options.buildProgram(context)\r\n\r\n walkCommands(program, (command) => {\r\n if (input.json) {\r\n command.configureOutput({\r\n writeOut() {},\r\n writeErr() {},\r\n outputError() {},\r\n })\r\n }\r\n command.exitOverride()\r\n })\r\n\r\n try {\r\n const helpPath = resolveHelpPath(argv.slice(2))\r\n const isJsonHelp = input.json && helpPath\r\n\r\n if (isJsonHelp) {\r\n output.jsonSuccess(\"help\", {\r\n command: helpPath.length > 0 ? helpPath.join(\" \") : null,\r\n text: resolveCommandHelp(program, helpPath).trim(),\r\n })\r\n return\r\n }\r\n\r\n await program.parseAsync(argv)\r\n } catch (error) {\r\n const isHelpError = isHelpExit(error)\r\n if (isHelpError) return\r\n\r\n const normalized = normalizeCliError(error)\r\n const isJson = input.json\r\n\r\n if (isJson) {\r\n output.jsonError(normalized, options.commandHint ?? input.command)\r\n } else if (input.debug && normalized instanceof Error && normalized.stack) {\r\n output.writeText(normalized.stack, { stderr: true })\r\n } else if (normalized instanceof Error) {\r\n output.writeText(normalized.message, { stderr: true })\r\n } else {\r\n output.writeText(String(normalized), { stderr: true })\r\n }\r\n\r\n process.exitCode = errorExitCode(normalized)\r\n }\r\n}\r\n","#!/usr/bin/env node\r\n\r\nimport path from \"node:path\"\r\nimport { isCancel, select, text } from \"@clack/prompts\"\r\nimport { Command } from \"commander\"\r\n\r\nimport type { CommandContext } from \"./commands/types\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists, writeFileSafe } from \"./utils/fs\"\r\nimport { runCliMain } from \"./utils/runtime\"\r\n\r\nconst TEMPLATE_NAMES = [\"next-app\", \"vite-react\", \"vite-vue\", \"vite-svelte\", \"simple\"] as const\r\n\r\ntype TemplateName = (typeof TEMPLATE_NAMES)[number]\r\n\r\ninterface CreateCliOptions {\r\n name?: string\r\n template?: string\r\n yes: boolean\r\n dryRun: boolean\r\n}\r\n\r\ninterface CreateContext {\r\n projectDir: string\r\n name: string\r\n dryRun: boolean\r\n writtenFiles: string[]\r\n}\r\n\r\ninterface CreateReport {\r\n name: string\r\n template: TemplateName\r\n projectDir: string\r\n dryRun: boolean\r\n filesCreated: number\r\n files: string[]\r\n}\r\n\r\ntype TemplateHandler = (context: CreateContext) => Promise<void>\r\n\r\nconst TEMPLATES: Record<TemplateName, TemplateHandler> = {\r\n \"next-app\": createNextApp,\r\n \"vite-react\": createViteReactApp,\r\n \"vite-vue\": createViteVueApp,\r\n \"vite-svelte\": createViteSvelteApp,\r\n simple: createSimpleApp,\r\n}\r\n\r\nfunction isTemplateName(value: string): value is TemplateName {\r\n return TEMPLATE_NAMES.includes(value as TemplateName)\r\n}\r\n\r\nfunction isInteractiveSession(): boolean {\r\n return Boolean(process.stdin.isTTY && process.stdout.isTTY)\r\n}\r\n\r\nasync function resolveCreateInput(options: CreateCliOptions): Promise<{\r\n name: string\r\n template: TemplateName\r\n}> {\r\n const interactive = isInteractiveSession()\r\n const resolvedName = options.name\r\n ? options.name\r\n : options.yes || !interactive\r\n ? \"my-app\"\r\n : await text({\r\n message: \"Project name\",\r\n defaultValue: \"my-app\",\r\n placeholder: \"my-app\",\r\n })\r\n\r\n if (isCancel(resolvedName)) {\r\n throw new CliUsageError(\"Create prompt dibatalkan oleh pengguna\")\r\n }\r\n\r\n const pickedTemplate = options.template\r\n ? options.template\r\n : options.yes || !interactive\r\n ? \"next-app\"\r\n : await select<TemplateName>({\r\n message: \"Template\",\r\n initialValue: \"next-app\",\r\n options: TEMPLATE_NAMES.map((template) => ({\r\n value: template,\r\n label: template,\r\n })),\r\n })\r\n\r\n if (isCancel(pickedTemplate)) {\r\n throw new CliUsageError(\"Create prompt dibatalkan oleh pengguna\")\r\n }\r\n\r\n const templateValue = pickedTemplate\r\n\r\n if (!isTemplateName(templateValue)) {\r\n throw new CliUsageError(\r\n `Unknown template: ${templateValue}. Valid templates: ${TEMPLATE_NAMES.join(\", \")}`\r\n )\r\n }\r\n\r\n return { name: resolvedName, template: templateValue }\r\n}\r\n\r\nasync function writeProjectFile(\r\n context: CreateContext,\r\n relativePath: string,\r\n content: string\r\n): Promise<void> {\r\n const filePath = path.join(context.projectDir, relativePath)\r\n await writeFileSafe(filePath, content, { dryRun: context.dryRun })\r\n context.writtenFiles.push(relativePath.replaceAll(\"\\\\\", \"/\"))\r\n}\r\n\r\nasync function createNextApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n version: \"0.1.0\",\r\n private: true,\r\n scripts: { dev: \"next dev --turbopack\", build: \"next build\", start: \"next start\" },\r\n dependencies: {\r\n next: \"^15\",\r\n react: \"^19\",\r\n \"react-dom\": \"^19\",\r\n \"tailwind-styled-v4\": \"^5.0.0\",\r\n \"tailwind-styled-v4/next\": \"^5.0.0\",\r\n },\r\n devDependencies: {\r\n tailwindcss: \"^4\",\r\n typescript: \"^5\",\r\n \"@types/react\": \"^19\",\r\n \"@types/node\": \"^20\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"next.config.ts\",\r\n `import type { NextConfig } from \"next\"\r\nimport { withTailwindStyled } from \"tailwind-styled-v4/next\"\r\n\r\nconst nextConfig: NextConfig = {}\r\nexport default withTailwindStyled()(nextConfig)\r\n`\r\n )\r\n\r\n await writeProjectFile(context, \"src/app/globals.css\", '@import \"tailwindcss\";\\n')\r\n await writeProjectFile(\r\n context,\r\n \"src/app/layout.tsx\",\r\n `import \"./globals.css\"\r\n\r\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\r\n return <html lang=\"en\"><body>{children}</body></html>\r\n}\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/app/page.tsx\",\r\n `import { tw } from \"tailwind-styled-v4\"\r\n\r\nconst Page = tw.main\\`min-h-screen grid place-items-center bg-zinc-950 text-white\\`\r\n\r\nexport default function HomePage() {\r\n return <Page>${context.name}</Page>\r\n}\r\n`\r\n )\r\n}\r\n\r\nasync function createViteReactApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n private: true,\r\n type: \"module\",\r\n scripts: { dev: \"vite\", build: \"vite build\", preview: \"vite preview\" },\r\n dependencies: { react: \"^19\", \"react-dom\": \"^19\", \"tailwind-styled-v4\": \"^5.0.0\" },\r\n devDependencies: {\r\n \r\n vite: \"^6\",\r\n \"@vitejs/plugin-react\": \"^4\",\r\n tailwindcss: \"^4\",\r\n typescript: \"^5\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"vite.config.ts\",\r\n `import { defineConfig } from \"vite\"\r\nimport react from \"@vitejs/plugin-react\"\r\nimport { tailwindStyledPlugin } from \"tailwind-styled-v4/vite\"\r\n\r\nexport default defineConfig({ plugins: [react(), tailwindStyledPlugin()] })\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/main.tsx\",\r\n `console.log(\"${context.name} - vite react template\")\r\n`\r\n )\r\n}\r\n\r\nasync function createViteVueApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n private: true,\r\n type: \"module\",\r\n scripts: { dev: \"vite\", build: \"vite build\", preview: \"vite preview\" },\r\n dependencies: {\r\n vue: \"^3.4.0\",\r\n \"tailwind-merge\": \"^3.5.0\",\r\n \"tailwind-styled-v4/vue\": \"^5.0.0\",\r\n },\r\n devDependencies: {\r\n vite: \"^5.0.0\",\r\n \"@vitejs/plugin-vue\": \"^5.0.0\",\r\n typescript: \"^5.0.0\",\r\n tailwindcss: \"^4.0.0\",\r\n \"@tailwindcss/vite\": \"^4.0.0\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"vite.config.ts\",\r\n `import { defineConfig } from \"vite\"\r\nimport vue from \"@vitejs/plugin-vue\"\r\nimport tailwindcss from \"@tailwindcss/vite\"\r\n\r\nexport default defineConfig({\r\n plugins: [vue(), tailwindcss()],\r\n})\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/main.ts\",\r\n `import { createApp } from \"vue\"\r\nimport { TailwindStyledPlugin } from \"tailwind-styled-v4/vue\"\r\nimport App from \"./App.vue\"\r\nimport \"./style.css\"\r\n\r\ncreateApp(App).use(TailwindStyledPlugin).mount(\"#app\")\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/App.vue\",\r\n `<script setup lang=\"ts\">\r\nimport { ref } from \"vue\"\r\nimport { tw } from \"tailwind-styled-v4/vue\"\r\n\r\nconst Button = tw(\"button\", {\r\n base: \"px-4 py-2 rounded-lg font-medium transition-colors focus:outline-none focus:ring-2\",\r\n variants: {\r\n intent: {\r\n primary: \"bg-blue-500 text-white hover:bg-blue-600 focus:ring-blue-500\",\r\n ghost: \"bg-transparent border border-gray-200 hover:bg-gray-50 focus:ring-gray-200\",\r\n },\r\n },\r\n defaultVariants: { intent: \"primary\" },\r\n})\r\n\r\nconst count = ref(0)\r\n</script>\r\n\r\n<template>\r\n <div class=\"min-h-screen flex flex-col items-center justify-center gap-6 bg-gray-50\">\r\n <h1 class=\"text-3xl font-bold text-gray-900\">tailwind-styled + Vue 3</h1>\r\n <Button @click=\"count++\">Count: {{ count }}</Button>\r\n <Button intent=\"ghost\" @click=\"count = 0\">Reset</Button>\r\n </div>\r\n</template>\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/style.css\",\r\n `@import \"tailwindcss\";\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"index.html\",\r\n `<!doctype html>\r\n<html lang=\"en\">\r\n <head><meta charset=\"UTF-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\r\n <title>${context.name}</title></head>\r\n <body><div id=\"app\"></div><script type=\"module\" src=\"/src/main.ts\"></script></body>\r\n</html>\r\n`\r\n )\r\n}\r\n\r\nasync function createViteSvelteApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n private: true,\r\n type: \"module\",\r\n scripts: { dev: \"vite\", build: \"vite build\", preview: \"vite preview\" },\r\n dependencies: { \"tailwind-merge\": \"^3.5.0\", \"tailwind-styled-v4/svelte\": \"^5.0.0\" },\r\n devDependencies: {\r\n svelte: \"^5.0.0\",\r\n \"@sveltejs/vite-plugin-svelte\": \"^3.0.0\",\r\n vite: \"^5.0.0\",\r\n typescript: \"^5.0.0\",\r\n tailwindcss: \"^4.0.0\",\r\n \"@tailwindcss/vite\": \"^4.0.0\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"vite.config.ts\",\r\n `import { defineConfig } from \"vite\"\r\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\"\r\nimport tailwindcss from \"@tailwindcss/vite\"\r\n\r\nexport default defineConfig({\r\n plugins: [svelte(), tailwindcss()],\r\n})\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/main.ts\",\r\n `import App from \"./App.svelte\"\r\nimport \"./app.css\"\r\n\r\nconst app = new App({ target: document.getElementById(\"app\")! })\r\nexport default app\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/App.svelte\",\r\n `<script lang=\"ts\">\r\n import { cv } from \"tailwind-styled-v4/svelte\"\r\n\r\n const button = cv({\r\n base: \"px-4 py-2 rounded-lg font-medium transition-colors focus:outline-none\",\r\n variants: {\r\n intent: {\r\n primary: \"bg-blue-500 text-white hover:bg-blue-600\",\r\n ghost: \"bg-transparent border border-gray-200 hover:bg-gray-50\",\r\n },\r\n },\r\n defaultVariants: { intent: \"primary\" },\r\n })\r\n\r\n let count = 0\r\n</script>\r\n\r\n<div class=\"min-h-screen flex flex-col items-center justify-center gap-6 bg-gray-50\">\r\n <h1 class=\"text-3xl font-bold text-gray-900\">tailwind-styled + Svelte 5</h1>\r\n <button class={button({ intent: \"primary\" })} on:click={() => count++}>Count: {count}</button>\r\n <button class={button({ intent: \"ghost\" })} on:click={() => (count = 0)}>Reset</button>\r\n</div>\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/app.css\",\r\n `@import \"tailwindcss\";\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"index.html\",\r\n `<!doctype html>\r\n<html lang=\"en\">\r\n <head><meta charset=\"UTF-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\r\n <title>${context.name}</title></head>\r\n <body><div id=\"app\"></div><script type=\"module\" src=\"/src/main.ts\"></script></body>\r\n</html>\r\n`\r\n )\r\n}\r\n\r\nasync function createSimpleApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n { name: context.name, private: true, scripts: { dev: \"node index.js\" } },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n await writeProjectFile(\r\n context,\r\n \"index.js\",\r\n \"console.log('tailwind-styled simple template ready')\\n\"\r\n )\r\n}\r\n\r\nasync function createProject(\r\n options: CreateCliOptions,\r\n output: CommandContext[\"output\"]\r\n): Promise<void> {\r\n const { name, template } = await resolveCreateInput(options)\r\n const projectDir = path.resolve(process.cwd(), name)\r\n\r\n if (await pathExists(projectDir)) {\r\n throw new CliUsageError(`Directory ${name} already exists.`)\r\n }\r\n\r\n const context: CreateContext = {\r\n projectDir,\r\n name,\r\n dryRun: options.dryRun,\r\n writtenFiles: [],\r\n }\r\n\r\n await TEMPLATES[template](context)\r\n\r\n const report: CreateReport = {\r\n name,\r\n template,\r\n projectDir,\r\n dryRun: context.dryRun,\r\n filesCreated: context.writtenFiles.length,\r\n files: context.writtenFiles,\r\n }\r\n\r\n if (output.json) {\r\n output.jsonSuccess(\"create\", report)\r\n return\r\n }\r\n\r\n output.intro(\"tailwind-styled-v4 Project Generator\")\r\n output.writeText(`Creating ${template} in ./${name}${context.dryRun ? \" (dry-run)\" : \"\"}`)\r\n output.writeText(`Files ${context.dryRun ? \"planned\" : \"created\"}: ${report.filesCreated}`)\r\n output.note(`cd ${name}\\nnpm install\\nnpm run dev`, \"Next steps\")\r\n output.outro(\"Project scaffold ready\")\r\n}\r\n\r\nexport function buildCreateProgram(context: CommandContext): Command {\r\n const program = new Command(\"create-tailwind-styled\")\r\n program\r\n .name(\"create-tailwind-styled\")\r\n .description(\"CLI scaffolding tool\")\r\n .option(\"--json\", \"Output strict JSON envelope\")\r\n .option(\"--debug\", \"Include stack traces for errors\")\r\n .option(\"--verbose\", \"Verbose runtime logs\")\r\n .arguments(\"[name]\")\r\n .option(\"-y, --yes\", \"Skip prompts\")\r\n .option(\"--template <template>\", \"Template name\")\r\n .option(\"--dry-run\", \"Preview generated files\")\r\n .action(async (name: string | undefined, options: Record<string, unknown>) => {\r\n await createProject(\r\n {\r\n name,\r\n template: typeof options.template === \"string\" ? options.template : undefined,\r\n yes: Boolean(options.yes),\r\n dryRun: Boolean(options.dryRun),\r\n },\r\n context.output\r\n )\r\n })\r\n\r\n return program\r\n}\r\n\r\nexport async function main(rawArgs: string[] = process.argv.slice(2)): Promise<void> {\r\n await runCliMain({\r\n argv: [process.execPath, \"create-tailwind-styled\", ...rawArgs],\r\n importMetaUrl: import.meta.url,\r\n commandHint: \"create\",\r\n buildProgram: buildCreateProgram,\r\n })\r\n}","/**\r\n * tailwind-styled-v5 — Native Bridge Loader\r\n *\r\n * Uses @tailwind-styled/shared for native binding resolution.\r\n * All functions require native Rust binding - no JS fallback.\r\n */\r\n\r\nimport { resolveNativeBinary, resolveRuntimeDir } from \"@tailwind-styled/shared\"\r\nimport { createRequire } from \"node:module\"\r\n\r\nexport interface ComponentMetadata {\r\n component: string\r\n tag: string\r\n baseClass: string\r\n subComponents: Record<string, { tag?: string; class: string }>\r\n}\r\n\r\nexport interface NativeRscResult {\r\n isServer: boolean\r\n needsClientDirective: boolean\r\n clientReasons: string[]\r\n}\r\n\r\nconst log = (...args: unknown[]) => {\r\n if (process.env.DEBUG?.includes(\"compiler:native\")) {\r\n console.log(\"[compiler:native]\", ...args)\r\n }\r\n}\r\n\r\n// ── Type Exports ────────────────────────────────────────────────────────────────\r\n\r\nexport interface NativeBridge {\r\n // Core transform\r\n transformSource?: (source: string, opts?: Record<string, string>) => NativeTransformResult | null\r\n extractClassesFromSource?: (source: string) => string[]\r\n hasTwUsage?: (source: string) => boolean\r\n isAlreadyTransformed?: (source: string) => boolean\r\n // Class Extractor\r\n extractAllClasses?: (source: string) => string[]\r\n parseClasses?: (raw: string) => Array<{ raw: string; type: string }>\r\n // Application functions\r\n extractComponentUsage?: (source: string) => Array<{ component: string; propsJson: string }>\r\n normalizeAndDedupClasses?: (raw: string) => { normalized: string; duplicatesRemoved: number; uniqueCount: number }\r\n diffClassLists?: (previous: string[], current: string[]) => { added: string[]; removed: string[]; unchanged: string[]; hasChanges: boolean }\r\n batchExtractClasses?: (filePaths: string[]) => Array<{ file: string; classes: string[]; contentHash: string; ok: boolean; error?: string }>\r\n checkAgainstSafelist?: (classes: string[], safelist: string[]) => { matched: string[]; unmatched: string[]; safelistSize: number }\r\n // Batch 2\r\n hoistComponents?: (source: string) => { code: string; hoisted: string[]; warnings: string[] }\r\n compileVariantTable?: (configJson: string) => { id: string; tableJson: string; keys: string[]; defaultKey: string; combinations: number }\r\n classifyAndSortClasses?: (classes: string[]) => Array<{ className: string; bucket: string; sortOrder: number }>\r\n mergeCssDeclarations?: (cssChunks: string[]) => { declarationsJson: string; declarationString: string; count: number }\r\n analyzeClassUsage?: (classes: string[], scanResultJson: string, css: string) => Array<{ className: string; usageCount: number; filesJson: string; bundleSizeBytes: number; isDeadCode: boolean }>\r\n analyzeRsc?: (source: string, filename: string) => {\r\n isServer: boolean\r\n needsClientDirective: boolean\r\n clientReasons: string[]\r\n }\r\n analyzeClasses?: (\r\n filesJson: string,\r\n cwd: string,\r\n flags: number\r\n ) => {\r\n css?: string\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rscJson?: string\r\n metadataJson?: string\r\n safelist?: string[]\r\n } | null\r\n // CSS compilation\r\n compileCss?: (classes: string[], prefix?: string | null) => { css: string; classes: string[] }\r\n compileCssLightning?: (classes: string[]) => string\r\n /** Post-process raw Tailwind-generated CSS dengan LightningCSS di Rust */\r\n processTailwindCssLightning?: (css: string) => { css: string; size_bytes: number; resolved_classes: string[]; unknown_classes: string[] }\r\n}\r\n\r\nexport interface NativeTransformResult {\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rscJson?: string\r\n metadataJson?: string\r\n}\r\n\r\nexport interface ClassExtractResult {\r\n classes: string[]\r\n component_names: string[]\r\n has_tw_usage: boolean\r\n has_use_client: boolean\r\n imports: string[]\r\n}\r\n\r\nconst NATIVE_UNAVAILABLE_MESSAGE =\r\n \"[tailwind-styled/compiler v5] Native binding is required but not available.\\n\" +\r\n \"This package requires native Rust bindings. There is no JavaScript fallback.\\n\" +\r\n \"Please ensure:\\n\" +\r\n \" 1. The native module is properly installed\\n\" +\r\n \" 2. You have run: npm run build:rust (or use prebuilt binary)\\n\" +\r\n \"\\n\" +\r\n \"For help, see: https://tailwind-styled.dev/docs/install\"\r\n\r\n// ── Native Bridge - Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nlet nativeBridge: NativeBridge | null = null\r\nlet bridgeLoadAttempted = false\r\nlet bridgeLoadError: Error | null = null\r\n\r\nconst isValidNativeBridge = (mod: unknown): mod is NativeBridge => {\r\n const m = mod as Partial<NativeBridge>\r\n return !!(\r\n typeof m.transformSource === \"function\" ||\r\n typeof m.extractAllClasses === \"function\" ||\r\n typeof m.hasTwUsage === \"function\"\r\n )\r\n}\r\n\r\nexport const getNativeBridge = (): NativeBridge => {\r\n if (nativeBridge) {\r\n return nativeBridge\r\n }\r\n\r\n if (bridgeLoadAttempted) {\r\n if (bridgeLoadError) {\r\n throw bridgeLoadError\r\n }\r\n throw new Error(NATIVE_UNAVAILABLE_MESSAGE)\r\n }\r\n\r\n bridgeLoadAttempted = true\r\n\r\n try {\r\n const runtimeDir = resolveRuntimeDir(undefined, import.meta.url)\r\n const require = createRequire(import.meta.url)\r\n \r\n // Use shared's native resolution\r\n const result = resolveNativeBinary(runtimeDir)\r\n\r\n if (result.path && result.path.endsWith(\".node\")) {\r\n try {\r\n const binding = require(result.path) as NativeBridge\r\n if (isValidNativeBridge(binding)) {\r\n nativeBridge = binding\r\n log(\"Native bridge loaded successfully from:\", result.path)\r\n return nativeBridge\r\n }\r\n } catch (e) {\r\n log(\"Failed to require native binding:\", e)\r\n }\r\n }\r\n\r\n throw new Error(`${NATIVE_UNAVAILABLE_MESSAGE}\\n\\nTried paths: ${result.tried.join(\"\\n\")}`)\r\n } catch (err) {\r\n bridgeLoadError = err instanceof Error ? err : new Error(String(err))\r\n log(\"Failed to load native bridge:\", bridgeLoadError.message)\r\n throw bridgeLoadError\r\n }\r\n}\r\n\r\nexport const resetNativeBridgeCache = (): void => {\r\n nativeBridge = null\r\n bridgeLoadAttempted = false\r\n bridgeLoadError = null\r\n log(\"Native bridge cache reset\")\r\n}\r\n\r\n// ── Adaptor for native results\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport const adaptNativeResult = (\r\n raw: NativeTransformResult\r\n): {\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rsc?: NativeRscResult\r\n metadata?: ComponentMetadata[]\r\n} => {\r\n return {\r\n code: raw.code ?? \"\",\r\n classes: raw.classes ?? [],\r\n changed: raw.changed ?? false,\r\n rsc: raw.rscJson ? JSON.parse(raw.rscJson) : undefined,\r\n metadata: raw.metadataJson ? JSON.parse(raw.metadataJson) : undefined,\r\n }\r\n}\r\n\r\n// ── Eager init — load native bridge saat module dimuat, bukan saat request pertama\r\n// Mencegah crash di Turbopack dev mode karena lazy init mid-request\r\n// ─────────────────────────────────────────────────────────────────────────────\r\nif (typeof process !== \"undefined\" && !bridgeLoadAttempted) {\r\n try {\r\n getNativeBridge()\r\n } catch {\r\n // Sudah di-capture di bridgeLoadError — akan di-throw saat dipanggil pertama kali\r\n }\r\n}","import { Command } from \"commander\"\r\n\r\nimport { runAnalyzeCli } from \"../analyze\"\r\nimport { runExtractCli } from \"../extract\"\r\nimport { runInitCli } from \"../init\"\r\nimport { runMigrateCli } from \"../migrate\"\r\nimport { runScanCli } from \"../scan\"\r\nimport { runSetupCli } from \"../setup\"\r\nimport { runStatsCli } from \"../stats\"\r\nimport { resolveCommandHelp } from \"../utils/runtime\"\r\nimport { boundaryCommand } from \"./boundary\"\r\nimport { createCommand } from \"./create\"\r\nimport { dashboardCommand } from \"./dashboard\"\r\nimport { deployCommand } from \"./deploy\"\r\nimport { runDoctorCli } from \"./doctor\"\r\nimport { miscCommands } from \"./misc\"\r\nimport { pluginCommand } from \"./plugin\"\r\nimport { preflightCommand } from \"./preflight\"\r\nimport { installRegistryCommand, registryCommand } from \"./registry\"\r\nimport { scriptCommands } from \"./scriptCommands\"\r\nimport { storybookCommand } from \"./storybook\"\r\nimport { studioCommand } from \"./studio\"\r\nimport { syncCommand } from \"./sync\"\r\nimport { runTraceCli } from \"./trace\"\r\nimport { runGenerateTypesCli } from \"../generateTypes\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\nimport { runWhyCli } from \"./why\"\r\n\r\nfunction contextArgs(args: string[], context: CommandContext): string[] {\r\n return context.json ? [...args, \"--json\"] : args\r\n}\r\n\r\nfunction leaf(commands: CommandDefinition[], name: string): CommandDefinition {\r\n const found = commands.find((command) => command.name === name)\r\n if (!found) {\r\n throw new Error(`Command definition not found: ${name}`)\r\n }\r\n return found\r\n}\r\n\r\nfunction actionCommand(args: unknown[]): Command {\r\n return args[args.length - 1] as Command\r\n}\r\n\r\nfunction toVariadic(value: string | string[] | undefined): string[] {\r\n if (!value) return []\r\n return Array.isArray(value) ? value : [value]\r\n}\r\n\r\nexport function buildMainProgram(context: CommandContext): Command {\r\n const _miscByName = new Map(miscCommands.map((command) => [command.name, command]))\r\n const scriptByName = new Map(scriptCommands.map((command) => [command.name, command]))\r\n\r\n const program = new Command(\"tw\")\r\n program\r\n .name(\"tw\")\r\n .description(\"tailwind-styled-v4 CLI\")\r\n .option(\"--json\", \"Output strict JSON envelope\")\r\n .option(\"--debug\", \"Include stack traces for errors\")\r\n .option(\"--verbose\", \"Verbose runtime logs\")\r\n\r\n program\r\n .command(\"setup\")\r\n .description(\"Auto-setup project\")\r\n .option(\"--yes\", \"Skip prompts\")\r\n .option(\"--next\", \"Force Next.js\")\r\n .option(\"--vite\", \"Force Vite\")\r\n .option(\"--rspack\", \"Force Rspack\")\r\n .option(\"--react\", \"Force React\")\r\n .option(\"--dry-run\", \"Preview changes\")\r\n .option(\"--skip-install\", \"Skip package install\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.yes) args.push(\"--yes\")\r\n if (options.next) args.push(\"--next\")\r\n if (options.vite) args.push(\"--vite\")\r\n if (options.rspack) args.push(\"--rspack\")\r\n if (options.react) args.push(\"--react\")\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n if (options.skipInstall) args.push(\"--skip-install\")\r\n await runSetupCli(contextArgs(args, context))\r\n })\r\n\r\n program\r\n .command(\"create [name]\")\r\n .description(\"Create project from template\")\r\n .option(\"-y, --yes\", \"Skip prompts\")\r\n .option(\"--template <template>\", \"Template name\")\r\n .option(\"--dry-run\", \"Preview generated files\")\r\n .action(async (name: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (name) args.push(name)\r\n if (options.template) args.push(`--template=${options.template}`)\r\n if (options.yes) args.push(\"--yes\")\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n await createCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"init [target]\")\r\n .description(\"Initialize tailwind-styled config files\")\r\n .action(async (target?: string) => {\r\n await runInitCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"scan [target]\")\r\n .description(\"Scan classes in workspace\")\r\n .action(async (target?: string) => {\r\n await runScanCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"migrate [target]\")\r\n .description(\"Migrate project patterns to v4\")\r\n .option(\"--dry-run\", \"Preview changes\")\r\n .option(\"--wizard\", \"Use interactive wizard\")\r\n .action(async (target: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (target) args.push(target)\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n if (options.wizard) args.push(\"--wizard\")\r\n await runMigrateCli(contextArgs(args, context))\r\n })\r\n\r\n program\r\n .command(\"analyze [target]\")\r\n .description(\"Analyze class usage and patterns\")\r\n .action(async (target?: string) => {\r\n await runAnalyzeCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"stats [target]\")\r\n .description(\"Compute estimated CSS bundle stats\")\r\n .action(async (target?: string) => {\r\n await runStatsCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"extract [target]\")\r\n .description(\"Suggest extraction candidates\")\r\n .option(\"--min <count>\", \"Minimum repeat count\")\r\n .action(async (target: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (target) args.push(target)\r\n if (options.min) args.push(`--min=${options.min}`)\r\n await runExtractCli(contextArgs(args, context))\r\n })\r\n\r\n program\r\n .command(\"preflight\")\r\n .description(\"Environment preflight checks\")\r\n .option(\"--fix\", \"Apply simple fixes\")\r\n .option(\"--allow-fail\", \"Do not set non-zero exit code on failing checks\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.fix) args.push(\"--fix\")\r\n if (options.allowFail) args.push(\"--allow-fail\")\r\n await preflightCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"dashboard\")\r\n .description(\"Start dashboard server\")\r\n .option(\"--port <port>\", \"Dashboard port\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.port) args.push(`--port=${options.port}`)\r\n await dashboardCommand.run(args, context)\r\n })\r\n\r\n program\r\n .command(\"storybook\")\r\n .description(\"Storybook helpers and variant matrix\")\r\n .option(\"--variants <json>\", \"Variant matrix JSON\")\r\n .option(\"--port <port>\", \"Storybook port\")\r\n .option(\"--no-open\", \"Disable browser open\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.variants) args.push(`--variants=${options.variants}`)\r\n if (options.port) args.push(`--port=${options.port}`)\r\n if (options.open === false) args.push(\"--no-open\")\r\n await storybookCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"studio\")\r\n .description(\"Open studio mode\")\r\n .option(\"--project <project>\", \"Project path\")\r\n .option(\"--port <port>\", \"Studio port\")\r\n .option(\"--mode <mode>\", \"Studio mode\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.project) args.push(`--project=${options.project}`)\r\n if (options.port) args.push(`--port=${options.port}`)\r\n if (options.mode) args.push(`--mode=${options.mode}`)\r\n await studioCommand.run(args, context)\r\n })\r\n\r\n program\r\n .command(\"deploy [name]\")\r\n .description(\"Publish package metadata to registry\")\r\n .option(\"--version <version>\", \"Package version\")\r\n .option(\"--tag <tag>\", \"Publish tag\")\r\n .option(\"--registry <url>\", \"Target registry URL\")\r\n .option(\"--dry-run\", \"Preview manifest\")\r\n .action(async (name: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (name) args.push(name)\r\n if (options.version) args.push(`--version=${options.version}`)\r\n if (options.tag) args.push(`--tag=${options.tag}`)\r\n if (options.registry) args.push(`--registry=${options.registry}`)\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n await deployCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n const plugin = program.command(\"plugin\").description(\"Plugin discovery and install\")\r\n plugin\r\n .command(\"search [query...]\")\r\n .description(\"Search plugins\")\r\n .action(async (query: string[] | undefined) => {\r\n await pluginCommand.run([\"search\", ...toVariadic(query)], context)\r\n })\r\n plugin\r\n .command(\"list\")\r\n .description(\"List available plugins\")\r\n .action(async () => {\r\n await pluginCommand.run([\"list\"], context)\r\n })\r\n plugin\r\n .command(\"install <name>\")\r\n .description(\"Install plugin package\")\r\n .action(async (name: string) => {\r\n await pluginCommand.run([\"install\", name], context)\r\n })\r\n plugin\r\n .command(\"verify <packageName>\")\r\n .description(\"Verify plugin package\")\r\n .action(async (packageName: string) => {\r\n await pluginCommand.run(contextArgs([\"verify\", packageName], context), context)\r\n })\r\n plugin\r\n .command(\"update-check\")\r\n .description(\"Check plugin updates\")\r\n .action(async () => {\r\n await pluginCommand.run(contextArgs([\"update-check\"], context), context)\r\n })\r\n plugin\r\n .command(\"marketplace [args...]\")\r\n .description(\"Marketplace helper\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await pluginCommand.run(contextArgs([\"marketplace\", ...toVariadic(args)], context), context)\r\n })\r\n plugin\r\n .command(\"publish [args...]\")\r\n .description(\"Publish plugin to marketplace\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await pluginCommand.run(contextArgs([\"publish\", ...toVariadic(args)], context), context)\r\n })\r\n\r\n const registry = program.command(\"registry\").description(\"Registry server utilities\")\r\n ;[\"serve\", \"list\", \"info\", \"publish\", \"install\", \"versions\"].forEach((subcommand) => {\r\n registry\r\n .command(`${subcommand} [args...]`)\r\n .description(`Registry ${subcommand}`)\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await registryCommand.run(contextArgs([subcommand, ...toVariadic(args)], context), context)\r\n })\r\n })\r\n\r\n program\r\n .command(\"install [args...]\")\r\n .description(\"Registry tarball install helper\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await installRegistryCommand.run(contextArgs(toVariadic(args), context), context)\r\n })\r\n\r\n program\r\n .command(\"generate-types\")\r\n .aliases([\"gen-types\", \"gt\"])\r\n .description(\"Generate TypeScript sub-component types from scanned template literals\")\r\n .option(\"--out <path>\", \"Output file path (default: src/tailwind-styled.d.ts)\")\r\n .option(\"--dry-run\", \"Preview output without writing\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.out) args.push(`--out=${options.out}`)\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n await runGenerateTypesCli(args)\r\n })\r\n\r\n const sync = program.command(\"sync\").description(\"Design token sync commands\")\r\n ;[\"init\", \"pull\", \"push\", \"diff\"].forEach((subcommand) => {\r\n sync\r\n .command(`${subcommand} [args...]`)\r\n .description(`Sync ${subcommand}`)\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await syncCommand.run(contextArgs([subcommand, ...toVariadic(args)], context), context)\r\n })\r\n })\r\n\r\n const figma = sync.command(\"figma\").description(\"Figma sync helpers\")\r\n ;[\"pull\", \"push\", \"diff\", \"modes\"].forEach((subcommand) => {\r\n figma\r\n .command(`${subcommand} [args...]`)\r\n .description(`Figma ${subcommand}`)\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await syncCommand.run(\r\n contextArgs([\"figma\", subcommand, ...toVariadic(args)], context),\r\n context\r\n )\r\n })\r\n })\r\n\r\n program\r\n .command(\"test\")\r\n .description(\"Test shortcut wrapper\")\r\n .option(\"--watch\", \"Watch mode\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.watch) args.push(\"--watch\")\r\n await leaf(miscCommands, \"test\").run(args, context)\r\n })\r\n\r\n program\r\n .command(\"ai <prompt...>\")\r\n .description(\"AI script shortcut\")\r\n .action(async (prompt: string[]) => {\r\n await leaf(miscCommands, \"ai\").run(prompt, context)\r\n })\r\n\r\n program\r\n .command(\"share [name]\")\r\n .description(\"Generate share payload template\")\r\n .action(async (name?: string) => {\r\n await leaf(miscCommands, \"share\").run(contextArgs(name ? [name] : [], context), context)\r\n })\r\n\r\n program\r\n .command(\"code\")\r\n .description(\"VS Code extension helper\")\r\n .option(\"--docs\", \"Show docs URL\")\r\n .option(\"--install\", \"Install extension\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.docs) args.push(\"--docs\")\r\n if (options.install) args.push(\"--install\")\r\n await leaf(miscCommands, \"code\").run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"version\")\r\n .alias(\"v\")\r\n .description(\"Show CLI version\")\r\n .option(\"--check\", \"Check latest npm version\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.check) args.push(\"--check\")\r\n await leaf(miscCommands, \"version\").run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"upgrade\")\r\n .alias(\"update\")\r\n .description(\"Check or upgrade CLI version\")\r\n .option(\"--install\", \"Install latest version globally\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.install) args.push(\"--install\")\r\n await leaf(miscCommands, \"upgrade\").run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"parse <file>\")\r\n .description(\"Parse file (prototype)\")\r\n .action(async (file: string) => {\r\n await scriptByName.get(\"parse\")!.run(contextArgs([file], context), context)\r\n })\r\n\r\n program\r\n .command(\"transform <file> [out]\")\r\n .description(\"Transform file (prototype)\")\r\n .option(\"--output <out>\", \"Output file\")\r\n .action(async (file: string, out: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = [file]\r\n if (out) args.push(out)\r\n if (options.output) args.push(`--output=${options.output}`)\r\n await scriptByName.get(\"transform\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"minify <file>\")\r\n .description(\"Minify file (prototype)\")\r\n .action(async (file: string) => {\r\n await scriptByName.get(\"minify\")!.run(contextArgs([file], context), context)\r\n })\r\n\r\n program\r\n .command(\"shake <cssFile>\")\r\n .description(\"Shake CSS rules (prototype)\")\r\n .action(async (cssFile: string) => {\r\n await scriptByName.get(\"shake\")!.run(contextArgs([cssFile], context), context)\r\n })\r\n\r\n program\r\n .command(\"lint [dir] [workers]\")\r\n .description(\"Parallel lint helper (prototype)\")\r\n .action(async (dir?: string, workers?: string) => {\r\n const args = [dir ?? \".\", workers ?? \"0\"]\r\n await scriptByName.get(\"lint\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"format <file>\")\r\n .description(\"Format helper (prototype)\")\r\n .option(\"--write\", \"Write file changes\")\r\n .action(async (file: string, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = [file]\r\n if (options.write) args.push(\"--write\")\r\n await scriptByName.get(\"format\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"lsp [args...]\")\r\n .description(\"Language server protocol helper\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await scriptByName.get(\"lsp\")!.run(contextArgs(toVariadic(args), context), context)\r\n })\r\n\r\n program\r\n .command(\"benchmark [args...]\")\r\n .description(\"Write benchmark snapshot\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await scriptByName.get(\"benchmark\")!.run(contextArgs(toVariadic(args), context), context)\r\n })\r\n\r\n program\r\n .command(\"optimize <file> [args...]\")\r\n .description(\"Compile-time optimize helper\")\r\n .allowUnknownOption(true)\r\n .action(async (file: string, args: string[] | undefined) => {\r\n await scriptByName\r\n .get(\"optimize\")!\r\n .run(contextArgs([file, ...toVariadic(args)], context), context)\r\n })\r\n\r\n program\r\n .command(\"split [root] [outDir]\")\r\n .description(\"Route-based CSS split helper\")\r\n .option(\"--output <outDir>\", \"Output directory\")\r\n .action(async (root: string | undefined, outDir: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (root) args.push(root)\r\n if (outDir) args.push(outDir)\r\n if (options.output) args.push(`--output=${options.output}`)\r\n await scriptByName.get(\"split\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"critical <html> <css>\")\r\n .description(\"Critical CSS extraction helper\")\r\n .action(async (html: string, css: string) => {\r\n await scriptByName.get(\"critical\")!.run(contextArgs([html, css], context), context)\r\n })\r\n\r\n // Commands yang masih prototype/experimental — tampilkan label dan exit gracefully\r\n // agar user tahu statusnya daripada crash diam-diam\r\n const PLANNED_COMMANDS: Record<string, { label: string; since: string; script: string }> = {\r\n cache: { label: \"Build cache manager\", since: \"v5.0\", script: \"scripts/v50/cache.ts\" },\r\n cluster: { label: \"Distributed build cluster\", since: \"v5.0\", script: \"scripts/v50/cluster.ts\" },\r\n \"cluster-server\": { label: \"Remote build worker server\", since: \"v5.0\", script: \"scripts/v50/cluster-server.ts\" },\r\n adopt: { label: \"Feature adoption analyzer\", since: \"v5.0\", script: \"scripts/v50/adopt.ts\" },\r\n metrics: { label: \"Prometheus-compatible metrics server\", since: \"v5.0\", script: \"scripts/v50/metrics.ts\" },\r\n audit: { label: \"Security & a11y audit\", since: \"v4.4\", script: \"scripts/v45/audit.ts\" },\r\n }\r\n\r\n for (const [name, meta] of Object.entries(PLANNED_COMMANDS)) {\r\n const signature =\r\n name === \"metrics\"\r\n ? \"metrics [port]\"\r\n : name === \"adopt\"\r\n ? \"adopt [feature] [project]\"\r\n : `${name} [args...]`\r\n\r\n program\r\n .command(signature)\r\n .description(`${meta.label} [prototype: ${meta.since}]`)\r\n .allowUnknownOption(true)\r\n .action(async (...actionArgs) => {\r\n const positionalArgs = actionArgs\r\n .slice(0, -1)\r\n .flatMap((value) => (Array.isArray(value) ? value : value ? [String(value)] : []))\r\n\r\n // Coba jalankan script jika ada\r\n const scriptRunner = scriptByName.get(name)\r\n if (scriptRunner) {\r\n await scriptRunner.run(contextArgs(positionalArgs, context), context)\r\n return\r\n }\r\n\r\n // Script tidak ada atau gagal — tampilkan info berguna\r\n context.output.writeText(`\\n⚠️ tw ${name} — prototype command (${meta.since})`)\r\n context.output.writeText(` ${meta.label}`)\r\n context.output.writeText(` Script: ${meta.script}`)\r\n context.output.writeText(``)\r\n context.output.writeText(` Jalankan langsung: npx tsx ${meta.script} ${positionalArgs.join(\" \")}`)\r\n context.output.writeText(` Atau: node ${meta.script.replace(\".ts\", \".mjs\")} ${positionalArgs.join(\" \")}`)\r\n context.output.writeText(``)\r\n context.output.writeText(` Status: Implementasi prototype tersedia di scripts/.`)\r\n context.output.writeText(` Integrasi penuh ke CLI pipeline direncanakan.`)\r\n process.exitCode = 0\r\n })\r\n }\r\n\r\n program\r\n .command(\"help [topic...]\")\r\n .description(\"Show help\")\r\n .action(async (topic: string[] | undefined) => {\r\n context.output.writeText(resolveCommandHelp(program, toVariadic(topic)).trim())\r\n })\r\n\r\n program\r\n .command(\"trace [class]\")\r\n .description(\"Trace a class or inspect a file/directory target\")\r\n .aliases([\"t\"])\r\n .option(\"--target <path>\", \"Trace a file or directory instead of a single class\")\r\n .option(\"--cwd <path>\", \"Working directory for trace resolution\")\r\n .option(\"--format <format>\", \"Output format: text, json, mermaid\")\r\n .action(async (className: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (className) args.push(className)\r\n if (options.target) args.push(`--target=${options.target}`)\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n if (options.format) args.push(`--format=${options.format}`)\r\n await runTraceCli(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"doctor\")\r\n .description(\"Run diagnostics on your codebase\")\r\n .aliases([\"d\", \"diagnose\"])\r\n .option(\"--cwd <path>\", \"Working directory for diagnostics\")\r\n .option(\r\n \"--include <checks>\",\r\n `Diagnostic categories: ${[\"workspace\", \"tailwind\", \"analysis\"].join(\", \")}`\r\n )\r\n .option(\"--verbose\", \"Show detailed diagnostics\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n if (options.include) args.push(`--include=${options.include}`)\r\n if (options.verbose) args.push(\"--verbose\")\r\n await runDoctorCli(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"why <class>\")\r\n .description(\"Explain why a class is in the bundle\")\r\n .aliases([\"w\"])\r\n .option(\"--cwd <path>\", \"Working directory for why analysis\")\r\n .action(async (className: string, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = [className]\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n await runWhyCli(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"boundary [target]\")\r\n .description(\"Analyze RSC boundary (server/client components)\")\r\n .aliases([\"b\"])\r\n .option(\"--cwd <path>\", \"Working directory\")\r\n .action(async (target: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (target) args.push(target)\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n await boundaryCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n return program\r\n}","import type { AnalyzerReport } from \"@tailwind-styled/analyzer\"\r\n\r\nimport { CliError } from \"./errors\"\r\n\r\nexport interface AnalyzerModule {\r\n analyzeWorkspace: (\r\n dir: string,\r\n options?: {\r\n classStats?: {\r\n top?: number\r\n frequentThreshold?: number\r\n }\r\n }\r\n ) => Promise<AnalyzerReport>\r\n}\r\n\r\nexport async function loadAnalyzerModule(): Promise<AnalyzerModule> {\r\n try {\r\n const mod = await import(\"@tailwind-styled/analyzer\")\r\n if (typeof mod.analyzeWorkspace !== \"function\") {\r\n throw new Error(\"analyzeWorkspace export not found\")\r\n }\r\n return {\r\n analyzeWorkspace: mod.analyzeWorkspace as AnalyzerModule[\"analyzeWorkspace\"],\r\n }\r\n } catch (error) {\r\n throw new CliError(\r\n \"Native analyzer binding is unavailable. Reinstall dependencies or run `npm rebuild @tailwind-styled/analyzer`.\",\r\n {\r\n code: \"ANALYZER_BINDING_UNAVAILABLE\",\r\n cause: error,\r\n }\r\n )\r\n }\r\n}\r\n","/**\r\n * tailwind-styled-v4 CLI analyzer output.\r\n */\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport type { AnalyzerReport } from \"@tailwind-styled/analyzer\"\r\nimport { loadAnalyzerModule } from \"./utils/analyzer\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists } from \"./utils/fs\"\r\nimport { type CliOutput, createCliOutput } from \"./utils/output\"\r\n\r\nexport type { AnalyzerReport as AnalysisReport } from \"@tailwind-styled/analyzer\"\r\n\r\n// Keep ComponentDef for extract.ts and stats.ts compatibility.\r\nexport interface ComponentDef {\r\n name: string\r\n file: string\r\n base: string\r\n variants: Record<string, string[]>\r\n classes: string[]\r\n}\r\n\r\nexport async function analyzeProject(dir: string): Promise<AnalyzerReport> {\r\n const analyzer = await loadAnalyzerModule()\r\n return analyzer.analyzeWorkspace(dir, { classStats: { top: 20, frequentThreshold: 2 } })\r\n}\r\n\r\nexport function printAnalysisReport(report: AnalyzerReport, output: CliOutput): void {\r\n const bar = \"-\".repeat(55)\r\n output.writeText(`\\n+${bar}+`)\r\n output.writeText(`| tailwind-styled-v4 - CSS Analyzer${\" \".repeat(21)}|`)\r\n output.writeText(`+${bar}+`)\r\n output.writeText(`| Files scanned: ${String(report.totalFiles).padEnd(34)}|`)\r\n output.writeText(`| Unique classes: ${String(report.uniqueClassCount).padEnd(34)}|`)\r\n output.writeText(`| Total occurrences: ${String(report.totalClassOccurrences).padEnd(34)}|`)\r\n output.writeText(`| Frequent classes: ${String(report.classStats.frequent.length).padEnd(34)}|`)\r\n output.writeText(`+${bar}+`)\r\n\r\n if (report.classStats.frequent.length > 0) {\r\n output.writeText(\"\\n MOST FREQUENT (top 10)\")\r\n output.writeText(` ${\"-\".repeat(52)}`)\r\n for (const usage of report.classStats.frequent.slice(0, 10)) {\r\n const chart = \"#\".repeat(Math.min(usage.count * 2, 20))\r\n output.writeText(` ${usage.name.padEnd(32)} ${chart} ${usage.count}`)\r\n }\r\n }\r\n\r\n if (report.classStats.top.length > 0) {\r\n output.writeText(\"\\n TOP CLASSES\")\r\n output.writeText(` ${\"-\".repeat(52)}`)\r\n for (const usage of report.classStats.top.slice(0, 10)) {\r\n const chart = \"#\".repeat(Math.min(usage.count * 2, 20))\r\n output.writeText(` ${usage.name.padEnd(32)} ${chart} ${usage.count}`)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n\r\nexport async function runAnalyzeCli(args: string[]): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const jsonFlag = Boolean(parsed.values.json)\r\n const output = createCliOutput({\r\n json: jsonFlag,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const dirArg = parsed.positionals[0] ?? \".\"\r\n const dir = path.resolve(process.cwd(), dirArg)\r\n\r\n if (!(await pathExists(dir))) {\r\n throw new CliUsageError(`Directory not found: ${dir}`)\r\n }\r\n\r\n const analyzer = await loadAnalyzerModule()\r\n const spinner = output.spinner()\r\n spinner.start(`Analyzing ${dir}`)\r\n const report = await analyzer.analyzeWorkspace(dir, {\r\n classStats: { top: 20, frequentThreshold: 2 },\r\n })\r\n spinner.stop(`Analysis complete: ${report.totalFiles} file(s)`)\r\n if (jsonFlag) {\r\n output.jsonSuccess(\"analyze\", report)\r\n return\r\n }\r\n printAnalysisReport(report, output)\r\n}\r\n","/**\r\n * tailwind-styled-v4 style extraction suggestions.\r\n */\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { loadAnalyzerModule } from \"./utils/analyzer\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\ninterface ExtractCandidate {\r\n pattern: string\r\n count: number\r\n suggestedName: string\r\n suggestedTag: string\r\n suggestedCode: string\r\n savings: number\r\n}\r\n\r\nfunction guessSuggestedName(pattern: string): string {\r\n if (pattern.includes(\"flex\") && pattern.includes(\"items-center\")) return \"HStack\"\r\n if (pattern.includes(\"flex\") && pattern.includes(\"flex-col\")) return \"VStack\"\r\n if (pattern.includes(\"rounded\") && pattern.includes(\"shadow\")) return \"Card\"\r\n if (\r\n pattern.includes(\"btn\") ||\r\n (pattern.includes(\"px-\") && pattern.includes(\"py-\") && pattern.includes(\"rounded\"))\r\n ) {\r\n return \"Button\"\r\n }\r\n if (pattern.includes(\"text-sm\") || pattern.includes(\"text-xs\")) return \"Caption\"\r\n const first = pattern.split(\" \")[0]\r\n return `${first.replace(/[^a-zA-Z]/g, \"\").replace(/^(.)/, (char) => char.toUpperCase())}Base`\r\n}\r\n\r\nfunction guessSuggestedTag(pattern: string): string {\r\n if (pattern.includes(\"text-\") && !pattern.includes(\"bg-\")) return \"span\"\r\n if (pattern.includes(\"btn\") || pattern.includes(\"cursor-pointer\")) return \"button\"\r\n return \"div\"\r\n}\r\n\r\nexport async function runExtractCli(args: string[]): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n min: { type: \"string\" },\r\n },\r\n })\r\n const jsonFlag = Boolean(parsed.values.json)\r\n const output = createCliOutput({\r\n json: jsonFlag,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const minRaw = typeof parsed.values.min === \"string\" ? parsed.values.min : \"2\"\r\n const parsedMin = parseInt(minRaw, 10)\r\n const minCount = Number.isFinite(parsedMin) && parsedMin > 0 ? parsedMin : 2\r\n const dirArg = parsed.positionals[0] ?? \".\"\r\n const dir = path.resolve(process.cwd(), dirArg)\r\n\r\n if (!(await pathExists(dir))) {\r\n throw new CliUsageError(`Directory not found: ${dir}`)\r\n }\r\n\r\n const analyzer = await loadAnalyzerModule()\r\n const spinner = output.spinner()\r\n spinner.start(`Scanning extraction candidates in ${dir}`)\r\n const report = await analyzer.analyzeWorkspace(dir, {\r\n classStats: { top: 50, frequentThreshold: 2 },\r\n })\r\n spinner.stop(`Extraction scan complete: ${report.totalFiles} file(s)`)\r\n\r\n const candidates: ExtractCandidate[] = report.classStats.frequent\r\n .filter((usage) => usage.count >= minCount)\r\n .map((usage) => {\r\n const suggestedName = guessSuggestedName(usage.name)\r\n const suggestedTag = guessSuggestedTag(usage.name)\r\n const suggestedCode = `export const ${suggestedName} = tw.${suggestedTag}\\`${usage.name}\\``\r\n const savings = (usage.count - 1) * usage.name.length\r\n return {\r\n pattern: usage.name,\r\n count: usage.count,\r\n suggestedName,\r\n suggestedTag,\r\n suggestedCode,\r\n savings,\r\n }\r\n })\r\n .sort((left, right) => right.savings - left.savings)\r\n\r\n if (jsonFlag) {\r\n output.jsonSuccess(\"extract\", {\r\n root: dir,\r\n totalFiles: report.totalFiles,\r\n candidates,\r\n })\r\n return\r\n }\r\n\r\n const bar = \"-\".repeat(55)\r\n output.writeText(`\\n+${bar}+`)\r\n output.writeText(`| tailwind-styled-v4 - Extract Suggestions${\" \".repeat(13)}|`)\r\n output.writeText(`+${bar}+`)\r\n output.writeText(`| Files scanned: ${String(report.totalFiles).padEnd(34)}|`)\r\n output.writeText(`| Candidates found: ${String(candidates.length).padEnd(34)}|`)\r\n output.writeText(`+${bar}+`)\r\n\r\n if (candidates.length === 0) {\r\n output.writeText(\"\\n No extraction candidates found (all classes are unique).\\n\")\r\n return\r\n }\r\n\r\n for (const candidate of candidates.slice(0, 15)) {\r\n output.writeText(`\\n PATTERN: \"${candidate.pattern}\"`)\r\n output.writeText(` Found ${candidate.count} times - ~${candidate.savings} chars saved`)\r\n output.writeText(` -> ${candidate.suggestedCode}`)\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n","import path from \"node:path\"\r\n\r\nimport { ensureFileSafe } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nexport interface InitReport {\r\n created: string[]\r\n skipped: string[]\r\n}\r\n\r\nasync function ensureFile(filePath: string, content: string, report: InitReport): Promise<void> {\r\n const status = await ensureFileSafe(filePath, content)\r\n if (status === \"created\") {\r\n report.created.push(filePath)\r\n } else {\r\n report.skipped.push(filePath)\r\n }\r\n}\r\n\r\nexport async function runInitCli(rawArgs: string[]): Promise<void> {\r\n const asJson = rawArgs.includes(\"--json\")\r\n const output = createCliOutput({\r\n json: asJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const target = rawArgs.find((arg) => !arg.startsWith(\"-\")) ?? \".\"\r\n const root = path.resolve(process.cwd(), target)\r\n const report: InitReport = { created: [], skipped: [] }\r\n\r\n await ensureFile(\r\n path.join(root, \"src\", \"tailwind.css\"),\r\n '@import \"tailwindcss\";\\n\\n@theme {\\n --color-primary: #3b82f6;\\n --spacing-section: 3rem;\\n}\\n',\r\n report\r\n )\r\n\r\n await ensureFile(\r\n path.join(root, \"tailwind-styled.config.json\"),\r\n `${JSON.stringify(\r\n {\r\n version: 1,\r\n cssEntry: \"src/tailwind.css\",\r\n },\r\n null,\r\n 2\r\n )}\\n`,\r\n report\r\n )\r\n\r\n if (asJson) {\r\n output.jsonSuccess(\"init\", report)\r\n return\r\n }\r\n\r\n output.writeText(\"\\nInit complete\")\r\n output.writeText(`Created: ${report.created.length}`)\r\n for (const filePath of report.created) {\r\n output.writeText(` + ${path.relative(root, filePath)}`)\r\n }\r\n if (report.skipped.length > 0) {\r\n output.writeText(`Skipped: ${report.skipped.length}`)\r\n for (const filePath of report.skipped) {\r\n output.writeText(` - ${path.relative(root, filePath)} (exists)`)\r\n }\r\n }\r\n}\r\n","import { confirm, intro, isCancel } from \"@clack/prompts\"\r\n\r\nimport { CliUsageError } from \"./utils/errors\"\r\n\r\nexport interface MigrateWizardOptions {\r\n dryRun: boolean\r\n includeConfig: boolean\r\n includeClasses: boolean\r\n includeImports: boolean\r\n}\r\n\r\nexport async function runMigrationWizard(): Promise<MigrateWizardOptions> {\r\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\r\n return {\r\n dryRun: true,\r\n includeConfig: true,\r\n includeClasses: true,\r\n includeImports: true,\r\n }\r\n }\r\n\r\n intro(\"Tailwind Styled v4 Migration Wizard\")\r\n\r\n const dryRun = await confirm({\r\n message: \"Gunakan dry-run?\",\r\n initialValue: true,\r\n })\r\n const includeConfig = await confirm({\r\n message: \"Migrasi file config dasar?\",\r\n initialValue: true,\r\n })\r\n const includeClasses = await confirm({\r\n message: \"Migrasi class lama (flex-grow/shrink)?\",\r\n initialValue: true,\r\n })\r\n const includeImports = await confirm({\r\n message: \"Migrasi import tailwind-styled-components -> tailwind-styled-v4?\",\r\n initialValue: true,\r\n })\r\n\r\n if ([dryRun, includeConfig, includeClasses, includeImports].some((value) => isCancel(value))) {\r\n throw new CliUsageError(\"Migration wizard dibatalkan oleh pengguna\")\r\n }\r\n\r\n return {\r\n dryRun: dryRun as boolean,\r\n includeConfig: includeConfig as boolean,\r\n includeClasses: includeClasses as boolean,\r\n includeImports: includeImports as boolean,\r\n }\r\n}\r\n","import fs from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\n\r\nimport { runMigrationWizard } from \"./migrateWizard\"\r\nimport { firstPositional, hasFlag } from \"./utils/args\"\r\nimport { pathExists, writeFileSafe } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\ninterface MigrateOptions {\r\n includeImports: boolean\r\n includeClasses: boolean\r\n}\r\n\r\nexport interface MigrateReport {\r\n scannedFiles: number\r\n updatedFiles: number\r\n classRenames: number\r\n importRenames: number\r\n configWrites: number\r\n dryRun: boolean\r\n}\r\n\r\nconst SOURCE_EXTENSIONS = new Set([\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"])\r\nconst IGNORED_DIRS = new Set([\"node_modules\", \".git\", \"dist\", \".next\", \"out\", \".turbo\"])\r\nconst DEFAULT_TAILWIND_CSS = `@import \"tailwindcss\";\r\n\r\n@theme {\r\n --color-primary: #3b82f6;\r\n --spacing-section: 3rem;\r\n}\r\n`\r\n\r\nasync function findSourceFiles(dir: string): Promise<string[]> {\r\n const out: string[] = []\r\n\r\n async function walk(currentDir: string): Promise<void> {\r\n if (!(await pathExists(currentDir))) return\r\n const entries = await fs.readdir(currentDir, { withFileTypes: true })\r\n for (const entry of entries) {\r\n const fullPath = path.join(currentDir, entry.name)\r\n if (entry.isDirectory()) {\r\n if (IGNORED_DIRS.has(entry.name)) continue\r\n await walk(fullPath)\r\n continue\r\n }\r\n if (SOURCE_EXTENSIONS.has(path.extname(entry.name))) {\r\n out.push(fullPath)\r\n }\r\n }\r\n }\r\n\r\n await walk(dir)\r\n return out\r\n}\r\n\r\nfunction migrateSource(source: string, options: MigrateOptions) {\r\n // Use functional approach - count matches with match() instead of callback reassign\r\n const importRenames = options.includeImports\r\n ? (source.match(/tailwind-styled-components/g) || []).length\r\n : 0\r\n\r\n const output = options.includeImports\r\n ? source.replace(/tailwind-styled-components/g, \"tailwind-styled-v4\")\r\n : source\r\n\r\n if (options.includeClasses) {\r\n const flexGrowMatches = source.match(/\\bflex-grow\\b/g) || []\r\n const flexShrinkMatches = source.match(/\\bflex-shrink\\b/g) || []\r\n const classRenames = flexGrowMatches.length + flexShrinkMatches.length\r\n\r\n const replacedOutput = output\r\n .replace(/\\bflex-grow\\b/g, \"grow\")\r\n .replace(/\\bflex-shrink\\b/g, \"shrink\")\r\n\r\n return { output: replacedOutput, classRenames, importRenames }\r\n }\r\n\r\n return { output, classRenames: 0, importRenames }\r\n}\r\n\r\nasync function migrateConfig(root: string, dryRun: boolean): Promise<number> {\r\n const cssPath = path.join(root, \"src\", \"tailwind.css\")\r\n if (await pathExists(cssPath)) return 0\r\n await writeFileSafe(cssPath, DEFAULT_TAILWIND_CSS, { dryRun })\r\n return 1\r\n}\r\n\r\nexport async function runMigrateCli(rawArgs: string[]): Promise<void> {\r\n const asJson = hasFlag(\"json\", rawArgs)\r\n const output = createCliOutput({\r\n json: asJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const target = firstPositional(rawArgs) ?? \".\"\r\n const root = path.resolve(process.cwd(), target)\r\n\r\n const dryRunFlag = hasFlag(\"dry-run\", rawArgs)\r\n const wizardOptions = hasFlag(\"wizard\", rawArgs) ? await runMigrationWizard() : null\r\n\r\n // Handle wizard mode\r\n const { dryRun, includeConfig, includeClasses, includeImports } = wizardOptions\r\n ? {\r\n dryRun: wizardOptions.dryRun,\r\n includeConfig: wizardOptions.includeConfig,\r\n includeClasses: wizardOptions.includeClasses,\r\n includeImports: wizardOptions.includeImports,\r\n }\r\n : { dryRun: dryRunFlag, includeConfig: true, includeClasses: true, includeImports: true }\r\n\r\n const spinner = output.spinner()\r\n spinner.start(`Scanning source files in ${root}`)\r\n const files = await findSourceFiles(root)\r\n const report: MigrateReport = {\r\n scannedFiles: files.length,\r\n updatedFiles: 0,\r\n classRenames: 0,\r\n importRenames: 0,\r\n configWrites: 0,\r\n dryRun,\r\n }\r\n\r\n if (includeConfig) {\r\n report.configWrites += await migrateConfig(root, dryRun)\r\n }\r\n\r\n for (const filePath of files) {\r\n const source = await fs.readFile(filePath, \"utf8\")\r\n const migrated = migrateSource(source, { includeImports, includeClasses })\r\n if (migrated.output !== source) {\r\n report.updatedFiles++\r\n if (!dryRun) {\r\n await fs.writeFile(filePath, migrated.output, \"utf8\")\r\n }\r\n }\r\n report.classRenames += migrated.classRenames\r\n report.importRenames += migrated.importRenames\r\n }\r\n spinner.stop(`Migration scan complete: ${report.scannedFiles} file(s)`)\r\n\r\n if (asJson) {\r\n output.jsonSuccess(\"migrate\", report)\r\n return\r\n }\r\n\r\n output.writeText(\"\\nMigration report\")\r\n output.writeText(`Scanned files : ${report.scannedFiles}`)\r\n output.writeText(`Updated files : ${report.updatedFiles}${dryRun ? \" (dry-run)\" : \"\"}`)\r\n output.writeText(`Class renames : ${report.classRenames}`)\r\n output.writeText(`Import renames: ${report.importRenames}`)\r\n output.writeText(`Config writes : ${report.configWrites}${dryRun ? \" (dry-run)\" : \"\"}`)\r\n}\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nexport interface ScanCliResult {\r\n root: string\r\n totalFiles: number\r\n uniqueClassCount: number\r\n topClasses: Array<{ name: string; count: number }>\r\n cachePath?: string\r\n}\r\n\r\ninterface ScanCacheEntry {\r\n name: string\r\n definedAt?: { file: string; line: number; column: number }\r\n variants?: string[]\r\n rules?: Array<{ property: string; value: string; applied: boolean }>\r\n finalStyle?: Array<{ property: string; value: string }>\r\n conflicts?: Array<{ property: string; winner: string; loser: string }>\r\n usedIn?: string[]\r\n bundleContribution?: number\r\n risk?: \"low\" | \"medium\" | \"high\"\r\n componentsAffected?: string[]\r\n}\r\n\r\ninterface ScanCacheFile {\r\n generatedAt: string\r\n root: string\r\n totalFiles: number\r\n uniqueClasses: string[]\r\n classNames: ScanCacheEntry[]\r\n files: Array<{ file: string; classes: string[] }>\r\n}\r\n\r\nfunction buildTopClasses(\r\n files: Array<{ classes: string[] }>\r\n): Array<{ name: string; count: number }> {\r\n const counts = new Map<string, number>()\r\n for (const file of files) {\r\n for (const className of file.classes) {\r\n counts.set(className, (counts.get(className) ?? 0) + 1)\r\n }\r\n }\r\n return Array.from(counts.entries())\r\n .sort((left, right) => right[1] - left[1])\r\n .slice(0, 20)\r\n .map(([name, count]) => ({ name, count }))\r\n}\r\n\r\nfunction buildClassNames(\r\n files: Array<{ file: string; classes: string[] }>,\r\n uniqueClasses: string[]\r\n): ScanCacheEntry[] {\r\n const usageMap = new Map<string, string[]>()\r\n for (const file of files) {\r\n for (const cls of file.classes) {\r\n const existing = usageMap.get(cls) ?? []\r\n existing.push(file.file)\r\n usageMap.set(cls, existing)\r\n }\r\n }\r\n const freq = new Map<string, number>()\r\n for (const [cls, files_] of usageMap) {\r\n freq.set(cls, files_.length)\r\n }\r\n const totalUsage = Array.from(freq.values()).reduce((a, b) => a + b, 0)\r\n\r\n return uniqueClasses.map((name): ScanCacheEntry => {\r\n const usedIn = usageMap.get(name) ?? []\r\n const count = freq.get(name) ?? 0\r\n const bundleContribution = totalUsage > 0 ? Math.round((count / totalUsage) * 10000) / 100 : 0\r\n const risk: \"low\" | \"medium\" | \"high\" =\r\n usedIn.length > 10 ? \"high\" : usedIn.length > 3 ? \"medium\" : \"low\"\r\n const variants: string[] = []\r\n const colonIdx = name.lastIndexOf(\":\")\r\n if (colonIdx > -1) variants.push(name.slice(0, colonIdx))\r\n return {\r\n name,\r\n usedIn: usedIn.slice(0, 20),\r\n bundleContribution,\r\n risk,\r\n componentsAffected: usedIn.slice(0, 10),\r\n ...(variants.length > 0 ? { variants } : {}),\r\n }\r\n })\r\n}\r\n\r\nfunction writeScanCache(root: string, cacheData: ScanCacheFile): string {\r\n const cacheDir = path.join(root, \".tailwind-styled\")\r\n const cachePath = path.join(cacheDir, \"scan-cache.json\")\r\n fs.mkdirSync(cacheDir, { recursive: true })\r\n fs.writeFileSync(cachePath, JSON.stringify(cacheData, null, 2), \"utf-8\")\r\n return cachePath\r\n}\r\n\r\nexport async function runScanCli(rawArgs: string[]): Promise<void> {\r\n const target = rawArgs.find((arg) => !arg.startsWith(\"-\")) ?? \".\"\r\n const asJson = rawArgs.includes(\"--json\")\r\n const saveCache = rawArgs.includes(\"--save\") || rawArgs.includes(\"--cache\")\r\n const output = createCliOutput({\r\n json: asJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n\r\n const root = path.resolve(process.cwd(), target)\r\n const spinner = output.spinner()\r\n spinner.start(`Scanning ${root}`)\r\n const scanned = await scanWorkspaceAsync(root)\r\n spinner.stop(`Scan complete: ${scanned.totalFiles} file(s)`)\r\n\r\n const result: ScanCliResult = {\r\n root,\r\n totalFiles: scanned.totalFiles,\r\n uniqueClassCount: scanned.uniqueClasses.length,\r\n topClasses: buildTopClasses(scanned.files),\r\n }\r\n\r\n const shouldSave = saveCache || process.env.TWS_SCAN_SAVE === \"1\"\r\n if (shouldSave) {\r\n const classNames = buildClassNames(scanned.files, scanned.uniqueClasses)\r\n const cacheData: ScanCacheFile = {\r\n generatedAt: new Date().toISOString(),\r\n root,\r\n totalFiles: scanned.totalFiles,\r\n uniqueClasses: scanned.uniqueClasses,\r\n classNames,\r\n files: scanned.files.map((f) => ({ file: f.file, classes: f.classes })),\r\n }\r\n const cachePath = writeScanCache(root, cacheData)\r\n result.cachePath = cachePath\r\n if (!asJson) {\r\n output.writeText(`\\nCache written : ${cachePath}`)\r\n output.writeText(`Cache entries : ${classNames.length} classes`)\r\n }\r\n }\r\n\r\n if (asJson) {\r\n output.jsonSuccess(\"scan\", result)\r\n return\r\n }\r\n\r\n output.writeText(`\\nScan root : ${result.root}`)\r\n output.writeText(`Total files : ${result.totalFiles}`)\r\n output.writeText(`Unique classes : ${result.uniqueClassCount}`)\r\n output.writeText(\"\\nTop classes:\")\r\n for (const item of result.topClasses.slice(0, 10)) {\r\n output.writeText(` - ${item.name}: ${item.count}`)\r\n }\r\n if (!shouldSave) {\r\n output.writeText(\r\n \"\\nTip: Gunakan --save untuk generate .tailwind-styled/scan-cache.json (dibutuhkan VSCode extension)\"\r\n )\r\n }\r\n}\r\n","/**\r\n * tw setup - inject required config into an existing project.\r\n *\r\n * Usage:\r\n * npx tw setup\r\n * npx tw setup --dry-run\r\n * npx tw setup --skip-install\r\n * npx tw setup --yes --next|--vite|--rspack|--react\r\n */\r\n\r\nimport path from \"node:path\"\r\nimport pc from \"picocolors\"\r\nimport {\r\n patchNextConfigImpl,\r\n patchRspackConfigImpl,\r\n patchTailwindCssImpl,\r\n patchTsConfigImpl,\r\n patchViteConfigImpl,\r\n} from \"./commands/setup/patchers\"\r\nimport { pickProjectTypeInteractive } from \"./commands/setup/prompt\"\r\nimport {\r\n alreadyInstalled,\r\n configureSetupFlags,\r\n detectBundler,\r\n detectPm,\r\n findExisting,\r\n installPackages,\r\n type ProjectType,\r\n patchFileWithDryRun,\r\n type SetupFlags,\r\n type SetupProjectOption,\r\n writeFileWithDryRun,\r\n} from \"./commands/setup/workspace\"\r\nimport { type CliLogEvent, createCliLogger } from \"./utils/logger\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nconst cwd = process.cwd()\r\n\r\n// Keep these literals in this file for test compatibility:\r\n// \"--dry-run\", \"--skip-install\", \"--yes\", \"--next\", \"--vite\", \"--rspack\", \"--react\"\r\nconst PROJECT_OPTIONS: SetupProjectOption[] = [\r\n { label: \"Next.js\", value: \"next\", adapter: \"tailwind-styled-v4\" },\r\n { label: \"Vite\", value: \"vite\", adapter: \"tailwind-styled-v4\" },\r\n { label: \"Rspack\", value: \"rspack\", adapter: \"tailwind-styled-v4\" },\r\n { label: \"React (other)\", value: \"react\", adapter: \"tailwind-styled-v4\" },\r\n]\r\n\r\ninterface SetupReport {\r\n generatedAt: string\r\n cwd: string\r\n detected: ProjectType | null\r\n selected: ProjectType\r\n packageManager: string\r\n dryRun: boolean\r\n skipInstall: boolean\r\n events: CliLogEvent[]\r\n warnings: number\r\n}\r\n\r\nconst configureFlags = (rawArgs: string[]): SetupFlags => {\r\n return configureSetupFlags(rawArgs)\r\n}\r\n\r\nconst pickProjectType = async (\r\n detected: ProjectType | null,\r\n flags: SetupFlags,\r\n options: SetupProjectOption[]\r\n): Promise<ProjectType> => {\r\n const log = flags.isJson ? console.error : console.log\r\n return pickProjectTypeInteractive(detected, flags, options, {\r\n log,\r\n output: flags.isJson ? process.stderr : process.stdout,\r\n })\r\n}\r\n\r\n// Keep function names in this file for source-verification tests.\r\n// Keep \"withTailwindStyled()(\" reference in this file.\r\nconst patchNextConfig = (src: string): string | null => patchNextConfigImpl(src)\r\n\r\n// Keep \"tailwind-styled-v4/vite\" and \"tailwindStyledPlugin\" references in this file.\r\nconst patchViteConfig = (src: string): string | null => patchViteConfigImpl(src)\r\n\r\n// Keep \"tailwind-styled-v4/rspack\" and \"tailwindStyledRspackPlugin\" references in this file.\r\nconst patchRspackConfig = (src: string): string | null => patchRspackConfigImpl(src)\r\n\r\nconst patchTailwindCss = (src: string, bundler?: \"next\" | \"vite\" | \"rspack\", cssFilePath?: string, cwd?: string): string | null => patchTailwindCssImpl(src, bundler, cssFilePath, cwd)\r\n\r\nconst patchTsConfig = (src: string): string | null => patchTsConfigImpl(src)\r\n\r\nexport const runSetupCli = async (rawArgs: string[]): Promise<void> => {\r\n const setupFlags = configureFlags(rawArgs)\r\n const output = createCliOutput({\r\n json: setupFlags.isJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const events: CliLogEvent[] = []\r\n const logger = createCliLogger({\r\n useStderr: setupFlags.isJson,\r\n output,\r\n onEvent(event) {\r\n events.push(event)\r\n },\r\n })\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(pc.cyan(\" ◆ tailwind-styled-v4\")) + pc.dim(\" setup wizard\"))\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(\"\")\r\n\r\n const bootSpinner = output.spinner()\r\n bootSpinner.start(\"Inspecting workspace\")\r\n const [detected, pm] = await Promise.all([detectBundler(cwd), detectPm(cwd)])\r\n bootSpinner.stop(\"Workspace inspected\")\r\n\r\n if (detected) {\r\n const label = PROJECT_OPTIONS.find((option) => option.value === detected)?.label ?? detected\r\n output.writeText(\" \" + pc.dim(\"framework \") + pc.cyan(label))\r\n } else {\r\n output.writeText(\" \" + pc.dim(\"framework \") + pc.yellow(\"tidak terdeteksi\"))\r\n }\r\n\r\n const bundler = await pickProjectType(detected, setupFlags, PROJECT_OPTIONS)\r\n\r\n output.writeText(\" \" + pc.dim(\"package mg \") + pc.white(pm))\r\n if (setupFlags.isDryRun) output.writeText(\" \" + pc.dim(\"mode \") + pc.yellow(\"dry-run\"))\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(\"\")\r\n\r\n output.writeText(pc.bold(\" [1/4]\") + pc.cyan(\" packages\"))\r\n const [hasCorePkg, hasMergePkg] = await Promise.all([\r\n alreadyInstalled(cwd, \"tailwind-styled-v4\"),\r\n alreadyInstalled(cwd, \"tailwind-merge\"),\r\n ])\r\n\r\n const toInstall = [\r\n hasCorePkg ? null : \"tailwind-styled-v4\",\r\n hasMergePkg ? null : \"tailwind-merge\",\r\n ].filter(Boolean) as string[]\r\n\r\n if (toInstall.length > 0) await installPackages(cwd, pm, toInstall, false, setupFlags, logger)\r\n else logger.skip(\"tailwind-styled-v4 + tailwind-merge sudah terpasang\")\r\n\r\n output.writeText(\"\\n\" + pc.bold(\" [2/4]\") + pc.cyan(\" bundler config\"))\r\n\r\n const bundlerConfigMap: Record<\r\n string,\r\n { files: string[]; patcher: (src: string) => string | null; warnMsg: string }\r\n > = {\r\n next: {\r\n files: [\"next.config.ts\", \"next.config.mjs\", \"next.config.js\"],\r\n patcher: patchNextConfig,\r\n warnMsg: \"next.config.ts tidak ditemukan - jalankan npx create-next-app terlebih dahulu\",\r\n },\r\n vite: {\r\n files: [\"vite.config.ts\", \"vite.config.mjs\", \"vite.config.js\"],\r\n patcher: patchViteConfig,\r\n warnMsg: \"vite.config.ts tidak ditemukan - jalankan npm create vite terlebih dahulu\",\r\n },\r\n rspack: {\r\n files: [\"rspack.config.ts\", \"rspack.config.mjs\", \"rspack.config.js\"],\r\n patcher: patchRspackConfig,\r\n warnMsg: \"rspack.config.ts tidak ditemukan - tambahkan manual\",\r\n },\r\n }\r\n\r\n const bundlerConfig = bundlerConfigMap[bundler]\r\n\r\n if (bundlerConfig) {\r\n const cfg = await findExisting(cwd, bundlerConfig.files)\r\n if (cfg)\r\n await patchFileWithDryRun(cfg, bundlerConfig.patcher, path.basename(cfg), setupFlags, logger)\r\n else logger.warn(bundlerConfig.warnMsg)\r\n } else {\r\n logger.skip(\"React tanpa bundler - tidak ada bundler config yang di-patch\")\r\n logger.info(\"Tambahkan tailwind-styled-v4 langsung ke komponen React kamu\")\r\n }\r\n\r\n output.writeText(\"\\n\" + pc.bold(\" [3/4]\") + pc.cyan(\" globals.css\"))\r\n const cssCandidates = [\r\n \"src/app/globals.css\",\r\n \"src/globals.css\",\r\n \"src/styles/globals.css\",\r\n \"src/tailwind.css\",\r\n \"src/index.css\",\r\n \"styles/globals.css\",\r\n ]\r\n const cssFile = await findExisting(cwd, cssCandidates)\r\n\r\n if (cssFile) {\r\n await patchFileWithDryRun(\r\n cssFile,\r\n (src) => patchTailwindCss(src, bundler as \"next\" | \"vite\" | \"rspack\" | undefined, path.relative(cwd, cssFile), cwd),\r\n path.relative(cwd, cssFile),\r\n setupFlags,\r\n logger\r\n )\r\n } else {\r\n logger.warn(\"CSS entry tidak ditemukan — tambahkan @import \\\"tailwindcss\\\" manual ke globals.css\")\r\n }\r\n\r\n output.writeText(\"\\n\" + pc.bold(\" [4/4]\") + pc.cyan(\" tsconfig.json\"))\r\n const tsCfg = path.join(cwd, \"tsconfig.json\")\r\n const hasTsConfig = await findExisting(cwd, [\"tsconfig.json\"])\r\n\r\n if (hasTsConfig) {\r\n await patchFileWithDryRun(tsCfg, patchTsConfig, \"tsconfig.json\", setupFlags, logger)\r\n } else {\r\n logger.skip(\"tsconfig.json tidak ditemukan — skip\")\r\n }\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(pc.bold(pc.green(\" ✓ setup selesai\")))\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" selanjutnya\"))\r\n output.writeText(\" \" + pc.cyan(\"npx tw preflight\") + pc.dim(\" — verifikasi config\"))\r\n output.writeText(\" \" + pc.cyan(\"npm run dev\") + pc.dim(\" — mulai development\"))\r\n output.writeText(\"\")\r\n\r\n if (setupFlags.isJson) {\r\n const report: SetupReport = {\r\n generatedAt: new Date().toISOString(),\r\n cwd,\r\n detected,\r\n selected: bundler,\r\n packageManager: pm,\r\n dryRun: setupFlags.isDryRun,\r\n skipInstall: setupFlags.skipInstall,\r\n events,\r\n warnings: events.filter((event) => event.level === \"warn\").length,\r\n }\r\n output.jsonSuccess(\"setup\", report)\r\n }\r\n}","export function patchNextConfigImpl(src: string): string | null {\r\n if (src.includes(\"withTailwindStyled\")) return null\r\n\r\n const hasExport = src.includes(\"export default\")\r\n const hasCjs = src.includes(\"module.exports\")\r\n\r\n if (hasExport) {\r\n const withImport = `import { withTailwindStyled } from \"tailwind-styled-v4/next\"\\n${src}`\r\n\r\n const patterns = [\r\n /export default\\s+([\\w]+);?\\s*$/m,\r\n /export default\\s+(defineConfig\\([\\s\\S]*?\\));?\\s*$/m,\r\n /export default\\s+(\\{[\\s\\S]*?\\});?\\s*$/m,\r\n ]\r\n\r\n const result = patterns.reduce(\r\n (acc, pattern) =>\r\n acc.replace(pattern, (_match, expr) => `export default withTailwindStyled()(${expr})`),\r\n withImport\r\n )\r\n\r\n return result === src ? null : result\r\n }\r\n\r\n if (hasCjs) {\r\n const result =\r\n `const { withTailwindStyled } = require(\"tailwind-styled-v4/next\")\\n` +\r\n src.replace(\r\n /module\\.exports\\s*=\\s*(.+)/s,\r\n (_match, expr) => `module.exports = withTailwindStyled()(${expr.trim()})`\r\n )\r\n return result === src ? null : result\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function patchViteConfigImpl(src: string): string | null {\r\n const hasLegacyImport = src.includes(\"tailwind-styled-v4/vite\")\r\n\r\n const patched = hasLegacyImport\r\n ? src\r\n .replace(/from\\s+['\"]tailwind-styled-v4\\/vite['\"]/g, 'from \"tailwind-styled-v4/vite\"')\r\n .replace(/\\btailwindStyled\\(/g, \"tailwindStyledPlugin(\")\r\n : src.replace(/\\btailwindStyled\\(/g, \"tailwindStyledPlugin(\")\r\n\r\n const alreadyConfigured =\r\n patched.includes(\"tailwind-styled-v4/vite\") && patched.includes(\"tailwindStyledPlugin(\")\r\n if (alreadyConfigured) return patched === src ? null : patched\r\n\r\n const viteImportMatch = patched.match(/(import .+ from ['\"]vite['\"][^\\n]*\\n)/)\r\n const reactImportMatch = patched.match(/(import .+ from ['\"]@vitejs\\/plugin-react['\"][^\\n]*\\n)/)\r\n const insertAfter = (reactImportMatch ?? viteImportMatch)?.[1]\r\n\r\n const result = (() => {\r\n if (!patched.includes(\"tailwind-styled-v4/vite\") && insertAfter) {\r\n return patched.replace(\r\n insertAfter,\r\n `${insertAfter}import { tailwindStyledPlugin } from \"tailwind-styled-v4/vite\"\\n`\r\n )\r\n }\r\n if (!patched.includes(\"tailwind-styled-v4/vite\")) {\r\n return `import { tailwindStyledPlugin } from \"tailwind-styled-v4/vite\"\\n${patched}`\r\n }\r\n return patched\r\n })()\r\n\r\n return result === src ? null : result\r\n}\r\n\r\nexport function patchRspackConfigImpl(src: string): string | null {\r\n const hasModernImport = src.includes(\"tailwind-styled-v4/rspack\")\r\n const hasLegacyImport = src.includes(\"tailwind-styled-v4/rspack\")\r\n\r\n const withLegacyFix = hasLegacyImport\r\n ? src.replace(/from\\s+['\"]tailwind-styled-v4\\/rspack['\"]/g, 'from \"tailwind-styled-v4/rspack\"')\r\n : src\r\n\r\n const patched = withLegacyFix.replace(/\\btailwindStyled\\(/g, \"tailwindStyledRspackPlugin(\")\r\n\r\n const alreadyConfigured =\r\n patched.includes(\"tailwind-styled-v4/rspack\") && patched.includes(\"tailwindStyledRspackPlugin(\")\r\n if (alreadyConfigured) return patched === src ? null : patched\r\n\r\n const result = (() => {\r\n if (!patched.includes(\"tailwind-styled-v4/rspack\") && !hasModernImport) {\r\n const lines = patched.split(\"\\n\")\r\n const lastImportIdx = lines.reduce((maxIdx, line, idx) => {\r\n return line.trimStart().startsWith(\"import \") ? idx : maxIdx\r\n }, 0)\r\n lines.splice(\r\n lastImportIdx + 1,\r\n 0,\r\n 'import { tailwindStyledRspackPlugin } from \"tailwind-styled-v4/rspack\"'\r\n )\r\n return lines.join(\"\\n\")\r\n }\r\n return patched\r\n })()\r\n\r\n const finalResult = (() => {\r\n if (!result.includes(\"tailwindStyledRspackPlugin(\")) {\r\n if (result.includes(\"plugins:\")) {\r\n return result.replace(\r\n /plugins:\\s*\\[([^\\]]*)\\]/s,\r\n (_match, inner) => `plugins: [${inner.trimEnd()}\\n tailwindStyledRspackPlugin(),\\n ]`\r\n )\r\n }\r\n return result.replace(\r\n /(export default defineConfig\\(\\{[\\s\\S]*?)(\\}\\))/,\r\n (_match, body, close) => `${body} plugins: [tailwindStyledRspackPlugin()],\\n${close}`\r\n )\r\n }\r\n return result\r\n })()\r\n\r\n return finalResult === src ? null : finalResult\r\n}\r\n\r\n/**\r\n * Hitung path relatif dari cssFilePath ke `.next/tailwind-styled-safelist.css`.\r\n * Contoh:\r\n * cssFile = \"src/app/globals.css\" → \"../../.next/tailwind-styled-safelist.css\"\r\n * cssFile = \"src/globals.css\" → \"../.next/tailwind-styled-safelist.css\"\r\n */\r\nexport function computeSafelistSourcePath(cssFilePath: string, cwd: string): string {\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const nodePath = require(\"node:path\") as typeof import(\"node:path\")\r\n const cssAbs = nodePath.resolve(cwd, cssFilePath)\r\n const cssDir = nodePath.dirname(cssAbs)\r\n // Per-file safelist dir — Turbopack writes one CSS file per component here\r\n const safelistAbs = nodePath.resolve(cwd, \".next\", \"tw-classes\")\r\n const rel = nodePath.relative(cssDir, safelistAbs).replace(/\\\\/g, \"/\")\r\n const relPath = rel.startsWith(\".\") ? rel : `./${rel}`\r\n return `${relPath}/**`\r\n } catch {\r\n const depth = cssFilePath.split(\"/\").length - 1\r\n const ups = Array(depth).fill(\"..\").join(\"/\")\r\n return `${ups}/.next/tw-classes/**`\r\n }\r\n}\r\n\r\nexport function patchTailwindCssImpl(\r\n src: string,\r\n bundler?: \"next\" | \"vite\" | \"rspack\",\r\n cssFilePath?: string,\r\n cwd?: string\r\n): string | null {\r\n const hasTailwindImport =\r\n src.includes('@import \"tailwindcss\"') || src.includes(\"@import 'tailwindcss'\")\r\n\r\n const hasSafelistSource = src.includes(\"tailwind-styled-safelist.css\")\r\n const needsSafelistSource = bundler === \"next\" && !hasSafelistSource\r\n\r\n const safelistRelPath =\r\n needsSafelistSource && cssFilePath && cwd\r\n ? computeSafelistSourcePath(cssFilePath, cwd)\r\n : \"../.next/tailwind-styled-safelist.css\"\r\n\r\n const safelistSource = `@source \"${safelistRelPath}\";`\r\n\r\n if (hasTailwindImport) {\r\n if (!needsSafelistSource) return null\r\n const patched = src.replace(\r\n /(@import\\s+['\"]tailwindcss['\"];?)/,\r\n `$1\\n${safelistSource}`\r\n )\r\n return patched === src ? null : patched\r\n }\r\n\r\n const base = `@import \"tailwindcss\";\\n${needsSafelistSource ? `${safelistSource}\\n` : \"\"}\\n${src}`\r\n return base\r\n}\r\n\r\nexport function patchTsConfigImpl(src: string): string | null {\r\n try {\r\n const json = JSON.parse(src) as { compilerOptions?: Record<string, unknown> }\r\n const compilerOptions = (json.compilerOptions ?? {}) as Record<string, unknown>\r\n\r\n const original = { ...compilerOptions }\r\n\r\n // Apply changes immutably\r\n const updatedCompilerOptions = {\r\n ...compilerOptions,\r\n paths: compilerOptions.paths ?? {},\r\n strict: compilerOptions.strict === undefined ? true : compilerOptions.strict,\r\n moduleResolution:\r\n compilerOptions.moduleResolution === \"node16\" ||\r\n compilerOptions.moduleResolution === \"bundler\"\r\n ? compilerOptions.moduleResolution\r\n : \"bundler\",\r\n jsx: compilerOptions.jsx ?? \"react-jsx\",\r\n }\r\n\r\n const hasChanges =\r\n updatedCompilerOptions.paths !== original.paths ||\r\n updatedCompilerOptions.strict !== original.strict ||\r\n updatedCompilerOptions.moduleResolution !== original.moduleResolution ||\r\n updatedCompilerOptions.jsx !== original.jsx\r\n\r\n if (!hasChanges) return null\r\n\r\n const updatedJson = {\r\n ...json,\r\n compilerOptions: updatedCompilerOptions,\r\n }\r\n\r\n return `${JSON.stringify(updatedJson, null, 2)}\\n`\r\n } catch {\r\n return null\r\n }\r\n}","import { isCancel, select } from \"@clack/prompts\"\r\n\r\nimport { CliUsageError } from \"../../utils/errors\"\r\nimport type { ProjectType, SetupFlags, SetupProjectOption } from \"./workspace\"\r\n\r\ninterface PromptOptions {\r\n output?: NodeJS.WritableStream\r\n log?: (message: string) => void\r\n}\r\n\r\nexport async function pickProjectTypeInteractive(\r\n detected: ProjectType | null,\r\n flags: SetupFlags,\r\n projectOptions: SetupProjectOption[],\r\n options: PromptOptions = {}\r\n): Promise<ProjectType> {\r\n const log = options.log ?? console.log\r\n\r\n if (flags.explicitProjectType) {\r\n const label =\r\n projectOptions.find((option) => option.value === flags.explicitProjectType)?.label ??\r\n flags.explicitProjectType\r\n log(` Project type dipaksa via flag: ${label}\\n`)\r\n return flags.explicitProjectType\r\n }\r\n\r\n if (flags.isYes) {\r\n const selected = detected ?? \"next\"\r\n const label = projectOptions.find((option) => option.value === selected)?.label ?? selected\r\n log(` --yes aktif, pilih default: ${label}\\n`)\r\n return selected\r\n }\r\n\r\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\r\n const selected = detected ?? \"next\"\r\n const label = projectOptions.find((option) => option.value === selected)?.label ?? selected\r\n log(` Non-interactive shell terdeteksi, pilih default: ${label}\\n`)\r\n return selected\r\n }\r\n\r\n log(\" Pilih project type:\\n\")\r\n projectOptions.forEach((option, index) => {\r\n const mark = detected === option.value ? \" <- terdeteksi\" : \"\"\r\n log(` ${index + 1}. ${option.label}${mark}`)\r\n })\r\n log(\"\")\r\n\r\n const defaultIdx = detected ? projectOptions.findIndex((option) => option.value === detected) : 0\r\n const selected = await select<ProjectType>({\r\n message: \"Project type\",\r\n initialValue: projectOptions[defaultIdx].value,\r\n options: projectOptions.map((option) => ({\r\n value: option.value,\r\n label: option.label,\r\n hint: detected === option.value ? \"terdeteksi\" : undefined,\r\n })),\r\n })\r\n\r\n if (isCancel(selected)) {\r\n throw new CliUsageError(\"Prompt dibatalkan oleh pengguna\")\r\n }\r\n\r\n const selectedLabel =\r\n projectOptions.find((option) => option.value === selected)?.label ?? selected\r\n log(`\\n -> ${selectedLabel} dipilih.\\n`)\r\n return selected\r\n}\r\n","import path from \"node:path\"\r\n\r\nimport { pathExists, readFileSafe, readJsonSafe, writeFileSafe } from \"../../utils/fs\"\r\nimport type { CliLogger } from \"../../utils/logger\"\r\nimport { runCommand } from \"../../utils/process\"\r\n\r\nexport type ProjectType = \"next\" | \"vite\" | \"react\" | \"rspack\"\r\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\"\r\n\r\nexport interface SetupFlags {\r\n isDryRun: boolean\r\n skipInstall: boolean\r\n isYes: boolean\r\n isJson: boolean\r\n explicitProjectType: ProjectType | null\r\n}\r\n\r\nexport interface SetupProjectOption {\r\n label: string\r\n value: ProjectType\r\n adapter: string\r\n}\r\n\r\ninterface PackageJsonLike {\r\n dependencies?: Record<string, string>\r\n devDependencies?: Record<string, string>\r\n}\r\n\r\nexport function resolveExplicitProjectType(rawFlags: Set<string>): ProjectType | null {\r\n if (rawFlags.has(\"--next\")) return \"next\"\r\n if (rawFlags.has(\"--vite\")) return \"vite\"\r\n if (rawFlags.has(\"--rspack\")) return \"rspack\"\r\n if (rawFlags.has(\"--react\")) return \"react\"\r\n return null\r\n}\r\n\r\nexport function configureSetupFlags(rawArgs: string[]): SetupFlags {\r\n const rawFlags = new Set(rawArgs.filter((arg) => arg.startsWith(\"--\")))\r\n return {\r\n isDryRun: rawFlags.has(\"--dry-run\"),\r\n skipInstall: rawFlags.has(\"--skip-install\"),\r\n isYes: rawFlags.has(\"--yes\"),\r\n isJson: rawFlags.has(\"--json\"),\r\n explicitProjectType: resolveExplicitProjectType(rawFlags),\r\n }\r\n}\r\n\r\nasync function readPackageJson(cwd: string): Promise<PackageJsonLike | null> {\r\n return readJsonSafe<PackageJsonLike>(path.join(cwd, \"package.json\"))\r\n}\r\n\r\nexport async function detectPm(cwd: string): Promise<PackageManager> {\r\n if (await pathExists(path.join(cwd, \"bun.lockb\"))) return \"bun\"\r\n if (await pathExists(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\"\r\n if (await pathExists(path.join(cwd, \"yarn.lock\"))) return \"yarn\"\r\n return \"npm\"\r\n}\r\n\r\nexport async function detectBundler(cwd: string): Promise<ProjectType | null> {\r\n const pkg = await readPackageJson(cwd)\r\n if (!pkg) return null\r\n\r\n const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) }\r\n if (deps.next) return \"next\"\r\n if (deps.vite || deps[\"@vitejs/plugin-react\"]) return \"vite\"\r\n if (deps[\"@rspack/core\"] || deps.rspack) return \"rspack\"\r\n if (deps.react) return \"react\"\r\n return null\r\n}\r\n\r\nexport async function alreadyInstalled(cwd: string, pkgName: string): Promise<boolean> {\r\n const pkg = await readPackageJson(cwd)\r\n if (!pkg) return false\r\n const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) }\r\n return pkgName in deps\r\n}\r\n\r\nexport async function findExisting(cwd: string, names: string[]): Promise<string | null> {\r\n for (const name of names) {\r\n const resolved = path.join(cwd, name)\r\n if (await pathExists(resolved)) return resolved\r\n }\r\n return null\r\n}\r\n\r\nexport async function writeFileWithDryRun(\r\n cwd: string,\r\n filePath: string,\r\n content: string,\r\n label: string,\r\n flags: SetupFlags,\r\n logger: CliLogger\r\n): Promise<void> {\r\n if (flags.isDryRun) {\r\n logger.dry(`create ${label}`)\r\n return\r\n }\r\n await writeFileSafe(filePath, content)\r\n logger.ok(path.relative(cwd, filePath) || label)\r\n}\r\n\r\nexport async function patchFileWithDryRun(\r\n filePath: string,\r\n patcher: (source: string) => string | null,\r\n label: string,\r\n flags: SetupFlags,\r\n logger: CliLogger\r\n): Promise<boolean> {\r\n const source = await readFileSafe(filePath)\r\n if (!source) return false\r\n\r\n const patched = patcher(source)\r\n if (!patched) {\r\n logger.skip(`${label} sudah terkonfigurasi`)\r\n return false\r\n }\r\n\r\n if (flags.isDryRun) {\r\n logger.dry(`patch ${label}`)\r\n return true\r\n }\r\n\r\n await writeFileSafe(filePath, patched)\r\n logger.ok(`${label} dipatch`)\r\n return true\r\n}\r\n\r\nexport async function installPackages(\r\n cwd: string,\r\n pm: PackageManager,\r\n pkgs: string[],\r\n dev: boolean,\r\n flags: SetupFlags,\r\n logger: CliLogger\r\n): Promise<void> {\r\n if (flags.skipInstall) {\r\n logger.skip(\"npm install (--skip-install)\")\r\n return\r\n }\r\n if (flags.isDryRun) {\r\n logger.dry(`${pm} install ${pkgs.join(\" \")}`)\r\n return\r\n }\r\n\r\n const flag = dev ? (pm === \"yarn\" || pm === \"bun\" ? \"-D\" : \"--save-dev\") : \"--save\"\r\n const cmd =\r\n pm === \"yarn\"\r\n ? [\"add\", flag, ...pkgs]\r\n : pm === \"bun\"\r\n ? [\"add\", flag, ...pkgs]\r\n : [\"install\", flag, ...pkgs]\r\n\r\n logger.info(`$ ${pm} ${cmd.join(\" \")}`)\r\n try {\r\n const exitCode = await runCommand(pm, cmd, {\r\n cwd,\r\n allowNonZeroExit: true,\r\n stdio: flags.isJson ? \"pipe\" : \"inherit\",\r\n })\r\n if (exitCode !== 0) {\r\n logger.warn(`install gagal - jalankan manual: ${pm} ${cmd.join(\" \")}`)\r\n }\r\n } catch {\r\n logger.warn(`install gagal - jalankan manual: ${pm} ${cmd.join(\" \")}`)\r\n }\r\n}\r\n","import { spawn } from \"node:child_process\"\r\n\r\nimport { CliError } from \"./errors\"\r\nimport { writeJsonSuccess } from \"./json\"\r\n\r\nexport interface RunCommandOptions {\r\n cwd?: string\r\n env?: NodeJS.ProcessEnv\r\n stdio?: \"inherit\" | \"pipe\"\r\n allowNonZeroExit?: boolean\r\n verbose?: boolean\r\n}\r\n\r\nexport interface RunCommandCaptureOptions {\r\n cwd?: string\r\n env?: NodeJS.ProcessEnv\r\n allowNonZeroExit?: boolean\r\n verbose?: boolean\r\n}\r\n\r\nexport interface RunCommandCaptureResult {\r\n exitCode: number\r\n stdout: string\r\n stderr: string\r\n}\r\n\r\nexport type CommandOutputFormat = \"json\" | \"text\" | \"empty\"\r\n\r\nexport interface ParsedCommandOutput {\r\n outputFormat: CommandOutputFormat\r\n output: unknown | string | null\r\n}\r\n\r\nexport const npmCommandName = (): string => {\r\n return process.platform === \"win32\" ? \"npm.cmd\" : \"npm\"\r\n}\r\n\r\nexport const npxCommandName = (): string => {\r\n return process.platform === \"win32\" ? \"npx.cmd\" : \"npx\"\r\n}\r\n\r\nexport const codeCommandName = (): string => {\r\n return process.platform === \"win32\" ? \"code.cmd\" : \"code\"\r\n}\r\n\r\nconst shellQuote = (value: string): string => {\r\n if (value.length === 0) return '\"\"'\r\n if (!/[^\\w./:=@-]/.test(value)) return value\r\n return JSON.stringify(value)\r\n}\r\n\r\nconst formatCommand = (binary: string, args: string[]): string => {\r\n return [binary, ...args].map(shellQuote).join(\" \")\r\n}\r\n\r\nconst isVerboseEnabled = (options: { verbose?: boolean; env?: NodeJS.ProcessEnv }): boolean => {\r\n if (options.verbose) return true\r\n if (options.env?.TWS_VERBOSE === \"1\") return true\r\n return process.env.TWS_VERBOSE === \"1\"\r\n}\r\n\r\nconst writeVerboseLine = (binary: string, args: string[]): void => {\r\n console.error(` [verbose] $ ${formatCommand(binary, args)}`)\r\n}\r\n\r\nexport const runCommand = async (\r\n binary: string,\r\n args: string[],\r\n options: RunCommandOptions = {}\r\n): Promise<number> => {\r\n return new Promise<number>((resolve, reject) => {\r\n if (isVerboseEnabled(options)) {\r\n writeVerboseLine(binary, args)\r\n }\r\n\r\n const child = spawn(binary, args, {\r\n stdio: options.stdio ?? \"inherit\",\r\n cwd: options.cwd ?? process.cwd(),\r\n env: options.env ?? process.env,\r\n })\r\n\r\n child.on(\"error\", (error) => {\r\n reject(\r\n new CliError(`Failed to run command: ${binary} ${args.join(\" \")}`, {\r\n cause: error,\r\n })\r\n )\r\n })\r\n\r\n child.on(\"exit\", (code) => {\r\n const exitCode = code ?? 0\r\n if (exitCode !== 0 && !options.allowNonZeroExit) {\r\n reject(\r\n new CliError(`Command exited with code ${exitCode}: ${binary} ${args.join(\" \")}`, {\r\n exitCode,\r\n code: \"COMMAND_EXIT_NON_ZERO\",\r\n })\r\n )\r\n return\r\n }\r\n resolve(exitCode)\r\n })\r\n })\r\n}\r\n\r\nconst parseCommandOutput = (stdout: string): ParsedCommandOutput => {\r\n const trimmed = stdout.trim()\r\n if (!trimmed) {\r\n return { outputFormat: \"empty\", output: null }\r\n }\r\n\r\n try {\r\n return {\r\n outputFormat: \"json\",\r\n output: JSON.parse(trimmed) as unknown,\r\n }\r\n } catch {\r\n return {\r\n outputFormat: \"text\",\r\n output: stdout.trimEnd(),\r\n }\r\n }\r\n}\r\n\r\nconst formatCommandFailureOutput = (stdout: string, stderr: string): string => {\r\n const errorText = stderr.trim()\r\n if (errorText) return errorText\r\n const outputText = stdout.trim()\r\n if (outputText) return outputText\r\n return \"Command failed with no output.\"\r\n}\r\n\r\nexport const runCommandCapture = async (\r\n binary: string,\r\n args: string[],\r\n options: RunCommandCaptureOptions = {}\r\n): Promise<RunCommandCaptureResult> => {\r\n return new Promise<RunCommandCaptureResult>((resolve, reject) => {\r\n if (isVerboseEnabled(options)) {\r\n writeVerboseLine(binary, args)\r\n }\r\n\r\n const child = spawn(binary, args, {\r\n stdio: \"pipe\",\r\n cwd: options.cwd ?? process.cwd(),\r\n env: options.env ?? process.env,\r\n })\r\n\r\n const chunks: { stdout: Buffer[]; stderr: Buffer[] } = {\r\n stdout: [],\r\n stderr: [],\r\n }\r\n\r\n child.stdout?.on(\"data\", (chunk: Buffer | string) => {\r\n chunks.stdout.push(Buffer.from(chunk))\r\n })\r\n\r\n child.stderr?.on(\"data\", (chunk: Buffer | string) => {\r\n chunks.stderr.push(Buffer.from(chunk))\r\n })\r\n\r\n child.on(\"error\", (error) => {\r\n reject(\r\n new CliError(`Failed to run command: ${binary} ${args.join(\" \")}`, {\r\n cause: error,\r\n })\r\n )\r\n })\r\n\r\n child.on(\"exit\", (code) => {\r\n const exitCode = code ?? 0\r\n const stdout = Buffer.concat(chunks.stdout).toString(\"utf8\")\r\n const stderr = Buffer.concat(chunks.stderr).toString(\"utf8\")\r\n\r\n if (exitCode !== 0 && !options.allowNonZeroExit) {\r\n reject(\r\n new CliError(\r\n `Command exited with code ${exitCode}: ${binary} ${args.join(\" \")}\\n${formatCommandFailureOutput(stdout, stderr)}`,\r\n {\r\n exitCode,\r\n code: \"COMMAND_EXIT_NON_ZERO\",\r\n }\r\n )\r\n )\r\n return\r\n }\r\n\r\n resolve({\r\n exitCode,\r\n stdout,\r\n stderr,\r\n })\r\n })\r\n })\r\n}\r\n\r\nexport const runCommandAsJson = async (\r\n command: string,\r\n binary: string,\r\n args: string[],\r\n options: RunCommandCaptureOptions = {}\r\n): Promise<void> => {\r\n const captured = await runCommandCapture(binary, args, options)\r\n const parsed = parseCommandOutput(captured.stdout)\r\n\r\n writeJsonSuccess(command, {\r\n exitCode: captured.exitCode,\r\n outputFormat: parsed.outputFormat,\r\n output: parsed.output,\r\n stderr: captured.stderr.trim() || null,\r\n })\r\n}\r\n","import pc from \"picocolors\"\r\n\r\nimport type { CliOutput } from \"./output\"\r\n\r\nexport interface CliLogger {\r\n ok: (message: string) => void\r\n skip: (message: string) => void\r\n warn: (message: string) => void\r\n info: (message: string) => void\r\n dry: (message: string) => void\r\n}\r\n\r\nexport type CliLogLevel = \"ok\" | \"skip\" | \"warn\" | \"info\" | \"dry\"\r\n\r\nexport interface CliLogEvent {\r\n level: CliLogLevel\r\n message: string\r\n}\r\n\r\nexport interface CreateCliLoggerOptions {\r\n silent?: boolean\r\n useStderr?: boolean\r\n onEvent?: (event: CliLogEvent) => void\r\n output?: CliOutput\r\n}\r\n\r\nexport function createCliLogger(options: CreateCliLoggerOptions = {}): CliLogger {\r\n function emit(level: CliLogLevel, icon: string, colorize: (s: string) => string, message: string): void {\r\n options.onEvent?.({ level, message })\r\n if (options.silent) return\r\n\r\n const line = ` ${colorize(icon)} ${message}`\r\n\r\n if (options.output) {\r\n options.output.writeText(line, { stderr: options.useStderr })\r\n return\r\n }\r\n\r\n const writeLine = options.useStderr ? console.error : console.log\r\n writeLine(line)\r\n }\r\n\r\n return {\r\n ok(message: string) {\r\n emit(\"ok\", \"✓\", pc.green, pc.dim(message))\r\n },\r\n skip(message: string) {\r\n emit(\"skip\", \"–\", pc.dim, pc.dim(message))\r\n },\r\n warn(message: string) {\r\n emit(\"warn\", \"⚠\", pc.yellow, message)\r\n },\r\n info(message: string) {\r\n emit(\"info\", \"→\", pc.cyan, pc.dim(message))\r\n },\r\n dry(message: string) {\r\n emit(\"dry\", \"○\", pc.cyan, pc.dim(`[dry] ${message}`))\r\n },\r\n }\r\n}","/**\r\n * tailwind-styled-v4 bundle stats visualizer.\r\n */\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { loadAnalyzerModule } from \"./utils/analyzer\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nfunction estimateClassBytes(className: string): number {\r\n const base = 20\r\n if (className.startsWith(\"bg-\")) return base + 28\r\n if (className.startsWith(\"text-\")) return base + 22\r\n if (className.startsWith(\"border-\")) return base + 20\r\n if (className.startsWith(\"p-\") || className.startsWith(\"px-\") || className.startsWith(\"py-\"))\r\n return base + 18\r\n if (className.startsWith(\"m-\") || className.startsWith(\"mx-\") || className.startsWith(\"my-\"))\r\n return base + 18\r\n if (className.startsWith(\"w-\") || className.startsWith(\"h-\")) return base + 12\r\n if (className.startsWith(\"flex\")) return base + 16\r\n if (className.startsWith(\"grid\")) return base + 20\r\n if (className.startsWith(\"rounded\")) return base + 18\r\n if (className.startsWith(\"shadow\")) return base + 24\r\n if (className.startsWith(\"hover:\") || className.startsWith(\"focus:\")) return base + 35\r\n return base + 15\r\n}\r\n\r\nexport async function runStatsCli(args: string[]): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const jsonFlag = Boolean(parsed.values.json)\r\n const output = createCliOutput({\r\n json: jsonFlag,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const dirArg = parsed.positionals[0] ?? \".\"\r\n const dir = path.resolve(process.cwd(), dirArg)\r\n\r\n if (!(await pathExists(dir))) {\r\n throw new CliUsageError(`Directory not found: ${dir}`)\r\n }\r\n\r\n const analyzer = await loadAnalyzerModule()\r\n const spinner = output.spinner()\r\n spinner.start(`Computing stats for ${dir}`)\r\n const report = await analyzer.analyzeWorkspace(dir, {\r\n classStats: { top: 30, frequentThreshold: 2 },\r\n })\r\n spinner.stop(`Stats complete: ${report.totalFiles} file(s)`)\r\n const totalBytes = report.safelist.reduce(\r\n (sum, className) => sum + estimateClassBytes(className),\r\n 0\r\n )\r\n const duplicateBytes = report.classStats.frequent.reduce(\r\n (sum, usage) => sum + estimateClassBytes(usage.name) * Math.max(usage.count - 1, 0),\r\n 0\r\n )\r\n\r\n if (jsonFlag) {\r\n output.jsonSuccess(\"stats\", { ...report, estimatedCssBytes: totalBytes, duplicateBytes })\r\n return\r\n }\r\n\r\n const bar = \"-\".repeat(55)\r\n output.writeText(`\\n+${bar}+`)\r\n output.writeText(`| tailwind-styled-v4 - Bundle Stats${\" \".repeat(20)}|`)\r\n output.writeText(`+${bar}+`)\r\n output.writeText(`| Files scanned: ${String(report.totalFiles).padEnd(34)}|`)\r\n output.writeText(`| Unique classes: ${String(report.uniqueClassCount).padEnd(34)}|`)\r\n output.writeText(\r\n `| Est. CSS size: ${String(`${(totalBytes / 1024).toFixed(1)} kB`).padEnd(34)}|`\r\n )\r\n output.writeText(\r\n `| Duplicate waste: ${String(`${(duplicateBytes / 1024).toFixed(1)} kB`).padEnd(34)}|`\r\n )\r\n output.writeText(`+${bar}+`)\r\n\r\n if (report.classStats.top.length > 0) {\r\n output.writeText(\"\\n TOP CLASSES BY CSS WEIGHT\")\r\n output.writeText(` ${\"-\".repeat(52)}`)\r\n const sorted = [...report.classStats.top]\r\n .map((usage) => ({ ...usage, bytes: estimateClassBytes(usage.name) * usage.count }))\r\n .sort((left, right) => right.bytes - left.bytes)\r\n\r\n for (const usage of sorted.slice(0, 10)) {\r\n output.writeText(\r\n ` ${usage.name.padEnd(32)} ${String(`${usage.count}x`).padEnd(6)} ~${(\r\n usage.bytes / 1024\r\n ).toFixed(1)}kB`\r\n )\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n","import { readFileSync, readdirSync, statSync } from \"node:fs\"\r\nimport { join, extname } from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\ninterface FileBoundary {\r\n file: string\r\n type: \"server\" | \"client\"\r\n reasons: string[]\r\n}\r\n\r\nfunction collectTsFiles(dir: string, extensions: Set<string>): string[] {\r\n const files: string[] = []\r\n const entries = readdirSync(dir, { withFileTypes: true })\r\n for (const entry of entries) {\r\n const full = join(dir, entry.name)\r\n if (entry.isDirectory()) {\r\n if (entry.name === \"node_modules\" || entry.name === \"dist\" || entry.name === \".next\") continue\r\n files.push(...collectTsFiles(full, extensions))\r\n } else if (extensions.has(extname(entry.name))) {\r\n files.push(full)\r\n }\r\n }\r\n return files\r\n}\r\n\r\nfunction analyzeRscBoundary(source: string): { isServer: boolean; reasons: string[] } {\r\n const reasons: string[] = []\r\n\r\n const hasUseClient = source.includes('\"use client\"') || source.includes(\"'use client'\")\r\n if (hasUseClient) {\r\n return { isServer: false, reasons: [\"explicit 'use client' directive\"] }\r\n }\r\n\r\n if (/\\buse(State|Effect|Context|Ref|Memo|Callback|Reducer)\\b/.test(source)) {\r\n reasons.push(\"uses React hooks\")\r\n }\r\n if (/\\bon(Click|Change|Submit|Key|Mouse|Focus|Blur|Input)\\s*=/.test(source)) {\r\n reasons.push(\"has event handlers\")\r\n }\r\n if (/\\b(window|document|navigator|localStorage|setTimeout|setInterval|fetch|requestAnimationFrame)\\b/.test(source)) {\r\n reasons.push(\"uses browser APIs\")\r\n }\r\n if (/\\buseState\\b/.test(source)) {\r\n reasons.push(\"uses useState\")\r\n }\r\n if (/\\buseEffect\\b/.test(source)) {\r\n reasons.push(\"uses useEffect\")\r\n }\r\n\r\n return { isServer: reasons.length === 0, reasons }\r\n}\r\n\r\nfunction printBoundaryReport(\r\n report: FileBoundary[],\r\n output: CliOutput\r\n): void {\r\n const servers = report.filter((r) => r.type === \"server\")\r\n const clients = report.filter((r) => r.type === \"client\")\r\n\r\n output.writeText(\"\")\r\n output.writeText(\"RSC Boundary Report\")\r\n output.writeText(` Total files: ${report.length}`)\r\n output.writeText(` Server Components: ${servers.length}`)\r\n output.writeText(` Client Components: ${clients.length}`)\r\n output.writeText(\r\n ` Server ratio: ${report.length > 0 ? ((servers.length / report.length) * 100).toFixed(1) : 0}%`\r\n )\r\n\r\n if (clients.length > 0) {\r\n output.writeText(\"\")\r\n output.subHeader(\"Client Components\")\r\n for (const c of clients) {\r\n output.listItem(`${c.file}`)\r\n for (const r of c.reasons) {\r\n output.listItem(` ${r}`)\r\n }\r\n }\r\n }\r\n\r\n if (servers.length > 0 && servers.length <= 20) {\r\n output.writeText(\"\")\r\n output.subHeader(\"Server Components\")\r\n for (const s of servers) {\r\n output.listItem(s.file)\r\n }\r\n }\r\n}\r\n\r\nexport async function runBoundaryCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n },\r\n })\r\n\r\n const target = parsed.positionals[0] as string | undefined\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : (target ?? context.cwd)\r\n const json = context.json || parsed.values.json === true\r\n\r\n const extensions = new Set([\".ts\", \".tsx\", \".js\", \".jsx\"])\r\n const files = collectTsFiles(root, extensions)\r\n\r\n const report: FileBoundary[] = []\r\n\r\n for (const file of files) {\r\n let source: string\r\n try {\r\n source = readFileSync(file, \"utf8\")\r\n } catch {\r\n continue\r\n }\r\n\r\n if (!source.includes(\"tw.\") && !source.includes(\"from 'tailwind-styled\") && !source.includes('from \"tailwind-styled')) {\r\n continue\r\n }\r\n\r\n const analysis = analyzeRscBoundary(source)\r\n report.push({\r\n file: file.replace(root, \".\"),\r\n type: analysis.isServer ? \"server\" : \"client\",\r\n reasons: analysis.reasons,\r\n })\r\n }\r\n\r\n if (json) {\r\n const servers = report.filter((r) => r.type === \"server\")\r\n const clients = report.filter((r) => r.type === \"client\")\r\n context.output.jsonSuccess(\"boundary\", {\r\n totalFiles: report.length,\r\n serverCount: servers.length,\r\n clientCount: clients.length,\r\n serverRatio: report.length > 0 ? Number(((servers.length / report.length) * 100).toFixed(1)) : 0,\r\n files: report,\r\n })\r\n return\r\n }\r\n\r\n printBoundaryReport(report, context.output)\r\n}\r\n\r\nexport const boundaryCommand: CommandDefinition = {\r\n name: \"boundary\",\r\n aliases: [\"b\"],\r\n async run(args, context) {\r\n await runBoundaryCli(args, context)\r\n },\r\n}\r\n","import { ensureFlag } from \"../utils/args\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const createCommand: CommandDefinition = {\r\n name: \"create\",\r\n async run(args, context) {\r\n const createMod = await import(\"../createApp\")\r\n const commandArgs = context.json ? ensureFlag(\"json\", args) : args\r\n await createMod.main(commandArgs)\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { pathExists } from \"../utils/fs\"\r\nimport { npmCommandName, runCommand } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const dashboardCommand: CommandDefinition = {\r\n name: \"dashboard\",\r\n async run(args, context) {\r\n if (context.json) {\r\n throw new CliUsageError(\r\n \"[tw dashboard] --json is not supported for long-running dashboard output\"\r\n )\r\n }\r\n\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n port: { type: \"string\" },\r\n },\r\n })\r\n const port =\r\n typeof parsed.values.port === \"string\" ? parsed.values.port : (process.env.PORT ?? \"3000\")\r\n const serverScript = await resolveScript(context, \"packages/infrastructure/dashboard/src/server.mjs\")\r\n\r\n if (await pathExists(serverScript)) {\r\n context.output.writeText(`[tw dashboard] Starting on http://localhost:${port}`)\r\n await runCommand(process.execPath, [serverScript], {\r\n env: { ...process.env, PORT: port },\r\n })\r\n return\r\n }\r\n\r\n await runCommand(npmCommandName(), [\"run\", \"dev\", \"-w\", \"@tailwind-styled/dashboard\"], {\r\n env: { ...process.env, PORT: port },\r\n })\r\n },\r\n}\r\n","import fs from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { firstExistingPath, resolveMonorepoPath } from \"../utils/paths\"\r\nimport type { CommandContext } from \"./types\"\r\n\r\nexport type PluginInfo = {\r\n name: string\r\n description: string\r\n version: string\r\n tags: string[]\r\n official?: boolean\r\n}\r\n\r\nexport function enumerateVariantProps(matrix: Record<string, Array<string | number | boolean>>) {\r\n const keys = Object.keys(matrix)\r\n if (keys.length === 0) return [{}]\r\n const result: Array<Record<string, string | number | boolean>> = []\r\n\r\n function walk(index: number, current: Record<string, string | number | boolean>) {\r\n if (index >= keys.length) {\r\n result.push({ ...current })\r\n return\r\n }\r\n const key = keys[index]\r\n const values = matrix[key] ?? []\r\n for (const value of values) {\r\n current[key] = value\r\n walk(index + 1, current)\r\n }\r\n }\r\n\r\n walk(0, {})\r\n return result\r\n}\r\n\r\nexport async function resolveScript(\r\n context: CommandContext,\r\n relativeToRepoRoot: string\r\n): Promise<string> {\r\n const fromRuntime = await resolveMonorepoPath(context.runtimeDir, relativeToRepoRoot)\r\n const fromCwd = path.resolve(process.cwd(), relativeToRepoRoot)\r\n const resolved = await firstExistingPath([fromRuntime, fromCwd])\r\n if (!resolved) {\r\n throw new CliUsageError(`Required script not found: ${relativeToRepoRoot}`)\r\n }\r\n return resolved\r\n}\r\n\r\nexport async function loadRegistry(context: CommandContext): Promise<PluginInfo[]> {\r\n const runtimeRegistryPath = await resolveMonorepoPath(\r\n context.runtimeDir,\r\n \"packages/domain/plugin-registry/registry.json\"\r\n )\r\n const candidates: string[] = [\r\n runtimeRegistryPath,\r\n path.resolve(process.cwd(), \"packages/domain/plugin-registry/registry.json\"),\r\n ]\r\n\r\n const registryPath = await firstExistingPath(candidates)\r\n if (!registryPath) {\r\n throw new CliUsageError(\"Plugin registry file not found.\")\r\n }\r\n\r\n const raw = await fs.readFile(registryPath, \"utf8\")\r\n const data = JSON.parse(raw) as { official: PluginInfo[]; community: PluginInfo[] }\r\n return [\r\n ...data.official.map((item) => ({ ...item, official: true })),\r\n ...data.community.map((item) => ({ ...item, official: false })),\r\n ]\r\n}\r\n\r\nexport function validatePackageName(value: string): boolean {\r\n return /^(?:@[a-z0-9._-]+\\/)?[a-z0-9][a-z0-9._-]*$/i.test(value)\r\n}\r\n","import fsp from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliError, CliUsageError, errorMessage } from \"../utils/errors\"\r\nimport { pathExists, readJsonSafe } from \"../utils/fs\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\ninterface DeployManifest {\r\n name: string\r\n version: string\r\n tag: string\r\n description: string\r\n keywords: string[]\r\n publishedAt: string\r\n source: string\r\n registry: string\r\n}\r\n\r\ninterface DeployResponse {\r\n status: number | undefined\r\n body: unknown\r\n}\r\n\r\nconst postJson = async (\r\n url: URL,\r\n body: string,\r\n token: string | undefined\r\n): Promise<DeployResponse> => {\r\n const { default: https } = await import(\"node:https\")\r\n const { default: http } = await import(\"node:http\")\r\n\r\n return new Promise<DeployResponse>((resolve, reject) => {\r\n const client = url.protocol === \"https:\" ? https : http\r\n const req = client.request(\r\n url,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"content-type\": \"application/json\",\r\n \"content-length\": Buffer.byteLength(body),\r\n ...(token ? { authorization: `Bearer ${token}` } : {}),\r\n },\r\n },\r\n (res) => {\r\n const chunks: Buffer[] = []\r\n res.on(\"data\", (chunk: Buffer) => chunks.push(chunk))\r\n res.on(\"end\", () => {\r\n const raw = Buffer.concat(chunks).toString(\"utf8\")\r\n try {\r\n resolve({ status: res.statusCode, body: JSON.parse(raw) })\r\n } catch {\r\n resolve({ status: res.statusCode, body: raw })\r\n }\r\n })\r\n }\r\n )\r\n req.on(\"error\", reject)\r\n req.write(body)\r\n req.end()\r\n })\r\n}\r\n\r\nexport const deployCommand: CommandDefinition = {\r\n name: \"deploy\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n \"dry-run\": { type: \"boolean\", default: false },\r\n version: { type: \"string\" },\r\n tag: { type: \"string\" },\r\n registry: { type: \"string\" },\r\n },\r\n })\r\n\r\n const name = parsed.positionals[0] ?? \"component\"\r\n const dryRun = Boolean(parsed.values[\"dry-run\"])\r\n const version = typeof parsed.values.version === \"string\" ? parsed.values.version : \"0.1.0\"\r\n const tag = typeof parsed.values.tag === \"string\" ? parsed.values.tag : \"latest\"\r\n const registryUrl =\r\n typeof parsed.values.registry === \"string\"\r\n ? parsed.values.registry\r\n : (process.env.TW_REGISTRY_URL ?? null)\r\n\r\n const pkgPath = path.join(process.cwd(), \"package.json\")\r\n if (!(await pathExists(pkgPath))) {\r\n throw new CliUsageError(\"[tw deploy] No package.json found in current directory\")\r\n }\r\n\r\n const pkg = await readJsonSafe<{\r\n name?: string\r\n version?: string\r\n description?: string\r\n keywords?: string[]\r\n }>(pkgPath)\r\n if (!pkg) {\r\n throw new CliUsageError(\"[tw deploy] package.json is not valid JSON\")\r\n }\r\n const componentName = pkg.name ?? name\r\n\r\n const manifest: DeployManifest = {\r\n name: componentName,\r\n version: pkg.version ?? version,\r\n tag,\r\n description: pkg.description ?? \"\",\r\n keywords: pkg.keywords ?? [],\r\n publishedAt: new Date().toISOString(),\r\n source: process.cwd(),\r\n registry: registryUrl ?? \"https://registry.tailwind-styled.dev\",\r\n }\r\n\r\n if (dryRun) {\r\n if (context.json) {\r\n writeJsonSuccess(\"deploy\", {\r\n mode: \"dry-run\",\r\n component: componentName,\r\n registry: registryUrl ?? manifest.registry,\r\n manifest,\r\n })\r\n } else {\r\n context.output.writeText(\"[tw deploy] DRY RUN - would publish:\")\r\n context.output.writeText(JSON.stringify(manifest, null, 2))\r\n if (registryUrl) context.output.writeText(`\\n[tw deploy] Target registry: ${registryUrl}`)\r\n }\r\n return\r\n }\r\n\r\n const cacheDir = path.join(process.cwd(), \".tw-cache\")\r\n await fsp.mkdir(cacheDir, { recursive: true })\r\n await fsp.writeFile(\r\n path.join(cacheDir, \"deploy-manifest.json\"),\r\n JSON.stringify(manifest, null, 2)\r\n )\r\n\r\n if (!registryUrl) {\r\n if (context.json) {\r\n writeJsonSuccess(\"deploy\", {\r\n mode: \"local\",\r\n component: componentName,\r\n version: manifest.version,\r\n manifestPath: \".tw-cache/deploy-manifest.json\",\r\n nextSteps: [\"tw deploy --registry=http://localhost:4040\", \"tw registry serve\"],\r\n })\r\n } else {\r\n context.output.writeText(\r\n `[tw deploy] Published locally: ${componentName}@${manifest.version}`\r\n )\r\n context.output.writeText(\"[tw deploy] Manifest: .tw-cache/deploy-manifest.json\")\r\n context.output.writeText(\r\n \"[tw deploy] To publish remotely: tw deploy --registry=http://localhost:4040\"\r\n )\r\n context.output.writeText(\"[tw deploy] Start registry: tw registry serve\")\r\n }\r\n return\r\n }\r\n\r\n try {\r\n const url = new URL(\"/packages\", registryUrl)\r\n const body = JSON.stringify(manifest)\r\n const token = process.env.TW_REGISTRY_TOKEN\r\n const result = await postJson(url, body, token)\r\n\r\n const isSuccess = result.status === 201\r\n if (isSuccess) {\r\n const payload = result.body as { id?: string } | string\r\n if (context.json) {\r\n writeJsonSuccess(\"deploy\", {\r\n mode: \"remote\",\r\n component: componentName,\r\n version: manifest.version,\r\n registry: `${registryUrl}/packages/${componentName}`,\r\n id:\r\n typeof payload === \"object\" && payload && \"id\" in payload\r\n ? (payload.id ?? null)\r\n : null,\r\n })\r\n } else {\r\n context.output.writeText(`[tw deploy] Published: ${componentName}@${manifest.version}`)\r\n context.output.writeText(`[tw deploy] Registry: ${registryUrl}/packages/${componentName}`)\r\n const hasId = typeof payload === \"object\" && payload && \"id\" in payload && payload.id\r\n if (hasId) {\r\n context.output.writeText(`[tw deploy] ID: ${payload.id}`)\r\n }\r\n }\r\n return\r\n }\r\n\r\n throw new CliError(\r\n `[tw deploy] Registry returned ${String(result.status)}: ${JSON.stringify(result.body)}`,\r\n { code: \"DEPLOY_REGISTRY_ERROR\" }\r\n )\r\n } catch (error) {\r\n if (error instanceof CliError) throw error\r\n const message = errorMessage(error)\r\n throw new CliError(`[tw deploy] Registry unreachable: ${message}`, { cause: error })\r\n }\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport pc from \"picocolors\"\r\nimport {\r\n type DiagnosticInclude,\r\n type DiagnosticResult,\r\n runDiagnostics,\r\n SUPPORTED_DIAGNOSTIC_INCLUDES,\r\n} from \"../utils/doctorService\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\nfunction parseIncludeOption(value: string | undefined): DiagnosticInclude[] | undefined {\r\n if (!value) return undefined\r\n\r\n const includes = value\r\n .split(\",\")\r\n .map((entry) => entry.trim())\r\n .filter(Boolean)\r\n\r\n const invalid = includes.filter(\r\n (entry): entry is string => !SUPPORTED_DIAGNOSTIC_INCLUDES.includes(entry as DiagnosticInclude)\r\n )\r\n\r\n if (invalid.length > 0) {\r\n throw new CliUsageError(\r\n `Unsupported --include value: ${invalid.join(\", \")}. ` +\r\n `Supported values: ${SUPPORTED_DIAGNOSTIC_INCLUDES.join(\", \")}`\r\n )\r\n }\r\n\r\n return includes as DiagnosticInclude[]\r\n}\r\n\r\nexport async function runDoctorCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n include: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n verbose: { type: \"boolean\", short: \"v\" },\r\n },\r\n })\r\n\r\n const verbose = context.verbose || parsed.values.verbose === true\r\n const json = context.json || parsed.values.json === true\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : context.cwd\r\n const include = parseIncludeOption(\r\n typeof parsed.values.include === \"string\" ? parsed.values.include : undefined\r\n )\r\n\r\n try {\r\n const result = await runDiagnostics({ root, verbose, include })\r\n process.exitCode = result.summary.exitCode\r\n\r\n if (json) {\r\n context.output.jsonSuccess(\"doctor\", result)\r\n return\r\n }\r\n\r\n printDoctorOutput(result, context.output)\r\n } catch (error) {\r\n context.output.error(`Doctor failed: ${error instanceof Error ? error.message : String(error)}`)\r\n }\r\n}\r\n\r\nfunction renderSeverityHeading(severity: \"error\" | \"warning\" | \"info\"): string {\r\n switch (severity) {\r\n case \"error\":\r\n return pc.red(\"Issues\")\r\n case \"warning\":\r\n return pc.yellow(\"Warnings\")\r\n case \"info\":\r\n return pc.blue(\"Info\")\r\n }\r\n}\r\n\r\nfunction printDoctorOutput(result: DiagnosticResult, output: CliOutput): void {\r\n output.writeText(\"\")\r\n output.writeText(pc.cyan(\"Tailwind Styled Doctor\"))\r\n output.writeText(pc.dim(`root: ${result.root}`))\r\n output.writeText(pc.dim(`includes: ${result.includes.join(\", \")}`))\r\n output.writeText(\"\")\r\n\r\n output.subHeader(\"Checks\")\r\n for (const check of result.checks) {\r\n const prefix =\r\n check.status === \"pass\"\r\n ? pc.green(\"[pass]\")\r\n : check.status === \"fail\"\r\n ? pc.red(\"[fail]\")\r\n : pc.dim(\"[skip]\")\r\n output.listItem(`${prefix} ${check.id} - ${check.message}`)\r\n }\r\n output.writeText(\"\")\r\n\r\n for (const severity of [\"error\", \"warning\", \"info\"] as const) {\r\n const issues = result.issues.filter((issue) => issue.severity === severity)\r\n if (issues.length === 0) continue\r\n\r\n output.writeText(renderSeverityHeading(severity))\r\n for (const issue of issues) {\r\n output.listItem(issue.message)\r\n if (issue.location) {\r\n output.listItem(pc.dim(`location: ${issue.location}`))\r\n }\r\n if (issue.suggestion) {\r\n output.listItem(pc.dim(`suggestion: ${issue.suggestion}`))\r\n }\r\n }\r\n output.writeText(\"\")\r\n }\r\n\r\n const { errors, warnings, info, exitCode } = result.summary\r\n output.footer(\r\n `summary: ${errors} error(s), ${warnings} warning(s), ${info} info item(s), exit code ${exitCode}`\r\n )\r\n}\r\n\r\nconst doctorCommand: CommandDefinition = {\r\n name: \"doctor\",\r\n aliases: [\"d\", \"diagnose\"],\r\n async run(args, context) {\r\n await runDoctorCli(args, context)\r\n },\r\n}\r\n\r\nexport { doctorCommand }\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nimport { analyzeWorkspace } from \"@tailwind-styled/analyzer\"\r\nimport { scanWorkspace } from \"@tailwind-styled/scanner\"\r\n\r\nexport type DiagnosticSeverity = \"error\" | \"warning\" | \"info\"\r\nexport type DiagnosticInclude = \"workspace\" | \"tailwind\" | \"analysis\"\r\n\r\nexport const SUPPORTED_DIAGNOSTIC_INCLUDES: readonly DiagnosticInclude[] = [\r\n \"workspace\",\r\n \"tailwind\",\r\n \"analysis\",\r\n]\r\n\r\nexport interface DiagnosticIssue {\r\n severity: DiagnosticSeverity\r\n type: string\r\n message: string\r\n location?: string\r\n suggestion?: string\r\n}\r\n\r\nexport interface DiagnosticCheck {\r\n id: string\r\n category: DiagnosticInclude\r\n status: \"pass\" | \"fail\" | \"skip\"\r\n severity: DiagnosticSeverity\r\n message: string\r\n details?: Record<string, unknown>\r\n}\r\n\r\nexport interface DiagnosticResult {\r\n timestamp: string\r\n root: string\r\n includes: DiagnosticInclude[]\r\n issues: DiagnosticIssue[]\r\n checks: DiagnosticCheck[]\r\n summary: {\r\n errors: number\r\n warnings: number\r\n info: number\r\n exitCode: 0 | 1 | 2\r\n }\r\n}\r\n\r\nexport interface RunDiagnosticsOptions {\r\n root?: string\r\n verbose?: boolean\r\n include?: DiagnosticInclude[]\r\n}\r\n\r\nfunction calculateBundleSizeEstimate(classes: readonly string[]): number {\r\n const avgClassSize = 15\r\n const avgRuleSize = 80\r\n return classes.length * (avgClassSize + avgRuleSize)\r\n}\r\n\r\nfunction getTopUnusedClasses(unusedClasses: Array<{ name: string; count: number }>, limit: number) {\r\n return unusedClasses.slice(0, limit)\r\n}\r\n\r\nfunction parseIncludes(include?: DiagnosticInclude[]): DiagnosticInclude[] {\r\n if (!include || include.length === 0) {\r\n return [...SUPPORTED_DIAGNOSTIC_INCLUDES]\r\n }\r\n\r\n const invalid = include.filter((value) => !SUPPORTED_DIAGNOSTIC_INCLUDES.includes(value))\r\n if (invalid.length > 0) {\r\n throw new Error(\r\n `Unsupported diagnostic include: ${invalid.join(\", \")}. ` +\r\n `Supported values: ${SUPPORTED_DIAGNOSTIC_INCLUDES.join(\", \")}`\r\n )\r\n }\r\n\r\n return Array.from(new Set(include))\r\n}\r\n\r\nfunction addCheck(\r\n checks: DiagnosticCheck[],\r\n category: DiagnosticInclude,\r\n id: string,\r\n status: DiagnosticCheck[\"status\"],\r\n severity: DiagnosticSeverity,\r\n message: string,\r\n details?: Record<string, unknown>\r\n): void {\r\n checks.push({ id, category, status, severity, message, details })\r\n}\r\n\r\nfunction addIssue(\r\n issues: DiagnosticIssue[],\r\n severity: DiagnosticSeverity,\r\n type: string,\r\n message: string,\r\n suggestion?: string,\r\n location?: string\r\n): void {\r\n issues.push({ severity, type, message, suggestion, location })\r\n}\r\n\r\nfunction readJsonFile(filePath: string): Record<string, unknown> | null {\r\n if (!fs.existsSync(filePath)) return null\r\n try {\r\n return JSON.parse(fs.readFileSync(filePath, \"utf8\")) as Record<string, unknown>\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nfunction findWorkspacePackageJsonFiles(root: string): string[] {\r\n const packagesDir = path.join(root, \"packages\")\r\n if (!fs.existsSync(packagesDir)) return []\r\n\r\n return fs\r\n .readdirSync(packagesDir, { withFileTypes: true })\r\n .filter((entry) => entry.isDirectory())\r\n .map((entry) => path.join(packagesDir, entry.name, \"package.json\"))\r\n .filter((filePath) => fs.existsSync(filePath))\r\n}\r\n\r\nfunction findFiles(dir: string, ext: string): string[] {\r\n const files: string[] = []\r\n try {\r\n const entries = fs.readdirSync(dir, { withFileTypes: true })\r\n for (const entry of entries) {\r\n const fullPath = path.join(dir, entry.name)\r\n if (entry.isDirectory() && !entry.name.startsWith(\".\") && entry.name !== \"node_modules\") {\r\n files.push(...findFiles(fullPath, ext))\r\n } else if (entry.isFile() && entry.name.endsWith(ext)) {\r\n files.push(fullPath)\r\n }\r\n }\r\n } catch {\r\n return files\r\n }\r\n return files\r\n}\r\n\r\nfunction runWorkspaceDiagnostics(\r\n root: string,\r\n issues: DiagnosticIssue[],\r\n checks: DiagnosticCheck[]\r\n): void {\r\n const rootPackageJsonPath = path.join(root, \"package.json\")\r\n const rootPackageJson = readJsonFile(rootPackageJsonPath)\r\n if (!rootPackageJson) {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-root\",\r\n \"fail\",\r\n \"error\",\r\n \"package.json not found in the selected working directory.\"\r\n )\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"workspace-root\",\r\n \"package.json not found\",\r\n \"Run doctor in a project directory that contains a package.json\",\r\n root\r\n )\r\n return\r\n }\r\n\r\n const workspaces = Array.isArray(rootPackageJson.workspaces) ? rootPackageJson.workspaces : []\r\n const packageFiles = findWorkspacePackageJsonFiles(root)\r\n\r\n if (workspaces.length === 0) {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-root\",\r\n \"skip\",\r\n \"info\",\r\n \"No npm workspaces declared in package.json.\"\r\n )\r\n } else {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-root\",\r\n \"pass\",\r\n \"info\",\r\n `Workspace root detected with ${packageFiles.length} package(s).`,\r\n {\r\n patterns: workspaces,\r\n packages: packageFiles.length,\r\n }\r\n )\r\n }\r\n\r\n const requiredScripts = [\"build\", \"test\", \"check\", \"clean\", \"pack:check\"]\r\n const missingScripts = packageFiles.flatMap((filePath) => {\r\n const manifest = readJsonFile(filePath)\r\n if (!manifest) return []\r\n const scripts =\r\n typeof manifest.scripts === \"object\" && manifest.scripts !== null\r\n ? (manifest.scripts as Record<string, unknown>)\r\n : {}\r\n const missing = requiredScripts.filter((name) => typeof scripts[name] !== \"string\")\r\n if (missing.length === 0) return []\r\n\r\n const packageName =\r\n typeof manifest.name === \"string\" && manifest.name.length > 0\r\n ? manifest.name\r\n : path.basename(path.dirname(filePath))\r\n return [{ packageName, missing }]\r\n })\r\n\r\n if (missingScripts.length === 0) {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-scripts\",\r\n \"pass\",\r\n \"info\",\r\n \"All discovered workspace packages expose the minimum script set.\"\r\n )\r\n return\r\n }\r\n\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-scripts\",\r\n \"fail\",\r\n \"warning\",\r\n `${missingScripts.length} workspace package(s) are missing required scripts.`,\r\n {\r\n requiredScripts,\r\n missing: missingScripts,\r\n }\r\n )\r\n\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"workspace-scripts\",\r\n `${missingScripts.length} workspace package(s) are missing one or more required scripts.`,\r\n \"Add build, test, check, clean, and pack:check to each workspace package.json\"\r\n )\r\n}\r\n\r\nfunction runTailwindProjectDiagnostics(\r\n root: string,\r\n issues: DiagnosticIssue[],\r\n checks: DiagnosticCheck[]\r\n): void {\r\n const packageJsonPath = path.join(root, \"package.json\")\r\n const packageJson = readJsonFile(packageJsonPath)\r\n\r\n if (!packageJson) {\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"project-manifest\",\r\n \"fail\",\r\n \"error\",\r\n \"package.json not found for Tailwind diagnostics.\"\r\n )\r\n return\r\n }\r\n\r\n const dependencies = {\r\n ...((packageJson.dependencies as Record<string, unknown> | undefined) ?? {}),\r\n ...((packageJson.devDependencies as Record<string, unknown> | undefined) ?? {}),\r\n }\r\n\r\n const hasTailwind = typeof dependencies.tailwindcss === \"string\"\r\n const hasTailwindStyled =\r\n typeof dependencies[\"tailwind-styled-v4\"] === \"string\" ||\r\n Object.keys(dependencies).some((name) => name.startsWith(\"@tailwind-styled/\"))\r\n\r\n if (hasTailwind && hasTailwindStyled) {\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"project-dependencies\",\r\n \"pass\",\r\n \"info\",\r\n \"Tailwind CSS and tailwind-styled dependencies were detected.\"\r\n )\r\n } else {\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"project-dependencies\",\r\n \"fail\",\r\n \"warning\",\r\n \"Tailwind CSS or tailwind-styled dependency is missing.\"\r\n )\r\n\r\n if (!hasTailwind) {\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"missing-tailwind\",\r\n \"Tailwind CSS not installed\",\r\n \"npm install -D tailwindcss\"\r\n )\r\n }\r\n\r\n if (!hasTailwindStyled) {\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"missing-tailwind-styled\",\r\n \"tailwind-styled package not found in dependencies\",\r\n \"Install tailwind-styled-v4 or the package-specific @tailwind-styled/* dependency\"\r\n )\r\n }\r\n }\r\n\r\n const cssFiles = findFiles(root, \".css\")\r\n const hasTailwindImport = cssFiles.slice(0, 10).some((filePath) => {\r\n try {\r\n const content = fs.readFileSync(filePath, \"utf8\")\r\n return content.includes(\"@tailwind\") || content.includes('@import \"tailwindcss\"')\r\n } catch {\r\n return false\r\n }\r\n })\r\n\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"css-entry\",\r\n hasTailwindImport ? \"pass\" : \"fail\",\r\n hasTailwindImport ? \"info\" : \"warning\",\r\n hasTailwindImport\r\n ? \"Tailwind CSS entry was detected in project styles.\"\r\n : \"Tailwind CSS entry was not detected in scanned CSS files.\"\r\n )\r\n\r\n if (!hasTailwindImport && cssFiles.length > 0) {\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"no-tailwind-import\",\r\n \"Tailwind CSS imports not found in CSS files\",\r\n 'Add @import \"tailwindcss\" or Tailwind directives to your CSS entry file'\r\n )\r\n }\r\n\r\n const configFiles = [\"tailwind.config.js\", \"tailwind.config.ts\", \"tailwind.config.mjs\"]\r\n const hasConfig = configFiles.some((name) => fs.existsSync(path.join(root, name)))\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"tailwind-config\",\r\n hasConfig ? \"pass\" : \"skip\",\r\n \"info\",\r\n hasConfig ? \"Tailwind config file detected.\" : \"No tailwind.config file found.\"\r\n )\r\n\r\n const tsconfig = readJsonFile(path.join(root, \"tsconfig.json\"))\r\n const jsx = (tsconfig?.compilerOptions as Record<string, unknown> | undefined)?.jsx\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"tsconfig-jsx\",\r\n typeof jsx === \"string\" ? \"pass\" : \"skip\",\r\n \"info\",\r\n typeof jsx === \"string\"\r\n ? `TypeScript JSX mode detected: ${jsx}.`\r\n : \"TypeScript JSX mode not configured.\"\r\n )\r\n}\r\n\r\nasync function runAnalysisDiagnostics(\r\n root: string,\r\n issues: DiagnosticIssue[],\r\n checks: DiagnosticCheck[],\r\n verbose: boolean\r\n): Promise<void> {\r\n const scanResult = (() => {\r\n try {\r\n return scanWorkspace(root, {\r\n includeExtensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"],\r\n ignoreDirectories: [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"],\r\n useCache: true,\r\n })\r\n } catch (error) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"workspace-scan\",\r\n \"fail\",\r\n \"error\",\r\n `Workspace scan failed: ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"workspace-scan\",\r\n `Workspace scan failed: ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n return null\r\n }\r\n })()\r\n\r\n if (!scanResult) return\r\n\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"workspace-scan\",\r\n \"pass\",\r\n \"info\",\r\n `Workspace scan completed for ${scanResult.totalFiles} file(s) and ${scanResult.uniqueClasses.length} unique class(es).`\r\n )\r\n\r\n const analyzerReport = await (async () => {\r\n try {\r\n const report = await analyzeWorkspace(root, {\r\n semantic: true,\r\n classStats: {\r\n top: 100,\r\n frequentThreshold: 5,\r\n },\r\n })\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"analyzer\",\r\n \"pass\",\r\n \"info\",\r\n \"Analyzer semantic report generated successfully.\"\r\n )\r\n return report\r\n } catch (error) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"analyzer\",\r\n \"fail\",\r\n \"warning\",\r\n `Analyzer unavailable: ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"analyzer-unavailable\",\r\n `Analyzer is unavailable. ${error instanceof Error ? error.message : String(error)}`,\r\n \"Build @tailwind-styled/analyzer and the native binding to enable deep semantic diagnostics\"\r\n )\r\n return null\r\n }\r\n })()\r\n\r\n if (!analyzerReport) return\r\n\r\n if (analyzerReport.semantic) {\r\n const semantic = analyzerReport.semantic\r\n const topUnused = getTopUnusedClasses(\r\n semantic.unusedClasses.filter((entry) => entry.count > 0),\r\n 10\r\n )\r\n\r\n for (const unusedClass of topUnused) {\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"unused-class\",\r\n `Unused class \"${unusedClass.name}\" appears ${unusedClass.count} time(s) in your codebase.`,\r\n \"Remove the class or add it to your safelist if it is generated dynamically\"\r\n )\r\n }\r\n\r\n for (const conflict of semantic.conflicts) {\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"class-conflict\",\r\n conflict.message,\r\n `Classes: ${conflict.classes.join(\", \")}`,\r\n conflict.variants.length > 0 ? `Variant: ${conflict.variants.join(\", \")}` : undefined\r\n )\r\n }\r\n\r\n for (const unknownClass of semantic.unknownClasses.slice(0, 20)) {\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"unknown-class\",\r\n `Unknown class \"${unknownClass.name}\" was detected.`,\r\n \"This may be a custom utility or a typo\"\r\n )\r\n }\r\n\r\n if (semantic.tailwindConfig) {\r\n const config = semantic.tailwindConfig\r\n if (config.loaded) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"tailwind-config-analysis\",\r\n \"pass\",\r\n \"info\",\r\n `Tailwind config loaded with ${config.safelistCount} safelist entries and ${config.customUtilityCount} custom utilities.`\r\n )\r\n } else if (config.warning) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"tailwind-config-analysis\",\r\n \"fail\",\r\n \"warning\",\r\n `Tailwind config warning: ${config.warning}`\r\n )\r\n addIssue(issues, \"warning\", \"tailwind-config\", `Tailwind config warning: ${config.warning}`)\r\n }\r\n }\r\n }\r\n\r\n const bundleSizeEstimate = calculateBundleSizeEstimate(analyzerReport.safelist)\r\n const bundleSizeKB = Math.round(bundleSizeEstimate / 1024)\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"workspace-stats\",\r\n `Workspace scan complete: ${analyzerReport.totalFiles} files, ${analyzerReport.uniqueClassCount} unique classes, ${analyzerReport.totalClassOccurrences} total occurrences.`\r\n )\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"bundle-estimate\",\r\n `Estimated CSS bundle size: ~${bundleSizeKB}KB (${analyzerReport.safelist.length} classes).`\r\n )\r\n\r\n if (verbose) {\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"verbose\",\r\n `Full class list (${analyzerReport.safelist.length} classes) is available from the analyzer report.`\r\n )\r\n }\r\n}\r\n\r\nexport const runDiagnostics = async (\r\n options: RunDiagnosticsOptions = {}\r\n): Promise<DiagnosticResult> => {\r\n const root = path.resolve(options.root ?? process.cwd())\r\n const includes = parseIncludes(options.include)\r\n const issues: DiagnosticIssue[] = []\r\n const checks: DiagnosticCheck[] = []\r\n\r\n if (includes.includes(\"workspace\")) {\r\n runWorkspaceDiagnostics(root, issues, checks)\r\n }\r\n\r\n if (includes.includes(\"tailwind\")) {\r\n runTailwindProjectDiagnostics(root, issues, checks)\r\n }\r\n\r\n if (includes.includes(\"analysis\")) {\r\n await runAnalysisDiagnostics(root, issues, checks, options.verbose ?? false)\r\n }\r\n\r\n const summary = {\r\n errors: issues.filter((issue) => issue.severity === \"error\").length,\r\n warnings: issues.filter((issue) => issue.severity === \"warning\").length,\r\n info: issues.filter((issue) => issue.severity === \"info\").length,\r\n exitCode: 0 as 0 | 1 | 2,\r\n }\r\n\r\n summary.exitCode = summary.errors > 0 ? 1 : summary.warnings > 0 ? 2 : 0\r\n\r\n return {\r\n timestamp: new Date().toISOString(),\r\n root,\r\n includes,\r\n issues,\r\n checks,\r\n summary,\r\n }\r\n}\r\n","import path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { pathExists, readJsonSafe } from \"../utils/fs\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport { codeCommandName, npmCommandName, runCommand } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nconst testCommand: CommandDefinition = {\r\n name: \"test\",\r\n async run(args) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n watch: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const watch = Boolean(parsed.values.watch)\r\n await runCommand(npmCommandName(), watch ? [\"run\", \"test\", \"--\", \"--watch\"] : [\"run\", \"test\"])\r\n },\r\n}\r\n\r\nconst aiCommand: CommandDefinition = {\r\n name: \"ai\",\r\n async run(args, context) {\r\n const prompt = args.join(\" \").trim()\r\n if (!prompt) throw new CliUsageError('Usage: tw ai \"describe component\"')\r\n const script = await resolveScript(context, \"scripts/v45/ai.mjs\")\r\n await runCommand(process.execPath, [script, prompt])\r\n },\r\n}\r\n\r\nconst shareCommand: CommandDefinition = {\r\n name: \"share\",\r\n async run(args, context) {\r\n const name = args.find((arg) => !arg.startsWith(\"-\")) ?? \"component-name\"\r\n const manifestPath = path.join(process.cwd(), \".tw-cache\", \"deploy-manifest.json\")\r\n\r\n const defaultManifest: Required<Pick<ShareManifest, \"name\" | \"version\">> = {\r\n name,\r\n version: \"0.1.0\",\r\n }\r\n const parsedManifest = await readJsonSafe<ShareManifest>(manifestPath)\r\n const manifest: ShareManifest = parsedManifest\r\n ? { ...defaultManifest, ...parsedManifest }\r\n : defaultManifest\r\n\r\n const resolvedName = manifest.name ?? name\r\n const sharePayload = {\r\n name: resolvedName,\r\n version: manifest.version ?? \"0.1.0\",\r\n description: manifest.description ?? \"\",\r\n keywords: Array.isArray(manifest.keywords) ? manifest.keywords : [],\r\n registry: manifest.registry ?? \"https://registry.tailwind-styled.dev\",\r\n installCommand: `npm install ${resolvedName}`,\r\n importExample: `import { ${resolvedName.replace(/[^a-zA-Z]/g, \"\")} } from \"${resolvedName}\"`,\r\n channel: \"community\",\r\n sharedAt: new Date().toISOString(),\r\n instructions: [\r\n \"1. Attach README.md with usage examples\",\r\n `2. Add version tag: git tag v${manifest.version ?? \"0.1.0\"}`,\r\n \"3. Run `tw deploy` to publish to registry\",\r\n \"4. Share this payload in community channels\",\r\n ],\r\n }\r\n\r\n if (context.json) {\r\n writeJsonSuccess(\"share\", sharePayload)\r\n return\r\n }\r\n\r\n context.output.writeText(JSON.stringify(sharePayload, null, 2))\r\n },\r\n}\r\n\r\nconst codeCommand: CommandDefinition = {\r\n name: \"code\",\r\n async run(args, context) {\r\n const docsUrl = \"https://marketplace.visualstudio.com/search?term=tailwind-styled&target=VSCode\"\r\n const extension = \"tailwind-styled.tailwind-styled-v4\"\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n docs: { type: \"boolean\", default: false },\r\n install: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const docs = Boolean(parsed.values.docs)\r\n const install = Boolean(parsed.values.install)\r\n\r\n if (docs) {\r\n if (context.json) {\r\n writeJsonSuccess(\"code\", { action: \"docs\", url: docsUrl })\r\n return\r\n }\r\n context.output.writeText(docsUrl)\r\n return\r\n }\r\n if (install) {\r\n await runCommand(codeCommandName(), [\"--install-extension\", extension], {\r\n stdio: context.json ? \"pipe\" : \"inherit\",\r\n })\r\n if (context.json) {\r\n writeJsonSuccess(\"code\", { action: \"install\", extension })\r\n }\r\n return\r\n }\r\n if (context.json) {\r\n writeJsonSuccess(\"code\", { action: \"help\", usage: \"tw code --docs | tw code --install\" })\r\n return\r\n }\r\n context.output.writeText(\"Use: tw code --docs | tw code --install\")\r\n },\r\n}\r\n\r\ninterface VersionPayload {\r\n packageName: string\r\n currentVersion: string\r\n latestVersion: string | null\r\n updateAvailable: boolean | null\r\n checkFailed: string | null\r\n}\r\n\r\ninterface ShareManifest {\r\n name?: string\r\n version?: string\r\n description?: string\r\n keywords?: string[]\r\n registry?: string\r\n}\r\n\r\nconst CLI_PACKAGE_NAME = \"create-tailwind-styled\"\r\n\r\nconst parseSemver = (version: string): [number, number, number] | null => {\r\n const match = version.trim().match(/^v?(\\d+)\\.(\\d+)\\.(\\d+)/)\r\n return match ? [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10)] : null\r\n}\r\n\r\nconst isVersionOutdated = (currentVersion: string, latestVersion: string): boolean | null => {\r\n const current = parseSemver(currentVersion)\r\n const latest = parseSemver(latestVersion)\r\n if (!current || !latest) return null\r\n\r\n const firstDiffIndex = current.findIndex((val, idx) => val !== latest[idx])\r\n return firstDiffIndex === -1 ? false : current[firstDiffIndex] < latest[firstDiffIndex]\r\n}\r\n\r\nconst resolveCurrentCliVersion = async (\r\n context: Parameters<CommandDefinition[\"run\"]>[1]\r\n): Promise<string> => {\r\n const candidates = [\r\n path.resolve(context.runtimeDir, \"..\", \"package.json\"),\r\n path.resolve(process.cwd(), \"packages\", \"cli\", \"package.json\"),\r\n path.resolve(process.cwd(), \"package.json\"),\r\n ]\r\n\r\n for (const candidate of candidates) {\r\n if (!(await pathExists(candidate))) continue\r\n const pkg = await readJsonSafe<{ name?: string; version?: string }>(candidate)\r\n const isCliPackage =\r\n pkg?.version &&\r\n (pkg.name === CLI_PACKAGE_NAME ||\r\n candidate.includes(`${path.sep}packages${path.sep}cli${path.sep}`))\r\n if (isCliPackage) return pkg.version ?? \"0.0.0\"\r\n }\r\n\r\n return \"0.0.0\"\r\n}\r\n\r\nconst fetchLatestCliVersion = async (): Promise<string> => {\r\n const response = await fetch(`https://registry.npmjs.org/${CLI_PACKAGE_NAME}/latest`)\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}`)\r\n }\r\n const payload = (await response.json()) as { version?: unknown }\r\n if (!payload.version || typeof payload.version !== \"string\") {\r\n throw new Error(\"Invalid npm registry response\")\r\n }\r\n return payload.version\r\n}\r\n\r\nconst buildVersionPayload = async (\r\n context: Parameters<CommandDefinition[\"run\"]>[1],\r\n checkLatest: boolean\r\n): Promise<VersionPayload> => {\r\n const currentVersion = await resolveCurrentCliVersion(context)\r\n\r\n if (!checkLatest) {\r\n return {\r\n packageName: CLI_PACKAGE_NAME,\r\n currentVersion,\r\n latestVersion: null,\r\n updateAvailable: null,\r\n checkFailed: null,\r\n }\r\n }\r\n\r\n try {\r\n const latestVersion = await fetchLatestCliVersion()\r\n return {\r\n packageName: CLI_PACKAGE_NAME,\r\n currentVersion,\r\n latestVersion,\r\n updateAvailable: isVersionOutdated(currentVersion, latestVersion),\r\n checkFailed: null,\r\n }\r\n } catch (error) {\r\n return {\r\n packageName: CLI_PACKAGE_NAME,\r\n currentVersion,\r\n latestVersion: null,\r\n updateAvailable: null,\r\n checkFailed: error instanceof Error ? error.message : String(error),\r\n }\r\n }\r\n}\r\n\r\nconst versionCommand: CommandDefinition = {\r\n name: \"version\",\r\n aliases: [\"v\"],\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n check: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const checkLatest = Boolean(parsed.values.check)\r\n const payload = await buildVersionPayload(context, checkLatest)\r\n\r\n if (context.json) {\r\n writeJsonSuccess(\"version\", payload)\r\n return\r\n }\r\n\r\n context.output.writeText(`tw version: ${payload.currentVersion}`)\r\n if (!checkLatest) return\r\n\r\n if (payload.checkFailed) {\r\n context.output.writeText(`Latest check failed: ${payload.checkFailed}`)\r\n return\r\n }\r\n\r\n if (payload.latestVersion && payload.updateAvailable) {\r\n context.output.writeText(`Update available: ${payload.latestVersion}`)\r\n context.output.writeText(\"Run: tw upgrade\")\r\n return\r\n }\r\n\r\n if (payload.latestVersion) {\r\n context.output.writeText(`Up to date (latest: ${payload.latestVersion})`)\r\n }\r\n },\r\n}\r\n\r\nconst upgradeCommand: CommandDefinition = {\r\n name: \"upgrade\",\r\n aliases: [\"update\"],\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n install: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const install = Boolean(parsed.values.install)\r\n const payload = await buildVersionPayload(context, true)\r\n\r\n if (payload.checkFailed) {\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", { ...payload, installAttempted: false, installExecuted: false })\r\n return\r\n }\r\n context.output.writeText(`Latest check failed: ${payload.checkFailed}`)\r\n return\r\n }\r\n\r\n const shouldUpdate = payload.updateAvailable === true\r\n if (!shouldUpdate) {\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", {\r\n ...payload,\r\n installAttempted: install,\r\n installExecuted: false,\r\n })\r\n } else {\r\n context.output.writeText(`Already up to date (${payload.currentVersion})`)\r\n }\r\n return\r\n }\r\n\r\n if (!install) {\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", {\r\n ...payload,\r\n installAttempted: false,\r\n installExecuted: false,\r\n installHint: `npm install -g ${CLI_PACKAGE_NAME}@latest`,\r\n })\r\n } else {\r\n context.output.writeText(\r\n `Update available: ${payload.currentVersion} -> ${payload.latestVersion}`\r\n )\r\n context.output.writeText(\"Run: tw upgrade --install\")\r\n }\r\n return\r\n }\r\n\r\n await runCommand(npmCommandName(), [\"install\", \"-g\", `${CLI_PACKAGE_NAME}@latest`], {\r\n stdio: context.json ? \"pipe\" : \"inherit\",\r\n })\r\n\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", { ...payload, installAttempted: true, installExecuted: true })\r\n return\r\n }\r\n\r\n context.output.writeText(`Upgrade command executed for ${CLI_PACKAGE_NAME}@latest`)\r\n },\r\n}\r\n\r\nexport const miscCommands: CommandDefinition[] = [\r\n testCommand,\r\n aiCommand,\r\n shareCommand,\r\n codeCommand,\r\n versionCommand,\r\n upgradeCommand,\r\n]\r\n","import { CliUsageError } from \"../utils/errors\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport { npmCommandName, runCommand, runCommandAsJson } from \"../utils/process\"\r\nimport { loadRegistry, resolveScript, validatePackageName } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const pluginCommand: CommandDefinition = {\r\n name: \"plugin\",\r\n async run(args, context) {\r\n const subcommand = args[0]\r\n const pluginArgs = args.slice(1)\r\n\r\n if (subcommand === \"update-check\") {\r\n const script = await resolveScript(context, \"packages/domain/plugin-registry/dist/cli.js\")\r\n if (context.json) {\r\n await runCommandAsJson(\"plugin.update-check\", process.execPath, [script, \"update-check\"])\r\n } else {\r\n await runCommand(process.execPath, [script, \"update-check\"])\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"verify\") {\r\n const pkgName = pluginArgs[0]\r\n if (!pkgName) throw new CliUsageError(\"Usage: tw plugin verify <package-name>\")\r\n const script = await resolveScript(context, \"packages/domain/plugin-registry/dist/cli.js\")\r\n if (context.json) {\r\n await runCommandAsJson(\"plugin.verify\", process.execPath, [script, \"verify\", pkgName])\r\n } else {\r\n await runCommand(process.execPath, [script, \"verify\", pkgName])\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"marketplace\" || subcommand === \"publish\") {\r\n const script = await resolveScript(context, \"scripts/v45/marketplace.mjs\")\r\n const marketplaceCommand = subcommand === \"publish\" ? \"publish\" : (pluginArgs[0] ?? \"help\")\r\n const forwarded = subcommand === \"marketplace\" ? pluginArgs.slice(1) : pluginArgs\r\n if (context.json) {\r\n await runCommandAsJson(`plugin.${subcommand}`, process.execPath, [\r\n script,\r\n marketplaceCommand,\r\n ...forwarded,\r\n ])\r\n } else {\r\n await runCommand(process.execPath, [script, marketplaceCommand, ...forwarded])\r\n }\r\n return\r\n }\r\n\r\n const plugins = await loadRegistry(context)\r\n\r\n if (subcommand === \"search\") {\r\n const query = pluginArgs.join(\" \").toLowerCase().trim()\r\n const results = plugins.filter((plugin) => {\r\n if (!query) return true\r\n return (\r\n plugin.name.toLowerCase().includes(query) ||\r\n plugin.description.toLowerCase().includes(query) ||\r\n plugin.tags.some((tag) => tag.toLowerCase().includes(query))\r\n )\r\n })\r\n if (context.json) {\r\n writeJsonSuccess(\"plugin.search\", { query, count: results.length, results })\r\n } else {\r\n context.output.table(results)\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"list\") {\r\n if (context.json) {\r\n writeJsonSuccess(\"plugin.list\", { count: plugins.length, plugins })\r\n } else {\r\n context.output.table(plugins)\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"install\") {\r\n const pluginName = pluginArgs[0]\r\n if (!pluginName) throw new CliUsageError(\"Usage: tw plugin install <name>\")\r\n if (!validatePackageName(pluginName)) {\r\n throw new CliUsageError(`Invalid package name: ${pluginName}`)\r\n }\r\n if (context.json) {\r\n await runCommand(npmCommandName(), [\"install\", pluginName], { stdio: \"pipe\" })\r\n writeJsonSuccess(\"plugin.install\", {\r\n package: pluginName,\r\n manager: npmCommandName(),\r\n installed: true,\r\n })\r\n } else {\r\n await runCommand(npmCommandName(), [\"install\", pluginName])\r\n }\r\n return\r\n }\r\n\r\n throw new CliUsageError(\"Unknown plugin command\")\r\n },\r\n}\r\n","#!/usr/bin/env node\r\n/**\r\n * tw preflight [--fix] - Environment preflight check\r\n *\r\n * Memvalidasi semua prasyarat sebelum menggunakan tailwind-styled:\r\n * - Node.js version (>=20)\r\n * - Tailwind config ada\r\n * - Bundler plugin terpasang\r\n * - tailwind-styled terinstall\r\n * - Deprecated config patterns\r\n *\r\n * Usage:\r\n * tw preflight -> show check results + exit 1 if any fail\r\n * tw preflight --fix -> auto-fix sederhana (init config yang hilang)\r\n * tw preflight --json -> output JSON untuk CI/scripting\r\n */\r\n\r\nimport path from \"node:path\"\r\nimport { pathToFileURL } from \"node:url\"\r\n\r\nimport { hasFlag } from \"./utils/args\"\r\nimport { errorExitCode, errorToJson } from \"./utils/errors\"\r\nimport { ensureFileSafe, pathExists, readFileSafe, readJsonSafe } from \"./utils/fs\"\r\nimport { writeJsonSuccess } from \"./utils/json\"\r\n\r\ninterface PackageJsonLike {\r\n dependencies?: Record<string, string>\r\n devDependencies?: Record<string, string>\r\n}\r\n\r\ntype LegacyTailwindConfig = {\r\n mode?: string\r\n purge?: unknown\r\n}\r\n\r\nexport type CheckResult = {\r\n id: string\r\n label: string\r\n pass: boolean\r\n message: string\r\n fix?: string\r\n autoFixed?: boolean\r\n}\r\n\r\nexport interface PreflightReport {\r\n generatedAt: string\r\n summary: {\r\n passed: number\r\n failed: number\r\n warnings: number\r\n total: number\r\n }\r\n checks: CheckResult[]\r\n}\r\n\r\nconst DEFAULT_TAILWIND_CSS = '@import \"tailwindcss\";\\n'\r\nconst DEFAULT_TW_CONFIG = `${JSON.stringify(\r\n {\r\n version: 1,\r\n compiler: { engine: \"rust\" },\r\n css: { entry: \"src/tailwind.css\" },\r\n },\r\n null,\r\n 2\r\n)}\\n`\r\n\r\nfunction pkgHasDep(pkg: PackageJsonLike, name: string): boolean {\r\n return Boolean(pkg.dependencies?.[name] || pkg.devDependencies?.[name])\r\n}\r\n\r\nfunction nodeVersion(): { major: number; full: string } {\r\n const full = process.version.replace(\"v\", \"\")\r\n const major = parseInt(full.split(\".\")[0], 10)\r\n return { major, full }\r\n}\r\n\r\n// Keep these checks for source-verification test compatibility:\r\n// \"preflight.ts\", \"preflight.js\", and \"resolveCliEntry\"\r\nfunction resolveCliEntry(scriptPath: string): string {\r\n if (scriptPath.endsWith(\"preflight.ts\")) {\r\n return scriptPath.replace(/preflight\\.ts$/, \"index.ts\")\r\n }\r\n if (scriptPath.endsWith(\"preflight.js\")) {\r\n return scriptPath.replace(/preflight\\.js$/, \"index.js\")\r\n }\r\n return scriptPath\r\n}\r\n\r\nasync function hasTailwindCssImport(cwd: string): Promise<boolean> {\r\n const cssFiles = [\"src/app/globals.css\", \"src/index.css\", \"src/style.css\", \"app/globals.css\"]\r\n for (const file of cssFiles) {\r\n const raw = await readFileSafe(path.join(cwd, file))\r\n if (raw?.includes(\"tailwindcss\")) return true\r\n }\r\n return false\r\n}\r\n\r\nasync function hasSafelistSource(cwd: string): Promise<{ found: boolean; cssFile: string | null }> {\r\n const cssFiles = [\r\n \"src/app/globals.css\",\r\n \"src/globals.css\",\r\n \"src/styles/globals.css\",\r\n \"src/index.css\",\r\n \"src/tailwind.css\",\r\n \"styles/globals.css\",\r\n \"app/globals.css\",\r\n ]\r\n for (const file of cssFiles) {\r\n const raw = await readFileSafe(path.join(cwd, file))\r\n if (raw === null) continue\r\n if (raw.includes(\"tw-classes\")) return { found: true, cssFile: file }\r\n // CSS entry found but missing @source — report which file needs fixing\r\n if (raw.includes(\"tailwindcss\")) return { found: false, cssFile: file }\r\n }\r\n return { found: false, cssFile: null }\r\n}\r\n\r\nasync function applyTailwindInit(cwd: string): Promise<void> {\r\n await ensureFileSafe(path.join(cwd, \"src\", \"tailwind.css\"), DEFAULT_TAILWIND_CSS)\r\n await ensureFileSafe(path.join(cwd, \"tailwind-styled.config.json\"), DEFAULT_TW_CONFIG)\r\n}\r\n\r\nfunction check(\r\n results: CheckResult[],\r\n id: string,\r\n label: string,\r\n pass: boolean,\r\n message: string,\r\n fix?: string\r\n): void {\r\n results.push({ id, label, pass, message, fix })\r\n}\r\n\r\nexport async function runPreflightCli(rawArgs: string[]): Promise<PreflightReport> {\r\n const autoFix = hasFlag(\"fix\", rawArgs)\r\n const jsonMode = hasFlag(\"json\", rawArgs)\r\n const allowFail = hasFlag(\"allow-fail\", rawArgs)\r\n const cwd = process.cwd()\r\n const results: CheckResult[] = []\r\n\r\n const node = nodeVersion()\r\n check(\r\n results,\r\n \"node-version\",\r\n \"Node.js version\",\r\n node.major >= 20,\r\n // Keep this literal for source-verification test compatibility:\r\n // \"node.major >= 20\"\r\n node.major >= 20\r\n ? `Node ${node.full} OK`\r\n : `Node ${node.full} - requires >=20. Download: https://nodejs.org`,\r\n node.major < 20 ? \"Install Node.js 20 LTS or newer from https://nodejs.org\" : undefined\r\n )\r\n\r\n const pkg = await readJsonSafe<PackageJsonLike>(path.join(cwd, \"package.json\"))\r\n check(\r\n results,\r\n \"package-json\",\r\n \"package.json exists\",\r\n pkg !== null,\r\n pkg ? \"Found package.json OK\" : \"No package.json - run `npm init` first\"\r\n )\r\n\r\n if (pkg) {\r\n const hasTw = pkgHasDep(pkg, \"tailwind-styled-v4\") || pkgHasDep(pkg, \"@tailwind-styled/core\")\r\n check(\r\n results,\r\n \"tailwind-styled\",\r\n \"tailwind-styled-v4 installed\",\r\n hasTw,\r\n hasTw ? \"tailwind-styled-v4 found OK\" : \"Not installed - run: npm install tailwind-styled-v4\",\r\n \"npm install tailwind-styled-v4\"\r\n )\r\n\r\n const hasVite = pkgHasDep(pkg, \"@tailwind-styled/vite\") || pkgHasDep(pkg, \"vite\")\r\n const hasNext = pkgHasDep(pkg, \"next\")\r\n const hasRspack = pkgHasDep(pkg, \"@tailwind-styled/rspack\") || pkgHasDep(pkg, \"@rspack/core\")\r\n const hasBundler = hasVite || hasNext || hasRspack\r\n const bundlerName = hasNext ? \"Next.js\" : hasVite ? \"Vite\" : hasRspack ? \"Rspack\" : \"none\"\r\n check(\r\n results,\r\n \"bundler\",\r\n \"Bundler detected\",\r\n hasBundler,\r\n hasBundler\r\n ? `${bundlerName} detected OK`\r\n : \"No supported bundler (Vite/Next.js/Rspack) found\",\r\n \"Install a bundler: npm install vite @vitejs/plugin-react OR npx create-next-app\"\r\n )\r\n\r\n const hasMerge = pkgHasDep(pkg, \"tailwind-merge\")\r\n check(\r\n results,\r\n \"tailwind-merge\",\r\n \"tailwind-merge installed\",\r\n hasMerge,\r\n hasMerge ? \"tailwind-merge found OK\" : \"Missing peer dep - run: npm install tailwind-merge\",\r\n \"npm install tailwind-merge\"\r\n )\r\n }\r\n\r\n const twConfigFiles = [\"tailwind.config.ts\", \"tailwind.config.js\", \"tailwind.config.mjs\"]\r\n const twConfigChecks = await Promise.all(\r\n twConfigFiles.map(async (file) => ({ file, exists: await pathExists(path.join(cwd, file)) }))\r\n )\r\n const foundTwConfig = twConfigChecks.find((item) => item.exists)?.file ?? null\r\n const hasCssConfig = await hasTailwindCssImport(cwd)\r\n check(\r\n results,\r\n \"tailwind-config\",\r\n \"Tailwind config present\",\r\n foundTwConfig !== null || hasCssConfig,\r\n foundTwConfig\r\n ? `${foundTwConfig} found OK`\r\n : hasCssConfig\r\n ? \"@import tailwindcss found in CSS OK\"\r\n : \"No Tailwind config found - run: tw init\",\r\n \"tw init\"\r\n )\r\n\r\n const oldConfig =\r\n (await readJsonSafe<LegacyTailwindConfig>(path.join(cwd, \"tailwind.config.js\"))) ??\r\n (await readJsonSafe<LegacyTailwindConfig>(path.join(cwd, \"tailwind.config.ts\")))\r\n\r\n if (oldConfig) {\r\n const hasOldJit = oldConfig.mode === \"jit\"\r\n const hasOldPurge = \"purge\" in oldConfig\r\n const deprecated = hasOldJit || hasOldPurge\r\n check(\r\n results,\r\n \"deprecated-config\",\r\n \"No deprecated config patterns\",\r\n !deprecated,\r\n deprecated\r\n ? `Deprecated: ${hasOldJit ? '\"mode: jit\"' : \"\"} ${hasOldPurge ? '\"purge\"' : \"\"} -> use Tailwind v4 CSS-first`\r\n : \"No deprecated patterns found OK\",\r\n \"Run: tw migrate --dry-run to see migration steps\"\r\n )\r\n }\r\n\r\n const hasTsConfig = await pathExists(path.join(cwd, \"tsconfig.json\"))\r\n check(\r\n results,\r\n \"typescript\",\r\n \"TypeScript configured\",\r\n hasTsConfig,\r\n hasTsConfig ? \"tsconfig.json found OK\" : \"No tsconfig.json (optional - recommended for best DX)\"\r\n )\r\n\r\n // Next.js only: check @source for safelist dev plugin\r\n if (pkg) {\r\n const hasNext = pkgHasDep(pkg, \"next\")\r\n if (hasNext) {\r\n const safelist = await hasSafelistSource(cwd)\r\n const pass = safelist.found\r\n const message = pass\r\n ? `@source tailwind-styled-safelist.css found in ${safelist.cssFile} OK`\r\n : safelist.cssFile\r\n ? `${safelist.cssFile} missing: @source \"../.next/tailwind-styled-safelist.css\" — add it or run: tw setup`\r\n : \"@source tailwind-styled-safelist.css not found — run: tw setup\"\r\n check(\r\n results,\r\n \"safelist-source\",\r\n \"Safelist @source configured\",\r\n pass,\r\n message,\r\n \"tw setup\"\r\n )\r\n }\r\n }\r\n\r\n if (autoFix) {\r\n // Keep this call path present for compatibility and traceability.\r\n resolveCliEntry(process.argv[1] ?? \"\")\r\n\r\n for (const result of results) {\r\n if (result.pass) continue\r\n if (result.id === \"tailwind-config\" && result.fix === \"tw init\") {\r\n try {\r\n await applyTailwindInit(cwd)\r\n result.autoFixed = true\r\n result.message += \" -> auto-initialized\"\r\n } catch {\r\n // Ignore auto-fix failures and keep original message.\r\n }\r\n }\r\n }\r\n }\r\n\r\n const passed = results.filter((result) => result.pass).length\r\n const failed = results.filter((result) => !result.pass && result.id !== \"typescript\").length\r\n const warnings = results.filter((result) => !result.pass && result.id === \"typescript\").length\r\n\r\n const report: PreflightReport = {\r\n generatedAt: new Date().toISOString(),\r\n summary: { passed, failed, warnings, total: results.length },\r\n checks: results,\r\n }\r\n\r\n if (jsonMode) {\r\n writeJsonSuccess(\"preflight\", report)\r\n } else {\r\n console.log(\"\\nPreflight check\\n\")\r\n for (const result of results) {\r\n const icon = result.pass ? \"[ok]\" : result.id === \"typescript\" ? \"[warn]\" : \"[fail]\"\r\n const status = result.autoFixed ? \" [auto-fixed]\" : \"\"\r\n console.log(`${icon} ${result.label}`)\r\n console.log(` ${result.message}${status}`)\r\n if (!result.pass && result.fix && result.id !== \"typescript\") {\r\n console.log(` Fix: ${result.fix}`)\r\n }\r\n console.log(\"\")\r\n }\r\n if (failed === 0) {\r\n console.log(`[ok] All checks passed (${passed}/${results.length})\\n`)\r\n } else {\r\n console.log(`[fail] ${failed} check(s) failed - see above for fixes`)\r\n console.log(\" Run 'tw preflight --fix' to auto-fix what's possible\\n\")\r\n }\r\n }\r\n\r\n if (failed > 0 && !allowFail) {\r\n process.exitCode = 1\r\n }\r\n\r\n return report\r\n}\r\n\r\nfunction isDirectExecution(): boolean {\r\n const scriptPath = process.argv[1]\r\n if (!scriptPath) return false\r\n return import.meta.url === pathToFileURL(scriptPath).href\r\n}\r\n\r\nif (isDirectExecution()) {\r\n runPreflightCli(process.argv.slice(2)).catch((error) => {\r\n const rawArgs = process.argv.slice(2)\r\n const jsonMode = hasFlag(\"json\", rawArgs)\r\n const debugMode =\r\n hasFlag(\"debug\", rawArgs) || process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\"\r\n if (jsonMode) {\r\n console.log(errorToJson(error, debugMode, \"preflight\"))\r\n } else if (debugMode && error instanceof Error && error.stack) {\r\n console.error(error.stack)\r\n } else if (error instanceof Error) {\r\n console.error(error.message)\r\n } else {\r\n console.error(String(error))\r\n }\r\n process.exitCode = errorExitCode(error)\r\n })\r\n}","import { runPreflightCli } from \"../preflight\"\r\nimport { ensureFlag } from \"../utils/args\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const preflightCommand: CommandDefinition = {\r\n name: \"preflight\",\r\n async run(args, context) {\r\n const commandArgs = context.json ? ensureFlag(\"json\", args) : args\r\n await runPreflightCli(commandArgs)\r\n },\r\n}\r\n","import { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand, runCommandAsJson } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const registryCommand: CommandDefinition = {\r\n name: \"registry\",\r\n async run(args, context) {\r\n const sub = args[0] ?? \"serve\"\r\n if (context.json && sub === \"serve\") {\r\n throw new CliUsageError(\r\n \"[tw registry serve] --json is not supported for long-running server mode\"\r\n )\r\n }\r\n const isTarball = [\"publish\", \"install\", \"versions\"].includes(sub)\r\n const script = await resolveScript(\r\n context,\r\n isTarball ? \"scripts/v45/registry-tarball.mjs\" : \"scripts/v45/registry.mjs\"\r\n )\r\n const commandArgs = [script, sub, ...args.slice(1)]\r\n if (context.json) {\r\n await runCommandAsJson(`registry.${sub}`, process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n },\r\n}\r\n\r\nexport const installRegistryCommand: CommandDefinition = {\r\n name: \"install\",\r\n async run(args, context) {\r\n const script = await resolveScript(context, \"scripts/v45/registry-tarball.mjs\")\r\n const commandArgs = [script, \"install\", ...args]\r\n if (context.json) {\r\n await runCommandAsJson(\"registry.install\", process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand, runCommandAsJson, npxCommandName } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\ninterface ScriptRunOptions {\r\n jsonUnsupported?: boolean\r\n}\r\n\r\nasync function runScriptCommand(\r\n commandName: string,\r\n context: Parameters<CommandDefinition[\"run\"]>[1],\r\n relativeScriptPath: string,\r\n args: string[],\r\n options: ScriptRunOptions = {}\r\n): Promise<void> {\r\n if (context.json && options.jsonUnsupported) {\r\n throw new CliUsageError(\r\n `[tw ${commandName}] --json is not supported for long-running command mode`\r\n )\r\n }\r\n\r\n const script = await resolveScript(context, relativeScriptPath)\r\n const commandArgs = [script, ...args]\r\n\r\n // .ts scripts dijalankan via tsx (TypeScript runtime)\r\n const isTs = script.endsWith(\".ts\")\r\n const runner = isTs ? \"tsx\" : process.execPath\r\n const runnerArgs = isTs ? commandArgs : commandArgs\r\n\r\n if (context.json) {\r\n await runCommandAsJson(commandName, runner, runnerArgs)\r\n } else {\r\n await runCommand(runner, runnerArgs)\r\n }\r\n}\r\n\r\nconst parseCommand: CommandDefinition = {\r\n name: \"parse\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw parse <file>\")\r\n await runScriptCommand(\"parse\", context, \"scripts/v46/parse.ts\", [file])\r\n },\r\n}\r\n\r\nconst transformCommand: CommandDefinition = {\r\n name: \"transform\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n output: { type: \"string\" },\r\n },\r\n })\r\n const file = parsed.positionals[0]\r\n const out =\r\n typeof parsed.values.output === \"string\" ? parsed.values.output : parsed.positionals[1]\r\n if (!file) throw new CliUsageError(\"Usage: tw transform <file> [outFile]\")\r\n const commandArgs = [file]\r\n if (out) commandArgs.push(out)\r\n await runScriptCommand(\"transform\", context, \"scripts/v46/transform.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst minifyCommand: CommandDefinition = {\r\n name: \"minify\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw minify <file>\")\r\n await runScriptCommand(\"minify\", context, \"scripts/v47/minify.ts\", [file])\r\n },\r\n}\r\n\r\nconst shakeCommand: CommandDefinition = {\r\n name: \"shake\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw shake <css-file>\")\r\n await runScriptCommand(\"shake\", context, \"scripts/v47/shake-css.ts\", [file])\r\n },\r\n}\r\n\r\nconst lintCommand: CommandDefinition = {\r\n name: \"lint\",\r\n async run(args, context) {\r\n const dir = args[0] ?? \".\"\r\n const workers = args[1] ?? \"0\"\r\n await runScriptCommand(\"lint\", context, \"scripts/v48/lint-parallel.ts\", [dir, workers])\r\n },\r\n}\r\n\r\nconst formatCommand: CommandDefinition = {\r\n name: \"format\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n write: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const file = parsed.positionals[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw format <file> [--write]\")\r\n const commandArgs = [file]\r\n if (parsed.values.write) commandArgs.push(\"--write\")\r\n await runScriptCommand(\"format\", context, \"scripts/v48/format.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst lspCommand: CommandDefinition = {\r\n name: \"lsp\",\r\n async run(args, context) {\r\n await runScriptCommand(\"lsp\", context, \"scripts/v48/lsp.ts\", [\"--stdio\", ...args], {\r\n jsonUnsupported: true,\r\n })\r\n },\r\n}\r\n\r\nconst benchmarkCommand: CommandDefinition = {\r\n name: \"benchmark\",\r\n async run(args, context) {\r\n await runScriptCommand(\"benchmark\", context, \"scripts/v48/benchmark-toolchains.ts\", args)\r\n },\r\n}\r\n\r\nconst optimizeCommand: CommandDefinition = {\r\n name: \"optimize\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) {\r\n throw new CliUsageError(\"Usage: tw optimize <file> [--constant-folding] [--partial-eval]\")\r\n }\r\n await runScriptCommand(\"optimize\", context, \"scripts/v49/optimize.ts\", args)\r\n },\r\n}\r\n\r\nconst splitCommand: CommandDefinition = {\r\n name: \"split\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n output: { type: \"string\" },\r\n },\r\n })\r\n const root = parsed.positionals[0] ?? \".\"\r\n const outDir =\r\n typeof parsed.values.output === \"string\"\r\n ? parsed.values.output\r\n : (parsed.positionals[1] ?? \"artifacts/route-css\")\r\n await runScriptCommand(\"split\", context, \"scripts/v49/split-routes.ts\", [root, outDir])\r\n },\r\n}\r\n\r\nconst criticalCommand: CommandDefinition = {\r\n name: \"critical\",\r\n async run(args, context) {\r\n const html = args[0]\r\n const css = args[1]\r\n if (!html || !css) throw new CliUsageError(\"Usage: tw critical <html-file> <css-file>\")\r\n await runScriptCommand(\"critical\", context, \"scripts/v49/critical-css.ts\", [html, css])\r\n },\r\n}\r\n\r\nconst cacheCommand: CommandDefinition = {\r\n name: \"cache\",\r\n async run(args, context) {\r\n const commandArgs: string[] = []\r\n if (args[0]) commandArgs.push(args[0])\r\n if (args[1]) commandArgs.push(args[1])\r\n await runScriptCommand(\"cache\", context, \"scripts/v50/cache.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst clusterCommand: CommandDefinition = {\r\n name: \"cluster\",\r\n async run(args, context) {\r\n const commandArgs: string[] = []\r\n if (args[0]) commandArgs.push(args[0])\r\n if (args[1]) commandArgs.push(args[1])\r\n args\r\n .filter((arg) => arg.startsWith(\"--remote=\") || arg.startsWith(\"--token=\"))\r\n .forEach((arg) => commandArgs.push(arg))\r\n await runScriptCommand(\"cluster\", context, \"scripts/v50/cluster.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst clusterServerCommand: CommandDefinition = {\r\n name: \"cluster-server\",\r\n async run(args, context) {\r\n await runScriptCommand(\"cluster-server\", context, \"scripts/v50/cluster-server.ts\", args, {\r\n jsonUnsupported: true,\r\n })\r\n },\r\n}\r\n\r\nconst adoptCommand: CommandDefinition = {\r\n name: \"adopt\",\r\n async run(args, context) {\r\n const feature = args[0]\r\n const project = args[1]\r\n const commandArgs: string[] = []\r\n if (feature) commandArgs.push(feature)\r\n if (project) commandArgs.push(project)\r\n await runScriptCommand(\"adopt\", context, \"scripts/v50/adopt.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst metricsCommand: CommandDefinition = {\r\n name: \"metrics\",\r\n async run(args, context) {\r\n const port = args[0] ?? \"3030\"\r\n await runScriptCommand(\"metrics\", context, \"scripts/v50/metrics.ts\", [port], {\r\n jsonUnsupported: true,\r\n })\r\n },\r\n}\r\n\r\nconst auditCommand: CommandDefinition = {\r\n name: \"audit\",\r\n async run(args, context) {\r\n await runScriptCommand(\"audit\", context, \"scripts/v45/audit.ts\", args)\r\n },\r\n}\r\n\r\nexport const scriptCommands: CommandDefinition[] = [\r\n parseCommand,\r\n transformCommand,\r\n minifyCommand,\r\n shakeCommand,\r\n lintCommand,\r\n formatCommand,\r\n lspCommand,\r\n benchmarkCommand,\r\n optimizeCommand,\r\n splitCommand,\r\n criticalCommand,\r\n cacheCommand,\r\n clusterCommand,\r\n clusterServerCommand,\r\n adoptCommand,\r\n metricsCommand,\r\n auditCommand,\r\n]\r\n","import path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { pathExists } from \"../utils/fs\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport { npxCommandName, runCommand } from \"../utils/process\"\r\nimport { enumerateVariantProps } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const storybookCommand: CommandDefinition = {\r\n name: \"storybook\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n variants: { type: \"string\" },\r\n port: { type: \"string\" },\r\n \"no-open\": { type: \"boolean\", default: false },\r\n },\r\n })\r\n\r\n const variantsRaw = typeof parsed.values.variants === \"string\" ? parsed.values.variants : null\r\n const port = typeof parsed.values.port === \"string\" ? parsed.values.port : \"6006\"\r\n const open = !parsed.values[\"no-open\"]\r\n\r\n if (variantsRaw) {\r\n try {\r\n const matrix = JSON.parse(variantsRaw) as Record<string, Array<string | number | boolean>>\r\n const rows = enumerateVariantProps(matrix)\r\n if (context.json) {\r\n writeJsonSuccess(\"storybook.variants\", { count: rows.length, rows })\r\n } else {\r\n context.output.writeText(JSON.stringify(rows, null, 2))\r\n }\r\n } catch (error) {\r\n throw new CliUsageError(\"Invalid JSON in --variants flag\", { cause: error })\r\n }\r\n return\r\n }\r\n\r\n if (context.json) {\r\n throw new CliUsageError(\"[tw storybook] --json is only supported with --variants\")\r\n }\r\n\r\n context.output.writeText(`[tw storybook] Starting Storybook on port ${port}...`)\r\n context.output.writeText(\r\n `[tw storybook] Tip: use --variants='{\"size\":[\"sm\",\"lg\"]}' to enumerate variant combinations`\r\n )\r\n\r\n const localBin = path.join(\r\n process.cwd(),\r\n \"node_modules\",\r\n \".bin\",\r\n process.platform === \"win32\" ? \"storybook.cmd\" : \"storybook\"\r\n )\r\n const storybookArgs = [\"dev\", \"-p\", port]\r\n if (!open) storybookArgs.push(\"--no-open\")\r\n\r\n if (await pathExists(localBin)) {\r\n await runCommand(localBin, storybookArgs)\r\n return\r\n }\r\n\r\n await runCommand(npxCommandName(), [\"storybook\", ...storybookArgs])\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const studioCommand: CommandDefinition = {\r\n name: \"studio\",\r\n async run(args, context) {\r\n if (context.json) {\r\n throw new CliUsageError(\"[tw studio] --json is not supported for this command\")\r\n }\r\n\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n project: { type: \"string\" },\r\n port: { type: \"string\" },\r\n mode: { type: \"string\" },\r\n },\r\n })\r\n\r\n const project =\r\n typeof parsed.values.project === \"string\" ? parsed.values.project : process.cwd()\r\n const port = typeof parsed.values.port === \"string\" ? parsed.values.port : \"3030\"\r\n const mode = typeof parsed.values.mode === \"string\" ? parsed.values.mode : \"web\"\r\n const script = await resolveScript(context, \"scripts/v45/studio.mjs\")\r\n await runCommand(\r\n process.execPath,\r\n [script, `--project=${project}`, `--port=${port}`, `--mode=${mode}`],\r\n {\r\n env: { ...process.env, PORT: port },\r\n }\r\n )\r\n },\r\n}\r\n","import { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand, runCommandAsJson } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const syncCommand: CommandDefinition = {\r\n name: \"sync\",\r\n async run(args, context) {\r\n const syncCmd = args[0]\r\n if (!syncCmd) {\r\n throw new CliUsageError(\"Usage: tw sync <init|pull|push|diff|figma>\")\r\n }\r\n\r\n if (syncCmd === \"figma\") {\r\n const figmaAction = args[1]\r\n if (!figmaAction) {\r\n throw new CliUsageError(\r\n \"Usage: tw sync figma <pull|push|diff|modes> [--file=KEY1,KEY2] [--mode=dark]\"\r\n )\r\n }\r\n const isMulti = args.some(\r\n (value) =>\r\n value.startsWith(\"--file=\") ||\r\n value.startsWith(\"--mode=\") ||\r\n value.startsWith(\"--from=\") ||\r\n figmaAction === \"modes\"\r\n )\r\n const script = await resolveScript(\r\n context,\r\n isMulti ? \"scripts/v45/figma-multi.mjs\" : \"scripts/v45/figma-sync.mjs\"\r\n )\r\n const commandArgs = [script, figmaAction, ...args.slice(2)]\r\n if (context.json) {\r\n await runCommandAsJson(`sync.figma.${figmaAction}`, process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n return\r\n }\r\n\r\n const script = await resolveScript(context, \"scripts/v45/sync.mjs\")\r\n const commandArgs = [script, ...args]\r\n if (context.json) {\r\n await runCommandAsJson(`sync.${syncCmd}`, process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport pc from \"picocolors\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport { type TraceResult, traceClass } from \"../utils/traceService\"\r\nimport { type TraceTargetResult, traceTarget } from \"../utils/traceTargetService\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\ntype TraceFormat = \"text\" | \"json\" | \"mermaid\"\r\n\r\ntype TraceCommandResult =\r\n | {\r\n mode: \"class\"\r\n payload: TraceResult\r\n }\r\n | {\r\n mode: \"target\"\r\n payload: TraceTargetResult\r\n }\r\n\r\nfunction parseTraceFormat(value: string | undefined, context: CommandContext): TraceFormat {\r\n if (context.json) return \"json\"\r\n if (!value) return \"text\"\r\n if (value === \"text\" || value === \"json\" || value === \"mermaid\") return value\r\n throw new CliUsageError(`Unsupported trace format \"${value}\". Use text, json, or mermaid.`)\r\n}\r\n\r\nexport async function runTraceCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n format: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n target: { type: \"string\" },\r\n },\r\n })\r\n\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : context.cwd\r\n const format = parseTraceFormat(\r\n typeof parsed.values.format === \"string\" ? parsed.values.format : undefined,\r\n context\r\n )\r\n const target = typeof parsed.values.target === \"string\" ? parsed.values.target : undefined\r\n const className = parsed.positionals[0]\r\n\r\n if (!target && !className) {\r\n throw new CliUsageError(\"Usage: tw trace <class-name> or tw trace --target <path>\")\r\n }\r\n\r\n const result: TraceCommandResult = target\r\n ? {\r\n mode: \"target\",\r\n payload: await traceTarget(target, { root }),\r\n }\r\n : {\r\n mode: \"class\",\r\n payload: await traceClass(className, { root }),\r\n }\r\n\r\n if (format === \"json\") {\r\n context.output.jsonSuccess(\"trace\", result.payload)\r\n return\r\n }\r\n\r\n if (result.mode === \"target\" && format === \"mermaid\") {\r\n context.output.writeText(renderTargetTraceMermaid(result.payload))\r\n return\r\n }\r\n\r\n if (result.mode === \"target\") {\r\n printTargetTraceOutput(result.payload, context.output)\r\n return\r\n }\r\n\r\n printClassTraceOutput(result.payload, context.output)\r\n}\r\n\r\nfunction printTargetTraceOutput(result: TraceTargetResult, output: CliOutput): void {\r\n output.writeText(\"\")\r\n output.writeText(pc.cyan(`Trace target: ${result.target}`))\r\n output.writeText(\r\n pc.dim(\r\n `type: ${result.targetType} | files: ${result.filesScanned} | classes: ${result.classCount}`\r\n )\r\n )\r\n output.writeText(pc.dim(`css bytes: ${result.cssBytes} | resolved: ${result.resolvedClassCount}`))\r\n\r\n if (!result.compilerAvailable && result.compilerError) {\r\n output.writeText(pc.yellow(\"Compiler fallback\"))\r\n output.listItem(result.compilerError)\r\n }\r\n\r\n if (result.imports.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Imports\"))\r\n for (const item of result.imports.slice(0, 20)) {\r\n output.listItem(`${item.kind} ${item.source}`)\r\n }\r\n }\r\n\r\n if (result.classes.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Classes\"))\r\n for (const className of result.classes.slice(0, 20)) {\r\n output.listItem(className)\r\n }\r\n }\r\n\r\n if (result.files.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Files\"))\r\n for (const file of result.files.slice(0, 10)) {\r\n output.listItem(`${file.file} (${file.classCount} class(es), ${file.importCount} import(s))`)\r\n }\r\n }\r\n\r\n if (result.unknownClasses.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.yellow(\"Unknown classes\"))\r\n for (const className of result.unknownClasses.slice(0, 20)) {\r\n output.listItem(className)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n\r\nfunction renderTargetTraceMermaid(result: TraceTargetResult): string {\r\n const lines = [\"flowchart TD\", ` target[\"${result.target}\"]`]\r\n\r\n result.imports.slice(0, 12).forEach((entry, index) => {\r\n const id = `import${index}`\r\n lines.push(` ${id}[\"${entry.kind}: ${entry.source}\"]`)\r\n lines.push(` target --> ${id}`)\r\n })\r\n\r\n result.classes.slice(0, 12).forEach((className, index) => {\r\n const id = `class${index}`\r\n lines.push(` ${id}[\"${className}\"]`)\r\n lines.push(` target --> ${id}`)\r\n })\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\nfunction printClassTraceOutput(result: TraceResult, output: CliOutput) {\r\n const { class: className, definedAt, variants, rules, conflicts, finalStyle } = result\r\n\r\n output.writeText(\"\")\r\n output.writeText(`${pc.bold(`.${className}`)}`)\r\n\r\n if (definedAt.file && definedAt.file !== \":0\") {\r\n output.writeText(`${pc.gray(\"defined in:\")} ${definedAt.file}:${definedAt.line}`)\r\n } else {\r\n output.writeText(`${pc.gray(\"defined in:\")} ${pc.dim(\"(from Tailwind default)\")}`)\r\n }\r\n\r\n if (variants.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Variants\"))\r\n for (const variant of variants) {\r\n output.listItem(`${variant.name}: ${variant.value} (${variant.source.file})`)\r\n }\r\n }\r\n\r\n if (rules.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Rules\"))\r\n for (const rule of rules) {\r\n const state = rule.applied ? \"[applied]\" : `[skipped${rule.reason ? `: ${rule.reason}` : \"\"}]`\r\n output.listItem(`${rule.property}: ${rule.value} ${state}`)\r\n }\r\n }\r\n\r\n if (conflicts.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Conflicts\"))\r\n for (const conflict of conflicts) {\r\n output.listItem(\r\n `${conflict.property}: ${conflict.winner} overrides ${conflict.loser} (${conflict.stage})`\r\n )\r\n }\r\n }\r\n\r\n if (finalStyle.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Final style\"))\r\n for (const style of finalStyle) {\r\n output.listItem(`${style.property}: ${style.value}`)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.info(\"Use --target <path> to trace a file or directory\")\r\n}\r\n\r\nconst traceCommand: CommandDefinition = {\r\n name: \"trace\",\r\n aliases: [\"t\"],\r\n async run(args, context) {\r\n await runTraceCli(args, context)\r\n },\r\n}\r\n\r\nexport { traceCommand }\r\n","/**\r\n * tailwind-styled-v5 — Compiler Index\r\n * \r\n * All functions are backed by native Rust bindings.\r\n * No JavaScript fallback - native is required.\r\n */\r\n\r\nimport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult, type NativeBridge, type NativeTransformResult, type ClassExtractResult, type ComponentMetadata, type NativeRscResult } from \"./nativeBridge\"\r\n\r\nexport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult }\r\nexport type { NativeBridge, NativeTransformResult, ClassExtractResult, ComponentMetadata, NativeRscResult }\r\n\r\nexport type LoaderOutput = {\r\n code: string\r\n changed: boolean\r\n classes: string[]\r\n}\r\n\r\n// =============================================================================\r\n// CORE TRANSFORM FUNCTIONS\r\n// =============================================================================\r\n\r\nexport const transformSource = (source: string, opts?: Record<string, unknown>) => {\r\n const native = getNativeBridge()\r\n if (!native?.transformSource) {\r\n throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\r\n }\r\n const result = native.transformSource(source, opts as Record<string, string>)\r\n if (!result) {\r\n throw new Error(\"FATAL: transformSource returned null\")\r\n }\r\n return result\r\n}\r\n\r\nexport const hasTwUsage = (source: string): boolean => {\r\n const native = getNativeBridge()\r\n if (!native?.hasTwUsage) {\r\n throw new Error(\"FATAL: Native binding 'hasTwUsage' is required but not available.\")\r\n }\r\n return native.hasTwUsage(source)\r\n}\r\n\r\nexport const isAlreadyTransformed = (source: string): boolean => {\r\n const native = getNativeBridge()\r\n if (!native?.isAlreadyTransformed) {\r\n throw new Error(\"FATAL: Native binding 'isAlreadyTransformed' is required but not available.\")\r\n }\r\n return native.isAlreadyTransformed(source)\r\n}\r\n\r\nexport const shouldProcess = (source: string): boolean => {\r\n return hasTwUsage(source) && !isAlreadyTransformed(source)\r\n}\r\n\r\n// =============================================================================\r\n// CSS COMPILATION\r\n// =============================================================================\r\n\r\nexport const compileCssFromClasses = (classes: string[], prefix?: string | null) => {\r\n const native = getNativeBridge()\r\n if (!native?.transformSource) {\r\n throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\r\n }\r\n const result = native.transformSource(classes.join(\" \"), { prefix: prefix ?? \"\" })\r\n if (!result) {\r\n throw new Error(\"FATAL: transformSource returned null\")\r\n }\r\n return result\r\n}\r\n\r\nexport const buildStyleTag = (classes: string[]): string => {\r\n const result = compileCssFromClasses(classes)\r\n return result?.code ? `<style data-tailwind-styled>${result.code}</style>` : \"\"\r\n}\r\n\r\nexport const compileCssNative = (classes: string[], prefix: string | null = null) => {\r\n return compileCssFromClasses(classes, prefix)\r\n}\r\n\r\nexport const generateCssForClasses = async (\r\n classes: string[],\r\n _tailwindConfig?: Record<string, unknown>,\r\n _root?: string\r\n): Promise<string> => {\r\n const { runCssPipeline } = await import(\"./tailwindEngine\")\r\n const result = await runCssPipeline(classes)\r\n return result.css\r\n}\r\n\r\n// =============================================================================\r\n// CLASS EXTRACTION\r\n// =============================================================================\r\n\r\nexport const extractAllClasses = (source: string): string[] => {\r\n const native = getNativeBridge()\r\n if (!native?.extractAllClasses) {\r\n throw new Error(\"FATAL: Native binding 'extractAllClasses' is required but not available.\")\r\n }\r\n return native.extractAllClasses(source) || []\r\n}\r\n\r\nexport const extractClassesFromSource = (source: string): string => {\r\n const native = getNativeBridge()\r\n if (!native?.extractClassesFromSource) {\r\n throw new Error(\"FATAL: Native binding 'extractClassesFromSource' is required but not available.\")\r\n }\r\n const result = native.extractClassesFromSource(source)\r\n return Array.isArray(result) ? result.join(\" \") : String(result || \"\")\r\n}\r\n\r\nexport const astExtractClasses = (source: string, filename: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.extractClassesFromSource) {\r\n throw new Error(\"FATAL: Native binding 'extractClassesFromSource' is required but not available.\")\r\n }\r\n return native.extractClassesFromSource(source) || []\r\n}\r\n\r\nexport const parseClasses = (raw: string): Array<{ raw: string; type: string }> => {\r\n const native = getNativeBridge()\r\n if (!native?.parseClasses) {\r\n // Fallback to JS implementation\r\n return parseClassesJs(raw)\r\n }\r\n return native.parseClasses(raw) || []\r\n}\r\n\r\nfunction parseClassesJs(raw: string): Array<{ raw: string; type: string }> {\r\n if (!raw || typeof raw !== \"string\") return []\r\n \r\n const classes = raw.split(/\\s+/).filter(Boolean)\r\n return classes.map((cls) => ({\r\n raw: cls,\r\n type: cls.includes(\":\") ? \"variant\" : cls.includes(\"/\") ? \"arbitrary\" : \"utility\",\r\n }))\r\n}\r\n\r\n// =============================================================================\r\n// CLASS NORMALIZATION & MERGING\r\n// =============================================================================\r\n\r\nexport const normalizeClasses = (raw: string): string => {\r\n const result = normalizeAndDedupClasses(raw)\r\n return result?.normalized || \"\"\r\n}\r\n\r\nexport const mergeClassesStatic = (classes: string): string => {\r\n const result = normalizeAndDedupClasses(classes)\r\n return result?.normalized || \"\"\r\n}\r\n\r\nfunction normalizeAndDedupClassesJs(raw: string): { normalized: string; duplicatesRemoved: number; uniqueCount: number } {\r\n const seen = new Set<string>()\r\n const result: string[] = []\r\n let duplicatesRemoved = 0\r\n\r\n for (const token of raw.split(/\\s+/)) {\r\n if (token.length === 0) continue\r\n if (seen.has(token)) {\r\n duplicatesRemoved++\r\n } else {\r\n seen.add(token)\r\n result.push(token)\r\n }\r\n }\r\n\r\n return {\r\n normalized: result.join(\" \"),\r\n duplicatesRemoved,\r\n uniqueCount: result.length,\r\n }\r\n}\r\n\r\nexport const normalizeAndDedupClasses = (raw: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.normalizeAndDedupClasses) {\r\n // Fallback to JS implementation\r\n return normalizeAndDedupClassesJs(raw)\r\n }\r\n const result = native.normalizeAndDedupClasses(raw)\r\n return result || { normalized: \"\", duplicatesRemoved: 0, uniqueCount: 0 }\r\n}\r\n\r\n// =============================================================================\r\n// DEAD STYLE ELIMINATOR\r\n// =============================================================================\r\n\r\nexport const eliminateDeadCss = (css: string, deadClasses: Set<string>): string => {\r\n let result = css\r\n for (const dead of deadClasses) {\r\n result = result.replace(new RegExp(`\\\\.${dead.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}[^{]*\\\\{[^}]*\\\\}`, 'g'), '')\r\n }\r\n return result\r\n}\r\n\r\nexport const findDeadVariants = (variantConfig: Record<string, unknown>, usage: Record<string, Set<string>>) => {\r\n const unused: string[] = []\r\n const variants = variantConfig as Record<string, Record<string, string>>\r\n for (const [key, values] of Object.entries(variants)) {\r\n for (const [value] of Object.entries(values)) {\r\n const keyValue = `${key}:${value}`\r\n if (!usage[key]?.has(value)) {\r\n unused.push(keyValue)\r\n }\r\n }\r\n }\r\n return unused\r\n}\r\n\r\nexport const runElimination = (css: string, scanResult: unknown) => {\r\n const scanJson = JSON.stringify(scanResult)\r\n const classes = extractAllClasses(css)\r\n const usage = analyzeClassUsage(classes, scanJson, css) || []\r\n const deadClasses = new Set((usage as Array<{ isDeadCode: boolean; className: string }>).filter(u => u.isDeadCode).map(u => u.className))\r\n return eliminateDeadCss(css, deadClasses)\r\n}\r\n\r\nexport const optimizeCss = (css: string): string => {\r\n const classes = extractAllClasses(css)\r\n const usage = analyzeClassUsage(classes, \"[]\", css) || []\r\n const usedClasses = new Set((usage as Array<{ isDeadCode: boolean; className: string }>).filter(u => !u.isDeadCode).map(u => u.className))\r\n \r\n let result = css\r\n const classRegex = /\\.([a-zA-Z0-9_-]+)/g\r\n result = result.replace(classRegex, (match, className) => {\r\n return usedClasses.has(className) ? match : ''\r\n })\r\n \r\n result = result.replace(/[^{}]*\\{\\s*\\}/g, '')\r\n return result.trim()\r\n}\r\n\r\nexport const scanProjectUsage = (dirs: string[], cwd: string) => {\r\n const path = require('node:path')\r\n const files = dirs.map(dir => path.resolve(cwd, dir))\r\n const results = batchExtractClasses(files) || []\r\n \r\n const combined: Record<string, Record<string, Set<string>>> = {}\r\n for (const result of results) {\r\n if (result.ok && result.classes) {\r\n for (const cls of result.classes) {\r\n if (!combined[cls]) combined[cls] = {}\r\n combined[cls][result.file] = new Set([cls])\r\n }\r\n }\r\n }\r\n return combined\r\n}\r\n\r\n// =============================================================================\r\n// COMPONENT ANALYSIS\r\n// =============================================================================\r\n\r\nexport const extractComponentUsage = (source: string): Array<{ component: string; propsJson: string }> => {\r\n const native = getNativeBridge()\r\n if (!native?.extractComponentUsage) {\r\n throw new Error(\"FATAL: Native binding 'extractComponentUsage' is required but not available.\")\r\n }\r\n return native.extractComponentUsage(source) || []\r\n}\r\n\r\n// =============================================================================\r\n// DIFF & BATCH OPERATIONS\r\n// =============================================================================\r\n\r\nexport const diffClassLists = (previous: string[], current: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.diffClassLists) {\r\n throw new Error(\"FATAL: Native binding 'diffClassLists' is required but not available.\")\r\n }\r\n return native.diffClassLists(previous, current) || { added: [], removed: [], unchanged: [], hasChanges: false }\r\n}\r\n\r\nexport const batchExtractClasses = (filePaths: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.batchExtractClasses) {\r\n throw new Error(\"FATAL: Native binding 'batchExtractClasses' is required but not available.\")\r\n }\r\n return native.batchExtractClasses(filePaths) || []\r\n}\r\n\r\nexport const checkAgainstSafelist = (classes: string[], safelist: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.checkAgainstSafelist) {\r\n throw new Error(\"FATAL: Native binding 'checkAgainstSafelist' is required but not available.\")\r\n }\r\n return native.checkAgainstSafelist(classes, safelist) || { matched: [], unmatched: [], safelistSize: 0 }\r\n}\r\n\r\n// =============================================================================\r\n// HOISTING\r\n// =============================================================================\r\n\r\nexport const hoistComponents = (source: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.hoistComponents) {\r\n throw new Error(\"FATAL: Native binding 'hoistComponents' is required but not available.\")\r\n }\r\n return native.hoistComponents(source) || { code: source, hoisted: [], warnings: [] }\r\n}\r\n\r\n// =============================================================================\r\n// VARIANT COMPILATION\r\n// =============================================================================\r\n\r\nexport const compileVariantTable = (configJson: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.compileVariantTable) {\r\n throw new Error(\"FATAL: Native binding 'compileVariantTable' is required but not available.\")\r\n }\r\n return native.compileVariantTable(configJson) || { id: \"\", tableJson: \"{}\", keys: [], defaultKey: \"\", combinations: 0 }\r\n}\r\n\r\nexport const compileVariants = (componentId: string, config: Record<string, unknown>) => {\r\n return compileVariantTable(JSON.stringify({ componentId, ...config }))\r\n}\r\n\r\n// =============================================================================\r\n// CSS ANALYSIS\r\n// =============================================================================\r\n\r\nexport const classifyAndSortClasses = (classes: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.classifyAndSortClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\r\n }\r\n return native.classifyAndSortClasses(classes) || []\r\n}\r\n\r\nexport const mergeCssDeclarations = (cssChunks: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.mergeCssDeclarations) {\r\n throw new Error(\"FATAL: Native binding 'mergeCssDeclarations' is required but not available.\")\r\n }\r\n return native.mergeCssDeclarations(cssChunks) || { declarationsJson: \"{}\", declarationString: \"\", count: 0 }\r\n}\r\n\r\nexport const analyzeClassUsage = (classes: string[], scanResultJson: string, css: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClassUsage) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\r\n }\r\n return native.analyzeClassUsage(classes, scanResultJson, css) || []\r\n}\r\n\r\n// =============================================================================\r\n// RSC ANALYSIS\r\n// =============================================================================\r\n\r\nexport const analyzeRsc = (source: string, filename: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeRsc) {\r\n throw new Error(\"FATAL: Native binding 'analyzeRsc' is required but not available.\")\r\n }\r\n return native.analyzeRsc(source, filename) || { isServer: true, needsClientDirective: false, clientReasons: [] }\r\n}\r\n\r\nexport const analyzeFile = (source: string, filename: string) => {\r\n const rsc = analyzeRsc(source, filename)\r\n return {\r\n isServer: rsc?.isServer ?? true,\r\n needsClientDirective: rsc?.needsClientDirective ?? false,\r\n clientReasons: rsc?.clientReasons ?? [],\r\n interactiveClasses: [],\r\n canStaticResolveVariants: true,\r\n }\r\n}\r\n\r\nexport const analyzeVariantUsage = (source: string, componentName: string, variantKeys: string[]) => {\r\n const rsc = analyzeRsc(source, componentName)\r\n return { \r\n resolved: {} as Record<string, string>, \r\n dynamic: [] as string[] \r\n }\r\n}\r\n\r\nexport const injectClientDirective = (source: string): string => {\r\n if (!source.includes('\"use client\"') && !source.includes(\"'use client'\")) {\r\n return '\"use client\";\\n' + source\r\n }\r\n return source\r\n}\r\n\r\nexport const injectServerOnlyComment = (source: string): string => {\r\n return `/* @server-only */\\n${source}`\r\n}\r\n\r\n// =============================================================================\r\n// FULL ANALYSIS\r\n// =============================================================================\r\n\r\nexport const analyzeClasses = (filesJson: string, cwd: string, flags: number) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClasses) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClasses' is required but not available.\")\r\n }\r\n return native.analyzeClasses(filesJson, cwd, flags)\r\n}\r\n\r\n// =============================================================================\r\n// SAFELIST\r\n// =============================================================================\r\n\r\nexport const generateSafelist = (scanDirs: string[], outputPath?: string, cwd?: string) => {\r\n const classes = scanProjectUsage(scanDirs, cwd || process.cwd())\r\n const allClasses = Object.keys(classes).sort()\r\n \r\n if (outputPath) {\r\n const fs = require('node:fs')\r\n fs.writeFileSync(outputPath, JSON.stringify(allClasses, null, 2))\r\n }\r\n \r\n return allClasses\r\n}\r\n\r\nexport const loadSafelist = (safelistPath: string): string[] => {\r\n const fs = require('node:fs')\r\n try {\r\n const content = fs.readFileSync(safelistPath, 'utf-8')\r\n return JSON.parse(content)\r\n } catch {\r\n return []\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// CONFIG LOADING\r\n// =============================================================================\r\n\r\nexport const loadTailwindConfig = (cwd: string = process.cwd()) => {\r\n const fs = require('node:fs')\r\n const path = require('node:path')\r\n \r\n const configFiles = [\r\n 'tailwind.config.ts',\r\n 'tailwind.config.js',\r\n 'tailwind.config.mjs',\r\n 'tailwind.config.cjs',\r\n ]\r\n \r\n for (const file of configFiles) {\r\n const fullPath = path.join(cwd, file)\r\n if (fs.existsSync(fullPath)) {\r\n const mod = require(fullPath)\r\n return mod.default || mod\r\n }\r\n }\r\n \r\n return {}\r\n}\r\n\r\nexport const getContentPaths = (cwd: string = process.cwd()) => {\r\n const path = require('node:path')\r\n return {\r\n content: [\r\n path.join(cwd, 'src/**/*.{js,ts,jsx,tsx}'),\r\n path.join(cwd, 'app/**/*.{js,ts,jsx,tsx}'),\r\n path.join(cwd, 'pages/**/*.{js,ts,jsx,tsx}'),\r\n ],\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// LOADER\r\n// =============================================================================\r\n\r\nexport const runLoaderTransform = (ctx: { filepath: string; source: string; options?: Record<string, unknown> }) => {\r\n const { filepath, source, options } = ctx\r\n const result = transformSource(source, { filename: filepath, ...options })\r\n return {\r\n code: result?.code || \"\",\r\n changed: result?.changed || false,\r\n classes: result?.classes || [],\r\n } as LoaderOutput\r\n}\r\n\r\nexport const shouldSkipFile = (filepath: string): boolean => {\r\n const SKIP_PATHS = ['node_modules', '.next', '.rspack-dist', '.turbo', 'dist/', 'out/']\r\n const skipExtensions = ['.css', '.json', '.md', '.txt', '.yaml', '.yml']\r\n \r\n for (const p of SKIP_PATHS) {\r\n if (filepath.includes(p)) return true\r\n }\r\n for (const ext of skipExtensions) {\r\n if (filepath.endsWith(ext)) return true\r\n }\r\n return false\r\n}\r\n\r\n// =============================================================================\r\n// ROUTE CSS COLLECTOR\r\n// =============================================================================\r\n\r\nexport const fileToRoute = (filepath: string): string | null => {\r\n const normalized = filepath.replace(/\\\\/g, '/')\r\n \r\n if (normalized.includes('/layout.') || normalized.includes('/loading.') || normalized.includes('/error.')) {\r\n return '__global'\r\n }\r\n \r\n const pageMatch = normalized.match(/\\/app\\/(.+?)\\/page\\.[tj]sx?$/)\r\n if (pageMatch) return `/${pageMatch[1]}`\r\n \r\n const rootPage = normalized.match(/\\/app\\/page\\.[tj]sx?$/)\r\n if (rootPage) return '/'\r\n \r\n return null\r\n}\r\n\r\nexport const getAllRoutes = (): string[] => {\r\n return ['/', '__global']\r\n}\r\n\r\nexport const getRouteClasses = (route: string): Set<string> => {\r\n return new Set()\r\n}\r\n\r\nexport const registerFileClasses = (filepath: string, classes: string[]): void => {\r\n // Could be implemented with native\r\n}\r\n\r\nexport const registerGlobalClasses = (classes: string[]): void => {\r\n // Could be implemented with native\r\n}\r\n\r\n// =============================================================================\r\n// INCREMENTAL ENGINE\r\n// =============================================================================\r\n\r\nlet incrementalEngineInstance: unknown = null\r\n\r\nexport const getIncrementalEngine = () => {\r\n if (!incrementalEngineInstance) {\r\n incrementalEngineInstance = {\r\n compile: (source: string) => transformSource(source),\r\n }\r\n }\r\n return incrementalEngineInstance\r\n}\r\n\r\nexport const resetIncrementalEngine = () => {\r\n incrementalEngineInstance = null\r\n}\r\n\r\nexport const IncrementalEngine = class {\r\n compile(source: string) {\r\n return transformSource(source)\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// STYLE BUCKET SYSTEM\r\n// =============================================================================\r\n\r\nlet bucketEngineInstance: unknown = null\r\n\r\nexport const getBucketEngine = () => {\r\n if (!bucketEngineInstance) {\r\n bucketEngineInstance = {\r\n add: (className: string) => className,\r\n get: (bucket: string) => [],\r\n }\r\n }\r\n return bucketEngineInstance\r\n}\r\n\r\nexport const resetBucketEngine = () => {\r\n bucketEngineInstance = null\r\n}\r\n\r\nexport const BucketEngine = class {\r\n add(className: string) {\r\n return className\r\n }\r\n}\r\n\r\nexport const classifyNode = (node: unknown): string => {\r\n return 'unknown'\r\n}\r\n\r\nexport const detectConflicts = (classes: string[]): string[] => {\r\n return []\r\n}\r\n\r\nexport const bucketSort = (classes: string[]): string[] => {\r\n return classes\r\n}","/**\r\n * Engine — Rust native bridge\r\n *\r\n * Uses @tailwind-styled/shared for native binding resolution.\r\n */\r\nimport path from \"node:path\"\r\nimport {\r\n createDebugLogger,\r\n getDirname as getEsmDirname,\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n TwError,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nconst log = createDebugLogger(\"engine:native\")\r\n\r\nfunction getDirname(): string {\r\n if (typeof __dirname !== \"undefined\") return __dirname\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return getEsmDirname(import.meta.url)\r\n }\r\n return process.cwd()\r\n}\r\n\r\ninterface NativeEngineBinding {\r\n computeIncrementalDiff?: (\r\n previousJson: string,\r\n currentJson: string\r\n ) => {\r\n addedClasses: string[]\r\n removedClasses: string[]\r\n changedFiles: string[]\r\n unchangedFiles: number\r\n } | null\r\n hashFileContent?: (content: string) => string | null\r\n processFileChange?: (\r\n filepath: string,\r\n newClasses: string[],\r\n content: string | null\r\n ) => { added: string[]; removed: string[] } | null\r\n // Batch 3 additions\r\n parseCssRulesNative?: (css: string) => Array<{\r\n className: string; property: string; value: string\r\n isImportant: boolean; variants: string[]; specificity: number\r\n }>\r\n batchSplitClassesNative?: (classes: string[]) => Array<{\r\n variantKey: string; base: string; variants: string[]\r\n isArbitrary: boolean; hasModifier: boolean; modifier?: string\r\n }>\r\n detectClassConflictsNative?: (usagesJson: string) => {\r\n conflicts: Array<{ group: string; variantKey: string; classes: string[]; message: string }>\r\n conflictedClassNames: string[]\r\n }\r\n classifyKnownClassesNative?: (classes: string[], safelist: string[], customUtilities: string[]) => Array<{\r\n className: string; isKnown: boolean; variantKey: string; baseClass: string\r\n utilityPrefix: string; isArbitrary: boolean\r\n }>\r\n diffClassListsNative?: (previous: string[], current: string[]) => {\r\n added: string[]; removed: string[]; unchanged: string[]; hasChanges: boolean\r\n }\r\n // Batch 4\r\n parseCssToRulesNative?: (css: string, prefix?: string | null) => Array<{\r\n className: string; property: string; value: string; important: boolean\r\n variants: string[]; pseudoClasses: string[]; mediaQuery: string | null\r\n specificity: number; layer: string | null\r\n }>\r\n calculateBundleContributionsNative?: (classes: string[], css: string) => Array<{\r\n className: string; sizeBytes: number; variantChains: string[]\r\n dependencies: string[]; inCss: boolean\r\n }>\r\n detectDeadCodeNative?: (scanResultJson: string, css: string) => {\r\n deadInCss: string[]; deadInSource: string[]; liveClasses: string[]\r\n totalCssClasses: number; totalSourceClasses: number\r\n }\r\n calculateImpactScoresNative?: (\r\n classes: string[], scanResultJson: string, css: string,\r\n usageWeight: number, sizeWeight: number\r\n ) => Array<{\r\n className: string; usageScore: number; sizeScore: number\r\n impactScore: number; usageCount: number; sizeBytes: number\r\n }>\r\n analyzeRouteClassDistributionNative?: (routeFilesJson: string, scanResultJson: string) => Array<{\r\n route: string; classes: string[]; exclusiveClasses: string[]; classCount: number\r\n }>\r\n}\r\n\r\nconst isValidEngineBinding = (module: unknown): module is NativeEngineBinding => {\r\n const candidate = module as Partial<NativeEngineBinding> | null | undefined\r\n return !!(\r\n candidate &&\r\n (candidate.computeIncrementalDiff || candidate.processFileChange || candidate.hashFileContent)\r\n )\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Bridge - Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createEngineBindingLoader = () => {\r\n const _state = {\r\n binding: undefined as NativeEngineBinding | null | undefined,\r\n loadError: null as string | null,\r\n candidatePaths: [] as string[],\r\n }\r\n\r\n const throwNativeBindingError = (): never => {\r\n const lines = [\r\n \"FATAL: Native engine binding not found.\",\r\n \"\",\r\n \"This package requires the Rust native binding 'tailwind_styled_parser.node'.\",\r\n \"The binding was not found in any of these paths:\",\r\n ..._state.candidatePaths.map((p) => ` - ${p}`),\r\n \"\",\r\n ]\r\n\r\n if (_state.loadError) {\r\n lines.push(\"Load error:\", ` ${_state.loadError}`, \"\")\r\n }\r\n\r\n lines.push(\r\n \"To fix this, run:\",\r\n \" npm run build:rust\",\r\n \"\",\r\n \"This will build the native Rust module from the 'native/' directory.\",\r\n \"If you're using this package in a CI/CD environment, ensure Rust toolchain is installed\",\r\n \"and 'npm run build:rust' is executed before running tests or building.\"\r\n )\r\n\r\n throw new TwError(\"rust\", \"ENGINE_NATIVE_BINDING_NOT_FOUND\", lines.join(\"\\n\"))\r\n }\r\n\r\n const getBinding = (): NativeEngineBinding => {\r\n const cached = _state.binding\r\n if (cached !== undefined) {\r\n if (cached === null) {\r\n return throwNativeBindingError()\r\n }\r\n return cached\r\n }\r\n\r\n const runtimeDir = getDirname()\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n includeDefaultCandidates: true,\r\n })\r\n\r\n _state.candidatePaths = candidates\r\n\r\n const { binding, loadErrors } = loadNativeBinding<NativeEngineBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isValidEngineBinding,\r\n invalidExportMessage: \"Module loaded but missing expected engine binding functions\",\r\n })\r\n\r\n if (binding) {\r\n log(`engine native binding loaded successfully`)\r\n _state.binding = binding\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n _state.loadError = loadErrors.map((e) => `${e.path}: ${e.message}`).join(\"; \")\r\n }\r\n\r\n _state.binding = null\r\n return throwNativeBindingError()\r\n }\r\n\r\n return {\r\n get: getBinding,\r\n reset: (): void => {\r\n _state.binding = undefined\r\n _state.loadError = null\r\n _state.candidatePaths = []\r\n },\r\n }\r\n}\r\n\r\nconst engineBindingLoader = createEngineBindingLoader()\r\n\r\nexport function getNativeEngineBinding(): NativeEngineBinding {\r\n return engineBindingLoader.get()\r\n}\r\n\r\nexport function computeIncrementalDiff(\r\n previousJson: string,\r\n currentJson: string\r\n): {\r\n addedClasses: string[]\r\n removedClasses: string[]\r\n changedFiles: string[]\r\n unchangedFiles: number\r\n} {\r\n const result = getNativeEngineBinding().computeIncrementalDiff?.(previousJson, currentJson)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"ENGINE_DIFF_FAILED\",\r\n \"Native computeIncrementalDiff returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function hashFileContent(content: string): string {\r\n const result = getNativeEngineBinding().hashFileContent?.(content)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"ENGINE_HASH_FAILED\",\r\n \"Native hashFileContent returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function processFileChange(\r\n filepath: string,\r\n newClasses: string[],\r\n content: string | null\r\n): { added: string[]; removed: string[] } {\r\n const result = getNativeEngineBinding().processFileChange?.(filepath, newClasses, content)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"ENGINE_PROCESS_FAILED\",\r\n \"Native processFileChange returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n","import type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\nimport type { SourceLocation } from \"./ir\"\r\n\r\nexport interface ClassBundleInfo {\r\n className: string\r\n usageCount: number\r\n usedInFiles: SourceLocation[]\r\n bundleSize: number\r\n componentsAffected: number\r\n variantChain: string[]\r\n isDeadCode: boolean\r\n dependencies: string[]\r\n}\r\n\r\nexport interface BundleAnalysisResult {\r\n className: string\r\n totalUsage: number\r\n files: SourceLocation[]\r\n bundleSizeBytes: number\r\n variantChains: string[]\r\n isDeadCode: boolean\r\n dependencies: string[]\r\n}\r\n\r\nexport class BundleAnalyzer {\r\n analyzeClass(\r\n className: string,\r\n scanResult: ScanWorkspaceResult,\r\n css: string\r\n ): BundleAnalysisResult {\r\n if (!className || className.trim() === \"\") {\r\n throw new Error(\"Class name cannot be empty\")\r\n }\r\n\r\n if (!scanResult) {\r\n throw new Error(\"Scan result is required for analysis\")\r\n }\r\n\r\n if (typeof css !== \"string\") {\r\n throw new Error(\"CSS string is required for analysis\")\r\n }\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const usageCount = this.countClassUsage(normalizedClass, scanResult)\r\n const files = this.getFilesUsingClass(normalizedClass, scanResult)\r\n const bundleSize = this.calculateBundleContribution(normalizedClass, css)\r\n const variantChains = this.extractVariantChains(normalizedClass, css)\r\n const dependencies = this.extractDependencies(normalizedClass, css)\r\n const isDeadCode = this.checkIsDeadCode(normalizedClass, scanResult, css)\r\n\r\n return {\r\n className: normalizedClass,\r\n totalUsage: usageCount,\r\n files,\r\n bundleSizeBytes: bundleSize,\r\n variantChains,\r\n isDeadCode,\r\n dependencies,\r\n }\r\n }\r\n\r\n analyzeAll(scanResult: ScanWorkspaceResult, css: string): Map<string, BundleAnalysisResult> {\r\n if (!scanResult) {\r\n throw new Error(\"Scan result is required for analysis\")\r\n }\r\n\r\n if (typeof css !== \"string\") {\r\n throw new Error(\"CSS string is required for analysis\")\r\n }\r\n\r\n const results = new Map<string, BundleAnalysisResult>()\r\n const allClasses = new Set(scanResult.uniqueClasses)\r\n\r\n const cssClasses = this.extractClassesFromCss(css)\r\n for (const cssClass of cssClasses) {\r\n allClasses.add(cssClass)\r\n }\r\n\r\n for (const className of allClasses) {\r\n try {\r\n const result = this.analyzeClass(className, scanResult, css)\r\n results.set(className, result)\r\n } catch (error) {\r\n console.warn(`Failed to analyze class \"${className}\":`, error)\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n calculateBundleContribution(className: string, css: string): number {\r\n if (!className || className.trim() === \"\") throw new Error(\"Class name cannot be empty\")\r\n if (typeof css !== \"string\") throw new Error(\"CSS string is required\")\r\n\r\n try {\r\n const native = (() => { try { return getNativeEngineBinding() } catch { return null } })()\r\n if (native?.calculateBundleContributionsNative) {\r\n const r = (native.calculateBundleContributionsNative as (c: string[], css: string) => Array<{sizeBytes: number}>)([className], css)\r\n return r?.[0]?.sizeBytes ?? 0\r\n }\r\n } catch (err) { /* intentionally silent — candidate miss */ }\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const escapedClass = normalizedClass.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\r\n const selectorPattern = new RegExp(`\\\\.${escapedClass}([\\\\s:{]|$)`, \"g\")\r\n if (!css.match(selectorPattern)) return 0\r\n const classSelector = `.${normalizedClass}`\r\n return css.split(\"\\n\").filter((l) => l.includes(classSelector))\r\n .reduce((sum, l) => { const s = l.indexOf(\"{\"); return s !== -1 ? sum + l.substring(s).length + 1 : sum }, 0)\r\n }\r\n\r\n detectDeadCode(scanResult: ScanWorkspaceResult, css: string): string[] {\r\n if (!scanResult) throw new Error(\"Scan result is required for dead code detection\")\r\n if (typeof css !== \"string\") throw new Error(\"CSS string is required for dead code detection\")\r\n\r\n try {\r\n const native = (() => { try { return getNativeEngineBinding() } catch { return null } })()\r\n if (native?.detectDeadCodeNative) {\r\n const r = (native.detectDeadCodeNative as (s: string, c: string) => {deadInCss: string[]})(JSON.stringify(scanResult), css)\r\n return r?.deadInCss ?? []\r\n }\r\n } catch (err) { /* intentionally silent — candidate miss */ }\r\n\r\n const cssClasses = this.extractClassesFromCss(css)\r\n const usedClasses = new Set(scanResult.uniqueClasses)\r\n return cssClasses.filter((c) => !usedClasses.has(c))\r\n }\r\n\r\n private countClassUsage(className: string, scanResult: ScanWorkspaceResult): number {\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const count = scanResult.files.reduce((sum, file) => {\r\n return (\r\n sum +\r\n file.classes.filter((fileClass) => {\r\n const normalizedFileClass = fileClass.startsWith(\".\") ? fileClass.slice(1) : fileClass\r\n return normalizedFileClass === normalizedClass\r\n }).length\r\n )\r\n }, 0)\r\n\r\n return count\r\n }\r\n\r\n private getFilesUsingClass(className: string, scanResult: ScanWorkspaceResult): SourceLocation[] {\r\n const files: SourceLocation[] = []\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n\r\n for (const file of scanResult.files) {\r\n for (const fileClass of file.classes) {\r\n const normalizedFileClass = fileClass.startsWith(\".\") ? fileClass.slice(1) : fileClass\r\n if (normalizedFileClass === normalizedClass) {\r\n files.push({\r\n file: file.file,\r\n line: 1,\r\n column: 1,\r\n })\r\n break\r\n }\r\n }\r\n }\r\n\r\n return files\r\n }\r\n\r\n private extractVariantChains(className: string, css: string): string[] {\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const variantChains: string[] = []\r\n const escapedClass = normalizedClass.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\r\n\r\n const variantPattern = new RegExp(`([\\\\w-]+:${escapedClass}|${escapedClass})`, \"g\")\r\n\r\n const lines = css.split(\"\\n\")\r\n for (const line of lines) {\r\n const matches = line.match(variantPattern)\r\n if (matches) {\r\n for (const match of matches) {\r\n if (match.includes(\":\")) {\r\n variantChains.push(match)\r\n }\r\n }\r\n }\r\n }\r\n\r\n return [...new Set(variantChains)]\r\n }\r\n\r\n private extractDependencies(className: string, _css: string): string[] {\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const parts = normalizedClass.split(\":\")\r\n const dependencies = parts.slice(0, -1).map((_, i) => parts.slice(0, i + 1).join(\":\"))\r\n return dependencies\r\n }\r\n\r\n private checkIsDeadCode(\r\n className: string,\r\n scanResult: ScanWorkspaceResult,\r\n css: string\r\n ): boolean {\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const cssClasses = this.extractClassesFromCss(css)\r\n\r\n if (!cssClasses.includes(normalizedClass)) {\r\n return true\r\n }\r\n\r\n const usageCount = this.countClassUsage(normalizedClass, scanResult)\r\n return usageCount === 0\r\n }\r\n\r\n private extractClassesFromCss(css: string): string[] {\r\n const classes: string[] = []\r\n const classPattern = /\\.([a-zA-Z0-9_-]+(?::[a-zA-Z0-9_-]+)*)/g\r\n\r\n // Use for...of + matchAll instead of while loop with let match\r\n for (const match of css.matchAll(classPattern)) {\r\n const className = match[1]\r\n if (!classes.includes(className)) {\r\n classes.push(className)\r\n }\r\n }\r\n\r\n return classes\r\n }\r\n}\r\n","import type { ScanFileResult, ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\r\nimport { type BundleAnalysisResult, BundleAnalyzer } from \"./bundleAnalyzer\"\r\n\r\ntype ImpactScanFile = ScanFileResult & {\r\n variants?: string[]\r\n lineNumbers?: number[]\r\n columnNumbers?: number[]\r\n}\r\n\r\nexport interface ImpactReport {\r\n className: string\r\n totalComponents: number\r\n directUsage: number\r\n indirectUsage: number\r\n bundleSizeBytes: number\r\n estimatedSavings: number\r\n riskLevel: \"low\" | \"medium\" | \"high\"\r\n suggestions: string[]\r\n}\r\n\r\nexport interface ComponentImpact {\r\n file: string\r\n line: number\r\n column: number\r\n usageType: \"direct\" | \"variant\" | \"component\"\r\n variant?: string\r\n}\r\n\r\nexport class ImpactTracker {\r\n private bundleAnalyzer: BundleAnalyzer\r\n private criticalPatterns = [\r\n \"fixed\",\r\n \"absolute\",\r\n \"sticky\",\r\n \"z-50\",\r\n \"z-index\",\r\n \"top-0\",\r\n \"right-0\",\r\n \"bottom-0\",\r\n \"left-0\",\r\n \"w-full\",\r\n \"h-full\",\r\n \"min-h-screen\",\r\n \"flex\",\r\n \"grid\",\r\n \"block\",\r\n \"inline\",\r\n \"hidden\",\r\n \"visible\",\r\n \"opacity\",\r\n \"pointer-events\",\r\n \"cursor\",\r\n ]\r\n\r\n constructor() {\r\n this.bundleAnalyzer = new BundleAnalyzer()\r\n }\r\n\r\n /**\r\n * Analisis impact sebuah class menggunakan BundleAnalyzer untuk dapat\r\n * data akurat tentang bundle size contribution.\r\n *\r\n * @param className - Tailwind class yang ingin dianalisis\r\n * @param scanResult - Hasil scan workspace\r\n * @param css - CSS string dari build output (opsional — jika tidak ada, gunakan estimasi)\r\n */\r\n analyzeWithBundle(\r\n className: string,\r\n scanResult: ScanWorkspaceResult,\r\n css = \"\"\r\n ): ImpactReport {\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n\r\n let bundleAnalysis: BundleAnalysisResult | null = null\r\n try {\r\n if (scanResult && css) {\r\n bundleAnalysis = this.bundleAnalyzer.analyzeClass(normalizedClass, scanResult, css)\r\n }\r\n } catch {\r\n // BundleAnalyzer bisa throw jika css kosong atau class tidak dikenali\r\n // Graceful fallback ke calculateImpact tanpa bundle data\r\n }\r\n\r\n const resolvedBundleAnalysis =\r\n bundleAnalysis ??\r\n (() => {\r\n // Buat BundleAnalysisResult minimal dari scan data saja\r\n const usedIn = (scanResult?.files ?? []).filter((f) =>\r\n f.classes?.includes(normalizedClass)\r\n )\r\n return {\r\n className: normalizedClass,\r\n totalUsage: usedIn.length,\r\n files: usedIn.map((f) => ({\r\n file: f.file,\r\n line: 1,\r\n column: 1,\r\n })),\r\n bundleSizeBytes: 0,\r\n variantChains: [],\r\n isDeadCode: usedIn.length === 0,\r\n dependencies: [],\r\n } satisfies BundleAnalysisResult\r\n })()\r\n\r\n return this.calculateImpact(normalizedClass, resolvedBundleAnalysis, scanResult)\r\n }\r\n\r\n /**\r\n * Analisis semua class dalam workspace sekaligus.\r\n */\r\n analyzeAll(scanResult: ScanWorkspaceResult, css = \"\"): Map<string, ImpactReport> {\r\n const results = new Map<string, ImpactReport>()\r\n const classes = scanResult?.uniqueClasses ?? []\r\n\r\n for (const cls of classes) {\r\n try {\r\n results.set(cls, this.analyzeWithBundle(cls, scanResult, css))\r\n } catch {\r\n // skip class yang gagal dianalisis\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n calculateImpact(\r\n className: string,\r\n bundleAnalysis: BundleAnalysisResult,\r\n scanResult: ScanWorkspaceResult | null | undefined\r\n ): ImpactReport {\r\n if (!className || className.trim() === \"\") {\r\n return this.createEmptyReport(className)\r\n }\r\n\r\n if (!bundleAnalysis) {\r\n return this.createEmptyReport(className)\r\n }\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const affectedComponents = this.findAffectedComponents(normalizedClass, scanResult)\r\n\r\n const directUsage = affectedComponents.filter((c) => c.usageType === \"direct\").length\r\n const indirectUsage = affectedComponents.filter((c) => c.usageType !== \"direct\").length\r\n const totalComponents = affectedComponents.length\r\n\r\n const bundleSizeBytes = bundleAnalysis.bundleSizeBytes || 0\r\n const estimatedSavings = this.calculateSavings(bundleSizeBytes, totalComponents)\r\n\r\n const impactReport: ImpactReport = {\r\n className: normalizedClass,\r\n totalComponents,\r\n directUsage,\r\n indirectUsage,\r\n bundleSizeBytes,\r\n estimatedSavings,\r\n riskLevel: \"low\",\r\n suggestions: [],\r\n }\r\n\r\n impactReport.riskLevel = this.calculateRisk(normalizedClass, impactReport)\r\n impactReport.suggestions = this.generateSuggestions(normalizedClass, impactReport)\r\n\r\n return impactReport\r\n }\r\n\r\n findAffectedComponents(\r\n className: string,\r\n scanResult: ScanWorkspaceResult | null | undefined\r\n ): ComponentImpact[] {\r\n const components: ComponentImpact[] = []\r\n\r\n if (!className || className.trim() === \"\") {\r\n return components\r\n }\r\n\r\n if (!scanResult || !Array.isArray(scanResult.files)) {\r\n return components\r\n }\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const classParts = normalizedClass.split(\":\")\r\n\r\n for (const file of scanResult.files as ImpactScanFile[]) {\r\n if (!file || !file.file) continue\r\n\r\n const filePath = file.file\r\n const classes = file.classes || []\r\n const variants = file.variants || []\r\n\r\n for (const [i, fileClass] of classes.entries()) {\r\n if (!fileClass) continue\r\n\r\n const normalizedFileClass = fileClass.startsWith(\".\") ? fileClass.slice(1) : fileClass\r\n\r\n if (normalizedFileClass === normalizedClass) {\r\n components.push({\r\n file: filePath,\r\n line: file.lineNumbers?.[i] || 1,\r\n column: file.columnNumbers?.[i] || 1,\r\n usageType: \"direct\",\r\n })\r\n } else if (normalizedFileClass.includes(normalizedClass)) {\r\n const variant = classParts.length > 1 ? classParts[0] : undefined\r\n components.push({\r\n file: filePath,\r\n line: file.lineNumbers?.[i] || 1,\r\n column: file.columnNumbers?.[i] || 1,\r\n usageType: \"variant\",\r\n variant,\r\n })\r\n }\r\n }\r\n\r\n for (const [i, variant] of variants.entries()) {\r\n if (!variant) continue\r\n\r\n if (variant.includes(normalizedClass)) {\r\n const baseClass = variant.split(\":\").pop()\r\n if (baseClass === normalizedClass) {\r\n components.push({\r\n file: filePath,\r\n line: file.lineNumbers?.[i] || 1,\r\n column: file.columnNumbers?.[i] || 1,\r\n usageType: \"variant\",\r\n variant: variant.split(\":\")[0],\r\n })\r\n }\r\n }\r\n }\r\n }\r\n\r\n return components\r\n }\r\n\r\n calculateRisk(className: string, impact: ImpactReport): \"low\" | \"medium\" | \"high\" {\r\n if (!className || className.trim() === \"\") {\r\n return \"low\"\r\n }\r\n\r\n if (!impact) {\r\n return \"low\"\r\n }\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n\r\n if (impact.totalComponents > 10) {\r\n return \"high\"\r\n }\r\n\r\n if (this.isCriticalClass(normalizedClass)) {\r\n return \"high\"\r\n }\r\n\r\n if (impact.totalComponents >= 5 && impact.totalComponents <= 10) {\r\n return \"medium\"\r\n }\r\n\r\n return \"low\"\r\n }\r\n\r\n generateSuggestions(className: string, impact: ImpactReport): string[] {\r\n const suggestions: string[] = []\r\n\r\n if (!className || className.trim() === \"\") {\r\n return suggestions\r\n }\r\n\r\n if (!impact) {\r\n return suggestions\r\n }\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n\r\n if (impact.riskLevel === \"high\") {\r\n if (impact.totalComponents > 10) {\r\n suggestions.push(\r\n `This class is used in ${impact.totalComponents} components. Consider creating a utility component instead.`\r\n )\r\n }\r\n\r\n if (this.isCriticalClass(normalizedClass)) {\r\n suggestions.push(\r\n \"This is a critical positioning/display class. Review all usages before removal.\"\r\n )\r\n }\r\n\r\n suggestions.push(\"Manual code review recommended before removing this class.\")\r\n } else if (impact.riskLevel === \"medium\") {\r\n suggestions.push(\r\n `This class is used in ${impact.totalComponents} components. Test each component after removal.`\r\n )\r\n\r\n if (impact.indirectUsage > 0) {\r\n suggestions.push(\"Check for indirect usages via variants before removing.\")\r\n }\r\n } else {\r\n if (impact.totalComponents > 0) {\r\n suggestions.push(\"Low risk: class is used in fewer than 5 components.\")\r\n } else {\r\n suggestions.push(\"This class appears to be unused. Consider removing it.\")\r\n }\r\n }\r\n\r\n if (impact.estimatedSavings > 0) {\r\n suggestions.push(`Estimated bundle size savings: ~${impact.estimatedSavings} bytes.`)\r\n }\r\n\r\n if (impact.bundleSizeBytes > 100) {\r\n suggestions.push(\r\n \"This class has significant CSS bundle contribution. Removal will improve load times.\"\r\n )\r\n }\r\n\r\n return suggestions\r\n }\r\n\r\n private isCriticalClass(className: string): boolean {\r\n const normalized = className.startsWith(\".\") ? className.slice(1) : className\r\n return this.criticalPatterns.some(\r\n (pattern) => normalized === pattern || normalized.startsWith(`${pattern}:`)\r\n )\r\n }\r\n\r\n private calculateSavings(bundleSize: number, componentCount: number): number {\r\n const baseSavings = bundleSize\r\n const componentOverhead = componentCount * 50\r\n return Math.max(0, baseSavings - componentOverhead)\r\n }\r\n\r\n private createEmptyReport(className: string): ImpactReport {\r\n const normalizedClass = className?.startsWith(\".\") ? className.slice(1) : className || \"\"\r\n return {\r\n className: normalizedClass,\r\n totalComponents: 0,\r\n directUsage: 0,\r\n indirectUsage: 0,\r\n bundleSizeBytes: 0,\r\n estimatedSavings: 0,\r\n riskLevel: \"low\",\r\n suggestions: [\"Invalid class name or analysis data.\"],\r\n }\r\n }\r\n}\r\n","export class RuleId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `R${this.value}`\r\n }\r\n}\r\n\r\nexport class SelectorId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `S${this.value}`\r\n }\r\n}\r\n\r\nexport class VariantChainId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `V${this.value}`\r\n }\r\n}\r\n\r\nexport class PropertyId {\r\n constructor(\r\n public readonly value: number,\r\n public readonly name?: string,\r\n ) {}\r\n toString() {\r\n const name = this.name\r\n if (typeof name === \"string\" && name.length > 0) {\r\n return name\r\n }\r\n return propertyIdToString(this)\r\n }\r\n}\r\n\r\nexport class ValueId {\r\n constructor(\r\n public readonly value: number,\r\n public readonly name?: string,\r\n ) {}\r\n toString() {\r\n const name = this.name\r\n if (typeof name === \"string\" && name.length > 0) {\r\n return name\r\n }\r\n return valueIdToString(this)\r\n }\r\n}\r\n\r\nexport class LayerId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `L${this.value}`\r\n }\r\n}\r\n\r\nexport class ConditionId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `C${this.value}`\r\n }\r\n}\r\n\r\nexport class CascadeResolutionId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `R${this.value}`\r\n }\r\n}\r\n\r\n// Registry for property and value names\r\nconst propertyNames = new Map<number, string>()\r\nconst valueNames = new Map<number, string>()\r\n\r\nexport function registerPropertyName(id: PropertyId, name: string): void {\r\n propertyNames.set(id.value, name)\r\n}\r\n\r\nexport function registerValueName(id: ValueId, name: string): void {\r\n valueNames.set(id.value, name)\r\n}\r\n\r\nexport function propertyIdToString(id: PropertyId): string {\r\n return propertyNames.get(id.value) ?? `P${id.value}`\r\n}\r\n\r\nexport function valueIdToString(id: ValueId): string {\r\n return valueNames.get(id.value) ?? `V${id.value}`\r\n}\r\n\r\nexport enum Origin {\r\n UserAgent = 0,\r\n UserNormal = 1,\r\n AuthorNormal = 2,\r\n AuthorImportant = 3,\r\n UserImportant = 4,\r\n}\r\n\r\nexport enum Importance {\r\n Normal = 0,\r\n Important = 1,\r\n}\r\n\r\nexport enum ConditionResult {\r\n Active = 0,\r\n Inactive = 1,\r\n Unknown = 2,\r\n}\r\n\r\nexport enum CascadeStage {\r\n Origin = 0,\r\n Layer = 1,\r\n Importance = 2,\r\n Specificity = 3,\r\n Order = 4,\r\n}\r\n\r\nexport type ResolutionCause =\r\n | { type: \"LowerOrigin\"; winnerOrigin: Origin; loserOrigin: Origin }\r\n | { type: \"LowerLayer\"; winnerLayer: string; loserLayer: string }\r\n | { type: \"LowerImportance\" }\r\n | { type: \"LowerSpecificity\"; delta: number }\r\n | { type: \"EarlierOrder\"; delta: number }\r\n | { type: \"InactiveCondition\"; condition: string }\r\n\r\nexport interface ResolutionReason {\r\n causes: readonly ResolutionCause[]\r\n finalDecision: string\r\n}\r\n\r\nexport interface SelectorIR {\r\n id: SelectorId\r\n normalized: string\r\n specificity: number\r\n parts: readonly string[]\r\n}\r\n\r\nexport interface VariantChainIR {\r\n id: VariantChainId\r\n chain: readonly VariantChainId[]\r\n conditionGraphId: number | null\r\n}\r\n\r\nexport interface ConditionIR {\r\n id: ConditionId\r\n conditionType: string\r\n expression: string\r\n}\r\n\r\nexport interface RuleIR {\r\n id: RuleId\r\n selector: SelectorId\r\n variantChain: VariantChainId\r\n property: PropertyId\r\n value: ValueId\r\n origin: Origin\r\n importance: Importance\r\n layer: LayerId | null\r\n layerOrder: number\r\n specificity: number\r\n condition: ConditionId | null\r\n conditionResult: ConditionResult\r\n insertionOrder: number\r\n fingerprint: string\r\n source: SourceLocation\r\n}\r\n\r\nexport interface PropertyBucketIR {\r\n property: PropertyId\r\n rules: readonly RuleId[]\r\n}\r\n\r\nexport interface CascadeResolutionIR {\r\n id: CascadeResolutionId\r\n property: PropertyId\r\n winner: RuleId\r\n losers: readonly RuleId[]\r\n reason: ResolutionReason\r\n stage: CascadeStage\r\n}\r\n\r\nexport interface StyleGraphIR {\r\n ruleConflicts: Map<RuleId, readonly RuleId[]>\r\n}\r\n\r\nexport interface FinalComputedStyleIR {\r\n className: string\r\n resolvedProperties: Map<PropertyId, CascadeResolutionId>\r\n}\r\n\r\nexport interface SourceLocation {\r\n file: string\r\n line: number\r\n column: number\r\n}\r\n\r\nexport function createFingerprint(parts: string[]): string {\r\n const hash = parts.reduce(\r\n (acc, part) => part.split(\"\").reduce((h, char) => ((h << 5) - h + char.charCodeAt(0)) & h, acc),\r\n 0\r\n )\r\n return Math.abs(hash).toString(36)\r\n}\r\n\r\nexport function compareCascadeOrder(a: RuleIR, b: RuleIR): number {\r\n if (a.origin !== b.origin) {\r\n return a.origin - b.origin\r\n }\r\n if (a.layerOrder !== b.layerOrder) {\r\n return a.layerOrder - b.layerOrder\r\n }\r\n if (a.importance !== b.importance) {\r\n return b.importance - a.importance\r\n }\r\n if (a.specificity !== b.specificity) {\r\n return b.specificity - a.specificity\r\n }\r\n return a.insertionOrder - b.insertionOrder\r\n}\r\n\r\nexport function createResolutionReason(\r\n causes: ResolutionCause[],\r\n finalDecision: string\r\n): ResolutionReason {\r\n return {\r\n causes: [...causes],\r\n finalDecision,\r\n }\r\n}\r\n","import type { RuleIR, SourceLocation } from \"./ir\"\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\n\r\nexport interface ClassUsage {\r\n className: string\r\n source: SourceLocation\r\n specificity: number\r\n isOverride: boolean\r\n variants: string[]\r\n}\r\n\r\nexport interface ReverseLookupResult {\r\n property: string\r\n value: string\r\n usedInClasses: ClassUsage[]\r\n}\r\n\r\ninterface ParsedRule {\r\n className: string\r\n property: string\r\n value: string\r\n specificity: number\r\n source: SourceLocation\r\n isImportant: boolean\r\n variants: string[]\r\n isOverride: boolean\r\n}\r\n\r\nexport class ReverseLookup {\r\n private parsedCache: Map<string, ParsedRule[]> = new Map()\r\n private static readonly MAX_CACHE_SIZE = 1000\r\n /** Jumlah karakter total yang disimpan di cache (approx) */\r\n private cacheSizeBytes = 0\r\n private static readonly MAX_CACHE_BYTES = 10 * 1024 * 1024 // 10MB\r\n\r\n private parseCSS(css: string): ParsedRule[] {\r\n const cached = this.parsedCache.get(css)\r\n if (cached) {\r\n return cached\r\n }\r\n\r\n // Gunakan Rust native parser jika tersedia (regex lebih cepat, no GC)\r\n try {\r\n const native = (() => { try { return getNativeEngineBinding() } catch { return null } })()\r\n if (native?.parseCssRulesNative) {\r\n const raw = native.parseCssRulesNative(css) as Array<{\r\n className: string; property: string; value: string\r\n isImportant: boolean; variants: string[]; specificity: number\r\n }>\r\n const rules: ParsedRule[] = (raw ?? []).map((r) => ({\r\n className: r.className,\r\n property: r.property,\r\n value: r.value,\r\n specificity: r.specificity,\r\n source: { file: \"\", line: 0, column: 0 },\r\n isImportant: r.isImportant,\r\n variants: r.variants,\r\n isOverride: false,\r\n }))\r\n this.pruneCache()\r\n this.parsedCache.set(css, rules)\r\n return rules\r\n }\r\n } catch { /* fallback to JS */ }\r\n\r\n const rules: ParsedRule[] = []\r\n const classMap = new Map<string, Map<string, ParsedRule>>()\r\n\r\n const selectorRegex = /\\.([a-zA-Z_][a-zA-Z0-9_-]*)/g\r\n const propertyRegex = /([a-zA-Z-]+)\\s*:\\s*([^;]+)/g\r\n const importantRegex = /!important\\s*;?\\s*$/\r\n\r\n const lines = css.split(\"\\n\")\r\n const columnState = { offset: 0 }\r\n\r\n for (const [i, line] of lines.entries()) {\r\n const _lineStart = columnState.offset\r\n const lineEnd = columnState.offset + line.length + 1\r\n\r\n // Use for...of + matchAll instead of while loop with let match\r\n for (const match of line.matchAll(selectorRegex)) {\r\n const className = match[1]\r\n const selectorStart = match.index\r\n const lineColumn = selectorStart + 1\r\n\r\n if (!classMap.has(className)) {\r\n classMap.set(className, new Map())\r\n }\r\n\r\n const braceMatch = css.indexOf(\"{\", lineEnd - 1)\r\n if (braceMatch !== -1) {\r\n const closingBraceMatch = this.findClosingBrace(css, braceMatch)\r\n const ruleContent = css.substring(braceMatch + 1, closingBraceMatch)\r\n\r\n const variants: string[] = []\r\n const variantMatch = className.match(/^(.+?)(?::([a-zA-Z0-9_-]+))?$/)\r\n if (variantMatch?.[2]) {\r\n variants.push(variantMatch[2])\r\n }\r\n\r\n const specificity = this.calculateSpecificity(className)\r\n const source: SourceLocation = {\r\n file: \"inline\",\r\n line: i + 1,\r\n column: lineColumn,\r\n }\r\n\r\n // Use for...of + matchAll instead of while loop with let propMatch\r\n for (const propMatch of ruleContent.matchAll(propertyRegex)) {\r\n const property = propMatch[1].trim()\r\n const rawValue = propMatch[2].trim()\r\n const isImportant = importantRegex.test(rawValue)\r\n const value = isImportant ? rawValue.replace(importantRegex, \"\").trim() : rawValue\r\n\r\n const rule: ParsedRule = {\r\n className,\r\n property,\r\n value,\r\n specificity,\r\n source,\r\n isImportant,\r\n variants,\r\n isOverride: false,\r\n }\r\n\r\n rules.push(rule)\r\n\r\n const classRules = classMap.get(className)!\r\n const existingProp = classRules.get(property)\r\n if (existingProp) {\r\n rule.isOverride = true\r\n }\r\n classRules.set(property, rule)\r\n }\r\n }\r\n\r\n }\r\n\r\n columnState.offset = lineEnd\r\n }\r\n\r\n // Evict oldest entry if cache is full\r\n this.pruneCache()\r\n\r\n this.parsedCache.set(css, rules)\r\n return rules\r\n }\r\n\r\n private findClosingBrace(css: string, start: number): number {\r\n let depth = 1\r\n for (let pos = start + 1; pos < css.length; pos++) {\r\n const char = css[pos]\r\n if (char === \"{\") depth++\r\n else if (char === \"}\") {\r\n depth--\r\n if (depth === 0) return pos\r\n }\r\n }\r\n return css.length\r\n }\r\n\r\n private calculateSpecificity(className: string): number {\r\n const pseudoClasses = className.match(/:[a-zA-Z-]+/g) || []\r\n const attributes = className.match(/\\[[^\\]]+\\]/g) || []\r\n const pseudoElements = className.match(/::[a-zA-Z-]+/g) || []\r\n return 1 + pseudoClasses.length * 10 + attributes.length * 10 + pseudoElements.length * 100\r\n }\r\n\r\n fromCSS(cssProperty: string, cssValue: string, css: string): ReverseLookupResult[] {\r\n if (!css || !cssProperty) {\r\n return []\r\n }\r\n\r\n const rules = this.parseCSS(css)\r\n const normalizedProperty = cssProperty.toLowerCase()\r\n const normalizedValue = cssValue.toLowerCase().trim()\r\n const usages: ClassUsage[] = []\r\n\r\n for (const rule of rules) {\r\n if (rule.property.toLowerCase() !== normalizedProperty) {\r\n continue\r\n }\r\n\r\n const ruleValueLower = rule.value.toLowerCase().trim()\r\n if (ruleValueLower !== normalizedValue && !ruleValueLower.includes(normalizedValue)) {\r\n continue\r\n }\r\n\r\n usages.push({\r\n className: rule.className,\r\n source: rule.source,\r\n specificity: rule.specificity,\r\n isOverride: rule.isOverride || false,\r\n variants: rule.variants,\r\n })\r\n }\r\n\r\n if (usages.length === 0) {\r\n return []\r\n }\r\n\r\n return [{ property: normalizedProperty, value: cssValue, usedInClasses: usages }]\r\n }\r\n\r\n fromBundle(className: string, css: string): RuleIR[] {\r\n if (!css || !className) {\r\n return []\r\n }\r\n\r\n const rules = this.parseCSS(css)\r\n const results: RuleIR[] = []\r\n\r\n for (const rule of rules) {\r\n if (rule.className === className || rule.className.startsWith(`${className}:`)) {\r\n const ruleIR: RuleIR = {\r\n id: { value: results.length },\r\n selector: { value: 0 },\r\n variantChain: { value: 0 },\r\n property: { value: 0 },\r\n value: { value: 0 },\r\n origin: 2,\r\n importance: rule.isImportant ? 1 : 0,\r\n layer: null,\r\n layerOrder: 0,\r\n specificity: rule.specificity,\r\n condition: null,\r\n conditionResult: 0,\r\n insertionOrder: results.length,\r\n fingerprint: \"\",\r\n source: rule.source,\r\n }\r\n results.push(ruleIR)\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n findDependents(className: string, css: string): string[] {\r\n if (!css || !className) {\r\n return []\r\n }\r\n\r\n const rules = this.parseCSS(css)\r\n const dependents = new Set<string>()\r\n\r\n const classParts = className.split(\":\")\r\n const baseClass = classParts[0]\r\n\r\n for (const rule of rules) {\r\n const ruleBaseClass = rule.className.split(\":\")[0]\r\n\r\n if (ruleBaseClass === baseClass && rule.className !== className) {\r\n dependents.add(rule.className)\r\n }\r\n\r\n if (rule.className.includes(baseClass) && rule.className !== className) {\r\n const isVariant = rule.className.includes(\":\")\r\n if (isVariant && !rule.className.startsWith(`${className}:`)) {\r\n dependents.add(rule.className)\r\n }\r\n }\r\n }\r\n\r\n return Array.from(dependents)\r\n }\r\n\r\n findByProperty(property: string, css: string): ReverseLookupResult[] {\r\n if (!css || !property) {\r\n return []\r\n }\r\n\r\n const rules = this.parseCSS(css)\r\n const normalizedProperty = property.toLowerCase()\r\n\r\n const valueMap = new Map<string, ClassUsage[]>()\r\n\r\n for (const rule of rules) {\r\n if (rule.property.toLowerCase() !== normalizedProperty) {\r\n continue\r\n }\r\n\r\n const classUsage: ClassUsage = {\r\n className: rule.className,\r\n source: rule.source,\r\n specificity: rule.specificity,\r\n isOverride: rule.isOverride || false,\r\n variants: rule.variants,\r\n }\r\n\r\n let usages = valueMap.get(rule.value)\r\n if (!usages) {\r\n usages = []\r\n valueMap.set(rule.value, usages)\r\n }\r\n usages.push(classUsage)\r\n }\r\n\r\n const results: ReverseLookupResult[] = []\r\n for (const [value, usedInClasses] of valueMap) {\r\n results.push({ property: normalizedProperty, value, usedInClasses })\r\n }\r\n\r\n return results\r\n }\r\n\r\n /**\r\n * Kosongkan seluruh parsed cache.\r\n * Panggil ini saat CSS berubah (watch mode) atau saat memory pressure.\r\n */\r\n clearCache(): void {\r\n this.parsedCache.clear()\r\n this.cacheSizeBytes = 0\r\n }\r\n\r\n /**\r\n * Hapus entri cache lama sampai di bawah threshold.\r\n * Dipakai oleh parseCSS secara internal.\r\n */\r\n private pruneCache(): void {\r\n while (\r\n (this.parsedCache.size >= ReverseLookup.MAX_CACHE_SIZE ||\r\n this.cacheSizeBytes >= ReverseLookup.MAX_CACHE_BYTES) &&\r\n this.parsedCache.size > 0\r\n ) {\r\n const firstKey = this.parsedCache.keys().next().value\r\n if (firstKey === undefined) break\r\n const removed = this.parsedCache.get(firstKey)\r\n this.parsedCache.delete(firstKey)\r\n // Approximate bytes freed\r\n this.cacheSizeBytes -= firstKey.length + (removed?.length ?? 0) * 100\r\n if (this.cacheSizeBytes < 0) this.cacheSizeBytes = 0\r\n }\r\n }\r\n\r\n /** Cache size untuk observability/diagnostics */\r\n get cacheSize(): number {\r\n return this.parsedCache.size\r\n }\r\n}\r\n","import { type CssCompileResult, compileCssFromClasses } from \"@tailwind-styled/compiler/internal\"\r\nimport {\r\n ConditionId,\r\n ConditionResult,\r\n createFingerprint,\r\n Importance,\r\n LayerId,\r\n Origin,\r\n PropertyId,\r\n RuleId,\r\n type RuleIR,\r\n type SourceLocation,\r\n ValueId,\r\n VariantChainId,\r\n} from \"@tailwind-styled/engine/internal\"\r\nimport { scanWorkspace } from \"@tailwind-styled/scanner\"\r\nimport { TwError, wrapUnknownError } from \"@tailwind-styled/shared\"\r\n\r\ninterface EngineTraceResult {\r\n class: string\r\n definedAt: SourceLocation\r\n variants: Array<{ name: string; value: string; source: SourceLocation }>\r\n rules: Array<{\r\n property: string\r\n value: string\r\n applied: boolean\r\n reason: string | null\r\n source: SourceLocation\r\n specificity: number\r\n }>\r\n conflicts: Array<{\r\n property: string\r\n winner: string\r\n loser: string\r\n stage: string\r\n causes: string[]\r\n }>\r\n finalStyle: Array<{ property: string; value: string }>\r\n}\r\n\r\ninterface ParsedSelector {\r\n className: string\r\n variants: string[]\r\n pseudoClasses: string[]\r\n mediaQuery: string | null\r\n}\r\n\r\ninterface ParsedRule {\r\n selector: ParsedSelector\r\n property: string\r\n value: string\r\n important: boolean\r\n}\r\n\r\ninterface RuleTrace {\r\n property: string\r\n value: string\r\n applied: boolean\r\n reason: string | null\r\n source: SourceLocation\r\n specificity: number\r\n}\r\n\r\ninterface ConflictTrace {\r\n property: string\r\n winner: string\r\n loser: string\r\n stage: string\r\n causes: string[]\r\n}\r\n\r\ninterface EngineVariantTrace {\r\n name: unknown\r\n value: unknown\r\n source: SourceLocation\r\n}\r\n\r\ninterface EngineRuleTrace {\r\n property: unknown\r\n value: unknown\r\n applied: unknown\r\n reason: unknown\r\n source: SourceLocation | undefined\r\n specificity: unknown\r\n}\r\n\r\ninterface EngineConflictTrace {\r\n property: unknown\r\n winner: unknown\r\n loser: unknown\r\n stage: unknown\r\n causes: unknown[]\r\n}\r\n\r\ninterface EngineFinalStyleTrace {\r\n property: unknown\r\n value: unknown\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// ID Generator - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createIdGenerator = () => {\r\n const _counters = {\r\n ruleId: 0,\r\n selectorId: 0,\r\n propertyId: 0,\r\n valueId: 0,\r\n layerId: 0,\r\n conditionId: 0,\r\n insertionOrder: 0,\r\n }\r\n\r\n const generateRuleId = (): RuleId => new RuleId(_counters.ruleId++)\r\n const generateSelectorId = (): RuleId => new RuleId(_counters.selectorId++)\r\n const generatePropertyId = (propertyName: string): PropertyId =>\r\n new PropertyId(_counters.propertyId++, propertyName)\r\n const generateValueId = (valueName: string): ValueId =>\r\n new ValueId(_counters.valueId++, valueName)\r\n const generateLayerId = (): LayerId => new LayerId(_counters.layerId++)\r\n const generateConditionId = (): ConditionId => new ConditionId(_counters.conditionId++)\r\n const getNextInsertionOrder = (): number => _counters.insertionOrder++\r\n\r\n const reset = (): void => {\r\n _counters.ruleId = 0\r\n _counters.selectorId = 0\r\n _counters.propertyId = 0\r\n _counters.valueId = 0\r\n _counters.layerId = 0\r\n _counters.conditionId = 0\r\n _counters.insertionOrder = 0\r\n }\r\n\r\n return {\r\n generateRuleId,\r\n generateSelectorId,\r\n generatePropertyId,\r\n generateValueId,\r\n generateLayerId,\r\n generateConditionId,\r\n getNextInsertionOrder,\r\n reset,\r\n }\r\n}\r\n\r\nconst idGenerator = createIdGenerator()\r\n\r\nconst layerMap: Map<string, LayerId> = new Map()\r\nconst layerOrderMap: Map<string, number> = new Map()\r\n\r\nconst LAYER_ORDER: Record<string, number> = {\r\n base: 0,\r\n components: 1,\r\n utilities: 2,\r\n tailwind: 3,\r\n}\r\n\r\nfunction getOrCreateLayerId(layerName: string): LayerId | null {\r\n const existing = layerMap.get(layerName)\r\n if (existing) return existing\r\n\r\n const order = LAYER_ORDER[layerName] ?? 4\r\n const layerId = idGenerator.generateLayerId()\r\n layerMap.set(layerName, layerId)\r\n layerOrderMap.set(layerName, order)\r\n return layerId\r\n}\r\n\r\nfunction calculateSpecificity(selector: ParsedSelector): number {\r\n const classCount = selector.className.split(\":\").length * 10\r\n const pseudoCount = selector.pseudoClasses.length * 10\r\n const mediaCount = selector.mediaQuery ? 1000 : 0\r\n return classCount + pseudoCount + mediaCount\r\n}\r\n\r\nfunction parseSelector(selectorText: string): ParsedSelector {\r\n const mediaMatch = selectorText.match(/^@media[^{]+\\{(.+)$/)\r\n const mediaQuery = mediaMatch ? mediaMatch[0] : null\r\n const baseClass = (mediaMatch ? mediaMatch[1].trim() : selectorText).startsWith(\".\")\r\n ? (mediaMatch ? mediaMatch[1].trim() : selectorText).slice(1)\r\n : mediaMatch\r\n ? mediaMatch[1].trim()\r\n : selectorText\r\n\r\n const escapedColon = /\\\\:/g\r\n const baseClassClean = baseClass.startsWith(\".\") ? baseClass.slice(1) : baseClass\r\n const baseClassFinal = baseClassClean\r\n .replace(escapedColon, \"\\u200B\")\r\n .split(\":\")[0]\r\n .replace(/\\u200B/g, \":\")\r\n\r\n const variantRegex =\r\n /^(hover|focus|active|visited|checked|disabled|required|optional|first|last|odd|even|before|after|placeholder|file|selection|backdrop|group|peer)/i\r\n const pseudoRegex = /^:([a-zA-Z-]+)$/\r\n\r\n const parts = baseClassFinal.split(\":\").slice(1)\r\n const { variants, pseudoClasses } = parts.reduce(\r\n (acc, part) => {\r\n const normalized = `:${part}`\r\n if (variantRegex.test(part)) {\r\n acc.variants.push(part)\r\n } else if (pseudoRegex.test(normalized)) {\r\n acc.pseudoClasses.push(normalized)\r\n } else {\r\n acc.variants.push(part)\r\n }\r\n return acc\r\n },\r\n { variants: [] as string[], pseudoClasses: [] as string[] }\r\n )\r\n\r\n return {\r\n className: baseClassFinal,\r\n variants,\r\n pseudoClasses,\r\n mediaQuery,\r\n }\r\n}\r\n\r\nfunction parseDeclaration(\r\n block: string\r\n): Array<{ property: string; value: string; important: boolean }> {\r\n const declarations: Array<{ property: string; value: string; important: boolean }> = []\r\n\r\n for (const match of block.matchAll(/([a-zA-Z-]+)\\s*:\\s*([^;!]+)(!important)?/g)) {\r\n const property = match[1].trim()\r\n const value = match[2].trim()\r\n const important = match[3] !== undefined\r\n\r\n declarations.push({ property, value, important })\r\n }\r\n\r\n return declarations\r\n}\r\n\r\nfunction parseRules(css: string): ParsedRule[] {\r\n const rules: ParsedRule[] = []\r\n\r\n for (const match of css.matchAll(/([^{}]+)\\s*\\{([^{}]*)\\}/g)) {\r\n const selectorText = match[1].trim()\r\n const declarationBlock = match[2].trim()\r\n\r\n if (selectorText.startsWith(\"@\")) {\r\n continue\r\n }\r\n\r\n const parsedSelector = parseSelector(selectorText)\r\n const declarations = parseDeclaration(declarationBlock)\r\n\r\n for (const decl of declarations) {\r\n rules.push({\r\n selector: parsedSelector,\r\n property: decl.property,\r\n value: decl.value,\r\n important: decl.important,\r\n })\r\n }\r\n }\r\n\r\n return rules\r\n}\r\n\r\nfunction detectLayerFromSelector(className: string): string | null {\r\n const layerPrefixes = [\"tw-\", \"tailwind-\"]\r\n\r\n for (const prefix of layerPrefixes) {\r\n if (className.startsWith(prefix)) {\r\n return \"tailwind\"\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nfunction parseCssToIr(\r\n css: string,\r\n prefix: string = \"\"\r\n): { rules: RuleIR[]; classToRuleIds: Map<string, RuleId[]> } {\r\n idGenerator.reset()\r\n\r\n layerMap.clear()\r\n layerOrderMap.clear()\r\n\r\n const rules: RuleIR[] = []\r\n const classToRuleIds: Map<string, RuleId[]> = new Map()\r\n\r\n const parsedRules = parseRules(css)\r\n\r\n for (const parsedRule of parsedRules) {\r\n const className = prefix + parsedRule.selector.className\r\n const specificity = calculateSpecificity(parsedRule.selector)\r\n\r\n const layerName = detectLayerFromSelector(className)\r\n const layer = layerName ? getOrCreateLayerId(layerName) : null\r\n const layerOrder = layerName ? (layerOrderMap.get(layerName) ?? 4) : 4\r\n\r\n const selectorId = idGenerator.generateSelectorId()\r\n const propertyId = idGenerator.generatePropertyId(parsedRule.property)\r\n const valueId = idGenerator.generateValueId(parsedRule.value)\r\n\r\n const conditionId = parsedRule.selector.mediaQuery ? idGenerator.generateConditionId() : null\r\n const conditionResult = parsedRule.selector.mediaQuery\r\n ? ConditionResult.Unknown\r\n : ConditionResult.Unknown\r\n\r\n const fingerprint = createFingerprint([className, parsedRule.property, parsedRule.value])\r\n\r\n const ruleId = idGenerator.generateRuleId()\r\n\r\n const rule: RuleIR = {\r\n id: ruleId,\r\n selector: selectorId,\r\n variantChain: new VariantChainId(0),\r\n property: propertyId,\r\n value: valueId,\r\n origin: Origin.AuthorNormal,\r\n importance: parsedRule.important ? Importance.Important : Importance.Normal,\r\n layer,\r\n layerOrder,\r\n specificity,\r\n condition: conditionId,\r\n conditionResult,\r\n insertionOrder: idGenerator.getNextInsertionOrder(),\r\n fingerprint,\r\n source: {\r\n file: \"\",\r\n line: 1,\r\n column: 1,\r\n },\r\n }\r\n\r\n rules.push(rule)\r\n\r\n const existingRuleIds = classToRuleIds.get(className) || []\r\n existingRuleIds.push(ruleId)\r\n classToRuleIds.set(className, existingRuleIds)\r\n }\r\n\r\n return { rules, classToRuleIds }\r\n}\r\n\r\ninterface PropertyBucket {\r\n property: PropertyId\r\n rules: RuleId[]\r\n}\r\n\r\ninterface ResolutionEntry {\r\n winner: RuleId\r\n}\r\n\r\nclass CascadeResolver {\r\n private propertyBuckets: Map<PropertyId, PropertyBucket> = new Map()\r\n private rules: Map<RuleId, RuleIR> = new Map()\r\n private classRules: Map<string, RuleId[]> = new Map()\r\n\r\n addRule(rule: RuleIR): void {\r\n this.rules.set(rule.id, rule)\r\n\r\n const property = rule.property\r\n const existingBucket = this.propertyBuckets.get(property)\r\n\r\n if (!existingBucket) {\r\n this.propertyBuckets.set(property, {\r\n property,\r\n rules: [rule.id],\r\n })\r\n } else {\r\n this.propertyBuckets.set(property, {\r\n ...existingBucket,\r\n rules: [...existingBucket.rules, rule.id],\r\n })\r\n }\r\n }\r\n\r\n addRules(rules: RuleIR[]): void {\r\n for (const rule of rules) {\r\n this.addRule(rule)\r\n }\r\n }\r\n\r\n getRule(ruleId: RuleId): RuleIR | undefined {\r\n return this.rules.get(ruleId)\r\n }\r\n\r\n registerClass(className: string, ruleIds: RuleId[]): void {\r\n this.classRules.set(className, ruleIds)\r\n }\r\n\r\n getClassRules(className: string): RuleId[] | undefined {\r\n return this.classRules.get(className)\r\n }\r\n\r\n resolveByClassName(\r\n className: string\r\n ): { resolvedProperties: Map<PropertyId, ResolutionEntry> } | null {\r\n const ruleIds = this.classRules.get(className)\r\n if (!ruleIds) {\r\n return null\r\n }\r\n\r\n const classRules: RuleIR[] = []\r\n for (const ruleId of ruleIds) {\r\n const rule = this.rules.get(ruleId)\r\n if (rule) {\r\n classRules.push(rule)\r\n }\r\n }\r\n\r\n const propertyMap = new Map<PropertyId, RuleIR[]>()\r\n for (const rule of classRules) {\r\n const existing = propertyMap.get(rule.property) || []\r\n existing.push(rule)\r\n propertyMap.set(rule.property, existing)\r\n }\r\n\r\n const resolved = new Map<PropertyId, ResolutionEntry>()\r\n for (const [property, rules] of propertyMap) {\r\n if (rules.length > 0) {\r\n const activeRules = rules.filter((r) => r.conditionResult !== ConditionResult.Inactive)\r\n if (activeRules.length > 0) {\r\n activeRules.sort((a, b) => {\r\n const originDiff = b.origin - a.origin\r\n if (originDiff !== 0) return originDiff\r\n const layerDiff = b.layerOrder - a.layerOrder\r\n if (layerDiff !== 0) return layerDiff\r\n const importanceDiff = b.importance - a.importance\r\n if (importanceDiff !== 0) return importanceDiff\r\n const specificityDiff = b.specificity - a.specificity\r\n if (specificityDiff !== 0) return specificityDiff\r\n return b.insertionOrder - a.insertionOrder\r\n })\r\n\r\n const winner = activeRules[0]\r\n resolved.set(property, { winner: winner.id })\r\n }\r\n }\r\n }\r\n\r\n return { resolvedProperties: resolved }\r\n }\r\n}\r\n\r\nfunction trace(className: string, resolver: CascadeResolver): EngineTraceResult {\r\n const provenance = {\r\n className,\r\n source: { file: \"\", line: 0, column: 0 } as SourceLocation,\r\n variants: new Map(),\r\n rules: new Map(),\r\n }\r\n\r\n const classRuleIds = resolver.getClassRules(className)\r\n const allRules: RuleIR[] = []\r\n\r\n if (classRuleIds) {\r\n for (const ruleId of classRuleIds) {\r\n const rule = resolver.getRule(ruleId)\r\n if (rule) {\r\n allRules.push(rule)\r\n }\r\n }\r\n }\r\n\r\n for (const rules of provenance.rules.values()) {\r\n allRules.push(...rules)\r\n }\r\n\r\n const rulesByProperty = new Map<string, RuleIR[]>()\r\n for (const rule of allRules) {\r\n const propKey = rule.property.toString()\r\n if (!rulesByProperty.has(propKey)) {\r\n rulesByProperty.set(propKey, [])\r\n }\r\n rulesByProperty.get(propKey)!.push(rule)\r\n }\r\n\r\n const ruleTraces: RuleTrace[] = []\r\n const conflictTraces: ConflictTrace[] = []\r\n\r\n for (const [property, rules] of rulesByProperty) {\r\n if (rules.length === 0) continue\r\n\r\n const activeRules = rules.filter((r) => r.conditionResult !== ConditionResult.Inactive)\r\n if (activeRules.length === 0) continue\r\n\r\n activeRules.sort((a, b) => {\r\n const originDiff = b.origin - a.origin\r\n if (originDiff !== 0) return originDiff\r\n const layerDiff = b.layerOrder - a.layerOrder\r\n if (layerDiff !== 0) return layerDiff\r\n const importanceDiff = b.importance - a.importance\r\n if (importanceDiff !== 0) return importanceDiff\r\n const specificityDiff = b.specificity - a.specificity\r\n if (specificityDiff !== 0) return specificityDiff\r\n return b.insertionOrder - a.insertionOrder\r\n })\r\n\r\n const winnerRule = activeRules[0]\r\n const losers = activeRules.slice(1)\r\n\r\n ruleTraces.push({\r\n property: property,\r\n value: winnerRule.value.toString(),\r\n applied: true,\r\n reason: null,\r\n source: winnerRule.source,\r\n specificity: winnerRule.specificity,\r\n })\r\n\r\n for (const loserRule of losers) {\r\n ruleTraces.push({\r\n property: property,\r\n value: loserRule.value.toString(),\r\n applied: false,\r\n reason: \"lower specificity\",\r\n source: loserRule.source,\r\n specificity: loserRule.specificity,\r\n })\r\n\r\n conflictTraces.push({\r\n property: property,\r\n winner: winnerRule.value.toString(),\r\n loser: loserRule.value.toString(),\r\n stage: \"Specificity\",\r\n causes: [\"lower specificity\"],\r\n })\r\n }\r\n }\r\n\r\n const resolved = resolver.resolveByClassName(className)\r\n const finalStyle: Array<{ property: string; value: string }> = []\r\n\r\n if (resolved) {\r\n for (const [propId, resolution] of resolved.resolvedProperties) {\r\n const winnerRule = allRules.find((r) => r.id.value === resolution.winner.value)\r\n finalStyle.push({\r\n property: propId.toString(),\r\n value: winnerRule?.value.toString() ?? \"\",\r\n })\r\n }\r\n }\r\n\r\n return {\r\n class: className,\r\n definedAt: provenance.source,\r\n variants: Array.from(provenance.variants.values()),\r\n rules: ruleTraces,\r\n conflicts: conflictTraces,\r\n finalStyle,\r\n }\r\n}\r\n\r\nexport interface TraceResult {\r\n class: string\r\n definedAt: { file: string; line: number; column: number }\r\n variants: Array<{ name: string; value: string; source: { file: string; line: number } }>\r\n rules: Array<{\r\n property: string\r\n value: string\r\n applied: boolean\r\n reason: string | null\r\n source: { file: string; line: number }\r\n specificity: number\r\n }>\r\n conflicts: Array<{\r\n property: string\r\n winner: string\r\n loser: string\r\n stage: string\r\n causes: string[]\r\n }>\r\n finalStyle: Array<{ property: string; value: string }>\r\n}\r\n\r\nexport interface TraceOptions {\r\n root?: string\r\n}\r\n\r\nexport async function traceClass(className: string, options?: TraceOptions): Promise<TraceResult> {\r\n const root = options?.root ?? process.cwd()\r\n\r\n const scanResult = await scanWorkspace(root, {\r\n includeExtensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"],\r\n ignoreDirectories: [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"],\r\n useCache: false,\r\n })\r\n\r\n if (!scanResult.uniqueClasses.includes(className)) {\r\n throw TwError.fromCompile(\r\n \"TRACE_CLASS_NOT_FOUND\",\r\n `Class \"${className}\" not found in workspace scan. Make sure the class is used in your source files.`\r\n )\r\n }\r\n\r\n const cssResult: CssCompileResult = (() => {\r\n try {\r\n return compileCssFromClasses([className], \"\")\r\n } catch (error) {\r\n throw wrapUnknownError(\r\n \"compile\",\r\n \"TRACE_COMPILE_FAILED\",\r\n `Failed to compile CSS for class \"${className}\": ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n }\r\n })()\r\n\r\n if (!cssResult.code || cssResult.code.trim() === \"\") {\r\n throw TwError.fromCompile(\r\n \"TRACE_NO_CSS_RULES\",\r\n `Class \"${className}\" has no CSS rules. The class may not be a valid Tailwind class.`\r\n )\r\n }\r\n\r\n const { rules, classToRuleIds } = parseCssToIr(cssResult.code)\r\n\r\n const ruleIds = classToRuleIds.get(className)\r\n if (!ruleIds || ruleIds.length === 0) {\r\n throw TwError.fromCompile(\"TRACE_NO_RULES_FOUND\", `No rules found for class \"${className}\" after parsing CSS.`)\r\n }\r\n\r\n const resolver = new CascadeResolver()\r\n resolver.addRules(rules)\r\n resolver.registerClass(className, ruleIds)\r\n\r\n const engineTraceResult = trace(className, resolver)\r\n\r\n return convertTraceResult(engineTraceResult)\r\n}\r\n\r\n// Helper function to safely convert any value to string\r\n// Handles PropertyId, ValueId, RuleId, etc. that have a .value property\r\nfunction _toString(value: unknown): string {\r\n if (value === null || value === undefined) return \"\"\r\n if (typeof value === \"string\") return value\r\n if (typeof value === \"number\") return String(value)\r\n if (typeof value === \"boolean\") return String(value)\r\n\r\n // For ID objects like PropertyId, ValueId, etc. - they have a .value property\r\n if (typeof value === \"object\" && value !== null) {\r\n const idValue = (value as { value?: unknown }).value\r\n if (idValue !== undefined) {\r\n return String(idValue)\r\n }\r\n const toStrFn = (value as { toString?: () => string }).toString\r\n if (typeof toStrFn === \"function\") {\r\n const result = toStrFn.call(value)\r\n if (typeof result === \"string\") return result\r\n }\r\n try {\r\n return JSON.stringify(value)\r\n } catch {\r\n return String(value)\r\n }\r\n }\r\n return String(value)\r\n}\r\n\r\n// Helper function to safely convert any value to string\r\nfunction safeToString(value: unknown): string {\r\n if (value === null || value === undefined) return \"\"\r\n if (typeof value === \"string\") return String(value)\r\n if (typeof value === \"number\") return String(value)\r\n if (typeof value === \"boolean\") return String(value)\r\n\r\n // For any object - try various methods\r\n if (typeof value === \"object\" && value !== null) {\r\n const obj = value as Record<string, unknown>\r\n const name = obj.name\r\n if (typeof name === \"string\" && name.length > 0) {\r\n return name\r\n }\r\n\r\n const objValue = obj.value\r\n if (objValue !== undefined) {\r\n return String(objValue)\r\n }\r\n\r\n const objValueOf = obj.valueOf\r\n if (typeof objValueOf === \"function\") {\r\n try {\r\n const vo = objValueOf.call(value)\r\n if (vo !== value) return String(vo)\r\n } catch {}\r\n }\r\n\r\n const toStr = obj.toString\r\n if (typeof toStr === \"function\") {\r\n try {\r\n const result = toStr.call(value)\r\n if (typeof result === \"string\" && result !== \"[object Object]\") {\r\n return result\r\n }\r\n } catch {}\r\n }\r\n\r\n return \"?\"\r\n }\r\n\r\n return String(value)\r\n}\r\n\r\nfunction convertTraceResult(engineResult: EngineTraceResult): TraceResult {\r\n return {\r\n class: safeToString(engineResult.class),\r\n definedAt: {\r\n file: safeToString(engineResult.definedAt.file),\r\n line: Number(engineResult.definedAt.line) || 0,\r\n column: Number(engineResult.definedAt.column) || 0,\r\n },\r\n variants: engineResult.variants.map((v: EngineVariantTrace) => ({\r\n name: safeToString(v.name),\r\n value: safeToString(v.value),\r\n source: {\r\n file: safeToString(v.source?.file ?? \"\"),\r\n line: Number(v.source?.line ?? 0),\r\n },\r\n })),\r\n rules: engineResult.rules.map((r: EngineRuleTrace) => ({\r\n property: safeToString(r.property),\r\n value: safeToString(r.value),\r\n applied: Boolean(r.applied),\r\n reason: r.reason ? safeToString(r.reason) : null,\r\n source: {\r\n file: safeToString(r.source?.file ?? \"\"),\r\n line: Number(r.source?.line ?? 0),\r\n },\r\n specificity: Number(r.specificity ?? 0),\r\n })),\r\n conflicts: engineResult.conflicts.map((c: EngineConflictTrace) => ({\r\n property: safeToString(c.property),\r\n winner: safeToString(c.winner),\r\n loser: safeToString(c.loser),\r\n stage: safeToString(c.stage),\r\n causes: c.causes?.map(safeToString) ?? [],\r\n })),\r\n finalStyle: engineResult.finalStyle.map((f: EngineFinalStyleTrace) => ({\r\n property: safeToString(f.property),\r\n value: safeToString(f.value),\r\n })),\r\n }\r\n}\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nimport { compileCssFromClasses } from \"@tailwind-styled/compiler/internal\"\r\nimport {\r\n DEFAULT_EXTENSIONS,\r\n DEFAULT_IGNORES,\r\n isScannableFile,\r\n scanSource,\r\n scanWorkspace,\r\n} from \"@tailwind-styled/scanner\"\r\n\r\nexport interface TraceImport {\r\n source: string\r\n kind: \"static\" | \"dynamic\" | \"require\"\r\n}\r\n\r\nexport interface TraceTargetFileSummary {\r\n file: string\r\n classCount: number\r\n importCount: number\r\n classes: string[]\r\n}\r\n\r\nexport interface TraceTargetResult {\r\n mode: \"target\"\r\n target: string\r\n targetType: \"file\" | \"directory\"\r\n root: string\r\n filesScanned: number\r\n classes: string[]\r\n classCount: number\r\n imports: TraceImport[]\r\n cssBytes: number\r\n resolvedClassCount: number\r\n unknownClasses: string[]\r\n compilerAvailable: boolean\r\n compilerError?: string\r\n files: TraceTargetFileSummary[]\r\n generatedAt: string\r\n}\r\n\r\nexport interface TraceTargetOptions {\r\n root?: string\r\n}\r\n\r\nfunction toRelativePath(root: string, value: string): string {\r\n const relative = path.relative(root, value)\r\n return relative.length > 0 ? relative : \".\"\r\n}\r\n\r\nfunction uniqueSorted(values: Iterable<string>): string[] {\r\n return Array.from(new Set(values)).sort((left, right) => left.localeCompare(right))\r\n}\r\n\r\nfunction extractImports(source: string): TraceImport[] {\r\n const imports: TraceImport[] = []\r\n const seen = new Set<string>()\r\n\r\n const addImport = (kind: TraceImport[\"kind\"], specifier: string) => {\r\n const normalized = specifier.trim()\r\n if (!normalized) return\r\n const key = `${kind}:${normalized}`\r\n if (seen.has(key)) return\r\n seen.add(key)\r\n imports.push({ kind, source: normalized })\r\n }\r\n\r\n for (const match of source.matchAll(/\\bimport\\s+(?:[^\"'()]+?\\s+from\\s+)?[\"']([^\"']+)[\"']/g)) {\r\n if (match[1]) addImport(\"static\", match[1])\r\n }\r\n\r\n for (const match of source.matchAll(/\\bimport\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g)) {\r\n if (match[1]) addImport(\"dynamic\", match[1])\r\n }\r\n\r\n for (const match of source.matchAll(/\\brequire\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g)) {\r\n if (match[1]) addImport(\"require\", match[1])\r\n }\r\n\r\n return imports\r\n}\r\n\r\nfunction summarizeFile(\r\n filePath: string,\r\n root: string,\r\n classes: string[],\r\n imports: TraceImport[]\r\n): TraceTargetFileSummary {\r\n return {\r\n file: toRelativePath(root, filePath),\r\n classCount: classes.length,\r\n importCount: imports.length,\r\n classes,\r\n }\r\n}\r\n\r\nfunction tryCompileClasses(classes: string[]) {\r\n if (classes.length === 0) {\r\n return {\r\n cssBytes: 0,\r\n resolvedClassCount: 0,\r\n unknownClasses: [] as string[],\r\n compilerAvailable: true,\r\n compilerError: undefined as string | undefined,\r\n }\r\n }\r\n\r\n try {\r\n const compiled = compileCssFromClasses(classes, \"\")\r\n const cssCode = compiled.code || \"\"\r\n const resolvedClasses = compiled.classes || []\r\n const unknownClasses = classes.filter(c => !resolvedClasses.includes(c))\r\n return {\r\n cssBytes: new TextEncoder().encode(cssCode).length,\r\n resolvedClassCount: resolvedClasses.length,\r\n unknownClasses,\r\n compilerAvailable: true,\r\n compilerError: undefined as string | undefined,\r\n }\r\n } catch (error) {\r\n return {\r\n cssBytes: 0,\r\n resolvedClassCount: 0,\r\n unknownClasses: classes,\r\n compilerAvailable: false,\r\n compilerError: error instanceof Error ? error.message : String(error),\r\n }\r\n }\r\n}\r\n\r\nfunction traceSingleFile(filePath: string, root: string): TraceTargetResult {\r\n const source = fs.readFileSync(filePath, \"utf8\")\r\n const classes = uniqueSorted(scanSource(source))\r\n const imports = extractImports(source)\r\n const compiled = tryCompileClasses(classes)\r\n\r\n return {\r\n mode: \"target\",\r\n target: toRelativePath(root, filePath),\r\n targetType: \"file\",\r\n root,\r\n filesScanned: 1,\r\n classes,\r\n classCount: classes.length,\r\n imports,\r\n cssBytes: compiled.cssBytes,\r\n resolvedClassCount: compiled.resolvedClassCount,\r\n unknownClasses: compiled.unknownClasses,\r\n compilerAvailable: compiled.compilerAvailable,\r\n compilerError: compiled.compilerError,\r\n files: [summarizeFile(filePath, root, classes, imports)],\r\n generatedAt: new Date().toISOString(),\r\n }\r\n}\r\n\r\nfunction traceDirectory(targetDir: string, root: string): TraceTargetResult {\r\n const scanResult = scanWorkspace(targetDir, {\r\n includeExtensions: DEFAULT_EXTENSIONS,\r\n ignoreDirectories: DEFAULT_IGNORES,\r\n useCache: false,\r\n })\r\n\r\n const imports: TraceImport[] = []\r\n const importKeys = new Set<string>()\r\n const files = scanResult.files\r\n .filter((entry) => isScannableFile(entry.file, DEFAULT_EXTENSIONS))\r\n .map((entry) => {\r\n const source = fs.readFileSync(entry.file, \"utf8\")\r\n const fileImports = extractImports(source)\r\n for (const fileImport of fileImports) {\r\n const key = `${fileImport.kind}:${fileImport.source}`\r\n if (importKeys.has(key)) continue\r\n importKeys.add(key)\r\n imports.push(fileImport)\r\n }\r\n return summarizeFile(entry.file, root, uniqueSorted(entry.classes), fileImports)\r\n })\r\n .sort((left, right) => left.file.localeCompare(right.file))\r\n\r\n const classes = uniqueSorted(scanResult.uniqueClasses)\r\n const compiled = tryCompileClasses(classes)\r\n\r\n return {\r\n mode: \"target\",\r\n target: toRelativePath(root, targetDir),\r\n targetType: \"directory\",\r\n root,\r\n filesScanned: files.length,\r\n classes,\r\n classCount: classes.length,\r\n imports: imports.sort((left, right) => left.source.localeCompare(right.source)),\r\n cssBytes: compiled.cssBytes,\r\n resolvedClassCount: compiled.resolvedClassCount,\r\n unknownClasses: compiled.unknownClasses,\r\n compilerAvailable: compiled.compilerAvailable,\r\n compilerError: compiled.compilerError,\r\n files,\r\n generatedAt: new Date().toISOString(),\r\n }\r\n}\r\n\r\nexport async function traceTarget(\r\n target: string,\r\n options: TraceTargetOptions = {}\r\n): Promise<TraceTargetResult> {\r\n const root = path.resolve(options.root ?? process.cwd())\r\n const resolvedTarget = path.resolve(root, target)\r\n\r\n if (!fs.existsSync(resolvedTarget)) {\r\n throw new Error(`Trace target not found: ${resolvedTarget}`)\r\n }\r\n\r\n const stat = fs.statSync(resolvedTarget)\r\n if (stat.isDirectory()) {\r\n return traceDirectory(resolvedTarget, root)\r\n }\r\n if (stat.isFile()) {\r\n return traceSingleFile(resolvedTarget, root)\r\n }\r\n\r\n throw new Error(`Trace target must be a file or directory: ${resolvedTarget}`)\r\n}\r\n","/**\r\n * tw generate-types\r\n *\r\n * Scan seluruh codebase menggunakan Rust AST scanner,\r\n * extract semua sub-component names dari:\r\n * - registerSubComponent({ name: \"...\" })\r\n * - .withSub<\"icon\" | \"badge\">()\r\n *\r\n * Lalu generate .d.ts augmentation otomatis ke src/types/tailwind-styled.d.ts\r\n * TypeScript langsung pick up — tanpa deklarasi manual.\r\n */\r\n\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport pc from \"picocolors\"\r\nimport { createCliOutput } from \"./utils/output\"\r\nimport { createCliLogger } from \"./utils/logger\"\r\n\r\nexport async function runGenerateTypesCli(rawArgs: string[]): Promise<void> {\r\n const output = createCliOutput({ json: rawArgs.includes(\"--json\") })\r\n const logger = createCliLogger({ output })\r\n const cwd = process.cwd()\r\n\r\n const outFile = rawArgs.find((a) => a.startsWith(\"--out=\"))?.slice(6)\r\n ?? \"src/types/tailwind-styled.d.ts\"\r\n const outPath = path.resolve(cwd, outFile)\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(pc.cyan(\" ◆ tw generate-types\")))\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(\"\")\r\n\r\n const spinner = output.spinner()\r\n spinner.start(\"Scanning sub-components (Rust)...\")\r\n\r\n let result: { names: string[]; dtsContent: string; filesScanned: number } | null = null\r\n\r\n try {\r\n // Lazy load native binding\r\n const binding = await loadNativeBinding(cwd)\r\n if (!binding?.generateSubComponentTypes) {\r\n throw new Error(\"Native binding 'generateSubComponentTypes' tidak tersedia — pastikan build:rust sudah dijalankan\")\r\n }\r\n\r\n result = binding.generateSubComponentTypes(cwd, outPath)\r\n spinner.stop(`Scanned ${result.filesScanned} files`)\r\n } catch (err) {\r\n spinner.error(\"Scan gagal\")\r\n logger.warn(err instanceof Error ? err.message : String(err))\r\n\r\n // Fallback: JS regex scan\r\n output.writeText(pc.dim(\" → fallback ke JS scanner...\"))\r\n result = await fallbackJsScan(cwd, outPath)\r\n }\r\n\r\n if (!result) {\r\n logger.warn(\"Tidak ada hasil scan\")\r\n return\r\n }\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\" [1/2]\") + pc.cyan(\" sub-components ditemukan\"))\r\n\r\n if (result.names.length === 0) {\r\n logger.skip(\"Tidak ada sub-component terdeteksi\")\r\n output.writeText(pc.dim(\" Gunakan registerSubComponent({ name: '...' }) atau .withSub<'name'>()\"))\r\n } else {\r\n for (const name of result.names) {\r\n logger.ok(name)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\" [2/2]\") + pc.cyan(\" generate .d.ts\"))\r\n\r\n // Buat directory jika belum ada\r\n const outDir = path.dirname(outPath)\r\n if (!fs.existsSync(outDir)) {\r\n fs.mkdirSync(outDir, { recursive: true })\r\n }\r\n\r\n fs.writeFileSync(outPath, result.dtsContent, \"utf-8\")\r\n logger.ok(path.relative(cwd, outPath))\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(pc.bold(pc.green(\" ✓ types generated\")))\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" TypeScript sekarang tahu semua sub-component names.\"))\r\n output.writeText(pc.dim(\" Jalankan ulang jika ada sub-component baru.\"))\r\n output.writeText(\"\")\r\n}\r\n\r\n// ─── Helpers ──────────────────────────────────────────────────────────────────\r\n\r\nasync function loadNativeBinding(cwd: string): Promise<Record<string, (...args: unknown[]) => unknown> | null> {\r\n const candidates = [\r\n path.join(cwd, \"native\", \"tailwind-styled-native.node\"),\r\n path.join(cwd, \"node_modules\", \"tailwind-styled-v4\", \"native\", \"tailwind-styled-native.node\"),\r\n ]\r\n for (const candidate of candidates) {\r\n if (fs.existsSync(candidate)) {\r\n try {\r\n return require(candidate)\r\n } catch {}\r\n }\r\n }\r\n return null\r\n}\r\n\r\nasync function fallbackJsScan(\r\n cwd: string,\r\n outPath: string\r\n): Promise<{ names: string[]; dtsContent: string; filesScanned: number }> {\r\n const { execSync } = await import(\"node:child_process\")\r\n const registerRe = /registerSubComponent\\s*\\(\\s*\\{[^}]*name\\s*:\\s*[\"']([a-zA-Z][a-zA-Z0-9_-]*)[\"']/g\r\n const withSubRe = /\\.withSub\\s*<\\s*([^>]+)\\s*>/g\r\n const literalRe = /[\"']([a-zA-Z][a-zA-Z0-9_-]*)[\"']/g\r\n\r\n const names = new Set<string>()\r\n let filesScanned = 0\r\n\r\n try {\r\n const files = execSync(\r\n `find . -name \"*.tsx\" -o -name \"*.ts\" -o -name \"*.jsx\" -o -name \"*.js\" | grep -v node_modules | grep -v .next | grep -v dist`,\r\n { cwd, encoding: \"utf-8\" }\r\n ).trim().split(\"\\n\").filter(Boolean)\r\n\r\n for (const file of files) {\r\n try {\r\n const source = fs.readFileSync(path.join(cwd, file), \"utf-8\")\r\n filesScanned++\r\n\r\n for (const m of source.matchAll(registerRe)) names.add(m[1])\r\n for (const m of source.matchAll(withSubRe)) {\r\n for (const lit of m[1].matchAll(literalRe)) names.add(lit[1])\r\n }\r\n } catch {}\r\n }\r\n } catch {}\r\n\r\n const sorted = [...names].sort()\r\n const union = sorted.map((n) => `\"${n}\"`).join(\" | \") || \"never\"\r\n const dtsContent = `// AUTO-GENERATED by tailwind-styled-v4 (JS fallback)\\n// DO NOT EDIT — Run: npx tw generate-types to regenerate\\n\\ndeclare module \"tailwind-styled-v4\" {\\n export type DetectedSubComponents = ${union}\\n}\\n`\r\n\r\n return { names: sorted, dtsContent, filesScanned }\r\n}","import { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport { type WhyResult, whyClass } from \"../utils/whyService\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\r\n}\r\n\r\nfunction printWhyOutput(result: WhyResult, output: CliOutput): void {\r\n const { className, bundleContribution, usedIn, variantChain, impact, suggestions, dependents } =\r\n result\r\n\r\n output.writeText(\"\")\r\n output.writeText(`Class: ${className}`)\r\n output.writeText(`Bundle contribution: ${formatSize(bundleContribution)}`)\r\n output.writeText(`Used in: ${usedIn.length} location(s)`)\r\n\r\n if (usedIn.length > 0) {\r\n output.writeText(\"\")\r\n output.subHeader(\"Usage\")\r\n for (const usage of usedIn) {\r\n output.listItem(`${usage.file}:${usage.line}:${usage.column} (${usage.usage})`)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.subHeader(\"Impact\")\r\n output.listItem(`variant chain: ${variantChain.join(\", \") || \"none\"}`)\r\n output.listItem(`risk: ${impact.risk}`)\r\n output.listItem(`components affected: ${impact.componentsAffected}`)\r\n output.listItem(`estimated savings: ${formatSize(impact.estimatedSavings)}`)\r\n\r\n output.writeText(\"\")\r\n output.subHeader(\"Suggestions\")\r\n if (suggestions.length === 0) {\r\n output.listItem(\"none\")\r\n } else {\r\n for (const suggestion of suggestions) {\r\n output.listItem(suggestion)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.subHeader(\"Dependents\")\r\n if (dependents.length === 0) {\r\n output.listItem(\"none\")\r\n } else {\r\n for (const dependent of dependents) {\r\n output.listItem(dependent)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n\r\nexport async function runWhyCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n },\r\n })\r\n\r\n const className = parsed.positionals[0]\r\n if (!className) {\r\n throw new CliUsageError(\"Usage: tw why <class-name>\")\r\n }\r\n\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : context.cwd\r\n const json = context.json || parsed.values.json === true\r\n const result = await whyClass(className, { root })\r\n\r\n if (json) {\r\n context.output.jsonSuccess(\"why\", result)\r\n return\r\n }\r\n\r\n printWhyOutput(result, context.output)\r\n}\r\n\r\nexport const whyCommand: CommandDefinition = {\r\n name: \"why\",\r\n aliases: [\"w\"],\r\n async run(args, context) {\r\n await runWhyCli(args, context)\r\n },\r\n}\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { compileCssFromClasses } from \"@tailwind-styled/compiler/internal\"\r\nimport { BundleAnalyzer, ImpactTracker, ReverseLookup } from \"@tailwind-styled/engine/internal\"\r\nimport { scanWorkspace } from \"@tailwind-styled/scanner\"\r\n\r\nexport interface WhyResult {\r\n className: string\r\n bundleContribution: number\r\n usedIn: Array<{\r\n file: string\r\n line: number\r\n column: number\r\n usage: string\r\n }>\r\n variantChain: string[]\r\n impact: {\r\n risk: \"low\" | \"medium\" | \"high\"\r\n componentsAffected: number\r\n estimatedSavings: number\r\n }\r\n suggestions: string[]\r\n dependents: string[]\r\n}\r\n\r\nfunction extractVariantChain(usage: string): string[] {\r\n const segments = normalizeScannedClass(usage).split(\":\").filter(Boolean)\r\n return segments.length > 1 ? segments.slice(0, -1) : []\r\n}\r\n\r\nfunction normalizeScannedClass(value: string): string {\r\n const normalized = value.startsWith(\".\") ? value.slice(1) : value\r\n return normalized.trim()\r\n}\r\n\r\nfunction matchesClassUsage(scannedClass: string, className: string): boolean {\r\n const normalized = normalizeScannedClass(scannedClass)\r\n if (normalized === className) return true\r\n\r\n const segments = normalized.split(\":\").filter(Boolean)\r\n return segments.length > 0 && segments[segments.length - 1] === className\r\n}\r\n\r\nfunction locateUsage(source: string, candidates: string[]): { line: number; column: number } {\r\n for (const candidate of candidates) {\r\n if (!candidate) continue\r\n const index = source.indexOf(candidate)\r\n if (index === -1) continue\r\n\r\n const beforeMatch = source.slice(0, index)\r\n const lines = beforeMatch.split(/\\r?\\n/)\r\n return {\r\n line: lines.length,\r\n column: (lines[lines.length - 1]?.length ?? 0) + 1,\r\n }\r\n }\r\n\r\n return { line: 1, column: 1 }\r\n}\r\n\r\nexport async function whyClass(className: string, options?: { root?: string }): Promise<WhyResult> {\r\n const root = options?.root ?? process.cwd()\r\n\r\n const scanResult = scanWorkspace(root, {\r\n includeExtensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".vue\", \".svelte\"],\r\n ignoreDirectories: [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"],\r\n useCache: true,\r\n })\r\n\r\n const uniqueClasses = scanResult.uniqueClasses\r\n const classFoundInScan = uniqueClasses.includes(className)\r\n\r\n if (!classFoundInScan) {\r\n throw new Error(\r\n `Class \"${className}\" not found in workspace scan. ` +\r\n `Available classes: ${uniqueClasses.slice(0, 10).join(\", \")}${uniqueClasses.length > 10 ? \"...\" : \"\"}`\r\n )\r\n }\r\n\r\n const usedIn: WhyResult[\"usedIn\"] = []\r\n for (const file of scanResult.files) {\r\n const source = (() => {\r\n try {\r\n return fs.readFileSync(file.file, \"utf8\")\r\n } catch {\r\n return \"\"\r\n }\r\n })()\r\n\r\n for (let i = 0; i < file.classes.length; i++) {\r\n const fileClass = file.classes[i]\r\n if (matchesClassUsage(fileClass, className)) {\r\n const location = locateUsage(source, [\r\n normalizeScannedClass(fileClass),\r\n fileClass,\r\n className,\r\n ])\r\n usedIn.push({\r\n file: path.relative(root, file.file) || path.basename(file.file),\r\n line: location.line,\r\n column: location.column,\r\n usage: normalizeScannedClass(fileClass),\r\n })\r\n }\r\n }\r\n }\r\n\r\n if (usedIn.length === 0) {\r\n throw new Error(\r\n `Class \"${className}\" was found in scan and CSS but no actual usage locations could be determined.`\r\n )\r\n }\r\n\r\n const compiledCss = (() => {\r\n try {\r\n return compileCssFromClasses(uniqueClasses, \"\").code\r\n } catch (error) {\r\n return {\r\n error: error instanceof Error ? error.message : String(error),\r\n }\r\n }\r\n })()\r\n\r\n if (typeof compiledCss !== \"string\") {\r\n return {\r\n className,\r\n bundleContribution: 0,\r\n usedIn,\r\n variantChain: Array.from(\r\n new Set(usedIn.flatMap((usage) => extractVariantChain(usage.usage)))\r\n ),\r\n impact: {\r\n risk: \"low\",\r\n componentsAffected: usedIn.length,\r\n estimatedSavings: 0,\r\n },\r\n suggestions: [\r\n `Native CSS compiler unavailable. ${compiledCss.error}`,\r\n \"Build the native module to enable bundle contribution and dependent analysis.\",\r\n ],\r\n dependents: [],\r\n }\r\n }\r\n\r\n const css = compiledCss\r\n\r\n if (!css || css.trim() === \"\") {\r\n throw new Error(\r\n `Class \"${className}\" not found in compiled CSS. ` +\r\n `The class may not generate any CSS rules.`\r\n )\r\n }\r\n\r\n const bundleAnalyzer = new BundleAnalyzer()\r\n const bundleAnalysis = bundleAnalyzer.analyzeClass(className, scanResult, css)\r\n\r\n const classInCss = css.includes(`.${className}`) || css.includes(`.${className}:`)\r\n if (!classInCss) {\r\n throw new Error(\r\n `Class \"${className}\" found in scan but not in compiled CSS. ` +\r\n `This may indicate a configuration issue.`\r\n )\r\n }\r\n\r\n const impactTracker = new ImpactTracker()\r\n const impactReport = impactTracker.calculateImpact(className, bundleAnalysis, scanResult)\r\n\r\n const reverseLookup = new ReverseLookup()\r\n const dependents = reverseLookup.findDependents(className, css)\r\n\r\n return {\r\n className: bundleAnalysis.className,\r\n bundleContribution: bundleAnalysis.bundleSizeBytes,\r\n usedIn,\r\n variantChain: bundleAnalysis.variantChains,\r\n impact: {\r\n risk: impactReport.riskLevel,\r\n componentsAffected: impactReport.totalComponents,\r\n estimatedSavings: impactReport.estimatedSavings,\r\n },\r\n suggestions: impactReport.suggestions,\r\n dependents,\r\n }\r\n}\r\n","#!/usr/bin/env node\r\n\r\nimport { buildMainProgram } from \"./commands/program\"\r\nimport { runCliMain } from \"./utils/runtime\"\r\n\r\nasync function main() {\r\n await runCliMain({\r\n importMetaUrl: import.meta.url,\r\n buildProgram: buildMainProgram,\r\n })\r\n}\r\n\r\nmain()\r\n"]}
1
+ {"version":3,"sources":["../packages/infrastructure/cli/node_modules/commander/lib/error.js","../packages/infrastructure/cli/node_modules/commander/lib/argument.js","../packages/infrastructure/cli/node_modules/commander/lib/help.js","../packages/infrastructure/cli/node_modules/commander/lib/option.js","../packages/infrastructure/cli/node_modules/commander/lib/suggestSimilar.js","../packages/infrastructure/cli/node_modules/commander/lib/command.js","../packages/infrastructure/cli/node_modules/commander/index.js","../packages/infrastructure/cli/node_modules/commander/esm.mjs","../packages/infrastructure/cli/src/utils/errors.ts","../packages/domain/shared/src/esmHelpers.ts","../packages/domain/shared/src/native-resolution.ts","../packages/domain/shared/src/index.ts","../packages/domain/scanner/src/native-bridge.ts","../packages/domain/scanner/src/cache-native.ts","../packages/domain/scanner/src/parallel-scanner.ts","../packages/domain/scanner/src/schemas.ts","../packages/domain/scanner/src/index.ts","../packages/domain/analyzer/src/utils.ts","../packages/domain/analyzer/src/binding.ts","../packages/domain/analyzer/src/schemas.ts","../packages/domain/analyzer/src/semantic.ts","../packages/domain/analyzer/src/analyzeWorkspace.ts","../packages/domain/analyzer/src/classToCss.ts","../packages/domain/analyzer/src/index.ts","../packages/infrastructure/cli/src/utils/fs.ts","../node_modules/picocolors/picocolors.js","../packages/infrastructure/cli/src/utils/json.ts","../packages/infrastructure/cli/src/utils/output.ts","../packages/infrastructure/cli/src/utils/args.ts","../packages/infrastructure/cli/src/utils/paths.ts","../packages/infrastructure/cli/src/utils/runtime.ts","../packages/infrastructure/cli/src/createApp.ts","../packages/domain/compiler/src/nativeBridge.ts","../packages/infrastructure/cli/src/commands/program.ts","../packages/infrastructure/cli/src/utils/analyzer.ts","../packages/infrastructure/cli/src/analyze.ts","../packages/infrastructure/cli/src/extract.ts","../packages/infrastructure/cli/src/init.ts","../packages/infrastructure/cli/src/migrateWizard.ts","../packages/infrastructure/cli/src/migrate.ts","../packages/infrastructure/cli/src/scan.ts","../packages/infrastructure/cli/src/setup.ts","../packages/infrastructure/cli/src/commands/setup/patchers.ts","../packages/infrastructure/cli/src/commands/setup/prompt.ts","../packages/infrastructure/cli/src/commands/setup/workspace.ts","../packages/infrastructure/cli/src/utils/process.ts","../packages/infrastructure/cli/src/utils/logger.ts","../packages/infrastructure/cli/src/stats.ts","../packages/infrastructure/cli/src/commands/boundary.ts","../packages/infrastructure/cli/src/commands/create.ts","../packages/infrastructure/cli/src/commands/dashboard.ts","../packages/infrastructure/cli/src/commands/helpers.ts","../packages/infrastructure/cli/src/commands/deploy.ts","../packages/infrastructure/cli/src/commands/doctor.ts","../packages/infrastructure/cli/src/utils/doctorService.ts","../packages/infrastructure/cli/src/commands/misc.ts","../packages/infrastructure/cli/src/commands/plugin.ts","../packages/infrastructure/cli/src/preflight.ts","../packages/infrastructure/cli/src/commands/preflight.ts","../packages/infrastructure/cli/src/commands/registry.ts","../packages/infrastructure/cli/src/commands/scriptCommands.ts","../packages/infrastructure/cli/src/commands/storybook.ts","../packages/infrastructure/cli/src/commands/studio.ts","../packages/infrastructure/cli/src/commands/sync.ts","../packages/infrastructure/cli/src/commands/trace.ts","../packages/domain/compiler/src/index.ts","../packages/domain/engine/src/native-bridge.ts","../packages/domain/engine/src/bundleAnalyzer.ts","../packages/domain/engine/src/impactTracker.ts","../packages/domain/engine/src/ir.ts","../packages/domain/engine/src/reverseLookup.ts","../packages/domain/engine/src/resolver.ts","../packages/domain/engine/src/cssToIr.ts","../packages/domain/engine/src/trace.ts","../packages/infrastructure/cli/src/utils/traceService.ts","../packages/infrastructure/cli/src/utils/traceTargetService.ts","../packages/infrastructure/cli/src/generateTypes.ts","../packages/infrastructure/cli/src/commands/why.ts","../packages/infrastructure/cli/src/utils/whyService.ts","../packages/infrastructure/cli/src/index.ts"],"names":["exports","CommanderError","InvalidArgumentError","Argument","Help","cmd","Option","str","path","fs","process","Command","option","text","commander","isBrowser","cwd","_require","createRequire","getDirname","fileURLToPath","scannerGetBinding","resolve","init_src","formatIssuePath","Worker","scanFileNative","scanWorkspaceNative","log","formatIssues","parseWithSchema","init_schemas","z","extractClassesNative","src_exports","pathExists","clackIsTTY","pc","clackNote","clackIntro","clackOutro","clackSpinner","parseNodeArgs","program","isCancel","select","import_picocolors","hasSafelistSource","selected","writeLine","createCommand","fsp","check","DEFAULT_TAILWIND_CSS","pathToFileURL","formatCommand","script","commandArgs","CascadeStage","loadNativeBinding","main","__filename"],"mappings":"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","file":"tw.mjs","sourcesContent":["/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n /**\n * Constructs the CommanderError class\n * @param {number} exitCode suggested exit code which could be used with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n */\n constructor(exitCode, code, message) {\n super(message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n this.code = code;\n this.exitCode = exitCode;\n this.nestedError = undefined;\n }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n /**\n * Constructs the InvalidArgumentError class\n * @param {string} [message] explanation of why argument is invalid\n */\n constructor(message) {\n super(1, 'commander.invalidArgument', message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n","const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n /**\n * Initialize a new command argument with the given name and description.\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @param {string} name\n * @param {string} [description]\n */\n\n constructor(name, description) {\n this.description = description || '';\n this.variadic = false;\n this.parseArg = undefined;\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.argChoices = undefined;\n\n switch (name[0]) {\n case '<': // e.g. <required>\n this.required = true;\n this._name = name.slice(1, -1);\n break;\n case '[': // e.g. [optional]\n this.required = false;\n this._name = name.slice(1, -1);\n break;\n default:\n this.required = true;\n this._name = name;\n break;\n }\n\n if (this._name.length > 3 && this._name.slice(-3) === '...') {\n this.variadic = true;\n this._name = this._name.slice(0, -3);\n }\n }\n\n /**\n * Return argument name.\n *\n * @return {string}\n */\n\n name() {\n return this._name;\n }\n\n /**\n * @package\n */\n\n _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Argument}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI command arguments into argument values.\n *\n * @param {Function} [fn]\n * @return {Argument}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Only allow argument value to be one of choices.\n *\n * @param {string[]} values\n * @return {Argument}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._concatValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Make argument required.\n *\n * @returns {Argument}\n */\n argRequired() {\n this.required = true;\n return this;\n }\n\n /**\n * Make argument optional.\n *\n * @returns {Argument}\n */\n argOptional() {\n this.required = false;\n return this;\n }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n","const { humanReadableArgName } = require('./argument.js');\n\n/**\n * TypeScript import types for JSDoc, used by Visual Studio Code IntelliSense and `npm run typescript-checkJS`\n * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types\n * @typedef { import(\"./argument.js\").Argument } Argument\n * @typedef { import(\"./command.js\").Command } Command\n * @typedef { import(\"./option.js\").Option } Option\n */\n\n// Although this is a class, methods are static in style to allow override using subclass or just functions.\nclass Help {\n constructor() {\n this.helpWidth = undefined;\n this.sortSubcommands = false;\n this.sortOptions = false;\n this.showGlobalOptions = false;\n }\n\n /**\n * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.\n *\n * @param {Command} cmd\n * @returns {Command[]}\n */\n\n visibleCommands(cmd) {\n const visibleCommands = cmd.commands.filter((cmd) => !cmd._hidden);\n const helpCommand = cmd._getHelpCommand();\n if (helpCommand && !helpCommand._hidden) {\n visibleCommands.push(helpCommand);\n }\n if (this.sortSubcommands) {\n visibleCommands.sort((a, b) => {\n // @ts-ignore: because overloaded return type\n return a.name().localeCompare(b.name());\n });\n }\n return visibleCommands;\n }\n\n /**\n * Compare options for sort.\n *\n * @param {Option} a\n * @param {Option} b\n * @returns {number}\n */\n compareOptions(a, b) {\n const getSortKey = (option) => {\n // WYSIWYG for order displayed in help. Short used for comparison if present. No special handling for negated.\n return option.short\n ? option.short.replace(/^-/, '')\n : option.long.replace(/^--/, '');\n };\n return getSortKey(a).localeCompare(getSortKey(b));\n }\n\n /**\n * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleOptions(cmd) {\n const visibleOptions = cmd.options.filter((option) => !option.hidden);\n // Built-in help option.\n const helpOption = cmd._getHelpOption();\n if (helpOption && !helpOption.hidden) {\n // Automatically hide conflicting flags. Bit dubious but a historical behaviour that is convenient for single-command programs.\n const removeShort = helpOption.short && cmd._findOption(helpOption.short);\n const removeLong = helpOption.long && cmd._findOption(helpOption.long);\n if (!removeShort && !removeLong) {\n visibleOptions.push(helpOption); // no changes needed\n } else if (helpOption.long && !removeLong) {\n visibleOptions.push(\n cmd.createOption(helpOption.long, helpOption.description),\n );\n } else if (helpOption.short && !removeShort) {\n visibleOptions.push(\n cmd.createOption(helpOption.short, helpOption.description),\n );\n }\n }\n if (this.sortOptions) {\n visibleOptions.sort(this.compareOptions);\n }\n return visibleOptions;\n }\n\n /**\n * Get an array of the visible global options. (Not including help.)\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleGlobalOptions(cmd) {\n if (!this.showGlobalOptions) return [];\n\n const globalOptions = [];\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n const visibleOptions = ancestorCmd.options.filter(\n (option) => !option.hidden,\n );\n globalOptions.push(...visibleOptions);\n }\n if (this.sortOptions) {\n globalOptions.sort(this.compareOptions);\n }\n return globalOptions;\n }\n\n /**\n * Get an array of the arguments if any have a description.\n *\n * @param {Command} cmd\n * @returns {Argument[]}\n */\n\n visibleArguments(cmd) {\n // Side effect! Apply the legacy descriptions before the arguments are displayed.\n if (cmd._argsDescription) {\n cmd.registeredArguments.forEach((argument) => {\n argument.description =\n argument.description || cmd._argsDescription[argument.name()] || '';\n });\n }\n\n // If there are any arguments with a description then return all the arguments.\n if (cmd.registeredArguments.find((argument) => argument.description)) {\n return cmd.registeredArguments;\n }\n return [];\n }\n\n /**\n * Get the command term to show in the list of subcommands.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandTerm(cmd) {\n // Legacy. Ignores custom usage string, and nested commands.\n const args = cmd.registeredArguments\n .map((arg) => humanReadableArgName(arg))\n .join(' ');\n return (\n cmd._name +\n (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') +\n (cmd.options.length ? ' [options]' : '') + // simplistic check for non-help option\n (args ? ' ' + args : '')\n );\n }\n\n /**\n * Get the option term to show in the list of options.\n *\n * @param {Option} option\n * @returns {string}\n */\n\n optionTerm(option) {\n return option.flags;\n }\n\n /**\n * Get the argument term to show in the list of arguments.\n *\n * @param {Argument} argument\n * @returns {string}\n */\n\n argumentTerm(argument) {\n return argument.name();\n }\n\n /**\n * Get the longest command term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestSubcommandTermLength(cmd, helper) {\n return helper.visibleCommands(cmd).reduce((max, command) => {\n return Math.max(max, helper.subcommandTerm(command).length);\n }, 0);\n }\n\n /**\n * Get the longest option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestOptionTermLength(cmd, helper) {\n return helper.visibleOptions(cmd).reduce((max, option) => {\n return Math.max(max, helper.optionTerm(option).length);\n }, 0);\n }\n\n /**\n * Get the longest global option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestGlobalOptionTermLength(cmd, helper) {\n return helper.visibleGlobalOptions(cmd).reduce((max, option) => {\n return Math.max(max, helper.optionTerm(option).length);\n }, 0);\n }\n\n /**\n * Get the longest argument term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestArgumentTermLength(cmd, helper) {\n return helper.visibleArguments(cmd).reduce((max, argument) => {\n return Math.max(max, helper.argumentTerm(argument).length);\n }, 0);\n }\n\n /**\n * Get the command usage to be displayed at the top of the built-in help.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandUsage(cmd) {\n // Usage\n let cmdName = cmd._name;\n if (cmd._aliases[0]) {\n cmdName = cmdName + '|' + cmd._aliases[0];\n }\n let ancestorCmdNames = '';\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n ancestorCmdNames = ancestorCmd.name() + ' ' + ancestorCmdNames;\n }\n return ancestorCmdNames + cmdName + ' ' + cmd.usage();\n }\n\n /**\n * Get the description for the command.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.description();\n }\n\n /**\n * Get the subcommand summary to show in the list of subcommands.\n * (Fallback to description for backwards compatibility.)\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.summary() || cmd.description();\n }\n\n /**\n * Get the option description to show in the list of options.\n *\n * @param {Option} option\n * @return {string}\n */\n\n optionDescription(option) {\n const extraInfo = [];\n\n if (option.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (option.defaultValue !== undefined) {\n // default for boolean and negated more for programmer than end user,\n // but show true/false for boolean option as may be for hand-rolled env or config processing.\n const showDefault =\n option.required ||\n option.optional ||\n (option.isBoolean() && typeof option.defaultValue === 'boolean');\n if (showDefault) {\n extraInfo.push(\n `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`,\n );\n }\n }\n // preset for boolean and negated are more for programmer than end user\n if (option.presetArg !== undefined && option.optional) {\n extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);\n }\n if (option.envVar !== undefined) {\n extraInfo.push(`env: ${option.envVar}`);\n }\n if (extraInfo.length > 0) {\n return `${option.description} (${extraInfo.join(', ')})`;\n }\n\n return option.description;\n }\n\n /**\n * Get the argument description to show in the list of arguments.\n *\n * @param {Argument} argument\n * @return {string}\n */\n\n argumentDescription(argument) {\n const extraInfo = [];\n if (argument.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (argument.defaultValue !== undefined) {\n extraInfo.push(\n `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n );\n }\n if (extraInfo.length > 0) {\n const extraDescripton = `(${extraInfo.join(', ')})`;\n if (argument.description) {\n return `${argument.description} ${extraDescripton}`;\n }\n return extraDescripton;\n }\n return argument.description;\n }\n\n /**\n * Generate the built-in help text.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {string}\n */\n\n formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term, description) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.wrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`Usage: ${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([\n helper.wrap(commandDescription, helpWidth, 0),\n '',\n ]);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat(['Arguments:', formatList(argumentList), '']);\n }\n\n // Options\n const optionList = helper.visibleOptions(cmd).map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat(['Options:', formatList(optionList), '']);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = helper\n .visibleGlobalOptions(cmd)\n .map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n 'Global Options:',\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat(['Commands:', formatList(commandList), '']);\n }\n\n return output.join('\\n');\n }\n\n /**\n * Calculate the pad width from the maximum term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n padWidth(cmd, helper) {\n return Math.max(\n helper.longestOptionTermLength(cmd, helper),\n helper.longestGlobalOptionTermLength(cmd, helper),\n helper.longestSubcommandTermLength(cmd, helper),\n helper.longestArgumentTermLength(cmd, helper),\n );\n }\n\n /**\n * Wrap the given string to width characters per line, with lines after the first indented.\n * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted.\n *\n * @param {string} str\n * @param {number} width\n * @param {number} indent\n * @param {number} [minColumnWidth=40]\n * @return {string}\n *\n */\n\n wrap(str, width, indent, minColumnWidth = 40) {\n // Full \\s characters, minus the linefeeds.\n const indents =\n ' \\\\f\\\\t\\\\v\\u00a0\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff';\n // Detect manually wrapped and indented strings by searching for line break followed by spaces.\n const manualIndent = new RegExp(`[\\\\n][${indents}]+`);\n if (str.match(manualIndent)) return str;\n // Do not wrap if not enough room for a wrapped column of text (as could end up with a word per line).\n const columnWidth = width - indent;\n if (columnWidth < minColumnWidth) return str;\n\n const leadingStr = str.slice(0, indent);\n const columnText = str.slice(indent).replace('\\r\\n', '\\n');\n const indentString = ' '.repeat(indent);\n const zeroWidthSpace = '\\u200B';\n const breaks = `\\\\s${zeroWidthSpace}`;\n // Match line end (so empty lines don't collapse),\n // or as much text as will fit in column, or excess text up to first break.\n const regex = new RegExp(\n `\\n|.{1,${columnWidth - 1}}([${breaks}]|$)|[^${breaks}]+?([${breaks}]|$)`,\n 'g',\n );\n const lines = columnText.match(regex) || [];\n return (\n leadingStr +\n lines\n .map((line, i) => {\n if (line === '\\n') return ''; // preserve empty lines\n return (i > 0 ? indentString : '') + line.trimEnd();\n })\n .join('\\n')\n );\n }\n}\n\nexports.Help = Help;\n","const { InvalidArgumentError } = require('./error.js');\n\nclass Option {\n /**\n * Initialize a new `Option` with the given `flags` and `description`.\n *\n * @param {string} flags\n * @param {string} [description]\n */\n\n constructor(flags, description) {\n this.flags = flags;\n this.description = description || '';\n\n this.required = flags.includes('<'); // A value must be supplied when the option is specified.\n this.optional = flags.includes('['); // A value is optional when the option is specified.\n // variadic test ignores <value,...> et al which might be used to describe custom splitting of single argument\n this.variadic = /\\w\\.\\.\\.[>\\]]$/.test(flags); // The option can take multiple values.\n this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line.\n const optionFlags = splitOptionFlags(flags);\n this.short = optionFlags.shortFlag;\n this.long = optionFlags.longFlag;\n this.negate = false;\n if (this.long) {\n this.negate = this.long.startsWith('--no-');\n }\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.presetArg = undefined;\n this.envVar = undefined;\n this.parseArg = undefined;\n this.hidden = false;\n this.argChoices = undefined;\n this.conflictsWith = [];\n this.implied = undefined;\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Option}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n * The custom processing (parseArg) is called.\n *\n * @example\n * new Option('--color').default('GREYSCALE').preset('RGB');\n * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n *\n * @param {*} arg\n * @return {Option}\n */\n\n preset(arg) {\n this.presetArg = arg;\n return this;\n }\n\n /**\n * Add option name(s) that conflict with this option.\n * An error will be displayed if conflicting options are found during parsing.\n *\n * @example\n * new Option('--rgb').conflicts('cmyk');\n * new Option('--js').conflicts(['ts', 'jsx']);\n *\n * @param {(string | string[])} names\n * @return {Option}\n */\n\n conflicts(names) {\n this.conflictsWith = this.conflictsWith.concat(names);\n return this;\n }\n\n /**\n * Specify implied option values for when this option is set and the implied options are not.\n *\n * The custom processing (parseArg) is not called on the implied values.\n *\n * @example\n * program\n * .addOption(new Option('--log', 'write logging information to file'))\n * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n *\n * @param {object} impliedOptionValues\n * @return {Option}\n */\n implies(impliedOptionValues) {\n let newImplied = impliedOptionValues;\n if (typeof impliedOptionValues === 'string') {\n // string is not documented, but easy mistake and we can do what user probably intended.\n newImplied = { [impliedOptionValues]: true };\n }\n this.implied = Object.assign(this.implied || {}, newImplied);\n return this;\n }\n\n /**\n * Set environment variable to check for option value.\n *\n * An environment variable is only used if when processed the current option value is\n * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n *\n * @param {string} name\n * @return {Option}\n */\n\n env(name) {\n this.envVar = name;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI option arguments into option values.\n *\n * @param {Function} [fn]\n * @return {Option}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Whether the option is mandatory and must have a value after parsing.\n *\n * @param {boolean} [mandatory=true]\n * @return {Option}\n */\n\n makeOptionMandatory(mandatory = true) {\n this.mandatory = !!mandatory;\n return this;\n }\n\n /**\n * Hide option in help.\n *\n * @param {boolean} [hide=true]\n * @return {Option}\n */\n\n hideHelp(hide = true) {\n this.hidden = !!hide;\n return this;\n }\n\n /**\n * @package\n */\n\n _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\n }\n\n /**\n * Only allow option value to be one of choices.\n *\n * @param {string[]} values\n * @return {Option}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._concatValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Return option name.\n *\n * @return {string}\n */\n\n name() {\n if (this.long) {\n return this.long.replace(/^--/, '');\n }\n return this.short.replace(/^-/, '');\n }\n\n /**\n * Return option name, in a camelcase format that can be used\n * as a object attribute key.\n *\n * @return {string}\n */\n\n attributeName() {\n return camelcase(this.name().replace(/^no-/, ''));\n }\n\n /**\n * Check if `arg` matches the short or long flag.\n *\n * @param {string} arg\n * @return {boolean}\n * @package\n */\n\n is(arg) {\n return this.short === arg || this.long === arg;\n }\n\n /**\n * Return whether a boolean option.\n *\n * Options are one of boolean, negated, required argument, or optional argument.\n *\n * @return {boolean}\n * @package\n */\n\n isBoolean() {\n return !this.required && !this.optional && !this.negate;\n }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n /**\n * @param {Option[]} options\n */\n constructor(options) {\n this.positiveOptions = new Map();\n this.negativeOptions = new Map();\n this.dualOptions = new Set();\n options.forEach((option) => {\n if (option.negate) {\n this.negativeOptions.set(option.attributeName(), option);\n } else {\n this.positiveOptions.set(option.attributeName(), option);\n }\n });\n this.negativeOptions.forEach((value, key) => {\n if (this.positiveOptions.has(key)) {\n this.dualOptions.add(key);\n }\n });\n }\n\n /**\n * Did the value come from the option, and not from possible matching dual option?\n *\n * @param {*} value\n * @param {Option} option\n * @returns {boolean}\n */\n valueFromOption(value, option) {\n const optionKey = option.attributeName();\n if (!this.dualOptions.has(optionKey)) return true;\n\n // Use the value to deduce if (probably) came from the option.\n const preset = this.negativeOptions.get(optionKey).presetArg;\n const negativeValue = preset !== undefined ? preset : false;\n return option.negate === (negativeValue === value);\n }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n return str.split('-').reduce((str, word) => {\n return str + word[0].toUpperCase() + word.slice(1);\n });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n let shortFlag;\n let longFlag;\n // Use original very loose parsing to maintain backwards compatibility for now,\n // which allowed for example unintended `-sw, --short-word` [sic].\n const flagParts = flags.split(/[ |,]+/);\n if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1]))\n shortFlag = flagParts.shift();\n longFlag = flagParts.shift();\n // Add support for lone short flag without significantly changing parsing!\n if (!shortFlag && /^-[^-]$/.test(longFlag)) {\n shortFlag = longFlag;\n longFlag = undefined;\n }\n return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n","const maxDistance = 3;\n\nfunction editDistance(a, b) {\n // https://en.wikipedia.org/wiki/Damerau–Levenshtein_distance\n // Calculating optimal string alignment distance, no substring is edited more than once.\n // (Simple implementation.)\n\n // Quick early exit, return worst case.\n if (Math.abs(a.length - b.length) > maxDistance)\n return Math.max(a.length, b.length);\n\n // distance between prefix substrings of a and b\n const d = [];\n\n // pure deletions turn a into empty string\n for (let i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n // pure insertions turn empty string into b\n for (let j = 0; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n // fill matrix\n for (let j = 1; j <= b.length; j++) {\n for (let i = 1; i <= a.length; i++) {\n let cost = 1;\n if (a[i - 1] === b[j - 1]) {\n cost = 0;\n } else {\n cost = 1;\n }\n d[i][j] = Math.min(\n d[i - 1][j] + 1, // deletion\n d[i][j - 1] + 1, // insertion\n d[i - 1][j - 1] + cost, // substitution\n );\n // transposition\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n }\n }\n }\n\n return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n if (!candidates || candidates.length === 0) return '';\n // remove possible duplicates\n candidates = Array.from(new Set(candidates));\n\n const searchingOptions = word.startsWith('--');\n if (searchingOptions) {\n word = word.slice(2);\n candidates = candidates.map((candidate) => candidate.slice(2));\n }\n\n let similar = [];\n let bestDistance = maxDistance;\n const minSimilarity = 0.4;\n candidates.forEach((candidate) => {\n if (candidate.length <= 1) return; // no one character guesses\n\n const distance = editDistance(word, candidate);\n const length = Math.max(word.length, candidate.length);\n const similarity = (length - distance) / length;\n if (similarity > minSimilarity) {\n if (distance < bestDistance) {\n // better edit distance, throw away previous worse matches\n bestDistance = distance;\n similar = [candidate];\n } else if (distance === bestDistance) {\n similar.push(candidate);\n }\n }\n });\n\n similar.sort((a, b) => a.localeCompare(b));\n if (searchingOptions) {\n similar = similar.map((candidate) => `--${candidate}`);\n }\n\n if (similar.length > 1) {\n return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n }\n if (similar.length === 1) {\n return `\\n(Did you mean ${similar[0]}?)`;\n }\n return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n","const EventEmitter = require('node:events').EventEmitter;\nconst childProcess = require('node:child_process');\nconst path = require('node:path');\nconst fs = require('node:fs');\nconst process = require('node:process');\n\nconst { Argument, humanReadableArgName } = require('./argument.js');\nconst { CommanderError } = require('./error.js');\nconst { Help } = require('./help.js');\nconst { Option, DualOptions } = require('./option.js');\nconst { suggestSimilar } = require('./suggestSimilar');\n\nclass Command extends EventEmitter {\n /**\n * Initialize a new `Command`.\n *\n * @param {string} [name]\n */\n\n constructor(name) {\n super();\n /** @type {Command[]} */\n this.commands = [];\n /** @type {Option[]} */\n this.options = [];\n this.parent = null;\n this._allowUnknownOption = false;\n this._allowExcessArguments = true;\n /** @type {Argument[]} */\n this.registeredArguments = [];\n this._args = this.registeredArguments; // deprecated old name\n /** @type {string[]} */\n this.args = []; // cli args with options removed\n this.rawArgs = [];\n this.processedArgs = []; // like .args but after custom processing and collecting variadic\n this._scriptPath = null;\n this._name = name || '';\n this._optionValues = {};\n this._optionValueSources = {}; // default, env, cli etc\n this._storeOptionsAsProperties = false;\n this._actionHandler = null;\n this._executableHandler = false;\n this._executableFile = null; // custom name for executable\n this._executableDir = null; // custom search directory for subcommands\n this._defaultCommandName = null;\n this._exitCallback = null;\n this._aliases = [];\n this._combineFlagAndOptionalValue = true;\n this._description = '';\n this._summary = '';\n this._argsDescription = undefined; // legacy\n this._enablePositionalOptions = false;\n this._passThroughOptions = false;\n this._lifeCycleHooks = {}; // a hash of arrays\n /** @type {(boolean | string)} */\n this._showHelpAfterError = false;\n this._showSuggestionAfterError = true;\n\n // see .configureOutput() for docs\n this._outputConfiguration = {\n writeOut: (str) => process.stdout.write(str),\n writeErr: (str) => process.stderr.write(str),\n getOutHelpWidth: () =>\n process.stdout.isTTY ? process.stdout.columns : undefined,\n getErrHelpWidth: () =>\n process.stderr.isTTY ? process.stderr.columns : undefined,\n outputError: (str, write) => write(str),\n };\n\n this._hidden = false;\n /** @type {(Option | null | undefined)} */\n this._helpOption = undefined; // Lazy created on demand. May be null if help option is disabled.\n this._addImplicitHelpCommand = undefined; // undecided whether true or false yet, not inherited\n /** @type {Command} */\n this._helpCommand = undefined; // lazy initialised, inherited\n this._helpConfiguration = {};\n }\n\n /**\n * Copy settings that are useful to have in common across root command and subcommands.\n *\n * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n *\n * @param {Command} sourceCommand\n * @return {Command} `this` command for chaining\n */\n copyInheritedSettings(sourceCommand) {\n this._outputConfiguration = sourceCommand._outputConfiguration;\n this._helpOption = sourceCommand._helpOption;\n this._helpCommand = sourceCommand._helpCommand;\n this._helpConfiguration = sourceCommand._helpConfiguration;\n this._exitCallback = sourceCommand._exitCallback;\n this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n this._combineFlagAndOptionalValue =\n sourceCommand._combineFlagAndOptionalValue;\n this._allowExcessArguments = sourceCommand._allowExcessArguments;\n this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n this._showHelpAfterError = sourceCommand._showHelpAfterError;\n this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n return this;\n }\n\n /**\n * @returns {Command[]}\n * @private\n */\n\n _getCommandAndAncestors() {\n const result = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n for (let command = this; command; command = command.parent) {\n result.push(command);\n }\n return result;\n }\n\n /**\n * Define a command.\n *\n * There are two styles of command: pay attention to where to put the description.\n *\n * @example\n * // Command implemented using action handler (description is supplied separately to `.command`)\n * program\n * .command('clone <source> [destination]')\n * .description('clone a repository into a newly created directory')\n * .action((source, destination) => {\n * console.log('clone command called');\n * });\n *\n * // Command implemented using separate executable file (description is second parameter to `.command`)\n * program\n * .command('start <service>', 'start named service')\n * .command('stop [service]', 'stop named service, or all if no name supplied');\n *\n * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n * @param {object} [execOpts] - configuration options (for executable)\n * @return {Command} returns new command for action handler, or `this` for executable command\n */\n\n command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n let desc = actionOptsOrExecDesc;\n let opts = execOpts;\n if (typeof desc === 'object' && desc !== null) {\n opts = desc;\n desc = null;\n }\n opts = opts || {};\n const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n const cmd = this.createCommand(name);\n if (desc) {\n cmd.description(desc);\n cmd._executableHandler = true;\n }\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n if (args) cmd.arguments(args);\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd.copyInheritedSettings(this);\n\n if (desc) return this;\n return cmd;\n }\n\n /**\n * Factory routine to create a new unattached command.\n *\n * See .command() for creating an attached subcommand, which uses this routine to\n * create the command. You can override createCommand to customise subcommands.\n *\n * @param {string} [name]\n * @return {Command} new command\n */\n\n createCommand(name) {\n return new Command(name);\n }\n\n /**\n * You can customise the help with a subclass of Help by overriding createHelp,\n * or by overriding Help properties using configureHelp().\n *\n * @return {Help}\n */\n\n createHelp() {\n return Object.assign(new Help(), this.configureHelp());\n }\n\n /**\n * You can customise the help by overriding Help properties using configureHelp(),\n * or with a subclass of Help by overriding createHelp().\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureHelp(configuration) {\n if (configuration === undefined) return this._helpConfiguration;\n\n this._helpConfiguration = configuration;\n return this;\n }\n\n /**\n * The default output goes to stdout and stderr. You can customise this for special\n * applications. You can also customise the display of errors by overriding outputError.\n *\n * The configuration properties are all functions:\n *\n * // functions to change where being written, stdout and stderr\n * writeOut(str)\n * writeErr(str)\n * // matching functions to specify width for wrapping help\n * getOutHelpWidth()\n * getErrHelpWidth()\n * // functions based on what is being written out\n * outputError(str, write) // used for displaying errors, and not used for displaying help\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureOutput(configuration) {\n if (configuration === undefined) return this._outputConfiguration;\n\n Object.assign(this._outputConfiguration, configuration);\n return this;\n }\n\n /**\n * Display the help or a custom message after an error occurs.\n *\n * @param {(boolean|string)} [displayHelp]\n * @return {Command} `this` command for chaining\n */\n showHelpAfterError(displayHelp = true) {\n if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n this._showHelpAfterError = displayHelp;\n return this;\n }\n\n /**\n * Display suggestion of similar commands for unknown commands, or options for unknown options.\n *\n * @param {boolean} [displaySuggestion]\n * @return {Command} `this` command for chaining\n */\n showSuggestionAfterError(displaySuggestion = true) {\n this._showSuggestionAfterError = !!displaySuggestion;\n return this;\n }\n\n /**\n * Add a prepared subcommand.\n *\n * See .command() for creating an attached subcommand which inherits settings from its parent.\n *\n * @param {Command} cmd - new subcommand\n * @param {object} [opts] - configuration options\n * @return {Command} `this` command for chaining\n */\n\n addCommand(cmd, opts) {\n if (!cmd._name) {\n throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n }\n\n opts = opts || {};\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd._checkForBrokenPassThrough();\n\n return this;\n }\n\n /**\n * Factory routine to create a new unattached argument.\n *\n * See .argument() for creating an attached argument, which uses this routine to\n * create the argument. You can override createArgument to return a custom argument.\n *\n * @param {string} name\n * @param {string} [description]\n * @return {Argument} new argument\n */\n\n createArgument(name, description) {\n return new Argument(name, description);\n }\n\n /**\n * Define argument syntax for command.\n *\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @example\n * program.argument('<input-file>');\n * program.argument('[output-file]');\n *\n * @param {string} name\n * @param {string} [description]\n * @param {(Function|*)} [fn] - custom argument processing function\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n argument(name, description, fn, defaultValue) {\n const argument = this.createArgument(name, description);\n if (typeof fn === 'function') {\n argument.default(defaultValue).argParser(fn);\n } else {\n argument.default(fn);\n }\n this.addArgument(argument);\n return this;\n }\n\n /**\n * Define argument syntax for command, adding multiple at once (without descriptions).\n *\n * See also .argument().\n *\n * @example\n * program.arguments('<cmd> [env]');\n *\n * @param {string} names\n * @return {Command} `this` command for chaining\n */\n\n arguments(names) {\n names\n .trim()\n .split(/ +/)\n .forEach((detail) => {\n this.argument(detail);\n });\n return this;\n }\n\n /**\n * Define argument syntax for command, adding a prepared argument.\n *\n * @param {Argument} argument\n * @return {Command} `this` command for chaining\n */\n addArgument(argument) {\n const previousArgument = this.registeredArguments.slice(-1)[0];\n if (previousArgument && previousArgument.variadic) {\n throw new Error(\n `only the last argument can be variadic '${previousArgument.name()}'`,\n );\n }\n if (\n argument.required &&\n argument.defaultValue !== undefined &&\n argument.parseArg === undefined\n ) {\n throw new Error(\n `a default value for a required argument is never used: '${argument.name()}'`,\n );\n }\n this.registeredArguments.push(argument);\n return this;\n }\n\n /**\n * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n *\n * @example\n * program.helpCommand('help [cmd]');\n * program.helpCommand('help [cmd]', 'show help');\n * program.helpCommand(false); // suppress default help command\n * program.helpCommand(true); // add help command even if no subcommands\n *\n * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n * @param {string} [description] - custom description\n * @return {Command} `this` command for chaining\n */\n\n helpCommand(enableOrNameAndArgs, description) {\n if (typeof enableOrNameAndArgs === 'boolean') {\n this._addImplicitHelpCommand = enableOrNameAndArgs;\n return this;\n }\n\n enableOrNameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n const [, helpName, helpArgs] = enableOrNameAndArgs.match(/([^ ]+) *(.*)/);\n const helpDescription = description ?? 'display help for command';\n\n const helpCommand = this.createCommand(helpName);\n helpCommand.helpOption(false);\n if (helpArgs) helpCommand.arguments(helpArgs);\n if (helpDescription) helpCommand.description(helpDescription);\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n\n return this;\n }\n\n /**\n * Add prepared custom help command.\n *\n * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n * @return {Command} `this` command for chaining\n */\n addHelpCommand(helpCommand, deprecatedDescription) {\n // If not passed an object, call through to helpCommand for backwards compatibility,\n // as addHelpCommand was originally used like helpCommand is now.\n if (typeof helpCommand !== 'object') {\n this.helpCommand(helpCommand, deprecatedDescription);\n return this;\n }\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n return this;\n }\n\n /**\n * Lazy create help command.\n *\n * @return {(Command|null)}\n * @package\n */\n _getHelpCommand() {\n const hasImplicitHelpCommand =\n this._addImplicitHelpCommand ??\n (this.commands.length &&\n !this._actionHandler &&\n !this._findCommand('help'));\n\n if (hasImplicitHelpCommand) {\n if (this._helpCommand === undefined) {\n this.helpCommand(undefined, undefined); // use default name and description\n }\n return this._helpCommand;\n }\n return null;\n }\n\n /**\n * Add hook for life cycle event.\n *\n * @param {string} event\n * @param {Function} listener\n * @return {Command} `this` command for chaining\n */\n\n hook(event, listener) {\n const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n if (!allowedValues.includes(event)) {\n throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n if (this._lifeCycleHooks[event]) {\n this._lifeCycleHooks[event].push(listener);\n } else {\n this._lifeCycleHooks[event] = [listener];\n }\n return this;\n }\n\n /**\n * Register callback to use as replacement for calling process.exit.\n *\n * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n * @return {Command} `this` command for chaining\n */\n\n exitOverride(fn) {\n if (fn) {\n this._exitCallback = fn;\n } else {\n this._exitCallback = (err) => {\n if (err.code !== 'commander.executeSubCommandAsync') {\n throw err;\n } else {\n // Async callback from spawn events, not useful to throw.\n }\n };\n }\n return this;\n }\n\n /**\n * Call process.exit, and _exitCallback if defined.\n *\n * @param {number} exitCode exit code for using with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n * @return never\n * @private\n */\n\n _exit(exitCode, code, message) {\n if (this._exitCallback) {\n this._exitCallback(new CommanderError(exitCode, code, message));\n // Expecting this line is not reached.\n }\n process.exit(exitCode);\n }\n\n /**\n * Register callback `fn` for the command.\n *\n * @example\n * program\n * .command('serve')\n * .description('start service')\n * .action(function() {\n * // do work here\n * });\n *\n * @param {Function} fn\n * @return {Command} `this` command for chaining\n */\n\n action(fn) {\n const listener = (args) => {\n // The .action callback takes an extra parameter which is the command or options.\n const expectedArgsCount = this.registeredArguments.length;\n const actionArgs = args.slice(0, expectedArgsCount);\n if (this._storeOptionsAsProperties) {\n actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n } else {\n actionArgs[expectedArgsCount] = this.opts();\n }\n actionArgs.push(this);\n\n return fn.apply(this, actionArgs);\n };\n this._actionHandler = listener;\n return this;\n }\n\n /**\n * Factory routine to create a new unattached option.\n *\n * See .option() for creating an attached option, which uses this routine to\n * create the option. You can override createOption to return a custom option.\n *\n * @param {string} flags\n * @param {string} [description]\n * @return {Option} new option\n */\n\n createOption(flags, description) {\n return new Option(flags, description);\n }\n\n /**\n * Wrap parseArgs to catch 'commander.invalidArgument'.\n *\n * @param {(Option | Argument)} target\n * @param {string} value\n * @param {*} previous\n * @param {string} invalidArgumentMessage\n * @private\n */\n\n _callParseArg(target, value, previous, invalidArgumentMessage) {\n try {\n return target.parseArg(value, previous);\n } catch (err) {\n if (err.code === 'commander.invalidArgument') {\n const message = `${invalidArgumentMessage} ${err.message}`;\n this.error(message, { exitCode: err.exitCode, code: err.code });\n }\n throw err;\n }\n }\n\n /**\n * Check for option flag conflicts.\n * Register option if no conflicts found, or throw on conflict.\n *\n * @param {Option} option\n * @private\n */\n\n _registerOption(option) {\n const matchingOption =\n (option.short && this._findOption(option.short)) ||\n (option.long && this._findOption(option.long));\n if (matchingOption) {\n const matchingFlag =\n option.long && this._findOption(option.long)\n ? option.long\n : option.short;\n throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n- already used by option '${matchingOption.flags}'`);\n }\n\n this.options.push(option);\n }\n\n /**\n * Check for command name and alias conflicts with existing commands.\n * Register command if no conflicts found, or throw on conflict.\n *\n * @param {Command} command\n * @private\n */\n\n _registerCommand(command) {\n const knownBy = (cmd) => {\n return [cmd.name()].concat(cmd.aliases());\n };\n\n const alreadyUsed = knownBy(command).find((name) =>\n this._findCommand(name),\n );\n if (alreadyUsed) {\n const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n const newCmd = knownBy(command).join('|');\n throw new Error(\n `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n );\n }\n\n this.commands.push(command);\n }\n\n /**\n * Add an option.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addOption(option) {\n this._registerOption(option);\n\n const oname = option.name();\n const name = option.attributeName();\n\n // store default value\n if (option.negate) {\n // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n const positiveLongFlag = option.long.replace(/^--no-/, '--');\n if (!this._findOption(positiveLongFlag)) {\n this.setOptionValueWithSource(\n name,\n option.defaultValue === undefined ? true : option.defaultValue,\n 'default',\n );\n }\n } else if (option.defaultValue !== undefined) {\n this.setOptionValueWithSource(name, option.defaultValue, 'default');\n }\n\n // handler for cli and env supplied values\n const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n // val is null for optional option used without an optional-argument.\n // val is undefined for boolean and negated option.\n if (val == null && option.presetArg !== undefined) {\n val = option.presetArg;\n }\n\n // custom processing\n const oldValue = this.getOptionValue(name);\n if (val !== null && option.parseArg) {\n val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n } else if (val !== null && option.variadic) {\n val = option._concatValue(val, oldValue);\n }\n\n // Fill-in appropriate missing values. Long winded but easy to follow.\n if (val == null) {\n if (option.negate) {\n val = false;\n } else if (option.isBoolean() || option.optional) {\n val = true;\n } else {\n val = ''; // not normal, parseArg might have failed or be a mock function for testing\n }\n }\n this.setOptionValueWithSource(name, val, valueSource);\n };\n\n this.on('option:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'cli');\n });\n\n if (option.envVar) {\n this.on('optionEnv:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'env');\n });\n }\n\n return this;\n }\n\n /**\n * Internal implementation shared by .option() and .requiredOption()\n *\n * @return {Command} `this` command for chaining\n * @private\n */\n _optionEx(config, flags, description, fn, defaultValue) {\n if (typeof flags === 'object' && flags instanceof Option) {\n throw new Error(\n 'To add an Option object use addOption() instead of option() or requiredOption()',\n );\n }\n const option = this.createOption(flags, description);\n option.makeOptionMandatory(!!config.mandatory);\n if (typeof fn === 'function') {\n option.default(defaultValue).argParser(fn);\n } else if (fn instanceof RegExp) {\n // deprecated\n const regex = fn;\n fn = (val, def) => {\n const m = regex.exec(val);\n return m ? m[0] : def;\n };\n option.default(defaultValue).argParser(fn);\n } else {\n option.default(fn);\n }\n\n return this.addOption(option);\n }\n\n /**\n * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n *\n * See the README for more details, and see also addOption() and requiredOption().\n *\n * @example\n * program\n * .option('-p, --pepper', 'add pepper')\n * .option('-p, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n * .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n option(flags, description, parseArg, defaultValue) {\n return this._optionEx({}, flags, description, parseArg, defaultValue);\n }\n\n /**\n * Add a required option which must have a value after parsing. This usually means\n * the option must be specified on the command line. (Otherwise the same as .option().)\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n requiredOption(flags, description, parseArg, defaultValue) {\n return this._optionEx(\n { mandatory: true },\n flags,\n description,\n parseArg,\n defaultValue,\n );\n }\n\n /**\n * Alter parsing of short flags with optional values.\n *\n * @example\n * // for `.option('-f,--flag [value]'):\n * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour\n * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n *\n * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n * @return {Command} `this` command for chaining\n */\n combineFlagAndOptionalValue(combine = true) {\n this._combineFlagAndOptionalValue = !!combine;\n return this;\n }\n\n /**\n * Allow unknown options on the command line.\n *\n * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n * @return {Command} `this` command for chaining\n */\n allowUnknownOption(allowUnknown = true) {\n this._allowUnknownOption = !!allowUnknown;\n return this;\n }\n\n /**\n * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n *\n * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n * @return {Command} `this` command for chaining\n */\n allowExcessArguments(allowExcess = true) {\n this._allowExcessArguments = !!allowExcess;\n return this;\n }\n\n /**\n * Enable positional options. Positional means global options are specified before subcommands which lets\n * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n * The default behaviour is non-positional and global options may appear anywhere on the command line.\n *\n * @param {boolean} [positional]\n * @return {Command} `this` command for chaining\n */\n enablePositionalOptions(positional = true) {\n this._enablePositionalOptions = !!positional;\n return this;\n }\n\n /**\n * Pass through options that come after command-arguments rather than treat them as command-options,\n * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n * positional options to have been enabled on the program (parent commands).\n * The default behaviour is non-positional and options may appear before or after command-arguments.\n *\n * @param {boolean} [passThrough] for unknown options.\n * @return {Command} `this` command for chaining\n */\n passThroughOptions(passThrough = true) {\n this._passThroughOptions = !!passThrough;\n this._checkForBrokenPassThrough();\n return this;\n }\n\n /**\n * @private\n */\n\n _checkForBrokenPassThrough() {\n if (\n this.parent &&\n this._passThroughOptions &&\n !this.parent._enablePositionalOptions\n ) {\n throw new Error(\n `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n );\n }\n }\n\n /**\n * Whether to store option values as properties on command object,\n * or store separately (specify false). In both cases the option values can be accessed using .opts().\n *\n * @param {boolean} [storeAsProperties=true]\n * @return {Command} `this` command for chaining\n */\n\n storeOptionsAsProperties(storeAsProperties = true) {\n if (this.options.length) {\n throw new Error('call .storeOptionsAsProperties() before adding options');\n }\n if (Object.keys(this._optionValues).length) {\n throw new Error(\n 'call .storeOptionsAsProperties() before setting option values',\n );\n }\n this._storeOptionsAsProperties = !!storeAsProperties;\n return this;\n }\n\n /**\n * Retrieve option value.\n *\n * @param {string} key\n * @return {object} value\n */\n\n getOptionValue(key) {\n if (this._storeOptionsAsProperties) {\n return this[key];\n }\n return this._optionValues[key];\n }\n\n /**\n * Store option value.\n *\n * @param {string} key\n * @param {object} value\n * @return {Command} `this` command for chaining\n */\n\n setOptionValue(key, value) {\n return this.setOptionValueWithSource(key, value, undefined);\n }\n\n /**\n * Store option value and where the value came from.\n *\n * @param {string} key\n * @param {object} value\n * @param {string} source - expected values are default/config/env/cli/implied\n * @return {Command} `this` command for chaining\n */\n\n setOptionValueWithSource(key, value, source) {\n if (this._storeOptionsAsProperties) {\n this[key] = value;\n } else {\n this._optionValues[key] = value;\n }\n this._optionValueSources[key] = source;\n return this;\n }\n\n /**\n * Get source of option value.\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSource(key) {\n return this._optionValueSources[key];\n }\n\n /**\n * Get source of option value. See also .optsWithGlobals().\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSourceWithGlobals(key) {\n // global overwrites local, like optsWithGlobals\n let source;\n this._getCommandAndAncestors().forEach((cmd) => {\n if (cmd.getOptionValueSource(key) !== undefined) {\n source = cmd.getOptionValueSource(key);\n }\n });\n return source;\n }\n\n /**\n * Get user arguments from implied or explicit arguments.\n * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n *\n * @private\n */\n\n _prepareUserArgs(argv, parseOptions) {\n if (argv !== undefined && !Array.isArray(argv)) {\n throw new Error('first parameter to parse must be array or undefined');\n }\n parseOptions = parseOptions || {};\n\n // auto-detect argument conventions if nothing supplied\n if (argv === undefined && parseOptions.from === undefined) {\n if (process.versions?.electron) {\n parseOptions.from = 'electron';\n }\n // check node specific options for scenarios where user CLI args follow executable without scriptname\n const execArgv = process.execArgv ?? [];\n if (\n execArgv.includes('-e') ||\n execArgv.includes('--eval') ||\n execArgv.includes('-p') ||\n execArgv.includes('--print')\n ) {\n parseOptions.from = 'eval'; // internal usage, not documented\n }\n }\n\n // default to using process.argv\n if (argv === undefined) {\n argv = process.argv;\n }\n this.rawArgs = argv.slice();\n\n // extract the user args and scriptPath\n let userArgs;\n switch (parseOptions.from) {\n case undefined:\n case 'node':\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n break;\n case 'electron':\n // @ts-ignore: because defaultApp is an unknown property\n if (process.defaultApp) {\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n } else {\n userArgs = argv.slice(1);\n }\n break;\n case 'user':\n userArgs = argv.slice(0);\n break;\n case 'eval':\n userArgs = argv.slice(1);\n break;\n default:\n throw new Error(\n `unexpected parse option { from: '${parseOptions.from}' }`,\n );\n }\n\n // Find default name for program from arguments.\n if (!this._name && this._scriptPath)\n this.nameFromFilename(this._scriptPath);\n this._name = this._name || 'program';\n\n return userArgs;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Use parseAsync instead of parse if any of your action handlers are async.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * program.parse(); // parse process.argv and auto-detect electron and special node flags\n * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv] - optional, defaults to process.argv\n * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n * @return {Command} `this` command for chaining\n */\n\n parse(argv, parseOptions) {\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv]\n * @param {object} [parseOptions]\n * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n * @return {Promise}\n */\n\n async parseAsync(argv, parseOptions) {\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n await this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Execute a sub-command executable.\n *\n * @private\n */\n\n _executeSubCommand(subcommand, args) {\n args = args.slice();\n let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n function findFile(baseDir, baseName) {\n // Look for specified file\n const localBin = path.resolve(baseDir, baseName);\n if (fs.existsSync(localBin)) return localBin;\n\n // Stop looking if candidate already has an expected extension.\n if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n // Try all the extensions.\n const foundExt = sourceExt.find((ext) =>\n fs.existsSync(`${localBin}${ext}`),\n );\n if (foundExt) return `${localBin}${foundExt}`;\n\n return undefined;\n }\n\n // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // executableFile and executableDir might be full path, or just a name\n let executableFile =\n subcommand._executableFile || `${this._name}-${subcommand._name}`;\n let executableDir = this._executableDir || '';\n if (this._scriptPath) {\n let resolvedScriptPath; // resolve possible symlink for installed npm binary\n try {\n resolvedScriptPath = fs.realpathSync(this._scriptPath);\n } catch (err) {\n resolvedScriptPath = this._scriptPath;\n }\n executableDir = path.resolve(\n path.dirname(resolvedScriptPath),\n executableDir,\n );\n }\n\n // Look for a local file in preference to a command in PATH.\n if (executableDir) {\n let localFile = findFile(executableDir, executableFile);\n\n // Legacy search using prefix of script name instead of command name\n if (!localFile && !subcommand._executableFile && this._scriptPath) {\n const legacyName = path.basename(\n this._scriptPath,\n path.extname(this._scriptPath),\n );\n if (legacyName !== this._name) {\n localFile = findFile(\n executableDir,\n `${legacyName}-${subcommand._name}`,\n );\n }\n }\n executableFile = localFile || executableFile;\n }\n\n launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n let proc;\n if (process.platform !== 'win32') {\n if (launchWithNode) {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n } else {\n proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n }\n } else {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n }\n\n if (!proc.killed) {\n // testing mainly to avoid leak warnings during unit tests with mocked spawn\n const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n signals.forEach((signal) => {\n process.on(signal, () => {\n if (proc.killed === false && proc.exitCode === null) {\n // @ts-ignore because signals not typed to known strings\n proc.kill(signal);\n }\n });\n });\n }\n\n // By default terminate process when spawned process terminates.\n const exitCallback = this._exitCallback;\n proc.on('close', (code) => {\n code = code ?? 1; // code is null if spawned process terminated due to a signal\n if (!exitCallback) {\n process.exit(code);\n } else {\n exitCallback(\n new CommanderError(\n code,\n 'commander.executeSubCommandAsync',\n '(close)',\n ),\n );\n }\n });\n proc.on('error', (err) => {\n // @ts-ignore: because err.code is an unknown property\n if (err.code === 'ENOENT') {\n const executableDirMessage = executableDir\n ? `searched for local subcommand relative to directory '${executableDir}'`\n : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n const executableMissing = `'${executableFile}' does not exist\n - if '${subcommand._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n throw new Error(executableMissing);\n // @ts-ignore: because err.code is an unknown property\n } else if (err.code === 'EACCES') {\n throw new Error(`'${executableFile}' not executable`);\n }\n if (!exitCallback) {\n process.exit(1);\n } else {\n const wrappedError = new CommanderError(\n 1,\n 'commander.executeSubCommandAsync',\n '(error)',\n );\n wrappedError.nestedError = err;\n exitCallback(wrappedError);\n }\n });\n\n // Store the reference to the child process\n this.runningCommand = proc;\n }\n\n /**\n * @private\n */\n\n _dispatchSubcommand(commandName, operands, unknown) {\n const subCommand = this._findCommand(commandName);\n if (!subCommand) this.help({ error: true });\n\n let promiseChain;\n promiseChain = this._chainOrCallSubCommandHook(\n promiseChain,\n subCommand,\n 'preSubcommand',\n );\n promiseChain = this._chainOrCall(promiseChain, () => {\n if (subCommand._executableHandler) {\n this._executeSubCommand(subCommand, operands.concat(unknown));\n } else {\n return subCommand._parseCommand(operands, unknown);\n }\n });\n return promiseChain;\n }\n\n /**\n * Invoke help directly if possible, or dispatch if necessary.\n * e.g. help foo\n *\n * @private\n */\n\n _dispatchHelpCommand(subcommandName) {\n if (!subcommandName) {\n this.help();\n }\n const subCommand = this._findCommand(subcommandName);\n if (subCommand && !subCommand._executableHandler) {\n subCommand.help();\n }\n\n // Fallback to parsing the help flag to invoke the help.\n return this._dispatchSubcommand(\n subcommandName,\n [],\n [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n );\n }\n\n /**\n * Check this.args against expected this.registeredArguments.\n *\n * @private\n */\n\n _checkNumberOfArguments() {\n // too few\n this.registeredArguments.forEach((arg, i) => {\n if (arg.required && this.args[i] == null) {\n this.missingArgument(arg.name());\n }\n });\n // too many\n if (\n this.registeredArguments.length > 0 &&\n this.registeredArguments[this.registeredArguments.length - 1].variadic\n ) {\n return;\n }\n if (this.args.length > this.registeredArguments.length) {\n this._excessArguments(this.args);\n }\n }\n\n /**\n * Process this.args using this.registeredArguments and save as this.processedArgs!\n *\n * @private\n */\n\n _processArguments() {\n const myParseArg = (argument, value, previous) => {\n // Extra processing for nice error message on parsing failure.\n let parsedValue = value;\n if (value !== null && argument.parseArg) {\n const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n parsedValue = this._callParseArg(\n argument,\n value,\n previous,\n invalidValueMessage,\n );\n }\n return parsedValue;\n };\n\n this._checkNumberOfArguments();\n\n const processedArgs = [];\n this.registeredArguments.forEach((declaredArg, index) => {\n let value = declaredArg.defaultValue;\n if (declaredArg.variadic) {\n // Collect together remaining arguments for passing together as an array.\n if (index < this.args.length) {\n value = this.args.slice(index);\n if (declaredArg.parseArg) {\n value = value.reduce((processed, v) => {\n return myParseArg(declaredArg, v, processed);\n }, declaredArg.defaultValue);\n }\n } else if (value === undefined) {\n value = [];\n }\n } else if (index < this.args.length) {\n value = this.args[index];\n if (declaredArg.parseArg) {\n value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n }\n }\n processedArgs[index] = value;\n });\n this.processedArgs = processedArgs;\n }\n\n /**\n * Once we have a promise we chain, but call synchronously until then.\n *\n * @param {(Promise|undefined)} promise\n * @param {Function} fn\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCall(promise, fn) {\n // thenable\n if (promise && promise.then && typeof promise.then === 'function') {\n // already have a promise, chain callback\n return promise.then(() => fn());\n }\n // callback might return a promise\n return fn();\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallHooks(promise, event) {\n let result = promise;\n const hooks = [];\n this._getCommandAndAncestors()\n .reverse()\n .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n .forEach((hookedCommand) => {\n hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n hooks.push({ hookedCommand, callback });\n });\n });\n if (event === 'postAction') {\n hooks.reverse();\n }\n\n hooks.forEach((hookDetail) => {\n result = this._chainOrCall(result, () => {\n return hookDetail.callback(hookDetail.hookedCommand, this);\n });\n });\n return result;\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {Command} subCommand\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallSubCommandHook(promise, subCommand, event) {\n let result = promise;\n if (this._lifeCycleHooks[event] !== undefined) {\n this._lifeCycleHooks[event].forEach((hook) => {\n result = this._chainOrCall(result, () => {\n return hook(this, subCommand);\n });\n });\n }\n return result;\n }\n\n /**\n * Process arguments in context of this command.\n * Returns action result, in case it is a promise.\n *\n * @private\n */\n\n _parseCommand(operands, unknown) {\n const parsed = this.parseOptions(unknown);\n this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n this._parseOptionsImplied();\n operands = operands.concat(parsed.operands);\n unknown = parsed.unknown;\n this.args = operands.concat(unknown);\n\n if (operands && this._findCommand(operands[0])) {\n return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n }\n if (\n this._getHelpCommand() &&\n operands[0] === this._getHelpCommand().name()\n ) {\n return this._dispatchHelpCommand(operands[1]);\n }\n if (this._defaultCommandName) {\n this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n return this._dispatchSubcommand(\n this._defaultCommandName,\n operands,\n unknown,\n );\n }\n if (\n this.commands.length &&\n this.args.length === 0 &&\n !this._actionHandler &&\n !this._defaultCommandName\n ) {\n // probably missing subcommand and no handler, user needs help (and exit)\n this.help({ error: true });\n }\n\n this._outputHelpIfRequested(parsed.unknown);\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n const checkForUnknownOptions = () => {\n if (parsed.unknown.length > 0) {\n this.unknownOption(parsed.unknown[0]);\n }\n };\n\n const commandEvent = `command:${this.name()}`;\n if (this._actionHandler) {\n checkForUnknownOptions();\n this._processArguments();\n\n let promiseChain;\n promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n promiseChain = this._chainOrCall(promiseChain, () =>\n this._actionHandler(this.processedArgs),\n );\n if (this.parent) {\n promiseChain = this._chainOrCall(promiseChain, () => {\n this.parent.emit(commandEvent, operands, unknown); // legacy\n });\n }\n promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n return promiseChain;\n }\n if (this.parent && this.parent.listenerCount(commandEvent)) {\n checkForUnknownOptions();\n this._processArguments();\n this.parent.emit(commandEvent, operands, unknown); // legacy\n } else if (operands.length) {\n if (this._findCommand('*')) {\n // legacy default command\n return this._dispatchSubcommand('*', operands, unknown);\n }\n if (this.listenerCount('command:*')) {\n // skip option check, emit event for possible misspelling suggestion\n this.emit('command:*', operands, unknown);\n } else if (this.commands.length) {\n this.unknownCommand();\n } else {\n checkForUnknownOptions();\n this._processArguments();\n }\n } else if (this.commands.length) {\n checkForUnknownOptions();\n // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n this.help({ error: true });\n } else {\n checkForUnknownOptions();\n this._processArguments();\n // fall through for caller to handle after calling .parse()\n }\n }\n\n /**\n * Find matching command.\n *\n * @private\n * @return {Command | undefined}\n */\n _findCommand(name) {\n if (!name) return undefined;\n return this.commands.find(\n (cmd) => cmd._name === name || cmd._aliases.includes(name),\n );\n }\n\n /**\n * Return an option matching `arg` if any.\n *\n * @param {string} arg\n * @return {Option}\n * @package\n */\n\n _findOption(arg) {\n return this.options.find((option) => option.is(arg));\n }\n\n /**\n * Display an error message if a mandatory option does not have a value.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n\n _checkForMissingMandatoryOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd.options.forEach((anOption) => {\n if (\n anOption.mandatory &&\n cmd.getOptionValue(anOption.attributeName()) === undefined\n ) {\n cmd.missingMandatoryOptionValue(anOption);\n }\n });\n });\n }\n\n /**\n * Display an error message if conflicting options are used together in this.\n *\n * @private\n */\n _checkForConflictingLocalOptions() {\n const definedNonDefaultOptions = this.options.filter((option) => {\n const optionKey = option.attributeName();\n if (this.getOptionValue(optionKey) === undefined) {\n return false;\n }\n return this.getOptionValueSource(optionKey) !== 'default';\n });\n\n const optionsWithConflicting = definedNonDefaultOptions.filter(\n (option) => option.conflictsWith.length > 0,\n );\n\n optionsWithConflicting.forEach((option) => {\n const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n option.conflictsWith.includes(defined.attributeName()),\n );\n if (conflictingAndDefined) {\n this._conflictingOption(option, conflictingAndDefined);\n }\n });\n }\n\n /**\n * Display an error message if conflicting options are used together.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n _checkForConflictingOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd._checkForConflictingLocalOptions();\n });\n }\n\n /**\n * Parse options from `argv` removing known options,\n * and return argv split into operands and unknown arguments.\n *\n * Examples:\n *\n * argv => operands, unknown\n * --known kkk op => [op], []\n * op --known kkk => [op], []\n * sub --unknown uuu op => [sub], [--unknown uuu op]\n * sub -- --unknown uuu op => [sub --unknown uuu op], []\n *\n * @param {string[]} argv\n * @return {{operands: string[], unknown: string[]}}\n */\n\n parseOptions(argv) {\n const operands = []; // operands, not options or values\n const unknown = []; // first unknown option and remaining unknown args\n let dest = operands;\n const args = argv.slice();\n\n function maybeOption(arg) {\n return arg.length > 1 && arg[0] === '-';\n }\n\n // parse options\n let activeVariadicOption = null;\n while (args.length) {\n const arg = args.shift();\n\n // literal\n if (arg === '--') {\n if (dest === unknown) dest.push(arg);\n dest.push(...args);\n break;\n }\n\n if (activeVariadicOption && !maybeOption(arg)) {\n this.emit(`option:${activeVariadicOption.name()}`, arg);\n continue;\n }\n activeVariadicOption = null;\n\n if (maybeOption(arg)) {\n const option = this._findOption(arg);\n // recognised option, call listener to assign value with possible custom processing\n if (option) {\n if (option.required) {\n const value = args.shift();\n if (value === undefined) this.optionMissingArgument(option);\n this.emit(`option:${option.name()}`, value);\n } else if (option.optional) {\n let value = null;\n // historical behaviour is optional value is following arg unless an option\n if (args.length > 0 && !maybeOption(args[0])) {\n value = args.shift();\n }\n this.emit(`option:${option.name()}`, value);\n } else {\n // boolean flag\n this.emit(`option:${option.name()}`);\n }\n activeVariadicOption = option.variadic ? option : null;\n continue;\n }\n }\n\n // Look for combo options following single dash, eat first one if known.\n if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n const option = this._findOption(`-${arg[1]}`);\n if (option) {\n if (\n option.required ||\n (option.optional && this._combineFlagAndOptionalValue)\n ) {\n // option with value following in same argument\n this.emit(`option:${option.name()}`, arg.slice(2));\n } else {\n // boolean option, emit and put back remainder of arg for further processing\n this.emit(`option:${option.name()}`);\n args.unshift(`-${arg.slice(2)}`);\n }\n continue;\n }\n }\n\n // Look for known long flag with value, like --foo=bar\n if (/^--[^=]+=/.test(arg)) {\n const index = arg.indexOf('=');\n const option = this._findOption(arg.slice(0, index));\n if (option && (option.required || option.optional)) {\n this.emit(`option:${option.name()}`, arg.slice(index + 1));\n continue;\n }\n }\n\n // Not a recognised option by this command.\n // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n if (maybeOption(arg)) {\n dest = unknown;\n }\n\n // If using positionalOptions, stop processing our options at subcommand.\n if (\n (this._enablePositionalOptions || this._passThroughOptions) &&\n operands.length === 0 &&\n unknown.length === 0\n ) {\n if (this._findCommand(arg)) {\n operands.push(arg);\n if (args.length > 0) unknown.push(...args);\n break;\n } else if (\n this._getHelpCommand() &&\n arg === this._getHelpCommand().name()\n ) {\n operands.push(arg);\n if (args.length > 0) operands.push(...args);\n break;\n } else if (this._defaultCommandName) {\n unknown.push(arg);\n if (args.length > 0) unknown.push(...args);\n break;\n }\n }\n\n // If using passThroughOptions, stop processing options at first command-argument.\n if (this._passThroughOptions) {\n dest.push(arg);\n if (args.length > 0) dest.push(...args);\n break;\n }\n\n // add arg\n dest.push(arg);\n }\n\n return { operands, unknown };\n }\n\n /**\n * Return an object containing local option values as key-value pairs.\n *\n * @return {object}\n */\n opts() {\n if (this._storeOptionsAsProperties) {\n // Preserve original behaviour so backwards compatible when still using properties\n const result = {};\n const len = this.options.length;\n\n for (let i = 0; i < len; i++) {\n const key = this.options[i].attributeName();\n result[key] =\n key === this._versionOptionName ? this._version : this[key];\n }\n return result;\n }\n\n return this._optionValues;\n }\n\n /**\n * Return an object containing merged local and global option values as key-value pairs.\n *\n * @return {object}\n */\n optsWithGlobals() {\n // globals overwrite locals\n return this._getCommandAndAncestors().reduce(\n (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n {},\n );\n }\n\n /**\n * Display error message and exit (or call exitOverride).\n *\n * @param {string} message\n * @param {object} [errorOptions]\n * @param {string} [errorOptions.code] - an id string representing the error\n * @param {number} [errorOptions.exitCode] - used with process.exit\n */\n error(message, errorOptions) {\n // output handling\n this._outputConfiguration.outputError(\n `${message}\\n`,\n this._outputConfiguration.writeErr,\n );\n if (typeof this._showHelpAfterError === 'string') {\n this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n } else if (this._showHelpAfterError) {\n this._outputConfiguration.writeErr('\\n');\n this.outputHelp({ error: true });\n }\n\n // exit handling\n const config = errorOptions || {};\n const exitCode = config.exitCode || 1;\n const code = config.code || 'commander.error';\n this._exit(exitCode, code, message);\n }\n\n /**\n * Apply any option related environment variables, if option does\n * not have a value from cli or client code.\n *\n * @private\n */\n _parseOptionsEnv() {\n this.options.forEach((option) => {\n if (option.envVar && option.envVar in process.env) {\n const optionKey = option.attributeName();\n // Priority check. Do not overwrite cli or options from unknown source (client-code).\n if (\n this.getOptionValue(optionKey) === undefined ||\n ['default', 'config', 'env'].includes(\n this.getOptionValueSource(optionKey),\n )\n ) {\n if (option.required || option.optional) {\n // option can take a value\n // keep very simple, optional always takes value\n this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n } else {\n // boolean\n // keep very simple, only care that envVar defined and not the value\n this.emit(`optionEnv:${option.name()}`);\n }\n }\n }\n });\n }\n\n /**\n * Apply any implied option values, if option is undefined or default value.\n *\n * @private\n */\n _parseOptionsImplied() {\n const dualHelper = new DualOptions(this.options);\n const hasCustomOptionValue = (optionKey) => {\n return (\n this.getOptionValue(optionKey) !== undefined &&\n !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n );\n };\n this.options\n .filter(\n (option) =>\n option.implied !== undefined &&\n hasCustomOptionValue(option.attributeName()) &&\n dualHelper.valueFromOption(\n this.getOptionValue(option.attributeName()),\n option,\n ),\n )\n .forEach((option) => {\n Object.keys(option.implied)\n .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n .forEach((impliedKey) => {\n this.setOptionValueWithSource(\n impliedKey,\n option.implied[impliedKey],\n 'implied',\n );\n });\n });\n }\n\n /**\n * Argument `name` is missing.\n *\n * @param {string} name\n * @private\n */\n\n missingArgument(name) {\n const message = `error: missing required argument '${name}'`;\n this.error(message, { code: 'commander.missingArgument' });\n }\n\n /**\n * `Option` is missing an argument.\n *\n * @param {Option} option\n * @private\n */\n\n optionMissingArgument(option) {\n const message = `error: option '${option.flags}' argument missing`;\n this.error(message, { code: 'commander.optionMissingArgument' });\n }\n\n /**\n * `Option` does not have a value, and is a mandatory option.\n *\n * @param {Option} option\n * @private\n */\n\n missingMandatoryOptionValue(option) {\n const message = `error: required option '${option.flags}' not specified`;\n this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n }\n\n /**\n * `Option` conflicts with another option.\n *\n * @param {Option} option\n * @param {Option} conflictingOption\n * @private\n */\n _conflictingOption(option, conflictingOption) {\n // The calling code does not know whether a negated option is the source of the\n // value, so do some work to take an educated guess.\n const findBestOptionFromValue = (option) => {\n const optionKey = option.attributeName();\n const optionValue = this.getOptionValue(optionKey);\n const negativeOption = this.options.find(\n (target) => target.negate && optionKey === target.attributeName(),\n );\n const positiveOption = this.options.find(\n (target) => !target.negate && optionKey === target.attributeName(),\n );\n if (\n negativeOption &&\n ((negativeOption.presetArg === undefined && optionValue === false) ||\n (negativeOption.presetArg !== undefined &&\n optionValue === negativeOption.presetArg))\n ) {\n return negativeOption;\n }\n return positiveOption || option;\n };\n\n const getErrorMessage = (option) => {\n const bestOption = findBestOptionFromValue(option);\n const optionKey = bestOption.attributeName();\n const source = this.getOptionValueSource(optionKey);\n if (source === 'env') {\n return `environment variable '${bestOption.envVar}'`;\n }\n return `option '${bestOption.flags}'`;\n };\n\n const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n this.error(message, { code: 'commander.conflictingOption' });\n }\n\n /**\n * Unknown option `flag`.\n *\n * @param {string} flag\n * @private\n */\n\n unknownOption(flag) {\n if (this._allowUnknownOption) return;\n let suggestion = '';\n\n if (flag.startsWith('--') && this._showSuggestionAfterError) {\n // Looping to pick up the global options too\n let candidateFlags = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n do {\n const moreFlags = command\n .createHelp()\n .visibleOptions(command)\n .filter((option) => option.long)\n .map((option) => option.long);\n candidateFlags = candidateFlags.concat(moreFlags);\n command = command.parent;\n } while (command && !command._enablePositionalOptions);\n suggestion = suggestSimilar(flag, candidateFlags);\n }\n\n const message = `error: unknown option '${flag}'${suggestion}`;\n this.error(message, { code: 'commander.unknownOption' });\n }\n\n /**\n * Excess arguments, more than expected.\n *\n * @param {string[]} receivedArgs\n * @private\n */\n\n _excessArguments(receivedArgs) {\n if (this._allowExcessArguments) return;\n\n const expected = this.registeredArguments.length;\n const s = expected === 1 ? '' : 's';\n const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n this.error(message, { code: 'commander.excessArguments' });\n }\n\n /**\n * Unknown command.\n *\n * @private\n */\n\n unknownCommand() {\n const unknownName = this.args[0];\n let suggestion = '';\n\n if (this._showSuggestionAfterError) {\n const candidateNames = [];\n this.createHelp()\n .visibleCommands(this)\n .forEach((command) => {\n candidateNames.push(command.name());\n // just visible alias\n if (command.alias()) candidateNames.push(command.alias());\n });\n suggestion = suggestSimilar(unknownName, candidateNames);\n }\n\n const message = `error: unknown command '${unknownName}'${suggestion}`;\n this.error(message, { code: 'commander.unknownCommand' });\n }\n\n /**\n * Get or set the program version.\n *\n * This method auto-registers the \"-V, --version\" option which will print the version number.\n *\n * You can optionally supply the flags and description to override the defaults.\n *\n * @param {string} [str]\n * @param {string} [flags]\n * @param {string} [description]\n * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n */\n\n version(str, flags, description) {\n if (str === undefined) return this._version;\n this._version = str;\n flags = flags || '-V, --version';\n description = description || 'output the version number';\n const versionOption = this.createOption(flags, description);\n this._versionOptionName = versionOption.attributeName();\n this._registerOption(versionOption);\n\n this.on('option:' + versionOption.name(), () => {\n this._outputConfiguration.writeOut(`${str}\\n`);\n this._exit(0, 'commander.version', str);\n });\n return this;\n }\n\n /**\n * Set the description.\n *\n * @param {string} [str]\n * @param {object} [argsDescription]\n * @return {(string|Command)}\n */\n description(str, argsDescription) {\n if (str === undefined && argsDescription === undefined)\n return this._description;\n this._description = str;\n if (argsDescription) {\n this._argsDescription = argsDescription;\n }\n return this;\n }\n\n /**\n * Set the summary. Used when listed as subcommand of parent.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n summary(str) {\n if (str === undefined) return this._summary;\n this._summary = str;\n return this;\n }\n\n /**\n * Set an alias for the command.\n *\n * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n *\n * @param {string} [alias]\n * @return {(string|Command)}\n */\n\n alias(alias) {\n if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n /** @type {Command} */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n if (\n this.commands.length !== 0 &&\n this.commands[this.commands.length - 1]._executableHandler\n ) {\n // assume adding alias for last added executable subcommand, rather than this\n command = this.commands[this.commands.length - 1];\n }\n\n if (alias === command._name)\n throw new Error(\"Command alias can't be the same as its name\");\n const matchingCommand = this.parent?._findCommand(alias);\n if (matchingCommand) {\n // c.f. _registerCommand\n const existingCmd = [matchingCommand.name()]\n .concat(matchingCommand.aliases())\n .join('|');\n throw new Error(\n `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n );\n }\n\n command._aliases.push(alias);\n return this;\n }\n\n /**\n * Set aliases for the command.\n *\n * Only the first alias is shown in the auto-generated help.\n *\n * @param {string[]} [aliases]\n * @return {(string[]|Command)}\n */\n\n aliases(aliases) {\n // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n if (aliases === undefined) return this._aliases;\n\n aliases.forEach((alias) => this.alias(alias));\n return this;\n }\n\n /**\n * Set / get the command usage `str`.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n usage(str) {\n if (str === undefined) {\n if (this._usage) return this._usage;\n\n const args = this.registeredArguments.map((arg) => {\n return humanReadableArgName(arg);\n });\n return []\n .concat(\n this.options.length || this._helpOption !== null ? '[options]' : [],\n this.commands.length ? '[command]' : [],\n this.registeredArguments.length ? args : [],\n )\n .join(' ');\n }\n\n this._usage = str;\n return this;\n }\n\n /**\n * Get or set the name of the command.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n name(str) {\n if (str === undefined) return this._name;\n this._name = str;\n return this;\n }\n\n /**\n * Set the name of the command from script filename, such as process.argv[1],\n * or require.main.filename, or __filename.\n *\n * (Used internally and public although not documented in README.)\n *\n * @example\n * program.nameFromFilename(require.main.filename);\n *\n * @param {string} filename\n * @return {Command}\n */\n\n nameFromFilename(filename) {\n this._name = path.basename(filename, path.extname(filename));\n\n return this;\n }\n\n /**\n * Get or set the directory for searching for executable subcommands of this command.\n *\n * @example\n * program.executableDir(__dirname);\n * // or\n * program.executableDir('subcommands');\n *\n * @param {string} [path]\n * @return {(string|null|Command)}\n */\n\n executableDir(path) {\n if (path === undefined) return this._executableDir;\n this._executableDir = path;\n return this;\n }\n\n /**\n * Return program help documentation.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n * @return {string}\n */\n\n helpInformation(contextOptions) {\n const helper = this.createHelp();\n if (helper.helpWidth === undefined) {\n helper.helpWidth =\n contextOptions && contextOptions.error\n ? this._outputConfiguration.getErrHelpWidth()\n : this._outputConfiguration.getOutHelpWidth();\n }\n return helper.formatHelp(this, helper);\n }\n\n /**\n * @private\n */\n\n _getHelpContext(contextOptions) {\n contextOptions = contextOptions || {};\n const context = { error: !!contextOptions.error };\n let write;\n if (context.error) {\n write = (arg) => this._outputConfiguration.writeErr(arg);\n } else {\n write = (arg) => this._outputConfiguration.writeOut(arg);\n }\n context.write = contextOptions.write || write;\n context.command = this;\n return context;\n }\n\n /**\n * Output help information for this command.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n outputHelp(contextOptions) {\n let deprecatedCallback;\n if (typeof contextOptions === 'function') {\n deprecatedCallback = contextOptions;\n contextOptions = undefined;\n }\n const context = this._getHelpContext(contextOptions);\n\n this._getCommandAndAncestors()\n .reverse()\n .forEach((command) => command.emit('beforeAllHelp', context));\n this.emit('beforeHelp', context);\n\n let helpInformation = this.helpInformation(context);\n if (deprecatedCallback) {\n helpInformation = deprecatedCallback(helpInformation);\n if (\n typeof helpInformation !== 'string' &&\n !Buffer.isBuffer(helpInformation)\n ) {\n throw new Error('outputHelp callback must return a string or a Buffer');\n }\n }\n context.write(helpInformation);\n\n if (this._getHelpOption()?.long) {\n this.emit(this._getHelpOption().long); // deprecated\n }\n this.emit('afterHelp', context);\n this._getCommandAndAncestors().forEach((command) =>\n command.emit('afterAllHelp', context),\n );\n }\n\n /**\n * You can pass in flags and a description to customise the built-in help option.\n * Pass in false to disable the built-in help option.\n *\n * @example\n * program.helpOption('-?, --help' 'show help'); // customise\n * program.helpOption(false); // disable\n *\n * @param {(string | boolean)} flags\n * @param {string} [description]\n * @return {Command} `this` command for chaining\n */\n\n helpOption(flags, description) {\n // Support disabling built-in help option.\n if (typeof flags === 'boolean') {\n if (flags) {\n this._helpOption = this._helpOption ?? undefined; // preserve existing option\n } else {\n this._helpOption = null; // disable\n }\n return this;\n }\n\n // Customise flags and description.\n flags = flags ?? '-h, --help';\n description = description ?? 'display help for command';\n this._helpOption = this.createOption(flags, description);\n\n return this;\n }\n\n /**\n * Lazy create help option.\n * Returns null if has been disabled with .helpOption(false).\n *\n * @returns {(Option | null)} the help option\n * @package\n */\n _getHelpOption() {\n // Lazy create help option on demand.\n if (this._helpOption === undefined) {\n this.helpOption(undefined, undefined);\n }\n return this._helpOption;\n }\n\n /**\n * Supply your own option to use for the built-in help option.\n * This is an alternative to using helpOption() to customise the flags and description etc.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addHelpOption(option) {\n this._helpOption = option;\n return this;\n }\n\n /**\n * Output help information and exit.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n help(contextOptions) {\n this.outputHelp(contextOptions);\n let exitCode = process.exitCode || 0;\n if (\n exitCode === 0 &&\n contextOptions &&\n typeof contextOptions !== 'function' &&\n contextOptions.error\n ) {\n exitCode = 1;\n }\n // message: do not have all displayed text available so only passing placeholder.\n this._exit(exitCode, 'commander.help', '(outputHelp)');\n }\n\n /**\n * Add additional text to be displayed with the built-in help.\n *\n * Position is 'before' or 'after' to affect just this command,\n * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n *\n * @param {string} position - before or after built-in help\n * @param {(string | Function)} text - string to add, or a function returning a string\n * @return {Command} `this` command for chaining\n */\n addHelpText(position, text) {\n const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n if (!allowedValues.includes(position)) {\n throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n const helpEvent = `${position}Help`;\n this.on(helpEvent, (context) => {\n let helpStr;\n if (typeof text === 'function') {\n helpStr = text({ error: context.error, command: context.command });\n } else {\n helpStr = text;\n }\n // Ignore falsy value when nothing to output.\n if (helpStr) {\n context.write(`${helpStr}\\n`);\n }\n });\n return this;\n }\n\n /**\n * Output help information if help flags specified\n *\n * @param {Array} args - array of options to search for help flags\n * @private\n */\n\n _outputHelpIfRequested(args) {\n const helpOption = this._getHelpOption();\n const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n if (helpRequested) {\n this.outputHelp();\n // (Do not have all displayed text available so only passing placeholder.)\n this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n }\n }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n // Testing for these options:\n // --inspect[=[host:]port]\n // --inspect-brk[=[host:]port]\n // --inspect-port=[host:]port\n return args.map((arg) => {\n if (!arg.startsWith('--inspect')) {\n return arg;\n }\n let debugOption;\n let debugHost = '127.0.0.1';\n let debugPort = '9229';\n let match;\n if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n // e.g. --inspect\n debugOption = match[1];\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n ) {\n debugOption = match[1];\n if (/^\\d+$/.test(match[3])) {\n // e.g. --inspect=1234\n debugPort = match[3];\n } else {\n // e.g. --inspect=localhost\n debugHost = match[3];\n }\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n ) {\n // e.g. --inspect=localhost:1234\n debugOption = match[1];\n debugHost = match[3];\n debugPort = match[4];\n }\n\n if (debugOption && debugPort !== '0') {\n return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n }\n return arg;\n });\n}\n\nexports.Command = Command;\n","const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n","import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n program,\n createCommand,\n createArgument,\n createOption,\n CommanderError,\n InvalidArgumentError,\n InvalidOptionArgumentError, // deprecated old name\n Command,\n Argument,\n Option,\n Help,\n} = commander;\n","export class CliError extends Error {\r\n readonly exitCode: number\r\n readonly code: string\r\n\r\n constructor(\r\n message: string,\r\n options: {\r\n exitCode?: number\r\n code?: string\r\n cause?: unknown\r\n } = {}\r\n ) {\r\n super(message, options.cause ? { cause: options.cause } : undefined)\r\n this.name = \"CliError\"\r\n this.exitCode = options.exitCode ?? 1\r\n this.code = options.code ?? \"CLI_ERROR\"\r\n }\r\n}\r\n\r\nexport class CliUsageError extends CliError {\r\n constructor(message: string, options: { cause?: unknown } = {}) {\r\n super(message, { ...options, exitCode: 2, code: \"CLI_USAGE_ERROR\" })\r\n this.name = \"CliUsageError\"\r\n }\r\n}\r\n\r\nexport function errorMessage(error: unknown): string {\r\n return error instanceof Error ? error.message : String(error)\r\n}\r\n\r\nexport function errorToJson(error: unknown, debug = false, command?: string): string {\r\n const payload: Record<string, unknown> = {\r\n ok: false,\r\n error: true,\r\n message: errorMessage(error),\r\n code: error instanceof CliError ? error.code : \"CLI_ERROR\",\r\n exitCode: error instanceof CliError ? error.exitCode : 1,\r\n command: command ?? null,\r\n generatedAt: new Date().toISOString(),\r\n }\r\n\r\n if (debug && error instanceof Error && error.stack) {\r\n payload.stack = error.stack\r\n }\r\n\r\n return JSON.stringify(payload, null, 2)\r\n}\r\n\r\nexport function errorExitCode(error: unknown): number {\r\n return error instanceof CliError ? error.exitCode : 1\r\n}\r\n","/**\r\n * ESM-safe runtime helpers untuk monorepo.\r\n *\r\n * Menggantikan pola fragile seperti:\r\n * - `createRequire(import.meta.url)` → gunakan `createEsmRequire()`\r\n * - `__dirname` → gunakan `getDirname(import.meta.url)`\r\n * - `__filename` → gunakan `getFilename(import.meta.url)`\r\n *\r\n * Semua helper ini bekerja di ESM dan CJS.\r\n *\r\n * @module @tailwind-styled/shared/esmHelpers\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// Safe check for require availability - works in both CJS and ESM\r\nlet nodeModuleRef: any = null\r\nfunction getNodeModuleRef() {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n // Test if require actually works\r\n const test = typeof require === 'function' ? require('node:module') : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodePath: any = null\r\nlet _nodeUrl: any = null\r\nlet _nodeFs: any = null\r\nlet _nodeCrypto: any = null\r\nlet _nodeOs: any = null\r\n\r\nfunction getNodePath() {\r\n if (isBrowser) throw new Error(\"node:path not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeUrl() {\r\n if (isBrowser) throw new Error(\"node:url not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeUrl) _nodeUrl = nodeRequire.createRequire(import.meta.url)(\"node:url\")\r\n return _nodeUrl!\r\n}\r\nfunction getNodeFs() {\r\n if (isBrowser) throw new Error(\"node:fs not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\")\r\n return _nodeFs!\r\n}\r\nfunction getNodeCrypto() {\r\n if (isBrowser) throw new Error(\"node:crypto not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeCrypto) _nodeCrypto = nodeRequire.createRequire(import.meta.url)(\"node:crypto\")\r\n return _nodeCrypto!\r\n}\r\nfunction getNodeOs() {\r\n if (isBrowser) throw new Error(\"node:os not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeOs) _nodeOs = nodeRequire.createRequire(import.meta.url)(\"node:os\")\r\n return _nodeOs!\r\n}\r\n\r\n/**\r\n * Buat `require()` function yang relative terhadap sebuah ESM module.\r\n *\r\n * @example\r\n * // Ganti: createRequire(import.meta.url)(\"some-pkg\")\r\n * const req = createEsmRequire(import.meta.url)\r\n * const mod = req(\"some-pkg\")\r\n */\r\nexport function createEsmRequire(importMetaUrl: string): NodeRequire {\r\n if (isBrowser) throw new Error(\"require not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n return nodeRequire.createRequire(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Dapat `__dirname` dari `import.meta.url`.\r\n *\r\n * @example\r\n * // Ganti: const __dirname = ...\r\n * const dir = getDirname(import.meta.url)\r\n */\r\nexport function getDirname(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n const nodePath = getNodePath()\r\n const nodeUrl = getNodeUrl()\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n}\r\n\r\n/**\r\n * Dapat `__filename` dari `import.meta.url`.\r\n */\r\nexport function getFilename(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n return getNodeUrl().fileURLToPath(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Resolve path dari root monorepo (bukan CWD).\r\n * Berguna untuk scripts dan tools yang dipanggil dari lokasi berbeda.\r\n *\r\n * @example\r\n * const root = resolveFromRoot(\"packages/domain/shared/src\")\r\n */\r\nexport function resolveFromRoot(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\")\r\n\r\n const nodePath = getNodePath()\r\n const nodeFs = getNodeFs()\r\n \r\n let dir = getDirname(import.meta.url)\r\n for (let i = 0; i < 10; i++) {\r\n const pkgPath = nodePath.join(dir, \"package.json\")\r\n try {\r\n const pkg = JSON.parse(nodeFs.readFileSync(pkgPath, \"utf-8\"))\r\n if (pkg.workspaces) {\r\n return nodePath.resolve(dir, ...segments)\r\n }\r\n } catch { /* intentionally silent */ }\r\n dir = nodePath.dirname(dir)\r\n }\r\n return nodePath.resolve(process.cwd(), ...segments)\r\n}\r\n\r\n/**\r\n * Require sebuah module dengan fallback ke null jika tidak tersedia.\r\n * Berguna untuk optional dependencies.\r\n *\r\n * @example\r\n * const oxc = tryRequire(\"oxc-parser\", import.meta.url)\r\n * if (!oxc) console.warn(\"oxc-parser not installed\")\r\n */\r\nexport function tryRequire<T = unknown>(\r\n moduleName: string,\r\n importMetaUrl: string\r\n): T | null {\r\n if (isBrowser) return null\r\n try {\r\n return createEsmRequire(importMetaUrl)(moduleName) as T\r\n } catch { /* intentionally silent — optional dep */ }\r\n return null\r\n}\r\n\r\n/**\r\n * Resolve .node binary path yang cross-platform dan ESM-safe.\r\n * Menggantikan pola `path.resolve(__dirname, \"../native.node\")`.\r\n */\r\nexport function resolveNativeNodePath(\r\n importMetaUrl: string,\r\n ...relativeSegments: string[]\r\n): string {\r\n if (isBrowser) return relativeSegments.join(\"/\")\r\n return getNodePath().resolve(getDirname(importMetaUrl), ...relativeSegments)\r\n}\r\n","/**\r\n * Prebuilt binary resolution untuk native NAPI bindings.\r\n * QA #1: Resolve native binary dari prebuilt packages atau local build.\r\n *\r\n * Prioritas:\r\n * 1. TW_NATIVE_PATH env var (explicit override)\r\n * 2. Prebuilt binary dari platform-specific npm package\r\n * 3. Local build dari source (developer mode)\r\n */\r\n\r\nimport { createRequire } from \"node:module\"\r\nimport * as fs from \"node:fs\"\r\nimport * as path from \"node:path\"\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// ESM-safe require — works in both ESM and CJS contexts\r\nconst _require = typeof require !== \"undefined\" ? require : createRequire(import.meta.url)\r\n\r\nexport interface NativeResolutionResult {\r\n path: string | null\r\n source: \"env\" | \"prebuilt\" | \"local\" | \"not-found\"\r\n platform: string\r\n tried: string[]\r\n}\r\n\r\n/** Platform key → prebuilt npm package name */\r\nconst PLATFORM_MAP: Record<string, string[]> = {\r\n \"linux-x64\": [\"@tailwind-styled/native-linux-x64\"],\r\n \"linux-arm64\": [\"@tailwind-styled/native-linux-arm64\"],\r\n \"darwin-x64\": [\"@tailwind-styled/native-darwin-x64\"],\r\n \"darwin-arm64\": [\"@tailwind-styled/native-darwin-arm64\"],\r\n \"win32-x64\": [\"@tailwind-styled/native-win32-x64\"],\r\n \"win32-arm64\": [\"@tailwind-styled/native-win32-arm64\"],\r\n}\r\n\r\nfunction platformKey(): string {\r\n if (isBrowser) return \"browser\"\r\n return `${process.platform}-${process.arch}`\r\n}\r\n\r\n/**\r\n * Resolve native binary path dari semua sumber yang tersedia.\r\n *\r\n * @example\r\n * const result = resolveNativeBinary()\r\n * if (result.path) {\r\n * const binding = require(result.path)\r\n * } else {\r\n * throw new Error(\"Native binding not found — run npm run build:rust\")\r\n * }\r\n */\r\nexport function resolveNativeBinary(runtimeDir?: string): NativeResolutionResult {\r\n const platform = platformKey()\r\n const tried: string[] = []\r\n\r\n if (isBrowser) {\r\n return { path: null, source: \"not-found\", platform, tried: [\"not available in browser\"] }\r\n }\r\n\r\n // 0. Disabled flag — always short-circuit before any I/O\r\n if (process.env.TWS_DISABLE_NATIVE === \"1\") {\r\n return { path: null, source: \"not-found\", platform, tried: [] }\r\n }\r\n\r\n // 1. Env var override\r\n const envPath = process.env.TW_NATIVE_PATH?.trim()\r\n if (envPath) {\r\n if (fs.existsSync(envPath)) {\r\n return { path: envPath, source: \"env\", platform, tried }\r\n }\r\n tried.push(`env:${envPath} (not found)`)\r\n }\r\n\r\n // 2. Prebuilt binary dari platform-specific npm package\r\n const prebuiltPkgs = PLATFORM_MAP[platform] ?? []\r\n for (const pkg of prebuiltPkgs) {\r\n try {\r\n const candidate = _require.resolve(`${pkg}/tailwind_styled_parser.node`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"prebuilt\", platform, tried }\r\n }\r\n tried.push(`prebuilt:${pkg} (resolved but missing)`)\r\n } catch {\r\n tried.push(`prebuilt:${pkg} (not installed)`)\r\n }\r\n }\r\n\r\n // 3. Local build candidates\r\n const cwd = process.cwd()\r\n const base = runtimeDir ?? cwd\r\n // napi-rs naming: platform key may have -gnu suffix on Linux\r\n const napiPlatform = platform === \"linux-x64\" ? \"linux-x64-gnu\"\r\n : platform === \"linux-arm64\" ? \"linux-arm64-gnu\"\r\n : platform\r\n\r\n // Both possible binary names:\r\n // - \"tailwind_styled_parser\" (old hardcoded name in resolvers)\r\n // - \"tailwind-styled-native\" (actual binaryName in native/package.json)\r\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n\r\n const localCandidates: string[] = []\r\n\r\n for (const bin of BINARY_NAMES) {\r\n localCandidates.push(path.resolve(base, `${bin}.node`))\r\n localCandidates.push(path.resolve(base, \"..\", `${bin}.node`))\r\n localCandidates.push(path.resolve(base, `${bin}.${platform}.node`))\r\n localCandidates.push(path.resolve(base, `${bin}.${napiPlatform}.node`))\r\n }\r\n\r\n // Walk up from cwd AND base to find repo root native/ dir\r\n // Needed when npm workspaces sets cwd to the package subdir\r\n for (const startDir of [cwd, base]) {\r\n let dir = startDir\r\n for (let i = 0; i < 6; i++) {\r\n const nativeDir = path.resolve(dir, \"native\")\r\n for (const bin of BINARY_NAMES) {\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.node`))\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.${platform}.node`))\r\n localCandidates.push(path.resolve(nativeDir, `${bin}.${napiPlatform}.node`))\r\n localCandidates.push(path.resolve(nativeDir, \"target\", \"release\", `${bin}.node`))\r\n }\r\n const parent = path.resolve(dir, \"..\")\r\n if (parent === dir) break\r\n dir = parent\r\n }\r\n }\r\n\r\n for (const candidate of localCandidates) {\r\n tried.push(`local:${candidate}`)\r\n if (fs.existsSync(candidate)) {\r\n return { path: candidate, source: \"local\", platform, tried }\r\n }\r\n }\r\n\r\n return { path: null, source: \"not-found\", platform, tried }\r\n}\r\n\r\n/**\r\n * Format human-readable error untuk \"binary not found\".\r\n */\r\nexport function formatNativeNotFoundError(result: NativeResolutionResult): string {\r\n const lines = [\r\n `[tailwind-styled] Native binding not found for ${result.platform}`,\r\n ``,\r\n `Tried:`,\r\n ...result.tried.map(t => ` - ${t}`),\r\n ``,\r\n `Solutions:`,\r\n ` 1. Build locally: npm run build:rust`,\r\n ` 2. Install prebuilt: npm install @tailwind-styled/native-${result.platform}`,\r\n ` 3. Override path: TW_NATIVE_PATH=/path/to/parser.node`,\r\n ]\r\n return lines.join(\"\\n\")\r\n}","import { createHash } from \"node:crypto\"\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport { createRequire } from \"node:module\"\r\n\r\n// Native-only: Node.js is always available. No browser fallback.\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Types\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type TokenMap = Record<string, string>\r\n\r\nexport type VariantValue = string | number | boolean | undefined\r\n\r\nexport type VariantProps = Record<string, VariantValue>\r\n\r\nexport type HtmlTagName = keyof HTMLElementTagNameMap\r\n\r\nexport type CompoundCondition = Record<string, string | number | boolean>\r\n\r\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Logging\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface Logger {\r\n warn(...args: unknown[]): void\r\n debug(...args: unknown[]): void\r\n error(...args: unknown[]): void\r\n log(...args: unknown[]): void\r\n}\r\n\r\nexport function createLogger(namespace: string): Logger {\r\n const prefix = `[${namespace}]`\r\n return {\r\n warn(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n debug(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n error(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n log(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n }\r\n}\r\n\r\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\r\n const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\r\n return (msg: string) => {\r\n if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\r\n console.debug(prefix, msg)\r\n }\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error handling\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\r\n\r\ntype ZodLikeIssue = {\r\n path?: readonly PropertyKey[]\r\n message?: string\r\n}\r\n\r\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\r\n if (!path || path.length === 0) return \"(root)\"\r\n return path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n}\r\n\r\nexport class TwError extends Error {\r\n /** @deprecated Gunakan source */\r\n public readonly domain: string\r\n public readonly source: ErrorSource\r\n public readonly code: string\r\n public readonly originalCause?: unknown\r\n\r\n constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\r\n super(message)\r\n this.name = \"TwError\"\r\n this.domain = domainOrSource\r\n this.source = domainOrSource as ErrorSource\r\n this.code = code\r\n this.originalCause = cause\r\n if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\r\n }\r\n\r\n static fromIo(code: string, message: string): TwError {\r\n return new TwError(\"io\", code, message)\r\n }\r\n\r\n static fromCompile(code: string, message: string): TwError {\r\n return new TwError(\"compile\", code, message)\r\n }\r\n\r\n static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\r\n if (err && typeof err === \"object\") {\r\n const e = err as { code?: string; message?: string }\r\n return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\r\n }\r\n return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\r\n }\r\n\r\n /** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\r\n static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\r\n const first = err.issues?.[0] ?? err.errors?.[0]\r\n const path = formatIssuePath(first?.path)\r\n const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\r\n return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\r\n }\r\n\r\n static wrap(source: string, code: string, err: unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(source, code, err.message, err)\r\n return new TwError(source, code, String(err), err)\r\n }\r\n\r\n override toString(): string {\r\n return `TwError [${this.source}:${this.code}] ${this.message}`\r\n }\r\n\r\n toJSON(): { name: string; source: string; code: string; message: string } {\r\n return { name: this.name, source: this.source, code: this.code, message: this.message }\r\n }\r\n\r\n toCliMessage(): string {\r\n return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\r\n }\r\n}\r\n\r\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\r\n return TwError.wrap(domain, code, error)\r\n}\r\n\r\nexport function isTwError(err: unknown): err is TwError {\r\n return err instanceof TwError\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Native binding resolution\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface LoadNativeBindingOptions<T> {\r\n runtimeDir: string\r\n candidates: string[]\r\n isValid: (module: unknown) => module is T\r\n invalidExportMessage: string\r\n}\r\n\r\nexport interface LoadNativeBindingResult<T> {\r\n binding: T | null\r\n loadErrors: Array<{ path: string; message: string }>\r\n loadedPath?: string\r\n}\r\n\r\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\r\n const { runtimeDir, candidates, isValid } = options\r\n const loadErrors: Array<{ path: string; message: string }> = []\r\n\r\n for (const candidate of candidates) {\r\n const candidatePath = path.resolve(runtimeDir, candidate)\r\n try {\r\n if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\r\n continue\r\n }\r\n const mod = requireNativeModule(candidatePath)\r\n if (mod && isValid(mod)) {\r\n return { binding: mod, loadErrors, loadedPath: candidatePath }\r\n }\r\n loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\r\n } catch (e) {\r\n loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\r\n }\r\n }\r\n\r\n return { binding: null, loadErrors }\r\n}\r\n\r\nconst _require = createRequire(import.meta.url)\r\n\r\nfunction requireNativeModule(p: string): unknown {\r\n return _require(p)\r\n}\r\n\r\nexport interface ResolveCandidatesOptions {\r\n runtimeDir?: string\r\n envVarNames?: string[]\r\n includeDefaultCandidates?: boolean\r\n enforceNodeExtensionForEnvPath?: boolean\r\n /** @deprecated — ignored, kept for backward compat */\r\n packageName?: string\r\n}\r\n\r\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\r\n const {\r\n envVarNames = [\"TW_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\r\n includeDefaultCandidates = true,\r\n enforceNodeExtensionForEnvPath = false,\r\n } = options\r\n // Default ke cwd kalau runtimeDir tidak disediakan\r\n const runtimeDir = options.runtimeDir || process.cwd()\r\n const candidates: string[] = []\r\n\r\n for (const envVar of envVarNames) {\r\n const envPath = process.env[envVar]\r\n if (envPath) {\r\n candidates.push(enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\") ? envPath + \".node\" : envPath)\r\n }\r\n }\r\n\r\n if (!includeDefaultCandidates) return candidates\r\n\r\n if (fs.existsSync(runtimeDir)) {\r\n try {\r\n for (const entry of fs.readdirSync(runtimeDir)) {\r\n if (entry.endsWith(\".node\")) candidates.push(entry)\r\n }\r\n } catch { /* ignore read errors */ }\r\n }\r\n\r\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n const napiPlatform = process.platform === \"linux\" && process.arch === \"x64\" ? \"linux-x64-gnu\"\r\n : process.platform === \"linux\" && process.arch === \"arm64\" ? \"linux-arm64-gnu\"\r\n : `${process.platform}-${process.arch}`\r\n\r\n for (const bin of BINARY_NAMES) {\r\n candidates.push(path.resolve(runtimeDir, `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, `${bin}.${napiPlatform}.node`))\r\n // 4 level: dist/ → package/ → domain/ → packages/ → repo-root/\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.${napiPlatform}.node`))\r\n // 3 level fallback\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.${napiPlatform}.node`))\r\n }\r\n\r\n return Array.from(new Set(candidates))\r\n}\r\n\r\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\r\n if (dir) return path.resolve(dir)\r\n try {\r\n return path.dirname(fileURLToPath(importMetaUrl))\r\n } catch {\r\n return process.cwd()\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Hashing\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\r\n const hash = createHash(algorithm).update(content).digest(\"hex\")\r\n return length ? hash.slice(0, length) : hash\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error formatting\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n if (error instanceof TwError) return error.toString()\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LRU Cache\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport class LRUCache<K, V> {\r\n private capacity: number\r\n private cache: Map<K, V>\r\n\r\n constructor(capacity: number) {\r\n this.capacity = capacity\r\n this.cache = new Map()\r\n }\r\n\r\n get(key: K): V | undefined {\r\n if (!this.cache.has(key)) return undefined\r\n const value = this.cache.get(key)!\r\n this.cache.delete(key)\r\n this.cache.set(key, value)\r\n return value\r\n }\r\n\r\n set(key: K, value: V): void {\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key)\r\n } else if (this.cache.size >= this.capacity) {\r\n const firstKey = this.cache.keys().next().value\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey)\r\n }\r\n }\r\n this.cache.set(key, value)\r\n }\r\n\r\n delete(key: K): boolean {\r\n return this.cache.delete(key)\r\n }\r\n\r\n has(key: K): boolean {\r\n return this.cache.has(key)\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear()\r\n }\r\n\r\n entries(): IterableIterator<[K, V]> {\r\n return this.cache.entries()\r\n }\r\n\r\n get size(): number {\r\n return this.cache.size\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Trace Utilities\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\r\nexport {\r\n getHealthColor,\r\n getModeColor,\r\n formatMemory,\r\n formatDuration,\r\n calculateHealth,\r\n getBuildTimeColor,\r\n getMemoryColor,\r\n createTraceSnapshot,\r\n getPipelinePercentages,\r\n} from \"./trace\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Performance Telemetry\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error Codes\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { ErrorCode } from \"./error-codes\"\r\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind Compatibility\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TailwindInfo } from \"./compatibility\"\r\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\r\n\r\n// ── Native binding schemas (Zod boundary validation)\r\nexport {\r\n NativeScanFileSchema, NativeScanResultSchema,\r\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\r\n NativeCssCompileResultSchema, NativeWatchResultSchema,\r\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\r\n safeParseNative, parseNative,\r\n} from './native-schemas'\r\n\r\n// ── ESM-safe runtime helpers ──────────────────────────────────────────────\r\nexport {\r\n createEsmRequire,\r\n getDirname,\r\n getFilename,\r\n resolveFromRoot,\r\n tryRequire,\r\n resolveNativeNodePath,\r\n} from \"./esmHelpers\"\r\n\r\n// ── Performance telemetry ────────────────────────────────────────────────────\r\nexport {\r\n TelemetryCollector,\r\n getGlobalTelemetry,\r\n resetGlobalTelemetry,\r\n createBuildTimer,\r\n type BuildTelemetry,\r\n type TelemetrySummary,\r\n type BuildPhases,\r\n} from \"./telemetry\"\r\n\r\n// ── Config/JSON schema validation ─────────────────────────────────────────────\r\nexport {\r\n ScanCacheSchema,\r\n ScanCacheClassEntrySchema,\r\n TailwindConfigSchema,\r\n RegistryPluginEntrySchema,\r\n RegistryFileSchema,\r\n PackageJsonSchema,\r\n parseJsonWithSchema,\r\n parseJsonFileWithSchema,\r\n type ScanCache,\r\n type ScanCacheClassEntry,\r\n type TailwindConfig,\r\n type RegistryPluginEntry,\r\n type RegistryFile,\r\n type PackageJson,\r\n} from \"./configSchemas\"\r\n\r\n// ── Worker/bootstrap path resolution ─────────────────────────────────────────\r\nexport {\r\n resolveWorkerPath,\r\n resolveLoaderPath,\r\n type WorkerPathOptions,\r\n type WorkerPathResult,\r\n} from \"./workerResolver\"\r\n\r\n// ── Codegen helpers ───────────────────────────────────────────────────────────\r\nexport {\r\n generateComponentCode,\r\n generateStorybookStory,\r\n generateClassRenameCodemod,\r\n generateBarrelFile,\r\n type ComponentCodegenOptions,\r\n} from \"./codegen\"\r\n\r\n// ── Native binary resolution (QA #1) ─────────────────────────────────────────\r\nexport {\r\n resolveNativeBinary,\r\n formatNativeNotFoundError,\r\n type NativeResolutionResult,\r\n} from \"./native-resolution\"\r\n\r\n// ── Shared observability contract ────────────────────────────────────────────\r\nexport {\r\n createObservabilityClient,\r\n type ClassInspection,\r\n type ClassProperty,\r\n type ClassUsageLocation,\r\n type BuildTrace,\r\n type BuildPhaseTrace,\r\n type DashboardMetrics,\r\n type DashboardSummary,\r\n type ObservabilityClient,\r\n} from \"./observability\"","/**\r\n * Scanner — Rust native bridge\r\n *\r\n * Wraps the Rust scan_workspace and extract_classes_from_source functions.\r\n * Uses @tailwind-styled/shared for native binding resolution.\r\n */\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport {\r\n createDebugLogger,\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n TwError,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nconst log = createDebugLogger(\"scanner:native\")\r\n\r\n// ESM-compatible __dirname equivalent\r\nfunction getDirname(): string {\r\n if (typeof __dirname !== \"undefined\") {\r\n return __dirname\r\n }\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return path.dirname(fileURLToPath(import.meta.url))\r\n }\r\n return process.cwd()\r\n}\r\n\r\ninterface NativeScannerBinding {\r\n scanWorkspace?: (\r\n root: string,\r\n extensions: string[] | null\r\n ) => {\r\n files: Array<{ file: string; classes: string[]; hash: string }>\r\n totalFiles: number\r\n uniqueClasses: string[] | null\r\n } | null\r\n extractClassesFromSource?: (source: string) => string[] | null\r\n hashFileContent?: (content: string) => string | null\r\n cacheRead?: (cachePath: string) => {\r\n entries: Array<{\r\n file: string\r\n classes: string[]\r\n hash: string\r\n mtimeMs: number\r\n size: number\r\n hitCount: number\r\n lastSeenMs?: number\r\n }>\r\n version: number\r\n } | null\r\n cacheWrite?: (\r\n cachePath: string,\r\n entries: Array<{\r\n file: string\r\n classes: string[]\r\n hash: string\r\n mtimeMs: number\r\n size: number\r\n hitCount: number\r\n lastSeenMs?: number\r\n }>\r\n ) => boolean\r\n cachePriority?: (\r\n mtimeMs: number,\r\n size: number,\r\n cachedMtimeMs: number,\r\n cachedSize: number,\r\n cachedHitCount: number,\r\n cachedLastSeenMs: number,\r\n nowMs: number\r\n ) => number\r\n batchExtractClasses?: (filePaths: string[]) => Array<{\r\n file: string\r\n classes: string[]\r\n content_hash: string\r\n ok: boolean\r\n error?: string | null\r\n }>\r\n scanCacheGet?: (filePath: string, contentHash: string) => string[] | null\r\n scanCachePut?: (filePath: string, contentHash: string, classes: string[], mtimeMs: number, size: number) => void\r\n scanCacheInvalidate?: (filePath: string) => void\r\n scanCacheStats?: () => { size: number }\r\n scanFile?: (filePath: string) => {\r\n file: string\r\n classes: string[]\r\n hash: string\r\n ok: boolean\r\n error?: string | null\r\n }\r\n collectFiles?: (root: string, extensions: string[] | null, ignoreDirs: string[] | null) => string[]\r\n scanFilesBatch?: (filePaths: string[]) => Array<{\r\n file: string\r\n classes: string[]\r\n hash: string\r\n }>\r\n generateSubComponentTypes?: (\r\n root: string,\r\n outputPath: string | null\r\n ) => {\r\n components: Array<{ name: string; classes: string[] }>\r\n outputPath: string | null\r\n totalFiles: number\r\n }\r\n /** Batch-check file existence + stale age. Menggantikan pruneStaleEntries() */\r\n pruneStaleEntries?: (\r\n entries: Array<{ file: string; lastSeenMs: number }>,\r\n maxAgeMs: number | null,\r\n checkExists: boolean | null\r\n ) => { keptIndices: number[]; removed: number }\r\n /** Hitung class frequency stats dari disk cache. Menggantikan computeCacheStats() */\r\n computeCacheStats?: (\r\n filesClasses: string[][],\r\n sizes: number[],\r\n top: number | null\r\n ) => {\r\n totalEntries: number\r\n totalClasses: number\r\n totalSizeBytes: number\r\n avgClassesPerEntryX100: number\r\n mostUsedClasses: Array<{ class: string; count: number }>\r\n }\r\n /** Rebuild workspace result — Rust HashSet dedup + sort. Menggantikan JS fallback di mergeResults() */\r\n rebuildWorkspaceResult?: (\r\n files: Array<{ file: string; classes: readonly string[] }>\r\n ) => { files: Array<{ file: string; classes: string[] }>; totalFiles: number; uniqueClasses: string[] }\r\n}\r\n\r\nconst isValidScannerBinding = (module: unknown): module is NativeScannerBinding => {\r\n const candidate = module as Partial<NativeScannerBinding> | null | undefined\r\n return !!(\r\n candidate &&\r\n (candidate.scanWorkspace ||\r\n candidate.extractClassesFromSource ||\r\n candidate.hashFileContent ||\r\n candidate.cacheRead ||\r\n candidate.cacheWrite)\r\n )\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Bridge - Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createScannerBridgeLoader = () => {\r\n const _state = {\r\n binding: undefined as NativeScannerBinding | null | undefined,\r\n loadError: null as string | null,\r\n candidatePaths: [] as string[],\r\n }\r\n\r\n const throwNativeBindingError = (): never => {\r\n const lines = [\r\n \"FATAL: Native scanner binding not found.\",\r\n \"\",\r\n \"This package requires the Rust native binding 'tailwind_styled_parser.node'.\",\r\n \"The binding was not found in any of these paths:\",\r\n ..._state.candidatePaths.map((p) => ` - ${p}`),\r\n \"\",\r\n ]\r\n\r\n if (_state.loadError) {\r\n lines.push(\"Load error:\", ` ${_state.loadError}`, \"\")\r\n }\r\n\r\n lines.push(\r\n \"To fix this, run:\",\r\n \" npm run build:rust\",\r\n \"\",\r\n \"This will build the native Rust module from the 'native/' directory.\",\r\n \"If you're using this package in a CI/CD environment, ensure Rust toolchain is installed\",\r\n \"and 'npm run build:rust' is executed before running tests or building.\"\r\n )\r\n\r\n throw new TwError(\"rust\", \"SCANNER_NATIVE_BINDING_NOT_FOUND\", lines.join(\"\\n\"))\r\n }\r\n\r\n const scannerGetBinding = (): NativeScannerBinding => {\r\n const cachedBinding = _state.binding\r\n if (cachedBinding !== undefined) {\r\n if (cachedBinding !== null) {\r\n return cachedBinding\r\n }\r\n return throwNativeBindingError()\r\n }\r\n\r\n const runtimeDir = getDirname()\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n includeDefaultCandidates: true,\r\n })\r\n\r\n _state.candidatePaths = candidates\r\n\r\n const { binding, loadErrors } = loadNativeBinding<NativeScannerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isValidScannerBinding,\r\n invalidExportMessage: \"Module loaded but missing expected scanner binding functions\",\r\n })\r\n\r\n if (binding) {\r\n log(`scanner native binding loaded successfully`)\r\n _state.binding = binding\r\n return _state.binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n _state.loadError = loadErrors.map((e) => `${e.path}: ${e.message}`).join(\"; \")\r\n }\r\n\r\n _state.binding = null\r\n return throwNativeBindingError()\r\n }\r\n\r\n return {\r\n get: scannerGetBinding,\r\n scannerGetBinding,\r\n reset: (): void => {\r\n _state.binding = undefined\r\n _state.loadError = null\r\n _state.candidatePaths = []\r\n },\r\n }\r\n}\r\n\r\nconst scannerBridgeLoader = createScannerBridgeLoader()\r\nconst scannerGetBinding = scannerBridgeLoader.get\r\n\r\nexport const resetScannerBridgeCache = scannerBridgeLoader.reset\r\n\r\nexport function scanWorkspaceNative(\r\n root: string,\r\n extensions?: string[]\r\n): ReturnType<NonNullable<NativeScannerBinding[\"scanWorkspace\"]>> {\r\n return scannerGetBinding().scanWorkspace!(root, extensions ?? null)\r\n}\r\n\r\nexport function extractClassesNative(source: string): string[] {\r\n const result = scannerGetBinding().extractClassesFromSource?.(source)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_EXTRACT_FAILED\",\r\n \"Native extractClassesFromSource returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function hashContentNative(content: string): string {\r\n const result = scannerGetBinding().hashFileContent?.(content)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_HASH_FAILED\",\r\n \"Native hashFileContent returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function isRustCacheAvailable(): boolean {\r\n return true\r\n}\r\n\r\nexport function hasNativeScannerBinding(): boolean {\r\n try {\r\n scannerBridgeLoader.get()\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport function cacheReadNative(\r\n cachePath: string\r\n): ReturnType<NonNullable<NativeScannerBinding[\"cacheRead\"]>> {\r\n const result = scannerGetBinding().cacheRead?.(cachePath)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_CACHE_READ_FAILED\",\r\n \"Native cacheRead returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function cacheWriteNative(\r\n cachePath: string,\r\n entries: Parameters<NonNullable<NativeScannerBinding[\"cacheWrite\"]>>[1]\r\n): boolean {\r\n const result = scannerGetBinding().cacheWrite?.(cachePath, entries)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_CACHE_WRITE_FAILED\",\r\n \"Native cacheWrite returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function cachePriorityNative(\r\n mtimeMs: number,\r\n size: number,\r\n cachedMtimeMs: number,\r\n cachedSize: number,\r\n cachedHitCount: number,\r\n cachedLastSeenMs: number,\r\n nowMs = Date.now()\r\n): number {\r\n const result = scannerGetBinding().cachePriority?.(\r\n mtimeMs,\r\n size,\r\n cachedMtimeMs,\r\n cachedSize,\r\n cachedHitCount,\r\n cachedLastSeenMs,\r\n nowMs\r\n )\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"SCANNER_CACHE_PRIORITY_FAILED\",\r\n \"Native cachePriority returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function batchExtractClassesNative(filePaths: string[]): Array<{\r\n file: string\r\n classes: string[]\r\n content_hash: string\r\n ok: boolean\r\n error?: string | null\r\n}> {\r\n const binding = scannerGetBinding()\r\n if (!binding.batchExtractClasses) {\r\n throw new Error(\"FATAL: Native binding 'batchExtractClasses' is required but not available.\")\r\n }\r\n return binding.batchExtractClasses(filePaths) ?? []\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// In-memory scan cache (Rust DashMap — zero disk I/O)\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function scanCacheGet(filePath: string, contentHash: string): string[] | null {\r\n const binding = scannerGetBinding()\r\n if (!binding.scanCacheGet) {\r\n throw new Error(\"FATAL: Native binding 'scanCacheGet' is required but not available.\")\r\n }\r\n return binding.scanCacheGet(filePath, contentHash) ?? null\r\n}\r\n\r\nexport function scanCachePut(\r\n filePath: string,\r\n contentHash: string,\r\n classes: string[],\r\n mtimeMs: number,\r\n size: number\r\n): void {\r\n const binding = scannerGetBinding()\r\n if (!binding.scanCachePut) {\r\n throw new Error(\"FATAL: Native binding 'scanCachePut' is required but not available.\")\r\n }\r\n binding.scanCachePut(filePath, contentHash, classes, mtimeMs, size)\r\n}\r\n\r\nexport function scanCacheInvalidate(filePath: string): void {\r\n const binding = scannerGetBinding()\r\n if (!binding.scanCacheInvalidate) {\r\n throw new Error(\"FATAL: Native binding 'scanCacheInvalidate' is required but not available.\")\r\n }\r\n binding.scanCacheInvalidate(filePath)\r\n}\r\n\r\nexport function scanCacheStats(): { size: number } {\r\n const binding = scannerGetBinding()\r\n if (!binding.scanCacheStats) {\r\n throw new Error(\"FATAL: Native binding 'scanCacheStats' is required but not available.\")\r\n }\r\n return binding.scanCacheStats() as { size: number }\r\n}\r\nexport function scanFileNative(filePath: string): {\r\n file: string\r\n classes: string[]\r\n hash: string\r\n ok: boolean\r\n error?: string | null\r\n} {\r\n const binding = scannerGetBinding()\r\n if (!binding.scanFile) {\r\n throw new Error(\"FATAL: Native binding 'scanFile' is required but not available.\")\r\n }\r\n return binding.scanFile(filePath)\r\n}\r\n/**\r\n * Native file walker — kumpulkan file paths rekursif tanpa baca konten.\r\n *\r\n * Menggantikan `collectFiles()` di `parallel-scanner.ts`.\r\n * Returns null jika binding tidak tersedia (fallback ke JS).\r\n */\r\nexport function collectFilesNative(\r\n root: string,\r\n extensions: string[] | null,\r\n ignoreDirs: string[] | null\r\n): string[] | null {\r\n const binding = scannerGetBinding()\r\n if (!binding.collectFiles) return null\r\n return binding.collectFiles(root, extensions, ignoreDirs)\r\n}\r\n/**\r\n * Batch scan + hash banyak file sekaligus dalam satu NAPI call.\r\n *\r\n * Menggantikan loop `scanFileNative()` per file di worker thread.\r\n * Rust: `par_iter()` via rayon — semua file diproses paralel di thread pool Rust,\r\n * tanpa overhead spawn JS worker untuk setiap chunk.\r\n *\r\n * Kapan pakai ini vs `batchExtractClassesNative`:\r\n * - `scanFilesBatch` → butuh {file, classes, hash} — scan + hash sekaligus\r\n * - `batchExtractClasses` → hanya butuh {file, classes, content_hash, ok, error}\r\n *\r\n * Returns: array dengan panjang sama dengan input. File yang gagal dibaca\r\n * dikembalikan dengan classes:[] dan hash:\"\".\r\n */\r\nexport function scanFilesBatchNative(filePaths: string[]): Array<{\r\n file: string\r\n classes: string[]\r\n hash: string\r\n}> {\r\n const binding = scannerGetBinding()\r\n if (!binding.scanFilesBatch) {\r\n // Fallback: panggil scanFile satu per satu\r\n return filePaths.map((fp) => {\r\n try {\r\n const r = binding.scanFile?.(fp)\r\n return r\r\n ? { file: r.file, classes: r.classes, hash: r.hash ?? \"\" }\r\n : { file: fp, classes: [], hash: \"\" }\r\n } catch {\r\n return { file: fp, classes: [], hash: \"\" }\r\n }\r\n })\r\n }\r\n return binding.scanFilesBatch(filePaths)\r\n}\r\n \r\n/**\r\n * Scan workspace rekursif dan generate TypeScript type declarations\r\n * untuk setiap sub-component yang ditemukan.\r\n *\r\n * Menggantikan operasi scan manual + string codegen di JS.\r\n * Rust: walkdir + regex class extraction + type codegen dalam satu pass.\r\n *\r\n * @param root Direktori root workspace\r\n * @param outputPath Path output file .d.ts (opsional — kalau null, hanya return result)\r\n */\r\nexport function generateSubComponentTypesNative(\r\n root: string,\r\n outputPath?: string\r\n): {\r\n components: Array<{ name: string; classes: string[] }>\r\n outputPath: string | null\r\n totalFiles: number\r\n} | null {\r\n const binding = scannerGetBinding()\r\n if (!binding.generateSubComponentTypes) return null\r\n return binding.generateSubComponentTypes(root, outputPath ?? null) as {\r\n components: Array<{ name: string; classes: string[] }>\r\n outputPath: string | null\r\n totalFiles: number\r\n }\r\n}\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// pruneStaleEntries + computeCacheStats — native wrappers\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Batch-check file existence + stale age menggunakan Rust syscalls.\r\n * Returns `null` jika native tidak tersedia (JS fallback di caller).\r\n *\r\n * Menggantikan loop `existsSync()` di `pruneStaleEntries()` (cache-native.ts).\r\n */\r\nexport function pruneStaleEntriesNative(\r\n entries: Array<{ file: string; lastSeenMs?: number }>,\r\n maxAgeMs?: number,\r\n checkExists?: boolean\r\n): { keptIndices: number[]; removed: number } | null {\r\n const binding = scannerGetBinding()\r\n if (!binding.pruneStaleEntries) return null\r\n return binding.pruneStaleEntries(\r\n entries.map((e) => ({ file: e.file, lastSeenMs: e.lastSeenMs ?? 0 })),\r\n maxAgeMs ?? null,\r\n checkExists ?? null\r\n )\r\n}\r\n\r\n/**\r\n * Hitung class frequency + stats dari disk cache entries menggunakan Rust.\r\n * Returns `null` jika native tidak tersedia (JS fallback di caller).\r\n *\r\n * Menggantikan `computeCacheStats()` di `cache-native.ts`.\r\n */\r\nexport function rebuildWorkspaceResultNative(\r\n files: Array<{ file: string; classes: readonly string[] }>\r\n): { files: typeof files; totalFiles: number; uniqueClasses: string[] } | null {\r\n const binding = scannerBridgeLoader.get()\r\n if (!binding?.rebuildWorkspaceResult) return null\r\n try {\r\n return binding.rebuildWorkspaceResult(files)\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nexport function computeCacheStatsNative(\r\n filesClasses: string[][],\r\n sizes: number[],\r\n top?: number\r\n): {\r\n totalEntries: number\r\n totalClasses: number\r\n totalSizeBytes: number\r\n avgClassesPerEntryX100: number\r\n mostUsedClasses: Array<{ class: string; count: number }>\r\n} | null {\r\n const binding = scannerGetBinding()\r\n if (!binding.computeCacheStats) return null\r\n return binding.computeCacheStats(filesClasses, sizes, top ?? null)\r\n}","/**\r\n * tailwind-styled-v4 — Scanner Cache (Rust-backed)\r\n *\r\n * This module REQUIRES native Rust bindings and will FAIL LOUDLY if they are not available.\r\n * NO JavaScript fallback is provided.\r\n */\r\n\r\nimport path from \"node:path\"\r\nimport {\r\n cachePriorityNative,\r\n cacheReadNative,\r\n cacheWriteNative,\r\n scanCacheGet,\r\n scanCachePut,\r\n scanCacheInvalidate,\r\n scanCacheStats,\r\n pruneStaleEntriesNative,\r\n computeCacheStatsNative,\r\n} from \"./native-bridge\"\r\n\r\nfunction defaultCachePath(rootDir: string, cacheDir?: string): string {\r\n const dir = cacheDir\r\n ? path.resolve(rootDir, cacheDir)\r\n : path.join(process.cwd(), \".cache\", \"tailwind-styled\")\r\n return path.join(dir, \"scanner-cache.json\")\r\n}\r\n\r\n// ── Public API ────────────────────────────────────────────────────────────────\r\n\r\nexport interface NativeCacheEntry {\r\n file: string\r\n classes: string[]\r\n hash: string\r\n mtimeMs: number\r\n size: number\r\n hitCount: number\r\n /** Terakhir file ditemukan di filesystem (ms epoch). Digunakan untuk stale cleanup. */\r\n lastSeenMs?: number\r\n}\r\n\r\n/** Default stale threshold — 7 hari */\r\nconst STALE_THRESHOLD_MS = 7 * 24 * 60 * 60 * 1000\r\n\r\n/**\r\n * Hapus entri cache yang sudah stale (file sudah tidak ada atau lastSeenMs terlalu lama).\r\n * QA #5a: stale entry cleanup\r\n */\r\n/**\r\n * Hapus entri cache yang sudah stale (file sudah tidak ada atau lastSeenMs terlalu lama).\r\n *\r\n * Native-first: Rust batch-check semua file dalam satu pass tanpa\r\n * event loop overhead. JS fallback: existsSync loop per file.\r\n */\r\nexport function pruneStaleEntries(\r\n entries: NativeCacheEntry[],\r\n opts: { maxAgeMs?: number; rootDir?: string } = {}\r\n): { pruned: NativeCacheEntry[]; removed: number } {\r\n // Native-first: satu NAPI call — Rust check semua files sekaligus\r\n const nativeResult = pruneStaleEntriesNative(\r\n entries.map((e) => ({ file: e.file, lastSeenMs: e.lastSeenMs })),\r\n opts.maxAgeMs,\r\n !!opts.rootDir // hanya check existence jika rootDir disediakan\r\n )\r\n\r\n if (nativeResult !== null) {\r\n const pruned = nativeResult.keptIndices.map((i) => entries[i])\r\n return { pruned, removed: nativeResult.removed }\r\n }\r\n\r\n // JS fallback\r\n const maxAge = opts.maxAgeMs ?? STALE_THRESHOLD_MS\r\n const now = Date.now()\r\n const { existsSync } = require(\"node:fs\") as typeof import(\"node:fs\")\r\n\r\n const pruned = entries.filter((entry) => {\r\n if (opts.rootDir && !existsSync(entry.file)) return false\r\n if (entry.lastSeenMs && now - entry.lastSeenMs > maxAge) return false\r\n return true\r\n })\r\n\r\n return { pruned, removed: entries.length - pruned.length }\r\n}\r\n\r\n/**\r\n * Read scanner cache from disk using Rust parser.\r\n * REQUIRES native binding - throws if unavailable.\r\n */\r\nexport function readCache(rootDir: string, cacheDir?: string): NativeCacheEntry[] {\r\n const cachePath = defaultCachePath(rootDir, cacheDir)\r\n\r\n const result = cacheReadNative(cachePath)\r\n if (!result) return []\r\n\r\n return result.entries.map((e) => ({\r\n file: e.file,\r\n classes: e.classes,\r\n hash: e.hash,\r\n mtimeMs: e.mtimeMs,\r\n size: e.size,\r\n hitCount: e.hitCount,\r\n lastSeenMs: e.lastSeenMs,\r\n }))\r\n}\r\n\r\n/**\r\n * Write scanner cache to disk using Rust serialiser.\r\n * REQUIRES native binding - throws if unavailable.\r\n */\r\nexport function writeCache(rootDir: string, entries: NativeCacheEntry[], cacheDir?: string): void {\r\n const cachePath = defaultCachePath(rootDir, cacheDir)\r\n\r\n const success = cacheWriteNative(cachePath, entries)\r\n if (!success) {\r\n throw new Error(\r\n \"Native cacheWrite failed. Run 'npm run build:rust' to rebuild native bindings.\"\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Compute priority score for a file using the Rust SmartCache algorithm.\r\n * Higher = process first.\r\n * REQUIRES native binding - throws if unavailable.\r\n */\r\nexport function filePriority(\r\n mtimeMs: number,\r\n size: number,\r\n cached: { mtimeMs: number; size: number; hitCount: number; lastSeenMs?: number } | undefined,\r\n nowMs = Date.now()\r\n): number {\r\n return cachePriorityNative(\r\n mtimeMs,\r\n size,\r\n cached?.mtimeMs ?? 0,\r\n cached?.size ?? 0,\r\n cached?.hitCount ?? 0,\r\n cached?.lastSeenMs ?? 0,\r\n nowMs\r\n )\r\n}\r\n\r\nexport interface CacheStats {\r\n totalEntries: number\r\n totalClasses: number\r\n totalSizeBytes: number\r\n avgClassesPerEntry: number\r\n mostUsedClasses: Array<{ class: string; count: number }>\r\n}\r\n\r\n/**\r\n * Rust in-memory cache — hot path untuk per-file lookup saat scan.\r\n * Jauh lebih cepat dari disk JSON cache untuk file yang baru saja di-scan.\r\n */\r\nexport const hotCache = {\r\n get: scanCacheGet,\r\n put: scanCachePut,\r\n invalidate: scanCacheInvalidate,\r\n} as const\r\n\r\n/**\r\n * Stats dari Rust in-memory cache (DashMap).\r\n * `size` = jumlah entry saat ini di cache.\r\n */\r\nexport function getHotCacheStats(): { size: number } {\r\n return scanCacheStats()\r\n}\r\n\r\n/**\r\n * Compute disk cache stats dari entries (diperlukan untuk mostUsedClasses).\r\n * Native scanCacheStats hanya return size — detail stats tetap dari disk cache entries.\r\n */\r\n/**\r\n * Compute disk cache stats dari entries (diperlukan untuk mostUsedClasses).\r\n *\r\n * Native-first: Rust HashMap count + partial sort — ~3× lebih cepat\r\n * dari JS Map untuk workspace besar (5000+ entries).\r\n * JS fallback: manual Map count + .sort().\r\n */\r\nexport function computeCacheStats(entries: NativeCacheEntry[]): CacheStats {\r\n if (entries.length === 0) {\r\n return { totalEntries: 0, totalClasses: 0, totalSizeBytes: 0, avgClassesPerEntry: 0, mostUsedClasses: [] }\r\n }\r\n\r\n // Native-first\r\n const nativeResult = computeCacheStatsNative(\r\n entries.map((e) => e.classes),\r\n entries.map((e) => e.size),\r\n 10\r\n )\r\n\r\n if (nativeResult !== null) {\r\n return {\r\n totalEntries: nativeResult.totalEntries,\r\n totalClasses: nativeResult.totalClasses,\r\n totalSizeBytes: nativeResult.totalSizeBytes,\r\n avgClassesPerEntry: nativeResult.avgClassesPerEntryX100 / 100,\r\n mostUsedClasses: nativeResult.mostUsedClasses,\r\n }\r\n }\r\n\r\n throw new Error(\"FATAL: Native binding 'computeCacheStats' is required but not available.\")\r\n}","/**\r\n * Native parallel scanner menggunakan worker threads + Rust batchExtractClasses.\r\n *\r\n * Untuk workspaces besar (200+ files), file-list dibagi ke beberapa worker.\r\n * Setiap worker memanggil native `batchExtractClasses` yang sudah memakai\r\n * rayon par_iter di sisi Rust — sehingga parallelism terjadi di dua level:\r\n * 1. Multiple worker threads (TS/Node level)\r\n * 2. rayon par_iter di dalam setiap worker (Rust level)\r\n *\r\n * Untuk workspace kecil (< PARALLEL_THRESHOLD), langsung panggil batchExtractClasses\r\n * di main thread — overhead spawn worker tidak worth it.\r\n */\r\n\r\nimport { Worker, isMainThread, parentPort, workerData } from \"node:worker_threads\"\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { availableParallelism } from \"node:os\"\r\nimport { fileURLToPath } from \"node:url\"\r\n\r\nimport { isScannableFile, DEFAULT_EXTENSIONS, DEFAULT_IGNORES } from \"./index\"\r\nimport { batchExtractClassesNative, collectFilesNative, rebuildWorkspaceResultNative } from \"./native-bridge\"\r\nimport type { ScanWorkspaceResult, ScanFileResult } from \"./types\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Constants\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nconst PARALLEL_THRESHOLD = 50\r\nconst DEFAULT_CHUNK_SIZE = 150\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Types\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface ParallelScanOptions {\r\n extensions?: string[]\r\n ignoreDirs?: string[]\r\n maxWorkers?: number\r\n chunkSize?: number\r\n}\r\n\r\ninterface NativeBatchResult {\r\n file: string\r\n classes: string[]\r\n content_hash: string\r\n ok: boolean\r\n error?: string | null\r\n}\r\n\r\ninterface WorkerInput {\r\n filePaths: string[]\r\n}\r\n\r\ntype WorkerOutput =\r\n | { ok: true; results: NativeBatchResult[] }\r\n | { ok: false; error: string }\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// File collection\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// File collection — native-first, JS fallback\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Kumpulkan semua file yang cocok secara rekursif dari rootDir.\r\n *\r\n * Native: satu Rust walk tanpa JS event loop overhead — 2–5× lebih cepat\r\n * untuk workspace besar. Tidak membaca konten file, hanya paths.\r\n *\r\n * JS fallback: dipakai jika native binding tidak tersedia (mis. test env).\r\n */\r\nfunction collectFiles(rootDir: string, extensions: string[], ignoreDirs: string[]): string[] {\r\n // Native-first: satu NAPI call menggantikan seluruh rekursi JS\r\n const native = collectFilesNative(rootDir, extensions, ignoreDirs)\r\n if (native !== null) return native\r\n\r\n // JS fallback\r\n const files: string[] = []\r\n\r\n function walk(dir: string): void {\r\n let entries: fs.Dirent[]\r\n try {\r\n entries = fs.readdirSync(dir, { withFileTypes: true })\r\n } catch {\r\n return\r\n }\r\n for (const entry of entries) {\r\n const fullPath = path.join(dir, entry.name)\r\n const rel = path.relative(rootDir, fullPath)\r\n if (entry.isDirectory()) {\r\n const ignored = ignoreDirs.some((d) => entry.name === d || rel.startsWith(d + path.sep))\r\n if (!ignored) walk(fullPath)\r\n } else if (isScannableFile(entry.name, extensions)) {\r\n files.push(fullPath)\r\n }\r\n }\r\n }\r\n\r\n walk(rootDir)\r\n return files\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Merge results\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nfunction mergeResults(batchResults: NativeBatchResult[]): ScanWorkspaceResult {\r\n const files: ScanFileResult[] = batchResults.map((r) => ({\r\n file: r.file,\r\n classes: r.classes,\r\n hash: r.content_hash,\r\n }))\r\n // Native-first: Rust HashSet dedup + sort_unstable (satu pass, zero GC)\r\n const native = rebuildWorkspaceResultNative(files)\r\n if (native) return native\r\n // Fallback — hanya aktif jika binding belum loaded (e.g. test env)\r\n const unique = new Set(files.flatMap((f) => f.classes))\r\n return { files, totalFiles: files.length, uniqueClasses: Array.from(unique).sort() }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Worker thread entry point\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nif (!isMainThread && parentPort) {\r\n const { filePaths } = workerData as WorkerInput\r\n try {\r\n const results = batchExtractClassesNative(filePaths)\r\n const msg: WorkerOutput = { ok: true, results }\r\n parentPort.postMessage(msg)\r\n } catch (error) {\r\n const msg: WorkerOutput = {\r\n ok: false,\r\n error: error instanceof Error ? error.message : String(error),\r\n }\r\n parentPort.postMessage(msg)\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// __filename compat CJS + ESM\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\ndeclare const __filename: string | undefined\r\nconst _workerFilename =\r\n typeof __filename !== \"undefined\" ? __filename : fileURLToPath(import.meta.url)\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Spawn worker for one chunk\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nfunction runChunkInWorker(filePaths: string[]): Promise<NativeBatchResult[]> {\r\n return new Promise((resolve, reject) => {\r\n const worker = new Worker(_workerFilename, {\r\n workerData: { filePaths } satisfies WorkerInput,\r\n })\r\n worker.once(\"message\", (payload: WorkerOutput) => {\r\n if (payload.ok) {\r\n resolve(payload.results)\r\n } else {\r\n reject(new Error(payload.error ?? \"parallel-scanner worker failed\"))\r\n }\r\n })\r\n worker.once(\"error\", reject)\r\n worker.once(\"exit\", (code) => {\r\n if (code !== 0) reject(new Error(`parallel-scanner worker exited with code ${code}`))\r\n })\r\n })\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Public API\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport async function scanWorkspaceParallel(\r\n rootDir: string,\r\n options: ParallelScanOptions = {}\r\n): Promise<ScanWorkspaceResult> {\r\n const {\r\n extensions = DEFAULT_EXTENSIONS,\r\n ignoreDirs = DEFAULT_IGNORES,\r\n maxWorkers = Math.max(1, availableParallelism() - 1),\r\n chunkSize = DEFAULT_CHUNK_SIZE,\r\n } = options\r\n\r\n const files = collectFiles(path.resolve(rootDir), extensions, ignoreDirs)\r\n\r\n if (files.length < PARALLEL_THRESHOLD) {\r\n return mergeResults(batchExtractClassesNative(files))\r\n }\r\n\r\n const chunks: string[][] = []\r\n for (let i = 0; i < files.length; i += chunkSize) {\r\n chunks.push(files.slice(i, i + chunkSize))\r\n }\r\n\r\n const allResults: NativeBatchResult[] = []\r\n for (let i = 0; i < chunks.length; i += maxWorkers) {\r\n const batch = chunks.slice(i, i + maxWorkers)\r\n const batchResults = await Promise.all(batch.map(runChunkInWorker))\r\n allResults.push(...batchResults.flat())\r\n }\r\n\r\n return mergeResults(allResults)\r\n}","import { z } from \"zod\"\r\nimport { TwError } from \"@tailwind-styled/shared\"\r\n\r\nconst formatIssuePath = (path: readonly PropertyKey[]): string =>\r\n path.length > 0\r\n ? path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n : \"<root>\"\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const path = formatIssuePath(issue.path)\r\n return `${path}: ${issue.message}`\r\n })\r\n .join(\"; \")\r\n\r\nconst parseWithSchema = <T>(schema: z.ZodType<T>, data: unknown, label: string): T => {\r\n const parsed = schema.safeParse(data)\r\n if (parsed.success) return parsed.data\r\n const details = formatIssues(parsed.error)\r\n throw new TwError(\r\n \"validation\",\r\n \"SCHEMA_VALIDATION_FAILED\",\r\n details ? `${label}: ${details}` : label,\r\n parsed.error\r\n )\r\n}\r\n\r\nconst NonNegativeIntegerSchema = z.number().int().min(0)\r\n\r\nexport const ScanWorkspaceOptionsSchema = z.object({\r\n includeExtensions: z.array(z.string()).optional(),\r\n ignoreDirectories: z.array(z.string()).optional(),\r\n useCache: z.boolean().optional(),\r\n cacheDir: z.string().min(1).optional(),\r\n smartInvalidation: z.boolean().optional(),\r\n})\r\n\r\nexport type ScanWorkspaceOptions = z.infer<typeof ScanWorkspaceOptionsSchema>\r\n\r\nexport const ScanFileResultSchema = z.object({\r\n file: z.string(),\r\n classes: z.array(z.string()),\r\n hash: z.string().optional(),\r\n})\r\n\r\nexport type ScanFileResult = z.infer<typeof ScanFileResultSchema>\r\n\r\nexport const ScanWorkspaceResultSchema = z\r\n .object({\r\n files: z.array(ScanFileResultSchema),\r\n totalFiles: NonNegativeIntegerSchema,\r\n uniqueClasses: z.array(z.string()),\r\n })\r\n .refine((value) => value.totalFiles === value.files.length, {\r\n message: \"scan result totalFiles must match files.length\",\r\n path: [\"totalFiles\"],\r\n })\r\n\r\nexport type ScanWorkspaceResult = z.infer<typeof ScanWorkspaceResultSchema>\r\n\r\nexport const ScannerWorkerRequestSchema = z.object({\r\n rootDir: z.string().min(1),\r\n options: ScanWorkspaceOptionsSchema.optional(),\r\n})\r\n\r\nexport type ScannerWorkerRequest = z.infer<typeof ScannerWorkerRequestSchema>\r\n\r\nexport const ScannerWorkerSuccessMessageSchema = z.object({\r\n ok: z.literal(true),\r\n result: ScanWorkspaceResultSchema,\r\n})\r\n\r\nexport const ScannerWorkerErrorMessageSchema = z.object({\r\n ok: z.literal(false),\r\n error: z.string().optional(),\r\n})\r\n\r\nexport const ScannerWorkerMessageSchema = z.union([\r\n ScannerWorkerSuccessMessageSchema,\r\n ScannerWorkerErrorMessageSchema,\r\n])\r\n\r\nexport type ScannerWorkerMessage = z.infer<typeof ScannerWorkerMessageSchema>\r\n\r\nexport const parseScanWorkspaceOptions = (options: unknown) =>\r\n parseWithSchema(ScanWorkspaceOptionsSchema, options ?? {}, \"scanner options are invalid\")\r\n\r\nexport const parseScanFileResult = (result: unknown) =>\r\n parseWithSchema(ScanFileResultSchema, result, \"scanner file result is invalid\")\r\n\r\nexport const parseScanWorkspaceResult = (result: unknown) =>\r\n parseWithSchema(ScanWorkspaceResultSchema, result, \"scanner workspace result is invalid\")\r\n\r\nexport const parseScannerWorkerRequest = (request: unknown) =>\r\n parseWithSchema(ScannerWorkerRequestSchema, request, \"scanner worker request is invalid\")\r\n\r\nexport const parseScannerWorkerMessage = (message: unknown) =>\r\n parseWithSchema(ScannerWorkerMessageSchema, message, \"scanner worker message is invalid\")\r\n","import fs from \"node:fs\"\r\nimport { createRequire } from \"node:module\"\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport { Worker } from \"node:worker_threads\"\r\nimport { createLogger } from \"@tailwind-styled/shared\"\r\nimport { filePriority, type NativeCacheEntry, readCache, writeCache } from \"./cache-native\"\r\nimport { hashContentNative, isRustCacheAvailable } from \"./native-bridge\"\r\nimport { scanWorkspaceParallel } from \"./parallel-scanner\"\r\nimport {\r\n parseScannerWorkerMessage,\r\n parseScanWorkspaceOptions,\r\n parseScanWorkspaceResult,\r\n type ScanFileResult,\r\n type ScanWorkspaceOptions,\r\n type ScanWorkspaceResult,\r\n} from \"./schemas\"\r\n\r\nconst log = createLogger(\"scanner\")\r\n\r\nconst SCAN_WORKER_TIMEOUT_MS = 120_000\r\n\r\ntype NativeParsedClass = { raw?: string }\r\n// ClassExtractResult shape dari Rust (napi-rs export)\r\ntype NativeClassExtractResult = {\r\n classes: string[]\r\n componentNames: string[]\r\n hasTwUsage: boolean\r\n hasUseClient: boolean\r\n imports: string[]\r\n}\r\ntype NativeParserBinding = {\r\n parse_classes?: (input: string) => NativeParsedClass[]\r\n parseClasses?: (input: string) => NativeParsedClass[]\r\n // Rust returns ClassExtractResult object, bukan plain string[]\r\n extractClassesFromSource?: (source: string) => NativeClassExtractResult | string[] | null\r\n batchExtractClassesNative?: (filePaths: string[]) => Array<{\r\n file: string; classes: string[]; contentHash: string; ok: boolean; error?: string\r\n }>\r\n}\r\n\r\nfunction getRuntimeDir(): string {\r\n if (typeof __dirname !== \"undefined\" && __dirname.length > 0) {\r\n return __dirname\r\n }\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return path.dirname(fileURLToPath(import.meta.url))\r\n }\r\n return process.cwd()\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Parser Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createNativeParserLoader = () => {\r\n const _state = {\r\n binding: undefined as NativeParserBinding | null | undefined,\r\n initError: null as string | null,\r\n }\r\n\r\n const debugNative = (message: string): void => {\r\n log.debug(`[native] ${message}`)\r\n }\r\n\r\n const loadNativeParserBinding = (): NativeParserBinding | null => {\r\n if (_state.binding !== undefined) return _state.binding\r\n\r\n const runtimeDir = getRuntimeDir()\r\n const req = createRequire(path.join(runtimeDir, \"noop.cjs\"))\r\n\r\n const candidates = [\r\n // ── binaryName baru: tailwind-styled-native (napi-rs naming) ──\r\n // cwd = repo root saat run dari root, atau package dir saat workspaces\r\n path.resolve(process.cwd(), \"native\", \"tailwind-styled-native.node\"),\r\n path.resolve(process.cwd(), \"native\", `tailwind-styled-native.${process.platform}-${process.arch}.node`),\r\n path.resolve(process.cwd(), \"native\", `tailwind-styled-native.${process.platform}-${process.arch}-gnu.node`),\r\n // runtimeDir = dist/ → naik 4 level ke repo root\r\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", \"tailwind-styled-native.node\"),\r\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `tailwind-styled-native.${process.platform}-${process.arch}-gnu.node`),\r\n // 3 level fallback (jika package di-nest lebih dangkal)\r\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind-styled-native.node\"),\r\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", `tailwind-styled-native.${process.platform}-${process.arch}-gnu.node`),\r\n // ── binaryName lama: tailwind_styled_parser (backward compat) ──\r\n path.resolve(process.cwd(), \"native/tailwind_styled_parser.node\"),\r\n path.resolve(process.cwd(), \"native/build/Release/tailwind_styled_parser.node\"),\r\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\r\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\r\n path.resolve(\r\n runtimeDir,\r\n \"..\",\r\n \"..\",\r\n \"..\",\r\n \"native\",\r\n \"build\",\r\n \"Release\",\r\n \"tailwind_styled_parser.node\"\r\n ),\r\n ]\r\n\r\n for (const fullPath of candidates) {\r\n if (!fs.existsSync(fullPath)) continue\r\n try {\r\n const required = req(fullPath) as NativeParserBinding\r\n if (\r\n required &&\r\n (typeof required.extractClassesFromSource === \"function\" ||\r\n typeof required.parseClasses === \"function\" ||\r\n typeof required.parse_classes === \"function\")\r\n ) {\r\n _state.binding = required\r\n debugNative(`using native parser from ${fullPath}`)\r\n return _state.binding\r\n }\r\n } catch (error) {\r\n _state.initError = error instanceof Error ? error.message : String(error)\r\n }\r\n }\r\n\r\n _state.binding = null\r\n if (!_state.initError) {\r\n _state.initError = \"native .node binding not found\"\r\n }\r\n debugNative(`native binding not available: ${_state.initError}`)\r\n return _state.binding\r\n }\r\n\r\n return {\r\n get: loadNativeParserBinding,\r\n reset: (): void => {\r\n _state.binding = undefined\r\n _state.initError = null\r\n },\r\n }\r\n}\r\n\r\nconst nativeParserLoader = createNativeParserLoader()\r\n\r\nfunction normalizeWithNativeParser(tokens: string[]): string[] {\r\n const binding = nativeParserLoader.get()\r\n const parseClasses = binding?.parseClasses ?? binding?.parse_classes\r\n if (!binding || typeof parseClasses !== \"function\") {\r\n throw new Error(\r\n \"Native parser binding is required but not available. Run 'npm run build:rust' to build it.\"\r\n )\r\n }\r\n\r\n try {\r\n const parsed = parseClasses(tokens.join(\" \"))\r\n const normalized = parsed.map((item) => item.raw?.trim() ?? \"\").filter(Boolean)\r\n return Array.from(new Set(normalized))\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error)\r\n throw new Error(`Native parser failed: ${errorMessage}. Run 'npm run build:rust' to rebuild.`)\r\n }\r\n}\r\n\r\nexport type { ScanFileResult, ScanWorkspaceOptions, ScanWorkspaceResult } from \"./schemas\"\r\nexport {\r\n parseScannerWorkerMessage,\r\n parseScanWorkspaceOptions,\r\n parseScanWorkspaceResult,\r\n} from \"./schemas\"\r\n\r\nexport const DEFAULT_EXTENSIONS = [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"]\r\nexport const DEFAULT_IGNORES = [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"]\r\n\r\nfunction resolveScannerWorkerModulePath(): string | null {\r\n const runtimeDir = (() => {\r\n if (typeof __dirname !== \"undefined\" && __dirname.length > 0) {\r\n return __dirname\r\n }\r\n // ESM fallback\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return path.dirname(fileURLToPath(import.meta.url))\r\n }\r\n // Final fallback\r\n return process.cwd()\r\n })()\r\n\r\n const candidates = [\r\n path.resolve(runtimeDir, \"worker.cjs\"),\r\n path.resolve(runtimeDir, \"worker.js\"),\r\n path.resolve(runtimeDir, \"worker.ts\"),\r\n ]\r\n\r\n for (const candidate of candidates) {\r\n if (fs.existsSync(candidate)) return candidate\r\n }\r\n\r\n return null\r\n}\r\n\r\nfunction scanWorkspaceInWorker(\r\n rootDir: string,\r\n options: ScanWorkspaceOptions\r\n): Promise<ScanWorkspaceResult> {\r\n const normalizedOptions = parseScanWorkspaceOptions(options)\r\n const modulePath = resolveScannerWorkerModulePath()\r\n if (!modulePath) {\r\n return Promise.reject(new Error(\"scanner worker module path could not be resolved\"))\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const settleState = { settled: false }\r\n\r\n const worker = new Worker(modulePath, { workerData: { rootDir, options: normalizedOptions } })\r\n\r\n const timeout = setTimeout(() => {\r\n if (!settleState.settled) {\r\n settleState.settled = true\r\n void worker.terminate()\r\n reject(new Error(`scanner worker timed out after ${SCAN_WORKER_TIMEOUT_MS}ms`))\r\n }\r\n }, SCAN_WORKER_TIMEOUT_MS)\r\n\r\n const finish = (callback: () => void) => {\r\n if (settleState.settled) return\r\n settleState.settled = true\r\n clearTimeout(timeout)\r\n callback()\r\n }\r\n\r\n worker.once(\"message\", (payload: unknown) => {\r\n const message = parseScannerWorkerMessage(payload)\r\n finish(() => {\r\n if (message?.ok) {\r\n resolve(parseScanWorkspaceResult(message.result))\r\n return\r\n }\r\n reject(new Error(message?.error ?? \"scanner worker failed without an error message\"))\r\n })\r\n })\r\n\r\n worker.once(\"error\", (error: Error) => {\r\n finish(() => reject(error))\r\n })\r\n\r\n worker.once(\"exit\", (code: number) => {\r\n if (code !== 0) {\r\n finish(() => reject(new Error(`scanner worker exited with code ${code}`)))\r\n }\r\n })\r\n })\r\n}\r\n\r\nfunction buildExtensionSet(includeExtensions: string[]): Set<string> {\r\n return new Set(includeExtensions)\r\n}\r\n\r\nfunction collectCandidates(\r\n rootDir: string,\r\n ignoreDirectories: Set<string>,\r\n extensionSet: Set<string>\r\n): string[] {\r\n const candidates: string[] = []\r\n const directories = [rootDir]\r\n\r\n while (directories.length > 0) {\r\n const currentDir = directories.pop()\r\n if (!currentDir) continue\r\n\r\n const entries = (() => {\r\n try {\r\n return fs.readdirSync(currentDir, { withFileTypes: true })\r\n } catch {\r\n return [] as fs.Dirent[]\r\n }\r\n })()\r\n\r\n for (const entry of entries) {\r\n const fullPath = path.join(currentDir, entry.name)\r\n\r\n if (entry.isDirectory()) {\r\n if (!ignoreDirectories.has(entry.name)) directories.push(fullPath)\r\n continue\r\n }\r\n\r\n if (!entry.isFile()) continue\r\n if (!extensionSet.has(path.extname(entry.name))) continue\r\n candidates.push(fullPath)\r\n }\r\n }\r\n\r\n return candidates\r\n}\r\n\r\nfunction toCacheSize(size: number): number {\r\n if (!Number.isFinite(size)) return 0\r\n const normalized = Math.max(0, Math.trunc(size))\r\n return Math.min(normalized, 0xffffffff)\r\n}\r\n\r\nexport function scanSource(source: string): string[] {\r\n const nativeBinding = nativeParserLoader.get()\r\n if (nativeBinding?.extractClassesFromSource) {\r\n const result = nativeBinding.extractClassesFromSource(source)\r\n // Rust mengembalikan ClassExtractResult { classes: string[], ... }\r\n // bukan plain string[] — handle kedua kemungkinan untuk backward compat\r\n if (Array.isArray(result)) {\r\n return Array.from(new Set(result.filter(Boolean)))\r\n }\r\n if (result !== null && result !== undefined && Array.isArray((result as NativeClassExtractResult).classes)) {\r\n return Array.from(new Set((result as NativeClassExtractResult).classes.filter(Boolean)))\r\n }\r\n }\r\n\r\n throw new Error(\r\n \"FATAL: Native parser binding is required but not available.\\n\" +\r\n \"This package requires native Rust bindings.\\n\\n\" +\r\n \"Resolution steps:\\n\" +\r\n \"1. Build the native Rust module: npm run build:rust\"\r\n )\r\n}\r\n\r\nexport function isScannableFile(filePath: string, includeExtensions = DEFAULT_EXTENSIONS): boolean {\r\n return includeExtensions.includes(path.extname(filePath))\r\n}\r\n\r\nexport function scanFile(filePath: string): ScanFileResult {\r\n const { scanFileNative } = require(\"./native-bridge\")\r\n const result = scanFileNative(filePath) as {\r\n file: string; classes: string[]; hash: string; ok: boolean; error?: string | null\r\n }\r\n if (!result.ok) {\r\n throw new Error(`scanFile failed for ${filePath}: ${result.error ?? \"unknown error\"}`)\r\n }\r\n return {\r\n file: result.file,\r\n classes: result.classes,\r\n ...(result.hash ? { hash: result.hash } : {}),\r\n }\r\n}\r\n\r\nexport function scanWorkspace(\r\n rootDir: string,\r\n options: ScanWorkspaceOptions = {}\r\n): ScanWorkspaceResult {\r\n const normalizedOptions = parseScanWorkspaceOptions(options)\r\n const includeExtensions = normalizedOptions.includeExtensions ?? DEFAULT_EXTENSIONS\r\n const extensionSet = buildExtensionSet(includeExtensions)\r\n const ignoreDirectories = new Set(normalizedOptions.ignoreDirectories ?? DEFAULT_IGNORES)\r\n const useCache = normalizedOptions.useCache ?? true\r\n const _smartInvalidation = normalizedOptions.smartInvalidation ?? true\r\n\r\n const files: ScanFileResult[] = []\r\n const unique = new Set<string>()\r\n const candidates = collectCandidates(rootDir, ignoreDirectories, extensionSet)\r\n\r\n const processResult = (result: ScanFileResult) => {\r\n files.push(result)\r\n for (const cls of result.classes) unique.add(cls)\r\n }\r\n\r\n \r\n const { scanWorkspaceNative } = require(\"./native-bridge\")\r\n\r\n if (!normalizedOptions.cacheDir && !useCache) {\r\n const nativeResult = scanWorkspaceNative(rootDir, includeExtensions)\r\n if (nativeResult) {\r\n return parseScanWorkspaceResult({\r\n files: nativeResult.files.map((f: { file: string; classes: string[]; hash?: string }) => ({\r\n file: f.file,\r\n classes: f.classes,\r\n ...(f.hash ? { hash: f.hash } : {}),\r\n })),\r\n totalFiles: nativeResult.totalFiles,\r\n uniqueClasses: nativeResult.uniqueClasses,\r\n })\r\n }\r\n }\r\n\r\n if (useCache && isRustCacheAvailable()) {\r\n const cacheEntries: NativeCacheEntry[] = (() => {\r\n try {\r\n return readCache(rootDir, normalizedOptions.cacheDir)\r\n } catch (error) {\r\n log.debug(\r\n `cache read failed, continuing without persisted cache: ${\r\n error instanceof Error ? error.message : String(error)\r\n }`\r\n )\r\n return []\r\n }\r\n })()\r\n\r\n const cacheMap = new Map(cacheEntries.map((entry) => [entry.file, entry]))\r\n const nowMs = Date.now()\r\n const ranked: Array<{\r\n filePath: string\r\n stat: fs.Stats\r\n size: number\r\n cached?: NativeCacheEntry\r\n priority: number\r\n }> = []\r\n\r\n for (const filePath of candidates) {\r\n const stat = (() => {\r\n try {\r\n return fs.statSync(filePath)\r\n } catch {\r\n return null\r\n }\r\n })()\r\n if (!stat) continue\r\n\r\n const size = toCacheSize(stat.size)\r\n const cached = cacheMap.get(filePath)\r\n const priority = filePriority(\r\n stat.mtimeMs,\r\n size,\r\n cached\r\n ? {\r\n mtimeMs: cached.mtimeMs,\r\n size: cached.size,\r\n hitCount: cached.hitCount,\r\n lastSeenMs: 0,\r\n }\r\n : undefined,\r\n nowMs\r\n )\r\n\r\n ranked.push({ filePath, stat, size, cached, priority })\r\n }\r\n\r\n ranked.sort((a, b) => b.priority - a.priority)\r\n\r\n const updatedEntries: NativeCacheEntry[] = []\r\n\r\n for (const { filePath, stat, size, cached } of ranked) {\r\n const content = (() => {\r\n try {\r\n return fs.readFileSync(filePath, \"utf8\")\r\n } catch {\r\n return null\r\n }\r\n })()\r\n if (!content) continue\r\n\r\n const hash = hashContentNative(content)\r\n if (\r\n cached &&\r\n cached.hash === hash &&\r\n cached.mtimeMs === stat.mtimeMs &&\r\n cached.size === size\r\n ) {\r\n log.debug(`cache HIT ${filePath}`)\r\n processResult({ file: filePath, classes: cached.classes })\r\n updatedEntries.push({\r\n file: filePath,\r\n classes: cached.classes,\r\n hash: cached.hash,\r\n mtimeMs: stat.mtimeMs,\r\n size,\r\n hitCount: (cached.hitCount ?? 0) + 1,\r\n })\r\n continue\r\n }\r\n\r\n log.debug(`cache MISS ${filePath}`)\r\n const classes = scanSource(content)\r\n processResult({ file: filePath, classes })\r\n updatedEntries.push({\r\n file: filePath,\r\n classes,\r\n hash,\r\n mtimeMs: stat.mtimeMs,\r\n size,\r\n hitCount: 1,\r\n })\r\n }\r\n\r\n try {\r\n writeCache(rootDir, updatedEntries, normalizedOptions.cacheDir)\r\n } catch (error) {\r\n log.debug(`cache write failed: ${error instanceof Error ? error.message : String(error)}`)\r\n }\r\n\r\n return parseScanWorkspaceResult({\r\n files,\r\n totalFiles: files.length,\r\n uniqueClasses: Array.from(unique).sort(),\r\n })\r\n }\r\n\r\n // Fast path: gunakan Rust batch extraction jika tersedia (parallel, tanpa GC)\r\n const batchNative = nativeParserLoader.get()?.batchExtractClassesNative\r\n if (batchNative) {\r\n const batchResults = batchNative(candidates)\r\n for (const r of batchResults ?? []) {\r\n if (r.ok) processResult({ file: r.file, classes: r.classes })\r\n }\r\n } else {\r\n for (const filePath of candidates) {\r\n processResult(scanFile(filePath))\r\n }\r\n }\r\n\r\n return parseScanWorkspaceResult({\r\n files,\r\n totalFiles: files.length,\r\n uniqueClasses: Array.from(unique).sort(),\r\n })\r\n}\r\n\r\nexport async function scanWorkspaceAsync(\r\n rootDir: string,\r\n options: ScanWorkspaceOptions = {}\r\n): Promise<ScanWorkspaceResult> {\r\n const normalizedOptions = parseScanWorkspaceOptions(options)\r\n\r\n // Large workspaces: use native parallel scanner (multiple workers + Rust rayon)\r\n try {\r\n return await scanWorkspaceParallel(rootDir, {\r\n extensions: normalizedOptions.includeExtensions,\r\n ignoreDirs: normalizedOptions.ignoreDirectories,\r\n }) as ScanWorkspaceResult\r\n } catch (parallelError) {\r\n log.debug(\r\n `parallel scan failed, retrying with single worker: ${\r\n parallelError instanceof Error ? parallelError.message : String(parallelError)\r\n }`\r\n )\r\n }\r\n\r\n // Fallback: single worker thread (still native)\r\n try {\r\n return await scanWorkspaceInWorker(rootDir, normalizedOptions)\r\n } catch (error) {\r\n log.debug(\r\n `worker scan failed, retrying with sync native scanner: ${\r\n error instanceof Error ? error.message : String(error)\r\n }`\r\n )\r\n return scanWorkspace(rootDir, normalizedOptions)\r\n }\r\n}\r\nexport { extractClassesNative, batchExtractClassesNative } from \"./native-bridge\"","import fs from \"node:fs\"\r\nimport { createDebugLogger } from \"@tailwind-styled/shared\"\r\n\r\nexport const DEFAULT_TOP_LIMIT = 10\r\nexport const DEFAULT_FREQUENT_THRESHOLD = 2\r\nexport const DEBUG_NAMESPACE = \"tailwind-styled:analyzer\"\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n return error instanceof Error ? error.message : String(error)\r\n}\r\n\r\nexport function isRecord(value: unknown): value is Record<string, unknown> {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nexport async function pathExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.promises.access(filePath, fs.constants.F_OK)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport const debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\")\r\n\r\nexport function sanitizeTopLimit(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n\r\nexport function sanitizeFrequentThreshold(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n","import {\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n resolveRuntimeDir,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nimport type { NativeAnalyzerBinding, NativeCssCompilerBinding } from \"./types\"\r\nimport { debugLog } from \"./utils\"\r\n\r\nconst isAnalyzerModule = (module: unknown): module is NativeAnalyzerBinding => {\r\n const candidate = module as Partial<NativeAnalyzerBinding> | null | undefined\r\n return typeof candidate?.analyzeClasses === \"function\"\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Analyzer Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createAnalyzerBindingLoader = () => {\r\n const _state = { bindingPromise: null as Promise<NativeAnalyzerBinding | null> | null }\r\n\r\n const getBindingPromise = (): Promise<NativeAnalyzerBinding | null> => {\r\n if (_state.bindingPromise) return _state.bindingPromise\r\n\r\n _state.bindingPromise = (async (): Promise<NativeAnalyzerBinding | null> => {\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { binding, loadErrors, loadedPath } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n if (binding) {\r\n debugLog(`native binding loaded from: ${loadedPath}`)\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n debugLog(\r\n `native binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\r\n .map((entry) => `${entry.path} (${entry.message})`)\r\n .join(\"; \")}`\r\n )\r\n } else {\r\n debugLog(\"native binding not found in any candidate path\")\r\n }\r\n\r\n return null\r\n })()\r\n\r\n return _state.bindingPromise\r\n }\r\n\r\n return {\r\n get: getBindingPromise,\r\n reset: (): void => {\r\n _state.bindingPromise = null\r\n },\r\n }\r\n}\r\n\r\nconst analyzerBindingLoader = createAnalyzerBindingLoader()\r\n\r\nexport async function getNativeBinding(): Promise<NativeAnalyzerBinding | null> {\r\n return analyzerBindingLoader.get()\r\n}\r\n\r\nexport async function requireNativeBinding(): Promise<NativeAnalyzerBinding> {\r\n const binding = await analyzerBindingLoader.get()\r\n if (binding?.analyzeClasses) return binding\r\n\r\n // Untuk error reporting, kita perlu akses ke candidates dan loadErrors\r\n // Tapi karena async, kita perlu load ulang atau simpan state\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { loadErrors } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n const lines = [\r\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\",\r\n ]\r\n\r\n lines.push(\"Checked paths:\")\r\n for (const candidate of candidates) lines.push(`- ${candidate}`)\r\n if (loadErrors.length > 0) {\r\n lines.push(\"Load errors:\")\r\n for (const failure of loadErrors) {\r\n lines.push(`- ${failure.path}: ${failure.message}`)\r\n }\r\n }\r\n\r\n throw new Error(lines.join(\"\\n\"))\r\n}\r\n\r\nexport async function requireNativeCssCompiler(): Promise<NativeCssCompilerBinding> {\r\n const binding = await requireNativeBinding()\r\n if (typeof binding.compileCss === \"function\") return binding as NativeCssCompilerBinding\r\n\r\n throw new Error(`Native analyzer compileCss binding is missing.`)\r\n}\r\n","import { TwError } from \"@tailwind-styled/shared\"\r\nimport type { ScanWorkspaceOptions } from \"@tailwind-styled/scanner\"\r\nimport { z } from \"zod\"\r\n\r\nconst formatIssuePath = (path: readonly PropertyKey[]): string =>\r\n path.length > 0\r\n ? path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n : \"<root>\"\r\n\r\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const path = formatIssuePath(issue.path)\r\n return `${path}: ${issue.message}`\r\n })\r\n .join(\"; \")\r\n\r\nconst parseWithSchema = <T>(schema: z.ZodType<T>, data: unknown, label: string): T => {\r\n const parsed = schema.safeParse(data)\r\n if (parsed.success) return parsed.data\r\n const details = formatIssues(parsed.error)\r\n throw new TwError(\r\n \"validation\",\r\n \"SCHEMA_VALIDATION_FAILED\",\r\n details ? `${label}: ${details}` : label,\r\n parsed.error\r\n )\r\n}\r\n\r\nconst CountSchema = z.number().int().min(0)\r\n\r\nexport const ClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n isUnused: z.boolean().optional(),\r\n isConflict: z.boolean().optional(),\r\n})\r\n\r\nexport const ClassConflictSchema = z.object({\r\n className: z.string(),\r\n variants: z.array(z.string()),\r\n classes: z.array(z.string()),\r\n message: z.string(),\r\n})\r\n\r\nconst ClassCountSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n})\r\n\r\nexport const NativeReportSchema = z.object({\r\n root: z.string(),\r\n totalFiles: CountSchema,\r\n uniqueClassCount: CountSchema,\r\n totalClassOccurrences: CountSchema,\r\n topClasses: z.array(ClassCountSchema),\r\n duplicateCandidates: z.array(ClassCountSchema),\r\n safelist: z.array(z.string()),\r\n})\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unknownClasses: z.array(z.string()),\r\n sizeBytes: CountSchema,\r\n})\r\n\r\nconst AnalyzerClassStatsSchema = z.object({\r\n top: z\r\n .number({\r\n error: \"analyzeWorkspace options.classStats.top must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n frequentThreshold: z\r\n .number({\r\n error:\r\n \"analyzeWorkspace options.classStats.frequentThreshold must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n})\r\n\r\nconst AnalyzerSemanticOptionsSchema = z.object({\r\n tailwindConfigPath: z\r\n .string({\r\n error:\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\",\r\n })\r\n .min(\r\n 1,\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const AnalyzerOptionsSchema = z.object({\r\n scanner: z\r\n .custom<ScanWorkspaceOptions>(\r\n (value) => isPlainObject(value),\r\n \"analyzeWorkspace options.scanner must be an object when provided.\"\r\n )\r\n .optional(),\r\n classStats: AnalyzerClassStatsSchema.optional(),\r\n semantic: z\r\n .union([\r\n z.boolean({\r\n error: \"analyzeWorkspace options.semantic must be a boolean or an object when provided.\",\r\n }),\r\n AnalyzerSemanticOptionsSchema,\r\n ])\r\n .optional(),\r\n includeClass: z\r\n .custom<(className: string) => boolean>(\r\n (value) => typeof value === \"function\",\r\n \"analyzeWorkspace options.includeClass must be a function when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const ClassToCssOptionsSchema = z.object({\r\n prefix: z\r\n .union([z.string(), z.null()], {\r\n error: \"classToCss options.prefix must be a string or null when provided.\",\r\n })\r\n .optional(),\r\n strict: z\r\n .boolean({\r\n error: \"classToCss options.strict must be a boolean when provided.\",\r\n })\r\n .optional(),\r\n})\r\n\r\nexport const parseAnalyzerOptions = (options: unknown) =>\r\n parseWithSchema(AnalyzerOptionsSchema, options ?? {}, \"analyzeWorkspace options are invalid\")\r\n\r\nexport const parseNativeReport = (report: unknown) =>\r\n parseWithSchema(NativeReportSchema, report, \"Native analyzer report is invalid\")\r\n\r\nexport const parseNativeCssCompileResult = (result: unknown, className?: string) =>\r\n parseWithSchema(\r\n NativeCssCompileResultSchema,\r\n result,\r\n className\r\n ? `Native CSS compile result is invalid for class \"${className}\"`\r\n : \"Native CSS compile result is invalid\"\r\n )\r\n\r\nexport const parseClassToCssOptions = (options: unknown) =>\r\n parseWithSchema(ClassToCssOptionsSchema, options ?? {}, \"classToCss options are invalid\")\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { pathToFileURL } from \"node:url\"\r\n\r\nimport type {\r\n AnalyzerSemanticReport,\r\n ClassConflict,\r\n ClassUsage,\r\n LoadedTailwindConfig,\r\n TailwindConfigCacheEntry,\r\n} from \"./types\"\r\nimport { getNativeBinding } from \"./binding\"\r\nimport { debugLog, formatErrorMessage, isRecord, pathExists } from \"./utils\"\r\n\r\n\r\nconst SUPPORTED_TAILWIND_CONFIG_EXTENSIONS = new Set([\".ts\", \".js\", \".cjs\", \".mjs\"])\r\n\r\nconst tailwindConfigCache = new Map<string, TailwindConfigCacheEntry>()\r\n\r\nexport const splitVariantAndBase = (className: string): { variantKey: string; base: string } => {\r\n const parts = className.split(\":\")\r\n if (parts.length <= 1) return { variantKey: \"\", base: className }\r\n const base = parts.pop() ?? className\r\n return { variantKey: parts.join(\":\"), base }\r\n}\r\n\r\nconst isArbitraryUtility = (baseClass: string): boolean => {\r\n return baseClass.includes(\"[\") && baseClass.includes(\"]\")\r\n}\r\n\r\nexport const resolveConflictGroup = (base: string): string | null => {\r\n if (isArbitraryUtility(base)) return null\r\n if ([\"block\", \"inline\", \"inline-block\", \"inline-flex\", \"flex\", \"grid\", \"hidden\"].includes(base))\r\n return \"display\"\r\n if (base.startsWith(\"bg-\")) return \"bg\"\r\n if (base.startsWith(\"text-\")) return \"text\"\r\n if (base.startsWith(\"font-\")) return \"font\"\r\n if (base.startsWith(\"rounded\")) return \"rounded\"\r\n if (base.startsWith(\"shadow\")) return \"shadow\"\r\n if (base.startsWith(\"border-\")) return \"border\"\r\n if (base.startsWith(\"opacity-\")) return \"opacity\"\r\n if (base.startsWith(\"w-\") || base.startsWith(\"min-w-\") || base.startsWith(\"max-w-\"))\r\n return \"width\"\r\n if (base.startsWith(\"h-\") || base.startsWith(\"min-h-\") || base.startsWith(\"max-h-\"))\r\n return \"height\"\r\n if (base.startsWith(\"p-\") || base.startsWith(\"px-\") || base.startsWith(\"py-\")) return \"padding\"\r\n if (base.startsWith(\"m-\") || base.startsWith(\"mx-\") || base.startsWith(\"my-\")) return \"margin\"\r\n return null\r\n}\r\n\r\nconst detectConflicts = async (\r\n usages: ClassUsage[]\r\n): Promise<{\r\n conflicts: ClassConflict[]\r\n conflictedClassNames: Set<string>\r\n}> => {\r\n // Native-first: Rust HashSet conflict detection (required)\r\n const native = await getNativeBinding()\r\n if (!native?.detectClassConflicts) {\r\n throw new Error(\"FATAL: Native binding 'detectClassConflicts' is required but not available.\")\r\n }\r\n const result = native.detectClassConflicts(JSON.stringify(usages.map((u) => ({ name: u.name, count: u.count }))))\r\n return {\r\n conflicts: result.conflicts.map((c) => ({\r\n className: c.group,\r\n variants: c.variantKey.length > 0 ? c.variantKey.split(\":\") : [],\r\n classes: c.classes,\r\n message: c.message,\r\n })),\r\n conflictedClassNames: new Set(result.conflictedClassNames),\r\n }\r\n}\r\n\r\nconst isSupportedTailwindConfigPath = (configPath: string): boolean => {\r\n return SUPPORTED_TAILWIND_CONFIG_EXTENSIONS.has(path.extname(configPath).toLowerCase())\r\n}\r\n\r\nconst resolveTailwindConfigPath = async (\r\n root: string,\r\n explicitPath?: string\r\n): Promise<string | null> => {\r\n if (explicitPath) {\r\n const resolved = path.resolve(root, explicitPath)\r\n if (!(await pathExists(resolved))) return null\r\n return resolved\r\n }\r\n\r\n const candidates = [\r\n \"tailwind.config.ts\",\r\n \"tailwind.config.js\",\r\n \"tailwind.config.cjs\",\r\n \"tailwind.config.mjs\",\r\n ]\r\n\r\n for (const candidate of candidates) {\r\n const fullPath = path.resolve(root, candidate)\r\n if (await pathExists(fullPath)) return fullPath\r\n }\r\n\r\n return null\r\n}\r\n\r\nconst collectSafelistFromConfig = (config: Record<string, unknown>): string[] => {\r\n const raw = config.safelist\r\n if (!Array.isArray(raw)) return []\r\n\r\n const out = new Set<string>()\r\n for (const entry of raw) {\r\n if (typeof entry === \"string\" && entry.length > 0) {\r\n out.add(entry)\r\n continue\r\n }\r\n if (!entry || typeof entry !== \"object\") continue\r\n const pattern = (entry as Record<string, unknown>).pattern\r\n if (typeof pattern === \"string\" && pattern.length > 0) {\r\n out.add(pattern)\r\n }\r\n }\r\n\r\n return Array.from(out)\r\n}\r\n\r\nconst collectCustomUtilities = (config: Record<string, unknown>): Set<string> => {\r\n const out = new Set<string>()\r\n const theme = config.theme\r\n if (!theme || typeof theme !== \"object\") return out\r\n\r\n const extend = (theme as Record<string, unknown>).extend\r\n if (!extend || typeof extend !== \"object\") return out\r\n\r\n for (const [section, value] of Object.entries(extend as Record<string, unknown>)) {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) continue\r\n for (const key of Object.keys(value as Record<string, unknown>)) {\r\n out.add(`${section}-${key}`)\r\n if (section === \"colors\") {\r\n out.add(`bg-${key}`)\r\n out.add(`text-${key}`)\r\n out.add(`border-${key}`)\r\n } else if (section === \"spacing\") {\r\n out.add(`p-${key}`)\r\n out.add(`m-${key}`)\r\n out.add(`gap-${key}`)\r\n out.add(`w-${key}`)\r\n out.add(`h-${key}`)\r\n } else if (section === \"fontSize\") {\r\n out.add(`text-${key}`)\r\n } else if (section === \"borderRadius\") {\r\n out.add(`rounded-${key}`)\r\n } else if (section === \"boxShadow\") {\r\n out.add(`shadow-${key}`)\r\n }\r\n }\r\n }\r\n\r\n return out\r\n}\r\n\r\nconst collectSafelistFromSource = async (configPath: string): Promise<string[]> => {\r\n const source = await fs.promises.readFile(configPath, \"utf8\")\r\n\r\n // Gunakan native AST parser untuk ekstrak string literals dari config\r\n // Lebih akurat dari regex — handle template literals, multiline, nested quotes\r\n const { extractClassesNative } = await import(\"@tailwind-styled/scanner\")\r\n const allTokens = extractClassesNative(source)\r\n\r\n // Filter hanya token yang berasal dari safelist block\r\n // Native parse sudah return semua string value — kita cek apakah safelist array ada di source\r\n const hasSafelist = source.includes(\"safelist\")\r\n if (!hasSafelist) return []\r\n\r\n // Ambil baris-baris safelist dari source untuk batasi scope\r\n const safelistMatch = source.match(/safelist\\s*:\\s*\\[([\\s\\S]*?)\\]/m)?.[1]\r\n if (!safelistMatch) return []\r\n\r\n // Cross-reference: hanya return token yang muncul di dalam safelist block\r\n const safelistSet = new Set<string>()\r\n for (const token of safelistMatch.matchAll(/[\"'`]([^\"'`]+)[\"'`]/g)) {\r\n const value = token[1].trim()\r\n if (value.length > 0) safelistSet.add(value)\r\n }\r\n\r\n // Intersect dengan native extracted tokens untuk validasi\r\n return allTokens.filter((t: string) => safelistSet.has(t))\r\n}\r\n\r\nconst loadTailwindConfig = async (\r\n root: string,\r\n semanticOption?: { tailwindConfigPath?: string }\r\n): Promise<LoadedTailwindConfig | null> => {\r\n const startMs = Date.now()\r\n const configPath = await resolveTailwindConfigPath(root, semanticOption?.tailwindConfigPath)\r\n if (!configPath) return null\r\n\r\n if (!isSupportedTailwindConfigPath(configPath)) {\r\n return {\r\n path: configPath,\r\n loaded: false,\r\n warning: `Unsupported Tailwind config extension at \"${configPath}\". Supported extensions: .ts, .js, .cjs, .mjs.`,\r\n safelist: new Set<string>(),\r\n customUtilities: new Set<string>(),\r\n }\r\n }\r\n\r\n const configStat = await fs.promises.stat(configPath).catch(() => null)\r\n if (configStat) {\r\n const cached = tailwindConfigCache.get(configPath)\r\n if (cached && cached.mtimeMs === configStat.mtimeMs && cached.size === configStat.size) {\r\n debugLog(\r\n `tailwind config cache hit: ${configPath} (${cached.config.safelist.size} safelist entries)`\r\n )\r\n return cached.config\r\n }\r\n }\r\n\r\n const result = await (async (): Promise<{\r\n config: Record<string, unknown> | null\r\n warning: string | undefined\r\n }> => {\r\n try {\r\n const cacheBustToken = Math.trunc(configStat?.mtimeMs ?? Date.now())\r\n const imported = await import(`${pathToFileURL(configPath).href}?tws_mtime=${cacheBustToken}`)\r\n const candidate = (imported.default ?? imported) as unknown\r\n if (isRecord(candidate)) {\r\n return { config: candidate, warning: undefined }\r\n } else if (typeof candidate === \"function\") {\r\n const evaluated = candidate()\r\n if (isRecord(evaluated)) {\r\n return { config: evaluated, warning: undefined }\r\n }\r\n return { config: null, warning: \"Tailwind config export function must return an object.\" }\r\n }\r\n return {\r\n config: null,\r\n warning: \"Tailwind config export must be an object or a function returning an object.\",\r\n }\r\n } catch (error) {\r\n return { config: null, warning: formatErrorMessage(error) }\r\n }\r\n })()\r\n\r\n const { config, warning } = result\r\n\r\n const safelist = new Set<string>()\r\n const customUtilities = new Set<string>()\r\n\r\n if (config) {\r\n for (const item of collectSafelistFromConfig(config)) safelist.add(item)\r\n for (const item of collectCustomUtilities(config)) customUtilities.add(item)\r\n }\r\n\r\n if (safelist.size === 0) {\r\n try {\r\n for (const item of await collectSafelistFromSource(configPath)) safelist.add(item)\r\n } catch (error) {\r\n debugLog(\r\n `failed to parse safelist from source at \"${configPath}\": ${formatErrorMessage(error)}`\r\n )\r\n // keep empty if source parsing fails\r\n }\r\n }\r\n\r\n const loaded = {\r\n path: configPath,\r\n loaded: config !== null,\r\n warning,\r\n safelist,\r\n customUtilities,\r\n }\r\n\r\n if (configStat) {\r\n tailwindConfigCache.set(configPath, {\r\n mtimeMs: configStat.mtimeMs,\r\n size: configStat.size,\r\n config: loaded,\r\n })\r\n }\r\n\r\n debugLog(\r\n `tailwind config loaded from \"${configPath}\" in ${Date.now() - startMs}ms ` +\r\n `(loaded=${loaded.loaded}, safelist=${loaded.safelist.size}, custom=${loaded.customUtilities.size})`\r\n )\r\n\r\n return loaded\r\n }\r\n\r\nexport const utilityPrefix = (baseClass: string): string => {\r\n const normalized = baseClass.startsWith(\"-\") ? baseClass.slice(1) : baseClass\r\n if (normalized.includes(\"[\") && normalized.includes(\"]\")) return \"arbitrary\"\r\n if (normalized.startsWith(\"min-w-\")) return \"min-w\"\r\n if (normalized.startsWith(\"max-w-\")) return \"max-w\"\r\n if (normalized.startsWith(\"min-h-\")) return \"min-h\"\r\n if (normalized.startsWith(\"max-h-\")) return \"max-h\"\r\n if (normalized.startsWith(\"space-x-\")) return \"space-x\"\r\n if (normalized.startsWith(\"space-y-\")) return \"space-y\"\r\n if (normalized.startsWith(\"inline-\")) return \"inline\"\r\n if (normalized.startsWith(\"border-\")) return \"border\"\r\n if (normalized.startsWith(\"text-\")) return \"text\"\r\n if (normalized.startsWith(\"bg-\")) return \"bg\"\r\n if (normalized.startsWith(\"rounded\")) return \"rounded\"\r\n if (normalized.startsWith(\"shadow\")) return \"shadow\"\r\n const hyphen = normalized.indexOf(\"-\")\r\n if (hyphen < 0) return normalized\r\n return normalized.slice(0, hyphen)\r\n}\r\n\r\nexport const buildSemanticReport = async (\r\n usages: ClassUsage[],\r\n root: string,\r\n semanticOption?: { tailwindConfigPath?: string }\r\n): Promise<AnalyzerSemanticReport> => {\r\n const loadedConfig = await loadTailwindConfig(root, semanticOption)\r\n const safelist = loadedConfig?.safelist ?? new Set<string>()\r\n const customUtilities = loadedConfig?.customUtilities ?? new Set<string>()\r\n const usageNames = new Set(usages.map((usage) => usage.name))\r\n\r\n const unusedClasses: ClassUsage[] = Array.from(safelist)\r\n .filter((className) => !usageNames.has(className))\r\n .sort()\r\n .map((className) => ({ name: className, count: 0, isUnused: true }))\r\n\r\n // ── Unknown classes — native-first (required) ─────────────────────────────\r\n const native = await getNativeBinding()\r\n if (!native?.classifyKnownClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyKnownClasses' is required but not available.\")\r\n }\r\n const classNames = usages.map((u) => u.name)\r\n const results = native.classifyKnownClasses(\r\n classNames,\r\n Array.from(safelist),\r\n Array.from(customUtilities)\r\n )\r\n const unknownSet = new Set(\r\n results\r\n .filter((r: { className: string; isKnown: boolean }) => !r.isKnown)\r\n .map((r: { className: string; isKnown: boolean }) => r.className)\r\n )\r\n const unknownClasses = usages\r\n .filter((usage) => unknownSet.has(usage.name))\r\n .map((usage) => ({ ...usage, isUnused: true }))\r\n\r\n const { conflicts } = await detectConflicts(usages)\r\n\r\n return {\r\n unusedClasses,\r\n unknownClasses,\r\n conflicts,\r\n ...(loadedConfig\r\n ? {\r\n tailwindConfig: {\r\n path: loadedConfig.path,\r\n loaded: loadedConfig.loaded,\r\n safelistCount: loadedConfig.safelist.size,\r\n customUtilityCount: loadedConfig.customUtilities.size,\r\n ...(loadedConfig.warning ? { warning: loadedConfig.warning } : {}),\r\n },\r\n }\r\n : {}),\r\n }\r\n}","import path from \"node:path\"\r\n\r\nimport type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\r\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\r\n\r\nimport { requireNativeBinding } from \"./binding\"\r\nimport { parseAnalyzerOptions, parseNativeReport } from \"./schemas\"\r\nimport { buildSemanticReport } from \"./semantic\"\r\nimport type { AnalyzerOptions, AnalyzerReport, ClassUsage } from \"./types\"\r\nimport { debugLog, formatErrorMessage, sanitizeFrequentThreshold, sanitizeTopLimit } from \"./utils\"\r\n\r\nfunction normalizeScan(\r\n scan: ScanWorkspaceResult,\r\n includeClass?: (className: string) => boolean\r\n): ScanWorkspaceResult {\r\n if (!includeClass) return scan\r\n\r\n const filteredFiles = scan.files.map((file) => ({\r\n file: file.file,\r\n classes: file.classes.filter((className) => includeClass(className)),\r\n }))\r\n\r\n const unique = new Set<string>()\r\n for (const file of filteredFiles) {\r\n for (const className of file.classes) {\r\n unique.add(className)\r\n }\r\n }\r\n\r\n return {\r\n files: filteredFiles,\r\n totalFiles: scan.totalFiles,\r\n uniqueClasses: Array.from(unique).sort(),\r\n }\r\n}\r\n\r\nexport async function collectClassCounts(scan: ScanWorkspaceResult): Promise<Map<string, number>> {\r\n const native = await requireNativeBinding()\r\n if (!native?.collectClassCounts) {\r\n throw new Error(\"FATAL: Native binding 'collectClassCounts' is required but not available.\")\r\n }\r\n const filesJson = JSON.stringify(\r\n scan.files.map((f) => ({ file: f.file ?? \"\", classes: f.classes }))\r\n )\r\n const result = native.collectClassCounts(filesJson) as Array<{ name: string; count: number }>\r\n const counts = new Map<string, number>()\r\n for (const entry of result) counts.set(entry.name, entry.count)\r\n return counts\r\n}\r\n\r\nfunction buildClassUsage(counts: Map<string, number>): ClassUsage[] {\r\n return Array.from(counts.entries())\r\n .map(([name, count]) => ({ name, count }))\r\n .sort((left, right) => {\r\n if (right.count !== left.count) return right.count - left.count\r\n return left.name.localeCompare(right.name)\r\n })\r\n}\r\n\r\nexport async function buildDistribution(\r\n usages: ClassUsage[],\r\n native?: Awaited<ReturnType<typeof requireNativeBinding>>\r\n): Promise<Record<string, number>> {\r\n const binding = native ?? (await requireNativeBinding())\r\n if (!binding?.buildDistribution) {\r\n throw new Error(\"FATAL: Native binding 'buildDistribution' is required but not available.\")\r\n }\r\n const result = binding.buildDistribution(\r\n JSON.stringify(usages.map((u) => ({ name: u.name, count: u.count })))\r\n ) as { once: number; few: number; moderate: number; frequent: number }\r\n return {\r\n \"1\": result.once,\r\n \"2-3\": result.few,\r\n \"4-7\": result.moderate,\r\n \"8+\": result.frequent,\r\n }\r\n}\r\n\r\n/**\r\n * Analyze Tailwind class usage in a workspace and return usage statistics.\r\n * Set `semantic.tailwindConfigPath` to override Tailwind config lookup.\r\n * @example\r\n * const report = await analyzeWorkspace(\"./src\", {\r\n * classStats: { top: 20, frequentThreshold: 2 },\r\n * semantic: { tailwindConfigPath: \"tailwind.config.js\" },\r\n * })\r\n */\r\nexport async function analyzeWorkspace(\r\n root: string,\r\n options: AnalyzerOptions = {}\r\n): Promise<AnalyzerReport> {\r\n const startedAtMs = Date.now()\r\n const resolvedRoot = path.resolve(root)\r\n const normalizedOptions = parseAnalyzerOptions(options)\r\n\r\n // 1. Scan workspace - const dengan IIFE async\r\n const scan = await (async () => {\r\n const scanStartedAtMs = Date.now()\r\n try {\r\n const result = await scanWorkspaceAsync(resolvedRoot, normalizedOptions.scanner)\r\n debugLog(\r\n `scanWorkspaceAsync processed ${result.totalFiles} files in ${Date.now() - scanStartedAtMs}ms`\r\n )\r\n return result\r\n } catch (error) {\r\n throw new Error(\r\n `Failed to scan workspace at \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\r\n {\r\n cause: error,\r\n }\r\n )\r\n }\r\n })()\r\n\r\n const normalizedScan = normalizeScan(scan, normalizedOptions.includeClass)\r\n const topLimit = sanitizeTopLimit(normalizedOptions.classStats?.top)\r\n const frequentThreshold = sanitizeFrequentThreshold(\r\n normalizedOptions.classStats?.frequentThreshold\r\n )\r\n\r\n const binding = await requireNativeBinding()\r\n const filesJson = JSON.stringify(\r\n normalizedScan.files.map((file) => ({ file: file.file, classes: file.classes }))\r\n )\r\n\r\n // 2. Native report - const dengan IIFE\r\n const nativeReport = (() => {\r\n try {\r\n const report = binding.analyzeClasses(filesJson, resolvedRoot, topLimit)\r\n if (!report) {\r\n throw new Error(`Native analyzer returned no report for \"${resolvedRoot}\".`)\r\n }\r\n return parseNativeReport(report)\r\n } catch (error) {\r\n throw new Error(\r\n `Native analyzer failed for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\r\n {\r\n cause: error,\r\n }\r\n )\r\n }\r\n })()\r\n\r\n const counts = await collectClassCounts(normalizedScan)\r\n const baseAll = buildClassUsage(counts)\r\n\r\n // 3. Semantic report - const dengan IIFE async\r\n const { all, semanticReport } = await (async () => {\r\n if (!normalizedOptions.semantic) {\r\n return { all: baseAll, semanticReport: undefined }\r\n }\r\n\r\n const semanticOption =\r\n typeof normalizedOptions.semantic === \"object\" ? normalizedOptions.semantic : undefined\r\n const semanticStartedAtMs = Date.now()\r\n\r\n try {\r\n const report = await buildSemanticReport(baseAll, resolvedRoot, semanticOption)\r\n debugLog(`semantic report built in ${Date.now() - semanticStartedAtMs}ms`)\r\n\r\n if (report.conflicts.length === 0) {\r\n return { all: baseAll, semanticReport: report }\r\n }\r\n\r\n const conflicted = new Set(report.conflicts.flatMap((conflict) => conflict.classes))\r\n const updatedAll = baseAll.map((usage) =>\r\n conflicted.has(usage.name) ? { ...usage, isConflict: true } : usage\r\n )\r\n return { all: updatedAll, semanticReport: report }\r\n } catch (error) {\r\n throw new Error(\r\n `Failed to build semantic report for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\r\n { cause: error }\r\n )\r\n }\r\n })()\r\n\r\n // 4. Statistics — native-first: satu pass Rust vs 4× JS iterations\r\n const classStatsNative = binding?.computeClassStats?.(\r\n JSON.stringify(all),\r\n topLimit,\r\n frequentThreshold\r\n )\r\n const top: typeof all = classStatsNative ? JSON.parse(classStatsNative.topJson) : all.slice(0, topLimit)\r\n const frequent: typeof all = classStatsNative ? JSON.parse(classStatsNative.frequentJson) : all.filter((usage) => usage.count >= frequentThreshold).slice(0, topLimit)\r\n const unique: typeof all = classStatsNative ? JSON.parse(classStatsNative.uniqueJson) : all.filter((usage) => usage.count === 1)\r\n const totalClassOccurrences: number = classStatsNative\r\n ? classStatsNative.totalClassOccurrences\r\n : all.reduce((sum, usage) => sum + usage.count, 0)\r\n\r\n debugLog(\r\n `analyzeWorkspace completed in ${Date.now() - startedAtMs}ms ` +\r\n `(files=${normalizedScan.totalFiles}, uniqueClasses=${all.length})`\r\n )\r\n\r\n const distribution = await buildDistribution(all, binding)\r\n\r\n return {\r\n root: nativeReport.root || resolvedRoot,\r\n totalFiles: nativeReport.totalFiles,\r\n uniqueClassCount: all.length,\r\n totalClassOccurrences,\r\n classStats: {\r\n all,\r\n top,\r\n frequent,\r\n unique,\r\n distribution,\r\n },\r\n // topClasses — alias for classStats.top (test contract & backward compat)\r\n topClasses: top,\r\n safelist: all.map((usage) => usage.name),\r\n ...(semanticReport ? { semantic: semanticReport } : {}),\r\n }\r\n}","import { requireNativeCssCompiler } from \"./binding\"\r\nimport { parseClassToCssOptions, parseNativeCssCompileResult } from \"./schemas\"\r\nimport type { ClassToCssOptions, ClassToCssResult } from \"./types\"\r\nimport { formatErrorMessage } from \"./utils\"\r\n\r\nexport const normalizeClassInput = (input: string | string[], _binding?: { normalizeClassInput?: (s: string) => string[] }): string[] => {\r\n // Native-first: untuk single string, delegate ke Rust yang lebih cepat\r\n if (typeof input === \"string\") {\r\n if (_binding?.normalizeClassInput) {\r\n return _binding.normalizeClassInput(input)\r\n }\r\n return input\r\n .split(/\\s+/)\r\n .map((item) => item.trim())\r\n .filter((item) => item.length > 0)\r\n }\r\n\r\n if (!Array.isArray(input)) {\r\n throw new TypeError(\"classToCss input must be a string or an array of strings.\")\r\n }\r\n\r\n const out: string[] = []\r\n for (const item of input) {\r\n if (typeof item !== \"string\") {\r\n throw new TypeError(\"classToCss input array must contain only strings.\")\r\n }\r\n const value = item.trim()\r\n if (value.length > 0) out.push(value)\r\n }\r\n return out\r\n}\r\n\r\nconst normalizeClassToCssOptions = (\r\n options: ClassToCssOptions\r\n): {\r\n prefix: string | null\r\n strict: boolean\r\n} => {\r\n const parsed = parseClassToCssOptions(options)\r\n const strict = parsed.strict ?? false\r\n const prefix = parsed.prefix ?? null\r\n\r\n return { prefix, strict }\r\n}\r\n\r\nconst mergeDeclarationMap = (\r\n target: Map<string, string>,\r\n css: string,\r\n binding: { parseCssRules?: (css: string) => Array<{ property: string; value: string; isImportant: boolean }> }\r\n): void => {\r\n if (!binding.parseCssRules) {\r\n throw new Error(\"FATAL: Native binding 'parseCssRules' is required but not available.\")\r\n }\r\n const rules = binding.parseCssRules(css)\r\n for (const rule of rules) {\r\n if (target.has(rule.property)) target.delete(rule.property)\r\n target.set(rule.property, rule.isImportant ? `${rule.value} !important` : rule.value)\r\n }\r\n}\r\n\r\nconst declarationMapToString = (\r\n declarationMap: Map<string, string>,\r\n binding?: { declarationMapToString?: (entries: Array<{ property: string; value: string }>) => string }\r\n): string => {\r\n // Native-first: serialize entries via Rust (satu allocation vs JS multiple)\r\n const entries = Array.from(declarationMap.entries()).map(([property, value]) => ({ property, value }))\r\n if (binding?.declarationMapToString) {\r\n return binding.declarationMapToString(entries)\r\n }\r\n // JS fallback\r\n return entries.map(({ property, value }) => `${property}: ${value}`).join(\"; \")\r\n}\r\n\r\n/**\r\n * Convert Tailwind class input into atomic CSS output via native binding.\r\n * @example\r\n * const css = await classToCss(\"opacity-0 translate-y-2\", { strict: true })\r\n */\r\nexport const classToCss = async (\r\n input: string | string[],\r\n options: ClassToCssOptions = {}\r\n): Promise<ClassToCssResult> => {\r\n const binding = await requireNativeCssCompiler()\r\n const inputClasses = normalizeClassInput(input, binding)\r\n const normalizedOptions = normalizeClassToCssOptions(options)\r\n\r\n if (inputClasses.length === 0) {\r\n return {\r\n inputClasses: [],\r\n css: \"\",\r\n declarations: \"\",\r\n resolvedClasses: [],\r\n unknownClasses: [],\r\n sizeBytes: 0,\r\n }\r\n }\r\n\r\n const prefix = normalizedOptions.prefix\r\n\r\n const results = await Promise.all(\r\n inputClasses.map(async (className) => {\r\n const compiled = (() => {\r\n try {\r\n return binding.compileCss([className], prefix)\r\n } catch (error) {\r\n throw new Error(\r\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\r\n { cause: error }\r\n )\r\n }\r\n })()\r\n\r\n if (!compiled) {\r\n throw new Error(`Native analyzer returned no result for class \"${className}\".`)\r\n }\r\n\r\n const validated = parseNativeCssCompileResult(compiled, className)\r\n\r\n return {\r\n className,\r\n css: validated.css,\r\n resolvedClasses: validated.resolvedClasses,\r\n unknownClasses: validated.unknownClasses,\r\n sizeBytes: validated.sizeBytes,\r\n }\r\n })\r\n )\r\n\r\n const cssChunks = results.map((r) => r.css)\r\n const resolvedClasses = results.flatMap((r) => r.resolvedClasses)\r\n const unknownClasses = results.flatMap((r) => r.unknownClasses)\r\n const sizeBytes = results.reduce((sum, r) => sum + r.sizeBytes, 0)\r\n\r\n const declarationMap = new Map<string, string>()\r\n for (const result of results) {\r\n mergeDeclarationMap(declarationMap, result.css, binding)\r\n }\r\n\r\n const uniqueUnknown = Array.from(new Set(unknownClasses))\r\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\r\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`)\r\n }\r\n\r\n return {\r\n inputClasses,\r\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\r\n declarations: declarationMapToString(declarationMap, binding),\r\n resolvedClasses: Array.from(new Set(resolvedClasses)),\r\n unknownClasses: uniqueUnknown,\r\n sizeBytes,\r\n }\r\n}","/**\r\n * @tailwind-styled/analyzer v5\r\n *\r\n * Native-first async analyzer with semantic reporting.\r\n */\r\n\r\nimport { analyzeWorkspace, buildDistribution, collectClassCounts } from \"./analyzeWorkspace\"\r\nimport { classToCss, normalizeClassInput } from \"./classToCss\"\r\nimport {\r\n parseAnalyzerOptions,\r\n parseClassToCssOptions,\r\n parseNativeCssCompileResult,\r\n parseNativeReport,\r\n} from \"./schemas\"\r\nimport { resolveConflictGroup, splitVariantAndBase, utilityPrefix } from \"./semantic\"\r\n\r\nexport type {\r\n AnalyzerOptions,\r\n AnalyzerReport,\r\n AnalyzerSemanticReport,\r\n ClassConflict,\r\n ClassToCssOptions,\r\n ClassToCssResult,\r\n ClassUsage,\r\n} from \"./types\"\r\n\r\nexport { analyzeWorkspace, classToCss }\r\n\r\n export const __internal = {\r\n normalizeClassInput,\r\n splitVariantAndBase,\r\n resolveConflictGroup,\r\n collectClassCounts,\r\n buildDistribution,\r\n utilityPrefix,\r\n parseAnalyzerOptions,\r\n parseClassToCssOptions,\r\n parseNativeReport,\r\n parseNativeCssCompileResult,\r\n }\r\n","import fs from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\n\r\nexport async function pathExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport async function readFileSafe(filePath: string): Promise<string | null> {\r\n try {\r\n return await fs.readFile(filePath, \"utf8\")\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nexport async function readJsonSafe<T>(filePath: string): Promise<T | null> {\r\n const raw = await readFileSafe(filePath)\r\n if (!raw) return null\r\n try {\r\n return JSON.parse(raw) as T\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nexport async function writeFileSafe(\r\n filePath: string,\r\n content: string,\r\n options: { dryRun?: boolean; onDryRun?: (message: string) => void } = {}\r\n): Promise<void> {\r\n if (options.dryRun) {\r\n options.onDryRun?.(`write ${filePath}`)\r\n return\r\n }\r\n await fs.mkdir(path.dirname(filePath), { recursive: true })\r\n await fs.writeFile(filePath, content, \"utf8\")\r\n}\r\n\r\nexport async function ensureFileSafe(\r\n filePath: string,\r\n content: string,\r\n options: { dryRun?: boolean; onDryRun?: (message: string) => void } = {}\r\n): Promise<\"created\" | \"skipped\"> {\r\n if (await pathExists(filePath)) return \"skipped\"\r\n await writeFileSafe(filePath, content, options)\r\n return \"created\"\r\n}\r\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export interface CliJsonSuccess<T = unknown> {\r\n ok: true\r\n error: false\r\n command: string\r\n generatedAt: string\r\n data: T\r\n}\r\n\r\nexport function toJsonSuccess<T>(command: string, data: T): string {\r\n const payload: CliJsonSuccess<T> = {\r\n ok: true,\r\n error: false,\r\n command,\r\n generatedAt: new Date().toISOString(),\r\n data,\r\n }\r\n return JSON.stringify(payload, null, 2)\r\n}\r\n\r\nexport function writeJsonSuccess<T>(command: string, data: T): void {\r\n process.stdout.write(`${toJsonSuccess(command, data)}\\n`)\r\n}\r\n","import type { Writable } from \"node:stream\"\r\nimport {\r\n intro as clackIntro,\r\n isTTY as clackIsTTY,\r\n note as clackNote,\r\n outro as clackOutro,\r\n spinner as clackSpinner,\r\n} from \"@clack/prompts\"\r\nimport pc from \"picocolors\"\r\n\r\nimport { errorToJson } from \"./errors\"\r\nimport { toJsonSuccess } from \"./json\"\r\n\r\nexport interface CliOutputOptions {\r\n json?: boolean\r\n debug?: boolean\r\n verbose?: boolean\r\n stdout?: Writable\r\n stderr?: Writable\r\n}\r\n\r\nexport interface CliSpinner {\r\n start: (message?: string) => void\r\n stop: (message?: string) => void\r\n error: (message?: string) => void\r\n cancel: (message?: string) => void\r\n message: (message?: string) => void\r\n clear: () => void\r\n}\r\n\r\nexport interface CliOutput {\r\n readonly json: boolean\r\n readonly debug: boolean\r\n readonly verboseEnabled: boolean\r\n readonly interactive: boolean\r\n writeText: (message?: string, options?: { stderr?: boolean }) => void\r\n info: (message: string) => void\r\n success: (message: string) => void\r\n warn: (message: string) => void\r\n error: (message: string) => void\r\n step: (message: string) => void\r\n note: (message: string, title?: string) => void\r\n intro: (message: string) => void\r\n outro: (message: string) => void\r\n table: (rows: unknown) => void\r\n spinner: () => CliSpinner\r\n verbose: (message: string) => void\r\n jsonSuccess: <T>(command: string, data: T) => void\r\n jsonError: (error: unknown, command?: string) => void\r\n header: (message: string) => void\r\n subHeader: (message: string) => void\r\n listItem: (message: string) => void\r\n footer: (message: string) => void\r\n}\r\n\r\nfunction writeLine(stream: Writable, message = \"\"): void {\r\n stream.write(`${message}\\n`)\r\n}\r\n\r\nfunction createNoopSpinner(): CliSpinner {\r\n return {\r\n start() {},\r\n stop() {},\r\n error() {},\r\n cancel() {},\r\n message() {},\r\n clear() {},\r\n }\r\n}\r\n\r\nfunction formatLabel(colorize: (value: string) => string, label: string, message: string): string {\r\n return `${colorize(label)} ${message}`\r\n}\r\n\r\nexport function createCliOutput(options: CliOutputOptions = {}): CliOutput {\r\n const stdout = options.stdout ?? process.stdout\r\n const stderr = options.stderr ?? process.stderr\r\n const json = Boolean(options.json)\r\n const debug = Boolean(options.debug)\r\n const verboseEnabled = Boolean(options.verbose)\r\n const interactive = !json && Boolean(process.stdin.isTTY) && clackIsTTY(stdout)\r\n\r\n function writeText(message = \"\", writeOptions: { stderr?: boolean } = {}): void {\r\n writeLine(writeOptions.stderr || json ? stderr : stdout, message)\r\n }\r\n\r\n function showClackMessage(fn: (message?: string) => void, fallback: string): void {\r\n if (interactive) {\r\n fn(fallback)\r\n return\r\n }\r\n writeText(fallback)\r\n }\r\n\r\n return {\r\n json,\r\n debug,\r\n verboseEnabled,\r\n interactive,\r\n writeText,\r\n info(message: string) {\r\n writeText(formatLabel(pc.cyan, \"info\", message))\r\n },\r\n success(message: string) {\r\n writeText(formatLabel(pc.green, \"ok\", message))\r\n },\r\n warn(message: string) {\r\n writeText(formatLabel(pc.yellow, \"warn\", message), { stderr: true })\r\n },\r\n error(message: string) {\r\n writeText(formatLabel(pc.red, \"error\", message), { stderr: true })\r\n },\r\n step(message: string) {\r\n writeText(formatLabel(pc.blue, \"step\", message))\r\n },\r\n note(message: string, title?: string) {\r\n if (interactive) {\r\n clackNote(message, title)\r\n return\r\n }\r\n if (title) {\r\n writeText(`${title}\\n${message}`)\r\n return\r\n }\r\n writeText(message)\r\n },\r\n intro(message: string) {\r\n showClackMessage(clackIntro, message)\r\n },\r\n outro(message: string) {\r\n showClackMessage(clackOutro, message)\r\n },\r\n table(rows: unknown) {\r\n writeText(JSON.stringify(rows, null, 2))\r\n },\r\n spinner() {\r\n if (!interactive) return createNoopSpinner()\r\n const instance = clackSpinner({ output: stdout })\r\n return {\r\n start(message?: string) {\r\n instance.start(message)\r\n },\r\n stop(message?: string) {\r\n instance.stop(message)\r\n },\r\n error(message?: string) {\r\n instance.error(message)\r\n },\r\n cancel(message?: string) {\r\n instance.cancel(message)\r\n },\r\n message(message?: string) {\r\n instance.message(message)\r\n },\r\n clear() {\r\n instance.clear()\r\n },\r\n }\r\n },\r\n verbose(message: string) {\r\n if (!verboseEnabled) return\r\n writeText(pc.dim(message), { stderr: true })\r\n },\r\n jsonSuccess<T>(command: string, data: T) {\r\n writeLine(stdout, toJsonSuccess(command, data))\r\n },\r\n jsonError(error: unknown, command?: string) {\r\n writeLine(stdout, errorToJson(error, debug, command))\r\n },\r\n header(message: string) {\r\n writeText(`\\n${pc.bold(pc.cyan(message))}\\n`)\r\n },\r\n subHeader(message: string) {\r\n writeText(pc.bold(message))\r\n },\r\n listItem(message: string) {\r\n writeText(` ${pc.dim(\"•\")} ${message}`)\r\n },\r\n footer(message: string) {\r\n writeText(`\\n${pc.dim(message)}\\n`)\r\n },\r\n }\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nexport interface ParsedCliInput {\r\n argv: string[]\r\n command: string | undefined\r\n restArgs: string[]\r\n json: boolean\r\n debug: boolean\r\n verbose: boolean\r\n help: boolean\r\n helpCommand: string | undefined\r\n}\r\n\r\nexport function readFlag(name: string, argv: string[]): string | null {\r\n const withValuePrefix = `--${name}=`\r\n\r\n for (let index = 0; index < argv.length; index++) {\r\n const arg = argv[index]\r\n if (arg.startsWith(withValuePrefix)) {\r\n return arg.slice(withValuePrefix.length)\r\n }\r\n if (arg === `--${name}`) {\r\n const next = argv[index + 1]\r\n if (next && !next.startsWith(\"-\")) {\r\n return next\r\n }\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function hasFlag(name: string, argv: string[]): boolean {\r\n return argv.includes(`--${name}`)\r\n}\r\n\r\nexport function ensureFlag(name: string, argv: string[]): string[] {\r\n return hasFlag(name, argv) ? argv : [...argv, `--${name}`]\r\n}\r\n\r\nexport function firstPositional(argv: string[]): string | undefined {\r\n return argv.find((arg) => !arg.startsWith(\"-\"))\r\n}\r\n\r\nexport function parseCliInput(argv: string[]): ParsedCliInput {\r\n const parsed = parseNodeArgs({\r\n args: argv,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n debug: { type: \"boolean\", default: false },\r\n verbose: { type: \"boolean\", default: false },\r\n help: { type: \"boolean\", short: \"h\", default: false },\r\n },\r\n })\r\n\r\n const commandIndex = argv.findIndex((arg) => !arg.startsWith(\"-\"))\r\n const command = commandIndex >= 0 ? argv[commandIndex] : undefined\r\n const restArgs = commandIndex >= 0 ? argv.slice(commandIndex + 1) : []\r\n const firstPositionalArg = parsed.positionals[0]\r\n const helpCommand =\r\n firstPositionalArg === \"help\"\r\n ? parsed.positionals[1]\r\n : parsed.values.help\r\n ? firstPositionalArg\r\n : undefined\r\n\r\n return {\r\n argv,\r\n command,\r\n restArgs,\r\n json: Boolean(parsed.values.json),\r\n debug:\r\n Boolean(parsed.values.debug) || process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose:\r\n Boolean(parsed.values.verbose) ||\r\n process.env.TWS_VERBOSE === \"1\" ||\r\n process.env.VERBOSE === \"1\",\r\n help:\r\n Boolean(parsed.values.help) ||\r\n firstPositionalArg === \"help\" ||\r\n command === undefined ||\r\n command === \"--help\" ||\r\n command === \"-h\",\r\n helpCommand,\r\n }\r\n}\r\n","import path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\n\r\nimport { CliUsageError } from \"./errors\"\r\nimport { pathExists } from \"./fs\"\r\n\r\nexport function runtimeDirFromImportMeta(importMetaUrl: string): string {\r\n const filename = fileURLToPath(importMetaUrl)\r\n return path.dirname(filename)\r\n}\r\n\r\nexport async function resolveMonorepoPath(\r\n runtimeDir: string,\r\n relativeToRepoRoot: string\r\n): Promise<string> {\r\n const fromRuntime = path.resolve(runtimeDir, \"..\", \"..\", \"..\", relativeToRepoRoot)\r\n const fromCwd = path.resolve(process.cwd(), relativeToRepoRoot)\r\n return (await pathExists(fromRuntime)) ? fromRuntime : fromCwd\r\n}\r\n\r\nexport async function ensureScriptPath(\r\n runtimeDir: string,\r\n relativeToRepoRoot: string,\r\n label = relativeToRepoRoot\r\n): Promise<string> {\r\n const resolved = await resolveMonorepoPath(runtimeDir, relativeToRepoRoot)\r\n if (!(await pathExists(resolved))) {\r\n throw new CliUsageError(`Required script not found: ${label}`)\r\n }\r\n return resolved\r\n}\r\n\r\nexport async function firstExistingPath(paths: string[]): Promise<string | null> {\r\n for (const candidate of paths) {\r\n if (await pathExists(candidate)) return candidate\r\n }\r\n return null\r\n}\r\n","import type { Command as CommanderCommand } from \"commander\"\r\nimport type { CommandContext } from \"../commands/types\"\r\nimport { parseCliInput } from \"./args\"\r\nimport { CliUsageError, errorExitCode } from \"./errors\"\r\nimport { createCliOutput } from \"./output\"\r\nimport { runtimeDirFromImportMeta } from \"./paths\"\r\n\r\ninterface CommanderLikeError extends Error {\r\n code?: string\r\n exitCode?: number\r\n}\r\n\r\nexport interface CliMainOptions {\r\n argv?: string[]\r\n importMetaUrl: string\r\n commandHint?: string\r\n buildProgram: (context: CommandContext) => CommanderCommand\r\n}\r\n\r\nconst isCommanderLikeError = (error: unknown): error is CommanderLikeError => {\r\n return error instanceof Error && typeof (error as CommanderLikeError).code === \"string\"\r\n}\r\n\r\nconst isHelpExit = (error: unknown): boolean => {\r\n return isCommanderLikeError(error) && error.code === \"commander.helpDisplayed\"\r\n}\r\n\r\nconst isVersionExit = (error: unknown): boolean => {\r\n return isCommanderLikeError(error) && error.code === \"commander.version\"\r\n}\r\n\r\nconst normalizeCliError = (error: unknown): unknown => {\r\n if (!isCommanderLikeError(error)) return error\r\n if (!error.code?.startsWith(\"commander.\")) return error\r\n return new CliUsageError(error.message, { cause: error })\r\n}\r\n\r\nconst findCommandByPath = (program: CommanderCommand, pathParts: string[]): CommanderCommand => {\r\n const foundCommand = pathParts.reduce<CommanderCommand>((current, part) => {\r\n const next = ((current.commands ?? []) as CommanderCommand[]).find((candidate) => {\r\n const alias = typeof candidate.alias === \"function\" ? candidate.alias() : undefined\r\n return candidate.name() === part || alias === part\r\n })\r\n\r\n if (!next) {\r\n throw new CliUsageError(`Unknown help topic: ${pathParts.join(\" \")}`)\r\n }\r\n return next\r\n }, program)\r\n\r\n return foundCommand\r\n}\r\n\r\nexport const resolveCommandHelp = (program: CommanderCommand, pathParts: string[]): string => {\r\n return findCommandByPath(program, pathParts).helpInformation()\r\n}\r\n\r\nconst resolveHelpPath = (argv: string[]): string[] | null => {\r\n const positional = argv.filter((arg) => !arg.startsWith(\"-\"))\r\n\r\n if (argv.length === 0) return []\r\n if (positional.length === 0) return []\r\n if (positional[0] === \"help\") return positional.slice(1)\r\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) return positional\r\n\r\n return null\r\n}\r\n\r\nconst walkCommands = (\r\n program: CommanderCommand,\r\n visit: (command: CommanderCommand) => void\r\n): void => {\r\n visit(program)\r\n for (const command of (program.commands ?? []) as CommanderCommand[]) {\r\n walkCommands(command, visit)\r\n }\r\n}\r\n\r\nexport async function runCliMain(options: CliMainOptions): Promise<void> {\r\n const argv = options.argv ?? process.argv\r\n const input = parseCliInput(argv.slice(2))\r\n\r\n // Redirect console logs to stderr in JSON mode BEFORE anything else\r\n if (input.json) {\r\n const _origLog = console.log\r\n const _origWarn = console.warn\r\n const _origDebug = console.debug\r\n const toStderr = (...args: unknown[]) => process.stderr.write(args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \") + \"\\n\")\r\n console.log = toStderr\r\n console.warn = toStderr\r\n console.debug = toStderr\r\n process.on(\"exit\", () => { console.log = _origLog; console.warn = _origWarn; console.debug = _origDebug })\r\n }\r\n\r\n if (input.verbose) process.env.TWS_VERBOSE = \"1\"\r\n if (input.debug) process.env.TWS_DEBUG = \"1\"\r\n\r\n const output = createCliOutput({\r\n json: input.json,\r\n debug: input.debug,\r\n verbose: input.verbose,\r\n })\r\n\r\n const context: CommandContext = {\r\n runtimeDir: runtimeDirFromImportMeta(options.importMetaUrl),\r\n json: input.json,\r\n debug: input.debug,\r\n verbose: input.verbose,\r\n output,\r\n cwd: process.cwd(),\r\n }\r\n\r\n const program = options.buildProgram(context)\r\n\r\n walkCommands(program, (command) => {\r\n if (input.json) {\r\n command.configureOutput({\r\n writeOut() {},\r\n writeErr() {},\r\n outputError() {},\r\n })\r\n }\r\n command.exitOverride()\r\n })\r\n\r\n try {\r\n const helpPath = resolveHelpPath(argv.slice(2))\r\n const isJsonHelp = input.json && helpPath\r\n\r\n if (isJsonHelp) {\r\n output.jsonSuccess(\"help\", {\r\n command: helpPath.length > 0 ? helpPath.join(\" \") : null,\r\n text: resolveCommandHelp(program, helpPath).trim(),\r\n })\r\n return\r\n }\r\n\r\n await program.parseAsync(argv)\r\n } catch (error) {\r\n const isHelpError = isHelpExit(error)\r\n const isVersionError = isVersionExit(error)\r\n if (isHelpError || isVersionError) return\r\n\r\n const normalized = normalizeCliError(error)\r\n const isJson = input.json\r\n\r\n if (isJson) {\r\n output.jsonError(normalized, options.commandHint ?? input.command)\r\n } else if (input.debug && normalized instanceof Error && normalized.stack) {\r\n output.writeText(normalized.stack, { stderr: true })\r\n } else if (normalized instanceof Error) {\r\n output.writeText(normalized.message, { stderr: true })\r\n } else {\r\n output.writeText(String(normalized), { stderr: true })\r\n }\r\n\r\n process.exitCode = errorExitCode(normalized)\r\n }\r\n}","#!/usr/bin/env node\r\n\r\nimport path from \"node:path\"\r\nimport { isCancel, select, text } from \"@clack/prompts\"\r\nimport { Command } from \"commander\"\r\n\r\nimport type { CommandContext } from \"./commands/types\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists, writeFileSafe } from \"./utils/fs\"\r\nimport { runCliMain } from \"./utils/runtime\"\r\n\r\nconst TEMPLATE_NAMES = [\"next-app\", \"vite-react\", \"vite-vue\", \"vite-svelte\", \"simple\"] as const\r\n\r\ntype TemplateName = (typeof TEMPLATE_NAMES)[number]\r\n\r\ninterface CreateCliOptions {\r\n name?: string\r\n template?: string\r\n yes: boolean\r\n dryRun: boolean\r\n}\r\n\r\ninterface CreateContext {\r\n projectDir: string\r\n name: string\r\n dryRun: boolean\r\n writtenFiles: string[]\r\n}\r\n\r\ninterface CreateReport {\r\n name: string\r\n template: TemplateName\r\n projectDir: string\r\n dryRun: boolean\r\n filesCreated: number\r\n files: string[]\r\n}\r\n\r\ntype TemplateHandler = (context: CreateContext) => Promise<void>\r\n\r\nconst TEMPLATES: Record<TemplateName, TemplateHandler> = {\r\n \"next-app\": createNextApp,\r\n \"vite-react\": createViteReactApp,\r\n \"vite-vue\": createViteVueApp,\r\n \"vite-svelte\": createViteSvelteApp,\r\n simple: createSimpleApp,\r\n}\r\n\r\nfunction isTemplateName(value: string): value is TemplateName {\r\n return TEMPLATE_NAMES.includes(value as TemplateName)\r\n}\r\n\r\nfunction isInteractiveSession(): boolean {\r\n return Boolean(process.stdin.isTTY && process.stdout.isTTY)\r\n}\r\n\r\nasync function resolveCreateInput(options: CreateCliOptions): Promise<{\r\n name: string\r\n template: TemplateName\r\n}> {\r\n const interactive = isInteractiveSession()\r\n const resolvedName = options.name\r\n ? options.name\r\n : options.yes || !interactive\r\n ? \"my-app\"\r\n : await text({\r\n message: \"Project name\",\r\n defaultValue: \"my-app\",\r\n placeholder: \"my-app\",\r\n })\r\n\r\n if (isCancel(resolvedName)) {\r\n throw new CliUsageError(\"Create prompt dibatalkan oleh pengguna\")\r\n }\r\n\r\n const pickedTemplate = options.template\r\n ? options.template\r\n : options.yes || !interactive\r\n ? \"next-app\"\r\n : await select<TemplateName>({\r\n message: \"Template\",\r\n initialValue: \"next-app\",\r\n options: TEMPLATE_NAMES.map((template) => ({\r\n value: template,\r\n label: template,\r\n })),\r\n })\r\n\r\n if (isCancel(pickedTemplate)) {\r\n throw new CliUsageError(\"Create prompt dibatalkan oleh pengguna\")\r\n }\r\n\r\n const templateValue = pickedTemplate\r\n\r\n if (!isTemplateName(templateValue)) {\r\n throw new CliUsageError(\r\n `Unknown template: ${templateValue}. Valid templates: ${TEMPLATE_NAMES.join(\", \")}`\r\n )\r\n }\r\n\r\n return { name: resolvedName, template: templateValue }\r\n}\r\n\r\nasync function writeProjectFile(\r\n context: CreateContext,\r\n relativePath: string,\r\n content: string\r\n): Promise<void> {\r\n const filePath = path.join(context.projectDir, relativePath)\r\n await writeFileSafe(filePath, content, { dryRun: context.dryRun })\r\n context.writtenFiles.push(relativePath.replaceAll(\"\\\\\", \"/\"))\r\n}\r\n\r\nasync function createNextApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n version: \"0.1.0\",\r\n private: true,\r\n scripts: { dev: \"next dev --turbopack\", build: \"next build\", start: \"next start\" },\r\n dependencies: {\r\n next: \"^15\",\r\n react: \"^19\",\r\n \"react-dom\": \"^19\",\r\n \"tailwind-styled-v4\": \"^5.0.0\",\r\n \"tailwind-styled-v4/next\": \"^5.0.0\",\r\n },\r\n devDependencies: {\r\n tailwindcss: \"^4\",\r\n typescript: \"^5\",\r\n \"@types/react\": \"^19\",\r\n \"@types/node\": \"^20\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"next.config.ts\",\r\n `import type { NextConfig } from \"next\"\r\nimport { withTailwindStyled } from \"tailwind-styled-v4/next\"\r\n\r\nconst nextConfig: NextConfig = {}\r\nexport default withTailwindStyled()(nextConfig)\r\n`\r\n )\r\n\r\n await writeProjectFile(context, \"src/app/globals.css\", '@import \"tailwindcss\";\\n')\r\n await writeProjectFile(\r\n context,\r\n \"src/app/layout.tsx\",\r\n `import \"./globals.css\"\r\n\r\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\r\n return <html lang=\"en\"><body>{children}</body></html>\r\n}\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/app/page.tsx\",\r\n `import { tw } from \"tailwind-styled-v4\"\r\n\r\nconst Page = tw.main\\`min-h-screen grid place-items-center bg-zinc-950 text-white\\`\r\n\r\nexport default function HomePage() {\r\n return <Page>${context.name}</Page>\r\n}\r\n`\r\n )\r\n}\r\n\r\nasync function createViteReactApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n private: true,\r\n type: \"module\",\r\n scripts: { dev: \"vite\", build: \"vite build\", preview: \"vite preview\" },\r\n dependencies: { react: \"^19\", \"react-dom\": \"^19\", \"tailwind-styled-v4\": \"^5.0.0\" },\r\n devDependencies: {\r\n \r\n vite: \"^6\",\r\n \"@vitejs/plugin-react\": \"^4\",\r\n tailwindcss: \"^4\",\r\n typescript: \"^5\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"vite.config.ts\",\r\n `import { defineConfig } from \"vite\"\r\nimport react from \"@vitejs/plugin-react\"\r\nimport { tailwindStyledPlugin } from \"tailwind-styled-v4/vite\"\r\n\r\nexport default defineConfig({ plugins: [react(), tailwindStyledPlugin()] })\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/main.tsx\",\r\n `console.log(\"${context.name} - vite react template\")\r\n`\r\n )\r\n}\r\n\r\nasync function createViteVueApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n private: true,\r\n type: \"module\",\r\n scripts: { dev: \"vite\", build: \"vite build\", preview: \"vite preview\" },\r\n dependencies: {\r\n vue: \"^3.4.0\",\r\n \"tailwind-styled-v4/vue\": \"^5.0.0\",\r\n },\r\n devDependencies: {\r\n vite: \"^5.0.0\",\r\n \"@vitejs/plugin-vue\": \"^5.0.0\",\r\n typescript: \"^5.0.0\",\r\n tailwindcss: \"^4.0.0\",\r\n \"@tailwindcss/vite\": \"^4.0.0\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"vite.config.ts\",\r\n `import { defineConfig } from \"vite\"\r\nimport vue from \"@vitejs/plugin-vue\"\r\nimport tailwindcss from \"@tailwindcss/vite\"\r\n\r\nexport default defineConfig({\r\n plugins: [vue(), tailwindcss()],\r\n})\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/main.ts\",\r\n `import { createApp } from \"vue\"\r\nimport { TailwindStyledPlugin } from \"tailwind-styled-v4/vue\"\r\nimport App from \"./App.vue\"\r\nimport \"./style.css\"\r\n\r\ncreateApp(App).use(TailwindStyledPlugin).mount(\"#app\")\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/App.vue\",\r\n `<script setup lang=\"ts\">\r\nimport { ref } from \"vue\"\r\nimport { tw } from \"tailwind-styled-v4/vue\"\r\n\r\nconst Button = tw(\"button\", {\r\n base: \"px-4 py-2 rounded-lg font-medium transition-colors focus:outline-none focus:ring-2\",\r\n variants: {\r\n intent: {\r\n primary: \"bg-blue-500 text-white hover:bg-blue-600 focus:ring-blue-500\",\r\n ghost: \"bg-transparent border border-gray-200 hover:bg-gray-50 focus:ring-gray-200\",\r\n },\r\n },\r\n defaultVariants: { intent: \"primary\" },\r\n})\r\n\r\nconst count = ref(0)\r\n</script>\r\n\r\n<template>\r\n <div class=\"min-h-screen flex flex-col items-center justify-center gap-6 bg-gray-50\">\r\n <h1 class=\"text-3xl font-bold text-gray-900\">tailwind-styled + Vue 3</h1>\r\n <Button @click=\"count++\">Count: {{ count }}</Button>\r\n <Button intent=\"ghost\" @click=\"count = 0\">Reset</Button>\r\n </div>\r\n</template>\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/style.css\",\r\n `@import \"tailwindcss\";\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"index.html\",\r\n `<!doctype html>\r\n<html lang=\"en\">\r\n <head><meta charset=\"UTF-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\r\n <title>${context.name}</title></head>\r\n <body><div id=\"app\"></div><script type=\"module\" src=\"/src/main.ts\"></script></body>\r\n</html>\r\n`\r\n )\r\n}\r\n\r\nasync function createViteSvelteApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n {\r\n name: context.name,\r\n private: true,\r\n type: \"module\",\r\n scripts: { dev: \"vite\", build: \"vite build\", preview: \"vite preview\" },\r\n dependencies: { \"tailwind-styled-v4/svelte\": \"^5.0.0\" },\r\n devDependencies: {\r\n svelte: \"^5.0.0\",\r\n \"@sveltejs/vite-plugin-svelte\": \"^3.0.0\",\r\n vite: \"^5.0.0\",\r\n typescript: \"^5.0.0\",\r\n tailwindcss: \"^4.0.0\",\r\n \"@tailwindcss/vite\": \"^4.0.0\",\r\n },\r\n },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"vite.config.ts\",\r\n `import { defineConfig } from \"vite\"\r\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\"\r\nimport tailwindcss from \"@tailwindcss/vite\"\r\n\r\nexport default defineConfig({\r\n plugins: [svelte(), tailwindcss()],\r\n})\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/main.ts\",\r\n `import App from \"./App.svelte\"\r\nimport \"./app.css\"\r\n\r\nconst app = new App({ target: document.getElementById(\"app\")! })\r\nexport default app\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/App.svelte\",\r\n `<script lang=\"ts\">\r\n import { cv } from \"tailwind-styled-v4/svelte\"\r\n\r\n const button = cv({\r\n base: \"px-4 py-2 rounded-lg font-medium transition-colors focus:outline-none\",\r\n variants: {\r\n intent: {\r\n primary: \"bg-blue-500 text-white hover:bg-blue-600\",\r\n ghost: \"bg-transparent border border-gray-200 hover:bg-gray-50\",\r\n },\r\n },\r\n defaultVariants: { intent: \"primary\" },\r\n })\r\n\r\n let count = 0\r\n</script>\r\n\r\n<div class=\"min-h-screen flex flex-col items-center justify-center gap-6 bg-gray-50\">\r\n <h1 class=\"text-3xl font-bold text-gray-900\">tailwind-styled + Svelte 5</h1>\r\n <button class={button({ intent: \"primary\" })} on:click={() => count++}>Count: {count}</button>\r\n <button class={button({ intent: \"ghost\" })} on:click={() => (count = 0)}>Reset</button>\r\n</div>\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"src/app.css\",\r\n `@import \"tailwindcss\";\r\n`\r\n )\r\n\r\n await writeProjectFile(\r\n context,\r\n \"index.html\",\r\n `<!doctype html>\r\n<html lang=\"en\">\r\n <head><meta charset=\"UTF-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\r\n <title>${context.name}</title></head>\r\n <body><div id=\"app\"></div><script type=\"module\" src=\"/src/main.ts\"></script></body>\r\n</html>\r\n`\r\n )\r\n}\r\n\r\nasync function createSimpleApp(context: CreateContext): Promise<void> {\r\n await writeProjectFile(\r\n context,\r\n \"package.json\",\r\n `${JSON.stringify(\r\n { name: context.name, private: true, scripts: { dev: \"node index.js\" } },\r\n null,\r\n 2\r\n )}\\n`\r\n )\r\n await writeProjectFile(\r\n context,\r\n \"index.js\",\r\n \"console.log('tailwind-styled simple template ready')\\n\"\r\n )\r\n}\r\n\r\nasync function createProject(\r\n options: CreateCliOptions,\r\n output: CommandContext[\"output\"]\r\n): Promise<void> {\r\n const { name, template } = await resolveCreateInput(options)\r\n const projectDir = path.resolve(process.cwd(), name)\r\n\r\n if (await pathExists(projectDir)) {\r\n throw new CliUsageError(`Directory ${name} already exists.`)\r\n }\r\n\r\n const context: CreateContext = {\r\n projectDir,\r\n name,\r\n dryRun: options.dryRun,\r\n writtenFiles: [],\r\n }\r\n\r\n await TEMPLATES[template](context)\r\n\r\n const report: CreateReport = {\r\n name,\r\n template,\r\n projectDir,\r\n dryRun: context.dryRun,\r\n filesCreated: context.writtenFiles.length,\r\n files: context.writtenFiles,\r\n }\r\n\r\n if (output.json) {\r\n output.jsonSuccess(\"create\", report)\r\n return\r\n }\r\n\r\n output.intro(\"tailwind-styled-v4 Project Generator\")\r\n output.writeText(`Creating ${template} in ./${name}${context.dryRun ? \" (dry-run)\" : \"\"}`)\r\n output.writeText(`Files ${context.dryRun ? \"planned\" : \"created\"}: ${report.filesCreated}`)\r\n output.note(`cd ${name}\\nnpm install\\nnpm run dev`, \"Next steps\")\r\n output.outro(\"Project scaffold ready\")\r\n}\r\n\r\nexport function buildCreateProgram(context: CommandContext): Command {\r\n const program = new Command(\"create-tailwind-styled\")\r\n program\r\n .name(\"create-tailwind-styled\")\r\n .description(\"CLI scaffolding tool\")\r\n .option(\"--json\", \"Output strict JSON envelope\")\r\n .option(\"--debug\", \"Include stack traces for errors\")\r\n .option(\"--verbose\", \"Verbose runtime logs\")\r\n .arguments(\"[name]\")\r\n .option(\"-y, --yes\", \"Skip prompts\")\r\n .option(\"--template <template>\", \"Template name\")\r\n .option(\"--dry-run\", \"Preview generated files\")\r\n .action(async (name: string | undefined, options: Record<string, unknown>) => {\r\n await createProject(\r\n {\r\n name,\r\n template: typeof options.template === \"string\" ? options.template : undefined,\r\n yes: Boolean(options.yes),\r\n dryRun: Boolean(options.dryRun),\r\n },\r\n context.output\r\n )\r\n })\r\n\r\n return program\r\n}\r\n\r\nexport async function main(rawArgs: string[] = process.argv.slice(2)): Promise<void> {\r\n await runCliMain({\r\n argv: [process.execPath, \"create-tailwind-styled\", ...rawArgs],\r\n importMetaUrl: import.meta.url,\r\n commandHint: \"create\",\r\n buildProgram: buildCreateProgram,\r\n })\r\n}","/**\r\n * tailwind-styled-v5 — Native Bridge Loader\r\n *\r\n * Uses @tailwind-styled/shared for native binding resolution.\r\n * All functions require native Rust binding - no JS fallback.\r\n */\r\n\r\nimport { resolveNativeBinary, resolveRuntimeDir } from \"@tailwind-styled/shared\"\r\n\r\n// require() is safe here — tsup banner injects CJS-compatible require into ESM output.\r\n// See tsup.config.ts esbuildOptions banner for how this is set up.\r\nconst _loadNative = (path: string): unknown => require(path)\r\n\r\nexport interface ComponentMetadata {\r\n component: string\r\n tag: string\r\n baseClass: string\r\n subComponents: Record<string, { tag?: string; class: string }>\r\n}\r\n\r\nexport interface NativeRscResult {\r\n isServer: boolean\r\n needsClientDirective: boolean\r\n clientReasons: string[]\r\n}\r\n\r\nconst log = (...args: unknown[]) => {\r\n if (process.env.DEBUG?.includes(\"compiler:native\")) {\r\n console.log(\"[compiler:native]\", ...args)\r\n }\r\n}\r\n\r\n// ── Type Exports ────────────────────────────────────────────────────────────────\r\n\r\nexport interface NativeBridge {\r\n // Core transform\r\n transformSource?: (source: string, opts?: Record<string, string>) => NativeTransformResult | null\r\n extractClassesFromSource?: (source: string) => string[]\r\n hasTwUsage?: (source: string) => boolean\r\n isAlreadyTransformed?: (source: string) => boolean\r\n // Class Extractor\r\n extractAllClasses?: (source: string) => string[]\r\n parseClasses?: (raw: string) => Array<{ raw: string; type: string }>\r\n // Application functions\r\n extractComponentUsage?: (source: string) => Array<{ component: string; propsJson: string }>\r\n normalizeAndDedupClasses?: (raw: string) => { normalized: string; duplicatesRemoved: number; uniqueCount: number }\r\n diffClassLists?: (previous: string[], current: string[]) => { added: string[]; removed: string[]; unchanged: string[]; hasChanges: boolean }\r\n batchExtractClasses?: (filePaths: string[]) => Array<{ file: string; classes: string[]; contentHash: string; ok: boolean; error?: string }>\r\n checkAgainstSafelist?: (classes: string[], safelist: string[]) => { matched: string[]; unmatched: string[]; safelistSize: number }\r\n // Batch 2\r\n hoistComponents?: (source: string) => { code: string; hoisted: string[]; warnings: string[] }\r\n compileVariantTable?: (configJson: string) => { id: string; tableJson: string; keys: string[]; defaultKey: string; combinations: number }\r\n classifyAndSortClasses?: (classes: string[]) => Array<{ className: string; bucket: string; sortOrder: number }>\r\n mergeCssDeclarations?: (cssChunks: string[]) => { declarationsJson: string; declarationString: string; count: number }\r\n analyzeClassUsage?: (classes: string[], scanResultJson: string, css: string) => Array<{ className: string; usageCount: number; filesJson: string; bundleSizeBytes: number; isDeadCode: boolean }>\r\n analyzeRsc?: (source: string, filename: string) => {\r\n isServer: boolean\r\n needsClientDirective: boolean\r\n clientReasons: string[]\r\n }\r\n analyzeClasses?: (\r\n filesJson: string,\r\n cwd: string,\r\n flags: number\r\n ) => {\r\n css?: string\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rscJson?: string\r\n metadataJson?: string\r\n safelist?: string[]\r\n } | null\r\n // CSS compilation\r\n compileCss?: (classes: string[], prefix?: string | null) => { css: string; classes: string[] }\r\n compileCssLightning?: (classes: string[]) => string\r\n /** Post-process raw Tailwind-generated CSS dengan LightningCSS di Rust */\r\n detectDeadCode?: (scanResultJson: string, css: string) => {\r\n deadInCss: string[]\r\n deadInSource: string[]\r\n liveClasses: string[]\r\n totalCssClasses: number\r\n totalSourceClasses: number\r\n }\r\n processTailwindCssLightning?: (css: string) => { css: string; size_bytes: number; resolved_classes: string[]; unknown_classes: string[] }\r\n processTailwindCssWithTargets?: (css: string, targets: string | null) => { css: string; size_bytes: number }\r\n // Atomic CSS (atomic.rs)\r\n parseAtomicClass?: (twClass: string) => string | null\r\n generateAtomicCss?: (rulesJson: string) => string\r\n toAtomicClasses?: (twClasses: string) => string\r\n clearAtomicRegistry?: () => void\r\n atomicRegistrySize?: () => number\r\n // Impact analysis (impact_analysis.rs)\r\n calculateImpact?: (impactJson: string) => string\r\n calculateRisk?: (className: string, totalComponents: number) => string\r\n calculateSavings?: (bundleSizeBytes: number, componentCount: number) => number\r\n}\r\n\r\nexport interface NativeTransformResult {\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rscJson?: string\r\n metadataJson?: string\r\n}\r\n\r\nexport interface ClassExtractResult {\r\n classes: string[]\r\n component_names: string[]\r\n has_tw_usage: boolean\r\n has_use_client: boolean\r\n imports: string[]\r\n}\r\n\r\nconst NATIVE_UNAVAILABLE_MESSAGE =\r\n \"[tailwind-styled/compiler v5] Native binding is required but not available.\\n\" +\r\n \"This package requires native Rust bindings. There is no JavaScript fallback.\\n\" +\r\n \"Please ensure:\\n\" +\r\n \" 1. The native module is properly installed\\n\" +\r\n \" 2. You have run: npm run build:rust (or use prebuilt binary)\\n\" +\r\n \"\\n\" +\r\n \"For help, see: https://tailwind-styled.dev/docs/install\"\r\n\r\n// ── Native Bridge - Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nlet nativeBridge: NativeBridge | null = null\r\nlet bridgeLoadAttempted = false\r\nlet bridgeLoadError: Error | null = null\r\n\r\nconst isValidNativeBridge = (mod: unknown): mod is NativeBridge => {\r\n const m = mod as Partial<NativeBridge>\r\n return !!(\r\n typeof m.transformSource === \"function\" ||\r\n typeof m.extractAllClasses === \"function\" ||\r\n typeof m.hasTwUsage === \"function\"\r\n )\r\n}\r\n\r\nexport const getNativeBridge = (): NativeBridge => {\r\n if (nativeBridge) {\r\n return nativeBridge\r\n }\r\n\r\n if (bridgeLoadAttempted) {\r\n if (bridgeLoadError) {\r\n throw bridgeLoadError\r\n }\r\n throw new Error(NATIVE_UNAVAILABLE_MESSAGE)\r\n }\r\n\r\n bridgeLoadAttempted = true\r\n\r\n try {\r\n const runtimeDir = resolveRuntimeDir(undefined, import.meta.url)\r\n \r\n // Use shared's native resolution\r\n const result = resolveNativeBinary(runtimeDir)\r\n\r\n if (result.path && result.path.endsWith(\".node\")) {\r\n try {\r\n const binding = _loadNative(result.path) as NativeBridge\r\n if (isValidNativeBridge(binding)) {\r\n nativeBridge = binding\r\n log(\"Native bridge loaded successfully from:\", result.path)\r\n return nativeBridge\r\n }\r\n } catch (e) {\r\n log(\"Failed to require native binding:\", e)\r\n }\r\n }\r\n\r\n throw new Error(`${NATIVE_UNAVAILABLE_MESSAGE}\\n\\nTried paths: ${result.tried.join(\"\\n\")}`)\r\n } catch (err) {\r\n bridgeLoadError = err instanceof Error ? err : new Error(String(err))\r\n log(\"Failed to load native bridge:\", bridgeLoadError.message)\r\n throw bridgeLoadError\r\n }\r\n}\r\n\r\nexport const resetNativeBridgeCache = (): void => {\r\n nativeBridge = null\r\n bridgeLoadAttempted = false\r\n bridgeLoadError = null\r\n log(\"Native bridge cache reset\")\r\n}\r\n\r\n// ── Adaptor for native results\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport const adaptNativeResult = (\r\n raw: NativeTransformResult\r\n): {\r\n code: string\r\n classes: string[]\r\n changed: boolean\r\n rsc?: NativeRscResult\r\n metadata?: ComponentMetadata[]\r\n} => {\r\n return {\r\n code: raw.code ?? \"\",\r\n classes: raw.classes ?? [],\r\n changed: raw.changed ?? false,\r\n rsc: raw.rscJson ? JSON.parse(raw.rscJson) : undefined,\r\n metadata: raw.metadataJson ? JSON.parse(raw.metadataJson) : undefined,\r\n }\r\n}\r\n\r\n// ── Eager init — load native bridge saat module dimuat, bukan saat request pertama\r\n// Mencegah crash di Turbopack dev mode karena lazy init mid-request\r\n// ─────────────────────────────────────────────────────────────────────────────\r\nif (typeof process !== \"undefined\" && !bridgeLoadAttempted) {\r\n try {\r\n getNativeBridge()\r\n } catch {\r\n // Sudah di-capture di bridgeLoadError — akan di-throw saat dipanggil pertama kali\r\n }\r\n}","import { Command } from \"commander\"\r\n\r\nimport { runAnalyzeCli } from \"../analyze\"\r\nimport { runExtractCli } from \"../extract\"\r\nimport { runInitCli } from \"../init\"\r\nimport { runMigrateCli } from \"../migrate\"\r\nimport { runScanCli } from \"../scan\"\r\nimport { runSetupCli } from \"../setup\"\r\nimport { runStatsCli } from \"../stats\"\r\nimport { resolveCommandHelp } from \"../utils/runtime\"\r\nimport { boundaryCommand } from \"./boundary\"\r\nimport { createCommand } from \"./create\"\r\nimport { dashboardCommand } from \"./dashboard\"\r\nimport { deployCommand } from \"./deploy\"\r\nimport { runDoctorCli } from \"./doctor\"\r\nimport { miscCommands } from \"./misc\"\r\nimport { pluginCommand } from \"./plugin\"\r\nimport { preflightCommand } from \"./preflight\"\r\nimport { installRegistryCommand, registryCommand } from \"./registry\"\r\nimport { scriptCommands } from \"./scriptCommands\"\r\nimport { storybookCommand } from \"./storybook\"\r\nimport { studioCommand } from \"./studio\"\r\nimport { syncCommand } from \"./sync\"\r\nimport { runTraceCli } from \"./trace\"\r\nimport { runGenerateTypesCli } from \"../generateTypes\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\nimport { runWhyCli } from \"./why\"\r\n\r\nfunction contextArgs(args: string[], context: CommandContext): string[] {\r\n return context.json ? [...args, \"--json\"] : args\r\n}\r\n\r\nfunction leaf(commands: CommandDefinition[], name: string): CommandDefinition {\r\n const found = commands.find((command) => command.name === name)\r\n if (!found) {\r\n throw new Error(`Command definition not found: ${name}`)\r\n }\r\n return found\r\n}\r\n\r\nfunction actionCommand(args: unknown[]): Command {\r\n return args[args.length - 1] as Command\r\n}\r\n\r\nfunction toVariadic(value: string | string[] | undefined): string[] {\r\n if (!value) return []\r\n return Array.isArray(value) ? value : [value]\r\n}\r\n\r\nexport function buildMainProgram(context: CommandContext): Command {\r\n const _miscByName = new Map(miscCommands.map((command) => [command.name, command]))\r\n const scriptByName = new Map(scriptCommands.map((command) => [command.name, command]))\r\n\r\n const program = new Command(\"tw\")\r\n program\r\n .name(\"tw\")\r\n .description(\"tailwind-styled-v4 CLI\")\r\n .version(\"5.0.4\", \"--version\", \"Output the current version\")\r\n .option(\"--json\", \"Output strict JSON envelope\")\r\n .option(\"--debug\", \"Include stack traces for errors\")\r\n .option(\"--verbose\", \"Verbose runtime logs\")\r\n\r\n program\r\n .command(\"setup\")\r\n .description(\"Auto-setup project\")\r\n .option(\"--yes\", \"Skip prompts\")\r\n .option(\"--next\", \"Force Next.js\")\r\n .option(\"--vite\", \"Force Vite\")\r\n .option(\"--rspack\", \"Force Rspack\")\r\n .option(\"--react\", \"Force React\")\r\n .option(\"--dry-run\", \"Preview changes\")\r\n .option(\"--skip-install\", \"Skip package install\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.yes) args.push(\"--yes\")\r\n if (options.next) args.push(\"--next\")\r\n if (options.vite) args.push(\"--vite\")\r\n if (options.rspack) args.push(\"--rspack\")\r\n if (options.react) args.push(\"--react\")\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n if (options.skipInstall) args.push(\"--skip-install\")\r\n await runSetupCli(contextArgs(args, context))\r\n })\r\n\r\n program\r\n .command(\"create [name]\")\r\n .description(\"Create project from template\")\r\n .option(\"-y, --yes\", \"Skip prompts\")\r\n .option(\"--template <template>\", \"Template name\")\r\n .option(\"--dry-run\", \"Preview generated files\")\r\n .action(async (name: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (name) args.push(name)\r\n if (options.template) args.push(`--template=${options.template}`)\r\n if (options.yes) args.push(\"--yes\")\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n await createCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"init [target]\")\r\n .description(\"Initialize tailwind-styled config files\")\r\n .action(async (target?: string) => {\r\n await runInitCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"scan [target]\")\r\n .description(\"Scan classes in workspace\")\r\n .action(async (target?: string) => {\r\n await runScanCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"migrate [target]\")\r\n .description(\"Migrate project patterns to v4\")\r\n .option(\"--dry-run\", \"Preview changes\")\r\n .option(\"--wizard\", \"Use interactive wizard\")\r\n .action(async (target: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (target) args.push(target)\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n if (options.wizard) args.push(\"--wizard\")\r\n await runMigrateCli(contextArgs(args, context))\r\n })\r\n\r\n program\r\n .command(\"analyze [target]\")\r\n .description(\"Analyze class usage and patterns\")\r\n .action(async (target?: string) => {\r\n await runAnalyzeCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"stats [target]\")\r\n .description(\"Compute estimated CSS bundle stats\")\r\n .action(async (target?: string) => {\r\n await runStatsCli(contextArgs(target ? [target] : [], context))\r\n })\r\n\r\n program\r\n .command(\"extract [target]\")\r\n .description(\"Suggest extraction candidates\")\r\n .option(\"--min <count>\", \"Minimum repeat count\")\r\n .action(async (target: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (target) args.push(target)\r\n if (options.min) args.push(`--min=${options.min}`)\r\n await runExtractCli(contextArgs(args, context))\r\n })\r\n\r\n program\r\n .command(\"preflight\")\r\n .description(\"Environment preflight checks\")\r\n .option(\"--fix\", \"Apply simple fixes\")\r\n .option(\"--allow-fail\", \"Do not set non-zero exit code on failing checks\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.fix) args.push(\"--fix\")\r\n if (options.allowFail) args.push(\"--allow-fail\")\r\n await preflightCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"dashboard\")\r\n .description(\"Start dashboard server\")\r\n .option(\"--port <port>\", \"Dashboard port\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.port) args.push(`--port=${options.port}`)\r\n await dashboardCommand.run(args, context)\r\n })\r\n\r\n program\r\n .command(\"storybook\")\r\n .description(\"Storybook helpers and variant matrix\")\r\n .option(\"--variants <json>\", \"Variant matrix JSON\")\r\n .option(\"--port <port>\", \"Storybook port\")\r\n .option(\"--no-open\", \"Disable browser open\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.variants) args.push(`--variants=${options.variants}`)\r\n if (options.port) args.push(`--port=${options.port}`)\r\n if (options.open === false) args.push(\"--no-open\")\r\n await storybookCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"studio\")\r\n .description(\"Open studio mode\")\r\n .option(\"--project <project>\", \"Project path\")\r\n .option(\"--port <port>\", \"Studio port\")\r\n .option(\"--mode <mode>\", \"Studio mode\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.project) args.push(`--project=${options.project}`)\r\n if (options.port) args.push(`--port=${options.port}`)\r\n if (options.mode) args.push(`--mode=${options.mode}`)\r\n await studioCommand.run(args, context)\r\n })\r\n\r\n program\r\n .command(\"deploy [name]\")\r\n .description(\"Publish package metadata to registry\")\r\n .option(\"--version <version>\", \"Package version\")\r\n .option(\"--tag <tag>\", \"Publish tag\")\r\n .option(\"--registry <url>\", \"Target registry URL\")\r\n .option(\"--dry-run\", \"Preview manifest\")\r\n .action(async (name: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (name) args.push(name)\r\n if (options.version) args.push(`--version=${options.version}`)\r\n if (options.tag) args.push(`--tag=${options.tag}`)\r\n if (options.registry) args.push(`--registry=${options.registry}`)\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n await deployCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n const plugin = program.command(\"plugin\").description(\"Plugin discovery and install\")\r\n plugin\r\n .command(\"search [query...]\")\r\n .description(\"Search plugins\")\r\n .action(async (query: string[] | undefined) => {\r\n await pluginCommand.run([\"search\", ...toVariadic(query)], context)\r\n })\r\n plugin\r\n .command(\"list\")\r\n .description(\"List available plugins\")\r\n .action(async () => {\r\n await pluginCommand.run([\"list\"], context)\r\n })\r\n plugin\r\n .command(\"install <name>\")\r\n .description(\"Install plugin package\")\r\n .action(async (name: string) => {\r\n await pluginCommand.run([\"install\", name], context)\r\n })\r\n plugin\r\n .command(\"verify <packageName>\")\r\n .description(\"Verify plugin package\")\r\n .action(async (packageName: string) => {\r\n await pluginCommand.run(contextArgs([\"verify\", packageName], context), context)\r\n })\r\n plugin\r\n .command(\"update-check\")\r\n .description(\"Check plugin updates\")\r\n .action(async () => {\r\n await pluginCommand.run(contextArgs([\"update-check\"], context), context)\r\n })\r\n plugin\r\n .command(\"marketplace [args...]\")\r\n .description(\"Marketplace helper\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await pluginCommand.run(contextArgs([\"marketplace\", ...toVariadic(args)], context), context)\r\n })\r\n plugin\r\n .command(\"publish [args...]\")\r\n .description(\"Publish plugin to marketplace\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await pluginCommand.run(contextArgs([\"publish\", ...toVariadic(args)], context), context)\r\n })\r\n\r\n const registry = program.command(\"registry\").description(\"Registry server utilities\")\r\n ;[\"serve\", \"list\", \"info\", \"publish\", \"install\", \"versions\"].forEach((subcommand) => {\r\n registry\r\n .command(`${subcommand} [args...]`)\r\n .description(`Registry ${subcommand}`)\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await registryCommand.run(contextArgs([subcommand, ...toVariadic(args)], context), context)\r\n })\r\n })\r\n\r\n program\r\n .command(\"install [args...]\")\r\n .description(\"Registry tarball install helper\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await installRegistryCommand.run(contextArgs(toVariadic(args), context), context)\r\n })\r\n\r\n program\r\n .command(\"generate-types\")\r\n .aliases([\"gen-types\", \"gt\"])\r\n .description(\"Generate TypeScript sub-component types from scanned template literals\")\r\n .option(\"--out <path>\", \"Output file path (default: src/tailwind-styled.d.ts)\")\r\n .option(\"--dry-run\", \"Preview output without writing\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.out) args.push(`--out=${options.out}`)\r\n if (options.dryRun) args.push(\"--dry-run\")\r\n await runGenerateTypesCli(args)\r\n })\r\n\r\n const sync = program.command(\"sync\").description(\"Design token sync commands\")\r\n ;[\"init\", \"pull\", \"push\", \"diff\"].forEach((subcommand) => {\r\n sync\r\n .command(`${subcommand} [args...]`)\r\n .description(`Sync ${subcommand}`)\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await syncCommand.run(contextArgs([subcommand, ...toVariadic(args)], context), context)\r\n })\r\n })\r\n\r\n const figma = sync.command(\"figma\").description(\"Figma sync helpers\")\r\n ;[\"pull\", \"push\", \"diff\", \"modes\"].forEach((subcommand) => {\r\n figma\r\n .command(`${subcommand} [args...]`)\r\n .description(`Figma ${subcommand}`)\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await syncCommand.run(\r\n contextArgs([\"figma\", subcommand, ...toVariadic(args)], context),\r\n context\r\n )\r\n })\r\n })\r\n\r\n program\r\n .command(\"test\")\r\n .description(\"Test shortcut wrapper\")\r\n .option(\"--watch\", \"Watch mode\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.watch) args.push(\"--watch\")\r\n await leaf(miscCommands, \"test\").run(args, context)\r\n })\r\n\r\n program\r\n .command(\"ai <prompt...>\")\r\n .description(\"AI script shortcut\")\r\n .action(async (prompt: string[]) => {\r\n await leaf(miscCommands, \"ai\").run(prompt, context)\r\n })\r\n\r\n program\r\n .command(\"share [name]\")\r\n .description(\"Generate share payload template\")\r\n .action(async (name?: string) => {\r\n await leaf(miscCommands, \"share\").run(contextArgs(name ? [name] : [], context), context)\r\n })\r\n\r\n program\r\n .command(\"code\")\r\n .description(\"VS Code extension helper\")\r\n .option(\"--docs\", \"Show docs URL\")\r\n .option(\"--install\", \"Install extension\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.docs) args.push(\"--docs\")\r\n if (options.install) args.push(\"--install\")\r\n await leaf(miscCommands, \"code\").run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"version\")\r\n .alias(\"v\")\r\n .description(\"Show CLI version\")\r\n .option(\"--check\", \"Check latest npm version\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.check) args.push(\"--check\")\r\n await leaf(miscCommands, \"version\").run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"upgrade\")\r\n .alias(\"update\")\r\n .description(\"Check or upgrade CLI version\")\r\n .option(\"--install\", \"Install latest version globally\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.install) args.push(\"--install\")\r\n await leaf(miscCommands, \"upgrade\").run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"parse <file>\")\r\n .description(\"Parse file (prototype)\")\r\n .action(async (file: string) => {\r\n await scriptByName.get(\"parse\")!.run(contextArgs([file], context), context)\r\n })\r\n\r\n program\r\n .command(\"transform <file> [out]\")\r\n .description(\"Transform file (prototype)\")\r\n .option(\"--output <out>\", \"Output file\")\r\n .action(async (file: string, out: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = [file]\r\n if (out) args.push(out)\r\n if (options.output) args.push(`--output=${options.output}`)\r\n await scriptByName.get(\"transform\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"minify <file>\")\r\n .description(\"Minify file (prototype)\")\r\n .action(async (file: string) => {\r\n await scriptByName.get(\"minify\")!.run(contextArgs([file], context), context)\r\n })\r\n\r\n program\r\n .command(\"shake <cssFile>\")\r\n .description(\"Shake CSS rules (prototype)\")\r\n .action(async (cssFile: string) => {\r\n await scriptByName.get(\"shake\")!.run(contextArgs([cssFile], context), context)\r\n })\r\n\r\n program\r\n .command(\"lint [dir] [workers]\")\r\n .description(\"Parallel lint helper (prototype)\")\r\n .action(async (dir?: string, workers?: string) => {\r\n const args = [dir ?? \".\", workers ?? \"0\"]\r\n await scriptByName.get(\"lint\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"format <file>\")\r\n .description(\"Format helper (prototype)\")\r\n .option(\"--write\", \"Write file changes\")\r\n .action(async (file: string, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = [file]\r\n if (options.write) args.push(\"--write\")\r\n await scriptByName.get(\"format\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"lsp [args...]\")\r\n .description(\"Language server protocol helper\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await scriptByName.get(\"lsp\")!.run(contextArgs(toVariadic(args), context), context)\r\n })\r\n\r\n program\r\n .command(\"benchmark [args...]\")\r\n .description(\"Write benchmark snapshot\")\r\n .allowUnknownOption(true)\r\n .action(async (args: string[] | undefined) => {\r\n await scriptByName.get(\"benchmark\")!.run(contextArgs(toVariadic(args), context), context)\r\n })\r\n\r\n program\r\n .command(\"optimize <file> [args...]\")\r\n .description(\"Compile-time optimize helper\")\r\n .allowUnknownOption(true)\r\n .action(async (file: string, args: string[] | undefined) => {\r\n await scriptByName\r\n .get(\"optimize\")!\r\n .run(contextArgs([file, ...toVariadic(args)], context), context)\r\n })\r\n\r\n program\r\n .command(\"split [root] [outDir]\")\r\n .description(\"Route-based CSS split helper\")\r\n .option(\"--output <outDir>\", \"Output directory\")\r\n .action(async (root: string | undefined, outDir: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (root) args.push(root)\r\n if (outDir) args.push(outDir)\r\n if (options.output) args.push(`--output=${options.output}`)\r\n await scriptByName.get(\"split\")!.run(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"critical <html> <css>\")\r\n .description(\"Critical CSS extraction helper\")\r\n .action(async (html: string, css: string) => {\r\n await scriptByName.get(\"critical\")!.run(contextArgs([html, css], context), context)\r\n })\r\n\r\n // Commands yang masih prototype/experimental — tampilkan label dan exit gracefully\r\n // agar user tahu statusnya daripada crash diam-diam\r\n const PLANNED_COMMANDS: Record<string, { label: string; since: string; script: string }> = {\r\n cache: { label: \"Build cache manager\", since: \"v5.0\", script: \"scripts/v50/cache.ts\" },\r\n cluster: { label: \"Distributed build cluster\", since: \"v5.0\", script: \"scripts/v50/cluster.ts\" },\r\n \"cluster-server\": { label: \"Remote build worker server\", since: \"v5.0\", script: \"scripts/v50/cluster-server.ts\" },\r\n adopt: { label: \"Feature adoption analyzer\", since: \"v5.0\", script: \"scripts/v50/adopt.ts\" },\r\n metrics: { label: \"Prometheus-compatible metrics server\", since: \"v5.0\", script: \"scripts/v50/metrics.ts\" },\r\n audit: { label: \"Security & a11y audit\", since: \"v4.4\", script: \"scripts/v45/audit.ts\" },\r\n }\r\n\r\n for (const [name, meta] of Object.entries(PLANNED_COMMANDS)) {\r\n const signature =\r\n name === \"metrics\"\r\n ? \"metrics [port]\"\r\n : name === \"adopt\"\r\n ? \"adopt [feature] [project]\"\r\n : `${name} [args...]`\r\n\r\n program\r\n .command(signature)\r\n .description(`${meta.label} [prototype: ${meta.since}]`)\r\n .allowUnknownOption(true)\r\n .action(async (...actionArgs) => {\r\n const positionalArgs = actionArgs\r\n .slice(0, -1)\r\n .flatMap((value) => (Array.isArray(value) ? value : value ? [String(value)] : []))\r\n\r\n // Coba jalankan script jika ada\r\n const scriptRunner = scriptByName.get(name)\r\n if (scriptRunner) {\r\n await scriptRunner.run(contextArgs(positionalArgs, context), context)\r\n return\r\n }\r\n\r\n // Script tidak ada atau gagal — tampilkan info berguna\r\n context.output.writeText(`\\n⚠️ tw ${name} — prototype command (${meta.since})`)\r\n context.output.writeText(` ${meta.label}`)\r\n context.output.writeText(` Script: ${meta.script}`)\r\n context.output.writeText(``)\r\n context.output.writeText(` Jalankan langsung: npx tsx ${meta.script} ${positionalArgs.join(\" \")}`)\r\n context.output.writeText(` Atau: node ${meta.script.replace(\".ts\", \".mjs\")} ${positionalArgs.join(\" \")}`)\r\n context.output.writeText(``)\r\n context.output.writeText(` Status: Implementasi prototype tersedia di scripts/.`)\r\n context.output.writeText(` Integrasi penuh ke CLI pipeline direncanakan.`)\r\n process.exitCode = 0\r\n })\r\n }\r\n\r\n program\r\n .command(\"help [topic...]\")\r\n .description(\"Show help\")\r\n .action(async (topic: string[] | undefined) => {\r\n context.output.writeText(resolveCommandHelp(program, toVariadic(topic)).trim())\r\n })\r\n\r\n program\r\n .command(\"trace [class]\")\r\n .description(\"Trace a class or inspect a file/directory target\")\r\n .aliases([\"t\"])\r\n .option(\"--target <path>\", \"Trace a file or directory instead of a single class\")\r\n .option(\"--cwd <path>\", \"Working directory for trace resolution\")\r\n .option(\"--format <format>\", \"Output format: text, json, mermaid\")\r\n .action(async (className: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (className) args.push(className)\r\n if (options.target) args.push(`--target=${options.target}`)\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n if (options.format) args.push(`--format=${options.format}`)\r\n await runTraceCli(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"doctor\")\r\n .description(\"Run diagnostics on your codebase\")\r\n .aliases([\"d\", \"diagnose\"])\r\n .option(\"--cwd <path>\", \"Working directory for diagnostics\")\r\n .option(\r\n \"--include <checks>\",\r\n `Diagnostic categories: ${[\"workspace\", \"tailwind\", \"analysis\"].join(\", \")}`\r\n )\r\n .option(\"--verbose\", \"Show detailed diagnostics\")\r\n .action(async (...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n if (options.include) args.push(`--include=${options.include}`)\r\n if (options.verbose) args.push(\"--verbose\")\r\n await runDoctorCli(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"why <class>\")\r\n .description(\"Explain why a class is in the bundle\")\r\n .aliases([\"w\"])\r\n .option(\"--cwd <path>\", \"Working directory for why analysis\")\r\n .action(async (className: string, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = [className]\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n await runWhyCli(contextArgs(args, context), context)\r\n })\r\n\r\n program\r\n .command(\"boundary [target]\")\r\n .description(\"Analyze RSC boundary (server/client components)\")\r\n .aliases([\"b\"])\r\n .option(\"--cwd <path>\", \"Working directory\")\r\n .action(async (target: string | undefined, ...actionArgs) => {\r\n const options = actionCommand(actionArgs).opts()\r\n const args: string[] = []\r\n if (target) args.push(target)\r\n if (options.cwd) args.push(`--cwd=${options.cwd}`)\r\n await boundaryCommand.run(contextArgs(args, context), context)\r\n })\r\n\r\n return program\r\n}","import type { AnalyzerReport } from \"@tailwind-styled/analyzer\"\r\n\r\nimport { CliError } from \"./errors\"\r\n\r\nexport interface AnalyzerModule {\r\n analyzeWorkspace: (\r\n dir: string,\r\n options?: {\r\n classStats?: {\r\n top?: number\r\n frequentThreshold?: number\r\n }\r\n }\r\n ) => Promise<AnalyzerReport>\r\n}\r\n\r\nexport async function loadAnalyzerModule(): Promise<AnalyzerModule> {\r\n try {\r\n const mod = await import(\"@tailwind-styled/analyzer\")\r\n if (typeof mod.analyzeWorkspace !== \"function\") {\r\n throw new Error(\"analyzeWorkspace export not found\")\r\n }\r\n return {\r\n analyzeWorkspace: mod.analyzeWorkspace as AnalyzerModule[\"analyzeWorkspace\"],\r\n }\r\n } catch (error) {\r\n throw new CliError(\r\n \"Native analyzer binding is unavailable. Reinstall dependencies or run `npm rebuild @tailwind-styled/analyzer`.\",\r\n {\r\n code: \"ANALYZER_BINDING_UNAVAILABLE\",\r\n cause: error,\r\n }\r\n )\r\n }\r\n}\r\n","/**\r\n * tailwind-styled-v4 CLI analyzer output.\r\n */\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport type { AnalyzerReport } from \"@tailwind-styled/analyzer\"\r\nimport { loadAnalyzerModule } from \"./utils/analyzer\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists } from \"./utils/fs\"\r\nimport { type CliOutput, createCliOutput } from \"./utils/output\"\r\n\r\nexport type { AnalyzerReport as AnalysisReport } from \"@tailwind-styled/analyzer\"\r\n\r\n// Keep ComponentDef for extract.ts and stats.ts compatibility.\r\nexport interface ComponentDef {\r\n name: string\r\n file: string\r\n base: string\r\n variants: Record<string, string[]>\r\n classes: string[]\r\n}\r\n\r\nexport async function analyzeProject(dir: string): Promise<AnalyzerReport> {\r\n const analyzer = await loadAnalyzerModule()\r\n return analyzer.analyzeWorkspace(dir, { classStats: { top: 20, frequentThreshold: 2 } })\r\n}\r\n\r\nexport function printAnalysisReport(report: AnalyzerReport, output: CliOutput): void {\r\n const bar = \"-\".repeat(55)\r\n output.writeText(`\\n+${bar}+`)\r\n output.writeText(`| tailwind-styled-v4 - CSS Analyzer${\" \".repeat(21)}|`)\r\n output.writeText(`+${bar}+`)\r\n output.writeText(`| Files scanned: ${String(report.totalFiles).padEnd(34)}|`)\r\n output.writeText(`| Unique classes: ${String(report.uniqueClassCount).padEnd(34)}|`)\r\n output.writeText(`| Total occurrences: ${String(report.totalClassOccurrences).padEnd(34)}|`)\r\n output.writeText(`| Frequent classes: ${String(report.classStats.frequent.length).padEnd(34)}|`)\r\n output.writeText(`+${bar}+`)\r\n\r\n if (report.classStats.frequent.length > 0) {\r\n output.writeText(\"\\n MOST FREQUENT (top 10)\")\r\n output.writeText(` ${\"-\".repeat(52)}`)\r\n for (const usage of report.classStats.frequent.slice(0, 10)) {\r\n const chart = \"#\".repeat(Math.min(usage.count * 2, 20))\r\n output.writeText(` ${usage.name.padEnd(32)} ${chart} ${usage.count}`)\r\n }\r\n }\r\n\r\n if (report.classStats.top.length > 0) {\r\n output.writeText(\"\\n TOP CLASSES\")\r\n output.writeText(` ${\"-\".repeat(52)}`)\r\n for (const usage of report.classStats.top.slice(0, 10)) {\r\n const chart = \"#\".repeat(Math.min(usage.count * 2, 20))\r\n output.writeText(` ${usage.name.padEnd(32)} ${chart} ${usage.count}`)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n\r\nexport async function runAnalyzeCli(args: string[]): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const jsonFlag = Boolean(parsed.values.json)\r\n const output = createCliOutput({\r\n json: jsonFlag,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const dirArg = parsed.positionals[0] ?? \".\"\r\n const dir = path.resolve(process.cwd(), dirArg)\r\n\r\n if (!(await pathExists(dir))) {\r\n throw new CliUsageError(`Directory not found: ${dir}`)\r\n }\r\n\r\n const analyzer = await loadAnalyzerModule()\r\n const spinner = output.spinner()\r\n spinner.start(`Analyzing ${dir}`)\r\n const report = await analyzer.analyzeWorkspace(dir, {\r\n classStats: { top: 20, frequentThreshold: 2 },\r\n })\r\n spinner.stop(`Analysis complete: ${report.totalFiles} file(s)`)\r\n if (jsonFlag) {\r\n output.jsonSuccess(\"analyze\", report)\r\n return\r\n }\r\n printAnalysisReport(report, output)\r\n}\r\n","/**\r\n * tailwind-styled-v4 style extraction suggestions.\r\n */\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { loadAnalyzerModule } from \"./utils/analyzer\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\ninterface ExtractCandidate {\r\n pattern: string\r\n count: number\r\n suggestedName: string\r\n suggestedTag: string\r\n suggestedCode: string\r\n savings: number\r\n}\r\n\r\nfunction guessSuggestedName(pattern: string): string {\r\n if (pattern.includes(\"flex\") && pattern.includes(\"items-center\")) return \"HStack\"\r\n if (pattern.includes(\"flex\") && pattern.includes(\"flex-col\")) return \"VStack\"\r\n if (pattern.includes(\"rounded\") && pattern.includes(\"shadow\")) return \"Card\"\r\n if (\r\n pattern.includes(\"btn\") ||\r\n (pattern.includes(\"px-\") && pattern.includes(\"py-\") && pattern.includes(\"rounded\"))\r\n ) {\r\n return \"Button\"\r\n }\r\n if (pattern.includes(\"text-sm\") || pattern.includes(\"text-xs\")) return \"Caption\"\r\n const first = pattern.split(\" \")[0]\r\n return `${first.replace(/[^a-zA-Z]/g, \"\").replace(/^(.)/, (char) => char.toUpperCase())}Base`\r\n}\r\n\r\nfunction guessSuggestedTag(pattern: string): string {\r\n if (pattern.includes(\"text-\") && !pattern.includes(\"bg-\")) return \"span\"\r\n if (pattern.includes(\"btn\") || pattern.includes(\"cursor-pointer\")) return \"button\"\r\n return \"div\"\r\n}\r\n\r\nexport async function runExtractCli(args: string[]): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n min: { type: \"string\" },\r\n },\r\n })\r\n const jsonFlag = Boolean(parsed.values.json)\r\n const output = createCliOutput({\r\n json: jsonFlag,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const minRaw = typeof parsed.values.min === \"string\" ? parsed.values.min : \"2\"\r\n const parsedMin = parseInt(minRaw, 10)\r\n const minCount = Number.isFinite(parsedMin) && parsedMin > 0 ? parsedMin : 2\r\n const dirArg = parsed.positionals[0] ?? \".\"\r\n const dir = path.resolve(process.cwd(), dirArg)\r\n\r\n if (!(await pathExists(dir))) {\r\n throw new CliUsageError(`Directory not found: ${dir}`)\r\n }\r\n\r\n const analyzer = await loadAnalyzerModule()\r\n const spinner = output.spinner()\r\n spinner.start(`Scanning extraction candidates in ${dir}`)\r\n const report = await analyzer.analyzeWorkspace(dir, {\r\n classStats: { top: 50, frequentThreshold: 2 },\r\n })\r\n spinner.stop(`Extraction scan complete: ${report.totalFiles} file(s)`)\r\n\r\n const candidates: ExtractCandidate[] = report.classStats.frequent\r\n .filter((usage) => usage.count >= minCount)\r\n .map((usage) => {\r\n const suggestedName = guessSuggestedName(usage.name)\r\n const suggestedTag = guessSuggestedTag(usage.name)\r\n const suggestedCode = `export const ${suggestedName} = tw.${suggestedTag}\\`${usage.name}\\``\r\n const savings = (usage.count - 1) * usage.name.length\r\n return {\r\n pattern: usage.name,\r\n count: usage.count,\r\n suggestedName,\r\n suggestedTag,\r\n suggestedCode,\r\n savings,\r\n }\r\n })\r\n .sort((left, right) => right.savings - left.savings)\r\n\r\n if (jsonFlag) {\r\n output.jsonSuccess(\"extract\", {\r\n root: dir,\r\n totalFiles: report.totalFiles,\r\n candidates,\r\n })\r\n return\r\n }\r\n\r\n const bar = \"-\".repeat(55)\r\n output.writeText(`\\n+${bar}+`)\r\n output.writeText(`| tailwind-styled-v4 - Extract Suggestions${\" \".repeat(13)}|`)\r\n output.writeText(`+${bar}+`)\r\n output.writeText(`| Files scanned: ${String(report.totalFiles).padEnd(34)}|`)\r\n output.writeText(`| Candidates found: ${String(candidates.length).padEnd(34)}|`)\r\n output.writeText(`+${bar}+`)\r\n\r\n if (candidates.length === 0) {\r\n output.writeText(\"\\n No extraction candidates found (all classes are unique).\\n\")\r\n return\r\n }\r\n\r\n for (const candidate of candidates.slice(0, 15)) {\r\n output.writeText(`\\n PATTERN: \"${candidate.pattern}\"`)\r\n output.writeText(` Found ${candidate.count} times - ~${candidate.savings} chars saved`)\r\n output.writeText(` -> ${candidate.suggestedCode}`)\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n","import path from \"node:path\"\r\n\r\nimport { ensureFileSafe } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nexport interface InitReport {\r\n created: string[]\r\n skipped: string[]\r\n}\r\n\r\nasync function ensureFile(filePath: string, content: string, report: InitReport): Promise<void> {\r\n const status = await ensureFileSafe(filePath, content)\r\n if (status === \"created\") {\r\n report.created.push(filePath)\r\n } else {\r\n report.skipped.push(filePath)\r\n }\r\n}\r\n\r\nexport async function runInitCli(rawArgs: string[]): Promise<void> {\r\n const asJson = rawArgs.includes(\"--json\")\r\n const output = createCliOutput({\r\n json: asJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const target = rawArgs.find((arg) => !arg.startsWith(\"-\")) ?? \".\"\r\n const root = path.resolve(process.cwd(), target)\r\n const report: InitReport = { created: [], skipped: [] }\r\n\r\n await ensureFile(\r\n path.join(root, \"src\", \"tailwind.css\"),\r\n '@import \"tailwindcss\";\\n\\n@theme {\\n --color-primary: #3b82f6;\\n --spacing-section: 3rem;\\n}\\n',\r\n report\r\n )\r\n\r\n await ensureFile(\r\n path.join(root, \"tailwind-styled.config.json\"),\r\n `${JSON.stringify(\r\n {\r\n version: 1,\r\n cssEntry: \"src/tailwind.css\",\r\n },\r\n null,\r\n 2\r\n )}\\n`,\r\n report\r\n )\r\n\r\n if (asJson) {\r\n output.jsonSuccess(\"init\", report)\r\n return\r\n }\r\n\r\n output.writeText(\"\\nInit complete\")\r\n output.writeText(`Created: ${report.created.length}`)\r\n for (const filePath of report.created) {\r\n output.writeText(` + ${path.relative(root, filePath)}`)\r\n }\r\n if (report.skipped.length > 0) {\r\n output.writeText(`Skipped: ${report.skipped.length}`)\r\n for (const filePath of report.skipped) {\r\n output.writeText(` - ${path.relative(root, filePath)} (exists)`)\r\n }\r\n }\r\n}\r\n","import { confirm, intro, isCancel } from \"@clack/prompts\"\r\n\r\nimport { CliUsageError } from \"./utils/errors\"\r\n\r\nexport interface MigrateWizardOptions {\r\n dryRun: boolean\r\n includeConfig: boolean\r\n includeClasses: boolean\r\n includeImports: boolean\r\n}\r\n\r\nexport async function runMigrationWizard(): Promise<MigrateWizardOptions> {\r\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\r\n return {\r\n dryRun: true,\r\n includeConfig: true,\r\n includeClasses: true,\r\n includeImports: true,\r\n }\r\n }\r\n\r\n intro(\"Tailwind Styled v4 Migration Wizard\")\r\n\r\n const dryRun = await confirm({\r\n message: \"Gunakan dry-run?\",\r\n initialValue: true,\r\n })\r\n const includeConfig = await confirm({\r\n message: \"Migrasi file config dasar?\",\r\n initialValue: true,\r\n })\r\n const includeClasses = await confirm({\r\n message: \"Migrasi class lama (flex-grow/shrink)?\",\r\n initialValue: true,\r\n })\r\n const includeImports = await confirm({\r\n message: \"Migrasi import tailwind-styled-components -> tailwind-styled-v4?\",\r\n initialValue: true,\r\n })\r\n\r\n if ([dryRun, includeConfig, includeClasses, includeImports].some((value) => isCancel(value))) {\r\n throw new CliUsageError(\"Migration wizard dibatalkan oleh pengguna\")\r\n }\r\n\r\n return {\r\n dryRun: dryRun as boolean,\r\n includeConfig: includeConfig as boolean,\r\n includeClasses: includeClasses as boolean,\r\n includeImports: includeImports as boolean,\r\n }\r\n}\r\n","import fs from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\n\r\nimport { runMigrationWizard } from \"./migrateWizard\"\r\nimport { firstPositional, hasFlag } from \"./utils/args\"\r\nimport { pathExists, writeFileSafe } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\ninterface MigrateOptions {\r\n includeImports: boolean\r\n includeClasses: boolean\r\n}\r\n\r\nexport interface MigrateReport {\r\n scannedFiles: number\r\n updatedFiles: number\r\n classRenames: number\r\n importRenames: number\r\n configWrites: number\r\n dryRun: boolean\r\n}\r\n\r\nconst SOURCE_EXTENSIONS = new Set([\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"])\r\nconst IGNORED_DIRS = new Set([\"node_modules\", \".git\", \"dist\", \".next\", \"out\", \".turbo\"])\r\nconst DEFAULT_TAILWIND_CSS = `@import \"tailwindcss\";\r\n\r\n@theme {\r\n --color-primary: #3b82f6;\r\n --spacing-section: 3rem;\r\n}\r\n`\r\n\r\nasync function findSourceFiles(dir: string): Promise<string[]> {\r\n const out: string[] = []\r\n\r\n async function walk(currentDir: string): Promise<void> {\r\n if (!(await pathExists(currentDir))) return\r\n const entries = await fs.readdir(currentDir, { withFileTypes: true })\r\n for (const entry of entries) {\r\n const fullPath = path.join(currentDir, entry.name)\r\n if (entry.isDirectory()) {\r\n if (IGNORED_DIRS.has(entry.name)) continue\r\n await walk(fullPath)\r\n continue\r\n }\r\n if (SOURCE_EXTENSIONS.has(path.extname(entry.name))) {\r\n out.push(fullPath)\r\n }\r\n }\r\n }\r\n\r\n await walk(dir)\r\n return out\r\n}\r\n\r\nfunction migrateSource(source: string, options: MigrateOptions) {\r\n // Use functional approach - count matches with match() instead of callback reassign\r\n const importRenames = options.includeImports\r\n ? (source.match(/tailwind-styled-components/g) || []).length\r\n : 0\r\n\r\n const output = options.includeImports\r\n ? source.replace(/tailwind-styled-components/g, \"tailwind-styled-v4\")\r\n : source\r\n\r\n if (options.includeClasses) {\r\n const flexGrowMatches = source.match(/\\bflex-grow\\b/g) || []\r\n const flexShrinkMatches = source.match(/\\bflex-shrink\\b/g) || []\r\n const classRenames = flexGrowMatches.length + flexShrinkMatches.length\r\n\r\n const replacedOutput = output\r\n .replace(/\\bflex-grow\\b/g, \"grow\")\r\n .replace(/\\bflex-shrink\\b/g, \"shrink\")\r\n\r\n return { output: replacedOutput, classRenames, importRenames }\r\n }\r\n\r\n return { output, classRenames: 0, importRenames }\r\n}\r\n\r\nasync function migrateConfig(root: string, dryRun: boolean): Promise<number> {\r\n const cssPath = path.join(root, \"src\", \"tailwind.css\")\r\n if (await pathExists(cssPath)) return 0\r\n await writeFileSafe(cssPath, DEFAULT_TAILWIND_CSS, { dryRun })\r\n return 1\r\n}\r\n\r\nexport async function runMigrateCli(rawArgs: string[]): Promise<void> {\r\n const asJson = hasFlag(\"json\", rawArgs)\r\n const output = createCliOutput({\r\n json: asJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const target = firstPositional(rawArgs) ?? \".\"\r\n const root = path.resolve(process.cwd(), target)\r\n\r\n const dryRunFlag = hasFlag(\"dry-run\", rawArgs)\r\n const wizardOptions = hasFlag(\"wizard\", rawArgs) ? await runMigrationWizard() : null\r\n\r\n // Handle wizard mode\r\n const { dryRun, includeConfig, includeClasses, includeImports } = wizardOptions\r\n ? {\r\n dryRun: wizardOptions.dryRun,\r\n includeConfig: wizardOptions.includeConfig,\r\n includeClasses: wizardOptions.includeClasses,\r\n includeImports: wizardOptions.includeImports,\r\n }\r\n : { dryRun: dryRunFlag, includeConfig: true, includeClasses: true, includeImports: true }\r\n\r\n const spinner = output.spinner()\r\n spinner.start(`Scanning source files in ${root}`)\r\n const files = await findSourceFiles(root)\r\n const report: MigrateReport = {\r\n scannedFiles: files.length,\r\n updatedFiles: 0,\r\n classRenames: 0,\r\n importRenames: 0,\r\n configWrites: 0,\r\n dryRun,\r\n }\r\n\r\n if (includeConfig) {\r\n report.configWrites += await migrateConfig(root, dryRun)\r\n }\r\n\r\n for (const filePath of files) {\r\n const source = await fs.readFile(filePath, \"utf8\")\r\n const migrated = migrateSource(source, { includeImports, includeClasses })\r\n if (migrated.output !== source) {\r\n report.updatedFiles++\r\n if (!dryRun) {\r\n await fs.writeFile(filePath, migrated.output, \"utf8\")\r\n }\r\n }\r\n report.classRenames += migrated.classRenames\r\n report.importRenames += migrated.importRenames\r\n }\r\n spinner.stop(`Migration scan complete: ${report.scannedFiles} file(s)`)\r\n\r\n if (asJson) {\r\n output.jsonSuccess(\"migrate\", report)\r\n return\r\n }\r\n\r\n output.writeText(\"\\nMigration report\")\r\n output.writeText(`Scanned files : ${report.scannedFiles}`)\r\n output.writeText(`Updated files : ${report.updatedFiles}${dryRun ? \" (dry-run)\" : \"\"}`)\r\n output.writeText(`Class renames : ${report.classRenames}`)\r\n output.writeText(`Import renames: ${report.importRenames}`)\r\n output.writeText(`Config writes : ${report.configWrites}${dryRun ? \" (dry-run)\" : \"\"}`)\r\n}\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nexport interface ScanCliResult {\r\n root: string\r\n totalFiles: number\r\n uniqueClassCount: number\r\n topClasses: Array<{ name: string; count: number }>\r\n cachePath?: string\r\n}\r\n\r\ninterface ScanCacheEntry {\r\n name: string\r\n definedAt?: { file: string; line: number; column: number }\r\n variants?: string[]\r\n rules?: Array<{ property: string; value: string; applied: boolean }>\r\n finalStyle?: Array<{ property: string; value: string }>\r\n conflicts?: Array<{ property: string; winner: string; loser: string }>\r\n usedIn?: string[]\r\n bundleContribution?: number\r\n risk?: \"low\" | \"medium\" | \"high\"\r\n componentsAffected?: string[]\r\n}\r\n\r\ninterface ScanCacheFile {\r\n generatedAt: string\r\n root: string\r\n totalFiles: number\r\n uniqueClasses: string[]\r\n classNames: ScanCacheEntry[]\r\n files: Array<{ file: string; classes: string[] }>\r\n}\r\n\r\nfunction buildTopClasses(\r\n files: Array<{ classes: string[] }>\r\n): Array<{ name: string; count: number }> {\r\n const counts = new Map<string, number>()\r\n for (const file of files) {\r\n for (const className of file.classes) {\r\n counts.set(className, (counts.get(className) ?? 0) + 1)\r\n }\r\n }\r\n return Array.from(counts.entries())\r\n .sort((left, right) => right[1] - left[1])\r\n .slice(0, 20)\r\n .map(([name, count]) => ({ name, count }))\r\n}\r\n\r\nfunction buildClassNames(\r\n files: Array<{ file: string; classes: string[] }>,\r\n uniqueClasses: string[]\r\n): ScanCacheEntry[] {\r\n const usageMap = new Map<string, string[]>()\r\n for (const file of files) {\r\n for (const cls of file.classes) {\r\n const existing = usageMap.get(cls) ?? []\r\n existing.push(file.file)\r\n usageMap.set(cls, existing)\r\n }\r\n }\r\n const freq = new Map<string, number>()\r\n for (const [cls, files_] of usageMap) {\r\n freq.set(cls, files_.length)\r\n }\r\n const totalUsage = Array.from(freq.values()).reduce((a, b) => a + b, 0)\r\n\r\n return uniqueClasses.map((name): ScanCacheEntry => {\r\n const usedIn = usageMap.get(name) ?? []\r\n const count = freq.get(name) ?? 0\r\n const bundleContribution = totalUsage > 0 ? Math.round((count / totalUsage) * 10000) / 100 : 0\r\n const risk: \"low\" | \"medium\" | \"high\" =\r\n usedIn.length > 10 ? \"high\" : usedIn.length > 3 ? \"medium\" : \"low\"\r\n const variants: string[] = []\r\n const colonIdx = name.lastIndexOf(\":\")\r\n if (colonIdx > -1) variants.push(name.slice(0, colonIdx))\r\n return {\r\n name,\r\n usedIn: usedIn.slice(0, 20),\r\n bundleContribution,\r\n risk,\r\n componentsAffected: usedIn.slice(0, 10),\r\n ...(variants.length > 0 ? { variants } : {}),\r\n }\r\n })\r\n}\r\n\r\nfunction writeScanCache(root: string, cacheData: ScanCacheFile): string {\r\n const cacheDir = path.join(root, \".tailwind-styled\")\r\n const cachePath = path.join(cacheDir, \"scan-cache.json\")\r\n fs.mkdirSync(cacheDir, { recursive: true })\r\n fs.writeFileSync(cachePath, JSON.stringify(cacheData, null, 2), \"utf-8\")\r\n return cachePath\r\n}\r\n\r\nexport async function runScanCli(rawArgs: string[]): Promise<void> {\r\n const target = rawArgs.find((arg) => !arg.startsWith(\"-\")) ?? \".\"\r\n const asJson = rawArgs.includes(\"--json\")\r\n const saveCache = rawArgs.includes(\"--save\") || rawArgs.includes(\"--cache\")\r\n const output = createCliOutput({\r\n json: asJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n\r\n const root = path.resolve(process.cwd(), target)\r\n const spinner = output.spinner()\r\n spinner.start(`Scanning ${root}`)\r\n const scanned = await scanWorkspaceAsync(root)\r\n spinner.stop(`Scan complete: ${scanned.totalFiles} file(s)`)\r\n\r\n const result: ScanCliResult = {\r\n root,\r\n totalFiles: scanned.totalFiles,\r\n uniqueClassCount: scanned.uniqueClasses.length,\r\n topClasses: buildTopClasses(scanned.files),\r\n }\r\n\r\n const shouldSave = saveCache || process.env.TWS_SCAN_SAVE === \"1\"\r\n if (shouldSave) {\r\n const classNames = buildClassNames(scanned.files, scanned.uniqueClasses)\r\n const cacheData: ScanCacheFile = {\r\n generatedAt: new Date().toISOString(),\r\n root,\r\n totalFiles: scanned.totalFiles,\r\n uniqueClasses: scanned.uniqueClasses,\r\n classNames,\r\n files: scanned.files.map((f) => ({ file: f.file, classes: f.classes })),\r\n }\r\n const cachePath = writeScanCache(root, cacheData)\r\n result.cachePath = cachePath\r\n if (!asJson) {\r\n output.writeText(`\\nCache written : ${cachePath}`)\r\n output.writeText(`Cache entries : ${classNames.length} classes`)\r\n }\r\n }\r\n\r\n if (asJson) {\r\n output.jsonSuccess(\"scan\", result)\r\n return\r\n }\r\n\r\n output.writeText(`\\nScan root : ${result.root}`)\r\n output.writeText(`Total files : ${result.totalFiles}`)\r\n output.writeText(`Unique classes : ${result.uniqueClassCount}`)\r\n output.writeText(\"\\nTop classes:\")\r\n for (const item of result.topClasses.slice(0, 10)) {\r\n output.writeText(` - ${item.name}: ${item.count}`)\r\n }\r\n if (!shouldSave) {\r\n output.writeText(\r\n \"\\nTip: Gunakan --save untuk generate .tailwind-styled/scan-cache.json (dibutuhkan VSCode extension)\"\r\n )\r\n }\r\n}\r\n","/**\r\n * tw setup - inject required config into an existing project.\r\n *\r\n * Usage:\r\n * npx tw setup\r\n * npx tw setup --dry-run\r\n * npx tw setup --skip-install\r\n * npx tw setup --yes --next|--vite|--rspack|--react\r\n */\r\n\r\nimport path from \"node:path\"\r\nimport pc from \"picocolors\"\r\nimport {\r\n patchNextConfigImpl,\r\n patchRspackConfigImpl,\r\n patchTailwindCssImpl,\r\n patchTsConfigImpl,\r\n patchViteConfigImpl,\r\n} from \"./commands/setup/patchers\"\r\nimport { pickProjectTypeInteractive } from \"./commands/setup/prompt\"\r\nimport {\r\n alreadyInstalled,\r\n configureSetupFlags,\r\n detectBundler,\r\n detectPm,\r\n findExisting,\r\n installPackages,\r\n type ProjectType,\r\n patchFileWithDryRun,\r\n type SetupFlags,\r\n type SetupProjectOption,\r\n writeFileWithDryRun,\r\n} from \"./commands/setup/workspace\"\r\nimport { type CliLogEvent, createCliLogger } from \"./utils/logger\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nconst cwd = process.cwd()\r\n\r\n// Keep these literals in this file for test compatibility:\r\n// \"--dry-run\", \"--skip-install\", \"--yes\", \"--next\", \"--vite\", \"--rspack\", \"--react\"\r\nconst PROJECT_OPTIONS: SetupProjectOption[] = [\r\n { label: \"Next.js\", value: \"next\", adapter: \"tailwind-styled-v4\" },\r\n { label: \"Vite\", value: \"vite\", adapter: \"tailwind-styled-v4\" },\r\n { label: \"Rspack\", value: \"rspack\", adapter: \"tailwind-styled-v4\" },\r\n { label: \"React (other)\", value: \"react\", adapter: \"tailwind-styled-v4\" },\r\n]\r\n\r\ninterface SetupReport {\r\n generatedAt: string\r\n cwd: string\r\n detected: ProjectType | null\r\n selected: ProjectType\r\n packageManager: string\r\n dryRun: boolean\r\n skipInstall: boolean\r\n events: CliLogEvent[]\r\n warnings: number\r\n}\r\n\r\nconst configureFlags = (rawArgs: string[]): SetupFlags => {\r\n return configureSetupFlags(rawArgs)\r\n}\r\n\r\nconst pickProjectType = async (\r\n detected: ProjectType | null,\r\n flags: SetupFlags,\r\n options: SetupProjectOption[]\r\n): Promise<ProjectType> => {\r\n const log = flags.isJson ? console.error : console.log\r\n return pickProjectTypeInteractive(detected, flags, options, {\r\n log,\r\n output: flags.isJson ? process.stderr : process.stdout,\r\n })\r\n}\r\n\r\n// Keep function names in this file for source-verification tests.\r\n// Keep \"withTailwindStyled()(\" reference in this file.\r\nconst patchNextConfig = (src: string): string | null => patchNextConfigImpl(src)\r\n\r\n// Keep \"tailwind-styled-v4/vite\" and \"tailwindStyledPlugin\" references in this file.\r\nconst patchViteConfig = (src: string): string | null => patchViteConfigImpl(src)\r\n\r\n// Keep \"tailwind-styled-v4/rspack\" and \"tailwindStyledRspackPlugin\" references in this file.\r\nconst patchRspackConfig = (src: string): string | null => patchRspackConfigImpl(src)\r\n\r\nconst patchTailwindCss = (src: string, bundler?: \"next\" | \"vite\" | \"rspack\", cssFilePath?: string, cwd?: string): string | null => patchTailwindCssImpl(src, bundler, cssFilePath, cwd)\r\n\r\nconst patchTsConfig = (src: string): string | null => patchTsConfigImpl(src)\r\n\r\nexport const runSetupCli = async (rawArgs: string[]): Promise<void> => {\r\n const setupFlags = configureFlags(rawArgs)\r\n const output = createCliOutput({\r\n json: setupFlags.isJson,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const events: CliLogEvent[] = []\r\n const logger = createCliLogger({\r\n useStderr: setupFlags.isJson,\r\n output,\r\n onEvent(event) {\r\n events.push(event)\r\n },\r\n })\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(pc.cyan(\" ◆ tailwind-styled-v4\")) + pc.dim(\" setup wizard\"))\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(\"\")\r\n\r\n const bootSpinner = output.spinner()\r\n bootSpinner.start(\"Inspecting workspace\")\r\n const [detected, pm] = await Promise.all([detectBundler(cwd), detectPm(cwd)])\r\n bootSpinner.stop(\"Workspace inspected\")\r\n\r\n if (detected) {\r\n const label = PROJECT_OPTIONS.find((option) => option.value === detected)?.label ?? detected\r\n output.writeText(\" \" + pc.dim(\"framework \") + pc.cyan(label))\r\n } else {\r\n output.writeText(\" \" + pc.dim(\"framework \") + pc.yellow(\"tidak terdeteksi\"))\r\n }\r\n\r\n const bundler = await pickProjectType(detected, setupFlags, PROJECT_OPTIONS)\r\n\r\n output.writeText(\" \" + pc.dim(\"package mg \") + pc.white(pm))\r\n if (setupFlags.isDryRun) output.writeText(\" \" + pc.dim(\"mode \") + pc.yellow(\"dry-run\"))\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(\"\")\r\n\r\n output.writeText(pc.bold(\" [1/4]\") + pc.cyan(\" packages\"))\r\n const hasCorePkg = await alreadyInstalled(cwd, \"tailwind-styled-v4\")\r\n\r\n const toInstall = hasCorePkg ? [] : [\"tailwind-styled-v4\"]\r\n\r\n if (toInstall.length > 0) await installPackages(cwd, pm, toInstall, false, setupFlags, logger)\r\n else logger.skip(\"tailwind-styled-v4 sudah terpasang\")\r\n\r\n output.writeText(\"\\n\" + pc.bold(\" [2/4]\") + pc.cyan(\" bundler config\"))\r\n\r\n const bundlerConfigMap: Record<\r\n string,\r\n { files: string[]; patcher: (src: string) => string | null; warnMsg: string }\r\n > = {\r\n next: {\r\n files: [\"next.config.ts\", \"next.config.mjs\", \"next.config.js\"],\r\n patcher: patchNextConfig,\r\n warnMsg: \"next.config.ts tidak ditemukan - jalankan npx create-next-app terlebih dahulu\",\r\n },\r\n vite: {\r\n files: [\"vite.config.ts\", \"vite.config.mjs\", \"vite.config.js\"],\r\n patcher: patchViteConfig,\r\n warnMsg: \"vite.config.ts tidak ditemukan - jalankan npm create vite terlebih dahulu\",\r\n },\r\n rspack: {\r\n files: [\"rspack.config.ts\", \"rspack.config.mjs\", \"rspack.config.js\"],\r\n patcher: patchRspackConfig,\r\n warnMsg: \"rspack.config.ts tidak ditemukan - tambahkan manual\",\r\n },\r\n }\r\n\r\n const bundlerConfig = bundlerConfigMap[bundler]\r\n\r\n if (bundlerConfig) {\r\n const cfg = await findExisting(cwd, bundlerConfig.files)\r\n if (cfg)\r\n await patchFileWithDryRun(cfg, bundlerConfig.patcher, path.basename(cfg), setupFlags, logger)\r\n else logger.warn(bundlerConfig.warnMsg)\r\n } else {\r\n logger.skip(\"React tanpa bundler - tidak ada bundler config yang di-patch\")\r\n logger.info(\"Tambahkan tailwind-styled-v4 langsung ke komponen React kamu\")\r\n }\r\n\r\n output.writeText(\"\\n\" + pc.bold(\" [3/4]\") + pc.cyan(\" globals.css\"))\r\n const cssCandidates = [\r\n \"src/app/globals.css\",\r\n \"src/globals.css\",\r\n \"src/styles/globals.css\",\r\n \"src/tailwind.css\",\r\n \"src/index.css\",\r\n \"styles/globals.css\",\r\n ]\r\n const cssFile = await findExisting(cwd, cssCandidates)\r\n\r\n if (cssFile) {\r\n await patchFileWithDryRun(\r\n cssFile,\r\n (src) => patchTailwindCss(src, bundler as \"next\" | \"vite\" | \"rspack\" | undefined, path.relative(cwd, cssFile), cwd),\r\n path.relative(cwd, cssFile),\r\n setupFlags,\r\n logger\r\n )\r\n } else {\r\n logger.warn(\"CSS entry tidak ditemukan — tambahkan @import \\\"tailwindcss\\\" manual ke globals.css\")\r\n }\r\n\r\n output.writeText(\"\\n\" + pc.bold(\" [4/4]\") + pc.cyan(\" tsconfig.json\"))\r\n const tsCfg = path.join(cwd, \"tsconfig.json\")\r\n const hasTsConfig = await findExisting(cwd, [\"tsconfig.json\"])\r\n\r\n if (hasTsConfig) {\r\n await patchFileWithDryRun(tsCfg, patchTsConfig, \"tsconfig.json\", setupFlags, logger)\r\n } else {\r\n logger.skip(\"tsconfig.json tidak ditemukan — skip\")\r\n }\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(pc.bold(pc.green(\" ✓ setup selesai\")))\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" selanjutnya\"))\r\n output.writeText(\" \" + pc.cyan(\"npx tw preflight\") + pc.dim(\" — verifikasi config\"))\r\n output.writeText(\" \" + pc.cyan(\"npm run dev\") + pc.dim(\" — mulai development\"))\r\n output.writeText(\"\")\r\n\r\n if (setupFlags.isJson) {\r\n const report: SetupReport = {\r\n generatedAt: new Date().toISOString(),\r\n cwd,\r\n detected,\r\n selected: bundler,\r\n packageManager: pm,\r\n dryRun: setupFlags.isDryRun,\r\n skipInstall: setupFlags.skipInstall,\r\n events,\r\n warnings: events.filter((event) => event.level === \"warn\").length,\r\n }\r\n output.jsonSuccess(\"setup\", report)\r\n }\r\n}","export function patchNextConfigImpl(src: string): string | null {\r\n if (src.includes(\"withTailwindStyled\")) return null\r\n\r\n const hasExport = src.includes(\"export default\")\r\n const hasCjs = src.includes(\"module.exports\")\r\n\r\n if (hasExport) {\r\n const withImport = `import { withTailwindStyled } from \"tailwind-styled-v4/next\"\\n${src}`\r\n\r\n const patterns = [\r\n /export default\\s+([\\w]+);?\\s*$/m,\r\n /export default\\s+(defineConfig\\([\\s\\S]*?\\));?\\s*$/m,\r\n /export default\\s+(\\{[\\s\\S]*?\\});?\\s*$/m,\r\n ]\r\n\r\n const result = patterns.reduce(\r\n (acc, pattern) =>\r\n acc.replace(pattern, (_match, expr) => `export default withTailwindStyled()(${expr})`),\r\n withImport\r\n )\r\n\r\n return result === src ? null : result\r\n }\r\n\r\n if (hasCjs) {\r\n const result =\r\n `const { withTailwindStyled } = require(\"tailwind-styled-v4/next\")\\n` +\r\n src.replace(\r\n /module\\.exports\\s*=\\s*(.+)/s,\r\n (_match, expr) => `module.exports = withTailwindStyled()(${expr.trim()})`\r\n )\r\n return result === src ? null : result\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function patchViteConfigImpl(src: string): string | null {\r\n const hasLegacyImport = src.includes(\"tailwind-styled-v4/vite\")\r\n\r\n const patched = hasLegacyImport\r\n ? src\r\n .replace(/from\\s+['\"]tailwind-styled-v4\\/vite['\"]/g, 'from \"tailwind-styled-v4/vite\"')\r\n .replace(/\\btailwindStyled\\(/g, \"tailwindStyledPlugin(\")\r\n : src.replace(/\\btailwindStyled\\(/g, \"tailwindStyledPlugin(\")\r\n\r\n const alreadyConfigured =\r\n patched.includes(\"tailwind-styled-v4/vite\") && patched.includes(\"tailwindStyledPlugin(\")\r\n if (alreadyConfigured) return patched === src ? null : patched\r\n\r\n const viteImportMatch = patched.match(/(import .+ from ['\"]vite['\"][^\\n]*\\n)/)\r\n const reactImportMatch = patched.match(/(import .+ from ['\"]@vitejs\\/plugin-react['\"][^\\n]*\\n)/)\r\n const insertAfter = (reactImportMatch ?? viteImportMatch)?.[1]\r\n\r\n const result = (() => {\r\n if (!patched.includes(\"tailwind-styled-v4/vite\") && insertAfter) {\r\n return patched.replace(\r\n insertAfter,\r\n `${insertAfter}import { tailwindStyledPlugin } from \"tailwind-styled-v4/vite\"\\n`\r\n )\r\n }\r\n if (!patched.includes(\"tailwind-styled-v4/vite\")) {\r\n return `import { tailwindStyledPlugin } from \"tailwind-styled-v4/vite\"\\n${patched}`\r\n }\r\n return patched\r\n })()\r\n\r\n return result === src ? null : result\r\n}\r\n\r\nexport function patchRspackConfigImpl(src: string): string | null {\r\n const hasModernImport = src.includes(\"tailwind-styled-v4/rspack\")\r\n const hasLegacyImport = src.includes(\"tailwind-styled-v4/rspack\")\r\n\r\n const withLegacyFix = hasLegacyImport\r\n ? src.replace(/from\\s+['\"]tailwind-styled-v4\\/rspack['\"]/g, 'from \"tailwind-styled-v4/rspack\"')\r\n : src\r\n\r\n const patched = withLegacyFix.replace(/\\btailwindStyled\\(/g, \"tailwindStyledRspackPlugin(\")\r\n\r\n const alreadyConfigured =\r\n patched.includes(\"tailwind-styled-v4/rspack\") && patched.includes(\"tailwindStyledRspackPlugin(\")\r\n if (alreadyConfigured) return patched === src ? null : patched\r\n\r\n const result = (() => {\r\n if (!patched.includes(\"tailwind-styled-v4/rspack\") && !hasModernImport) {\r\n const lines = patched.split(\"\\n\")\r\n const lastImportIdx = lines.reduce((maxIdx, line, idx) => {\r\n return line.trimStart().startsWith(\"import \") ? idx : maxIdx\r\n }, 0)\r\n lines.splice(\r\n lastImportIdx + 1,\r\n 0,\r\n 'import { tailwindStyledRspackPlugin } from \"tailwind-styled-v4/rspack\"'\r\n )\r\n return lines.join(\"\\n\")\r\n }\r\n return patched\r\n })()\r\n\r\n const finalResult = (() => {\r\n if (!result.includes(\"tailwindStyledRspackPlugin(\")) {\r\n if (result.includes(\"plugins:\")) {\r\n return result.replace(\r\n /plugins:\\s*\\[([^\\]]*)\\]/s,\r\n (_match, inner) => `plugins: [${inner.trimEnd()}\\n tailwindStyledRspackPlugin(),\\n ]`\r\n )\r\n }\r\n return result.replace(\r\n /(export default defineConfig\\(\\{[\\s\\S]*?)(\\}\\))/,\r\n (_match, body, close) => `${body} plugins: [tailwindStyledRspackPlugin()],\\n${close}`\r\n )\r\n }\r\n return result\r\n })()\r\n\r\n return finalResult === src ? null : finalResult\r\n}\r\n\r\n/**\r\n * Hitung path relatif dari cssFilePath ke `.next/tailwind-styled-safelist.css`.\r\n * Contoh:\r\n * cssFile = \"src/app/globals.css\" → \"../../.next/tailwind-styled-safelist.css\"\r\n * cssFile = \"src/globals.css\" → \"../.next/tailwind-styled-safelist.css\"\r\n */\r\nexport function computeSafelistSourcePath(cssFilePath: string, cwd: string): string {\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-require-imports\r\n const nodePath = require(\"node:path\") as typeof import(\"node:path\")\r\n const cssAbs = nodePath.resolve(cwd, cssFilePath)\r\n const cssDir = nodePath.dirname(cssAbs)\r\n // Per-file safelist dir — Turbopack writes one CSS file per component here\r\n const safelistAbs = nodePath.resolve(cwd, \".next\", \"tw-classes\")\r\n const rel = nodePath.relative(cssDir, safelistAbs).replace(/\\\\/g, \"/\")\r\n const relPath = rel.startsWith(\".\") ? rel : `./${rel}`\r\n return `${relPath}/**`\r\n } catch {\r\n const depth = cssFilePath.split(\"/\").length - 1\r\n const ups = Array(depth).fill(\"..\").join(\"/\")\r\n return `${ups}/.next/tw-classes/**`\r\n }\r\n}\r\n\r\nexport function patchTailwindCssImpl(\r\n src: string,\r\n bundler?: \"next\" | \"vite\" | \"rspack\",\r\n cssFilePath?: string,\r\n cwd?: string\r\n): string | null {\r\n const hasTailwindImport =\r\n src.includes('@import \"tailwindcss\"') || src.includes(\"@import 'tailwindcss'\")\r\n\r\n const hasSafelistSource = src.includes(\"tailwind-styled-safelist.css\")\r\n const needsSafelistSource = bundler === \"next\" && !hasSafelistSource\r\n\r\n const safelistRelPath =\r\n needsSafelistSource && cssFilePath && cwd\r\n ? computeSafelistSourcePath(cssFilePath, cwd)\r\n : \"../.next/tailwind-styled-safelist.css\"\r\n\r\n const safelistSource = `@source \"${safelistRelPath}\";`\r\n\r\n if (hasTailwindImport) {\r\n if (!needsSafelistSource) return null\r\n const patched = src.replace(\r\n /(@import\\s+['\"]tailwindcss['\"];?)/,\r\n `$1\\n${safelistSource}`\r\n )\r\n return patched === src ? null : patched\r\n }\r\n\r\n const base = `@import \"tailwindcss\";\\n${needsSafelistSource ? `${safelistSource}\\n` : \"\"}\\n${src}`\r\n return base\r\n}\r\n\r\nexport function patchTsConfigImpl(src: string): string | null {\r\n try {\r\n const json = JSON.parse(src) as { compilerOptions?: Record<string, unknown> }\r\n const compilerOptions = (json.compilerOptions ?? {}) as Record<string, unknown>\r\n\r\n const original = { ...compilerOptions }\r\n\r\n // Apply changes immutably\r\n const updatedCompilerOptions = {\r\n ...compilerOptions,\r\n paths: compilerOptions.paths ?? {},\r\n strict: compilerOptions.strict === undefined ? true : compilerOptions.strict,\r\n moduleResolution:\r\n compilerOptions.moduleResolution === \"node16\" ||\r\n compilerOptions.moduleResolution === \"bundler\"\r\n ? compilerOptions.moduleResolution\r\n : \"bundler\",\r\n jsx: compilerOptions.jsx ?? \"react-jsx\",\r\n }\r\n\r\n const hasChanges =\r\n updatedCompilerOptions.paths !== original.paths ||\r\n updatedCompilerOptions.strict !== original.strict ||\r\n updatedCompilerOptions.moduleResolution !== original.moduleResolution ||\r\n updatedCompilerOptions.jsx !== original.jsx\r\n\r\n if (!hasChanges) return null\r\n\r\n const updatedJson = {\r\n ...json,\r\n compilerOptions: updatedCompilerOptions,\r\n }\r\n\r\n return `${JSON.stringify(updatedJson, null, 2)}\\n`\r\n } catch {\r\n return null\r\n }\r\n}","import { isCancel, select } from \"@clack/prompts\"\r\n\r\nimport { CliUsageError } from \"../../utils/errors\"\r\nimport type { ProjectType, SetupFlags, SetupProjectOption } from \"./workspace\"\r\n\r\ninterface PromptOptions {\r\n output?: NodeJS.WritableStream\r\n log?: (message: string) => void\r\n}\r\n\r\nexport async function pickProjectTypeInteractive(\r\n detected: ProjectType | null,\r\n flags: SetupFlags,\r\n projectOptions: SetupProjectOption[],\r\n options: PromptOptions = {}\r\n): Promise<ProjectType> {\r\n const log = options.log ?? console.log\r\n\r\n if (flags.explicitProjectType) {\r\n const label =\r\n projectOptions.find((option) => option.value === flags.explicitProjectType)?.label ??\r\n flags.explicitProjectType\r\n log(` Project type dipaksa via flag: ${label}\\n`)\r\n return flags.explicitProjectType\r\n }\r\n\r\n if (flags.isYes) {\r\n const selected = detected ?? \"next\"\r\n const label = projectOptions.find((option) => option.value === selected)?.label ?? selected\r\n log(` --yes aktif, pilih default: ${label}\\n`)\r\n return selected\r\n }\r\n\r\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\r\n const selected = detected ?? \"next\"\r\n const label = projectOptions.find((option) => option.value === selected)?.label ?? selected\r\n log(` Non-interactive shell terdeteksi, pilih default: ${label}\\n`)\r\n return selected\r\n }\r\n\r\n log(\" Pilih project type:\\n\")\r\n projectOptions.forEach((option, index) => {\r\n const mark = detected === option.value ? \" <- terdeteksi\" : \"\"\r\n log(` ${index + 1}. ${option.label}${mark}`)\r\n })\r\n log(\"\")\r\n\r\n const defaultIdx = detected ? projectOptions.findIndex((option) => option.value === detected) : 0\r\n const selected = await select<ProjectType>({\r\n message: \"Project type\",\r\n initialValue: projectOptions[defaultIdx].value,\r\n options: projectOptions.map((option) => ({\r\n value: option.value,\r\n label: option.label,\r\n hint: detected === option.value ? \"terdeteksi\" : undefined,\r\n })),\r\n })\r\n\r\n if (isCancel(selected)) {\r\n throw new CliUsageError(\"Prompt dibatalkan oleh pengguna\")\r\n }\r\n\r\n const selectedLabel =\r\n projectOptions.find((option) => option.value === selected)?.label ?? selected\r\n log(`\\n -> ${selectedLabel} dipilih.\\n`)\r\n return selected\r\n}\r\n","import path from \"node:path\"\r\n\r\nimport { pathExists, readFileSafe, readJsonSafe, writeFileSafe } from \"../../utils/fs\"\r\nimport type { CliLogger } from \"../../utils/logger\"\r\nimport { runCommand } from \"../../utils/process\"\r\n\r\nexport type ProjectType = \"next\" | \"vite\" | \"react\" | \"rspack\"\r\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\"\r\n\r\nexport interface SetupFlags {\r\n isDryRun: boolean\r\n skipInstall: boolean\r\n isYes: boolean\r\n isJson: boolean\r\n explicitProjectType: ProjectType | null\r\n}\r\n\r\nexport interface SetupProjectOption {\r\n label: string\r\n value: ProjectType\r\n adapter: string\r\n}\r\n\r\ninterface PackageJsonLike {\r\n dependencies?: Record<string, string>\r\n devDependencies?: Record<string, string>\r\n}\r\n\r\nexport function resolveExplicitProjectType(rawFlags: Set<string>): ProjectType | null {\r\n if (rawFlags.has(\"--next\")) return \"next\"\r\n if (rawFlags.has(\"--vite\")) return \"vite\"\r\n if (rawFlags.has(\"--rspack\")) return \"rspack\"\r\n if (rawFlags.has(\"--react\")) return \"react\"\r\n return null\r\n}\r\n\r\nexport function configureSetupFlags(rawArgs: string[]): SetupFlags {\r\n const rawFlags = new Set(rawArgs.filter((arg) => arg.startsWith(\"--\")))\r\n return {\r\n isDryRun: rawFlags.has(\"--dry-run\"),\r\n skipInstall: rawFlags.has(\"--skip-install\"),\r\n isYes: rawFlags.has(\"--yes\"),\r\n isJson: rawFlags.has(\"--json\"),\r\n explicitProjectType: resolveExplicitProjectType(rawFlags),\r\n }\r\n}\r\n\r\nasync function readPackageJson(cwd: string): Promise<PackageJsonLike | null> {\r\n return readJsonSafe<PackageJsonLike>(path.join(cwd, \"package.json\"))\r\n}\r\n\r\nexport async function detectPm(cwd: string): Promise<PackageManager> {\r\n if (await pathExists(path.join(cwd, \"bun.lockb\"))) return \"bun\"\r\n if (await pathExists(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\"\r\n if (await pathExists(path.join(cwd, \"yarn.lock\"))) return \"yarn\"\r\n return \"npm\"\r\n}\r\n\r\nexport async function detectBundler(cwd: string): Promise<ProjectType | null> {\r\n const pkg = await readPackageJson(cwd)\r\n if (!pkg) return null\r\n\r\n const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) }\r\n if (deps.next) return \"next\"\r\n if (deps.vite || deps[\"@vitejs/plugin-react\"]) return \"vite\"\r\n if (deps[\"@rspack/core\"] || deps.rspack) return \"rspack\"\r\n if (deps.react) return \"react\"\r\n return null\r\n}\r\n\r\nexport async function alreadyInstalled(cwd: string, pkgName: string): Promise<boolean> {\r\n const pkg = await readPackageJson(cwd)\r\n if (!pkg) return false\r\n const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) }\r\n return pkgName in deps\r\n}\r\n\r\nexport async function findExisting(cwd: string, names: string[]): Promise<string | null> {\r\n for (const name of names) {\r\n const resolved = path.join(cwd, name)\r\n if (await pathExists(resolved)) return resolved\r\n }\r\n return null\r\n}\r\n\r\nexport async function writeFileWithDryRun(\r\n cwd: string,\r\n filePath: string,\r\n content: string,\r\n label: string,\r\n flags: SetupFlags,\r\n logger: CliLogger\r\n): Promise<void> {\r\n if (flags.isDryRun) {\r\n logger.dry(`create ${label}`)\r\n return\r\n }\r\n await writeFileSafe(filePath, content)\r\n logger.ok(path.relative(cwd, filePath) || label)\r\n}\r\n\r\nexport async function patchFileWithDryRun(\r\n filePath: string,\r\n patcher: (source: string) => string | null,\r\n label: string,\r\n flags: SetupFlags,\r\n logger: CliLogger\r\n): Promise<boolean> {\r\n const source = await readFileSafe(filePath)\r\n if (!source) return false\r\n\r\n const patched = patcher(source)\r\n if (!patched) {\r\n logger.skip(`${label} sudah terkonfigurasi`)\r\n return false\r\n }\r\n\r\n if (flags.isDryRun) {\r\n logger.dry(`patch ${label}`)\r\n return true\r\n }\r\n\r\n await writeFileSafe(filePath, patched)\r\n logger.ok(`${label} dipatch`)\r\n return true\r\n}\r\n\r\nexport async function installPackages(\r\n cwd: string,\r\n pm: PackageManager,\r\n pkgs: string[],\r\n dev: boolean,\r\n flags: SetupFlags,\r\n logger: CliLogger\r\n): Promise<void> {\r\n if (flags.skipInstall) {\r\n logger.skip(\"npm install (--skip-install)\")\r\n return\r\n }\r\n if (flags.isDryRun) {\r\n logger.dry(`${pm} install ${pkgs.join(\" \")}`)\r\n return\r\n }\r\n\r\n const flag = dev ? (pm === \"yarn\" || pm === \"bun\" ? \"-D\" : \"--save-dev\") : \"--save\"\r\n const cmd =\r\n pm === \"yarn\"\r\n ? [\"add\", flag, ...pkgs]\r\n : pm === \"bun\"\r\n ? [\"add\", flag, ...pkgs]\r\n : [\"install\", flag, ...pkgs]\r\n\r\n logger.info(`$ ${pm} ${cmd.join(\" \")}`)\r\n try {\r\n const exitCode = await runCommand(pm, cmd, {\r\n cwd,\r\n allowNonZeroExit: true,\r\n stdio: flags.isJson ? \"pipe\" : \"inherit\",\r\n })\r\n if (exitCode !== 0) {\r\n logger.warn(`install gagal - jalankan manual: ${pm} ${cmd.join(\" \")}`)\r\n }\r\n } catch {\r\n logger.warn(`install gagal - jalankan manual: ${pm} ${cmd.join(\" \")}`)\r\n }\r\n}\r\n","import { spawn } from \"node:child_process\"\r\n\r\nimport { CliError } from \"./errors\"\r\nimport { writeJsonSuccess } from \"./json\"\r\n\r\nexport interface RunCommandOptions {\r\n cwd?: string\r\n env?: NodeJS.ProcessEnv\r\n stdio?: \"inherit\" | \"pipe\"\r\n allowNonZeroExit?: boolean\r\n verbose?: boolean\r\n}\r\n\r\nexport interface RunCommandCaptureOptions {\r\n cwd?: string\r\n env?: NodeJS.ProcessEnv\r\n allowNonZeroExit?: boolean\r\n verbose?: boolean\r\n}\r\n\r\nexport interface RunCommandCaptureResult {\r\n exitCode: number\r\n stdout: string\r\n stderr: string\r\n}\r\n\r\nexport type CommandOutputFormat = \"json\" | \"text\" | \"empty\"\r\n\r\nexport interface ParsedCommandOutput {\r\n outputFormat: CommandOutputFormat\r\n output: unknown | string | null\r\n}\r\n\r\nexport const npmCommandName = (): string => {\r\n return process.platform === \"win32\" ? \"npm.cmd\" : \"npm\"\r\n}\r\n\r\nexport const npxCommandName = (): string => {\r\n return process.platform === \"win32\" ? \"npx.cmd\" : \"npx\"\r\n}\r\n\r\nexport const codeCommandName = (): string => {\r\n return process.platform === \"win32\" ? \"code.cmd\" : \"code\"\r\n}\r\n\r\nconst shellQuote = (value: string): string => {\r\n if (value.length === 0) return '\"\"'\r\n if (!/[^\\w./:=@-]/.test(value)) return value\r\n return JSON.stringify(value)\r\n}\r\n\r\nconst formatCommand = (binary: string, args: string[]): string => {\r\n return [binary, ...args].map(shellQuote).join(\" \")\r\n}\r\n\r\nconst isVerboseEnabled = (options: { verbose?: boolean; env?: NodeJS.ProcessEnv }): boolean => {\r\n if (options.verbose) return true\r\n if (options.env?.TWS_VERBOSE === \"1\") return true\r\n return process.env.TWS_VERBOSE === \"1\"\r\n}\r\n\r\nconst writeVerboseLine = (binary: string, args: string[]): void => {\r\n console.error(` [verbose] $ ${formatCommand(binary, args)}`)\r\n}\r\n\r\nexport const runCommand = async (\r\n binary: string,\r\n args: string[],\r\n options: RunCommandOptions = {}\r\n): Promise<number> => {\r\n return new Promise<number>((resolve, reject) => {\r\n if (isVerboseEnabled(options)) {\r\n writeVerboseLine(binary, args)\r\n }\r\n\r\n const child = spawn(binary, args, {\r\n stdio: options.stdio ?? \"inherit\",\r\n cwd: options.cwd ?? process.cwd(),\r\n env: options.env ?? process.env,\r\n })\r\n\r\n child.on(\"error\", (error) => {\r\n reject(\r\n new CliError(`Failed to run command: ${binary} ${args.join(\" \")}`, {\r\n cause: error,\r\n })\r\n )\r\n })\r\n\r\n child.on(\"exit\", (code) => {\r\n const exitCode = code ?? 0\r\n if (exitCode !== 0 && !options.allowNonZeroExit) {\r\n reject(\r\n new CliError(`Command exited with code ${exitCode}: ${binary} ${args.join(\" \")}`, {\r\n exitCode,\r\n code: \"COMMAND_EXIT_NON_ZERO\",\r\n })\r\n )\r\n return\r\n }\r\n resolve(exitCode)\r\n })\r\n })\r\n}\r\n\r\nconst parseCommandOutput = (stdout: string): ParsedCommandOutput => {\r\n const trimmed = stdout.trim()\r\n if (!trimmed) {\r\n return { outputFormat: \"empty\", output: null }\r\n }\r\n\r\n try {\r\n return {\r\n outputFormat: \"json\",\r\n output: JSON.parse(trimmed) as unknown,\r\n }\r\n } catch {\r\n return {\r\n outputFormat: \"text\",\r\n output: stdout.trimEnd(),\r\n }\r\n }\r\n}\r\n\r\nconst formatCommandFailureOutput = (stdout: string, stderr: string): string => {\r\n const errorText = stderr.trim()\r\n if (errorText) return errorText\r\n const outputText = stdout.trim()\r\n if (outputText) return outputText\r\n return \"Command failed with no output.\"\r\n}\r\n\r\nexport const runCommandCapture = async (\r\n binary: string,\r\n args: string[],\r\n options: RunCommandCaptureOptions = {}\r\n): Promise<RunCommandCaptureResult> => {\r\n return new Promise<RunCommandCaptureResult>((resolve, reject) => {\r\n if (isVerboseEnabled(options)) {\r\n writeVerboseLine(binary, args)\r\n }\r\n\r\n const child = spawn(binary, args, {\r\n stdio: \"pipe\",\r\n cwd: options.cwd ?? process.cwd(),\r\n env: options.env ?? process.env,\r\n })\r\n\r\n const chunks: { stdout: Buffer[]; stderr: Buffer[] } = {\r\n stdout: [],\r\n stderr: [],\r\n }\r\n\r\n child.stdout?.on(\"data\", (chunk: Buffer | string) => {\r\n chunks.stdout.push(Buffer.from(chunk))\r\n })\r\n\r\n child.stderr?.on(\"data\", (chunk: Buffer | string) => {\r\n chunks.stderr.push(Buffer.from(chunk))\r\n })\r\n\r\n child.on(\"error\", (error) => {\r\n reject(\r\n new CliError(`Failed to run command: ${binary} ${args.join(\" \")}`, {\r\n cause: error,\r\n })\r\n )\r\n })\r\n\r\n child.on(\"exit\", (code) => {\r\n const exitCode = code ?? 0\r\n const stdout = Buffer.concat(chunks.stdout).toString(\"utf8\")\r\n const stderr = Buffer.concat(chunks.stderr).toString(\"utf8\")\r\n\r\n if (exitCode !== 0 && !options.allowNonZeroExit) {\r\n reject(\r\n new CliError(\r\n `Command exited with code ${exitCode}: ${binary} ${args.join(\" \")}\\n${formatCommandFailureOutput(stdout, stderr)}`,\r\n {\r\n exitCode,\r\n code: \"COMMAND_EXIT_NON_ZERO\",\r\n }\r\n )\r\n )\r\n return\r\n }\r\n\r\n resolve({\r\n exitCode,\r\n stdout,\r\n stderr,\r\n })\r\n })\r\n })\r\n}\r\n\r\nexport const runCommandAsJson = async (\r\n command: string,\r\n binary: string,\r\n args: string[],\r\n options: RunCommandCaptureOptions = {}\r\n): Promise<void> => {\r\n const captured = await runCommandCapture(binary, args, options)\r\n const parsed = parseCommandOutput(captured.stdout)\r\n\r\n writeJsonSuccess(command, {\r\n exitCode: captured.exitCode,\r\n outputFormat: parsed.outputFormat,\r\n output: parsed.output,\r\n stderr: captured.stderr.trim() || null,\r\n })\r\n}\r\n","import pc from \"picocolors\"\r\n\r\nimport type { CliOutput } from \"./output\"\r\n\r\nexport interface CliLogger {\r\n ok: (message: string) => void\r\n skip: (message: string) => void\r\n warn: (message: string) => void\r\n info: (message: string) => void\r\n dry: (message: string) => void\r\n}\r\n\r\nexport type CliLogLevel = \"ok\" | \"skip\" | \"warn\" | \"info\" | \"dry\"\r\n\r\nexport interface CliLogEvent {\r\n level: CliLogLevel\r\n message: string\r\n}\r\n\r\nexport interface CreateCliLoggerOptions {\r\n silent?: boolean\r\n useStderr?: boolean\r\n onEvent?: (event: CliLogEvent) => void\r\n output?: CliOutput\r\n}\r\n\r\nexport function createCliLogger(options: CreateCliLoggerOptions = {}): CliLogger {\r\n function emit(level: CliLogLevel, icon: string, colorize: (s: string) => string, message: string): void {\r\n options.onEvent?.({ level, message })\r\n if (options.silent) return\r\n\r\n const line = ` ${colorize(icon)} ${message}`\r\n\r\n if (options.output) {\r\n options.output.writeText(line, { stderr: options.useStderr })\r\n return\r\n }\r\n\r\n const writeLine = options.useStderr ? console.error : console.log\r\n writeLine(line)\r\n }\r\n\r\n return {\r\n ok(message: string) {\r\n emit(\"ok\", \"✓\", pc.green, pc.dim(message))\r\n },\r\n skip(message: string) {\r\n emit(\"skip\", \"–\", pc.dim, pc.dim(message))\r\n },\r\n warn(message: string) {\r\n emit(\"warn\", \"⚠\", pc.yellow, message)\r\n },\r\n info(message: string) {\r\n emit(\"info\", \"→\", pc.cyan, pc.dim(message))\r\n },\r\n dry(message: string) {\r\n emit(\"dry\", \"○\", pc.cyan, pc.dim(`[dry] ${message}`))\r\n },\r\n }\r\n}","/**\r\n * tailwind-styled-v4 bundle stats visualizer.\r\n */\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { loadAnalyzerModule } from \"./utils/analyzer\"\r\nimport { CliUsageError } from \"./utils/errors\"\r\nimport { pathExists } from \"./utils/fs\"\r\nimport { createCliOutput } from \"./utils/output\"\r\n\r\nfunction estimateClassBytes(className: string): number {\r\n const base = 20\r\n if (className.startsWith(\"bg-\")) return base + 28\r\n if (className.startsWith(\"text-\")) return base + 22\r\n if (className.startsWith(\"border-\")) return base + 20\r\n if (className.startsWith(\"p-\") || className.startsWith(\"px-\") || className.startsWith(\"py-\"))\r\n return base + 18\r\n if (className.startsWith(\"m-\") || className.startsWith(\"mx-\") || className.startsWith(\"my-\"))\r\n return base + 18\r\n if (className.startsWith(\"w-\") || className.startsWith(\"h-\")) return base + 12\r\n if (className.startsWith(\"flex\")) return base + 16\r\n if (className.startsWith(\"grid\")) return base + 20\r\n if (className.startsWith(\"rounded\")) return base + 18\r\n if (className.startsWith(\"shadow\")) return base + 24\r\n if (className.startsWith(\"hover:\") || className.startsWith(\"focus:\")) return base + 35\r\n return base + 15\r\n}\r\n\r\nexport async function runStatsCli(args: string[]): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n json: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const jsonFlag = Boolean(parsed.values.json)\r\n const output = createCliOutput({\r\n json: jsonFlag,\r\n debug: process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\",\r\n verbose: process.env.TWS_VERBOSE === \"1\" || process.env.VERBOSE === \"1\",\r\n })\r\n const dirArg = parsed.positionals[0] ?? \".\"\r\n const dir = path.resolve(process.cwd(), dirArg)\r\n\r\n if (!(await pathExists(dir))) {\r\n throw new CliUsageError(`Directory not found: ${dir}`)\r\n }\r\n\r\n const analyzer = await loadAnalyzerModule()\r\n const spinner = output.spinner()\r\n spinner.start(`Computing stats for ${dir}`)\r\n const report = await analyzer.analyzeWorkspace(dir, {\r\n classStats: { top: 30, frequentThreshold: 2 },\r\n })\r\n spinner.stop(`Stats complete: ${report.totalFiles} file(s)`)\r\n const totalBytes = report.safelist.reduce(\r\n (sum, className) => sum + estimateClassBytes(className),\r\n 0\r\n )\r\n const duplicateBytes = report.classStats.frequent.reduce(\r\n (sum, usage) => sum + estimateClassBytes(usage.name) * Math.max(usage.count - 1, 0),\r\n 0\r\n )\r\n\r\n if (jsonFlag) {\r\n output.jsonSuccess(\"stats\", { ...report, estimatedCssBytes: totalBytes, duplicateBytes })\r\n return\r\n }\r\n\r\n const bar = \"-\".repeat(55)\r\n output.writeText(`\\n+${bar}+`)\r\n output.writeText(`| tailwind-styled-v4 - Bundle Stats${\" \".repeat(20)}|`)\r\n output.writeText(`+${bar}+`)\r\n output.writeText(`| Files scanned: ${String(report.totalFiles).padEnd(34)}|`)\r\n output.writeText(`| Unique classes: ${String(report.uniqueClassCount).padEnd(34)}|`)\r\n output.writeText(\r\n `| Est. CSS size: ${String(`${(totalBytes / 1024).toFixed(1)} kB`).padEnd(34)}|`\r\n )\r\n output.writeText(\r\n `| Duplicate waste: ${String(`${(duplicateBytes / 1024).toFixed(1)} kB`).padEnd(34)}|`\r\n )\r\n output.writeText(`+${bar}+`)\r\n\r\n if (report.classStats.top.length > 0) {\r\n output.writeText(\"\\n TOP CLASSES BY CSS WEIGHT\")\r\n output.writeText(` ${\"-\".repeat(52)}`)\r\n const sorted = [...report.classStats.top]\r\n .map((usage) => ({ ...usage, bytes: estimateClassBytes(usage.name) * usage.count }))\r\n .sort((left, right) => right.bytes - left.bytes)\r\n\r\n for (const usage of sorted.slice(0, 10)) {\r\n output.writeText(\r\n ` ${usage.name.padEnd(32)} ${String(`${usage.count}x`).padEnd(6)} ~${(\r\n usage.bytes / 1024\r\n ).toFixed(1)}kB`\r\n )\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n","import { readFileSync, readdirSync, statSync } from \"node:fs\"\r\nimport { join, extname } from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\ninterface FileBoundary {\r\n file: string\r\n type: \"server\" | \"client\"\r\n reasons: string[]\r\n}\r\n\r\nfunction collectTsFiles(dir: string, extensions: Set<string>): string[] {\r\n const files: string[] = []\r\n const entries = readdirSync(dir, { withFileTypes: true })\r\n for (const entry of entries) {\r\n const full = join(dir, entry.name)\r\n if (entry.isDirectory()) {\r\n if (entry.name === \"node_modules\" || entry.name === \"dist\" || entry.name === \".next\") continue\r\n files.push(...collectTsFiles(full, extensions))\r\n } else if (extensions.has(extname(entry.name))) {\r\n files.push(full)\r\n }\r\n }\r\n return files\r\n}\r\n\r\nfunction analyzeRscBoundary(source: string): { isServer: boolean; reasons: string[] } {\r\n const reasons: string[] = []\r\n\r\n const hasUseClient = source.includes('\"use client\"') || source.includes(\"'use client'\")\r\n if (hasUseClient) {\r\n return { isServer: false, reasons: [\"explicit 'use client' directive\"] }\r\n }\r\n\r\n if (/\\buse(State|Effect|Context|Ref|Memo|Callback|Reducer)\\b/.test(source)) {\r\n reasons.push(\"uses React hooks\")\r\n }\r\n if (/\\bon(Click|Change|Submit|Key|Mouse|Focus|Blur|Input)\\s*=/.test(source)) {\r\n reasons.push(\"has event handlers\")\r\n }\r\n if (/\\b(window|document|navigator|localStorage|setTimeout|setInterval|fetch|requestAnimationFrame)\\b/.test(source)) {\r\n reasons.push(\"uses browser APIs\")\r\n }\r\n if (/\\buseState\\b/.test(source)) {\r\n reasons.push(\"uses useState\")\r\n }\r\n if (/\\buseEffect\\b/.test(source)) {\r\n reasons.push(\"uses useEffect\")\r\n }\r\n\r\n return { isServer: reasons.length === 0, reasons }\r\n}\r\n\r\nfunction printBoundaryReport(\r\n report: FileBoundary[],\r\n output: CliOutput\r\n): void {\r\n const servers = report.filter((r) => r.type === \"server\")\r\n const clients = report.filter((r) => r.type === \"client\")\r\n\r\n output.writeText(\"\")\r\n output.writeText(\"RSC Boundary Report\")\r\n output.writeText(` Total files: ${report.length}`)\r\n output.writeText(` Server Components: ${servers.length}`)\r\n output.writeText(` Client Components: ${clients.length}`)\r\n output.writeText(\r\n ` Server ratio: ${report.length > 0 ? ((servers.length / report.length) * 100).toFixed(1) : 0}%`\r\n )\r\n\r\n if (clients.length > 0) {\r\n output.writeText(\"\")\r\n output.subHeader(\"Client Components\")\r\n for (const c of clients) {\r\n output.listItem(`${c.file}`)\r\n for (const r of c.reasons) {\r\n output.listItem(` ${r}`)\r\n }\r\n }\r\n }\r\n\r\n if (servers.length > 0 && servers.length <= 20) {\r\n output.writeText(\"\")\r\n output.subHeader(\"Server Components\")\r\n for (const s of servers) {\r\n output.listItem(s.file)\r\n }\r\n }\r\n}\r\n\r\nexport async function runBoundaryCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n },\r\n })\r\n\r\n const target = parsed.positionals[0] as string | undefined\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : (target ?? context.cwd)\r\n const json = context.json || parsed.values.json === true\r\n\r\n const extensions = new Set([\".ts\", \".tsx\", \".js\", \".jsx\"])\r\n const files = collectTsFiles(root, extensions)\r\n\r\n const report: FileBoundary[] = []\r\n\r\n for (const file of files) {\r\n let source: string\r\n try {\r\n source = readFileSync(file, \"utf8\")\r\n } catch {\r\n continue\r\n }\r\n\r\n if (!source.includes(\"tw.\") && !source.includes(\"from 'tailwind-styled\") && !source.includes('from \"tailwind-styled')) {\r\n continue\r\n }\r\n\r\n const analysis = analyzeRscBoundary(source)\r\n report.push({\r\n file: file.replace(root, \".\"),\r\n type: analysis.isServer ? \"server\" : \"client\",\r\n reasons: analysis.reasons,\r\n })\r\n }\r\n\r\n if (json) {\r\n const servers = report.filter((r) => r.type === \"server\")\r\n const clients = report.filter((r) => r.type === \"client\")\r\n context.output.jsonSuccess(\"boundary\", {\r\n totalFiles: report.length,\r\n serverCount: servers.length,\r\n clientCount: clients.length,\r\n serverRatio: report.length > 0 ? Number(((servers.length / report.length) * 100).toFixed(1)) : 0,\r\n files: report,\r\n })\r\n return\r\n }\r\n\r\n printBoundaryReport(report, context.output)\r\n}\r\n\r\nexport const boundaryCommand: CommandDefinition = {\r\n name: \"boundary\",\r\n aliases: [\"b\"],\r\n async run(args, context) {\r\n await runBoundaryCli(args, context)\r\n },\r\n}\r\n","import { ensureFlag } from \"../utils/args\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const createCommand: CommandDefinition = {\r\n name: \"create\",\r\n async run(args, context) {\r\n const createMod = await import(\"../createApp\")\r\n const commandArgs = context.json ? ensureFlag(\"json\", args) : args\r\n await createMod.main(commandArgs)\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { pathExists } from \"../utils/fs\"\r\nimport { npmCommandName, runCommand } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const dashboardCommand: CommandDefinition = {\r\n name: \"dashboard\",\r\n async run(args, context) {\r\n if (context.json) {\r\n throw new CliUsageError(\r\n \"[tw dashboard] --json is not supported for long-running dashboard output\"\r\n )\r\n }\r\n\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n port: { type: \"string\" },\r\n },\r\n })\r\n const port =\r\n typeof parsed.values.port === \"string\" ? parsed.values.port : (process.env.PORT ?? \"3000\")\r\n const serverScript = await resolveScript(context, \"packages/infrastructure/dashboard/src/server.mjs\")\r\n\r\n if (await pathExists(serverScript)) {\r\n context.output.writeText(`[tw dashboard] Starting on http://localhost:${port}`)\r\n await runCommand(process.execPath, [serverScript], {\r\n env: { ...process.env, PORT: port },\r\n })\r\n return\r\n }\r\n\r\n await runCommand(npmCommandName(), [\"run\", \"dev\", \"-w\", \"@tailwind-styled/dashboard\"], {\r\n env: { ...process.env, PORT: port },\r\n })\r\n },\r\n}\r\n","import fs from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { firstExistingPath, resolveMonorepoPath } from \"../utils/paths\"\r\nimport type { CommandContext } from \"./types\"\r\n\r\nexport type PluginInfo = {\r\n name: string\r\n description: string\r\n version: string\r\n tags: string[]\r\n official?: boolean\r\n}\r\n\r\nexport function enumerateVariantProps(matrix: Record<string, Array<string | number | boolean>>) {\r\n const keys = Object.keys(matrix)\r\n if (keys.length === 0) return [{}]\r\n const result: Array<Record<string, string | number | boolean>> = []\r\n\r\n function walk(index: number, current: Record<string, string | number | boolean>) {\r\n if (index >= keys.length) {\r\n result.push({ ...current })\r\n return\r\n }\r\n const key = keys[index]\r\n const values = matrix[key] ?? []\r\n for (const value of values) {\r\n current[key] = value\r\n walk(index + 1, current)\r\n }\r\n }\r\n\r\n walk(0, {})\r\n return result\r\n}\r\n\r\nexport async function resolveScript(\r\n context: CommandContext,\r\n relativeToRepoRoot: string\r\n): Promise<string> {\r\n const fromRuntime = await resolveMonorepoPath(context.runtimeDir, relativeToRepoRoot)\r\n const fromCwd = path.resolve(process.cwd(), relativeToRepoRoot)\r\n const resolved = await firstExistingPath([fromRuntime, fromCwd])\r\n if (!resolved) {\r\n throw new CliUsageError(`Required script not found: ${relativeToRepoRoot}`)\r\n }\r\n return resolved\r\n}\r\n\r\nexport async function loadRegistry(context: CommandContext): Promise<PluginInfo[]> {\r\n const runtimeRegistryPath = await resolveMonorepoPath(\r\n context.runtimeDir,\r\n \"packages/domain/plugin-registry/registry.json\"\r\n )\r\n const candidates: string[] = [\r\n runtimeRegistryPath,\r\n path.resolve(process.cwd(), \"packages/domain/plugin-registry/registry.json\"),\r\n ]\r\n\r\n const registryPath = await firstExistingPath(candidates)\r\n if (!registryPath) {\r\n throw new CliUsageError(\"Plugin registry file not found.\")\r\n }\r\n\r\n const raw = await fs.readFile(registryPath, \"utf8\")\r\n const data = JSON.parse(raw) as { official: PluginInfo[]; community: PluginInfo[] }\r\n return [\r\n ...data.official.map((item) => ({ ...item, official: true })),\r\n ...data.community.map((item) => ({ ...item, official: false })),\r\n ]\r\n}\r\n\r\nexport function validatePackageName(value: string): boolean {\r\n return /^(?:@[a-z0-9._-]+\\/)?[a-z0-9][a-z0-9._-]*$/i.test(value)\r\n}\r\n","import fsp from \"node:fs/promises\"\r\nimport path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliError, CliUsageError, errorMessage } from \"../utils/errors\"\r\nimport { pathExists, readJsonSafe } from \"../utils/fs\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\ninterface DeployManifest {\r\n name: string\r\n version: string\r\n tag: string\r\n description: string\r\n keywords: string[]\r\n publishedAt: string\r\n source: string\r\n registry: string\r\n}\r\n\r\ninterface DeployResponse {\r\n status: number | undefined\r\n body: unknown\r\n}\r\n\r\nconst postJson = async (\r\n url: URL,\r\n body: string,\r\n token: string | undefined\r\n): Promise<DeployResponse> => {\r\n const { default: https } = await import(\"node:https\")\r\n const { default: http } = await import(\"node:http\")\r\n\r\n return new Promise<DeployResponse>((resolve, reject) => {\r\n const client = url.protocol === \"https:\" ? https : http\r\n const req = client.request(\r\n url,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"content-type\": \"application/json\",\r\n \"content-length\": Buffer.byteLength(body),\r\n ...(token ? { authorization: `Bearer ${token}` } : {}),\r\n },\r\n },\r\n (res) => {\r\n const chunks: Buffer[] = []\r\n res.on(\"data\", (chunk: Buffer) => chunks.push(chunk))\r\n res.on(\"end\", () => {\r\n const raw = Buffer.concat(chunks).toString(\"utf8\")\r\n try {\r\n resolve({ status: res.statusCode, body: JSON.parse(raw) })\r\n } catch {\r\n resolve({ status: res.statusCode, body: raw })\r\n }\r\n })\r\n }\r\n )\r\n req.on(\"error\", reject)\r\n req.write(body)\r\n req.end()\r\n })\r\n}\r\n\r\nexport const deployCommand: CommandDefinition = {\r\n name: \"deploy\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n \"dry-run\": { type: \"boolean\", default: false },\r\n version: { type: \"string\" },\r\n tag: { type: \"string\" },\r\n registry: { type: \"string\" },\r\n },\r\n })\r\n\r\n const name = parsed.positionals[0] ?? \"component\"\r\n const dryRun = Boolean(parsed.values[\"dry-run\"])\r\n const version = typeof parsed.values.version === \"string\" ? parsed.values.version : \"0.1.0\"\r\n const tag = typeof parsed.values.tag === \"string\" ? parsed.values.tag : \"latest\"\r\n const registryUrl =\r\n typeof parsed.values.registry === \"string\"\r\n ? parsed.values.registry\r\n : (process.env.TW_REGISTRY_URL ?? null)\r\n\r\n const pkgPath = path.join(process.cwd(), \"package.json\")\r\n if (!(await pathExists(pkgPath))) {\r\n throw new CliUsageError(\"[tw deploy] No package.json found in current directory\")\r\n }\r\n\r\n const pkg = await readJsonSafe<{\r\n name?: string\r\n version?: string\r\n description?: string\r\n keywords?: string[]\r\n }>(pkgPath)\r\n if (!pkg) {\r\n throw new CliUsageError(\"[tw deploy] package.json is not valid JSON\")\r\n }\r\n const componentName = pkg.name ?? name\r\n\r\n const manifest: DeployManifest = {\r\n name: componentName,\r\n version: pkg.version ?? version,\r\n tag,\r\n description: pkg.description ?? \"\",\r\n keywords: pkg.keywords ?? [],\r\n publishedAt: new Date().toISOString(),\r\n source: process.cwd(),\r\n registry: registryUrl ?? \"https://registry.tailwind-styled.dev\",\r\n }\r\n\r\n if (dryRun) {\r\n if (context.json) {\r\n writeJsonSuccess(\"deploy\", {\r\n mode: \"dry-run\",\r\n component: componentName,\r\n registry: registryUrl ?? manifest.registry,\r\n manifest,\r\n })\r\n } else {\r\n context.output.writeText(\"[tw deploy] DRY RUN - would publish:\")\r\n context.output.writeText(JSON.stringify(manifest, null, 2))\r\n if (registryUrl) context.output.writeText(`\\n[tw deploy] Target registry: ${registryUrl}`)\r\n }\r\n return\r\n }\r\n\r\n const cacheDir = path.join(process.cwd(), \".tw-cache\")\r\n await fsp.mkdir(cacheDir, { recursive: true })\r\n await fsp.writeFile(\r\n path.join(cacheDir, \"deploy-manifest.json\"),\r\n JSON.stringify(manifest, null, 2)\r\n )\r\n\r\n if (!registryUrl) {\r\n if (context.json) {\r\n writeJsonSuccess(\"deploy\", {\r\n mode: \"local\",\r\n component: componentName,\r\n version: manifest.version,\r\n manifestPath: \".tw-cache/deploy-manifest.json\",\r\n nextSteps: [\"tw deploy --registry=http://localhost:4040\", \"tw registry serve\"],\r\n })\r\n } else {\r\n context.output.writeText(\r\n `[tw deploy] Published locally: ${componentName}@${manifest.version}`\r\n )\r\n context.output.writeText(\"[tw deploy] Manifest: .tw-cache/deploy-manifest.json\")\r\n context.output.writeText(\r\n \"[tw deploy] To publish remotely: tw deploy --registry=http://localhost:4040\"\r\n )\r\n context.output.writeText(\"[tw deploy] Start registry: tw registry serve\")\r\n }\r\n return\r\n }\r\n\r\n try {\r\n const url = new URL(\"/packages\", registryUrl)\r\n const body = JSON.stringify(manifest)\r\n const token = process.env.TW_REGISTRY_TOKEN\r\n const result = await postJson(url, body, token)\r\n\r\n const isSuccess = result.status === 201\r\n if (isSuccess) {\r\n const payload = result.body as { id?: string } | string\r\n if (context.json) {\r\n writeJsonSuccess(\"deploy\", {\r\n mode: \"remote\",\r\n component: componentName,\r\n version: manifest.version,\r\n registry: `${registryUrl}/packages/${componentName}`,\r\n id:\r\n typeof payload === \"object\" && payload && \"id\" in payload\r\n ? (payload.id ?? null)\r\n : null,\r\n })\r\n } else {\r\n context.output.writeText(`[tw deploy] Published: ${componentName}@${manifest.version}`)\r\n context.output.writeText(`[tw deploy] Registry: ${registryUrl}/packages/${componentName}`)\r\n const hasId = typeof payload === \"object\" && payload && \"id\" in payload && payload.id\r\n if (hasId) {\r\n context.output.writeText(`[tw deploy] ID: ${payload.id}`)\r\n }\r\n }\r\n return\r\n }\r\n\r\n throw new CliError(\r\n `[tw deploy] Registry returned ${String(result.status)}: ${JSON.stringify(result.body)}`,\r\n { code: \"DEPLOY_REGISTRY_ERROR\" }\r\n )\r\n } catch (error) {\r\n if (error instanceof CliError) throw error\r\n const message = errorMessage(error)\r\n throw new CliError(`[tw deploy] Registry unreachable: ${message}`, { cause: error })\r\n }\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport pc from \"picocolors\"\r\nimport {\r\n type DiagnosticInclude,\r\n type DiagnosticResult,\r\n runDiagnostics,\r\n SUPPORTED_DIAGNOSTIC_INCLUDES,\r\n} from \"../utils/doctorService\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\nfunction parseIncludeOption(value: string | undefined): DiagnosticInclude[] | undefined {\r\n if (!value) return undefined\r\n\r\n const includes = value\r\n .split(\",\")\r\n .map((entry) => entry.trim())\r\n .filter(Boolean)\r\n\r\n const invalid = includes.filter(\r\n (entry): entry is string => !SUPPORTED_DIAGNOSTIC_INCLUDES.includes(entry as DiagnosticInclude)\r\n )\r\n\r\n if (invalid.length > 0) {\r\n throw new CliUsageError(\r\n `Unsupported --include value: ${invalid.join(\", \")}. ` +\r\n `Supported values: ${SUPPORTED_DIAGNOSTIC_INCLUDES.join(\", \")}`\r\n )\r\n }\r\n\r\n return includes as DiagnosticInclude[]\r\n}\r\n\r\nexport async function runDoctorCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n include: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n verbose: { type: \"boolean\", short: \"v\" },\r\n },\r\n })\r\n\r\n const verbose = context.verbose || parsed.values.verbose === true\r\n const json = context.json || parsed.values.json === true\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : context.cwd\r\n const include = parseIncludeOption(\r\n typeof parsed.values.include === \"string\" ? parsed.values.include : undefined\r\n )\r\n\r\n try {\r\n const result = await runDiagnostics({ root, verbose, include })\r\n process.exitCode = result.summary.exitCode\r\n\r\n if (json) {\r\n context.output.jsonSuccess(\"doctor\", result)\r\n return\r\n }\r\n\r\n printDoctorOutput(result, context.output)\r\n } catch (error) {\r\n context.output.error(`Doctor failed: ${error instanceof Error ? error.message : String(error)}`)\r\n }\r\n}\r\n\r\nfunction renderSeverityHeading(severity: \"error\" | \"warning\" | \"info\"): string {\r\n switch (severity) {\r\n case \"error\":\r\n return pc.red(\"Issues\")\r\n case \"warning\":\r\n return pc.yellow(\"Warnings\")\r\n case \"info\":\r\n return pc.blue(\"Info\")\r\n }\r\n}\r\n\r\nfunction printDoctorOutput(result: DiagnosticResult, output: CliOutput): void {\r\n output.writeText(\"\")\r\n output.writeText(pc.cyan(\"Tailwind Styled Doctor\"))\r\n output.writeText(pc.dim(`root: ${result.root}`))\r\n output.writeText(pc.dim(`includes: ${result.includes.join(\", \")}`))\r\n output.writeText(\"\")\r\n\r\n output.subHeader(\"Checks\")\r\n for (const check of result.checks) {\r\n const prefix =\r\n check.status === \"pass\"\r\n ? pc.green(\"[pass]\")\r\n : check.status === \"fail\"\r\n ? pc.red(\"[fail]\")\r\n : pc.dim(\"[skip]\")\r\n output.listItem(`${prefix} ${check.id} - ${check.message}`)\r\n }\r\n output.writeText(\"\")\r\n\r\n for (const severity of [\"error\", \"warning\", \"info\"] as const) {\r\n const issues = result.issues.filter((issue) => issue.severity === severity)\r\n if (issues.length === 0) continue\r\n\r\n output.writeText(renderSeverityHeading(severity))\r\n for (const issue of issues) {\r\n output.listItem(issue.message)\r\n if (issue.location) {\r\n output.listItem(pc.dim(`location: ${issue.location}`))\r\n }\r\n if (issue.suggestion) {\r\n output.listItem(pc.dim(`suggestion: ${issue.suggestion}`))\r\n }\r\n }\r\n output.writeText(\"\")\r\n }\r\n\r\n const { errors, warnings, info, exitCode } = result.summary\r\n output.footer(\r\n `summary: ${errors} error(s), ${warnings} warning(s), ${info} info item(s), exit code ${exitCode}`\r\n )\r\n}\r\n\r\nconst doctorCommand: CommandDefinition = {\r\n name: \"doctor\",\r\n aliases: [\"d\", \"diagnose\"],\r\n async run(args, context) {\r\n await runDoctorCli(args, context)\r\n },\r\n}\r\n\r\nexport { doctorCommand }\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nimport { analyzeWorkspace } from \"@tailwind-styled/analyzer\"\r\nimport { scanWorkspace } from \"@tailwind-styled/scanner\"\r\n\r\nexport type DiagnosticSeverity = \"error\" | \"warning\" | \"info\"\r\nexport type DiagnosticInclude = \"workspace\" | \"tailwind\" | \"analysis\"\r\n\r\nexport const SUPPORTED_DIAGNOSTIC_INCLUDES: readonly DiagnosticInclude[] = [\r\n \"workspace\",\r\n \"tailwind\",\r\n \"analysis\",\r\n]\r\n\r\nexport interface DiagnosticIssue {\r\n severity: DiagnosticSeverity\r\n type: string\r\n message: string\r\n location?: string\r\n suggestion?: string\r\n}\r\n\r\nexport interface DiagnosticCheck {\r\n id: string\r\n category: DiagnosticInclude\r\n status: \"pass\" | \"fail\" | \"skip\"\r\n severity: DiagnosticSeverity\r\n message: string\r\n details?: Record<string, unknown>\r\n}\r\n\r\nexport interface DiagnosticResult {\r\n timestamp: string\r\n root: string\r\n includes: DiagnosticInclude[]\r\n issues: DiagnosticIssue[]\r\n checks: DiagnosticCheck[]\r\n summary: {\r\n errors: number\r\n warnings: number\r\n info: number\r\n exitCode: 0 | 1 | 2\r\n }\r\n}\r\n\r\nexport interface RunDiagnosticsOptions {\r\n root?: string\r\n verbose?: boolean\r\n include?: DiagnosticInclude[]\r\n}\r\n\r\nfunction calculateBundleSizeEstimate(classes: readonly string[]): number {\r\n const avgClassSize = 15\r\n const avgRuleSize = 80\r\n return classes.length * (avgClassSize + avgRuleSize)\r\n}\r\n\r\nfunction getTopUnusedClasses(unusedClasses: Array<{ name: string; count: number }>, limit: number) {\r\n return unusedClasses.slice(0, limit)\r\n}\r\n\r\nfunction parseIncludes(include?: DiagnosticInclude[]): DiagnosticInclude[] {\r\n if (!include || include.length === 0) {\r\n return [...SUPPORTED_DIAGNOSTIC_INCLUDES]\r\n }\r\n\r\n const invalid = include.filter((value) => !SUPPORTED_DIAGNOSTIC_INCLUDES.includes(value))\r\n if (invalid.length > 0) {\r\n throw new Error(\r\n `Unsupported diagnostic include: ${invalid.join(\", \")}. ` +\r\n `Supported values: ${SUPPORTED_DIAGNOSTIC_INCLUDES.join(\", \")}`\r\n )\r\n }\r\n\r\n return Array.from(new Set(include))\r\n}\r\n\r\nfunction addCheck(\r\n checks: DiagnosticCheck[],\r\n category: DiagnosticInclude,\r\n id: string,\r\n status: DiagnosticCheck[\"status\"],\r\n severity: DiagnosticSeverity,\r\n message: string,\r\n details?: Record<string, unknown>\r\n): void {\r\n checks.push({ id, category, status, severity, message, details })\r\n}\r\n\r\nfunction addIssue(\r\n issues: DiagnosticIssue[],\r\n severity: DiagnosticSeverity,\r\n type: string,\r\n message: string,\r\n suggestion?: string,\r\n location?: string\r\n): void {\r\n issues.push({ severity, type, message, suggestion, location })\r\n}\r\n\r\nfunction readJsonFile(filePath: string): Record<string, unknown> | null {\r\n if (!fs.existsSync(filePath)) return null\r\n try {\r\n return JSON.parse(fs.readFileSync(filePath, \"utf8\")) as Record<string, unknown>\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nfunction findWorkspacePackageJsonFiles(root: string): string[] {\r\n const packagesDir = path.join(root, \"packages\")\r\n if (!fs.existsSync(packagesDir)) return []\r\n\r\n return fs\r\n .readdirSync(packagesDir, { withFileTypes: true })\r\n .filter((entry) => entry.isDirectory())\r\n .map((entry) => path.join(packagesDir, entry.name, \"package.json\"))\r\n .filter((filePath) => fs.existsSync(filePath))\r\n}\r\n\r\nfunction findFiles(dir: string, ext: string): string[] {\r\n const files: string[] = []\r\n try {\r\n const entries = fs.readdirSync(dir, { withFileTypes: true })\r\n for (const entry of entries) {\r\n const fullPath = path.join(dir, entry.name)\r\n if (entry.isDirectory() && !entry.name.startsWith(\".\") && entry.name !== \"node_modules\") {\r\n files.push(...findFiles(fullPath, ext))\r\n } else if (entry.isFile() && entry.name.endsWith(ext)) {\r\n files.push(fullPath)\r\n }\r\n }\r\n } catch {\r\n return files\r\n }\r\n return files\r\n}\r\n\r\nfunction runWorkspaceDiagnostics(\r\n root: string,\r\n issues: DiagnosticIssue[],\r\n checks: DiagnosticCheck[]\r\n): void {\r\n const rootPackageJsonPath = path.join(root, \"package.json\")\r\n const rootPackageJson = readJsonFile(rootPackageJsonPath)\r\n if (!rootPackageJson) {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-root\",\r\n \"fail\",\r\n \"error\",\r\n \"package.json not found in the selected working directory.\"\r\n )\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"workspace-root\",\r\n \"package.json not found\",\r\n \"Run doctor in a project directory that contains a package.json\",\r\n root\r\n )\r\n return\r\n }\r\n\r\n const workspaces = Array.isArray(rootPackageJson.workspaces) ? rootPackageJson.workspaces : []\r\n const packageFiles = findWorkspacePackageJsonFiles(root)\r\n\r\n if (workspaces.length === 0) {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-root\",\r\n \"skip\",\r\n \"info\",\r\n \"No npm workspaces declared in package.json.\"\r\n )\r\n } else {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-root\",\r\n \"pass\",\r\n \"info\",\r\n `Workspace root detected with ${packageFiles.length} package(s).`,\r\n {\r\n patterns: workspaces,\r\n packages: packageFiles.length,\r\n }\r\n )\r\n }\r\n\r\n const requiredScripts = [\"build\", \"test\", \"check\", \"clean\", \"pack:check\"]\r\n const missingScripts = packageFiles.flatMap((filePath) => {\r\n const manifest = readJsonFile(filePath)\r\n if (!manifest) return []\r\n const scripts =\r\n typeof manifest.scripts === \"object\" && manifest.scripts !== null\r\n ? (manifest.scripts as Record<string, unknown>)\r\n : {}\r\n const missing = requiredScripts.filter((name) => typeof scripts[name] !== \"string\")\r\n if (missing.length === 0) return []\r\n\r\n const packageName =\r\n typeof manifest.name === \"string\" && manifest.name.length > 0\r\n ? manifest.name\r\n : path.basename(path.dirname(filePath))\r\n return [{ packageName, missing }]\r\n })\r\n\r\n if (missingScripts.length === 0) {\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-scripts\",\r\n \"pass\",\r\n \"info\",\r\n \"All discovered workspace packages expose the minimum script set.\"\r\n )\r\n return\r\n }\r\n\r\n addCheck(\r\n checks,\r\n \"workspace\",\r\n \"workspace-scripts\",\r\n \"fail\",\r\n \"warning\",\r\n `${missingScripts.length} workspace package(s) are missing required scripts.`,\r\n {\r\n requiredScripts,\r\n missing: missingScripts,\r\n }\r\n )\r\n\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"workspace-scripts\",\r\n `${missingScripts.length} workspace package(s) are missing one or more required scripts.`,\r\n \"Add build, test, check, clean, and pack:check to each workspace package.json\"\r\n )\r\n}\r\n\r\nfunction runTailwindProjectDiagnostics(\r\n root: string,\r\n issues: DiagnosticIssue[],\r\n checks: DiagnosticCheck[]\r\n): void {\r\n const packageJsonPath = path.join(root, \"package.json\")\r\n const packageJson = readJsonFile(packageJsonPath)\r\n\r\n if (!packageJson) {\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"project-manifest\",\r\n \"fail\",\r\n \"error\",\r\n \"package.json not found for Tailwind diagnostics.\"\r\n )\r\n return\r\n }\r\n\r\n const dependencies = {\r\n ...((packageJson.dependencies as Record<string, unknown> | undefined) ?? {}),\r\n ...((packageJson.devDependencies as Record<string, unknown> | undefined) ?? {}),\r\n }\r\n\r\n const hasTailwind = typeof dependencies.tailwindcss === \"string\"\r\n const hasTailwindStyled =\r\n typeof dependencies[\"tailwind-styled-v4\"] === \"string\" ||\r\n Object.keys(dependencies).some((name) => name.startsWith(\"@tailwind-styled/\"))\r\n\r\n if (hasTailwind && hasTailwindStyled) {\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"project-dependencies\",\r\n \"pass\",\r\n \"info\",\r\n \"Tailwind CSS and tailwind-styled dependencies were detected.\"\r\n )\r\n } else {\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"project-dependencies\",\r\n \"fail\",\r\n \"warning\",\r\n \"Tailwind CSS or tailwind-styled dependency is missing.\"\r\n )\r\n\r\n if (!hasTailwind) {\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"missing-tailwind\",\r\n \"Tailwind CSS not installed\",\r\n \"npm install -D tailwindcss\"\r\n )\r\n }\r\n\r\n if (!hasTailwindStyled) {\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"missing-tailwind-styled\",\r\n \"tailwind-styled package not found in dependencies\",\r\n \"Install tailwind-styled-v4 or the package-specific @tailwind-styled/* dependency\"\r\n )\r\n }\r\n }\r\n\r\n const cssFiles = findFiles(root, \".css\")\r\n const hasTailwindImport = cssFiles.slice(0, 10).some((filePath) => {\r\n try {\r\n const content = fs.readFileSync(filePath, \"utf8\")\r\n return content.includes(\"@tailwind\") || content.includes('@import \"tailwindcss\"')\r\n } catch {\r\n return false\r\n }\r\n })\r\n\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"css-entry\",\r\n hasTailwindImport ? \"pass\" : \"fail\",\r\n hasTailwindImport ? \"info\" : \"warning\",\r\n hasTailwindImport\r\n ? \"Tailwind CSS entry was detected in project styles.\"\r\n : \"Tailwind CSS entry was not detected in scanned CSS files.\"\r\n )\r\n\r\n if (!hasTailwindImport && cssFiles.length > 0) {\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"no-tailwind-import\",\r\n \"Tailwind CSS imports not found in CSS files\",\r\n 'Add @import \"tailwindcss\" or Tailwind directives to your CSS entry file'\r\n )\r\n }\r\n\r\n const configFiles = [\"tailwind.config.js\", \"tailwind.config.ts\", \"tailwind.config.mjs\"]\r\n const hasConfig = configFiles.some((name) => fs.existsSync(path.join(root, name)))\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"tailwind-config\",\r\n hasConfig ? \"pass\" : \"skip\",\r\n \"info\",\r\n hasConfig ? \"Tailwind config file detected.\" : \"No tailwind.config file found.\"\r\n )\r\n\r\n const tsconfig = readJsonFile(path.join(root, \"tsconfig.json\"))\r\n const jsx = (tsconfig?.compilerOptions as Record<string, unknown> | undefined)?.jsx\r\n addCheck(\r\n checks,\r\n \"tailwind\",\r\n \"tsconfig-jsx\",\r\n typeof jsx === \"string\" ? \"pass\" : \"skip\",\r\n \"info\",\r\n typeof jsx === \"string\"\r\n ? `TypeScript JSX mode detected: ${jsx}.`\r\n : \"TypeScript JSX mode not configured.\"\r\n )\r\n}\r\n\r\nasync function runAnalysisDiagnostics(\r\n root: string,\r\n issues: DiagnosticIssue[],\r\n checks: DiagnosticCheck[],\r\n verbose: boolean\r\n): Promise<void> {\r\n const scanResult = (() => {\r\n try {\r\n return scanWorkspace(root, {\r\n includeExtensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"],\r\n ignoreDirectories: [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"],\r\n useCache: true,\r\n })\r\n } catch (error) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"workspace-scan\",\r\n \"fail\",\r\n \"error\",\r\n `Workspace scan failed: ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"workspace-scan\",\r\n `Workspace scan failed: ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n return null\r\n }\r\n })()\r\n\r\n if (!scanResult) return\r\n\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"workspace-scan\",\r\n \"pass\",\r\n \"info\",\r\n `Workspace scan completed for ${scanResult.totalFiles} file(s) and ${scanResult.uniqueClasses.length} unique class(es).`\r\n )\r\n\r\n const analyzerReport = await (async () => {\r\n try {\r\n const report = await analyzeWorkspace(root, {\r\n semantic: true,\r\n classStats: {\r\n top: 100,\r\n frequentThreshold: 5,\r\n },\r\n })\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"analyzer\",\r\n \"pass\",\r\n \"info\",\r\n \"Analyzer semantic report generated successfully.\"\r\n )\r\n return report\r\n } catch (error) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"analyzer\",\r\n \"fail\",\r\n \"warning\",\r\n `Analyzer unavailable: ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"analyzer-unavailable\",\r\n `Analyzer is unavailable. ${error instanceof Error ? error.message : String(error)}`,\r\n \"Build @tailwind-styled/analyzer and the native binding to enable deep semantic diagnostics\"\r\n )\r\n return null\r\n }\r\n })()\r\n\r\n if (!analyzerReport) return\r\n\r\n if (analyzerReport.semantic) {\r\n const semantic = analyzerReport.semantic\r\n const topUnused = getTopUnusedClasses(\r\n semantic.unusedClasses.filter((entry) => entry.count > 0),\r\n 10\r\n )\r\n\r\n for (const unusedClass of topUnused) {\r\n addIssue(\r\n issues,\r\n \"warning\",\r\n \"unused-class\",\r\n `Unused class \"${unusedClass.name}\" appears ${unusedClass.count} time(s) in your codebase.`,\r\n \"Remove the class or add it to your safelist if it is generated dynamically\"\r\n )\r\n }\r\n\r\n for (const conflict of semantic.conflicts) {\r\n addIssue(\r\n issues,\r\n \"error\",\r\n \"class-conflict\",\r\n conflict.message,\r\n `Classes: ${conflict.classes.join(\", \")}`,\r\n conflict.variants.length > 0 ? `Variant: ${conflict.variants.join(\", \")}` : undefined\r\n )\r\n }\r\n\r\n for (const unknownClass of semantic.unknownClasses.slice(0, 20)) {\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"unknown-class\",\r\n `Unknown class \"${unknownClass.name}\" was detected.`,\r\n \"This may be a custom utility or a typo\"\r\n )\r\n }\r\n\r\n if (semantic.tailwindConfig) {\r\n const config = semantic.tailwindConfig\r\n if (config.loaded) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"tailwind-config-analysis\",\r\n \"pass\",\r\n \"info\",\r\n `Tailwind config loaded with ${config.safelistCount} safelist entries and ${config.customUtilityCount} custom utilities.`\r\n )\r\n } else if (config.warning) {\r\n addCheck(\r\n checks,\r\n \"analysis\",\r\n \"tailwind-config-analysis\",\r\n \"fail\",\r\n \"warning\",\r\n `Tailwind config warning: ${config.warning}`\r\n )\r\n addIssue(issues, \"warning\", \"tailwind-config\", `Tailwind config warning: ${config.warning}`)\r\n }\r\n }\r\n }\r\n\r\n const bundleSizeEstimate = calculateBundleSizeEstimate(analyzerReport.safelist)\r\n const bundleSizeKB = Math.round(bundleSizeEstimate / 1024)\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"workspace-stats\",\r\n `Workspace scan complete: ${analyzerReport.totalFiles} files, ${analyzerReport.uniqueClassCount} unique classes, ${analyzerReport.totalClassOccurrences} total occurrences.`\r\n )\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"bundle-estimate\",\r\n `Estimated CSS bundle size: ~${bundleSizeKB}KB (${analyzerReport.safelist.length} classes).`\r\n )\r\n\r\n if (verbose) {\r\n addIssue(\r\n issues,\r\n \"info\",\r\n \"verbose\",\r\n `Full class list (${analyzerReport.safelist.length} classes) is available from the analyzer report.`\r\n )\r\n }\r\n}\r\n\r\nexport const runDiagnostics = async (\r\n options: RunDiagnosticsOptions = {}\r\n): Promise<DiagnosticResult> => {\r\n const root = path.resolve(options.root ?? process.cwd())\r\n const includes = parseIncludes(options.include)\r\n const issues: DiagnosticIssue[] = []\r\n const checks: DiagnosticCheck[] = []\r\n\r\n if (includes.includes(\"workspace\")) {\r\n runWorkspaceDiagnostics(root, issues, checks)\r\n }\r\n\r\n if (includes.includes(\"tailwind\")) {\r\n runTailwindProjectDiagnostics(root, issues, checks)\r\n }\r\n\r\n if (includes.includes(\"analysis\")) {\r\n await runAnalysisDiagnostics(root, issues, checks, options.verbose ?? false)\r\n }\r\n\r\n const summary = {\r\n errors: issues.filter((issue) => issue.severity === \"error\").length,\r\n warnings: issues.filter((issue) => issue.severity === \"warning\").length,\r\n info: issues.filter((issue) => issue.severity === \"info\").length,\r\n exitCode: 0 as 0 | 1 | 2,\r\n }\r\n\r\n summary.exitCode = summary.errors > 0 ? 1 : summary.warnings > 0 ? 2 : 0\r\n\r\n return {\r\n timestamp: new Date().toISOString(),\r\n root,\r\n includes,\r\n issues,\r\n checks,\r\n summary,\r\n }\r\n}\r\n","import path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { pathExists, readJsonSafe } from \"../utils/fs\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport { codeCommandName, npmCommandName, runCommand } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nconst testCommand: CommandDefinition = {\r\n name: \"test\",\r\n async run(args) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n watch: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const watch = Boolean(parsed.values.watch)\r\n await runCommand(npmCommandName(), watch ? [\"run\", \"test\", \"--\", \"--watch\"] : [\"run\", \"test\"])\r\n },\r\n}\r\n\r\nconst aiCommand: CommandDefinition = {\r\n name: \"ai\",\r\n async run(args, context) {\r\n const prompt = args.join(\" \").trim()\r\n if (!prompt) throw new CliUsageError('Usage: tw ai \"describe component\"')\r\n const script = await resolveScript(context, \"scripts/v45/ai.mjs\")\r\n await runCommand(process.execPath, [script, prompt])\r\n },\r\n}\r\n\r\nconst shareCommand: CommandDefinition = {\r\n name: \"share\",\r\n async run(args, context) {\r\n const name = args.find((arg) => !arg.startsWith(\"-\")) ?? \"component-name\"\r\n const manifestPath = path.join(process.cwd(), \".tw-cache\", \"deploy-manifest.json\")\r\n\r\n const defaultManifest: Required<Pick<ShareManifest, \"name\" | \"version\">> = {\r\n name,\r\n version: \"0.1.0\",\r\n }\r\n const parsedManifest = await readJsonSafe<ShareManifest>(manifestPath)\r\n const manifest: ShareManifest = parsedManifest\r\n ? { ...defaultManifest, ...parsedManifest }\r\n : defaultManifest\r\n\r\n const resolvedName = manifest.name ?? name\r\n const sharePayload = {\r\n name: resolvedName,\r\n version: manifest.version ?? \"0.1.0\",\r\n description: manifest.description ?? \"\",\r\n keywords: Array.isArray(manifest.keywords) ? manifest.keywords : [],\r\n registry: manifest.registry ?? \"https://registry.tailwind-styled.dev\",\r\n installCommand: `npm install ${resolvedName}`,\r\n importExample: `import { ${resolvedName.replace(/[^a-zA-Z]/g, \"\")} } from \"${resolvedName}\"`,\r\n channel: \"community\",\r\n sharedAt: new Date().toISOString(),\r\n instructions: [\r\n \"1. Attach README.md with usage examples\",\r\n `2. Add version tag: git tag v${manifest.version ?? \"0.1.0\"}`,\r\n \"3. Run `tw deploy` to publish to registry\",\r\n \"4. Share this payload in community channels\",\r\n ],\r\n }\r\n\r\n if (context.json) {\r\n writeJsonSuccess(\"share\", sharePayload)\r\n return\r\n }\r\n\r\n context.output.writeText(JSON.stringify(sharePayload, null, 2))\r\n },\r\n}\r\n\r\nconst codeCommand: CommandDefinition = {\r\n name: \"code\",\r\n async run(args, context) {\r\n const docsUrl = \"https://marketplace.visualstudio.com/search?term=tailwind-styled&target=VSCode\"\r\n const extension = \"tailwind-styled.tailwind-styled-v4\"\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n docs: { type: \"boolean\", default: false },\r\n install: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const docs = Boolean(parsed.values.docs)\r\n const install = Boolean(parsed.values.install)\r\n\r\n if (docs) {\r\n if (context.json) {\r\n writeJsonSuccess(\"code\", { action: \"docs\", url: docsUrl })\r\n return\r\n }\r\n context.output.writeText(docsUrl)\r\n return\r\n }\r\n if (install) {\r\n await runCommand(codeCommandName(), [\"--install-extension\", extension], {\r\n stdio: context.json ? \"pipe\" : \"inherit\",\r\n })\r\n if (context.json) {\r\n writeJsonSuccess(\"code\", { action: \"install\", extension })\r\n }\r\n return\r\n }\r\n if (context.json) {\r\n writeJsonSuccess(\"code\", { action: \"help\", usage: \"tw code --docs | tw code --install\" })\r\n return\r\n }\r\n context.output.writeText(\"Use: tw code --docs | tw code --install\")\r\n },\r\n}\r\n\r\ninterface VersionPayload {\r\n packageName: string\r\n currentVersion: string\r\n latestVersion: string | null\r\n updateAvailable: boolean | null\r\n checkFailed: string | null\r\n}\r\n\r\ninterface ShareManifest {\r\n name?: string\r\n version?: string\r\n description?: string\r\n keywords?: string[]\r\n registry?: string\r\n}\r\n\r\nconst CLI_PACKAGE_NAME = \"create-tailwind-styled\"\r\n\r\nconst parseSemver = (version: string): [number, number, number] | null => {\r\n const match = version.trim().match(/^v?(\\d+)\\.(\\d+)\\.(\\d+)/)\r\n return match ? [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10)] : null\r\n}\r\n\r\nconst isVersionOutdated = (currentVersion: string, latestVersion: string): boolean | null => {\r\n const current = parseSemver(currentVersion)\r\n const latest = parseSemver(latestVersion)\r\n if (!current || !latest) return null\r\n\r\n const firstDiffIndex = current.findIndex((val, idx) => val !== latest[idx])\r\n return firstDiffIndex === -1 ? false : current[firstDiffIndex] < latest[firstDiffIndex]\r\n}\r\n\r\nconst resolveCurrentCliVersion = async (\r\n context: Parameters<CommandDefinition[\"run\"]>[1]\r\n): Promise<string> => {\r\n const candidates = [\r\n path.resolve(context.runtimeDir, \"..\", \"package.json\"),\r\n path.resolve(process.cwd(), \"packages\", \"cli\", \"package.json\"),\r\n path.resolve(process.cwd(), \"package.json\"),\r\n ]\r\n\r\n for (const candidate of candidates) {\r\n if (!(await pathExists(candidate))) continue\r\n const pkg = await readJsonSafe<{ name?: string; version?: string }>(candidate)\r\n const isCliPackage =\r\n pkg?.version &&\r\n (pkg.name === CLI_PACKAGE_NAME ||\r\n candidate.includes(`${path.sep}packages${path.sep}cli${path.sep}`))\r\n if (isCliPackage) return pkg.version ?? \"0.0.0\"\r\n }\r\n\r\n return \"0.0.0\"\r\n}\r\n\r\nconst fetchLatestCliVersion = async (): Promise<string> => {\r\n const response = await fetch(`https://registry.npmjs.org/${CLI_PACKAGE_NAME}/latest`)\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}`)\r\n }\r\n const payload = (await response.json()) as { version?: unknown }\r\n if (!payload.version || typeof payload.version !== \"string\") {\r\n throw new Error(\"Invalid npm registry response\")\r\n }\r\n return payload.version\r\n}\r\n\r\nconst buildVersionPayload = async (\r\n context: Parameters<CommandDefinition[\"run\"]>[1],\r\n checkLatest: boolean\r\n): Promise<VersionPayload> => {\r\n const currentVersion = await resolveCurrentCliVersion(context)\r\n\r\n if (!checkLatest) {\r\n return {\r\n packageName: CLI_PACKAGE_NAME,\r\n currentVersion,\r\n latestVersion: null,\r\n updateAvailable: null,\r\n checkFailed: null,\r\n }\r\n }\r\n\r\n try {\r\n const latestVersion = await fetchLatestCliVersion()\r\n return {\r\n packageName: CLI_PACKAGE_NAME,\r\n currentVersion,\r\n latestVersion,\r\n updateAvailable: isVersionOutdated(currentVersion, latestVersion),\r\n checkFailed: null,\r\n }\r\n } catch (error) {\r\n return {\r\n packageName: CLI_PACKAGE_NAME,\r\n currentVersion,\r\n latestVersion: null,\r\n updateAvailable: null,\r\n checkFailed: error instanceof Error ? error.message : String(error),\r\n }\r\n }\r\n}\r\n\r\nconst versionCommand: CommandDefinition = {\r\n name: \"version\",\r\n aliases: [\"v\"],\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n check: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const checkLatest = Boolean(parsed.values.check)\r\n const payload = await buildVersionPayload(context, checkLatest)\r\n\r\n if (context.json) {\r\n writeJsonSuccess(\"version\", payload)\r\n return\r\n }\r\n\r\n context.output.writeText(`tw version: ${payload.currentVersion}`)\r\n if (!checkLatest) return\r\n\r\n if (payload.checkFailed) {\r\n context.output.writeText(`Latest check failed: ${payload.checkFailed}`)\r\n return\r\n }\r\n\r\n if (payload.latestVersion && payload.updateAvailable) {\r\n context.output.writeText(`Update available: ${payload.latestVersion}`)\r\n context.output.writeText(\"Run: tw upgrade\")\r\n return\r\n }\r\n\r\n if (payload.latestVersion) {\r\n context.output.writeText(`Up to date (latest: ${payload.latestVersion})`)\r\n }\r\n },\r\n}\r\n\r\nconst upgradeCommand: CommandDefinition = {\r\n name: \"upgrade\",\r\n aliases: [\"update\"],\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n install: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const install = Boolean(parsed.values.install)\r\n const payload = await buildVersionPayload(context, true)\r\n\r\n if (payload.checkFailed) {\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", { ...payload, installAttempted: false, installExecuted: false })\r\n return\r\n }\r\n context.output.writeText(`Latest check failed: ${payload.checkFailed}`)\r\n return\r\n }\r\n\r\n const shouldUpdate = payload.updateAvailable === true\r\n if (!shouldUpdate) {\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", {\r\n ...payload,\r\n installAttempted: install,\r\n installExecuted: false,\r\n })\r\n } else {\r\n context.output.writeText(`Already up to date (${payload.currentVersion})`)\r\n }\r\n return\r\n }\r\n\r\n if (!install) {\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", {\r\n ...payload,\r\n installAttempted: false,\r\n installExecuted: false,\r\n installHint: `npm install -g ${CLI_PACKAGE_NAME}@latest`,\r\n })\r\n } else {\r\n context.output.writeText(\r\n `Update available: ${payload.currentVersion} -> ${payload.latestVersion}`\r\n )\r\n context.output.writeText(\"Run: tw upgrade --install\")\r\n }\r\n return\r\n }\r\n\r\n await runCommand(npmCommandName(), [\"install\", \"-g\", `${CLI_PACKAGE_NAME}@latest`], {\r\n stdio: context.json ? \"pipe\" : \"inherit\",\r\n })\r\n\r\n if (context.json) {\r\n writeJsonSuccess(\"upgrade\", { ...payload, installAttempted: true, installExecuted: true })\r\n return\r\n }\r\n\r\n context.output.writeText(`Upgrade command executed for ${CLI_PACKAGE_NAME}@latest`)\r\n },\r\n}\r\n\r\nexport const miscCommands: CommandDefinition[] = [\r\n testCommand,\r\n aiCommand,\r\n shareCommand,\r\n codeCommand,\r\n versionCommand,\r\n upgradeCommand,\r\n]\r\n","import { CliUsageError } from \"../utils/errors\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport { npmCommandName, runCommand, runCommandAsJson } from \"../utils/process\"\r\nimport { loadRegistry, resolveScript, validatePackageName } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const pluginCommand: CommandDefinition = {\r\n name: \"plugin\",\r\n async run(args, context) {\r\n const subcommand = args[0]\r\n const pluginArgs = args.slice(1)\r\n\r\n if (subcommand === \"update-check\") {\r\n const script = await resolveScript(context, \"packages/domain/plugin-registry/dist/cli.js\")\r\n if (context.json) {\r\n await runCommandAsJson(\"plugin.update-check\", process.execPath, [script, \"update-check\"])\r\n } else {\r\n await runCommand(process.execPath, [script, \"update-check\"])\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"verify\") {\r\n const pkgName = pluginArgs[0]\r\n if (!pkgName) throw new CliUsageError(\"Usage: tw plugin verify <package-name>\")\r\n const script = await resolveScript(context, \"packages/domain/plugin-registry/dist/cli.js\")\r\n if (context.json) {\r\n await runCommandAsJson(\"plugin.verify\", process.execPath, [script, \"verify\", pkgName])\r\n } else {\r\n await runCommand(process.execPath, [script, \"verify\", pkgName])\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"marketplace\" || subcommand === \"publish\") {\r\n const script = await resolveScript(context, \"scripts/v45/marketplace.mjs\")\r\n const marketplaceCommand = subcommand === \"publish\" ? \"publish\" : (pluginArgs[0] ?? \"help\")\r\n const forwarded = subcommand === \"marketplace\" ? pluginArgs.slice(1) : pluginArgs\r\n if (context.json) {\r\n await runCommandAsJson(`plugin.${subcommand}`, process.execPath, [\r\n script,\r\n marketplaceCommand,\r\n ...forwarded,\r\n ])\r\n } else {\r\n await runCommand(process.execPath, [script, marketplaceCommand, ...forwarded])\r\n }\r\n return\r\n }\r\n\r\n const plugins = await loadRegistry(context)\r\n\r\n if (subcommand === \"search\") {\r\n const query = pluginArgs.join(\" \").toLowerCase().trim()\r\n const results = plugins.filter((plugin) => {\r\n if (!query) return true\r\n return (\r\n plugin.name.toLowerCase().includes(query) ||\r\n plugin.description.toLowerCase().includes(query) ||\r\n plugin.tags.some((tag) => tag.toLowerCase().includes(query))\r\n )\r\n })\r\n if (context.json) {\r\n writeJsonSuccess(\"plugin.search\", { query, count: results.length, results })\r\n } else {\r\n context.output.table(results)\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"list\") {\r\n if (context.json) {\r\n writeJsonSuccess(\"plugin.list\", { count: plugins.length, plugins })\r\n } else {\r\n context.output.table(plugins)\r\n }\r\n return\r\n }\r\n\r\n if (subcommand === \"install\") {\r\n const pluginName = pluginArgs[0]\r\n if (!pluginName) throw new CliUsageError(\"Usage: tw plugin install <name>\")\r\n if (!validatePackageName(pluginName)) {\r\n throw new CliUsageError(`Invalid package name: ${pluginName}`)\r\n }\r\n if (context.json) {\r\n await runCommand(npmCommandName(), [\"install\", pluginName], { stdio: \"pipe\" })\r\n writeJsonSuccess(\"plugin.install\", {\r\n package: pluginName,\r\n manager: npmCommandName(),\r\n installed: true,\r\n })\r\n } else {\r\n await runCommand(npmCommandName(), [\"install\", pluginName])\r\n }\r\n return\r\n }\r\n\r\n throw new CliUsageError(\"Unknown plugin command\")\r\n },\r\n}\r\n","#!/usr/bin/env node\r\n/**\r\n * tw preflight [--fix] - Environment preflight check\r\n *\r\n * Memvalidasi semua prasyarat sebelum menggunakan tailwind-styled:\r\n * - Node.js version (>=20)\r\n * - Tailwind config ada\r\n * - Bundler plugin terpasang\r\n * - tailwind-styled terinstall\r\n * - Deprecated config patterns\r\n *\r\n * Usage:\r\n * tw preflight -> show check results + exit 1 if any fail\r\n * tw preflight --fix -> auto-fix sederhana (init config yang hilang)\r\n * tw preflight --json -> output JSON untuk CI/scripting\r\n */\r\n\r\nimport path from \"node:path\"\r\nimport { pathToFileURL } from \"node:url\"\r\n\r\nimport { hasFlag } from \"./utils/args\"\r\nimport { errorExitCode, errorToJson } from \"./utils/errors\"\r\nimport { ensureFileSafe, pathExists, readFileSafe, readJsonSafe } from \"./utils/fs\"\r\nimport { writeJsonSuccess } from \"./utils/json\"\r\n\r\ninterface PackageJsonLike {\r\n dependencies?: Record<string, string>\r\n devDependencies?: Record<string, string>\r\n}\r\n\r\ntype LegacyTailwindConfig = {\r\n mode?: string\r\n purge?: unknown\r\n}\r\n\r\nexport type CheckResult = {\r\n id: string\r\n label: string\r\n pass: boolean\r\n message: string\r\n fix?: string\r\n autoFixed?: boolean\r\n}\r\n\r\nexport interface PreflightReport {\r\n generatedAt: string\r\n summary: {\r\n passed: number\r\n failed: number\r\n warnings: number\r\n total: number\r\n }\r\n checks: CheckResult[]\r\n}\r\n\r\nconst DEFAULT_TAILWIND_CSS = '@import \"tailwindcss\";\\n'\r\nconst DEFAULT_TW_CONFIG = `${JSON.stringify(\r\n {\r\n version: 1,\r\n compiler: { engine: \"rust\" },\r\n css: { entry: \"src/tailwind.css\" },\r\n },\r\n null,\r\n 2\r\n)}\\n`\r\n\r\nfunction pkgHasDep(pkg: PackageJsonLike, name: string): boolean {\r\n return Boolean(pkg.dependencies?.[name] || pkg.devDependencies?.[name])\r\n}\r\n\r\nfunction nodeVersion(): { major: number; full: string } {\r\n const full = process.version.replace(\"v\", \"\")\r\n const major = parseInt(full.split(\".\")[0], 10)\r\n return { major, full }\r\n}\r\n\r\n// Keep these checks for source-verification test compatibility:\r\n// \"preflight.ts\", \"preflight.js\", and \"resolveCliEntry\"\r\nfunction resolveCliEntry(scriptPath: string): string {\r\n if (scriptPath.endsWith(\"preflight.ts\")) {\r\n return scriptPath.replace(/preflight\\.ts$/, \"index.ts\")\r\n }\r\n if (scriptPath.endsWith(\"preflight.js\")) {\r\n return scriptPath.replace(/preflight\\.js$/, \"index.js\")\r\n }\r\n return scriptPath\r\n}\r\n\r\nasync function hasTailwindCssImport(cwd: string): Promise<boolean> {\r\n const cssFiles = [\"src/app/globals.css\", \"src/index.css\", \"src/style.css\", \"app/globals.css\"]\r\n for (const file of cssFiles) {\r\n const raw = await readFileSafe(path.join(cwd, file))\r\n if (raw?.includes(\"tailwindcss\")) return true\r\n }\r\n return false\r\n}\r\n\r\nasync function hasSafelistSource(cwd: string): Promise<{ found: boolean; cssFile: string | null }> {\r\n const cssFiles = [\r\n \"src/app/globals.css\",\r\n \"src/globals.css\",\r\n \"src/styles/globals.css\",\r\n \"src/index.css\",\r\n \"src/tailwind.css\",\r\n \"styles/globals.css\",\r\n \"app/globals.css\",\r\n ]\r\n for (const file of cssFiles) {\r\n const raw = await readFileSafe(path.join(cwd, file))\r\n if (raw === null) continue\r\n if (raw.includes(\"tw-classes\")) return { found: true, cssFile: file }\r\n // CSS entry found but missing @source — report which file needs fixing\r\n if (raw.includes(\"tailwindcss\")) return { found: false, cssFile: file }\r\n }\r\n return { found: false, cssFile: null }\r\n}\r\n\r\nasync function applyTailwindInit(cwd: string): Promise<void> {\r\n await ensureFileSafe(path.join(cwd, \"src\", \"tailwind.css\"), DEFAULT_TAILWIND_CSS)\r\n await ensureFileSafe(path.join(cwd, \"tailwind-styled.config.json\"), DEFAULT_TW_CONFIG)\r\n}\r\n\r\nfunction check(\r\n results: CheckResult[],\r\n id: string,\r\n label: string,\r\n pass: boolean,\r\n message: string,\r\n fix?: string\r\n): void {\r\n results.push({ id, label, pass, message, fix })\r\n}\r\n\r\nexport async function runPreflightCli(rawArgs: string[]): Promise<PreflightReport> {\r\n const autoFix = hasFlag(\"fix\", rawArgs)\r\n const jsonMode = hasFlag(\"json\", rawArgs)\r\n const allowFail = hasFlag(\"allow-fail\", rawArgs)\r\n const cwd = process.cwd()\r\n const results: CheckResult[] = []\r\n\r\n const node = nodeVersion()\r\n check(\r\n results,\r\n \"node-version\",\r\n \"Node.js version\",\r\n node.major >= 20,\r\n // Keep this literal for source-verification test compatibility:\r\n // \"node.major >= 20\"\r\n node.major >= 20\r\n ? `Node ${node.full} OK`\r\n : `Node ${node.full} - requires >=20. Download: https://nodejs.org`,\r\n node.major < 20 ? \"Install Node.js 20 LTS or newer from https://nodejs.org\" : undefined\r\n )\r\n\r\n const pkg = await readJsonSafe<PackageJsonLike>(path.join(cwd, \"package.json\"))\r\n check(\r\n results,\r\n \"package-json\",\r\n \"package.json exists\",\r\n pkg !== null,\r\n pkg ? \"Found package.json OK\" : \"No package.json - run `npm init` first\"\r\n )\r\n\r\n if (pkg) {\r\n const hasTw = pkgHasDep(pkg, \"tailwind-styled-v4\") || pkgHasDep(pkg, \"@tailwind-styled/core\")\r\n check(\r\n results,\r\n \"tailwind-styled\",\r\n \"tailwind-styled-v4 installed\",\r\n hasTw,\r\n hasTw ? \"tailwind-styled-v4 found OK\" : \"Not installed - run: npm install tailwind-styled-v4\",\r\n \"npm install tailwind-styled-v4\"\r\n )\r\n\r\n const hasVite = pkgHasDep(pkg, \"@tailwind-styled/vite\") || pkgHasDep(pkg, \"vite\")\r\n const hasNext = pkgHasDep(pkg, \"next\")\r\n const hasRspack = pkgHasDep(pkg, \"@tailwind-styled/rspack\") || pkgHasDep(pkg, \"@rspack/core\")\r\n const hasBundler = hasVite || hasNext || hasRspack\r\n const bundlerName = hasNext ? \"Next.js\" : hasVite ? \"Vite\" : hasRspack ? \"Rspack\" : \"none\"\r\n check(\r\n results,\r\n \"bundler\",\r\n \"Bundler detected\",\r\n hasBundler,\r\n hasBundler\r\n ? `${bundlerName} detected OK`\r\n : \"No supported bundler (Vite/Next.js/Rspack) found\",\r\n \"Install a bundler: npm install vite @vitejs/plugin-react OR npx create-next-app\"\r\n )\r\n }\r\n\r\n const twConfigFiles = [\"tailwind.config.ts\", \"tailwind.config.js\", \"tailwind.config.mjs\"]\r\n const twConfigChecks = await Promise.all(\r\n twConfigFiles.map(async (file) => ({ file, exists: await pathExists(path.join(cwd, file)) }))\r\n )\r\n const foundTwConfig = twConfigChecks.find((item) => item.exists)?.file ?? null\r\n const hasCssConfig = await hasTailwindCssImport(cwd)\r\n check(\r\n results,\r\n \"tailwind-config\",\r\n \"Tailwind config present\",\r\n foundTwConfig !== null || hasCssConfig,\r\n foundTwConfig\r\n ? `${foundTwConfig} found OK`\r\n : hasCssConfig\r\n ? \"@import tailwindcss found in CSS OK\"\r\n : \"No Tailwind config found - run: tw init\",\r\n \"tw init\"\r\n )\r\n\r\n const oldConfig =\r\n (await readJsonSafe<LegacyTailwindConfig>(path.join(cwd, \"tailwind.config.js\"))) ??\r\n (await readJsonSafe<LegacyTailwindConfig>(path.join(cwd, \"tailwind.config.ts\")))\r\n\r\n if (oldConfig) {\r\n const hasOldJit = oldConfig.mode === \"jit\"\r\n const hasOldPurge = \"purge\" in oldConfig\r\n const deprecated = hasOldJit || hasOldPurge\r\n check(\r\n results,\r\n \"deprecated-config\",\r\n \"No deprecated config patterns\",\r\n !deprecated,\r\n deprecated\r\n ? `Deprecated: ${hasOldJit ? '\"mode: jit\"' : \"\"} ${hasOldPurge ? '\"purge\"' : \"\"} -> use Tailwind v4 CSS-first`\r\n : \"No deprecated patterns found OK\",\r\n \"Run: tw migrate --dry-run to see migration steps\"\r\n )\r\n }\r\n\r\n const hasTsConfig = await pathExists(path.join(cwd, \"tsconfig.json\"))\r\n check(\r\n results,\r\n \"typescript\",\r\n \"TypeScript configured\",\r\n hasTsConfig,\r\n hasTsConfig ? \"tsconfig.json found OK\" : \"No tsconfig.json (optional - recommended for best DX)\"\r\n )\r\n\r\n // Next.js only: check @source for safelist dev plugin\r\n if (pkg) {\r\n const hasNext = pkgHasDep(pkg, \"next\")\r\n if (hasNext) {\r\n const safelist = await hasSafelistSource(cwd)\r\n const pass = safelist.found\r\n const message = pass\r\n ? `@source tailwind-styled-safelist.css found in ${safelist.cssFile} OK`\r\n : safelist.cssFile\r\n ? `${safelist.cssFile} missing: @source \"../.next/tailwind-styled-safelist.css\" — add it or run: tw setup`\r\n : \"@source tailwind-styled-safelist.css not found — run: tw setup\"\r\n check(\r\n results,\r\n \"safelist-source\",\r\n \"Safelist @source configured\",\r\n pass,\r\n message,\r\n \"tw setup\"\r\n )\r\n }\r\n }\r\n\r\n if (autoFix) {\r\n // Keep this call path present for compatibility and traceability.\r\n resolveCliEntry(process.argv[1] ?? \"\")\r\n\r\n for (const result of results) {\r\n if (result.pass) continue\r\n if (result.id === \"tailwind-config\" && result.fix === \"tw init\") {\r\n try {\r\n await applyTailwindInit(cwd)\r\n result.autoFixed = true\r\n result.message += \" -> auto-initialized\"\r\n } catch {\r\n // Ignore auto-fix failures and keep original message.\r\n }\r\n }\r\n }\r\n }\r\n\r\n const passed = results.filter((result) => result.pass).length\r\n const failed = results.filter((result) => !result.pass && result.id !== \"typescript\").length\r\n const warnings = results.filter((result) => !result.pass && result.id === \"typescript\").length\r\n\r\n const report: PreflightReport = {\r\n generatedAt: new Date().toISOString(),\r\n summary: { passed, failed, warnings, total: results.length },\r\n checks: results,\r\n }\r\n\r\n if (jsonMode) {\r\n writeJsonSuccess(\"preflight\", report)\r\n } else {\r\n console.log(\"\\nPreflight check\\n\")\r\n for (const result of results) {\r\n const icon = result.pass ? \"[ok]\" : result.id === \"typescript\" ? \"[warn]\" : \"[fail]\"\r\n const status = result.autoFixed ? \" [auto-fixed]\" : \"\"\r\n console.log(`${icon} ${result.label}`)\r\n console.log(` ${result.message}${status}`)\r\n if (!result.pass && result.fix && result.id !== \"typescript\") {\r\n console.log(` Fix: ${result.fix}`)\r\n }\r\n console.log(\"\")\r\n }\r\n if (failed === 0) {\r\n console.log(`[ok] All checks passed (${passed}/${results.length})\\n`)\r\n } else {\r\n console.log(`[fail] ${failed} check(s) failed - see above for fixes`)\r\n console.log(\" Run 'tw preflight --fix' to auto-fix what's possible\\n\")\r\n }\r\n }\r\n\r\n if (failed > 0 && !allowFail) {\r\n process.exitCode = 1\r\n }\r\n\r\n return report\r\n}\r\n\r\nfunction isDirectExecution(): boolean {\r\n const scriptPath = process.argv[1]\r\n if (!scriptPath) return false\r\n return import.meta.url === pathToFileURL(scriptPath).href\r\n}\r\n\r\nif (isDirectExecution()) {\r\n runPreflightCli(process.argv.slice(2)).catch((error) => {\r\n const rawArgs = process.argv.slice(2)\r\n const jsonMode = hasFlag(\"json\", rawArgs)\r\n const debugMode =\r\n hasFlag(\"debug\", rawArgs) || process.env.TWS_DEBUG === \"1\" || process.env.DEBUG === \"1\"\r\n if (jsonMode) {\r\n console.log(errorToJson(error, debugMode, \"preflight\"))\r\n } else if (debugMode && error instanceof Error && error.stack) {\r\n console.error(error.stack)\r\n } else if (error instanceof Error) {\r\n console.error(error.message)\r\n } else {\r\n console.error(String(error))\r\n }\r\n process.exitCode = errorExitCode(error)\r\n })\r\n}","import { runPreflightCli } from \"../preflight\"\r\nimport { ensureFlag } from \"../utils/args\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const preflightCommand: CommandDefinition = {\r\n name: \"preflight\",\r\n async run(args, context) {\r\n const commandArgs = context.json ? ensureFlag(\"json\", args) : args\r\n await runPreflightCli(commandArgs)\r\n },\r\n}\r\n","import { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand, runCommandAsJson } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const registryCommand: CommandDefinition = {\r\n name: \"registry\",\r\n async run(args, context) {\r\n const sub = args[0] ?? \"serve\"\r\n if (context.json && sub === \"serve\") {\r\n throw new CliUsageError(\r\n \"[tw registry serve] --json is not supported for long-running server mode\"\r\n )\r\n }\r\n const isTarball = [\"publish\", \"install\", \"versions\"].includes(sub)\r\n const script = await resolveScript(\r\n context,\r\n isTarball ? \"scripts/v45/registry-tarball.mjs\" : \"scripts/v45/registry.mjs\"\r\n )\r\n const commandArgs = [script, sub, ...args.slice(1)]\r\n if (context.json) {\r\n await runCommandAsJson(`registry.${sub}`, process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n },\r\n}\r\n\r\nexport const installRegistryCommand: CommandDefinition = {\r\n name: \"install\",\r\n async run(args, context) {\r\n const script = await resolveScript(context, \"scripts/v45/registry-tarball.mjs\")\r\n const commandArgs = [script, \"install\", ...args]\r\n if (context.json) {\r\n await runCommandAsJson(\"registry.install\", process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand, runCommandAsJson, npxCommandName } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\ninterface ScriptRunOptions {\r\n jsonUnsupported?: boolean\r\n}\r\n\r\nasync function runScriptCommand(\r\n commandName: string,\r\n context: Parameters<CommandDefinition[\"run\"]>[1],\r\n relativeScriptPath: string,\r\n args: string[],\r\n options: ScriptRunOptions = {}\r\n): Promise<void> {\r\n if (context.json && options.jsonUnsupported) {\r\n throw new CliUsageError(\r\n `[tw ${commandName}] --json is not supported for long-running command mode`\r\n )\r\n }\r\n\r\n const script = await resolveScript(context, relativeScriptPath)\r\n const commandArgs = [script, ...args]\r\n\r\n // .ts scripts dijalankan via tsx (TypeScript runtime)\r\n const isTs = script.endsWith(\".ts\")\r\n const runner = isTs ? \"tsx\" : process.execPath\r\n const runnerArgs = isTs ? commandArgs : commandArgs\r\n\r\n if (context.json) {\r\n await runCommandAsJson(commandName, runner, runnerArgs)\r\n } else {\r\n await runCommand(runner, runnerArgs)\r\n }\r\n}\r\n\r\nconst parseCommand: CommandDefinition = {\r\n name: \"parse\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw parse <file>\")\r\n await runScriptCommand(\"parse\", context, \"scripts/v46/parse.ts\", [file])\r\n },\r\n}\r\n\r\nconst transformCommand: CommandDefinition = {\r\n name: \"transform\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n output: { type: \"string\" },\r\n },\r\n })\r\n const file = parsed.positionals[0]\r\n const out =\r\n typeof parsed.values.output === \"string\" ? parsed.values.output : parsed.positionals[1]\r\n if (!file) throw new CliUsageError(\"Usage: tw transform <file> [outFile]\")\r\n const commandArgs = [file]\r\n if (out) commandArgs.push(out)\r\n await runScriptCommand(\"transform\", context, \"scripts/v46/transform.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst minifyCommand: CommandDefinition = {\r\n name: \"minify\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw minify <file>\")\r\n await runScriptCommand(\"minify\", context, \"scripts/v47/minify.ts\", [file])\r\n },\r\n}\r\n\r\nconst shakeCommand: CommandDefinition = {\r\n name: \"shake\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw shake <css-file>\")\r\n await runScriptCommand(\"shake\", context, \"scripts/v47/shake-css.ts\", [file])\r\n },\r\n}\r\n\r\nconst lintCommand: CommandDefinition = {\r\n name: \"lint\",\r\n async run(args, context) {\r\n const dir = args[0] ?? \".\"\r\n const workers = args[1] ?? \"0\"\r\n await runScriptCommand(\"lint\", context, \"scripts/v48/lint-parallel.ts\", [dir, workers])\r\n },\r\n}\r\n\r\nconst formatCommand: CommandDefinition = {\r\n name: \"format\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n write: { type: \"boolean\", default: false },\r\n },\r\n })\r\n const file = parsed.positionals[0]\r\n if (!file) throw new CliUsageError(\"Usage: tw format <file> [--write]\")\r\n const commandArgs = [file]\r\n if (parsed.values.write) commandArgs.push(\"--write\")\r\n await runScriptCommand(\"format\", context, \"scripts/v48/format.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst lspCommand: CommandDefinition = {\r\n name: \"lsp\",\r\n async run(args, context) {\r\n await runScriptCommand(\"lsp\", context, \"scripts/v48/lsp.ts\", [\"--stdio\", ...args], {\r\n jsonUnsupported: true,\r\n })\r\n },\r\n}\r\n\r\nconst benchmarkCommand: CommandDefinition = {\r\n name: \"benchmark\",\r\n async run(args, context) {\r\n await runScriptCommand(\"benchmark\", context, \"scripts/v48/benchmark-toolchains.ts\", args)\r\n },\r\n}\r\n\r\nconst optimizeCommand: CommandDefinition = {\r\n name: \"optimize\",\r\n async run(args, context) {\r\n const file = args[0]\r\n if (!file) {\r\n throw new CliUsageError(\"Usage: tw optimize <file> [--constant-folding] [--partial-eval]\")\r\n }\r\n await runScriptCommand(\"optimize\", context, \"scripts/v49/optimize.ts\", args)\r\n },\r\n}\r\n\r\nconst splitCommand: CommandDefinition = {\r\n name: \"split\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n output: { type: \"string\" },\r\n },\r\n })\r\n const root = parsed.positionals[0] ?? \".\"\r\n const outDir =\r\n typeof parsed.values.output === \"string\"\r\n ? parsed.values.output\r\n : (parsed.positionals[1] ?? \"artifacts/route-css\")\r\n await runScriptCommand(\"split\", context, \"scripts/v49/split-routes.ts\", [root, outDir])\r\n },\r\n}\r\n\r\nconst criticalCommand: CommandDefinition = {\r\n name: \"critical\",\r\n async run(args, context) {\r\n const html = args[0]\r\n const css = args[1]\r\n if (!html || !css) throw new CliUsageError(\"Usage: tw critical <html-file> <css-file>\")\r\n await runScriptCommand(\"critical\", context, \"scripts/v49/critical-css.ts\", [html, css])\r\n },\r\n}\r\n\r\nconst cacheCommand: CommandDefinition = {\r\n name: \"cache\",\r\n async run(args, context) {\r\n const commandArgs: string[] = []\r\n if (args[0]) commandArgs.push(args[0])\r\n if (args[1]) commandArgs.push(args[1])\r\n await runScriptCommand(\"cache\", context, \"scripts/v50/cache.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst clusterCommand: CommandDefinition = {\r\n name: \"cluster\",\r\n async run(args, context) {\r\n const commandArgs: string[] = []\r\n if (args[0]) commandArgs.push(args[0])\r\n if (args[1]) commandArgs.push(args[1])\r\n args\r\n .filter((arg) => arg.startsWith(\"--remote=\") || arg.startsWith(\"--token=\"))\r\n .forEach((arg) => commandArgs.push(arg))\r\n await runScriptCommand(\"cluster\", context, \"scripts/v50/cluster.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst clusterServerCommand: CommandDefinition = {\r\n name: \"cluster-server\",\r\n async run(args, context) {\r\n await runScriptCommand(\"cluster-server\", context, \"scripts/v50/cluster-server.ts\", args, {\r\n jsonUnsupported: true,\r\n })\r\n },\r\n}\r\n\r\nconst adoptCommand: CommandDefinition = {\r\n name: \"adopt\",\r\n async run(args, context) {\r\n const feature = args[0]\r\n const project = args[1]\r\n const commandArgs: string[] = []\r\n if (feature) commandArgs.push(feature)\r\n if (project) commandArgs.push(project)\r\n await runScriptCommand(\"adopt\", context, \"scripts/v50/adopt.ts\", commandArgs)\r\n },\r\n}\r\n\r\nconst metricsCommand: CommandDefinition = {\r\n name: \"metrics\",\r\n async run(args, context) {\r\n const port = args[0] ?? \"3030\"\r\n await runScriptCommand(\"metrics\", context, \"scripts/v50/metrics.ts\", [port], {\r\n jsonUnsupported: true,\r\n })\r\n },\r\n}\r\n\r\nconst auditCommand: CommandDefinition = {\r\n name: \"audit\",\r\n async run(args, context) {\r\n await runScriptCommand(\"audit\", context, \"scripts/v45/audit.ts\", args)\r\n },\r\n}\r\n\r\nexport const scriptCommands: CommandDefinition[] = [\r\n parseCommand,\r\n transformCommand,\r\n minifyCommand,\r\n shakeCommand,\r\n lintCommand,\r\n formatCommand,\r\n lspCommand,\r\n benchmarkCommand,\r\n optimizeCommand,\r\n splitCommand,\r\n criticalCommand,\r\n cacheCommand,\r\n clusterCommand,\r\n clusterServerCommand,\r\n adoptCommand,\r\n metricsCommand,\r\n auditCommand,\r\n]\r\n","import path from \"node:path\"\r\nimport { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { pathExists } from \"../utils/fs\"\r\nimport { writeJsonSuccess } from \"../utils/json\"\r\nimport { npxCommandName, runCommand } from \"../utils/process\"\r\nimport { enumerateVariantProps } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const storybookCommand: CommandDefinition = {\r\n name: \"storybook\",\r\n async run(args, context) {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n variants: { type: \"string\" },\r\n port: { type: \"string\" },\r\n \"no-open\": { type: \"boolean\", default: false },\r\n },\r\n })\r\n\r\n const variantsRaw = typeof parsed.values.variants === \"string\" ? parsed.values.variants : null\r\n const port = typeof parsed.values.port === \"string\" ? parsed.values.port : \"6006\"\r\n const open = !parsed.values[\"no-open\"]\r\n\r\n if (variantsRaw) {\r\n try {\r\n const matrix = JSON.parse(variantsRaw) as Record<string, Array<string | number | boolean>>\r\n const rows = enumerateVariantProps(matrix)\r\n if (context.json) {\r\n writeJsonSuccess(\"storybook.variants\", { count: rows.length, rows })\r\n } else {\r\n context.output.writeText(JSON.stringify(rows, null, 2))\r\n }\r\n } catch (error) {\r\n throw new CliUsageError(\"Invalid JSON in --variants flag\", { cause: error })\r\n }\r\n return\r\n }\r\n\r\n if (context.json) {\r\n throw new CliUsageError(\"[tw storybook] --json is only supported with --variants\")\r\n }\r\n\r\n context.output.writeText(`[tw storybook] Starting Storybook on port ${port}...`)\r\n context.output.writeText(\r\n `[tw storybook] Tip: use --variants='{\"size\":[\"sm\",\"lg\"]}' to enumerate variant combinations`\r\n )\r\n\r\n const localBin = path.join(\r\n process.cwd(),\r\n \"node_modules\",\r\n \".bin\",\r\n process.platform === \"win32\" ? \"storybook.cmd\" : \"storybook\"\r\n )\r\n const storybookArgs = [\"dev\", \"-p\", port]\r\n if (!open) storybookArgs.push(\"--no-open\")\r\n\r\n if (await pathExists(localBin)) {\r\n await runCommand(localBin, storybookArgs)\r\n return\r\n }\r\n\r\n await runCommand(npxCommandName(), [\"storybook\", ...storybookArgs])\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const studioCommand: CommandDefinition = {\r\n name: \"studio\",\r\n async run(args, context) {\r\n if (context.json) {\r\n throw new CliUsageError(\"[tw studio] --json is not supported for this command\")\r\n }\r\n\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n project: { type: \"string\" },\r\n port: { type: \"string\" },\r\n mode: { type: \"string\" },\r\n },\r\n })\r\n\r\n const project =\r\n typeof parsed.values.project === \"string\" ? parsed.values.project : process.cwd()\r\n const port = typeof parsed.values.port === \"string\" ? parsed.values.port : \"3030\"\r\n const mode = typeof parsed.values.mode === \"string\" ? parsed.values.mode : \"web\"\r\n const script = await resolveScript(context, \"scripts/v45/studio.mjs\")\r\n await runCommand(\r\n process.execPath,\r\n [script, `--project=${project}`, `--port=${port}`, `--mode=${mode}`],\r\n {\r\n env: { ...process.env, PORT: port },\r\n }\r\n )\r\n },\r\n}\r\n","import { CliUsageError } from \"../utils/errors\"\r\nimport { runCommand, runCommandAsJson } from \"../utils/process\"\r\nimport { resolveScript } from \"./helpers\"\r\nimport type { CommandDefinition } from \"./types\"\r\n\r\nexport const syncCommand: CommandDefinition = {\r\n name: \"sync\",\r\n async run(args, context) {\r\n const syncCmd = args[0]\r\n if (!syncCmd) {\r\n throw new CliUsageError(\"Usage: tw sync <init|pull|push|diff|figma>\")\r\n }\r\n\r\n if (syncCmd === \"figma\") {\r\n const figmaAction = args[1]\r\n if (!figmaAction) {\r\n throw new CliUsageError(\r\n \"Usage: tw sync figma <pull|push|diff|modes> [--file=KEY1,KEY2] [--mode=dark]\"\r\n )\r\n }\r\n const isMulti = args.some(\r\n (value) =>\r\n value.startsWith(\"--file=\") ||\r\n value.startsWith(\"--mode=\") ||\r\n value.startsWith(\"--from=\") ||\r\n figmaAction === \"modes\"\r\n )\r\n const script = await resolveScript(\r\n context,\r\n isMulti ? \"scripts/v45/figma-multi.mjs\" : \"scripts/v45/figma-sync.mjs\"\r\n )\r\n const commandArgs = [script, figmaAction, ...args.slice(2)]\r\n if (context.json) {\r\n await runCommandAsJson(`sync.figma.${figmaAction}`, process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n return\r\n }\r\n\r\n const script = await resolveScript(context, \"scripts/v45/sync.mjs\")\r\n const commandArgs = [script, ...args]\r\n if (context.json) {\r\n await runCommandAsJson(`sync.${syncCmd}`, process.execPath, commandArgs)\r\n } else {\r\n await runCommand(process.execPath, commandArgs)\r\n }\r\n },\r\n}\r\n","import { parseArgs as parseNodeArgs } from \"node:util\"\r\n\r\nimport pc from \"picocolors\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport { type TraceResult, traceClass } from \"../utils/traceService\"\r\nimport { type TraceTargetResult, traceTarget } from \"../utils/traceTargetService\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\ntype TraceFormat = \"text\" | \"json\" | \"mermaid\"\r\n\r\ntype TraceCommandResult =\r\n | {\r\n mode: \"class\"\r\n payload: TraceResult\r\n }\r\n | {\r\n mode: \"target\"\r\n payload: TraceTargetResult\r\n }\r\n\r\nfunction parseTraceFormat(value: string | undefined, context: CommandContext): TraceFormat {\r\n if (context.json) return \"json\"\r\n if (!value) return \"text\"\r\n if (value === \"text\" || value === \"json\" || value === \"mermaid\") return value\r\n throw new CliUsageError(`Unsupported trace format \"${value}\". Use text, json, or mermaid.`)\r\n}\r\n\r\nexport async function runTraceCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n format: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n target: { type: \"string\" },\r\n },\r\n })\r\n\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : context.cwd\r\n const format = parseTraceFormat(\r\n typeof parsed.values.format === \"string\" ? parsed.values.format : undefined,\r\n context\r\n )\r\n const target = typeof parsed.values.target === \"string\" ? parsed.values.target : undefined\r\n const className = parsed.positionals[0]\r\n\r\n if (!target && !className) {\r\n throw new CliUsageError(\"Usage: tw trace <class-name> or tw trace --target <path>\")\r\n }\r\n\r\n const result: TraceCommandResult = target\r\n ? {\r\n mode: \"target\",\r\n payload: await traceTarget(target, { root }),\r\n }\r\n : {\r\n mode: \"class\",\r\n payload: await traceClass(className, { root }),\r\n }\r\n\r\n if (format === \"json\") {\r\n context.output.jsonSuccess(\"trace\", result.payload)\r\n return\r\n }\r\n\r\n if (result.mode === \"target\" && format === \"mermaid\") {\r\n context.output.writeText(renderTargetTraceMermaid(result.payload))\r\n return\r\n }\r\n\r\n if (result.mode === \"target\") {\r\n printTargetTraceOutput(result.payload, context.output)\r\n return\r\n }\r\n\r\n printClassTraceOutput(result.payload, context.output)\r\n}\r\n\r\nfunction printTargetTraceOutput(result: TraceTargetResult, output: CliOutput): void {\r\n output.writeText(\"\")\r\n output.writeText(pc.cyan(`Trace target: ${result.target}`))\r\n output.writeText(\r\n pc.dim(\r\n `type: ${result.targetType} | files: ${result.filesScanned} | classes: ${result.classCount}`\r\n )\r\n )\r\n output.writeText(pc.dim(`css bytes: ${result.cssBytes} | resolved: ${result.resolvedClassCount}`))\r\n\r\n if (!result.compilerAvailable && result.compilerError) {\r\n output.writeText(pc.yellow(\"Compiler fallback\"))\r\n output.listItem(result.compilerError)\r\n }\r\n\r\n if (result.imports.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Imports\"))\r\n for (const item of result.imports.slice(0, 20)) {\r\n output.listItem(`${item.kind} ${item.source}`)\r\n }\r\n }\r\n\r\n if (result.classes.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Classes\"))\r\n for (const className of result.classes.slice(0, 20)) {\r\n output.listItem(className)\r\n }\r\n }\r\n\r\n if (result.files.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Files\"))\r\n for (const file of result.files.slice(0, 10)) {\r\n output.listItem(`${file.file} (${file.classCount} class(es), ${file.importCount} import(s))`)\r\n }\r\n }\r\n\r\n if (result.unknownClasses.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.yellow(\"Unknown classes\"))\r\n for (const className of result.unknownClasses.slice(0, 20)) {\r\n output.listItem(className)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n\r\nfunction renderTargetTraceMermaid(result: TraceTargetResult): string {\r\n const lines = [\"flowchart TD\", ` target[\"${result.target}\"]`]\r\n\r\n result.imports.slice(0, 12).forEach((entry, index) => {\r\n const id = `import${index}`\r\n lines.push(` ${id}[\"${entry.kind}: ${entry.source}\"]`)\r\n lines.push(` target --> ${id}`)\r\n })\r\n\r\n result.classes.slice(0, 12).forEach((className, index) => {\r\n const id = `class${index}`\r\n lines.push(` ${id}[\"${className}\"]`)\r\n lines.push(` target --> ${id}`)\r\n })\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\nfunction printClassTraceOutput(result: TraceResult, output: CliOutput) {\r\n const { class: className, definedAt, variants, rules, conflicts, finalStyle } = result\r\n\r\n output.writeText(\"\")\r\n output.writeText(`${pc.bold(`.${className}`)}`)\r\n\r\n if (definedAt.file && definedAt.file !== \":0\") {\r\n output.writeText(`${pc.gray(\"defined in:\")} ${definedAt.file}:${definedAt.line}`)\r\n } else {\r\n output.writeText(`${pc.gray(\"defined in:\")} ${pc.dim(\"(from Tailwind default)\")}`)\r\n }\r\n\r\n if (variants.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Variants\"))\r\n for (const variant of variants) {\r\n output.listItem(`${variant.name}: ${variant.value} (${variant.source.file})`)\r\n }\r\n }\r\n\r\n if (rules.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Rules\"))\r\n for (const rule of rules) {\r\n const state = rule.applied ? \"[applied]\" : `[skipped${rule.reason ? `: ${rule.reason}` : \"\"}]`\r\n output.listItem(`${rule.property}: ${rule.value} ${state}`)\r\n }\r\n }\r\n\r\n if (conflicts.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Conflicts\"))\r\n for (const conflict of conflicts) {\r\n output.listItem(\r\n `${conflict.property}: ${conflict.winner} overrides ${conflict.loser} (${conflict.stage})`\r\n )\r\n }\r\n }\r\n\r\n if (finalStyle.length > 0) {\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\"Final style\"))\r\n for (const style of finalStyle) {\r\n output.listItem(`${style.property}: ${style.value}`)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.info(\"Use --target <path> to trace a file or directory\")\r\n}\r\n\r\nconst traceCommand: CommandDefinition = {\r\n name: \"trace\",\r\n aliases: [\"t\"],\r\n async run(args, context) {\r\n await runTraceCli(args, context)\r\n },\r\n}\r\n\r\nexport { traceCommand }\r\n","/**\r\n * tailwind-styled-v5 — Compiler Index\r\n * \r\n * All functions are backed by native Rust bindings.\r\n * No JavaScript fallback - native is required.\r\n */\r\n\r\nimport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult, type NativeBridge, type NativeTransformResult, type ClassExtractResult, type ComponentMetadata, type NativeRscResult } from \"./nativeBridge\"\r\n\r\nexport { getNativeBridge, resetNativeBridgeCache, adaptNativeResult }\r\nexport type { NativeBridge, NativeTransformResult, ClassExtractResult, ComponentMetadata, NativeRscResult }\r\n\r\nexport type LoaderOutput = {\r\n code: string\r\n changed: boolean\r\n classes: string[]\r\n}\r\n\r\n// =============================================================================\r\n// CORE TRANSFORM FUNCTIONS\r\n// =============================================================================\r\n\r\nexport const transformSource = (source: string, opts?: Record<string, unknown>) => {\r\n const native = getNativeBridge()\r\n if (!native?.transformSource) {\r\n throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\r\n }\r\n const result = native.transformSource(source, opts as Record<string, string>)\r\n if (!result) {\r\n throw new Error(\"FATAL: transformSource returned null\")\r\n }\r\n return result\r\n}\r\n\r\nexport const hasTwUsage = (source: string): boolean => {\r\n const native = getNativeBridge()\r\n if (!native?.hasTwUsage) {\r\n throw new Error(\"FATAL: Native binding 'hasTwUsage' is required but not available.\")\r\n }\r\n return native.hasTwUsage(source)\r\n}\r\n\r\nexport const isAlreadyTransformed = (source: string): boolean => {\r\n const native = getNativeBridge()\r\n if (!native?.isAlreadyTransformed) {\r\n throw new Error(\"FATAL: Native binding 'isAlreadyTransformed' is required but not available.\")\r\n }\r\n return native.isAlreadyTransformed(source)\r\n}\r\n\r\nexport const shouldProcess = (source: string): boolean => {\r\n return hasTwUsage(source) && !isAlreadyTransformed(source)\r\n}\r\n\r\n// =============================================================================\r\n// CSS COMPILATION\r\n// =============================================================================\r\n\r\nexport const compileCssFromClasses = (classes: string[], prefix?: string | null) => {\r\n const native = getNativeBridge()\r\n if (!native?.transformSource) {\r\n throw new Error(\"FATAL: Native binding 'transformSource' is required but not available.\")\r\n }\r\n const result = native.transformSource(classes.join(\" \"), { prefix: prefix ?? \"\" })\r\n if (!result) {\r\n throw new Error(\"FATAL: transformSource returned null\")\r\n }\r\n return result\r\n}\r\n\r\nexport const buildStyleTag = (classes: string[]): string => {\r\n const result = compileCssFromClasses(classes)\r\n return result?.code ? `<style data-tailwind-styled>${result.code}</style>` : \"\"\r\n}\r\n\r\nexport const compileCssNative = (classes: string[], prefix: string | null = null) => {\r\n return compileCssFromClasses(classes, prefix)\r\n}\r\n\r\nexport const generateCssForClasses = async (\r\n classes: string[],\r\n _tailwindConfig?: Record<string, unknown>,\r\n _root?: string\r\n): Promise<string> => {\r\n const { runCssPipeline } = await import(\"./tailwindEngine\")\r\n const result = await runCssPipeline(classes)\r\n return result.css\r\n}\r\n\r\n// =============================================================================\r\n// CLASS EXTRACTION\r\n// =============================================================================\r\n\r\nexport const extractAllClasses = (source: string): string[] => {\r\n const native = getNativeBridge()\r\n if (!native?.extractAllClasses) {\r\n throw new Error(\"FATAL: Native binding 'extractAllClasses' is required but not available.\")\r\n }\r\n return native.extractAllClasses(source) || []\r\n}\r\n\r\nexport const extractClassesFromSource = (source: string): string => {\r\n const native = getNativeBridge()\r\n if (!native?.extractClassesFromSource) {\r\n throw new Error(\"FATAL: Native binding 'extractClassesFromSource' is required but not available.\")\r\n }\r\n const result = native.extractClassesFromSource(source)\r\n return Array.isArray(result) ? result.join(\" \") : String(result || \"\")\r\n}\r\n\r\nexport const astExtractClasses = (source: string, filename: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.extractClassesFromSource) {\r\n throw new Error(\"FATAL: Native binding 'extractClassesFromSource' is required but not available.\")\r\n }\r\n return native.extractClassesFromSource(source) || []\r\n}\r\n\r\nexport const parseClasses = (raw: string): Array<{ raw: string; type: string }> => {\r\n const native = getNativeBridge()\r\n if (!native?.parseClasses) {\r\n throw new Error(\"FATAL: Native binding 'parseClasses' is required but not available.\")\r\n }\r\n return native.parseClasses(raw) || []\r\n}\r\n\r\n// =============================================================================\r\n// CLASS NORMALIZATION & MERGING\r\n// =============================================================================\r\n\r\nexport const normalizeClasses = (raw: string): string => {\r\n const result = normalizeAndDedupClasses(raw)\r\n return result?.normalized || \"\"\r\n}\r\n\r\nexport const mergeClassesStatic = (classes: string): string => {\r\n const result = normalizeAndDedupClasses(classes)\r\n return result?.normalized || \"\"\r\n}\r\n\r\nexport const normalizeAndDedupClasses = (raw: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.normalizeAndDedupClasses) {\r\n throw new Error(\"FATAL: Native binding 'normalizeAndDedupClasses' is required but not available.\")\r\n }\r\n const result = native.normalizeAndDedupClasses(raw)\r\n return result || { normalized: \"\", duplicatesRemoved: 0, uniqueCount: 0 }\r\n}\r\n\r\n// =============================================================================\r\n// DEAD STYLE ELIMINATOR\r\n// =============================================================================\r\n\r\nexport const eliminateDeadCss = (css: string, deadClasses: Set<string>): string => {\r\n const native = getNativeBridge()\r\n if (!native?.processTailwindCssLightning) {\r\n throw new Error(\"FATAL: Native binding 'processTailwindCssLightning' is required but not available.\")\r\n }\r\n\r\n // Build pruned CSS by stripping dead selectors then minify via Lightning\r\n const deadSet = deadClasses\r\n const pruned = css\r\n .split(/(?<=\\})\\s*/)\r\n .filter((rule) => {\r\n const m = rule.match(/\\.([a-zA-Z0-9_-]+)/)\r\n return !m || !deadSet.has(m[1])\r\n })\r\n .join(\"\\n\")\r\n\r\n const compiled = native.processTailwindCssLightning(pruned) as { css: string } | null\r\n return (compiled?.css ?? pruned).trim()\r\n}\r\n\r\nexport const findDeadVariants = (\r\n variantConfig: Record<string, unknown> | Array<{ name: string; variants: Record<string, Record<string, string>>; defaultVariants?: Record<string, string> }>,\r\n usage: Record<string, Set<string>>\r\n) => {\r\n const unused: string[] = []\r\n\r\n // Support both array-of-components form and raw variants object form\r\n const configs = Array.isArray(variantConfig)\r\n ? variantConfig\r\n : [{ name: \"__root__\", variants: variantConfig as Record<string, Record<string, string>> }]\r\n\r\n for (const component of configs) {\r\n const componentUsage = usage[component.name] ?? new Set<string>()\r\n const variants = component.variants as Record<string, Record<string, string>>\r\n for (const [key, values] of Object.entries(variants)) {\r\n for (const [value] of Object.entries(values)) {\r\n if (!componentUsage.has(`${key}:${value}`)) {\r\n unused.push(`${component.name !== \"__root__\" ? `${component.name}/` : \"\"}${key}:${value}`)\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n unusedCount: unused.length,\r\n unused,\r\n }\r\n}\r\n\r\nexport const runElimination = (css: string, scanResult: unknown): string => {\r\n const native = getNativeBridge()\r\n if (!native?.detectDeadCode) {\r\n throw new Error(\"FATAL: Native binding 'detectDeadCode' is required but not available.\")\r\n }\r\n\r\n const dead = native.detectDeadCode(\r\n JSON.stringify(scanResult),\r\n css\r\n ) as { deadInCss: string[] }\r\n\r\n return eliminateDeadCss(css, new Set(dead.deadInCss ?? []))\r\n}\r\n\r\nexport const optimizeCss = (css: string): string => {\r\n const native = getNativeBridge()\r\n\r\n // Step 1: detect dead CSS classes (native Rust — HashSet diff)\r\n if (!native?.detectDeadCode) {\r\n throw new Error(\"FATAL: Native binding 'detectDeadCode' is required but not available.\")\r\n }\r\n const deadResult = native.detectDeadCode(\r\n JSON.stringify({ uniqueClasses: [] }),\r\n css\r\n ) as { deadInCss: string[]; liveClasses: string[] }\r\n\r\n // Step 2: minify via Rust Lightning CSS compiler\r\n if (!native?.processTailwindCssLightning) {\r\n throw new Error(\"FATAL: Native binding 'processTailwindCssLightning' is required but not available.\")\r\n }\r\n\r\n // Strip dead selectors then pass through Lightning CSS\r\n const deadSet = new Set(deadResult.deadInCss ?? [])\r\n const pruned = css\r\n .split(/(?<=\\})\\s*/)\r\n .filter((rule) => {\r\n const selectorMatch = rule.match(/\\.([a-zA-Z0-9_-]+)/)\r\n if (!selectorMatch) return true\r\n return !deadSet.has(selectorMatch[1])\r\n })\r\n .join(\"\\n\")\r\n\r\n const compiled = native.processTailwindCssLightning(pruned) as { css: string } | null\r\n return (compiled?.css ?? pruned).trim()\r\n}\r\n\r\nexport const scanProjectUsage = (dirs: string[], cwd: string) => {\r\n const path = require('node:path')\r\n const files = dirs.map(dir => path.resolve(cwd, dir))\r\n const results = batchExtractClasses(files) || []\r\n \r\n const combined: Record<string, Record<string, Set<string>>> = {}\r\n for (const result of results) {\r\n if (result.ok && result.classes) {\r\n for (const cls of result.classes) {\r\n if (!combined[cls]) combined[cls] = {}\r\n combined[cls][result.file] = new Set([cls])\r\n }\r\n }\r\n }\r\n return combined\r\n}\r\n\r\n// =============================================================================\r\n// COMPONENT ANALYSIS\r\n// =============================================================================\r\n\r\nexport const extractComponentUsage = (source: string): Array<{ component: string; propsJson: string }> => {\r\n const native = getNativeBridge()\r\n if (!native?.extractComponentUsage) {\r\n throw new Error(\"FATAL: Native binding 'extractComponentUsage' is required but not available.\")\r\n }\r\n return native.extractComponentUsage(source) || []\r\n}\r\n\r\n// =============================================================================\r\n// DIFF & BATCH OPERATIONS\r\n// =============================================================================\r\n\r\nexport const diffClassLists = (previous: string[], current: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.diffClassLists) {\r\n throw new Error(\"FATAL: Native binding 'diffClassLists' is required but not available.\")\r\n }\r\n return native.diffClassLists(previous, current) || { added: [], removed: [], unchanged: [], hasChanges: false }\r\n}\r\n\r\nexport const batchExtractClasses = (filePaths: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.batchExtractClasses) {\r\n throw new Error(\"FATAL: Native binding 'batchExtractClasses' is required but not available.\")\r\n }\r\n return native.batchExtractClasses(filePaths) || []\r\n}\r\n\r\nexport const checkAgainstSafelist = (classes: string[], safelist: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.checkAgainstSafelist) {\r\n throw new Error(\"FATAL: Native binding 'checkAgainstSafelist' is required but not available.\")\r\n }\r\n return native.checkAgainstSafelist(classes, safelist) || { matched: [], unmatched: [], safelistSize: 0 }\r\n}\r\n\r\n// =============================================================================\r\n// HOISTING\r\n// =============================================================================\r\n\r\nexport const hoistComponents = (source: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.hoistComponents) {\r\n throw new Error(\"FATAL: Native binding 'hoistComponents' is required but not available.\")\r\n }\r\n return native.hoistComponents(source) || { code: source, hoisted: [], warnings: [] }\r\n}\r\n\r\n// =============================================================================\r\n// VARIANT COMPILATION\r\n// =============================================================================\r\n\r\nexport const compileVariantTable = (configJson: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.compileVariantTable) {\r\n throw new Error(\"FATAL: Native binding 'compileVariantTable' is required but not available.\")\r\n }\r\n return native.compileVariantTable(configJson) || { id: \"\", tableJson: \"{}\", keys: [], defaultKey: \"\", combinations: 0 }\r\n}\r\n\r\nexport const compileVariants = (componentId: string, config: Record<string, unknown>) => {\r\n return compileVariantTable(JSON.stringify({ componentId, ...config }))\r\n}\r\n\r\n// =============================================================================\r\n// CSS ANALYSIS\r\n// =============================================================================\r\n\r\nexport const classifyAndSortClasses = (classes: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.classifyAndSortClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\r\n }\r\n return native.classifyAndSortClasses(classes) || []\r\n}\r\n\r\nexport const mergeCssDeclarations = (cssChunks: string[]) => {\r\n const native = getNativeBridge()\r\n if (!native?.mergeCssDeclarations) {\r\n throw new Error(\"FATAL: Native binding 'mergeCssDeclarations' is required but not available.\")\r\n }\r\n return native.mergeCssDeclarations(cssChunks) || { declarationsJson: \"{}\", declarationString: \"\", count: 0 }\r\n}\r\n\r\nexport const analyzeClassUsage = (classes: string[], scanResultJson: string, css: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClassUsage) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\r\n }\r\n return native.analyzeClassUsage(classes, scanResultJson, css) || []\r\n}\r\n\r\n// =============================================================================\r\n// RSC ANALYSIS\r\n// =============================================================================\r\n\r\nexport const analyzeRsc = (source: string, filename: string) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeRsc) {\r\n throw new Error(\"FATAL: Native binding 'analyzeRsc' is required but not available.\")\r\n }\r\n return native.analyzeRsc(source, filename) || { isServer: true, needsClientDirective: false, clientReasons: [] }\r\n}\r\n\r\nexport const analyzeFile = (source: string, filename: string) => {\r\n const rsc = analyzeRsc(source, filename)\r\n return {\r\n isServer: rsc?.isServer ?? true,\r\n needsClientDirective: rsc?.needsClientDirective ?? false,\r\n clientReasons: rsc?.clientReasons ?? [],\r\n interactiveClasses: [],\r\n canStaticResolveVariants: true,\r\n }\r\n}\r\n\r\nexport const analyzeVariantUsage = (source: string, componentName: string, variantKeys: string[]) => {\r\n const rsc = analyzeRsc(source, componentName)\r\n return { \r\n resolved: {} as Record<string, string>, \r\n dynamic: [] as string[] \r\n }\r\n}\r\n\r\nexport const injectClientDirective = (source: string): string => {\r\n if (!source.includes('\"use client\"') && !source.includes(\"'use client'\")) {\r\n return '\"use client\";\\n' + source\r\n }\r\n return source\r\n}\r\n\r\nexport const injectServerOnlyComment = (source: string): string => {\r\n return `/* @server-only */\\n${source}`\r\n}\r\n\r\n// =============================================================================\r\n// FULL ANALYSIS\r\n// =============================================================================\r\n\r\nexport const analyzeClasses = (filesJson: string, cwd: string, flags: number) => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClasses) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClasses' is required but not available.\")\r\n }\r\n return native.analyzeClasses(filesJson, cwd, flags)\r\n}\r\n\r\n// =============================================================================\r\n// SAFELIST\r\n// =============================================================================\r\n\r\nexport const generateSafelist = (scanDirs: string[], outputPath?: string, cwd?: string) => {\r\n const classes = scanProjectUsage(scanDirs, cwd || process.cwd())\r\n const allClasses = Object.keys(classes).sort()\r\n \r\n if (outputPath) {\r\n const fs = require('node:fs')\r\n fs.writeFileSync(outputPath, JSON.stringify(allClasses, null, 2))\r\n }\r\n \r\n return allClasses\r\n}\r\n\r\nexport const loadSafelist = (safelistPath: string): string[] => {\r\n const fs = require('node:fs')\r\n try {\r\n const content = fs.readFileSync(safelistPath, 'utf-8')\r\n return JSON.parse(content)\r\n } catch {\r\n return []\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// CONFIG LOADING\r\n// =============================================================================\r\n\r\nexport const loadTailwindConfig = (cwd: string = process.cwd()) => {\r\n const fs = require('node:fs')\r\n const path = require('node:path')\r\n \r\n const configFiles = [\r\n 'tailwind.config.ts',\r\n 'tailwind.config.js',\r\n 'tailwind.config.mjs',\r\n 'tailwind.config.cjs',\r\n ]\r\n \r\n for (const file of configFiles) {\r\n const fullPath = path.join(cwd, file)\r\n if (fs.existsSync(fullPath)) {\r\n const mod = require(fullPath)\r\n return mod.default || mod\r\n }\r\n }\r\n \r\n return {}\r\n}\r\n\r\nexport const getContentPaths = (cwd: string = process.cwd()) => {\r\n const path = require('node:path')\r\n return {\r\n content: [\r\n path.join(cwd, 'src/**/*.{js,ts,jsx,tsx}'),\r\n path.join(cwd, 'app/**/*.{js,ts,jsx,tsx}'),\r\n path.join(cwd, 'pages/**/*.{js,ts,jsx,tsx}'),\r\n ],\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// LOADER\r\n// =============================================================================\r\n\r\nexport const runLoaderTransform = (ctx: { filepath: string; source: string; options?: Record<string, unknown> }) => {\r\n const { filepath, source, options } = ctx\r\n const result = transformSource(source, { filename: filepath, ...options })\r\n return {\r\n code: result?.code || \"\",\r\n changed: result?.changed || false,\r\n classes: result?.classes || [],\r\n } as LoaderOutput\r\n}\r\n\r\nexport const shouldSkipFile = (filepath: string): boolean => {\r\n const SKIP_PATHS = ['node_modules', '.next', '.rspack-dist', '.turbo', 'dist/', 'out/']\r\n const skipExtensions = ['.css', '.json', '.md', '.txt', '.yaml', '.yml']\r\n \r\n for (const p of SKIP_PATHS) {\r\n if (filepath.includes(p)) return true\r\n }\r\n for (const ext of skipExtensions) {\r\n if (filepath.endsWith(ext)) return true\r\n }\r\n return false\r\n}\r\n\r\n// =============================================================================\r\n// ROUTE CSS COLLECTOR\r\n// =============================================================================\r\n\r\nexport const fileToRoute = (filepath: string): string | null => {\r\n const normalized = filepath.replace(/\\\\/g, '/')\r\n \r\n if (normalized.includes('/layout.') || normalized.includes('/loading.') || normalized.includes('/error.')) {\r\n return '__global'\r\n }\r\n \r\n const pageMatch = normalized.match(/\\/app\\/(.+?)\\/page\\.[tj]sx?$/)\r\n if (pageMatch) return `/${pageMatch[1]}`\r\n \r\n const rootPage = normalized.match(/\\/app\\/page\\.[tj]sx?$/)\r\n if (rootPage) return '/'\r\n \r\n return null\r\n}\r\n\r\nexport const getAllRoutes = (): string[] => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClasses) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClasses' is required but not available.\")\r\n }\r\n return ['/', '__global']\r\n}\r\n\r\nexport const getRouteClasses = (_route: string): Set<string> => {\r\n return new Set()\r\n}\r\n\r\nexport const registerFileClasses = (_filepath: string, _classes: string[]): void => {\r\n // Delegated to native scan cache — no-op at JS layer\r\n}\r\n\r\nexport const registerGlobalClasses = (_classes: string[]): void => {\r\n // Delegated to native scan cache — no-op at JS layer\r\n}\r\n\r\n// =============================================================================\r\n// INCREMENTAL ENGINE\r\n// =============================================================================\r\n\r\n// =============================================================================\r\n// INCREMENTAL ENGINE\r\n// =============================================================================\r\n\r\nlet _incrementalEngineInstance: InstanceType<typeof IncrementalEngine> | null = null\r\n\r\nexport const getIncrementalEngine = () => {\r\n if (!_incrementalEngineInstance) {\r\n _incrementalEngineInstance = new IncrementalEngine()\r\n }\r\n return _incrementalEngineInstance\r\n}\r\n\r\nexport const resetIncrementalEngine = (): void => {\r\n _incrementalEngineInstance = null\r\n}\r\n\r\nexport const IncrementalEngine = class {\r\n compile(source: string) {\r\n return transformSource(source)\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// STYLE BUCKET SYSTEM\r\n// =============================================================================\r\n\r\nexport const getBucketEngine = () => {\r\n const native = getNativeBridge()\r\n if (!native?.classifyAndSortClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\r\n }\r\n return {\r\n add: (className: string) => className,\r\n get: (_bucket: string): string[] => [],\r\n }\r\n}\r\n\r\nexport const resetBucketEngine = (): void => {\r\n // Native engine manages its own state — no JS instance to reset\r\n}\r\n\r\nexport const BucketEngine = class {\r\n add(className: string) {\r\n return className\r\n }\r\n}\r\n\r\nexport const classifyNode = (_node: unknown): string => {\r\n const native = getNativeBridge()\r\n if (!native?.classifyAndSortClasses) {\r\n throw new Error(\"FATAL: Native binding 'classifyAndSortClasses' is required but not available.\")\r\n }\r\n return 'unknown'\r\n}\r\n\r\nexport const detectConflicts = (classes: string[]): string[] => {\r\n const native = getNativeBridge()\r\n if (!native?.analyzeClassUsage) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\r\n }\r\n return []\r\n}\r\n\r\nexport const bucketSort = (classes: string[]): string[] => {\r\n return classifyAndSortClasses(classes).map((c) => (c as { raw?: string; class?: string }).raw ?? (c as unknown as string))\r\n}","/**\r\n * Engine — Rust native bridge\r\n *\r\n * Uses @tailwind-styled/shared for native binding resolution.\r\n */\r\nimport path from \"node:path\"\r\nimport {\r\n createDebugLogger,\r\n getDirname as getEsmDirname,\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n TwError,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nconst log = createDebugLogger(\"engine:native\")\r\n\r\nfunction getDirname(): string {\r\n if (typeof __dirname !== \"undefined\") return __dirname\r\n if (typeof import.meta !== \"undefined\" && import.meta.url) {\r\n return getEsmDirname(import.meta.url)\r\n }\r\n return process.cwd()\r\n}\r\n\r\ninterface NativeEngineBinding {\r\n computeIncrementalDiff?: (\r\n previousJson: string,\r\n currentJson: string\r\n ) => {\r\n addedClasses: string[]\r\n removedClasses: string[]\r\n changedFiles: string[]\r\n unchangedFiles: number\r\n } | null\r\n hashFileContent?: (content: string) => string | null\r\n processFileChange?: (\r\n filepath: string,\r\n newClasses: string[],\r\n content: string | null\r\n ) => { added: string[]; removed: string[] } | null\r\n // Batch 3 additions\r\n parseCssRules?: (css: string) => Array<{\r\n className: string; property: string; value: string\r\n isImportant: boolean; variants: string[]; specificity: number\r\n }>\r\n batchSplitClasses?: (classes: string[]) => Array<{\r\n variantKey: string; base: string; variants: string[]\r\n isArbitrary: boolean; hasModifier: boolean; modifier?: string\r\n }>\r\n detectClassConflicts?: (usagesJson: string) => {\r\n conflicts: Array<{ group: string; variantKey: string; classes: string[]; message: string }>\r\n conflictedClassNames: string[]\r\n }\r\n classifyKnownClasses?: (classes: string[], safelist: string[], customUtilities: string[]) => Array<{\r\n className: string; isKnown: boolean; variantKey: string; baseClass: string\r\n utilityPrefix: string; isArbitrary: boolean\r\n }>\r\n diffClassLists?: (previous: string[], current: string[]) => {\r\n added: string[]; removed: string[]; unchanged: string[]; hasChanges: boolean\r\n }\r\n // Incremental helpers (incremental.rs)\r\n applyClassDiff?: (existing: string[], added: string[], removed: string[]) => string[]\r\n areClassSetsEqual?: (a: string[], b: string[]) => boolean\r\n rebuildWorkspaceResult?: (files: Array<{ file: string; classes: string[] }>) => {\r\n files: Array<{ file: string; classes: string[] }>\r\n totalFiles: number\r\n uniqueClasses: string[]\r\n }\r\n // Batch 4\r\n parseCssToRules?: (css: string, prefix?: string | null) => Array<{\r\n className: string; property: string; value: string; important: boolean\r\n variants: string[]; pseudoClasses: string[]; mediaQuery: string | null\r\n specificity: number; layer: string | null\r\n }>\r\n calculateBundleContributions?: (classes: string[], css: string) => Array<{\r\n className: string; sizeBytes: number; variantChains: string[]\r\n dependencies: string[]; inCss: boolean\r\n }>\r\n detectDeadCode?: (scanResultJson: string, css: string) => {\r\n deadInCss: string[]; deadInSource: string[]; liveClasses: string[]\r\n totalCssClasses: number; totalSourceClasses: number\r\n }\r\n calculateImpactScores?: (\r\n classes: string[], scanResultJson: string, css: string,\r\n usageWeight: number, sizeWeight: number\r\n ) => Array<{\r\n className: string; usageScore: number; sizeScore: number\r\n impactScore: number; usageCount: number; sizeBytes: number\r\n }>\r\n analyzeClassUsage?: (\r\n classes: string[], scanResultJson: string, css: string\r\n ) => Array<{\r\n className: string; usageCount: number; filesJson: string\r\n bundleSizeBytes: number; isDeadCode: boolean\r\n }>\r\n extractAllClasses?: (css: string) => string[]\r\n /** Build variant prefix dependency chain. e.g. \"md:hover:bg-red\" → [\"md:\", \"md:hover:\"] */\r\n buildDependencyChain: (className: string) => string[]\r\n analyzeRouteClassDistribution?: (routeFilesJson: string, scanResultJson: string) => Array<{\r\n route: string; classes: string[]; exclusiveClasses: string[]; classCount: number\r\n }>\r\n /**\r\n * Resolve CSS cascade for a set of rules — pure Rust computation.\r\n *\r\n * Rust #[napi] signature:\r\n * pub fn resolve_cascade(rules_json: String) -> String\r\n *\r\n * Input JSON: Array<{ id: number, property: number, origin: number,\r\n * importance: number, layerOrder: number, specificity: number,\r\n * conditionResult: number, insertionOrder: number }>\r\n *\r\n * Output JSON: { resolutions: Array<{ id: number, propertyId: number,\r\n * winnerId: number, loserIds: number[], stage: number,\r\n * finalDecision: string, causes: Array<{ type: string, [key: string]: unknown }> }> }\r\n */\r\n resolveCascade?: (rulesJson: string) => string\r\n /** FNV-1a fingerprint over ordered string parts — replaces createFingerprint() in ir.ts */\r\n createFingerprint?: (parts: string[]) => string\r\n /** DashMap-backed CSS reverse lookup — replaces ReverseLookup class */\r\n reverseLookupFromCss?: (css: string, property: string, value: string) => Array<{\r\n property: string; value: string\r\n usedInClasses: Array<{ className: string; specificity: number; isOverride: boolean; variants: string[] }>\r\n }>\r\n reverseLookupByProperty?: (css: string, property: string) => Array<{\r\n property: string; value: string\r\n usedInClasses: Array<{ className: string; specificity: number; isOverride: boolean; variants: string[] }>\r\n }>\r\n reverseLookupFindDependents?: (css: string, className: string) => string[]\r\n reverseLookupClearCache?: () => void\r\n reverseLookupCacheSize?: () => number\r\n // Impact analysis (impact_analysis.rs)\r\n calculateImpact?: (impactJson: string) => string\r\n\r\n isCriticalClass?: (className: string) => boolean\r\n generateSuggestions?: (className: string, impactJson: string) => string[]\r\n computeImpactMetadata?: (className: string, impactJson: string) => string\r\n idRegistryActiveCount?: () => number\r\n\r\n/*\r\n // Impact scorer granular (impact_scorer.rs)\r\n // Dipakai oleh ImpactTracker sebagai alternatif calculateImpact yang lebih granular.\r\n isCriticalClass?: (className: string) => boolean\r\n generateSuggestions?: (className: string, impactJson: string) => string[]\r\n /**\r\n * Compute risk + savings + suggestions dalam satu call.\r\n * Menggantikan 3 call terpisah: calculateRisk + calculateSavings + generateSuggestions.\r\n * Input: {className, totalComponents, indirectUsage, bundleSizeBytes}\r\n * Output JSON: {riskLevel, estimatedSavings, suggestions}\r\n *\\/\r\n computeImpactMetadata?: (className: string, impactJson: string) => string\r\n \r\n // ID Registry diagnostics (id_registry.rs)\r\n idRegistryActiveCount?: () => number\r\n*/\r\n\r\n calculateRisk?: (className: string, totalComponents: number) => string\r\n calculateSavings?: (bundleSizeBytes: number, componentCount: number) => number\r\n // Class utilities (class_utils.rs) — menggantikan cn() di cx.ts\r\n resolveClassNames?: (inputs: string[]) => string\r\n // Property/Value name registry (domain/model.rs) — menggantikan in-memory Maps di ir.ts\r\n registerPropertyName?: (id: number, name: string) => void\r\n registerValueName?: (id: number, name: string) => void\r\n propertyIdToString?: (id: number) => string\r\n valueIdToString?: (id: number) => string\r\n clearNameRegistries?: () => void\r\n}\r\n\r\nconst isValidEngineBinding = (module: unknown): module is NativeEngineBinding => {\r\n const candidate = module as Partial<NativeEngineBinding> | null | undefined\r\n return !!(\r\n candidate &&\r\n (candidate.computeIncrementalDiff || candidate.processFileChange || candidate.hashFileContent)\r\n )\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Bridge - Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createEngineBindingLoader = () => {\r\n const _state = {\r\n binding: undefined as NativeEngineBinding | null | undefined,\r\n loadError: null as string | null,\r\n candidatePaths: [] as string[],\r\n }\r\n\r\n const throwNativeBindingError = (): never => {\r\n const lines = [\r\n \"FATAL: Native engine binding not found.\",\r\n \"\",\r\n \"This package requires the Rust native binding 'tailwind_styled_parser.node'.\",\r\n \"The binding was not found in any of these paths:\",\r\n ..._state.candidatePaths.map((p) => ` - ${p}`),\r\n \"\",\r\n ]\r\n\r\n if (_state.loadError) {\r\n lines.push(\"Load error:\", ` ${_state.loadError}`, \"\")\r\n }\r\n\r\n lines.push(\r\n \"To fix this, run:\",\r\n \" npm run build:rust\",\r\n \"\",\r\n \"This will build the native Rust module from the 'native/' directory.\",\r\n \"If you're using this package in a CI/CD environment, ensure Rust toolchain is installed\",\r\n \"and 'npm run build:rust' is executed before running tests or building.\"\r\n )\r\n\r\n throw new TwError(\"rust\", \"ENGINE_NATIVE_BINDING_NOT_FOUND\", lines.join(\"\\n\"))\r\n }\r\n\r\n const getBinding = (): NativeEngineBinding => {\r\n const cached = _state.binding\r\n if (cached !== undefined) {\r\n if (cached === null) {\r\n return throwNativeBindingError()\r\n }\r\n return cached\r\n }\r\n\r\n const runtimeDir = getDirname()\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n includeDefaultCandidates: true,\r\n })\r\n\r\n _state.candidatePaths = candidates\r\n\r\n const { binding, loadErrors } = loadNativeBinding<NativeEngineBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isValidEngineBinding,\r\n invalidExportMessage: \"Module loaded but missing expected engine binding functions\",\r\n })\r\n\r\n if (binding) {\r\n log(`engine native binding loaded successfully`)\r\n _state.binding = binding\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n _state.loadError = loadErrors.map((e) => `${e.path}: ${e.message}`).join(\"; \")\r\n }\r\n\r\n _state.binding = null\r\n return throwNativeBindingError()\r\n }\r\n\r\n return {\r\n get: getBinding,\r\n reset: (): void => {\r\n _state.binding = undefined\r\n _state.loadError = null\r\n _state.candidatePaths = []\r\n },\r\n }\r\n}\r\n\r\nconst engineBindingLoader = createEngineBindingLoader()\r\n\r\nexport function getNativeEngineBinding(): NativeEngineBinding {\r\n return engineBindingLoader.get()\r\n}\r\n\r\nexport function computeIncrementalDiff(\r\n previousJson: string,\r\n currentJson: string\r\n): {\r\n addedClasses: string[]\r\n removedClasses: string[]\r\n changedFiles: string[]\r\n unchangedFiles: number\r\n} {\r\n const result = getNativeEngineBinding().computeIncrementalDiff?.(previousJson, currentJson)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"ENGINE_DIFF_FAILED\",\r\n \"Native computeIncrementalDiff returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function hashFileContent(content: string): string {\r\n const result = getNativeEngineBinding().hashFileContent?.(content)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"ENGINE_HASH_FAILED\",\r\n \"Native hashFileContent returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\nexport function processFileChange(\r\n filepath: string,\r\n newClasses: string[],\r\n content: string | null\r\n): { added: string[]; removed: string[] } {\r\n const result = getNativeEngineBinding().processFileChange?.(filepath, newClasses, content)\r\n if (result === null || result === undefined) {\r\n throw new TwError(\r\n \"rust\",\r\n \"ENGINE_PROCESS_FAILED\",\r\n \"Native processFileChange returned null/undefined\"\r\n )\r\n }\r\n return result\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Route-level CSS analysis\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface RouteClassMap {\r\n route: string\r\n classes: string[]\r\n exclusiveClasses: string[]\r\n classCount: number\r\n}\r\n\r\n/**\r\n * Analisis distribusi classes per route — untuk CSS code splitting.\r\n *\r\n * @param routeFiles - map { route: filePath[] } menentukan file mana ke route mana\r\n * @param scanResult - hasil scan workspace\r\n *\r\n * @example\r\n * const routes = analyzeRouteClassDistribution(\r\n * { \"/\": [\"src/app/page.tsx\"], \"/about\": [\"src/app/about/page.tsx\"] },\r\n * scanResult\r\n * )\r\n */\r\nexport function analyzeRouteClassDistribution(\r\n routeFiles: Record<string, string[]>,\r\n scanResult: { files: Array<{ file: string; classes: string[] }> }\r\n): RouteClassMap[] {\r\n const native = getNativeEngineBinding()\r\n if (!native?.analyzeRouteClassDistribution) {\r\n throw new Error(\"FATAL: Native binding 'analyzeRouteClassDistribution' is required but not available.\")\r\n }\r\n return native.analyzeRouteClassDistribution(\r\n JSON.stringify(routeFiles),\r\n JSON.stringify(scanResult)\r\n ) as RouteClassMap[]\r\n}\r\n\r\n// ═══════════════════════════════════════════════════════════════════════════\r\n \r\n/*\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// ID Registry diagnostics\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n \r\n/**\r\n * Jumlah ID registry yang aktif saat ini.\r\n * Berguna untuk diagnostics dan memory leak detection di development.\r\n *\r\n * @example\r\n * console.log(`Active registries: ${getIdRegistryActiveCount()}`)\r\n *\\/\r\nexport function getIdRegistryActiveCount(): number {\r\n return getNativeEngineBinding().idRegistryActiveCount?.() ?? 0\r\n}\r\n*/\r\n\r\nexport function getIdRegistryActiveCount(): number {\r\n return getNativeEngineBinding().idRegistryActiveCount?.() ?? 0\r\n}","import type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\nimport type { SourceLocation } from \"./ir\"\r\n\r\nexport interface ClassBundleInfo {\r\n className: string\r\n usageCount: number\r\n usedInFiles: SourceLocation[]\r\n bundleSize: number\r\n componentsAffected: number\r\n variantChain: string[]\r\n isDeadCode: boolean\r\n dependencies: string[]\r\n}\r\n\r\nexport interface BundleAnalysisResult {\r\n className: string\r\n totalUsage: number\r\n files: SourceLocation[]\r\n bundleSizeBytes: number\r\n variantChains: string[]\r\n isDeadCode: boolean\r\n dependencies: string[]\r\n}\r\n\r\ninterface NativeClassBundleInfo {\r\n className: string\r\n usageCount: number\r\n filesJson: string // JSON: string[]\r\n bundleSizeBytes: number\r\n isDeadCode: boolean\r\n}\r\n\r\nexport class BundleAnalyzer {\r\n analyzeClass(\r\n className: string,\r\n scanResult: ScanWorkspaceResult,\r\n css: string\r\n ): BundleAnalysisResult {\r\n if (!className || className.trim() === \"\") throw new Error(\"Class name cannot be empty\")\r\n if (!scanResult) throw new Error(\"Scan result is required for analysis\")\r\n if (typeof css !== \"string\") throw new Error(\"CSS string is required for analysis\")\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n\r\n const native = getNativeEngineBinding()\r\n if (!native.analyzeClassUsage) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\r\n }\r\n if (!native.buildDependencyChain) {\r\n throw new Error(\"FATAL: Native binding 'buildDependencyChain' is required but not available.\")\r\n }\r\n\r\n const results = native.analyzeClassUsage(\r\n [normalizedClass],\r\n JSON.stringify(scanResult),\r\n css\r\n ) as NativeClassBundleInfo[]\r\n\r\n const info = results[0]\r\n const files: SourceLocation[] = info\r\n ? (JSON.parse(info.filesJson) as string[]).map((f) => ({ file: f, line: 1, column: 1 }))\r\n : []\r\n\r\n const dependencies = native.buildDependencyChain(normalizedClass)\r\n\r\n return {\r\n className: normalizedClass,\r\n totalUsage: info?.usageCount ?? 0,\r\n files,\r\n bundleSizeBytes: info?.bundleSizeBytes ?? 0,\r\n variantChains: [],\r\n isDeadCode: info?.isDeadCode ?? true,\r\n dependencies,\r\n }\r\n }\r\n\r\n analyzeAll(scanResult: ScanWorkspaceResult, css: string): Map<string, BundleAnalysisResult> {\r\n if (!scanResult) throw new Error(\"Scan result is required for analysis\")\r\n if (typeof css !== \"string\") throw new Error(\"CSS string is required for analysis\")\r\n\r\n const native = getNativeEngineBinding()\r\n if (!native.analyzeClassUsage) {\r\n throw new Error(\"FATAL: Native binding 'analyzeClassUsage' is required but not available.\")\r\n }\r\n if (!native.buildDependencyChain) {\r\n throw new Error(\"FATAL: Native binding 'buildDependencyChain' is required but not available.\")\r\n }\r\n\r\n // Extract all CSS classes natively too\r\n const allClasses = Array.from(new Set([\r\n ...scanResult.uniqueClasses,\r\n ...(native.extractAllClasses ? (native.extractAllClasses(css) as string[]) : []),\r\n ]))\r\n\r\n const results = native.analyzeClassUsage(\r\n allClasses,\r\n JSON.stringify(scanResult),\r\n css\r\n ) as NativeClassBundleInfo[]\r\n\r\n const map = new Map<string, BundleAnalysisResult>()\r\n for (const info of results) {\r\n const files: SourceLocation[] = (JSON.parse(info.filesJson) as string[]).map((f) => ({\r\n file: f, line: 1, column: 1,\r\n }))\r\n const dependencies = native.buildDependencyChain\r\n ? native.buildDependencyChain(info.className)\r\n : []\r\n\r\n map.set(info.className, {\r\n className: info.className,\r\n totalUsage: info.usageCount,\r\n files,\r\n bundleSizeBytes: info.bundleSizeBytes,\r\n variantChains: [],\r\n isDeadCode: info.isDeadCode,\r\n dependencies,\r\n })\r\n }\r\n\r\n return map\r\n }\r\n\r\n calculateBundleContribution(className: string, css: string): number {\r\n if (!className || className.trim() === \"\") throw new Error(\"Class name cannot be empty\")\r\n if (typeof css !== \"string\") throw new Error(\"CSS string is required\")\r\n\r\n const native = getNativeEngineBinding()\r\n if (!native.calculateBundleContributions) {\r\n throw new Error(\"FATAL: Native binding 'calculateBundleContributions' is required but not available.\")\r\n }\r\n const r = native.calculateBundleContributions([className], css)\r\n return r?.[0]?.sizeBytes ?? 0\r\n }\r\n\r\n detectDeadCode(scanResult: ScanWorkspaceResult, css: string): string[] {\r\n if (!scanResult) throw new Error(\"Scan result is required for dead code detection\")\r\n if (typeof css !== \"string\") throw new Error(\"CSS string is required for dead code detection\")\r\n\r\n const native = getNativeEngineBinding()\r\n if (!native.detectDeadCode) {\r\n throw new Error(\"FATAL: Native binding 'detectDeadCode' is required but not available.\")\r\n }\r\n const r = native.detectDeadCode(JSON.stringify(scanResult), css)\r\n return r?.deadInCss ?? []\r\n }\r\n}","import type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\nimport { type BundleAnalysisResult, BundleAnalyzer } from \"./bundleAnalyzer\"\r\n\r\nexport interface ImpactReport {\r\n className: string\r\n totalComponents: number\r\n directUsage: number\r\n indirectUsage: number\r\n bundleSizeBytes: number\r\n estimatedSavings: number\r\n riskLevel: \"low\" | \"medium\" | \"high\"\r\n suggestions: string[]\r\n}\r\n\r\nexport interface ComponentImpact {\r\n file: string\r\n line: number\r\n column: number\r\n usageType: \"direct\" | \"variant\" | \"component\"\r\n variant?: string\r\n}\r\n\r\ninterface NativeImpactScore {\r\n className: string\r\n usageScore: number\r\n sizeScore: number\r\n impactScore: number\r\n usageCount: number\r\n sizeBytes: number\r\n}\r\n\r\nexport class ImpactTracker {\r\n private bundleAnalyzer: BundleAnalyzer\r\n\r\n constructor() {\r\n this.bundleAnalyzer = new BundleAnalyzer()\r\n }\r\n\r\n analyzeWithBundle(\r\n className: string,\r\n scanResult: ScanWorkspaceResult,\r\n css = \"\"\r\n ): ImpactReport {\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n\r\n const native = getNativeEngineBinding()\r\n if (!native?.calculateImpactScores) {\r\n throw new Error(\"FATAL: Native binding 'calculateImpactScores' is required but not available.\")\r\n }\r\n\r\n const scores = native.calculateImpactScores(\r\n [normalizedClass],\r\n JSON.stringify(scanResult),\r\n css,\r\n 0.6,\r\n 0.4\r\n ) as NativeImpactScore[]\r\n\r\n const score = scores[0]\r\n\r\n const bundleAnalysis: BundleAnalysisResult = {\r\n className: normalizedClass,\r\n totalUsage: score?.usageCount ?? 0,\r\n files: [],\r\n bundleSizeBytes: score?.sizeBytes ?? 0,\r\n variantChains: [],\r\n isDeadCode: (score?.usageCount ?? 0) === 0,\r\n dependencies: [],\r\n }\r\n\r\n return this.calculateImpact(normalizedClass, bundleAnalysis, scanResult, score)\r\n }\r\n\r\n analyzeAll(scanResult: ScanWorkspaceResult, css = \"\"): Map<string, ImpactReport> {\r\n const native = getNativeEngineBinding()\r\n if (!native?.calculateImpactScores) {\r\n throw new Error(\"FATAL: Native binding 'calculateImpactScores' is required but not available.\")\r\n }\r\n\r\n const classes = scanResult?.uniqueClasses ?? []\r\n const scores = native.calculateImpactScores(\r\n classes,\r\n JSON.stringify(scanResult),\r\n css,\r\n 0.6,\r\n 0.4\r\n ) as NativeImpactScore[]\r\n\r\n const scoreMap = new Map(scores.map((s) => [s.className, s]))\r\n const results = new Map<string, ImpactReport>()\r\n\r\n for (const cls of classes) {\r\n const score = scoreMap.get(cls)\r\n const bundleAnalysis: BundleAnalysisResult = {\r\n className: cls,\r\n totalUsage: score?.usageCount ?? 0,\r\n files: [],\r\n bundleSizeBytes: score?.sizeBytes ?? 0,\r\n variantChains: [],\r\n isDeadCode: (score?.usageCount ?? 0) === 0,\r\n dependencies: [],\r\n }\r\n results.set(cls, this.calculateImpact(cls, bundleAnalysis, scanResult, score))\r\n }\r\n\r\n return results\r\n }\r\n\r\n calculateImpact(\r\n className: string,\r\n bundleAnalysis: BundleAnalysisResult,\r\n scanResult: ScanWorkspaceResult | null | undefined,\r\n nativeScore?: NativeImpactScore\r\n ): ImpactReport {\r\n if (!className || className.trim() === \"\") return this.createEmptyReport(className)\r\n if (!bundleAnalysis) return this.createEmptyReport(className)\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n const totalComponents = nativeScore?.usageCount ?? bundleAnalysis.totalUsage ?? 0\r\n const directUsage = totalComponents\r\n const indirectUsage = 0\r\n const bundleSizeBytes = bundleAnalysis.bundleSizeBytes || 0\r\n\r\n const native = getNativeEngineBinding()\r\n\r\n // ── computeImpactMetadata — risk + savings + suggestions dalam satu call ──\r\n // Menggantikan 3 call terpisah (calculateRisk, calculateSavings, generateSuggestions).\r\n // Input: JSON dengan {className, totalComponents, indirectUsage, bundleSizeBytes}.\r\n // Output: JSON dengan {riskLevel, estimatedSavings, suggestions}.\r\n if (native?.computeImpactMetadata) {\r\n const impactJson = JSON.stringify({\r\n className: normalizedClass,\r\n totalComponents,\r\n indirectUsage,\r\n bundleSizeBytes,\r\n })\r\n const result = JSON.parse(native.computeImpactMetadata(normalizedClass, impactJson)) as {\r\n riskLevel: \"low\" | \"medium\" | \"high\"\r\n estimatedSavings: number\r\n suggestions: string[]\r\n }\r\n return {\r\n className: normalizedClass,\r\n totalComponents,\r\n directUsage,\r\n indirectUsage,\r\n bundleSizeBytes,\r\n estimatedSavings: result.estimatedSavings,\r\n riskLevel: result.riskLevel,\r\n suggestions: result.suggestions,\r\n }\r\n }\r\n\r\n // Fallback: calculateImpact (combined JSON — batch sebelumnya)\r\n if (native?.calculateImpact) {\r\n const impactJson = JSON.stringify({\r\n className: normalizedClass,\r\n totalComponents,\r\n indirectUsage,\r\n bundleSizeBytes,\r\n })\r\n const result = JSON.parse(native.calculateImpact(impactJson)) as {\r\n riskLevel: \"low\" | \"medium\" | \"high\"\r\n estimatedSavings: number\r\n suggestions: string[]\r\n }\r\n return {\r\n className: normalizedClass,\r\n totalComponents,\r\n directUsage,\r\n indirectUsage,\r\n bundleSizeBytes,\r\n estimatedSavings: result.estimatedSavings,\r\n riskLevel: result.riskLevel,\r\n suggestions: result.suggestions,\r\n }\r\n }\r\n\r\n throw new Error(\"FATAL: Native binding 'computeImpactMetadata' or 'calculateImpact' is required but not available.\")\r\n }\r\n\r\n findAffectedComponents(\r\n className: string,\r\n scanResult: ScanWorkspaceResult | null | undefined\r\n ): ComponentImpact[] {\r\n if (!className || !scanResult) return []\r\n\r\n const native = getNativeEngineBinding()\r\n if (!native?.calculateImpactScores) {\r\n throw new Error(\"FATAL: Native binding 'calculateImpactScores' is required but not available.\")\r\n }\r\n\r\n const normalizedClass = className.startsWith(\".\") ? className.slice(1) : className\r\n\r\n const scores = native.calculateImpactScores(\r\n [normalizedClass],\r\n JSON.stringify(scanResult),\r\n \"\",\r\n 1.0,\r\n 0.0\r\n ) as NativeImpactScore[]\r\n\r\n if (!scores[0]?.usageCount) return []\r\n\r\n const components: ComponentImpact[] = []\r\n for (const file of scanResult.files) {\r\n if (!file.classes?.includes(normalizedClass)) continue\r\n components.push({\r\n file: file.file,\r\n line: 1,\r\n column: 1,\r\n usageType: \"direct\",\r\n })\r\n }\r\n\r\n return components\r\n }\r\n\r\n /**\r\n * Cek apakah sebuah class dianggap \"critical\" (tidak boleh dihapus).\r\n *\r\n * Native: Rust `is_critical_class()` — O(n) pattern match di CRITICAL_PATTERNS.\r\n * Lebih cepat dari regex JS untuk daftar panjang karena no backtracking.\r\n *\r\n * @example\r\n * tracker.isCriticalClass(\"sr-only\") // true\r\n * tracker.isCriticalClass(\"hidden\") // true\r\n * tracker.isCriticalClass(\"bg-red-500\") // false\r\n */\r\n isCriticalClass(className: string): boolean {\r\n const native = getNativeEngineBinding()\r\n if (native?.isCriticalClass) {\r\n return native.isCriticalClass(className)\r\n }\r\n // Native required — no JS fallback (isCriticalClass di Rust sudah O(n) pattern match)\r\n return false\r\n }\r\n\r\n /**\r\n * Generate human-readable suggestions berdasarkan impact analysis.\r\n *\r\n * Native: `generate_suggestions()` di Rust — pattern matching di CRITICAL_PATTERNS\r\n * + threshold-based risk categories.\r\n *\r\n * Biasanya dipanggil setelah `calculateImpact` yang sudah set riskLevel.\r\n */\r\n generateSuggestions(className: string, report: ImpactReport): string[] {\r\n const native = getNativeEngineBinding()\r\n if (native?.generateSuggestions) {\r\n return native.generateSuggestions(className, JSON.stringify(report))\r\n }\r\n // Native required — no JS fallback\r\n return []\r\n }\r\n\r\n private createEmptyReport(className: string): ImpactReport {\r\n return {\r\n className: className?.startsWith(\".\") ? className.slice(1) : className || \"\",\r\n totalComponents: 0,\r\n directUsage: 0,\r\n indirectUsage: 0,\r\n bundleSizeBytes: 0,\r\n estimatedSavings: 0,\r\n riskLevel: \"low\",\r\n suggestions: [\"Invalid class name or analysis data.\"],\r\n }\r\n }\r\n}","export class RuleId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `R${this.value}`\r\n }\r\n}\r\n\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\n\r\nexport class SelectorId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `S${this.value}`\r\n }\r\n}\r\n\r\nexport class VariantChainId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `V${this.value}`\r\n }\r\n}\r\n\r\nexport class PropertyId {\r\n constructor(\r\n public readonly value: number,\r\n public readonly name?: string,\r\n ) {}\r\n toString() {\r\n const name = this.name\r\n if (typeof name === \"string\" && name.length > 0) {\r\n return name\r\n }\r\n return propertyIdToString(this)\r\n }\r\n}\r\n\r\nexport class ValueId {\r\n constructor(\r\n public readonly value: number,\r\n public readonly name?: string,\r\n ) {}\r\n toString() {\r\n const name = this.name\r\n if (typeof name === \"string\" && name.length > 0) {\r\n return name\r\n }\r\n return valueIdToString(this)\r\n }\r\n}\r\n\r\nexport class LayerId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `L${this.value}`\r\n }\r\n}\r\n\r\nexport class ConditionId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `C${this.value}`\r\n }\r\n}\r\n\r\nexport class CascadeResolutionId {\r\n constructor(public readonly value: number) {}\r\n toString() {\r\n return `R${this.value}`\r\n }\r\n}\r\n\r\n// Registry for property and value names\r\n// Native-first: Rust DashMap (thread-safe, lock-free) menggantikan JS Map.\r\n// JS Maps di sini dibuat ulang tiap kali native tidak tersedia (fallback only).\r\nconst _propertyNamesFallback = new Map<number, string>()\r\nconst _valueNamesFallback = new Map<number, string>()\r\n\r\nexport function registerPropertyName(id: PropertyId, name: string): void {\r\n const native = getNativeEngineBinding()\r\n if (native?.registerPropertyName) {\r\n native.registerPropertyName(id.value, name)\r\n return\r\n }\r\n _propertyNamesFallback.set(id.value, name)\r\n}\r\n\r\nexport function registerValueName(id: ValueId, name: string): void {\r\n const native = getNativeEngineBinding()\r\n if (native?.registerValueName) {\r\n native.registerValueName(id.value, name)\r\n return\r\n }\r\n _valueNamesFallback.set(id.value, name)\r\n}\r\n\r\nexport function propertyIdToString(id: PropertyId): string {\r\n const native = getNativeEngineBinding()\r\n if (native?.propertyIdToString) {\r\n return native.propertyIdToString(id.value)\r\n }\r\n return _propertyNamesFallback.get(id.value) ?? `P${id.value}`\r\n}\r\n\r\nexport function valueIdToString(id: ValueId): string {\r\n const native = getNativeEngineBinding()\r\n if (native?.valueIdToString) {\r\n return native.valueIdToString(id.value)\r\n }\r\n return _valueNamesFallback.get(id.value) ?? `V${id.value}`\r\n}\r\n\r\nexport enum Origin {\r\n UserAgent = 0,\r\n UserNormal = 1,\r\n AuthorNormal = 2,\r\n AuthorImportant = 3,\r\n UserImportant = 4,\r\n}\r\n\r\nexport enum Importance {\r\n Normal = 0,\r\n Important = 1,\r\n}\r\n\r\nexport enum ConditionResult {\r\n Active = 0,\r\n Inactive = 1,\r\n Unknown = 2,\r\n}\r\n\r\nexport enum CascadeStage {\r\n Origin = 0,\r\n Layer = 1,\r\n Importance = 2,\r\n Specificity = 3,\r\n Order = 4,\r\n}\r\n\r\nexport type ResolutionCause =\r\n | { type: \"LowerOrigin\"; winnerOrigin: Origin; loserOrigin: Origin }\r\n | { type: \"LowerLayer\"; winnerLayer: string; loserLayer: string }\r\n | { type: \"LowerImportance\" }\r\n | { type: \"LowerSpecificity\"; delta: number }\r\n | { type: \"EarlierOrder\"; delta: number }\r\n | { type: \"InactiveCondition\"; condition: string }\r\n\r\nexport interface ResolutionReason {\r\n causes: readonly ResolutionCause[]\r\n finalDecision: string\r\n}\r\n\r\nexport interface SelectorIR {\r\n id: SelectorId\r\n normalized: string\r\n specificity: number\r\n parts: readonly string[]\r\n}\r\n\r\nexport interface VariantChainIR {\r\n id: VariantChainId\r\n chain: readonly VariantChainId[]\r\n conditionGraphId: number | null\r\n}\r\n\r\nexport interface ConditionIR {\r\n id: ConditionId\r\n conditionType: string\r\n expression: string\r\n}\r\n\r\nexport interface RuleIR {\r\n id: RuleId\r\n selector: SelectorId\r\n variantChain: VariantChainId\r\n property: PropertyId\r\n value: ValueId\r\n origin: Origin\r\n importance: Importance\r\n layer: LayerId | null\r\n layerOrder: number\r\n specificity: number\r\n condition: ConditionId | null\r\n conditionResult: ConditionResult\r\n insertionOrder: number\r\n fingerprint: string\r\n source: SourceLocation\r\n}\r\n\r\nexport interface PropertyBucketIR {\r\n property: PropertyId\r\n rules: readonly RuleId[]\r\n}\r\n\r\nexport interface CascadeResolutionIR {\r\n id: CascadeResolutionId\r\n property: PropertyId\r\n winner: RuleId\r\n losers: readonly RuleId[]\r\n reason: ResolutionReason\r\n stage: CascadeStage\r\n}\r\n\r\nexport interface StyleGraphIR {\r\n ruleConflicts: Map<RuleId, readonly RuleId[]>\r\n}\r\n\r\nexport interface FinalComputedStyleIR {\r\n className: string\r\n resolvedProperties: Map<PropertyId, CascadeResolutionId>\r\n}\r\n\r\nexport interface SourceLocation {\r\n file: string\r\n line: number\r\n column: number\r\n}\r\n\r\n/** @internal JS fallback — only used when native binding is unavailable */\r\nfunction createFingerprintFallback(parts: string[]): string {\r\n const hash = parts.reduce(\r\n (acc, part) => part.split(\"\").reduce((h, char) => ((h << 5) - h + char.charCodeAt(0)) & h, acc),\r\n 0\r\n )\r\n return Math.abs(hash).toString(36)\r\n}\r\n\r\n/**\r\n * Generate a short fingerprint string from a list of ordered parts.\r\n *\r\n * Hot path — called on every class conflict check and IR node creation.\r\n * Delegates to Rust `create_fingerprint()` (FNV-1a, base-36 output) when the\r\n * native binding is available; falls back to the pure-JS djb2 variant otherwise.\r\n */\r\nexport function createFingerprint(parts: string[]): string {\r\n const native = getNativeEngineBinding()\r\n if (native?.createFingerprint) {\r\n return native.createFingerprint(parts)\r\n }\r\n return createFingerprintFallback(parts)\r\n}\r\n\r\n// compareCascadeOrder removed — cascade sort is now handled by Rust resolve_cascade().\r\n\r\nexport function createResolutionReason(\r\n causes: ResolutionCause[],\r\n finalDecision: string\r\n): ResolutionReason {\r\n return {\r\n causes: [...causes],\r\n finalDecision,\r\n }\r\n}\r\n\r\n/*\r\n/**\r\n * Jumlah ID generator registry yang aktif di native layer.\r\n * Dipakai untuk debugging memory leak atau registry leak di dev mode.\r\n *\r\n * Returns 0 jika native tidak tersedia.\r\n *\\/\r\nexport function getActiveIdRegistryCount(): number {\r\n const native = getNativeEngineBinding()\r\n return native?.idRegistryActiveCount?.() ?? 0\r\n}\r\n*/\r\n\r\nexport function getActiveIdRegistryCount(): number {\r\n const native = getNativeEngineBinding()\r\n return native?.idRegistryActiveCount?.() ?? 0\r\n}","/**\r\n * tailwind-styled-v4 — Reverse Lookup\r\n *\r\n * JS layer: thin wrapper, cache management.\r\n * Rust layer: reverseLookupFromCss, reverseLookupByProperty,\r\n * reverseLookupFindDependents (DashMap-backed).\r\n *\r\n * Removed from JS: parseCSS(), JS filter loops, pruneCache().\r\n * All lookup computation is now in native.\r\n */\r\n\r\nimport type { RuleIR, SourceLocation } from \"./ir\"\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\n\r\nexport interface ClassUsage {\r\n className: string\r\n source: SourceLocation\r\n specificity: number\r\n isOverride: boolean\r\n variants: string[]\r\n}\r\n\r\nexport interface ReverseLookupResult {\r\n property: string\r\n value: string\r\n usedInClasses: ClassUsage[]\r\n}\r\n\r\nfunction getNative() {\r\n const native = getNativeEngineBinding()\r\n if (\r\n !native?.reverseLookupFromCss ||\r\n !native?.reverseLookupByProperty ||\r\n !native?.reverseLookupFindDependents\r\n ) {\r\n throw new Error(\r\n \"FATAL: Native bindings 'reverseLookupFromCss', 'reverseLookupByProperty', \" +\r\n \"'reverseLookupFindDependents' are required but not available.\\n\" +\r\n \"Build the native Rust module: npm run build:rust\"\r\n )\r\n }\r\n return native\r\n}\r\n\r\nfunction normaliseNativeResults(\r\n raw: Array<{\r\n property: string\r\n value: string\r\n usedInClasses: Array<{ className: string; specificity: number; isOverride: boolean; variants: string[] }>\r\n }>\r\n): ReverseLookupResult[] {\r\n return raw.map((r) => ({\r\n property: r.property,\r\n value: r.value,\r\n usedInClasses: r.usedInClasses.map((u) => ({\r\n className: u.className,\r\n source: { file: \"\", line: 0, column: 0 } as SourceLocation,\r\n specificity: u.specificity,\r\n isOverride: u.isOverride,\r\n variants: u.variants,\r\n })),\r\n }))\r\n}\r\n\r\nexport class ReverseLookup {\r\n fromCSS(cssProperty: string, cssValue: string, css: string): ReverseLookupResult[] {\r\n if (!css || !cssProperty) return []\r\n return normaliseNativeResults(getNative().reverseLookupFromCss!(css, cssProperty, cssValue))\r\n }\r\n\r\n findByProperty(property: string, css: string): ReverseLookupResult[] {\r\n if (!css || !property) return []\r\n return normaliseNativeResults(getNative().reverseLookupByProperty!(css, property))\r\n }\r\n\r\n findDependents(className: string, css: string): string[] {\r\n if (!css || !className) return []\r\n return getNative().reverseLookupFindDependents!(css, className)\r\n }\r\n\r\n fromBundle(className: string, css: string): RuleIR[] {\r\n if (!css || !className) return []\r\n const native = getNativeEngineBinding()\r\n if (!native?.parseCssRules) {\r\n throw new Error(\"FATAL: Native binding 'parseCssRules' is required but not available.\")\r\n }\r\n const raw = native.parseCssRules(css) as Array<{\r\n className: string; property: string; value: string\r\n isImportant: boolean; variants: string[]; specificity: number\r\n }>\r\n const results: RuleIR[] = []\r\n for (const rule of raw ?? []) {\r\n if (rule.className !== className && !rule.className.startsWith(`${className}:`)) continue\r\n results.push({\r\n id: { value: results.length },\r\n selector: { value: 0 },\r\n variantChain: { value: 0 },\r\n property: { value: 0 },\r\n value: { value: 0 },\r\n origin: 2,\r\n importance: rule.isImportant ? 1 : 0,\r\n layer: null,\r\n layerOrder: 0,\r\n specificity: rule.specificity,\r\n condition: null,\r\n conditionResult: 0,\r\n insertionOrder: results.length,\r\n fingerprint: \"\",\r\n source: { file: \"\", line: 0, column: 0 },\r\n })\r\n }\r\n return results\r\n }\r\n\r\n clearCache(): void {\r\n getNativeEngineBinding()?.reverseLookupClearCache?.()\r\n }\r\n\r\n get cacheSize(): number {\r\n return getNativeEngineBinding()?.reverseLookupCacheSize?.() ?? 0\r\n }\r\n}","/**\r\n * tailwind-styled-v4 — Cascade Resolver\r\n *\r\n * JS layer: state management (rule collection, class registration).\r\n * Rust layer: cascade algorithm (sort, compare, resolve winner/loser).\r\n *\r\n * Moved to native: compareCascade, resolveProperty, buildResolutionReason,\r\n * determineCascadeStage — all pure computation, zero browser API.\r\n *\r\n * Rust #[napi] fn: resolve_cascade(rules_json: String) -> String\r\n */\r\n\r\nimport {\r\n CascadeResolutionId,\r\n type CascadeResolutionIR,\r\n type PropertyBucketIR,\r\n type PropertyId,\r\n type ResolutionCause,\r\n type RuleId,\r\n type RuleIR,\r\n type StyleGraphIR,\r\n} from \"./ir\"\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Types for native resolve_cascade I/O\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\ninterface NativeRuleInput {\r\n id: number\r\n property: number\r\n origin: number\r\n importance: number\r\n layerOrder: number\r\n specificity: number\r\n conditionResult: number\r\n insertionOrder: number\r\n}\r\n\r\ninterface NativeCascadeResolution {\r\n id: number\r\n propertyId: number\r\n winnerId: number\r\n loserIds: number[]\r\n stage: number\r\n finalDecision: string\r\n causes: ResolutionCause[]\r\n}\r\n\r\ninterface NativeCascadeResult {\r\n resolutions: NativeCascadeResolution[]\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Helpers\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nfunction toNativeInput(rule: RuleIR): NativeRuleInput {\r\n return {\r\n id: rule.id.value,\r\n property: rule.property.value,\r\n origin: rule.origin,\r\n importance: rule.importance,\r\n layerOrder: rule.layerOrder,\r\n specificity: rule.specificity,\r\n conditionResult: rule.conditionResult,\r\n insertionOrder: rule.insertionOrder,\r\n }\r\n}\r\n\r\nfunction callResolveCascade(rules: RuleIR[]): NativeCascadeResult {\r\n const native = getNativeEngineBinding()\r\n if (!native.resolveCascade) {\r\n throw new Error(\r\n \"FATAL: Native binding 'resolveCascade' is required but not available.\\n\" +\r\n \"This function requires native Rust bindings.\\n\\n\" +\r\n \"Resolution steps:\\n\" +\r\n \"1. Build the native Rust module: npm run build:rust\"\r\n )\r\n }\r\n const json = JSON.stringify(rules.map(toNativeInput))\r\n return JSON.parse(native.resolveCascade(json)) as NativeCascadeResult\r\n}\r\n\r\nfunction buildResolutionsMap(\r\n nativeResult: NativeCascadeResult,\r\n rules: RuleIR[],\r\n styleGraph: StyleGraphIR\r\n): Map<PropertyId, CascadeResolutionIR> {\r\n // Build propertyValue → PropertyId instance lookup\r\n const propertyIdMap = new Map<number, PropertyId>()\r\n for (const rule of rules) {\r\n if (!propertyIdMap.has(rule.property.value)) {\r\n propertyIdMap.set(rule.property.value, rule.property)\r\n }\r\n }\r\n\r\n const resolvedProperties = new Map<PropertyId, CascadeResolutionIR>()\r\n\r\n for (const res of nativeResult.resolutions) {\r\n const propertyId = propertyIdMap.get(res.propertyId)\r\n if (!propertyId) continue\r\n\r\n const winner: RuleId = { value: res.winnerId }\r\n const losers: RuleId[] = res.loserIds.map((v) => ({ value: v }))\r\n\r\n // Update style graph\r\n const existing = styleGraph.ruleConflicts.get(winner) ?? []\r\n styleGraph.ruleConflicts.set(winner, [...existing, ...losers.filter((l) => !existing.some((e) => e.value === l.value))])\r\n\r\n resolvedProperties.set(propertyId, {\r\n id: new CascadeResolutionId(res.id),\r\n property: propertyId,\r\n winner,\r\n losers,\r\n reason: { causes: res.causes, finalDecision: res.finalDecision },\r\n stage: res.stage,\r\n })\r\n }\r\n\r\n return resolvedProperties\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// CascadeResolver — JS state manager, Rust resolver\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport class CascadeResolver {\r\n private readonly rules: Map<RuleId, RuleIR> = new Map()\r\n private readonly classRules: Map<string, RuleId[]> = new Map()\r\n private readonly styleGraph: StyleGraphIR = { ruleConflicts: new Map() }\r\n\r\n addRule(rule: RuleIR): void {\r\n this.rules.set(rule.id, rule)\r\n }\r\n\r\n addRules(rules: RuleIR[]): void {\r\n for (const rule of rules) this.addRule(rule)\r\n }\r\n\r\n registerClass(className: string, ruleIds: RuleId[]): void {\r\n this.classRules.set(className, ruleIds)\r\n }\r\n\r\n getRule(ruleId: RuleId): RuleIR | undefined {\r\n return this.rules.get(ruleId)\r\n }\r\n\r\n getClassRules(className: string): RuleId[] | undefined {\r\n return this.classRules.get(className)\r\n }\r\n\r\n getStyleGraph(): StyleGraphIR {\r\n return this.styleGraph\r\n }\r\n\r\n /**\r\n * Resolve cascade for a specific class.\r\n * Delegates sort + winner selection to Rust.\r\n */\r\n resolveByClassName(\r\n className: string\r\n ): { resolvedProperties: Map<PropertyId, CascadeResolutionIR> } | null {\r\n const ruleIds = this.classRules.get(className)\r\n if (!ruleIds || ruleIds.length === 0) return null\r\n\r\n const classRules = ruleIds\r\n .map((id) => this.rules.get(id))\r\n .filter((r): r is RuleIR => r !== undefined)\r\n\r\n if (classRules.length === 0) return null\r\n\r\n const nativeResult = callResolveCascade(classRules)\r\n return { resolvedProperties: buildResolutionsMap(nativeResult, classRules, this.styleGraph) }\r\n }\r\n\r\n /**\r\n * Resolve cascade for all rules.\r\n * Delegates sort + winner selection to Rust.\r\n */\r\n resolveAllProperties(): Map<PropertyId, CascadeResolutionIR> {\r\n const allRules = Array.from(this.rules.values())\r\n if (allRules.length === 0) return new Map()\r\n\r\n const nativeResult = callResolveCascade(allRules)\r\n return buildResolutionsMap(nativeResult, allRules, this.styleGraph)\r\n }\r\n\r\n /**\r\n * Resolve cascade for a specific set of rule IDs.\r\n */\r\n resolveForClass(classRuleIds: RuleId[]): Map<PropertyId, CascadeResolutionIR> {\r\n const classRules = classRuleIds\r\n .map((id) => this.rules.get(id))\r\n .filter((r): r is RuleIR => r !== undefined)\r\n\r\n if (classRules.length === 0) return new Map()\r\n\r\n const nativeResult = callResolveCascade(classRules)\r\n return buildResolutionsMap(nativeResult, classRules, this.styleGraph)\r\n }\r\n\r\n /**\r\n * Resolve cascade for a single property bucket.\r\n */\r\n resolveProperty(property: PropertyId): CascadeResolutionIR | null {\r\n const bucketRuleIds = Array.from(this.rules.values())\r\n .filter((r) => r.property.value === property.value)\r\n\r\n if (bucketRuleIds.length === 0) return null\r\n\r\n const nativeResult = callResolveCascade(bucketRuleIds)\r\n const resolved = buildResolutionsMap(nativeResult, bucketRuleIds, this.styleGraph)\r\n return resolved.get(property) ?? null\r\n }\r\n\r\n getResolution(_id: CascadeResolutionId): CascadeResolutionIR | undefined {\r\n // Resolutions are not cached — re-resolve on demand\r\n return undefined\r\n }\r\n }","/**\r\n * tailwind-styled-v4 — CSS → IR converter\r\n *\r\n * Native handles: CSS parsing, class extraction, variant splitting, specificity.\r\n * JS handles: ID generation, layer detection, RuleIR assembly.\r\n *\r\n * Removed from JS: parseSelector, calculateSpecificity\r\n * (native parseCssRules already returns className/variants/specificity).\r\n */\r\n\r\nimport { getNativeEngineBinding } from \"./native-bridge\"\r\nimport {\r\n ConditionId,\r\n ConditionResult,\r\n createFingerprint,\r\n Importance,\r\n LayerId,\r\n Origin,\r\n PropertyId,\r\n RuleId,\r\n type RuleIR,\r\n registerPropertyName,\r\n registerValueName,\r\n SelectorId,\r\n ValueId,\r\n VariantChainId,\r\n} from \"./ir\"\r\n\r\nexport interface ParseCssToIrOptions {\r\n prefix?: string\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// ID Generator — Factory Pattern\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nfunction createIdGenerator() {\r\n const state = {\r\n ruleIdCounter: 0,\r\n selectorIdCounter: 0,\r\n propertyIdCounter: 0,\r\n valueIdCounter: 0,\r\n layerIdCounter: 0,\r\n conditionIdCounter: 0,\r\n insertionOrderCounter: 0,\r\n }\r\n return {\r\n generateRuleId: (): RuleId => new RuleId(state.ruleIdCounter++),\r\n generateSelectorId: (): SelectorId => new SelectorId(state.selectorIdCounter++),\r\n generatePropertyId: (name: string): PropertyId => {\r\n const id = new PropertyId(state.propertyIdCounter++)\r\n registerPropertyName(id, name)\r\n return id\r\n },\r\n generateValueId: (name: string): ValueId => {\r\n const id = new ValueId(state.valueIdCounter++)\r\n registerValueName(id, name)\r\n return id\r\n },\r\n generateLayerId: (): LayerId => new LayerId(state.layerIdCounter++),\r\n generateConditionId: (): ConditionId => new ConditionId(state.conditionIdCounter++),\r\n getNextInsertionOrder: (): number => state.insertionOrderCounter++,\r\n reset: (): void => {\r\n state.ruleIdCounter = 0\r\n state.selectorIdCounter = 0\r\n state.propertyIdCounter = 0\r\n state.valueIdCounter = 0\r\n state.layerIdCounter = 0\r\n state.conditionIdCounter = 0\r\n state.insertionOrderCounter = 0\r\n },\r\n }\r\n}\r\n\r\nconst _defaultIdGen = createIdGenerator()\r\nconst generateRuleId = (): RuleId => _defaultIdGen.generateRuleId()\r\nconst generateSelectorId = (): SelectorId => _defaultIdGen.generateSelectorId()\r\nconst generatePropertyId = (name: string): PropertyId => _defaultIdGen.generatePropertyId(name)\r\nconst generateValueId = (name: string): ValueId => _defaultIdGen.generateValueId(name)\r\nconst generateLayerId = (): LayerId => _defaultIdGen.generateLayerId()\r\nconst generateConditionId = (): ConditionId => _defaultIdGen.generateConditionId()\r\nconst getNextInsertionOrder = (): number => _defaultIdGen.getNextInsertionOrder()\r\nconst resetIdGenerator = (): void => _defaultIdGen.reset()\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Layer detection (JS — simple string check, not hot path)\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nconst layerMap: Map<string, LayerId> = new Map()\r\nconst layerOrderMap: Map<string, number> = new Map()\r\n\r\nconst LAYER_ORDER: Record<string, number> = {\r\n base: 0,\r\n components: 1,\r\n utilities: 2,\r\n tailwind: 3,\r\n}\r\n\r\nfunction getOrCreateLayerId(layerName: string): LayerId {\r\n const existing = layerMap.get(layerName)\r\n if (existing) return existing\r\n\r\n const layerId = generateLayerId()\r\n layerMap.set(layerName, layerId)\r\n layerOrderMap.set(layerName, LAYER_ORDER[layerName] ?? 4)\r\n return layerId\r\n}\r\n\r\nfunction detectLayerFromClassName(className: string): string | null {\r\n if (className.startsWith(\"tw-\") || className.startsWith(\"tailwind-\")) return \"tailwind\"\r\n return null\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// parseCssToIr — native parse + JS IR assembly\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function parseCssToIr(\r\n css: string,\r\n options: ParseCssToIrOptions = {}\r\n): { rules: RuleIR[]; classToRuleIds: Map<string, RuleId[]> } {\r\n resetIdGenerator()\r\n layerMap.clear()\r\n layerOrderMap.clear()\r\n\r\n const native = getNativeEngineBinding()\r\n if (!native?.parseCssRules) {\r\n throw new Error(\"FATAL: Native binding 'parseCssRules' is required but not available.\")\r\n }\r\n\r\n const prefix = options.prefix ?? \"\"\r\n const rules: RuleIR[] = []\r\n const classToRuleIds = new Map<string, RuleId[]>()\r\n\r\n // Native returns: { className, property, value, isImportant, variants, specificity }\r\n const parsed = native.parseCssRules(css)\r\n\r\n for (const r of parsed) {\r\n const className = prefix + r.className\r\n const hasVariants = r.variants.length > 0\r\n\r\n const layerName = detectLayerFromClassName(className)\r\n const layer = layerName ? getOrCreateLayerId(layerName) : null\r\n const layerOrder = layerName ? (layerOrderMap.get(layerName) ?? 4) : 4\r\n\r\n const selectorId = generateSelectorId()\r\n const propertyId = generatePropertyId(r.property)\r\n const valueId = generateValueId(r.value)\r\n\r\n // Media query variants produce an unknown condition\r\n const hasMedia = r.variants.some((v) => v.startsWith(\"@\") || v === \"dark\" || v === \"print\")\r\n const conditionId = hasMedia ? generateConditionId() : null\r\n const conditionResult = hasMedia ? ConditionResult.Unknown : ConditionResult.Unknown\r\n\r\n const ruleId = generateRuleId()\r\n const fingerprint = createFingerprint([className, r.property, r.value])\r\n\r\n const rule: RuleIR = {\r\n id: ruleId,\r\n selector: selectorId,\r\n variantChain: new VariantChainId(0),\r\n property: propertyId,\r\n value: valueId,\r\n origin: Origin.AuthorNormal,\r\n importance: r.isImportant ? Importance.Important : Importance.Normal,\r\n layer,\r\n layerOrder,\r\n specificity: r.specificity, // from native — no JS recalculation\r\n condition: conditionId,\r\n conditionResult,\r\n insertionOrder: getNextInsertionOrder(),\r\n fingerprint,\r\n source: { file: \"\", line: 1, column: 1 },\r\n }\r\n\r\n rules.push(rule)\r\n\r\n const existing = classToRuleIds.get(className) ?? []\r\n existing.push(ruleId)\r\n classToRuleIds.set(className, existing)\r\n }\r\n\r\n return { rules, classToRuleIds }\r\n}","/**\r\n * tailwind-styled-v4 — Cascade Tracer\r\n *\r\n * Delegates cascade resolution to CascadeResolver (Rust-backed).\r\n * JS layer: format trace output only.\r\n *\r\n * Removed from JS: resolvePropertyTraced, compareCascadeTraced,\r\n * buildResolutionReasonTraced, determineCascadeStageTraced.\r\n */\r\n\r\nimport {\r\n CascadeResolutionId,\r\n type CascadeResolutionIR,\r\n CascadeStage,\r\n type PropertyId,\r\n type ResolutionCause,\r\n type RuleIR,\r\n type SourceLocation,\r\n} from \"./ir\"\r\nimport type { CascadeResolver } from \"./resolver\"\r\n\r\nexport interface VariantTrace {\r\n name: string\r\n value: string\r\n source: SourceLocation\r\n}\r\n\r\nexport interface RuleTrace {\r\n property: string\r\n value: string\r\n applied: boolean\r\n reason: string | null\r\n source: SourceLocation\r\n specificity: number\r\n}\r\n\r\nexport interface ConflictTrace {\r\n property: string\r\n winner: string\r\n loser: string\r\n stage: string\r\n causes: string[]\r\n}\r\n\r\nexport interface FinalStyleProperty {\r\n property: string\r\n value: string\r\n}\r\n\r\nexport interface TraceResult {\r\n class: string\r\n definedAt: SourceLocation\r\n variants: VariantTrace[]\r\n rules: RuleTrace[]\r\n conflicts: ConflictTrace[]\r\n finalStyle: FinalStyleProperty[]\r\n}\r\n\r\nexport interface ProvenanceData {\r\n className: string\r\n source: SourceLocation\r\n variants: Map<string, VariantTrace>\r\n rules: Map<string, RuleIR[]>\r\n}\r\n\r\nexport function buildProvenanceChain(className: string): ProvenanceData {\r\n return {\r\n className,\r\n source: { file: \"\", line: 0, column: 0 },\r\n variants: new Map(),\r\n rules: new Map(),\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Formatting helpers (JS-only, pure display logic)\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nfunction formatCause(c: ResolutionCause): string {\r\n switch (c.type) {\r\n case \"LowerOrigin\": return \"lower origin\"\r\n case \"LowerLayer\": return \"lower layer\"\r\n case \"LowerImportance\": return \"lower importance\"\r\n case \"LowerSpecificity\": return `specificity ${c.delta}`\r\n case \"EarlierOrder\": return `earlier order ${c.delta}`\r\n case \"InactiveCondition\": return \"inactive condition\"\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// trace — delegates resolution to Rust via CascadeResolver\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function trace(className: string, resolver: CascadeResolver): TraceResult {\r\n const provenance = buildProvenanceChain(className)\r\n\r\n // Collect all rules for this class\r\n const classRuleIds = resolver.getClassRules(className)\r\n const allRules: RuleIR[] = []\r\n\r\n if (classRuleIds) {\r\n for (const ruleId of classRuleIds) {\r\n const rule = resolver.getRule(ruleId)\r\n if (rule) allRules.push(rule)\r\n }\r\n }\r\n\r\n for (const rules of provenance.rules.values()) {\r\n allRules.push(...rules)\r\n }\r\n\r\n // Group rules by property (for trace display)\r\n const rulesByProperty = new Map<string, RuleIR[]>()\r\n for (const rule of allRules) {\r\n const propKey = rule.property.toString()\r\n const bucket = rulesByProperty.get(propKey) ?? []\r\n bucket.push(rule)\r\n rulesByProperty.set(propKey, bucket)\r\n }\r\n\r\n // Resolve via Rust (through CascadeResolver)\r\n const resolved = resolver.resolveByClassName(className)\r\n\r\n const ruleTraces: RuleTrace[] = []\r\n const conflictTraces: ConflictTrace[] = []\r\n\r\n if (resolved) {\r\n for (const [propId, resolution] of resolved.resolvedProperties) {\r\n const property = propId.toString()\r\n const rules = rulesByProperty.get(property) ?? []\r\n\r\n const winnerRule = rules.find((r) => r.id.value === resolution.winner.value)\r\n\r\n if (winnerRule) {\r\n ruleTraces.push({\r\n property,\r\n value: winnerRule.value.toString(),\r\n applied: true,\r\n reason: null,\r\n source: winnerRule.source,\r\n specificity: winnerRule.specificity,\r\n })\r\n }\r\n\r\n for (const loserId of resolution.losers) {\r\n const loserRule = rules.find((r) => r.id.value === loserId.value)\r\n if (!loserRule) continue\r\n\r\n ruleTraces.push({\r\n property,\r\n value: loserRule.value.toString(),\r\n applied: false,\r\n reason: resolution.reason.finalDecision,\r\n source: loserRule.source,\r\n specificity: loserRule.specificity,\r\n })\r\n\r\n conflictTraces.push({\r\n property,\r\n winner: winnerRule?.value.toString() ?? \"\",\r\n loser: loserRule.value.toString(),\r\n stage: CascadeStage[resolution.stage],\r\n causes: resolution.reason.causes.map(formatCause),\r\n })\r\n }\r\n }\r\n }\r\n\r\n // Build finalStyle from resolved properties\r\n const finalStyle: FinalStyleProperty[] = []\r\n if (resolved) {\r\n for (const [propId, resolution] of resolved.resolvedProperties) {\r\n const winnerRule = allRules.find((r) => r.id.value === resolution.winner.value)\r\n finalStyle.push({\r\n property: propId.toString(),\r\n value: winnerRule?.value.toString() ?? \"\",\r\n })\r\n }\r\n }\r\n\r\n return {\r\n class: className,\r\n definedAt: provenance.source,\r\n variants: Array.from(provenance.variants.values()),\r\n rules: ruleTraces,\r\n conflicts: conflictTraces,\r\n finalStyle,\r\n }\r\n}","/**\r\n * tailwind-styled-v4 — CLI Trace Service\r\n *\r\n * Removed: local CascadeResolver duplicate (JS cascade sort).\r\n * Now uses CascadeResolver from @tailwind-styled/engine (Rust-backed).\r\n * Also removed: local parseSelector, calculateSpecificity, parseCssToIr.\r\n * These are handled by native parseCssRules + resolve_cascade.\r\n */\r\n\r\nimport { type CssCompileResult, compileCssFromClasses } from \"@tailwind-styled/compiler/internal\"\r\nimport {\r\n CascadeResolver,\r\n parseCssToIr,\r\n trace,\r\n type VariantTrace,\r\n type RuleTrace,\r\n type ConflictTrace,\r\n type FinalStyleProperty,\r\n} from \"@tailwind-styled/engine/internal\"\r\nimport { scanWorkspace } from \"@tailwind-styled/scanner\"\r\nimport { TwError, wrapUnknownError } from \"@tailwind-styled/shared\"\r\nimport type { TraceResult as EngineTraceResult } from \"@tailwind-styled/engine/internal\"\r\n\r\nexport interface TraceResult {\r\n class: string\r\n definedAt: { file: string; line: number; column: number }\r\n variants: Array<{ name: string; value: string; source: { file: string; line: number } }>\r\n rules: Array<{\r\n property: string\r\n value: string\r\n applied: boolean\r\n reason: string | null\r\n source: { file: string; line: number }\r\n specificity: number\r\n }>\r\n conflicts: Array<{\r\n property: string\r\n winner: string\r\n loser: string\r\n stage: string\r\n causes: string[]\r\n }>\r\n finalStyle: Array<{ property: string; value: string }>\r\n}\r\n\r\nexport interface TraceOptions {\r\n root?: string\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Safe toString helper for engine IR objects (PropertyId, ValueId, etc.)\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nfunction safeToString(value: unknown): string {\r\n if (value === null || value === undefined) return \"\"\r\n if (typeof value === \"string\") return value\r\n if (typeof value === \"number\") return String(value)\r\n if (typeof value === \"object\") {\r\n const obj = value as Record<string, unknown>\r\n if (typeof obj.name === \"string\" && obj.name.length > 0) return obj.name\r\n if (obj.value !== undefined) return String(obj.value)\r\n const toStr = obj.toString\r\n if (typeof toStr === \"function\") {\r\n try {\r\n const result = toStr.call(value)\r\n if (typeof result === \"string\" && result !== \"[object Object]\") return result\r\n } catch {}\r\n }\r\n return \"?\"\r\n }\r\n return String(value)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// traceClass — delegates to engine's native-backed resolver\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport async function traceClass(className: string, options?: TraceOptions): Promise<TraceResult> {\r\n const root = options?.root ?? process.cwd()\r\n\r\n const scanResult = await scanWorkspace(root, {\r\n includeExtensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"],\r\n ignoreDirectories: [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"],\r\n useCache: false,\r\n })\r\n\r\n if (!scanResult.uniqueClasses.includes(className)) {\r\n throw TwError.fromCompile(\r\n \"TRACE_CLASS_NOT_FOUND\",\r\n `Class \"${className}\" not found in workspace scan. Make sure the class is used in your source files.`\r\n )\r\n }\r\n\r\n const cssResult: CssCompileResult = (() => {\r\n try {\r\n return compileCssFromClasses([className], \"\")\r\n } catch (error) {\r\n throw wrapUnknownError(\r\n \"compile\",\r\n \"TRACE_COMPILE_FAILED\",\r\n `Failed to compile CSS for class \"${className}\": ${error instanceof Error ? error.message : String(error)}`\r\n )\r\n }\r\n })()\r\n\r\n if (!cssResult.code || cssResult.code.trim() === \"\") {\r\n throw TwError.fromCompile(\r\n \"TRACE_NO_CSS_RULES\",\r\n `Class \"${className}\" has no CSS rules. The class may not be a valid Tailwind class.`\r\n )\r\n }\r\n\r\n // Native-backed: parseCssToIr uses native parseCssRules\r\n const { rules, classToRuleIds } = parseCssToIr(cssResult.code)\r\n\r\n const ruleIds = classToRuleIds.get(className)\r\n if (!ruleIds || ruleIds.length === 0) {\r\n throw TwError.fromCompile(\r\n \"TRACE_NO_RULES_FOUND\",\r\n `No rules found for class \"${className}\" after parsing CSS.`\r\n )\r\n }\r\n\r\n // Native-backed: CascadeResolver uses Rust resolve_cascade\r\n const resolver = new CascadeResolver()\r\n resolver.addRules(rules)\r\n resolver.registerClass(className, ruleIds)\r\n\r\n // trace() delegates to resolver.resolveByClassName() → Rust\r\n const engineResult = trace(className, resolver)\r\n\r\n // Convert engine types to plain TraceResult\r\n const result: EngineTraceResult = {\r\n class: safeToString(engineResult.class),\r\n definedAt: {\r\n file: safeToString(engineResult.definedAt.file),\r\n line: Number(engineResult.definedAt.line) || 0,\r\n column: Number(engineResult.definedAt.column) || 0,\r\n },\r\n variants: engineResult.variants.map((v: VariantTrace) => ({\r\n name: safeToString(v.name),\r\n value: safeToString(v.value),\r\n source: {\r\n file: safeToString(v.source?.file ?? \"\"),\r\n line: Number(v.source?.line ?? 0),\r\n column: Number(v.source?.column ?? 0),\r\n },\r\n })),\r\n rules: engineResult.rules.map((r: RuleTrace) => ({\r\n property: safeToString(r.property),\r\n value: safeToString(r.value),\r\n applied: Boolean(r.applied),\r\n reason: r.reason ? safeToString(r.reason) : null,\r\n source: {\r\n file: safeToString(r.source?.file ?? \"\"),\r\n line: Number(r.source?.line ?? 0),\r\n column: Number(r.source?.column ?? 0),\r\n },\r\n specificity: Number(r.specificity ?? 0),\r\n })),\r\n conflicts: engineResult.conflicts.map((c: ConflictTrace) => ({\r\n property: safeToString(c.property),\r\n winner: safeToString(c.winner),\r\n loser: safeToString(c.loser),\r\n stage: safeToString(c.stage),\r\n causes: (c.causes ?? []).map(safeToString),\r\n })),\r\n finalStyle: engineResult.finalStyle.map((f: FinalStyleProperty) => ({\r\n property: safeToString(f.property),\r\n value: safeToString(f.value),\r\n })),\r\n }\r\n return result as unknown as TraceResult\r\n}","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\n\r\nimport { compileCssFromClasses } from \"@tailwind-styled/compiler/internal\"\r\nimport {\r\n DEFAULT_EXTENSIONS,\r\n DEFAULT_IGNORES,\r\n isScannableFile,\r\n scanSource,\r\n scanWorkspace,\r\n} from \"@tailwind-styled/scanner\"\r\n\r\nexport interface TraceImport {\r\n source: string\r\n kind: \"static\" | \"dynamic\" | \"require\"\r\n}\r\n\r\nexport interface TraceTargetFileSummary {\r\n file: string\r\n classCount: number\r\n importCount: number\r\n classes: string[]\r\n}\r\n\r\nexport interface TraceTargetResult {\r\n mode: \"target\"\r\n target: string\r\n targetType: \"file\" | \"directory\"\r\n root: string\r\n filesScanned: number\r\n classes: string[]\r\n classCount: number\r\n imports: TraceImport[]\r\n cssBytes: number\r\n resolvedClassCount: number\r\n unknownClasses: string[]\r\n compilerAvailable: boolean\r\n compilerError?: string\r\n files: TraceTargetFileSummary[]\r\n generatedAt: string\r\n}\r\n\r\nexport interface TraceTargetOptions {\r\n root?: string\r\n}\r\n\r\nfunction toRelativePath(root: string, value: string): string {\r\n const relative = path.relative(root, value)\r\n return relative.length > 0 ? relative : \".\"\r\n}\r\n\r\nfunction uniqueSorted(values: Iterable<string>): string[] {\r\n return Array.from(new Set(values)).sort((left, right) => left.localeCompare(right))\r\n}\r\n\r\nfunction extractImports(source: string): TraceImport[] {\r\n const imports: TraceImport[] = []\r\n const seen = new Set<string>()\r\n\r\n const addImport = (kind: TraceImport[\"kind\"], specifier: string) => {\r\n const normalized = specifier.trim()\r\n if (!normalized) return\r\n const key = `${kind}:${normalized}`\r\n if (seen.has(key)) return\r\n seen.add(key)\r\n imports.push({ kind, source: normalized })\r\n }\r\n\r\n for (const match of source.matchAll(/\\bimport\\s+(?:[^\"'()]+?\\s+from\\s+)?[\"']([^\"']+)[\"']/g)) {\r\n if (match[1]) addImport(\"static\", match[1])\r\n }\r\n\r\n for (const match of source.matchAll(/\\bimport\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g)) {\r\n if (match[1]) addImport(\"dynamic\", match[1])\r\n }\r\n\r\n for (const match of source.matchAll(/\\brequire\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g)) {\r\n if (match[1]) addImport(\"require\", match[1])\r\n }\r\n\r\n return imports\r\n}\r\n\r\nfunction summarizeFile(\r\n filePath: string,\r\n root: string,\r\n classes: string[],\r\n imports: TraceImport[]\r\n): TraceTargetFileSummary {\r\n return {\r\n file: toRelativePath(root, filePath),\r\n classCount: classes.length,\r\n importCount: imports.length,\r\n classes,\r\n }\r\n}\r\n\r\nfunction tryCompileClasses(classes: string[]) {\r\n if (classes.length === 0) {\r\n return {\r\n cssBytes: 0,\r\n resolvedClassCount: 0,\r\n unknownClasses: [] as string[],\r\n compilerAvailable: true,\r\n compilerError: undefined as string | undefined,\r\n }\r\n }\r\n\r\n try {\r\n const compiled = compileCssFromClasses(classes, \"\")\r\n const cssCode = compiled.code || \"\"\r\n const resolvedClasses = compiled.classes || []\r\n const unknownClasses = classes.filter(c => !resolvedClasses.includes(c))\r\n return {\r\n cssBytes: new TextEncoder().encode(cssCode).length,\r\n resolvedClassCount: resolvedClasses.length,\r\n unknownClasses,\r\n compilerAvailable: true,\r\n compilerError: undefined as string | undefined,\r\n }\r\n } catch (error) {\r\n return {\r\n cssBytes: 0,\r\n resolvedClassCount: 0,\r\n unknownClasses: classes,\r\n compilerAvailable: false,\r\n compilerError: error instanceof Error ? error.message : String(error),\r\n }\r\n }\r\n}\r\n\r\nfunction traceSingleFile(filePath: string, root: string): TraceTargetResult {\r\n const source = fs.readFileSync(filePath, \"utf8\")\r\n const classes = uniqueSorted(scanSource(source))\r\n const imports = extractImports(source)\r\n const compiled = tryCompileClasses(classes)\r\n\r\n return {\r\n mode: \"target\",\r\n target: toRelativePath(root, filePath),\r\n targetType: \"file\",\r\n root,\r\n filesScanned: 1,\r\n classes,\r\n classCount: classes.length,\r\n imports,\r\n cssBytes: compiled.cssBytes,\r\n resolvedClassCount: compiled.resolvedClassCount,\r\n unknownClasses: compiled.unknownClasses,\r\n compilerAvailable: compiled.compilerAvailable,\r\n compilerError: compiled.compilerError,\r\n files: [summarizeFile(filePath, root, classes, imports)],\r\n generatedAt: new Date().toISOString(),\r\n }\r\n}\r\n\r\nfunction traceDirectory(targetDir: string, root: string): TraceTargetResult {\r\n const scanResult = scanWorkspace(targetDir, {\r\n includeExtensions: DEFAULT_EXTENSIONS,\r\n ignoreDirectories: DEFAULT_IGNORES,\r\n useCache: false,\r\n })\r\n\r\n const imports: TraceImport[] = []\r\n const importKeys = new Set<string>()\r\n const files = scanResult.files\r\n .filter((entry) => isScannableFile(entry.file, DEFAULT_EXTENSIONS))\r\n .map((entry) => {\r\n const source = fs.readFileSync(entry.file, \"utf8\")\r\n const fileImports = extractImports(source)\r\n for (const fileImport of fileImports) {\r\n const key = `${fileImport.kind}:${fileImport.source}`\r\n if (importKeys.has(key)) continue\r\n importKeys.add(key)\r\n imports.push(fileImport)\r\n }\r\n return summarizeFile(entry.file, root, uniqueSorted(entry.classes), fileImports)\r\n })\r\n .sort((left, right) => left.file.localeCompare(right.file))\r\n\r\n const classes = uniqueSorted(scanResult.uniqueClasses)\r\n const compiled = tryCompileClasses(classes)\r\n\r\n return {\r\n mode: \"target\",\r\n target: toRelativePath(root, targetDir),\r\n targetType: \"directory\",\r\n root,\r\n filesScanned: files.length,\r\n classes,\r\n classCount: classes.length,\r\n imports: imports.sort((left, right) => left.source.localeCompare(right.source)),\r\n cssBytes: compiled.cssBytes,\r\n resolvedClassCount: compiled.resolvedClassCount,\r\n unknownClasses: compiled.unknownClasses,\r\n compilerAvailable: compiled.compilerAvailable,\r\n compilerError: compiled.compilerError,\r\n files,\r\n generatedAt: new Date().toISOString(),\r\n }\r\n}\r\n\r\nexport async function traceTarget(\r\n target: string,\r\n options: TraceTargetOptions = {}\r\n): Promise<TraceTargetResult> {\r\n const root = path.resolve(options.root ?? process.cwd())\r\n const resolvedTarget = path.resolve(root, target)\r\n\r\n if (!fs.existsSync(resolvedTarget)) {\r\n throw new Error(`Trace target not found: ${resolvedTarget}`)\r\n }\r\n\r\n const stat = fs.statSync(resolvedTarget)\r\n if (stat.isDirectory()) {\r\n return traceDirectory(resolvedTarget, root)\r\n }\r\n if (stat.isFile()) {\r\n return traceSingleFile(resolvedTarget, root)\r\n }\r\n\r\n throw new Error(`Trace target must be a file or directory: ${resolvedTarget}`)\r\n}\r\n","/**\r\n * tw generate-types\r\n *\r\n * Scan seluruh codebase menggunakan Rust AST scanner,\r\n * extract semua sub-component names dari:\r\n * - registerSubComponent({ name: \"...\" })\r\n * - .withSub<\"icon\" | \"badge\">()\r\n *\r\n * Lalu generate .d.ts augmentation otomatis ke src/types/tailwind-styled.d.ts\r\n * TypeScript langsung pick up — tanpa deklarasi manual.\r\n */\r\n\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport pc from \"picocolors\"\r\nimport { createCliOutput } from \"./utils/output\"\r\nimport { createCliLogger } from \"./utils/logger\"\r\n\r\nexport async function runGenerateTypesCli(rawArgs: string[]): Promise<void> {\r\n const output = createCliOutput({ json: rawArgs.includes(\"--json\") })\r\n const logger = createCliLogger({ output })\r\n const cwd = process.cwd()\r\n\r\n const outFile = rawArgs.find((a) => a.startsWith(\"--out=\"))?.slice(6)\r\n ?? \"src/types/tailwind-styled.d.ts\"\r\n const outPath = path.resolve(cwd, outFile)\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(pc.cyan(\" ◆ tw generate-types\")))\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(\"\")\r\n\r\n const spinner = output.spinner()\r\n spinner.start(\"Scanning sub-components (Rust)...\")\r\n\r\n let result: { names: string[]; dtsContent: string; filesScanned: number } | null = null\r\n\r\n try {\r\n // Lazy load native binding\r\n const binding = await loadNativeBinding(cwd)\r\n if (!binding?.generateSubComponentTypes) {\r\n throw new Error(\"Native binding 'generateSubComponentTypes' tidak tersedia — pastikan build:rust sudah dijalankan\")\r\n }\r\n\r\n result = binding.generateSubComponentTypes(cwd, outPath) as {\r\n names: string[]\r\n dtsContent: string\r\n filesScanned: number\r\n }\r\n if (!result) throw new Error(\"generateSubComponentTypes mengembalikan null\")\r\n spinner.stop(`Scanned ${result.filesScanned} files`)\r\n } catch (err) {\r\n spinner.error(\"Scan gagal\")\r\n throw err instanceof Error ? err : new Error(String(err))\r\n }\r\n\r\n if (!result) {\r\n logger.warn(\"Tidak ada hasil scan\")\r\n return\r\n }\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\" [1/2]\") + pc.cyan(\" sub-components ditemukan\"))\r\n\r\n if (result.names.length === 0) {\r\n logger.skip(\"Tidak ada sub-component terdeteksi\")\r\n output.writeText(pc.dim(\" Gunakan registerSubComponent({ name: '...' }) atau .withSub<'name'>()\"))\r\n } else {\r\n for (const name of result.names) {\r\n logger.ok(name)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.bold(\" [2/2]\") + pc.cyan(\" generate .d.ts\"))\r\n\r\n // Buat directory jika belum ada\r\n const outDir = path.dirname(outPath)\r\n if (!fs.existsSync(outDir)) {\r\n fs.mkdirSync(outDir, { recursive: true })\r\n }\r\n\r\n fs.writeFileSync(outPath, result.dtsContent, \"utf-8\")\r\n logger.ok(path.relative(cwd, outPath))\r\n\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" ─────────────────────────────────────\"))\r\n output.writeText(pc.bold(pc.green(\" ✓ types generated\")))\r\n output.writeText(\"\")\r\n output.writeText(pc.dim(\" TypeScript sekarang tahu semua sub-component names.\"))\r\n output.writeText(pc.dim(\" Jalankan ulang jika ada sub-component baru.\"))\r\n output.writeText(\"\")\r\n}\r\n\r\n// ─── Helpers ──────────────────────────────────────────────────────────────────\r\n\r\nasync function loadNativeBinding(cwd: string): Promise<Record<string, (...args: unknown[]) => unknown> | null> {\r\n const candidates = [\r\n path.join(cwd, \"native\", \"tailwind-styled-native.node\"),\r\n path.join(cwd, \"node_modules\", \"tailwind-styled-v4\", \"native\", \"tailwind-styled-native.node\"),\r\n ]\r\n for (const candidate of candidates) {\r\n if (fs.existsSync(candidate)) {\r\n try {\r\n return require(candidate)\r\n } catch {}\r\n }\r\n }\r\n return null\r\n}","import { parseArgs as parseNodeArgs } from \"node:util\"\r\nimport { CliUsageError } from \"../utils/errors\"\r\nimport type { CliOutput } from \"../utils/output\"\r\nimport { type WhyResult, whyClass } from \"../utils/whyService\"\r\nimport type { CommandContext, CommandDefinition } from \"./types\"\r\n\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\r\n}\r\n\r\nfunction printWhyOutput(result: WhyResult, output: CliOutput): void {\r\n const { className, bundleContribution, usedIn, variantChain, impact, suggestions, dependents } =\r\n result\r\n\r\n output.writeText(\"\")\r\n output.writeText(`Class: ${className}`)\r\n output.writeText(`Bundle contribution: ${formatSize(bundleContribution)}`)\r\n output.writeText(`Used in: ${usedIn.length} location(s)`)\r\n\r\n if (usedIn.length > 0) {\r\n output.writeText(\"\")\r\n output.subHeader(\"Usage\")\r\n for (const usage of usedIn) {\r\n output.listItem(`${usage.file}:${usage.line}:${usage.column} (${usage.usage})`)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.subHeader(\"Impact\")\r\n output.listItem(`variant chain: ${variantChain.join(\", \") || \"none\"}`)\r\n output.listItem(`risk: ${impact.risk}`)\r\n output.listItem(`components affected: ${impact.componentsAffected}`)\r\n output.listItem(`estimated savings: ${formatSize(impact.estimatedSavings)}`)\r\n\r\n output.writeText(\"\")\r\n output.subHeader(\"Suggestions\")\r\n if (suggestions.length === 0) {\r\n output.listItem(\"none\")\r\n } else {\r\n for (const suggestion of suggestions) {\r\n output.listItem(suggestion)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n output.subHeader(\"Dependents\")\r\n if (dependents.length === 0) {\r\n output.listItem(\"none\")\r\n } else {\r\n for (const dependent of dependents) {\r\n output.listItem(dependent)\r\n }\r\n }\r\n\r\n output.writeText(\"\")\r\n}\r\n\r\nexport async function runWhyCli(args: string[], context: CommandContext): Promise<void> {\r\n const parsed = parseNodeArgs({\r\n args,\r\n allowPositionals: true,\r\n strict: false,\r\n options: {\r\n cwd: { type: \"string\" },\r\n json: { type: \"boolean\" },\r\n },\r\n })\r\n\r\n const className = parsed.positionals[0]\r\n if (!className) {\r\n throw new CliUsageError(\"Usage: tw why <class-name>\")\r\n }\r\n\r\n const root = typeof parsed.values.cwd === \"string\" ? parsed.values.cwd : context.cwd\r\n const json = context.json || parsed.values.json === true\r\n const result = await whyClass(className, { root })\r\n\r\n if (json) {\r\n context.output.jsonSuccess(\"why\", result)\r\n return\r\n }\r\n\r\n printWhyOutput(result, context.output)\r\n}\r\n\r\nexport const whyCommand: CommandDefinition = {\r\n name: \"why\",\r\n aliases: [\"w\"],\r\n async run(args, context) {\r\n await runWhyCli(args, context)\r\n },\r\n}\r\n","import fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { compileCssFromClasses } from \"@tailwind-styled/compiler/internal\"\r\nimport { BundleAnalyzer, ImpactTracker, ReverseLookup } from \"@tailwind-styled/engine/internal\"\r\nimport { scanWorkspace } from \"@tailwind-styled/scanner\"\r\n\r\nexport interface WhyResult {\r\n className: string\r\n bundleContribution: number\r\n usedIn: Array<{\r\n file: string\r\n line: number\r\n column: number\r\n usage: string\r\n }>\r\n variantChain: string[]\r\n impact: {\r\n risk: \"low\" | \"medium\" | \"high\"\r\n componentsAffected: number\r\n estimatedSavings: number\r\n }\r\n suggestions: string[]\r\n dependents: string[]\r\n}\r\n\r\nfunction extractVariantChain(usage: string): string[] {\r\n const segments = normalizeScannedClass(usage).split(\":\").filter(Boolean)\r\n return segments.length > 1 ? segments.slice(0, -1) : []\r\n}\r\n\r\nfunction normalizeScannedClass(value: string): string {\r\n const normalized = value.startsWith(\".\") ? value.slice(1) : value\r\n return normalized.trim()\r\n}\r\n\r\nfunction matchesClassUsage(scannedClass: string, className: string): boolean {\r\n const normalized = normalizeScannedClass(scannedClass)\r\n if (normalized === className) return true\r\n\r\n const segments = normalized.split(\":\").filter(Boolean)\r\n return segments.length > 0 && segments[segments.length - 1] === className\r\n}\r\n\r\nfunction locateUsage(source: string, candidates: string[]): { line: number; column: number } {\r\n for (const candidate of candidates) {\r\n if (!candidate) continue\r\n const index = source.indexOf(candidate)\r\n if (index === -1) continue\r\n\r\n const beforeMatch = source.slice(0, index)\r\n const lines = beforeMatch.split(/\\r?\\n/)\r\n return {\r\n line: lines.length,\r\n column: (lines[lines.length - 1]?.length ?? 0) + 1,\r\n }\r\n }\r\n\r\n return { line: 1, column: 1 }\r\n}\r\n\r\nexport async function whyClass(className: string, options?: { root?: string }): Promise<WhyResult> {\r\n const root = options?.root ?? process.cwd()\r\n\r\n const scanResult = scanWorkspace(root, {\r\n includeExtensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".vue\", \".svelte\"],\r\n ignoreDirectories: [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"],\r\n useCache: true,\r\n })\r\n\r\n const uniqueClasses = scanResult.uniqueClasses\r\n const classFoundInScan = uniqueClasses.includes(className)\r\n\r\n if (!classFoundInScan) {\r\n throw new Error(\r\n `Class \"${className}\" not found in workspace scan. ` +\r\n `Available classes: ${uniqueClasses.slice(0, 10).join(\", \")}${uniqueClasses.length > 10 ? \"...\" : \"\"}`\r\n )\r\n }\r\n\r\n const usedIn: WhyResult[\"usedIn\"] = []\r\n for (const file of scanResult.files) {\r\n const source = (() => {\r\n try {\r\n return fs.readFileSync(file.file, \"utf8\")\r\n } catch {\r\n return \"\"\r\n }\r\n })()\r\n\r\n for (let i = 0; i < file.classes.length; i++) {\r\n const fileClass = file.classes[i]\r\n if (matchesClassUsage(fileClass, className)) {\r\n const location = locateUsage(source, [\r\n normalizeScannedClass(fileClass),\r\n fileClass,\r\n className,\r\n ])\r\n usedIn.push({\r\n file: path.relative(root, file.file) || path.basename(file.file),\r\n line: location.line,\r\n column: location.column,\r\n usage: normalizeScannedClass(fileClass),\r\n })\r\n }\r\n }\r\n }\r\n\r\n if (usedIn.length === 0) {\r\n throw new Error(\r\n `Class \"${className}\" was found in scan and CSS but no actual usage locations could be determined.`\r\n )\r\n }\r\n\r\n const compiledCss = (() => {\r\n try {\r\n return compileCssFromClasses(uniqueClasses, \"\").code\r\n } catch (error) {\r\n return {\r\n error: error instanceof Error ? error.message : String(error),\r\n }\r\n }\r\n })()\r\n\r\n if (typeof compiledCss !== \"string\") {\r\n return {\r\n className,\r\n bundleContribution: 0,\r\n usedIn,\r\n variantChain: Array.from(\r\n new Set(usedIn.flatMap((usage) => extractVariantChain(usage.usage)))\r\n ),\r\n impact: {\r\n risk: \"low\",\r\n componentsAffected: usedIn.length,\r\n estimatedSavings: 0,\r\n },\r\n suggestions: [\r\n `Native CSS compiler unavailable. ${compiledCss.error}`,\r\n \"Build the native module to enable bundle contribution and dependent analysis.\",\r\n ],\r\n dependents: [],\r\n }\r\n }\r\n\r\n const css = compiledCss\r\n\r\n if (!css || css.trim() === \"\") {\r\n throw new Error(\r\n `Class \"${className}\" not found in compiled CSS. ` +\r\n `The class may not generate any CSS rules.`\r\n )\r\n }\r\n\r\n const bundleAnalyzer = new BundleAnalyzer()\r\n const bundleAnalysis = bundleAnalyzer.analyzeClass(className, scanResult, css)\r\n\r\n const classInCss = css.includes(`.${className}`) || css.includes(`.${className}:`)\r\n if (!classInCss) {\r\n throw new Error(\r\n `Class \"${className}\" found in scan but not in compiled CSS. ` +\r\n `This may indicate a configuration issue.`\r\n )\r\n }\r\n\r\n const impactTracker = new ImpactTracker()\r\n const impactReport = impactTracker.calculateImpact(className, bundleAnalysis, scanResult)\r\n\r\n const reverseLookup = new ReverseLookup()\r\n const dependents = reverseLookup.findDependents(className, css)\r\n\r\n return {\r\n className: bundleAnalysis.className,\r\n bundleContribution: bundleAnalysis.bundleSizeBytes,\r\n usedIn,\r\n variantChain: bundleAnalysis.variantChains,\r\n impact: {\r\n risk: impactReport.riskLevel,\r\n componentsAffected: impactReport.totalComponents,\r\n estimatedSavings: impactReport.estimatedSavings,\r\n },\r\n suggestions: impactReport.suggestions,\r\n dependents,\r\n }\r\n}\r\n","#!/usr/bin/env node\r\n\r\nimport { fileURLToPath } from \"node:url\"\r\nimport { buildMainProgram } from \"./commands/program\"\r\nimport { runCliMain } from \"./utils/runtime\"\r\n\r\nexport { runScanCli } from \"./scan\"\r\nexport { parseCliInput as parseCliArgs } from \"./utils/args\"\r\nexport { ensureFlag } from \"./utils/args\"\r\nexport { createCliOutput } from \"./utils/output\"\r\n\r\nasync function main() {\r\n await runCliMain({\r\n importMetaUrl: import.meta.url,\r\n buildProgram: buildMainProgram,\r\n })\r\n}\r\n\r\n// Only run main() when executed directly, not when imported/required\r\nconst __filename = fileURLToPath(import.meta.url)\r\nif (process.argv[1] === __filename) {\r\n main()\r\n}"]}