# @mindpath/aether-core

## Overview
The `EbotifyLiveChatConnector` is a powerful library for managing live chat connections via socket communication. It provides seamless integration with Ebotify Live Chat, enabling efficient handling of real-time communication with type safety.

## Features
- **Socket Connection Management**: Easily establish and manage socket connections.
- **Real-time Communication**: Send and receive messages in real time.
- **Session Management**: Update and retrieve session-specific user and settings data.
- **Type Safety**: Robust type definitions for improved developer experience.
- **Customizable Events**: Handle connection and message events with custom handlers.

## Installation
Install the package using `pnpm`:

```bash
npm add @mindpath/aether-core
```

## Usage

### Configuration
Set up the `EbotifyLiveChatConnector` with your configuration:

```typescript
import EbotifyLiveChatConnector from '@mindpath/aether-core';

const config = {
  url: 'https://example.com',
  botId: 'BOT123',
  ebotifyCustomerId: 'CUSTOMER456',
  organisationId: 'ORG789',
  tenantId: 'TENANT012',
  ticketNo: 'TICKET345',
  onConnect: () => console.log('Connected to Ebotify Live Chat'),
};

const liveChatConnector = new EbotifyLiveChatConnector(config);
```

### Manage User and Session Settings
Update and retrieve user and session settings:

```typescript
// Update user details
liveChatConnector.updateUser({ name: 'John Doe', contactNumber: '1234567890' });

// Get user details
const user = liveChatConnector.getUser();
console.log(user);

// Update session settings
liveChatConnector.updateSettings({ socketId: 'NEW_SOCKET_ID' });

// Get session settings
const settings = liveChatConnector.getSettings();
console.log(settings);
```

### Listen for Incoming Messages
Handle messages using a custom event handler:

```typescript
liveChatConnector.listenMessage((data) => {
  console.log('Received message:', data);
});
```

### Send Messages
Send messages to the Ebotify Live Chat:

```typescript
const message = {
  type: 'text',
  message: 'Hello, how can I help you?',
};

liveChatConnector.message(message);
```

## tsup Configuration
This project uses `tsup` for bundling. Below is the configuration used:

```typescript
import { defineConfig } from 'tsup';

export default defineConfig({
  entry: ['./src/**/*.{ts,tsx}'],
  treeshake: 'recommended',
  format: ['cjs', 'esm'],
  dts: true,
  minify: true,
  splitting: false,
  sourcemap: false,
  clean: true,
  minifyIdentifiers: true,
  minifySyntax: true,
  minifyWhitespace: true,
  platform: 'browser',
});
```

## Peer Dependencies
Ensure the following peer dependencies are installed:

- `react: ^18.2.0`
- `react-dom: ^18.2.0`
- `luxon: ^3.4.4`
- `socket.io-client: ^4.7.4`

## File Structure
- **`dist`**: Contains the bundled output files.
- **Source Code**:
  - Type definitions and enums.
  - Core classes (`EbotifyLiveChatConnector`, `SocketService`, etc.).

## License
This project is licensed under the ISC License.

