next-debug-suite
Version:
Ultimate Next.js AI-Powered Debug Suite with visual interface and error DNA system
366 lines (315 loc) • 8.39 kB
Markdown
```typescript
interface DebugInterface {
// Visual Components
overlay: {
position: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
size: { width: number; height: number };
opacity: number;
theme: 'dark' | 'light' | 'system';
tabs: Array<'errors' | 'performance' | 'network' | 'console' | 'ai'>;
};
// Real-time Monitoring
monitors: {
memory: boolean;
performance: boolean;
network: boolean;
console: boolean;
renders: boolean;
};
// AI Features
ai: {
enabled: boolean;
provider: 'openai' | 'anthropic' | 'custom';
features: Array<'analysis' | 'fixes' | 'docs' | 'prediction'>;
};
}
```
```typescript
interface EnhancedErrorDNA {
// Core Error Data
id: string;
timestamp: number;
type: 'runtime' | 'build' | 'type' | 'network' | 'performance';
// Location Data
location: {
file: string;
line: number;
column: number;
functionName: string;
component?: string;
};
// Package Information
package?: {
name: string;
version: string;
path: string[];
};
// Visual Representation
visual: {
codePreview: string;
highlightedLines: number[];
dependencies: DependencyGraph;
stackTrace: VisualStack;
};
// AI Analysis
aiAnalysis: {
explanation: string;
suggestedFix: string;
confidence: number;
relevantDocs: string[];
similarIssues: string[];
};
}
```
```typescript
// src/components/DebugOverlay/index.tsx
import React from 'react';
import { ErrorPanel } from './ErrorPanel';
import { PerformanceGraph } from './PerformanceGraph';
import { NetworkMonitor } from './NetworkMonitor';
import { AIAssistant } from './AIAssistant';
interface DebugOverlayProps {
position: OverlayPosition;
theme: Theme;
data: DebugData;
}
const DebugOverlay: React.FC<DebugOverlayProps> = ({ position, theme, data }) => {
const [activeTab, setActiveTab] = useState('errors');
const [isPinned, setIsPinned] = useState(false);
return (
<DraggableOverlay position={position} isPinned={isPinned}>
<TabNavigation
tabs={['Errors', 'Performance', 'Network', 'Console', 'AI']}
active={activeTab}
onChange={setActiveTab}
/>
<ContentArea theme={theme}>
{activeTab === 'errors' && (
<ErrorPanel
errors={data.errors}
aiAnalysis={data.aiAnalysis}
/>
)}
{activeTab === 'performance' && (
<PerformanceGraph
metrics={data.performance}
threshold={data.config.performanceThreshold}
/>
)}
{/* Other tab contents */}
</ContentArea>
<ActionBar>
<Button onClick={() => setIsPinned(!isPinned)}>
{isPinned ? 'Unpin' : 'Pin'}
</Button>
<Button onClick={() => exportData(data)}>
Export
</Button>
</ActionBar>
</DraggableOverlay>
);
};
```
```
nextjs-debug-suite/
├── package.json
├── tsconfig.json
├── rollup.config.js
├── src/
│ ├── components/
│ │ ├── DebugOverlay/
│ │ ├── ErrorPanel/
│ │ ├── PerformanceGraphs/
│ │ ├── NetworkMonitor/
│ │ └── AIAssistant/
│ ├── core/
│ │ ├── errorTracker.ts
│ │ ├── performanceMonitor.ts
│ │ ├── networkTracker.ts
│ │ └── aiIntegration.ts
│ ├── hooks/
│ │ ├── useDebugger.ts
│ │ ├── useErrorTracking.ts
│ │ └── usePerformance.ts
│ ├── ai/
│ │ ├── analyzer.ts
│ │ ├── documentation.ts
│ │ └── suggestions.ts
│ └── utils/
│ ├── stackTraceParser.ts
│ ├── sourceMapUtil.ts
│ └── dependencyAnalyzer.ts
├── public/
│ └── styles/
├── tests/
└── docs/
```
```json
{
"name": "nextjs-debug-suite",
"version": "1.0.0",
"main": "dist/index.js",
"module": "dist/index.esm.js",
"types": "dist/index.d.ts",
"files": [
"dist",
"README.md"
],
"scripts": {
"dev": "rollup -c -w",
"build": "rollup -c",
"test": "jest",
"lint": "eslint src --ext .ts,.tsx",
"prepublishOnly": "npm run build",
"postversion": "git push && git push --tags"
},
"peerDependencies": {
"next": ">=13.0.0",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
}
```
```typescript
// pages/_app.tsx
import { DebugSuiteProvider } from 'nextjs-debug-suite';
const config = {
ai: {
provider: 'openai',
apiKey: process.env.OPENAI_API_KEY,
},
overlay: {
defaultPosition: 'bottom-right',
theme: 'dark',
shortcuts: {
toggle: 'ctrl+shift+d',
pin: 'ctrl+shift+p',
},
},
monitors: {
performance: true,
network: true,
console: true,
},
};
function MyApp({ Component, pageProps }) {
return (
<DebugSuiteProvider config={config}>
<Component {...pageProps} />
</DebugSuiteProvider>
);
}
```
```bash
mkdir nextjs-debug-suite
cd nextjs-debug-suite
npm init
npm install --save-dev \
typescript \
rollup \
@rollup/plugin-typescript \
@rollup/plugin-node-resolve \
@rollup/plugin-commonjs \
tslib \
jest \
@types/jest \
@testing-library/react \
@testing-library/jest-dom
npx tsc --init
mkdir -p src/{components,core,hooks,ai,utils}
```
```bash
npm version patch/minor/major
npm run build
npm run test
npm publish
gh release create v1.0.0 --notes "Release notes..."
```
```typescript
// src/core/errorTracker.ts
export class ErrorTracker {
private async captureError(error: Error): Promise<void> {
const errorDNA = await this.generateErrorDNA(error);
const aiAnalysis = await this.aiService.analyzeError(errorDNA);
const visualData = await this.generateVisualRepresentation(errorDNA);
this.store.dispatch({
type: 'ERROR_CAPTURED',
payload: {
error: errorDNA,
analysis: aiAnalysis,
visual: visualData,
},
});
}
private async generateErrorDNA(error: Error): Promise<ErrorDNA> {
const stack = await this.parseStackTrace(error);
const sourceMap = await this.loadSourceMap(stack);
const packageInfo = await this.analyzePackageContext(stack);
return {
// ... error DNA generation
};
}
}
```
```typescript
// src/core/performanceMonitor.ts
export class PerformanceMonitor {
private metrics: Metrics[] = [];
startTracking(): void {
// Track React renders
this.trackComponentRenders();
// Track network requests
this.trackNetworkRequests();
// Track memory usage
this.trackMemoryUsage();
// Track frame rate
this.trackFrameRate();
}
private trackComponentRenders(): void {
// Implementation
}
}
```
```markdown
1. Fork the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request
1. Clone the repository
2. Install dependencies: `npm install`
3. Start development server: `npm run dev`
4. Run tests: `npm test`
- Each feature must be documented
- Include examples
- Add test cases
- Update type definitions
```