tailwind-styled-v4 5.0.0 → 5.0.1
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 +398 -0
- package/LICENSE +21 -0
- package/README.md +532 -0
- package/dist/analyzer.d.mts +114 -0
- package/dist/analyzer.d.ts +114 -0
- package/dist/analyzer.js +1555 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/analyzer.mjs +1544 -0
- package/dist/analyzer.mjs.map +1 -0
- package/dist/{animate.d.cts → animate.d.mts} +3 -30
- package/dist/animate.d.ts +3 -30
- package/dist/animate.js +149 -99
- package/dist/animate.js.map +1 -1
- package/dist/{animate.cjs → animate.mjs} +130 -119
- package/dist/animate.mjs.map +1 -0
- package/dist/atomic.d.mts +18 -0
- package/dist/atomic.d.ts +18 -0
- package/dist/atomic.js +191 -0
- package/dist/atomic.js.map +1 -0
- package/dist/atomic.mjs +185 -0
- package/dist/atomic.mjs.map +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +6063 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +6053 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/compiler.d.mts +1009 -0
- package/dist/compiler.d.ts +1009 -0
- package/dist/compiler.js +4518 -0
- package/dist/compiler.js.map +1 -0
- package/dist/compiler.mjs +4443 -0
- package/dist/compiler.mjs.map +1 -0
- package/dist/dashboard.d.mts +272 -0
- package/dist/dashboard.d.ts +272 -0
- package/dist/dashboard.js +249 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/dashboard.mjs +239 -0
- package/dist/dashboard.mjs.map +1 -0
- package/dist/devtools.js +170 -157
- package/dist/devtools.js.map +1 -1
- package/dist/{devtools.cjs → devtools.mjs} +165 -166
- package/dist/devtools.mjs.map +1 -0
- package/dist/engine.d.mts +84 -0
- package/dist/engine.d.ts +84 -0
- package/dist/engine.js +3014 -0
- package/dist/engine.js.map +1 -0
- package/dist/engine.mjs +3005 -0
- package/dist/engine.mjs.map +1 -0
- package/dist/{index.d.cts → index.d.mts} +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +945 -36
- package/dist/index.js.map +1 -1
- package/dist/{index.cjs → index.mjs} +899 -90
- package/dist/index.mjs.map +1 -0
- package/dist/liveTokenEngine-DYN3Zale.d.mts +34 -0
- package/dist/liveTokenEngine-DYN3Zale.d.ts +34 -0
- package/dist/{next.d.cts → next.d.mts} +2 -1
- package/dist/next.d.ts +2 -1
- package/dist/next.js +6853 -35
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +7050 -0
- package/dist/next.mjs.map +1 -0
- package/dist/plugin.d.mts +90 -0
- package/dist/plugin.d.ts +90 -0
- package/dist/plugin.js +185 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +174 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/pluginRegistry.d.mts +83 -0
- package/dist/pluginRegistry.d.ts +83 -0
- package/dist/pluginRegistry.js +303 -0
- package/dist/pluginRegistry.js.map +1 -0
- package/dist/pluginRegistry.mjs +298 -0
- package/dist/pluginRegistry.mjs.map +1 -0
- package/dist/preset.js +9 -4
- package/dist/preset.js.map +1 -1
- package/dist/{preset.cjs → preset.mjs} +5 -14
- package/dist/preset.mjs.map +1 -0
- package/dist/rspack.d.mts +33 -0
- package/dist/rspack.d.ts +33 -0
- package/dist/rspack.js +55 -0
- package/dist/rspack.js.map +1 -0
- package/dist/rspack.mjs +45 -0
- package/dist/rspack.mjs.map +1 -0
- package/dist/runtime.d.mts +62 -0
- package/dist/runtime.d.ts +62 -0
- package/dist/runtime.js +207 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.mjs +188 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/runtimeCss.d.mts +65 -0
- package/dist/runtimeCss.d.ts +65 -0
- package/dist/{css.cjs → runtimeCss.js} +71 -4
- package/dist/runtimeCss.js.map +1 -0
- package/dist/{css.js → runtimeCss.mjs} +66 -5
- package/dist/runtimeCss.mjs.map +1 -0
- package/dist/scanner.d.mts +25 -0
- package/dist/scanner.d.ts +25 -0
- package/dist/scanner.js +717 -0
- package/dist/scanner.js.map +1 -0
- package/dist/scanner.mjs +703 -0
- package/dist/scanner.mjs.map +1 -0
- package/dist/shared.d.mts +85 -0
- package/dist/shared.d.ts +85 -0
- package/dist/shared.js +255 -0
- package/dist/shared.js.map +1 -0
- package/dist/shared.mjs +233 -0
- package/dist/shared.mjs.map +1 -0
- package/dist/storybookAddon.d.mts +108 -0
- package/dist/storybookAddon.d.ts +108 -0
- package/dist/storybookAddon.js +95 -0
- package/dist/storybookAddon.js.map +1 -0
- package/dist/storybookAddon.mjs +88 -0
- package/dist/storybookAddon.mjs.map +1 -0
- package/dist/svelte.d.mts +114 -0
- package/dist/svelte.d.ts +114 -0
- package/dist/svelte.js +67 -0
- package/dist/svelte.js.map +1 -0
- package/dist/svelte.mjs +59 -0
- package/dist/svelte.mjs.map +1 -0
- package/dist/testing.d.mts +185 -0
- package/dist/testing.d.ts +185 -0
- package/dist/testing.js +173 -0
- package/dist/testing.js.map +1 -0
- package/dist/testing.mjs +158 -0
- package/dist/testing.mjs.map +1 -0
- package/dist/theme.d.mts +188 -0
- package/dist/theme.d.ts +188 -0
- package/dist/theme.js +334 -0
- package/dist/theme.js.map +1 -0
- package/dist/theme.mjs +311 -0
- package/dist/theme.mjs.map +1 -0
- package/dist/types-DXr2PmGP.d.mts +31 -0
- package/dist/types-DXr2PmGP.d.ts +31 -0
- package/dist/vite.js +4181 -16
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +4281 -0
- package/dist/vite.mjs.map +1 -0
- package/dist/vue.d.mts +89 -0
- package/dist/vue.d.ts +89 -0
- package/dist/vue.js +104 -0
- package/dist/vue.js.map +1 -0
- package/dist/vue.mjs +96 -0
- package/dist/vue.mjs.map +1 -0
- package/package.json +168 -65
- package/dist/animate.cjs.map +0 -1
- package/dist/chunk-VZEJV27B.js +0 -11
- package/dist/chunk-VZEJV27B.js.map +0 -1
- package/dist/chunk-Y5D3E72P.cjs +0 -13
- package/dist/chunk-Y5D3E72P.cjs.map +0 -1
- package/dist/css.cjs.map +0 -1
- package/dist/css.d.cts +0 -30
- package/dist/css.d.ts +0 -30
- package/dist/css.js.map +0 -1
- package/dist/devtools.cjs.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/next.cjs +0 -248
- package/dist/next.cjs.map +0 -1
- package/dist/preset.cjs.map +0 -1
- package/dist/turbopackLoader.cjs +0 -37
- package/dist/turbopackLoader.cjs.map +0 -1
- package/dist/turbopackLoader.d.cts +0 -12
- package/dist/turbopackLoader.d.ts +0 -12
- package/dist/turbopackLoader.js +0 -35
- package/dist/turbopackLoader.js.map +0 -1
- package/dist/vite.cjs +0 -138
- package/dist/vite.cjs.map +0 -1
- package/dist/webpackLoader.cjs +0 -51
- package/dist/webpackLoader.cjs.map +0 -1
- package/dist/webpackLoader.d.cts +0 -17
- package/dist/webpackLoader.d.ts +0 -17
- package/dist/webpackLoader.js +0 -49
- package/dist/webpackLoader.js.map +0 -1
- /package/dist/{devtools.d.cts → devtools.d.mts} +0 -0
- /package/dist/{preset.d.cts → preset.d.mts} +0 -0
- /package/dist/{vite.d.cts → vite.d.mts} +0 -0
|
@@ -1,86 +1,100 @@
|
|
|
1
|
-
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { createRequire } from 'module';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
2
6
|
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
require('crypto');
|
|
9
|
-
require('@tailwind-styled/scanner');
|
|
10
|
-
|
|
11
|
-
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
12
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
|
|
14
|
-
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
15
|
-
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
7
|
+
/* tailwind-styled-v4 v5.0.1 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
8
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
9
|
+
var __esm = (fn, res) => function __init() {
|
|
10
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
11
|
+
};
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
var LRUCache
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
13
|
+
// packages/shared/src/cache.ts
|
|
14
|
+
var LRUCache;
|
|
15
|
+
var init_cache = __esm({
|
|
16
|
+
"packages/shared/src/cache.ts"() {
|
|
17
|
+
LRUCache = class {
|
|
18
|
+
constructor(max = 256, ttlMs = null) {
|
|
19
|
+
this.map = /* @__PURE__ */ new Map();
|
|
20
|
+
this.max = max;
|
|
21
|
+
this.ttlMs = ttlMs;
|
|
22
|
+
}
|
|
23
|
+
get(key) {
|
|
24
|
+
const entry = this.map.get(key);
|
|
25
|
+
if (!entry) return void 0;
|
|
26
|
+
if (this.ttlMs !== null && Date.now() - entry.ts > this.ttlMs) {
|
|
27
|
+
this.map.delete(key);
|
|
28
|
+
return void 0;
|
|
29
|
+
}
|
|
30
|
+
this.map.delete(key);
|
|
31
|
+
this.map.set(key, entry);
|
|
32
|
+
return entry.value;
|
|
33
|
+
}
|
|
34
|
+
set(key, value) {
|
|
35
|
+
if (this.map.has(key)) this.map.delete(key);
|
|
36
|
+
else if (this.map.size >= this.max) {
|
|
37
|
+
this.map.delete(this.map.keys().next().value);
|
|
38
|
+
}
|
|
39
|
+
this.map.set(key, { value, ts: Date.now() });
|
|
40
|
+
}
|
|
41
|
+
has(key) {
|
|
42
|
+
return this.get(key) !== void 0;
|
|
43
|
+
}
|
|
44
|
+
delete(key) {
|
|
45
|
+
this.map.delete(key);
|
|
46
|
+
}
|
|
47
|
+
clear() {
|
|
48
|
+
this.map.clear();
|
|
49
|
+
}
|
|
50
|
+
get size() {
|
|
51
|
+
return this.map.size;
|
|
52
|
+
}
|
|
53
|
+
keys() {
|
|
54
|
+
return this.map.keys();
|
|
55
|
+
}
|
|
56
|
+
*values() {
|
|
57
|
+
for (const entry of this.map.values()) {
|
|
58
|
+
yield entry.value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
*entries() {
|
|
62
|
+
for (const [key, entry] of this.map.entries()) {
|
|
63
|
+
yield [key, entry.value];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
61
67
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
});
|
|
69
|
+
function getPlatformExtension() {
|
|
70
|
+
const platform = os.platform();
|
|
71
|
+
switch (platform) {
|
|
72
|
+
case "win32":
|
|
73
|
+
return ".node";
|
|
74
|
+
case "darwin":
|
|
75
|
+
return ".dylib";
|
|
76
|
+
case "linux":
|
|
77
|
+
return ".so";
|
|
78
|
+
default:
|
|
79
|
+
return ".node";
|
|
66
80
|
}
|
|
67
|
-
}
|
|
81
|
+
}
|
|
68
82
|
function formatErrorMessage(error) {
|
|
69
83
|
return error instanceof Error ? error.message : String(error);
|
|
70
84
|
}
|
|
71
85
|
function resolveRuntimeDir(dirnameValue, moduleImportUrl) {
|
|
72
86
|
if (typeof dirnameValue === "string" && dirnameValue.length > 0) return dirnameValue;
|
|
73
|
-
return
|
|
87
|
+
return path.dirname(fileURLToPath(moduleImportUrl));
|
|
74
88
|
}
|
|
75
89
|
function resolveNativeBindingCandidates(options) {
|
|
76
90
|
const out = [];
|
|
77
|
-
const envVarNames = options.envVarNames ?? [];
|
|
91
|
+
const envVarNames = options.envVarNames ?? ["TWS_NATIVE_PATH"];
|
|
78
92
|
for (const envVarName of envVarNames) {
|
|
79
93
|
const raw = process.env[envVarName]?.trim();
|
|
80
94
|
if (!raw) continue;
|
|
81
|
-
const resolved =
|
|
95
|
+
const resolved = path.resolve(raw);
|
|
82
96
|
if (options.enforceNodeExtensionForEnvPath) {
|
|
83
|
-
if (
|
|
97
|
+
if (path.extname(resolved).toLowerCase() !== ".node") {
|
|
84
98
|
throw new Error(
|
|
85
99
|
`Invalid native binding path from ${envVarName}="${raw}". Expected a .node file.`
|
|
86
100
|
);
|
|
@@ -89,8 +103,10 @@ function resolveNativeBindingCandidates(options) {
|
|
|
89
103
|
out.push(resolved);
|
|
90
104
|
}
|
|
91
105
|
if (options.includeDefaultCandidates !== false) {
|
|
92
|
-
|
|
93
|
-
|
|
106
|
+
const ext = options.platformExtension ?? getPlatformExtension();
|
|
107
|
+
const defaultBindingName = `tailwind_styled_parser${ext}`;
|
|
108
|
+
out.push(path.resolve(process.cwd(), "native", defaultBindingName));
|
|
109
|
+
out.push(path.resolve(options.runtimeDir, "..", "..", "..", "native", defaultBindingName));
|
|
94
110
|
}
|
|
95
111
|
return Array.from(new Set(out));
|
|
96
112
|
}
|
|
@@ -112,10 +128,10 @@ function createDebugLogger(namespace, label = namespace) {
|
|
|
112
128
|
};
|
|
113
129
|
}
|
|
114
130
|
function loadNativeBinding(options) {
|
|
115
|
-
const req =
|
|
131
|
+
const req = createRequire(path.join(options.runtimeDir, "noop.cjs"));
|
|
116
132
|
const loadErrors = [];
|
|
117
133
|
for (const candidate of options.candidates) {
|
|
118
|
-
if (!
|
|
134
|
+
if (!fs.existsSync(candidate)) continue;
|
|
119
135
|
try {
|
|
120
136
|
const mod = req(candidate);
|
|
121
137
|
if (options.isValid(mod)) {
|
|
@@ -142,33 +158,21 @@ function loadNativeBinding(options) {
|
|
|
142
158
|
loadErrors
|
|
143
159
|
};
|
|
144
160
|
}
|
|
145
|
-
var
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
return process.env.TWS_DEBUG_SCANNER === "1" ? "debug" : "info";
|
|
150
|
-
}
|
|
151
|
-
function createLogger(prefix, level) {
|
|
152
|
-
let currentLevel = getEnvLevel();
|
|
153
|
-
const log = (msgLevel, stream, args) => {
|
|
154
|
-
if (LEVELS[msgLevel] > LEVELS[currentLevel]) return;
|
|
155
|
-
const line = `[${prefix}] ${args.map(String).join(" ")}
|
|
156
|
-
`;
|
|
157
|
-
process[stream].write(line);
|
|
158
|
-
};
|
|
159
|
-
return {
|
|
160
|
-
error: (...a) => log("error", "stderr", a),
|
|
161
|
-
warn: (...a) => log("warn", "stderr", a),
|
|
162
|
-
info: (...a) => log("info", "stdout", a),
|
|
163
|
-
debug: (...a) => log("debug", "stderr", a),
|
|
164
|
-
setLevel: (l) => {
|
|
165
|
-
currentLevel = l;
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
createLogger("tailwind-styled");
|
|
161
|
+
var init_nativeBinding = __esm({
|
|
162
|
+
"packages/shared/src/nativeBinding.ts"() {
|
|
163
|
+
}
|
|
164
|
+
});
|
|
170
165
|
|
|
171
|
-
//
|
|
166
|
+
// packages/shared/src/index.ts
|
|
167
|
+
var init_src = __esm({
|
|
168
|
+
"packages/shared/src/index.ts"() {
|
|
169
|
+
init_cache();
|
|
170
|
+
init_nativeBinding();
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// packages/animate/src/binding.ts
|
|
175
|
+
init_src();
|
|
172
176
|
var bindingPromise = null;
|
|
173
177
|
var DEBUG_NAMESPACE = "tailwind-styled:animate";
|
|
174
178
|
var debugLog = createDebugLogger(DEBUG_NAMESPACE, "tailwind-styled/animate");
|
|
@@ -185,11 +189,13 @@ function resolveBindingCandidates(runtimeDir) {
|
|
|
185
189
|
}
|
|
186
190
|
function loadAnimateBinding() {
|
|
187
191
|
if (process.env.TWS_NO_NATIVE === "1" || process.env.TWS_NO_RUST === "1") {
|
|
188
|
-
throw new Error(
|
|
192
|
+
throw new Error(
|
|
193
|
+
"Native animate backend is required in v5. TWS_NO_NATIVE/TWS_NO_RUST is not supported."
|
|
194
|
+
);
|
|
189
195
|
}
|
|
190
196
|
const runtimeDir = resolveRuntimeDir(
|
|
191
197
|
typeof __dirname === "string" ? __dirname : void 0,
|
|
192
|
-
|
|
198
|
+
import.meta.url
|
|
193
199
|
);
|
|
194
200
|
const candidates = resolveBindingCandidates(runtimeDir);
|
|
195
201
|
const { binding, loadErrors, loadedPath } = loadNativeBinding({
|
|
@@ -230,7 +236,8 @@ async function initAnimate() {
|
|
|
230
236
|
await getAnimateBinding();
|
|
231
237
|
}
|
|
232
238
|
|
|
233
|
-
//
|
|
239
|
+
// packages/animate/src/preset.ts
|
|
240
|
+
init_src();
|
|
234
241
|
var DEFAULT_PRESET_CACHE_LIMIT = 32;
|
|
235
242
|
function createAnimationPresets(registry) {
|
|
236
243
|
const cache = new LRUCache(DEFAULT_PRESET_CACHE_LIMIT);
|
|
@@ -336,11 +343,19 @@ function createAnimationPresets(registry) {
|
|
|
336
343
|
)
|
|
337
344
|
};
|
|
338
345
|
}
|
|
346
|
+
|
|
347
|
+
// packages/analyzer/src/binding.ts
|
|
348
|
+
init_src();
|
|
349
|
+
|
|
350
|
+
// packages/analyzer/src/utils.ts
|
|
351
|
+
init_src();
|
|
339
352
|
var DEBUG_NAMESPACE2 = "tailwind-styled:analyzer";
|
|
340
353
|
function formatErrorMessage2(error) {
|
|
341
354
|
return error instanceof Error ? error.message : String(error);
|
|
342
355
|
}
|
|
343
356
|
var debugLog2 = createDebugLogger(DEBUG_NAMESPACE2, "tailwind-styled/analyzer");
|
|
357
|
+
|
|
358
|
+
// packages/analyzer/src/binding.ts
|
|
344
359
|
var bindingCache;
|
|
345
360
|
var bindingCandidateCache = [];
|
|
346
361
|
var bindingLoadErrorsCache = [];
|
|
@@ -361,7 +376,7 @@ function getNativeBinding() {
|
|
|
361
376
|
}
|
|
362
377
|
const runtimeDir = resolveRuntimeDir(
|
|
363
378
|
typeof __dirname === "string" ? __dirname : void 0,
|
|
364
|
-
|
|
379
|
+
import.meta.url
|
|
365
380
|
);
|
|
366
381
|
const candidates = resolveNativeBindingCandidates({
|
|
367
382
|
runtimeDir,
|
|
@@ -417,6 +432,8 @@ function requireNativeCssCompiler() {
|
|
|
417
432
|
const loadedPathText = loadedBindingPathCache ? ` (${loadedBindingPathCache})` : "";
|
|
418
433
|
throw new Error(`Native analyzer compileCss binding is missing in v5${loadedPathText}.`);
|
|
419
434
|
}
|
|
435
|
+
|
|
436
|
+
// packages/analyzer/src/classToCss.ts
|
|
420
437
|
function normalizeClassInput(input) {
|
|
421
438
|
if (typeof input === "string") {
|
|
422
439
|
return input.split(/\s+/).map((item) => item.trim()).filter((item) => item.length > 0);
|
|
@@ -523,7 +540,8 @@ async function classToCss(input, options = {}) {
|
|
|
523
540
|
};
|
|
524
541
|
}
|
|
525
542
|
|
|
526
|
-
//
|
|
543
|
+
// packages/animate/src/registry.ts
|
|
544
|
+
init_src();
|
|
527
545
|
var DEFAULT_DURATION = 300;
|
|
528
546
|
var DEFAULT_EASING = "ease-out";
|
|
529
547
|
var DEFAULT_DELAY = 0;
|
|
@@ -578,7 +596,9 @@ async function validateTailwindClasses(entries) {
|
|
|
578
596
|
if (typeof binding.compileCss === "function") {
|
|
579
597
|
const compiled = binding.compileCss(classes, null);
|
|
580
598
|
if (!compiled) {
|
|
581
|
-
failures.push(
|
|
599
|
+
failures.push(
|
|
600
|
+
`Animation ${entry.context} failed validation: native compileCss returned no result.`
|
|
601
|
+
);
|
|
582
602
|
continue;
|
|
583
603
|
}
|
|
584
604
|
if (compiled.unknownClasses.length > 0) {
|
|
@@ -600,7 +620,9 @@ async function validateTailwindClasses(entries) {
|
|
|
600
620
|
}
|
|
601
621
|
const issues = [];
|
|
602
622
|
for (const [context, classes] of unknownByContext.entries()) {
|
|
603
|
-
issues.push(
|
|
623
|
+
issues.push(
|
|
624
|
+
`Animation ${context} contains unknown Tailwind classes: ${Array.from(classes).join(", ")}`
|
|
625
|
+
);
|
|
604
626
|
}
|
|
605
627
|
issues.push(...failures);
|
|
606
628
|
if (issues.length > 0) {
|
|
@@ -708,7 +730,7 @@ function createAnimationRegistry(options = {}) {
|
|
|
708
730
|
return new AnimationRegistry(options);
|
|
709
731
|
}
|
|
710
732
|
|
|
711
|
-
//
|
|
733
|
+
// packages/animate/src/index.ts
|
|
712
734
|
var defaultRegistry = createAnimationRegistry();
|
|
713
735
|
async function initAnimate2() {
|
|
714
736
|
await initAnimate();
|
|
@@ -755,17 +777,6 @@ function injectAnimationCss(registry = defaultRegistry, options = {}) {
|
|
|
755
777
|
}
|
|
756
778
|
var animations = createAnimationPresets(defaultRegistry);
|
|
757
779
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
exports.compileAnimation = compileAnimation;
|
|
762
|
-
exports.compileKeyframes = compileKeyframes;
|
|
763
|
-
exports.createAnimationRegistry = createAnimationRegistry;
|
|
764
|
-
exports.extractAnimationCss = extractAnimationCss;
|
|
765
|
-
exports.getDefaultAnimationRegistry = getDefaultAnimationRegistry;
|
|
766
|
-
exports.initAnimate = initAnimate2;
|
|
767
|
-
exports.injectAnimationCss = injectAnimationCss;
|
|
768
|
-
exports.keyframes = keyframes;
|
|
769
|
-
exports.resetAnimationRegistry = resetAnimationRegistry;
|
|
770
|
-
//# sourceMappingURL=animate.cjs.map
|
|
771
|
-
//# sourceMappingURL=animate.cjs.map
|
|
780
|
+
export { AnimationRegistry, animate, animations, compileAnimation, compileKeyframes, createAnimationRegistry, extractAnimationCss, getDefaultAnimationRegistry, initAnimate2 as initAnimate, injectAnimationCss, keyframes, resetAnimationRegistry };
|
|
781
|
+
//# sourceMappingURL=animate.mjs.map
|
|
782
|
+
//# sourceMappingURL=animate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../packages/shared/src/cache.ts","../packages/shared/src/nativeBinding.ts","../packages/shared/src/index.ts","../packages/animate/src/binding.ts","../packages/animate/src/preset.ts","../packages/analyzer/src/binding.ts","../packages/analyzer/src/utils.ts","../packages/analyzer/src/classToCss.ts","../packages/animate/src/registry.ts","../packages/animate/src/index.ts"],"names":["DEBUG_NAMESPACE","formatErrorMessage","debugLog","initAnimate"],"mappings":"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","file":"animate.mjs","sourcesContent":["/**\n * LRUCache — Least Recently Used cache with optional TTL\n * Centralized from packages/compiler/src/incrementalEngine.ts\n */\nexport class LRUCache<K, V> {\n private readonly max: number\n private readonly ttlMs: number | null\n private readonly map = new Map<K, { value: V; ts: number }>()\n\n constructor(max = 256, ttlMs: number | null = null) {\n this.max = max\n this.ttlMs = ttlMs\n }\n\n get(key: K): V | undefined {\n const entry = this.map.get(key)\n if (!entry) return undefined\n if (this.ttlMs !== null && Date.now() - entry.ts > this.ttlMs) {\n this.map.delete(key)\n return undefined\n }\n // Move to end (most recently used)\n this.map.delete(key)\n this.map.set(key, entry)\n return entry.value\n }\n\n set(key: K, value: V): void {\n if (this.map.has(key)) this.map.delete(key)\n else if (this.map.size >= this.max) {\n // Evict least recently used (first entry)\n this.map.delete(this.map.keys().next().value!)\n }\n this.map.set(key, { value, ts: Date.now() })\n }\n\n has(key: K): boolean {\n return this.get(key) !== undefined\n }\n\n delete(key: K): void {\n this.map.delete(key)\n }\n\n clear(): void {\n this.map.clear()\n }\n\n get size(): number {\n return this.map.size\n }\n\n keys(): IterableIterator<K> {\n return this.map.keys()\n }\n\n *values(): IterableIterator<V> {\n for (const entry of this.map.values()) {\n yield entry.value\n }\n }\n\n *entries(): IterableIterator<[K, V]> {\n for (const [key, entry] of this.map.entries()) {\n yield [key, entry.value]\n }\n }\n}\n","import fs from \"node:fs\"\nimport { createRequire } from \"node:module\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nexport type PlatformExtension = \".node\" | \".dll\" | \".dylib\" | \".so\"\n\nexport function getPlatformExtension(): PlatformExtension {\n const platform = os.platform()\n switch (platform) {\n case \"win32\":\n return \".node\"\n case \"darwin\":\n return \".dylib\"\n case \"linux\":\n return \".so\"\n default:\n return \".node\"\n }\n}\n\nexport function checkNativeDisabled(): { disabled: boolean; reason: string | null } {\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_NATIVE === \"true\") {\n return {\n disabled: true,\n reason: \"Native bindings disabled via TWS_NO_NATIVE=1\",\n }\n }\n if (process.env.TWS_NO_RUST === \"1\" || process.env.TWS_NO_RUST === \"true\") {\n return {\n disabled: true,\n reason: \"Native bindings disabled via TWS_NO_RUST=1\",\n }\n }\n return { disabled: false, reason: null }\n}\n\nexport interface NativeBindingLoadError {\n path: string\n message: string\n}\n\nexport interface ResolveNativeBindingCandidatesOptions {\n runtimeDir: string\n envVarNames?: string[]\n enforceNodeExtensionForEnvPath?: boolean\n includeDefaultCandidates?: boolean\n platformExtension?: PlatformExtension\n}\n\nexport interface LoadNativeBindingOptions<T> {\n runtimeDir: string\n candidates: string[]\n isValid: (module: unknown) => module is T\n invalidExportMessage: string\n}\n\nexport interface LoadNativeBindingResult<T> {\n binding: T | null\n loadedPath: string | null\n loadErrors: NativeBindingLoadError[]\n}\n\nexport function formatErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nexport function resolveRuntimeDir(\n dirnameValue: string | undefined,\n moduleImportUrl: string\n): string {\n if (typeof dirnameValue === \"string\" && dirnameValue.length > 0) return dirnameValue\n return path.dirname(fileURLToPath(moduleImportUrl))\n}\n\nexport function resolveNativeBindingCandidates(\n options: ResolveNativeBindingCandidatesOptions\n): string[] {\n const out: string[] = []\n const envVarNames = options.envVarNames ?? [\"TWS_NATIVE_PATH\"]\n\n for (const envVarName of envVarNames) {\n const raw = process.env[envVarName]?.trim()\n if (!raw) continue\n const resolved = path.resolve(raw)\n\n if (options.enforceNodeExtensionForEnvPath) {\n if (path.extname(resolved).toLowerCase() !== \".node\") {\n throw new Error(\n `Invalid native binding path from ${envVarName}=\"${raw}\". Expected a .node file.`\n )\n }\n }\n\n out.push(resolved)\n }\n\n if (options.includeDefaultCandidates !== false) {\n const ext = options.platformExtension ?? getPlatformExtension()\n const defaultBindingName = `tailwind_styled_parser${ext}`\n\n out.push(path.resolve(process.cwd(), \"native\", defaultBindingName))\n out.push(path.resolve(options.runtimeDir, \"..\", \"..\", \"..\", \"native\", defaultBindingName))\n }\n\n return Array.from(new Set(out))\n}\n\nfunction parseDebugToken(namespace: string, token: string): boolean {\n if (token === \"*\" || token === namespace || token === \"tailwind-styled:*\") return true\n return token.endsWith(\"*\") && namespace.startsWith(token.slice(0, -1))\n}\n\nexport function isDebugNamespaceEnabled(namespace: string): boolean {\n if (process.env.TWS_DEBUG === \"1\" || process.env.TAILWIND_STYLED_DEBUG === \"1\") return true\n const raw = process.env.DEBUG\n if (!raw) return false\n\n return raw\n .split(\",\")\n .map((token) => token.trim())\n .some((token) => parseDebugToken(namespace, token))\n}\n\nexport function createDebugLogger(namespace: string, label = namespace): (message: string) => void {\n const debugEnabled = isDebugNamespaceEnabled(namespace)\n return (message: string) => {\n if (!debugEnabled) return\n console.debug(`[${label}] ${message}`)\n }\n}\n\nexport function loadNativeBinding<T>(\n options: LoadNativeBindingOptions<T>\n): LoadNativeBindingResult<T> {\n const req = createRequire(path.join(options.runtimeDir, \"noop.cjs\"))\n const loadErrors: NativeBindingLoadError[] = []\n\n for (const candidate of options.candidates) {\n if (!fs.existsSync(candidate)) continue\n try {\n const mod = req(candidate)\n if (options.isValid(mod)) {\n return {\n binding: mod,\n loadedPath: candidate,\n loadErrors,\n }\n }\n loadErrors.push({\n path: candidate,\n message: options.invalidExportMessage,\n })\n } catch (error) {\n loadErrors.push({\n path: candidate,\n message: formatErrorMessage(error),\n })\n }\n }\n\n return {\n binding: null,\n loadedPath: null,\n loadErrors,\n }\n}\n\nexport function loadNativeBindingOrThrow<T>(\n options: LoadNativeBindingOptions<T> & { bindingName: string }\n): T {\n const disabledCheck = checkNativeDisabled()\n if (disabledCheck.disabled) {\n throw new Error(\n `Native binding '${options.bindingName}' cannot be loaded.\\n${disabledCheck.reason}`\n )\n }\n\n const { bindingName, ...loadOptions } = options\n const { binding, loadErrors } = loadNativeBinding<T>(loadOptions)\n\n if (binding) {\n return binding\n }\n\n const lines = [\n `FATAL: Native binding '${bindingName}' not found.`,\n \"\",\n \"This package requires native Rust bindings.\",\n \"The binding was not found in any of these paths:\",\n ...loadOptions.candidates.map((p) => ` - ${p}`),\n \"\",\n ]\n\n if (loadErrors.length > 0) {\n lines.push(\"Load errors:\")\n for (const error of loadErrors) {\n lines.push(` - ${error.path}: ${error.message}`)\n }\n lines.push(\"\")\n }\n\n lines.push(\n \"Resolution steps:\",\n \"\",\n \"1. Build the native Rust module:\",\n \" npm run build:rust\",\n \"\",\n \"2. Or install pre-built binaries:\",\n \" npm install\",\n \"\",\n \"3. Override with environment variable:\",\n \" TWS_NATIVE_PATH=/path/to/tailwind_styled_parser.node\",\n \"\",\n \"4. Disable native bindings (use JS fallback):\",\n \" TWS_NO_NATIVE=1\",\n \"\",\n \"For CI/CD environments, ensure Rust toolchain is installed and\",\n \"'npm run build:rust' is executed before running tests or building.\"\n )\n\n throw new Error(lines.join(\"\\n\"))\n}\n","/**\n * @tailwind-styled/shared - Centralized utilities.\n */\n\nexport { LRUCache } from \"./cache\"\nexport {\n createDebugLogger,\n formatErrorMessage,\n isDebugNamespaceEnabled,\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n type LoadNativeBindingOptions,\n type LoadNativeBindingResult,\n type NativeBindingLoadError,\n type ResolveNativeBindingCandidatesOptions,\n} from \"./nativeBinding\"\nexport { logger, createLogger, type LogLevel } from \"./logger\"\nexport { hashContent, hashFile } from \"./hash\"\nexport { debounce, throttle } from \"./timing\"\nexport { parseVersion, satisfiesMinVersion } from \"./version\"\n","import {\n createDebugLogger,\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n} from \"@tailwind-styled/shared\"\n\nimport type { NativeAnimateBinding } from \"./types\"\n\nlet bindingPromise: Promise<NativeAnimateBinding> | null = null\nconst DEBUG_NAMESPACE = \"tailwind-styled:animate\"\nconst debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/animate\")\n\nfunction isAnimateModule(module: unknown): module is NativeAnimateBinding {\n const candidate = module as Partial<NativeAnimateBinding> | null | undefined\n return (\n typeof candidate?.compileAnimation === \"function\" &&\n typeof candidate?.compileKeyframes === \"function\"\n )\n}\n\nfunction resolveBindingCandidates(runtimeDir: string): string[] {\n return resolveNativeBindingCandidates({\n runtimeDir,\n envVarNames: [\"TWS_ANIMATE_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\n enforceNodeExtensionForEnvPath: true,\n })\n}\n\nfunction loadAnimateBinding(): NativeAnimateBinding {\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n throw new Error(\n \"Native animate backend is required in v5. TWS_NO_NATIVE/TWS_NO_RUST is not supported.\"\n )\n }\n\n const runtimeDir = resolveRuntimeDir(\n typeof __dirname === \"string\" ? __dirname : undefined,\n import.meta.url\n )\n const candidates = resolveBindingCandidates(runtimeDir)\n const { binding, loadErrors, loadedPath } = loadNativeBinding<NativeAnimateBinding>({\n runtimeDir,\n candidates,\n isValid: isAnimateModule,\n invalidExportMessage: \"Module loaded but missing compileAnimation/compileKeyframes exports.\",\n })\n\n if (binding) {\n debugLog(`native animate binding loaded from: ${loadedPath}`)\n return binding\n }\n\n if (loadErrors.length > 0) {\n debugLog(\n `native animate binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\n .map((entry) => `${entry.path} (${entry.message})`)\n .join(\"; \")}`\n )\n } else {\n debugLog(\"native animate binding not found in any candidate path\")\n }\n\n const lines = [\n \"Native animate backend not found. Ensure `tailwind_styled_parser.node` is built.\",\n \"Checked paths:\",\n ...candidates.map((candidate) => `- ${candidate}`),\n ]\n if (loadErrors.length > 0) {\n lines.push(\"Load errors:\")\n for (const error of loadErrors) lines.push(`- ${error.path}: ${error.message}`)\n }\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport async function getAnimateBinding(): Promise<NativeAnimateBinding> {\n if (!bindingPromise) {\n bindingPromise = Promise.resolve().then(loadAnimateBinding)\n }\n return bindingPromise\n}\n\nexport async function initAnimate(): Promise<void> {\n await getAnimateBinding()\n}\n","import { LRUCache } from \"@tailwind-styled/shared\"\n\nimport type { AnimationRegistry } from \"./registry\"\n\nconst DEFAULT_PRESET_CACHE_LIMIT = 32\n\nexport function createAnimationPresets(registry: AnimationRegistry) {\n const cache = new LRUCache<string, Promise<string>>(DEFAULT_PRESET_CACHE_LIMIT)\n\n const withCache =\n (cacheKey: string, factory: () => Promise<string>): (() => Promise<string>) =>\n async () => {\n const cached = cache.get(cacheKey)\n if (cached) {\n const className = await cached\n if (registry.has(className)) return className\n cache.delete(cacheKey)\n }\n\n const pending = factory()\n cache.set(cacheKey, pending)\n try {\n return await pending\n } catch (error) {\n cache.delete(cacheKey)\n throw error\n }\n }\n\n return {\n fadeIn: withCache(\n \"fadeIn\",\n async () =>\n (await registry.compileAnimation({ from: \"opacity-0\", to: \"opacity-100\", duration: 200 }))\n .className\n ),\n fadeOut: withCache(\n \"fadeOut\",\n async () =>\n (await registry.compileAnimation({ from: \"opacity-100\", to: \"opacity-0\", duration: 200 }))\n .className\n ),\n slideUp: withCache(\n \"slideUp\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 translate-y-4\",\n to: \"opacity-100 translate-y-0\",\n duration: 300,\n })\n ).className\n ),\n slideDown: withCache(\n \"slideDown\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 -translate-y-4\",\n to: \"opacity-100 translate-y-0\",\n duration: 300,\n })\n ).className\n ),\n slideLeft: withCache(\n \"slideLeft\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 translate-x-4\",\n to: \"opacity-100 translate-x-0\",\n duration: 300,\n })\n ).className\n ),\n slideRight: withCache(\n \"slideRight\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 -translate-x-4\",\n to: \"opacity-100 translate-x-0\",\n duration: 300,\n })\n ).className\n ),\n scaleIn: withCache(\n \"scaleIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 scale-95\",\n to: \"opacity-100 scale-100\",\n duration: 200,\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\n })\n ).className\n ),\n scaleOut: withCache(\n \"scaleOut\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-100 scale-100\",\n to: \"opacity-0 scale-95\",\n duration: 150,\n })\n ).className\n ),\n blurIn: withCache(\n \"blurIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 blur-sm\",\n to: \"opacity-100 blur-none\",\n duration: 300,\n })\n ).className\n ),\n bounceIn: withCache(\n \"bounceIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 scale-50\",\n to: \"opacity-100 scale-100\",\n duration: 400,\n easing: \"cubic-bezier(0.34,1.56,0.64,1)\",\n })\n ).className\n ),\n spinIn: withCache(\n \"spinIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 rotate-180 scale-50\",\n to: \"opacity-100 rotate-0 scale-100\",\n duration: 400,\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\n })\n ).className\n ),\n } as const\n}\n","import {\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n} from \"@tailwind-styled/shared\"\n\nimport type { NativeAnalyzerBinding, NativeCssCompilerBinding } from \"./types\"\nimport { debugLog } from \"./utils\"\n\nlet bindingCache: NativeAnalyzerBinding | null | undefined\nlet bindingCandidateCache: string[] = []\nlet bindingLoadErrorsCache: Array<{ path: string; message: string }> = []\nlet loadedBindingPathCache: string | null = null\n\nfunction isAnalyzerModule(module: unknown): module is NativeAnalyzerBinding {\n const candidate = module as Partial<NativeAnalyzerBinding> | null | undefined\n return typeof candidate?.analyzeClasses === \"function\"\n}\n\nexport function getNativeBinding(): NativeAnalyzerBinding | null {\n if (bindingCache !== undefined) return bindingCache\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n bindingCandidateCache = []\n bindingLoadErrorsCache = []\n loadedBindingPathCache = null\n debugLog(\"native binding disabled by TWS_NO_NATIVE/TWS_NO_RUST\")\n bindingCache = null\n return bindingCache\n }\n\n const runtimeDir = resolveRuntimeDir(\n typeof __dirname === \"string\" ? __dirname : undefined,\n import.meta.url\n )\n const candidates = resolveNativeBindingCandidates({\n runtimeDir,\n envVarNames: [\"TWS_NATIVE_PATH\"],\n })\n\n const { binding, loadErrors, loadedPath } = loadNativeBinding<NativeAnalyzerBinding>({\n runtimeDir,\n candidates,\n isValid: isAnalyzerModule,\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\",\n })\n\n bindingCandidateCache = candidates\n bindingLoadErrorsCache = loadErrors\n loadedBindingPathCache = loadedPath\n\n if (binding) {\n debugLog(`native binding loaded from: ${loadedPath}`)\n bindingCache = binding\n return bindingCache\n }\n\n if (bindingLoadErrorsCache.length > 0) {\n debugLog(\n `native binding load failed for ${bindingLoadErrorsCache.length} candidate(s): ${bindingLoadErrorsCache\n .map((entry) => `${entry.path} (${entry.message})`)\n .join(\"; \")}`\n )\n } else {\n debugLog(\"native binding not found in any candidate path\")\n }\n\n bindingCache = null\n return bindingCache\n}\n\nexport function requireNativeBinding(): NativeAnalyzerBinding {\n const binding = getNativeBinding()\n if (binding?.analyzeClasses) return binding\n\n const lines = [\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\",\n ]\n\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n lines.push(\"Native loading is disabled by TWS_NO_NATIVE/TWS_NO_RUST.\")\n } else {\n lines.push(\"Checked paths:\")\n for (const candidate of bindingCandidateCache) lines.push(`- ${candidate}`)\n if (bindingLoadErrorsCache.length > 0) {\n lines.push(\"Load errors:\")\n for (const failure of bindingLoadErrorsCache) {\n lines.push(`- ${failure.path}: ${failure.message}`)\n }\n }\n }\n\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport function requireNativeCssCompiler(): NativeCssCompilerBinding {\n const binding = requireNativeBinding() as NativeCssCompilerBinding\n if (typeof binding.compileCss === \"function\") return binding\n\n const loadedPathText = loadedBindingPathCache ? ` (${loadedBindingPathCache})` : \"\"\n throw new Error(`Native analyzer compileCss binding is missing in v5${loadedPathText}.`)\n}\n","import fs from \"node:fs\"\nimport { createDebugLogger } from \"@tailwind-styled/shared\"\n\nexport const DEFAULT_TOP_LIMIT = 10\nexport const DEFAULT_FREQUENT_THRESHOLD = 2\nexport const DEBUG_NAMESPACE = \"tailwind-styled:analyzer\"\n\nexport function formatErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport async function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.promises.access(filePath, fs.constants.F_OK)\n return true\n } catch {\n return false\n }\n}\n\nexport const debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\")\n\nexport function sanitizeTopLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT\n return Math.max(1, Math.trunc(value as number))\n}\n\nexport function sanitizeFrequentThreshold(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD\n return Math.max(1, Math.trunc(value as number))\n}\n","import { requireNativeCssCompiler } from \"./binding\"\nimport type { ClassToCssOptions, ClassToCssResult, NativeCssCompileResult } from \"./types\"\nimport { formatErrorMessage } from \"./utils\"\n\nexport function normalizeClassInput(input: string | string[]): string[] {\n if (typeof input === \"string\") {\n return input\n .split(/\\s+/)\n .map((item) => item.trim())\n .filter((item) => item.length > 0)\n }\n\n if (!Array.isArray(input)) {\n throw new TypeError(\"classToCss input must be a string or an array of strings.\")\n }\n\n const out: string[] = []\n for (const item of input) {\n if (typeof item !== \"string\") {\n throw new TypeError(\"classToCss input array must contain only strings.\")\n }\n const value = item.trim()\n if (value.length > 0) out.push(value)\n }\n return out\n}\n\nfunction normalizeClassToCssOptions(options: ClassToCssOptions): {\n prefix: string | null\n strict: boolean\n} {\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new TypeError(\"classToCss options must be an object.\")\n }\n\n const strict = options.strict ?? false\n if (typeof strict !== \"boolean\") {\n throw new TypeError(\"classToCss options.strict must be a boolean when provided.\")\n }\n\n const prefix = options.prefix ?? null\n if (prefix !== null && typeof prefix !== \"string\") {\n throw new TypeError(\"classToCss options.prefix must be a string or null when provided.\")\n }\n\n return { prefix, strict }\n}\n\nfunction mergeDeclarationMap(target: Map<string, string>, css: string): void {\n const ruleRegex = /\\{([^}]*)\\}/g\n let ruleMatch = ruleRegex.exec(css)\n while (ruleMatch) {\n const body = ruleMatch[1]\n for (const raw of body.split(\";\")) {\n const declaration = raw.trim()\n if (declaration.length === 0) continue\n const colonIndex = declaration.indexOf(\":\")\n if (colonIndex <= 0) continue\n const property = declaration.slice(0, colonIndex).trim()\n const value = declaration.slice(colonIndex + 1).trim()\n if (property.length === 0 || value.length === 0) continue\n if (target.has(property)) target.delete(property)\n target.set(property, value)\n }\n ruleMatch = ruleRegex.exec(css)\n }\n}\n\nfunction declarationMapToString(declarationMap: Map<string, string>): string {\n return Array.from(declarationMap.entries())\n .map(([property, value]) => `${property}: ${value}`)\n .join(\"; \")\n}\n\n/**\n * Convert Tailwind class input into atomic CSS output via native binding.\n * @example\n * const css = await classToCss(\"opacity-0 translate-y-2\", { strict: true })\n */\nexport async function classToCss(\n input: string | string[],\n options: ClassToCssOptions = {}\n): Promise<ClassToCssResult> {\n const inputClasses = normalizeClassInput(input)\n const normalizedOptions = normalizeClassToCssOptions(options)\n if (inputClasses.length === 0) {\n return {\n inputClasses: [],\n css: \"\",\n declarations: \"\",\n resolvedClasses: [],\n unknownClasses: [],\n sizeBytes: 0,\n }\n }\n\n const binding = requireNativeCssCompiler()\n const prefix = normalizedOptions.prefix\n const cssChunks: string[] = []\n const resolvedClasses: string[] = []\n const unknownClasses: string[] = []\n let sizeBytes = 0\n const declarationMap = new Map<string, string>()\n\n for (const className of inputClasses) {\n let compiled: NativeCssCompileResult | null = null\n try {\n compiled = binding.compileCss([className], prefix)\n } catch (error) {\n throw new Error(\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\n { cause: error }\n )\n }\n\n if (!compiled) {\n throw new Error(`Native analyzer returned no result for class \"${className}\".`)\n }\n\n cssChunks.push(compiled.css)\n resolvedClasses.push(...compiled.resolvedClasses)\n unknownClasses.push(...compiled.unknownClasses)\n sizeBytes += compiled.sizeBytes\n mergeDeclarationMap(declarationMap, compiled.css)\n }\n\n const uniqueUnknown = Array.from(new Set(unknownClasses))\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`)\n }\n\n return {\n inputClasses,\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\n declarations: declarationMapToString(declarationMap),\n resolvedClasses: Array.from(new Set(resolvedClasses)),\n unknownClasses: uniqueUnknown,\n sizeBytes,\n }\n}\n","import { classToCss } from \"@tailwind-styled/analyzer\"\nimport { LRUCache, formatErrorMessage } from \"@tailwind-styled/shared\"\n\nimport { getAnimateBinding } from \"./binding\"\nimport type {\n AnimateOptions,\n AnimationRegistryOptions,\n CompiledAnimation,\n KeyframesDefinition,\n} from \"./types\"\n\nconst DEFAULT_DURATION = 300\nconst DEFAULT_EASING = \"ease-out\"\nconst DEFAULT_DELAY = 0\nconst DEFAULT_FILL = \"both\"\nconst DEFAULT_ITERATIONS = 1\nconst DEFAULT_DIRECTION = \"normal\"\nconst DEFAULT_CACHE_LIMIT = 512\n\nfunction normalizeNumber(value: number | undefined, fallback: number): number {\n if (!Number.isFinite(value)) return fallback\n return Math.max(0, Math.trunc(value as number))\n}\n\nfunction normalizeCacheLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_CACHE_LIMIT\n return Math.max(1, Math.trunc(value as number))\n}\n\nfunction normalizeIterations(value: AnimateOptions[\"iterations\"]): string {\n if (value === \"infinite\") return \"infinite\"\n if (!Number.isFinite(value)) return String(DEFAULT_ITERATIONS)\n return String(Math.max(0, Math.trunc(value as number)))\n}\n\nfunction stableKeyframesEntries(\n stops: KeyframesDefinition\n): Array<{ offset: string; classes: string }> {\n return Object.entries(stops)\n .map(([offset, classes]) => ({ offset, classes }))\n .sort((left, right) => left.offset.localeCompare(right.offset))\n}\n\nfunction animationCacheKey(opts: AnimateOptions): string {\n const normalized = {\n from: opts.from.trim(),\n to: opts.to.trim(),\n duration: normalizeNumber(opts.duration, DEFAULT_DURATION),\n easing: (opts.easing ?? DEFAULT_EASING).trim(),\n delay: normalizeNumber(opts.delay, DEFAULT_DELAY),\n fill: opts.fill ?? DEFAULT_FILL,\n iterations: normalizeIterations(opts.iterations),\n direction: opts.direction ?? DEFAULT_DIRECTION,\n name: opts.name ?? \"\",\n }\n return JSON.stringify(normalized)\n}\n\nfunction keyframesCacheKey(name: string, stops: KeyframesDefinition): string {\n return `${name}::${JSON.stringify(stableKeyframesEntries(stops))}`\n}\n\nfunction splitClasses(classList: string): string[] {\n return classList\n .split(/\\s+/)\n .map((item) => item.trim())\n .filter((item) => item.length > 0)\n}\n\nasync function validateTailwindClasses(\n entries: Array<{ classList: string; context: string }>\n): Promise<void> {\n const binding = await getAnimateBinding()\n const unknownByContext = new Map<string, Set<string>>()\n const failures: string[] = []\n\n for (const entry of entries) {\n const classes = splitClasses(entry.classList)\n if (classes.length === 0) continue\n\n try {\n if (typeof binding.compileCss === \"function\") {\n const compiled = binding.compileCss(classes, null)\n if (!compiled) {\n failures.push(\n `Animation ${entry.context} failed validation: native compileCss returned no result.`\n )\n continue\n }\n if (compiled.unknownClasses.length > 0) {\n const bucket = unknownByContext.get(entry.context) ?? new Set<string>()\n for (const className of compiled.unknownClasses) bucket.add(className)\n unknownByContext.set(entry.context, bucket)\n }\n continue\n }\n\n const checked = await classToCss(classes, { strict: false })\n if (checked.unknownClasses.length > 0) {\n const bucket = unknownByContext.get(entry.context) ?? new Set<string>()\n for (const className of checked.unknownClasses) bucket.add(className)\n unknownByContext.set(entry.context, bucket)\n }\n } catch (error) {\n failures.push(`Animation ${entry.context} failed validation: ${formatErrorMessage(error)}`)\n }\n }\n\n const issues: string[] = []\n for (const [context, classes] of unknownByContext.entries()) {\n issues.push(\n `Animation ${context} contains unknown Tailwind classes: ${Array.from(classes).join(\", \")}`\n )\n }\n issues.push(...failures)\n\n if (issues.length > 0) {\n throw new Error(issues.join(\"\\n\"))\n }\n}\n\nexport class AnimationRegistry {\n private readonly animations: LRUCache<string, CompiledAnimation>\n private readonly animationBySignature: LRUCache<string, string>\n private readonly keyframesBySignature: LRUCache<string, string>\n\n constructor(options: AnimationRegistryOptions = {}) {\n const cacheLimit = normalizeCacheLimit(options.cacheLimit)\n this.animations = new LRUCache(cacheLimit)\n this.animationBySignature = new LRUCache(cacheLimit)\n this.keyframesBySignature = new LRUCache(cacheLimit)\n }\n\n async compileAnimation(opts: AnimateOptions): Promise<CompiledAnimation> {\n const signature = animationCacheKey(opts)\n const existingClassName = this.animationBySignature.get(signature)\n if (existingClassName) {\n const cached = this.animations.get(existingClassName)\n if (cached) return cached\n this.animationBySignature.delete(signature)\n }\n\n await validateTailwindClasses([\n { classList: opts.from, context: `\"from\" in ${opts.name ?? \"anonymous animation\"}` },\n { classList: opts.to, context: `\"to\" in ${opts.name ?? \"anonymous animation\"}` },\n ])\n\n const binding = await getAnimateBinding()\n const duration = normalizeNumber(opts.duration, DEFAULT_DURATION)\n const easing = opts.easing ?? DEFAULT_EASING\n const delay = normalizeNumber(opts.delay, DEFAULT_DELAY)\n const fill = opts.fill ?? DEFAULT_FILL\n const iterations = normalizeIterations(opts.iterations)\n const direction = opts.direction ?? DEFAULT_DIRECTION\n\n const compiled = binding.compileAnimation?.(\n opts.from,\n opts.to,\n opts.name ?? null,\n duration,\n easing,\n delay,\n fill,\n iterations,\n direction\n )\n\n if (!compiled) {\n throw new Error(\n `Native animate backend failed to compile animation \"${opts.name ?? \"anonymous animation\"}\".`\n )\n }\n\n const result: CompiledAnimation = {\n className: compiled.className,\n keyframesCss: compiled.keyframesCss,\n animationCss: compiled.animationCss,\n }\n\n this.animations.set(result.className, result)\n this.animationBySignature.set(signature, result.className)\n return result\n }\n\n async compileKeyframes(name: string, stops: KeyframesDefinition): Promise<CompiledAnimation> {\n const signature = keyframesCacheKey(name, stops)\n const existingClassName = this.keyframesBySignature.get(signature)\n if (existingClassName) {\n const cached = this.animations.get(existingClassName)\n if (cached) return cached\n this.keyframesBySignature.delete(signature)\n }\n\n await validateTailwindClasses(\n Object.entries(stops).map(([offset, classes]) => ({\n classList: classes,\n context: `\"${offset}\" stop in keyframes \"${name}\"`,\n }))\n )\n\n const binding = await getAnimateBinding()\n const stopsJson = JSON.stringify(stableKeyframesEntries(stops))\n const compiled = binding.compileKeyframes?.(name, stopsJson)\n\n if (!compiled) {\n throw new Error(`Native animate backend failed to compile keyframes \"${name}\".`)\n }\n\n const result: CompiledAnimation = {\n className: compiled.className,\n keyframesCss: compiled.keyframesCss,\n animationCss: compiled.animationCss,\n }\n\n this.animations.set(result.className, result)\n this.keyframesBySignature.set(signature, result.className)\n return result\n }\n\n extractCss(): string {\n const lines: string[] = []\n for (const [, compiled] of this.animations.entries()) {\n lines.push(compiled.keyframesCss)\n lines.push(`.${compiled.className} { ${compiled.animationCss} }`)\n }\n return lines.join(\"\\n\\n\")\n }\n\n reset(): void {\n this.animations.clear()\n this.animationBySignature.clear()\n this.keyframesBySignature.clear()\n }\n\n has(className: string): boolean {\n return this.animations.has(className)\n }\n}\n\nexport function createAnimationRegistry(options: AnimationRegistryOptions = {}): AnimationRegistry {\n return new AnimationRegistry(options)\n}\n","import { initAnimate as initAnimateBackend } from \"./binding\"\nimport { createAnimationPresets } from \"./preset\"\nimport { AnimationRegistry, createAnimationRegistry } from \"./registry\"\nimport type {\n AnimateOptions,\n AnimationRegistryOptions,\n CompiledAnimation,\n KeyframesDefinition,\n} from \"./types\"\n\nexport type {\n AnimateOptions,\n AnimationRegistryOptions,\n CompiledAnimation,\n CSSDirection,\n CSSEasing,\n CSSFillMode,\n CSSIterationCount,\n CubicBezierEasing,\n KeyframesDefinition,\n PresetEasing,\n StepsEasing,\n} from \"./types\"\n\nconst defaultRegistry = createAnimationRegistry()\n\nexport async function initAnimate(): Promise<void> {\n await initAnimateBackend()\n}\n\nexport function getDefaultAnimationRegistry(): AnimationRegistry {\n return defaultRegistry\n}\n\nexport async function compileAnimation(\n opts: AnimateOptions,\n registry: AnimationRegistry = defaultRegistry\n): Promise<CompiledAnimation> {\n return registry.compileAnimation(opts)\n}\n\nexport async function compileKeyframes(\n name: string,\n stops: KeyframesDefinition,\n registry: AnimationRegistry = defaultRegistry\n): Promise<CompiledAnimation> {\n return registry.compileKeyframes(name, stops)\n}\n\nexport async function animate(\n opts: AnimateOptions,\n registry: AnimationRegistry = defaultRegistry\n): Promise<string> {\n return (await registry.compileAnimation(opts)).className\n}\n\nexport async function keyframes(\n name: string,\n stops: KeyframesDefinition,\n registry: AnimationRegistry = defaultRegistry\n): Promise<string> {\n return (await registry.compileKeyframes(name, stops)).className\n}\n\nexport function extractAnimationCss(registry: AnimationRegistry = defaultRegistry): string {\n return registry.extractCss()\n}\n\nexport function resetAnimationRegistry(registry: AnimationRegistry = defaultRegistry): void {\n registry.reset()\n}\n\nexport interface InjectAnimationCssOptions {\n document?: Document\n styleId?: string\n silent?: boolean\n}\n\nexport function injectAnimationCss(\n registry: AnimationRegistry = defaultRegistry,\n options: InjectAnimationCssOptions = {}\n): void {\n const targetDocument =\n options.document ?? (typeof document !== \"undefined\" ? document : undefined)\n if (!targetDocument) {\n if (options.silent) return\n throw new Error(\"injectAnimationCss requires a browser Document.\")\n }\n\n const styleId = options.styleId ?? \"__tw_animate_styles__\"\n let styleEl = targetDocument.getElementById(styleId) as HTMLStyleElement | null\n if (!styleEl) {\n if (!targetDocument.head) {\n if (options.silent) return\n throw new Error(\"injectAnimationCss requires document.head to exist.\")\n }\n styleEl = targetDocument.createElement(\"style\")\n styleEl.id = styleId\n targetDocument.head.appendChild(styleEl)\n }\n\n styleEl.textContent = registry.extractCss()\n}\n\nexport { AnimationRegistry, createAnimationRegistry } from \"./registry\"\n\nexport const animations = createAnimationPresets(defaultRegistry)\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface AtomicRule {
|
|
2
|
+
twClass: string;
|
|
3
|
+
atomicName: string;
|
|
4
|
+
property: string;
|
|
5
|
+
value: string;
|
|
6
|
+
modifier?: string;
|
|
7
|
+
}
|
|
8
|
+
declare function parseAtomicClass(twClass: string): AtomicRule | null;
|
|
9
|
+
declare function generateAtomicCss(rules: AtomicRule[]): string;
|
|
10
|
+
declare function toAtomicClasses(twClasses: string): {
|
|
11
|
+
atomicClasses: string;
|
|
12
|
+
rules: AtomicRule[];
|
|
13
|
+
unknownClasses: string[];
|
|
14
|
+
};
|
|
15
|
+
declare function getAtomicRegistry(): Map<string, AtomicRule>;
|
|
16
|
+
declare function clearAtomicRegistry(): void;
|
|
17
|
+
|
|
18
|
+
export { type AtomicRule, clearAtomicRegistry, generateAtomicCss, getAtomicRegistry, parseAtomicClass, toAtomicClasses };
|
package/dist/atomic.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface AtomicRule {
|
|
2
|
+
twClass: string;
|
|
3
|
+
atomicName: string;
|
|
4
|
+
property: string;
|
|
5
|
+
value: string;
|
|
6
|
+
modifier?: string;
|
|
7
|
+
}
|
|
8
|
+
declare function parseAtomicClass(twClass: string): AtomicRule | null;
|
|
9
|
+
declare function generateAtomicCss(rules: AtomicRule[]): string;
|
|
10
|
+
declare function toAtomicClasses(twClasses: string): {
|
|
11
|
+
atomicClasses: string;
|
|
12
|
+
rules: AtomicRule[];
|
|
13
|
+
unknownClasses: string[];
|
|
14
|
+
};
|
|
15
|
+
declare function getAtomicRegistry(): Map<string, AtomicRule>;
|
|
16
|
+
declare function clearAtomicRegistry(): void;
|
|
17
|
+
|
|
18
|
+
export { type AtomicRule, clearAtomicRegistry, generateAtomicCss, getAtomicRegistry, parseAtomicClass, toAtomicClasses };
|