tailwind-styled-v4 5.0.9 → 5.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -1
- package/dist/{analyzeWorkspace-DuJKh7Ty.d.mts → analyzeWorkspace-BS5O4rhC.d.mts} +47 -2
- package/dist/{analyzeWorkspace-Ct_NTAWt.d.ts → analyzeWorkspace-DDOQdzzI.d.ts} +47 -2
- package/dist/analyzer.d.mts +5 -3
- package/dist/analyzer.d.ts +5 -3
- package/dist/analyzer.js +563 -468
- package/dist/analyzer.js.map +1 -1
- package/dist/analyzer.mjs +562 -467
- package/dist/analyzer.mjs.map +1 -1
- package/dist/animate.d.mts +4 -7
- package/dist/animate.d.ts +4 -7
- package/dist/animate.js +171 -265
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +165 -264
- package/dist/animate.mjs.map +1 -1
- package/dist/atomic.d.mts +22 -1
- package/dist/atomic.d.ts +22 -1
- package/dist/atomic.js +221 -165
- package/dist/atomic.js.map +1 -1
- package/dist/atomic.mjs +200 -165
- package/dist/atomic.mjs.map +1 -1
- package/dist/cli.d.mts +60 -1
- package/dist/cli.d.ts +60 -1
- package/dist/cli.js +1261 -1517
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +1238 -1513
- package/dist/cli.mjs.map +1 -1
- package/dist/compiler.d.mts +38 -7
- package/dist/compiler.d.ts +38 -7
- package/dist/compiler.js +174 -197
- package/dist/compiler.js.map +1 -1
- package/dist/compiler.mjs +151 -194
- package/dist/compiler.mjs.map +1 -1
- package/dist/devtools.js +7 -31
- package/dist/devtools.js.map +1 -1
- package/dist/devtools.mjs +7 -31
- package/dist/devtools.mjs.map +1 -1
- package/dist/engine.d.mts +134 -63
- package/dist/engine.d.ts +134 -63
- package/dist/engine.js +2863 -2482
- package/dist/engine.js.map +1 -1
- package/dist/engine.mjs +2852 -2485
- package/dist/engine.mjs.map +1 -1
- package/dist/{index-eWAocnD2.d.mts → index-NDINUhLN.d.mts} +3 -1
- package/dist/{index-eWAocnD2.d.ts → index-NDINUhLN.d.ts} +3 -1
- package/dist/index.d.mts +45 -32
- package/dist/index.d.ts +45 -32
- package/dist/index.js +271 -158
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +251 -158
- package/dist/index.mjs.map +1 -1
- package/dist/{liveTokenEngine-DSUk88P6.d.ts → liveTokenEngine-CN9ian1R.d.ts} +1 -1
- package/dist/{liveTokenEngine-CX5_0c4q.d.mts → liveTokenEngine-DKoWRtqH.d.mts} +1 -1
- package/dist/next.js +20 -39
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +18 -37
- package/dist/next.mjs.map +1 -1
- package/dist/plugin-api.d.mts +8 -2
- package/dist/plugin-api.d.ts +8 -2
- package/dist/plugin-api.js +14 -2
- package/dist/plugin-api.js.map +1 -1
- package/dist/plugin-api.mjs +14 -3
- package/dist/plugin-api.mjs.map +1 -1
- package/dist/plugin-registry.js +51 -11
- package/dist/plugin-registry.js.map +1 -1
- package/dist/plugin-registry.mjs +51 -11
- package/dist/plugin-registry.mjs.map +1 -1
- package/dist/plugin.d.mts +5 -7
- package/dist/plugin.d.ts +5 -7
- package/dist/plugin.js +16 -15
- package/dist/plugin.js.map +1 -1
- package/dist/plugin.mjs +16 -16
- package/dist/plugin.mjs.map +1 -1
- package/dist/rspack.js +17 -38
- package/dist/rspack.js.map +1 -1
- package/dist/rspack.mjs +15 -36
- package/dist/rspack.mjs.map +1 -1
- package/dist/runtime.d.mts +2 -2
- package/dist/runtime.d.ts +2 -2
- package/dist/scanner.d.mts +10 -1
- package/dist/scanner.d.ts +10 -1
- package/dist/scanner.js +298 -124
- package/dist/scanner.js.map +1 -1
- package/dist/scanner.mjs +296 -124
- package/dist/scanner.mjs.map +1 -1
- package/dist/shared.d.mts +1 -1
- package/dist/shared.d.ts +1 -1
- package/dist/shared.js +104 -176
- package/dist/shared.js.map +1 -1
- package/dist/shared.mjs +85 -176
- package/dist/shared.mjs.map +1 -1
- package/dist/storybook-addon.d.mts +1 -1
- package/dist/storybook-addon.d.ts +1 -1
- package/dist/svelte.d.mts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/svelte.js +166 -3
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs +143 -1
- package/dist/svelte.mjs.map +1 -1
- package/dist/syntax.js +21 -21
- package/dist/syntax.js.map +1 -1
- package/dist/syntax.mjs +21 -21
- package/dist/syntax.mjs.map +1 -1
- package/dist/testing.js +9 -1
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +9 -1
- package/dist/testing.mjs.map +1 -1
- package/dist/theme.d.mts +2 -2
- package/dist/theme.d.ts +2 -2
- package/dist/theme.js +40 -112
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +37 -110
- package/dist/theme.mjs.map +1 -1
- package/dist/turbopackLoader.js +79 -124
- package/dist/turbopackLoader.js.map +1 -1
- package/dist/turbopackLoader.mjs +63 -122
- package/dist/turbopackLoader.mjs.map +1 -1
- package/dist/tw.js +1256 -1517
- package/dist/tw.js.map +1 -1
- package/dist/tw.mjs +1236 -1513
- package/dist/tw.mjs.map +1 -1
- package/dist/vite.js +1783 -823
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +1767 -821
- package/dist/vite.mjs.map +1 -1
- package/dist/vue.d.mts +1 -1
- package/dist/vue.d.ts +1 -1
- package/dist/vue.js +165 -4
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +141 -1
- package/dist/vue.mjs.map +1 -1
- package/dist/webpackLoader.js +65 -108
- package/dist/webpackLoader.js.map +1 -1
- package/dist/webpackLoader.mjs +45 -104
- package/dist/webpackLoader.mjs.map +1 -1
- package/native/tailwind-styled-native.node +0 -0
- package/package.json +22 -24
package/dist/plugin.d.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { TwPluginOptions } from './plugin-api.js';
|
|
2
|
-
export { ComponentConfig, CssHook, DesignTokens, PluginManifestInput, PluginManifestSchema, PluginRegistry, TokenEngineAPI, TokenRegistrationInput, TokenRegistrationSchema, TransformContext, TransformFn, TransformMeta, TransformRegistrationSchema, TwClassResult,
|
|
1
|
+
import { TwContext, TwPluginOptions } from './plugin-api.js';
|
|
2
|
+
export { ComponentConfig, CssHook, DesignTokens, PluginManifestInput, PluginManifestSchema, PluginRegistry, TokenEngineAPI, TokenRegistrationInput, TokenRegistrationSchema, TransformContext, TransformFn, TransformMeta, TransformRegistrationSchema, TwClassResult, TwGlobalRegistry, TwPlugin, TwPluginOptionsInput, TwPluginOptionsSchema, UtilityDefinition, VariantResolver, createGlobalPluginContext, createPluginContext, createPluginRegistry, createTw, getGlobalRegistry, parsePluginManifest, parseTokenRegistration, parseTwPluginOptions, presetScrollbar, presetTokens, presetVariants, readToken, registerToken, registerTransform, resetGlobalRegistry, resolveTokenEngine, use } from './plugin-api.js';
|
|
3
3
|
import { PluginContext, PartialResolvedId, LoadResult, TransformResult } from 'rollup';
|
|
4
|
-
export { C as CompoundCondition, T as TokenMap } from './index-
|
|
4
|
+
export { C as CompoundCondition, T as TokenMap } from './index-NDINUhLN.js';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
|
7
|
-
interface TwVitePlugin {
|
|
7
|
+
interface TwVitePlugin extends TwContext {
|
|
8
8
|
resolveId(this: PluginContext, source: string, importer: string): Promise<PartialResolvedId | null>;
|
|
9
9
|
load(this: PluginContext, id: string): Promise<LoadResult | null>;
|
|
10
10
|
transform(this: PluginContext, code: string, id: string): Promise<TransformResult | null>;
|
|
11
|
-
getToken(name: string): string | undefined;
|
|
12
|
-
subscribeTokens(callback: (tokens: Record<string, string>) => void): () => void;
|
|
13
11
|
}
|
|
14
12
|
declare function createTwPlugin(options?: TwPluginOptions): TwVitePlugin;
|
|
15
13
|
|
|
16
|
-
export { TwPluginOptions, type TwVitePlugin, createTwPlugin };
|
|
14
|
+
export { TwContext, TwPluginOptions, type TwVitePlugin, createTwPlugin };
|
package/dist/plugin.js
CHANGED
|
@@ -73,7 +73,8 @@ function readToken(engine, name) {
|
|
|
73
73
|
}
|
|
74
74
|
var transformRegistry = {
|
|
75
75
|
transforms: [],
|
|
76
|
-
tokens: {}
|
|
76
|
+
tokens: {},
|
|
77
|
+
variants: /* @__PURE__ */ new Map()
|
|
77
78
|
};
|
|
78
79
|
var normalizeTokenName = (name) => name.replace(/[^a-zA-Z0-9-]/g, "-").toLowerCase();
|
|
79
80
|
function getGlobalRegistry() {
|
|
@@ -101,6 +102,7 @@ function createPluginRegistry() {
|
|
|
101
102
|
var legacyState = { globalRegistry: createPluginRegistry() };
|
|
102
103
|
function resetGlobalRegistry() {
|
|
103
104
|
transformRegistry.transforms.length = 0;
|
|
105
|
+
transformRegistry.variants.clear();
|
|
104
106
|
for (const key of Object.keys(transformRegistry.tokens)) {
|
|
105
107
|
delete transformRegistry.tokens[key];
|
|
106
108
|
}
|
|
@@ -112,6 +114,9 @@ function createPluginContext(registry, config = {}) {
|
|
|
112
114
|
config,
|
|
113
115
|
addVariant(name, resolver) {
|
|
114
116
|
registry.variants.set(name, resolver);
|
|
117
|
+
if (isLegacyRegistry) {
|
|
118
|
+
transformRegistry.variants.set(name, resolver);
|
|
119
|
+
}
|
|
115
120
|
},
|
|
116
121
|
addUtility(name, styles) {
|
|
117
122
|
registry.utilities.set(name, styles);
|
|
@@ -143,7 +148,10 @@ function createPluginContext(registry, config = {}) {
|
|
|
143
148
|
registry.buildHooks.push(hook);
|
|
144
149
|
},
|
|
145
150
|
getToken(name) {
|
|
146
|
-
|
|
151
|
+
const normalized = normalizeTokenName(name);
|
|
152
|
+
const local = registry.tokens.get(normalized);
|
|
153
|
+
if (local !== void 0) return local;
|
|
154
|
+
return readToken(resolveTokenEngine(), normalized);
|
|
147
155
|
},
|
|
148
156
|
subscribeTokens(callback) {
|
|
149
157
|
const engine = resolveTokenEngine();
|
|
@@ -178,6 +186,9 @@ function createTw(config = {}) {
|
|
|
178
186
|
}
|
|
179
187
|
return result;
|
|
180
188
|
}
|
|
189
|
+
function createGlobalPluginContext(config = {}) {
|
|
190
|
+
return createPluginContext(legacyState.globalRegistry, config);
|
|
191
|
+
}
|
|
181
192
|
function use(plugin) {
|
|
182
193
|
const ctx = createPluginContext(legacyState.globalRegistry);
|
|
183
194
|
parsePluginManifest(plugin).setup(ctx);
|
|
@@ -216,7 +227,9 @@ function presetScrollbar() {
|
|
|
216
227
|
// packages/domain/plugin/src/index.ts
|
|
217
228
|
function createTwPlugin(options = {}) {
|
|
218
229
|
parseTwPluginOptions(options);
|
|
230
|
+
const ctx = createGlobalPluginContext(options);
|
|
219
231
|
return {
|
|
232
|
+
...ctx,
|
|
220
233
|
async resolveId(source, importer) {
|
|
221
234
|
if (!source.startsWith("tw.") && !source.startsWith("tw:")) return null;
|
|
222
235
|
const importPath = source.replace(/^tw[.:]/, "");
|
|
@@ -229,19 +242,6 @@ function createTwPlugin(options = {}) {
|
|
|
229
242
|
},
|
|
230
243
|
async transform(_code, _id) {
|
|
231
244
|
return null;
|
|
232
|
-
},
|
|
233
|
-
getToken(name) {
|
|
234
|
-
const engine = resolveTokenEngine();
|
|
235
|
-
return readToken(engine, name);
|
|
236
|
-
},
|
|
237
|
-
subscribeTokens(callback) {
|
|
238
|
-
const engine = resolveTokenEngine();
|
|
239
|
-
if (!engine) return () => {
|
|
240
|
-
};
|
|
241
|
-
if (typeof engine.subscribeTokens === "function") return engine.subscribeTokens(callback);
|
|
242
|
-
if (typeof engine.subscribe === "function") return engine.subscribe(callback);
|
|
243
|
-
return () => {
|
|
244
|
-
};
|
|
245
245
|
}
|
|
246
246
|
};
|
|
247
247
|
}
|
|
@@ -250,6 +250,7 @@ exports.PluginManifestSchema = PluginManifestSchema;
|
|
|
250
250
|
exports.TokenRegistrationSchema = TokenRegistrationSchema;
|
|
251
251
|
exports.TransformRegistrationSchema = TransformRegistrationSchema;
|
|
252
252
|
exports.TwPluginOptionsSchema = TwPluginOptionsSchema;
|
|
253
|
+
exports.createGlobalPluginContext = createGlobalPluginContext;
|
|
253
254
|
exports.createPluginContext = createPluginContext;
|
|
254
255
|
exports.createPluginRegistry = createPluginRegistry;
|
|
255
256
|
exports.createTw = createTw;
|
package/dist/plugin.js.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":["z","config"],"mappings":"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","file":"plugin.js","sourcesContent":["import { z } from \"zod\"\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const p = issue.path.length > 0 ? issue.path.join(\".\") : \"<root>\"\r\n return `${p}: ${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 throw new TypeError(`${label}: ${formatIssues(parsed.error)}`)\r\n}\r\n\r\nexport const DesignTokensSchema: z.ZodType<\r\n Record<string, string | number | Record<string, unknown>>\r\n> = z.record(z.string(), z.union([z.string(), z.number(), z.lazy(() => DesignTokensSchema)]))\r\n\r\nexport const TwClassResultSchema = z.object({\r\n css: z.string(),\r\n classes: z.array(z.string()),\r\n})\r\n\r\nexport const TwPluginOptionsSchema = z.object({\r\n classProcessor: z\r\n .function({ input: [z.array(z.string())], output: TwClassResultSchema })\r\n .optional(),\r\n tokens: DesignTokensSchema.optional(),\r\n debug: z.boolean().optional(),\r\n minify: z.boolean().optional(),\r\n})\r\n\r\nexport type TwPluginOptionsInput = z.infer<typeof TwPluginOptionsSchema>\r\n\r\nexport const PluginManifestSchema = z.object({\r\n name: z.string().min(1),\r\n setup: z.function({ input: [z.unknown()], output: z.unknown() }),\r\n})\r\n\r\nexport type PluginManifestInput = z.infer<typeof PluginManifestSchema>\r\n\r\nexport const TransformRegistrationSchema = z.function({ input: [z.unknown()], output: z.unknown() })\r\n\r\nexport const TokenRegistrationSchema = z.object({\r\n name: z.string().min(1),\r\n value: z.string(),\r\n})\r\n\r\nexport type TokenRegistrationInput = z.infer<typeof TokenRegistrationSchema>\r\n\r\nexport const parseTwPluginOptions = (options: unknown) =>\r\n parseWithSchema(TwPluginOptionsSchema, options ?? {}, \"plugin options are invalid\")\r\n\r\nexport const parsePluginManifest = (plugin: unknown) =>\r\n parseWithSchema(PluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\nexport const parseTokenRegistration = (data: unknown) =>\r\n parseWithSchema(TokenRegistrationSchema, data, \"token registration is invalid\")\r\n\r\n// ── Enhanced plugin validation (dari monorepo checklist) ────────────────────\r\n\r\n/** Nama plugin harus mengikuti format npm package */\r\nexport const PluginNameSchema = z.string()\r\n .min(1, \"Plugin name cannot be empty\")\r\n .regex(\r\n /^(@[a-z0-9-]+\\/)?[a-z0-9][a-z0-9-]*[a-z0-9]$/,\r\n \"Plugin name must follow npm naming: lowercase, hyphens allowed, no leading/trailing hyphens\"\r\n )\r\n\r\n/** Versi semantic versioning */\r\nexport const SemverSchema = z.string()\r\n .regex(/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/, \"Version must follow semver: x.y.z or x.y.z-prerelease\")\r\n\r\n/** Full plugin manifest dengan validasi nama dan versi */\r\nexport const FullPluginManifestSchema = PluginManifestSchema.extend({\r\n name: PluginNameSchema,\r\n version: SemverSchema.optional(),\r\n description: z.string().max(200).optional(),\r\n keywords: z.array(z.string()).max(10).optional(),\r\n})\r\n\r\nexport type FullPluginManifest = z.infer<typeof FullPluginManifestSchema>\r\n\r\n/** Validate full plugin manifest */\r\nexport const parseFullPluginManifest = (plugin: unknown): FullPluginManifest =>\r\n parseWithSchema(FullPluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\n/** Validate plugin name only */\r\nexport const validatePluginName = (name: unknown): string =>\r\n parseWithSchema(PluginNameSchema, name, \"plugin name is invalid\")\r\n\r\n/** Zod validation for plugin registration payload */\r\nexport const PluginRegistrationPayloadSchema = z.object({\r\n plugin: FullPluginManifestSchema,\r\n config: z.record(z.string(), z.unknown()).optional(),\r\n priority: z.number().int().min(0).max(100).optional(),\r\n})\r\n\r\nexport type PluginRegistrationPayload = z.infer<typeof PluginRegistrationPayloadSchema>\r\n\r\nexport const parsePluginRegistrationPayload = (payload: unknown): PluginRegistrationPayload =>\r\n parseWithSchema(PluginRegistrationPayloadSchema, payload, \"plugin registration payload is invalid\")\r\n","import { parsePluginManifest, parseTokenRegistration, TransformRegistrationSchema } from \"./schemas\"\r\nimport type { CompoundCondition, TokenMap } from \"@tailwind-styled/shared\"\r\n\r\nexport interface TwClassResult {\r\n css: string\r\n classes: string[]\r\n}\r\n\r\nexport interface DesignTokens {\r\n [key: string]: string | number | DesignTokens\r\n}\r\n\r\nexport interface TwPluginOptions {\r\n classProcessor?: (classes: string[]) => TwClassResult\r\n tokens?: DesignTokens\r\n debug?: boolean\r\n minify?: boolean\r\n}\r\n\r\nexport type VariantResolver = (selector: string) => string\r\n\r\nexport interface UtilityDefinition {\r\n [property: string]: string\r\n}\r\n\r\nexport type { CompoundCondition, TokenMap }\r\n\r\nexport interface ComponentConfig {\r\n base: string\r\n variants: Record<string, Record<string, string>>\r\n compoundVariants: Array<{ class: string } & CompoundCondition>\r\n defaultVariants: Record<string, string>\r\n}\r\n\r\nexport interface TransformMeta {\r\n componentName: string\r\n tag: string\r\n}\r\n\r\nexport type TransformFn = (config: ComponentConfig, meta: TransformMeta) => ComponentConfig\r\n\r\nexport type CssHook = (css: string) => string\r\n\r\nexport interface TwContext {\r\n addVariant(name: string, resolver: VariantResolver): void\r\n addUtility(name: string, styles: UtilityDefinition): void\r\n addToken(name: string, value: string): void\r\n addTransform(fn: TransformFn): void\r\n onGenerateCSS(hook: CssHook): void\r\n onBuildEnd(hook: () => void | Promise<void>): void\r\n getToken(name: string): string | undefined\r\n subscribeTokens(callback: (tokens: TokenMap) => void): () => void\r\n readonly config: Record<string, unknown>\r\n}\r\n\r\nexport interface TwPlugin {\r\n name: string\r\n setup(ctx: TwContext): void\r\n}\r\n\r\nexport interface PluginRegistry {\r\n variants: Map<string, VariantResolver>\r\n utilities: Map<string, UtilityDefinition>\r\n tokens: Map<string, string>\r\n transforms: TransformFn[]\r\n cssHooks: CssHook[]\r\n buildHooks: Array<() => void | Promise<void>>\r\n plugins: Set<string>\r\n}\r\n\r\nexport interface TokenEngineAPI {\r\n getToken?: (name: string) => string | undefined\r\n getTokens?: () => Record<string, string> | undefined\r\n subscribeTokens?: (callback: (tokens: Record<string, string>) => void) => () => void\r\n subscribe?: (callback: (tokens: Record<string, string>) => void) => () => void\r\n}\r\n\r\nconst TOKEN_ENGINE_KEY = \"__TW_TOKEN_ENGINE__\"\r\n\r\nexport function resolveTokenEngine(): TokenEngineAPI | undefined {\r\n const engine = (globalThis as Record<string, unknown>)[TOKEN_ENGINE_KEY]\r\n if (engine && typeof engine === \"object\") {\r\n return engine as TokenEngineAPI\r\n }\r\n return undefined\r\n}\r\n\r\nexport function readToken(engine: TokenEngineAPI | undefined, name: string): string | undefined {\r\n if (!engine) return undefined\r\n if (typeof engine.getToken === \"function\") return engine.getToken(name)\r\n if (typeof engine.getTokens === \"function\") {\r\n const tokens = engine.getTokens()\r\n return tokens?.[name]\r\n }\r\n return undefined\r\n}\r\n\r\nexport interface TransformContext {\r\n filename?: string\r\n componentName?: string\r\n tag?: string\r\n}\r\n\r\nexport interface TwGlobalRegistry {\r\n transforms: Array<(config: ComponentConfig, ctx: TransformContext) => ComponentConfig>\r\n tokens: Record<string, string>\r\n}\r\n\r\nconst transformRegistry: TwGlobalRegistry = {\r\n transforms: [],\r\n tokens: {},\r\n}\r\n\r\nconst normalizeTokenName = (name: string): string =>\r\n name.replace(/[^a-zA-Z0-9-]/g, \"-\").toLowerCase()\r\n\r\nexport function getGlobalRegistry(): TwGlobalRegistry {\r\n return transformRegistry\r\n}\r\n\r\nexport function registerTransform(\r\n transform: (config: ComponentConfig, ctx: TransformContext) => ComponentConfig\r\n): void {\r\n TransformRegistrationSchema.parse(transform)\r\n transformRegistry.transforms.push(transform)\r\n}\r\n\r\nexport function registerToken(name: string, value: string): void {\r\n const parsed = parseTokenRegistration({ name, value })\r\n transformRegistry.tokens[parsed.name] = parsed.value\r\n}\r\n\r\nexport function createPluginRegistry(): PluginRegistry {\r\n return {\r\n variants: new Map(),\r\n utilities: new Map(),\r\n tokens: new Map(),\r\n transforms: [],\r\n cssHooks: [],\r\n buildHooks: [],\r\n plugins: new Set(),\r\n }\r\n}\r\n\r\nconst legacyState = { globalRegistry: createPluginRegistry() }\r\n\r\nexport function resetGlobalRegistry(): void {\r\n transformRegistry.transforms.length = 0\r\n for (const key of Object.keys(transformRegistry.tokens)) {\r\n delete transformRegistry.tokens[key]\r\n }\r\n legacyState.globalRegistry = createPluginRegistry()\r\n}\r\n\r\nexport function createPluginContext(\r\n registry: PluginRegistry,\r\n config: Record<string, unknown> = {}\r\n): TwContext {\r\n const isLegacyRegistry = registry === legacyState.globalRegistry\r\n\r\n return {\r\n config,\r\n addVariant(name, resolver) {\r\n registry.variants.set(name, resolver)\r\n },\r\n addUtility(name, styles) {\r\n registry.utilities.set(name, styles)\r\n },\r\n addToken(name, value) {\r\n const parsed = parseTokenRegistration({ name, value })\r\n const normalized = normalizeTokenName(parsed.name)\r\n registry.tokens.set(normalized, parsed.value)\r\n if (isLegacyRegistry) {\r\n transformRegistry.tokens[normalized] = parsed.value\r\n }\r\n },\r\n addTransform(fn) {\r\n TransformRegistrationSchema.parse(fn)\r\n registry.transforms.push(fn)\r\n if (isLegacyRegistry) {\r\n transformRegistry.transforms.push((config, ctx) =>\r\n fn(config, {\r\n componentName: ctx.componentName ?? \"\",\r\n tag: ctx.tag ?? \"\",\r\n })\r\n )\r\n }\r\n },\r\n onGenerateCSS(hook) {\r\n registry.cssHooks.push(hook)\r\n },\r\n onBuildEnd(hook) {\r\n registry.buildHooks.push(hook)\r\n },\r\n getToken(name) {\r\n return readToken(resolveTokenEngine(), name)\r\n },\r\n subscribeTokens(callback) {\r\n const engine = resolveTokenEngine()\r\n if (!engine) return () => {}\r\n if (typeof engine.subscribeTokens === \"function\") return engine.subscribeTokens(callback)\r\n if (typeof engine.subscribe === \"function\") return engine.subscribe(callback)\r\n return () => {}\r\n },\r\n }\r\n}\r\n\r\nexport function createTw(config: Record<string, unknown> = {}): TwContext & {\r\n registry: {\r\n plugins: Set<string>\r\n variants: Map<string, VariantResolver>\r\n utilities: Map<string, UtilityDefinition>\r\n tokens: Map<string, string>\r\n }\r\n use: (plugin: TwPlugin) => void\r\n} {\r\n const registry = createPluginRegistry()\r\n const ctx = createPluginContext(registry, config)\r\n\r\n const result = ctx as TwContext & {\r\n registry: {\r\n plugins: Set<string>\r\n variants: Map<string, VariantResolver>\r\n utilities: Map<string, UtilityDefinition>\r\n tokens: Map<string, string>\r\n }\r\n use: (plugin: TwPlugin) => void\r\n }\r\n\r\n result.registry = {\r\n plugins: registry.plugins,\r\n variants: registry.variants,\r\n utilities: registry.utilities,\r\n tokens: registry.tokens,\r\n }\r\n\r\n result.use = (plugin: TwPlugin) => {\r\n const manifest = parsePluginManifest(plugin)\r\n manifest.setup(ctx)\r\n registry.plugins.add(manifest.name)\r\n }\r\n\r\n if (config.plugins && Array.isArray(config.plugins)) {\r\n for (const plugin of config.plugins) {\r\n result.use(parsePluginManifest(plugin))\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport function use(plugin: TwPlugin): void {\r\n const ctx = createPluginContext(legacyState.globalRegistry)\r\n parsePluginManifest(plugin).setup(ctx)\r\n}\r\n\r\nexport function presetTokens(tokens: Record<string, string>): TwPlugin {\r\n return {\r\n name: \"preset-tokens\",\r\n setup(ctx) {\r\n for (const [name, value] of Object.entries(tokens)) {\r\n ctx.addToken(name, value)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function presetVariants(variants: Record<string, VariantResolver>): TwPlugin {\r\n return {\r\n name: \"preset-variants\",\r\n setup(ctx) {\r\n for (const [name, resolver] of Object.entries(variants)) {\r\n ctx.addVariant(name, resolver)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function presetScrollbar(): TwPlugin {\r\n return {\r\n name: \"preset-scrollbar\",\r\n setup(ctx) {\r\n ctx.addVariant(\"scrollbar-thin\", () => \"::-webkit-scrollbar{width:8px;height:8px}\")\r\n ctx.addVariant(\"scrollbar-none\", () => \"::-webkit-scrollbar{display:none}\")\r\n ctx.addUtility(\"scrollbar-hide\", { \"-ms-overflow-style\": \"none\", \"scrollbar-width\": \"none\" })\r\n },\r\n }\r\n}\r\n\r\n// Re-export schemas\r\nexport {\r\n type PluginManifestInput,\r\n PluginManifestSchema,\r\n parsePluginManifest,\r\n parseTokenRegistration,\r\n parseTwPluginOptions,\r\n type TokenRegistrationInput,\r\n TokenRegistrationSchema,\r\n TransformRegistrationSchema,\r\n type TwPluginOptionsInput,\r\n TwPluginOptionsSchema,\r\n} from \"./schemas\"\r\n","import type { TwPluginOptions } from \"@tailwind-styled/plugin-api\"\r\n\r\nimport { parseTwPluginOptions, readToken, resolveTokenEngine } from \"@tailwind-styled/plugin-api\"\r\nimport type { LoadResult, PartialResolvedId, PluginContext, TransformResult } from \"rollup\"\r\n\r\nexport * from \"@tailwind-styled/plugin-api\"\r\n\r\nexport interface TwVitePlugin {\r\n resolveId(\r\n this: PluginContext,\r\n source: string,\r\n importer: string\r\n ): Promise<PartialResolvedId | null>\r\n load(this: PluginContext, id: string): Promise<LoadResult | null>\r\n transform(this: PluginContext, code: string, id: string): Promise<TransformResult | null>\r\n getToken(name: string): string | undefined\r\n subscribeTokens(callback: (tokens: Record<string, string>) => void): () => void\r\n}\r\n\r\nexport function createTwPlugin(options: TwPluginOptions = {}): TwVitePlugin {\r\n parseTwPluginOptions(options)\r\n\r\n return {\r\n async resolveId(source, importer) {\r\n if (!source.startsWith(\"tw.\") && !source.startsWith(\"tw:\")) return null\r\n const importPath = source.replace(/^tw[.:]/, \"\")\r\n const resolved = await this.resolve(importPath, importer, { skipSelf: true })\r\n if (resolved) return { id: resolved.id }\r\n return null\r\n },\r\n async load(_id) {\r\n return null\r\n },\r\n async transform(_code, _id) {\r\n return null\r\n },\r\n getToken(name) {\r\n const engine = resolveTokenEngine()\r\n return readToken(engine, name)\r\n },\r\n subscribeTokens(callback) {\r\n const engine = resolveTokenEngine()\r\n if (!engine) return () => {}\r\n if (typeof engine.subscribeTokens === \"function\") return engine.subscribeTokens(callback)\r\n if (typeof engine.subscribe === \"function\") return engine.subscribe(callback)\r\n return () => {}\r\n },\r\n }\r\n}\r\n"]}
|
|
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":["z","config"],"mappings":"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","file":"plugin.js","sourcesContent":["import { z } from \"zod\"\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const p = issue.path.length > 0 ? issue.path.join(\".\") : \"<root>\"\r\n return `${p}: ${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 throw new TypeError(`${label}: ${formatIssues(parsed.error)}`)\r\n}\r\n\r\nexport const DesignTokensSchema: z.ZodType<\r\n Record<string, string | number | Record<string, unknown>>\r\n> = z.record(z.string(), z.union([z.string(), z.number(), z.lazy(() => DesignTokensSchema)]))\r\n\r\nexport const TwClassResultSchema = z.object({\r\n css: z.string(),\r\n classes: z.array(z.string()),\r\n})\r\n\r\nexport const TwPluginOptionsSchema = z.object({\r\n classProcessor: z\r\n .function({ input: [z.array(z.string())], output: TwClassResultSchema })\r\n .optional(),\r\n tokens: DesignTokensSchema.optional(),\r\n debug: z.boolean().optional(),\r\n minify: z.boolean().optional(),\r\n})\r\n\r\nexport type TwPluginOptionsInput = z.infer<typeof TwPluginOptionsSchema>\r\n\r\nexport const PluginManifestSchema = z.object({\r\n name: z.string().min(1),\r\n setup: z.function({ input: [z.unknown()], output: z.unknown() }),\r\n})\r\n\r\nexport type PluginManifestInput = z.infer<typeof PluginManifestSchema>\r\n\r\nexport const TransformRegistrationSchema = z.function({ input: [z.unknown()], output: z.unknown() })\r\n\r\nexport const TokenRegistrationSchema = z.object({\r\n name: z.string().min(1),\r\n value: z.string(),\r\n})\r\n\r\nexport type TokenRegistrationInput = z.infer<typeof TokenRegistrationSchema>\r\n\r\nexport const parseTwPluginOptions = (options: unknown) =>\r\n parseWithSchema(TwPluginOptionsSchema, options ?? {}, \"plugin options are invalid\")\r\n\r\nexport const parsePluginManifest = (plugin: unknown) =>\r\n parseWithSchema(PluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\nexport const parseTokenRegistration = (data: unknown) =>\r\n parseWithSchema(TokenRegistrationSchema, data, \"token registration is invalid\")\r\n\r\n// ── Enhanced plugin validation (dari monorepo checklist) ────────────────────\r\n\r\n/** Nama plugin harus mengikuti format npm package */\r\nexport const PluginNameSchema = z.string()\r\n .min(1, \"Plugin name cannot be empty\")\r\n .regex(\r\n /^(@[a-z0-9-]+\\/)?[a-z0-9][a-z0-9-]*[a-z0-9]$/,\r\n \"Plugin name must follow npm naming: lowercase, hyphens allowed, no leading/trailing hyphens\"\r\n )\r\n\r\n/** Versi semantic versioning */\r\nexport const SemverSchema = z.string()\r\n .regex(/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/, \"Version must follow semver: x.y.z or x.y.z-prerelease\")\r\n\r\n/** Full plugin manifest dengan validasi nama dan versi */\r\nexport const FullPluginManifestSchema = PluginManifestSchema.extend({\r\n name: PluginNameSchema,\r\n version: SemverSchema.optional(),\r\n description: z.string().max(200).optional(),\r\n keywords: z.array(z.string()).max(10).optional(),\r\n})\r\n\r\nexport type FullPluginManifest = z.infer<typeof FullPluginManifestSchema>\r\n\r\n/** Validate full plugin manifest */\r\nexport const parseFullPluginManifest = (plugin: unknown): FullPluginManifest =>\r\n parseWithSchema(FullPluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\n/** Validate plugin name only */\r\nexport const validatePluginName = (name: unknown): string =>\r\n parseWithSchema(PluginNameSchema, name, \"plugin name is invalid\")\r\n\r\n/** Zod validation for plugin registration payload */\r\nexport const PluginRegistrationPayloadSchema = z.object({\r\n plugin: FullPluginManifestSchema,\r\n config: z.record(z.string(), z.unknown()).optional(),\r\n priority: z.number().int().min(0).max(100).optional(),\r\n})\r\n\r\nexport type PluginRegistrationPayload = z.infer<typeof PluginRegistrationPayloadSchema>\r\n\r\nexport const parsePluginRegistrationPayload = (payload: unknown): PluginRegistrationPayload =>\r\n parseWithSchema(PluginRegistrationPayloadSchema, payload, \"plugin registration payload is invalid\")\r\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\"\r\n\r\nimport { createGlobalPluginContext, parseTwPluginOptions } from \"@tailwind-styled/plugin-api\"\r\nimport type { LoadResult, PartialResolvedId, PluginContext, TransformResult } from \"rollup\"\r\n\r\nexport * from \"@tailwind-styled/plugin-api\"\r\n\r\nexport interface TwVitePlugin extends TwContext {\r\n resolveId(\r\n this: PluginContext,\r\n source: string,\r\n importer: string\r\n ): Promise<PartialResolvedId | null>\r\n load(this: PluginContext, id: string): Promise<LoadResult | null>\r\n transform(this: PluginContext, code: string, id: string): Promise<TransformResult | null>\r\n}\r\n\r\nexport function createTwPlugin(options: TwPluginOptions = {}): TwVitePlugin {\r\n parseTwPluginOptions(options)\r\n\r\n const ctx = createGlobalPluginContext(options as Record<string, unknown>)\r\n\r\n return {\r\n ...ctx,\r\n async resolveId(source, importer) {\r\n if (!source.startsWith(\"tw.\") && !source.startsWith(\"tw:\")) return null\r\n const importPath = source.replace(/^tw[.:]/, \"\")\r\n const resolved = await this.resolve(importPath, importer, { skipSelf: true })\r\n if (resolved) return { id: resolved.id }\r\n return null\r\n },\r\n async load(_id) {\r\n return null\r\n },\r\n async transform(_code, _id) {\r\n return null\r\n },\r\n }\r\n}"]}
|
package/dist/plugin.mjs
CHANGED
|
@@ -71,7 +71,8 @@ function readToken(engine, name) {
|
|
|
71
71
|
}
|
|
72
72
|
var transformRegistry = {
|
|
73
73
|
transforms: [],
|
|
74
|
-
tokens: {}
|
|
74
|
+
tokens: {},
|
|
75
|
+
variants: /* @__PURE__ */ new Map()
|
|
75
76
|
};
|
|
76
77
|
var normalizeTokenName = (name) => name.replace(/[^a-zA-Z0-9-]/g, "-").toLowerCase();
|
|
77
78
|
function getGlobalRegistry() {
|
|
@@ -99,6 +100,7 @@ function createPluginRegistry() {
|
|
|
99
100
|
var legacyState = { globalRegistry: createPluginRegistry() };
|
|
100
101
|
function resetGlobalRegistry() {
|
|
101
102
|
transformRegistry.transforms.length = 0;
|
|
103
|
+
transformRegistry.variants.clear();
|
|
102
104
|
for (const key of Object.keys(transformRegistry.tokens)) {
|
|
103
105
|
delete transformRegistry.tokens[key];
|
|
104
106
|
}
|
|
@@ -110,6 +112,9 @@ function createPluginContext(registry, config = {}) {
|
|
|
110
112
|
config,
|
|
111
113
|
addVariant(name, resolver) {
|
|
112
114
|
registry.variants.set(name, resolver);
|
|
115
|
+
if (isLegacyRegistry) {
|
|
116
|
+
transformRegistry.variants.set(name, resolver);
|
|
117
|
+
}
|
|
113
118
|
},
|
|
114
119
|
addUtility(name, styles) {
|
|
115
120
|
registry.utilities.set(name, styles);
|
|
@@ -141,7 +146,10 @@ function createPluginContext(registry, config = {}) {
|
|
|
141
146
|
registry.buildHooks.push(hook);
|
|
142
147
|
},
|
|
143
148
|
getToken(name) {
|
|
144
|
-
|
|
149
|
+
const normalized = normalizeTokenName(name);
|
|
150
|
+
const local = registry.tokens.get(normalized);
|
|
151
|
+
if (local !== void 0) return local;
|
|
152
|
+
return readToken(resolveTokenEngine(), normalized);
|
|
145
153
|
},
|
|
146
154
|
subscribeTokens(callback) {
|
|
147
155
|
const engine = resolveTokenEngine();
|
|
@@ -176,6 +184,9 @@ function createTw(config = {}) {
|
|
|
176
184
|
}
|
|
177
185
|
return result;
|
|
178
186
|
}
|
|
187
|
+
function createGlobalPluginContext(config = {}) {
|
|
188
|
+
return createPluginContext(legacyState.globalRegistry, config);
|
|
189
|
+
}
|
|
179
190
|
function use(plugin) {
|
|
180
191
|
const ctx = createPluginContext(legacyState.globalRegistry);
|
|
181
192
|
parsePluginManifest(plugin).setup(ctx);
|
|
@@ -214,7 +225,9 @@ function presetScrollbar() {
|
|
|
214
225
|
// packages/domain/plugin/src/index.ts
|
|
215
226
|
function createTwPlugin(options = {}) {
|
|
216
227
|
parseTwPluginOptions(options);
|
|
228
|
+
const ctx = createGlobalPluginContext(options);
|
|
217
229
|
return {
|
|
230
|
+
...ctx,
|
|
218
231
|
async resolveId(source, importer) {
|
|
219
232
|
if (!source.startsWith("tw.") && !source.startsWith("tw:")) return null;
|
|
220
233
|
const importPath = source.replace(/^tw[.:]/, "");
|
|
@@ -227,23 +240,10 @@ function createTwPlugin(options = {}) {
|
|
|
227
240
|
},
|
|
228
241
|
async transform(_code, _id) {
|
|
229
242
|
return null;
|
|
230
|
-
},
|
|
231
|
-
getToken(name) {
|
|
232
|
-
const engine = resolveTokenEngine();
|
|
233
|
-
return readToken(engine, name);
|
|
234
|
-
},
|
|
235
|
-
subscribeTokens(callback) {
|
|
236
|
-
const engine = resolveTokenEngine();
|
|
237
|
-
if (!engine) return () => {
|
|
238
|
-
};
|
|
239
|
-
if (typeof engine.subscribeTokens === "function") return engine.subscribeTokens(callback);
|
|
240
|
-
if (typeof engine.subscribe === "function") return engine.subscribe(callback);
|
|
241
|
-
return () => {
|
|
242
|
-
};
|
|
243
243
|
}
|
|
244
244
|
};
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
export { PluginManifestSchema, TokenRegistrationSchema, TransformRegistrationSchema, TwPluginOptionsSchema, createPluginContext, createPluginRegistry, createTw, createTwPlugin, getGlobalRegistry, parsePluginManifest, parseTokenRegistration, parseTwPluginOptions, presetScrollbar, presetTokens, presetVariants, readToken, registerToken, registerTransform, resetGlobalRegistry, resolveTokenEngine, use };
|
|
247
|
+
export { PluginManifestSchema, TokenRegistrationSchema, TransformRegistrationSchema, TwPluginOptionsSchema, createGlobalPluginContext, createPluginContext, createPluginRegistry, createTw, createTwPlugin, getGlobalRegistry, parsePluginManifest, parseTokenRegistration, parseTwPluginOptions, presetScrollbar, presetTokens, presetVariants, readToken, registerToken, registerTransform, resetGlobalRegistry, resolveTokenEngine, use };
|
|
248
248
|
//# sourceMappingURL=plugin.mjs.map
|
|
249
249
|
//# sourceMappingURL=plugin.mjs.map
|
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\"\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const p = issue.path.length > 0 ? issue.path.join(\".\") : \"<root>\"\r\n return `${p}: ${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 throw new TypeError(`${label}: ${formatIssues(parsed.error)}`)\r\n}\r\n\r\nexport const DesignTokensSchema: z.ZodType<\r\n Record<string, string | number | Record<string, unknown>>\r\n> = z.record(z.string(), z.union([z.string(), z.number(), z.lazy(() => DesignTokensSchema)]))\r\n\r\nexport const TwClassResultSchema = z.object({\r\n css: z.string(),\r\n classes: z.array(z.string()),\r\n})\r\n\r\nexport const TwPluginOptionsSchema = z.object({\r\n classProcessor: z\r\n .function({ input: [z.array(z.string())], output: TwClassResultSchema })\r\n .optional(),\r\n tokens: DesignTokensSchema.optional(),\r\n debug: z.boolean().optional(),\r\n minify: z.boolean().optional(),\r\n})\r\n\r\nexport type TwPluginOptionsInput = z.infer<typeof TwPluginOptionsSchema>\r\n\r\nexport const PluginManifestSchema = z.object({\r\n name: z.string().min(1),\r\n setup: z.function({ input: [z.unknown()], output: z.unknown() }),\r\n})\r\n\r\nexport type PluginManifestInput = z.infer<typeof PluginManifestSchema>\r\n\r\nexport const TransformRegistrationSchema = z.function({ input: [z.unknown()], output: z.unknown() })\r\n\r\nexport const TokenRegistrationSchema = z.object({\r\n name: z.string().min(1),\r\n value: z.string(),\r\n})\r\n\r\nexport type TokenRegistrationInput = z.infer<typeof TokenRegistrationSchema>\r\n\r\nexport const parseTwPluginOptions = (options: unknown) =>\r\n parseWithSchema(TwPluginOptionsSchema, options ?? {}, \"plugin options are invalid\")\r\n\r\nexport const parsePluginManifest = (plugin: unknown) =>\r\n parseWithSchema(PluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\nexport const parseTokenRegistration = (data: unknown) =>\r\n parseWithSchema(TokenRegistrationSchema, data, \"token registration is invalid\")\r\n\r\n// ── Enhanced plugin validation (dari monorepo checklist) ────────────────────\r\n\r\n/** Nama plugin harus mengikuti format npm package */\r\nexport const PluginNameSchema = z.string()\r\n .min(1, \"Plugin name cannot be empty\")\r\n .regex(\r\n /^(@[a-z0-9-]+\\/)?[a-z0-9][a-z0-9-]*[a-z0-9]$/,\r\n \"Plugin name must follow npm naming: lowercase, hyphens allowed, no leading/trailing hyphens\"\r\n )\r\n\r\n/** Versi semantic versioning */\r\nexport const SemverSchema = z.string()\r\n .regex(/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/, \"Version must follow semver: x.y.z or x.y.z-prerelease\")\r\n\r\n/** Full plugin manifest dengan validasi nama dan versi */\r\nexport const FullPluginManifestSchema = PluginManifestSchema.extend({\r\n name: PluginNameSchema,\r\n version: SemverSchema.optional(),\r\n description: z.string().max(200).optional(),\r\n keywords: z.array(z.string()).max(10).optional(),\r\n})\r\n\r\nexport type FullPluginManifest = z.infer<typeof FullPluginManifestSchema>\r\n\r\n/** Validate full plugin manifest */\r\nexport const parseFullPluginManifest = (plugin: unknown): FullPluginManifest =>\r\n parseWithSchema(FullPluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\n/** Validate plugin name only */\r\nexport const validatePluginName = (name: unknown): string =>\r\n parseWithSchema(PluginNameSchema, name, \"plugin name is invalid\")\r\n\r\n/** Zod validation for plugin registration payload */\r\nexport const PluginRegistrationPayloadSchema = z.object({\r\n plugin: FullPluginManifestSchema,\r\n config: z.record(z.string(), z.unknown()).optional(),\r\n priority: z.number().int().min(0).max(100).optional(),\r\n})\r\n\r\nexport type PluginRegistrationPayload = z.infer<typeof PluginRegistrationPayloadSchema>\r\n\r\nexport const parsePluginRegistrationPayload = (payload: unknown): PluginRegistrationPayload =>\r\n parseWithSchema(PluginRegistrationPayloadSchema, payload, \"plugin registration payload is invalid\")\r\n","import { parsePluginManifest, parseTokenRegistration, TransformRegistrationSchema } from \"./schemas\"\r\nimport type { CompoundCondition, TokenMap } from \"@tailwind-styled/shared\"\r\n\r\nexport interface TwClassResult {\r\n css: string\r\n classes: string[]\r\n}\r\n\r\nexport interface DesignTokens {\r\n [key: string]: string | number | DesignTokens\r\n}\r\n\r\nexport interface TwPluginOptions {\r\n classProcessor?: (classes: string[]) => TwClassResult\r\n tokens?: DesignTokens\r\n debug?: boolean\r\n minify?: boolean\r\n}\r\n\r\nexport type VariantResolver = (selector: string) => string\r\n\r\nexport interface UtilityDefinition {\r\n [property: string]: string\r\n}\r\n\r\nexport type { CompoundCondition, TokenMap }\r\n\r\nexport interface ComponentConfig {\r\n base: string\r\n variants: Record<string, Record<string, string>>\r\n compoundVariants: Array<{ class: string } & CompoundCondition>\r\n defaultVariants: Record<string, string>\r\n}\r\n\r\nexport interface TransformMeta {\r\n componentName: string\r\n tag: string\r\n}\r\n\r\nexport type TransformFn = (config: ComponentConfig, meta: TransformMeta) => ComponentConfig\r\n\r\nexport type CssHook = (css: string) => string\r\n\r\nexport interface TwContext {\r\n addVariant(name: string, resolver: VariantResolver): void\r\n addUtility(name: string, styles: UtilityDefinition): void\r\n addToken(name: string, value: string): void\r\n addTransform(fn: TransformFn): void\r\n onGenerateCSS(hook: CssHook): void\r\n onBuildEnd(hook: () => void | Promise<void>): void\r\n getToken(name: string): string | undefined\r\n subscribeTokens(callback: (tokens: TokenMap) => void): () => void\r\n readonly config: Record<string, unknown>\r\n}\r\n\r\nexport interface TwPlugin {\r\n name: string\r\n setup(ctx: TwContext): void\r\n}\r\n\r\nexport interface PluginRegistry {\r\n variants: Map<string, VariantResolver>\r\n utilities: Map<string, UtilityDefinition>\r\n tokens: Map<string, string>\r\n transforms: TransformFn[]\r\n cssHooks: CssHook[]\r\n buildHooks: Array<() => void | Promise<void>>\r\n plugins: Set<string>\r\n}\r\n\r\nexport interface TokenEngineAPI {\r\n getToken?: (name: string) => string | undefined\r\n getTokens?: () => Record<string, string> | undefined\r\n subscribeTokens?: (callback: (tokens: Record<string, string>) => void) => () => void\r\n subscribe?: (callback: (tokens: Record<string, string>) => void) => () => void\r\n}\r\n\r\nconst TOKEN_ENGINE_KEY = \"__TW_TOKEN_ENGINE__\"\r\n\r\nexport function resolveTokenEngine(): TokenEngineAPI | undefined {\r\n const engine = (globalThis as Record<string, unknown>)[TOKEN_ENGINE_KEY]\r\n if (engine && typeof engine === \"object\") {\r\n return engine as TokenEngineAPI\r\n }\r\n return undefined\r\n}\r\n\r\nexport function readToken(engine: TokenEngineAPI | undefined, name: string): string | undefined {\r\n if (!engine) return undefined\r\n if (typeof engine.getToken === \"function\") return engine.getToken(name)\r\n if (typeof engine.getTokens === \"function\") {\r\n const tokens = engine.getTokens()\r\n return tokens?.[name]\r\n }\r\n return undefined\r\n}\r\n\r\nexport interface TransformContext {\r\n filename?: string\r\n componentName?: string\r\n tag?: string\r\n}\r\n\r\nexport interface TwGlobalRegistry {\r\n transforms: Array<(config: ComponentConfig, ctx: TransformContext) => ComponentConfig>\r\n tokens: Record<string, string>\r\n}\r\n\r\nconst transformRegistry: TwGlobalRegistry = {\r\n transforms: [],\r\n tokens: {},\r\n}\r\n\r\nconst normalizeTokenName = (name: string): string =>\r\n name.replace(/[^a-zA-Z0-9-]/g, \"-\").toLowerCase()\r\n\r\nexport function getGlobalRegistry(): TwGlobalRegistry {\r\n return transformRegistry\r\n}\r\n\r\nexport function registerTransform(\r\n transform: (config: ComponentConfig, ctx: TransformContext) => ComponentConfig\r\n): void {\r\n TransformRegistrationSchema.parse(transform)\r\n transformRegistry.transforms.push(transform)\r\n}\r\n\r\nexport function registerToken(name: string, value: string): void {\r\n const parsed = parseTokenRegistration({ name, value })\r\n transformRegistry.tokens[parsed.name] = parsed.value\r\n}\r\n\r\nexport function createPluginRegistry(): PluginRegistry {\r\n return {\r\n variants: new Map(),\r\n utilities: new Map(),\r\n tokens: new Map(),\r\n transforms: [],\r\n cssHooks: [],\r\n buildHooks: [],\r\n plugins: new Set(),\r\n }\r\n}\r\n\r\nconst legacyState = { globalRegistry: createPluginRegistry() }\r\n\r\nexport function resetGlobalRegistry(): void {\r\n transformRegistry.transforms.length = 0\r\n for (const key of Object.keys(transformRegistry.tokens)) {\r\n delete transformRegistry.tokens[key]\r\n }\r\n legacyState.globalRegistry = createPluginRegistry()\r\n}\r\n\r\nexport function createPluginContext(\r\n registry: PluginRegistry,\r\n config: Record<string, unknown> = {}\r\n): TwContext {\r\n const isLegacyRegistry = registry === legacyState.globalRegistry\r\n\r\n return {\r\n config,\r\n addVariant(name, resolver) {\r\n registry.variants.set(name, resolver)\r\n },\r\n addUtility(name, styles) {\r\n registry.utilities.set(name, styles)\r\n },\r\n addToken(name, value) {\r\n const parsed = parseTokenRegistration({ name, value })\r\n const normalized = normalizeTokenName(parsed.name)\r\n registry.tokens.set(normalized, parsed.value)\r\n if (isLegacyRegistry) {\r\n transformRegistry.tokens[normalized] = parsed.value\r\n }\r\n },\r\n addTransform(fn) {\r\n TransformRegistrationSchema.parse(fn)\r\n registry.transforms.push(fn)\r\n if (isLegacyRegistry) {\r\n transformRegistry.transforms.push((config, ctx) =>\r\n fn(config, {\r\n componentName: ctx.componentName ?? \"\",\r\n tag: ctx.tag ?? \"\",\r\n })\r\n )\r\n }\r\n },\r\n onGenerateCSS(hook) {\r\n registry.cssHooks.push(hook)\r\n },\r\n onBuildEnd(hook) {\r\n registry.buildHooks.push(hook)\r\n },\r\n getToken(name) {\r\n return readToken(resolveTokenEngine(), name)\r\n },\r\n subscribeTokens(callback) {\r\n const engine = resolveTokenEngine()\r\n if (!engine) return () => {}\r\n if (typeof engine.subscribeTokens === \"function\") return engine.subscribeTokens(callback)\r\n if (typeof engine.subscribe === \"function\") return engine.subscribe(callback)\r\n return () => {}\r\n },\r\n }\r\n}\r\n\r\nexport function createTw(config: Record<string, unknown> = {}): TwContext & {\r\n registry: {\r\n plugins: Set<string>\r\n variants: Map<string, VariantResolver>\r\n utilities: Map<string, UtilityDefinition>\r\n tokens: Map<string, string>\r\n }\r\n use: (plugin: TwPlugin) => void\r\n} {\r\n const registry = createPluginRegistry()\r\n const ctx = createPluginContext(registry, config)\r\n\r\n const result = ctx as TwContext & {\r\n registry: {\r\n plugins: Set<string>\r\n variants: Map<string, VariantResolver>\r\n utilities: Map<string, UtilityDefinition>\r\n tokens: Map<string, string>\r\n }\r\n use: (plugin: TwPlugin) => void\r\n }\r\n\r\n result.registry = {\r\n plugins: registry.plugins,\r\n variants: registry.variants,\r\n utilities: registry.utilities,\r\n tokens: registry.tokens,\r\n }\r\n\r\n result.use = (plugin: TwPlugin) => {\r\n const manifest = parsePluginManifest(plugin)\r\n manifest.setup(ctx)\r\n registry.plugins.add(manifest.name)\r\n }\r\n\r\n if (config.plugins && Array.isArray(config.plugins)) {\r\n for (const plugin of config.plugins) {\r\n result.use(parsePluginManifest(plugin))\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport function use(plugin: TwPlugin): void {\r\n const ctx = createPluginContext(legacyState.globalRegistry)\r\n parsePluginManifest(plugin).setup(ctx)\r\n}\r\n\r\nexport function presetTokens(tokens: Record<string, string>): TwPlugin {\r\n return {\r\n name: \"preset-tokens\",\r\n setup(ctx) {\r\n for (const [name, value] of Object.entries(tokens)) {\r\n ctx.addToken(name, value)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function presetVariants(variants: Record<string, VariantResolver>): TwPlugin {\r\n return {\r\n name: \"preset-variants\",\r\n setup(ctx) {\r\n for (const [name, resolver] of Object.entries(variants)) {\r\n ctx.addVariant(name, resolver)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function presetScrollbar(): TwPlugin {\r\n return {\r\n name: \"preset-scrollbar\",\r\n setup(ctx) {\r\n ctx.addVariant(\"scrollbar-thin\", () => \"::-webkit-scrollbar{width:8px;height:8px}\")\r\n ctx.addVariant(\"scrollbar-none\", () => \"::-webkit-scrollbar{display:none}\")\r\n ctx.addUtility(\"scrollbar-hide\", { \"-ms-overflow-style\": \"none\", \"scrollbar-width\": \"none\" })\r\n },\r\n }\r\n}\r\n\r\n// Re-export schemas\r\nexport {\r\n type PluginManifestInput,\r\n PluginManifestSchema,\r\n parsePluginManifest,\r\n parseTokenRegistration,\r\n parseTwPluginOptions,\r\n type TokenRegistrationInput,\r\n TokenRegistrationSchema,\r\n TransformRegistrationSchema,\r\n type TwPluginOptionsInput,\r\n TwPluginOptionsSchema,\r\n} from \"./schemas\"\r\n","import type { TwPluginOptions } from \"@tailwind-styled/plugin-api\"\r\n\r\nimport { parseTwPluginOptions, readToken, resolveTokenEngine } from \"@tailwind-styled/plugin-api\"\r\nimport type { LoadResult, PartialResolvedId, PluginContext, TransformResult } from \"rollup\"\r\n\r\nexport * from \"@tailwind-styled/plugin-api\"\r\n\r\nexport interface TwVitePlugin {\r\n resolveId(\r\n this: PluginContext,\r\n source: string,\r\n importer: string\r\n ): Promise<PartialResolvedId | null>\r\n load(this: PluginContext, id: string): Promise<LoadResult | null>\r\n transform(this: PluginContext, code: string, id: string): Promise<TransformResult | null>\r\n getToken(name: string): string | undefined\r\n subscribeTokens(callback: (tokens: Record<string, string>) => void): () => void\r\n}\r\n\r\nexport function createTwPlugin(options: TwPluginOptions = {}): TwVitePlugin {\r\n parseTwPluginOptions(options)\r\n\r\n return {\r\n async resolveId(source, importer) {\r\n if (!source.startsWith(\"tw.\") && !source.startsWith(\"tw:\")) return null\r\n const importPath = source.replace(/^tw[.:]/, \"\")\r\n const resolved = await this.resolve(importPath, importer, { skipSelf: true })\r\n if (resolved) return { id: resolved.id }\r\n return null\r\n },\r\n async load(_id) {\r\n return null\r\n },\r\n async transform(_code, _id) {\r\n return null\r\n },\r\n getToken(name) {\r\n const engine = resolveTokenEngine()\r\n return readToken(engine, name)\r\n },\r\n subscribeTokens(callback) {\r\n const engine = resolveTokenEngine()\r\n if (!engine) return () => {}\r\n if (typeof engine.subscribeTokens === \"function\") return engine.subscribeTokens(callback)\r\n if (typeof engine.subscribe === \"function\") return engine.subscribe(callback)\r\n return () => {}\r\n },\r\n }\r\n}\r\n"]}
|
|
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\"\r\n\r\nconst formatIssues = (error: z.ZodError): string =>\r\n error.issues\r\n .map((issue) => {\r\n const p = issue.path.length > 0 ? issue.path.join(\".\") : \"<root>\"\r\n return `${p}: ${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 throw new TypeError(`${label}: ${formatIssues(parsed.error)}`)\r\n}\r\n\r\nexport const DesignTokensSchema: z.ZodType<\r\n Record<string, string | number | Record<string, unknown>>\r\n> = z.record(z.string(), z.union([z.string(), z.number(), z.lazy(() => DesignTokensSchema)]))\r\n\r\nexport const TwClassResultSchema = z.object({\r\n css: z.string(),\r\n classes: z.array(z.string()),\r\n})\r\n\r\nexport const TwPluginOptionsSchema = z.object({\r\n classProcessor: z\r\n .function({ input: [z.array(z.string())], output: TwClassResultSchema })\r\n .optional(),\r\n tokens: DesignTokensSchema.optional(),\r\n debug: z.boolean().optional(),\r\n minify: z.boolean().optional(),\r\n})\r\n\r\nexport type TwPluginOptionsInput = z.infer<typeof TwPluginOptionsSchema>\r\n\r\nexport const PluginManifestSchema = z.object({\r\n name: z.string().min(1),\r\n setup: z.function({ input: [z.unknown()], output: z.unknown() }),\r\n})\r\n\r\nexport type PluginManifestInput = z.infer<typeof PluginManifestSchema>\r\n\r\nexport const TransformRegistrationSchema = z.function({ input: [z.unknown()], output: z.unknown() })\r\n\r\nexport const TokenRegistrationSchema = z.object({\r\n name: z.string().min(1),\r\n value: z.string(),\r\n})\r\n\r\nexport type TokenRegistrationInput = z.infer<typeof TokenRegistrationSchema>\r\n\r\nexport const parseTwPluginOptions = (options: unknown) =>\r\n parseWithSchema(TwPluginOptionsSchema, options ?? {}, \"plugin options are invalid\")\r\n\r\nexport const parsePluginManifest = (plugin: unknown) =>\r\n parseWithSchema(PluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\nexport const parseTokenRegistration = (data: unknown) =>\r\n parseWithSchema(TokenRegistrationSchema, data, \"token registration is invalid\")\r\n\r\n// ── Enhanced plugin validation (dari monorepo checklist) ────────────────────\r\n\r\n/** Nama plugin harus mengikuti format npm package */\r\nexport const PluginNameSchema = z.string()\r\n .min(1, \"Plugin name cannot be empty\")\r\n .regex(\r\n /^(@[a-z0-9-]+\\/)?[a-z0-9][a-z0-9-]*[a-z0-9]$/,\r\n \"Plugin name must follow npm naming: lowercase, hyphens allowed, no leading/trailing hyphens\"\r\n )\r\n\r\n/** Versi semantic versioning */\r\nexport const SemverSchema = z.string()\r\n .regex(/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/, \"Version must follow semver: x.y.z or x.y.z-prerelease\")\r\n\r\n/** Full plugin manifest dengan validasi nama dan versi */\r\nexport const FullPluginManifestSchema = PluginManifestSchema.extend({\r\n name: PluginNameSchema,\r\n version: SemverSchema.optional(),\r\n description: z.string().max(200).optional(),\r\n keywords: z.array(z.string()).max(10).optional(),\r\n})\r\n\r\nexport type FullPluginManifest = z.infer<typeof FullPluginManifestSchema>\r\n\r\n/** Validate full plugin manifest */\r\nexport const parseFullPluginManifest = (plugin: unknown): FullPluginManifest =>\r\n parseWithSchema(FullPluginManifestSchema, plugin, \"plugin manifest is invalid\")\r\n\r\n/** Validate plugin name only */\r\nexport const validatePluginName = (name: unknown): string =>\r\n parseWithSchema(PluginNameSchema, name, \"plugin name is invalid\")\r\n\r\n/** Zod validation for plugin registration payload */\r\nexport const PluginRegistrationPayloadSchema = z.object({\r\n plugin: FullPluginManifestSchema,\r\n config: z.record(z.string(), z.unknown()).optional(),\r\n priority: z.number().int().min(0).max(100).optional(),\r\n})\r\n\r\nexport type PluginRegistrationPayload = z.infer<typeof PluginRegistrationPayloadSchema>\r\n\r\nexport const parsePluginRegistrationPayload = (payload: unknown): PluginRegistrationPayload =>\r\n parseWithSchema(PluginRegistrationPayloadSchema, payload, \"plugin registration payload is invalid\")\r\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\"\r\n\r\nimport { createGlobalPluginContext, parseTwPluginOptions } from \"@tailwind-styled/plugin-api\"\r\nimport type { LoadResult, PartialResolvedId, PluginContext, TransformResult } from \"rollup\"\r\n\r\nexport * from \"@tailwind-styled/plugin-api\"\r\n\r\nexport interface TwVitePlugin extends TwContext {\r\n resolveId(\r\n this: PluginContext,\r\n source: string,\r\n importer: string\r\n ): Promise<PartialResolvedId | null>\r\n load(this: PluginContext, id: string): Promise<LoadResult | null>\r\n transform(this: PluginContext, code: string, id: string): Promise<TransformResult | null>\r\n}\r\n\r\nexport function createTwPlugin(options: TwPluginOptions = {}): TwVitePlugin {\r\n parseTwPluginOptions(options)\r\n\r\n const ctx = createGlobalPluginContext(options as Record<string, unknown>)\r\n\r\n return {\r\n ...ctx,\r\n async resolveId(source, importer) {\r\n if (!source.startsWith(\"tw.\") && !source.startsWith(\"tw:\")) return null\r\n const importPath = source.replace(/^tw[.:]/, \"\")\r\n const resolved = await this.resolve(importPath, importer, { skipSelf: true })\r\n if (resolved) return { id: resolved.id }\r\n return null\r\n },\r\n async load(_id) {\r\n return null\r\n },\r\n async transform(_code, _id) {\r\n return null\r\n },\r\n }\r\n}"]}
|
package/dist/rspack.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var fs2 = require('fs');
|
|
4
|
+
var path2 = require('path');
|
|
5
|
+
require('crypto');
|
|
6
|
+
require('url');
|
|
7
|
+
var module$1 = require('module');
|
|
5
8
|
var zod = require('zod');
|
|
6
9
|
|
|
7
10
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
8
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
12
|
|
|
10
|
-
var
|
|
11
|
-
var
|
|
13
|
+
var fs2__default = /*#__PURE__*/_interopDefault(fs2);
|
|
14
|
+
var path2__default = /*#__PURE__*/_interopDefault(path2);
|
|
12
15
|
|
|
13
16
|
/* tailwind-styled-v4 v5.0.4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
14
17
|
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
@@ -57,23 +60,9 @@ function getDirname(importMetaUrl) {
|
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
// packages/domain/shared/src/index.ts
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (isBrowser2) return null;
|
|
64
|
-
if (nodeModuleRef2 !== null) return nodeModuleRef2;
|
|
65
|
-
try {
|
|
66
|
-
const test = typeof __require === "function" ? __require("module") : null;
|
|
67
|
-
nodeModuleRef2 = test;
|
|
68
|
-
return test;
|
|
69
|
-
} catch {
|
|
70
|
-
nodeModuleRef2 = null;
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
function formatIssuePath(path2) {
|
|
75
|
-
if (!path2 || path2.length === 0) return "(root)";
|
|
76
|
-
return path2.map(
|
|
63
|
+
function formatIssuePath(path3) {
|
|
64
|
+
if (!path3 || path3.length === 0) return "(root)";
|
|
65
|
+
return path3.map(
|
|
77
66
|
(segment) => typeof segment === "symbol" ? segment.description ?? segment.toString() : String(segment)
|
|
78
67
|
).join(".");
|
|
79
68
|
}
|
|
@@ -110,8 +99,8 @@ var TwError = class _TwError extends Error {
|
|
|
110
99
|
/** Buat TwError dari ZodError — dukung shape Zod v3 (`errors`) dan v4 (`issues`). */
|
|
111
100
|
static fromZod(err) {
|
|
112
101
|
const first = err.issues?.[0] ?? err.errors?.[0];
|
|
113
|
-
const
|
|
114
|
-
const message = first ? `${
|
|
102
|
+
const path3 = formatIssuePath(first?.path);
|
|
103
|
+
const message = first ? `${path3}: ${first.message}` : "Schema validation failed";
|
|
115
104
|
return new _TwError("validation", "SCHEMA_VALIDATION_FAILED", message, err);
|
|
116
105
|
}
|
|
117
106
|
static wrap(source, code, err) {
|
|
@@ -129,18 +118,8 @@ var TwError = class _TwError extends Error {
|
|
|
129
118
|
return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`;
|
|
130
119
|
}
|
|
131
120
|
};
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
throw new Error("require not available in browser");
|
|
135
|
-
});
|
|
136
|
-
const nodeRequire = getNodeModuleRef2();
|
|
137
|
-
if (!nodeRequire) return (() => {
|
|
138
|
-
throw new Error("require not available");
|
|
139
|
-
});
|
|
140
|
-
return nodeRequire.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('rspack.js', document.baseURI).href)));
|
|
141
|
-
}
|
|
142
|
-
getRequire();
|
|
143
|
-
var formatIssuePath2 = (path2) => path2.length > 0 ? path2.map(
|
|
121
|
+
module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('rspack.js', document.baseURI).href)));
|
|
122
|
+
var formatIssuePath2 = (path3) => path3.length > 0 ? path3.map(
|
|
144
123
|
(segment) => typeof segment === "symbol" ? segment.description ?? segment.toString() : String(segment)
|
|
145
124
|
).join(".") : "<root>";
|
|
146
125
|
var formatIssues = (error) => error.issues.map((issue) => {
|
|
@@ -181,10 +160,10 @@ function resolveLoaderPath(basename) {
|
|
|
181
160
|
const runtimeDir = getDirname2();
|
|
182
161
|
const preferredExtensions = typeof __dirname !== "undefined" && __dirname.length > 0 ? [".cjs", ".js"] : [".js", ".cjs"];
|
|
183
162
|
for (const ext of preferredExtensions) {
|
|
184
|
-
const candidate =
|
|
185
|
-
if (
|
|
163
|
+
const candidate = path2__default.default.resolve(runtimeDir, `${basename}${ext}`);
|
|
164
|
+
if (fs2__default.default.existsSync(candidate)) return candidate;
|
|
186
165
|
}
|
|
187
|
-
return
|
|
166
|
+
return path2__default.default.resolve(runtimeDir, `${basename}.js`);
|
|
188
167
|
}
|
|
189
168
|
var TailwindStyledRspackPlugin = class {
|
|
190
169
|
opts;
|