259 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			259 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # @coze-studio/slardar-interface
 | |
| 
 | |
| > TypeScript interface definitions for Slardar monitoring and error reporting
 | |
| 
 | |
| ## Overview
 | |
| 
 | |
| `@coze-studio/slardar-interface` provides standardized TypeScript interface definitions for integrating with Slardar monitoring services. This package serves as a contract layer that defines the structure and behavior of Slardar instances used throughout the Coze Studio ecosystem.
 | |
| 
 | |
| ## Features
 | |
| 
 | |
| - ✨ **Type Safety** - Complete TypeScript interface definitions for Slardar functionality
 | |
| - 🔧 **Event Management** - Strongly typed event handling with overloaded methods
 | |
| - 📊 **Error Tracking** - Comprehensive error capturing with React support
 | |
| - 📈 **Metrics & Logging** - Structured event and log reporting interfaces
 | |
| - ⚙️ **Configuration** - Flexible configuration management
 | |
| - 🎯 **Event System** - Event listener registration and management
 | |
| 
 | |
| ## Get Started
 | |
| 
 | |
| ### Installation
 | |
| 
 | |
| Since this is a workspace package, add it to your `package.json`:
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "dependencies": {
 | |
|     "@coze-studio/slardar-interface": "workspace:*"
 | |
|   }
 | |
| }
 | |
| ```
 | |
| 
 | |
| Then run:
 | |
| 
 | |
| ```bash
 | |
| rush update
 | |
| ```
 | |
| 
 | |
| ### Basic Usage
 | |
| 
 | |
| ```typescript
 | |
| import type { Slardar, SlardarConfig, SlardarInstance } from '@coze-studio/slardar-interface';
 | |
| 
 | |
| // Implementing a Slardar instance
 | |
| class MySlardarImplementation implements Slardar {
 | |
|   // Implementation details...
 | |
| }
 | |
| 
 | |
| // Using as a constraint
 | |
| function useSlardar(slardar: SlardarInstance) {
 | |
|   // Configure the instance
 | |
|   slardar.config({ sessionId: 'user-session-123' });
 | |
| 
 | |
|   // Send events
 | |
|   slardar('sendEvent', {
 | |
|     name: 'user_action',
 | |
|     metrics: { duration: 150 },
 | |
|     categories: { page: 'dashboard' }
 | |
|   });
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## API Reference
 | |
| 
 | |
| ### Interfaces
 | |
| 
 | |
| #### `SlardarConfig`
 | |
| 
 | |
| Configuration options for Slardar instance:
 | |
| 
 | |
| ```typescript
 | |
| interface SlardarConfig {
 | |
|   sessionId?: string;
 | |
|   [key: string]: unknown;
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### `Slardar`
 | |
| 
 | |
| Main Slardar interface with overloaded methods for different event types:
 | |
| 
 | |
| ```typescript
 | |
| interface Slardar {
 | |
|   // Generic event method
 | |
|   (event: string, params?: Record<string, unknown>): void;
 | |
| 
 | |
|   // Error capturing
 | |
|   (
 | |
|     event: 'captureException',
 | |
|     error?: Error,
 | |
|     meta?: Record<string, string>,
 | |
|     reactInfo?: { version: string; componentStack: string }
 | |
|   ): void;
 | |
| 
 | |
|   // Event reporting
 | |
|   (
 | |
|     event: 'sendEvent',
 | |
|     params: {
 | |
|       name: string;
 | |
|       metrics: Record<string, number>;
 | |
|       categories: Record<string, string>;
 | |
|     }
 | |
|   ): void;
 | |
| 
 | |
|   // Log reporting
 | |
|   (
 | |
|     event: 'sendLog',
 | |
|     params: {
 | |
|       level: string;
 | |
|       content: string;
 | |
|       extra: Record<string, string | number>;
 | |
|     }
 | |
|   ): void;
 | |
| 
 | |
|   // Context management
 | |
|   (event: 'context.set', key: string, value: string): void;
 | |
| 
 | |
|   // Configuration
 | |
|   config: (() => SlardarConfig) & ((options: Partial<SlardarConfig>) => void);
 | |
| 
 | |
|   // Event listeners
 | |
|   on: (event: string, callback: (...args: unknown[]) => void) => void;
 | |
|   off: (event: string, callback: (...args: unknown[]) => void) => void;
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Event Types
 | |
| 
 | |
| #### Error Capturing
 | |
| 
 | |
| ```typescript
 | |
| slardar('captureException', new Error('Something went wrong'), {
 | |
|   userId: '12345',
 | |
|   context: 'checkout'
 | |
| }, {
 | |
|   version: '18.2.0',
 | |
|   componentStack: 'CheckoutForm > PaymentSection'
 | |
| });
 | |
| ```
 | |
| 
 | |
| #### Event Tracking
 | |
| 
 | |
| ```typescript
 | |
| slardar('sendEvent', {
 | |
|   name: 'button_click',
 | |
|   metrics: {
 | |
|     loadTime: 250,
 | |
|     clickCount: 1
 | |
|   },
 | |
|   categories: {
 | |
|     component: 'nav-button',
 | |
|     section: 'header'
 | |
|   }
 | |
| });
 | |
| ```
 | |
| 
 | |
| #### Logging
 | |
| 
 | |
| ```typescript
 | |
| slardar('sendLog', {
 | |
|   level: 'info',
 | |
|   content: 'User performed action',
 | |
|   extra: {
 | |
|     userId: 'user123',
 | |
|     timestamp: Date.now()
 | |
|   }
 | |
| });
 | |
| ```
 | |
| 
 | |
| #### Context Management
 | |
| 
 | |
| ```typescript
 | |
| slardar('context.set', 'userId', 'user-12345');
 | |
| slardar('context.set', 'environment', 'production');
 | |
| ```
 | |
| 
 | |
| ### Configuration Management
 | |
| 
 | |
| ```typescript
 | |
| // Get current config
 | |
| const currentConfig = slardar.config();
 | |
| 
 | |
| // Update config
 | |
| slardar.config({
 | |
|   sessionId: 'new-session-id',
 | |
|   customField: 'value'
 | |
| });
 | |
| ```
 | |
| 
 | |
| ### Event Listeners
 | |
| 
 | |
| ```typescript
 | |
| // Register event listener
 | |
| const handleError = (error: Error) => {
 | |
|   console.log('Error captured:', error);
 | |
| };
 | |
| 
 | |
| slardar.on('error', handleError);
 | |
| 
 | |
| // Remove event listener
 | |
| slardar.off('error', handleError);
 | |
| ```
 | |
| 
 | |
| ## Development
 | |
| 
 | |
| ### Project Structure
 | |
| 
 | |
| ```
 | |
| src/
 | |
| ├── index.ts          # Main interface definitions
 | |
| ```
 | |
| 
 | |
| ### Building
 | |
| 
 | |
| This package uses a no-op build process since it only contains TypeScript interfaces:
 | |
| 
 | |
| ```bash
 | |
| npm run build  # exits with code 0
 | |
| ```
 | |
| 
 | |
| ### Testing
 | |
| 
 | |
| ```bash
 | |
| npm test
 | |
| ```
 | |
| 
 | |
| ### Linting
 | |
| 
 | |
| ```bash
 | |
| npm run lint
 | |
| ```
 | |
| 
 | |
| ## Dependencies
 | |
| 
 | |
| ### Runtime Dependencies
 | |
| 
 | |
| None - this package only provides TypeScript interface definitions.
 | |
| 
 | |
| ### Development Dependencies
 | |
| 
 | |
| - `@coze-arch/eslint-config` - Shared ESLint configuration
 | |
| - `@coze-arch/ts-config` - Shared TypeScript configuration
 | |
| - `@coze-arch/vitest-config` - Shared Vitest configuration
 | |
| - `@types/node` - Node.js type definitions
 | |
| - `@vitest/coverage-v8` - Coverage reporting
 | |
| - `vitest` - Testing framework
 | |
| 
 | |
| ## Related Packages
 | |
| 
 | |
| - `@coze-studio/slardar-adapter` - Adapter implementation using these interfaces
 | |
| - `@coze-studio/default-slardar` - Default Slardar implementation
 | |
| 
 | |
| ## License
 | |
| 
 | |
| Apache-2.0
 | |
| 
 | |
| ---
 | |
| 
 | |
| > This package is part of the Coze Studio monorepo and provides foundational type definitions for Slardar monitoring integration.
 |