{"_id":"@bruceic/chattly-sdk-js","_rev":"3-86c93d5f8a3352f6d4c8c93e08260d63","name":"@bruceic/chattly-sdk-js","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@bruceic/chattly-sdk-js","version":"1.0.0","keywords":["chat","real-time","websocket","api","sdk","messaging"],"author":{"name":"Chattly Team"},"license":"MIT","_id":"@bruceic/chattly-sdk-js@1.0.0","maintainers":[{"name":"bruceic","email":"brucechigwa5@gmail.com"}],"dist":{"shasum":"4eb3fdb344a24062831124ec45c8f8eca5782838","tarball":"https://registry.npmjs.org/@bruceic/chattly-sdk-js/-/chattly-sdk-js-1.0.0.tgz","fileCount":19,"integrity":"sha512-2tTQ0XagQ17J1fB89gcLlDoMnrrtYvsKEXlhQUEQjyqif1Z+PmT85rKHi+chjg/z+1XCdBU6uuXuPXfw2Jg/eA==","signatures":[{"sig":"MEUCIQCBZxccIeABTCjNQn/pgKD9+ib3L3ZgqVSoKkpngcuynAIgP91dMziQxDeaEfQqvMXeNo/XmaijCxMjOeX59ZH8p0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42866},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","test":"jest","build":"tsc","clean":"rimraf dist","test:watch":"jest --watch","type-check":"tsc --noEmit"},"_npmUser":{"name":"bruceic","email":"brucechigwa5@gmail.com"},"_npmVersion":"10.9.2","description":"JavaScript/TypeScript SDK for Chattly Platform","directories":{},"_nodeVersion":"22.17.1","dependencies":{"axios":"^1.4.0","socket.io-client":"^4.7.2","@bruceic/chattly-shared":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.2"},"peerDependencies":{"@types/node":">=16"},"_npmOperationalInternal":{"tmp":"tmp/chattly-sdk-js_1.0.0_1757321071486_0.11963908768705034","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bruceic/chattly-sdk-js","version":"1.0.1","keywords":["chat","real-time","websocket","api","sdk","messaging"],"author":{"name":"Chattly Team"},"license":"MIT","_id":"@bruceic/chattly-sdk-js@1.0.1","maintainers":[{"name":"bruceic","email":"brucechigwa5@gmail.com"}],"homepage":"https://github.com/BruceICzw/chattly#readme","bugs":{"url":"https://github.com/BruceICzw/chattly/issues"},"dist":{"shasum":"5124d8ec31c23fd6df3086323df97d9bb3446f7a","tarball":"https://registry.npmjs.org/@bruceic/chattly-sdk-js/-/chattly-sdk-js-1.0.1.tgz","fileCount":19,"integrity":"sha512-vbJ3wBAG1Fwpz7VIiinF8GJfG2a0iIAIPt9jwgLrB6ntSUS3AnerEH8egDwr05Kg3eYPkQMDEh7GWV4WrowbVA==","signatures":[{"sig":"MEQCIEozSPCuJ7BVq1e1MaPTTzU6AJjcvqEhPo6vz9GlJ2liAiA58jrLoN0OE1IHSdPQ3LBemV9rHGo1g0WAH4Goy7eZ6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43210},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f440182fd849495ef7f2dac94a60972e291241f3","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc","clean":"rimraf dist","test:watch":"jest --watch","type-check":"tsc --noEmit"},"_npmUser":{"name":"bruceic","email":"brucechigwa5@gmail.com"},"repository":{"url":"git+https://github.com/BruceICzw/chattly.git","type":"git"},"_npmVersion":"10.9.2","description":"JavaScript/TypeScript SDK for Chattly Platform","directories":{},"_nodeVersion":"22.17.1","dependencies":{"axios":"^1.4.0","socket.io-client":"^4.7.2","@bruceic/chattly-shared":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.2"},"peerDependencies":{"@types/node":">=16"},"_npmOperationalInternal":{"tmp":"tmp/chattly-sdk-js_1.0.1_1757322056428_0.07031955809282264","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bruceic/chattly-sdk-js","version":"1.0.2","description":"JavaScript/TypeScript SDK for Chattly Platform","repository":{"type":"git","url":"git+https://github.com/BruceICzw/chattly.git"},"homepage":"https://github.com/BruceICzw/chattly#readme","bugs":{"url":"https://github.com/BruceICzw/chattly/issues"},"author":{"name":"Bruce","url":"https://github.com/BruceICzw"},"funding":{"type":"github","url":"https://github.com/sponsors/BruceICzw"},"keywords":["chat","real-time","websocket","api","sdk","messaging"],"type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","dev":"tsc --watch","clean":"rimraf dist","test":"jest","test:watch":"jest --watch","type-check":"tsc --noEmit"},"dependencies":{"socket.io-client":"^4.7.2","axios":"^1.4.0","@bruceic/chattly-shared":"^1.0.2"},"devDependencies":{"typescript":"^5.0.0","jest":"^29.5.0","@types/jest":"^29.5.2","ts-jest":"^29.1.0","rimraf":"^5.0.0"},"peerDependencies":{"@types/node":">=16"},"license":"MIT","_id":"@bruceic/chattly-sdk-js@1.0.2","gitHead":"16e966c65ec0387a8d6c6bf0c5c90d0fb43c86cc","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-3PziEno3yqyDbR8a7qllnbcbpDaInneLWNnkvEDU2oGktCF8ufJNGSwlMMAsmoNZpHV84XgMoj7VH2IvRHUaag==","shasum":"9e55bf13f3085180daff586228ae05872e85ae75","tarball":"https://registry.npmjs.org/@bruceic/chattly-sdk-js/-/chattly-sdk-js-1.0.2.tgz","fileCount":19,"unpackedSize":43265,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDMDHxIdYS0U5koq5KLD/3C9prnOTKgvsv7qqqjjK5GkAiB09r/IkPvOK6J108CnsfSUN2zUPJAFjzIzltX7ISfi0w=="}]},"_npmUser":{"name":"bruceic","email":"brucechigwa5@gmail.com"},"directories":{},"maintainers":[{"name":"bruceic","email":"brucechigwa5@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chattly-sdk-js_1.0.2_1757324714349_0.7455153516254558"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-08T08:44:31.382Z","modified":"2025-09-08T09:45:14.711Z","1.0.0":"2025-09-08T08:44:31.659Z","1.0.1":"2025-09-08T09:00:56.611Z","1.0.2":"2025-09-08T09:45:14.518Z"},"bugs":{"url":"https://github.com/BruceICzw/chattly/issues"},"author":{"name":"Bruce","url":"https://github.com/BruceICzw"},"license":"MIT","homepage":"https://github.com/BruceICzw/chattly#readme","keywords":["chat","real-time","websocket","api","sdk","messaging"],"repository":{"type":"git","url":"git+https://github.com/BruceICzw/chattly.git"},"description":"JavaScript/TypeScript SDK for Chattly Platform","maintainers":[{"name":"bruceic","email":"brucechigwa5@gmail.com"}],"readme":"# @bruceic/chattly-sdk-js\r\n\r\nOfficial JavaScript/TypeScript SDK for Chattly Platform - a comprehensive, scalable real-time chat API solution.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @bruceic/chattly-sdk-js\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport { ChattlyClient } from '@bruceic/chattly-sdk-js';\r\n\r\n// Initialize the client\r\nconst client = new ChattlyClient({\r\n  apiKey: 'your-api-key',\r\n  baseURL: 'https://api.chattly.dev' // or your self-hosted URL\r\n});\r\n\r\n// Authenticate a user\r\nawait client.auth.login('user@example.com', 'password');\r\n\r\n// Join a channel\r\nawait client.channels.join('channel-id');\r\n\r\n// Send a message\r\nawait client.messages.send('channel-id', {\r\n  content: 'Hello, world!',\r\n  type: 'TEXT'\r\n});\r\n\r\n// Listen for new messages\r\nclient.on('messageReceived', (message) => {\r\n  console.log('New message:', message);\r\n});\r\n```\r\n\r\n## Features\r\n\r\n- ✅ **Authentication**: JWT-based user authentication with refresh tokens\r\n- ✅ **Real-time Messaging**: WebSocket-based real-time communication\r\n- ✅ **Channel Management**: Create, join, and manage chat channels\r\n- ✅ **User Management**: User presence, status, and profile management\r\n- ✅ **Message Operations**: Send, edit, delete, and react to messages\r\n- ✅ **File Uploads**: Support for file attachments (when enabled)\r\n- ✅ **Typing Indicators**: Real-time typing status\r\n- ✅ **Event System**: Comprehensive event-driven architecture\r\n- ✅ **TypeScript Support**: Full TypeScript support with type definitions\r\n\r\n## API Reference\r\n\r\n### Authentication\r\n\r\n```typescript\r\n// Login\r\nawait client.auth.login(email, password);\r\n\r\n// Register\r\nawait client.auth.register({\r\n  email: 'user@example.com',\r\n  password: 'secure-password',\r\n  displayName: 'John Doe'\r\n});\r\n\r\n// Logout\r\nawait client.auth.logout();\r\n\r\n// Get current user\r\nconst user = await client.auth.getCurrentUser();\r\n```\r\n\r\n### Channels\r\n\r\n```typescript\r\n// Get all channels\r\nconst channels = await client.channels.list();\r\n\r\n// Create a channel\r\nconst channel = await client.channels.create({\r\n  name: 'general',\r\n  description: 'General discussion',\r\n  type: 'PUBLIC'\r\n});\r\n\r\n// Join a channel\r\nawait client.channels.join('channel-id');\r\n\r\n// Leave a channel\r\nawait client.channels.leave('channel-id');\r\n\r\n// Get channel members\r\nconst members = await client.channels.getMembers('channel-id');\r\n```\r\n\r\n### Messages\r\n\r\n```typescript\r\n// Send a message\r\nconst message = await client.messages.send('channel-id', {\r\n  content: 'Hello!',\r\n  type: 'TEXT'\r\n});\r\n\r\n// Get channel messages\r\nconst messages = await client.messages.list('channel-id', {\r\n  limit: 50,\r\n  offset: 0\r\n});\r\n\r\n// Edit a message\r\nawait client.messages.update('message-id', {\r\n  content: 'Updated content'\r\n});\r\n\r\n// Delete a message\r\nawait client.messages.delete('message-id');\r\n```\r\n\r\n### Real-time Events\r\n\r\n```typescript\r\n// Message events\r\nclient.on('messageReceived', (message) => { /* handle new message */ });\r\nclient.on('messageUpdated', (message) => { /* handle updated message */ });\r\nclient.on('messageDeleted', (messageId) => { /* handle deleted message */ });\r\n\r\n// Typing events\r\nclient.on('typingStart', (data) => { /* user started typing */ });\r\nclient.on('typingStop', (data) => { /* user stopped typing */ });\r\n\r\n// Presence events\r\nclient.on('userOnline', (user) => { /* user came online */ });\r\nclient.on('userOffline', (user) => { /* user went offline */ });\r\n\r\n// Channel events\r\nclient.on('channelCreated', (channel) => { /* new channel created */ });\r\nclient.on('channelUpdated', (channel) => { /* channel updated */ });\r\nclient.on('memberJoined', (data) => { /* member joined channel */ });\r\nclient.on('memberLeft', (data) => { /* member left channel */ });\r\n```\r\n\r\n### Error Handling\r\n\r\n```typescript\r\nimport { ChattlyError } from '@bruceic/chattly-sdk-js';\r\n\r\ntry {\r\n  await client.messages.send('channel-id', { content: 'Hello!' });\r\n} catch (error) {\r\n  if (error instanceof ChattlyError) {\r\n    console.error('Chattly error:', error.code, error.message);\r\n  } else {\r\n    console.error('Unexpected error:', error);\r\n  }\r\n}\r\n```\r\n\r\n## Configuration Options\r\n\r\n```typescript\r\nconst client = new ChattlyClient({\r\n  apiKey: 'your-api-key',\r\n  baseURL: 'https://api.chattly.dev',\r\n  websocketURL: 'wss://ws.chattly.dev',\r\n  timeout: 30000,\r\n  retryAttempts: 3,\r\n  enableAutoReconnect: true,\r\n  debug: false\r\n});\r\n```\r\n\r\n## License\r\n\r\nMIT License - see LICENSE file for details.\r\n\r\n## Support\r\n\r\n- 📖 **Documentation**: [https://docs.chattly.dev](https://docs.chattly.dev)\r\n- 💬 **Community**: [https://discord.gg/chattly](https://discord.gg/chattly)\r\n- 🐛 **Issues**: [https://github.com/chattly/sdk-js/issues](https://github.com/chattly/sdk-js/issues)\r\n- 📧 **Email**: support@chattly.dev","readmeFilename":"README.md"}