sunan-al-nasai
The complete Sunan al-Nasa'i — 5,768 hadiths, full Arabic & English.
Offline-first · zero dependencies · published on both npm and PyPI.
✨ Features
| Feature | Details | |
|---|---|---|
| 📚 | Complete Collection | All 5,768 authentic hadiths from Sunan al-Nasa'i |
| 🌐 | Bilingual | Full Arabic text + English translation |
| ⚡ | Offline-first | Data bundled — no CDN needed |
| 🔧 | Zero Dependencies | Nothing extra to install |
| 🔍 | Full-text Search | Search English text and narrator names |
| 🖥️ | CLI | Terminal access with Arabic/English/both flags |
| ⚛️ | React Hook | One command generates useNasai() |
| 🐍 | Python | Identical API — same camelCase method names |
| 📘 | TypeScript | Full type definitions included |
🚀 Installation
npm install sunan-al-nasai # JS local
npm install -g sunan-al-nasai # JS global CLI
pip install sunan-al-nasai # Python
🟨 JavaScript / Node.js
const nasai = require('sunan-al-nasai'); // CJS
import nasai from 'sunan-al-nasai'; // ESM
nasai.get(1)
nasai.getByChapter(1)
nasai.search('prayer')
nasai.search('prayer', 5)
nasai.getRandom()
nasai[0]
nasai.length
nasai.metadata
nasai.chapters
nasai.find(h => h.id === 23)
nasai.filter(h => h.chapterId === 1)
nasai.slice(0, 10)
⚛️ React
cd my-react-app
nasai --react # generates src/hooks/useNasai.js
import { useNasai } from '../hooks/useNasai';
function HadithOfTheDay() {
const nasai = useNasai();
if (!nasai) return <p>Loading...</p>;
const h = nasai.getRandom();
return <div><strong>{h.english.narrator}</strong><p>{h.english.text}</p></div>;
}
🐍 Python
from sunan_al_nasai import Nasai
nasai = Nasai()
nasai.get(1)
nasai.getByChapter(1)
nasai.search("prayer")
nasai.search("prayer", limit=5)
nasai.getRandom()
nasai[0]
nasai.length
nasai.find(lambda h: h.id == 23)
nasai.filter(lambda h: h.chapterId == 1)
nasai.slice(0, 10)
# Custom path
nasai = Nasai(data_path="/path/to/nasai.json")
🖥️ CLI
nasai 1
nasai 2345 -a # Arabic only
nasai 2345 -b # Arabic + English
nasai 23 34 # Hadith 34 within chapter 23
nasai --search "prayer"
nasai --search "fasting" --all
nasai --chapter 1
nasai --random
nasai --react
nasai --version
📂 Structure
sunan-al-nasai/
├── data/
│ ├── nasai.json ← source of truth (replace with real data)
│ ├── nasai.json.gz ← generated (shipped in packages)
│ └── chapters/ ← generated (gitignored)
├── bin/index.js ← CLI
├── src/ ← JS source
├── types/index.d.ts
├── python/sunan_al_nasai/ ← Python package
├── scripts/build.mjs
├── examples/
├── docs/
└── tests/
🔧 Development
# 1. Place your real nasai.json in data/
node scripts/build.mjs
# 2. Test locally (no internet needed)
python -m build --no-isolation --wheel
python -m zipfile -l dist\sunan_al_nasai-1.0.0-py3-none-any.whl | findstr "nasai.json.gz"
pip install dist\sunan_al_nasai-1.0.0-py3-none-any.whl --force-reinstall
nasai 23
# 3. Release (triggers GitHub Actions → auto-publishes to npm + PyPI)
git add .
git commit -m "v1.0.0 — initial release"
git push origin main
gh release create v1.0.0 --title "v1.0.0" --notes "initial release"
📄 License
GNU Affero General Public License v3.0 (AGPL-3.0)
Metadata
Release files for sunan-al-nasai 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sunan_al_nasai-1.0.1.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sunan_al_nasai-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.9 MB
Release files / sunan_al_nasai-1.0.1.tar.gz
| Download URL | sunan_al_nasai-1.0.1.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c3193200868322408e8e35ffc702b34816b4dd3dc84efa162bdbd637f5914f49
|
|
BLAKE2b-256 checksum How to use checksums |
9a1b3a3e712498d4b3f9019bab3e8756a1e42bf094433bbf287d8c6f18f0af28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / sunan_al_nasai-1.0.1-py3-none-any.whl
| Download URL | sunan_al_nasai-1.0.1-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5ecefe7de643323b7c588171740ba476e4b578b69ec289047d64890bfdbd2341
|
|
BLAKE2b-256 checksum How to use checksums |
498a3917ba7bace1180a68e381889fc9663484cab6169ef9732559c166f2e093
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|