@fusionstrings/panchangam@0.1.2Built and signed on GitHub ActionsBuilt and signed on GitHub Actions
Built and signed on GitHub Actions
latest
fusionstrings/panchangamWorks with
•JSR Score52%•It is unknown whether this package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers




Downloads2/wk
•Published16 hours ago (0.1.2)
Panchangam (Wasm)
High-Precision Vedic Astrology & Calendar Library
Powered by Swiss Ephemeris | Compiled to WebAssembly | Built for the Edge
🌟 Why Panchangam?
Most Vedic astrology libraries rely on static lookup tables or simplified algorithms that trade accuracy for speed. Panchangam bridges the gap between ancient Vedic requirements and modern astronomical precision.
- Astronomical Precision ("Drik Ganita"): We wrap the industry-standard Swiss Ephemeris (used by NASA/JPL) to calculate planetary positions to millisecond precision. No approximations.
- The "Udaya Tithi" Standard: In Vedic traditions, the day doesn't start at midnight; it starts at Sunrise. We calculate exact local sunrise times (taking atmospheric refraction and altitude into account) to determine the correct Tithi, Nakshatra, and Yoga for any location on Earth.
- Wasm-First Performance: Written in Rust and compiled to WebAssembly, this library runs with near-native performance in Node.js, Deno, and Cloudflare Workers. It's designed for serverless scalability.
✨ Features
- Swiss Ephemeris v2.10.03: The gold standard for planetary calculations.
- Vedic Calendar (Panchang):
- Tithi: Lunar day (1-30) with end times calculated via iterative binary search.
- Nakshatra: 27 Lunar mansions.
- Yoga: 27 Luni-solar combinations.
- Karana: 11 Half-Tithis.
- Vara: Weekday based on sunrise-to-sunrise logic.
- Advanced Astronomy:
- True Ayanamsa: Support for Lahiri (Chitrapaksha), Raman, Krishnamurti, and more.
- Planetary War (Graha Yuddha): Detects when planets are dangerously close (< 1°).
- Muhurat: Real-time calculation of Rahu Kalam, Yamaganda, and Gulika (8-part day division).
🚀 Usage
Installation
This project is currently distributed as a source crate. You verify and build the Wasm bindings locally.
Prerequisites:
One-Step Build:
deno task build
This generates:
./lib/panchangam.js: The ESM entry point../lib/panchangam.wasm: The compiled Wasm binary../lib/panchangam.d.ts: Fully typed TypeScript definitions.
Quick Start
import { calculate_daily_panchang, Location } from "./lib/panchangam.js"; // 1. Define Location: Bangalore (12.97 N, 77.59 E, 920m altitude) const bangalore = new Location(12.9716, 77.5946, 920.0); // 2. Calculate for January 5, 2026 // params: (year, month, day, location, ayanamsha_mode) // mode 1 = Lahiri (Chitrapaksha) const result = calculate_daily_panchang(2026, 1, 5, bangalore, 1); // 3. Output Results console.log(`Date: ${result.date}`); console.log(`Sunrise: ${new Date(result.sunrise).toLocaleTimeString()}`); console.log( `Tithi: ${result.tithi_name} (Ends at ${ new Date(result.tithi_end_time).toLocaleTimeString() })`, ); console.log(`Nakshatra: ${result.nakshatra_name}`);
Advanced: Planetary War
import { check_graha_yuddha, swe_julday } from "./lib/panchangam.js"; const jd = swe_julday(2026, 1, 6, 12.0, 1); // Jan 6, 2026 const conflicts = check_graha_yuddha(jd, 1); if (conflicts.length > 0) { conflicts.forEach((war) => { console.warn( `⚔️ PLANETARY WAR: ${war.planet1_name} vs ${war.planet2_name}`, ); console.log( `Winner: ${ war.winner_id === war.planet1_id ? war.planet1_name : war.planet2_name }`, ); }); }
🛠️ Development
Project Structure
src/lib.rs: Wasm entry point (exposes functions to JS).src/vedic/: Core Vedic algorithms (Tithi, Nakshatra, etc.).src/astronomy/: Swiss Ephemeris wrappers and solvers.scripts/build_npm.ts: Build script to generate NPM/Deno package.
Testing
Run the Deno-based verification suite:
deno test --allow-read --allow-env
License
MIT
Built and signed on
GitHub Actions
Add Package
deno add jsr:@fusionstrings/panchangam
Import symbol
import * as panchangam from "@fusionstrings/panchangam";
Import directly with a jsr specifier
import * as panchangam from "jsr:@fusionstrings/panchangam";
Add Package
pnpm i jsr:@fusionstrings/panchangam
pnpm dlx jsr add @fusionstrings/panchangam
Import symbol
import * as panchangam from "@fusionstrings/panchangam";
Add Package
yarn add jsr:@fusionstrings/panchangam
yarn dlx jsr add @fusionstrings/panchangam
Import symbol
import * as panchangam from "@fusionstrings/panchangam";
Add Package
vlt install jsr:@fusionstrings/panchangam
Import symbol
import * as panchangam from "@fusionstrings/panchangam";
Add Package
npx jsr add @fusionstrings/panchangam
Import symbol
import * as panchangam from "@fusionstrings/panchangam";
Add Package
bunx jsr add @fusionstrings/panchangam
Import symbol
import * as panchangam from "@fusionstrings/panchangam";