@buoy-design/cli 0.1.0
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/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +5 -0
- package/dist/bin.js.map +1 -0
- package/dist/commands/__tests__/ci.test.d.ts +2 -0
- package/dist/commands/__tests__/ci.test.d.ts.map +1 -0
- package/dist/commands/__tests__/ci.test.js +33 -0
- package/dist/commands/__tests__/ci.test.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +3 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +458 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/build.d.ts +3 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +314 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/ci.d.ts +24 -0
- package/dist/commands/ci.d.ts.map +1 -0
- package/dist/commands/ci.js +273 -0
- package/dist/commands/ci.js.map +1 -0
- package/dist/commands/ci.logic.d.ts +20 -0
- package/dist/commands/ci.logic.d.ts.map +1 -0
- package/dist/commands/ci.logic.js +28 -0
- package/dist/commands/ci.logic.js.map +1 -0
- package/dist/commands/drift.d.ts +3 -0
- package/dist/commands/drift.d.ts.map +1 -0
- package/dist/commands/drift.js +178 -0
- package/dist/commands/drift.js.map +1 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +9 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +490 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +72 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/scan.d.ts +3 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +266 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +205 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +8 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +67 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +1040 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +116 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/detect/frameworks.d.ts +18 -0
- package/dist/detect/frameworks.d.ts.map +1 -0
- package/dist/detect/frameworks.js +168 -0
- package/dist/detect/frameworks.js.map +1 -0
- package/dist/detect/index.d.ts +3 -0
- package/dist/detect/index.d.ts.map +1 -0
- package/dist/detect/index.js +3 -0
- package/dist/detect/index.js.map +1 -0
- package/dist/detect/project-detector.d.ts +61 -0
- package/dist/detect/project-detector.d.ts.map +1 -0
- package/dist/detect/project-detector.js +849 -0
- package/dist/detect/project-detector.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/output/formatters.d.ts +21 -0
- package/dist/output/formatters.d.ts.map +1 -0
- package/dist/output/formatters.js +421 -0
- package/dist/output/formatters.js.map +1 -0
- package/dist/output/index.d.ts +3 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +3 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/reporters.d.ts +23 -0
- package/dist/output/reporters.d.ts.map +1 -0
- package/dist/output/reporters.js +147 -0
- package/dist/output/reporters.js.map +1 -0
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +11 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +77 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/registry.d.ts +15 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +32 -0
- package/dist/plugins/registry.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAKtC,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAE5B,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;EAE1B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;EAE7B,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;EAE9B,CAAC;AAGH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;EAGnC,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAGH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa9B,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG5B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAGH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// Base component source config (shared by all component scanners)
|
|
3
|
+
export const ComponentSourceConfigSchema = z.object({
|
|
4
|
+
enabled: z.boolean().default(true),
|
|
5
|
+
include: z.array(z.string()),
|
|
6
|
+
exclude: z.array(z.string()).default(['**/*.test.*', '**/*.spec.*', '**/*.stories.*']),
|
|
7
|
+
designSystemPackage: z.string().optional(),
|
|
8
|
+
});
|
|
9
|
+
// React source config
|
|
10
|
+
export const ReactConfigSchema = ComponentSourceConfigSchema.extend({
|
|
11
|
+
include: z.array(z.string()).default(['src/**/*.tsx', 'src/**/*.jsx']),
|
|
12
|
+
});
|
|
13
|
+
// Vue source config
|
|
14
|
+
export const VueConfigSchema = ComponentSourceConfigSchema.extend({
|
|
15
|
+
include: z.array(z.string()).default(['src/**/*.vue']),
|
|
16
|
+
});
|
|
17
|
+
// Svelte source config
|
|
18
|
+
export const SvelteConfigSchema = ComponentSourceConfigSchema.extend({
|
|
19
|
+
include: z.array(z.string()).default(['src/**/*.svelte']),
|
|
20
|
+
});
|
|
21
|
+
// Angular source config
|
|
22
|
+
export const AngularConfigSchema = ComponentSourceConfigSchema.extend({
|
|
23
|
+
include: z.array(z.string()).default(['src/**/*.component.ts']),
|
|
24
|
+
});
|
|
25
|
+
// Web component source config (Lit, Stencil)
|
|
26
|
+
export const WebComponentConfigSchema = ComponentSourceConfigSchema.extend({
|
|
27
|
+
include: z.array(z.string()).default(['src/**/*.ts']),
|
|
28
|
+
framework: z.enum(['lit', 'stencil', 'auto']).default('auto'),
|
|
29
|
+
});
|
|
30
|
+
// Template source config (Blade, ERB, Twig, etc.)
|
|
31
|
+
export const TemplateConfigSchema = z.object({
|
|
32
|
+
enabled: z.boolean().default(true),
|
|
33
|
+
include: z.array(z.string()),
|
|
34
|
+
exclude: z.array(z.string()).default(['**/vendor/**', '**/cache/**']),
|
|
35
|
+
type: z.enum(['blade', 'erb', 'twig', 'php', 'html', 'njk']),
|
|
36
|
+
});
|
|
37
|
+
// Figma source config
|
|
38
|
+
export const FigmaConfigSchema = z.object({
|
|
39
|
+
enabled: z.boolean().default(false),
|
|
40
|
+
accessToken: z.string().optional(),
|
|
41
|
+
fileKeys: z.array(z.string()).default([]),
|
|
42
|
+
componentPageName: z.string().default('Components'),
|
|
43
|
+
tokenPageName: z.string().default('Design Tokens'),
|
|
44
|
+
});
|
|
45
|
+
// Storybook source config
|
|
46
|
+
export const StorybookConfigSchema = z.object({
|
|
47
|
+
enabled: z.boolean().default(false),
|
|
48
|
+
url: z.string().optional(),
|
|
49
|
+
staticDir: z.string().optional(),
|
|
50
|
+
});
|
|
51
|
+
// Token source config
|
|
52
|
+
export const TokenConfigSchema = z.object({
|
|
53
|
+
enabled: z.boolean().default(true),
|
|
54
|
+
files: z.array(z.string()).default([]),
|
|
55
|
+
cssVariablePrefix: z.string().optional(),
|
|
56
|
+
});
|
|
57
|
+
// Sources config
|
|
58
|
+
export const SourcesConfigSchema = z.object({
|
|
59
|
+
// JS Frameworks
|
|
60
|
+
react: ReactConfigSchema.optional(),
|
|
61
|
+
vue: VueConfigSchema.optional(),
|
|
62
|
+
svelte: SvelteConfigSchema.optional(),
|
|
63
|
+
angular: AngularConfigSchema.optional(),
|
|
64
|
+
webcomponent: WebComponentConfigSchema.optional(),
|
|
65
|
+
// Templates
|
|
66
|
+
templates: TemplateConfigSchema.optional(),
|
|
67
|
+
// Design tools
|
|
68
|
+
figma: FigmaConfigSchema.optional(),
|
|
69
|
+
storybook: StorybookConfigSchema.optional(),
|
|
70
|
+
tokens: TokenConfigSchema.optional(),
|
|
71
|
+
});
|
|
72
|
+
// Drift ignore pattern
|
|
73
|
+
export const DriftIgnoreSchema = z.object({
|
|
74
|
+
type: z.string(),
|
|
75
|
+
pattern: z.string().optional(),
|
|
76
|
+
reason: z.string().optional(),
|
|
77
|
+
});
|
|
78
|
+
// Drift config
|
|
79
|
+
export const DriftConfigSchema = z.object({
|
|
80
|
+
ignore: z.array(DriftIgnoreSchema).default([]),
|
|
81
|
+
severity: z.record(z.enum(['info', 'warning', 'critical'])).default({}),
|
|
82
|
+
});
|
|
83
|
+
// Claude config
|
|
84
|
+
export const ClaudeConfigSchema = z.object({
|
|
85
|
+
enabled: z.boolean().default(false),
|
|
86
|
+
model: z.string().default('claude-sonnet-4-20250514'),
|
|
87
|
+
autoExplain: z
|
|
88
|
+
.object({
|
|
89
|
+
enabled: z.boolean().default(false),
|
|
90
|
+
minSeverity: z.enum(['info', 'warning', 'critical']).default('warning'),
|
|
91
|
+
})
|
|
92
|
+
.optional(),
|
|
93
|
+
});
|
|
94
|
+
// Project config
|
|
95
|
+
export const ProjectConfigSchema = z.object({
|
|
96
|
+
name: z.string(),
|
|
97
|
+
apiEndpoint: z.string().optional(),
|
|
98
|
+
});
|
|
99
|
+
// Output config
|
|
100
|
+
export const OutputConfigSchema = z.object({
|
|
101
|
+
format: z.enum(['table', 'json', 'markdown']).default('table'),
|
|
102
|
+
colors: z.boolean().default(true),
|
|
103
|
+
});
|
|
104
|
+
// Main config schema
|
|
105
|
+
export const BuoyConfigSchema = z.object({
|
|
106
|
+
project: ProjectConfigSchema,
|
|
107
|
+
sources: SourcesConfigSchema.default({}),
|
|
108
|
+
drift: DriftConfigSchema.default({}),
|
|
109
|
+
claude: ClaudeConfigSchema.default({}),
|
|
110
|
+
output: OutputConfigSchema.default({}),
|
|
111
|
+
});
|
|
112
|
+
// Helper to define config (for user-facing config files)
|
|
113
|
+
export function defineConfig(config) {
|
|
114
|
+
return BuoyConfigSchema.parse(config);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface DetectedFramework {
|
|
2
|
+
name: string;
|
|
3
|
+
plugin: string;
|
|
4
|
+
confidence: 'high' | 'medium' | 'low';
|
|
5
|
+
evidence: string;
|
|
6
|
+
matchedFiles?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface PluginInfo {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
detects: string;
|
|
12
|
+
examples?: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare const PLUGIN_INFO: Record<string, PluginInfo>;
|
|
15
|
+
export declare function detectFrameworks(projectRoot: string): Promise<DetectedFramework[]>;
|
|
16
|
+
export declare function detectPackageManager(projectRoot?: string): 'pnpm' | 'yarn' | 'npm';
|
|
17
|
+
export declare function getPluginInstallCommand(plugins: string[], projectRoot?: string): string;
|
|
18
|
+
//# sourceMappingURL=frameworks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../../src/detect/frameworks.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAuDlD,CAAC;AA2CF,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgExF;AAMD,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAQjG;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,GAAE,MAAsB,GAAG,MAAM,CAYtG"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { readFile } from 'node:fs/promises';
|
|
4
|
+
import { glob } from 'glob';
|
|
5
|
+
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
|
+
figma: {
|
|
49
|
+
name: '@buoy-design/plugin-figma',
|
|
50
|
+
description: 'Connects to Figma to compare design tokens and components with your codebase.',
|
|
51
|
+
detects: 'Figma configuration',
|
|
52
|
+
examples: ['Token value drift between Figma and code', 'Missing component implementations'],
|
|
53
|
+
},
|
|
54
|
+
storybook: {
|
|
55
|
+
name: '@buoy-design/plugin-storybook',
|
|
56
|
+
description: 'Scans Storybook stories to verify component coverage and documentation.',
|
|
57
|
+
detects: 'Storybook configuration',
|
|
58
|
+
examples: ['Components without stories', 'Undocumented variants'],
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
const FRAMEWORK_PATTERNS = [
|
|
62
|
+
// React ecosystem
|
|
63
|
+
{ name: 'react', plugin: 'react', packages: ['react', 'react-dom'] },
|
|
64
|
+
{ name: 'next', plugin: 'react', packages: ['next'] },
|
|
65
|
+
{ name: 'remix', plugin: 'react', packages: ['@remix-run/react'] },
|
|
66
|
+
{ name: 'gatsby', plugin: 'react', packages: ['gatsby'] },
|
|
67
|
+
// Vue ecosystem
|
|
68
|
+
{ name: 'vue', plugin: 'vue', packages: ['vue'] },
|
|
69
|
+
{ name: 'nuxt', plugin: 'vue', packages: ['nuxt', 'nuxt3'] },
|
|
70
|
+
// Svelte ecosystem
|
|
71
|
+
{ name: 'svelte', plugin: 'svelte', packages: ['svelte'] },
|
|
72
|
+
{ name: 'sveltekit', plugin: 'svelte', packages: ['@sveltejs/kit'] },
|
|
73
|
+
// Angular
|
|
74
|
+
{ name: 'angular', plugin: 'angular', packages: ['@angular/core'] },
|
|
75
|
+
// Web Components
|
|
76
|
+
{ name: 'lit', plugin: 'webcomponents', packages: ['lit', 'lit-element'] },
|
|
77
|
+
{ name: 'stencil', plugin: 'webcomponents', packages: ['@stencil/core'] },
|
|
78
|
+
// CSS/Tokens
|
|
79
|
+
{ name: 'tailwind', plugin: 'tailwind', packages: ['tailwindcss'], files: ['tailwind.config.*'] },
|
|
80
|
+
{ name: 'css-variables', plugin: 'css', files: ['**/*.css'] },
|
|
81
|
+
// Design tools
|
|
82
|
+
{ name: 'figma', plugin: 'figma', files: ['.figmarc', 'figma.config.*'] },
|
|
83
|
+
{ name: 'storybook', plugin: 'storybook', packages: ['@storybook/react', '@storybook/vue3', '@storybook/svelte'], files: ['.storybook/**'] },
|
|
84
|
+
];
|
|
85
|
+
export async function detectFrameworks(projectRoot) {
|
|
86
|
+
const detected = [];
|
|
87
|
+
// Read package.json
|
|
88
|
+
const pkgPath = resolve(projectRoot, 'package.json');
|
|
89
|
+
let pkgJson = {};
|
|
90
|
+
if (existsSync(pkgPath)) {
|
|
91
|
+
try {
|
|
92
|
+
pkgJson = JSON.parse(await readFile(pkgPath, 'utf-8'));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Invalid JSON, continue with empty dependencies
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const allDeps = {
|
|
99
|
+
...pkgJson.dependencies,
|
|
100
|
+
...pkgJson.devDependencies,
|
|
101
|
+
};
|
|
102
|
+
const depNames = Object.keys(allDeps);
|
|
103
|
+
for (const pattern of FRAMEWORK_PATTERNS) {
|
|
104
|
+
// Check package.json dependencies
|
|
105
|
+
if (pattern.packages) {
|
|
106
|
+
const matchedPkg = pattern.packages.find((pkg) => depNames.includes(pkg));
|
|
107
|
+
if (matchedPkg) {
|
|
108
|
+
detected.push({
|
|
109
|
+
name: pattern.name,
|
|
110
|
+
plugin: pattern.plugin,
|
|
111
|
+
confidence: 'high',
|
|
112
|
+
evidence: `Found "${matchedPkg}" in package.json`,
|
|
113
|
+
});
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Check for config files
|
|
118
|
+
if (pattern.files) {
|
|
119
|
+
for (const filePattern of pattern.files) {
|
|
120
|
+
const matches = await glob(filePattern, { cwd: projectRoot, nodir: true });
|
|
121
|
+
if (matches.length > 0) {
|
|
122
|
+
detected.push({
|
|
123
|
+
name: pattern.name,
|
|
124
|
+
plugin: pattern.plugin,
|
|
125
|
+
confidence: pattern.packages ? 'medium' : 'high',
|
|
126
|
+
evidence: `Found ${matches[0]}`,
|
|
127
|
+
matchedFiles: matches.slice(0, 5), // Keep up to 5 files for display
|
|
128
|
+
});
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Deduplicate by plugin name, keeping highest confidence
|
|
135
|
+
const byPlugin = new Map();
|
|
136
|
+
for (const d of detected) {
|
|
137
|
+
const existing = byPlugin.get(d.plugin);
|
|
138
|
+
if (!existing || confidenceRank(d.confidence) > confidenceRank(existing.confidence)) {
|
|
139
|
+
byPlugin.set(d.plugin, d);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return Array.from(byPlugin.values());
|
|
143
|
+
}
|
|
144
|
+
function confidenceRank(c) {
|
|
145
|
+
return c === 'high' ? 3 : c === 'medium' ? 2 : 1;
|
|
146
|
+
}
|
|
147
|
+
export function detectPackageManager(projectRoot = process.cwd()) {
|
|
148
|
+
if (existsSync(resolve(projectRoot, 'pnpm-lock.yaml'))) {
|
|
149
|
+
return 'pnpm';
|
|
150
|
+
}
|
|
151
|
+
if (existsSync(resolve(projectRoot, 'yarn.lock'))) {
|
|
152
|
+
return 'yarn';
|
|
153
|
+
}
|
|
154
|
+
return 'npm';
|
|
155
|
+
}
|
|
156
|
+
export function getPluginInstallCommand(plugins, projectRoot = process.cwd()) {
|
|
157
|
+
const fullNames = plugins.map((p) => `@buoy-design/plugin-${p}`);
|
|
158
|
+
const pm = detectPackageManager(projectRoot);
|
|
159
|
+
switch (pm) {
|
|
160
|
+
case 'pnpm':
|
|
161
|
+
return `pnpm add -D ${fullNames.join(' ')}`;
|
|
162
|
+
case 'yarn':
|
|
163
|
+
return `yarn add -D ${fullNames.join(' ')}`;
|
|
164
|
+
default:
|
|
165
|
+
return `npm install --save-dev ${fullNames.join(' ')}`;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=frameworks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/detect/frameworks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { ProjectDetector, getDetectionSummary, type DetectedProject, type FrameworkInfo, type ComponentLocation, type TokenLocation, type StorybookInfo, type DesignSystemInfo, type MonorepoInfo, } from './project-detector.js';
|
|
2
|
+
export * from './frameworks.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAAA,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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export interface DetectedProject {
|
|
2
|
+
name: string;
|
|
3
|
+
root: string;
|
|
4
|
+
frameworks: FrameworkInfo[];
|
|
5
|
+
primaryFramework: FrameworkInfo | null;
|
|
6
|
+
components: ComponentLocation[];
|
|
7
|
+
tokens: TokenLocation[];
|
|
8
|
+
storybook: StorybookInfo | null;
|
|
9
|
+
designSystem: DesignSystemInfo | null;
|
|
10
|
+
monorepo: MonorepoInfo | null;
|
|
11
|
+
}
|
|
12
|
+
export interface FrameworkInfo {
|
|
13
|
+
name: 'react' | 'vue' | 'svelte' | 'angular' | 'solid' | 'preact' | 'nextjs' | 'nuxt' | 'astro' | 'remix' | 'sveltekit' | 'gatsby' | 'react-native' | 'flutter' | 'expo' | 'lit' | 'stencil' | 'php' | 'laravel' | 'symfony' | 'rails' | 'django' | 'flask' | 'fastapi' | 'express' | 'nestjs' | 'spring' | 'aspnet' | 'go' | 'hugo' | 'jekyll' | 'eleventy';
|
|
14
|
+
version: string;
|
|
15
|
+
typescript: boolean;
|
|
16
|
+
meta?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ComponentLocation {
|
|
19
|
+
path: string;
|
|
20
|
+
fileCount: number;
|
|
21
|
+
pattern: string;
|
|
22
|
+
type?: 'jsx' | 'vue' | 'svelte' | 'php' | 'erb' | 'blade' | 'twig' | 'html' | 'njk';
|
|
23
|
+
}
|
|
24
|
+
export interface TokenLocation {
|
|
25
|
+
path: string;
|
|
26
|
+
type: 'css' | 'scss' | 'json' | 'js' | 'tailwind';
|
|
27
|
+
name: string;
|
|
28
|
+
}
|
|
29
|
+
export interface StorybookInfo {
|
|
30
|
+
configPath: string;
|
|
31
|
+
version: string | null;
|
|
32
|
+
}
|
|
33
|
+
export interface DesignSystemInfo {
|
|
34
|
+
package: string;
|
|
35
|
+
version: string;
|
|
36
|
+
type: 'chakra' | 'mui' | 'antd' | 'radix' | 'shadcn' | 'bootstrap' | 'tailwind' | 'bulma' | 'foundation' | 'mantine' | 'nextui' | 'primereact' | 'carbon' | 'custom';
|
|
37
|
+
}
|
|
38
|
+
export interface MonorepoInfo {
|
|
39
|
+
type: 'pnpm' | 'yarn' | 'npm' | 'nx' | 'turborepo';
|
|
40
|
+
packages: string[];
|
|
41
|
+
}
|
|
42
|
+
export declare class ProjectDetector {
|
|
43
|
+
private root;
|
|
44
|
+
private packageJson;
|
|
45
|
+
constructor(root?: string);
|
|
46
|
+
private loadPackageJson;
|
|
47
|
+
detect(): Promise<DetectedProject>;
|
|
48
|
+
private getProjectName;
|
|
49
|
+
private getAllDeps;
|
|
50
|
+
private detectFrameworks;
|
|
51
|
+
private detectComponents;
|
|
52
|
+
private detectTokens;
|
|
53
|
+
private detectStorybook;
|
|
54
|
+
private detectDesignSystem;
|
|
55
|
+
private detectMonorepo;
|
|
56
|
+
private findWorkspacePackages;
|
|
57
|
+
}
|
|
58
|
+
export declare function getDetectionSummary(project: DetectedProject): string[];
|
|
59
|
+
export declare function hasFrameworkSprawl(project: DetectedProject): boolean;
|
|
60
|
+
export declare function getUIFrameworks(project: DetectedProject): FrameworkInfo[];
|
|
61
|
+
//# sourceMappingURL=project-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/detect/project-detector.ts"],"names":[],"mappings":"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"}
|