{"version":3,"sources":["../packages/domain/plugin-api/src/schemas.ts","../packages/domain/plugin-api/src/index.ts","../packages/domain/plugin/src/hooks.ts","../packages/domain/plugin/src/index.ts"],"sourcesContent":["import { z } from \"zod\"\n\nconst formatIssues = (error: z.ZodError): string =>\n  error.issues\n    .map((issue) => {\n      const p = issue.path.length > 0 ? issue.path.join(\".\") : \"<root>\"\n      return `${p}: ${issue.message}`\n    })\n    .join(\"; \")\n\nconst parseWithSchema = <T>(schema: z.ZodType<T>, data: unknown, label: string): T => {\n  const parsed = schema.safeParse(data)\n  if (parsed.success) return parsed.data\n  throw new TypeError(`${label}: ${formatIssues(parsed.error)}`)\n}\n\nexport const DesignTokensSchema: z.ZodType<\n  Record<string, string | number | Record<string, unknown>>\n> = z.record(z.string(), z.union([z.string(), z.number(), z.lazy(() => DesignTokensSchema)]))\n\nexport const TwClassResultSchema = z.object({\n  css: z.string(),\n  classes: z.array(z.string()),\n})\n\nexport const TwPluginOptionsSchema = z.object({\n  classProcessor: z\n    .function({ input: [z.array(z.string())], output: TwClassResultSchema })\n    .optional(),\n  tokens: DesignTokensSchema.optional(),\n  debug: z.boolean().optional(),\n  minify: z.boolean().optional(),\n})\n\nexport type TwPluginOptionsInput = z.infer<typeof TwPluginOptionsSchema>\n\nexport const PluginManifestSchema = z.object({\n  name: z.string().min(1),\n  setup: z.function({ input: [z.unknown()], output: z.unknown() }),\n})\n\nexport type PluginManifestInput = z.infer<typeof PluginManifestSchema>\n\nexport const TransformRegistrationSchema = z.function({ input: [z.unknown()], output: z.unknown() })\n\nexport const TokenRegistrationSchema = z.object({\n  name: z.string().min(1),\n  value: z.string(),\n})\n\nexport type TokenRegistrationInput = z.infer<typeof TokenRegistrationSchema>\n\nexport const parseTwPluginOptions = (options: unknown) =>\n  parseWithSchema(TwPluginOptionsSchema, options ?? {}, \"plugin options are invalid\")\n\nexport const parsePluginManifest = (plugin: unknown) =>\n  parseWithSchema(PluginManifestSchema, plugin, \"plugin manifest is invalid\")\n\nexport const parseTokenRegistration = (data: unknown) =>\n  parseWithSchema(TokenRegistrationSchema, data, \"token registration is invalid\")\n\n// ── Enhanced plugin validation (dari monorepo checklist) ────────────────────\n\n/** Nama plugin harus mengikuti format npm package */\nexport const PluginNameSchema = z.string()\n  .min(1, \"Plugin name cannot be empty\")\n  .regex(\n    /^(@[a-z0-9-]+\\/)?[a-z0-9][a-z0-9-]*[a-z0-9]$/,\n    \"Plugin name must follow npm naming: lowercase, hyphens allowed, no leading/trailing hyphens\"\n  )\n\n/** Versi semantic versioning */\nexport const SemverSchema = z.string()\n  .regex(/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/, \"Version must follow semver: x.y.z or x.y.z-prerelease\")\n\n/** Full plugin manifest dengan validasi nama dan versi */\nexport const FullPluginManifestSchema = PluginManifestSchema.extend({\n  name: PluginNameSchema,\n  version: SemverSchema.optional(),\n  description: z.string().max(200).optional(),\n  keywords: z.array(z.string()).max(10).optional(),\n})\n\nexport type FullPluginManifest = z.infer<typeof FullPluginManifestSchema>\n\n/** Validate full plugin manifest */\nexport const parseFullPluginManifest = (plugin: unknown): FullPluginManifest =>\n  parseWithSchema(FullPluginManifestSchema, plugin, \"plugin manifest is invalid\")\n\n/** Validate plugin name only */\nexport const validatePluginName = (name: unknown): string =>\n  parseWithSchema(PluginNameSchema, name, \"plugin name is invalid\")\n\n/** Zod validation for plugin registration payload */\nexport const PluginRegistrationPayloadSchema = z.object({\n  plugin: FullPluginManifestSchema,\n  config: z.record(z.string(), z.unknown()).optional(),\n  priority: z.number().int().min(0).max(100).optional(),\n})\n\nexport type PluginRegistrationPayload = z.infer<typeof PluginRegistrationPayloadSchema>\n\nexport const parsePluginRegistrationPayload = (payload: unknown): PluginRegistrationPayload =>\n  parseWithSchema(PluginRegistrationPayloadSchema, payload, \"plugin registration payload is invalid\")\n","import { parsePluginManifest, parseTokenRegistration, TransformRegistrationSchema } from \"./schemas\"\nimport type { CompoundCondition, TokenMap } from \"@tailwind-styled/shared\"\n\nexport interface TwClassResult {\n  css: string\n  classes: string[]\n}\n\nexport interface DesignTokens {\n  [key: string]: string | number | DesignTokens\n}\n\nexport interface TwPluginOptions {\n  classProcessor?: (classes: string[]) => TwClassResult\n  tokens?: DesignTokens\n  debug?: boolean\n  minify?: boolean\n}\n\nexport type VariantResolver = (selector: string) => string\n\nexport interface UtilityDefinition {\n  [property: string]: string\n}\n\nexport type { CompoundCondition, TokenMap }\n\nexport interface ComponentConfig {\n  base: string\n  variants: Record<string, Record<string, string>>\n  compoundVariants: Array<{ class: string } & CompoundCondition>\n  defaultVariants: Record<string, string>\n}\n\nexport interface TransformMeta {\n  componentName: string\n  tag: string\n}\n\nexport type TransformFn = (config: ComponentConfig, meta: TransformMeta) => ComponentConfig\n\nexport type CssHook = (css: string) => string\n\nexport interface TwContext {\n  addVariant(name: string, resolver: VariantResolver): void\n  addUtility(name: string, styles: UtilityDefinition): void\n  addToken(name: string, value: string): void\n  addTransform(fn: TransformFn): void\n  onGenerateCSS(hook: CssHook): void\n  onBuildEnd(hook: () => void | Promise<void>): void\n  getToken(name: string): string | undefined\n  subscribeTokens(callback: (tokens: TokenMap) => void): () => void\n  readonly config: Record<string, unknown>\n}\n\nexport interface TwPlugin {\n  name: string\n  setup(ctx: TwContext): void\n}\n\nexport interface PluginRegistry {\n  variants: Map<string, VariantResolver>\n  utilities: Map<string, UtilityDefinition>\n  tokens: Map<string, string>\n  transforms: TransformFn[]\n  cssHooks: CssHook[]\n  buildHooks: Array<() => void | Promise<void>>\n  plugins: Set<string>\n}\n\nexport interface TokenEngineAPI {\n  getToken?: (name: string) => string | undefined\n  getTokens?: () => Record<string, string> | undefined\n  subscribeTokens?: (callback: (tokens: Record<string, string>) => void) => () => void\n  subscribe?: (callback: (tokens: Record<string, string>) => void) => () => void\n}\n\nconst TOKEN_ENGINE_KEY = \"__TW_TOKEN_ENGINE__\"\n\nexport function resolveTokenEngine(): TokenEngineAPI | undefined {\n  const engine = (globalThis as Record<string, unknown>)[TOKEN_ENGINE_KEY]\n  if (engine && typeof engine === \"object\") {\n    return engine as TokenEngineAPI\n  }\n  return undefined\n}\n\nexport function readToken(engine: TokenEngineAPI | undefined, name: string): string | undefined {\n  if (!engine) return undefined\n  if (typeof engine.getToken === \"function\") return engine.getToken(name)\n  if (typeof engine.getTokens === \"function\") {\n    const tokens = engine.getTokens()\n    return tokens?.[name]\n  }\n  return undefined\n}\n\nexport interface TransformContext {\n  filename?: string\n  componentName?: string\n  tag?: string\n}\n\nexport interface TwGlobalRegistry {\n  transforms: Array<(config: ComponentConfig, ctx: TransformContext) => ComponentConfig>\n  tokens: Record<string, string>\n  variants: Map<string, VariantResolver>\n}\n\nconst transformRegistry: TwGlobalRegistry = {\n  transforms: [],\n  tokens: {},\n  variants: new Map(),\n}\n\nconst normalizeTokenName = (name: string): string =>\n  name.replace(/[^a-zA-Z0-9-]/g, \"-\").toLowerCase()\n\nexport function getGlobalRegistry(): TwGlobalRegistry {\n  return transformRegistry\n}\n\nexport function registerTransform(\n  transform: (config: ComponentConfig, ctx: TransformContext) => ComponentConfig\n): void {\n  TransformRegistrationSchema.parse(transform)\n  transformRegistry.transforms.push(transform)\n}\n\nexport function registerToken(name: string, value: string): void {\n  const parsed = parseTokenRegistration({ name, value })\n  transformRegistry.tokens[parsed.name] = parsed.value\n}\n\nexport function createPluginRegistry(): PluginRegistry {\n  return {\n    variants: new Map(),\n    utilities: new Map(),\n    tokens: new Map(),\n    transforms: [],\n    cssHooks: [],\n    buildHooks: [],\n    plugins: new Set(),\n  }\n}\n\nconst legacyState = { globalRegistry: createPluginRegistry() }\n\nexport function resetGlobalRegistry(): void {\n  transformRegistry.transforms.length = 0\n  transformRegistry.variants.clear()\n  for (const key of Object.keys(transformRegistry.tokens)) {\n    delete transformRegistry.tokens[key]\n  }\n  legacyState.globalRegistry = createPluginRegistry()\n}\n\nexport function createPluginContext(\n  registry: PluginRegistry,\n  config: Record<string, unknown> = {}\n): TwContext {\n  const isLegacyRegistry = registry === legacyState.globalRegistry\n\n  return {\n    config,\n    addVariant(name, resolver) {\n      registry.variants.set(name, resolver)\n      if (isLegacyRegistry) {\n        transformRegistry.variants.set(name, resolver)\n      }\n    },\n    addUtility(name, styles) {\n      registry.utilities.set(name, styles)\n    },\n    addToken(name, value) {\n      const parsed = parseTokenRegistration({ name, value })\n      const normalized = normalizeTokenName(parsed.name)\n      registry.tokens.set(normalized, parsed.value)\n      if (isLegacyRegistry) {\n        transformRegistry.tokens[normalized] = parsed.value\n      }\n    },\n    addTransform(fn) {\n      TransformRegistrationSchema.parse(fn)\n      registry.transforms.push(fn)\n      if (isLegacyRegistry) {\n        transformRegistry.transforms.push((config, ctx) =>\n          fn(config, {\n            componentName: ctx.componentName ?? \"\",\n            tag: ctx.tag ?? \"\",\n          })\n        )\n      }\n    },\n    onGenerateCSS(hook) {\n      registry.cssHooks.push(hook)\n    },\n    onBuildEnd(hook) {\n      registry.buildHooks.push(hook)\n    },\n    getToken(name) {\n      const normalized = normalizeTokenName(name)\n      // Check local registry first (populated by addToken), then fallback to token engine\n      const local = registry.tokens.get(normalized)\n      if (local !== undefined) return local\n      return readToken(resolveTokenEngine(), normalized)\n    },\n    subscribeTokens(callback) {\n      const engine = resolveTokenEngine()\n      if (!engine) return () => {}\n      if (typeof engine.subscribeTokens === \"function\") return engine.subscribeTokens(callback)\n      if (typeof engine.subscribe === \"function\") return engine.subscribe(callback)\n      return () => {}\n    },\n  }\n}\n\nexport function createTw(config: Record<string, unknown> = {}): TwContext & {\n  registry: {\n    plugins: Set<string>\n    variants: Map<string, VariantResolver>\n    utilities: Map<string, UtilityDefinition>\n    tokens: Map<string, string>\n  }\n  use: (plugin: TwPlugin) => void\n} {\n  const registry = createPluginRegistry()\n  const ctx = createPluginContext(registry, config)\n\n  const result = ctx as TwContext & {\n    registry: {\n      plugins: Set<string>\n      variants: Map<string, VariantResolver>\n      utilities: Map<string, UtilityDefinition>\n      tokens: Map<string, string>\n    }\n    use: (plugin: TwPlugin) => void\n  }\n\n  result.registry = {\n    plugins: registry.plugins,\n    variants: registry.variants,\n    utilities: registry.utilities,\n    tokens: registry.tokens,\n  }\n\n  result.use = (plugin: TwPlugin) => {\n    const manifest = parsePluginManifest(plugin)\n    manifest.setup(ctx)\n    registry.plugins.add(manifest.name)\n  }\n\n  if (config.plugins && Array.isArray(config.plugins)) {\n    for (const plugin of config.plugins) {\n      result.use(parsePluginManifest(plugin))\n    }\n  }\n\n  return result\n}\n\n/**\n * Creates a TwContext that writes through to the global (legacy) registry.\n * Used by createTwPlugin() in the plugin package.\n */\nexport function createGlobalPluginContext(config: Record<string, unknown> = {}): TwContext {\n  return createPluginContext(legacyState.globalRegistry, config)\n}\n\nexport function use(plugin: TwPlugin): void {\n  const ctx = createPluginContext(legacyState.globalRegistry)\n  parsePluginManifest(plugin).setup(ctx)\n}\n\nexport function presetTokens(tokens: Record<string, string>): TwPlugin {\n  return {\n    name: \"preset-tokens\",\n    setup(ctx) {\n      for (const [name, value] of Object.entries(tokens)) {\n        ctx.addToken(name, value)\n      }\n    },\n  }\n}\n\nexport function presetVariants(variants: Record<string, VariantResolver>): TwPlugin {\n  return {\n    name: \"preset-variants\",\n    setup(ctx) {\n      for (const [name, resolver] of Object.entries(variants)) {\n        ctx.addVariant(name, resolver)\n      }\n    },\n  }\n}\n\nexport function presetScrollbar(): TwPlugin {\n  return {\n    name: \"preset-scrollbar\",\n    setup(ctx) {\n      ctx.addVariant(\"scrollbar-thin\", () => \"::-webkit-scrollbar{width:8px;height:8px}\")\n      ctx.addVariant(\"scrollbar-none\", () => \"::-webkit-scrollbar{display:none}\")\n      ctx.addUtility(\"scrollbar-hide\", { \"-ms-overflow-style\": \"none\", \"scrollbar-width\": \"none\" })\n    },\n  }\n}\n\n// Re-export schemas\nexport {\n  type PluginManifestInput,\n  PluginManifestSchema,\n  parsePluginManifest,\n  parseTokenRegistration,\n  parseTwPluginOptions,\n  type TokenRegistrationInput,\n  TokenRegistrationSchema,\n  TransformRegistrationSchema,\n  type TwPluginOptionsInput,\n  TwPluginOptionsSchema,\n} from \"./schemas\"","/**\n * Plugin hooks for tailwind-styled-v4\n * \n * Hooks allow plugins to intercept and modify the CSS generation pipeline.\n */\n\nexport interface PluginHookContext {\n  source: string\n  filename: string\n  extractedConfigs?: unknown[]\n  cssOutput?: string\n}\n\nexport type PluginHook = (ctx: PluginHookContext) => PluginHookContext | Promise<PluginHookContext>\n\nexport interface PluginHooks {\n  beforeExtract?: PluginHook\n  afterExtract?: PluginHook\n  beforeGenerate?: PluginHook\n  afterGenerate?: PluginHook\n}\n\n// Global hook registry\nlet registeredHooks: PluginHooks = {}\n\nexport function registerPluginHooks(hooks: PluginHooks): void {\n  registeredHooks = { ...registeredHooks, ...hooks }\n}\n\nexport function getPluginHooks(): PluginHooks {\n  return registeredHooks\n}\n\n// Wrapper functions that apply hooks\nexport async function applyHooks(\n  hookName: keyof PluginHooks,\n  ctx: PluginHookContext\n): Promise<PluginHookContext> {\n  const hook = registeredHooks[hookName]\n  if (!hook) return ctx\n  return hook(ctx)\n}","import type { TwPluginOptions, TwContext } from \"@tailwind-styled/plugin-api\"\n\nimport { createGlobalPluginContext, parseTwPluginOptions } from \"@tailwind-styled/plugin-api\"\nimport type { LoadResult, PartialResolvedId, PluginContext, TransformResult } from \"rollup\"\n\n// Type-only re-exports — emitted as `export type { }` so Turbopack ESM tracing\n// does not try to resolve them as runtime exports from plugin-api.mjs\nexport type {\n  TwClassResult,\n  DesignTokens,\n  TwPluginOptions,\n  VariantResolver,\n  UtilityDefinition,\n  ComponentConfig,\n  TransformMeta,\n  TransformFn,\n  CssHook,\n  TwContext,\n  TwPlugin,\n  PluginRegistry,\n  TokenEngineAPI,\n  TransformContext,\n  TwGlobalRegistry,\n  CompoundCondition,\n  TokenMap,\n  PluginManifestInput,\n  TokenRegistrationInput,\n  TwPluginOptionsInput,\n} from \"@tailwind-styled/plugin-api\"\n\n// Runtime value re-exports\nexport {\n  resolveTokenEngine,\n  readToken,\n  getGlobalRegistry,\n  registerTransform,\n  registerToken,\n  createPluginRegistry,\n  resetGlobalRegistry,\n  createPluginContext,\n  createTw,\n  createGlobalPluginContext,\n  use,\n  presetTokens,\n  presetVariants,\n  presetScrollbar,\n  PluginManifestSchema,\n  parsePluginManifest,\n  parseTokenRegistration,\n  parseTwPluginOptions,\n  TokenRegistrationSchema,\n  TransformRegistrationSchema,\n  TwPluginOptionsSchema,\n} from \"@tailwind-styled/plugin-api\"\n\nexport {\n  applyHooks,\n  getPluginHooks,\n  registerPluginHooks,\n  type PluginHookContext,\n  type PluginHook,\n  type PluginHooks,\n} from \"./hooks\"\n\nexport interface TwVitePlugin extends TwContext {\n  resolveId(\n    this: PluginContext,\n    source: string,\n    importer: string\n  ): Promise<PartialResolvedId | null>\n  load(this: PluginContext, id: string): Promise<LoadResult | null>\n  transform(this: PluginContext, code: string, id: string): Promise<TransformResult | null>\n}\n\nexport function createTwPlugin(options: TwPluginOptions = {}): TwVitePlugin {\n  parseTwPluginOptions(options)\n\n  const ctx = createGlobalPluginContext(options as Record<string, unknown>)\n\n  return {\n    ...ctx,\n    async resolveId(source, importer) {\n      if (!source.startsWith(\"tw.\") && !source.startsWith(\"tw:\")) return null\n      const importPath = source.replace(/^tw[.:]/, \"\")\n      const resolved = await this.resolve(importPath, importer, { skipSelf: true })\n      if (resolved) return { id: resolved.id }\n      return null\n    },\n    async load(_id) {\n      return null\n    },\n    async transform(_code, _id) {\n      return null\n    },\n  }\n}"],"mappings":"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","names":["config"]}