@buoy-design/scanners 0.2.0 → 0.2.26

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 (110) hide show
  1. package/LICENSE +21 -0
  2. package/dist/design-systems/index.d.ts +6 -0
  3. package/dist/design-systems/index.d.ts.map +1 -0
  4. package/dist/design-systems/index.js +6 -0
  5. package/dist/design-systems/index.js.map +1 -0
  6. package/dist/design-systems/library-detector.d.ts +53 -0
  7. package/dist/design-systems/library-detector.d.ts.map +1 -0
  8. package/dist/design-systems/library-detector.js +183 -0
  9. package/dist/design-systems/library-detector.js.map +1 -0
  10. package/dist/extractors/css-in-js.d.ts +20 -0
  11. package/dist/extractors/css-in-js.d.ts.map +1 -0
  12. package/dist/extractors/css-in-js.js +284 -0
  13. package/dist/extractors/css-in-js.js.map +1 -0
  14. package/dist/extractors/html-style.d.ts +1 -1
  15. package/dist/extractors/html-style.d.ts.map +1 -1
  16. package/dist/extractors/index.d.ts +1 -0
  17. package/dist/extractors/index.d.ts.map +1 -1
  18. package/dist/extractors/index.js +1 -0
  19. package/dist/extractors/index.js.map +1 -1
  20. package/dist/figma/client.d.ts +4 -0
  21. package/dist/figma/client.d.ts.map +1 -1
  22. package/dist/figma/client.js.map +1 -1
  23. package/dist/figma/component-scanner.d.ts +67 -1
  24. package/dist/figma/component-scanner.d.ts.map +1 -1
  25. package/dist/figma/component-scanner.js +162 -1
  26. package/dist/figma/component-scanner.js.map +1 -1
  27. package/dist/figma/index.d.ts +1 -1
  28. package/dist/figma/index.d.ts.map +1 -1
  29. package/dist/figma/index.js.map +1 -1
  30. package/dist/git/angular-scanner.d.ts +78 -1
  31. package/dist/git/angular-scanner.d.ts.map +1 -1
  32. package/dist/git/angular-scanner.js +249 -6
  33. package/dist/git/angular-scanner.js.map +1 -1
  34. package/dist/git/index.d.ts +4 -3
  35. package/dist/git/index.d.ts.map +1 -1
  36. package/dist/git/index.js +1 -0
  37. package/dist/git/index.js.map +1 -1
  38. package/dist/git/nextjs-scanner.d.ts +190 -0
  39. package/dist/git/nextjs-scanner.d.ts.map +1 -0
  40. package/dist/git/nextjs-scanner.js +979 -0
  41. package/dist/git/nextjs-scanner.js.map +1 -0
  42. package/dist/git/react-scanner.d.ts +74 -1
  43. package/dist/git/react-scanner.d.ts.map +1 -1
  44. package/dist/git/react-scanner.js +223 -9
  45. package/dist/git/react-scanner.js.map +1 -1
  46. package/dist/git/token-scanner.d.ts.map +1 -1
  47. package/dist/git/token-scanner.js +32 -2
  48. package/dist/git/token-scanner.js.map +1 -1
  49. package/dist/git/vue-scanner.d.ts +43 -1
  50. package/dist/git/vue-scanner.d.ts.map +1 -1
  51. package/dist/git/vue-scanner.js +130 -4
  52. package/dist/git/vue-scanner.js.map +1 -1
  53. package/dist/index.d.ts +2 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +6 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/signals/extractors/arbitrary-value.d.ts +7 -0
  58. package/dist/signals/extractors/arbitrary-value.d.ts.map +1 -0
  59. package/dist/signals/extractors/arbitrary-value.js +57 -0
  60. package/dist/signals/extractors/arbitrary-value.js.map +1 -0
  61. package/dist/signals/extractors/breakpoint.d.ts +6 -0
  62. package/dist/signals/extractors/breakpoint.d.ts.map +1 -0
  63. package/dist/signals/extractors/breakpoint.js +41 -0
  64. package/dist/signals/extractors/breakpoint.js.map +1 -0
  65. package/dist/signals/extractors/index.d.ts +7 -0
  66. package/dist/signals/extractors/index.d.ts.map +1 -1
  67. package/dist/signals/extractors/index.js +7 -0
  68. package/dist/signals/extractors/index.js.map +1 -1
  69. package/dist/signals/extractors/inline-style.d.ts +6 -0
  70. package/dist/signals/extractors/inline-style.d.ts.map +1 -0
  71. package/dist/signals/extractors/inline-style.js +60 -0
  72. package/dist/signals/extractors/inline-style.js.map +1 -0
  73. package/dist/signals/extractors/radius.d.ts +3 -0
  74. package/dist/signals/extractors/radius.d.ts.map +1 -0
  75. package/dist/signals/extractors/radius.js +32 -0
  76. package/dist/signals/extractors/radius.js.map +1 -0
  77. package/dist/signals/extractors/shadow.d.ts +3 -0
  78. package/dist/signals/extractors/shadow.d.ts.map +1 -0
  79. package/dist/signals/extractors/shadow.js +41 -0
  80. package/dist/signals/extractors/shadow.js.map +1 -0
  81. package/dist/signals/extractors/sizing.d.ts +6 -0
  82. package/dist/signals/extractors/sizing.d.ts.map +1 -0
  83. package/dist/signals/extractors/sizing.js +60 -0
  84. package/dist/signals/extractors/sizing.js.map +1 -0
  85. package/dist/signals/extractors/z-index.d.ts +3 -0
  86. package/dist/signals/extractors/z-index.d.ts.map +1 -0
  87. package/dist/signals/extractors/z-index.js +30 -0
  88. package/dist/signals/extractors/z-index.js.map +1 -0
  89. package/dist/signals/scanner-integration.d.ts.map +1 -1
  90. package/dist/signals/scanner-integration.js +35 -0
  91. package/dist/signals/scanner-integration.js.map +1 -1
  92. package/dist/signals/types.d.ts +4 -4
  93. package/dist/signals/types.d.ts.map +1 -1
  94. package/dist/signals/types.js +4 -0
  95. package/dist/signals/types.js.map +1 -1
  96. package/dist/storybook/extractor.d.ts +106 -1
  97. package/dist/storybook/extractor.d.ts.map +1 -1
  98. package/dist/storybook/extractor.js +325 -5
  99. package/dist/storybook/extractor.js.map +1 -1
  100. package/dist/storybook/index.d.ts +1 -1
  101. package/dist/storybook/index.d.ts.map +1 -1
  102. package/dist/storybook/index.js.map +1 -1
  103. package/dist/tailwind/index.d.ts +1 -1
  104. package/dist/tailwind/index.d.ts.map +1 -1
  105. package/dist/tailwind/index.js.map +1 -1
  106. package/dist/tailwind/scanner.d.ts +32 -0
  107. package/dist/tailwind/scanner.d.ts.map +1 -1
  108. package/dist/tailwind/scanner.js +105 -0
  109. package/dist/tailwind/scanner.js.map +1 -1
  110. package/package.json +12 -12
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Buoy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Design System Detection
3
+ * Detects which UI component libraries are in use.
4
+ */
5
+ export { detectDesignSystemLibraries, DESIGN_SYSTEM_LIBRARIES, type DesignSystemLibrary, type LibraryDetectionResult, } from './library-detector.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/design-systems/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Design System Detection
3
+ * Detects which UI component libraries are in use.
4
+ */
5
+ export { detectDesignSystemLibraries, DESIGN_SYSTEM_LIBRARIES, } from './library-detector.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/design-systems/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GAGxB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Design System Library Detector
3
+ * Detects which design system libraries are in use and which components are imported.
4
+ */
5
+ /**
6
+ * Information about a detected design system library
7
+ */
8
+ export interface DesignSystemLibrary {
9
+ /** Normalized library name */
10
+ name: string;
11
+ /** Primary package name */
12
+ package: string;
13
+ /** Version from package.json */
14
+ version: string;
15
+ /** Components imported from this library */
16
+ components: string[];
17
+ /** Count of unique components */
18
+ componentCount: number;
19
+ }
20
+ /**
21
+ * Result of library detection
22
+ */
23
+ export interface LibraryDetectionResult {
24
+ /** Detected libraries with usage details */
25
+ libraries: DesignSystemLibrary[];
26
+ /** True if multiple UI libraries detected (potential drift) */
27
+ hasMultipleLibraries: boolean;
28
+ }
29
+ /**
30
+ * Configuration for each supported design system library
31
+ */
32
+ interface LibraryConfig {
33
+ /** Package names to look for in package.json */
34
+ packages: string[];
35
+ /** Regex pattern to match package names (for scoped packages) */
36
+ packagePattern?: RegExp;
37
+ /** Regex to find imports in source files */
38
+ importPattern: RegExp;
39
+ /** Regex to extract component names from imports */
40
+ componentPattern: RegExp;
41
+ /** If true, component name comes from package name (e.g., @radix-ui/react-dialog → Dialog) */
42
+ componentFromPackage?: boolean;
43
+ }
44
+ /**
45
+ * Supported design system libraries
46
+ */
47
+ export declare const DESIGN_SYSTEM_LIBRARIES: Record<string, LibraryConfig>;
48
+ /**
49
+ * Detect design system libraries in a project
50
+ */
51
+ export declare function detectDesignSystemLibraries(projectRoot: string): Promise<LibraryDetectionResult>;
52
+ export {};
53
+ //# sourceMappingURL=library-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-detector.d.ts","sourceRoot":"","sources":["../../src/design-systems/library-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,+DAA+D;IAC/D,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAkCjE,CAAC;AAEF;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAwJjC"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Design System Library Detector
3
+ * Detects which design system libraries are in use and which components are imported.
4
+ */
5
+ import { readFile } from 'fs/promises';
6
+ import { join } from 'path';
7
+ import { glob } from 'glob';
8
+ /**
9
+ * Supported design system libraries
10
+ */
11
+ export const DESIGN_SYSTEM_LIBRARIES = {
12
+ 'chakra-ui': {
13
+ packages: ['@chakra-ui/react', '@chakra-ui/core'],
14
+ importPattern: /@chakra-ui\/(react|core)/,
15
+ componentPattern: /import\s+\{([^}]+)\}\s+from\s+['"]@chakra-ui\/(react|core)['"]/g,
16
+ },
17
+ 'radix-ui': {
18
+ packages: [],
19
+ packagePattern: /^@radix-ui\/react-/,
20
+ importPattern: /@radix-ui\/react-/,
21
+ componentPattern: /from\s+['"]@radix-ui\/react-([a-z-]+)['"]/gi,
22
+ componentFromPackage: true,
23
+ },
24
+ 'shadcn-ui': {
25
+ packages: [],
26
+ importPattern: /@\/components\/ui\//,
27
+ componentPattern: /from\s+['"]@\/components\/ui\/([^'"]+)['"]/g,
28
+ componentFromPackage: true,
29
+ },
30
+ 'mui': {
31
+ packages: ['@mui/material', '@mui/core', '@material-ui/core'],
32
+ importPattern: /@mui\/(material|core)|@material-ui\/core/,
33
+ componentPattern: /import\s+\{([^}]+)\}\s+from\s+['"]@mui\/(material|core)['"]/g,
34
+ },
35
+ 'ant-design': {
36
+ packages: ['antd'],
37
+ importPattern: /['"]antd['"]/,
38
+ componentPattern: /import\s+\{([^}]+)\}\s+from\s+['"]antd['"]/g,
39
+ },
40
+ 'mantine': {
41
+ packages: ['@mantine/core', '@mantine/hooks'],
42
+ importPattern: /@mantine\/(core|hooks)/,
43
+ componentPattern: /import\s+\{([^}]+)\}\s+from\s+['"]@mantine\/(core|hooks)['"]/g,
44
+ },
45
+ };
46
+ /**
47
+ * Detect design system libraries in a project
48
+ */
49
+ export async function detectDesignSystemLibraries(projectRoot) {
50
+ // Read package.json
51
+ const packageJsonPath = join(projectRoot, 'package.json');
52
+ let packageJson;
53
+ try {
54
+ const content = await readFile(packageJsonPath, 'utf-8');
55
+ packageJson = JSON.parse(content);
56
+ }
57
+ catch {
58
+ // No package.json, return empty result
59
+ return { libraries: [], hasMultipleLibraries: false };
60
+ }
61
+ const allDependencies = {
62
+ ...packageJson.dependencies,
63
+ ...packageJson.devDependencies,
64
+ };
65
+ // Detect which libraries are installed
66
+ const detectedLibraries = new Map();
67
+ for (const [libraryName, config] of Object.entries(DESIGN_SYSTEM_LIBRARIES)) {
68
+ // Check explicit package names
69
+ for (const pkg of config.packages) {
70
+ if (allDependencies[pkg]) {
71
+ detectedLibraries.set(libraryName, {
72
+ package: pkg,
73
+ version: allDependencies[pkg],
74
+ });
75
+ break;
76
+ }
77
+ }
78
+ // Check package pattern (for scoped packages like @radix-ui/react-*)
79
+ if (config.packagePattern && !detectedLibraries.has(libraryName)) {
80
+ for (const [pkg, version] of Object.entries(allDependencies)) {
81
+ if (config.packagePattern.test(pkg)) {
82
+ detectedLibraries.set(libraryName, {
83
+ package: pkg.replace(/-\w+$/, '-*'), // Normalize to wildcard
84
+ version,
85
+ });
86
+ break;
87
+ }
88
+ }
89
+ }
90
+ }
91
+ // Also check for shadcn/ui by looking for the components/ui directory convention
92
+ // This is detected during import scanning, not package.json
93
+ // Scan source files for imports
94
+ const sourceFiles = await glob('**/*.{tsx,jsx,ts,js}', {
95
+ cwd: projectRoot,
96
+ ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.next/**'],
97
+ absolute: true,
98
+ });
99
+ // Track components per library
100
+ const libraryComponents = new Map();
101
+ for (const file of sourceFiles) {
102
+ let content;
103
+ try {
104
+ content = await readFile(file, 'utf-8');
105
+ }
106
+ catch {
107
+ continue;
108
+ }
109
+ for (const [libraryName, config] of Object.entries(DESIGN_SYSTEM_LIBRARIES)) {
110
+ // Check if this file has imports from this library
111
+ if (!config.importPattern.test(content)) {
112
+ continue;
113
+ }
114
+ // For shadcn-ui, mark as detected if we find the import pattern
115
+ if (libraryName === 'shadcn-ui' && !detectedLibraries.has(libraryName)) {
116
+ detectedLibraries.set(libraryName, {
117
+ package: '@/components/ui/*',
118
+ version: 'local',
119
+ });
120
+ }
121
+ // Extract component names
122
+ if (!libraryComponents.has(libraryName)) {
123
+ libraryComponents.set(libraryName, new Set());
124
+ }
125
+ const components = libraryComponents.get(libraryName);
126
+ // Reset regex state
127
+ config.componentPattern.lastIndex = 0;
128
+ let match;
129
+ while ((match = config.componentPattern.exec(content)) !== null) {
130
+ if (config.componentFromPackage) {
131
+ // Component name is in the match (e.g., "dialog" from @radix-ui/react-dialog)
132
+ const componentName = match[1];
133
+ if (componentName) {
134
+ // Convert kebab-case to PascalCase
135
+ const pascalName = componentName
136
+ .split('-')
137
+ .map(part => part.charAt(0).toUpperCase() + part.slice(1))
138
+ .join('');
139
+ components.add(pascalName);
140
+ }
141
+ }
142
+ else {
143
+ // Components are in a destructured import
144
+ const importList = match[1];
145
+ if (importList) {
146
+ // Parse the import list: { Button, Box, Flex as F }
147
+ const names = importList.split(',').map(s => {
148
+ const trimmed = s.trim();
149
+ // Handle "Foo as Bar" → take "Foo"
150
+ const asIndex = trimmed.indexOf(' as ');
151
+ return asIndex > 0 ? trimmed.slice(0, asIndex).trim() : trimmed;
152
+ }).filter(name =>
153
+ // Filter out non-component imports (hooks, utilities)
154
+ name && /^[A-Z]/.test(name));
155
+ for (const name of names) {
156
+ components.add(name);
157
+ }
158
+ }
159
+ }
160
+ }
161
+ }
162
+ }
163
+ // Build result
164
+ const libraries = [];
165
+ for (const [libraryName, info] of detectedLibraries) {
166
+ const components = libraryComponents.get(libraryName);
167
+ const componentList = components ? Array.from(components).sort() : [];
168
+ libraries.push({
169
+ name: libraryName,
170
+ package: info.package,
171
+ version: info.version,
172
+ components: componentList,
173
+ componentCount: componentList.length,
174
+ });
175
+ }
176
+ // Sort by component count (most used first)
177
+ libraries.sort((a, b) => b.componentCount - a.componentCount);
178
+ return {
179
+ libraries,
180
+ hasMultipleLibraries: libraries.length > 1,
181
+ };
182
+ }
183
+ //# sourceMappingURL=library-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-detector.js","sourceRoot":"","sources":["../../src/design-systems/library-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * CSS-in-JS Style Extractor
3
+ * Extracts styles from styled-components, Emotion, vanilla-extract, Stitches, and Linaria.
4
+ */
5
+ import type { StyleMatch } from './html-style.js';
6
+ /**
7
+ * Supported CSS-in-JS libraries
8
+ */
9
+ export type CssInJsLibrary = 'styled-components' | 'emotion' | 'vanilla-extract' | 'stitches' | 'linaria';
10
+ /**
11
+ * Detect which CSS-in-JS library is used in the file
12
+ * Returns the first detected library or null if none found
13
+ */
14
+ export declare function detectCssInJsLibrary(content: string): CssInJsLibrary | null;
15
+ /**
16
+ * Extract CSS-in-JS styles from file content
17
+ * Handles both template literal and object style patterns
18
+ */
19
+ export declare function extractCssInJsStyles(content: string): StyleMatch[];
20
+ //# sourceMappingURL=css-in-js.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-in-js.d.ts","sourceRoot":"","sources":["../../src/extractors/css-in-js.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,SAAS,GACT,iBAAiB,GACjB,UAAU,GACV,SAAS,CAAC;AA0Bd;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAS3E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAUlE"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * CSS-in-JS Style Extractor
3
+ * Extracts styles from styled-components, Emotion, vanilla-extract, Stitches, and Linaria.
4
+ */
5
+ /**
6
+ * Import patterns for each CSS-in-JS library
7
+ */
8
+ const IMPORT_PATTERNS = {
9
+ 'styled-components': [
10
+ /import\s+.*?\bfrom\s+['"]styled-components['"]/,
11
+ /require\s*\(\s*['"]styled-components['"]\s*\)/,
12
+ ],
13
+ 'emotion': [
14
+ /import\s+.*?\bfrom\s+['"]@emotion\/(styled|react|css)['"]/,
15
+ /require\s*\(\s*['"]@emotion\//,
16
+ ],
17
+ 'vanilla-extract': [
18
+ /import\s+.*?\bfrom\s+['"]@vanilla-extract\/css['"]/,
19
+ ],
20
+ 'stitches': [
21
+ /import\s+.*?\bfrom\s+['"]@stitches\/(react|core)['"]/,
22
+ ],
23
+ 'linaria': [
24
+ /import\s+.*?\bfrom\s+['"]@linaria\/(react|core)['"]/,
25
+ /import\s+.*?\bfrom\s+['"]linaria['"]/,
26
+ ],
27
+ };
28
+ /**
29
+ * Detect which CSS-in-JS library is used in the file
30
+ * Returns the first detected library or null if none found
31
+ */
32
+ export function detectCssInJsLibrary(content) {
33
+ for (const [library, patterns] of Object.entries(IMPORT_PATTERNS)) {
34
+ for (const pattern of patterns) {
35
+ if (pattern.test(content)) {
36
+ return library;
37
+ }
38
+ }
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Extract CSS-in-JS styles from file content
44
+ * Handles both template literal and object style patterns
45
+ */
46
+ export function extractCssInJsStyles(content) {
47
+ const matches = [];
48
+ // Extract template literal styles (styled-components, Emotion, Linaria)
49
+ matches.push(...extractTemplateLiteralStyles(content));
50
+ // Extract object styles (vanilla-extract, Stitches, Emotion object syntax)
51
+ matches.push(...extractObjectStyles(content));
52
+ return matches;
53
+ }
54
+ /**
55
+ * Extract styles from tagged template literals
56
+ * Handles: styled.div`...`, styled(Component)`...`, css`...`, keyframes`...`
57
+ */
58
+ function extractTemplateLiteralStyles(content) {
59
+ const matches = [];
60
+ // Patterns for tagged template literals
61
+ // styled.element`...` or styled.element.attrs(...)`...`
62
+ const styledElementRegex = /styled\.(\w+)(?:\.attrs\([^)]*\))?\s*`([^`]*)`/gs;
63
+ // styled(Component)`...` or styled(Component).attrs(...)`...`
64
+ const styledComponentRegex = /styled\(\s*\w+\s*\)(?:\.attrs\([^)]*\))?\s*`([^`]*)`/gs;
65
+ // css`...` helper (negative lookbehind to avoid matching .css or other identifiers)
66
+ const cssHelperRegex = /(?<![.\w])css\s*`([^`]*)`/gs;
67
+ // keyframes`...`
68
+ const keyframesRegex = /keyframes\s*`([^`]*)`/gs;
69
+ // Process each pattern type
70
+ const processMatches = (regex, fileContent) => {
71
+ let match;
72
+ regex.lastIndex = 0; // Reset regex state
73
+ while ((match = regex.exec(fileContent)) !== null) {
74
+ // Get the CSS content (last capture group)
75
+ const cssContent = match[match.length - 1];
76
+ if (!cssContent)
77
+ continue;
78
+ // Clean up interpolations: replace ${...} with placeholder
79
+ const cleanedCss = cleanInterpolations(cssContent);
80
+ // Calculate line number
81
+ const beforeMatch = fileContent.slice(0, match.index);
82
+ const lineNum = beforeMatch.split('\n').length;
83
+ const lastNewline = beforeMatch.lastIndexOf('\n');
84
+ const column = match.index - lastNewline;
85
+ matches.push({
86
+ css: cleanedCss,
87
+ line: lineNum,
88
+ column,
89
+ context: 'css-in-js',
90
+ });
91
+ }
92
+ };
93
+ processMatches(styledElementRegex, content);
94
+ processMatches(styledComponentRegex, content);
95
+ processMatches(cssHelperRegex, content);
96
+ processMatches(keyframesRegex, content);
97
+ return matches;
98
+ }
99
+ /**
100
+ * Clean interpolations from template literals
101
+ * Replaces ${...} with (dynamic) placeholder
102
+ */
103
+ function cleanInterpolations(css) {
104
+ // Replace ${...} expressions with placeholder
105
+ // Handle nested braces in expressions
106
+ let result = '';
107
+ let i = 0;
108
+ while (i < css.length) {
109
+ if (css[i] === '$' && css[i + 1] === '{') {
110
+ // Find matching closing brace
111
+ let depth = 1;
112
+ let j = i + 2;
113
+ while (j < css.length && depth > 0) {
114
+ if (css[j] === '{')
115
+ depth++;
116
+ else if (css[j] === '}')
117
+ depth--;
118
+ j++;
119
+ }
120
+ result += '(dynamic)';
121
+ i = j;
122
+ }
123
+ else {
124
+ result += css[i];
125
+ i++;
126
+ }
127
+ }
128
+ return result;
129
+ }
130
+ /**
131
+ * Extract styles from object syntax
132
+ * Handles: style({...}), styleVariants({...}), styled('div', {...}), css({...})
133
+ */
134
+ function extractObjectStyles(content) {
135
+ const matches = [];
136
+ // Patterns for object-style CSS-in-JS
137
+ const patterns = [
138
+ // vanilla-extract: style({...})
139
+ /(?<![.\w])style\s*\(\s*\{/g,
140
+ // vanilla-extract: styleVariants({...})
141
+ /styleVariants\s*\(\s*\{/g,
142
+ // Stitches: styled('element', {...}) or styled("element", {...})
143
+ /styled\s*\(\s*['"`]\w+['"`]\s*,\s*\{/g,
144
+ // Emotion object: css({...})
145
+ /(?<![.\w])css\s*\(\s*\{/g,
146
+ ];
147
+ for (const pattern of patterns) {
148
+ let match;
149
+ pattern.lastIndex = 0; // Reset regex state
150
+ while ((match = pattern.exec(content)) !== null) {
151
+ // Find the start of the object (the { after the pattern)
152
+ const objectStart = match.index + match[0].length - 1;
153
+ // Extract balanced braces content
154
+ const objectContent = extractBalancedBraces(content.slice(objectStart));
155
+ if (!objectContent)
156
+ continue;
157
+ // Convert object to CSS-like text
158
+ const css = objectToCss(objectContent);
159
+ if (!css)
160
+ continue;
161
+ // Calculate line number
162
+ const beforeMatch = content.slice(0, match.index);
163
+ const lineNum = beforeMatch.split('\n').length;
164
+ const lastNewline = beforeMatch.lastIndexOf('\n');
165
+ const column = match.index - lastNewline;
166
+ matches.push({
167
+ css,
168
+ line: lineNum,
169
+ column,
170
+ context: 'css-in-js',
171
+ });
172
+ }
173
+ }
174
+ return matches;
175
+ }
176
+ /**
177
+ * Extract content within balanced braces
178
+ */
179
+ function extractBalancedBraces(content) {
180
+ if (content[0] !== '{')
181
+ return null;
182
+ let depth = 0;
183
+ let i = 0;
184
+ let inString = null;
185
+ let inTemplateLiteral = false;
186
+ while (i < content.length) {
187
+ const char = content[i];
188
+ const prevChar = i > 0 ? content[i - 1] : '';
189
+ // Handle escapes
190
+ if (prevChar === '\\' && (inString || inTemplateLiteral)) {
191
+ i++;
192
+ continue;
193
+ }
194
+ // Handle template literals
195
+ if (char === '`' && !inString) {
196
+ inTemplateLiteral = !inTemplateLiteral;
197
+ i++;
198
+ continue;
199
+ }
200
+ if (inTemplateLiteral) {
201
+ i++;
202
+ continue;
203
+ }
204
+ // Handle strings
205
+ if ((char === '"' || char === "'") && !inTemplateLiteral) {
206
+ if (inString === char) {
207
+ inString = null;
208
+ }
209
+ else if (!inString) {
210
+ inString = char;
211
+ }
212
+ i++;
213
+ continue;
214
+ }
215
+ if (inString) {
216
+ i++;
217
+ continue;
218
+ }
219
+ // Count braces
220
+ if (char === '{')
221
+ depth++;
222
+ else if (char === '}')
223
+ depth--;
224
+ if (depth === 0) {
225
+ return content.slice(1, i); // Return content without outer braces
226
+ }
227
+ i++;
228
+ }
229
+ return null;
230
+ }
231
+ /**
232
+ * Convert JavaScript object notation to CSS-like text
233
+ * Simplified version - extracts property: value pairs
234
+ */
235
+ function objectToCss(objectContent) {
236
+ const cssProps = [];
237
+ // Simple regex to find property: value pairs
238
+ // Handles: padding: '24px', color: '#fff', margin: 8
239
+ const propRegex = /(\w+)\s*:\s*(['"`]?)([^,}\n]+)\2/g;
240
+ let match;
241
+ while ((match = propRegex.exec(objectContent)) !== null) {
242
+ let prop = match[1];
243
+ let value = match[3].trim();
244
+ // Skip spread operators and complex expressions
245
+ if (prop === 'rest' || value.startsWith('...') || (value.includes('(') && !isCssFunction(value))) {
246
+ continue;
247
+ }
248
+ // Convert camelCase to kebab-case
249
+ prop = camelToKebab(prop);
250
+ // Remove quotes from value
251
+ value = value.replace(/^['"`]|['"`]$/g, '');
252
+ // Add px to numeric values for spacing properties
253
+ if (/^-?\d+(\.\d+)?$/.test(value) && shouldAddPxUnit(prop)) {
254
+ value = `${value}px`;
255
+ }
256
+ cssProps.push(`${prop}: ${value}`);
257
+ }
258
+ return cssProps.join('; ');
259
+ }
260
+ /**
261
+ * Check if a value is a CSS function
262
+ */
263
+ function isCssFunction(value) {
264
+ const cssFunctions = /^(calc|var|rgb|rgba|hsl|hsla|url|linear-gradient|radial-gradient|min|max|clamp)\s*\(/i;
265
+ return cssFunctions.test(value.trim());
266
+ }
267
+ /**
268
+ * Convert camelCase to kebab-case
269
+ */
270
+ function camelToKebab(str) {
271
+ return str.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`);
272
+ }
273
+ /**
274
+ * Check if a property should have px units added
275
+ */
276
+ function shouldAddPxUnit(prop) {
277
+ const unitlessProps = [
278
+ 'opacity', 'z-index', 'flex', 'flex-grow', 'flex-shrink',
279
+ 'order', 'font-weight', 'line-height', 'orphans', 'widows',
280
+ 'column-count', 'tab-size', 'scale', 'aspect-ratio',
281
+ ];
282
+ return !unitlessProps.includes(prop);
283
+ }
284
+ //# sourceMappingURL=css-in-js.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-in-js.js","sourceRoot":"","sources":["../../src/extractors/css-in-js.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export interface StyleMatch {
8
8
  css: string;
9
9
  line: number;
10
10
  column: number;
11
- context: 'inline' | 'style-block';
11
+ context: 'inline' | 'style-block' | 'css-in-js';
12
12
  }
13
13
  /**
14
14
  * Extract inline style attributes from HTML-like content
@@ -1 +1 @@
1
- {"version":3,"file":"html-style.d.ts","sourceRoot":"","sources":["../../src/extractors/html-style.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,QAAQ,GAAG,aAAa,CAAC;CACnC;AAyKD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CA8CxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAkChE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAKlE"}
1
+ {"version":3,"file":"html-style.d.ts","sourceRoot":"","sources":["../../src/extractors/html-style.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;CACjD;AAyKD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CA8CxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAkChE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAKlE"}
@@ -27,5 +27,6 @@ export declare function extractCssFileStyles(content: string): StyleMatch[];
27
27
  export { extractAllHtmlStyles, extractHtmlStyleAttributes, extractStyleBlocks } from './html-style.js';
28
28
  export { extractJsxStyleObjects } from './jsx-style.js';
29
29
  export { extractDirectiveStyles, extractAngularStyleBindings, extractVueStyleBindings, extractNgStyleBindings } from './directive-style.js';
30
+ export { extractCssInJsStyles, detectCssInJsLibrary, type CssInJsLibrary, } from './css-in-js.js';
30
31
  export { extractClassPatterns, analyzePatternForTokens, extractCvaPatterns, extractSemanticTokens, extractStaticClassStrings, extractBemSemanticClasses, extractCustomPrefixClasses, extractDataAttributePatterns, extractHeadlessUIVariants, extractGroupPeerVariants, extractDataSlotAttributes, extractShortFormDataPatterns, extractDynamicDataAttributes, extractRenderPropClassNames, type ClassPatternMatch, type CvaPattern, type StaticClassStrings, type BemSemanticClass, type DataAttributePattern, type HeadlessUIVariant, type GroupPeerVariant, type DataSlotAttribute, type ShortFormDataPattern, type DynamicDataAttribute, type RenderPropClassName, type ConditionalClass, } from './class-pattern.js';
31
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkDxE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,YAAY,GAEpB,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,GAChF,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAC7E,YAAY,GAAG,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAE5E,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAC7E,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAEtC,KAAK,GAAG,QAAQ,GAEhB,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAE1C,UAAU,GAAG,KAAK,GAAG,UAAU,GAE/B,KAAK,GAEL,eAAe,GAAG,eAAe,GAEjC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,YAAY,CA2BxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,UAAU,EAAE,CAqCvF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAOlE;AAGD,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC5I,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkDxE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,YAAY,GAEpB,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,GAChF,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAC7E,YAAY,GAAG,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAE5E,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAC7E,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAEtC,KAAK,GAAG,QAAQ,GAEhB,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAE1C,UAAU,GAAG,KAAK,GAAG,UAAU,GAE/B,KAAK,GAEL,eAAe,GAAG,eAAe,GAEjC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,YAAY,CA2BxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,UAAU,EAAE,CAqCvF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAOlE;AAGD,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC5I,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC"}