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.
- package/CHANGELOG.md +15 -1
- package/dist/{analyzeWorkspace-DuJKh7Ty.d.mts → analyzeWorkspace-BS5O4rhC.d.mts} +47 -2
- package/dist/{analyzeWorkspace-Ct_NTAWt.d.ts → analyzeWorkspace-DDOQdzzI.d.ts} +47 -2
- package/dist/analyzer.d.mts +5 -3
- package/dist/analyzer.d.ts +5 -3
- package/dist/analyzer.js +563 -468
- package/dist/analyzer.js.map +1 -1
- package/dist/analyzer.mjs +562 -467
- package/dist/analyzer.mjs.map +1 -1
- package/dist/animate.d.mts +4 -7
- package/dist/animate.d.ts +4 -7
- package/dist/animate.js +171 -265
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +165 -264
- package/dist/animate.mjs.map +1 -1
- package/dist/atomic.d.mts +22 -1
- package/dist/atomic.d.ts +22 -1
- package/dist/atomic.js +221 -165
- package/dist/atomic.js.map +1 -1
- package/dist/atomic.mjs +200 -165
- package/dist/atomic.mjs.map +1 -1
- package/dist/cli.d.mts +60 -1
- package/dist/cli.d.ts +60 -1
- package/dist/cli.js +1261 -1517
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +1238 -1513
- package/dist/cli.mjs.map +1 -1
- package/dist/compiler.d.mts +38 -7
- package/dist/compiler.d.ts +38 -7
- package/dist/compiler.js +174 -197
- package/dist/compiler.js.map +1 -1
- package/dist/compiler.mjs +151 -194
- package/dist/compiler.mjs.map +1 -1
- package/dist/devtools.js +7 -31
- package/dist/devtools.js.map +1 -1
- package/dist/devtools.mjs +7 -31
- package/dist/devtools.mjs.map +1 -1
- package/dist/engine.d.mts +134 -63
- package/dist/engine.d.ts +134 -63
- package/dist/engine.js +2863 -2482
- package/dist/engine.js.map +1 -1
- package/dist/engine.mjs +2852 -2485
- package/dist/engine.mjs.map +1 -1
- package/dist/{index-eWAocnD2.d.mts → index-NDINUhLN.d.mts} +3 -1
- package/dist/{index-eWAocnD2.d.ts → index-NDINUhLN.d.ts} +3 -1
- package/dist/index.d.mts +45 -32
- package/dist/index.d.ts +45 -32
- package/dist/index.js +271 -158
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +251 -158
- package/dist/index.mjs.map +1 -1
- package/dist/{liveTokenEngine-DSUk88P6.d.ts → liveTokenEngine-CN9ian1R.d.ts} +1 -1
- package/dist/{liveTokenEngine-CX5_0c4q.d.mts → liveTokenEngine-DKoWRtqH.d.mts} +1 -1
- package/dist/next.js +20 -39
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +18 -37
- package/dist/next.mjs.map +1 -1
- package/dist/plugin-api.d.mts +8 -2
- package/dist/plugin-api.d.ts +8 -2
- package/dist/plugin-api.js +14 -2
- package/dist/plugin-api.js.map +1 -1
- package/dist/plugin-api.mjs +14 -3
- package/dist/plugin-api.mjs.map +1 -1
- package/dist/plugin-registry.js +51 -11
- package/dist/plugin-registry.js.map +1 -1
- package/dist/plugin-registry.mjs +51 -11
- package/dist/plugin-registry.mjs.map +1 -1
- package/dist/plugin.d.mts +5 -7
- package/dist/plugin.d.ts +5 -7
- package/dist/plugin.js +16 -15
- package/dist/plugin.js.map +1 -1
- package/dist/plugin.mjs +16 -16
- package/dist/plugin.mjs.map +1 -1
- package/dist/rspack.js +17 -38
- package/dist/rspack.js.map +1 -1
- package/dist/rspack.mjs +15 -36
- package/dist/rspack.mjs.map +1 -1
- package/dist/runtime.d.mts +2 -2
- package/dist/runtime.d.ts +2 -2
- package/dist/scanner.d.mts +10 -1
- package/dist/scanner.d.ts +10 -1
- package/dist/scanner.js +298 -124
- package/dist/scanner.js.map +1 -1
- package/dist/scanner.mjs +296 -124
- package/dist/scanner.mjs.map +1 -1
- package/dist/shared.d.mts +1 -1
- package/dist/shared.d.ts +1 -1
- package/dist/shared.js +104 -176
- package/dist/shared.js.map +1 -1
- package/dist/shared.mjs +85 -176
- package/dist/shared.mjs.map +1 -1
- package/dist/storybook-addon.d.mts +1 -1
- package/dist/storybook-addon.d.ts +1 -1
- package/dist/svelte.d.mts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/svelte.js +166 -3
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs +143 -1
- package/dist/svelte.mjs.map +1 -1
- package/dist/syntax.js +21 -21
- package/dist/syntax.js.map +1 -1
- package/dist/syntax.mjs +21 -21
- package/dist/syntax.mjs.map +1 -1
- package/dist/testing.js +9 -1
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +9 -1
- package/dist/testing.mjs.map +1 -1
- package/dist/theme.d.mts +2 -2
- package/dist/theme.d.ts +2 -2
- package/dist/theme.js +40 -112
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +37 -110
- package/dist/theme.mjs.map +1 -1
- package/dist/turbopackLoader.js +79 -124
- package/dist/turbopackLoader.js.map +1 -1
- package/dist/turbopackLoader.mjs +63 -122
- package/dist/turbopackLoader.mjs.map +1 -1
- package/dist/tw.js +1256 -1517
- package/dist/tw.js.map +1 -1
- package/dist/tw.mjs +1236 -1513
- package/dist/tw.mjs.map +1 -1
- package/dist/vite.js +1783 -823
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +1767 -821
- package/dist/vite.mjs.map +1 -1
- package/dist/vue.d.mts +1 -1
- package/dist/vue.d.ts +1 -1
- package/dist/vue.js +165 -4
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +141 -1
- package/dist/vue.mjs.map +1 -1
- package/dist/webpackLoader.js +65 -108
- package/dist/webpackLoader.js.map +1 -1
- package/dist/webpackLoader.mjs +45 -104
- package/dist/webpackLoader.mjs.map +1 -1
- package/native/tailwind-styled-native.node +0 -0
- package/package.json +22 -24
package/dist/shared.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../packages/domain/shared/src/trace.ts","../packages/domain/shared/src/error-codes.ts","../packages/domain/shared/src/compatibility.ts","../packages/domain/shared/src/native-schemas.ts","../packages/domain/shared/src/esmHelpers.ts","../packages/domain/shared/src/telemetry.ts","../packages/domain/shared/src/configSchemas.ts","../packages/domain/shared/src/workerResolver.ts","../packages/domain/shared/src/codegen.ts","../packages/domain/shared/src/native-resolution.ts","../packages/domain/shared/src/observability.ts","../packages/domain/shared/src/index.ts"],"names":["z","isBrowser","exports","nodeModuleRef","getNodeModuleRef","_nodeFs","_nodePath","getNodeFs","getNodePath","_nodeUrl","getNodeUrl","getRequire","_require","hash"],"mappings":"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","file":"shared.mjs","sourcesContent":["/**\r\n * Shared trace utilities for CLI, devtools, and dashboard\r\n * \r\n * Provides reusable trace snapshot handling, formatting, and analysis\r\n * across the tailwind-styled-v4 ecosystem without introducing coupling.\r\n */\r\n\r\nexport interface TraceSnapshot {\r\n generatedAt: string\r\n buildMs: number | null\r\n scanMs: number | null\r\n analyzeMs: number | null\r\n compileMs: number | null\r\n memoryMb: { rss: number; heapUsed: number; heapTotal: number } | null\r\n classCount: number | null\r\n fileCount: number | null\r\n cssBytes: number | null\r\n mode: string | null\r\n eventsReceived?: number\r\n eventsProcessed?: number\r\n batchesProcessed?: number\r\n incrementalUpdates?: number\r\n fullRescans?: number\r\n}\r\n\r\nexport interface TraceSummary {\r\n workspace: {\r\n totalPackages: number\r\n totalFiles: number\r\n totalClasses: number\r\n lastScanDurationMs: number\r\n lastBuildDurationMs: number\r\n }\r\n cache: {\r\n hitRate: number\r\n totalEntries: number\r\n memoryUsageMb: number\r\n }\r\n pipeline: {\r\n scanDurationMs: number\r\n analyzeDurationMs: number\r\n compileDurationMs: number\r\n totalDurationMs: number\r\n }\r\n health: {\r\n status: \"healthy\" | \"degraded\" | \"unhealthy\"\r\n issues: Array<{ severity: string; message: string }>\r\n }\r\n}\r\n\r\n/**\r\n * Get health status color for UI rendering\r\n */\r\nexport function getHealthColor(status?: string): string {\r\n switch (status) {\r\n case \"healthy\":\r\n return \"#34d399\"\r\n case \"degraded\":\r\n return \"#fbbf24\"\r\n case \"unhealthy\":\r\n return \"#f87171\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Get mode color for UI rendering\r\n */\r\nexport function getModeColor(mode?: string | null): string {\r\n switch (mode) {\r\n case \"build\":\r\n return \"#fbbf24\"\r\n case \"watch\":\r\n return \"#34d399\"\r\n case \"jit\":\r\n return \"#60a5fa\"\r\n case \"error\":\r\n return \"#f87171\"\r\n case \"idle\":\r\n return \"#71717a\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Format memory in human-readable format\r\n */\r\nexport function formatMemory(bytes: number): string {\r\n if (bytes < 1024) return `${Math.round(bytes)}B`\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`\r\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`\r\n}\r\n\r\n/**\r\n * Format duration in human-readable format\r\n */\r\nexport function formatDuration(ms: number | null): string {\r\n if (ms === null) return \"—\"\r\n if (ms < 1000) return `${ms}ms`\r\n return `${(ms / 1000).toFixed(1)}s`\r\n}\r\n\r\n/**\r\n * Calculate health status from metrics\r\n */\r\nexport function calculateHealth(\r\n metrics: TraceSnapshot,\r\n summary?: TraceSummary\r\n): \"healthy\" | \"degraded\" | \"unhealthy\" {\r\n if (summary?.health?.status) return summary.health.status\r\n\r\n // Fallback to simple heuristics\r\n if (metrics.mode === \"error\") return \"unhealthy\"\r\n if ((metrics.buildMs ?? 0) > 5000) return \"degraded\"\r\n if (metrics.memoryMb && metrics.memoryMb.heapUsed > 500) return \"degraded\"\r\n return \"healthy\"\r\n}\r\n\r\n/**\r\n * Get color for build time indicator\r\n */\r\nexport function getBuildTimeColor(ms: number | null): string {\r\n if (ms === null) return \"#52525b\"\r\n if (ms > 1000) return \"#f87171\" // red - very slow\r\n if (ms > 500) return \"#fbbf24\" // amber - acceptable\r\n return \"#34d399\" // green - fast\r\n}\r\n\r\n/**\r\n * Get color for memory usage indicator\r\n */\r\nexport function getMemoryColor(mb: number): string {\r\n if (mb > 500) return \"#f87171\" // red - high\r\n if (mb > 250) return \"#fbbf24\" // amber - moderate\r\n return \"#34d399\" // green - low\r\n}\r\n\r\n/**\r\n * Create trace snapshot from dashboard data\r\n */\r\nexport function createTraceSnapshot(data: Record<string, unknown>): TraceSnapshot {\r\n return {\r\n generatedAt: (data.generatedAt as string) || new Date().toISOString(),\r\n buildMs: (data.buildMs as number) ?? null,\r\n scanMs: (data.scanMs as number) ?? null,\r\n analyzeMs: (data.analyzeMs as number) ?? null,\r\n compileMs: (data.compileMs as number) ?? null,\r\n memoryMb: (data.memoryMb as { rss: number; heapUsed: number; heapTotal: number } | null) ?? null,\r\n classCount: (data.classCount as number) ?? null,\r\n fileCount: (data.fileCount as number) ?? null,\r\n cssBytes: (data.cssBytes as number) ?? null,\r\n mode: (data.mode as string) ?? null,\r\n eventsReceived: (data.eventsReceived as number | undefined) ?? undefined,\r\n eventsProcessed: (data.eventsProcessed as number | undefined) ?? undefined,\r\n batchesProcessed: (data.batchesProcessed as number | undefined) ?? undefined,\r\n incrementalUpdates: (data.incrementalUpdates as number | undefined) ?? undefined,\r\n fullRescans: (data.fullRescans as number | undefined) ?? undefined,\r\n }\r\n}\r\n\r\n/**\r\n * Calculate pipeline time distribution\r\n */\r\nexport function getPipelinePercentages(metrics: TraceSnapshot): {\r\n scanPct: number\r\n analyzePct: number\r\n compilePct: number\r\n} {\r\n const scan = metrics.scanMs ?? 0\r\n const analyze = metrics.analyzeMs ?? 0\r\n const compile = metrics.compileMs ?? 0\r\n const total = scan + analyze + compile\r\n\r\n if (total === 0) {\r\n return { scanPct: 0, analyzePct: 0, compilePct: 0 }\r\n }\r\n\r\n return {\r\n scanPct: (scan / total) * 100,\r\n analyzePct: (analyze / total) * 100,\r\n compilePct: (compile / total) * 100,\r\n }\r\n}\r\n","/**\r\n * Error code registry — single source of truth for all error codes.\r\n *\r\n * Format: E[0-9]xx for errors, W[0-9]xx for warnings.\r\n * Use with TwError for consistent error handling.\r\n */\r\n\r\nexport const ERROR_CODES = {\r\n // E0xx — Native binding\r\n NATIVE_NOT_FOUND: \"E001\",\r\n NATIVE_LOAD_FAILED: \"E002\",\r\n NATIVE_VERSION_MISMATCH: \"E003\",\r\n SCANNER_NATIVE_NOT_FOUND: \"E004\",\r\n SCANNER_HASH_FAILED: \"E005\",\r\n NATIVE_TRANSFORM_UNAVAILABLE: \"E006\",\r\n\r\n // E2xx — Compilation\r\n MISSING_REACT_IMPORT: \"E201\",\r\n UNSUPPORTED_PATTERN: \"E202\",\r\n TEMPLATE_PARSE_ERROR: \"E203\",\r\n COMPILE_TIMEOUT: \"E204\",\r\n\r\n // E3xx — Compatibility\r\n TAILWIND_VERSION_UNSUPPORTED: \"E301\",\r\n NODE_VERSION_UNSUPPORTED: \"E302\",\r\n\r\n // E4xx — Cache\r\n CACHE_READ_FAILED: \"E401\",\r\n CACHE_WRITE_FAILED: \"E402\",\r\n CACHE_CORRUPTED: \"E403\",\r\n\r\n // E5xx — RSC\r\n RSC_BOUNDARY_CONFLICT: \"E501\",\r\n\r\n // W1xx — Warnings\r\n DYNAMIC_CONTENT: \"W101\",\r\n INVALID_VARIANT_VALUE: \"W201\",\r\n DEPRECATED_MODE: \"W301\",\r\n} as const\r\n\r\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]\r\n\r\nconst ERROR_SUGGESTIONS: Record<string, string> = {\r\n E001: \"Run: npm install @tailwind-styled/native-{platform} or build from source\",\r\n E002: \"Try: npm rebuild or reinstall the package\",\r\n E003: \"Run: npm install tailwind-styled-v4@latest to sync versions\",\r\n E004: \"Run: npm install @tailwind-styled/scanner\",\r\n E006: \"Run: npm install @tailwind-styled/compiler\",\r\n E301: \"Upgrade: npm install tailwindcss@^4\",\r\n}\r\n\r\nexport function getSuggestion(code: string): string | undefined {\r\n return ERROR_SUGGESTIONS[code]\r\n}\r\n\r\nexport function formatErrorCode(code: string): string {\r\n const prefix = code.startsWith(\"E\") ? \"Error\" : code.startsWith(\"W\") ? \"Warning\" : \"Code\"\r\n return `[${prefix} ${code}]`\r\n}\r\n","/**\r\n * Tailwind CSS version detection and compatibility checks.\r\n *\r\n * tailwind-styled-v4 requires Tailwind CSS v4.x.\r\n * This module detects the installed version and provides\r\n * clear error messages for unsupported versions.\r\n */\r\n\r\nexport interface TailwindInfo {\r\n version: string\r\n major: number\r\n supported: boolean\r\n path: string | null\r\n}\r\n\r\nexport function detectTailwind(): TailwindInfo {\r\n try {\r\n const pkgPath = require.resolve(\"tailwindcss/package.json\")\r\n const { version } = require(pkgPath)\r\n const major = Number.parseInt(version.split(\".\")[0], 10)\r\n return { version, major, supported: major >= 4, path: pkgPath }\r\n } catch {\r\n return { version: \"not-installed\", major: 0, supported: false, path: null }\r\n }\r\n}\r\n\r\nexport function assertTailwindV4(): void {\r\n const info = detectTailwind()\r\n if (!info.supported) {\r\n const message = info.major === 0\r\n ? \"tailwindcss is not installed. Run: npm install tailwindcss@^4\"\r\n : `tailwind-styled-v4 requires Tailwind CSS v4.x. Found: v${info.version}. Upgrade: npm install tailwindcss@^4`\r\n\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`[tailwind-styled] ${message}`)\r\n }\r\n }\r\n}\r\n\r\nexport function getTailwindVersion(): string {\r\n return detectTailwind().version\r\n}\r\n\r\nexport function isTailwindV4(): boolean {\r\n return detectTailwind().supported\r\n}\r\n","/**\r\n * Zod schemas untuk validasi native binding responses.\r\n *\r\n * Dipakai untuk memvalidasi data yang datang dari Rust native bindings\r\n * sebelum masuk ke domain logic TypeScript.\r\n *\r\n * Pattern:\r\n * const raw = native.scanWorkspace(root)\r\n * const validated = NativeScanResultSchema.parse(raw)\r\n * // Setelah ini, gunakan `validated` (trusted typed object)\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan ─────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeScanFileSchema = z.object({\r\n file: z.string().min(1, \"file path cannot be empty\"),\r\n classes: z.array(z.string()),\r\n hash: z.string().optional(),\r\n})\r\n\r\nexport type NativeScanFile = z.infer<typeof NativeScanFileSchema>\r\n\r\nexport const NativeScanResultSchema = z.object({\r\n files: z.array(NativeScanFileSchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueClasses: z.array(z.string()),\r\n})\r\n\r\nexport type NativeScanResult = z.infer<typeof NativeScanResultSchema>\r\n\r\n// ── Analyzer ──────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: z.number().int().nonnegative(),\r\n files: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeClassUsage = z.infer<typeof NativeClassUsageSchema>\r\n\r\nexport const NativeAnalyzerReportSchema = z.object({\r\n root: z.string(),\r\n topClasses: z.array(NativeClassUsageSchema).optional(),\r\n safelist: z.array(z.string()).optional(),\r\n css: z.string().optional(),\r\n conflicts: z.array(z.unknown()).optional(),\r\n unusedClasses: z.array(z.string()).optional(),\r\n durationMs: z.number().nonnegative().optional(),\r\n})\r\n\r\nexport type NativeAnalyzerReport = z.infer<typeof NativeAnalyzerReportSchema>\r\n\r\n// ── Transform ─────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeTransformResultSchema = z.object({\r\n code: z.string(),\r\n classes: z.array(z.string()),\r\n changed: z.boolean(),\r\n rsc: z.object({\r\n isServer: z.boolean(),\r\n needsClientDirective: z.boolean(),\r\n clientReasons: z.array(z.string()),\r\n }).optional(),\r\n})\r\n\r\nexport type NativeTransformResult = z.infer<typeof NativeTransformResultSchema>\r\n\r\n// ── CSS Compile ───────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unresolvedClasses: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeCssCompileResult = z.infer<typeof NativeCssCompileResultSchema>\r\n\r\n// ── Watch ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeWatchEventSchema = z.object({\r\n type: z.enum([\"change\", \"unlink\", \"create\"]),\r\n path: z.string(),\r\n})\r\n\r\nexport type NativeWatchEvent = z.infer<typeof NativeWatchEventSchema>\r\n\r\nexport const NativeWatchResultSchema = z.object({\r\n status: z.enum([\"ok\", \"error\"]),\r\n handleId: z.string().optional(),\r\n error: z.string().optional(),\r\n})\r\n\r\nexport type NativeWatchResult = z.infer<typeof NativeWatchResultSchema>\r\n\r\n// ── Cache ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCacheEntrySchema = z.object({\r\n file: z.string(),\r\n hash: z.string(),\r\n classes: z.array(z.string()),\r\n timestamp: z.number(),\r\n size: z.number().optional(),\r\n})\r\n\r\nexport type NativeCacheEntry = z.infer<typeof NativeCacheEntrySchema>\r\n\r\nexport const NativeCacheReadResultSchema = z.object({\r\n entries: z.array(NativeCacheEntrySchema),\r\n version: z.string().optional(),\r\n})\r\n\r\nexport type NativeCacheReadResult = z.infer<typeof NativeCacheReadResultSchema>\r\n\r\n// ── Helpers ───────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Validasi native binding response dengan fallback ke nilai default.\r\n * Gunakan ini di hot path agar tidak crash saat native returns unexpected shape.\r\n *\r\n * @example\r\n * const raw = native.scanWorkspace(root)\r\n * const result = safeParseNative(NativeScanResultSchema, raw, {\r\n * files: [], totalFiles: 0, uniqueClasses: []\r\n * })\r\n */\r\nexport function safeParseNative<T>(\r\n schema: z.ZodType<T>,\r\n data: unknown,\r\n fallback: T\r\n): T {\r\n const result = schema.safeParse(data)\r\n return result.success ? result.data : fallback\r\n}\r\n\r\n/**\r\n * Parse native response — throw TwError jika gagal.\r\n * Gunakan ini di boundary entry points.\r\n */\r\nexport function parseNative<T>(schema: z.ZodType<T>, data: unknown, context: string): T {\r\n const result = schema.safeParse(data)\r\n if (!result.success) {\r\n const first = result.error.issues[0]\r\n const path = first?.path?.join(\".\") ?? \"(root)\"\r\n throw new Error(\r\n `[${context}] Native binding returned unexpected data: ${path}: ${first?.message ?? \"validation failed\"}`\r\n )\r\n }\r\n return result.data\r\n}\r\n","/**\r\n * ESM-safe runtime helpers untuk monorepo.\r\n *\r\n * Menggantikan pola fragile seperti:\r\n * - `createRequire(import.meta.url)` → gunakan `createEsmRequire()`\r\n * - `__dirname` → gunakan `getDirname(import.meta.url)`\r\n * - `__filename` → gunakan `getFilename(import.meta.url)`\r\n *\r\n * Semua helper ini bekerja di ESM dan CJS.\r\n *\r\n * @module @tailwind-styled/shared/esmHelpers\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// Safe check for require availability - works in both CJS and ESM\r\nlet nodeModuleRef: any = null\r\nfunction getNodeModuleRef() {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n // Test if require actually works\r\n const test = typeof require === 'function' ? require('node:module') : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodePath: any = null\r\nlet _nodeUrl: any = null\r\nlet _nodeFs: any = null\r\nlet _nodeCrypto: any = null\r\nlet _nodeOs: any = null\r\n\r\nfunction getNodePath() {\r\n if (isBrowser) throw new Error(\"node:path not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeUrl() {\r\n if (isBrowser) throw new Error(\"node:url not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeUrl) _nodeUrl = nodeRequire.createRequire(import.meta.url)(\"node:url\")\r\n return _nodeUrl!\r\n}\r\nfunction getNodeFs() {\r\n if (isBrowser) throw new Error(\"node:fs not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\")\r\n return _nodeFs!\r\n}\r\nfunction getNodeCrypto() {\r\n if (isBrowser) throw new Error(\"node:crypto not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeCrypto) _nodeCrypto = nodeRequire.createRequire(import.meta.url)(\"node:crypto\")\r\n return _nodeCrypto!\r\n}\r\nfunction getNodeOs() {\r\n if (isBrowser) throw new Error(\"node:os not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeOs) _nodeOs = nodeRequire.createRequire(import.meta.url)(\"node:os\")\r\n return _nodeOs!\r\n}\r\n\r\n/**\r\n * Buat `require()` function yang relative terhadap sebuah ESM module.\r\n *\r\n * @example\r\n * // Ganti: createRequire(import.meta.url)(\"some-pkg\")\r\n * const req = createEsmRequire(import.meta.url)\r\n * const mod = req(\"some-pkg\")\r\n */\r\nexport function createEsmRequire(importMetaUrl: string): NodeRequire {\r\n if (isBrowser) throw new Error(\"require not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n return nodeRequire.createRequire(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Dapat `__dirname` dari `import.meta.url`.\r\n *\r\n * @example\r\n * // Ganti: const __dirname = ...\r\n * const dir = getDirname(import.meta.url)\r\n */\r\nexport function getDirname(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n const nodePath = getNodePath()\r\n const nodeUrl = getNodeUrl()\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n}\r\n\r\n/**\r\n * Dapat `__filename` dari `import.meta.url`.\r\n */\r\nexport function getFilename(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n return getNodeUrl().fileURLToPath(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Resolve path dari root monorepo (bukan CWD).\r\n * Berguna untuk scripts dan tools yang dipanggil dari lokasi berbeda.\r\n *\r\n * @example\r\n * const root = resolveFromRoot(\"packages/domain/shared/src\")\r\n */\r\nexport function resolveFromRoot(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\")\r\n\r\n const nodePath = getNodePath()\r\n const nodeFs = getNodeFs()\r\n \r\n let dir = getDirname(import.meta.url)\r\n for (let i = 0; i < 10; i++) {\r\n const pkgPath = nodePath.join(dir, \"package.json\")\r\n try {\r\n const pkg = JSON.parse(nodeFs.readFileSync(pkgPath, \"utf-8\"))\r\n if (pkg.workspaces) {\r\n return nodePath.resolve(dir, ...segments)\r\n }\r\n } catch { /* intentionally silent */ }\r\n dir = nodePath.dirname(dir)\r\n }\r\n return nodePath.resolve(process.cwd(), ...segments)\r\n}\r\n\r\n/**\r\n * Require sebuah module dengan fallback ke null jika tidak tersedia.\r\n * Berguna untuk optional dependencies.\r\n *\r\n * @example\r\n * const oxc = tryRequire(\"oxc-parser\", import.meta.url)\r\n * if (!oxc) console.warn(\"oxc-parser not installed\")\r\n */\r\nexport function tryRequire<T = unknown>(\r\n moduleName: string,\r\n importMetaUrl: string\r\n): T | null {\r\n if (isBrowser) return null\r\n try {\r\n return createEsmRequire(importMetaUrl)(moduleName) as T\r\n } catch { /* intentionally silent — optional dep */ }\r\n return null\r\n}\r\n\r\n/**\r\n * Resolve .node binary path yang cross-platform dan ESM-safe.\r\n * Menggantikan pola `path.resolve(__dirname, \"../native.node\")`.\r\n */\r\nexport function resolveNativeNodePath(\r\n importMetaUrl: string,\r\n ...relativeSegments: string[]\r\n): string {\r\n if (isBrowser) return relativeSegments.join(\"/\")\r\n return getNodePath().resolve(getDirname(importMetaUrl), ...relativeSegments)\r\n}\r\n","/**\r\n * Build performance telemetry untuk tailwind-styled-v4.\r\n * QA #14: Visibility ke build performance — scan speed, cache hit rate, trends.\r\n *\r\n * Design: zero-dependency, ring-buffer based, opt-in via TWS_TELEMETRY=1.\r\n */\r\n\r\nexport interface BuildPhases {\r\n scan: number\r\n compile: number\r\n engine: number\r\n output: number\r\n}\r\n\r\nexport interface BuildTelemetry {\r\n timestamp: number\r\n durationMs: number\r\n filesScanned: number\r\n filesCached: number\r\n classesExtracted: number\r\n nativeVersion?: string\r\n phases: BuildPhases\r\n cacheHitRate: number\r\n mode?: string\r\n}\r\n\r\nexport interface TelemetrySummary {\r\n totalBuilds: number\r\n avgDurationMs: number\r\n p95DurationMs: number\r\n avgCacheHitRate: number\r\n avgFilesScanned: number\r\n avgClassesExtracted: number\r\n phaseAvgs: BuildPhases\r\n slowestBuildMs: number\r\n fastestBuildMs: number\r\n}\r\n\r\nconst RING_BUFFER_SIZE = 100\r\n\r\nexport class TelemetryCollector {\r\n private data: BuildTelemetry[] = []\r\n private enabled: boolean\r\n\r\n constructor(enabled?: boolean) {\r\n this.enabled =\r\n enabled ??\r\n (process.env.TWS_TELEMETRY === \"1\" || process.env.TWS_TELEMETRY === \"true\")\r\n }\r\n\r\n record(build: BuildTelemetry): void {\r\n if (!this.enabled) return\r\n if (this.data.length >= RING_BUFFER_SIZE) {\r\n this.data.shift() // ring buffer — hapus entri tertua\r\n }\r\n this.data.push(build)\r\n }\r\n\r\n snapshot(): BuildTelemetry[] {\r\n return [...this.data]\r\n }\r\n\r\n summary(): TelemetrySummary | null {\r\n if (this.data.length === 0) return null\r\n\r\n const durations = this.data.map(d => d.durationMs).sort((a, b) => a - b)\r\n const p95Idx = Math.floor(durations.length * 0.95)\r\n\r\n const avg = (arr: number[]) => arr.reduce((a, b) => a + b, 0) / arr.length\r\n\r\n return {\r\n totalBuilds: this.data.length,\r\n avgDurationMs: avg(durations),\r\n p95DurationMs: durations[p95Idx] ?? durations[durations.length - 1] ?? 0,\r\n avgCacheHitRate: avg(this.data.map(d => d.cacheHitRate)),\r\n avgFilesScanned: avg(this.data.map(d => d.filesScanned)),\r\n avgClassesExtracted: avg(this.data.map(d => d.classesExtracted)),\r\n phaseAvgs: {\r\n scan: avg(this.data.map(d => d.phases.scan)),\r\n compile: avg(this.data.map(d => d.phases.compile)),\r\n engine: avg(this.data.map(d => d.phases.engine)),\r\n output: avg(this.data.map(d => d.phases.output)),\r\n },\r\n slowestBuildMs: durations[durations.length - 1] ?? 0,\r\n fastestBuildMs: durations[0] ?? 0,\r\n }\r\n }\r\n\r\n reset(): void {\r\n this.data = []\r\n }\r\n\r\n /** Format ringkas untuk CLI output */\r\n formatCli(): string {\r\n const s = this.summary()\r\n if (!s) return \"[telemetry] no data\"\r\n return [\r\n `[telemetry] ${s.totalBuilds} builds`,\r\n `avg ${s.avgDurationMs.toFixed(0)}ms`,\r\n `p95 ${s.p95DurationMs.toFixed(0)}ms`,\r\n `cache hit ${(s.avgCacheHitRate * 100).toFixed(0)}%`,\r\n `${s.avgFilesScanned.toFixed(0)} files`,\r\n ].join(\" · \")\r\n }\r\n\r\n /** Export sebagai JSON untuk dashboard/prometheus */\r\n toJSON(): object {\r\n return {\r\n summary: this.summary(),\r\n history: this.data.slice(-20), // last 20 builds\r\n }\r\n }\r\n}\r\n\r\n/** Global singleton telemetry collector */\r\nlet _globalCollector: TelemetryCollector | null = null\r\n\r\nexport function getGlobalTelemetry(): TelemetryCollector {\r\n if (!_globalCollector) {\r\n _globalCollector = new TelemetryCollector()\r\n }\r\n return _globalCollector\r\n}\r\n\r\nexport function resetGlobalTelemetry(): void {\r\n _globalCollector = null\r\n}\r\n\r\n/** Helper untuk record build dengan timing otomatis */\r\nexport function createBuildTimer() {\r\n const start = Date.now()\r\n const phases: Partial<BuildPhases> = {}\r\n let phaseStart = start\r\n\r\n return {\r\n phase(name: keyof BuildPhases): void {\r\n const now = Date.now()\r\n phases[name] = now - phaseStart\r\n phaseStart = now\r\n },\r\n finish(opts: Omit<BuildTelemetry, \"timestamp\" | \"durationMs\" | \"phases\" | \"cacheHitRate\"> & {\r\n cacheHitRate?: number\r\n }): BuildTelemetry {\r\n const now = Date.now()\r\n const record: BuildTelemetry = {\r\n timestamp: start,\r\n durationMs: now - start,\r\n phases: {\r\n scan: phases.scan ?? 0,\r\n compile: phases.compile ?? 0,\r\n engine: phases.engine ?? 0,\r\n output: phases.output ?? now - start,\r\n },\r\n cacheHitRate: opts.cacheHitRate ?? 0,\r\n ...opts,\r\n }\r\n getGlobalTelemetry().record(record)\r\n return record\r\n },\r\n }\r\n}\r\n","/**\r\n * Zod schemas untuk JSON, cache, manifest, dan config reads.\r\n * PLAN.md: \"JSON, cache, manifest, and config reads should be parsed into typed schema-backed values\"\r\n *\r\n * Pattern: validate at the I/O boundary, pass typed values inward.\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan Cache ────────────────────────────────────────────────────────────────\r\n\r\n/** Schema untuk .tailwind-styled/scan-cache.json */\r\nexport const ScanCacheClassEntrySchema = z.object({\r\n name: z.string().min(1),\r\n usedIn: z.array(z.string()),\r\n risk: z.enum([\"low\", \"medium\", \"high\"]).default(\"low\"),\r\n bundleContribution: z.number().nonnegative().default(0),\r\n variants: z.array(z.string()).default([]),\r\n})\r\nexport type ScanCacheClassEntry = z.infer<typeof ScanCacheClassEntrySchema>\r\n\r\nexport const ScanCacheSchema = z.object({\r\n version: z.string().default(\"1\"),\r\n generatedAt: z.string(),\r\n root: z.string(),\r\n classNames: z.array(ScanCacheClassEntrySchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueCount: z.number().int().nonnegative(),\r\n})\r\nexport type ScanCache = z.infer<typeof ScanCacheSchema>\r\n\r\n// ── Tailwind Config ───────────────────────────────────────────────────────────\r\n\r\nexport const TailwindContentItemSchema = z.union([\r\n z.string(),\r\n z.object({\r\n raw: z.string(),\r\n extension: z.string().optional(),\r\n }),\r\n z.object({\r\n files: z.array(z.string()),\r\n transform: z.record(z.string(), z.unknown()).optional(),\r\n }),\r\n])\r\n\r\nexport const TailwindConfigSchema = z.object({\r\n content: z.array(TailwindContentItemSchema).optional(),\r\n theme: z.record(z.string(), z.unknown()).optional(),\r\n plugins: z.array(z.unknown()).optional(),\r\n darkMode: z.union([z.literal(\"class\"), z.literal(\"media\"), z.literal(false)]).optional(),\r\n prefix: z.string().optional(),\r\n safelist: z.array(z.union([z.string(), z.object({ pattern: z.instanceof(RegExp) })])).optional(),\r\n blocklist: z.array(z.string()).optional(),\r\n}).passthrough() // Allow additional Tailwind v4 config keys\r\nexport type TailwindConfig = z.infer<typeof TailwindConfigSchema>\r\n\r\n// ── Plugin Registry Entry ─────────────────────────────────────────────────────\r\n\r\nexport const RegistryPluginEntrySchema = z.object({\r\n name: z.string().min(1),\r\n description: z.string(),\r\n version: z.string(),\r\n tags: z.array(z.string()).default([]),\r\n official: z.boolean().default(false),\r\n docs: z.string().url().optional(),\r\n install: z.string().optional(),\r\n integrity: z.string().optional(),\r\n})\r\nexport type RegistryPluginEntry = z.infer<typeof RegistryPluginEntrySchema>\r\n\r\nexport const RegistryFileSchema = z.object({\r\n version: z.string(),\r\n official: z.array(RegistryPluginEntrySchema).default([]),\r\n community: z.array(RegistryPluginEntrySchema).default([]),\r\n})\r\nexport type RegistryFile = z.infer<typeof RegistryFileSchema>\r\n\r\n// ── Package.json (minimal) ────────────────────────────────────────────────────\r\n\r\nexport const PackageJsonSchema = z.object({\r\n name: z.string(),\r\n version: z.string(),\r\n scripts: z.record(z.string(), z.string()).optional(),\r\n dependencies: z.record(z.string(), z.string()).optional(),\r\n devDependencies: z.record(z.string(), z.string()).optional(),\r\n peerDependencies: z.record(z.string(), z.string()).optional(),\r\n main: z.string().optional(),\r\n module: z.string().optional(),\r\n exports: z.unknown().optional(),\r\n type: z.enum([\"module\", \"commonjs\"]).optional(),\r\n}).passthrough()\r\nexport type PackageJson = z.infer<typeof PackageJsonSchema>\r\n\r\n// ── Helpers ────────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Parse JSON string dengan schema validation.\r\n * Melempar error yang human-readable jika gagal.\r\n *\r\n * @example\r\n * const cache = parseJsonWithSchema(\r\n * fs.readFileSync(\".tailwind-styled/scan-cache.json\", \"utf-8\"),\r\n * ScanCacheSchema,\r\n * \"scan-cache.json\"\r\n * )\r\n */\r\nexport function parseJsonWithSchema<T>(\r\n jsonString: string,\r\n schema: z.ZodType<T>,\r\n sourceName: string\r\n): T {\r\n let parsed: unknown\r\n try {\r\n parsed = JSON.parse(jsonString)\r\n } catch (err) {\r\n throw new Error(\r\n `[${sourceName}] Invalid JSON: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n const result = schema.safeParse(parsed)\r\n if (!result.success) {\r\n const issues = result.error.issues\r\n .map((e) => ` ${e.path.join(\".\")}: ${e.message}`)\r\n .join(\"\\n\")\r\n throw new Error(`[${sourceName}] Schema validation failed:\\n${issues}`)\r\n }\r\n\r\n return result.data\r\n}\r\n\r\n/**\r\n * Parse JSON file dengan schema validation.\r\n *\r\n * @example\r\n * const pkg = parseJsonFileWithSchema(\"package.json\", PackageJsonSchema)\r\n */\r\nexport function parseJsonFileWithSchema<T>(\r\n filePath: string,\r\n schema: z.ZodType<T>\r\n): T {\r\n const { readFileSync } = require(\"node:fs\") as typeof import(\"node:fs\")\r\n const { basename } = require(\"node:path\") as typeof import(\"node:path\")\r\n\r\n let content: string\r\n try {\r\n content = readFileSync(filePath, \"utf-8\")\r\n } catch (err) {\r\n throw new Error(\r\n `[${basename(filePath)}] Could not read file: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n return parseJsonWithSchema(content, schema, basename(filePath))\r\n}\r\n","/**\r\n * Worker/bootstrap path resolution untuk artifact release safety.\r\n * Dari monorepo checklist: \"Perkuat worker/bootstrap path agar artifact release aman\"\r\n *\r\n * Masalah: path ke worker/loader script bisa berbeda antara:\r\n * - Development (src/*.ts)\r\n * - Built dist (dist/*.js / dist/*.cjs)\r\n * - Packed npm artifact (dist/ saja, tanpa src/)\r\n *\r\n * Solusi: resolve path secara hierarchical dengan fallback yang eksplisit.\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\nconst NODE_URL = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:url\" : null\r\nconst NODE_FS = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:fs\" : null\r\nconst NODE_PATH = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:path\" : null\r\n\r\nfunction getDirnameFromUrl(importMetaUrl: string): string {\r\n if (!importMetaUrl) return \"\"\r\n if (isBrowser) return \"\"\r\n\r\n try {\r\n const nodeUrl = require(NODE_URL!)\r\n return nodeUrl.fileURLToPath(importMetaUrl)\r\n } catch {\r\n if (importMetaUrl.startsWith(\"file://\")) {\r\n return importMetaUrl.slice(7)\r\n }\r\n return \"\"\r\n }\r\n}\r\n\r\nfunction resolvePath(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n try {\r\n const nodePath = require(NODE_PATH!)\r\n return nodePath.resolve(...segments)\r\n } catch {\r\n return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n }\r\n}\r\n\r\nfunction existsSync(path: string): boolean {\r\n if (isBrowser) return false\r\n try {\r\n const nodeFs = require(NODE_FS!)\r\n return nodeFs.existsSync(path)\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport interface WorkerPathOptions {\r\n /** Nama file worker tanpa extension */\r\n basename: string\r\n /** Import meta URL dari caller module */\r\n importMetaUrl: string\r\n /** Extensions yang dicoba secara urutan (default: [\".cjs\", \".js\", \".mjs\"]) */\r\n extensions?: string[]\r\n /** Sub-directories relatif dari runtimeDir yang dicoba */\r\n subdirs?: string[]\r\n /** Throw jika tidak ditemukan (default: true) */\r\n required?: boolean\r\n}\r\n\r\nexport interface WorkerPathResult {\r\n /** Absolute path ke worker file */\r\n path: string\r\n /** Extension yang ditemukan */\r\n extension: string\r\n /** Apakah ini dari CJS atau ESM artifact */\r\n format: \"cjs\" | \"esm\"\r\n}\r\n\r\n/**\r\n * Resolve worker/loader script path yang aman untuk release artifacts.\r\n *\r\n * Prioritas:\r\n * 1. CJS (.cjs) — untuk Node.js workers yang butuh require()\r\n * 2. JS (.js) — bundled output\r\n * 3. MJS (.mjs) — explicit ESM\r\n *\r\n * @example\r\n * const workerPath = resolveWorkerPath({\r\n * basename: \"scanner-worker\",\r\n * importMetaUrl: import.meta.url,\r\n * })\r\n * // → \"/path/to/dist/scanner-worker.cjs\"\r\n */\r\nexport function resolveWorkerPath(opts: WorkerPathOptions): WorkerPathResult {\r\n if (isBrowser) {\r\n throw new Error(\"Worker resolution not available in browser\")\r\n }\r\n\r\n const {\r\n basename,\r\n importMetaUrl,\r\n extensions = [\".cjs\", \".js\", \".mjs\"],\r\n subdirs = [\".\", \"workers\", \"lib\"],\r\n required = true,\r\n } = opts\r\n\r\n const runtimeDir = getDirnameFromUrl(importMetaUrl)\r\n\r\n // Try each subdir + extension combination\r\n for (const subdir of subdirs) {\r\n for (const ext of extensions) {\r\n const candidate = resolvePath(runtimeDir, subdir, `${basename}${ext}`)\r\n if (existsSync(candidate)) {\r\n return {\r\n path: candidate,\r\n extension: ext,\r\n format: ext === \".cjs\" ? \"cjs\" : \"esm\",\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (required) {\r\n const tried = subdirs.flatMap(d =>\r\n extensions.map(e => resolvePath(runtimeDir, d, `${basename}${e}`))\r\n )\r\n throw new Error(\r\n `[worker-resolver] Could not find worker script \"${basename}\".\\n` +\r\n `Tried:\\n${tried.map(p => ` - ${p}`).join(\"\\n\")}\\n` +\r\n `Ensure the package is built: npm run build`\r\n )\r\n }\r\n\r\n return { path: \"\", extension: \"\", format: \"cjs\" }\r\n}\r\n\r\n/**\r\n * Resolve loader path (untuk webpack/rspack/vite loaders).\r\n * Same as resolveWorkerPath but dengan nama yang lebih eksplisit.\r\n */\r\nexport function resolveLoaderPath(\r\n loaderBasename: string,\r\n importMetaUrl: string\r\n): string {\r\n return resolveWorkerPath({\r\n basename: loaderBasename,\r\n importMetaUrl,\r\n extensions: [\".cjs\", \".js\", \".mjs\"],\r\n subdirs: [\".\", \"loaders\", \"lib\"],\r\n }).path\r\n}","/**\r\n * Codegen helpers untuk tailwind-styled-v4.\r\n * Dari monorepo checklist: \"Tambahkan helper codegen bila memang relevan\"\r\n *\r\n * Berguna untuk:\r\n * - Generate component boilerplate dari config\r\n * - Generate type definitions dari variant schemas\r\n * - Generate Storybook stories dari cv() configs\r\n * - Generate migration codemods\r\n *\r\n * Design: tidak ada coupling ke compiler — hanya string manipulation.\r\n */\r\n\r\nexport interface ComponentCodegenOptions {\r\n /** Nama komponen (PascalCase) */\r\n name: string\r\n /** HTML tag */\r\n tag?: string\r\n /** Base classes */\r\n base?: string\r\n /** Variant definitions */\r\n variants?: Record<string, Record<string, string>>\r\n /** Default variants */\r\n defaultVariants?: Record<string, string>\r\n /** Compound variants */\r\n compoundVariants?: Array<{ class: string; [key: string]: string }>\r\n /** Framework target */\r\n framework?: \"react\" | \"vue\" | \"svelte\" | \"vanilla\"\r\n /** Include TypeScript types */\r\n withTypes?: boolean\r\n /** Include Storybook story */\r\n withStory?: boolean\r\n}\r\n\r\n/**\r\n * Generate cv() component boilerplate.\r\n *\r\n * @example\r\n * const code = generateComponentCode({\r\n * name: \"Button\",\r\n * tag: \"button\",\r\n * base: \"px-4 py-2 rounded font-medium\",\r\n * variants: {\r\n * intent: { primary: \"bg-blue-500 text-white\", danger: \"bg-red-500 text-white\" },\r\n * size: { sm: \"h-8 text-sm\", lg: \"h-12 text-lg\" },\r\n * },\r\n * defaultVariants: { intent: \"primary\", size: \"sm\" },\r\n * })\r\n */\r\nexport function generateComponentCode(opts: ComponentCodegenOptions): string {\r\n const {\r\n name,\r\n tag = \"div\",\r\n base = \"\",\r\n variants = {},\r\n defaultVariants = {},\r\n compoundVariants = [],\r\n framework = \"react\",\r\n withTypes = true,\r\n } = opts\r\n\r\n const variantKeys = Object.keys(variants)\r\n const lines: string[] = []\r\n\r\n // Imports\r\n if (framework === \"react\") {\r\n lines.push(`import { tw } from \"tailwind-styled-v4\"`)\r\n if (withTypes && variantKeys.length > 0) {\r\n lines.push(`import type { InferVariantProps } from \"tailwind-styled-v4\"`)\r\n }\r\n } else if (framework === \"vue\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/vue\"`)\r\n } else if (framework === \"svelte\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/svelte\"`)\r\n }\r\n\r\n lines.push(\"\")\r\n\r\n // Config object\r\n const configLines: string[] = [`export const ${name} = tw.${tag}({`]\r\n if (base) configLines.push(` base: \"${base}\",`)\r\n\r\n if (variantKeys.length > 0) {\r\n configLines.push(` variants: {`)\r\n for (const [key, values] of Object.entries(variants)) {\r\n configLines.push(` ${key}: {`)\r\n for (const [val, cls] of Object.entries(values)) {\r\n configLines.push(` ${val}: \"${cls}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n if (compoundVariants.length > 0) {\r\n configLines.push(` compoundVariants: [`)\r\n for (const cv of compoundVariants) {\r\n const { class: cls, ...conditions } = cv\r\n const condStr = Object.entries(conditions)\r\n .map(([k, v]) => `${k}: \"${v}\"`)\r\n .join(\", \")\r\n configLines.push(` { ${condStr}, class: \"${cls}\" },`)\r\n }\r\n configLines.push(` ],`)\r\n }\r\n\r\n if (Object.keys(defaultVariants).length > 0) {\r\n configLines.push(` defaultVariants: {`)\r\n for (const [k, v] of Object.entries(defaultVariants)) {\r\n configLines.push(` ${k}: \"${v}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n configLines.push(`})`)\r\n lines.push(...configLines)\r\n\r\n // TypeScript type alias\r\n if (withTypes && variantKeys.length > 0 && framework === \"react\") {\r\n lines.push(\"\")\r\n lines.push(`export type ${name}Props = InferVariantProps<typeof ${name}> & {`)\r\n lines.push(` children?: React.ReactNode`)\r\n lines.push(` className?: string`)\r\n lines.push(`}`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate Storybook stories dari component config.\r\n *\r\n * @example\r\n * const stories = generateStorybookStory({ name: \"Button\", ... })\r\n */\r\nexport function generateStorybookStory(opts: ComponentCodegenOptions): string {\r\n const { name, variants = {}, defaultVariants = {} } = opts\r\n const lines: string[] = []\r\n\r\n lines.push(`import type { Meta, StoryObj } from \"@storybook/react\"`)\r\n lines.push(`import { ${name} } from \"./${name}\"`)\r\n lines.push(`import { generateArgTypes, generateDefaultArgs } from \"tailwind-styled-v4\"`)\r\n lines.push(``)\r\n lines.push(`const config = {`)\r\n if (Object.keys(variants).length > 0) {\r\n lines.push(` variants: ${JSON.stringify(variants, null, 2).replace(/^/gm, \" \")},`)\r\n }\r\n if (Object.keys(defaultVariants).length > 0) {\r\n lines.push(` defaultVariants: ${JSON.stringify(defaultVariants)},`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const meta: Meta<typeof ${name}> = {`)\r\n lines.push(` title: \"Components/${name}\",`)\r\n lines.push(` component: ${name},`)\r\n lines.push(` argTypes: generateArgTypes(config),`)\r\n lines.push(` args: generateDefaultArgs(config),`)\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`export default meta`)\r\n lines.push(`type Story = StoryObj<typeof ${name}>`)\r\n lines.push(``)\r\n lines.push(`export const Default: Story = {}`)\r\n\r\n // Generate one story per variant combo (up to 6)\r\n const variantEntries = Object.entries(variants)\r\n if (variantEntries.length > 0) {\r\n const [firstKey, firstValues] = variantEntries[0]\r\n const valueKeys = Object.keys(firstValues).slice(0, 4)\r\n for (const val of valueKeys) {\r\n const storyName = `${firstKey.charAt(0).toUpperCase()}${firstKey.slice(1)}${val.charAt(0).toUpperCase()}${val.slice(1)}`\r\n lines.push(``)\r\n lines.push(`export const ${storyName}: Story = {`)\r\n lines.push(` args: { ${firstKey}: \"${val}\" },`)\r\n lines.push(`}`)\r\n }\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate migration codemod untuk class renames.\r\n * Berguna saat ada class yang deprecated atau diganti nama.\r\n *\r\n * @example\r\n * const codemod = generateClassRenameCodemod({\r\n * \"btn-primary\": \"bg-blue-500 text-white\",\r\n * \"btn-danger\": \"bg-red-500 text-white\",\r\n * })\r\n */\r\nexport function generateClassRenameCodemod(\r\n renames: Record<string, string>,\r\n opts: { format?: \"jscodeshift\" | \"regex\"; filename?: string } = {}\r\n): string {\r\n const { format = \"regex\", filename = \"rename-classes.mjs\" } = opts\r\n const lines: string[] = []\r\n\r\n if (format === \"regex\") {\r\n lines.push(`#!/usr/bin/env node`)\r\n lines.push(`/**`)\r\n lines.push(` * Auto-generated class rename codemod`)\r\n lines.push(` * Usage: node ${filename} ./src`)\r\n lines.push(` */`)\r\n lines.push(`import fs from \"node:fs\"`)\r\n lines.push(`import path from \"node:path\"`)\r\n lines.push(`import { execSync } from \"node:child_process\"`)\r\n lines.push(``)\r\n lines.push(`const RENAMES = {`)\r\n for (const [from, to] of Object.entries(renames)) {\r\n lines.push(` \"${from}\": \"${to}\",`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const dir = process.argv[2] ?? \".\"`)\r\n lines.push(`const files = execSync(\\`find \\${dir} -name \"*.tsx\" -o -name \"*.ts\" -o -name \"*.jsx\"\\`, { encoding: \"utf-8\" }).split(\"\\\\n\").filter(Boolean)`)\r\n lines.push(``)\r\n lines.push(`let total = 0`)\r\n lines.push(`for (const file of files) {`)\r\n lines.push(` let content = fs.readFileSync(file, \"utf-8\")`)\r\n lines.push(` let changed = false`)\r\n lines.push(` for (const [from, to] of Object.entries(RENAMES)) {`)\r\n lines.push(' const re = new RegExp(`\\\\\\\\b${from.replace(/[.*+?^${}()|[\\\\\\\\]\\\\\\\\]/g, \"\\\\\\\\$&\")}\\\\\\\\b`, \"g\")')\r\n lines.push(` if (re.test(content)) { content = content.replace(re, to); changed = true; total++ }`)\r\n lines.push(` }`)\r\n lines.push(` if (changed) fs.writeFileSync(file, content)`)\r\n lines.push(`}`)\r\n lines.push(`console.log(\\`Renamed \\${total} occurrences in \\${files.length} files\\`)`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate index barrel file untuk sebuah directory.\r\n *\r\n * @example\r\n * const barrel = generateBarrelFile([\"Button\", \"Card\", \"Input\"], \"src/components\")\r\n */\r\nexport function generateBarrelFile(\r\n exports: string[],\r\n dir: string,\r\n opts: { includeTypes?: boolean } = {}\r\n): string {\r\n const { includeTypes = true } = opts\r\n const lines: string[] = []\r\n lines.push(`// Auto-generated barrel file for ${dir}`)\r\n lines.push(`// Run: npx tsx scripts/generate-barrel.ts to regenerate`)\r\n lines.push(``)\r\n for (const name of exports) {\r\n lines.push(`export { default as ${name}, type ${name}Props } from \"./${name}\"`)\r\n if (includeTypes) {\r\n lines.push(`export type * from \"./${name}\"`)\r\n }\r\n }\r\n return lines.join(\"\\n\")\r\n}\r\n","/**\r\n * Prebuilt binary resolution untuk native NAPI bindings.\r\n * QA #1: Resolve native binary dari prebuilt packages atau local build.\r\n *\r\n * Prioritas:\r\n * 1. TW_NATIVE_PATH env var (explicit override)\r\n * 2. Prebuilt binary dari platform-specific npm package\r\n * 3. Local build dari source (developer mode)\r\n */\r\n\r\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","/**\r\n * Shared observability contract lintas CLI, dashboard, dan devtools.\r\n * Dari execution-log: \"Stabilkan shared observability contract\"\r\n *\r\n * Semua surface inspection (CLI why, DevTools trace, dashboard /inspect)\r\n * menggunakan type contract yang sama di sini.\r\n */\r\n\r\n// ── Class Inspection Surface ─────────────────────────────────────────────────\r\n\r\nexport interface ClassProperty {\r\n property: string\r\n value: string\r\n}\r\n\r\nexport interface ClassUsageLocation {\r\n file: string\r\n line: number\r\n column: number\r\n usage: \"direct\" | \"variant\" | \"component\"\r\n}\r\n\r\n/** Unified inspection result - dipakai oleh CLI, DevTools, Dashboard */\r\nexport interface ClassInspection {\r\n className: string\r\n /** CSS properties yang di-set oleh class ini */\r\n properties: ClassProperty[]\r\n /** Konflik dengan class lain (property conflicts) */\r\n conflicts: string[]\r\n /** Files yang menggunakan class ini */\r\n usedIn: ClassUsageLocation[]\r\n /** Risk level untuk removal */\r\n risk: \"low\" | \"medium\" | \"high\"\r\n /** Estimated bundle contribution dalam bytes */\r\n bundleBytes: number\r\n /** Raw CSS string */\r\n css: string\r\n /** Variant chain (hover:, md:, dll) */\r\n variants: string[]\r\n /** Timestamp */\r\n inspectedAt: number\r\n}\r\n\r\n// ── Build Trace Surface ───────────────────────────────────────────────────────\r\n\r\nexport interface BuildPhaseTrace {\r\n phase: \"scan\" | \"compile\" | \"engine\" | \"output\"\r\n durationMs: number\r\n filesProcessed?: number\r\n classesFound?: number\r\n}\r\n\r\nexport interface BuildTrace {\r\n buildId: string\r\n totalDurationMs: number\r\n phases: BuildPhaseTrace[]\r\n classCount: number\r\n fileCount: number\r\n cacheHitRate: number\r\n mode: string\r\n timestamp: number\r\n}\r\n\r\n// ── Dashboard Metrics Surface ─────────────────────────────────────────────────\r\n\r\nexport interface DashboardMetrics {\r\n buildMs: number\r\n scanMs: number\r\n analyzeMs: number\r\n compileMs: number\r\n classCount: number\r\n fileCount: number\r\n mode: string\r\n cacheHitRate?: number\r\n nativeVersion?: string\r\n}\r\n\r\nexport interface DashboardSummary {\r\n totalBuilds: number\r\n avgBuildMs: number\r\n p95BuildMs: number\r\n avgCacheHitRate: number\r\n lastBuild: DashboardMetrics | null\r\n}\r\n\r\n// ── Observability Client ──────────────────────────────────────────────────────\r\n\r\nexport interface ObservabilityClient {\r\n /** Fetch class inspection dari dashboard */\r\n inspectClass(className: string): Promise<ClassInspection | null>\r\n /** Fetch current metrics */\r\n getMetrics(): Promise<DashboardMetrics | null>\r\n /** Fetch summary */\r\n getSummary(): Promise<DashboardSummary | null>\r\n /** Fetch build history */\r\n getHistory(): Promise<BuildTrace[]>\r\n}\r\n\r\n/** Buat observability client yang connect ke dashboard server */\r\nexport function createObservabilityClient(\r\n opts: { baseUrl?: string; timeoutMs?: number } = {}\r\n): ObservabilityClient {\r\n const { baseUrl = \"http://localhost:7421\", timeoutMs = 3000 } = opts\r\n\r\n async function fetchJson<T>(path: string): Promise<T | null> {\r\n try {\r\n const res = await fetch(`${baseUrl}${path}`, {\r\n signal: AbortSignal.timeout(timeoutMs),\r\n })\r\n if (!res.ok) return null\r\n return await res.json() as T\r\n } catch {\r\n return null\r\n }\r\n }\r\n\r\n return {\r\n async inspectClass(className: string): Promise<ClassInspection | null> {\r\n const data = await fetchJson<ClassInspection>(`/inspect?class=${encodeURIComponent(className)}`)\r\n if (!data) return null\r\n return { ...data, inspectedAt: Date.now() }\r\n },\r\n\r\n async getMetrics(): Promise<DashboardMetrics | null> {\r\n return fetchJson<DashboardMetrics>(\"/metrics\")\r\n },\r\n\r\n async getSummary(): Promise<DashboardSummary | null> {\r\n return fetchJson<DashboardSummary>(\"/summary\")\r\n },\r\n\r\n async getHistory(): Promise<BuildTrace[]> {\r\n const data = await fetchJson<BuildTrace[]>(\"/history\")\r\n return Array.isArray(data) ? data : []\r\n },\r\n }\r\n}\r\n","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"]}
|
|
1
|
+
{"version":3,"sources":["../packages/domain/shared/src/trace.ts","../packages/domain/shared/src/error-codes.ts","../packages/domain/shared/src/compatibility.ts","../packages/domain/shared/src/native-schemas.ts","../packages/domain/shared/src/esmHelpers.ts","../packages/domain/shared/src/telemetry.ts","../packages/domain/shared/src/configSchemas.ts","../packages/domain/shared/src/workerResolver.ts","../packages/domain/shared/src/codegen.ts","../packages/domain/shared/src/native-resolution.ts","../packages/domain/shared/src/observability.ts","../packages/domain/shared/src/index.ts"],"names":["path","z","isBrowser","exports","fs","_require","createRequire"],"mappings":"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","file":"shared.mjs","sourcesContent":["/**\r\n * Shared trace utilities for CLI, devtools, and dashboard\r\n * \r\n * Provides reusable trace snapshot handling, formatting, and analysis\r\n * across the tailwind-styled-v4 ecosystem without introducing coupling.\r\n */\r\n\r\nexport interface TraceSnapshot {\r\n generatedAt: string\r\n buildMs: number | null\r\n scanMs: number | null\r\n analyzeMs: number | null\r\n compileMs: number | null\r\n memoryMb: { rss: number; heapUsed: number; heapTotal: number } | null\r\n classCount: number | null\r\n fileCount: number | null\r\n cssBytes: number | null\r\n mode: string | null\r\n eventsReceived?: number\r\n eventsProcessed?: number\r\n batchesProcessed?: number\r\n incrementalUpdates?: number\r\n fullRescans?: number\r\n}\r\n\r\nexport interface TraceSummary {\r\n workspace: {\r\n totalPackages: number\r\n totalFiles: number\r\n totalClasses: number\r\n lastScanDurationMs: number\r\n lastBuildDurationMs: number\r\n }\r\n cache: {\r\n hitRate: number\r\n totalEntries: number\r\n memoryUsageMb: number\r\n }\r\n pipeline: {\r\n scanDurationMs: number\r\n analyzeDurationMs: number\r\n compileDurationMs: number\r\n totalDurationMs: number\r\n }\r\n health: {\r\n status: \"healthy\" | \"degraded\" | \"unhealthy\"\r\n issues: Array<{ severity: string; message: string }>\r\n }\r\n}\r\n\r\n/**\r\n * Get health status color for UI rendering\r\n */\r\nexport function getHealthColor(status?: string): string {\r\n switch (status) {\r\n case \"healthy\":\r\n return \"#34d399\"\r\n case \"degraded\":\r\n return \"#fbbf24\"\r\n case \"unhealthy\":\r\n return \"#f87171\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Get mode color for UI rendering\r\n */\r\nexport function getModeColor(mode?: string | null): string {\r\n switch (mode) {\r\n case \"build\":\r\n return \"#fbbf24\"\r\n case \"watch\":\r\n return \"#34d399\"\r\n case \"jit\":\r\n return \"#60a5fa\"\r\n case \"error\":\r\n return \"#f87171\"\r\n case \"idle\":\r\n return \"#71717a\"\r\n default:\r\n return \"#52525b\"\r\n }\r\n}\r\n\r\n/**\r\n * Format memory in human-readable format\r\n */\r\nexport function formatMemory(bytes: number): string {\r\n if (bytes < 1024) return `${Math.round(bytes)}B`\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`\r\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`\r\n}\r\n\r\n/**\r\n * Format duration in human-readable format\r\n */\r\nexport function formatDuration(ms: number | null): string {\r\n if (ms === null) return \"—\"\r\n if (ms < 1000) return `${ms}ms`\r\n return `${(ms / 1000).toFixed(1)}s`\r\n}\r\n\r\n/**\r\n * Calculate health status from metrics\r\n */\r\nexport function calculateHealth(\r\n metrics: TraceSnapshot,\r\n summary?: TraceSummary\r\n): \"healthy\" | \"degraded\" | \"unhealthy\" {\r\n if (summary?.health?.status) return summary.health.status\r\n\r\n // Fallback to simple heuristics\r\n if (metrics.mode === \"error\") return \"unhealthy\"\r\n if ((metrics.buildMs ?? 0) > 5000) return \"degraded\"\r\n if (metrics.memoryMb && metrics.memoryMb.heapUsed > 500) return \"degraded\"\r\n return \"healthy\"\r\n}\r\n\r\n/**\r\n * Get color for build time indicator\r\n */\r\nexport function getBuildTimeColor(ms: number | null): string {\r\n if (ms === null) return \"#52525b\"\r\n if (ms > 1000) return \"#f87171\" // red - very slow\r\n if (ms > 500) return \"#fbbf24\" // amber - acceptable\r\n return \"#34d399\" // green - fast\r\n}\r\n\r\n/**\r\n * Get color for memory usage indicator\r\n */\r\nexport function getMemoryColor(mb: number): string {\r\n if (mb > 500) return \"#f87171\" // red - high\r\n if (mb > 250) return \"#fbbf24\" // amber - moderate\r\n return \"#34d399\" // green - low\r\n}\r\n\r\n/**\r\n * Create trace snapshot from dashboard data\r\n */\r\nexport function createTraceSnapshot(data: Record<string, unknown>): TraceSnapshot {\r\n return {\r\n generatedAt: (data.generatedAt as string) || new Date().toISOString(),\r\n buildMs: (data.buildMs as number) ?? null,\r\n scanMs: (data.scanMs as number) ?? null,\r\n analyzeMs: (data.analyzeMs as number) ?? null,\r\n compileMs: (data.compileMs as number) ?? null,\r\n memoryMb: (data.memoryMb as { rss: number; heapUsed: number; heapTotal: number } | null) ?? null,\r\n classCount: (data.classCount as number) ?? null,\r\n fileCount: (data.fileCount as number) ?? null,\r\n cssBytes: (data.cssBytes as number) ?? null,\r\n mode: (data.mode as string) ?? null,\r\n eventsReceived: (data.eventsReceived as number | undefined) ?? undefined,\r\n eventsProcessed: (data.eventsProcessed as number | undefined) ?? undefined,\r\n batchesProcessed: (data.batchesProcessed as number | undefined) ?? undefined,\r\n incrementalUpdates: (data.incrementalUpdates as number | undefined) ?? undefined,\r\n fullRescans: (data.fullRescans as number | undefined) ?? undefined,\r\n }\r\n}\r\n\r\n/**\r\n * Calculate pipeline time distribution\r\n */\r\nexport function getPipelinePercentages(metrics: TraceSnapshot): {\r\n scanPct: number\r\n analyzePct: number\r\n compilePct: number\r\n} {\r\n const scan = metrics.scanMs ?? 0\r\n const analyze = metrics.analyzeMs ?? 0\r\n const compile = metrics.compileMs ?? 0\r\n const total = scan + analyze + compile\r\n\r\n if (total === 0) {\r\n return { scanPct: 0, analyzePct: 0, compilePct: 0 }\r\n }\r\n\r\n return {\r\n scanPct: (scan / total) * 100,\r\n analyzePct: (analyze / total) * 100,\r\n compilePct: (compile / total) * 100,\r\n }\r\n}\r\n","/**\r\n * Error code registry — single source of truth for all error codes.\r\n *\r\n * Format: E[0-9]xx for errors, W[0-9]xx for warnings.\r\n * Use with TwError for consistent error handling.\r\n */\r\n\r\nexport const ERROR_CODES = {\r\n // E0xx — Native binding\r\n NATIVE_NOT_FOUND: \"E001\",\r\n NATIVE_LOAD_FAILED: \"E002\",\r\n NATIVE_VERSION_MISMATCH: \"E003\",\r\n SCANNER_NATIVE_NOT_FOUND: \"E004\",\r\n SCANNER_HASH_FAILED: \"E005\",\r\n NATIVE_TRANSFORM_UNAVAILABLE: \"E006\",\r\n\r\n // E2xx — Compilation\r\n MISSING_REACT_IMPORT: \"E201\",\r\n UNSUPPORTED_PATTERN: \"E202\",\r\n TEMPLATE_PARSE_ERROR: \"E203\",\r\n COMPILE_TIMEOUT: \"E204\",\r\n\r\n // E3xx — Compatibility\r\n TAILWIND_VERSION_UNSUPPORTED: \"E301\",\r\n NODE_VERSION_UNSUPPORTED: \"E302\",\r\n\r\n // E4xx — Cache\r\n CACHE_READ_FAILED: \"E401\",\r\n CACHE_WRITE_FAILED: \"E402\",\r\n CACHE_CORRUPTED: \"E403\",\r\n\r\n // E5xx — RSC\r\n RSC_BOUNDARY_CONFLICT: \"E501\",\r\n\r\n // W1xx — Warnings\r\n DYNAMIC_CONTENT: \"W101\",\r\n INVALID_VARIANT_VALUE: \"W201\",\r\n DEPRECATED_MODE: \"W301\",\r\n} as const\r\n\r\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]\r\n\r\nconst ERROR_SUGGESTIONS: Record<string, string> = {\r\n E001: \"Run: npm install @tailwind-styled/native-{platform} or build from source\",\r\n E002: \"Try: npm rebuild or reinstall the package\",\r\n E003: \"Run: npm install tailwind-styled-v4@latest to sync versions\",\r\n E004: \"Run: npm install @tailwind-styled/scanner\",\r\n E006: \"Run: npm install @tailwind-styled/compiler\",\r\n E301: \"Upgrade: npm install tailwindcss@^4\",\r\n}\r\n\r\nexport function getSuggestion(code: string): string | undefined {\r\n return ERROR_SUGGESTIONS[code]\r\n}\r\n\r\nexport function formatErrorCode(code: string): string {\r\n const prefix = code.startsWith(\"E\") ? \"Error\" : code.startsWith(\"W\") ? \"Warning\" : \"Code\"\r\n return `[${prefix} ${code}]`\r\n}\r\n","/**\r\n * Tailwind CSS version detection and compatibility checks.\r\n *\r\n * tailwind-styled-v4 requires Tailwind CSS v4.x.\r\n * This module detects the installed version and provides\r\n * clear error messages for unsupported versions.\r\n */\r\n\r\nexport interface TailwindInfo {\r\n version: string\r\n major: number\r\n supported: boolean\r\n path: string | null\r\n}\r\n\r\nexport function detectTailwind(): TailwindInfo {\r\n try {\r\n const pkgPath = require.resolve(\"tailwindcss/package.json\")\r\n const { version } = require(pkgPath)\r\n const major = Number.parseInt(version.split(\".\")[0], 10)\r\n return { version, major, supported: major >= 4, path: pkgPath }\r\n } catch {\r\n return { version: \"not-installed\", major: 0, supported: false, path: null }\r\n }\r\n}\r\n\r\nexport function assertTailwindV4(): void {\r\n const info = detectTailwind()\r\n if (!info.supported) {\r\n const message = info.major === 0\r\n ? \"tailwindcss is not installed. Run: npm install tailwindcss@^4\"\r\n : `tailwind-styled-v4 requires Tailwind CSS v4.x. Found: v${info.version}. Upgrade: npm install tailwindcss@^4`\r\n\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`[tailwind-styled] ${message}`)\r\n }\r\n }\r\n}\r\n\r\nexport function getTailwindVersion(): string {\r\n return detectTailwind().version\r\n}\r\n\r\nexport function isTailwindV4(): boolean {\r\n return detectTailwind().supported\r\n}\r\n","/**\r\n * Zod schemas untuk validasi native binding responses.\r\n *\r\n * Dipakai untuk memvalidasi data yang datang dari Rust native bindings\r\n * sebelum masuk ke domain logic TypeScript.\r\n *\r\n * Pattern:\r\n * const raw = native.scanWorkspace(root)\r\n * const validated = NativeScanResultSchema.parse(raw)\r\n * // Setelah ini, gunakan `validated` (trusted typed object)\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan ─────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeScanFileSchema = z.object({\r\n file: z.string().min(1, \"file path cannot be empty\"),\r\n classes: z.array(z.string()),\r\n hash: z.string().optional(),\r\n})\r\n\r\nexport type NativeScanFile = z.infer<typeof NativeScanFileSchema>\r\n\r\nexport const NativeScanResultSchema = z.object({\r\n files: z.array(NativeScanFileSchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueClasses: z.array(z.string()),\r\n})\r\n\r\nexport type NativeScanResult = z.infer<typeof NativeScanResultSchema>\r\n\r\n// ── Analyzer ──────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: z.number().int().nonnegative(),\r\n files: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeClassUsage = z.infer<typeof NativeClassUsageSchema>\r\n\r\nexport const NativeAnalyzerReportSchema = z.object({\r\n root: z.string(),\r\n topClasses: z.array(NativeClassUsageSchema).optional(),\r\n safelist: z.array(z.string()).optional(),\r\n css: z.string().optional(),\r\n conflicts: z.array(z.unknown()).optional(),\r\n unusedClasses: z.array(z.string()).optional(),\r\n durationMs: z.number().nonnegative().optional(),\r\n})\r\n\r\nexport type NativeAnalyzerReport = z.infer<typeof NativeAnalyzerReportSchema>\r\n\r\n// ── Transform ─────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeTransformResultSchema = z.object({\r\n code: z.string(),\r\n classes: z.array(z.string()),\r\n changed: z.boolean(),\r\n rsc: z.object({\r\n isServer: z.boolean(),\r\n needsClientDirective: z.boolean(),\r\n clientReasons: z.array(z.string()),\r\n }).optional(),\r\n})\r\n\r\nexport type NativeTransformResult = z.infer<typeof NativeTransformResultSchema>\r\n\r\n// ── CSS Compile ───────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unresolvedClasses: z.array(z.string()).optional(),\r\n})\r\n\r\nexport type NativeCssCompileResult = z.infer<typeof NativeCssCompileResultSchema>\r\n\r\n// ── Watch ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeWatchEventSchema = z.object({\r\n type: z.enum([\"change\", \"unlink\", \"create\"]),\r\n path: z.string(),\r\n})\r\n\r\nexport type NativeWatchEvent = z.infer<typeof NativeWatchEventSchema>\r\n\r\nexport const NativeWatchResultSchema = z.object({\r\n status: z.enum([\"ok\", \"error\"]),\r\n handleId: z.string().optional(),\r\n error: z.string().optional(),\r\n})\r\n\r\nexport type NativeWatchResult = z.infer<typeof NativeWatchResultSchema>\r\n\r\n// ── Cache ────────────────────────────────────────────────────────────────────\r\n\r\nexport const NativeCacheEntrySchema = z.object({\r\n file: z.string(),\r\n hash: z.string(),\r\n classes: z.array(z.string()),\r\n timestamp: z.number(),\r\n size: z.number().optional(),\r\n})\r\n\r\nexport type NativeCacheEntry = z.infer<typeof NativeCacheEntrySchema>\r\n\r\nexport const NativeCacheReadResultSchema = z.object({\r\n entries: z.array(NativeCacheEntrySchema),\r\n version: z.string().optional(),\r\n})\r\n\r\nexport type NativeCacheReadResult = z.infer<typeof NativeCacheReadResultSchema>\r\n\r\n// ── Helpers ───────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Validasi native binding response dengan fallback ke nilai default.\r\n * Gunakan ini di hot path agar tidak crash saat native returns unexpected shape.\r\n *\r\n * @example\r\n * const raw = native.scanWorkspace(root)\r\n * const result = safeParseNative(NativeScanResultSchema, raw, {\r\n * files: [], totalFiles: 0, uniqueClasses: []\r\n * })\r\n */\r\nexport function safeParseNative<T>(\r\n schema: z.ZodType<T>,\r\n data: unknown,\r\n fallback: T\r\n): T {\r\n const result = schema.safeParse(data)\r\n return result.success ? result.data : fallback\r\n}\r\n\r\n/**\r\n * Parse native response — throw TwError jika gagal.\r\n * Gunakan ini di boundary entry points.\r\n */\r\nexport function parseNative<T>(schema: z.ZodType<T>, data: unknown, context: string): T {\r\n const result = schema.safeParse(data)\r\n if (!result.success) {\r\n const first = result.error.issues[0]\r\n const path = first?.path?.join(\".\") ?? \"(root)\"\r\n throw new Error(\r\n `[${context}] Native binding returned unexpected data: ${path}: ${first?.message ?? \"validation failed\"}`\r\n )\r\n }\r\n return result.data\r\n}\r\n","/**\r\n * ESM-safe runtime helpers untuk monorepo.\r\n *\r\n * Menggantikan pola fragile seperti:\r\n * - `createRequire(import.meta.url)` → gunakan `createEsmRequire()`\r\n * - `__dirname` → gunakan `getDirname(import.meta.url)`\r\n * - `__filename` → gunakan `getFilename(import.meta.url)`\r\n *\r\n * Semua helper ini bekerja di ESM dan CJS.\r\n *\r\n * @module @tailwind-styled/shared/esmHelpers\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// Safe check for require availability - works in both CJS and ESM\r\nlet nodeModuleRef: any = null\r\nfunction getNodeModuleRef() {\r\n if (isBrowser) return null\r\n if (nodeModuleRef !== null) return nodeModuleRef\r\n try {\r\n // Test if require actually works\r\n const test = typeof require === 'function' ? require('node:module') : null\r\n nodeModuleRef = test\r\n return test\r\n } catch {\r\n nodeModuleRef = null\r\n return null\r\n }\r\n}\r\n\r\nlet _nodePath: any = null\r\nlet _nodeUrl: any = null\r\nlet _nodeFs: any = null\r\nlet _nodeCrypto: any = null\r\nlet _nodeOs: any = null\r\n\r\nfunction getNodePath() {\r\n if (isBrowser) throw new Error(\"node:path not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodePath) _nodePath = nodeRequire.createRequire(import.meta.url)(\"node:path\")\r\n return _nodePath!\r\n}\r\nfunction getNodeUrl() {\r\n if (isBrowser) throw new Error(\"node:url not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeUrl) _nodeUrl = nodeRequire.createRequire(import.meta.url)(\"node:url\")\r\n return _nodeUrl!\r\n}\r\nfunction getNodeFs() {\r\n if (isBrowser) throw new Error(\"node:fs not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeFs) _nodeFs = nodeRequire.createRequire(import.meta.url)(\"node:fs\")\r\n return _nodeFs!\r\n}\r\nfunction getNodeCrypto() {\r\n if (isBrowser) throw new Error(\"node:crypto not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeCrypto) _nodeCrypto = nodeRequire.createRequire(import.meta.url)(\"node:crypto\")\r\n return _nodeCrypto!\r\n}\r\nfunction getNodeOs() {\r\n if (isBrowser) throw new Error(\"node:os not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n if (!_nodeOs) _nodeOs = nodeRequire.createRequire(import.meta.url)(\"node:os\")\r\n return _nodeOs!\r\n}\r\n\r\n/**\r\n * Buat `require()` function yang relative terhadap sebuah ESM module.\r\n *\r\n * @example\r\n * // Ganti: createRequire(import.meta.url)(\"some-pkg\")\r\n * const req = createEsmRequire(import.meta.url)\r\n * const mod = req(\"some-pkg\")\r\n */\r\nexport function createEsmRequire(importMetaUrl: string): NodeRequire {\r\n if (isBrowser) throw new Error(\"require not available in browser\")\r\n const nodeRequire = getNodeModuleRef()\r\n if (!nodeRequire) throw new Error(\"require not available\")\r\n return nodeRequire.createRequire(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Dapat `__dirname` dari `import.meta.url`.\r\n *\r\n * @example\r\n * // Ganti: const __dirname = ...\r\n * const dir = getDirname(import.meta.url)\r\n */\r\nexport function getDirname(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n const nodePath = getNodePath()\r\n const nodeUrl = getNodeUrl()\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n}\r\n\r\n/**\r\n * Dapat `__filename` dari `import.meta.url`.\r\n */\r\nexport function getFilename(importMetaUrl: string): string {\r\n if (isBrowser) return \"\"\r\n return getNodeUrl().fileURLToPath(importMetaUrl)\r\n}\r\n\r\n/**\r\n * Resolve path dari root monorepo (bukan CWD).\r\n * Berguna untuk scripts dan tools yang dipanggil dari lokasi berbeda.\r\n *\r\n * @example\r\n * const root = resolveFromRoot(\"packages/domain/shared/src\")\r\n */\r\nexport function resolveFromRoot(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\")\r\n\r\n const nodePath = getNodePath()\r\n const nodeFs = getNodeFs()\r\n \r\n let dir = getDirname(import.meta.url)\r\n for (let i = 0; i < 10; i++) {\r\n const pkgPath = nodePath.join(dir, \"package.json\")\r\n try {\r\n const pkg = JSON.parse(nodeFs.readFileSync(pkgPath, \"utf-8\"))\r\n if (pkg.workspaces) {\r\n return nodePath.resolve(dir, ...segments)\r\n }\r\n } catch { /* intentionally silent */ }\r\n dir = nodePath.dirname(dir)\r\n }\r\n return nodePath.resolve(process.cwd(), ...segments)\r\n}\r\n\r\n/**\r\n * Require sebuah module dengan fallback ke null jika tidak tersedia.\r\n * Berguna untuk optional dependencies.\r\n *\r\n * @example\r\n * const oxc = tryRequire(\"oxc-parser\", import.meta.url)\r\n * if (!oxc) console.warn(\"oxc-parser not installed\")\r\n */\r\nexport function tryRequire<T = unknown>(\r\n moduleName: string,\r\n importMetaUrl: string\r\n): T | null {\r\n if (isBrowser) return null\r\n try {\r\n return createEsmRequire(importMetaUrl)(moduleName) as T\r\n } catch { /* intentionally silent — optional dep */ }\r\n return null\r\n}\r\n\r\n/**\r\n * Resolve .node binary path yang cross-platform dan ESM-safe.\r\n * Menggantikan pola `path.resolve(__dirname, \"../native.node\")`.\r\n */\r\nexport function resolveNativeNodePath(\r\n importMetaUrl: string,\r\n ...relativeSegments: string[]\r\n): string {\r\n if (isBrowser) return relativeSegments.join(\"/\")\r\n return getNodePath().resolve(getDirname(importMetaUrl), ...relativeSegments)\r\n}\r\n","/**\r\n * Build performance telemetry untuk tailwind-styled-v4.\r\n * QA #14: Visibility ke build performance — scan speed, cache hit rate, trends.\r\n *\r\n * Design: zero-dependency, ring-buffer based, opt-in via TWS_TELEMETRY=1.\r\n */\r\n\r\nexport interface BuildPhases {\r\n scan: number\r\n compile: number\r\n engine: number\r\n output: number\r\n}\r\n\r\nexport interface BuildTelemetry {\r\n timestamp: number\r\n durationMs: number\r\n filesScanned: number\r\n filesCached: number\r\n classesExtracted: number\r\n nativeVersion?: string\r\n phases: BuildPhases\r\n cacheHitRate: number\r\n mode?: string\r\n}\r\n\r\nexport interface TelemetrySummary {\r\n totalBuilds: number\r\n avgDurationMs: number\r\n p95DurationMs: number\r\n avgCacheHitRate: number\r\n avgFilesScanned: number\r\n avgClassesExtracted: number\r\n phaseAvgs: BuildPhases\r\n slowestBuildMs: number\r\n fastestBuildMs: number\r\n}\r\n\r\nconst RING_BUFFER_SIZE = 100\r\n\r\nexport class TelemetryCollector {\r\n private data: BuildTelemetry[] = []\r\n private enabled: boolean\r\n\r\n constructor(enabled?: boolean) {\r\n this.enabled =\r\n enabled ??\r\n (process.env.TWS_TELEMETRY === \"1\" || process.env.TWS_TELEMETRY === \"true\")\r\n }\r\n\r\n record(build: BuildTelemetry): void {\r\n if (!this.enabled) return\r\n if (this.data.length >= RING_BUFFER_SIZE) {\r\n this.data.shift() // ring buffer — hapus entri tertua\r\n }\r\n this.data.push(build)\r\n }\r\n\r\n snapshot(): BuildTelemetry[] {\r\n return [...this.data]\r\n }\r\n\r\n summary(): TelemetrySummary | null {\r\n if (this.data.length === 0) return null\r\n\r\n const durations = this.data.map(d => d.durationMs).sort((a, b) => a - b)\r\n const p95Idx = Math.floor(durations.length * 0.95)\r\n\r\n const avg = (arr: number[]) => arr.reduce((a, b) => a + b, 0) / arr.length\r\n\r\n return {\r\n totalBuilds: this.data.length,\r\n avgDurationMs: avg(durations),\r\n p95DurationMs: durations[p95Idx] ?? durations[durations.length - 1] ?? 0,\r\n avgCacheHitRate: avg(this.data.map(d => d.cacheHitRate)),\r\n avgFilesScanned: avg(this.data.map(d => d.filesScanned)),\r\n avgClassesExtracted: avg(this.data.map(d => d.classesExtracted)),\r\n phaseAvgs: {\r\n scan: avg(this.data.map(d => d.phases.scan)),\r\n compile: avg(this.data.map(d => d.phases.compile)),\r\n engine: avg(this.data.map(d => d.phases.engine)),\r\n output: avg(this.data.map(d => d.phases.output)),\r\n },\r\n slowestBuildMs: durations[durations.length - 1] ?? 0,\r\n fastestBuildMs: durations[0] ?? 0,\r\n }\r\n }\r\n\r\n reset(): void {\r\n this.data = []\r\n }\r\n\r\n /** Format ringkas untuk CLI output */\r\n formatCli(): string {\r\n const s = this.summary()\r\n if (!s) return \"[telemetry] no data\"\r\n return [\r\n `[telemetry] ${s.totalBuilds} builds`,\r\n `avg ${s.avgDurationMs.toFixed(0)}ms`,\r\n `p95 ${s.p95DurationMs.toFixed(0)}ms`,\r\n `cache hit ${(s.avgCacheHitRate * 100).toFixed(0)}%`,\r\n `${s.avgFilesScanned.toFixed(0)} files`,\r\n ].join(\" · \")\r\n }\r\n\r\n /** Export sebagai JSON untuk dashboard/prometheus */\r\n toJSON(): object {\r\n return {\r\n summary: this.summary(),\r\n history: this.data.slice(-20), // last 20 builds\r\n }\r\n }\r\n}\r\n\r\n/** Global singleton telemetry collector */\r\nlet _globalCollector: TelemetryCollector | null = null\r\n\r\nexport function getGlobalTelemetry(): TelemetryCollector {\r\n if (!_globalCollector) {\r\n _globalCollector = new TelemetryCollector()\r\n }\r\n return _globalCollector\r\n}\r\n\r\nexport function resetGlobalTelemetry(): void {\r\n _globalCollector = null\r\n}\r\n\r\n/** Helper untuk record build dengan timing otomatis */\r\nexport function createBuildTimer() {\r\n const start = Date.now()\r\n const phases: Partial<BuildPhases> = {}\r\n let phaseStart = start\r\n\r\n return {\r\n phase(name: keyof BuildPhases): void {\r\n const now = Date.now()\r\n phases[name] = now - phaseStart\r\n phaseStart = now\r\n },\r\n finish(opts: Omit<BuildTelemetry, \"timestamp\" | \"durationMs\" | \"phases\" | \"cacheHitRate\"> & {\r\n cacheHitRate?: number\r\n }): BuildTelemetry {\r\n const now = Date.now()\r\n const record: BuildTelemetry = {\r\n timestamp: start,\r\n durationMs: now - start,\r\n phases: {\r\n scan: phases.scan ?? 0,\r\n compile: phases.compile ?? 0,\r\n engine: phases.engine ?? 0,\r\n output: phases.output ?? now - start,\r\n },\r\n cacheHitRate: opts.cacheHitRate ?? 0,\r\n ...opts,\r\n }\r\n getGlobalTelemetry().record(record)\r\n return record\r\n },\r\n }\r\n}\r\n","/**\r\n * Zod schemas untuk JSON, cache, manifest, dan config reads.\r\n * PLAN.md: \"JSON, cache, manifest, and config reads should be parsed into typed schema-backed values\"\r\n *\r\n * Pattern: validate at the I/O boundary, pass typed values inward.\r\n */\r\nimport { z } from \"zod\"\r\n\r\n// ── Scan Cache ────────────────────────────────────────────────────────────────\r\n\r\n/** Schema untuk .tailwind-styled/scan-cache.json */\r\nexport const ScanCacheClassEntrySchema = z.object({\r\n name: z.string().min(1),\r\n usedIn: z.array(z.string()),\r\n risk: z.enum([\"low\", \"medium\", \"high\"]).default(\"low\"),\r\n bundleContribution: z.number().nonnegative().default(0),\r\n variants: z.array(z.string()).default([]),\r\n})\r\nexport type ScanCacheClassEntry = z.infer<typeof ScanCacheClassEntrySchema>\r\n\r\nexport const ScanCacheSchema = z.object({\r\n version: z.string().default(\"1\"),\r\n generatedAt: z.string(),\r\n root: z.string(),\r\n classNames: z.array(ScanCacheClassEntrySchema),\r\n totalFiles: z.number().int().nonnegative(),\r\n uniqueCount: z.number().int().nonnegative(),\r\n})\r\nexport type ScanCache = z.infer<typeof ScanCacheSchema>\r\n\r\n// ── Tailwind Config ───────────────────────────────────────────────────────────\r\n\r\nexport const TailwindContentItemSchema = z.union([\r\n z.string(),\r\n z.object({\r\n raw: z.string(),\r\n extension: z.string().optional(),\r\n }),\r\n z.object({\r\n files: z.array(z.string()),\r\n transform: z.record(z.string(), z.unknown()).optional(),\r\n }),\r\n])\r\n\r\nexport const TailwindConfigSchema = z.object({\r\n content: z.array(TailwindContentItemSchema).optional(),\r\n theme: z.record(z.string(), z.unknown()).optional(),\r\n plugins: z.array(z.unknown()).optional(),\r\n darkMode: z.union([z.literal(\"class\"), z.literal(\"media\"), z.literal(false)]).optional(),\r\n prefix: z.string().optional(),\r\n safelist: z.array(z.union([z.string(), z.object({ pattern: z.instanceof(RegExp) })])).optional(),\r\n blocklist: z.array(z.string()).optional(),\r\n}).passthrough() // Allow additional Tailwind v4 config keys\r\nexport type TailwindConfig = z.infer<typeof TailwindConfigSchema>\r\n\r\n// ── Plugin Registry Entry ─────────────────────────────────────────────────────\r\n\r\nexport const RegistryPluginEntrySchema = z.object({\r\n name: z.string().min(1),\r\n description: z.string(),\r\n version: z.string(),\r\n tags: z.array(z.string()).default([]),\r\n official: z.boolean().default(false),\r\n docs: z.string().url().optional(),\r\n install: z.string().optional(),\r\n integrity: z.string().optional(),\r\n})\r\nexport type RegistryPluginEntry = z.infer<typeof RegistryPluginEntrySchema>\r\n\r\nexport const RegistryFileSchema = z.object({\r\n version: z.string(),\r\n official: z.array(RegistryPluginEntrySchema).default([]),\r\n community: z.array(RegistryPluginEntrySchema).default([]),\r\n})\r\nexport type RegistryFile = z.infer<typeof RegistryFileSchema>\r\n\r\n// ── Package.json (minimal) ────────────────────────────────────────────────────\r\n\r\nexport const PackageJsonSchema = z.object({\r\n name: z.string(),\r\n version: z.string(),\r\n scripts: z.record(z.string(), z.string()).optional(),\r\n dependencies: z.record(z.string(), z.string()).optional(),\r\n devDependencies: z.record(z.string(), z.string()).optional(),\r\n peerDependencies: z.record(z.string(), z.string()).optional(),\r\n main: z.string().optional(),\r\n module: z.string().optional(),\r\n exports: z.unknown().optional(),\r\n type: z.enum([\"module\", \"commonjs\"]).optional(),\r\n}).passthrough()\r\nexport type PackageJson = z.infer<typeof PackageJsonSchema>\r\n\r\n// ── Helpers ────────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Parse JSON string dengan schema validation.\r\n * Melempar error yang human-readable jika gagal.\r\n *\r\n * @example\r\n * const cache = parseJsonWithSchema(\r\n * fs.readFileSync(\".tailwind-styled/scan-cache.json\", \"utf-8\"),\r\n * ScanCacheSchema,\r\n * \"scan-cache.json\"\r\n * )\r\n */\r\nexport function parseJsonWithSchema<T>(\r\n jsonString: string,\r\n schema: z.ZodType<T>,\r\n sourceName: string\r\n): T {\r\n let parsed: unknown\r\n try {\r\n parsed = JSON.parse(jsonString)\r\n } catch (err) {\r\n throw new Error(\r\n `[${sourceName}] Invalid JSON: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n const result = schema.safeParse(parsed)\r\n if (!result.success) {\r\n const issues = result.error.issues\r\n .map((e) => ` ${e.path.join(\".\")}: ${e.message}`)\r\n .join(\"\\n\")\r\n throw new Error(`[${sourceName}] Schema validation failed:\\n${issues}`)\r\n }\r\n\r\n return result.data\r\n}\r\n\r\n/**\r\n * Parse JSON file dengan schema validation.\r\n *\r\n * @example\r\n * const pkg = parseJsonFileWithSchema(\"package.json\", PackageJsonSchema)\r\n */\r\nexport function parseJsonFileWithSchema<T>(\r\n filePath: string,\r\n schema: z.ZodType<T>\r\n): T {\r\n const { readFileSync } = require(\"node:fs\") as typeof import(\"node:fs\")\r\n const { basename } = require(\"node:path\") as typeof import(\"node:path\")\r\n\r\n let content: string\r\n try {\r\n content = readFileSync(filePath, \"utf-8\")\r\n } catch (err) {\r\n throw new Error(\r\n `[${basename(filePath)}] Could not read file: ${err instanceof Error ? err.message : String(err)}`\r\n )\r\n }\r\n\r\n return parseJsonWithSchema(content, schema, basename(filePath))\r\n}\r\n","/**\r\n * Worker/bootstrap path resolution untuk artifact release safety.\r\n * Dari monorepo checklist: \"Perkuat worker/bootstrap path agar artifact release aman\"\r\n *\r\n * Masalah: path ke worker/loader script bisa berbeda antara:\r\n * - Development (src/*.ts)\r\n * - Built dist (dist/*.js / dist/*.cjs)\r\n * - Packed npm artifact (dist/ saja, tanpa src/)\r\n *\r\n * Solusi: resolve path secara hierarchical dengan fallback yang eksplisit.\r\n */\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\nconst NODE_URL = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:url\" : null\r\nconst NODE_FS = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:fs\" : null\r\nconst NODE_PATH = typeof window === \"undefined\" || typeof document === \"undefined\" ? \"node:path\" : null\r\n\r\nfunction getDirnameFromUrl(importMetaUrl: string): string {\r\n if (!importMetaUrl) return \"\"\r\n if (isBrowser) return \"\"\r\n\r\n try {\r\n const nodeUrl = require(NODE_URL!)\r\n const nodePath = require(NODE_PATH!)\r\n // fileURLToPath returns the file path — we need the directory\r\n return nodePath.dirname(nodeUrl.fileURLToPath(importMetaUrl))\r\n } catch {\r\n if (importMetaUrl.startsWith(\"file://\")) {\r\n const filePath = importMetaUrl.slice(7)\r\n // strip the filename to get the directory\r\n const lastSlash = filePath.lastIndexOf(\"/\")\r\n return lastSlash >= 0 ? filePath.slice(0, lastSlash) : filePath\r\n }\r\n return \"\"\r\n }\r\n}\r\n\r\nfunction resolvePath(...segments: string[]): string {\r\n if (isBrowser) return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n try {\r\n const nodePath = require(NODE_PATH!)\r\n return nodePath.resolve(...segments)\r\n } catch {\r\n return segments.join(\"/\").replace(/\\/+/g, \"/\")\r\n }\r\n}\r\n\r\nfunction existsSync(path: string): boolean {\r\n if (isBrowser) return false\r\n try {\r\n const nodeFs = require(NODE_FS!)\r\n return nodeFs.existsSync(path)\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport interface WorkerPathOptions {\r\n /** Nama file worker tanpa extension */\r\n basename: string\r\n /** Import meta URL dari caller module */\r\n importMetaUrl: string\r\n /** Extensions yang dicoba secara urutan (default: [\".cjs\", \".js\", \".mjs\"]) */\r\n extensions?: string[]\r\n /** Sub-directories relatif dari runtimeDir yang dicoba */\r\n subdirs?: string[]\r\n /** Throw jika tidak ditemukan (default: true) */\r\n required?: boolean\r\n}\r\n\r\nexport interface WorkerPathResult {\r\n /** Absolute path ke worker file */\r\n path: string\r\n /** Extension yang ditemukan */\r\n extension: string\r\n /** Apakah ini dari CJS atau ESM artifact */\r\n format: \"cjs\" | \"esm\"\r\n}\r\n\r\n/**\r\n * Resolve worker/loader script path yang aman untuk release artifacts.\r\n *\r\n * Prioritas:\r\n * 1. CJS (.cjs) — untuk Node.js workers yang butuh require()\r\n * 2. JS (.js) — bundled output\r\n * 3. MJS (.mjs) — explicit ESM\r\n *\r\n * @example\r\n * const workerPath = resolveWorkerPath({\r\n * basename: \"scanner-worker\",\r\n * importMetaUrl: import.meta.url,\r\n * })\r\n * // → \"/path/to/dist/scanner-worker.cjs\"\r\n */\r\nexport function resolveWorkerPath(opts: WorkerPathOptions): WorkerPathResult {\r\n if (isBrowser) {\r\n throw new Error(\"Worker resolution not available in browser\")\r\n }\r\n\r\n const {\r\n basename,\r\n importMetaUrl,\r\n extensions = [\".cjs\", \".js\", \".mjs\"],\r\n subdirs = [\".\", \"workers\", \"lib\"],\r\n required = true,\r\n } = opts\r\n\r\n const runtimeDir = getDirnameFromUrl(importMetaUrl)\r\n\r\n // Try each subdir + extension combination\r\n for (const subdir of subdirs) {\r\n for (const ext of extensions) {\r\n const candidate = resolvePath(runtimeDir, subdir, `${basename}${ext}`)\r\n if (existsSync(candidate)) {\r\n return {\r\n path: candidate,\r\n extension: ext,\r\n format: ext === \".cjs\" ? \"cjs\" : \"esm\",\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (required) {\r\n const tried = subdirs.flatMap(d =>\r\n extensions.map(e => resolvePath(runtimeDir, d, `${basename}${e}`))\r\n )\r\n throw new Error(\r\n `[worker-resolver] Could not find worker script \"${basename}\".\\n` +\r\n `Tried:\\n${tried.map(p => ` - ${p}`).join(\"\\n\")}\\n` +\r\n `Ensure the package is built: npm run build`\r\n )\r\n }\r\n\r\n return { path: \"\", extension: \"\", format: \"cjs\" }\r\n}\r\n\r\n/**\r\n * Resolve loader path (untuk webpack/rspack/vite loaders).\r\n * Same as resolveWorkerPath but dengan nama yang lebih eksplisit.\r\n */\r\nexport function resolveLoaderPath(\r\n loaderBasename: string,\r\n importMetaUrl: string\r\n): string {\r\n return resolveWorkerPath({\r\n basename: loaderBasename,\r\n importMetaUrl,\r\n extensions: [\".cjs\", \".js\", \".mjs\"],\r\n subdirs: [\".\", \"loaders\", \"lib\"],\r\n }).path\r\n}","/**\r\n * Codegen helpers untuk tailwind-styled-v4.\r\n * Dari monorepo checklist: \"Tambahkan helper codegen bila memang relevan\"\r\n *\r\n * Berguna untuk:\r\n * - Generate component boilerplate dari config\r\n * - Generate type definitions dari variant schemas\r\n * - Generate Storybook stories dari cv() configs\r\n * - Generate migration codemods\r\n *\r\n * Design: tidak ada coupling ke compiler — hanya string manipulation.\r\n */\r\n\r\nexport interface ComponentCodegenOptions {\r\n /** Nama komponen (PascalCase) */\r\n name: string\r\n /** HTML tag */\r\n tag?: string\r\n /** Base classes */\r\n base?: string\r\n /** Variant definitions */\r\n variants?: Record<string, Record<string, string>>\r\n /** Default variants */\r\n defaultVariants?: Record<string, string>\r\n /** Compound variants */\r\n compoundVariants?: Array<{ class: string; [key: string]: string }>\r\n /** Framework target */\r\n framework?: \"react\" | \"vue\" | \"svelte\" | \"vanilla\"\r\n /** Include TypeScript types */\r\n withTypes?: boolean\r\n /** Include Storybook story */\r\n withStory?: boolean\r\n}\r\n\r\n/**\r\n * Generate cv() component boilerplate.\r\n *\r\n * @example\r\n * const code = generateComponentCode({\r\n * name: \"Button\",\r\n * tag: \"button\",\r\n * base: \"px-4 py-2 rounded font-medium\",\r\n * variants: {\r\n * intent: { primary: \"bg-blue-500 text-white\", danger: \"bg-red-500 text-white\" },\r\n * size: { sm: \"h-8 text-sm\", lg: \"h-12 text-lg\" },\r\n * },\r\n * defaultVariants: { intent: \"primary\", size: \"sm\" },\r\n * })\r\n */\r\nexport function generateComponentCode(opts: ComponentCodegenOptions): string {\r\n const {\r\n name,\r\n tag = \"div\",\r\n base = \"\",\r\n variants = {},\r\n defaultVariants = {},\r\n compoundVariants = [],\r\n framework = \"react\",\r\n withTypes = true,\r\n } = opts\r\n\r\n const variantKeys = Object.keys(variants)\r\n const lines: string[] = []\r\n\r\n // Imports\r\n if (framework === \"react\") {\r\n lines.push(`import { tw } from \"tailwind-styled-v4\"`)\r\n if (withTypes && variantKeys.length > 0) {\r\n lines.push(`import type { InferVariantProps } from \"tailwind-styled-v4\"`)\r\n }\r\n } else if (framework === \"vue\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/vue\"`)\r\n } else if (framework === \"svelte\") {\r\n lines.push(`import { tw } from \"@tailwind-styled/svelte\"`)\r\n }\r\n\r\n lines.push(\"\")\r\n\r\n // Config object\r\n const configLines: string[] = [`export const ${name} = tw.${tag}({`]\r\n if (base) configLines.push(` base: \"${base}\",`)\r\n\r\n if (variantKeys.length > 0) {\r\n configLines.push(` variants: {`)\r\n for (const [key, values] of Object.entries(variants)) {\r\n configLines.push(` ${key}: {`)\r\n for (const [val, cls] of Object.entries(values)) {\r\n configLines.push(` ${val}: \"${cls}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n if (compoundVariants.length > 0) {\r\n configLines.push(` compoundVariants: [`)\r\n for (const cv of compoundVariants) {\r\n const { class: cls, ...conditions } = cv\r\n const condStr = Object.entries(conditions)\r\n .map(([k, v]) => `${k}: \"${v}\"`)\r\n .join(\", \")\r\n configLines.push(` { ${condStr}, class: \"${cls}\" },`)\r\n }\r\n configLines.push(` ],`)\r\n }\r\n\r\n if (Object.keys(defaultVariants).length > 0) {\r\n configLines.push(` defaultVariants: {`)\r\n for (const [k, v] of Object.entries(defaultVariants)) {\r\n configLines.push(` ${k}: \"${v}\",`)\r\n }\r\n configLines.push(` },`)\r\n }\r\n\r\n configLines.push(`})`)\r\n lines.push(...configLines)\r\n\r\n // TypeScript type alias\r\n if (withTypes && variantKeys.length > 0 && framework === \"react\") {\r\n lines.push(\"\")\r\n lines.push(`export type ${name}Props = InferVariantProps<typeof ${name}> & {`)\r\n lines.push(` children?: React.ReactNode`)\r\n lines.push(` className?: string`)\r\n lines.push(`}`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate Storybook stories dari component config.\r\n *\r\n * @example\r\n * const stories = generateStorybookStory({ name: \"Button\", ... })\r\n */\r\nexport function generateStorybookStory(opts: ComponentCodegenOptions): string {\r\n const { name, variants = {}, defaultVariants = {} } = opts\r\n const lines: string[] = []\r\n\r\n lines.push(`import type { Meta, StoryObj } from \"@storybook/react\"`)\r\n lines.push(`import { ${name} } from \"./${name}\"`)\r\n lines.push(`import { generateArgTypes, generateDefaultArgs } from \"tailwind-styled-v4\"`)\r\n lines.push(``)\r\n lines.push(`const config = {`)\r\n if (Object.keys(variants).length > 0) {\r\n lines.push(` variants: ${JSON.stringify(variants, null, 2).replace(/^/gm, \" \")},`)\r\n }\r\n if (Object.keys(defaultVariants).length > 0) {\r\n lines.push(` defaultVariants: ${JSON.stringify(defaultVariants)},`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const meta: Meta<typeof ${name}> = {`)\r\n lines.push(` title: \"Components/${name}\",`)\r\n lines.push(` component: ${name},`)\r\n lines.push(` argTypes: generateArgTypes(config),`)\r\n lines.push(` args: generateDefaultArgs(config),`)\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`export default meta`)\r\n lines.push(`type Story = StoryObj<typeof ${name}>`)\r\n lines.push(``)\r\n lines.push(`export const Default: Story = {}`)\r\n\r\n // Generate one story per variant combo (up to 6)\r\n const variantEntries = Object.entries(variants)\r\n if (variantEntries.length > 0) {\r\n const [firstKey, firstValues] = variantEntries[0]\r\n const valueKeys = Object.keys(firstValues).slice(0, 4)\r\n for (const val of valueKeys) {\r\n const storyName = `${firstKey.charAt(0).toUpperCase()}${firstKey.slice(1)}${val.charAt(0).toUpperCase()}${val.slice(1)}`\r\n lines.push(``)\r\n lines.push(`export const ${storyName}: Story = {`)\r\n lines.push(` args: { ${firstKey}: \"${val}\" },`)\r\n lines.push(`}`)\r\n }\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate migration codemod untuk class renames.\r\n * Berguna saat ada class yang deprecated atau diganti nama.\r\n *\r\n * @example\r\n * const codemod = generateClassRenameCodemod({\r\n * \"btn-primary\": \"bg-blue-500 text-white\",\r\n * \"btn-danger\": \"bg-red-500 text-white\",\r\n * })\r\n */\r\nexport function generateClassRenameCodemod(\r\n renames: Record<string, string>,\r\n opts: { format?: \"jscodeshift\" | \"regex\"; filename?: string } = {}\r\n): string {\r\n const { format = \"regex\", filename = \"rename-classes.mjs\" } = opts\r\n const lines: string[] = []\r\n\r\n if (format === \"regex\") {\r\n lines.push(`#!/usr/bin/env node`)\r\n lines.push(`/**`)\r\n lines.push(` * Auto-generated class rename codemod`)\r\n lines.push(` * Usage: node ${filename} ./src`)\r\n lines.push(` */`)\r\n lines.push(`import fs from \"node:fs\"`)\r\n lines.push(`import path from \"node:path\"`)\r\n lines.push(`import { execSync } from \"node:child_process\"`)\r\n lines.push(``)\r\n lines.push(`const RENAMES = {`)\r\n for (const [from, to] of Object.entries(renames)) {\r\n lines.push(` \"${from}\": \"${to}\",`)\r\n }\r\n lines.push(`}`)\r\n lines.push(``)\r\n lines.push(`const dir = process.argv[2] ?? \".\"`)\r\n lines.push(`const files = execSync(\\`find \\${dir} -name \"*.tsx\" -o -name \"*.ts\" -o -name \"*.jsx\"\\`, { encoding: \"utf-8\" }).split(\"\\\\n\").filter(Boolean)`)\r\n lines.push(``)\r\n lines.push(`let total = 0`)\r\n lines.push(`for (const file of files) {`)\r\n lines.push(` let content = fs.readFileSync(file, \"utf-8\")`)\r\n lines.push(` let changed = false`)\r\n lines.push(` for (const [from, to] of Object.entries(RENAMES)) {`)\r\n lines.push(' const re = new RegExp(`\\\\\\\\b${from.replace(/[.*+?^${}()|[\\\\\\\\]\\\\\\\\]/g, \"\\\\\\\\$&\")}\\\\\\\\b`, \"g\")')\r\n lines.push(` if (re.test(content)) { content = content.replace(re, to); changed = true; total++ }`)\r\n lines.push(` }`)\r\n lines.push(` if (changed) fs.writeFileSync(file, content)`)\r\n lines.push(`}`)\r\n lines.push(`console.log(\\`Renamed \\${total} occurrences in \\${files.length} files\\`)`)\r\n }\r\n\r\n return lines.join(\"\\n\")\r\n}\r\n\r\n/**\r\n * Generate index barrel file untuk sebuah directory.\r\n *\r\n * @example\r\n * const barrel = generateBarrelFile([\"Button\", \"Card\", \"Input\"], \"src/components\")\r\n */\r\nexport function generateBarrelFile(\r\n exports: string[],\r\n dir: string,\r\n opts: { includeTypes?: boolean } = {}\r\n): string {\r\n const { includeTypes = true } = opts\r\n const lines: string[] = []\r\n lines.push(`// Auto-generated barrel file for ${dir}`)\r\n lines.push(`// Run: npx tsx scripts/generate-barrel.ts to regenerate`)\r\n lines.push(``)\r\n for (const name of exports) {\r\n lines.push(`export { default as ${name}, type ${name}Props } from \"./${name}\"`)\r\n if (includeTypes) {\r\n lines.push(`export type * from \"./${name}\"`)\r\n }\r\n }\r\n return lines.join(\"\\n\")\r\n}\r\n","/**\r\n * Prebuilt binary resolution untuk native NAPI bindings.\r\n * QA #1: Resolve native binary dari prebuilt packages atau local build.\r\n *\r\n * Prioritas:\r\n * 1. TW_NATIVE_PATH env var (explicit override)\r\n * 2. Prebuilt binary dari platform-specific npm package\r\n * 3. Local build dari source (developer mode)\r\n */\r\n\r\nimport { createRequire } from \"node:module\"\r\nimport * as fs from \"node:fs\"\r\nimport * as path from \"node:path\"\r\n\r\nconst isBrowser = typeof window !== \"undefined\" || typeof document !== \"undefined\"\r\n\r\n// ESM-safe require — works in both ESM and CJS contexts\r\nconst _require = typeof require !== \"undefined\" ? require : createRequire(import.meta.url)\r\n\r\nexport interface NativeResolutionResult {\r\n path: string | null\r\n source: \"env\" | \"prebuilt\" | \"local\" | \"not-found\"\r\n platform: string\r\n tried: string[]\r\n}\r\n\r\n/** Platform key → prebuilt npm package name */\r\nconst PLATFORM_MAP: Record<string, string[]> = {\r\n \"linux-x64\": [\"@tailwind-styled/native-linux-x64\"],\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}","/**\r\n * Shared observability contract lintas CLI, dashboard, dan devtools.\r\n * Dari execution-log: \"Stabilkan shared observability contract\"\r\n *\r\n * Semua surface inspection (CLI why, DevTools trace, dashboard /inspect)\r\n * menggunakan type contract yang sama di sini.\r\n */\r\n\r\n// ── Class Inspection Surface ─────────────────────────────────────────────────\r\n\r\nexport interface ClassProperty {\r\n property: string\r\n value: string\r\n}\r\n\r\nexport interface ClassUsageLocation {\r\n file: string\r\n line: number\r\n column: number\r\n usage: \"direct\" | \"variant\" | \"component\"\r\n}\r\n\r\n/** Unified inspection result - dipakai oleh CLI, DevTools, Dashboard */\r\nexport interface ClassInspection {\r\n className: string\r\n /** CSS properties yang di-set oleh class ini */\r\n properties: ClassProperty[]\r\n /** Konflik dengan class lain (property conflicts) */\r\n conflicts: string[]\r\n /** Files yang menggunakan class ini */\r\n usedIn: ClassUsageLocation[]\r\n /** Risk level untuk removal */\r\n risk: \"low\" | \"medium\" | \"high\"\r\n /** Estimated bundle contribution dalam bytes */\r\n bundleBytes: number\r\n /** Raw CSS string */\r\n css: string\r\n /** Variant chain (hover:, md:, dll) */\r\n variants: string[]\r\n /** Timestamp */\r\n inspectedAt: number\r\n}\r\n\r\n// ── Build Trace Surface ───────────────────────────────────────────────────────\r\n\r\nexport interface BuildPhaseTrace {\r\n phase: \"scan\" | \"compile\" | \"engine\" | \"output\"\r\n durationMs: number\r\n filesProcessed?: number\r\n classesFound?: number\r\n}\r\n\r\nexport interface BuildTrace {\r\n buildId: string\r\n totalDurationMs: number\r\n phases: BuildPhaseTrace[]\r\n classCount: number\r\n fileCount: number\r\n cacheHitRate: number\r\n mode: string\r\n timestamp: number\r\n}\r\n\r\n// ── Dashboard Metrics Surface ─────────────────────────────────────────────────\r\n\r\nexport interface DashboardMetrics {\r\n buildMs: number\r\n scanMs: number\r\n analyzeMs: number\r\n compileMs: number\r\n classCount: number\r\n fileCount: number\r\n mode: string\r\n cacheHitRate?: number\r\n nativeVersion?: string\r\n}\r\n\r\nexport interface DashboardSummary {\r\n totalBuilds: number\r\n avgBuildMs: number\r\n p95BuildMs: number\r\n avgCacheHitRate: number\r\n lastBuild: DashboardMetrics | null\r\n}\r\n\r\n// ── Observability Client ──────────────────────────────────────────────────────\r\n\r\nexport interface ObservabilityClient {\r\n /** Fetch class inspection dari dashboard */\r\n inspectClass(className: string): Promise<ClassInspection | null>\r\n /** Fetch current metrics */\r\n getMetrics(): Promise<DashboardMetrics | null>\r\n /** Fetch summary */\r\n getSummary(): Promise<DashboardSummary | null>\r\n /** Fetch build history */\r\n getHistory(): Promise<BuildTrace[]>\r\n}\r\n\r\n/** Buat observability client yang connect ke dashboard server */\r\nexport function createObservabilityClient(\r\n opts: { baseUrl?: string; timeoutMs?: number } = {}\r\n): ObservabilityClient {\r\n const { baseUrl = \"http://localhost:7421\", timeoutMs = 3000 } = opts\r\n\r\n async function fetchJson<T>(path: string): Promise<T | null> {\r\n try {\r\n const res = await fetch(`${baseUrl}${path}`, {\r\n signal: AbortSignal.timeout(timeoutMs),\r\n })\r\n if (!res.ok) return null\r\n return await res.json() as T\r\n } catch {\r\n return null\r\n }\r\n }\r\n\r\n return {\r\n async inspectClass(className: string): Promise<ClassInspection | null> {\r\n const data = await fetchJson<ClassInspection>(`/inspect?class=${encodeURIComponent(className)}`)\r\n if (!data) return null\r\n return { ...data, inspectedAt: Date.now() }\r\n },\r\n\r\n async getMetrics(): Promise<DashboardMetrics | null> {\r\n return fetchJson<DashboardMetrics>(\"/metrics\")\r\n },\r\n\r\n async getSummary(): Promise<DashboardSummary | null> {\r\n return fetchJson<DashboardSummary>(\"/summary\")\r\n },\r\n\r\n async getHistory(): Promise<BuildTrace[]> {\r\n const data = await fetchJson<BuildTrace[]>(\"/history\")\r\n return Array.isArray(data) ? data : []\r\n },\r\n }\r\n}\r\n","import { createHash } from \"node:crypto\"\r\nimport fs from \"node:fs\"\r\nimport path from \"node:path\"\r\nimport { fileURLToPath } from \"node:url\"\r\nimport { createRequire } from \"node:module\"\r\n\r\n// Native-only: Node.js is always available. No browser fallback.\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Types\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type TokenMap = Record<string, string>\r\n\r\nexport type VariantValue = string | number | boolean | undefined\r\n\r\nexport type VariantProps = Record<string, VariantValue>\r\n\r\nexport type HtmlTagName = keyof HTMLElementTagNameMap\r\n\r\nexport type CompoundCondition = Record<string, string | number | boolean>\r\n\r\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Logging\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface Logger {\r\n warn(...args: unknown[]): void\r\n debug(...args: unknown[]): void\r\n error(...args: unknown[]): void\r\n log(...args: unknown[]): void\r\n}\r\n\r\nexport function createLogger(namespace: string): Logger {\r\n const prefix = `[${namespace}]`\r\n return {\r\n warn(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n debug(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n error(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n log(...args: unknown[]) {\r\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\r\n },\r\n }\r\n}\r\n\r\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\r\n const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\r\n return (msg: string) => {\r\n if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\r\n console.debug(prefix, msg)\r\n }\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error handling\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\r\n\r\ntype ZodLikeIssue = {\r\n path?: readonly PropertyKey[]\r\n message?: string\r\n}\r\n\r\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\r\n if (!path || path.length === 0) return \"(root)\"\r\n return path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n}\r\n\r\nexport class TwError extends Error {\r\n /** @deprecated Gunakan source */\r\n public readonly domain: string\r\n public readonly source: ErrorSource\r\n public readonly code: string\r\n public readonly originalCause?: unknown\r\n\r\n constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\r\n super(message)\r\n this.name = \"TwError\"\r\n this.domain = domainOrSource\r\n this.source = domainOrSource as ErrorSource\r\n this.code = code\r\n this.originalCause = cause\r\n if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\r\n }\r\n\r\n static fromIo(code: string, message: string): TwError {\r\n return new TwError(\"io\", code, message)\r\n }\r\n\r\n static fromCompile(code: string, message: string): TwError {\r\n return new TwError(\"compile\", code, message)\r\n }\r\n\r\n static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\r\n if (err && typeof err === \"object\") {\r\n const e = err as { code?: string; message?: string }\r\n return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\r\n }\r\n return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\r\n }\r\n\r\n /** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\r\n static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\r\n const first = err.issues?.[0] ?? err.errors?.[0]\r\n const path = formatIssuePath(first?.path)\r\n const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\r\n return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\r\n }\r\n\r\n static wrap(source: string, code: string, err: unknown): TwError {\r\n if (err instanceof TwError) return err\r\n if (err instanceof Error) return new TwError(source, code, err.message, err)\r\n return new TwError(source, code, String(err), err)\r\n }\r\n\r\n override toString(): string {\r\n return `TwError [${this.source}:${this.code}] ${this.message}`\r\n }\r\n\r\n toJSON(): { name: string; source: string; code: string; message: string } {\r\n return { name: this.name, source: this.source, code: this.code, message: this.message }\r\n }\r\n\r\n toCliMessage(): string {\r\n return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\r\n }\r\n}\r\n\r\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\r\n return TwError.wrap(domain, code, error)\r\n}\r\n\r\nexport function isTwError(err: unknown): err is TwError {\r\n return err instanceof TwError\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Native binding resolution\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport interface LoadNativeBindingOptions<T> {\r\n runtimeDir: string\r\n candidates: string[]\r\n isValid: (module: unknown) => module is T\r\n invalidExportMessage: string\r\n}\r\n\r\nexport interface LoadNativeBindingResult<T> {\r\n binding: T | null\r\n loadErrors: Array<{ path: string; message: string }>\r\n loadedPath?: string\r\n}\r\n\r\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\r\n const { runtimeDir, candidates, isValid } = options\r\n const loadErrors: Array<{ path: string; message: string }> = []\r\n\r\n for (const candidate of candidates) {\r\n const candidatePath = path.resolve(runtimeDir, candidate)\r\n try {\r\n if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\r\n continue\r\n }\r\n const mod = requireNativeModule(candidatePath)\r\n if (mod && isValid(mod)) {\r\n return { binding: mod, loadErrors, loadedPath: candidatePath }\r\n }\r\n loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\r\n } catch (e) {\r\n loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\r\n }\r\n }\r\n\r\n return { binding: null, loadErrors }\r\n}\r\n\r\nconst _require = createRequire(import.meta.url)\r\n\r\nfunction requireNativeModule(p: string): unknown {\r\n return _require(p)\r\n}\r\n\r\nexport interface ResolveCandidatesOptions {\r\n runtimeDir?: string\r\n envVarNames?: string[]\r\n includeDefaultCandidates?: boolean\r\n enforceNodeExtensionForEnvPath?: boolean\r\n /** @deprecated — ignored, kept for backward compat */\r\n packageName?: string\r\n}\r\n\r\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\r\n const {\r\n envVarNames = [\"TW_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\r\n includeDefaultCandidates = true,\r\n enforceNodeExtensionForEnvPath = false,\r\n } = options\r\n // Default ke cwd kalau runtimeDir tidak disediakan\r\n const runtimeDir = options.runtimeDir || process.cwd()\r\n const candidates: string[] = []\r\n\r\n for (const envVar of envVarNames) {\r\n const envPath = process.env[envVar]\r\n if (envPath) {\r\n candidates.push(enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\") ? envPath + \".node\" : envPath)\r\n }\r\n }\r\n\r\n if (!includeDefaultCandidates) return candidates\r\n\r\n if (fs.existsSync(runtimeDir)) {\r\n try {\r\n for (const entry of fs.readdirSync(runtimeDir)) {\r\n if (entry.endsWith(\".node\")) candidates.push(entry)\r\n }\r\n } catch { /* ignore read errors */ }\r\n }\r\n\r\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\r\n const napiPlatform = process.platform === \"linux\" && process.arch === \"x64\" ? \"linux-x64-gnu\"\r\n : process.platform === \"linux\" && process.arch === \"arm64\" ? \"linux-arm64-gnu\"\r\n : `${process.platform}-${process.arch}`\r\n\r\n for (const bin of BINARY_NAMES) {\r\n candidates.push(path.resolve(runtimeDir, `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, `${bin}.${napiPlatform}.node`))\r\n // 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\""]}
|