tailwind-styled-v4 5.0.36 → 5.0.38

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.
Files changed (163) hide show
  1. package/dist/analyzer.d.mts +152 -5
  2. package/dist/analyzer.d.ts +152 -5
  3. package/dist/analyzer.js +213 -161
  4. package/dist/analyzer.js.map +1 -1
  5. package/dist/analyzer.mjs +118 -82
  6. package/dist/analyzer.mjs.map +1 -1
  7. package/dist/animate.d.mts +30 -3
  8. package/dist/animate.d.ts +30 -3
  9. package/dist/animate.js +131 -87
  10. package/dist/animate.js.map +1 -1
  11. package/dist/animate.mjs +28 -14
  12. package/dist/animate.mjs.map +1 -1
  13. package/dist/atomic.js +105 -68
  14. package/dist/atomic.js.map +1 -1
  15. package/dist/atomic.mjs +40 -13
  16. package/dist/atomic.mjs.map +1 -1
  17. package/dist/cli.js +577 -426
  18. package/dist/cli.js.map +1 -1
  19. package/dist/cli.mjs +466 -304
  20. package/dist/cli.mjs.map +1 -1
  21. package/dist/compiler.d.mts +5 -0
  22. package/dist/compiler.d.ts +5 -0
  23. package/dist/compiler.js +826 -508
  24. package/dist/compiler.js.map +1 -1
  25. package/dist/compiler.mjs +287 -29
  26. package/dist/compiler.mjs.map +1 -1
  27. package/dist/dashboard.js +71 -41
  28. package/dist/dashboard.js.map +1 -1
  29. package/dist/dashboard.mjs +12 -6
  30. package/dist/dashboard.mjs.map +1 -1
  31. package/dist/devtools.d.mts +88 -2
  32. package/dist/devtools.d.ts +88 -2
  33. package/dist/devtools.js +333 -289
  34. package/dist/devtools.js.map +1 -1
  35. package/dist/devtools.mjs +26 -11
  36. package/dist/devtools.mjs.map +1 -1
  37. package/dist/engine.d.mts +557 -6
  38. package/dist/engine.d.ts +557 -6
  39. package/dist/engine.js +679 -502
  40. package/dist/engine.js.map +1 -1
  41. package/dist/engine.mjs +467 -307
  42. package/dist/engine.mjs.map +1 -1
  43. package/dist/index.d.mts +180 -127
  44. package/dist/index.d.ts +180 -127
  45. package/dist/index.js +1329 -7441
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.mjs +1266 -7385
  48. package/dist/index.mjs.map +1 -1
  49. package/dist/next.js +318 -243
  50. package/dist/next.js.map +1 -1
  51. package/dist/next.mjs +256 -181
  52. package/dist/next.mjs.map +1 -1
  53. package/dist/plugin-api.d.mts +4 -2
  54. package/dist/plugin-api.d.ts +4 -2
  55. package/dist/plugin-api.js +93 -49
  56. package/dist/plugin-api.js.map +1 -1
  57. package/dist/plugin-api.mjs +26 -6
  58. package/dist/plugin-api.mjs.map +1 -1
  59. package/dist/plugin-registry.js +103 -62
  60. package/dist/plugin-registry.js.map +1 -1
  61. package/dist/plugin-registry.mjs +53 -35
  62. package/dist/plugin-registry.mjs.map +1 -1
  63. package/dist/plugin.d.mts +165 -5
  64. package/dist/plugin.d.ts +165 -5
  65. package/dist/plugin.js +115 -50
  66. package/dist/plugin.js.map +1 -1
  67. package/dist/plugin.mjs +44 -6
  68. package/dist/plugin.mjs.map +1 -1
  69. package/dist/preset.js +47 -15
  70. package/dist/preset.js.map +1 -1
  71. package/dist/preset.mjs +13 -5
  72. package/dist/preset.mjs.map +1 -1
  73. package/dist/rspack.js +82 -50
  74. package/dist/rspack.js.map +1 -1
  75. package/dist/rspack.mjs +20 -12
  76. package/dist/rspack.mjs.map +1 -1
  77. package/dist/runtime-css.js +62 -24
  78. package/dist/runtime-css.js.map +1 -1
  79. package/dist/runtime-css.mjs +15 -7
  80. package/dist/runtime-css.mjs.map +1 -1
  81. package/dist/runtime.d.mts +38 -3
  82. package/dist/runtime.d.ts +38 -3
  83. package/dist/runtime.js +97 -44
  84. package/dist/runtime.js.map +1 -1
  85. package/dist/runtime.mjs +31 -8
  86. package/dist/runtime.mjs.map +1 -1
  87. package/dist/scanner.d.mts +58 -4
  88. package/dist/scanner.d.ts +58 -4
  89. package/dist/scanner.js +163 -120
  90. package/dist/scanner.js.map +1 -1
  91. package/dist/scanner.mjs +67 -39
  92. package/dist/scanner.mjs.map +1 -1
  93. package/dist/shared.d.mts +185 -3
  94. package/dist/shared.d.ts +185 -3
  95. package/dist/shared.js +441 -295
  96. package/dist/shared.js.map +1 -1
  97. package/dist/shared.mjs +253 -122
  98. package/dist/shared.mjs.map +1 -1
  99. package/dist/storybook-addon.d.mts +2 -2
  100. package/dist/storybook-addon.d.ts +2 -2
  101. package/dist/storybook-addon.js +39 -10
  102. package/dist/storybook-addon.js.map +1 -1
  103. package/dist/storybook-addon.mjs +8 -3
  104. package/dist/storybook-addon.mjs.map +1 -1
  105. package/dist/svelte.d.mts +2 -1
  106. package/dist/svelte.d.ts +2 -1
  107. package/dist/svelte.js +88 -64
  108. package/dist/svelte.js.map +1 -1
  109. package/dist/svelte.mjs +28 -13
  110. package/dist/svelte.mjs.map +1 -1
  111. package/dist/syntax.js +68 -37
  112. package/dist/syntax.js.map +1 -1
  113. package/dist/syntax.mjs +8 -7
  114. package/dist/syntax.mjs.map +1 -1
  115. package/dist/testing.js +55 -18
  116. package/dist/testing.js.map +1 -1
  117. package/dist/testing.mjs +16 -3
  118. package/dist/testing.mjs.map +1 -1
  119. package/dist/theme.d.mts +38 -3
  120. package/dist/theme.d.ts +38 -3
  121. package/dist/theme.js +131 -74
  122. package/dist/theme.js.map +1 -1
  123. package/dist/theme.mjs +42 -13
  124. package/dist/theme.mjs.map +1 -1
  125. package/dist/turbopackLoader.js +150 -116
  126. package/dist/turbopackLoader.js.map +1 -1
  127. package/dist/turbopackLoader.mjs +124 -81
  128. package/dist/turbopackLoader.mjs.map +1 -1
  129. package/dist/tw.js +560 -421
  130. package/dist/tw.js.map +1 -1
  131. package/dist/tw.mjs +460 -302
  132. package/dist/tw.mjs.map +1 -1
  133. package/dist/vite.js +561 -446
  134. package/dist/vite.js.map +1 -1
  135. package/dist/vite.mjs +433 -321
  136. package/dist/vite.mjs.map +1 -1
  137. package/dist/vue.d.mts +4 -1
  138. package/dist/vue.d.ts +4 -1
  139. package/dist/vue.js +95 -70
  140. package/dist/vue.js.map +1 -1
  141. package/dist/vue.mjs +30 -14
  142. package/dist/vue.mjs.map +1 -1
  143. package/dist/webpackLoader.js +110 -78
  144. package/dist/webpackLoader.js.map +1 -1
  145. package/dist/webpackLoader.mjs +45 -17
  146. package/dist/webpackLoader.mjs.map +1 -1
  147. package/native/tailwind-styled-native.linux-x64-gnu.node +0 -0
  148. package/native/tailwind-styled-native.node +0 -0
  149. package/package.json +3 -1
  150. package/dist/analyzeWorkspace-B1_XRfdl.d.ts +0 -134
  151. package/dist/analyzeWorkspace-hYfu4Hg3.d.mts +0 -134
  152. package/dist/index-DQI6O24n.d.mts +0 -464
  153. package/dist/index-NDINUhLN.d.mts +0 -90
  154. package/dist/index-NDINUhLN.d.ts +0 -90
  155. package/dist/index-UkYbyBkR.d.ts +0 -464
  156. package/dist/liveTokenEngine-CN9ian1R.d.ts +0 -38
  157. package/dist/liveTokenEngine-DKoWRtqH.d.mts +0 -38
  158. package/dist/schemas-DR-SLxZZ.d.mts +0 -59
  159. package/dist/schemas-DR-SLxZZ.d.ts +0 -59
  160. package/dist/trace-Dz4vmZdy.d.mts +0 -96
  161. package/dist/trace-Dz4vmZdy.d.ts +0 -96
  162. package/dist/types-DXr2PmGP.d.mts +0 -31
  163. package/dist/types-DXr2PmGP.d.ts +0 -31
@@ -1,7 +1,154 @@
1
- import { C as ClassToCssOptions, a as ClassToCssResult, c as collectClassCounts, b as buildDistribution } from './analyzeWorkspace-hYfu4Hg3.mjs';
2
- export { A as AnalyzerOptions, d as AnalyzerReport, e as AnalyzerSemanticReport, f as ClassConflict, g as ClassUsage, h as analyzeWorkspace } from './analyzeWorkspace-hYfu4Hg3.mjs';
3
- import './schemas-DR-SLxZZ.mjs';
4
- import 'zod';
1
+ import { z } from 'zod';
2
+
3
+ declare const ScanWorkspaceOptionsSchema: z.ZodObject<{
4
+ includeExtensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
5
+ ignoreDirectories: z.ZodOptional<z.ZodArray<z.ZodString>>;
6
+ useCache: z.ZodOptional<z.ZodBoolean>;
7
+ cacheDir: z.ZodOptional<z.ZodString>;
8
+ smartInvalidation: z.ZodOptional<z.ZodBoolean>;
9
+ }, z.core.$strip>;
10
+ type ScanWorkspaceOptions = z.infer<typeof ScanWorkspaceOptionsSchema>;
11
+ declare const ScanWorkspaceResultSchema: z.ZodObject<{
12
+ files: z.ZodArray<z.ZodObject<{
13
+ file: z.ZodString;
14
+ classes: z.ZodArray<z.ZodString>;
15
+ hash: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>>;
17
+ totalFiles: z.ZodNumber;
18
+ uniqueClasses: z.ZodArray<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ type ScanWorkspaceResult = z.infer<typeof ScanWorkspaceResultSchema>;
21
+
22
+ /**
23
+ * Public type contracts for @tailwind-styled/analyzer.
24
+ * Keep this file aligned with the runtime report shape exposed by src/index.ts.
25
+ */
26
+
27
+ interface ClassUsage {
28
+ readonly name: string;
29
+ readonly count: number;
30
+ readonly isUnused?: boolean;
31
+ readonly isConflict?: boolean;
32
+ }
33
+ interface ClassConflict {
34
+ readonly className: string;
35
+ readonly variants: readonly string[];
36
+ readonly classes: readonly string[];
37
+ readonly message: string;
38
+ }
39
+ interface AnalyzerClassStats {
40
+ readonly all: readonly ClassUsage[];
41
+ readonly top: readonly ClassUsage[];
42
+ readonly frequent: readonly ClassUsage[];
43
+ readonly unique: readonly ClassUsage[];
44
+ readonly distribution: Readonly<Record<string, number>>;
45
+ }
46
+ interface TailwindConfigSummary {
47
+ readonly path: string;
48
+ readonly loaded: boolean;
49
+ readonly safelistCount: number;
50
+ readonly customUtilityCount: number;
51
+ readonly warning?: string;
52
+ }
53
+ interface AnalyzerSemanticReport {
54
+ readonly unusedClasses: readonly ClassUsage[];
55
+ readonly unknownClasses: readonly ClassUsage[];
56
+ readonly conflicts: readonly ClassConflict[];
57
+ readonly tailwindConfig?: TailwindConfigSummary;
58
+ }
59
+ interface AnalyzerReport {
60
+ readonly root: string;
61
+ readonly totalFiles: number;
62
+ readonly uniqueClassCount: number;
63
+ readonly totalClassOccurrences: number;
64
+ readonly classStats: AnalyzerClassStats;
65
+ /** Alias for classStats.top — backward compat & test contract */
66
+ readonly topClasses: readonly ClassUsage[];
67
+ readonly safelist: readonly string[];
68
+ readonly semantic?: AnalyzerSemanticReport;
69
+ }
70
+ interface AnalyzerOptions {
71
+ readonly scanner?: ScanWorkspaceOptions;
72
+ readonly classStats?: {
73
+ readonly top?: number;
74
+ readonly frequentThreshold?: number;
75
+ };
76
+ readonly includeClass?: (className: string) => boolean;
77
+ readonly semantic?: boolean | {
78
+ readonly tailwindConfigPath?: string;
79
+ };
80
+ }
81
+ interface ClassToCssOptions {
82
+ readonly prefix?: string | null;
83
+ readonly strict?: boolean;
84
+ }
85
+ interface ClassToCssResult {
86
+ readonly inputClasses: readonly string[];
87
+ readonly css: string;
88
+ readonly declarations: string;
89
+ readonly resolvedClasses: readonly string[];
90
+ readonly unknownClasses: readonly string[];
91
+ readonly sizeBytes: number;
92
+ }
93
+ interface NativeAnalyzerBinding {
94
+ analyzeClassesWorkspace?(filesJson: string, cwd: string, flags: number): unknown;
95
+ analyzeClasses(filesJson: string, cwd: string, flags: number): unknown;
96
+ compileCss?: (classes: string[], prefix: string | null) => unknown;
97
+ /** Detect conflicting Tailwind utilities in a usage list. */
98
+ detectClassConflicts?(usagesJson: string): {
99
+ conflicts: Array<{
100
+ group: string;
101
+ variantKey: string;
102
+ classes: string[];
103
+ message: string;
104
+ }>;
105
+ conflictedClassNames: string[];
106
+ };
107
+ /** Classify classes as known/unknown Tailwind utilities. */
108
+ classifyKnownClasses?(classes: string[], safelist: string[], customUtilities: string[]): Array<{
109
+ className: string;
110
+ isKnown: boolean;
111
+ variantKey: string;
112
+ baseClass: string;
113
+ utilityPrefix: string;
114
+ isArbitrary: boolean;
115
+ }>;
116
+ /** Map Tailwind class base → conflict group name. Return "" if no group. */
117
+ resolveConflictGroup?(base: string): string;
118
+ /** Aggregate class counts from scan files JSON. */
119
+ collectClassCounts?(filesJson: string): Array<{
120
+ name: string;
121
+ count: number;
122
+ }>;
123
+ /** Compute frequency distribution buckets for class usages. */
124
+ computeClassStats?(usagesJson: string, topLimit: number, frequentThreshold: number): {
125
+ totalClassOccurrences: number;
126
+ topJson: string;
127
+ frequentJson: string;
128
+ uniqueJson: string;
129
+ };
130
+ buildDistribution?(usagesJson: string): {
131
+ once: number;
132
+ few: number;
133
+ moderate: number;
134
+ frequent: number;
135
+ };
136
+ }
137
+
138
+ declare function requireNativeBinding(): Promise<NativeAnalyzerBinding>;
139
+
140
+ declare function collectClassCounts(scan: ScanWorkspaceResult): Promise<Map<string, number>>;
141
+ declare function buildDistribution(usages: ClassUsage[], native?: Awaited<ReturnType<typeof requireNativeBinding>>): Promise<Record<string, number>>;
142
+ /**
143
+ * Analyze Tailwind class usage in a workspace and return usage statistics.
144
+ * Set `semantic.tailwindConfigPath` to override Tailwind config lookup.
145
+ * @example
146
+ * const report = await analyzeWorkspace("./src", {
147
+ * classStats: { top: 20, frequentThreshold: 2 },
148
+ * semantic: { tailwindConfigPath: "tailwind.config.js" },
149
+ * })
150
+ */
151
+ declare function analyzeWorkspace(root: string, options?: AnalyzerOptions): Promise<AnalyzerReport>;
5
152
 
6
153
  /**
7
154
  * Convert Tailwind class input into atomic CSS output via native binding.
@@ -72,4 +219,4 @@ declare const __internal: {
72
219
  };
73
220
  };
74
221
 
75
- export { ClassToCssOptions, ClassToCssResult, __internal, classToCss };
222
+ export { type AnalyzerOptions, type AnalyzerReport, type AnalyzerSemanticReport, type ClassConflict, type ClassToCssOptions, type ClassToCssResult, type ClassUsage, __internal, analyzeWorkspace, classToCss };
@@ -1,7 +1,154 @@
1
- import { C as ClassToCssOptions, a as ClassToCssResult, c as collectClassCounts, b as buildDistribution } from './analyzeWorkspace-B1_XRfdl.js';
2
- export { A as AnalyzerOptions, d as AnalyzerReport, e as AnalyzerSemanticReport, f as ClassConflict, g as ClassUsage, h as analyzeWorkspace } from './analyzeWorkspace-B1_XRfdl.js';
3
- import './schemas-DR-SLxZZ.js';
4
- import 'zod';
1
+ import { z } from 'zod';
2
+
3
+ declare const ScanWorkspaceOptionsSchema: z.ZodObject<{
4
+ includeExtensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
5
+ ignoreDirectories: z.ZodOptional<z.ZodArray<z.ZodString>>;
6
+ useCache: z.ZodOptional<z.ZodBoolean>;
7
+ cacheDir: z.ZodOptional<z.ZodString>;
8
+ smartInvalidation: z.ZodOptional<z.ZodBoolean>;
9
+ }, z.core.$strip>;
10
+ type ScanWorkspaceOptions = z.infer<typeof ScanWorkspaceOptionsSchema>;
11
+ declare const ScanWorkspaceResultSchema: z.ZodObject<{
12
+ files: z.ZodArray<z.ZodObject<{
13
+ file: z.ZodString;
14
+ classes: z.ZodArray<z.ZodString>;
15
+ hash: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>>;
17
+ totalFiles: z.ZodNumber;
18
+ uniqueClasses: z.ZodArray<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ type ScanWorkspaceResult = z.infer<typeof ScanWorkspaceResultSchema>;
21
+
22
+ /**
23
+ * Public type contracts for @tailwind-styled/analyzer.
24
+ * Keep this file aligned with the runtime report shape exposed by src/index.ts.
25
+ */
26
+
27
+ interface ClassUsage {
28
+ readonly name: string;
29
+ readonly count: number;
30
+ readonly isUnused?: boolean;
31
+ readonly isConflict?: boolean;
32
+ }
33
+ interface ClassConflict {
34
+ readonly className: string;
35
+ readonly variants: readonly string[];
36
+ readonly classes: readonly string[];
37
+ readonly message: string;
38
+ }
39
+ interface AnalyzerClassStats {
40
+ readonly all: readonly ClassUsage[];
41
+ readonly top: readonly ClassUsage[];
42
+ readonly frequent: readonly ClassUsage[];
43
+ readonly unique: readonly ClassUsage[];
44
+ readonly distribution: Readonly<Record<string, number>>;
45
+ }
46
+ interface TailwindConfigSummary {
47
+ readonly path: string;
48
+ readonly loaded: boolean;
49
+ readonly safelistCount: number;
50
+ readonly customUtilityCount: number;
51
+ readonly warning?: string;
52
+ }
53
+ interface AnalyzerSemanticReport {
54
+ readonly unusedClasses: readonly ClassUsage[];
55
+ readonly unknownClasses: readonly ClassUsage[];
56
+ readonly conflicts: readonly ClassConflict[];
57
+ readonly tailwindConfig?: TailwindConfigSummary;
58
+ }
59
+ interface AnalyzerReport {
60
+ readonly root: string;
61
+ readonly totalFiles: number;
62
+ readonly uniqueClassCount: number;
63
+ readonly totalClassOccurrences: number;
64
+ readonly classStats: AnalyzerClassStats;
65
+ /** Alias for classStats.top — backward compat & test contract */
66
+ readonly topClasses: readonly ClassUsage[];
67
+ readonly safelist: readonly string[];
68
+ readonly semantic?: AnalyzerSemanticReport;
69
+ }
70
+ interface AnalyzerOptions {
71
+ readonly scanner?: ScanWorkspaceOptions;
72
+ readonly classStats?: {
73
+ readonly top?: number;
74
+ readonly frequentThreshold?: number;
75
+ };
76
+ readonly includeClass?: (className: string) => boolean;
77
+ readonly semantic?: boolean | {
78
+ readonly tailwindConfigPath?: string;
79
+ };
80
+ }
81
+ interface ClassToCssOptions {
82
+ readonly prefix?: string | null;
83
+ readonly strict?: boolean;
84
+ }
85
+ interface ClassToCssResult {
86
+ readonly inputClasses: readonly string[];
87
+ readonly css: string;
88
+ readonly declarations: string;
89
+ readonly resolvedClasses: readonly string[];
90
+ readonly unknownClasses: readonly string[];
91
+ readonly sizeBytes: number;
92
+ }
93
+ interface NativeAnalyzerBinding {
94
+ analyzeClassesWorkspace?(filesJson: string, cwd: string, flags: number): unknown;
95
+ analyzeClasses(filesJson: string, cwd: string, flags: number): unknown;
96
+ compileCss?: (classes: string[], prefix: string | null) => unknown;
97
+ /** Detect conflicting Tailwind utilities in a usage list. */
98
+ detectClassConflicts?(usagesJson: string): {
99
+ conflicts: Array<{
100
+ group: string;
101
+ variantKey: string;
102
+ classes: string[];
103
+ message: string;
104
+ }>;
105
+ conflictedClassNames: string[];
106
+ };
107
+ /** Classify classes as known/unknown Tailwind utilities. */
108
+ classifyKnownClasses?(classes: string[], safelist: string[], customUtilities: string[]): Array<{
109
+ className: string;
110
+ isKnown: boolean;
111
+ variantKey: string;
112
+ baseClass: string;
113
+ utilityPrefix: string;
114
+ isArbitrary: boolean;
115
+ }>;
116
+ /** Map Tailwind class base → conflict group name. Return "" if no group. */
117
+ resolveConflictGroup?(base: string): string;
118
+ /** Aggregate class counts from scan files JSON. */
119
+ collectClassCounts?(filesJson: string): Array<{
120
+ name: string;
121
+ count: number;
122
+ }>;
123
+ /** Compute frequency distribution buckets for class usages. */
124
+ computeClassStats?(usagesJson: string, topLimit: number, frequentThreshold: number): {
125
+ totalClassOccurrences: number;
126
+ topJson: string;
127
+ frequentJson: string;
128
+ uniqueJson: string;
129
+ };
130
+ buildDistribution?(usagesJson: string): {
131
+ once: number;
132
+ few: number;
133
+ moderate: number;
134
+ frequent: number;
135
+ };
136
+ }
137
+
138
+ declare function requireNativeBinding(): Promise<NativeAnalyzerBinding>;
139
+
140
+ declare function collectClassCounts(scan: ScanWorkspaceResult): Promise<Map<string, number>>;
141
+ declare function buildDistribution(usages: ClassUsage[], native?: Awaited<ReturnType<typeof requireNativeBinding>>): Promise<Record<string, number>>;
142
+ /**
143
+ * Analyze Tailwind class usage in a workspace and return usage statistics.
144
+ * Set `semantic.tailwindConfigPath` to override Tailwind config lookup.
145
+ * @example
146
+ * const report = await analyzeWorkspace("./src", {
147
+ * classStats: { top: 20, frequentThreshold: 2 },
148
+ * semantic: { tailwindConfigPath: "tailwind.config.js" },
149
+ * })
150
+ */
151
+ declare function analyzeWorkspace(root: string, options?: AnalyzerOptions): Promise<AnalyzerReport>;
5
152
 
6
153
  /**
7
154
  * Convert Tailwind class input into atomic CSS output via native binding.
@@ -72,4 +219,4 @@ declare const __internal: {
72
219
  };
73
220
  };
74
221
 
75
- export { ClassToCssOptions, ClassToCssResult, __internal, classToCss };
222
+ export { type AnalyzerOptions, type AnalyzerReport, type AnalyzerSemanticReport, type ClassConflict, type ClassToCssOptions, type ClassToCssResult, type ClassUsage, __internal, analyzeWorkspace, classToCss };