@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.
Files changed (101) hide show
  1. package/dist/bin.d.ts +3 -0
  2. package/dist/bin.d.ts.map +1 -0
  3. package/dist/bin.js +5 -0
  4. package/dist/bin.js.map +1 -0
  5. package/dist/commands/__tests__/ci.test.d.ts +2 -0
  6. package/dist/commands/__tests__/ci.test.d.ts.map +1 -0
  7. package/dist/commands/__tests__/ci.test.js +33 -0
  8. package/dist/commands/__tests__/ci.test.js.map +1 -0
  9. package/dist/commands/bootstrap.d.ts +3 -0
  10. package/dist/commands/bootstrap.d.ts.map +1 -0
  11. package/dist/commands/bootstrap.js +458 -0
  12. package/dist/commands/bootstrap.js.map +1 -0
  13. package/dist/commands/build.d.ts +3 -0
  14. package/dist/commands/build.d.ts.map +1 -0
  15. package/dist/commands/build.js +314 -0
  16. package/dist/commands/build.js.map +1 -0
  17. package/dist/commands/ci.d.ts +24 -0
  18. package/dist/commands/ci.d.ts.map +1 -0
  19. package/dist/commands/ci.js +273 -0
  20. package/dist/commands/ci.js.map +1 -0
  21. package/dist/commands/ci.logic.d.ts +20 -0
  22. package/dist/commands/ci.logic.d.ts.map +1 -0
  23. package/dist/commands/ci.logic.js +28 -0
  24. package/dist/commands/ci.logic.js.map +1 -0
  25. package/dist/commands/drift.d.ts +3 -0
  26. package/dist/commands/drift.d.ts.map +1 -0
  27. package/dist/commands/drift.js +178 -0
  28. package/dist/commands/drift.js.map +1 -0
  29. package/dist/commands/index.d.ts +9 -0
  30. package/dist/commands/index.d.ts.map +1 -0
  31. package/dist/commands/index.js +9 -0
  32. package/dist/commands/index.js.map +1 -0
  33. package/dist/commands/init.d.ts +3 -0
  34. package/dist/commands/init.d.ts.map +1 -0
  35. package/dist/commands/init.js +490 -0
  36. package/dist/commands/init.js.map +1 -0
  37. package/dist/commands/plugins.d.ts +3 -0
  38. package/dist/commands/plugins.d.ts.map +1 -0
  39. package/dist/commands/plugins.js +72 -0
  40. package/dist/commands/plugins.js.map +1 -0
  41. package/dist/commands/scan.d.ts +3 -0
  42. package/dist/commands/scan.d.ts.map +1 -0
  43. package/dist/commands/scan.js +266 -0
  44. package/dist/commands/scan.js.map +1 -0
  45. package/dist/commands/status.d.ts +3 -0
  46. package/dist/commands/status.d.ts.map +1 -0
  47. package/dist/commands/status.js +205 -0
  48. package/dist/commands/status.js.map +1 -0
  49. package/dist/config/index.d.ts +3 -0
  50. package/dist/config/index.d.ts.map +1 -0
  51. package/dist/config/index.js +3 -0
  52. package/dist/config/index.js.map +1 -0
  53. package/dist/config/loader.d.ts +8 -0
  54. package/dist/config/loader.d.ts.map +1 -0
  55. package/dist/config/loader.js +67 -0
  56. package/dist/config/loader.js.map +1 -0
  57. package/dist/config/schema.d.ts +1040 -0
  58. package/dist/config/schema.d.ts.map +1 -0
  59. package/dist/config/schema.js +116 -0
  60. package/dist/config/schema.js.map +1 -0
  61. package/dist/detect/frameworks.d.ts +18 -0
  62. package/dist/detect/frameworks.d.ts.map +1 -0
  63. package/dist/detect/frameworks.js +168 -0
  64. package/dist/detect/frameworks.js.map +1 -0
  65. package/dist/detect/index.d.ts +3 -0
  66. package/dist/detect/index.d.ts.map +1 -0
  67. package/dist/detect/index.js +3 -0
  68. package/dist/detect/index.js.map +1 -0
  69. package/dist/detect/project-detector.d.ts +61 -0
  70. package/dist/detect/project-detector.d.ts.map +1 -0
  71. package/dist/detect/project-detector.js +849 -0
  72. package/dist/detect/project-detector.js.map +1 -0
  73. package/dist/index.d.ts +5 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +22 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/output/formatters.d.ts +21 -0
  78. package/dist/output/formatters.d.ts.map +1 -0
  79. package/dist/output/formatters.js +421 -0
  80. package/dist/output/formatters.js.map +1 -0
  81. package/dist/output/index.d.ts +3 -0
  82. package/dist/output/index.d.ts.map +1 -0
  83. package/dist/output/index.js +3 -0
  84. package/dist/output/index.js.map +1 -0
  85. package/dist/output/reporters.d.ts +23 -0
  86. package/dist/output/reporters.d.ts.map +1 -0
  87. package/dist/output/reporters.js +147 -0
  88. package/dist/output/reporters.js.map +1 -0
  89. package/dist/plugins/index.d.ts +3 -0
  90. package/dist/plugins/index.d.ts.map +1 -0
  91. package/dist/plugins/index.js +3 -0
  92. package/dist/plugins/index.js.map +1 -0
  93. package/dist/plugins/loader.d.ts +11 -0
  94. package/dist/plugins/loader.d.ts.map +1 -0
  95. package/dist/plugins/loader.js +77 -0
  96. package/dist/plugins/loader.js.map +1 -0
  97. package/dist/plugins/registry.d.ts +15 -0
  98. package/dist/plugins/registry.d.ts.map +1 -0
  99. package/dist/plugins/registry.js +32 -0
  100. package/dist/plugins/registry.js.map +1 -0
  101. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -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,3 @@
1
+ export { ProjectDetector, getDetectionSummary, } from './project-detector.js';
2
+ export * from './frameworks.js';
3
+ //# sourceMappingURL=index.js.map
@@ -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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"}