tailwind-styled-v4 4.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +398 -0
- package/LICENSE +21 -0
- package/README.md +532 -0
- package/dist/analyzer.d.mts +114 -0
- package/dist/analyzer.d.ts +114 -0
- package/dist/analyzer.js +1555 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/analyzer.mjs +1544 -0
- package/dist/analyzer.mjs.map +1 -0
- package/dist/animate.d.mts +46 -0
- package/dist/animate.d.ts +41 -112
- package/dist/animate.js +792 -235
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +782 -0
- package/dist/animate.mjs.map +1 -0
- package/dist/atomic.d.mts +18 -0
- package/dist/atomic.d.ts +18 -0
- package/dist/atomic.js +191 -0
- package/dist/atomic.js.map +1 -0
- package/dist/atomic.mjs +185 -0
- package/dist/atomic.mjs.map +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +6063 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +6053 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/{compiler.d.cts → compiler.d.mts} +503 -210
- package/dist/compiler.d.ts +503 -210
- package/dist/compiler.js +1549 -566
- package/dist/compiler.js.map +1 -1
- package/dist/{compiler.cjs → compiler.mjs} +1476 -627
- package/dist/compiler.mjs.map +1 -0
- package/dist/dashboard.d.mts +272 -0
- package/dist/dashboard.d.ts +272 -0
- package/dist/dashboard.js +249 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/dashboard.mjs +239 -0
- package/dist/dashboard.mjs.map +1 -0
- package/dist/devtools.js +336 -211
- package/dist/devtools.js.map +1 -1
- package/dist/{devtools.cjs → devtools.mjs} +331 -220
- package/dist/devtools.mjs.map +1 -0
- package/dist/engine.d.mts +84 -0
- package/dist/engine.d.ts +84 -0
- package/dist/engine.js +3014 -0
- package/dist/engine.js.map +1 -0
- package/dist/engine.mjs +3005 -0
- package/dist/engine.mjs.map +1 -0
- package/dist/{index.d.cts → index.d.mts} +75 -4
- package/dist/index.d.ts +75 -4
- package/dist/index.js +1341 -149
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2162 -0
- package/dist/index.mjs.map +1 -0
- package/dist/liveTokenEngine-DYN3Zale.d.mts +34 -0
- package/dist/liveTokenEngine-DYN3Zale.d.ts +34 -0
- package/dist/next.d.mts +55 -0
- package/dist/next.d.ts +30 -20
- package/dist/next.js +6947 -149
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +7050 -0
- package/dist/next.mjs.map +1 -0
- package/dist/plugin.d.mts +90 -0
- package/dist/plugin.d.ts +90 -0
- package/dist/plugin.js +185 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +174 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/pluginRegistry.d.mts +83 -0
- package/dist/pluginRegistry.d.ts +83 -0
- package/dist/pluginRegistry.js +303 -0
- package/dist/pluginRegistry.js.map +1 -0
- package/dist/pluginRegistry.mjs +298 -0
- package/dist/pluginRegistry.mjs.map +1 -0
- package/dist/{preset.d.cts → preset.d.mts} +29 -2
- package/dist/preset.d.ts +29 -2
- package/dist/preset.js +318 -21
- package/dist/preset.js.map +1 -1
- package/dist/preset.mjs +414 -0
- package/dist/preset.mjs.map +1 -0
- package/dist/rspack.d.mts +33 -0
- package/dist/rspack.d.ts +33 -0
- package/dist/rspack.js +55 -0
- package/dist/rspack.js.map +1 -0
- package/dist/rspack.mjs +45 -0
- package/dist/rspack.mjs.map +1 -0
- package/dist/runtime.d.mts +62 -0
- package/dist/runtime.d.ts +62 -0
- package/dist/runtime.js +207 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.mjs +188 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/runtimeCss.d.mts +65 -0
- package/dist/runtimeCss.d.ts +65 -0
- package/dist/runtimeCss.js +188 -0
- package/dist/runtimeCss.js.map +1 -0
- package/dist/runtimeCss.mjs +173 -0
- package/dist/runtimeCss.mjs.map +1 -0
- package/dist/scanner.d.mts +25 -0
- package/dist/scanner.d.ts +25 -0
- package/dist/scanner.js +717 -0
- package/dist/scanner.js.map +1 -0
- package/dist/scanner.mjs +703 -0
- package/dist/scanner.mjs.map +1 -0
- package/dist/shared.d.mts +85 -0
- package/dist/shared.d.ts +85 -0
- package/dist/shared.js +255 -0
- package/dist/shared.js.map +1 -0
- package/dist/shared.mjs +233 -0
- package/dist/shared.mjs.map +1 -0
- package/dist/storybookAddon.d.mts +108 -0
- package/dist/storybookAddon.d.ts +108 -0
- package/dist/storybookAddon.js +95 -0
- package/dist/storybookAddon.js.map +1 -0
- package/dist/storybookAddon.mjs +88 -0
- package/dist/storybookAddon.mjs.map +1 -0
- package/dist/svelte.d.mts +114 -0
- package/dist/svelte.d.ts +114 -0
- package/dist/svelte.js +67 -0
- package/dist/svelte.js.map +1 -0
- package/dist/svelte.mjs +59 -0
- package/dist/svelte.mjs.map +1 -0
- package/dist/testing.d.mts +185 -0
- package/dist/testing.d.ts +185 -0
- package/dist/testing.js +173 -0
- package/dist/testing.js.map +1 -0
- package/dist/testing.mjs +158 -0
- package/dist/testing.mjs.map +1 -0
- package/dist/{theme.d.cts → theme.d.mts} +18 -11
- package/dist/theme.d.ts +18 -11
- package/dist/theme.js +205 -19
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +311 -0
- package/dist/theme.mjs.map +1 -0
- package/dist/types-DXr2PmGP.d.mts +31 -0
- package/dist/types-DXr2PmGP.d.ts +31 -0
- package/dist/vite.d.mts +51 -0
- package/dist/vite.d.ts +35 -6
- package/dist/vite.js +4254 -57
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +4281 -0
- package/dist/vite.mjs.map +1 -0
- package/dist/vue.d.mts +89 -0
- package/dist/vue.d.ts +89 -0
- package/dist/vue.js +104 -0
- package/dist/vue.js.map +1 -0
- package/dist/vue.mjs +96 -0
- package/dist/vue.mjs.map +1 -0
- package/package.json +173 -67
- package/dist/animate.cjs +0 -252
- package/dist/animate.cjs.map +0 -1
- package/dist/animate.d.cts +0 -117
- package/dist/astTransform-ua-eapqs.d.cts +0 -41
- package/dist/astTransform-ua-eapqs.d.ts +0 -41
- package/dist/compiler.cjs.map +0 -1
- package/dist/css.cjs +0 -71
- package/dist/css.cjs.map +0 -1
- package/dist/css.d.cts +0 -45
- package/dist/css.d.ts +0 -45
- package/dist/css.js +0 -62
- package/dist/css.js.map +0 -1
- package/dist/devtools.cjs.map +0 -1
- package/dist/index.cjs +0 -1058
- package/dist/index.cjs.map +0 -1
- package/dist/next.cjs +0 -268
- package/dist/next.cjs.map +0 -1
- package/dist/next.d.cts +0 -45
- package/dist/plugins.cjs +0 -396
- package/dist/plugins.cjs.map +0 -1
- package/dist/plugins.d.cts +0 -231
- package/dist/plugins.d.ts +0 -231
- package/dist/plugins.js +0 -381
- package/dist/plugins.js.map +0 -1
- package/dist/preset.cjs +0 -129
- package/dist/preset.cjs.map +0 -1
- package/dist/theme.cjs +0 -154
- package/dist/theme.cjs.map +0 -1
- package/dist/turbopackLoader.cjs +0 -2689
- package/dist/turbopackLoader.cjs.map +0 -1
- package/dist/turbopackLoader.d.cts +0 -22
- package/dist/turbopackLoader.d.ts +0 -22
- package/dist/turbopackLoader.js +0 -2681
- package/dist/turbopackLoader.js.map +0 -1
- package/dist/vite.cjs +0 -105
- package/dist/vite.cjs.map +0 -1
- package/dist/vite.d.cts +0 -22
- package/dist/webpackLoader.cjs +0 -2670
- package/dist/webpackLoader.cjs.map +0 -1
- package/dist/webpackLoader.d.cts +0 -24
- package/dist/webpackLoader.d.ts +0 -24
- package/dist/webpackLoader.js +0 -2662
- package/dist/webpackLoader.js.map +0 -1
- /package/dist/{devtools.d.cts → devtools.d.mts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../packages/shared/src/nativeBinding.ts","../packages/shared/src/logger.ts","../packages/shared/src/index.ts","../packages/compiler/src/nativeBridge.ts","../packages/scanner/src/native-bridge.ts","../packages/compiler/src/classExtractor.ts","../packages/scanner/src/index.ts","../packages/scanner/src/cache-native.ts","../packages/analyzer/src/binding.ts","../packages/analyzer/src/utils.ts","../packages/analyzer/src/semantic.ts","../packages/analyzer/src/analyzeWorkspace.ts","../packages/analyzer/src/classToCss.ts","../packages/analyzer/src/index.ts"],"names":["os","path","fileURLToPath","createRequire","fs","log","runtimeDir","getNativeBridge","Worker","scanWorkspaceNative","formatErrorMessage","module","pathToFileURL"],"mappings":"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","file":"analyzer.js","sourcesContent":["import fs from \"node:fs\"\nimport { createRequire } from \"node:module\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nexport type PlatformExtension = \".node\" | \".dll\" | \".dylib\" | \".so\"\n\nexport function getPlatformExtension(): PlatformExtension {\n const platform = os.platform()\n switch (platform) {\n case \"win32\":\n return \".node\"\n case \"darwin\":\n return \".dylib\"\n case \"linux\":\n return \".so\"\n default:\n return \".node\"\n }\n}\n\nexport function checkNativeDisabled(): { disabled: boolean; reason: string | null } {\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_NATIVE === \"true\") {\n return {\n disabled: true,\n reason: \"Native bindings disabled via TWS_NO_NATIVE=1\",\n }\n }\n if (process.env.TWS_NO_RUST === \"1\" || process.env.TWS_NO_RUST === \"true\") {\n return {\n disabled: true,\n reason: \"Native bindings disabled via TWS_NO_RUST=1\",\n }\n }\n return { disabled: false, reason: null }\n}\n\nexport interface NativeBindingLoadError {\n path: string\n message: string\n}\n\nexport interface ResolveNativeBindingCandidatesOptions {\n runtimeDir: string\n envVarNames?: string[]\n enforceNodeExtensionForEnvPath?: boolean\n includeDefaultCandidates?: boolean\n platformExtension?: PlatformExtension\n}\n\nexport interface LoadNativeBindingOptions<T> {\n runtimeDir: string\n candidates: string[]\n isValid: (module: unknown) => module is T\n invalidExportMessage: string\n}\n\nexport interface LoadNativeBindingResult<T> {\n binding: T | null\n loadedPath: string | null\n loadErrors: NativeBindingLoadError[]\n}\n\nexport function formatErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nexport function resolveRuntimeDir(\n dirnameValue: string | undefined,\n moduleImportUrl: string\n): string {\n if (typeof dirnameValue === \"string\" && dirnameValue.length > 0) return dirnameValue\n return path.dirname(fileURLToPath(moduleImportUrl))\n}\n\nexport function resolveNativeBindingCandidates(\n options: ResolveNativeBindingCandidatesOptions\n): string[] {\n const out: string[] = []\n const envVarNames = options.envVarNames ?? [\"TWS_NATIVE_PATH\"]\n\n for (const envVarName of envVarNames) {\n const raw = process.env[envVarName]?.trim()\n if (!raw) continue\n const resolved = path.resolve(raw)\n\n if (options.enforceNodeExtensionForEnvPath) {\n if (path.extname(resolved).toLowerCase() !== \".node\") {\n throw new Error(\n `Invalid native binding path from ${envVarName}=\"${raw}\". Expected a .node file.`\n )\n }\n }\n\n out.push(resolved)\n }\n\n if (options.includeDefaultCandidates !== false) {\n const ext = options.platformExtension ?? getPlatformExtension()\n const defaultBindingName = `tailwind_styled_parser${ext}`\n\n out.push(path.resolve(process.cwd(), \"native\", defaultBindingName))\n out.push(path.resolve(options.runtimeDir, \"..\", \"..\", \"..\", \"native\", defaultBindingName))\n }\n\n return Array.from(new Set(out))\n}\n\nfunction parseDebugToken(namespace: string, token: string): boolean {\n if (token === \"*\" || token === namespace || token === \"tailwind-styled:*\") return true\n return token.endsWith(\"*\") && namespace.startsWith(token.slice(0, -1))\n}\n\nexport function isDebugNamespaceEnabled(namespace: string): boolean {\n if (process.env.TWS_DEBUG === \"1\" || process.env.TAILWIND_STYLED_DEBUG === \"1\") return true\n const raw = process.env.DEBUG\n if (!raw) return false\n\n return raw\n .split(\",\")\n .map((token) => token.trim())\n .some((token) => parseDebugToken(namespace, token))\n}\n\nexport function createDebugLogger(namespace: string, label = namespace): (message: string) => void {\n const debugEnabled = isDebugNamespaceEnabled(namespace)\n return (message: string) => {\n if (!debugEnabled) return\n console.debug(`[${label}] ${message}`)\n }\n}\n\nexport function loadNativeBinding<T>(\n options: LoadNativeBindingOptions<T>\n): LoadNativeBindingResult<T> {\n const req = createRequire(path.join(options.runtimeDir, \"noop.cjs\"))\n const loadErrors: NativeBindingLoadError[] = []\n\n for (const candidate of options.candidates) {\n if (!fs.existsSync(candidate)) continue\n try {\n const mod = req(candidate)\n if (options.isValid(mod)) {\n return {\n binding: mod,\n loadedPath: candidate,\n loadErrors,\n }\n }\n loadErrors.push({\n path: candidate,\n message: options.invalidExportMessage,\n })\n } catch (error) {\n loadErrors.push({\n path: candidate,\n message: formatErrorMessage(error),\n })\n }\n }\n\n return {\n binding: null,\n loadedPath: null,\n loadErrors,\n }\n}\n\nexport function loadNativeBindingOrThrow<T>(\n options: LoadNativeBindingOptions<T> & { bindingName: string }\n): T {\n const disabledCheck = checkNativeDisabled()\n if (disabledCheck.disabled) {\n throw new Error(\n `Native binding '${options.bindingName}' cannot be loaded.\\n${disabledCheck.reason}`\n )\n }\n\n const { bindingName, ...loadOptions } = options\n const { binding, loadErrors } = loadNativeBinding<T>(loadOptions)\n\n if (binding) {\n return binding\n }\n\n const lines = [\n `FATAL: Native binding '${bindingName}' not found.`,\n \"\",\n \"This package requires native Rust bindings.\",\n \"The binding was not found in any of these paths:\",\n ...loadOptions.candidates.map((p) => ` - ${p}`),\n \"\",\n ]\n\n if (loadErrors.length > 0) {\n lines.push(\"Load errors:\")\n for (const error of loadErrors) {\n lines.push(` - ${error.path}: ${error.message}`)\n }\n lines.push(\"\")\n }\n\n lines.push(\n \"Resolution steps:\",\n \"\",\n \"1. Build the native Rust module:\",\n \" npm run build:rust\",\n \"\",\n \"2. Or install pre-built binaries:\",\n \" npm install\",\n \"\",\n \"3. Override with environment variable:\",\n \" TWS_NATIVE_PATH=/path/to/tailwind_styled_parser.node\",\n \"\",\n \"4. Disable native bindings (use JS fallback):\",\n \" TWS_NO_NATIVE=1\",\n \"\",\n \"For CI/CD environments, ensure Rust toolchain is installed and\",\n \"'npm run build:rust' is executed before running tests or building.\"\n )\n\n throw new Error(lines.join(\"\\n\"))\n}\n","/**\n * Centralized logger — replaces scattered console.log/warn/error calls\n * across packages.\n */\nexport type LogLevel = \"silent\" | \"error\" | \"warn\" | \"info\" | \"debug\"\n\nconst LEVELS: Record<LogLevel, number> = { silent: 0, error: 1, warn: 2, info: 3, debug: 4 }\n\nfunction getEnvLevel(): LogLevel {\n const env = process.env.TWS_LOG_LEVEL?.toLowerCase()\n if (env && env in LEVELS) return env as LogLevel\n return process.env.TWS_DEBUG_SCANNER === \"1\" ? \"debug\" : \"info\"\n}\n\nexport interface Logger {\n error(...args: unknown[]): void\n warn(...args: unknown[]): void\n info(...args: unknown[]): void\n debug(...args: unknown[]): void\n setLevel(level: LogLevel): void\n}\n\nexport function createLogger(prefix: string, level?: LogLevel): Logger {\n let currentLevel = level ?? getEnvLevel()\n\n const log = (msgLevel: LogLevel, stream: \"stdout\" | \"stderr\", args: unknown[]) => {\n if (LEVELS[msgLevel] > LEVELS[currentLevel]) return\n const line = `[${prefix}] ${args.map(String).join(\" \")}\\n`\n process[stream].write(line)\n }\n\n return {\n error: (...a) => log(\"error\", \"stderr\", a),\n warn: (...a) => log(\"warn\", \"stderr\", a),\n info: (...a) => log(\"info\", \"stdout\", a),\n debug: (...a) => log(\"debug\", \"stderr\", a),\n setLevel: (l) => {\n currentLevel = l\n },\n }\n}\n\nexport const logger = createLogger(\"tailwind-styled\")\n","/**\n * @tailwind-styled/shared - Centralized utilities.\n */\n\nexport { LRUCache } from \"./cache\"\nexport {\n createDebugLogger,\n formatErrorMessage,\n isDebugNamespaceEnabled,\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n type LoadNativeBindingOptions,\n type LoadNativeBindingResult,\n type NativeBindingLoadError,\n type ResolveNativeBindingCandidatesOptions,\n} from \"./nativeBinding\"\nexport { logger, createLogger, type LogLevel } from \"./logger\"\nexport { hashContent, hashFile } from \"./hash\"\nexport { debounce, throttle } from \"./timing\"\nexport { parseVersion, satisfiesMinVersion } from \"./version\"\n","/**\n * tailwind-styled-v4 — NativeBridge\n *\n * Loads the native Rust engine (.node binding via index.mjs) and exposes\n * its functions to the JS compiler pipeline.\n *\n * The bridge is loaded lazily and cached. If the .node binary is not\n * present (e.g. the user hasn't built the Rust crate yet), every function\n * returns null and the pipeline falls through to the JS implementation.\n *\n * Environment flags:\n * TWS_NO_NATIVE=1 — disable native bridge entirely\n * TWS_NO_RUST=1 — alias for TWS_NO_NATIVE\n */\n\nimport { createRequire } from \"node:module\"\nimport path from \"node:path\"\n\nimport { createLogger } from \"@tailwind-styled/shared\"\nimport type { TransformResult } from \"./astTransform\"\n\n// ── Types returned by the Rust engine ────────────────────────────────────────\n\n/** Raw shape returned by Rust transform_source — napi auto-converts snake_case → camelCase */\nexport interface NativeTransformResult {\n code: string\n classes: string[]\n changed: boolean\n /** JSON string: { isServer: boolean, needsClientDirective: boolean } */\n rscJson?: string | null\n /** JSON string: ComponentMetadata[] */\n metadataJson?: string | null\n}\n\n/** Parsed from rscJson */\nexport interface NativeRscResult {\n isServer: boolean\n needsClientDirective: boolean\n}\n\n/** Metadata for one compound component, produced by Rust and consumed by @tailwind-styled/runtime */\nexport interface ComponentMetadata {\n component: string\n tag: string\n baseClass: string\n subComponents: Record<string, { tag: string; class: string }>\n}\n\n/** Full bridge interface — all members optional so feature detection is easy */\nexport interface NativeBridge {\n /** Parse individual class tokens. Throws if binding is unavailable. */\n parseClassesNative?: (input: string) => Array<{\n raw: string\n base: string\n variants: string[]\n modifierType?: string | null\n modifierValue?: string | null\n }>\n /** Fast pre-check — returns null if binding unavailable. */\n hasTwUsageNative?: (source: string) => boolean | null\n /** Idempotency guard — returns null if binding unavailable. */\n isAlreadyTransformedNative?: (source: string) => boolean | null\n /** RSC analysis — returns null if binding unavailable. */\n analyzeRscNative?: (\n source: string,\n filename?: string\n ) => { isServer: boolean; needsClientDirective: boolean; clientReasons: string[] } | null\n /** Full transform — returns null if binding unavailable (JS pipeline takes over). */\n transformSourceNative?: (\n source: string,\n opts: Record<string, unknown>\n ) => NativeTransformResult | null\n /** AST-based class extraction (Oxc+regex hybrid) */\n astExtractClassesNative?: (\n source: string,\n filename?: string\n ) => { classes: string[]; engine: string } | null\n /** Rust-based class extraction via regex */\n extractClassesFromSourceNative?: (source: string) => string[] | null\n /** Analyze class frequency - used for DSE */\n analyzeClassesNative?: (\n filesJson: string,\n root: string,\n topN: number\n ) => {\n root: string\n totalFiles: number\n uniqueClassCount: number\n totalClassOccurrences: number\n topClasses: Array<{ name: string; count: number }>\n duplicateCandidates: Array<{ name: string; count: number }>\n safelist: string[]\n } | null\n}\n\n// ── Bridge loader ─────────────────────────────────────────────────────────────\n\nconst runtimeDir = typeof __dirname === \"string\" && __dirname.length > 0 ? __dirname : process.cwd()\nconst requireFromRuntime =\n typeof module !== \"undefined\" && typeof module.require === \"function\"\n ? module.require.bind(module)\n : createRequire(path.join(runtimeDir, \"noop.cjs\"))\n\nlet cachedBridge: NativeBridge | null | undefined\nconst log = createLogger(\"compiler:native\")\n\nfunction tryRequire(id: string): NativeBridge | null {\n try {\n const mod = requireFromRuntime(id) as NativeBridge\n return mod ?? null\n } catch (error) {\n log.debug(\n `native bridge load miss ${id}: ${error instanceof Error ? error.message : String(error)}`\n )\n return null\n }\n}\n\n/**\n * Get the native bridge - THROWS if unavailable.\n *\n * v5 CHANGE: Previously returned null and fell back to JS pipeline.\n * Now throws an error to ensure native binding is always used.\n *\n * @throws Error if native binding is not available\n */\nexport function getNativeBridge(): NativeBridge {\n if (cachedBridge !== undefined) {\n if (cachedBridge === null) {\n throw new Error(\n `[tailwind-styled/compiler v5] Native binding is required but not available.\\n` +\n `Please ensure:\\n` +\n ` 1. The native module is properly installed\\n` +\n ` 2. You have run: npm run build:native (or use prebuilt binary)\\n` +\n ` 3. TWS_NO_NATIVE environment variable is not set\\n` +\n `\\n` +\n `For help, see: https://tailwind-styled.dev/docs/install`\n )\n }\n return cachedBridge\n }\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n cachedBridge = null\n throw new Error(\n `[tailwind-styled/compiler v5] Native binding is required.\\n` +\n `The TWS_NO_NATIVE or TWS_NO_RUST environment variable is set, which disables native binding.\\n` +\n `Please unset this environment variable to use the native compiler.`\n )\n }\n\n const candidates = [\n \"@tailwind-styled/native\",\n path.resolve(process.cwd(), \"native\", \"index.mjs\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"native\", \"index.mjs\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"index.mjs\"),\n path.resolve(process.cwd(), \"native\", \"index.node\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"native\", \"index.node\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"index.node\"),\n ]\n\n for (const candidate of candidates) {\n const bridge = tryRequire(candidate)\n if (bridge) {\n log.debug(`native bridge loaded from ${candidate}`)\n cachedBridge = bridge\n return cachedBridge\n }\n }\n\n // v5: Throw error instead of returning null\n cachedBridge = null\n throw new Error(\n `[tailwind-styled/compiler v5] Native binding not found.\\n` +\n `Tried loading from:\\n` +\n candidates.map((c) => ` - ${c}`).join(\"\\n\") +\n `\\n` +\n `\\n` +\n `Please build the native module:\\n` +\n ` npm run build:native\\n` +\n `\\n` +\n `Or install a prebuilt binary for your platform.`\n )\n}\n\nexport function resetNativeBridgeCache(): void {\n cachedBridge = undefined\n}\n\n// ── Result adapter ────────────────────────────────────────────────────────────\n// Converts the raw Rust NativeTransformResult into the canonical TransformResult\n// shape the rest of the JS pipeline expects, parsing JSON fields as needed.\n\nexport function adaptNativeResult(raw: NativeTransformResult): TransformResult & {\n metadata?: ComponentMetadata[]\n} {\n // Parse rscJson → rsc object\n let rsc: TransformResult[\"rsc\"] | undefined\n if (raw.rscJson) {\n try {\n const parsed = JSON.parse(raw.rscJson) as NativeRscResult\n rsc = {\n isServer: parsed.isServer,\n needsClientDirective: parsed.needsClientDirective,\n clientReasons: [],\n }\n } catch {\n // ignore malformed JSON\n }\n }\n\n // Parse metadataJson → ComponentMetadata[]\n let metadata: ComponentMetadata[] | undefined\n if (raw.metadataJson) {\n try {\n metadata = JSON.parse(raw.metadataJson) as ComponentMetadata[]\n } catch {\n // ignore malformed JSON\n }\n }\n\n return {\n code: raw.code,\n classes: raw.classes,\n changed: raw.changed,\n rsc,\n metadata,\n }\n}\n","/**\n * Scanner — Rust native bridge\n *\n * Wraps the Rust scan_workspace and extract_classes_from_source functions.\n * This module REQUIRES native Rust bindings and will FAIL LOUDLY if they are not available.\n * NO JavaScript fallback is provided.\n */\nimport { createRequire } from \"node:module\"\nimport path from \"node:path\"\n\ninterface NativeScannerBinding {\n scanWorkspace?: (\n root: string,\n extensions: string[] | null\n ) => {\n files: Array<{ file: string; classes: string[]; hash: string }>\n totalFiles: number\n uniqueClasses: string[] | null\n } | null\n extractClassesFromSource?: (source: string) => string[] | null\n hashFileContent?: (content: string) => string | null\n cacheRead?: (cachePath: string) => {\n entries: Array<{\n file: string\n classes: string[]\n hash: string\n mtimeMs: number\n size: number\n hitCount: number\n }>\n version: number\n } | null\n cacheWrite?: (\n cachePath: string,\n entries: Array<{\n file: string\n classes: string[]\n hash: string\n mtimeMs: number\n size: number\n hitCount: number\n }>\n ) => boolean\n cachePriority?: (\n mtimeMs: number,\n size: number,\n cachedMtimeMs: number,\n cachedSize: number,\n cachedHitCount: number,\n cachedLastSeenMs: number,\n nowMs: number\n ) => number\n}\n\nlet _binding: NativeScannerBinding | null | undefined = undefined\nlet _loadError: string | null = null\nlet _candidatePaths: string[] = []\n\nfunction getBinding(): NativeScannerBinding {\n if (_binding !== undefined) {\n if (_binding === null) {\n throwNativeBindingError()\n }\n return _binding\n }\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n _loadError = \"Native loading is disabled by TWS_NO_NATIVE or TWS_NO_RUST environment variable.\"\n _binding = null\n _candidatePaths = []\n throwNativeBindingError()\n }\n\n const runtimeDir = typeof __dirname === \"string\" ? __dirname : process.cwd()\n _candidatePaths = [\n path.resolve(process.cwd(), \"native\", \"tailwind_styled_parser.node\"),\n path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"),\n ]\n\n const req =\n typeof require === \"function\" ? require : createRequire(path.join(runtimeDir, \"noop.cjs\"))\n\n for (const c of _candidatePaths) {\n try {\n const mod = req(c) as NativeScannerBinding\n if (\n mod?.scanWorkspace ||\n mod?.extractClassesFromSource ||\n mod?.hashFileContent ||\n mod?.cacheRead ||\n mod?.cacheWrite\n ) {\n _binding = mod\n return _binding\n }\n } catch (error) {\n _loadError = error instanceof Error ? error.message : String(error)\n }\n }\n\n // No fallback - fail loudly\n _binding = null\n throwNativeBindingError()\n}\n\nfunction throwNativeBindingError(): never {\n const lines = [\n \"FATAL: Native scanner binding not found.\",\n \"\",\n \"This package requires the Rust native binding 'tailwind_styled_parser.node'.\",\n \"The binding was not found in any of these paths:\",\n ..._candidatePaths.map((p) => ` - ${p}`),\n \"\",\n ]\n\n if (_loadError) {\n lines.push(\"Load error:\", ` ${_loadError}`, \"\")\n }\n\n lines.push(\n \"To fix this, run:\",\n \" npm run build:rust\",\n \"\",\n \"This will build the native Rust module from the 'native/' directory.\",\n \"If you're using this package in a CI/CD environment, ensure Rust toolchain is installed\",\n \"and 'npm run build:rust' is executed before running tests or building.\"\n )\n\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport function scanWorkspaceNative(\n root: string,\n extensions?: string[]\n): ReturnType<NonNullable<NativeScannerBinding[\"scanWorkspace\"]>> {\n return getBinding().scanWorkspace!(root, extensions ?? null)\n}\n\nexport function extractClassesNative(source: string): string[] {\n const result = getBinding().extractClassesFromSource?.(source)\n if (result === null || result === undefined) {\n throw new Error(\"Native extractClassesFromSource returned null/undefined\")\n }\n return result\n}\n\nexport function hashContentNative(content: string): string {\n const result = getBinding().hashFileContent?.(content)\n if (result === null || result === undefined) {\n throw new Error(\"Native hashFileContent returned null/undefined\")\n }\n return result\n}\n\nexport function isRustCacheAvailable(): boolean {\n return true // We always require native binding now\n}\n\nexport function hasNativeScannerBinding(): boolean {\n try {\n getBinding()\n return true\n } catch {\n return false\n }\n}\n\nexport function cacheReadNative(\n cachePath: string\n): ReturnType<NonNullable<NativeScannerBinding[\"cacheRead\"]>> {\n const result = getBinding().cacheRead?.(cachePath)\n if (result === null || result === undefined) {\n throw new Error(\"Native cacheRead returned null/undefined\")\n }\n return result\n}\n\nexport function cacheWriteNative(\n cachePath: string,\n entries: Parameters<NonNullable<NativeScannerBinding[\"cacheWrite\"]>>[1]\n): boolean {\n const result = getBinding().cacheWrite?.(cachePath, entries)\n if (result === null || result === undefined) {\n throw new Error(\"Native cacheWrite returned null/undefined\")\n }\n return result\n}\n\nexport function cachePriorityNative(\n mtimeMs: number,\n size: number,\n cachedMtimeMs: number,\n cachedSize: number,\n cachedHitCount: number,\n cachedLastSeenMs: number,\n nowMs = Date.now()\n): number {\n const result = getBinding().cachePriority?.(\n mtimeMs,\n size,\n cachedMtimeMs,\n cachedSize,\n cachedHitCount,\n cachedLastSeenMs,\n nowMs\n )\n if (result === null || result === undefined) {\n throw new Error(\"Native cachePriority returned null/undefined\")\n }\n return result\n}\n","/**\n * tailwind-styled-v4 — classExtractor\n *\n * FIX #02: Remove .slice(0, -1) workaround for broken TEMPLATE_RE.\n * TEMPLATE_RE trailing space is now fixed in twDetector.ts.\n *\n * Ekstrak semua Tailwind class dari source untuk safelist generation.\n */\n\nimport { parseComponentConfig } from \"./astParser\"\nimport { EXTEND_RE, OBJECT_RE, TEMPLATE_RE } from \"./twDetector\"\n\nconst VALID_CLASS_RE = /^[-a-z0-9:/[\\]!.()+%]+$/\nconst TEMPLATE_SCAN_RE = new RegExp(TEMPLATE_RE.source, \"g\")\nconst OBJECT_SCAN_RE = new RegExp(OBJECT_RE.source, \"g\")\nconst EXTEND_SCAN_RE = new RegExp(EXTEND_RE.source, \"g\")\nconst CLASS_NAME_RE = /className\\s*=\\s*[\"']([^\"']+)[\"']/g\n\nfunction resetRegex(regex: RegExp): void {\n regex.lastIndex = 0\n}\n\nfunction parseClasses(raw: string): string[] {\n const parsed: string[] = []\n\n for (const token of raw.split(/[\\n\\s]+/)) {\n if (!token) continue\n const normalized = token.trim()\n if (!normalized || !VALID_CLASS_RE.test(normalized)) continue\n parsed.push(normalized)\n }\n\n return parsed\n}\n\n/**\n * Extract all Tailwind classes from source code.\n *\n * v5 CHANGE: Now THROWS if native binding is unavailable.\n * Previously fell back to JS implementation.\n *\n * @param source - Source code to extract classes from\n * @returns Array of unique class names (sorted)\n * @throws Error if native binding is not available\n */\nexport function extractAllClasses(source: string): string[] {\n // v5: Use native bridge - throws if unavailable\n const { getNativeBridge } = require(\"./nativeBridge\") as typeof import(\"./nativeBridge\")\n const native = getNativeBridge() // throws if binding unavailable\n\n // v5: Native is required - throw if method not available\n if (!native?.extractClassesFromSourceNative) {\n throw new Error(\n `[tailwind-styled/compiler v5] extractClassesFromSourceNative is required but not available.\\n` +\n `Please ensure the native module is properly built.`\n )\n }\n\n const result = native.extractClassesFromSourceNative(source)\n if (!result || result.length < 0) {\n throw new Error(\n `[tailwind-styled/compiler v5] extractClassesFromSourceNative returned invalid result.`\n )\n }\n\n return result.sort()\n}\n\nexport { parseClasses }\n// Re-export for backward compat — now use parseComponentConfig from astParser\nexport function extractBaseFromObject(objectStr: string): string {\n return parseComponentConfig(objectStr).base\n}\nexport function extractVariantsFromObject(\n objectStr: string\n): Record<string, Record<string, string>> {\n return parseComponentConfig(objectStr).variants\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { Worker } from \"node:worker_threads\"\n\nimport { extractAllClasses } from \"@tailwind-styled/compiler\"\nimport { createLogger } from \"@tailwind-styled/shared\"\nimport { filePriority, type NativeCacheEntry, readCache, writeCache } from \"./cache-native\"\nimport { hashContentNative, isRustCacheAvailable } from \"./native-bridge\"\n\nconst log = createLogger(\"scanner\")\n\nconst SCAN_WORKER_TIMEOUT_MS = 120_000\nconst SCAN_WORKER_BOOTSTRAP = `\nconst { parentPort, workerData } = require(\"node:worker_threads\")\ntry {\n const scanner = require(workerData.modulePath)\n const result = scanner.scanWorkspace(workerData.rootDir, workerData.options ?? {})\n parentPort.postMessage({ ok: true, result })\n} catch (error) {\n parentPort.postMessage({\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n })\n}\n`\n\ntype NativeParsedClass = { raw?: string }\ntype NativeParserBinding = { parse_classes?: (input: string) => NativeParsedClass[] }\n\nlet nativeParserBinding: NativeParserBinding | null | undefined\nlet nativeParserInitError: string | null = null\n\nfunction canUseCjsRequire(): boolean {\n return typeof require === \"function\"\n}\n\nfunction debugNative(message: string): void {\n log.debug(`[native] ${message}`)\n}\n\nfunction loadNativeParserBinding(): NativeParserBinding | null {\n if (nativeParserBinding !== undefined) return nativeParserBinding\n\n if (!canUseCjsRequire()) {\n nativeParserBinding = null\n nativeParserInitError = \"require is unavailable in current module format\"\n debugNative(`fallback to JS: ${nativeParserInitError}`)\n return nativeParserBinding\n }\n\n const candidates = [\n path.resolve(process.cwd(), \"native/tailwind_styled_parser.node\"),\n path.resolve(process.cwd(), \"native/build/Release/tailwind_styled_parser.node\"),\n ]\n\n for (const fullPath of candidates) {\n if (!fs.existsSync(fullPath)) continue\n try {\n const required = require(fullPath) as NativeParserBinding\n if (required && typeof required.parse_classes === \"function\") {\n nativeParserBinding = required\n debugNative(`using native parser from ${fullPath}`)\n return nativeParserBinding\n }\n } catch (error) {\n nativeParserInitError = error instanceof Error ? error.message : String(error)\n }\n }\n\n nativeParserBinding = null\n if (!nativeParserInitError) {\n nativeParserInitError = \"native .node binding not found\"\n }\n debugNative(`fallback to JS: ${nativeParserInitError}`)\n return nativeParserBinding\n}\n\nfunction normalizeWithNativeParser(tokens: string[]): string[] {\n const binding = loadNativeParserBinding()\n if (!binding || typeof binding.parse_classes !== \"function\") {\n throw new Error(\n \"Native parser binding is required but not available. Run 'npm run build:rust' to build it.\"\n )\n }\n\n try {\n const parsed = binding.parse_classes(tokens.join(\" \"))\n const normalized = parsed.map((item) => item.raw?.trim() ?? \"\").filter(Boolean)\n return Array.from(new Set(normalized))\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Native parser failed: ${errorMessage}. Run 'npm run build:rust' to rebuild.`)\n }\n}\n\nexport interface ScanWorkspaceOptions {\n includeExtensions?: string[]\n ignoreDirectories?: string[]\n useCache?: boolean\n cacheDir?: string\n smartInvalidation?: boolean\n}\n\nexport interface ScanFileResult {\n file: string\n classes: string[]\n}\n\nexport interface ScanWorkspaceResult {\n files: ScanFileResult[]\n totalFiles: number\n uniqueClasses: string[]\n}\n\nexport const DEFAULT_EXTENSIONS = [\".js\", \".jsx\", \".ts\", \".tsx\", \".mjs\", \".cjs\"]\nexport const DEFAULT_IGNORES = [\"node_modules\", \".git\", \".next\", \"dist\", \"out\", \".turbo\", \".cache\"]\n\nfunction resolveScannerWorkerModulePath(): string | null {\n const runtimeDir =\n typeof __dirname === \"string\" && __dirname.length > 0\n ? __dirname\n : path.dirname(fileURLToPath(import.meta.url))\n\n const candidates = [\n path.resolve(runtimeDir, \"index.cjs\"),\n path.resolve(runtimeDir, \"index.js\"),\n path.resolve(runtimeDir, \"index.ts\"),\n ]\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate\n }\n\n return null\n}\n\nfunction scanWorkspaceInWorker(\n rootDir: string,\n options: ScanWorkspaceOptions\n): Promise<ScanWorkspaceResult> {\n const modulePath = resolveScannerWorkerModulePath()\n if (!modulePath) {\n return Promise.reject(new Error(\"scanner worker module path could not be resolved\"))\n }\n\n return new Promise((resolve, reject) => {\n let settled = false\n\n const worker = new Worker(SCAN_WORKER_BOOTSTRAP, {\n eval: true,\n workerData: { modulePath, rootDir, options },\n })\n\n const timeout = setTimeout(() => {\n if (settled) return\n settled = true\n void worker.terminate()\n reject(new Error(`scanner worker timed out after ${SCAN_WORKER_TIMEOUT_MS}ms`))\n }, SCAN_WORKER_TIMEOUT_MS)\n\n const finish = (callback: () => void) => {\n if (settled) return\n settled = true\n clearTimeout(timeout)\n callback()\n }\n\n worker.once(\"message\", (payload: unknown) => {\n const message = payload as\n | { ok: true; result: ScanWorkspaceResult }\n | { ok: false; error?: string }\n finish(() => {\n if (message?.ok) {\n resolve(message.result)\n return\n }\n reject(new Error(message?.error ?? \"scanner worker failed without an error message\"))\n })\n })\n\n worker.once(\"error\", (error) => {\n finish(() => reject(error))\n })\n\n worker.once(\"exit\", (code) => {\n if (code !== 0) {\n finish(() => reject(new Error(`scanner worker exited with code ${code}`)))\n }\n })\n })\n}\n\nfunction buildExtensionSet(includeExtensions: string[]): Set<string> {\n return new Set(includeExtensions)\n}\n\nfunction collectCandidates(\n rootDir: string,\n ignoreDirectories: Set<string>,\n extensionSet: Set<string>\n): string[] {\n const candidates: string[] = []\n const directories = [rootDir]\n\n while (directories.length > 0) {\n const currentDir = directories.pop()\n if (!currentDir) continue\n\n let entries: fs.Dirent[] = []\n try {\n entries = fs.readdirSync(currentDir, { withFileTypes: true })\n } catch {\n continue\n }\n\n for (const entry of entries) {\n const fullPath = path.join(currentDir, entry.name)\n\n if (entry.isDirectory()) {\n if (!ignoreDirectories.has(entry.name)) directories.push(fullPath)\n continue\n }\n\n if (!entry.isFile()) continue\n if (!extensionSet.has(path.extname(entry.name))) continue\n candidates.push(fullPath)\n }\n }\n\n return candidates\n}\n\nfunction toCacheSize(size: number): number {\n if (!Number.isFinite(size)) return 0\n const normalized = Math.max(0, Math.trunc(size))\n return Math.min(normalized, 0xffffffff)\n}\n\nfunction extractClassesJs(source: string): string[] {\n return extractAllClasses(source)\n}\n\nexport function scanSource(source: string): string[] {\n const nativeBinding = loadNativeParserBinding()\n if (nativeBinding && typeof nativeBinding.parse_classes === \"function\") {\n try {\n const baseClasses = extractClassesJs(source)\n const nativeNormalized = normalizeWithNativeParser(baseClasses)\n return nativeNormalized\n } catch (error) {\n throw error\n }\n }\n\n throw new Error(\n \"Native parser binding is required but not available. Run 'npm run build:rust' to build it.\"\n )\n}\n\nexport function isScannableFile(filePath: string, includeExtensions = DEFAULT_EXTENSIONS): boolean {\n return includeExtensions.includes(path.extname(filePath))\n}\n\nexport function scanFile(filePath: string): ScanFileResult {\n const source = fs.readFileSync(filePath, \"utf8\")\n const hash = hashContentNative(source) ?? undefined\n return {\n file: filePath,\n classes: scanSource(source),\n ...(hash ? { hash } : {}),\n }\n}\n\nexport function scanWorkspace(\n rootDir: string,\n options: ScanWorkspaceOptions = {}\n): ScanWorkspaceResult {\n const includeExtensions = options.includeExtensions ?? DEFAULT_EXTENSIONS\n const extensionSet = buildExtensionSet(includeExtensions)\n const ignoreDirectories = new Set(options.ignoreDirectories ?? DEFAULT_IGNORES)\n const useCache = options.useCache ?? true\n const smartInvalidation = options.smartInvalidation ?? true\n\n const files: ScanFileResult[] = []\n const unique = new Set<string>()\n const candidates = collectCandidates(rootDir, ignoreDirectories, extensionSet)\n\n const processResult = (result: ScanFileResult) => {\n files.push(result)\n for (const cls of result.classes) unique.add(cls)\n }\n\n const { scanWorkspaceNative } = require(\"./native-bridge\")\n\n if (!options.cacheDir && !useCache) {\n const nativeResult = scanWorkspaceNative(rootDir, includeExtensions)\n if (nativeResult) {\n return {\n files: nativeResult.files.map((f: { file: string; classes: string[] }) => ({\n file: f.file,\n classes: f.classes,\n })),\n totalFiles: nativeResult.totalFiles,\n uniqueClasses: nativeResult.uniqueClasses,\n }\n }\n }\n\n if (useCache && isRustCacheAvailable()) {\n let cacheEntries: NativeCacheEntry[] = []\n try {\n cacheEntries = readCache(rootDir, options.cacheDir)\n } catch (error) {\n cacheEntries = []\n log.debug(\n `cache read failed, continuing without persisted cache: ${\n error instanceof Error ? error.message : String(error)\n }`\n )\n }\n\n const cacheMap = new Map(cacheEntries.map((entry) => [entry.file, entry]))\n const nowMs = Date.now()\n const ranked: Array<{\n filePath: string\n stat: fs.Stats\n size: number\n cached?: NativeCacheEntry\n priority: number\n }> = []\n\n for (const filePath of candidates) {\n let stat: fs.Stats\n try {\n stat = fs.statSync(filePath)\n } catch {\n continue\n }\n\n const size = toCacheSize(stat.size)\n const cached = cacheMap.get(filePath)\n const priority = filePriority(\n stat.mtimeMs,\n size,\n cached\n ? {\n mtimeMs: cached.mtimeMs,\n size: cached.size,\n hitCount: cached.hitCount,\n lastSeenMs: 0,\n }\n : undefined,\n nowMs\n )\n\n ranked.push({ filePath, stat, size, cached, priority })\n }\n\n ranked.sort((a, b) => b.priority - a.priority)\n\n const updatedEntries: NativeCacheEntry[] = []\n\n for (const { filePath, stat, size, cached } of ranked) {\n let content: string\n try {\n content = fs.readFileSync(filePath, \"utf8\")\n } catch {\n continue\n }\n\n const hash = hashContentNative(content)\n if (\n cached &&\n cached.hash === hash &&\n cached.mtimeMs === stat.mtimeMs &&\n cached.size === size\n ) {\n log.debug(`cache HIT ${filePath}`)\n processResult({ file: filePath, classes: cached.classes })\n updatedEntries.push({\n file: filePath,\n classes: cached.classes,\n hash: cached.hash,\n mtimeMs: stat.mtimeMs,\n size,\n hitCount: (cached.hitCount ?? 0) + 1,\n })\n continue\n }\n\n log.debug(`cache MISS ${filePath}`)\n const classes = scanSource(content)\n processResult({ file: filePath, classes })\n updatedEntries.push({\n file: filePath,\n classes,\n hash,\n mtimeMs: stat.mtimeMs,\n size,\n hitCount: 1,\n })\n }\n\n try {\n writeCache(rootDir, updatedEntries, options.cacheDir)\n } catch (error) {\n log.debug(`cache write failed: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n return {\n files,\n totalFiles: files.length,\n uniqueClasses: Array.from(unique).sort(),\n }\n }\n\n for (const filePath of candidates) {\n processResult(scanFile(filePath))\n }\n\n return {\n files,\n totalFiles: files.length,\n uniqueClasses: Array.from(unique).sort(),\n }\n}\n\nexport async function scanWorkspaceAsync(\n rootDir: string,\n options: ScanWorkspaceOptions = {}\n): Promise<ScanWorkspaceResult> {\n if (process.env.TWS_DISABLE_SCANNER_WORKER === \"1\") {\n return scanWorkspace(rootDir, options)\n }\n\n try {\n return await scanWorkspaceInWorker(rootDir, options)\n } catch (error) {\n log.debug(\n `worker scan failed, falling back to sync scanner: ${\n error instanceof Error ? error.message : String(error)\n }`\n )\n return scanWorkspace(rootDir, options)\n }\n}\n","/**\n * tailwind-styled-v4 — Scanner Cache (Rust-backed)\n *\n * This module REQUIRES native Rust bindings and will FAIL LOUDLY if they are not available.\n * NO JavaScript fallback is provided.\n */\n\nimport path from \"node:path\"\nimport { cachePriorityNative, cacheReadNative, cacheWriteNative } from \"./native-bridge\"\n\nfunction defaultCachePath(rootDir: string, cacheDir?: string): string {\n const dir = cacheDir\n ? path.resolve(rootDir, cacheDir)\n : path.join(process.cwd(), \".cache\", \"tailwind-styled\")\n return path.join(dir, \"scanner-cache.json\")\n}\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport interface NativeCacheEntry {\n file: string\n classes: string[]\n hash: string\n mtimeMs: number\n size: number\n hitCount: number\n}\n\n/**\n * Read scanner cache from disk using Rust parser.\n * REQUIRES native binding - throws if unavailable.\n */\nexport function readCache(rootDir: string, cacheDir?: string): NativeCacheEntry[] {\n const cachePath = defaultCachePath(rootDir, cacheDir)\n\n const result = cacheReadNative(cachePath)\n return result.entries.map((e) => ({\n file: e.file,\n classes: e.classes,\n hash: e.hash,\n mtimeMs: e.mtimeMs,\n size: e.size,\n hitCount: e.hitCount,\n }))\n}\n\n/**\n * Write scanner cache to disk using Rust serialiser.\n * REQUIRES native binding - throws if unavailable.\n */\nexport function writeCache(rootDir: string, entries: NativeCacheEntry[], cacheDir?: string): void {\n const cachePath = defaultCachePath(rootDir, cacheDir)\n\n const success = cacheWriteNative(cachePath, entries)\n if (!success) {\n throw new Error(\n \"Native cacheWrite failed. Run 'npm run build:rust' to rebuild native bindings.\"\n )\n }\n}\n\n/**\n * Compute priority score for a file using the Rust SmartCache algorithm.\n * Higher = process first.\n * REQUIRES native binding - throws if unavailable.\n */\nexport function filePriority(\n mtimeMs: number,\n size: number,\n cached: { mtimeMs: number; size: number; hitCount: number; lastSeenMs?: number } | undefined,\n nowMs = Date.now()\n): number {\n return cachePriorityNative(\n mtimeMs,\n size,\n cached?.mtimeMs ?? 0,\n cached?.size ?? 0,\n cached?.hitCount ?? 0,\n cached?.lastSeenMs ?? 0,\n nowMs\n )\n}\n","import {\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n} from \"@tailwind-styled/shared\"\n\nimport type { NativeAnalyzerBinding, NativeCssCompilerBinding } from \"./types\"\nimport { debugLog } from \"./utils\"\n\nlet bindingCache: NativeAnalyzerBinding | null | undefined\nlet bindingCandidateCache: string[] = []\nlet bindingLoadErrorsCache: Array<{ path: string; message: string }> = []\nlet loadedBindingPathCache: string | null = null\n\nfunction isAnalyzerModule(module: unknown): module is NativeAnalyzerBinding {\n const candidate = module as Partial<NativeAnalyzerBinding> | null | undefined\n return typeof candidate?.analyzeClasses === \"function\"\n}\n\nexport function getNativeBinding(): NativeAnalyzerBinding | null {\n if (bindingCache !== undefined) return bindingCache\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n bindingCandidateCache = []\n bindingLoadErrorsCache = []\n loadedBindingPathCache = null\n debugLog(\"native binding disabled by TWS_NO_NATIVE/TWS_NO_RUST\")\n bindingCache = null\n return bindingCache\n }\n\n const runtimeDir = resolveRuntimeDir(\n typeof __dirname === \"string\" ? __dirname : undefined,\n import.meta.url\n )\n const candidates = resolveNativeBindingCandidates({\n runtimeDir,\n envVarNames: [\"TWS_NATIVE_PATH\"],\n })\n\n const { binding, loadErrors, loadedPath } = loadNativeBinding<NativeAnalyzerBinding>({\n runtimeDir,\n candidates,\n isValid: isAnalyzerModule,\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\n })\n\n bindingCandidateCache = candidates\n bindingLoadErrorsCache = loadErrors\n loadedBindingPathCache = loadedPath\n\n if (binding) {\n debugLog(`native binding loaded from: ${loadedPath}`)\n bindingCache = binding\n return bindingCache\n }\n\n if (bindingLoadErrorsCache.length > 0) {\n debugLog(\n `native binding load failed for ${bindingLoadErrorsCache.length} candidate(s): ${bindingLoadErrorsCache\n .map((entry) => `${entry.path} (${entry.message})`)\n .join(\"; \")}`\n )\n } else {\n debugLog(\"native binding not found in any candidate path\")\n }\n\n bindingCache = null\n return bindingCache\n}\n\nexport function requireNativeBinding(): NativeAnalyzerBinding {\n const binding = getNativeBinding()\n if (binding?.analyzeClasses) return binding\n\n const lines = [\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\",\n ]\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n lines.push(\"Native loading is disabled by TWS_NO_NATIVE/TWS_NO_RUST.\")\n } else {\n lines.push(\"Checked paths:\")\n for (const candidate of bindingCandidateCache) lines.push(`- ${candidate}`)\n if (bindingLoadErrorsCache.length > 0) {\n lines.push(\"Load errors:\")\n for (const failure of bindingLoadErrorsCache) {\n lines.push(`- ${failure.path}: ${failure.message}`)\n }\n }\n }\n\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport function requireNativeCssCompiler(): NativeCssCompilerBinding {\n const binding = requireNativeBinding() as NativeCssCompilerBinding\n if (typeof binding.compileCss === \"function\") return binding\n\n const loadedPathText = loadedBindingPathCache ? ` (${loadedBindingPathCache})` : \"\"\n throw new Error(`Native analyzer compileCss binding is missing in v5${loadedPathText}.`)\n}\n","import fs from \"node:fs\"\nimport { createDebugLogger } from \"@tailwind-styled/shared\"\n\nexport const DEFAULT_TOP_LIMIT = 10\nexport const DEFAULT_FREQUENT_THRESHOLD = 2\nexport const DEBUG_NAMESPACE = \"tailwind-styled:analyzer\"\n\nexport function formatErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport async function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.promises.access(filePath, fs.constants.F_OK)\n return true\n } catch {\n return false\n }\n}\n\nexport const debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\")\n\nexport function sanitizeTopLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT\n return Math.max(1, Math.trunc(value as number))\n}\n\nexport function sanitizeFrequentThreshold(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD\n return Math.max(1, Math.trunc(value as number))\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { pathToFileURL } from \"node:url\"\n\nimport type {\n AnalyzerSemanticReport,\n ClassConflict,\n ClassUsage,\n LoadedTailwindConfig,\n TailwindConfigCacheEntry,\n} from \"./types\"\nimport { debugLog, formatErrorMessage, isRecord, pathExists } from \"./utils\"\n\nconst SUPPORTED_TAILWIND_CONFIG_EXTENSIONS = new Set([\".ts\", \".js\", \".cjs\", \".mjs\"])\nconst KNOWN_UTILITY_PREFIXES = new Set([\n \"absolute\",\n \"align\",\n \"animate\",\n \"arbitrary\",\n \"aspect\",\n \"backdrop\",\n \"basis\",\n \"bg\",\n \"block\",\n \"border\",\n \"bottom\",\n \"col\",\n \"container\",\n \"contents\",\n \"cursor\",\n \"dark\",\n \"display\",\n \"divide\",\n \"fill\",\n \"fixed\",\n \"flex\",\n \"float\",\n \"font\",\n \"from\",\n \"gap\",\n \"grid\",\n \"grow\",\n \"h\",\n \"hidden\",\n \"inset\",\n \"inline\",\n \"isolate\",\n \"items\",\n \"justify\",\n \"left\",\n \"leading\",\n \"line\",\n \"list\",\n \"m\",\n \"max-h\",\n \"max-w\",\n \"mb\",\n \"min-h\",\n \"min-w\",\n \"ml\",\n \"mr\",\n \"mt\",\n \"mx\",\n \"my\",\n \"object\",\n \"opacity\",\n \"order\",\n \"origin\",\n \"outline\",\n \"overflow\",\n \"overscroll\",\n \"p\",\n \"pb\",\n \"pe\",\n \"perspective\",\n \"place\",\n \"pl\",\n \"pointer\",\n \"position\",\n \"pr\",\n \"ps\",\n \"pt\",\n \"px\",\n \"py\",\n \"relative\",\n \"right\",\n \"ring\",\n \"rotate\",\n \"rounded\",\n \"row\",\n \"scale\",\n \"shadow\",\n \"shrink\",\n \"size\",\n \"skew\",\n \"snap\",\n \"space-x\",\n \"space-y\",\n \"sr\",\n \"start\",\n \"static\",\n \"sticky\",\n \"stroke\",\n \"table\",\n \"text\",\n \"to\",\n \"top\",\n \"touch\",\n \"tracking\",\n \"transform\",\n \"transition\",\n \"translate\",\n \"truncate\",\n \"underline\",\n \"via\",\n \"visible\",\n \"w\",\n \"whitespace\",\n \"z\",\n])\n\nconst tailwindConfigCache = new Map<string, TailwindConfigCacheEntry>()\n\nexport function splitVariantAndBase(className: string): { variantKey: string; base: string } {\n const parts = className.split(\":\")\n if (parts.length <= 1) return { variantKey: \"\", base: className }\n const base = parts.pop() ?? className\n return { variantKey: parts.join(\":\"), base }\n}\n\nfunction isArbitraryUtility(baseClass: string): boolean {\n return baseClass.includes(\"[\") && baseClass.includes(\"]\")\n}\n\nexport function resolveConflictGroup(base: string): string | null {\n if (isArbitraryUtility(base)) return null\n if ([\"block\", \"inline\", \"inline-block\", \"inline-flex\", \"flex\", \"grid\", \"hidden\"].includes(base))\n return \"display\"\n if (base.startsWith(\"bg-\")) return \"bg\"\n if (base.startsWith(\"text-\")) return \"text\"\n if (base.startsWith(\"font-\")) return \"font\"\n if (base.startsWith(\"rounded\")) return \"rounded\"\n if (base.startsWith(\"shadow\")) return \"shadow\"\n if (base.startsWith(\"border-\")) return \"border\"\n if (base.startsWith(\"opacity-\")) return \"opacity\"\n if (base.startsWith(\"w-\") || base.startsWith(\"min-w-\") || base.startsWith(\"max-w-\"))\n return \"width\"\n if (base.startsWith(\"h-\") || base.startsWith(\"min-h-\") || base.startsWith(\"max-h-\"))\n return \"height\"\n if (base.startsWith(\"p-\") || base.startsWith(\"px-\") || base.startsWith(\"py-\")) return \"padding\"\n if (base.startsWith(\"m-\") || base.startsWith(\"mx-\") || base.startsWith(\"my-\")) return \"margin\"\n return null\n}\n\nfunction detectConflicts(usages: ClassUsage[]): {\n conflicts: ClassConflict[]\n conflictedClassNames: Set<string>\n} {\n const buckets = new Map<string, { variantKey: string; group: string; classes: Set<string> }>()\n\n for (const usage of usages) {\n const { variantKey, base } = splitVariantAndBase(usage.name)\n const group = resolveConflictGroup(base)\n if (!group) continue\n\n const key = `${variantKey}::${group}`\n const bucket = buckets.get(key) ?? {\n variantKey,\n group,\n classes: new Set<string>(),\n }\n bucket.classes.add(usage.name)\n buckets.set(key, bucket)\n }\n\n const conflicts: ClassConflict[] = []\n const conflictedClassNames = new Set<string>()\n\n for (const bucket of buckets.values()) {\n if (bucket.classes.size <= 1) continue\n const classes = Array.from(bucket.classes).sort()\n for (const className of classes) conflictedClassNames.add(className)\n\n const variantLabel = bucket.variantKey.length > 0 ? bucket.variantKey : \"base\"\n conflicts.push({\n className: bucket.group,\n variants: bucket.variantKey.length > 0 ? bucket.variantKey.split(\":\") : [],\n classes,\n message: `Multiple ${bucket.group} utilities detected for \"${variantLabel}\".`,\n })\n }\n\n conflicts.sort((left, right) => {\n if (right.classes.length !== left.classes.length)\n return right.classes.length - left.classes.length\n return left.className.localeCompare(right.className)\n })\n\n return { conflicts, conflictedClassNames }\n}\n\nfunction isSupportedTailwindConfigPath(configPath: string): boolean {\n return SUPPORTED_TAILWIND_CONFIG_EXTENSIONS.has(path.extname(configPath).toLowerCase())\n}\n\nasync function resolveTailwindConfigPath(\n root: string,\n explicitPath?: string\n): Promise<string | null> {\n if (explicitPath) {\n const resolved = path.resolve(root, explicitPath)\n if (!(await pathExists(resolved))) return null\n return resolved\n }\n\n const candidates = [\n \"tailwind.config.ts\",\n \"tailwind.config.js\",\n \"tailwind.config.cjs\",\n \"tailwind.config.mjs\",\n ]\n\n for (const candidate of candidates) {\n const fullPath = path.resolve(root, candidate)\n if (await pathExists(fullPath)) return fullPath\n }\n\n return null\n}\n\nfunction collectSafelistFromConfig(config: Record<string, unknown>): string[] {\n const raw = config.safelist\n if (!Array.isArray(raw)) return []\n\n const out = new Set<string>()\n for (const entry of raw) {\n if (typeof entry === \"string\" && entry.length > 0) {\n out.add(entry)\n continue\n }\n if (!entry || typeof entry !== \"object\") continue\n const pattern = (entry as Record<string, unknown>).pattern\n if (typeof pattern === \"string\" && pattern.length > 0) {\n out.add(pattern)\n }\n }\n\n return Array.from(out)\n}\n\nfunction collectCustomUtilities(config: Record<string, unknown>): Set<string> {\n const out = new Set<string>()\n const theme = config.theme\n if (!theme || typeof theme !== \"object\") return out\n\n const extend = (theme as Record<string, unknown>).extend\n if (!extend || typeof extend !== \"object\") return out\n\n for (const [section, value] of Object.entries(extend as Record<string, unknown>)) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) continue\n for (const key of Object.keys(value as Record<string, unknown>)) {\n out.add(`${section}-${key}`)\n if (section === \"colors\") {\n out.add(`bg-${key}`)\n out.add(`text-${key}`)\n out.add(`border-${key}`)\n } else if (section === \"spacing\") {\n out.add(`p-${key}`)\n out.add(`m-${key}`)\n out.add(`gap-${key}`)\n out.add(`w-${key}`)\n out.add(`h-${key}`)\n } else if (section === \"fontSize\") {\n out.add(`text-${key}`)\n } else if (section === \"borderRadius\") {\n out.add(`rounded-${key}`)\n } else if (section === \"boxShadow\") {\n out.add(`shadow-${key}`)\n }\n }\n }\n\n return out\n}\n\nasync function collectSafelistFromSource(configPath: string): Promise<string[]> {\n const source = await fs.promises.readFile(configPath, \"utf8\")\n const safelistBlock = source.match(/safelist\\s*:\\s*\\[([\\s\\S]*?)\\]/m)?.[1]\n if (!safelistBlock) return []\n\n const out = new Set<string>()\n const tokenRegex = /[\"'`]([^\"'`]+)[\"'`]/g\n let token = tokenRegex.exec(safelistBlock)\n while (token) {\n const value = token[1].trim()\n if (value.length > 0) out.add(value)\n token = tokenRegex.exec(safelistBlock)\n }\n return Array.from(out)\n}\n\nasync function loadTailwindConfig(\n root: string,\n semanticOption?: { tailwindConfigPath?: string }\n): Promise<LoadedTailwindConfig | null> {\n const startMs = Date.now()\n const configPath = await resolveTailwindConfigPath(root, semanticOption?.tailwindConfigPath)\n if (!configPath) return null\n\n if (!isSupportedTailwindConfigPath(configPath)) {\n return {\n path: configPath,\n loaded: false,\n warning: `Unsupported Tailwind config extension at \"${configPath}\". Supported extensions: .ts, .js, .cjs, .mjs.`,\n safelist: new Set<string>(),\n customUtilities: new Set<string>(),\n }\n }\n\n const configStat = await fs.promises.stat(configPath).catch(() => null)\n if (configStat) {\n const cached = tailwindConfigCache.get(configPath)\n if (cached && cached.mtimeMs === configStat.mtimeMs && cached.size === configStat.size) {\n debugLog(\n `tailwind config cache hit: ${configPath} (${cached.config.safelist.size} safelist entries)`\n )\n return cached.config\n }\n }\n\n let config: Record<string, unknown> | null = null\n let warning: string | undefined\n\n try {\n const cacheBustToken = Math.trunc(configStat?.mtimeMs ?? Date.now())\n const imported = await import(`${pathToFileURL(configPath).href}?tws_mtime=${cacheBustToken}`)\n const candidate = (imported.default ?? imported) as unknown\n if (isRecord(candidate)) {\n config = candidate\n } else if (typeof candidate === \"function\") {\n const evaluated = candidate()\n if (isRecord(evaluated)) {\n config = evaluated\n } else {\n warning = \"Tailwind config export function must return an object.\"\n }\n } else {\n warning = \"Tailwind config export must be an object or a function returning an object.\"\n }\n } catch (error) {\n warning = formatErrorMessage(error)\n }\n\n const safelist = new Set<string>()\n const customUtilities = new Set<string>()\n\n if (config) {\n for (const item of collectSafelistFromConfig(config)) safelist.add(item)\n for (const item of collectCustomUtilities(config)) customUtilities.add(item)\n }\n\n if (safelist.size === 0) {\n try {\n for (const item of await collectSafelistFromSource(configPath)) safelist.add(item)\n } catch (error) {\n debugLog(\n `failed to parse safelist from source at \"${configPath}\": ${formatErrorMessage(error)}`\n )\n // keep empty if source parsing fails\n }\n }\n\n const loaded = {\n path: configPath,\n loaded: config !== null,\n warning,\n safelist,\n customUtilities,\n }\n\n if (configStat) {\n tailwindConfigCache.set(configPath, {\n mtimeMs: configStat.mtimeMs,\n size: configStat.size,\n config: loaded,\n })\n }\n\n debugLog(\n `tailwind config loaded from \"${configPath}\" in ${Date.now() - startMs}ms ` +\n `(loaded=${loaded.loaded}, safelist=${loaded.safelist.size}, custom=${loaded.customUtilities.size})`\n )\n\n return loaded\n}\n\nexport function utilityPrefix(baseClass: string): string {\n const normalized = baseClass.startsWith(\"-\") ? baseClass.slice(1) : baseClass\n if (normalized.includes(\"[\") && normalized.includes(\"]\")) return \"arbitrary\"\n if (normalized.startsWith(\"min-w-\")) return \"min-w\"\n if (normalized.startsWith(\"max-w-\")) return \"max-w\"\n if (normalized.startsWith(\"min-h-\")) return \"min-h\"\n if (normalized.startsWith(\"max-h-\")) return \"max-h\"\n if (normalized.startsWith(\"space-x-\")) return \"space-x\"\n if (normalized.startsWith(\"space-y-\")) return \"space-y\"\n if (normalized.startsWith(\"inline-\")) return \"inline\"\n if (normalized.startsWith(\"border-\")) return \"border\"\n if (normalized.startsWith(\"text-\")) return \"text\"\n if (normalized.startsWith(\"bg-\")) return \"bg\"\n if (normalized.startsWith(\"rounded\")) return \"rounded\"\n if (normalized.startsWith(\"shadow\")) return \"shadow\"\n const hyphen = normalized.indexOf(\"-\")\n if (hyphen < 0) return normalized\n return normalized.slice(0, hyphen)\n}\n\nfunction isKnownTailwindClass(\n className: string,\n safelist: Set<string>,\n customUtilities: Set<string>\n): boolean {\n if (safelist.has(className) || customUtilities.has(className)) return true\n const { base } = splitVariantAndBase(className)\n if (customUtilities.has(base)) return true\n const prefix = utilityPrefix(base)\n return KNOWN_UTILITY_PREFIXES.has(prefix)\n}\n\nexport async function buildSemanticReport(\n usages: ClassUsage[],\n root: string,\n semanticOption?: { tailwindConfigPath?: string }\n): Promise<AnalyzerSemanticReport> {\n const loadedConfig = await loadTailwindConfig(root, semanticOption)\n const safelist = loadedConfig?.safelist ?? new Set<string>()\n const customUtilities = loadedConfig?.customUtilities ?? new Set<string>()\n const usageNames = new Set(usages.map((usage) => usage.name))\n\n const unusedClasses: ClassUsage[] = Array.from(safelist)\n .filter((className) => !usageNames.has(className))\n .sort()\n .map((className) => ({ name: className, count: 0, isUnused: true }))\n\n const unknownClasses: ClassUsage[] = usages\n .filter((usage) => !isKnownTailwindClass(usage.name, safelist, customUtilities))\n .map((usage) => ({ ...usage, isUnused: true }))\n\n const { conflicts } = detectConflicts(usages)\n\n return {\n unusedClasses,\n unknownClasses,\n conflicts,\n ...(loadedConfig\n ? {\n tailwindConfig: {\n path: loadedConfig.path,\n loaded: loadedConfig.loaded,\n safelistCount: loadedConfig.safelist.size,\n customUtilityCount: loadedConfig.customUtilities.size,\n ...(loadedConfig.warning ? { warning: loadedConfig.warning } : {}),\n },\n }\n : {}),\n }\n}\n","import path from \"node:path\"\n\nimport type { ScanWorkspaceResult } from \"@tailwind-styled/scanner\"\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\n\nimport { requireNativeBinding } from \"./binding\"\nimport { buildSemanticReport } from \"./semantic\"\nimport type {\n AnalyzerOptions,\n AnalyzerReport,\n AnalyzerSemanticReport,\n ClassUsage,\n NativeReport,\n} from \"./types\"\nimport { debugLog, formatErrorMessage, sanitizeFrequentThreshold, sanitizeTopLimit } from \"./utils\"\n\nfunction normalizeScan(\n scan: ScanWorkspaceResult,\n includeClass?: (className: string) => boolean\n): ScanWorkspaceResult {\n if (!includeClass) return scan\n\n const filteredFiles = scan.files.map((file) => ({\n file: file.file,\n classes: file.classes.filter((className) => includeClass(className)),\n }))\n const unique = new Set<string>()\n for (const file of filteredFiles) {\n for (const className of file.classes) unique.add(className)\n }\n\n return {\n files: filteredFiles,\n totalFiles: scan.totalFiles,\n uniqueClasses: Array.from(unique).sort(),\n }\n}\n\nexport function collectClassCounts(scan: ScanWorkspaceResult): Map<string, number> {\n const counts = new Map<string, number>()\n for (const file of scan.files) {\n for (const className of file.classes) {\n counts.set(className, (counts.get(className) ?? 0) + 1)\n }\n }\n return counts\n}\n\nfunction buildClassUsage(counts: Map<string, number>): ClassUsage[] {\n return Array.from(counts.entries())\n .map(([name, count]) => ({ name, count }))\n .sort((left, right) => {\n if (right.count !== left.count) return right.count - left.count\n return left.name.localeCompare(right.name)\n })\n}\n\nexport function buildDistribution(usages: ClassUsage[]): Record<string, number> {\n const distribution = {\n \"1\": 0,\n \"2-3\": 0,\n \"4-7\": 0,\n \"8+\": 0,\n }\n\n for (const usage of usages) {\n if (usage.count === 1) {\n distribution[\"1\"] += 1\n continue\n }\n if (usage.count <= 3) {\n distribution[\"2-3\"] += 1\n continue\n }\n if (usage.count <= 7) {\n distribution[\"4-7\"] += 1\n continue\n }\n distribution[\"8+\"] += 1\n }\n\n return distribution\n}\n\n/**\n * Analyze Tailwind class usage in a workspace and return usage statistics.\n * Set `semantic.tailwindConfigPath` to override Tailwind config lookup.\n * @example\n * const report = await analyzeWorkspace(\"./src\", {\n * classStats: { top: 20, frequentThreshold: 2 },\n * semantic: { tailwindConfigPath: \"tailwind.config.js\" },\n * })\n */\nexport async function analyzeWorkspace(\n root: string,\n options: AnalyzerOptions = {}\n): Promise<AnalyzerReport> {\n const startedAtMs = Date.now()\n const resolvedRoot = path.resolve(root)\n\n const scanStartedAtMs = Date.now()\n let scan: ScanWorkspaceResult\n try {\n scan = await scanWorkspaceAsync(resolvedRoot, options.scanner)\n } catch (error) {\n throw new Error(`Failed to scan workspace at \"${resolvedRoot}\": ${formatErrorMessage(error)}`, {\n cause: error,\n })\n }\n debugLog(\n `scanWorkspaceAsync processed ${scan.totalFiles} files in ${Date.now() - scanStartedAtMs}ms`\n )\n\n const normalizedScan = normalizeScan(scan, options.includeClass)\n const topLimit = sanitizeTopLimit(options.classStats?.top)\n const frequentThreshold = sanitizeFrequentThreshold(options.classStats?.frequentThreshold)\n\n const binding = requireNativeBinding()\n const filesJson = JSON.stringify(\n normalizedScan.files.map((file) => ({ file: file.file, classes: file.classes }))\n )\n\n let nativeReport: NativeReport | null = null\n try {\n nativeReport = binding.analyzeClasses(filesJson, resolvedRoot, topLimit)\n } catch (error) {\n throw new Error(`Native analyzer failed for \"${resolvedRoot}\": ${formatErrorMessage(error)}`, {\n cause: error,\n })\n }\n if (!nativeReport) {\n throw new Error(`Native analyzer returned no report for \"${resolvedRoot}\".`)\n }\n\n const counts = collectClassCounts(normalizedScan)\n let all = buildClassUsage(counts)\n let semanticReport: AnalyzerSemanticReport | undefined\n\n if (options.semantic) {\n const semanticOption = typeof options.semantic === \"object\" ? options.semantic : undefined\n const semanticStartedAtMs = Date.now()\n try {\n semanticReport = await buildSemanticReport(all, resolvedRoot, semanticOption)\n } catch (error) {\n throw new Error(\n `Failed to build semantic report for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\n { cause: error }\n )\n }\n debugLog(`semantic report built in ${Date.now() - semanticStartedAtMs}ms`)\n\n if (semanticReport.conflicts.length > 0) {\n const conflicted = new Set(semanticReport.conflicts.flatMap((conflict) => conflict.classes))\n all = all.map((usage) =>\n conflicted.has(usage.name) ? { ...usage, isConflict: true } : usage\n )\n }\n }\n\n const top = all.slice(0, topLimit)\n const frequent = all.filter((usage) => usage.count >= frequentThreshold).slice(0, topLimit)\n const unique = all.filter((usage) => usage.count === 1)\n const totalClassOccurrences = all.reduce((sum, usage) => sum + usage.count, 0)\n\n debugLog(\n `analyzeWorkspace completed in ${Date.now() - startedAtMs}ms ` +\n `(files=${normalizedScan.totalFiles}, uniqueClasses=${all.length})`\n )\n\n return {\n root: nativeReport.root || resolvedRoot,\n totalFiles: nativeReport.totalFiles,\n uniqueClassCount: all.length,\n totalClassOccurrences,\n classStats: {\n all,\n top,\n frequent,\n unique,\n distribution: buildDistribution(all),\n },\n safelist: all.map((usage) => usage.name),\n ...(semanticReport ? { semantic: semanticReport } : {}),\n }\n}\n","import { requireNativeCssCompiler } from \"./binding\"\nimport type { ClassToCssOptions, ClassToCssResult, NativeCssCompileResult } from \"./types\"\nimport { formatErrorMessage } from \"./utils\"\n\nexport function normalizeClassInput(input: string | string[]): string[] {\n if (typeof input === \"string\") {\n return input\n .split(/\\s+/)\n .map((item) => item.trim())\n .filter((item) => item.length > 0)\n }\n\n if (!Array.isArray(input)) {\n throw new TypeError(\"classToCss input must be a string or an array of strings.\")\n }\n\n const out: string[] = []\n for (const item of input) {\n if (typeof item !== \"string\") {\n throw new TypeError(\"classToCss input array must contain only strings.\")\n }\n const value = item.trim()\n if (value.length > 0) out.push(value)\n }\n return out\n}\n\nfunction normalizeClassToCssOptions(options: ClassToCssOptions): {\n prefix: string | null\n strict: boolean\n} {\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new TypeError(\"classToCss options must be an object.\")\n }\n\n const strict = options.strict ?? false\n if (typeof strict !== \"boolean\") {\n throw new TypeError(\"classToCss options.strict must be a boolean when provided.\")\n }\n\n const prefix = options.prefix ?? null\n if (prefix !== null && typeof prefix !== \"string\") {\n throw new TypeError(\"classToCss options.prefix must be a string or null when provided.\")\n }\n\n return { prefix, strict }\n}\n\nfunction mergeDeclarationMap(target: Map<string, string>, css: string): void {\n const ruleRegex = /\\{([^}]*)\\}/g\n let ruleMatch = ruleRegex.exec(css)\n while (ruleMatch) {\n const body = ruleMatch[1]\n for (const raw of body.split(\";\")) {\n const declaration = raw.trim()\n if (declaration.length === 0) continue\n const colonIndex = declaration.indexOf(\":\")\n if (colonIndex <= 0) continue\n const property = declaration.slice(0, colonIndex).trim()\n const value = declaration.slice(colonIndex + 1).trim()\n if (property.length === 0 || value.length === 0) continue\n if (target.has(property)) target.delete(property)\n target.set(property, value)\n }\n ruleMatch = ruleRegex.exec(css)\n }\n}\n\nfunction declarationMapToString(declarationMap: Map<string, string>): string {\n return Array.from(declarationMap.entries())\n .map(([property, value]) => `${property}: ${value}`)\n .join(\"; \")\n}\n\n/**\n * Convert Tailwind class input into atomic CSS output via native binding.\n * @example\n * const css = await classToCss(\"opacity-0 translate-y-2\", { strict: true })\n */\nexport async function classToCss(\n input: string | string[],\n options: ClassToCssOptions = {}\n): Promise<ClassToCssResult> {\n const inputClasses = normalizeClassInput(input)\n const normalizedOptions = normalizeClassToCssOptions(options)\n if (inputClasses.length === 0) {\n return {\n inputClasses: [],\n css: \"\",\n declarations: \"\",\n resolvedClasses: [],\n unknownClasses: [],\n sizeBytes: 0,\n }\n }\n\n const binding = requireNativeCssCompiler()\n const prefix = normalizedOptions.prefix\n const cssChunks: string[] = []\n const resolvedClasses: string[] = []\n const unknownClasses: string[] = []\n let sizeBytes = 0\n const declarationMap = new Map<string, string>()\n\n for (const className of inputClasses) {\n let compiled: NativeCssCompileResult | null = null\n try {\n compiled = binding.compileCss([className], prefix)\n } catch (error) {\n throw new Error(\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\n { cause: error }\n )\n }\n\n if (!compiled) {\n throw new Error(`Native analyzer returned no result for class \"${className}\".`)\n }\n\n cssChunks.push(compiled.css)\n resolvedClasses.push(...compiled.resolvedClasses)\n unknownClasses.push(...compiled.unknownClasses)\n sizeBytes += compiled.sizeBytes\n mergeDeclarationMap(declarationMap, compiled.css)\n }\n\n const uniqueUnknown = Array.from(new Set(unknownClasses))\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`)\n }\n\n return {\n inputClasses,\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\n declarations: declarationMapToString(declarationMap),\n resolvedClasses: Array.from(new Set(resolvedClasses)),\n unknownClasses: uniqueUnknown,\n sizeBytes,\n }\n}\n","/**\n * @tailwind-styled/analyzer v5\n *\n * Native-first async analyzer with semantic reporting.\n */\n\nimport { analyzeWorkspace, buildDistribution, collectClassCounts } from \"./analyzeWorkspace\"\nimport { classToCss, normalizeClassInput } from \"./classToCss\"\nimport { resolveConflictGroup, splitVariantAndBase, utilityPrefix } from \"./semantic\"\n\nexport type {\n AnalyzerOptions,\n AnalyzerReport,\n AnalyzerSemanticReport,\n ClassConflict,\n ClassToCssOptions,\n ClassToCssResult,\n ClassUsage,\n} from \"./types\"\n\nexport { analyzeWorkspace, classToCss }\n\nexport const __internal = {\n normalizeClassInput,\n splitVariantAndBase,\n resolveConflictGroup,\n collectClassCounts,\n buildDistribution,\n utilityPrefix,\n}\n"]}
|