{"_id":"@curiositybay/sockit-client","name":"@curiositybay/sockit-client","dist-tags":{"alpha":"0.1.0-alpha.2","latest":"0.1.0-alpha.2"},"versions":{"0.1.0-alpha.2":{"name":"@curiositybay/sockit-client","version":"0.1.0-alpha.2","description":"Sockit WebSocket client library for real-time applications","type":"module","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format esm --dts --out-dir dist","dev":"tsup src/index.ts --format esm --dts --out-dir dist --watch","test":"jest","lint":"eslint src --ext .ts"},"keywords":["websocket","realtime","sockit","client"],"author":{"name":"Curiosity Bay"},"license":"MIT","dependencies":{"@curiositybay/sockit-core":"^0.1.0-alpha.2"},"devDependencies":{"@types/jest":"^29.5.0","jest":"^29.5.0","tsup":"^8.5.0","typescript":"^5.0.0"},"gitHead":"5f9ba9db53ac97649d721e0182ce6d726aca41b6","_id":"@curiositybay/sockit-client@0.1.0-alpha.2","_nodeVersion":"25.0.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-1IZ3JusU/xVghPJc3v9bAIxwS9pRnPVExplXr1BhDpA7mjwfqXbe9DtWenIhwmHUG+DBpv7W8gBEYEOznT/N7g==","shasum":"dd3efd2c9a12a02e0cc2e1f47a0554bfcce4908b","tarball":"https://registry.npmjs.org/@curiositybay/sockit-client/-/sockit-client-0.1.0-alpha.2.tgz","fileCount":7,"unpackedSize":51228,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC+Y18M4MqojUx62YQ+xAqkIuDTyAejkGPe9mlwjtuBhgIhAOIj1ztBoV75ggnzdA94lXlJgBMw5IZHYl6tltUda8oX"}]},"_npmUser":{"name":"curiositybay","email":"info@curiositybay.com"},"directories":{},"maintainers":[{"name":"curiositybay","email":"info@curiositybay.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sockit-client_0.1.0-alpha.2_1761823016083_0.9541848207159502"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-30T11:16:55.983Z","0.1.0-alpha.2":"2025-10-30T11:16:56.276Z","modified":"2025-10-30T11:16:56.580Z"},"maintainers":[{"name":"curiositybay","email":"info@curiositybay.com"}],"description":"Sockit WebSocket client library for real-time applications","keywords":["websocket","realtime","sockit","client"],"author":{"name":"Curiosity Bay"},"license":"MIT","readme":"# Sockit Client\n\n> ⚠️ **ALPHA VERSION** - This package is under active development and not ready for production use.\n\nA clean, high-level WebSocket client for real-time applications built with Sockit.\n\n## Features\n\n- 🔄 **Automatic Reconnection** - Exponential backoff with configurable retry limits\n- 📡 **Resource Subscriptions** - Subscribe to data patterns and get real-time updates\n- ⚡ **Action Execution** - Execute server actions with promise-based responses\n- 🎯 **TypeScript Support** - Full type definitions for better development experience\n- 🛡️ **Error Handling** - Comprehensive error handling and event system\n- 🔧 **Zero Configuration** - Works out of the box with sensible defaults\n\n## Quick Start\n\n```javascript\nimport { SockitClient } from '@curiositybay/sockit-client';\n\n// Create client (auto-connects by default)\nconst client = new SockitClient({\n  url: 'ws://localhost:3000/ws',\n  maxReconnectAttempts: 5,\n  baseReconnectDelay: 1000\n});\n\n// Subscribe to real-time updates\nclient.subscribe('user.*', (data, version) => {\n  console.log('User data updated:', data);\n});\n\n// Execute actions\nconst result = await client.action('user.profile', 'update', { name: 'John' });\n\n// Get current state\nconst profile = await client.getState('user.profile');\n\n// Listen to connection events\nclient.on('statusChange', (status) => {\n  console.log('Connection status:', status);\n});\n```\n\n## API Reference\n\n### SockitClient\n\n#### Constructor Options\n\n```typescript\ninterface SockitClientOptions {\n  url?: string;                    // WebSocket URL (defaults to auto-detect)\n  maxReconnectAttempts?: number;   // Max reconnection attempts (default: 5)\n  baseReconnectDelay?: number;     // Base delay for backoff (default: 1000ms)\n  autoConnect?: boolean;           // Auto-connect on instantiation (default: true)\n}\n```\n\n#### Methods\n\n- `connect()` - Connect to WebSocket server\n- `disconnect()` - Disconnect and stop reconnection attempts\n- `subscribe(pattern, onUpdate, onError?)` - Subscribe to resource pattern\n- `unsubscribe(pattern)` - Unsubscribe from pattern\n- `action(resource, action, params?, options?)` - Execute server action\n- `getState(resource)` - Get current state of resource\n- `on(event, listener)` - Add event listener\n- `off(event, listener)` - Remove event listener\n- `getStatus()` - Get current connection status\n- `isConnected()` - Check if connected\n\n#### Events\n\n- `statusChange` - Connection status changed\n- `error` - Error occurred\n- `message` - Raw message received (for debugging)\n\n## Examples\n\n### Real-time Chat\n\n```javascript\nconst client = new SockitClient();\n\n// Subscribe to messages\nclient.subscribe('chat.messages', (message) => {\n  displayMessage(message);\n});\n\n// Send message\nawait client.action('chat.messages', 'send', {\n  text: 'Hello world!',\n  userId: 'user123'\n});\n```\n\n### Live Dashboard\n\n```javascript\nconst client = new SockitClient();\n\n// Subscribe to multiple metrics\nclient.subscribe('metrics.*', (data, version) => {\n  updateDashboard(data);\n});\n\n// Get initial state\nconst metrics = await client.getState('metrics.overview');\n```\n\n### Connection Management\n\n```javascript\nconst client = new SockitClient({\n  maxReconnectAttempts: 10,\n  baseReconnectDelay: 2000\n});\n\nclient.on('statusChange', (status) => {\n  switch (status) {\n    case 'connected':\n      showNotification('Connected to server');\n      break;\n    case 'reconnecting':\n      showNotification('Reconnecting...');\n      break;\n    case 'failed':\n      showNotification('Connection failed. Please refresh.');\n      break;\n  }\n});\n```\n\n## Installation\n\n```bash\nnpm install @curiositybay/sockit-client\n```\n\n## Browser Support\n\n- Modern browsers with WebSocket support\n- ES2022+ features required\n- TypeScript 5.0+ for type definitions\n","readmeFilename":"README.md","_rev":"1-58fe1bc41460afa9bb1316e4c6b82bf8"}