tailwind-styled-v4 5.0.12 → 5.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +100 -4
- package/dist/animate.d.mts +4 -0
- package/dist/animate.d.ts +4 -0
- package/dist/animate.js +22 -0
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +22 -0
- package/dist/animate.mjs.map +1 -1
- package/dist/atomic.js +42 -0
- package/dist/atomic.js.map +1 -1
- package/dist/atomic.mjs +42 -0
- package/dist/atomic.mjs.map +1 -1
- package/dist/cli.js +142 -0
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +142 -0
- package/dist/cli.mjs.map +1 -1
- package/dist/compiler.d.mts +1045 -991
- package/dist/compiler.d.ts +1045 -991
- package/dist/compiler.js +888 -922
- package/dist/compiler.js.map +1 -1
- package/dist/compiler.mjs +873 -908
- package/dist/compiler.mjs.map +1 -1
- package/dist/engine.js +1637 -340
- package/dist/engine.js.map +1 -1
- package/dist/engine.mjs +1636 -339
- package/dist/engine.mjs.map +1 -1
- package/dist/index.js +1636 -339
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1636 -339
- package/dist/index.mjs.map +1 -1
- package/dist/next.js +1060 -970
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +1060 -970
- package/dist/next.mjs.map +1 -1
- package/dist/shared.js +1607 -310
- package/dist/shared.js.map +1 -1
- package/dist/shared.mjs +1607 -310
- package/dist/shared.mjs.map +1 -1
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs.map +1 -1
- package/dist/turbopackLoader.js +1610 -313
- package/dist/turbopackLoader.js.map +1 -1
- package/dist/turbopackLoader.mjs +1610 -313
- package/dist/turbopackLoader.mjs.map +1 -1
- package/dist/tw.js +142 -0
- package/dist/tw.js.map +1 -1
- package/dist/tw.mjs +142 -0
- package/dist/tw.mjs.map +1 -1
- package/dist/vite.js +1622 -325
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +1622 -325
- package/dist/vite.mjs.map +1 -1
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs.map +1 -1
- package/dist/webpackLoader.js +66 -15
- package/dist/webpackLoader.js.map +1 -1
- package/dist/webpackLoader.mjs +66 -15
- package/dist/webpackLoader.mjs.map +1 -1
- package/native/tailwind-styled-native.node +0 -0
- package/native/tailwind-styled-native.win32-x64-msvc.node +0 -0
- package/package.json +1 -1
package/dist/animate.mjs.map
CHANGED
|
@@ -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":["path","DEBUG_NAMESPACE","debugLog","formatIssuePath","initAnimate"],"mappings":"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","file":"animate.mjs","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 // 1 level: dist/ → package-root/native/ (published npm package)\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.${napiPlatform}.node`))\r\n // cwd fallback (user project root)\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 // 4 level: dist/ → package/ → domain/ → packages/ → repo-root/ (monorepo dev)\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 }\r\n\r\n return Array.from(new Set(candidates))\r\n}\r\n\r\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\r\n if (dir) return path.resolve(dir)\r\n try {\r\n return path.dirname(fileURLToPath(importMetaUrl))\r\n } catch {\r\n return process.cwd()\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Hashing\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\r\n const hash = createHash(algorithm).update(content).digest(\"hex\")\r\n return length ? hash.slice(0, length) : hash\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error formatting\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n if (error instanceof TwError) return error.toString()\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LRU Cache\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport class LRUCache<K, V> {\r\n private capacity: number\r\n private cache: Map<K, V>\r\n\r\n constructor(capacity: number) {\r\n this.capacity = capacity\r\n this.cache = new Map()\r\n }\r\n\r\n get(key: K): V | undefined {\r\n if (!this.cache.has(key)) return undefined\r\n const value = this.cache.get(key)!\r\n this.cache.delete(key)\r\n this.cache.set(key, value)\r\n return value\r\n }\r\n\r\n set(key: K, value: V): void {\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key)\r\n } else if (this.cache.size >= this.capacity) {\r\n const firstKey = this.cache.keys().next().value\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey)\r\n }\r\n }\r\n this.cache.set(key, value)\r\n }\r\n\r\n delete(key: K): boolean {\r\n return this.cache.delete(key)\r\n }\r\n\r\n has(key: K): boolean {\r\n return this.cache.has(key)\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear()\r\n }\r\n\r\n entries(): IterableIterator<[K, V]> {\r\n return this.cache.entries()\r\n }\r\n\r\n get size(): number {\r\n return this.cache.size\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Trace Utilities\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\r\nexport {\r\n getHealthColor,\r\n getModeColor,\r\n formatMemory,\r\n formatDuration,\r\n calculateHealth,\r\n getBuildTimeColor,\r\n getMemoryColor,\r\n createTraceSnapshot,\r\n getPipelinePercentages,\r\n} from \"./trace\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Performance Telemetry\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error Codes\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { ErrorCode } from \"./error-codes\"\r\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind Compatibility\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TailwindInfo } from \"./compatibility\"\r\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\r\n\r\n// ── Native binding schemas (Zod boundary validation)\r\nexport {\r\n NativeScanFileSchema, NativeScanResultSchema,\r\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\r\n NativeCssCompileResultSchema, NativeWatchResultSchema,\r\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\r\n safeParseNative, parseNative,\r\n} from './native-schemas'\r\n\r\n// ── ESM-safe runtime helpers ──────────────────────────────────────────────\r\nexport {\r\n createEsmRequire,\r\n getDirname,\r\n getFilename,\r\n resolveFromRoot,\r\n tryRequire,\r\n resolveNativeNodePath,\r\n} from \"./esmHelpers\"\r\n\r\n// ── Performance telemetry ────────────────────────────────────────────────────\r\nexport {\r\n TelemetryCollector,\r\n getGlobalTelemetry,\r\n resetGlobalTelemetry,\r\n createBuildTimer,\r\n type BuildTelemetry,\r\n type TelemetrySummary,\r\n type BuildPhases,\r\n} from \"./telemetry\"\r\n\r\n// ── Config/JSON schema validation ─────────────────────────────────────────────\r\nexport {\r\n ScanCacheSchema,\r\n ScanCacheClassEntrySchema,\r\n TailwindConfigSchema,\r\n RegistryPluginEntrySchema,\r\n RegistryFileSchema,\r\n PackageJsonSchema,\r\n parseJsonWithSchema,\r\n parseJsonFileWithSchema,\r\n type ScanCache,\r\n type ScanCacheClassEntry,\r\n type TailwindConfig,\r\n type RegistryPluginEntry,\r\n type RegistryFile,\r\n type PackageJson,\r\n} from \"./configSchemas\"\r\n\r\n// ── Worker/bootstrap path resolution ─────────────────────────────────────────\r\nexport {\r\n resolveWorkerPath,\r\n resolveLoaderPath,\r\n type WorkerPathOptions,\r\n type WorkerPathResult,\r\n} from \"./workerResolver\"\r\n\r\n// ── Codegen helpers ───────────────────────────────────────────────────────────\r\nexport {\r\n generateComponentCode,\r\n generateStorybookStory,\r\n generateClassRenameCodemod,\r\n generateBarrelFile,\r\n type ComponentCodegenOptions,\r\n} from \"./codegen\"\r\n\r\n// ── Native binary resolution (QA #1) ─────────────────────────────────────────\r\nexport {\r\n resolveNativeBinary,\r\n formatNativeNotFoundError,\r\n type NativeResolutionResult,\r\n} from \"./native-resolution\"\r\n\r\n// ── Shared observability contract ────────────────────────────────────────────\r\nexport {\r\n createObservabilityClient,\r\n type ClassInspection,\r\n type ClassProperty,\r\n type ClassUsageLocation,\r\n type BuildTrace,\r\n type BuildPhaseTrace,\r\n type DashboardMetrics,\r\n type DashboardSummary,\r\n type ObservabilityClient,\r\n} from \"./observability\"\r\n\r\nexport {\r\n TW_STATE_STATIC_FILENAME,\r\n extractStaticStateCss,\r\n appendStaticStateCssToSafelist,\r\n type TwStateConfigEntry,\r\n type StaticStateCssInput,\r\n type GeneratedStateRule,\r\n type StaticStateExtractionResult,\r\n} from \"./staticStateExtractor\"\r\nexport { setGlobalLogFile } from \"./logger\"","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 if (typeof input === \"string\") {\r\n if (!binding.normalizeClassInput) {\r\n throw new Error(\"FATAL: Native binding 'normalizeClassInput' is required but not available.\")\r\n }\r\n return binding.normalizeClassInput(input)\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 if (!binding.declarationMapToString) {\r\n throw new Error(\"FATAL: Native binding 'declarationMapToString' is required but not available.\")\r\n }\r\n const entries = Array.from(declarationMap.entries()).map(([property, value]) => ({ property, value }))\r\n return binding.declarationMapToString(entries)\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 throw new Error(\"FATAL: Native binding 'splitAnimateClasses' is required but not available.\")\r\n }\r\n return binding.splitAnimateClasses(classList)\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)"]}
|
|
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","DEBUG_NAMESPACE","debugLog","formatIssuePath","initAnimate"],"mappings":";;;;;;;;;;;;AAqDO,SAAS,iBAAA,CAAkB,WAAmB,KAAA,EAAuC;AAC1F,EAAA,MAAM,MAAA,GAAS,QAAQ,CAAA,CAAA,EAAI,SAAS,IAAI,KAAK,CAAA,CAAA,CAAA,GAAM,IAAI,SAAS,CAAA,CAAA,CAAA;AAChE,EAAA,OAAO,CAAC,GAAA,KAAgB;AACtB,IAAA,IAAI,OAAA,CAAQ,IAAI,KAAA,EAAO,QAAA,CAAS,SAAS,CAAA,IAAK,OAAA,CAAQ,IAAI,QAAA,EAAU;AAClE,MAAA,OAAA,CAAQ,KAAA,CAAM,QAAQ,GAAG,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA;AACF;AAaA,SAAS,gBAAgBA,KAAAA,EAAuC;AAC9D,EAAA,IAAI,CAACA,KAAAA,IAAQA,KAAAA,CAAK,MAAA,KAAW,GAAG,OAAO,QAAA;AACvC,EAAA,OAAOA,KAAAA,CACJ,GAAA;AAAA,IAAI,CAAC,OAAA,KACJ,OAAO,OAAA,KAAY,QAAA,GAAW,OAAA,CAAQ,WAAA,IAAe,OAAA,CAAQ,QAAA,EAAS,GAAI,MAAA,CAAO,OAAO;AAAA,GAC1F,CACC,KAAK,GAAG,CAAA;AACb;AAyFO,SAAS,kBAAqB,OAAA,EAAkE;AACrG,EAAA,MAAM,EAAE,UAAA,EAAY,UAAA,EAAY,OAAA,EAAQ,GAAI,OAAA;AAC5C,EAAA,MAAM,aAAuD,EAAC;AAE9D,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,SAAS,CAAA;AACxD,IAAA,IAAI;AACF,MAAA,IAAI,CAAC,EAAA,CAAG,UAAA,CAAW,aAAa,CAAA,IAAK,CAAC,EAAA,CAAG,UAAA,CAAW,aAAA,GAAgB,OAAO,CAAA,EAAG;AAC5E,QAAA;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,oBAAoB,aAAa,CAAA;AAC7C,MAAA,IAAI,GAAA,IAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AACvB,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,UAAA,EAAY,YAAY,aAAA,EAAc;AAAA,MAC/D;AACA,MAAA,UAAA,CAAW,KAAK,EAAE,IAAA,EAAM,eAAe,OAAA,EAAS,OAAA,CAAQ,sBAAsB,CAAA;AAAA,IAChF,SAAS,CAAA,EAAG;AACV,MAAA,UAAA,CAAW,IAAA,CAAK,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA;AAAA,IAC9F;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,UAAA,EAAW;AACrC;AAIA,SAAS,oBAAoB,CAAA,EAAoB;AAC/C,EAAA,OAAO,SAAS,CAAC,CAAA;AACnB;AAWO,SAAS,+BAA+B,OAAA,EAA6C;AAC1F,EAAA,MAAM;AAAA,IACJ,WAAA,GAAc,CAAC,gBAAA,EAAkB,iBAAiB,CAAA;AAAA,IAClD,wBAAA,GAA2B,IAAA;AAAA,IAC3B,8BAAA,GAAiC;AAAA,GACnC,GAAI,OAAA;AAEJ,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,GAAA,EAAI;AACrD,EAAA,MAAM,aAAuB,EAAC;AAE9B,EAAA,KAAA,MAAW,UAAU,WAAA,EAAa;AAChC,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA;AAClC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,UAAA,CAAW,IAAA,CAAK,kCAAkC,CAAC,OAAA,CAAQ,SAAS,OAAO,CAAA,GAAI,OAAA,GAAU,OAAA,GAAU,OAAO,CAAA;AAAA,IAC5G;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,0BAA0B,OAAO,UAAA;AAEtC,EAAA,IAAI,EAAA,CAAG,UAAA,CAAW,UAAU,CAAA,EAAG;AAC7B,IAAA,IAAI;AACF,MAAA,KAAA,MAAW,KAAA,IAAS,EAAA,CAAG,WAAA,CAAY,UAAU,CAAA,EAAG;AAC9C,QAAA,IAAI,MAAM,QAAA,CAAS,OAAO,CAAA,EAAG,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,MACpD;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAA2B;AAAA,EACrC;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,wBAAA,EAA0B,wBAAwB,CAAA;AACxE,EAAA,MAAM,YAAA,GAAe,QAAQ,QAAA,KAAa,OAAA,IAAW,QAAQ,IAAA,KAAS,KAAA,GAAQ,kBAC1E,OAAA,CAAQ,QAAA,KAAa,WAAW,OAAA,CAAQ,IAAA,KAAS,UAAU,iBAAA,GAC3D,CAAA,EAAG,QAAQ,QAAQ,CAAA,CAAA,EAAI,QAAQ,IAAI,CAAA,CAAA;AAEvC,EAAA,KAAA,MAAW,OAAO,YAAA,EAAc;AAC9B,IAAA,UAAA,CAAW,KAAK,IAAA,CAAK,OAAA,CAAQ,YAAY,CAAA,EAAG,GAAG,OAAO,CAAC,CAAA;AACvD,IAAA,UAAA,CAAW,IAAA,CAAK,KAAK,OAAA,CAAQ,UAAA,EAAY,GAAG,GAAG,CAAA,CAAA,EAAI,YAAY,CAAA,KAAA,CAAO,CAAC,CAAA;AAEvE,IAAA,UAAA,CAAW,IAAA,CAAK,KAAK,OAAA,CAAQ,UAAA,EAAY,MAAM,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,KAAA,CAAO,CAAC,CAAA;AACvE,IAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,IAAA,EAAM,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,YAAY,CAAA,KAAA,CAAO,CAAC,CAAA;AAEvF,IAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,GAAA,IAAO,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,KAAA,CAAO,CAAC,CAAA;AACpE,IAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,GAAA,EAAI,EAAG,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,YAAY,CAAA,KAAA,CAAO,CAAC,CAAA;AAEpF,IAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,KAAA,CAAO,CAAC,CAAA;AACzF,IAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,YAAY,OAAO,CAAC,CAAA;AAEzG,IAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,KAAA,CAAO,CAAC,CAAA;AAAA,EACrF;AAEA,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,UAAU,CAAC,CAAA;AACvC;AAEO,SAAS,iBAAA,CAAkB,KAAyB,aAAA,EAA+B;AACxF,EAAA,IAAI,GAAA,EAAK,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAChC,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,aAAa,CAAC,CAAA;AAAA,EAClD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,QAAQ,GAAA,EAAI;AAAA,EACrB;AACF;AAzQA,IAkFa,SA8GP,QAAA,EAkGO,QAAA;AAlSb,IAAA,QAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAkFO,IAAM,OAAA,GAAN,MAAM,QAAA,SAAgB,KAAA,CAAM;AAAA;AAAA,MAEjB,MAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MAEhB,WAAA,CAAY,cAAA,EAAwB,IAAA,EAAc,OAAA,EAAiB,KAAA,EAAiB;AAClF,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,SAAA;AACZ,QAAA,IAAA,CAAK,MAAA,GAAS,cAAA;AACd,QAAA,IAAA,CAAK,MAAA,GAAS,cAAA;AACd,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AACrB,QAAA,IAAI,KAAA,CAAM,iBAAA,EAAmB,KAAA,CAAM,iBAAA,CAAkB,MAAM,QAAO,CAAA;AAAA,MACpE;AAAA,MAEA,OAAO,MAAA,CAAO,IAAA,EAAc,OAAA,EAA0B;AACpD,QAAA,OAAO,IAAI,QAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAAA,MACxC;AAAA,MAEA,OAAO,WAAA,CAAY,IAAA,EAAc,OAAA,EAA0B;AACzD,QAAA,OAAO,IAAI,QAAA,CAAQ,SAAA,EAAW,IAAA,EAAM,OAAO,CAAA;AAAA,MAC7C;AAAA,MAEA,OAAO,SAAS,GAAA,EAAqE;AACnF,QAAA,IAAI,GAAA,YAAe,UAAS,OAAO,GAAA;AACnC,QAAA,IAAI,GAAA,YAAe,OAAO,OAAO,IAAI,SAAQ,MAAA,EAAQ,YAAA,EAAc,GAAA,CAAI,OAAA,EAAS,GAAG,CAAA;AACnF,QAAA,IAAI,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,EAAU;AAClC,UAAA,MAAM,CAAA,GAAI,GAAA;AACV,UAAA,OAAO,IAAI,QAAA,CAAQ,MAAA,EAAQ,CAAA,CAAE,IAAA,IAAQ,YAAA,EAAc,CAAA,CAAE,OAAA,IAAW,MAAA,CAAO,GAAG,CAAA,EAAG,GAAG,CAAA;AAAA,QAClF;AACA,QAAA,OAAO,IAAI,QAAA,CAAQ,MAAA,EAAQ,cAAc,MAAA,CAAO,GAAG,GAAG,GAAG,CAAA;AAAA,MAC3D;AAAA;AAAA,MAGA,OAAO,QAAQ,GAAA,EAAoE;AACjF,QAAA,MAAM,QAAQ,GAAA,CAAI,MAAA,GAAS,CAAC,CAAA,IAAK,GAAA,CAAI,SAAS,CAAC,CAAA;AAC/C,QAAA,MAAMA,KAAAA,GAAO,eAAA,CAAgB,KAAA,EAAO,IAAI,CAAA;AACxC,QAAA,MAAM,UAAU,KAAA,GAAQ,CAAA,EAAGA,KAAI,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAA,GAAK,0BAAA;AACtD,QAAA,OAAO,IAAI,QAAA,CAAQ,YAAA,EAAc,0BAAA,EAA4B,SAAS,GAAG,CAAA;AAAA,MAC3E;AAAA,MAEA,OAAO,IAAA,CAAK,MAAA,EAAgB,IAAA,EAAc,GAAA,EAAuB;AAC/D,QAAA,IAAI,GAAA,YAAe,UAAS,OAAO,GAAA;AACnC,QAAA,IAAI,GAAA,YAAe,OAAO,OAAO,IAAI,SAAQ,MAAA,EAAQ,IAAA,EAAM,GAAA,CAAI,OAAA,EAAS,GAAG,CAAA;AAC3E,QAAA,OAAO,IAAI,QAAA,CAAQ,MAAA,EAAQ,MAAM,MAAA,CAAO,GAAG,GAAG,GAAG,CAAA;AAAA,MACnD;AAAA,MAES,QAAA,GAAmB;AAC1B,QAAA,OAAO,CAAA,SAAA,EAAY,KAAK,MAAM,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,EAAA,EAAK,KAAK,OAAO,CAAA,CAAA;AAAA,MAC9D;AAAA,MAEA,MAAA,GAA0E;AACxE,QAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,IAAA,CAAK,OAAA,EAAQ;AAAA,MACxF;AAAA,MAEA,YAAA,GAAuB;AACrB,QAAA,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,CAAO,WAAA,EAAa,IAAI,IAAA,CAAK,IAAI,CAAA,EAAA,EAAK,IAAA,CAAK,OAAO,CAAA,CAAA;AAAA,MACpE;AAAA,KACF;AAkDA,IAAM,QAAA,GAAW,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAkGvC,IAAM,WAAN,MAAqB;AAAA,MAClB,QAAA;AAAA,MACA,KAAA;AAAA,MAER,YAAY,QAAA,EAAkB;AAC5B,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,KAAA,uBAAY,GAAA,EAAI;AAAA,MACvB;AAAA,MAEA,IAAI,GAAA,EAAuB;AACzB,QAAA,IAAI,CAAC,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,GAAG,OAAO,MAAA;AACjC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAChC,QAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AACrB,QAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AACzB,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,MAEA,GAAA,CAAI,KAAQ,KAAA,EAAgB;AAC1B,QAAA,IAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA,EAAG;AACvB,UAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,QACvB,CAAA,MAAA,IAAW,IAAA,CAAK,KAAA,CAAM,IAAA,IAAQ,KAAK,QAAA,EAAU;AAC3C,UAAA,MAAM,WAAW,IAAA,CAAK,KAAA,CAAM,IAAA,EAAK,CAAE,MAAK,CAAE,KAAA;AAC1C,UAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,YAAA,IAAA,CAAK,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,UAC5B;AAAA,QACF;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,MAC3B;AAAA,MAEA,OAAO,GAAA,EAAiB;AACtB,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAA;AAAA,MAC9B;AAAA,MAEA,IAAI,GAAA,EAAiB;AACnB,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAA,MAC3B;AAAA,MAEA,KAAA,GAAc;AACZ,QAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAAA,MACnB;AAAA,MAEA,OAAA,GAAoC;AAClC,QAAA,OAAO,IAAA,CAAK,MAAM,OAAA,EAAQ;AAAA,MAC5B;AAAA,MAEA,IAAI,IAAA,GAAe;AACjB,QAAA,OAAO,KAAK,KAAA,CAAM,IAAA;AAAA,MACpB;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClVA,QAAA,EAAA;AAaA,IAAM,6BAA6B,MAAM;AACvC,EAAA,MAAM,MAAA,GAAS,EAAE,cAAA,EAAgB,IAAA,EAA6C;AAE9E,EAAA,MAAM,qBAAqB,MAA4B;AACrD,IAAA,MAAM,UAAA,GAAa,iBAAA;AAAA,MACjB,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,MAAA;AAAA,MAC5C,MAAA,CAAA,IAAA,CAAY;AAAA,KACd;AACA,IAAA,MAAM,UAAA,GAAa,yBAAyB,UAAU,CAAA;AACtD,IAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,UAAA,KAAe,iBAAA,CAAwC;AAAA,MAClF,UAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,EAAS,eAAA;AAAA,MACT,oBAAA,EAAsB;AAAA,KACvB,CAAA;AAED,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,QAAA,CAAS,CAAA,oCAAA,EAAuC,UAAU,CAAA,CAAE,CAAA;AAC5D,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,MAAA,QAAA;AAAA,QACE,0CAA0C,UAAA,CAAW,MAAM,kBAAkB,UAAA,CAC1E,GAAA,CAAI,CAAC,KAAA,KAAU,CAAA,EAAG,KAAA,CAAM,IAAI,KAAK,KAAA,CAAM,OAAO,GAAG,CAAA,CACjD,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,OACf;AAAA,IACF,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,wDAAwD,CAAA;AAAA,IACnE;AAEA,IAAA,MAAM,KAAA,GAAQ;AAAA,MACZ,kFAAA;AAAA,MACA,gBAAA;AAAA,MACA,GAAG,UAAA,CAAW,GAAA,CAAI,CAAC,SAAA,KAAc,CAAA,EAAA,EAAK,SAAS,CAAA,CAAE;AAAA,KACnD;AACA,IAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,MAAA,KAAA,CAAM,KAAK,cAAc,CAAA;AACzB,MAAA,KAAA,MAAW,KAAA,IAAS,UAAA,EAAY,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,MAAM,IAAI,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IAChF;AACA,IAAA,MAAM,IAAI,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,KAAK,MAAqC;AACxC,MAAA,IAAI,CAAC,OAAO,cAAA,EAAgB;AAC1B,QAAA,MAAA,CAAO,cAAA,GAAiB,OAAA,CAAQ,OAAA,EAAQ,CAAE,KAAK,kBAAkB,CAAA;AAAA,MACnE;AACA,MAAA,OAAO,MAAA,CAAO,cAAA;AAAA,IAChB,CAAA;AAAA,IACA,OAAO,MAAY;AACjB,MAAA,MAAA,CAAO,cAAA,GAAiB,IAAA;AAAA,IAC1B;AAAA,GACF;AACF,CAAA;AAEA,IAAM,uBAAuB,0BAAA,EAA2B;AAExD,IAAM,eAAA,GAAkB,yBAAA;AACxB,IAAM,QAAA,GAAW,iBAAA,CAAkB,eAAA,EAAiB,yBAAyB,CAAA;AAE7E,SAAS,gBAAgB,MAAA,EAAiD;AACxE,EAAA,MAAM,SAAA,GAAY,MAAA;AAClB,EAAA,OACE,OAAO,SAAA,EAAW,gBAAA,KAAqB,UAAA,IACvC,OAAO,WAAW,gBAAA,KAAqB,UAAA;AAE3C;AAEA,SAAS,yBAAyB,UAAA,EAA8B;AAC9D,EAAA,OAAO,8BAAA,CAA+B;AAAA,IACpC,UAAA;AAAA,IACA,WAAA,EAAa,CAAC,yBAAA,EAA2B,iBAAiB,CAAA;AAAA,IAC1D,8BAAA,EAAgC;AAAA,GACjC,CAAA;AACH;AAEA,eAAsB,iBAAA,GAAmD;AACvE,EAAA,OAAO,qBAAqB,GAAA,EAAI;AAClC;AAEA,eAAsB,WAAA,GAA6B;AACjD,EAAA,MAAM,iBAAA,EAAkB;AAC1B;;;AChGA,QAAA,EAAA;AAIA,IAAM,0BAAA,GAA6B,EAAA;AAE5B,SAAS,uBAAuB,QAAA,EAA6B;AAClE,EAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAkC,0BAA0B,CAAA;AAE9E,EAAA,MAAM,SAAA,GACJ,CAAC,QAAA,EAAkB,OAAA,KACnB,YAAY;AACV,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,CAAI,QAAQ,CAAA;AACjC,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,YAAY,MAAM,MAAA;AACxB,MAAA,IAAI,QAAA,CAAS,GAAA,CAAI,SAAS,CAAA,EAAG,OAAO,SAAA;AACpC,MAAA,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,IACvB;AAEA,IAAA,MAAM,UAAU,OAAA,EAAQ;AACxB,IAAA,KAAA,CAAM,GAAA,CAAI,UAAU,OAAO,CAAA;AAC3B,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,OAAA;AAAA,IACf,SAAS,KAAA,EAAO;AACd,MAAA,KAAA,CAAM,OAAO,QAAQ,CAAA;AACrB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF,CAAA;AAEF,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,SAAA;AAAA,MACN,QAAA;AAAA,MACA,YAAA,CACG,MAAM,QAAA,CAAS,gBAAA,CAAiB,EAAE,IAAA,EAAM,WAAA,EAAa,EAAA,EAAI,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,CAAA,EACrF;AAAA,KACP;AAAA,IACA,OAAA,EAAS,SAAA;AAAA,MACP,SAAA;AAAA,MACA,YAAA,CACG,MAAM,QAAA,CAAS,gBAAA,CAAiB,EAAE,IAAA,EAAM,aAAA,EAAe,EAAA,EAAI,WAAA,EAAa,QAAA,EAAU,GAAA,EAAK,CAAA,EACrF;AAAA,KACP;AAAA,IACA,OAAA,EAAS,SAAA;AAAA,MACP,SAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,yBAAA;AAAA,QACN,EAAA,EAAI,2BAAA;AAAA,QACJ,QAAA,EAAU;AAAA,OACX,CAAA,EACD;AAAA,KACN;AAAA,IACA,SAAA,EAAW,SAAA;AAAA,MACT,WAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,0BAAA;AAAA,QACN,EAAA,EAAI,2BAAA;AAAA,QACJ,QAAA,EAAU;AAAA,OACX,CAAA,EACD;AAAA,KACN;AAAA,IACA,SAAA,EAAW,SAAA;AAAA,MACT,WAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,yBAAA;AAAA,QACN,EAAA,EAAI,2BAAA;AAAA,QACJ,QAAA,EAAU;AAAA,OACX,CAAA,EACD;AAAA,KACN;AAAA,IACA,UAAA,EAAY,SAAA;AAAA,MACV,YAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,0BAAA;AAAA,QACN,EAAA,EAAI,2BAAA;AAAA,QACJ,QAAA,EAAU;AAAA,OACX,CAAA,EACD;AAAA,KACN;AAAA,IACA,OAAA,EAAS,SAAA;AAAA,MACP,SAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,oBAAA;AAAA,QACN,EAAA,EAAI,uBAAA;AAAA,QACJ,QAAA,EAAU,GAAA;AAAA,QACV,MAAA,EAAQ;AAAA,OACT,CAAA,EACD;AAAA,KACN;AAAA,IACA,QAAA,EAAU,SAAA;AAAA,MACR,UAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,uBAAA;AAAA,QACN,EAAA,EAAI,oBAAA;AAAA,QACJ,QAAA,EAAU;AAAA,OACX,CAAA,EACD;AAAA,KACN;AAAA,IACA,MAAA,EAAQ,SAAA;AAAA,MACN,QAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,mBAAA;AAAA,QACN,EAAA,EAAI,uBAAA;AAAA,QACJ,QAAA,EAAU;AAAA,OACX,CAAA,EACD;AAAA,KACN;AAAA,IACA,QAAA,EAAU,SAAA;AAAA,MACR,UAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,oBAAA;AAAA,QACN,EAAA,EAAI,uBAAA;AAAA,QACJ,QAAA,EAAU,GAAA;AAAA,QACV,MAAA,EAAQ;AAAA,OACT,CAAA,EACD;AAAA,KACN;AAAA,IACA,MAAA,EAAQ,SAAA;AAAA,MACN,QAAA;AAAA,MACA,YAAA,CAEI,MAAM,QAAA,CAAS,gBAAA,CAAiB;AAAA,QAC9B,IAAA,EAAM,+BAAA;AAAA,QACN,EAAA,EAAI,gCAAA;AAAA,QACJ,QAAA,EAAU,GAAA;AAAA,QACV,MAAA,EAAQ;AAAA,OACT,CAAA,EACD;AAAA;AACN,GACF;AACF;;;ACjJA,QAAA,EAAA;;;ACCA,QAAA,EAAA;AAIO,IAAMC,gBAAAA,GAAkB,0BAAA;AAExB,SAAS,mBAAmB,KAAA,EAAwB;AACzD,EAAA,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAC9D;AAiBO,IAAMC,SAAAA,GAAW,iBAAA,CAAkBD,gBAAAA,EAAiB,0BAA0B,CAAA;;;ADjBrF,IAAM,gBAAA,GAAmB,CAAC,MAAA,KAAqD;AAC7E,EAAA,MAAM,SAAA,GAAY,MAAA;AAClB,EAAA,OAAO,OAAO,WAAW,cAAA,KAAmB,UAAA;AAC9C,CAAA;AAMA,IAAM,8BAA8B,MAAM;AACxC,EAAA,MAAM,MAAA,GAAS,EAAE,cAAA,EAAgB,IAAA,EAAqD;AAEtF,EAAA,MAAM,oBAAoB,MAA6C;AACrE,IAAA,IAAI,MAAA,CAAO,cAAA,EAAgB,OAAO,MAAA,CAAO,cAAA;AAEzC,IAAA,MAAA,CAAO,kBAAkB,YAAmD;AAC1E,MAAA,MAAM,UAAA,GAAa,iBAAA;AAAA,QACjB,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,MAAA;AAAA,QAC5C,MAAA,CAAA,IAAA,CAAY;AAAA,OACd;AACA,MAAA,MAAM,aAAa,8BAAA,CAA+B;AAAA,QAChD,UAAA;AAAA,QACA,WAAA,EAAa,CAAC,iBAAiB;AAAA,OAChC,CAAA;AAED,MAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,UAAA,EAAW,GAAI,MAAM,iBAAA,CAAyC;AAAA,QACzF,UAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA,EAAS,gBAAA;AAAA,QACT,oBAAA,EAAsB;AAAA,OACvB,CAAA;AAED,MAAA,IAAI,OAAA,EAAS;AACX,QAAAC,SAAAA,CAAS,CAAA,4BAAA,EAA+B,UAAU,CAAA,CAAE,CAAA;AACpD,QAAA,OAAO,OAAA;AAAA,MACT;AAEA,MAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,QAAAA,SAAAA;AAAA,UACE,kCAAkC,UAAA,CAAW,MAAM,kBAAkB,UAAA,CAClE,GAAA,CAAI,CAAC,KAAA,KAAU,CAAA,EAAG,KAAA,CAAM,IAAI,KAAK,KAAA,CAAM,OAAO,GAAG,CAAA,CACjD,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,SACf;AAAA,MACF,CAAA,MAAO;AACL,QAAAA,UAAS,gDAAgD,CAAA;AAAA,MAC3D;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,GAAG;AAEH,IAAA,OAAO,MAAA,CAAO,cAAA;AAAA,EAChB,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,iBAAA;AAAA,IACL,OAAO,MAAY;AACjB,MAAA,MAAA,CAAO,cAAA,GAAiB,IAAA;AAAA,IAC1B;AAAA,GACF;AACF,CAAA;AAEA,IAAM,wBAAwB,2BAAA,EAA4B;AAM1D,eAAsB,oBAAA,GAAuD;AAC3E,EAAA,MAAM,OAAA,GAAU,MAAM,qBAAA,CAAsB,GAAA,EAAI;AAChD,EAAA,IAAI,OAAA,EAAS,gBAAgB,OAAO,OAAA;AAIpC,EAAA,MAAM,UAAA,GAAa,iBAAA;AAAA,IACjB,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,MAAA;AAAA,IAC5C,MAAA,CAAA,IAAA,CAAY;AAAA,GACd;AACA,EAAA,MAAM,aAAa,8BAAA,CAA+B;AAAA,IAChD,UAAA;AAAA,IACA,WAAA,EAAa,CAAC,iBAAiB;AAAA,GAChC,CAAA;AAED,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,iBAAA,CAAyC;AAAA,IACpE,UAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA,EAAS,gBAAA;AAAA,IACT,oBAAA,EAAsB;AAAA,GACvB,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ;AAAA,GACF;AAEA,EAAA,KAAA,CAAM,KAAK,gBAAgB,CAAA;AAC3B,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,SAAS,CAAA,CAAE,CAAA;AAC/D,EAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,IAAA,KAAA,CAAM,KAAK,cAAc,CAAA;AACzB,IAAA,KAAA,MAAW,WAAW,UAAA,EAAY;AAChC,MAAA,KAAA,CAAM,KAAK,CAAA,EAAA,EAAK,OAAA,CAAQ,IAAI,CAAA,EAAA,EAAK,OAAA,CAAQ,OAAO,CAAA,CAAE,CAAA;AAAA,IACpD;AAAA,EACF;AAEA,EAAA,MAAM,IAAI,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AAClC;AAEA,eAAsB,wBAAA,GAA8D;AAClF,EAAA,MAAM,OAAA,GAAU,MAAM,oBAAA,EAAqB;AAC3C,EAAA,IAAI,OAAO,OAAA,CAAQ,UAAA,KAAe,UAAA,EAAY,OAAO,OAAA;AAErD,EAAA,MAAM,IAAI,MAAM,CAAA,8CAAA,CAAgD,CAAA;AAClE;;;AEvHA,QAAA,EAAA;AAIA,IAAMC,mBAAkB,CAACH,KAAAA,KACvBA,KAAAA,CAAK,MAAA,GAAS,IACVA,KAAAA,CACG,GAAA;AAAA,EAAI,CAAC,OAAA,KACJ,OAAO,OAAA,KAAY,QAAA,GAAW,OAAA,CAAQ,WAAA,IAAe,OAAA,CAAQ,QAAA,EAAS,GAAI,MAAA,CAAO,OAAO;AAC1F,CAAA,CACC,IAAA,CAAK,GAAG,CAAA,GACX,QAAA;AAEN,IAAM,aAAA,GAAgB,CAAC,KAAA,KAAqD;AAC1E,EAAA,IAAI,CAAC,SAAS,OAAO,KAAA,KAAU,YAAY,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,KAAA;AACxE,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA;AACzC,EAAA,OAAO,KAAA,KAAU,MAAA,CAAO,SAAA,IAAa,KAAA,KAAU,IAAA;AACjD,CAAA;AAEA,IAAM,eAAe,CAAC,KAAA,KACpB,MAAM,MAAA,CACH,GAAA,CAAI,CAAC,KAAA,KAAU;AACd,EAAA,MAAMA,KAAAA,GAAOG,gBAAAA,CAAgB,KAAA,CAAM,IAAI,CAAA;AACvC,EAAA,OAAO,CAAA,EAAGH,KAAI,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAA;AAClC,CAAC,CAAA,CACA,KAAK,IAAI,CAAA;AAEd,IAAM,eAAA,GAAkB,CAAI,MAAA,EAAsB,IAAA,EAAe,KAAA,KAAqB;AACpF,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA;AACpC,EAAA,IAAI,MAAA,CAAO,OAAA,EAAS,OAAO,MAAA,CAAO,IAAA;AAClC,EAAA,MAAM,OAAA,GAAU,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA;AACzC,EAAA,MAAM,IAAI,OAAA;AAAA,IACR,YAAA;AAAA,IACA,0BAAA;AAAA,IACA,OAAA,GAAU,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,GAAK,KAAA;AAAA,IACnC,MAAA,CAAO;AAAA,GACT;AACF,CAAA;AAEA,IAAM,cAAc,CAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAEV,EAAE,MAAA,CAAO;AAAA,EACvC,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,KAAA,EAAO,WAAA;AAAA,EACP,QAAA,EAAU,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAC1B,CAAC;AAEkC,EAAE,MAAA,CAAO;AAAA,EAC1C,SAAA,EAAW,EAAE,MAAA,EAAO;AAAA,EACpB,QAAA,EAAU,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EAC3B,OAAA,EAAS,EAAE,MAAA;AACb,CAAC;AAED,IAAM,gBAAA,GAAmB,EAAE,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,KAAA,EAAO;AACT,CAAC,CAAA;AAEiC,EAAE,MAAA,CAAO;AAAA,EACzC,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,UAAA,EAAY,WAAA;AAAA,EACZ,gBAAA,EAAkB,WAAA;AAAA,EAClB,qBAAA,EAAuB,WAAA;AAAA,EACvB,UAAA,EAAY,CAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA;AAAA,EACpC,mBAAA,EAAqB,CAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA;AAAA,EAC7C,QAAA,EAAU,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ;AAC9B,CAAC;AAEM,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,GAAA,EAAK,EAAE,MAAA,EAAO;AAAA,EACd,eAAA,EAAiB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EACnC,cAAA,EAAgB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EAClC,SAAA,EAAW;AACb,CAAC,CAAA;AAED,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EACxC,GAAA,EAAK,EACF,MAAA,CAAO;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA,CACA,MAAA,EAAO,CACP,QAAA,EAAS;AAAA,EACZ,iBAAA,EAAmB,EAChB,MAAA,CAAO;AAAA,IACN,KAAA,EACE;AAAA,GACH,CAAA,CACA,MAAA,EAAO,CACP,QAAA;AACL,CAAC,CAAA;AAED,IAAM,6BAAA,GAAgC,EAAE,MAAA,CAAO;AAAA,EAC7C,kBAAA,EAAoB,EACjB,MAAA,CAAO;AAAA,IACN,KAAA,EACE;AAAA,GACH,CAAA,CACA,GAAA;AAAA,IACC,CAAA;AAAA,IACA;AAAA,IAED,QAAA;AACL,CAAC,CAAA;AAEoC,EAAE,MAAA,CAAO;AAAA,EAC5C,SAAS,CAAA,CACN,MAAA;AAAA,IACC,CAAC,KAAA,KAAU,aAAA,CAAc,KAAK,CAAA;AAAA,IAC9B;AAAA,IAED,QAAA,EAAS;AAAA,EACZ,UAAA,EAAY,yBAAyB,QAAA,EAAS;AAAA,EAC9C,QAAA,EAAU,EACP,KAAA,CAAM;AAAA,IACL,EAAE,OAAA,CAAQ;AAAA,MACR,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACD;AAAA,GACD,EACA,QAAA,EAAS;AAAA,EACZ,cAAc,CAAA,CACX,MAAA;AAAA,IACC,CAAC,KAAA,KAAU,OAAO,KAAA,KAAU,UAAA;AAAA,IAC5B;AAAA,IAED,QAAA;AACL,CAAC;AAEM,IAAM,uBAAA,GAA0B,EAAE,MAAA,CAAO;AAAA,EAC9C,MAAA,EAAQ,CAAA,CACL,KAAA,CAAM,CAAC,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,IAAA,EAAM,CAAA,EAAG;AAAA,IAC7B,KAAA,EAAO;AAAA,GACR,EACA,QAAA,EAAS;AAAA,EACZ,MAAA,EAAQ,EACL,OAAA,CAAQ;AAAA,IACP,KAAA,EAAO;AAAA,GACR,EACA,QAAA;AACL,CAAC,CAAA;AAQM,IAAM,2BAAA,GAA8B,CAAC,MAAA,EAAiB,SAAA,KAC3D,eAAA;AAAA,EACE,4BAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GACI,CAAA,gDAAA,EAAmD,SAAS,CAAA,CAAA,CAAA,GAC5D;AACN,CAAA;AAEK,IAAM,sBAAA,GAAyB,CAAC,OAAA,KACrC,eAAA,CAAgB,yBAAyB,OAAA,IAAW,IAAI,gCAAgC,CAAA;;;AC1JnF,IAAM,mBAAA,GAAsB,CAAC,KAAA,EAA0B,OAAA,KAAyE;AACrI,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,IAAI,CAAC,QAAQ,mBAAA,EAAqB;AAChC,MAAA,MAAM,IAAI,MAAM,4EAA4E,CAAA;AAAA,IAC9F;AACA,IAAA,OAAO,OAAA,CAAQ,oBAAoB,KAAK,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,IAAA,MAAM,IAAI,UAAU,2DAA2D,CAAA;AAAA,EACjF;AAEA,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,IAAI,UAAU,mDAAmD,CAAA;AAAA,IACzE;AACA,IAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK;AACxB,IAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,EACtC;AACA,EAAA,OAAO,GAAA;AACT,CAAA;AAEA,IAAM,0BAAA,GAA6B,CACjC,OAAA,KAIG;AACH,EAAA,MAAM,MAAA,GAAS,uBAAuB,OAAO,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,OAAO,MAAA,IAAU,KAAA;AAChC,EAAA,MAAM,MAAA,GAAS,OAAO,MAAA,IAAU,IAAA;AAEhC,EAAA,OAAO,EAAE,QAAQ,MAAA,EAAO;AAC1B,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAC1B,MAAA,EACA,GAAA,EACA,OAAA,KACS;AACT,EAAA,IAAI,CAAC,QAAQ,aAAA,EAAe;AAC1B,IAAA,MAAM,IAAI,MAAM,sEAAsE,CAAA;AAAA,EACxF;AACA,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,aAAA,CAAc,GAAG,CAAA;AACvC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,MAAA,CAAO,IAAI,IAAA,CAAK,QAAQ,GAAG,MAAA,CAAO,MAAA,CAAO,KAAK,QAAQ,CAAA;AAC1D,IAAA,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,WAAA,GAAc,GAAG,IAAA,CAAK,KAAK,CAAA,WAAA,CAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,EACtF;AACF,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAC7B,cAAA,EACA,OAAA,KACW;AACX,EAAA,IAAI,CAAC,QAAQ,sBAAA,EAAwB;AACnC,IAAA,MAAM,IAAI,MAAM,+EAA+E,CAAA;AAAA,EACjG;AACA,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,cAAA,CAAe,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,UAAU,KAAK,CAAA,MAAO,EAAE,QAAA,EAAU,OAAM,CAAE,CAAA;AACrG,EAAA,OAAO,OAAA,CAAQ,uBAAuB,OAAO,CAAA;AAC/C,CAAA;AAOO,IAAM,UAAA,GAAa,OACxB,KAAA,EACA,OAAA,GAA6B,EAAC,KACA;AAC9B,EAAA,MAAM,OAAA,GAAU,MAAM,wBAAA,EAAyB;AAC/C,EAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,KAAA,EAAO,OAAO,CAAA;AACvD,EAAA,MAAM,iBAAA,GAAoB,2BAA2B,OAAO,CAAA;AAE5D,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,IAAA,OAAO;AAAA,MACL,cAAc,EAAC;AAAA,MACf,GAAA,EAAK,EAAA;AAAA,MACL,YAAA,EAAc,EAAA;AAAA,MACd,iBAAiB,EAAC;AAAA,MAClB,gBAAgB,EAAC;AAAA,MACjB,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAEA,EAAA,MAAM,SAAS,iBAAA,CAAkB,MAAA;AAEjC,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA;AAAA,IAC5B,YAAA,CAAa,GAAA,CAAI,OAAO,SAAA,KAAc;AACpC,MAAA,MAAM,YAAY,MAAM;AACtB,QAAA,IAAI;AACF,UAAA,OAAO,OAAA,CAAQ,UAAA,CAAW,CAAC,SAAS,GAAG,MAAM,CAAA;AAAA,QAC/C,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,CAAA,8CAAA,EAAiD,SAAS,CAAA,GAAA,EAAM,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AAAA,YACzF,EAAE,OAAO,KAAA;AAAM,WACjB;AAAA,QACF;AAAA,MACF,CAAA,GAAG;AAEH,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8CAAA,EAAiD,SAAS,CAAA,EAAA,CAAI,CAAA;AAAA,MAChF;AAEA,MAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,QAAA,EAAU,SAAS,CAAA;AAEjE,MAAA,OAAO;AAAA,QACL,SAAA;AAAA,QACA,KAAK,SAAA,CAAU,GAAA;AAAA,QACf,iBAAiB,SAAA,CAAU,eAAA;AAAA,QAC3B,gBAAgB,SAAA,CAAU,cAAA;AAAA,QAC1B,WAAW,SAAA,CAAU;AAAA,OACvB;AAAA,IACF,CAAC;AAAA,GACH;AAEA,EAAA,MAAM,YAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,GAAG,CAAA;AAC1C,EAAA,MAAM,kBAAkB,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,KAAM,EAAE,eAAe,CAAA;AAChE,EAAA,MAAM,iBAAiB,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,KAAM,EAAE,cAAc,CAAA;AAC9D,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAA,CAAO,CAAC,KAAK,CAAA,KAAM,GAAA,GAAM,CAAA,CAAE,SAAA,EAAW,CAAC,CAAA;AAEjE,EAAA,MAAM,cAAA,uBAAqB,GAAA,EAAoB;AAC/C,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,mBAAA,CAAoB,cAAA,EAAgB,MAAA,CAAO,GAAA,EAAK,OAAO,CAAA;AAAA,EACzD;AAEA,EAAA,MAAM,gBAAgB,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,cAAc,CAAC,CAAA;AACxD,EAAA,IAAI,iBAAA,CAAkB,MAAA,IAAU,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACxD,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,cAAc,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACzE;AAEA,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,GAAA,EAAK,SAAA,CAAU,MAAA,CAAO,CAAC,KAAA,KAAU,MAAM,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,IAC5D,YAAA,EAAc,sBAAA,CAAuB,cAAA,EAAgB,OAAO,CAAA;AAAA,IAC5D,iBAAiB,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,eAAe,CAAC,CAAA;AAAA,IACpD,cAAA,EAAgB,aAAA;AAAA,IAChB;AAAA,GACF;AACF,CAAA;;;AChJA,QAAA,EAAA;AAUA,IAAM,gBAAA,GAAmB,GAAA;AACzB,IAAM,cAAA,GAAiB,UAAA;AACvB,IAAM,aAAA,GAAgB,CAAA;AACtB,IAAM,YAAA,GAAe,MAAA;AACrB,IAAM,kBAAA,GAAqB,CAAA;AAC3B,IAAM,iBAAA,GAAoB,QAAA;AAC1B,IAAM,mBAAA,GAAsB,GAAA;AAE5B,SAAS,eAAA,CAAgB,OAA2B,QAAA,EAA0B;AAC5E,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,GAAG,OAAO,QAAA;AACpC,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,KAAe,CAAC,CAAA;AAChD;AAEA,SAAS,oBAAoB,KAAA,EAAmC;AAC9D,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,GAAG,OAAO,mBAAA;AACpC,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,KAAe,CAAC,CAAA;AAChD;AAEA,SAAS,oBAAoB,KAAA,EAA6C;AACxE,EAAA,IAAI,KAAA,KAAU,YAAY,OAAO,UAAA;AACjC,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,OAAO,kBAAkB,CAAA;AAC7D,EAAA,OAAO,MAAA,CAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,KAAe,CAAC,CAAC,CAAA;AACxD;AAEA,SAAS,uBACP,KAAA,EAC4C;AAC5C,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CACxB,GAAA,CAAI,CAAC,CAAC,MAAA,EAAQ,OAAO,CAAA,MAAO,EAAE,MAAA,EAAQ,SAAQ,CAAE,CAAA,CAChD,IAAA,CAAK,CAAC,IAAA,EAAM,KAAA,KAAU,KAAK,MAAA,CAAO,aAAA,CAAc,KAAA,CAAM,MAAM,CAAC,CAAA;AAClE;AAEA,SAAS,kBAAkB,IAAA,EAA8B;AACvD,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,IAAA,EAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,EAAA,EAAI,IAAA,EAAK;AAAA,IAC7B,EAAA,EAAA,CAAK,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI,IAAA,EAAK;AAAA,IACzB,QAAA,EAAU,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAgC,gBAAgB,CAAA;AAAA,IAC/E,MAAA,EAAA,CAAS,IAAA,CAAK,MAAA,IAAU,cAAA,EAAgB,IAAA,EAAK;AAAA,IAC7C,KAAA,EAAO,eAAA,CAAgB,IAAA,CAAK,KAAA,EAA6B,aAAa,CAAA;AAAA,IACtE,IAAA,EAAM,KAAK,IAAA,IAAQ,YAAA;AAAA,IACnB,UAAA,EAAY,mBAAA,CAAoB,IAAA,CAAK,UAAU,CAAA;AAAA,IAC/C,SAAA,EAAW,KAAK,SAAA,IAAa,iBAAA;AAAA,IAC7B,IAAA,EAAM,KAAK,IAAA,IAAQ;AAAA,GACrB;AACA,EAAA,OAAO,IAAA,CAAK,UAAU,UAAU,CAAA;AAClC;AAEA,SAAS,iBAAA,CAAkB,MAAc,KAAA,EAAoC;AAC3E,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,IAAA,CAAK,UAAU,sBAAA,CAAuB,KAAK,CAAC,CAAC,CAAA,CAAA;AAClE;AAaA,SAAS,YAAA,CAAa,WAAmB,OAAA,EAAsE;AAC7G,EAAA,IAAI,CAAC,QAAQ,mBAAA,EAAqB;AAChC,IAAA,MAAM,IAAI,MAAM,4EAA4E,CAAA;AAAA,EAC9F;AACA,EAAA,OAAO,OAAA,CAAQ,oBAAoB,SAAS,CAAA;AAC9C;AAEA,eAAe,wBACb,OAAA,EACe;AACf,EAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,EAAkB;AACxC,EAAA,MAAM,gBAAA,uBAAuB,GAAA,EAAyB;AACtD,EAAA,MAAM,WAAqB,EAAC;AAE5B,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,OAAA,GAAU,YAAA,CAAa,KAAA,CAAM,SAAA,EAAW,OAAO,CAAA;AACrD,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAE1B,IAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW,OAAO,CAAA;AACvC,IAAA,IAAI,MAAA,CAAO,cAAA,CAAe,MAAA,GAAS,CAAA,EAAG;AACpC,MAAA,gBAAA,CAAiB,IAAI,KAAA,CAAM,OAAA,EAAS,IAAI,GAAA,CAAI,MAAA,CAAO,cAAc,CAAC,CAAA;AAAA,IACpE;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAAC,OAAA,EAAS,UAAU,CAAA,IAAK,gBAAA,CAAiB,SAAQ,EAAG;AAC9D,IAAA,QAAA,CAAS,IAAA,CAAK,CAAA,CAAA,EAAI,OAAO,CAAA,mBAAA,EAAsB,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACpF;AAEA,EAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA;AAAA,EAAiC,QAAA,CAAS,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACxE;AACF;AAeO,SAAS,uBAAA,CACd,OAAA,GAAoC,EAAC,EAClB;AACnB,EAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,OAAA,CAAQ,UAAU,CAAA;AACzD,EAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAoC,UAAU,CAAA;AAChE,EAAA,MAAM,YAAsB,EAAC;AAC7B,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AAEnC,EAAA,OAAO;AAAA,IACL,MAAM,iBAAiB,IAAA,EAAkD;AACvE,MAAA,MAAM,GAAA,GAAM,kBAAkB,IAAI,CAAA;AAClC,MAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC5B,MAAA,IAAI,QAAQ,OAAO,MAAA;AAEnB,MAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,EAAkB;AAGxC,MAAA,MAAM,iBAAA,GAAoB;AAAA,QACxB,EAAE,SAAA,EAAW,IAAA,CAAK,IAAA,IAAQ,EAAA,EAAI,SAAS,MAAA,EAAO;AAAA,QAC9C,EAAE,SAAA,EAAW,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI,SAAS,IAAA;AAAK,OAC5C,CAAE,OAAO,CAAC,KAAA,KAAU,MAAM,SAAA,CAAU,IAAA,EAAK,CAAE,MAAA,GAAS,CAAC,CAAA;AAErD,MAAA,IAAI,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAChC,QAAA,MAAM,wBAAwB,iBAAiB,CAAA;AAAA,MACjD;AAEA,MAAA,IAAI,CAAC,QAAQ,gBAAA,EAAkB;AAC7B,QAAA,MAAM,IAAI,MAAM,yEAAyE,CAAA;AAAA,MAC3F;AAEA,MAAA,MAAM,SAAS,OAAA,CAAQ,gBAAA;AAAA,QACrB,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,CAAK,EAAA;AAAA,QACL,KAAK,IAAA,IAAQ,IAAA;AAAA,QACb,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAU,gBAAgB,CAAA;AAAA,QAC9C,KAAK,MAAA,IAAU,cAAA;AAAA,QAChB,eAAA,CAAgB,IAAA,CAAK,KAAA,EAAO,aAAa,CAAA;AAAA,QACzC,KAAK,IAAA,IAAQ,YAAA;AAAA,QACb,mBAAA,CAAoB,KAAK,UAAU,CAAA;AAAA,QACnC,KAAK,SAAA,IAAa;AAAA,OACpB;AAEA,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yCAAA,EAA4C,KAAK,SAAA,CAAU,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,MACpF;AAEA,MAAA,MAAM,QAAA,GAA8B;AAAA,QAClC,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,cAAc,MAAA,CAAO,YAAA;AAAA,QACrB,cAAc,MAAA,CAAO;AAAA,OACvB;AAEA,MAAA,KAAA,CAAM,GAAA,CAAI,KAAK,QAAQ,CAAA;AACvB,MAAA,IAAI,MAAA,CAAO,YAAA,EAAc,SAAA,CAAU,IAAA,CAAK,OAAO,YAAY,CAAA;AAC3D,MAAA,IAAI,MAAA,CAAO,YAAA,EAAc,SAAA,CAAU,IAAA,CAAK,OAAO,YAAY,CAAA;AAE3D,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IAEA,MAAM,gBAAA,CAAiB,IAAA,EAAc,KAAA,EAAwD;AAC3F,MAAA,MAAM,GAAA,GAAM,iBAAA,CAAkB,IAAA,EAAM,KAAK,CAAA;AACzC,MAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC5B,MAAA,IAAI,QAAQ,OAAO,MAAA;AAEnB,MAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,EAAkB;AACxC,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,CAAU,sBAAA,CAAuB,KAAK,CAAC,CAAA;AAE9D,MAAA,IAAI,CAAC,QAAQ,gBAAA,EAAkB;AAC7B,QAAA,MAAM,IAAI,MAAM,yEAAyE,CAAA;AAAA,MAC3F;AAEA,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,gBAAA,CAAiB,IAAA,EAAM,SAAS,CAAA;AAEvD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yCAAA,EAA4C,IAAI,CAAA,CAAE,CAAA;AAAA,MACpE;AAEA,MAAA,MAAM,QAAA,GAA8B;AAAA,QAClC,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,cAAc,MAAA,CAAO,YAAA;AAAA,QACrB,cAAc,MAAA,CAAO;AAAA,OACvB;AAEA,MAAA,KAAA,CAAM,GAAA,CAAI,KAAK,QAAQ,CAAA;AACvB,MAAA,IAAI,MAAA,CAAO,YAAA,EAAc,SAAA,CAAU,IAAA,CAAK,OAAO,YAAY,CAAA;AAC3D,MAAA,IAAI,MAAA,CAAO,YAAA,EAAc,SAAA,CAAU,IAAA,CAAK,OAAO,YAAY,CAAA;AAE3D,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IAEA,UAAA,GAAqB;AACnB,MAAA,OAAO,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,IAC5B,CAAA;AAAA,IAEA,KAAA,GAAc;AACZ,MAAA,KAAA,CAAM,KAAA,IAAQ;AACd,MAAA,SAAA,CAAU,MAAA,GAAS,CAAA;AACnB,MAAA,UAAA,CAAW,KAAA,EAAM;AAAA,IACnB,CAAA;AAAA,IAEA,IAAI,SAAA,EAA4B;AAC9B,MAAA,OAAO,UAAA,CAAW,IAAI,SAAS,CAAA;AAAA,IACjC,CAAA;AAAA,IAEA,MAAM,gBAAgB,GAAA,EAA8B;AAClD,MAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,EAAkB;AAExC,MAAA,IAAI,QAAQ,mBAAA,EAAqB;AAC/B,QAAA,IAAI;AACF,UAAA,OAAO,OAAA,CAAQ,mBAAA,CAAoB,GAAG,CAAA,IAAK,GAAA;AAAA,QAC7C,CAAA,CAAA,MAAQ;AACN,UAAA,OAAO,GAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,IAEA,MAAM,mCAAmC,GAAA,EAA8B;AACrE,MAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,EAAkB;AAExC,MAAA,IAAI,QAAQ,kBAAA,EAAoB;AAC9B,QAAA,IAAI;AACF,UAAA,OAAO,OAAA,CAAQ,kBAAA,CAAmB,GAAG,CAAA,IAAK,GAAA;AAAA,QAC5C,CAAA,CAAA,MAAQ;AACN,UAAA,OAAO,GAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,GACF;AACF;;;ACtOA,IAAM,kBAAkB,uBAAA,EAAwB;AAEhD,eAAsBI,YAAAA,GAA6B;AACjD,EAAA,MAAM,WAAA,EAAmB;AAC3B;AAEO,SAAS,2BAAA,GAAiD;AAC/D,EAAA,OAAO,eAAA;AACT;AAEA,eAAsB,gBAAA,CACpB,YACA,SAAA,EAC4B;AAE5B,EAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AAClC,IAAA,MAAM,cACJ,SAAA,IAAa,OAAQ,UAAgC,gBAAA,KAAqB,UAAA,GACrE,YACD,EAAC;AACP,IAAA,MAAM,IAAA,GAAuB,EAAE,IAAA,EAAM,EAAA,EAAI,IAAI,EAAA,EAAI,GAAG,WAAA,EAAa,IAAA,EAAM,UAAA,EAAW;AAClF,IAAA,OAAO,eAAA,CAAgB,iBAAiB,IAAI,CAAA;AAAA,EAC9C;AAEA,EAAA,MAAM,WACJ,SAAA,IAAa,OAAQ,SAAA,CAAgC,gBAAA,KAAqB,aACrE,SAAA,GACD,eAAA;AACN,EAAA,OAAO,QAAA,CAAS,iBAAiB,UAAU,CAAA;AAC7C;AAEA,eAAsB,gBAAA,CACpB,IAAA,EACA,KAAA,EACA,QAAA,GAA8B,eAAA,EACF;AAC5B,EAAA,OAAO,QAAA,CAAS,gBAAA,CAAiB,IAAA,EAAM,KAAK,CAAA;AAC9C;AAEA,eAAsB,OAAA,CACpB,IAAA,EACA,QAAA,GAA8B,eAAA,EACb;AACjB,EAAA,OAAA,CAAQ,MAAM,QAAA,CAAS,gBAAA,CAAiB,IAAI,CAAA,EAAG,SAAA;AACjD;AAEA,eAAsB,SAAA,CACpB,IAAA,EACA,KAAA,EACA,QAAA,GAA8B,eAAA,EACb;AACjB,EAAA,OAAA,CAAQ,MAAM,QAAA,CAAS,gBAAA,CAAiB,IAAA,EAAM,KAAK,CAAA,EAAG,SAAA;AACxD;AAEO,SAAS,mBAAA,CAAoB,WAA8B,eAAA,EAAyB;AACzF,EAAA,OAAO,SAAS,UAAA,EAAW;AAC7B;AAEO,SAAS,sBAAA,CAAuB,WAA8B,eAAA,EAAuB;AAC1F,EAAA,QAAA,CAAS,KAAA,EAAM;AACjB;AAQO,SAAS,kBAAA,CACd,QAAA,GAA8B,eAAA,EAC9B,OAAA,GAAqC,EAAC,EAChC;AACN,EAAA,MAAM,iBACJ,OAAA,CAAQ,QAAA,KAAa,OAAO,QAAA,KAAa,cAAc,QAAA,GAAW,MAAA,CAAA;AAEpE,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,IAAI,QAAQ,MAAA,EAAQ;AACpB,IAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,EACnE;AAEA,EAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,IAAW,uBAAA;AAGnC,EAAA,MAAM,eAAA,GAAkB,cAAA,CAAe,cAAA,CAAe,OAAO,CAAA;AAG7D,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,IAAI,iBAAiB,OAAO,eAAA;AAE5B,IAAA,IAAI,CAAC,eAAe,IAAA,EAAM;AACxB,MAAA,IAAI,OAAA,CAAQ,QAAQ,OAAO,IAAA;AAC3B,MAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AAAA,IACvE;AAEA,IAAA,MAAM,UAAA,GAAa,cAAA,CAAe,aAAA,CAAc,OAAO,CAAA;AACvD,IAAA,UAAA,CAAW,EAAA,GAAK,OAAA;AAChB,IAAA,cAAA,CAAe,IAAA,CAAK,YAAY,UAAU,CAAA;AAC1C,IAAA,OAAO,UAAA;AAAA,EACT,CAAA,GAAG;AAEH,EAAA,IAAI,CAAC,OAAA,EAAS;AAEd,EAAA,OAAA,CAAQ,WAAA,GAAc,SAAS,UAAA,EAAW;AAC5C;AAWO,IAAM,UAAA,GAAa,uBAAuB,eAAe","file":"animate.mjs","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 // 1 level: dist/ → package-root/native/ (published npm package)\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.node`))\r\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.${napiPlatform}.node`))\r\n // cwd fallback (user project root)\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 // 4 level: dist/ → package/ → domain/ → packages/ → repo-root/ (monorepo dev)\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 }\r\n\r\n return Array.from(new Set(candidates))\r\n}\r\n\r\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\r\n if (dir) return path.resolve(dir)\r\n try {\r\n return path.dirname(fileURLToPath(importMetaUrl))\r\n } catch {\r\n return process.cwd()\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Hashing\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\r\n const hash = createHash(algorithm).update(content).digest(\"hex\")\r\n return length ? hash.slice(0, length) : hash\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error formatting\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport function formatErrorMessage(error: unknown): string {\r\n if (error instanceof TwError) return error.toString()\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// LRU Cache\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport class LRUCache<K, V> {\r\n private capacity: number\r\n private cache: Map<K, V>\r\n\r\n constructor(capacity: number) {\r\n this.capacity = capacity\r\n this.cache = new Map()\r\n }\r\n\r\n get(key: K): V | undefined {\r\n if (!this.cache.has(key)) return undefined\r\n const value = this.cache.get(key)!\r\n this.cache.delete(key)\r\n this.cache.set(key, value)\r\n return value\r\n }\r\n\r\n set(key: K, value: V): void {\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key)\r\n } else if (this.cache.size >= this.capacity) {\r\n const firstKey = this.cache.keys().next().value\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey)\r\n }\r\n }\r\n this.cache.set(key, value)\r\n }\r\n\r\n delete(key: K): boolean {\r\n return this.cache.delete(key)\r\n }\r\n\r\n has(key: K): boolean {\r\n return this.cache.has(key)\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear()\r\n }\r\n\r\n entries(): IterableIterator<[K, V]> {\r\n return this.cache.entries()\r\n }\r\n\r\n get size(): number {\r\n return this.cache.size\r\n }\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Trace Utilities\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\r\nexport {\r\n getHealthColor,\r\n getModeColor,\r\n formatMemory,\r\n formatDuration,\r\n calculateHealth,\r\n getBuildTimeColor,\r\n getMemoryColor,\r\n createTraceSnapshot,\r\n getPipelinePercentages,\r\n} from \"./trace\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Performance Telemetry\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\n\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Error Codes\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { ErrorCode } from \"./error-codes\"\r\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\r\n\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n// Tailwind Compatibility\r\n// ─────────────────────────────────────────────────────────────────────────────\r\n\r\nexport type { TailwindInfo } from \"./compatibility\"\r\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\r\n\r\n// ── Native binding schemas (Zod boundary validation)\r\nexport {\r\n NativeScanFileSchema, NativeScanResultSchema,\r\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\r\n NativeCssCompileResultSchema, NativeWatchResultSchema,\r\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\r\n safeParseNative, parseNative,\r\n} from './native-schemas'\r\n\r\n// ── ESM-safe runtime helpers ──────────────────────────────────────────────\r\nexport {\r\n createEsmRequire,\r\n getDirname,\r\n getFilename,\r\n resolveFromRoot,\r\n tryRequire,\r\n resolveNativeNodePath,\r\n} from \"./esmHelpers\"\r\n\r\n// ── Performance telemetry ────────────────────────────────────────────────────\r\nexport {\r\n TelemetryCollector,\r\n getGlobalTelemetry,\r\n resetGlobalTelemetry,\r\n createBuildTimer,\r\n type BuildTelemetry,\r\n type TelemetrySummary,\r\n type BuildPhases,\r\n} from \"./telemetry\"\r\n\r\n// ── Config/JSON schema validation ─────────────────────────────────────────────\r\nexport {\r\n ScanCacheSchema,\r\n ScanCacheClassEntrySchema,\r\n TailwindConfigSchema,\r\n RegistryPluginEntrySchema,\r\n RegistryFileSchema,\r\n PackageJsonSchema,\r\n parseJsonWithSchema,\r\n parseJsonFileWithSchema,\r\n type ScanCache,\r\n type ScanCacheClassEntry,\r\n type TailwindConfig,\r\n type RegistryPluginEntry,\r\n type RegistryFile,\r\n type PackageJson,\r\n} from \"./configSchemas\"\r\n\r\n// ── Worker/bootstrap path resolution ─────────────────────────────────────────\r\nexport {\r\n resolveWorkerPath,\r\n resolveLoaderPath,\r\n type WorkerPathOptions,\r\n type WorkerPathResult,\r\n} from \"./workerResolver\"\r\n\r\n// ── Codegen helpers ───────────────────────────────────────────────────────────\r\nexport {\r\n generateComponentCode,\r\n generateStorybookStory,\r\n generateClassRenameCodemod,\r\n generateBarrelFile,\r\n type ComponentCodegenOptions,\r\n} from \"./codegen\"\r\n\r\n// ── Native binary resolution (QA #1) ─────────────────────────────────────────\r\nexport {\r\n resolveNativeBinary,\r\n formatNativeNotFoundError,\r\n type NativeResolutionResult,\r\n} from \"./native-resolution\"\r\n\r\n// ── Shared observability contract ────────────────────────────────────────────\r\nexport {\r\n createObservabilityClient,\r\n type ClassInspection,\r\n type ClassProperty,\r\n type ClassUsageLocation,\r\n type BuildTrace,\r\n type BuildPhaseTrace,\r\n type DashboardMetrics,\r\n type DashboardSummary,\r\n type ObservabilityClient,\r\n} from \"./observability\"\r\n\r\nexport {\r\n TW_STATE_STATIC_FILENAME,\r\n extractStaticStateCss,\r\n appendStaticStateCssToSafelist,\r\n type TwStateConfigEntry,\r\n type StaticStateCssInput,\r\n type GeneratedStateRule,\r\n type StaticStateExtractionResult,\r\n} from \"./staticStateExtractor\"\r\nexport { setGlobalLogFile } from \"./logger\"","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 if (typeof input === \"string\") {\r\n if (!binding.normalizeClassInput) {\r\n throw new Error(\"FATAL: Native binding 'normalizeClassInput' is required but not available.\")\r\n }\r\n return binding.normalizeClassInput(input)\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 if (!binding.declarationMapToString) {\r\n throw new Error(\"FATAL: Native binding 'declarationMapToString' is required but not available.\")\r\n }\r\n const entries = Array.from(declarationMap.entries()).map(([property, value]) => ({ property, value }))\r\n return binding.declarationMapToString(entries)\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 throw new Error(\"FATAL: Native binding 'splitAnimateClasses' is required but not available.\")\r\n }\r\n return binding.splitAnimateClasses(classList)\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 /** Expand animation to include browser-specific prefixes using native Rust optimization */\r\n expandAnimation(css: string): Promise<string>\r\n /** Transform animation for better compatibility */\r\n transformAnimationForCompatibility(css: string): Promise<string>\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 async expandAnimation(css: string): Promise<string> {\r\n const binding = await getAnimateBinding()\r\n // Use native expandAnimationNapi to add browser prefixes\r\n if (binding.expandAnimationNapi) {\r\n try {\r\n return binding.expandAnimationNapi(css) || css\r\n } catch {\r\n return css // Fallback to original CSS\r\n }\r\n }\r\n return css\r\n },\r\n\r\n async transformAnimationForCompatibility(css: string): Promise<string> {\r\n const binding = await getAnimateBinding()\r\n // Use native transformAnimation for compatibility optimizations\r\n if (binding.transformAnimation) {\r\n try {\r\n return binding.transformAnimation(css) || css\r\n } catch {\r\n return css // Fallback to original CSS\r\n }\r\n }\r\n return css\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)"]}
|
package/dist/atomic.js
CHANGED
|
@@ -211,9 +211,51 @@ Tried paths: ${result.tried.join("\n")}`);
|
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
});
|
|
214
|
+
|
|
215
|
+
// packages/domain/compiler/src/compiler/index.ts
|
|
216
|
+
var init_compiler = __esm({
|
|
217
|
+
"packages/domain/compiler/src/compiler/index.ts"() {
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
// packages/domain/compiler/src/parser/index.ts
|
|
222
|
+
var init_parser = __esm({
|
|
223
|
+
"packages/domain/compiler/src/parser/index.ts"() {
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// packages/domain/compiler/src/analyzer/index.ts
|
|
228
|
+
var init_analyzer = __esm({
|
|
229
|
+
"packages/domain/compiler/src/analyzer/index.ts"() {
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
// packages/domain/compiler/src/cache/index.ts
|
|
234
|
+
var init_cache = __esm({
|
|
235
|
+
"packages/domain/compiler/src/cache/index.ts"() {
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// packages/domain/compiler/src/redis/index.ts
|
|
240
|
+
var init_redis = __esm({
|
|
241
|
+
"packages/domain/compiler/src/redis/index.ts"() {
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// packages/domain/compiler/src/watch/index.ts
|
|
246
|
+
var init_watch = __esm({
|
|
247
|
+
"packages/domain/compiler/src/watch/index.ts"() {
|
|
248
|
+
}
|
|
249
|
+
});
|
|
214
250
|
var init_src2 = __esm({
|
|
215
251
|
"packages/domain/compiler/src/index.ts"() {
|
|
216
252
|
init_nativeBridge();
|
|
253
|
+
init_compiler();
|
|
254
|
+
init_parser();
|
|
255
|
+
init_analyzer();
|
|
256
|
+
init_cache();
|
|
257
|
+
init_redis();
|
|
258
|
+
init_watch();
|
|
217
259
|
}
|
|
218
260
|
});
|
|
219
261
|
|