tailwind-styled-v4 5.0.9 → 5.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/{analyzeWorkspace-DuJKh7Ty.d.mts → analyzeWorkspace-BS5O4rhC.d.mts} +47 -2
  3. package/dist/{analyzeWorkspace-Ct_NTAWt.d.ts → analyzeWorkspace-DDOQdzzI.d.ts} +47 -2
  4. package/dist/analyzer.d.mts +5 -3
  5. package/dist/analyzer.d.ts +5 -3
  6. package/dist/analyzer.js +563 -468
  7. package/dist/analyzer.js.map +1 -1
  8. package/dist/analyzer.mjs +562 -467
  9. package/dist/analyzer.mjs.map +1 -1
  10. package/dist/animate.d.mts +4 -7
  11. package/dist/animate.d.ts +4 -7
  12. package/dist/animate.js +171 -265
  13. package/dist/animate.js.map +1 -1
  14. package/dist/animate.mjs +165 -264
  15. package/dist/animate.mjs.map +1 -1
  16. package/dist/atomic.d.mts +22 -1
  17. package/dist/atomic.d.ts +22 -1
  18. package/dist/atomic.js +221 -165
  19. package/dist/atomic.js.map +1 -1
  20. package/dist/atomic.mjs +200 -165
  21. package/dist/atomic.mjs.map +1 -1
  22. package/dist/cli.d.mts +60 -1
  23. package/dist/cli.d.ts +60 -1
  24. package/dist/cli.js +1261 -1517
  25. package/dist/cli.js.map +1 -1
  26. package/dist/cli.mjs +1238 -1513
  27. package/dist/cli.mjs.map +1 -1
  28. package/dist/compiler.d.mts +38 -7
  29. package/dist/compiler.d.ts +38 -7
  30. package/dist/compiler.js +174 -197
  31. package/dist/compiler.js.map +1 -1
  32. package/dist/compiler.mjs +151 -194
  33. package/dist/compiler.mjs.map +1 -1
  34. package/dist/devtools.js +7 -31
  35. package/dist/devtools.js.map +1 -1
  36. package/dist/devtools.mjs +7 -31
  37. package/dist/devtools.mjs.map +1 -1
  38. package/dist/engine.d.mts +134 -63
  39. package/dist/engine.d.ts +134 -63
  40. package/dist/engine.js +2863 -2482
  41. package/dist/engine.js.map +1 -1
  42. package/dist/engine.mjs +2852 -2485
  43. package/dist/engine.mjs.map +1 -1
  44. package/dist/{index-eWAocnD2.d.mts → index-NDINUhLN.d.mts} +3 -1
  45. package/dist/{index-eWAocnD2.d.ts → index-NDINUhLN.d.ts} +3 -1
  46. package/dist/index.d.mts +45 -32
  47. package/dist/index.d.ts +45 -32
  48. package/dist/index.js +271 -158
  49. package/dist/index.js.map +1 -1
  50. package/dist/index.mjs +251 -158
  51. package/dist/index.mjs.map +1 -1
  52. package/dist/{liveTokenEngine-DSUk88P6.d.ts → liveTokenEngine-CN9ian1R.d.ts} +1 -1
  53. package/dist/{liveTokenEngine-CX5_0c4q.d.mts → liveTokenEngine-DKoWRtqH.d.mts} +1 -1
  54. package/dist/next.js +20 -39
  55. package/dist/next.js.map +1 -1
  56. package/dist/next.mjs +18 -37
  57. package/dist/next.mjs.map +1 -1
  58. package/dist/plugin-api.d.mts +8 -2
  59. package/dist/plugin-api.d.ts +8 -2
  60. package/dist/plugin-api.js +14 -2
  61. package/dist/plugin-api.js.map +1 -1
  62. package/dist/plugin-api.mjs +14 -3
  63. package/dist/plugin-api.mjs.map +1 -1
  64. package/dist/plugin-registry.js +51 -11
  65. package/dist/plugin-registry.js.map +1 -1
  66. package/dist/plugin-registry.mjs +51 -11
  67. package/dist/plugin-registry.mjs.map +1 -1
  68. package/dist/plugin.d.mts +5 -7
  69. package/dist/plugin.d.ts +5 -7
  70. package/dist/plugin.js +16 -15
  71. package/dist/plugin.js.map +1 -1
  72. package/dist/plugin.mjs +16 -16
  73. package/dist/plugin.mjs.map +1 -1
  74. package/dist/rspack.js +17 -38
  75. package/dist/rspack.js.map +1 -1
  76. package/dist/rspack.mjs +15 -36
  77. package/dist/rspack.mjs.map +1 -1
  78. package/dist/runtime.d.mts +2 -2
  79. package/dist/runtime.d.ts +2 -2
  80. package/dist/scanner.d.mts +10 -1
  81. package/dist/scanner.d.ts +10 -1
  82. package/dist/scanner.js +298 -124
  83. package/dist/scanner.js.map +1 -1
  84. package/dist/scanner.mjs +296 -124
  85. package/dist/scanner.mjs.map +1 -1
  86. package/dist/shared.d.mts +1 -1
  87. package/dist/shared.d.ts +1 -1
  88. package/dist/shared.js +104 -176
  89. package/dist/shared.js.map +1 -1
  90. package/dist/shared.mjs +85 -176
  91. package/dist/shared.mjs.map +1 -1
  92. package/dist/storybook-addon.d.mts +1 -1
  93. package/dist/storybook-addon.d.ts +1 -1
  94. package/dist/svelte.d.mts +1 -1
  95. package/dist/svelte.d.ts +1 -1
  96. package/dist/svelte.js +166 -3
  97. package/dist/svelte.js.map +1 -1
  98. package/dist/svelte.mjs +143 -1
  99. package/dist/svelte.mjs.map +1 -1
  100. package/dist/syntax.js +21 -21
  101. package/dist/syntax.js.map +1 -1
  102. package/dist/syntax.mjs +21 -21
  103. package/dist/syntax.mjs.map +1 -1
  104. package/dist/testing.js +9 -1
  105. package/dist/testing.js.map +1 -1
  106. package/dist/testing.mjs +9 -1
  107. package/dist/testing.mjs.map +1 -1
  108. package/dist/theme.d.mts +2 -2
  109. package/dist/theme.d.ts +2 -2
  110. package/dist/theme.js +40 -112
  111. package/dist/theme.js.map +1 -1
  112. package/dist/theme.mjs +37 -110
  113. package/dist/theme.mjs.map +1 -1
  114. package/dist/turbopackLoader.js +79 -124
  115. package/dist/turbopackLoader.js.map +1 -1
  116. package/dist/turbopackLoader.mjs +63 -122
  117. package/dist/turbopackLoader.mjs.map +1 -1
  118. package/dist/tw.js +1256 -1517
  119. package/dist/tw.js.map +1 -1
  120. package/dist/tw.mjs +1236 -1513
  121. package/dist/tw.mjs.map +1 -1
  122. package/dist/vite.js +1783 -823
  123. package/dist/vite.js.map +1 -1
  124. package/dist/vite.mjs +1767 -821
  125. package/dist/vite.mjs.map +1 -1
  126. package/dist/vue.d.mts +1 -1
  127. package/dist/vue.d.ts +1 -1
  128. package/dist/vue.js +165 -4
  129. package/dist/vue.js.map +1 -1
  130. package/dist/vue.mjs +141 -1
  131. package/dist/vue.mjs.map +1 -1
  132. package/dist/webpackLoader.js +65 -108
  133. package/dist/webpackLoader.js.map +1 -1
  134. package/dist/webpackLoader.mjs +45 -104
  135. package/dist/webpackLoader.mjs.map +1 -1
  136. package/native/tailwind-styled-native.node +0 -0
  137. package/package.json +22 -24
@@ -1 +1 @@
1
- {"version":3,"sources":["../packages/domain/shared/src/index.ts","../packages/domain/animate/src/binding.ts","../packages/domain/animate/src/preset.ts","../packages/domain/analyzer/src/binding.ts","../packages/domain/analyzer/src/utils.ts","../packages/domain/analyzer/src/schemas.ts","../packages/domain/analyzer/src/classToCss.ts","../packages/domain/animate/src/registry.ts","../packages/domain/animate/src/index.ts"],"names":["fs","DEBUG_NAMESPACE","formatErrorMessage","debugLog","formatIssuePath","z","initAnimate"],"mappings":"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","file":"animate.js","sourcesContent":["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","import {\r\n createDebugLogger,\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n resolveRuntimeDir,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nimport type { NativeAnimateBinding } from \"./types\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Animate Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createAnimateBindingLoader = () => {\r\n const _state = { bindingPromise: null as Promise<NativeAnimateBinding> | null }\r\n\r\n const loadAnimateBinding = (): NativeAnimateBinding => {\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveBindingCandidates(runtimeDir)\r\n const { binding, loadErrors, loadedPath } = loadNativeBinding<NativeAnimateBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnimateModule,\r\n invalidExportMessage: \"Module loaded but missing compileAnimation/compileKeyframes exports.\",\r\n })\r\n\r\n if (binding) {\r\n debugLog(`native animate binding loaded from: ${loadedPath}`)\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n debugLog(\r\n `native animate binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\r\n .map((entry) => `${entry.path} (${entry.message})`)\r\n .join(\"; \")}`\r\n )\r\n } else {\r\n debugLog(\"native animate binding not found in any candidate path\")\r\n }\r\n\r\n const lines = [\r\n \"Native animate backend not found. Ensure `tailwind_styled_parser.node` is built.\",\r\n \"Checked paths:\",\r\n ...candidates.map((candidate) => `- ${candidate}`),\r\n ]\r\n if (loadErrors.length > 0) {\r\n lines.push(\"Load errors:\")\r\n for (const error of loadErrors) lines.push(`- ${error.path}: ${error.message}`)\r\n }\r\n throw new Error(lines.join(\"\\n\"))\r\n }\r\n\r\n return {\r\n get: (): Promise<NativeAnimateBinding> => {\r\n if (!_state.bindingPromise) {\r\n _state.bindingPromise = Promise.resolve().then(loadAnimateBinding)\r\n }\r\n return _state.bindingPromise\r\n },\r\n reset: (): void => {\r\n _state.bindingPromise = null\r\n },\r\n }\r\n}\r\n\r\nconst animateBindingLoader = createAnimateBindingLoader()\r\n\r\nconst DEBUG_NAMESPACE = \"tailwind-styled:animate\"\r\nconst debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/animate\")\r\n\r\nfunction isAnimateModule(module: unknown): module is NativeAnimateBinding {\r\n const candidate = module as Partial<NativeAnimateBinding> | null | undefined\r\n return (\r\n typeof candidate?.compileAnimation === \"function\" &&\r\n typeof candidate?.compileKeyframes === \"function\"\r\n )\r\n}\r\n\r\nfunction resolveBindingCandidates(runtimeDir: string): string[] {\r\n return resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_ANIMATE_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\r\n enforceNodeExtensionForEnvPath: true,\r\n })\r\n}\r\n\r\nexport async function getAnimateBinding(): Promise<NativeAnimateBinding> {\r\n return animateBindingLoader.get()\r\n}\r\n\r\nexport async function initAnimate(): Promise<void> {\r\n await getAnimateBinding()\r\n}\r\n","import { LRUCache } from \"@tailwind-styled/shared\"\r\n\r\nimport type { AnimationRegistry } from \"./registry\"\r\n\r\nconst DEFAULT_PRESET_CACHE_LIMIT = 32\r\n\r\nexport function createAnimationPresets(registry: AnimationRegistry) {\r\n const cache = new LRUCache<string, Promise<string>>(DEFAULT_PRESET_CACHE_LIMIT)\r\n\r\n const withCache =\r\n (cacheKey: string, factory: () => Promise<string>): (() => Promise<string>) =>\r\n async () => {\r\n const cached = cache.get(cacheKey)\r\n if (cached) {\r\n const className = await cached\r\n if (registry.has(className)) return className\r\n cache.delete(cacheKey)\r\n }\r\n\r\n const pending = factory()\r\n cache.set(cacheKey, pending)\r\n try {\r\n return await pending\r\n } catch (error) {\r\n cache.delete(cacheKey)\r\n throw error\r\n }\r\n }\r\n\r\n return {\r\n fadeIn: withCache(\r\n \"fadeIn\",\r\n async () =>\r\n (await registry.compileAnimation({ from: \"opacity-0\", to: \"opacity-100\", duration: 200 }))\r\n .className\r\n ),\r\n fadeOut: withCache(\r\n \"fadeOut\",\r\n async () =>\r\n (await registry.compileAnimation({ from: \"opacity-100\", to: \"opacity-0\", duration: 200 }))\r\n .className\r\n ),\r\n slideUp: withCache(\r\n \"slideUp\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 translate-y-4\",\r\n to: \"opacity-100 translate-y-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n slideDown: withCache(\r\n \"slideDown\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 -translate-y-4\",\r\n to: \"opacity-100 translate-y-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n slideLeft: withCache(\r\n \"slideLeft\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 translate-x-4\",\r\n to: \"opacity-100 translate-x-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n slideRight: withCache(\r\n \"slideRight\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 -translate-x-4\",\r\n to: \"opacity-100 translate-x-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n scaleIn: withCache(\r\n \"scaleIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 scale-95\",\r\n to: \"opacity-100 scale-100\",\r\n duration: 200,\r\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\r\n })\r\n ).className\r\n ),\r\n scaleOut: withCache(\r\n \"scaleOut\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-100 scale-100\",\r\n to: \"opacity-0 scale-95\",\r\n duration: 150,\r\n })\r\n ).className\r\n ),\r\n blurIn: withCache(\r\n \"blurIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 blur-sm\",\r\n to: \"opacity-100 blur-none\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n bounceIn: withCache(\r\n \"bounceIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 scale-50\",\r\n to: \"opacity-100 scale-100\",\r\n duration: 400,\r\n easing: \"cubic-bezier(0.34,1.56,0.64,1)\",\r\n })\r\n ).className\r\n ),\r\n spinIn: withCache(\r\n \"spinIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 rotate-180 scale-50\",\r\n to: \"opacity-100 rotate-0 scale-100\",\r\n duration: 400,\r\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\r\n })\r\n ).className\r\n ),\r\n } as const\r\n}\r\n","import {\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n resolveRuntimeDir,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nimport type { NativeAnalyzerBinding, NativeCssCompilerBinding } from \"./types\"\r\nimport { debugLog } from \"./utils\"\r\n\r\nconst isAnalyzerModule = (module: unknown): module is NativeAnalyzerBinding => {\r\n const candidate = module as Partial<NativeAnalyzerBinding> | null | undefined\r\n return typeof candidate?.analyzeClasses === \"function\"\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Analyzer Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createAnalyzerBindingLoader = () => {\r\n const _state = { bindingPromise: null as Promise<NativeAnalyzerBinding | null> | null }\r\n\r\n const getBindingPromise = (): Promise<NativeAnalyzerBinding | null> => {\r\n if (_state.bindingPromise) return _state.bindingPromise\r\n\r\n _state.bindingPromise = (async (): Promise<NativeAnalyzerBinding | null> => {\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { binding, loadErrors, loadedPath } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n if (binding) {\r\n debugLog(`native binding loaded from: ${loadedPath}`)\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n debugLog(\r\n `native binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\r\n .map((entry) => `${entry.path} (${entry.message})`)\r\n .join(\"; \")}`\r\n )\r\n } else {\r\n debugLog(\"native binding not found in any candidate path\")\r\n }\r\n\r\n return null\r\n })()\r\n\r\n return _state.bindingPromise\r\n }\r\n\r\n return {\r\n get: getBindingPromise,\r\n reset: (): void => {\r\n _state.bindingPromise = null\r\n },\r\n }\r\n}\r\n\r\nconst analyzerBindingLoader = createAnalyzerBindingLoader()\r\n\r\nexport async function getNativeBinding(): Promise<NativeAnalyzerBinding | null> {\r\n return analyzerBindingLoader.get()\r\n}\r\n\r\nexport async function requireNativeBinding(): Promise<NativeAnalyzerBinding> {\r\n const binding = await analyzerBindingLoader.get()\r\n if (binding?.analyzeClasses) return binding\r\n\r\n // Untuk error reporting, kita perlu akses ke candidates dan loadErrors\r\n // Tapi karena async, kita perlu load ulang atau simpan state\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { loadErrors } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n const lines = [\r\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\",\r\n ]\r\n\r\n lines.push(\"Checked paths:\")\r\n for (const candidate of candidates) lines.push(`- ${candidate}`)\r\n if (loadErrors.length > 0) {\r\n lines.push(\"Load errors:\")\r\n for (const failure of loadErrors) {\r\n lines.push(`- ${failure.path}: ${failure.message}`)\r\n }\r\n }\r\n\r\n throw new Error(lines.join(\"\\n\"))\r\n}\r\n\r\nexport async function requireNativeCssCompiler(): Promise<NativeCssCompilerBinding> {\r\n const binding = await requireNativeBinding()\r\n if (typeof binding.compileCss === \"function\") return binding as NativeCssCompilerBinding\r\n\r\n throw new Error(`Native analyzer compileCss binding is missing.`)\r\n}\r\n","import fs from \"node:fs\"\r\nimport { createDebugLogger } from \"@tailwind-styled/shared\"\r\n\r\nexport const DEFAULT_TOP_LIMIT = 10\r\nexport const DEFAULT_FREQUENT_THRESHOLD = 2\r\nexport const DEBUG_NAMESPACE = \"tailwind-styled:analyzer\"\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n return error instanceof Error ? error.message : String(error)\r\n}\r\n\r\nexport function isRecord(value: unknown): value is Record<string, unknown> {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nexport async function pathExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.promises.access(filePath, fs.constants.F_OK)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport const debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\")\r\n\r\nexport function sanitizeTopLimit(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n\r\nexport function sanitizeFrequentThreshold(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n","import { TwError } from \"@tailwind-styled/shared\"\r\nimport type { ScanWorkspaceOptions } from \"@tailwind-styled/scanner\"\r\nimport { z } from \"zod\"\r\n\r\nconst formatIssuePath = (path: readonly PropertyKey[]): string =>\r\n path.length > 0\r\n ? path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n : \"<root>\"\r\n\r\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const path = formatIssuePath(issue.path)\r\n return `${path}: ${issue.message}`\r\n })\r\n .join(\"; \")\r\n\r\nconst parseWithSchema = <T>(schema: z.ZodType<T>, data: unknown, label: string): T => {\r\n const parsed = schema.safeParse(data)\r\n if (parsed.success) return parsed.data\r\n const details = formatIssues(parsed.error)\r\n throw new TwError(\r\n \"validation\",\r\n \"SCHEMA_VALIDATION_FAILED\",\r\n details ? `${label}: ${details}` : label,\r\n parsed.error\r\n )\r\n}\r\n\r\nconst CountSchema = z.number().int().min(0)\r\n\r\nexport const ClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n isUnused: z.boolean().optional(),\r\n isConflict: z.boolean().optional(),\r\n})\r\n\r\nexport const ClassConflictSchema = z.object({\r\n className: z.string(),\r\n variants: z.array(z.string()),\r\n classes: z.array(z.string()),\r\n message: z.string(),\r\n})\r\n\r\nconst ClassCountSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n})\r\n\r\nexport const NativeReportSchema = z.object({\r\n root: z.string(),\r\n totalFiles: CountSchema,\r\n uniqueClassCount: CountSchema,\r\n totalClassOccurrences: CountSchema,\r\n topClasses: z.array(ClassCountSchema),\r\n duplicateCandidates: z.array(ClassCountSchema),\r\n safelist: z.array(z.string()),\r\n})\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unknownClasses: z.array(z.string()),\r\n sizeBytes: CountSchema,\r\n})\r\n\r\nconst AnalyzerClassStatsSchema = z.object({\r\n top: z\r\n .number({\r\n error: \"analyzeWorkspace options.classStats.top must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n frequentThreshold: z\r\n .number({\r\n error:\r\n \"analyzeWorkspace options.classStats.frequentThreshold must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n})\r\n\r\nconst AnalyzerSemanticOptionsSchema = z.object({\r\n tailwindConfigPath: z\r\n .string({\r\n error:\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\",\r\n })\r\n .min(\r\n 1,\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const AnalyzerOptionsSchema = z.object({\r\n scanner: z\r\n .custom<ScanWorkspaceOptions>(\r\n (value) => isPlainObject(value),\r\n \"analyzeWorkspace options.scanner must be an object when provided.\"\r\n )\r\n .optional(),\r\n classStats: AnalyzerClassStatsSchema.optional(),\r\n semantic: z\r\n .union([\r\n z.boolean({\r\n error: \"analyzeWorkspace options.semantic must be a boolean or an object when provided.\",\r\n }),\r\n AnalyzerSemanticOptionsSchema,\r\n ])\r\n .optional(),\r\n includeClass: z\r\n .custom<(className: string) => boolean>(\r\n (value) => typeof value === \"function\",\r\n \"analyzeWorkspace options.includeClass must be a function when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const ClassToCssOptionsSchema = z.object({\r\n prefix: z\r\n .union([z.string(), z.null()], {\r\n error: \"classToCss options.prefix must be a string or null when provided.\",\r\n })\r\n .optional(),\r\n strict: z\r\n .boolean({\r\n error: \"classToCss options.strict must be a boolean when provided.\",\r\n })\r\n .optional(),\r\n})\r\n\r\nexport const parseAnalyzerOptions = (options: unknown) =>\r\n parseWithSchema(AnalyzerOptionsSchema, options ?? {}, \"analyzeWorkspace options are invalid\")\r\n\r\nexport const parseNativeReport = (report: unknown) =>\r\n parseWithSchema(NativeReportSchema, report, \"Native analyzer report is invalid\")\r\n\r\nexport const parseNativeCssCompileResult = (result: unknown, className?: string) =>\r\n parseWithSchema(\r\n NativeCssCompileResultSchema,\r\n result,\r\n className\r\n ? `Native CSS compile result is invalid for class \"${className}\"`\r\n : \"Native CSS compile result is invalid\"\r\n )\r\n\r\nexport const parseClassToCssOptions = (options: unknown) =>\r\n parseWithSchema(ClassToCssOptionsSchema, options ?? {}, \"classToCss options are invalid\")\r\n","import { requireNativeCssCompiler } from \"./binding\"\r\nimport { parseClassToCssOptions, parseNativeCssCompileResult } from \"./schemas\"\r\nimport type { ClassToCssOptions, ClassToCssResult } from \"./types\"\r\nimport { formatErrorMessage } from \"./utils\"\r\n\r\nexport const normalizeClassInput = (input: string | string[]): string[] => {\r\n if (typeof input === \"string\") {\r\n return input\r\n .split(/\\s+/)\r\n .map((item) => item.trim())\r\n .filter((item) => item.length > 0)\r\n }\r\n\r\n if (!Array.isArray(input)) {\r\n throw new TypeError(\"classToCss input must be a string or an array of strings.\")\r\n }\r\n\r\n const out: string[] = []\r\n for (const item of input) {\r\n if (typeof item !== \"string\") {\r\n throw new TypeError(\"classToCss input array must contain only strings.\")\r\n }\r\n const value = item.trim()\r\n if (value.length > 0) out.push(value)\r\n }\r\n return out\r\n}\r\n\r\nconst normalizeClassToCssOptions = (\r\n options: ClassToCssOptions\r\n): {\r\n prefix: string | null\r\n strict: boolean\r\n} => {\r\n const parsed = parseClassToCssOptions(options)\r\n const strict = parsed.strict ?? false\r\n const prefix = parsed.prefix ?? null\r\n\r\n return { prefix, strict }\r\n}\r\n\r\nconst mergeDeclarationMap = (target: Map<string, string>, css: string): void => {\r\n for (const ruleMatch of css.matchAll(/\\{([^}]*)\\}/g)) {\r\n const body = ruleMatch[1]\r\n for (const raw of body.split(\";\")) {\r\n const declaration = raw.trim()\r\n if (declaration.length === 0) continue\r\n const colonIndex = declaration.indexOf(\":\")\r\n if (colonIndex <= 0) continue\r\n const property = declaration.slice(0, colonIndex).trim()\r\n const value = declaration.slice(colonIndex + 1).trim()\r\n if (property.length === 0 || value.length === 0) continue\r\n if (target.has(property)) target.delete(property)\r\n target.set(property, value)\r\n }\r\n }\r\n}\r\n\r\nconst declarationMapToString = (declarationMap: Map<string, string>): string => {\r\n return Array.from(declarationMap.entries())\r\n .map(([property, value]) => `${property}: ${value}`)\r\n .join(\"; \")\r\n}\r\n\r\n/**\r\n * Convert Tailwind class input into atomic CSS output via native binding.\r\n * @example\r\n * const css = await classToCss(\"opacity-0 translate-y-2\", { strict: true })\r\n */\r\nexport const classToCss = async (\r\n input: string | string[],\r\n options: ClassToCssOptions = {}\r\n): Promise<ClassToCssResult> => {\r\n const inputClasses = normalizeClassInput(input)\r\n const normalizedOptions = normalizeClassToCssOptions(options)\r\n\r\n if (inputClasses.length === 0) {\r\n return {\r\n inputClasses: [],\r\n css: \"\",\r\n declarations: \"\",\r\n resolvedClasses: [],\r\n unknownClasses: [],\r\n sizeBytes: 0,\r\n }\r\n }\r\n\r\n const binding = await requireNativeCssCompiler()\r\n const prefix = normalizedOptions.prefix\r\n\r\n const results = await Promise.all(\r\n inputClasses.map(async (className) => {\r\n const compiled = (() => {\r\n try {\r\n return binding.compileCss([className], prefix)\r\n } catch (error) {\r\n throw new Error(\r\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\r\n { cause: error }\r\n )\r\n }\r\n })()\r\n\r\n if (!compiled) {\r\n throw new Error(`Native analyzer returned no result for class \"${className}\".`)\r\n }\r\n\r\n const validated = parseNativeCssCompileResult(compiled, className)\r\n\r\n return {\r\n className,\r\n css: validated.css,\r\n resolvedClasses: validated.resolvedClasses,\r\n unknownClasses: validated.unknownClasses,\r\n sizeBytes: validated.sizeBytes,\r\n }\r\n })\r\n )\r\n\r\n const cssChunks = results.map((r) => r.css)\r\n const resolvedClasses = results.flatMap((r) => r.resolvedClasses)\r\n const unknownClasses = results.flatMap((r) => r.unknownClasses)\r\n const sizeBytes = results.reduce((sum, r) => sum + r.sizeBytes, 0)\r\n\r\n const declarationMap = new Map<string, string>()\r\n for (const result of results) {\r\n mergeDeclarationMap(declarationMap, result.css)\r\n }\r\n\r\n const uniqueUnknown = Array.from(new Set(unknownClasses))\r\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\r\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`)\r\n }\r\n\r\n return {\r\n inputClasses,\r\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\r\n declarations: declarationMapToString(declarationMap),\r\n resolvedClasses: Array.from(new Set(resolvedClasses)),\r\n unknownClasses: uniqueUnknown,\r\n sizeBytes,\r\n }\r\n}\r\n","import { classToCss } from \"@tailwind-styled/analyzer\"\r\nimport { formatErrorMessage, LRUCache } from \"@tailwind-styled/shared\"\r\n\r\nimport { getAnimateBinding } from \"./binding\"\r\nimport type {\r\n AnimateOptions,\r\n AnimationRegistryOptions,\r\n CompiledAnimation,\r\n KeyframesDefinition,\r\n} from \"./types\"\r\n\r\nconst DEFAULT_DURATION = 300\r\nconst DEFAULT_EASING = \"ease-out\"\r\nconst DEFAULT_DELAY = 0\r\nconst DEFAULT_FILL = \"both\"\r\nconst DEFAULT_ITERATIONS = 1\r\nconst DEFAULT_DIRECTION = \"normal\"\r\nconst DEFAULT_CACHE_LIMIT = 512\r\n\r\nfunction normalizeNumber(value: number | undefined, fallback: number): number {\r\n if (!Number.isFinite(value)) return fallback\r\n return Math.max(0, Math.trunc(value as number))\r\n}\r\n\r\nfunction normalizeCacheLimit(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_CACHE_LIMIT\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n\r\nfunction normalizeIterations(value: AnimateOptions[\"iterations\"]): string {\r\n if (value === \"infinite\") return \"infinite\"\r\n if (!Number.isFinite(value)) return String(DEFAULT_ITERATIONS)\r\n return String(Math.max(0, Math.trunc(value as number)))\r\n}\r\n\r\nfunction stableKeyframesEntries(\r\n stops: KeyframesDefinition\r\n): Array<{ offset: string; classes: string }> {\r\n return Object.entries(stops)\r\n .map(([offset, classes]) => ({ offset, classes }))\r\n .sort((left, right) => left.offset.localeCompare(right.offset))\r\n}\r\n\r\nfunction animationCacheKey(opts: AnimateOptions): string {\r\n const normalized = {\r\n from: opts.from.trim(),\r\n to: opts.to.trim(),\r\n duration: normalizeNumber(opts.duration, DEFAULT_DURATION),\r\n easing: (opts.easing ?? DEFAULT_EASING).trim(),\r\n delay: normalizeNumber(opts.delay, DEFAULT_DELAY),\r\n fill: opts.fill ?? DEFAULT_FILL,\r\n iterations: normalizeIterations(opts.iterations),\r\n direction: opts.direction ?? DEFAULT_DIRECTION,\r\n name: opts.name ?? \"\",\r\n }\r\n return JSON.stringify(normalized)\r\n}\r\n\r\nfunction keyframesCacheKey(name: string, stops: KeyframesDefinition): string {\r\n return `${name}::${JSON.stringify(stableKeyframesEntries(stops))}`\r\n}\r\n\r\nfunction splitClasses(classList: string): string[] {\r\n return classList\r\n .split(/\\s+/)\r\n .map((item) => item.trim())\r\n .filter((item) => item.length > 0)\r\n}\r\n\r\nasync function validateTailwindClasses(\r\n entries: Array<{ classList: string; context: string }>\r\n): Promise<void> {\r\n const binding = await getAnimateBinding()\r\n const unknownByContext = new Map<string, Set<string>>()\r\n const failures: string[] = []\r\n\r\n for (const entry of entries) {\r\n const classes = splitClasses(entry.classList)\r\n if (classes.length === 0) continue\r\n\r\n try {\r\n if (typeof binding.compileCss === \"function\") {\r\n const compiled = binding.compileCss(classes, null)\r\n if (!compiled) {\r\n failures.push(\r\n `Animation ${entry.context} failed validation: native compileCss returned no result.`\r\n )\r\n continue\r\n }\r\n if (compiled.unknownClasses.length > 0) {\r\n const bucket = unknownByContext.get(entry.context) ?? new Set<string>()\r\n for (const className of compiled.unknownClasses) bucket.add(className)\r\n unknownByContext.set(entry.context, bucket)\r\n }\r\n continue\r\n }\r\n\r\n const checked = await classToCss(classes, { strict: false })\r\n if (checked.unknownClasses.length > 0) {\r\n const bucket = unknownByContext.get(entry.context) ?? new Set<string>()\r\n for (const className of checked.unknownClasses) bucket.add(className)\r\n unknownByContext.set(entry.context, bucket)\r\n }\r\n } catch (error) {\r\n failures.push(`Animation ${entry.context} failed validation: ${formatErrorMessage(error)}`)\r\n }\r\n }\r\n\r\n const issues: string[] = []\r\n for (const [context, classes] of unknownByContext.entries()) {\r\n issues.push(\r\n `Animation ${context} contains unknown Tailwind classes: ${Array.from(classes).join(\", \")}`\r\n )\r\n }\r\n issues.push(...failures)\r\n\r\n if (issues.length > 0) {\r\n throw new Error(issues.join(\"\\n\"))\r\n }\r\n}\r\n\r\nexport class AnimationRegistry {\r\n private readonly animations: LRUCache<string, CompiledAnimation>\r\n private readonly animationBySignature: LRUCache<string, string>\r\n private readonly keyframesBySignature: LRUCache<string, string>\r\n\r\n constructor(options: AnimationRegistryOptions = {}) {\r\n const cacheLimit = normalizeCacheLimit(options.cacheLimit)\r\n this.animations = new LRUCache(cacheLimit)\r\n this.animationBySignature = new LRUCache(cacheLimit)\r\n this.keyframesBySignature = new LRUCache(cacheLimit)\r\n }\r\n\r\n async compileAnimation(opts: AnimateOptions): Promise<CompiledAnimation> {\r\n const signature = animationCacheKey(opts)\r\n const existingClassName = this.animationBySignature.get(signature)\r\n if (existingClassName) {\r\n const cached = this.animations.get(existingClassName)\r\n if (cached) return cached\r\n this.animationBySignature.delete(signature)\r\n }\r\n\r\n await validateTailwindClasses([\r\n { classList: opts.from, context: `\"from\" in ${opts.name ?? \"anonymous animation\"}` },\r\n { classList: opts.to, context: `\"to\" in ${opts.name ?? \"anonymous animation\"}` },\r\n ])\r\n\r\n const binding = await getAnimateBinding()\r\n const duration = normalizeNumber(opts.duration, DEFAULT_DURATION)\r\n const easing = opts.easing ?? DEFAULT_EASING\r\n const delay = normalizeNumber(opts.delay, DEFAULT_DELAY)\r\n const fill = opts.fill ?? DEFAULT_FILL\r\n const iterations = normalizeIterations(opts.iterations)\r\n const direction = opts.direction ?? DEFAULT_DIRECTION\r\n\r\n const compiled = binding.compileAnimation?.(\r\n opts.from,\r\n opts.to,\r\n opts.name ?? null,\r\n duration,\r\n easing,\r\n delay,\r\n fill,\r\n iterations,\r\n direction\r\n )\r\n\r\n if (!compiled) {\r\n throw new Error(\r\n `Native animate backend failed to compile animation \"${opts.name ?? \"anonymous animation\"}\".`\r\n )\r\n }\r\n\r\n const result: CompiledAnimation = {\r\n className: compiled.className,\r\n keyframesCss: compiled.keyframesCss,\r\n animationCss: compiled.animationCss,\r\n }\r\n\r\n this.animations.set(result.className, result)\r\n this.animationBySignature.set(signature, result.className)\r\n return result\r\n }\r\n\r\n async compileKeyframes(name: string, stops: KeyframesDefinition): Promise<CompiledAnimation> {\r\n const signature = keyframesCacheKey(name, stops)\r\n const existingClassName = this.keyframesBySignature.get(signature)\r\n if (existingClassName) {\r\n const cached = this.animations.get(existingClassName)\r\n if (cached) return cached\r\n this.keyframesBySignature.delete(signature)\r\n }\r\n\r\n await validateTailwindClasses(\r\n Object.entries(stops).map(([offset, classes]) => ({\r\n classList: classes,\r\n context: `\"${offset}\" stop in keyframes \"${name}\"`,\r\n }))\r\n )\r\n\r\n const binding = await getAnimateBinding()\r\n const stopsJson = JSON.stringify(stableKeyframesEntries(stops))\r\n const compiled = binding.compileKeyframes?.(name, stopsJson)\r\n\r\n if (!compiled) {\r\n throw new Error(`Native animate backend failed to compile keyframes \"${name}\".`)\r\n }\r\n\r\n const result: CompiledAnimation = {\r\n className: compiled.className,\r\n keyframesCss: compiled.keyframesCss,\r\n animationCss: compiled.animationCss,\r\n }\r\n\r\n this.animations.set(result.className, result)\r\n this.keyframesBySignature.set(signature, result.className)\r\n return result\r\n }\r\n\r\n extractCss(): string {\r\n const lines: string[] = []\r\n for (const [, compiled] of this.animations.entries()) {\r\n lines.push(compiled.keyframesCss)\r\n lines.push(`.${compiled.className} { ${compiled.animationCss} }`)\r\n }\r\n return lines.join(\"\\n\\n\")\r\n }\r\n\r\n reset(): void {\r\n this.animations.clear()\r\n this.animationBySignature.clear()\r\n this.keyframesBySignature.clear()\r\n }\r\n\r\n has(className: string): boolean {\r\n return this.animations.has(className)\r\n }\r\n}\r\n\r\nexport function createAnimationRegistry(options: AnimationRegistryOptions = {}): AnimationRegistry {\r\n return new AnimationRegistry(options)\r\n}\r\n","import { initAnimate as initAnimateBackend } from \"./binding\"\r\nimport { createAnimationPresets } from \"./preset\"\r\nimport { type AnimationRegistry, createAnimationRegistry } from \"./registry\"\r\nimport type { AnimateOptions, CompiledAnimation, KeyframesDefinition } from \"./types\"\r\n\r\nexport type {\r\n AnimateOptions,\r\n AnimationRegistryOptions,\r\n CompiledAnimation,\r\n CSSDirection,\r\n CSSEasing,\r\n CSSFillMode,\r\n CSSIterationCount,\r\n CubicBezierEasing,\r\n KeyframesDefinition,\r\n PresetEasing,\r\n StepsEasing,\r\n} from \"./types\"\r\n\r\nconst defaultRegistry = createAnimationRegistry()\r\n\r\nexport async function initAnimate(): Promise<void> {\r\n await initAnimateBackend()\r\n}\r\n\r\nexport function getDefaultAnimationRegistry(): AnimationRegistry {\r\n return defaultRegistry\r\n}\r\n\r\nexport async function compileAnimation(\r\n opts: AnimateOptions,\r\n registry: AnimationRegistry = defaultRegistry\r\n): Promise<CompiledAnimation> {\r\n return registry.compileAnimation(opts)\r\n}\r\n\r\nexport async function compileKeyframes(\r\n name: string,\r\n stops: KeyframesDefinition,\r\n registry: AnimationRegistry = defaultRegistry\r\n): Promise<CompiledAnimation> {\r\n return registry.compileKeyframes(name, stops)\r\n}\r\n\r\nexport async function animate(\r\n opts: AnimateOptions,\r\n registry: AnimationRegistry = defaultRegistry\r\n): Promise<string> {\r\n return (await registry.compileAnimation(opts)).className\r\n}\r\n\r\nexport async function keyframes(\r\n name: string,\r\n stops: KeyframesDefinition,\r\n registry: AnimationRegistry = defaultRegistry\r\n): Promise<string> {\r\n return (await registry.compileKeyframes(name, stops)).className\r\n}\r\n\r\nexport function extractAnimationCss(registry: AnimationRegistry = defaultRegistry): string {\r\n return registry.extractCss()\r\n}\r\n\r\nexport function resetAnimationRegistry(registry: AnimationRegistry = defaultRegistry): void {\r\n registry.reset()\r\n}\r\n\r\nexport interface InjectAnimationCssOptions {\r\n document?: Document\r\n styleId?: string\r\n silent?: boolean\r\n}\r\n\r\nexport function injectAnimationCss(\r\n registry: AnimationRegistry = defaultRegistry,\r\n options: InjectAnimationCssOptions = {}\r\n): void {\r\n const targetDocument =\r\n options.document ?? (typeof document !== \"undefined\" ? document : undefined)\r\n\r\n if (!targetDocument) {\r\n if (options.silent) return\r\n throw new Error(\"injectAnimationCss requires a browser Document.\")\r\n }\r\n\r\n const styleId = options.styleId ?? \"__tw_animate_styles__\"\r\n\r\n // Check if style element already exists\r\n const existingStyleEl = targetDocument.getElementById(styleId) as HTMLStyleElement | null\r\n\r\n // Use existing or create new\r\n const styleEl = (() => {\r\n if (existingStyleEl) return existingStyleEl\r\n\r\n if (!targetDocument.head) {\r\n if (options.silent) return null\r\n throw new Error(\"injectAnimationCss requires document.head to exist.\")\r\n }\r\n\r\n const newStyleEl = targetDocument.createElement(\"style\")\r\n newStyleEl.id = styleId\r\n targetDocument.head.appendChild(newStyleEl)\r\n return newStyleEl\r\n })()\r\n\r\n if (!styleEl) return\r\n\r\n styleEl.textContent = registry.extractCss()\r\n}\r\n\r\nexport { AnimationRegistry, createAnimationRegistry } from \"./registry\"\r\n\r\nexport const animations = createAnimationPresets(defaultRegistry)\r\n"]}
1
+ {"version":3,"sources":["../packages/domain/shared/src/index.ts","../packages/domain/animate/src/binding.ts","../packages/domain/animate/src/preset.ts","../packages/domain/analyzer/src/binding.ts","../packages/domain/analyzer/src/utils.ts","../packages/domain/analyzer/src/schemas.ts","../packages/domain/analyzer/src/classToCss.ts","../packages/domain/animate/src/registry.ts","../packages/domain/animate/src/index.ts"],"names":["path","fs","fileURLToPath","createRequire","DEBUG_NAMESPACE","debugLog","formatIssuePath","z","initAnimate"],"mappings":"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","file":"animate.js","sourcesContent":["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\"","import {\r\n createDebugLogger,\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n resolveRuntimeDir,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nimport type { NativeAnimateBinding } from \"./types\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Animate Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createAnimateBindingLoader = () => {\r\n const _state = { bindingPromise: null as Promise<NativeAnimateBinding> | null }\r\n\r\n const loadAnimateBinding = (): NativeAnimateBinding => {\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveBindingCandidates(runtimeDir)\r\n const { binding, loadErrors, loadedPath } = loadNativeBinding<NativeAnimateBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnimateModule,\r\n invalidExportMessage: \"Module loaded but missing compileAnimation/compileKeyframes exports.\",\r\n })\r\n\r\n if (binding) {\r\n debugLog(`native animate binding loaded from: ${loadedPath}`)\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n debugLog(\r\n `native animate binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\r\n .map((entry) => `${entry.path} (${entry.message})`)\r\n .join(\"; \")}`\r\n )\r\n } else {\r\n debugLog(\"native animate binding not found in any candidate path\")\r\n }\r\n\r\n const lines = [\r\n \"Native animate backend not found. Ensure `tailwind_styled_parser.node` is built.\",\r\n \"Checked paths:\",\r\n ...candidates.map((candidate) => `- ${candidate}`),\r\n ]\r\n if (loadErrors.length > 0) {\r\n lines.push(\"Load errors:\")\r\n for (const error of loadErrors) lines.push(`- ${error.path}: ${error.message}`)\r\n }\r\n throw new Error(lines.join(\"\\n\"))\r\n }\r\n\r\n return {\r\n get: (): Promise<NativeAnimateBinding> => {\r\n if (!_state.bindingPromise) {\r\n _state.bindingPromise = Promise.resolve().then(loadAnimateBinding)\r\n }\r\n return _state.bindingPromise\r\n },\r\n reset: (): void => {\r\n _state.bindingPromise = null\r\n },\r\n }\r\n}\r\n\r\nconst animateBindingLoader = createAnimateBindingLoader()\r\n\r\nconst DEBUG_NAMESPACE = \"tailwind-styled:animate\"\r\nconst debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/animate\")\r\n\r\nfunction isAnimateModule(module: unknown): module is NativeAnimateBinding {\r\n const candidate = module as Partial<NativeAnimateBinding> | null | undefined\r\n return (\r\n typeof candidate?.compileAnimation === \"function\" &&\r\n typeof candidate?.compileKeyframes === \"function\"\r\n )\r\n}\r\n\r\nfunction resolveBindingCandidates(runtimeDir: string): string[] {\r\n return resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_ANIMATE_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\r\n enforceNodeExtensionForEnvPath: true,\r\n })\r\n}\r\n\r\nexport async function getAnimateBinding(): Promise<NativeAnimateBinding> {\r\n return animateBindingLoader.get()\r\n}\r\n\r\nexport async function initAnimate(): Promise<void> {\r\n await getAnimateBinding()\r\n}\r\n","import { LRUCache } from \"@tailwind-styled/shared\"\r\n\r\nimport type { AnimationRegistry } from \"./registry\"\r\n\r\nconst DEFAULT_PRESET_CACHE_LIMIT = 32\r\n\r\nexport function createAnimationPresets(registry: AnimationRegistry) {\r\n const cache = new LRUCache<string, Promise<string>>(DEFAULT_PRESET_CACHE_LIMIT)\r\n\r\n const withCache =\r\n (cacheKey: string, factory: () => Promise<string>): (() => Promise<string>) =>\r\n async () => {\r\n const cached = cache.get(cacheKey)\r\n if (cached) {\r\n const className = await cached\r\n if (registry.has(className)) return className\r\n cache.delete(cacheKey)\r\n }\r\n\r\n const pending = factory()\r\n cache.set(cacheKey, pending)\r\n try {\r\n return await pending\r\n } catch (error) {\r\n cache.delete(cacheKey)\r\n throw error\r\n }\r\n }\r\n\r\n return {\r\n fadeIn: withCache(\r\n \"fadeIn\",\r\n async () =>\r\n (await registry.compileAnimation({ from: \"opacity-0\", to: \"opacity-100\", duration: 200 }))\r\n .className\r\n ),\r\n fadeOut: withCache(\r\n \"fadeOut\",\r\n async () =>\r\n (await registry.compileAnimation({ from: \"opacity-100\", to: \"opacity-0\", duration: 200 }))\r\n .className\r\n ),\r\n slideUp: withCache(\r\n \"slideUp\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 translate-y-4\",\r\n to: \"opacity-100 translate-y-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n slideDown: withCache(\r\n \"slideDown\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 -translate-y-4\",\r\n to: \"opacity-100 translate-y-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n slideLeft: withCache(\r\n \"slideLeft\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 translate-x-4\",\r\n to: \"opacity-100 translate-x-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n slideRight: withCache(\r\n \"slideRight\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 -translate-x-4\",\r\n to: \"opacity-100 translate-x-0\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n scaleIn: withCache(\r\n \"scaleIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 scale-95\",\r\n to: \"opacity-100 scale-100\",\r\n duration: 200,\r\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\r\n })\r\n ).className\r\n ),\r\n scaleOut: withCache(\r\n \"scaleOut\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-100 scale-100\",\r\n to: \"opacity-0 scale-95\",\r\n duration: 150,\r\n })\r\n ).className\r\n ),\r\n blurIn: withCache(\r\n \"blurIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 blur-sm\",\r\n to: \"opacity-100 blur-none\",\r\n duration: 300,\r\n })\r\n ).className\r\n ),\r\n bounceIn: withCache(\r\n \"bounceIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 scale-50\",\r\n to: \"opacity-100 scale-100\",\r\n duration: 400,\r\n easing: \"cubic-bezier(0.34,1.56,0.64,1)\",\r\n })\r\n ).className\r\n ),\r\n spinIn: withCache(\r\n \"spinIn\",\r\n async () =>\r\n (\r\n await registry.compileAnimation({\r\n from: \"opacity-0 rotate-180 scale-50\",\r\n to: \"opacity-100 rotate-0 scale-100\",\r\n duration: 400,\r\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\r\n })\r\n ).className\r\n ),\r\n } as const\r\n}\r\n","import {\r\n loadNativeBinding,\r\n resolveNativeBindingCandidates,\r\n resolveRuntimeDir,\r\n} from \"@tailwind-styled/shared\"\r\n\r\nimport type { NativeAnalyzerBinding, NativeCssCompilerBinding } from \"./types\"\r\nimport { debugLog } from \"./utils\"\r\n\r\nconst isAnalyzerModule = (module: unknown): module is NativeAnalyzerBinding => {\r\n const candidate = module as Partial<NativeAnalyzerBinding> | null | undefined\r\n return typeof candidate?.analyzeClasses === \"function\"\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────\r\n// Native Analyzer Binding - Factory Pattern (no let!)\r\n// ─────────────────────────────────────────────────────────────────────────\r\n\r\nconst createAnalyzerBindingLoader = () => {\r\n const _state = { bindingPromise: null as Promise<NativeAnalyzerBinding | null> | null }\r\n\r\n const getBindingPromise = (): Promise<NativeAnalyzerBinding | null> => {\r\n if (_state.bindingPromise) return _state.bindingPromise\r\n\r\n _state.bindingPromise = (async (): Promise<NativeAnalyzerBinding | null> => {\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { binding, loadErrors, loadedPath } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n if (binding) {\r\n debugLog(`native binding loaded from: ${loadedPath}`)\r\n return binding\r\n }\r\n\r\n if (loadErrors.length > 0) {\r\n debugLog(\r\n `native binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\r\n .map((entry) => `${entry.path} (${entry.message})`)\r\n .join(\"; \")}`\r\n )\r\n } else {\r\n debugLog(\"native binding not found in any candidate path\")\r\n }\r\n\r\n return null\r\n })()\r\n\r\n return _state.bindingPromise\r\n }\r\n\r\n return {\r\n get: getBindingPromise,\r\n reset: (): void => {\r\n _state.bindingPromise = null\r\n },\r\n }\r\n}\r\n\r\nconst analyzerBindingLoader = createAnalyzerBindingLoader()\r\n\r\nexport async function getNativeBinding(): Promise<NativeAnalyzerBinding | null> {\r\n return analyzerBindingLoader.get()\r\n}\r\n\r\nexport async function requireNativeBinding(): Promise<NativeAnalyzerBinding> {\r\n const binding = await analyzerBindingLoader.get()\r\n if (binding?.analyzeClasses) return binding\r\n\r\n // Untuk error reporting, kita perlu akses ke candidates dan loadErrors\r\n // Tapi karena async, kita perlu load ulang atau simpan state\r\n const runtimeDir = resolveRuntimeDir(\r\n typeof __dirname === \"string\" ? __dirname : undefined,\r\n import.meta.url\r\n )\r\n const candidates = resolveNativeBindingCandidates({\r\n runtimeDir,\r\n envVarNames: [\"TWS_NATIVE_PATH\"],\r\n })\r\n\r\n const { loadErrors } = await loadNativeBinding<NativeAnalyzerBinding>({\r\n runtimeDir,\r\n candidates,\r\n isValid: isAnalyzerModule,\r\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\r\n })\r\n\r\n const lines = [\r\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\",\r\n ]\r\n\r\n lines.push(\"Checked paths:\")\r\n for (const candidate of candidates) lines.push(`- ${candidate}`)\r\n if (loadErrors.length > 0) {\r\n lines.push(\"Load errors:\")\r\n for (const failure of loadErrors) {\r\n lines.push(`- ${failure.path}: ${failure.message}`)\r\n }\r\n }\r\n\r\n throw new Error(lines.join(\"\\n\"))\r\n}\r\n\r\nexport async function requireNativeCssCompiler(): Promise<NativeCssCompilerBinding> {\r\n const binding = await requireNativeBinding()\r\n if (typeof binding.compileCss === \"function\") return binding as NativeCssCompilerBinding\r\n\r\n throw new Error(`Native analyzer compileCss binding is missing.`)\r\n}\r\n","import fs from \"node:fs\"\r\nimport { createDebugLogger } from \"@tailwind-styled/shared\"\r\n\r\nexport const DEFAULT_TOP_LIMIT = 10\r\nexport const DEFAULT_FREQUENT_THRESHOLD = 2\r\nexport const DEBUG_NAMESPACE = \"tailwind-styled:analyzer\"\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n return error instanceof Error ? error.message : String(error)\r\n}\r\n\r\nexport function isRecord(value: unknown): value is Record<string, unknown> {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nexport async function pathExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.promises.access(filePath, fs.constants.F_OK)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport const debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\")\r\n\r\nexport function sanitizeTopLimit(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n\r\nexport function sanitizeFrequentThreshold(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n","import { TwError } from \"@tailwind-styled/shared\"\r\nimport type { ScanWorkspaceOptions } from \"@tailwind-styled/scanner\"\r\nimport { z } from \"zod\"\r\n\r\nconst formatIssuePath = (path: readonly PropertyKey[]): string =>\r\n path.length > 0\r\n ? path\r\n .map((segment) =>\r\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\r\n )\r\n .join(\".\")\r\n : \"<root>\"\r\n\r\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\r\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\r\n const proto = Object.getPrototypeOf(value)\r\n return proto === Object.prototype || proto === null\r\n}\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const path = formatIssuePath(issue.path)\r\n return `${path}: ${issue.message}`\r\n })\r\n .join(\"; \")\r\n\r\nconst parseWithSchema = <T>(schema: z.ZodType<T>, data: unknown, label: string): T => {\r\n const parsed = schema.safeParse(data)\r\n if (parsed.success) return parsed.data\r\n const details = formatIssues(parsed.error)\r\n throw new TwError(\r\n \"validation\",\r\n \"SCHEMA_VALIDATION_FAILED\",\r\n details ? `${label}: ${details}` : label,\r\n parsed.error\r\n )\r\n}\r\n\r\nconst CountSchema = z.number().int().min(0)\r\n\r\nexport const ClassUsageSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n isUnused: z.boolean().optional(),\r\n isConflict: z.boolean().optional(),\r\n})\r\n\r\nexport const ClassConflictSchema = z.object({\r\n className: z.string(),\r\n variants: z.array(z.string()),\r\n classes: z.array(z.string()),\r\n message: z.string(),\r\n})\r\n\r\nconst ClassCountSchema = z.object({\r\n name: z.string(),\r\n count: CountSchema,\r\n})\r\n\r\nexport const NativeReportSchema = z.object({\r\n root: z.string(),\r\n totalFiles: CountSchema,\r\n uniqueClassCount: CountSchema,\r\n totalClassOccurrences: CountSchema,\r\n topClasses: z.array(ClassCountSchema),\r\n duplicateCandidates: z.array(ClassCountSchema),\r\n safelist: z.array(z.string()),\r\n})\r\n\r\nexport const NativeCssCompileResultSchema = z.object({\r\n css: z.string(),\r\n resolvedClasses: z.array(z.string()),\r\n unknownClasses: z.array(z.string()),\r\n sizeBytes: CountSchema,\r\n})\r\n\r\nconst AnalyzerClassStatsSchema = z.object({\r\n top: z\r\n .number({\r\n error: \"analyzeWorkspace options.classStats.top must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n frequentThreshold: z\r\n .number({\r\n error:\r\n \"analyzeWorkspace options.classStats.frequentThreshold must be a number when provided.\",\r\n })\r\n .finite()\r\n .optional(),\r\n})\r\n\r\nconst AnalyzerSemanticOptionsSchema = z.object({\r\n tailwindConfigPath: z\r\n .string({\r\n error:\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\",\r\n })\r\n .min(\r\n 1,\r\n \"analyzeWorkspace options.semantic.tailwindConfigPath must be a non-empty string when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const AnalyzerOptionsSchema = z.object({\r\n scanner: z\r\n .custom<ScanWorkspaceOptions>(\r\n (value) => isPlainObject(value),\r\n \"analyzeWorkspace options.scanner must be an object when provided.\"\r\n )\r\n .optional(),\r\n classStats: AnalyzerClassStatsSchema.optional(),\r\n semantic: z\r\n .union([\r\n z.boolean({\r\n error: \"analyzeWorkspace options.semantic must be a boolean or an object when provided.\",\r\n }),\r\n AnalyzerSemanticOptionsSchema,\r\n ])\r\n .optional(),\r\n includeClass: z\r\n .custom<(className: string) => boolean>(\r\n (value) => typeof value === \"function\",\r\n \"analyzeWorkspace options.includeClass must be a function when provided.\"\r\n )\r\n .optional(),\r\n})\r\n\r\nexport const ClassToCssOptionsSchema = z.object({\r\n prefix: z\r\n .union([z.string(), z.null()], {\r\n error: \"classToCss options.prefix must be a string or null when provided.\",\r\n })\r\n .optional(),\r\n strict: z\r\n .boolean({\r\n error: \"classToCss options.strict must be a boolean when provided.\",\r\n })\r\n .optional(),\r\n})\r\n\r\nexport const parseAnalyzerOptions = (options: unknown) =>\r\n parseWithSchema(AnalyzerOptionsSchema, options ?? {}, \"analyzeWorkspace options are invalid\")\r\n\r\nexport const parseNativeReport = (report: unknown) =>\r\n parseWithSchema(NativeReportSchema, report, \"Native analyzer report is invalid\")\r\n\r\nexport const parseNativeCssCompileResult = (result: unknown, className?: string) =>\r\n parseWithSchema(\r\n NativeCssCompileResultSchema,\r\n result,\r\n className\r\n ? `Native CSS compile result is invalid for class \"${className}\"`\r\n : \"Native CSS compile result is invalid\"\r\n )\r\n\r\nexport const parseClassToCssOptions = (options: unknown) =>\r\n parseWithSchema(ClassToCssOptionsSchema, options ?? {}, \"classToCss options are invalid\")\r\n","import { requireNativeCssCompiler } from \"./binding\"\r\nimport { parseClassToCssOptions, parseNativeCssCompileResult } from \"./schemas\"\r\nimport type { ClassToCssOptions, ClassToCssResult } from \"./types\"\r\nimport { formatErrorMessage } from \"./utils\"\r\n\r\nexport const normalizeClassInput = (input: string | string[], _binding?: { normalizeClassInput?: (s: string) => string[] }): string[] => {\r\n // Native-first: untuk single string, delegate ke Rust yang lebih cepat\r\n if (typeof input === \"string\") {\r\n if (_binding?.normalizeClassInput) {\r\n return _binding.normalizeClassInput(input)\r\n }\r\n return input\r\n .split(/\\s+/)\r\n .map((item) => item.trim())\r\n .filter((item) => item.length > 0)\r\n }\r\n\r\n if (!Array.isArray(input)) {\r\n throw new TypeError(\"classToCss input must be a string or an array of strings.\")\r\n }\r\n\r\n const out: string[] = []\r\n for (const item of input) {\r\n if (typeof item !== \"string\") {\r\n throw new TypeError(\"classToCss input array must contain only strings.\")\r\n }\r\n const value = item.trim()\r\n if (value.length > 0) out.push(value)\r\n }\r\n return out\r\n}\r\n\r\nconst normalizeClassToCssOptions = (\r\n options: ClassToCssOptions\r\n): {\r\n prefix: string | null\r\n strict: boolean\r\n} => {\r\n const parsed = parseClassToCssOptions(options)\r\n const strict = parsed.strict ?? false\r\n const prefix = parsed.prefix ?? null\r\n\r\n return { prefix, strict }\r\n}\r\n\r\nconst mergeDeclarationMap = (\r\n target: Map<string, string>,\r\n css: string,\r\n binding: { parseCssRules?: (css: string) => Array<{ property: string; value: string; isImportant: boolean }> }\r\n): void => {\r\n if (!binding.parseCssRules) {\r\n throw new Error(\"FATAL: Native binding 'parseCssRules' is required but not available.\")\r\n }\r\n const rules = binding.parseCssRules(css)\r\n for (const rule of rules) {\r\n if (target.has(rule.property)) target.delete(rule.property)\r\n target.set(rule.property, rule.isImportant ? `${rule.value} !important` : rule.value)\r\n }\r\n}\r\n\r\nconst declarationMapToString = (\r\n declarationMap: Map<string, string>,\r\n binding?: { declarationMapToString?: (entries: Array<{ property: string; value: string }>) => string }\r\n): string => {\r\n // Native-first: serialize entries via Rust (satu allocation vs JS multiple)\r\n const entries = Array.from(declarationMap.entries()).map(([property, value]) => ({ property, value }))\r\n if (binding?.declarationMapToString) {\r\n return binding.declarationMapToString(entries)\r\n }\r\n // JS fallback\r\n return entries.map(({ property, value }) => `${property}: ${value}`).join(\"; \")\r\n}\r\n\r\n/**\r\n * Convert Tailwind class input into atomic CSS output via native binding.\r\n * @example\r\n * const css = await classToCss(\"opacity-0 translate-y-2\", { strict: true })\r\n */\r\nexport const classToCss = async (\r\n input: string | string[],\r\n options: ClassToCssOptions = {}\r\n): Promise<ClassToCssResult> => {\r\n const binding = await requireNativeCssCompiler()\r\n const inputClasses = normalizeClassInput(input, binding)\r\n const normalizedOptions = normalizeClassToCssOptions(options)\r\n\r\n if (inputClasses.length === 0) {\r\n return {\r\n inputClasses: [],\r\n css: \"\",\r\n declarations: \"\",\r\n resolvedClasses: [],\r\n unknownClasses: [],\r\n sizeBytes: 0,\r\n }\r\n }\r\n\r\n const prefix = normalizedOptions.prefix\r\n\r\n const results = await Promise.all(\r\n inputClasses.map(async (className) => {\r\n const compiled = (() => {\r\n try {\r\n return binding.compileCss([className], prefix)\r\n } catch (error) {\r\n throw new Error(\r\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\r\n { cause: error }\r\n )\r\n }\r\n })()\r\n\r\n if (!compiled) {\r\n throw new Error(`Native analyzer returned no result for class \"${className}\".`)\r\n }\r\n\r\n const validated = parseNativeCssCompileResult(compiled, className)\r\n\r\n return {\r\n className,\r\n css: validated.css,\r\n resolvedClasses: validated.resolvedClasses,\r\n unknownClasses: validated.unknownClasses,\r\n sizeBytes: validated.sizeBytes,\r\n }\r\n })\r\n )\r\n\r\n const cssChunks = results.map((r) => r.css)\r\n const resolvedClasses = results.flatMap((r) => r.resolvedClasses)\r\n const unknownClasses = results.flatMap((r) => r.unknownClasses)\r\n const sizeBytes = results.reduce((sum, r) => sum + r.sizeBytes, 0)\r\n\r\n const declarationMap = new Map<string, string>()\r\n for (const result of results) {\r\n mergeDeclarationMap(declarationMap, result.css, binding)\r\n }\r\n\r\n const uniqueUnknown = Array.from(new Set(unknownClasses))\r\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\r\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`)\r\n }\r\n\r\n return {\r\n inputClasses,\r\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\r\n declarations: declarationMapToString(declarationMap, binding),\r\n resolvedClasses: Array.from(new Set(resolvedClasses)),\r\n unknownClasses: uniqueUnknown,\r\n sizeBytes,\r\n }\r\n}","import { classToCss } from \"@tailwind-styled/analyzer\"\r\nimport { formatErrorMessage, LRUCache } from \"@tailwind-styled/shared\"\r\n\r\nimport { getAnimateBinding } from \"./binding\"\r\nimport type {\r\n AnimateOptions,\r\n AnimationRegistryOptions,\r\n CompiledAnimation,\r\n KeyframesDefinition,\r\n} from \"./types\"\r\n\r\nconst DEFAULT_DURATION = 300\r\nconst DEFAULT_EASING = \"ease-out\"\r\nconst DEFAULT_DELAY = 0\r\nconst DEFAULT_FILL = \"both\"\r\nconst DEFAULT_ITERATIONS = 1\r\nconst DEFAULT_DIRECTION = \"normal\"\r\nconst DEFAULT_CACHE_LIMIT = 512\r\n\r\nfunction normalizeNumber(value: number | undefined, fallback: number): number {\r\n if (!Number.isFinite(value)) return fallback\r\n return Math.max(0, Math.trunc(value as number))\r\n}\r\n\r\nfunction normalizeCacheLimit(value: number | undefined): number {\r\n if (!Number.isFinite(value)) return DEFAULT_CACHE_LIMIT\r\n return Math.max(1, Math.trunc(value as number))\r\n}\r\n\r\nfunction normalizeIterations(value: AnimateOptions[\"iterations\"]): string {\r\n if (value === \"infinite\") return \"infinite\"\r\n if (!Number.isFinite(value)) return String(DEFAULT_ITERATIONS)\r\n return String(Math.max(0, Math.trunc(value as number)))\r\n}\r\n\r\nfunction stableKeyframesEntries(\r\n stops: KeyframesDefinition\r\n): Array<{ offset: string; classes: string }> {\r\n return Object.entries(stops)\r\n .map(([offset, classes]) => ({ offset, classes }))\r\n .sort((left, right) => left.offset.localeCompare(right.offset))\r\n}\r\n\r\nfunction animationCacheKey(opts: AnimateOptions): string {\r\n const normalized = {\r\n from: (opts.from ?? \"\").trim(),\r\n to: (opts.to ?? \"\").trim(),\r\n duration: normalizeNumber(opts.duration as number | undefined, DEFAULT_DURATION),\r\n easing: (opts.easing ?? DEFAULT_EASING).trim(),\r\n delay: normalizeNumber(opts.delay as number | undefined, DEFAULT_DELAY),\r\n fill: opts.fill ?? DEFAULT_FILL,\r\n iterations: normalizeIterations(opts.iterations),\r\n direction: opts.direction ?? DEFAULT_DIRECTION,\r\n name: opts.name ?? \"\",\r\n }\r\n return JSON.stringify(normalized)\r\n}\r\n\r\nfunction keyframesCacheKey(name: string, stops: KeyframesDefinition): string {\r\n return `${name}::${JSON.stringify(stableKeyframesEntries(stops))}`\r\n}\r\n\r\n/**\r\n * Split class list string → individual tokens.\r\n *\r\n * Native-first: `splitAnimateClasses` di Rust pakai `split_whitespace()` —\r\n * satu pass, tanpa RegExp overhead, tanpa `.map(trim).filter(len>0)`.\r\n *\r\n * JS fallback: behavior identik, dipakai kalau binding belum load.\r\n *\r\n * Catatan: binding di-pass sebagai parameter untuk menghindari await\r\n * (fungsi ini dipanggil dalam konteks sync setelah binding sudah resolve).\r\n */\r\nfunction splitClasses(classList: string, binding?: { splitAnimateClasses?: (s: string) => string[] }): string[] {\r\n if (binding?.splitAnimateClasses) {\r\n return binding.splitAnimateClasses(classList)\r\n }\r\n // JS fallback\r\n return classList\r\n .split(/\\s+/)\r\n .map((item) => item.trim())\r\n .filter((item) => item.length > 0)\r\n}\r\n\r\nasync function validateTailwindClasses(\r\n entries: Array<{ classList: string; context: string }>\r\n): Promise<void> {\r\n const binding = await getAnimateBinding()\r\n const unknownByContext = new Map<string, Set<string>>()\r\n const failures: string[] = []\r\n\r\n for (const entry of entries) {\r\n const classes = splitClasses(entry.classList, binding)\r\n if (classes.length === 0) continue\r\n\r\n const result = await classToCss(classes)\r\n if (result.unknownClasses.length > 0) {\r\n unknownByContext.set(entry.context, new Set(result.unknownClasses))\r\n }\r\n }\r\n\r\n for (const [context, unknownSet] of unknownByContext.entries()) {\r\n failures.push(`[${context}] unknown classes: ${Array.from(unknownSet).join(\", \")}`)\r\n }\r\n\r\n if (failures.length > 0) {\r\n throw new Error(`Animation validation failed:\\n${failures.join(\"\\n\")}`)\r\n }\r\n}\r\n\r\nexport interface AnimationRegistry {\r\n compileAnimation(opts: AnimateOptions): Promise<CompiledAnimation>\r\n compileKeyframes(name: string, stops: KeyframesDefinition): Promise<CompiledAnimation>\r\n extractCss(): string\r\n reset(): void\r\n /** Check apakah className sudah terdaftar di registry */\r\n has(className: string): boolean\r\n}\r\n\r\nexport function createAnimationRegistry(\r\n options: AnimationRegistryOptions = {}\r\n): AnimationRegistry {\r\n const cacheLimit = normalizeCacheLimit(options.cacheLimit)\r\n const cache = new LRUCache<string, CompiledAnimation>(cacheLimit)\r\n const cssChunks: string[] = []\r\n const classNames = new Set<string>()\r\n\r\n return {\r\n async compileAnimation(opts: AnimateOptions): Promise<CompiledAnimation> {\r\n const key = animationCacheKey(opts)\r\n const cached = cache.get(key)\r\n if (cached) return cached\r\n\r\n const binding = await getAnimateBinding()\r\n\r\n // Only validate if from/to are non-empty strings\r\n const classesToValidate = [\r\n { classList: opts.from ?? \"\", context: \"from\" },\r\n { classList: opts.to ?? \"\", context: \"to\" },\r\n ].filter((entry) => entry.classList.trim().length > 0)\r\n\r\n if (classesToValidate.length > 0) {\r\n await validateTailwindClasses(classesToValidate)\r\n }\r\n\r\n if (!binding.compileAnimation) {\r\n throw new Error(\"FATAL: Native binding 'compileAnimation' is required but not available.\")\r\n }\r\n\r\n const result = binding.compileAnimation(\r\n opts.from,\r\n opts.to,\r\n opts.name ?? null,\r\n normalizeNumber(opts.duration, DEFAULT_DURATION),\r\n (opts.easing ?? DEFAULT_EASING) as string,\r\n normalizeNumber(opts.delay, DEFAULT_DELAY),\r\n opts.fill ?? DEFAULT_FILL,\r\n normalizeIterations(opts.iterations),\r\n opts.direction ?? DEFAULT_DIRECTION\r\n )\r\n\r\n if (!result) {\r\n throw new Error(`compileAnimation returned null for opts: ${JSON.stringify(opts)}`)\r\n }\r\n\r\n const compiled: CompiledAnimation = {\r\n className: result.className,\r\n keyframesCss: result.keyframesCss,\r\n animationCss: result.animationCss,\r\n }\r\n\r\n cache.set(key, compiled)\r\n if (result.keyframesCss) cssChunks.push(result.keyframesCss)\r\n if (result.animationCss) cssChunks.push(result.animationCss)\r\n\r\n return compiled\r\n },\r\n\r\n async compileKeyframes(name: string, stops: KeyframesDefinition): Promise<CompiledAnimation> {\r\n const key = keyframesCacheKey(name, stops)\r\n const cached = cache.get(key)\r\n if (cached) return cached\r\n\r\n const binding = await getAnimateBinding()\r\n const stopsJson = JSON.stringify(stableKeyframesEntries(stops))\r\n\r\n if (!binding.compileKeyframes) {\r\n throw new Error(\"FATAL: Native binding 'compileKeyframes' is required but not available.\")\r\n }\r\n\r\n const result = binding.compileKeyframes(name, stopsJson)\r\n\r\n if (!result) {\r\n throw new Error(`compileKeyframes returned null for name: ${name}`)\r\n }\r\n\r\n const compiled: CompiledAnimation = {\r\n className: result.className,\r\n keyframesCss: result.keyframesCss,\r\n animationCss: result.animationCss,\r\n }\r\n\r\n cache.set(key, compiled)\r\n if (result.keyframesCss) cssChunks.push(result.keyframesCss)\r\n if (result.animationCss) cssChunks.push(result.animationCss)\r\n\r\n return compiled\r\n },\r\n\r\n extractCss(): string {\r\n return cssChunks.join(\"\\n\")\r\n },\r\n\r\n reset(): void {\r\n cache.clear?.()\r\n cssChunks.length = 0\r\n classNames.clear()\r\n },\r\n\r\n has(className: string): boolean {\r\n return classNames.has(className)\r\n },\r\n }\r\n}","import { initAnimate as initAnimateBackend } from \"./binding\"\r\nimport { createAnimationPresets } from \"./preset\"\r\nimport { type AnimationRegistry, createAnimationRegistry } from \"./registry\"\r\nimport type { AnimateOptions, CompiledAnimation, KeyframesDefinition } from \"./types\"\r\n\r\nexport type {\r\n AnimateOptions,\r\n AnimationRegistryOptions,\r\n CompiledAnimation,\r\n CSSDirection,\r\n CSSEasing,\r\n CSSFillMode,\r\n CSSIterationCount,\r\n CubicBezierEasing,\r\n KeyframesDefinition,\r\n PresetEasing,\r\n StepsEasing,\r\n} from \"./types\"\r\n\r\nconst defaultRegistry = createAnimationRegistry()\r\n\r\nexport async function initAnimate(): Promise<void> {\r\n await initAnimateBackend()\r\n}\r\n\r\nexport function getDefaultAnimationRegistry(): AnimationRegistry {\r\n return defaultRegistry\r\n}\r\n\r\nexport async function compileAnimation(\r\n optsOrName: AnimateOptions | string,\r\n secondArg?: AnimationRegistry | Partial<AnimateOptions>\r\n): Promise<CompiledAnimation> {\r\n // Overload: compileAnimation(name, partialOpts?)\r\n if (typeof optsOrName === \"string\") {\r\n const partialOpts =\r\n secondArg && typeof (secondArg as AnimationRegistry).compileAnimation !== \"function\"\r\n ? (secondArg as Partial<AnimateOptions>)\r\n : {}\r\n const opts: AnimateOptions = { from: \"\", to: \"\", ...partialOpts, name: optsOrName }\r\n return defaultRegistry.compileAnimation(opts)\r\n }\r\n // Original: compileAnimation(opts, registry?)\r\n const registry =\r\n secondArg && typeof (secondArg as AnimationRegistry).compileAnimation === \"function\"\r\n ? (secondArg as AnimationRegistry)\r\n : defaultRegistry\r\n return registry.compileAnimation(optsOrName)\r\n}\r\n\r\nexport async function compileKeyframes(\r\n name: string,\r\n stops: KeyframesDefinition,\r\n registry: AnimationRegistry = defaultRegistry\r\n): Promise<CompiledAnimation> {\r\n return registry.compileKeyframes(name, stops)\r\n}\r\n\r\nexport async function animate(\r\n opts: AnimateOptions,\r\n registry: AnimationRegistry = defaultRegistry\r\n): Promise<string> {\r\n return (await registry.compileAnimation(opts)).className\r\n}\r\n\r\nexport async function keyframes(\r\n name: string,\r\n stops: KeyframesDefinition,\r\n registry: AnimationRegistry = defaultRegistry\r\n): Promise<string> {\r\n return (await registry.compileKeyframes(name, stops)).className\r\n}\r\n\r\nexport function extractAnimationCss(registry: AnimationRegistry = defaultRegistry): string {\r\n return registry.extractCss()\r\n}\r\n\r\nexport function resetAnimationRegistry(registry: AnimationRegistry = defaultRegistry): void {\r\n registry.reset()\r\n}\r\n\r\nexport interface InjectAnimationCssOptions {\r\n document?: Document\r\n styleId?: string\r\n silent?: boolean\r\n}\r\n\r\nexport function injectAnimationCss(\r\n registry: AnimationRegistry = defaultRegistry,\r\n options: InjectAnimationCssOptions = {}\r\n): void {\r\n const targetDocument =\r\n options.document ?? (typeof document !== \"undefined\" ? document : undefined)\r\n\r\n if (!targetDocument) {\r\n if (options.silent) return\r\n throw new Error(\"injectAnimationCss requires a browser Document.\")\r\n }\r\n\r\n const styleId = options.styleId ?? \"__tw_animate_styles__\"\r\n\r\n // Check if style element already exists\r\n const existingStyleEl = targetDocument.getElementById(styleId) as HTMLStyleElement | null\r\n\r\n // Use existing or create new\r\n const styleEl = (() => {\r\n if (existingStyleEl) return existingStyleEl\r\n\r\n if (!targetDocument.head) {\r\n if (options.silent) return null\r\n throw new Error(\"injectAnimationCss requires document.head to exist.\")\r\n }\r\n\r\n const newStyleEl = targetDocument.createElement(\"style\")\r\n newStyleEl.id = styleId\r\n targetDocument.head.appendChild(newStyleEl)\r\n return newStyleEl\r\n })()\r\n\r\n if (!styleEl) return\r\n\r\n styleEl.textContent = registry.extractCss()\r\n}\r\n\r\nexport { createAnimationRegistry } from \"./registry\"\r\n\r\n// Export createAnimationRegistry as AnimationRegistry for consumers that use\r\n// `new AnimationRegistry()` or import { AnimationRegistry } as a value\r\nexport { createAnimationRegistry as AnimationRegistry } from \"./registry\"\r\n\r\n// Re-export the type separately for type-only imports\r\nexport type { AnimationRegistry as AnimationRegistryType } from \"./registry\"\r\n\r\nexport const animations = createAnimationPresets(defaultRegistry)"]}