# sms-validator

✅ A utility package to validate and analyze SMS messages for Africa's Talking SMS gateway.

- Supports **GSM-7** and **Unicode (UCS-2)** detection
- Calculates **SMS segments**
- Validates **international phone numbers (E.164)**
- Provides **cost estimate**, **sanitization**, and **message breakdown**

---

## 📦 Install

```bash
npm install sms-validator
```

---

## 🚀 Usage

```js
const {
  validateSms,
  getMessageBreakdown,
  sanitizeMessage
} = require("sms-validator");

const phone = "+254712345678";
const message = "Hello, your OTP is 123456 ✅";

const result = validateSms(phone, message, { sanitize: true });
console.log(result);

const breakdown = getMessageBreakdown(message, 0.03);
console.log(breakdown);
```

---

## 📋 API

### `validateSms(phone, message, options)`
- Validates phone format
- Detects encoding
- Checks length validity
- Optional: sanitize message
- Returns: `isPhoneValid`, `segments`, `encoding`, `messageLength`, `isLengthValid`, `sanitized`

### `getMessageBreakdown(message, costPerSegment)`
- Returns encoding, segment count, estimated cost

### `sanitizeMessage(message)`
- Strips non-ASCII characters

---

## ✅ Africa's Talking Specifics
This package assumes:
- Up to **3 message parts**
- E.164 phone numbers
- Costs per segment are gateway-defined


---

### 📄 `LICENSE`

MIT License

Copyright (c) 2025 Jonathan Mwebaze
