Official JavaScript/TypeScript SDK for view0x - Smart Contract Security Analysis Platform
npm install view0x-sdkOfficial JavaScript/TypeScript SDK for view0x - Smart Contract Security Analysis Platform.
``bash`
npm install @view0x/sdkor
yarn add @view0x/sdkor
pnpm add @view0x/sdk
`typescript
import { View0xSDK } from '@view0x/sdk';
// Initialize the SDK with your API key
const client = new View0xSDK({
apiKey: 'your-api-key-here',
// baseURL: 'https://api.view0x.com', // Optional: custom API URL
// timeout: 30000, // Optional: request timeout in ms
});
// Create an analysis
const analysis = await client.createAnalysis({
contractCode:
pragma solidity ^0.8.0;
contract MyContract {
// Your contract code
}
,
contractName: 'MyContract',
});
console.log('Analysis ID:', analysis.id);
console.log('Status:', analysis.status);
// Get analysis results
const result = await client.getAnalysis(analysis.id);
console.log('Vulnerabilities found:', result.vulnerabilities?.length);
`
- Full TypeScript support with type definitions
- Promise-based API
- Automatic authentication handling
- Comprehensive error handling
- Support for all view0x API endpoints
- Repository analysis (GitHub/GitLab)
- Webhook management
- Analytics and reporting
- Zero hardcoded values - fully configurable
`typescript
// Login
const { token, user } = await client.login({
email: 'user@example.com',
password: 'password',
});
// Register
const { token, user } = await client.register({
name: 'John Doe',
email: 'john@example.com',
password: 'securepassword',
company: 'My Company', // optional
});
// Get current user
const user = await client.getCurrentUser();
`
`typescript
// Create analysis
const analysis = await client.createAnalysis({
contractCode: solidityCode,
contractName: 'MyContract', // optional
options: {}, // optional
});
// Get analysis by ID
const analysis = await client.getAnalysis('analysis-id');
// Get analysis history with pagination
const history = await client.getAnalysisHistory({
page: 1,
limit: 10,
search: 'MyContract', // optional
sortBy: 'createdAt', // optional
sortOrder: 'DESC', // optional
});
// Generate report
const pdfBlob = await client.generateReport('analysis-id', 'pdf');
// Save to file or download
// Share analysis
const { shareToken, shareUrl } = await client.shareAnalysis('analysis-id');
// Revoke share
await client.revokeShare('analysis-id');
`
`typescript
// Analyze GitHub repository
const analyses = await client.analyzeGitHubRepository({
repositoryUrl: 'https://github.com/user/repo',
branch: 'main', // optional
token: 'github-token', // optional, for private repos
});
// Analyze GitLab repository
const analyses = await client.analyzeGitLabRepository({
repositoryUrl: 'https://gitlab.com/user/repo',
branch: 'main', // optional
token: 'gitlab-token', // optional, for private repos
});
// Auto-detect platform
const analyses = await client.analyzeRepository({
repositoryUrl: 'https://github.com/user/repo',
});
`
`typescript
// Create webhook
const webhook = await client.createWebhook(
'https://myapp.com/webhook',
['analysis.completed', 'analysis.failed'],
'webhook-secret' // optional
);
// Get all webhooks
const webhooks = await client.getWebhooks();
// Update webhook
const updated = await client.updateWebhook(
'webhook-id',
'https://myapp.com/new-webhook',
['analysis.completed'],
'new-secret',
true // isActive
);
// Delete webhook
await client.deleteWebhook('webhook-id');
// Test webhook
await client.testWebhook('webhook-id');
`
`typescript
// Get analytics dashboard
const dashboard = await client.getAnalyticsDashboard({
dateRange: '7d', // optional: 7d, 30d, 90d
startDate: '2024-01-01', // optional
endDate: '2024-01-31', // optional
});
// Get endpoint-specific analytics
const endpointStats = await client.getEndpointAnalytics('/api/analysis');
// Export analytics
const csvBlob = await client.exportAnalytics('csv');
const jsonBlob = await client.exportAnalytics('json');
`
`typescript`
try {
const analysis = await client.createAnalysis({
contractCode: code,
});
} catch (error) {
console.error('Analysis failed:', error.message);
}
The SDK respects environment variables:
`bashUse custom API URL
export VIEW0X_API_URL=https://api.view0x.com
TypeScript Support
The SDK is written in TypeScript and includes full type definitions:
`typescript
import { View0xSDK, Analysis, Vulnerability } from '@view0x/sdk';const client = new View0xSDK({ apiKey: 'key' });
const analysis: Analysis = await client.getAnalysis('id');
const vulnerabilities: Vulnerability[] = analysis.vulnerabilities || [];
``See CONTRIBUTING.md
MIT © Nsisong Labs