tailwind-styled-v4 5.0.0 → 5.0.2
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 +6808 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/analyzer.mjs +6798 -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 +7096 -352
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +7482 -0
- 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 +45008 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +44980 -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 +4937 -0
- package/dist/compiler.js.map +1 -0
- package/dist/compiler.mjs +4862 -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 +171 -158
- package/dist/devtools.js.map +1 -1
- package/dist/{devtools.cjs → devtools.mjs} +166 -167
- package/dist/devtools.mjs.map +1 -0
- package/dist/engine.d.mts +398 -0
- package/dist/engine.d.ts +398 -0
- package/dist/engine.js +19264 -0
- package/dist/engine.js.map +1 -0
- package/dist/engine.mjs +19227 -0
- package/dist/engine.mjs.map +1 -0
- package/dist/{index.d.cts → index.d.mts} +12 -5
- package/dist/index.d.ts +12 -5
- package/dist/index.js +7178 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8408 -0
- 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 +24027 -28
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +24232 -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 +66 -0
- package/dist/rspack.js.map +1 -0
- package/dist/rspack.mjs +55 -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 +455 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.mjs +436 -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 +5774 -0
- package/dist/scanner.js.map +1 -0
- package/dist/scanner.mjs +5760 -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/tsconfig.tsbuildinfo +1 -0
- package/dist/types-DXr2PmGP.d.mts +31 -0
- package/dist/types-DXr2PmGP.d.ts +31 -0
- package/dist/vite.js +29611 -17
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +29712 -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 +170 -64
- package/dist/animate.cjs +0 -771
- 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 +0 -1353
- 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
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LRUCache — Least Recently Used cache with optional TTL
|
|
3
|
+
* Centralized from packages/compiler/src/incrementalEngine.ts
|
|
4
|
+
*/
|
|
5
|
+
declare class LRUCache<K, V> {
|
|
6
|
+
private readonly max;
|
|
7
|
+
private readonly ttlMs;
|
|
8
|
+
private readonly map;
|
|
9
|
+
constructor(max?: number, ttlMs?: number | null);
|
|
10
|
+
get(key: K): V | undefined;
|
|
11
|
+
set(key: K, value: V): void;
|
|
12
|
+
has(key: K): boolean;
|
|
13
|
+
delete(key: K): void;
|
|
14
|
+
clear(): void;
|
|
15
|
+
get size(): number;
|
|
16
|
+
keys(): IterableIterator<K>;
|
|
17
|
+
values(): IterableIterator<V>;
|
|
18
|
+
entries(): IterableIterator<[K, V]>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
type PlatformExtension = ".node" | ".dll" | ".dylib" | ".so";
|
|
22
|
+
interface NativeBindingLoadError {
|
|
23
|
+
path: string;
|
|
24
|
+
message: string;
|
|
25
|
+
}
|
|
26
|
+
interface ResolveNativeBindingCandidatesOptions {
|
|
27
|
+
runtimeDir: string;
|
|
28
|
+
envVarNames?: string[];
|
|
29
|
+
enforceNodeExtensionForEnvPath?: boolean;
|
|
30
|
+
includeDefaultCandidates?: boolean;
|
|
31
|
+
platformExtension?: PlatformExtension;
|
|
32
|
+
}
|
|
33
|
+
interface LoadNativeBindingOptions<T> {
|
|
34
|
+
runtimeDir: string;
|
|
35
|
+
candidates: string[];
|
|
36
|
+
isValid: (module: unknown) => module is T;
|
|
37
|
+
invalidExportMessage: string;
|
|
38
|
+
}
|
|
39
|
+
interface LoadNativeBindingResult<T> {
|
|
40
|
+
binding: T | null;
|
|
41
|
+
loadedPath: string | null;
|
|
42
|
+
loadErrors: NativeBindingLoadError[];
|
|
43
|
+
}
|
|
44
|
+
declare function formatErrorMessage(error: unknown): string;
|
|
45
|
+
declare function resolveRuntimeDir(dirnameValue: string | undefined, moduleImportUrl: string): string;
|
|
46
|
+
declare function resolveNativeBindingCandidates(options: ResolveNativeBindingCandidatesOptions): string[];
|
|
47
|
+
declare function isDebugNamespaceEnabled(namespace: string): boolean;
|
|
48
|
+
declare function createDebugLogger(namespace: string, label?: string): (message: string) => void;
|
|
49
|
+
declare function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Centralized logger — replaces scattered console.log/warn/error calls
|
|
53
|
+
* across packages.
|
|
54
|
+
*/
|
|
55
|
+
type LogLevel = "silent" | "error" | "warn" | "info" | "debug";
|
|
56
|
+
interface Logger {
|
|
57
|
+
error(...args: unknown[]): void;
|
|
58
|
+
warn(...args: unknown[]): void;
|
|
59
|
+
info(...args: unknown[]): void;
|
|
60
|
+
debug(...args: unknown[]): void;
|
|
61
|
+
setLevel(level: LogLevel): void;
|
|
62
|
+
}
|
|
63
|
+
declare function createLogger(prefix: string, level?: LogLevel): Logger;
|
|
64
|
+
declare const logger: Logger;
|
|
65
|
+
|
|
66
|
+
/** Hash a string content → short hex string */
|
|
67
|
+
declare function hashContent(content: string, algorithm?: string, length?: number): string;
|
|
68
|
+
/** Hash a file's content → short hex string */
|
|
69
|
+
declare function hashFile(filePath: string, algorithm?: string, length?: number): string;
|
|
70
|
+
|
|
71
|
+
/** Debounce: delay fn execution until after `ms` ms of inactivity */
|
|
72
|
+
declare function debounce<T extends (...args: any[]) => void>(fn: T, ms: number): T;
|
|
73
|
+
/** Throttle: execute fn at most once per `ms` ms */
|
|
74
|
+
declare function throttle<T extends (...args: any[]) => void>(fn: T, ms: number): T;
|
|
75
|
+
|
|
76
|
+
/** Parse semver string → { major, minor, patch } */
|
|
77
|
+
declare function parseVersion(v: string): {
|
|
78
|
+
major: number;
|
|
79
|
+
minor: number;
|
|
80
|
+
patch: number;
|
|
81
|
+
};
|
|
82
|
+
/** Check if version satisfies minimum (major.minor) */
|
|
83
|
+
declare function satisfiesMinVersion(version: string, minVersion: string): boolean;
|
|
84
|
+
|
|
85
|
+
export { LRUCache, type LoadNativeBindingOptions, type LoadNativeBindingResult, type LogLevel, type NativeBindingLoadError, type ResolveNativeBindingCandidatesOptions, createDebugLogger, createLogger, debounce, formatErrorMessage, hashContent, hashFile, isDebugNamespaceEnabled, loadNativeBinding, logger, parseVersion, resolveNativeBindingCandidates, resolveRuntimeDir, satisfiesMinVersion, throttle };
|
package/dist/shared.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LRUCache — Least Recently Used cache with optional TTL
|
|
3
|
+
* Centralized from packages/compiler/src/incrementalEngine.ts
|
|
4
|
+
*/
|
|
5
|
+
declare class LRUCache<K, V> {
|
|
6
|
+
private readonly max;
|
|
7
|
+
private readonly ttlMs;
|
|
8
|
+
private readonly map;
|
|
9
|
+
constructor(max?: number, ttlMs?: number | null);
|
|
10
|
+
get(key: K): V | undefined;
|
|
11
|
+
set(key: K, value: V): void;
|
|
12
|
+
has(key: K): boolean;
|
|
13
|
+
delete(key: K): void;
|
|
14
|
+
clear(): void;
|
|
15
|
+
get size(): number;
|
|
16
|
+
keys(): IterableIterator<K>;
|
|
17
|
+
values(): IterableIterator<V>;
|
|
18
|
+
entries(): IterableIterator<[K, V]>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
type PlatformExtension = ".node" | ".dll" | ".dylib" | ".so";
|
|
22
|
+
interface NativeBindingLoadError {
|
|
23
|
+
path: string;
|
|
24
|
+
message: string;
|
|
25
|
+
}
|
|
26
|
+
interface ResolveNativeBindingCandidatesOptions {
|
|
27
|
+
runtimeDir: string;
|
|
28
|
+
envVarNames?: string[];
|
|
29
|
+
enforceNodeExtensionForEnvPath?: boolean;
|
|
30
|
+
includeDefaultCandidates?: boolean;
|
|
31
|
+
platformExtension?: PlatformExtension;
|
|
32
|
+
}
|
|
33
|
+
interface LoadNativeBindingOptions<T> {
|
|
34
|
+
runtimeDir: string;
|
|
35
|
+
candidates: string[];
|
|
36
|
+
isValid: (module: unknown) => module is T;
|
|
37
|
+
invalidExportMessage: string;
|
|
38
|
+
}
|
|
39
|
+
interface LoadNativeBindingResult<T> {
|
|
40
|
+
binding: T | null;
|
|
41
|
+
loadedPath: string | null;
|
|
42
|
+
loadErrors: NativeBindingLoadError[];
|
|
43
|
+
}
|
|
44
|
+
declare function formatErrorMessage(error: unknown): string;
|
|
45
|
+
declare function resolveRuntimeDir(dirnameValue: string | undefined, moduleImportUrl: string): string;
|
|
46
|
+
declare function resolveNativeBindingCandidates(options: ResolveNativeBindingCandidatesOptions): string[];
|
|
47
|
+
declare function isDebugNamespaceEnabled(namespace: string): boolean;
|
|
48
|
+
declare function createDebugLogger(namespace: string, label?: string): (message: string) => void;
|
|
49
|
+
declare function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Centralized logger — replaces scattered console.log/warn/error calls
|
|
53
|
+
* across packages.
|
|
54
|
+
*/
|
|
55
|
+
type LogLevel = "silent" | "error" | "warn" | "info" | "debug";
|
|
56
|
+
interface Logger {
|
|
57
|
+
error(...args: unknown[]): void;
|
|
58
|
+
warn(...args: unknown[]): void;
|
|
59
|
+
info(...args: unknown[]): void;
|
|
60
|
+
debug(...args: unknown[]): void;
|
|
61
|
+
setLevel(level: LogLevel): void;
|
|
62
|
+
}
|
|
63
|
+
declare function createLogger(prefix: string, level?: LogLevel): Logger;
|
|
64
|
+
declare const logger: Logger;
|
|
65
|
+
|
|
66
|
+
/** Hash a string content → short hex string */
|
|
67
|
+
declare function hashContent(content: string, algorithm?: string, length?: number): string;
|
|
68
|
+
/** Hash a file's content → short hex string */
|
|
69
|
+
declare function hashFile(filePath: string, algorithm?: string, length?: number): string;
|
|
70
|
+
|
|
71
|
+
/** Debounce: delay fn execution until after `ms` ms of inactivity */
|
|
72
|
+
declare function debounce<T extends (...args: any[]) => void>(fn: T, ms: number): T;
|
|
73
|
+
/** Throttle: execute fn at most once per `ms` ms */
|
|
74
|
+
declare function throttle<T extends (...args: any[]) => void>(fn: T, ms: number): T;
|
|
75
|
+
|
|
76
|
+
/** Parse semver string → { major, minor, patch } */
|
|
77
|
+
declare function parseVersion(v: string): {
|
|
78
|
+
major: number;
|
|
79
|
+
minor: number;
|
|
80
|
+
patch: number;
|
|
81
|
+
};
|
|
82
|
+
/** Check if version satisfies minimum (major.minor) */
|
|
83
|
+
declare function satisfiesMinVersion(version: string, minVersion: string): boolean;
|
|
84
|
+
|
|
85
|
+
export { LRUCache, type LoadNativeBindingOptions, type LoadNativeBindingResult, type LogLevel, type NativeBindingLoadError, type ResolveNativeBindingCandidatesOptions, createDebugLogger, createLogger, debounce, formatErrorMessage, hashContent, hashFile, isDebugNamespaceEnabled, loadNativeBinding, logger, parseVersion, resolveNativeBindingCandidates, resolveRuntimeDir, satisfiesMinVersion, throttle };
|
package/dist/shared.js
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs');
|
|
4
|
+
var module$1 = require('module');
|
|
5
|
+
var os = require('os');
|
|
6
|
+
var path = require('path');
|
|
7
|
+
var url = require('url');
|
|
8
|
+
var crypto = require('crypto');
|
|
9
|
+
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
13
|
+
var os__default = /*#__PURE__*/_interopDefault(os);
|
|
14
|
+
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
15
|
+
|
|
16
|
+
/* tailwind-styled-v4 v5.0.1 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
17
|
+
|
|
18
|
+
// packages/shared/src/cache.ts
|
|
19
|
+
var LRUCache = class {
|
|
20
|
+
constructor(max = 256, ttlMs = null) {
|
|
21
|
+
this.map = /* @__PURE__ */ new Map();
|
|
22
|
+
this.max = max;
|
|
23
|
+
this.ttlMs = ttlMs;
|
|
24
|
+
}
|
|
25
|
+
get(key) {
|
|
26
|
+
const entry = this.map.get(key);
|
|
27
|
+
if (!entry) return void 0;
|
|
28
|
+
if (this.ttlMs !== null && Date.now() - entry.ts > this.ttlMs) {
|
|
29
|
+
this.map.delete(key);
|
|
30
|
+
return void 0;
|
|
31
|
+
}
|
|
32
|
+
this.map.delete(key);
|
|
33
|
+
this.map.set(key, entry);
|
|
34
|
+
return entry.value;
|
|
35
|
+
}
|
|
36
|
+
set(key, value) {
|
|
37
|
+
if (this.map.has(key)) this.map.delete(key);
|
|
38
|
+
else if (this.map.size >= this.max) {
|
|
39
|
+
this.map.delete(this.map.keys().next().value);
|
|
40
|
+
}
|
|
41
|
+
this.map.set(key, { value, ts: Date.now() });
|
|
42
|
+
}
|
|
43
|
+
has(key) {
|
|
44
|
+
return this.get(key) !== void 0;
|
|
45
|
+
}
|
|
46
|
+
delete(key) {
|
|
47
|
+
this.map.delete(key);
|
|
48
|
+
}
|
|
49
|
+
clear() {
|
|
50
|
+
this.map.clear();
|
|
51
|
+
}
|
|
52
|
+
get size() {
|
|
53
|
+
return this.map.size;
|
|
54
|
+
}
|
|
55
|
+
keys() {
|
|
56
|
+
return this.map.keys();
|
|
57
|
+
}
|
|
58
|
+
*values() {
|
|
59
|
+
for (const entry of this.map.values()) {
|
|
60
|
+
yield entry.value;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
*entries() {
|
|
64
|
+
for (const [key, entry] of this.map.entries()) {
|
|
65
|
+
yield [key, entry.value];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
function getPlatformExtension() {
|
|
70
|
+
const platform = os__default.default.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";
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function formatErrorMessage(error) {
|
|
83
|
+
return error instanceof Error ? error.message : String(error);
|
|
84
|
+
}
|
|
85
|
+
function resolveRuntimeDir(dirnameValue, moduleImportUrl) {
|
|
86
|
+
if (typeof dirnameValue === "string" && dirnameValue.length > 0) return dirnameValue;
|
|
87
|
+
return path__default.default.dirname(url.fileURLToPath(moduleImportUrl));
|
|
88
|
+
}
|
|
89
|
+
function resolveNativeBindingCandidates(options) {
|
|
90
|
+
const out = [];
|
|
91
|
+
const envVarNames = options.envVarNames ?? ["TWS_NATIVE_PATH"];
|
|
92
|
+
for (const envVarName of envVarNames) {
|
|
93
|
+
const raw = process.env[envVarName]?.trim();
|
|
94
|
+
if (!raw) continue;
|
|
95
|
+
const resolved = path__default.default.resolve(raw);
|
|
96
|
+
if (options.enforceNodeExtensionForEnvPath) {
|
|
97
|
+
if (path__default.default.extname(resolved).toLowerCase() !== ".node") {
|
|
98
|
+
throw new Error(
|
|
99
|
+
`Invalid native binding path from ${envVarName}="${raw}". Expected a .node file.`
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
out.push(resolved);
|
|
104
|
+
}
|
|
105
|
+
if (options.includeDefaultCandidates !== false) {
|
|
106
|
+
const ext = options.platformExtension ?? getPlatformExtension();
|
|
107
|
+
const defaultBindingName = `tailwind_styled_parser${ext}`;
|
|
108
|
+
out.push(path__default.default.resolve(process.cwd(), "native", defaultBindingName));
|
|
109
|
+
out.push(path__default.default.resolve(options.runtimeDir, "..", "..", "..", "native", defaultBindingName));
|
|
110
|
+
}
|
|
111
|
+
return Array.from(new Set(out));
|
|
112
|
+
}
|
|
113
|
+
function parseDebugToken(namespace, token) {
|
|
114
|
+
if (token === "*" || token === namespace || token === "tailwind-styled:*") return true;
|
|
115
|
+
return token.endsWith("*") && namespace.startsWith(token.slice(0, -1));
|
|
116
|
+
}
|
|
117
|
+
function isDebugNamespaceEnabled(namespace) {
|
|
118
|
+
if (process.env.TWS_DEBUG === "1" || process.env.TAILWIND_STYLED_DEBUG === "1") return true;
|
|
119
|
+
const raw = process.env.DEBUG;
|
|
120
|
+
if (!raw) return false;
|
|
121
|
+
return raw.split(",").map((token) => token.trim()).some((token) => parseDebugToken(namespace, token));
|
|
122
|
+
}
|
|
123
|
+
function createDebugLogger(namespace, label = namespace) {
|
|
124
|
+
const debugEnabled = isDebugNamespaceEnabled(namespace);
|
|
125
|
+
return (message) => {
|
|
126
|
+
if (!debugEnabled) return;
|
|
127
|
+
console.debug(`[${label}] ${message}`);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function loadNativeBinding(options) {
|
|
131
|
+
const req = module$1.createRequire(path__default.default.join(options.runtimeDir, "noop.cjs"));
|
|
132
|
+
const loadErrors = [];
|
|
133
|
+
for (const candidate of options.candidates) {
|
|
134
|
+
if (!fs__default.default.existsSync(candidate)) continue;
|
|
135
|
+
try {
|
|
136
|
+
const mod = req(candidate);
|
|
137
|
+
if (options.isValid(mod)) {
|
|
138
|
+
return {
|
|
139
|
+
binding: mod,
|
|
140
|
+
loadedPath: candidate,
|
|
141
|
+
loadErrors
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
loadErrors.push({
|
|
145
|
+
path: candidate,
|
|
146
|
+
message: options.invalidExportMessage
|
|
147
|
+
});
|
|
148
|
+
} catch (error) {
|
|
149
|
+
loadErrors.push({
|
|
150
|
+
path: candidate,
|
|
151
|
+
message: formatErrorMessage(error)
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
binding: null,
|
|
157
|
+
loadedPath: null,
|
|
158
|
+
loadErrors
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// packages/shared/src/logger.ts
|
|
163
|
+
var LEVELS = { silent: 0, error: 1, warn: 2, info: 3, debug: 4 };
|
|
164
|
+
function getEnvLevel() {
|
|
165
|
+
const env = process.env.TWS_LOG_LEVEL?.toLowerCase();
|
|
166
|
+
if (env && env in LEVELS) return env;
|
|
167
|
+
return process.env.TWS_DEBUG_SCANNER === "1" ? "debug" : "info";
|
|
168
|
+
}
|
|
169
|
+
function createLogger(prefix, level) {
|
|
170
|
+
let currentLevel = level ?? getEnvLevel();
|
|
171
|
+
const log = (msgLevel, stream, args) => {
|
|
172
|
+
if (LEVELS[msgLevel] > LEVELS[currentLevel]) return;
|
|
173
|
+
const line = `[${prefix}] ${args.map(String).join(" ")}
|
|
174
|
+
`;
|
|
175
|
+
process[stream].write(line);
|
|
176
|
+
};
|
|
177
|
+
return {
|
|
178
|
+
error: (...a) => log("error", "stderr", a),
|
|
179
|
+
warn: (...a) => log("warn", "stderr", a),
|
|
180
|
+
info: (...a) => log("info", "stdout", a),
|
|
181
|
+
debug: (...a) => log("debug", "stderr", a),
|
|
182
|
+
setLevel: (l) => {
|
|
183
|
+
currentLevel = l;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
var logger = createLogger("tailwind-styled");
|
|
188
|
+
function hashContent(content, algorithm = "md5", length = 8) {
|
|
189
|
+
return crypto.createHash(algorithm).update(content).digest("hex").slice(0, length);
|
|
190
|
+
}
|
|
191
|
+
function hashFile(filePath, algorithm = "md5", length = 8) {
|
|
192
|
+
try {
|
|
193
|
+
const content = fs__default.default.readFileSync(filePath, "utf8");
|
|
194
|
+
return hashContent(content, algorithm, length);
|
|
195
|
+
} catch {
|
|
196
|
+
return "00000000";
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// packages/shared/src/timing.ts
|
|
201
|
+
function debounce(fn, ms) {
|
|
202
|
+
let timer = null;
|
|
203
|
+
return ((...args) => {
|
|
204
|
+
if (timer) clearTimeout(timer);
|
|
205
|
+
timer = setTimeout(() => {
|
|
206
|
+
timer = null;
|
|
207
|
+
fn(...args);
|
|
208
|
+
}, ms);
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
function throttle(fn, ms) {
|
|
212
|
+
let last = 0;
|
|
213
|
+
return ((...args) => {
|
|
214
|
+
const now = Date.now();
|
|
215
|
+
if (now - last >= ms) {
|
|
216
|
+
last = now;
|
|
217
|
+
fn(...args);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// packages/shared/src/version.ts
|
|
223
|
+
function parseVersion(v) {
|
|
224
|
+
const parts = v.replace(/^v/, "").split(".").map((p) => {
|
|
225
|
+
const n = Number(p);
|
|
226
|
+
return Number.isNaN(n) ? 0 : n;
|
|
227
|
+
});
|
|
228
|
+
const [major = 0, minor = 0, patch = 0] = parts;
|
|
229
|
+
return { major, minor, patch };
|
|
230
|
+
}
|
|
231
|
+
function satisfiesMinVersion(version, minVersion) {
|
|
232
|
+
const v = parseVersion(version);
|
|
233
|
+
const min = parseVersion(minVersion);
|
|
234
|
+
if (v.major !== min.major) return v.major > min.major;
|
|
235
|
+
if (v.minor !== min.minor) return v.minor > min.minor;
|
|
236
|
+
return v.patch >= min.patch;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
exports.LRUCache = LRUCache;
|
|
240
|
+
exports.createDebugLogger = createDebugLogger;
|
|
241
|
+
exports.createLogger = createLogger;
|
|
242
|
+
exports.debounce = debounce;
|
|
243
|
+
exports.formatErrorMessage = formatErrorMessage;
|
|
244
|
+
exports.hashContent = hashContent;
|
|
245
|
+
exports.hashFile = hashFile;
|
|
246
|
+
exports.isDebugNamespaceEnabled = isDebugNamespaceEnabled;
|
|
247
|
+
exports.loadNativeBinding = loadNativeBinding;
|
|
248
|
+
exports.logger = logger;
|
|
249
|
+
exports.parseVersion = parseVersion;
|
|
250
|
+
exports.resolveNativeBindingCandidates = resolveNativeBindingCandidates;
|
|
251
|
+
exports.resolveRuntimeDir = resolveRuntimeDir;
|
|
252
|
+
exports.satisfiesMinVersion = satisfiesMinVersion;
|
|
253
|
+
exports.throttle = throttle;
|
|
254
|
+
//# sourceMappingURL=shared.js.map
|
|
255
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../packages/shared/src/cache.ts","../packages/shared/src/nativeBinding.ts","../packages/shared/src/logger.ts","../packages/shared/src/hash.ts","../packages/shared/src/timing.ts","../packages/shared/src/version.ts"],"names":["os","path","fileURLToPath","createRequire","fs","createHash"],"mappings":"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","file":"shared.js","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 * Centralized logger — replaces scattered console.log/warn/error calls\n * across packages.\n */\nexport type LogLevel = \"silent\" | \"error\" | \"warn\" | \"info\" | \"debug\"\n\nconst LEVELS: Record<LogLevel, number> = { silent: 0, error: 1, warn: 2, info: 3, debug: 4 }\n\nfunction getEnvLevel(): LogLevel {\n const env = process.env.TWS_LOG_LEVEL?.toLowerCase()\n if (env && env in LEVELS) return env as LogLevel\n return process.env.TWS_DEBUG_SCANNER === \"1\" ? \"debug\" : \"info\"\n}\n\nexport interface Logger {\n error(...args: unknown[]): void\n warn(...args: unknown[]): void\n info(...args: unknown[]): void\n debug(...args: unknown[]): void\n setLevel(level: LogLevel): void\n}\n\nexport function createLogger(prefix: string, level?: LogLevel): Logger {\n let currentLevel = level ?? getEnvLevel()\n\n const log = (msgLevel: LogLevel, stream: \"stdout\" | \"stderr\", args: unknown[]) => {\n if (LEVELS[msgLevel] > LEVELS[currentLevel]) return\n const line = `[${prefix}] ${args.map(String).join(\" \")}\\n`\n process[stream].write(line)\n }\n\n return {\n error: (...a) => log(\"error\", \"stderr\", a),\n warn: (...a) => log(\"warn\", \"stderr\", a),\n info: (...a) => log(\"info\", \"stdout\", a),\n debug: (...a) => log(\"debug\", \"stderr\", a),\n setLevel: (l) => {\n currentLevel = l\n },\n }\n}\n\nexport const logger = createLogger(\"tailwind-styled\")\n","/**\n * Centralized hash utilities\n * Replaces duplicated crypto.createHash() calls across packages\n */\nimport { createHash } from \"node:crypto\"\nimport fs from \"node:fs\"\n\n/** Hash a string content → short hex string */\nexport function hashContent(content: string, algorithm = \"md5\", length = 8): string {\n return createHash(algorithm).update(content).digest(\"hex\").slice(0, length)\n}\n\n/** Hash a file's content → short hex string */\nexport function hashFile(filePath: string, algorithm = \"md5\", length = 8): string {\n try {\n const content = fs.readFileSync(filePath, \"utf8\")\n return hashContent(content, algorithm, length)\n } catch {\n return \"00000000\"\n }\n}\n","/** Debounce: delay fn execution until after `ms` ms of inactivity */\nexport function debounce<T extends (...args: any[]) => void>(fn: T, ms: number): T {\n let timer: ReturnType<typeof setTimeout> | null = null\n return ((...args: any[]) => {\n if (timer) clearTimeout(timer)\n timer = setTimeout(() => {\n timer = null\n fn(...args)\n }, ms)\n }) as T\n}\n\n/** Throttle: execute fn at most once per `ms` ms */\nexport function throttle<T extends (...args: any[]) => void>(fn: T, ms: number): T {\n let last = 0\n return ((...args: any[]) => {\n const now = Date.now()\n if (now - last >= ms) {\n last = now\n fn(...args)\n }\n }) as T\n}\n","/** Parse semver string → { major, minor, patch } */\nexport function parseVersion(v: string): { major: number; minor: number; patch: number } {\n const parts = v\n .replace(/^v/, \"\")\n .split(\".\")\n .map((p) => {\n const n = Number(p)\n return Number.isNaN(n) ? 0 : n\n })\n const [major = 0, minor = 0, patch = 0] = parts\n return { major, minor, patch }\n}\n\n/** Check if version satisfies minimum (major.minor) */\nexport function satisfiesMinVersion(version: string, minVersion: string): boolean {\n const v = parseVersion(version)\n const min = parseVersion(minVersion)\n if (v.major !== min.major) return v.major > min.major\n if (v.minor !== min.minor) return v.minor > min.minor\n return v.patch >= min.patch\n}\n"]}
|