Identity & Contact Data

Strict validation and metadata extraction for National Codes, Mobile numbers, Landlines, Legal IDs, and Postal Codes.

Zod Schema Usage

Easily attach identity validators to your Zod objects. zod-ir handles standard error messaging out of the box.

schema.ts
typescript
import * as z from 'zod';
import { 
  zMelliCode, 
  zShenaseMelli, 
  zIranianMobile, 
  zLandline,
  zPostalCode 
} from 'zod-ir';

const UserProfileSchema = z.object({
  nationalCode: zMelliCode({ message: 'کد ملی نامعتبر است' }),
  companyId: zShenaseMelli(),
  mobile: zIranianMobile({ strictZero: true }),
  phone: zLandline(),
  zip: zPostalCode(),
});

Metadata Extraction (Standalone)

Extract useful information like Province, City, and Operator Name from raw inputs without needing Zod validation.

metadata.ts
typescript
import { getLandlineInfo, getPostalCodeInfo } from 'zod-ir';

const phoneInfo = getLandlineInfo('02122334455');
console.log(phoneInfo.province_fa); // "تهران"
console.log(phoneInfo.city_fa); // "تهران"

const zipInfo = getPostalCodeInfo('8391853612');
console.log(zipInfo.province.name); // "اصفهان"
console.log(zipInfo.city.name_fa); // "نائین"