tailwind-styled-v4 5.0.35 → 5.0.37
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 +458 -339
- package/dist/analyzer.d.mts +152 -5
- package/dist/analyzer.d.ts +152 -5
- package/dist/animate.d.mts +30 -3
- package/dist/animate.d.ts +30 -3
- package/dist/cli.js +9 -6
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +9 -6
- package/dist/cli.mjs.map +1 -1
- package/dist/compiler.d.mts +5 -0
- package/dist/compiler.d.ts +5 -0
- package/dist/compiler.js.map +1 -1
- package/dist/compiler.mjs.map +1 -1
- package/dist/devtools.d.mts +88 -2
- package/dist/devtools.d.ts +88 -2
- package/dist/engine.d.mts +557 -6
- package/dist/engine.d.ts +557 -6
- package/dist/engine.js.map +1 -1
- package/dist/engine.mjs.map +1 -1
- package/dist/index.browser.mjs +689 -508
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.d.mts +236 -9
- package/dist/index.d.ts +236 -9
- package/dist/index.js +38 -20
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +38 -20
- package/dist/index.mjs.map +1 -1
- package/dist/next.js +240 -170
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +240 -170
- package/dist/next.mjs.map +1 -1
- package/dist/plugin-api.d.mts +4 -2
- package/dist/plugin-api.d.ts +4 -2
- package/dist/plugin-registry.js +39 -25
- package/dist/plugin-registry.js.map +1 -1
- package/dist/plugin-registry.mjs +39 -25
- package/dist/plugin-registry.mjs.map +1 -1
- package/dist/plugin.d.mts +165 -5
- package/dist/plugin.d.ts +165 -5
- package/dist/plugin.js +17 -0
- package/dist/plugin.js.map +1 -1
- package/dist/plugin.mjs +15 -1
- package/dist/plugin.mjs.map +1 -1
- package/dist/runtime.d.mts +38 -3
- package/dist/runtime.d.ts +38 -3
- package/dist/scanner.d.mts +58 -4
- package/dist/scanner.d.ts +58 -4
- package/dist/shared.d.mts +185 -3
- package/dist/shared.d.ts +185 -3
- package/dist/shared.js.map +1 -1
- package/dist/shared.mjs.map +1 -1
- package/dist/storybook-addon.d.mts +2 -2
- package/dist/storybook-addon.d.ts +2 -2
- package/dist/svelte.d.mts +2 -1
- package/dist/svelte.d.ts +2 -1
- package/dist/svelte.js +4 -4
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs +4 -4
- package/dist/svelte.mjs.map +1 -1
- package/dist/theme.d.mts +38 -3
- package/dist/theme.d.ts +38 -3
- package/dist/turbopackLoader.js.map +1 -1
- package/dist/turbopackLoader.mjs.map +1 -1
- package/dist/tw.js +9 -6
- package/dist/tw.js.map +1 -1
- package/dist/tw.mjs +9 -6
- package/dist/tw.mjs.map +1 -1
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs.map +1 -1
- package/dist/vue.d.mts +4 -1
- package/dist/vue.d.ts +4 -1
- package/dist/vue.js +4 -4
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +4 -4
- package/dist/vue.mjs.map +1 -1
- package/native/tailwind-styled-native.linux-x64-gnu.node +0 -0
- package/native/tailwind-styled-native.node +0 -0
- package/package.json +7 -5
- package/dist/analyzeWorkspace-B1_XRfdl.d.ts +0 -134
- package/dist/analyzeWorkspace-hYfu4Hg3.d.mts +0 -134
- package/dist/index-DQI6O24n.d.mts +0 -464
- package/dist/index-NDINUhLN.d.mts +0 -90
- package/dist/index-NDINUhLN.d.ts +0 -90
- package/dist/index-UkYbyBkR.d.ts +0 -464
- package/dist/liveTokenEngine-CN9ian1R.d.ts +0 -38
- package/dist/liveTokenEngine-DKoWRtqH.d.mts +0 -38
- package/dist/schemas-DR-SLxZZ.d.mts +0 -59
- package/dist/schemas-DR-SLxZZ.d.ts +0 -59
- package/dist/trace-Dz4vmZdy.d.mts +0 -96
- package/dist/trace-Dz4vmZdy.d.ts +0 -96
- package/dist/types-DXr2PmGP.d.mts +0 -31
- package/dist/types-DXr2PmGP.d.ts +0 -31
package/dist/plugin.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../packages/domain/plugin-api/src/schemas.ts","../packages/domain/plugin-api/src/index.ts","../packages/domain/plugin/src/index.ts"],"names":["config"],"mappings":"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","file":"plugin.mjs","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\"","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 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}"]}
|
|
1
|
+
{"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"],"names":["config"],"mappings":"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","file":"plugin.mjs","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}"]}
|
package/dist/runtime.d.mts
CHANGED
|
@@ -1,7 +1,42 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export { L as LiveTokenEngineBridge, a as LiveTokenSet, T as TokenSubscriber, b as applyTokenSet, c as createUseTokens, g as generateTokenCssString, d as getToken, e as getTokens, l as liveToken, f as liveTokenEngine, s as setToken, h as setTokens, i as subscribeTokens, t as tokenRef, j as tokenVar } from './liveTokenEngine-DKoWRtqH.mjs';
|
|
3
2
|
import { z } from 'zod';
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
type TokenMap = Record<string, string>;
|
|
5
|
+
|
|
6
|
+
type TokenSubscriber = (tokens: TokenMap) => void;
|
|
7
|
+
interface LiveTokenSet {
|
|
8
|
+
vars: Record<string, string>;
|
|
9
|
+
get(name: string): string | undefined;
|
|
10
|
+
set(name: string, value: string): void;
|
|
11
|
+
setAll(tokens: TokenMap): void;
|
|
12
|
+
snapshot(): TokenMap;
|
|
13
|
+
}
|
|
14
|
+
interface LiveTokenEngineBridge {
|
|
15
|
+
getToken(name: string): string | undefined;
|
|
16
|
+
getTokens(): TokenMap;
|
|
17
|
+
setToken(name: string, value: string): void;
|
|
18
|
+
setTokens(tokens: TokenMap): void;
|
|
19
|
+
applyTokenSet(tokens: TokenMap): void;
|
|
20
|
+
subscribeTokens(fn: TokenSubscriber): () => void;
|
|
21
|
+
subscribe?(fn: TokenSubscriber): () => void;
|
|
22
|
+
}
|
|
23
|
+
declare function tokenVar(name: string): string;
|
|
24
|
+
declare function tokenRef(name: string): string;
|
|
25
|
+
declare function liveToken(tokens: TokenMap): LiveTokenSet;
|
|
26
|
+
declare function setToken(name: string, value: string): void;
|
|
27
|
+
declare function setTokens(tokens: TokenMap): void;
|
|
28
|
+
declare function applyTokenSet(tokens: TokenMap): void;
|
|
29
|
+
declare function getToken(name: string): string | undefined;
|
|
30
|
+
declare function getTokens(): TokenMap;
|
|
31
|
+
declare function subscribeTokens(fn: TokenSubscriber): () => void;
|
|
32
|
+
declare function generateTokenCssString(): string;
|
|
33
|
+
declare function createUseTokens(): () => TokenMap;
|
|
34
|
+
declare const liveTokenEngine: LiveTokenEngineBridge;
|
|
35
|
+
declare global {
|
|
36
|
+
interface Window {
|
|
37
|
+
__TW_TOKEN_ENGINE__?: LiveTokenEngineBridge;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
5
40
|
|
|
6
41
|
declare const SubComponentDefSchema: z.ZodObject<{
|
|
7
42
|
tag: z.ZodOptional<z.ZodString>;
|
|
@@ -92,4 +127,4 @@ declare function cx(...inputs: ClassInput[]): string;
|
|
|
92
127
|
*/
|
|
93
128
|
declare function createComponent<S extends SubComponentMap = SubComponentMap>(tag: string, baseClass: string, subComponents?: S, conditionals?: ConditionalProps): StyledComponent<S>;
|
|
94
129
|
|
|
95
|
-
export { type ComponentMetadata, type ComponentMetadataInput, ComponentMetadataSchema, type ConditionalProps, type ConditionalPropsInput, ConditionalPropsSchema, type StyledComponent, type SubComponentDef, type SubComponentDefInput, SubComponentDefSchema, type SubComponentMap, createComponent, cx, parseComponentMetadata, parseSubComponentDef };
|
|
130
|
+
export { type ComponentMetadata, type ComponentMetadataInput, ComponentMetadataSchema, type ConditionalProps, type ConditionalPropsInput, ConditionalPropsSchema, type LiveTokenEngineBridge, type LiveTokenSet, type StyledComponent, type SubComponentDef, type SubComponentDefInput, SubComponentDefSchema, type SubComponentMap, type TokenMap, type TokenSubscriber, applyTokenSet, createComponent, createUseTokens, cx, generateTokenCssString, getToken, getTokens, liveToken, liveTokenEngine, parseComponentMetadata, parseSubComponentDef, setToken, setTokens, subscribeTokens, tokenRef, tokenVar };
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,7 +1,42 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export { L as LiveTokenEngineBridge, a as LiveTokenSet, T as TokenSubscriber, b as applyTokenSet, c as createUseTokens, g as generateTokenCssString, d as getToken, e as getTokens, l as liveToken, f as liveTokenEngine, s as setToken, h as setTokens, i as subscribeTokens, t as tokenRef, j as tokenVar } from './liveTokenEngine-CN9ian1R.js';
|
|
3
2
|
import { z } from 'zod';
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
type TokenMap = Record<string, string>;
|
|
5
|
+
|
|
6
|
+
type TokenSubscriber = (tokens: TokenMap) => void;
|
|
7
|
+
interface LiveTokenSet {
|
|
8
|
+
vars: Record<string, string>;
|
|
9
|
+
get(name: string): string | undefined;
|
|
10
|
+
set(name: string, value: string): void;
|
|
11
|
+
setAll(tokens: TokenMap): void;
|
|
12
|
+
snapshot(): TokenMap;
|
|
13
|
+
}
|
|
14
|
+
interface LiveTokenEngineBridge {
|
|
15
|
+
getToken(name: string): string | undefined;
|
|
16
|
+
getTokens(): TokenMap;
|
|
17
|
+
setToken(name: string, value: string): void;
|
|
18
|
+
setTokens(tokens: TokenMap): void;
|
|
19
|
+
applyTokenSet(tokens: TokenMap): void;
|
|
20
|
+
subscribeTokens(fn: TokenSubscriber): () => void;
|
|
21
|
+
subscribe?(fn: TokenSubscriber): () => void;
|
|
22
|
+
}
|
|
23
|
+
declare function tokenVar(name: string): string;
|
|
24
|
+
declare function tokenRef(name: string): string;
|
|
25
|
+
declare function liveToken(tokens: TokenMap): LiveTokenSet;
|
|
26
|
+
declare function setToken(name: string, value: string): void;
|
|
27
|
+
declare function setTokens(tokens: TokenMap): void;
|
|
28
|
+
declare function applyTokenSet(tokens: TokenMap): void;
|
|
29
|
+
declare function getToken(name: string): string | undefined;
|
|
30
|
+
declare function getTokens(): TokenMap;
|
|
31
|
+
declare function subscribeTokens(fn: TokenSubscriber): () => void;
|
|
32
|
+
declare function generateTokenCssString(): string;
|
|
33
|
+
declare function createUseTokens(): () => TokenMap;
|
|
34
|
+
declare const liveTokenEngine: LiveTokenEngineBridge;
|
|
35
|
+
declare global {
|
|
36
|
+
interface Window {
|
|
37
|
+
__TW_TOKEN_ENGINE__?: LiveTokenEngineBridge;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
5
40
|
|
|
6
41
|
declare const SubComponentDefSchema: z.ZodObject<{
|
|
7
42
|
tag: z.ZodOptional<z.ZodString>;
|
|
@@ -92,4 +127,4 @@ declare function cx(...inputs: ClassInput[]): string;
|
|
|
92
127
|
*/
|
|
93
128
|
declare function createComponent<S extends SubComponentMap = SubComponentMap>(tag: string, baseClass: string, subComponents?: S, conditionals?: ConditionalProps): StyledComponent<S>;
|
|
94
129
|
|
|
95
|
-
export { type ComponentMetadata, type ComponentMetadataInput, ComponentMetadataSchema, type ConditionalProps, type ConditionalPropsInput, ConditionalPropsSchema, type StyledComponent, type SubComponentDef, type SubComponentDefInput, SubComponentDefSchema, type SubComponentMap, createComponent, cx, parseComponentMetadata, parseSubComponentDef };
|
|
130
|
+
export { type ComponentMetadata, type ComponentMetadataInput, ComponentMetadataSchema, type ConditionalProps, type ConditionalPropsInput, ConditionalPropsSchema, type LiveTokenEngineBridge, type LiveTokenSet, type StyledComponent, type SubComponentDef, type SubComponentDefInput, SubComponentDefSchema, type SubComponentMap, type TokenMap, type TokenSubscriber, applyTokenSet, createComponent, createUseTokens, cx, generateTokenCssString, getToken, getTokens, liveToken, liveTokenEngine, parseComponentMetadata, parseSubComponentDef, setToken, setTokens, subscribeTokens, tokenRef, tokenVar };
|
package/dist/scanner.d.mts
CHANGED
|
@@ -1,6 +1,60 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
declare const ScanWorkspaceOptionsSchema: z.ZodObject<{
|
|
4
|
+
includeExtensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
5
|
+
ignoreDirectories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
6
|
+
useCache: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
cacheDir: z.ZodOptional<z.ZodString>;
|
|
8
|
+
smartInvalidation: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
type ScanWorkspaceOptions = z.infer<typeof ScanWorkspaceOptionsSchema>;
|
|
11
|
+
declare const ScanFileResultSchema: z.ZodObject<{
|
|
12
|
+
file: z.ZodString;
|
|
13
|
+
classes: z.ZodArray<z.ZodString>;
|
|
14
|
+
hash: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
type ScanFileResult = z.infer<typeof ScanFileResultSchema>;
|
|
17
|
+
declare const ScanWorkspaceResultSchema: z.ZodObject<{
|
|
18
|
+
files: z.ZodArray<z.ZodObject<{
|
|
19
|
+
file: z.ZodString;
|
|
20
|
+
classes: z.ZodArray<z.ZodString>;
|
|
21
|
+
hash: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
totalFiles: z.ZodNumber;
|
|
24
|
+
uniqueClasses: z.ZodArray<z.ZodString>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
type ScanWorkspaceResult = z.infer<typeof ScanWorkspaceResultSchema>;
|
|
27
|
+
declare const parseScanWorkspaceOptions: (options: unknown) => {
|
|
28
|
+
includeExtensions?: string[] | undefined;
|
|
29
|
+
ignoreDirectories?: string[] | undefined;
|
|
30
|
+
useCache?: boolean | undefined;
|
|
31
|
+
cacheDir?: string | undefined;
|
|
32
|
+
smartInvalidation?: boolean | undefined;
|
|
33
|
+
};
|
|
34
|
+
declare const parseScanWorkspaceResult: (result: unknown) => {
|
|
35
|
+
files: {
|
|
36
|
+
file: string;
|
|
37
|
+
classes: string[];
|
|
38
|
+
hash?: string | undefined;
|
|
39
|
+
}[];
|
|
40
|
+
totalFiles: number;
|
|
41
|
+
uniqueClasses: string[];
|
|
42
|
+
};
|
|
43
|
+
declare const parseScannerWorkerMessage: (message: unknown) => {
|
|
44
|
+
ok: true;
|
|
45
|
+
result: {
|
|
46
|
+
files: {
|
|
47
|
+
file: string;
|
|
48
|
+
classes: string[];
|
|
49
|
+
hash?: string | undefined;
|
|
50
|
+
}[];
|
|
51
|
+
totalFiles: number;
|
|
52
|
+
uniqueClasses: string[];
|
|
53
|
+
};
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
error?: string | undefined;
|
|
57
|
+
};
|
|
4
58
|
|
|
5
59
|
declare function extractClassesNative(source: string): string[];
|
|
6
60
|
declare function batchExtractClassesNative(filePaths: string[]): Array<{
|
|
@@ -19,4 +73,4 @@ declare function scanFile(filePath: string): ScanFileResult;
|
|
|
19
73
|
declare function scanWorkspace(rootDir: string, options?: ScanWorkspaceOptions): ScanWorkspaceResult;
|
|
20
74
|
declare function scanWorkspaceAsync(rootDir: string, options?: ScanWorkspaceOptions): Promise<ScanWorkspaceResult>;
|
|
21
75
|
|
|
22
|
-
export { DEFAULT_EXTENSIONS, DEFAULT_IGNORES, ScanFileResult, ScanWorkspaceOptions, ScanWorkspaceResult, batchExtractClassesNative, extractClassesNative, isScannableFile, scanFile, scanSource, scanWorkspace, scanWorkspaceAsync };
|
|
76
|
+
export { DEFAULT_EXTENSIONS, DEFAULT_IGNORES, type ScanFileResult, type ScanWorkspaceOptions, type ScanWorkspaceResult, batchExtractClassesNative, extractClassesNative, isScannableFile, parseScanWorkspaceOptions, parseScanWorkspaceResult, parseScannerWorkerMessage, scanFile, scanSource, scanWorkspace, scanWorkspaceAsync };
|
package/dist/scanner.d.ts
CHANGED
|
@@ -1,6 +1,60 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
declare const ScanWorkspaceOptionsSchema: z.ZodObject<{
|
|
4
|
+
includeExtensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
5
|
+
ignoreDirectories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
6
|
+
useCache: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
cacheDir: z.ZodOptional<z.ZodString>;
|
|
8
|
+
smartInvalidation: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
type ScanWorkspaceOptions = z.infer<typeof ScanWorkspaceOptionsSchema>;
|
|
11
|
+
declare const ScanFileResultSchema: z.ZodObject<{
|
|
12
|
+
file: z.ZodString;
|
|
13
|
+
classes: z.ZodArray<z.ZodString>;
|
|
14
|
+
hash: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
type ScanFileResult = z.infer<typeof ScanFileResultSchema>;
|
|
17
|
+
declare const ScanWorkspaceResultSchema: z.ZodObject<{
|
|
18
|
+
files: z.ZodArray<z.ZodObject<{
|
|
19
|
+
file: z.ZodString;
|
|
20
|
+
classes: z.ZodArray<z.ZodString>;
|
|
21
|
+
hash: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
totalFiles: z.ZodNumber;
|
|
24
|
+
uniqueClasses: z.ZodArray<z.ZodString>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
type ScanWorkspaceResult = z.infer<typeof ScanWorkspaceResultSchema>;
|
|
27
|
+
declare const parseScanWorkspaceOptions: (options: unknown) => {
|
|
28
|
+
includeExtensions?: string[] | undefined;
|
|
29
|
+
ignoreDirectories?: string[] | undefined;
|
|
30
|
+
useCache?: boolean | undefined;
|
|
31
|
+
cacheDir?: string | undefined;
|
|
32
|
+
smartInvalidation?: boolean | undefined;
|
|
33
|
+
};
|
|
34
|
+
declare const parseScanWorkspaceResult: (result: unknown) => {
|
|
35
|
+
files: {
|
|
36
|
+
file: string;
|
|
37
|
+
classes: string[];
|
|
38
|
+
hash?: string | undefined;
|
|
39
|
+
}[];
|
|
40
|
+
totalFiles: number;
|
|
41
|
+
uniqueClasses: string[];
|
|
42
|
+
};
|
|
43
|
+
declare const parseScannerWorkerMessage: (message: unknown) => {
|
|
44
|
+
ok: true;
|
|
45
|
+
result: {
|
|
46
|
+
files: {
|
|
47
|
+
file: string;
|
|
48
|
+
classes: string[];
|
|
49
|
+
hash?: string | undefined;
|
|
50
|
+
}[];
|
|
51
|
+
totalFiles: number;
|
|
52
|
+
uniqueClasses: string[];
|
|
53
|
+
};
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
error?: string | undefined;
|
|
57
|
+
};
|
|
4
58
|
|
|
5
59
|
declare function extractClassesNative(source: string): string[];
|
|
6
60
|
declare function batchExtractClassesNative(filePaths: string[]): Array<{
|
|
@@ -19,4 +73,4 @@ declare function scanFile(filePath: string): ScanFileResult;
|
|
|
19
73
|
declare function scanWorkspace(rootDir: string, options?: ScanWorkspaceOptions): ScanWorkspaceResult;
|
|
20
74
|
declare function scanWorkspaceAsync(rootDir: string, options?: ScanWorkspaceOptions): Promise<ScanWorkspaceResult>;
|
|
21
75
|
|
|
22
|
-
export { DEFAULT_EXTENSIONS, DEFAULT_IGNORES, ScanFileResult, ScanWorkspaceOptions, ScanWorkspaceResult, batchExtractClassesNative, extractClassesNative, isScannableFile, scanFile, scanSource, scanWorkspace, scanWorkspaceAsync };
|
|
76
|
+
export { DEFAULT_EXTENSIONS, DEFAULT_IGNORES, type ScanFileResult, type ScanWorkspaceOptions, type ScanWorkspaceResult, batchExtractClassesNative, extractClassesNative, isScannableFile, parseScanWorkspaceOptions, parseScanWorkspaceResult, parseScannerWorkerMessage, scanFile, scanSource, scanWorkspace, scanWorkspaceAsync };
|
package/dist/shared.d.mts
CHANGED
|
@@ -1,6 +1,99 @@
|
|
|
1
|
-
export { C as CompoundCondition, E as ErrorSource, H as HtmlTagName, L as LRUCache, c as LoadNativeBindingOptions, d as LoadNativeBindingResult, e as Logger, R as ResolveCandidatesOptions, T as TokenMap, f as TwError, V as VariantMatrix, b as VariantProps, a as VariantValue, g as createDebugLogger, h as createLogger, i as formatErrorMessage, j as hashContent, k as isTwError, l as loadNativeBinding, r as resolveNativeBindingCandidates, m as resolveRuntimeDir, w as wrapUnknownError } from './index-NDINUhLN.mjs';
|
|
2
1
|
import { z } from 'zod';
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Shared trace utilities for CLI, devtools, and dashboard
|
|
5
|
+
*
|
|
6
|
+
* Provides reusable trace snapshot handling, formatting, and analysis
|
|
7
|
+
* across the tailwind-styled-v4 ecosystem without introducing coupling.
|
|
8
|
+
*/
|
|
9
|
+
interface TraceSnapshot {
|
|
10
|
+
generatedAt: string;
|
|
11
|
+
buildMs: number | null;
|
|
12
|
+
scanMs: number | null;
|
|
13
|
+
analyzeMs: number | null;
|
|
14
|
+
compileMs: number | null;
|
|
15
|
+
memoryMb: {
|
|
16
|
+
rss: number;
|
|
17
|
+
heapUsed: number;
|
|
18
|
+
heapTotal: number;
|
|
19
|
+
} | null;
|
|
20
|
+
classCount: number | null;
|
|
21
|
+
fileCount: number | null;
|
|
22
|
+
cssBytes: number | null;
|
|
23
|
+
mode: string | null;
|
|
24
|
+
eventsReceived?: number;
|
|
25
|
+
eventsProcessed?: number;
|
|
26
|
+
batchesProcessed?: number;
|
|
27
|
+
incrementalUpdates?: number;
|
|
28
|
+
fullRescans?: number;
|
|
29
|
+
}
|
|
30
|
+
interface TraceSummary {
|
|
31
|
+
workspace: {
|
|
32
|
+
totalPackages: number;
|
|
33
|
+
totalFiles: number;
|
|
34
|
+
totalClasses: number;
|
|
35
|
+
lastScanDurationMs: number;
|
|
36
|
+
lastBuildDurationMs: number;
|
|
37
|
+
};
|
|
38
|
+
cache: {
|
|
39
|
+
hitRate: number;
|
|
40
|
+
totalEntries: number;
|
|
41
|
+
memoryUsageMb: number;
|
|
42
|
+
};
|
|
43
|
+
pipeline: {
|
|
44
|
+
scanDurationMs: number;
|
|
45
|
+
analyzeDurationMs: number;
|
|
46
|
+
compileDurationMs: number;
|
|
47
|
+
totalDurationMs: number;
|
|
48
|
+
};
|
|
49
|
+
health: {
|
|
50
|
+
status: "healthy" | "degraded" | "unhealthy";
|
|
51
|
+
issues: Array<{
|
|
52
|
+
severity: string;
|
|
53
|
+
message: string;
|
|
54
|
+
}>;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get health status color for UI rendering
|
|
59
|
+
*/
|
|
60
|
+
declare function getHealthColor(status?: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Get mode color for UI rendering
|
|
63
|
+
*/
|
|
64
|
+
declare function getModeColor(mode?: string | null): string;
|
|
65
|
+
/**
|
|
66
|
+
* Format memory in human-readable format
|
|
67
|
+
*/
|
|
68
|
+
declare function formatMemory(bytes: number): string;
|
|
69
|
+
/**
|
|
70
|
+
* Format duration in human-readable format
|
|
71
|
+
*/
|
|
72
|
+
declare function formatDuration(ms: number | null): string;
|
|
73
|
+
/**
|
|
74
|
+
* Calculate health status from metrics
|
|
75
|
+
*/
|
|
76
|
+
declare function calculateHealth(metrics: TraceSnapshot, summary?: TraceSummary): "healthy" | "degraded" | "unhealthy";
|
|
77
|
+
/**
|
|
78
|
+
* Get color for build time indicator
|
|
79
|
+
*/
|
|
80
|
+
declare function getBuildTimeColor(ms: number | null): string;
|
|
81
|
+
/**
|
|
82
|
+
* Get color for memory usage indicator
|
|
83
|
+
*/
|
|
84
|
+
declare function getMemoryColor(mb: number): string;
|
|
85
|
+
/**
|
|
86
|
+
* Create trace snapshot from dashboard data
|
|
87
|
+
*/
|
|
88
|
+
declare function createTraceSnapshot(data: Record<string, unknown>): TraceSnapshot;
|
|
89
|
+
/**
|
|
90
|
+
* Calculate pipeline time distribution
|
|
91
|
+
*/
|
|
92
|
+
declare function getPipelinePercentages(metrics: TraceSnapshot): {
|
|
93
|
+
scanPct: number;
|
|
94
|
+
analyzePct: number;
|
|
95
|
+
compilePct: number;
|
|
96
|
+
};
|
|
4
97
|
|
|
5
98
|
/**
|
|
6
99
|
* Error code registry — single source of truth for all error codes.
|
|
@@ -748,4 +841,93 @@ declare function appendStaticStateCssToSafelist(srcDir: string, safelistPath: st
|
|
|
748
841
|
|
|
749
842
|
declare function setGlobalLogFile(filePath: string): void;
|
|
750
843
|
|
|
751
|
-
|
|
844
|
+
type TokenMap = Record<string, string>;
|
|
845
|
+
type VariantValue = string | number | boolean | undefined;
|
|
846
|
+
type VariantProps = Record<string, VariantValue>;
|
|
847
|
+
type HtmlTagName = keyof HTMLElementTagNameMap;
|
|
848
|
+
type CompoundCondition = Record<string, string | number | boolean>;
|
|
849
|
+
type VariantMatrix = Record<string, Array<string | number | boolean>>;
|
|
850
|
+
interface Logger {
|
|
851
|
+
warn(...args: unknown[]): void;
|
|
852
|
+
debug(...args: unknown[]): void;
|
|
853
|
+
error(...args: unknown[]): void;
|
|
854
|
+
log(...args: unknown[]): void;
|
|
855
|
+
}
|
|
856
|
+
declare function createLogger(namespace: string): Logger;
|
|
857
|
+
declare function createDebugLogger(namespace: string, label?: string): (msg: string) => void;
|
|
858
|
+
type ErrorSource = "rust" | "validation" | "compile" | "io" | "config" | "unknown";
|
|
859
|
+
type ZodLikeIssue = {
|
|
860
|
+
path?: readonly PropertyKey[];
|
|
861
|
+
message?: string;
|
|
862
|
+
};
|
|
863
|
+
declare class TwError extends Error {
|
|
864
|
+
/** @deprecated Gunakan source */
|
|
865
|
+
readonly domain: string;
|
|
866
|
+
readonly source: ErrorSource;
|
|
867
|
+
readonly code: string;
|
|
868
|
+
readonly originalCause?: unknown;
|
|
869
|
+
constructor(domainOrSource: string, code: string, message: string, cause?: unknown);
|
|
870
|
+
static fromIo(code: string, message: string): TwError;
|
|
871
|
+
static fromCompile(code: string, message: string): TwError;
|
|
872
|
+
static fromRust(err: {
|
|
873
|
+
code?: string;
|
|
874
|
+
message?: string;
|
|
875
|
+
} | Error | unknown): TwError;
|
|
876
|
+
/** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */
|
|
877
|
+
static fromZod(err: {
|
|
878
|
+
issues?: ZodLikeIssue[];
|
|
879
|
+
errors?: ZodLikeIssue[];
|
|
880
|
+
}): TwError;
|
|
881
|
+
static wrap(source: string, code: string, err: unknown): TwError;
|
|
882
|
+
toString(): string;
|
|
883
|
+
toJSON(): {
|
|
884
|
+
name: string;
|
|
885
|
+
source: string;
|
|
886
|
+
code: string;
|
|
887
|
+
message: string;
|
|
888
|
+
};
|
|
889
|
+
toCliMessage(): string;
|
|
890
|
+
}
|
|
891
|
+
declare function wrapUnknownError(domain: string, code: string, error: unknown): TwError;
|
|
892
|
+
declare function isTwError(err: unknown): err is TwError;
|
|
893
|
+
interface LoadNativeBindingOptions<T> {
|
|
894
|
+
runtimeDir: string;
|
|
895
|
+
candidates: string[];
|
|
896
|
+
isValid: (module: unknown) => module is T;
|
|
897
|
+
invalidExportMessage: string;
|
|
898
|
+
}
|
|
899
|
+
interface LoadNativeBindingResult<T> {
|
|
900
|
+
binding: T | null;
|
|
901
|
+
loadErrors: Array<{
|
|
902
|
+
path: string;
|
|
903
|
+
message: string;
|
|
904
|
+
}>;
|
|
905
|
+
loadedPath?: string;
|
|
906
|
+
}
|
|
907
|
+
declare function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T>;
|
|
908
|
+
interface ResolveCandidatesOptions {
|
|
909
|
+
runtimeDir?: string;
|
|
910
|
+
envVarNames?: string[];
|
|
911
|
+
includeDefaultCandidates?: boolean;
|
|
912
|
+
enforceNodeExtensionForEnvPath?: boolean;
|
|
913
|
+
/** @deprecated — ignored, kept for backward compat */
|
|
914
|
+
packageName?: string;
|
|
915
|
+
}
|
|
916
|
+
declare function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[];
|
|
917
|
+
declare function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string;
|
|
918
|
+
declare function hashContent(content: string, algorithm?: string, length?: number): string;
|
|
919
|
+
declare function formatErrorMessage(error: unknown): string;
|
|
920
|
+
declare class LRUCache<K, V> {
|
|
921
|
+
private capacity;
|
|
922
|
+
private cache;
|
|
923
|
+
constructor(capacity: number);
|
|
924
|
+
get(key: K): V | undefined;
|
|
925
|
+
set(key: K, value: V): void;
|
|
926
|
+
delete(key: K): boolean;
|
|
927
|
+
has(key: K): boolean;
|
|
928
|
+
clear(): void;
|
|
929
|
+
entries(): IterableIterator<[K, V]>;
|
|
930
|
+
get size(): number;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
export { type BuildPhaseTrace, type BuildPhases, type BuildTelemetry, type BuildTrace, type ClassInspection, type ClassProperty, type ClassUsageLocation, type ComponentCodegenOptions, type CompoundCondition, type DashboardMetrics, type DashboardSummary, ERROR_CODES, type ErrorCode, type ErrorSource, type GeneratedStateRule, type HtmlTagName, LRUCache, type LoadNativeBindingOptions, type LoadNativeBindingResult, type Logger, NativeAnalyzerReportSchema, NativeCacheEntrySchema, NativeCacheReadResultSchema, NativeCssCompileResultSchema, type NativeResolutionResult, NativeScanFileSchema, NativeScanResultSchema, NativeTransformResultSchema, NativeWatchResultSchema, type ObservabilityClient, type PackageJson, PackageJsonSchema, type RegistryFile, RegistryFileSchema, type RegistryPluginEntry, RegistryPluginEntrySchema, type ResolveCandidatesOptions, type ScanCache, type ScanCacheClassEntry, ScanCacheClassEntrySchema, ScanCacheSchema, type StaticStateCssInput, type StaticStateExtractionResult, TW_STATE_STATIC_FILENAME, type TailwindConfig, TailwindConfigSchema, type TailwindInfo, TelemetryCollector, type TelemetrySummary, type TokenMap, type TraceSnapshot, type TraceSummary, TwError, type TwStateConfigEntry, type VariantMatrix, type VariantProps, type VariantValue, type WorkerPathOptions, type WorkerPathResult, appendStaticStateCssToSafelist, assertTailwindV4, calculateHealth, createBuildTimer, createDebugLogger, createEsmRequire, createLogger, createObservabilityClient, createTraceSnapshot, detectTailwind, extractStaticStateCss, formatDuration, formatErrorCode, formatErrorMessage, formatMemory, formatNativeNotFoundError, generateBarrelFile, generateClassRenameCodemod, generateComponentCode, generateStorybookStory, getBuildTimeColor, getDirname, getFilename, getGlobalTelemetry, getHealthColor, getMemoryColor, getModeColor, getPipelinePercentages, getSuggestion, getTailwindVersion, hashContent, isTailwindV4, isTwError, loadNativeBinding, parseJsonFileWithSchema, parseJsonWithSchema, parseNative, resetGlobalTelemetry, resolveFromRoot, resolveLoaderPath, resolveNativeBinary, resolveNativeBindingCandidates, resolveNativeNodePath, resolveRuntimeDir, resolveWorkerPath, safeParseNative, setGlobalLogFile, tryRequire, wrapUnknownError };
|