@buoy-design/cli 0.1.0 → 0.1.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/dist/commands/audit.d.ts +3 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +235 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/baseline.d.ts +39 -0
- package/dist/commands/baseline.d.ts.map +1 -0
- package/dist/commands/baseline.js +298 -0
- package/dist/commands/baseline.js.map +1 -0
- package/dist/commands/check.d.ts +16 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +168 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/ci.d.ts +2 -2
- package/dist/commands/ci.d.ts.map +1 -1
- package/dist/commands/ci.js +124 -142
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/compare.d.ts +3 -0
- package/dist/commands/compare.d.ts.map +1 -0
- package/dist/commands/compare.js +170 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/drift.d.ts +1 -1
- package/dist/commands/drift.d.ts.map +1 -1
- package/dist/commands/drift.js +79 -121
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/explain.d.ts +3 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +212 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/graph.d.ts +3 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +430 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/index.d.ts +14 -8
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +14 -8
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +404 -237
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +32 -41
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/scan.d.ts +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +107 -219
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +114 -122
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tokens.d.ts +3 -0
- package/dist/commands/tokens.d.ts.map +1 -0
- package/dist/commands/tokens.js +261 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/config/auto-detect.d.ts +21 -0
- package/dist/config/auto-detect.d.ts.map +1 -0
- package/dist/config/auto-detect.js +278 -0
- package/dist/config/auto-detect.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +17 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +63 -63
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +20 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.d.ts +36 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +37 -0
- package/dist/constants.js.map +1 -0
- package/dist/detect/frameworks.d.ts +11 -2
- package/dist/detect/frameworks.d.ts.map +1 -1
- package/dist/detect/frameworks.js +78 -78
- package/dist/detect/frameworks.js.map +1 -1
- package/dist/detect/index.d.ts +1 -0
- package/dist/detect/index.d.ts.map +1 -1
- package/dist/detect/index.js +3 -0
- package/dist/detect/index.js.map +1 -1
- package/dist/detect/monorepo-patterns.d.ts +54 -0
- package/dist/detect/monorepo-patterns.d.ts.map +1 -0
- package/dist/detect/monorepo-patterns.js +209 -0
- package/dist/detect/monorepo-patterns.js.map +1 -0
- package/dist/detect/project-detector.d.ts +1 -1
- package/dist/detect/project-detector.d.ts.map +1 -1
- package/dist/detect/project-detector.js +132 -0
- package/dist/detect/project-detector.js.map +1 -1
- package/dist/explain/agents.d.ts +31 -0
- package/dist/explain/agents.d.ts.map +1 -0
- package/dist/explain/agents.js +507 -0
- package/dist/explain/agents.js.map +1 -0
- package/dist/hooks/index.d.ts +26 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +283 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -7
- package/dist/index.js.map +1 -1
- package/dist/integrations/github-formatter.d.ts +55 -0
- package/dist/integrations/github-formatter.d.ts.map +1 -0
- package/dist/integrations/github-formatter.js +391 -0
- package/dist/integrations/github-formatter.js.map +1 -0
- package/dist/integrations/github.d.ts +95 -0
- package/dist/integrations/github.d.ts.map +1 -0
- package/dist/integrations/github.js +281 -0
- package/dist/integrations/github.js.map +1 -0
- package/dist/integrations/index.d.ts +4 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +4 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/output/formatters.d.ts.map +1 -1
- package/dist/output/formatters.js +5 -10
- package/dist/output/formatters.js.map +1 -1
- package/dist/scan/orchestrator.d.ts +76 -0
- package/dist/scan/orchestrator.d.ts.map +1 -0
- package/dist/scan/orchestrator.js +247 -0
- package/dist/scan/orchestrator.js.map +1 -0
- package/dist/services/ai-analysis.d.ts +54 -0
- package/dist/services/ai-analysis.d.ts.map +1 -0
- package/dist/services/ai-analysis.js +239 -0
- package/dist/services/ai-analysis.js.map +1 -0
- package/dist/services/drift-analysis.d.ts +77 -0
- package/dist/services/drift-analysis.d.ts.map +1 -0
- package/dist/services/drift-analysis.js +145 -0
- package/dist/services/drift-analysis.js.map +1 -0
- package/package.json +17 -5
- package/dist/commands/__tests__/ci.test.d.ts +0 -2
- package/dist/commands/__tests__/ci.test.d.ts.map +0 -1
- package/dist/commands/__tests__/ci.test.js +0 -33
- package/dist/commands/__tests__/ci.test.js.map +0 -1
- package/dist/commands/bootstrap.d.ts +0 -3
- package/dist/commands/bootstrap.d.ts.map +0 -1
- package/dist/commands/bootstrap.js +0 -458
- package/dist/commands/bootstrap.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -3
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -3
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/loader.d.ts +0 -11
- package/dist/plugins/loader.d.ts.map +0 -1
- package/dist/plugins/loader.js +0 -77
- package/dist/plugins/loader.js.map +0 -1
- package/dist/plugins/registry.d.ts +0 -15
- package/dist/plugins/registry.d.ts.map +0 -1
- package/dist/plugins/registry.js +0 -32
- package/dist/plugins/registry.js.map +0 -1
|
@@ -2,103 +2,100 @@ import { resolve } from 'node:path';
|
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { readFile } from 'node:fs/promises';
|
|
4
4
|
import { glob } from 'glob';
|
|
5
|
+
// Built-in scanners - no plugins needed for these
|
|
6
|
+
export const BUILTIN_SCANNERS = {
|
|
7
|
+
react: { description: 'React/JSX component scanning', detects: 'React components' },
|
|
8
|
+
vue: { description: 'Vue SFC scanning', detects: 'Vue components' },
|
|
9
|
+
svelte: { description: 'Svelte component scanning', detects: 'Svelte components' },
|
|
10
|
+
angular: { description: 'Angular component scanning', detects: 'Angular components' },
|
|
11
|
+
webcomponents: { description: 'Lit/Stencil scanning', detects: 'Web Components' },
|
|
12
|
+
tokens: { description: 'CSS/SCSS/JSON token scanning', detects: 'Design tokens' },
|
|
13
|
+
templates: { description: 'Template scanning (Blade, ERB, Twig)', detects: 'Server templates' },
|
|
14
|
+
tailwind: { description: 'Tailwind config & arbitrary value detection', detects: 'Tailwind CSS' },
|
|
15
|
+
};
|
|
16
|
+
// These require external configuration or APIs (future)
|
|
5
17
|
export const PLUGIN_INFO = {
|
|
6
|
-
react: {
|
|
7
|
-
name: '@buoy-design/plugin-react',
|
|
8
|
-
description: 'Scans React/JSX components for inline styles, deprecated components, and design system inconsistencies.',
|
|
9
|
-
detects: 'React components',
|
|
10
|
-
examples: ['Hardcoded colors in style props', 'Deprecated component usage', 'Missing design tokens'],
|
|
11
|
-
},
|
|
12
|
-
vue: {
|
|
13
|
-
name: '@buoy-design/plugin-vue',
|
|
14
|
-
description: 'Scans Vue single-file components for hardcoded styles and design drift.',
|
|
15
|
-
detects: 'Vue components',
|
|
16
|
-
examples: ['Inline styles in <style> blocks', 'Hardcoded values in templates'],
|
|
17
|
-
},
|
|
18
|
-
svelte: {
|
|
19
|
-
name: '@buoy-design/plugin-svelte',
|
|
20
|
-
description: 'Scans Svelte components for hardcoded styles and design inconsistencies.',
|
|
21
|
-
detects: 'Svelte components',
|
|
22
|
-
examples: ['Hardcoded CSS values', 'Inline style attributes'],
|
|
23
|
-
},
|
|
24
|
-
angular: {
|
|
25
|
-
name: '@buoy-design/plugin-angular',
|
|
26
|
-
description: 'Scans Angular components for hardcoded styles in templates and component styles.',
|
|
27
|
-
detects: 'Angular components',
|
|
28
|
-
examples: ['Inline styles', 'Hardcoded values in .component.css'],
|
|
29
|
-
},
|
|
30
|
-
webcomponents: {
|
|
31
|
-
name: '@buoy-design/plugin-webcomponents',
|
|
32
|
-
description: 'Scans Lit/Stencil web components for hardcoded styles and design drift.',
|
|
33
|
-
detects: 'Web Components (Lit, Stencil)',
|
|
34
|
-
examples: ['Hardcoded CSS in shadow DOM', 'Static style values'],
|
|
35
|
-
},
|
|
36
|
-
css: {
|
|
37
|
-
name: '@buoy-design/plugin-css',
|
|
38
|
-
description: 'Scans CSS for hardcoded colors, spacing, and fonts that should use design tokens.',
|
|
39
|
-
detects: 'CSS files with potential design tokens',
|
|
40
|
-
examples: ['#ff6b6b instead of var(--color-error)', '16px instead of var(--spacing-md)'],
|
|
41
|
-
},
|
|
42
|
-
tailwind: {
|
|
43
|
-
name: '@buoy-design/plugin-tailwind',
|
|
44
|
-
description: 'Analyzes Tailwind config and usage for design token consistency.',
|
|
45
|
-
detects: 'Tailwind CSS configuration',
|
|
46
|
-
examples: ['Custom colors not in design system', 'Arbitrary values like [#ff6b6b]'],
|
|
47
|
-
},
|
|
48
18
|
figma: {
|
|
49
19
|
name: '@buoy-design/plugin-figma',
|
|
50
|
-
description: 'Connects to Figma to compare design tokens
|
|
20
|
+
description: 'Connects to Figma to compare design tokens with your codebase.',
|
|
51
21
|
detects: 'Figma configuration',
|
|
52
22
|
examples: ['Token value drift between Figma and code', 'Missing component implementations'],
|
|
53
23
|
},
|
|
54
24
|
storybook: {
|
|
55
25
|
name: '@buoy-design/plugin-storybook',
|
|
56
|
-
description: 'Scans Storybook stories to verify component coverage
|
|
26
|
+
description: 'Scans Storybook stories to verify component coverage.',
|
|
57
27
|
detects: 'Storybook configuration',
|
|
58
28
|
examples: ['Components without stories', 'Undocumented variants'],
|
|
59
29
|
},
|
|
60
30
|
};
|
|
31
|
+
// Framework detection patterns
|
|
32
|
+
// scanner = built-in (no install needed), plugin = optional enhancement
|
|
61
33
|
const FRAMEWORK_PATTERNS = [
|
|
62
|
-
// React ecosystem
|
|
63
|
-
{ name: 'react',
|
|
64
|
-
{ name: 'next',
|
|
65
|
-
{ name: 'remix',
|
|
66
|
-
{ name: 'gatsby',
|
|
67
|
-
// Vue ecosystem
|
|
68
|
-
{ name: 'vue',
|
|
69
|
-
{ name: 'nuxt',
|
|
70
|
-
// Svelte ecosystem
|
|
71
|
-
{ name: 'svelte',
|
|
72
|
-
{ name: 'sveltekit',
|
|
73
|
-
// Angular
|
|
74
|
-
{ name: 'angular',
|
|
75
|
-
// Web Components
|
|
76
|
-
{ name: 'lit',
|
|
77
|
-
{ name: 'stencil',
|
|
78
|
-
// CSS/Tokens
|
|
79
|
-
{ name: 'tailwind',
|
|
80
|
-
|
|
81
|
-
// Design tools
|
|
34
|
+
// React ecosystem - built-in scanner
|
|
35
|
+
{ name: 'react', scanner: 'react', packages: ['react', 'react-dom'] },
|
|
36
|
+
{ name: 'next', scanner: 'react', packages: ['next'] },
|
|
37
|
+
{ name: 'remix', scanner: 'react', packages: ['@remix-run/react'] },
|
|
38
|
+
{ name: 'gatsby', scanner: 'react', packages: ['gatsby'] },
|
|
39
|
+
// Vue ecosystem - built-in scanner
|
|
40
|
+
{ name: 'vue', scanner: 'vue', packages: ['vue'] },
|
|
41
|
+
{ name: 'nuxt', scanner: 'vue', packages: ['nuxt', 'nuxt3'] },
|
|
42
|
+
// Svelte ecosystem - built-in scanner
|
|
43
|
+
{ name: 'svelte', scanner: 'svelte', packages: ['svelte'] },
|
|
44
|
+
{ name: 'sveltekit', scanner: 'svelte', packages: ['@sveltejs/kit'] },
|
|
45
|
+
// Angular - built-in scanner
|
|
46
|
+
{ name: 'angular', scanner: 'angular', packages: ['@angular/core'] },
|
|
47
|
+
// Web Components - built-in scanner
|
|
48
|
+
{ name: 'lit', scanner: 'webcomponents', packages: ['lit', 'lit-element'] },
|
|
49
|
+
{ name: 'stencil', scanner: 'webcomponents', packages: ['@stencil/core'] },
|
|
50
|
+
// CSS/Tokens - built-in
|
|
51
|
+
{ name: 'tailwind', scanner: 'tailwind', packages: ['tailwindcss'], files: ['tailwind.config.*'] },
|
|
52
|
+
// Design tools - require plugins
|
|
82
53
|
{ name: 'figma', plugin: 'figma', files: ['.figmarc', 'figma.config.*'] },
|
|
83
54
|
{ name: 'storybook', plugin: 'storybook', packages: ['@storybook/react', '@storybook/vue3', '@storybook/svelte'], files: ['.storybook/**'] },
|
|
84
55
|
];
|
|
85
|
-
export async function detectFrameworks(projectRoot) {
|
|
56
|
+
export async function detectFrameworks(projectRoot, monorepoInfo) {
|
|
86
57
|
const detected = [];
|
|
87
|
-
//
|
|
58
|
+
// Collect all dependency names from root and workspace packages
|
|
59
|
+
const allDeps = {};
|
|
60
|
+
// Read root package.json
|
|
88
61
|
const pkgPath = resolve(projectRoot, 'package.json');
|
|
89
|
-
let pkgJson = {};
|
|
90
62
|
if (existsSync(pkgPath)) {
|
|
91
63
|
try {
|
|
92
|
-
pkgJson = JSON.parse(await readFile(pkgPath, 'utf-8'));
|
|
64
|
+
const pkgJson = JSON.parse(await readFile(pkgPath, 'utf-8'));
|
|
65
|
+
Object.assign(allDeps, pkgJson.dependencies, pkgJson.devDependencies);
|
|
93
66
|
}
|
|
94
67
|
catch {
|
|
95
|
-
// Invalid JSON, continue
|
|
68
|
+
// Invalid JSON, continue
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// If monorepo, also check workspace package.json files
|
|
72
|
+
if (monorepoInfo && monorepoInfo.patterns.length > 0) {
|
|
73
|
+
for (const wsPattern of monorepoInfo.patterns) {
|
|
74
|
+
// Convert workspace pattern to package.json glob
|
|
75
|
+
// e.g., "apps/*" -> "apps/*/package.json"
|
|
76
|
+
// e.g., "packages/**/*" -> "packages/**/*/package.json"
|
|
77
|
+
const normalizedPattern = wsPattern.replace(/\/?$/, '');
|
|
78
|
+
const pkgPattern = normalizedPattern.endsWith('*')
|
|
79
|
+
? `${normalizedPattern}/package.json`
|
|
80
|
+
: `${normalizedPattern}/*/package.json`;
|
|
81
|
+
try {
|
|
82
|
+
const matches = await glob(pkgPattern, { cwd: projectRoot, nodir: true });
|
|
83
|
+
for (const match of matches.slice(0, 20)) { // Limit to 20 packages
|
|
84
|
+
try {
|
|
85
|
+
const wsPkgPath = resolve(projectRoot, match);
|
|
86
|
+
const wsPkgJson = JSON.parse(await readFile(wsPkgPath, 'utf-8'));
|
|
87
|
+
Object.assign(allDeps, wsPkgJson.dependencies, wsPkgJson.devDependencies);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Invalid JSON, skip this package
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Glob failed, continue
|
|
96
|
+
}
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
const allDeps = {
|
|
99
|
-
...pkgJson.dependencies,
|
|
100
|
-
...pkgJson.devDependencies,
|
|
101
|
-
};
|
|
102
99
|
const depNames = Object.keys(allDeps);
|
|
103
100
|
for (const pattern of FRAMEWORK_PATTERNS) {
|
|
104
101
|
// Check package.json dependencies
|
|
@@ -107,6 +104,7 @@ export async function detectFrameworks(projectRoot) {
|
|
|
107
104
|
if (matchedPkg) {
|
|
108
105
|
detected.push({
|
|
109
106
|
name: pattern.name,
|
|
107
|
+
scanner: pattern.scanner,
|
|
110
108
|
plugin: pattern.plugin,
|
|
111
109
|
confidence: 'high',
|
|
112
110
|
evidence: `Found "${matchedPkg}" in package.json`,
|
|
@@ -121,6 +119,7 @@ export async function detectFrameworks(projectRoot) {
|
|
|
121
119
|
if (matches.length > 0) {
|
|
122
120
|
detected.push({
|
|
123
121
|
name: pattern.name,
|
|
122
|
+
scanner: pattern.scanner,
|
|
124
123
|
plugin: pattern.plugin,
|
|
125
124
|
confidence: pattern.packages ? 'medium' : 'high',
|
|
126
125
|
evidence: `Found ${matches[0]}`,
|
|
@@ -131,15 +130,16 @@ export async function detectFrameworks(projectRoot) {
|
|
|
131
130
|
}
|
|
132
131
|
}
|
|
133
132
|
}
|
|
134
|
-
// Deduplicate by plugin name, keeping highest confidence
|
|
135
|
-
const
|
|
133
|
+
// Deduplicate by scanner or plugin name, keeping highest confidence
|
|
134
|
+
const byKey = new Map();
|
|
136
135
|
for (const d of detected) {
|
|
137
|
-
const
|
|
136
|
+
const key = d.scanner || d.plugin || d.name;
|
|
137
|
+
const existing = byKey.get(key);
|
|
138
138
|
if (!existing || confidenceRank(d.confidence) > confidenceRank(existing.confidence)) {
|
|
139
|
-
|
|
139
|
+
byKey.set(key, d);
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
-
return Array.from(
|
|
142
|
+
return Array.from(byKey.values());
|
|
143
143
|
}
|
|
144
144
|
function confidenceRank(c) {
|
|
145
145
|
return c === 'high' ? 3 : c === 'medium' ? 2 : 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/detect/frameworks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/detect/frameworks.ts"],"names":[],"mappings":"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"}
|
package/dist/detect/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { detectMonorepoConfig, expandPatternsForMonorepo, getIncludePatternsForFramework, isMonorepo, getMonorepoDescription, type MonorepoConfig, type ExpandedPatterns, } from './monorepo-patterns.js';
|
|
1
2
|
export { ProjectDetector, getDetectionSummary, type DetectedProject, type FrameworkInfo, type ComponentLocation, type TokenLocation, type StorybookInfo, type DesignSystemInfo, type MonorepoInfo, } from './project-detector.js';
|
|
2
3
|
export * from './frameworks.js';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,8BAA8B,EAC9B,UAAU,EACV,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,iBAAiB,CAAC"}
|
package/dist/detect/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// Export monorepo patterns first (no dependencies)
|
|
2
|
+
export { detectMonorepoConfig, expandPatternsForMonorepo, getIncludePatternsForFramework, isMonorepo, getMonorepoDescription, } from './monorepo-patterns.js';
|
|
3
|
+
// Then project detector (depends on monorepo-patterns)
|
|
1
4
|
export { ProjectDetector, getDetectionSummary, } from './project-detector.js';
|
|
2
5
|
export * from './frameworks.js';
|
|
3
6
|
//# sourceMappingURL=index.js.map
|
package/dist/detect/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,GAQpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,8BAA8B,EAC9B,UAAU,EACV,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAEhC,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,mBAAmB,GAQpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monorepo pattern detection and expansion
|
|
3
|
+
*
|
|
4
|
+
* Handles automatic pattern expansion for popular monorepo structures:
|
|
5
|
+
* - pnpm workspaces (pnpm-workspace.yaml)
|
|
6
|
+
* - yarn/npm workspaces (package.json workspaces)
|
|
7
|
+
* - Lerna (lerna.json)
|
|
8
|
+
* - Nx workspaces (nx.json with apps/libs structure)
|
|
9
|
+
* - Turborepo (turbo.json)
|
|
10
|
+
*/
|
|
11
|
+
export interface MonorepoConfig {
|
|
12
|
+
type: 'pnpm' | 'yarn' | 'npm' | 'lerna' | 'nx' | 'turborepo' | null;
|
|
13
|
+
workspacePatterns: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface ExpandedPatterns {
|
|
16
|
+
/** Original patterns (for single-package projects) */
|
|
17
|
+
basePatterns: string[];
|
|
18
|
+
/** Expanded patterns for monorepo structures */
|
|
19
|
+
monorepoPatterns: string[];
|
|
20
|
+
/** Combined patterns (base + monorepo) */
|
|
21
|
+
allPatterns: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Detect monorepo configuration from project root
|
|
25
|
+
*/
|
|
26
|
+
export declare function detectMonorepoConfig(projectRoot: string): MonorepoConfig;
|
|
27
|
+
/**
|
|
28
|
+
* Expand file patterns for monorepo structures
|
|
29
|
+
*
|
|
30
|
+
* Given base patterns like ['src/**\/*.tsx'], this function expands them
|
|
31
|
+
* to include monorepo package locations like ['packages/*\/src/**\/*.tsx']
|
|
32
|
+
*
|
|
33
|
+
* @param basePatterns - Original file patterns (e.g., ['src/**\/*.tsx'])
|
|
34
|
+
* @param monorepoConfig - Detected monorepo configuration
|
|
35
|
+
* @returns Expanded patterns for the monorepo structure
|
|
36
|
+
*/
|
|
37
|
+
export declare function expandPatternsForMonorepo(basePatterns: string[], monorepoConfig: MonorepoConfig): ExpandedPatterns;
|
|
38
|
+
/**
|
|
39
|
+
* Get default include patterns for a framework, expanded for monorepo if detected
|
|
40
|
+
*
|
|
41
|
+
* @param framework - Framework name (react, vue, svelte, angular)
|
|
42
|
+
* @param projectRoot - Project root directory
|
|
43
|
+
* @returns Include patterns appropriate for the project structure
|
|
44
|
+
*/
|
|
45
|
+
export declare function getIncludePatternsForFramework(framework: 'react' | 'vue' | 'svelte' | 'angular' | 'webcomponent', projectRoot: string): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Check if a project is a monorepo
|
|
48
|
+
*/
|
|
49
|
+
export declare function isMonorepo(projectRoot: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Get human-readable monorepo type description
|
|
52
|
+
*/
|
|
53
|
+
export declare function getMonorepoDescription(config: MonorepoConfig): string;
|
|
54
|
+
//# sourceMappingURL=monorepo-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monorepo-patterns.d.ts","sourceRoot":"","sources":["../../src/detect/monorepo-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC;IACpE,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAKD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAuDxE;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EAAE,EACtB,cAAc,EAAE,cAAc,GAC7B,gBAAgB,CA4DlB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,EAClE,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,CAmBV;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAarE"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monorepo pattern detection and expansion
|
|
3
|
+
*
|
|
4
|
+
* Handles automatic pattern expansion for popular monorepo structures:
|
|
5
|
+
* - pnpm workspaces (pnpm-workspace.yaml)
|
|
6
|
+
* - yarn/npm workspaces (package.json workspaces)
|
|
7
|
+
* - Lerna (lerna.json)
|
|
8
|
+
* - Nx workspaces (nx.json with apps/libs structure)
|
|
9
|
+
* - Turborepo (turbo.json)
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from 'fs';
|
|
12
|
+
import { resolve } from 'path';
|
|
13
|
+
import { parse as parseYaml } from 'yaml';
|
|
14
|
+
// Note: These patterns are used in project-detector.ts for scanning monorepo directories
|
|
15
|
+
// The actual patterns are defined inline there for better maintainability
|
|
16
|
+
/**
|
|
17
|
+
* Detect monorepo configuration from project root
|
|
18
|
+
*/
|
|
19
|
+
export function detectMonorepoConfig(projectRoot) {
|
|
20
|
+
// Check for pnpm workspaces
|
|
21
|
+
const pnpmWorkspacePath = resolve(projectRoot, 'pnpm-workspace.yaml');
|
|
22
|
+
if (existsSync(pnpmWorkspacePath)) {
|
|
23
|
+
const patterns = parsePnpmWorkspaces(pnpmWorkspacePath);
|
|
24
|
+
return { type: 'pnpm', workspacePatterns: patterns };
|
|
25
|
+
}
|
|
26
|
+
// Check for lerna.json
|
|
27
|
+
const lernaPath = resolve(projectRoot, 'lerna.json');
|
|
28
|
+
if (existsSync(lernaPath)) {
|
|
29
|
+
const patterns = parseLernaConfig(lernaPath);
|
|
30
|
+
return { type: 'lerna', workspacePatterns: patterns };
|
|
31
|
+
}
|
|
32
|
+
// Check for nx.json
|
|
33
|
+
const nxPath = resolve(projectRoot, 'nx.json');
|
|
34
|
+
if (existsSync(nxPath)) {
|
|
35
|
+
// Nx typically uses apps/ and libs/ structure
|
|
36
|
+
return { type: 'nx', workspacePatterns: ['apps/*', 'libs/*', 'packages/*'] };
|
|
37
|
+
}
|
|
38
|
+
// Check for turbo.json
|
|
39
|
+
const turboPath = resolve(projectRoot, 'turbo.json');
|
|
40
|
+
if (existsSync(turboPath)) {
|
|
41
|
+
// Turborepo uses package.json workspaces or pnpm-workspace.yaml
|
|
42
|
+
// Fall through to check package.json
|
|
43
|
+
}
|
|
44
|
+
// Check for package.json workspaces (yarn/npm)
|
|
45
|
+
const pkgPath = resolve(projectRoot, 'package.json');
|
|
46
|
+
if (existsSync(pkgPath)) {
|
|
47
|
+
try {
|
|
48
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
49
|
+
const workspaces = pkg.workspaces;
|
|
50
|
+
if (workspaces) {
|
|
51
|
+
// Handle both array and object format
|
|
52
|
+
const patterns = Array.isArray(workspaces)
|
|
53
|
+
? workspaces
|
|
54
|
+
: (workspaces.packages || []);
|
|
55
|
+
if (patterns.length > 0) {
|
|
56
|
+
// Determine if it's turborepo with npm/yarn workspaces
|
|
57
|
+
const type = existsSync(turboPath) ? 'turborepo' :
|
|
58
|
+
existsSync(resolve(projectRoot, 'yarn.lock')) ? 'yarn' : 'npm';
|
|
59
|
+
return { type, workspacePatterns: patterns };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Invalid JSON, continue
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { type: null, workspacePatterns: [] };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Parse pnpm-workspace.yaml to get workspace patterns
|
|
71
|
+
*/
|
|
72
|
+
function parsePnpmWorkspaces(filePath) {
|
|
73
|
+
try {
|
|
74
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
75
|
+
const config = parseYaml(content);
|
|
76
|
+
return config?.packages || [];
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Default pnpm patterns
|
|
80
|
+
return ['packages/*'];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Parse lerna.json to get workspace patterns
|
|
85
|
+
*/
|
|
86
|
+
function parseLernaConfig(filePath) {
|
|
87
|
+
try {
|
|
88
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
89
|
+
const config = JSON.parse(content);
|
|
90
|
+
return config?.packages || ['packages/*'];
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return ['packages/*'];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Expand file patterns for monorepo structures
|
|
98
|
+
*
|
|
99
|
+
* Given base patterns like ['src/**\/*.tsx'], this function expands them
|
|
100
|
+
* to include monorepo package locations like ['packages/*\/src/**\/*.tsx']
|
|
101
|
+
*
|
|
102
|
+
* @param basePatterns - Original file patterns (e.g., ['src/**\/*.tsx'])
|
|
103
|
+
* @param monorepoConfig - Detected monorepo configuration
|
|
104
|
+
* @returns Expanded patterns for the monorepo structure
|
|
105
|
+
*/
|
|
106
|
+
export function expandPatternsForMonorepo(basePatterns, monorepoConfig) {
|
|
107
|
+
if (!monorepoConfig.type || monorepoConfig.workspacePatterns.length === 0) {
|
|
108
|
+
return {
|
|
109
|
+
basePatterns,
|
|
110
|
+
monorepoPatterns: [],
|
|
111
|
+
allPatterns: basePatterns,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const monorepoPatterns = [];
|
|
115
|
+
for (const workspacePattern of monorepoConfig.workspacePatterns) {
|
|
116
|
+
// Convert workspace patterns like 'packages/*' to component patterns
|
|
117
|
+
// Remove trailing /* if present for cleaner paths
|
|
118
|
+
const baseWorkspace = workspacePattern.replace(/\/\*+$/, '');
|
|
119
|
+
for (const basePattern of basePatterns) {
|
|
120
|
+
// Handle patterns that start with 'src/'
|
|
121
|
+
if (basePattern.startsWith('src/')) {
|
|
122
|
+
// packages/* + src/**/*.tsx -> packages/*/src/**/*.tsx
|
|
123
|
+
monorepoPatterns.push(`${baseWorkspace}/*/${basePattern}`);
|
|
124
|
+
// Also check for scoped packages: packages/@scope/*/src/**/*.tsx
|
|
125
|
+
if (baseWorkspace === 'packages') {
|
|
126
|
+
monorepoPatterns.push(`packages/@*/*/${basePattern}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// For patterns not starting with src/, add them under workspace packages
|
|
131
|
+
// **/*.tsx -> packages/*/src/**/*.tsx
|
|
132
|
+
monorepoPatterns.push(`${baseWorkspace}/*/src/${basePattern}`);
|
|
133
|
+
if (baseWorkspace === 'packages') {
|
|
134
|
+
monorepoPatterns.push(`packages/@*/*/src/${basePattern}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Add standard monorepo paths that might not be in workspace config
|
|
140
|
+
// but are commonly used (e.g., apps/ for Nx)
|
|
141
|
+
const additionalPatterns = [];
|
|
142
|
+
if (monorepoConfig.type === 'nx' || monorepoConfig.type === 'turborepo') {
|
|
143
|
+
for (const basePattern of basePatterns) {
|
|
144
|
+
if (basePattern.startsWith('src/')) {
|
|
145
|
+
additionalPatterns.push(`apps/*/${basePattern}`);
|
|
146
|
+
additionalPatterns.push(`libs/*/${basePattern}`);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
additionalPatterns.push(`apps/*/src/${basePattern}`);
|
|
150
|
+
additionalPatterns.push(`libs/*/src/${basePattern}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Combine and deduplicate
|
|
155
|
+
const allMonorepoPatterns = Array.from(new Set([...monorepoPatterns, ...additionalPatterns]));
|
|
156
|
+
return {
|
|
157
|
+
basePatterns,
|
|
158
|
+
monorepoPatterns: allMonorepoPatterns,
|
|
159
|
+
allPatterns: Array.from(new Set([...basePatterns, ...allMonorepoPatterns])),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get default include patterns for a framework, expanded for monorepo if detected
|
|
164
|
+
*
|
|
165
|
+
* @param framework - Framework name (react, vue, svelte, angular)
|
|
166
|
+
* @param projectRoot - Project root directory
|
|
167
|
+
* @returns Include patterns appropriate for the project structure
|
|
168
|
+
*/
|
|
169
|
+
export function getIncludePatternsForFramework(framework, projectRoot) {
|
|
170
|
+
// Base patterns by framework
|
|
171
|
+
const basePatterns = {
|
|
172
|
+
react: ['src/**/*.tsx', 'src/**/*.jsx'],
|
|
173
|
+
vue: ['src/**/*.vue'],
|
|
174
|
+
svelte: ['src/**/*.svelte'],
|
|
175
|
+
angular: ['src/**/*.component.ts'],
|
|
176
|
+
webcomponent: ['src/**/*.ts'],
|
|
177
|
+
};
|
|
178
|
+
const patterns = basePatterns[framework] || ['src/**/*.tsx'];
|
|
179
|
+
const monorepoConfig = detectMonorepoConfig(projectRoot);
|
|
180
|
+
if (!monorepoConfig.type) {
|
|
181
|
+
return patterns;
|
|
182
|
+
}
|
|
183
|
+
const expanded = expandPatternsForMonorepo(patterns, monorepoConfig);
|
|
184
|
+
return expanded.allPatterns;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check if a project is a monorepo
|
|
188
|
+
*/
|
|
189
|
+
export function isMonorepo(projectRoot) {
|
|
190
|
+
const config = detectMonorepoConfig(projectRoot);
|
|
191
|
+
return config.type !== null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get human-readable monorepo type description
|
|
195
|
+
*/
|
|
196
|
+
export function getMonorepoDescription(config) {
|
|
197
|
+
if (!config.type)
|
|
198
|
+
return 'Single package';
|
|
199
|
+
const descriptions = {
|
|
200
|
+
pnpm: 'pnpm workspace',
|
|
201
|
+
yarn: 'Yarn workspace',
|
|
202
|
+
npm: 'npm workspace',
|
|
203
|
+
lerna: 'Lerna monorepo',
|
|
204
|
+
nx: 'Nx workspace',
|
|
205
|
+
turborepo: 'Turborepo',
|
|
206
|
+
};
|
|
207
|
+
return descriptions[config.type] || 'Monorepo';
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=monorepo-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monorepo-patterns.js","sourceRoot":"","sources":["../../src/detect/monorepo-patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export interface ComponentLocation {
|
|
|
19
19
|
path: string;
|
|
20
20
|
fileCount: number;
|
|
21
21
|
pattern: string;
|
|
22
|
-
type?: 'jsx' | 'vue' | 'svelte' | 'php' | 'erb' | 'blade' | 'twig' | 'html' | 'njk';
|
|
22
|
+
type?: 'jsx' | 'tsx' | 'vue' | 'svelte' | 'astro' | 'solid' | 'qwik' | 'marko' | 'lit' | 'fast' | 'angular' | 'stencil' | 'alpine' | 'htmx' | 'php' | 'erb' | 'blade' | 'twig' | 'html' | 'njk' | 'razor' | 'hbs' | 'mustache' | 'ejs' | 'pug' | 'liquid' | 'slim' | 'haml' | 'jinja' | 'django' | 'thymeleaf' | 'freemarker' | 'go-template' | 'edge' | 'eta' | 'heex' | 'velocity' | 'xslt' | 'hugo' | 'jekyll' | 'eleventy' | 'shopify' | 'markdown' | 'mdx' | 'asciidoc' | 'svg' | 'yaml-template' | 'json-template';
|
|
23
23
|
}
|
|
24
24
|
export interface TokenLocation {
|
|
25
25
|
path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/detect/project-detector.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAEA,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAE3D,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAE9D,cAAc,GAAG,SAAS,GAAG,MAAM,GAEnC,KAAK,GAAG,SAAS,GAEjB,KAAK,GAAG,SAAS,GAAG,SAAS,GAC7B,OAAO,GACP,QAAQ,GAAG,OAAO,GAAG,SAAS,GAC9B,SAAS,GAAG,QAAQ,GACpB,QAAQ,GAAG,QAAQ,GACnB,IAAI,GAEJ,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/detect/project-detector.ts"],"names":[],"mappings":"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"}
|