# cameroon-number-validator
A lightweight, zero-dependency library to validate Cameroonian phone numbers, identify carriers (MTN, Orange, Camtel, Nexttel, Yoomee), and format to E.164.
Works in Node.js, browsers (via bundler), and any TypeScript/JavaScript project.
## Installation
Install directly from GitHub:
```bash
# Using npm
npm install github:grimm-labs/cameroon-number-validator
# Using yarn
yarn add github:grimm-labs/cameroon-number-validator
# Using pnpm
pnpm add github:grimm-labs/cameroon-number-validator
```
You can also pin a specific branch, tag, or commit:
```bash
# Specific branch
npm install github:grimm-labs/cameroon-number-validator#main
# Specific tag
npm install github:grimm-labs/cameroon-number-validator#v1.0.0
# Specific commit
npm install github:grimm-labs/cameroon-number-validator#abc1234
```
## Usage
### Validate a phone number
```typescript
import { validateCameroonPhone } from 'cameroon-number-validator';
const result = validateCameroonPhone('+237 6 50 12 34 56');
console.log(result);
// {
// isValid: true,
// carrier: 'MTN_CM',
// type: 'MOBILE',
// localNumber: '650123456',
// e164: '+237650123456',
// display: '+237 650 12 34 56'
// }
```
### Check the carrier
```typescript
import { isCarrier } from 'cameroon-number-validator';
isCarrier('690000000', 'ORANGE_CM'); // true
isCarrier('650000000', 'ORANGE_CM'); // false
```
### Check if it's a mobile number
```typescript
import { isMobile } from 'cameroon-number-validator';
isMobile('670123456'); // true
isMobile('222123456'); // false (landline)
```
### Convert to E.164
```typescript
import { toE164 } from 'cameroon-number-validator';
toE164('6 50 12 34 56'); // '+237650123456'
toE164('invalid'); // null
```
### Get the local number (9 digits)
```typescript
import { toLocalNumber } from 'cameroon-number-validator';
toLocalNumber('+237650123456'); // '650123456'
```
### Batch validation
```typescript
import { validateBatch } from 'cameroon …