npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

sumerian-dates

v0.1.0

Published

Convert Gregorian dates to the Nippur Sumerian ritual calendar

Downloads

99

Readme

sumerian-date

Convert Gregorian dates to the Nippur Sumerian ritual calendar as documented by The Ishtar Gate (archived January 2025).

Pure JavaScript, zero runtime dependencies, works in Node.js 14+.


Background

The Sumerian calendar is a lunisolar calendar rooted in the Nippur tradition, the sacred city of Enlil. Each month begins at the first sunset after the astronomical new moon. The year begins with the month whose new moon falls after the vernal equinox. Short years contain 12 months; long years contain 13, following the 19-year Metonic cycle.

Astronomical calculations implement the algorithms of Jean Meeus (Astronomical Algorithms, 2nd ed.) for:

  • Vernal equinox (Ch. 27)
  • New moon (Ch. 49)
  • Sunset time for Nippur (32.13°N, 45.23°E by default)

The day-start rule (sunset) is verified against the Ishtar Gate app reference:

New moon 8 April 2024 21:20 local (UTC+3) → year start 10 April 2024


Installation

npm install sumerian-date

Quick Start

const { sumerianDate, sumerianYear } = require('sumerian-date');

// Today's Sumerian date
const today = sumerianDate();
console.log(today.toString());
// → "Day 15 of Šekinku — Gregorian 5 Mar 2026"

console.log(today.monthCuneiform);   // 𒌗𒊺𒆥𒋻
console.log(today.monthMeaning);     // "Reaping of Barley"
console.log(today.observances);      // [{ name: 'Ešeš', description: '...' }, ...]

API

sumerianDate([date], [opts])SumerianDate

Convert a JS Date to its Sumerian equivalent. Defaults to new Date() (now).

const sd = sumerianDate(new Date('2024-06-04T15:37:00Z'));

sd.monthName        // "Gusisu"
sd.monthCuneiform   // "𒌗𒄞𒋛𒁲"
sd.monthMeaning     // "Marching Forth of Oxen"
sd.monthDescription // "Beginning of the agricultural season..."
sd.dayOfMonth       // 27
sd.monthLengthDays  // 29
sd.monthStartDate   // Date object
sd.monthEndDate     // Date object
sd.cyclePosition    // 18  (position in the 19-year Metonic cycle)
sd.isIntercalaryYear  // false
sd.isIntercalaryMonth // false
sd.observances      // Array of { name, description } for today's observances
sd.toString()       // "Day 27 of Gusisu — Gregorian 4 Jun 2024"

opts: | Option | Default | Description | |--------|---------|-------------| | latitude | 32.13 | Reference latitude for sunset (Nippur) | | longitude | 45.23 | Reference longitude for sunset (Nippur) |

sumerianYear([gregorianYear], [opts])SumerianYear

Get the full year structure including all months with start dates.

const year = sumerianYear(2026);

year.springGregorianYear  // 2026
year.cyclePosition        // 1  (first year of new 19-year cycle)
year.isLongYear           // false
year.yearStart            // Date: ~late March / early April
year.yearEnd              // Date
year.nextYearStart        // Date

year.months.forEach(m => {
  console.log(`${m.number}. ${m.name} — starts ${m.startDate.toDateString()} (${m.lengthDays} days)`);
});
// 1. Barazagar — starts Thu Apr 02 2026 (30 days)
// 2. Gusisu — starts Sat May 02 2026 (29 days)
// ...
// 12. Šekinku — starts Mon Feb 22 2027 (29 days)

cyclePosition(springGregorianYear)number (1–19)

Returns the position within the 19-year Metonic cycle. Long years (13 months) are at positions: 3, 6, 8, 11, 14, 17, 19.

cyclePosition(2007)  // 1  — first year of cycle
cyclePosition(2009)  // 3  — long year (Diri Šekinku appended)
cyclePosition(2023)  // 17 — long year (Diri Kin Inana inserted after month 6)
cyclePosition(2026)  // 1  — new cycle begins

vernalEquinox(year)Date

vernalEquinox(2024)  // Thu Mar 20 2024 03:06 UTC

nextNewMoon(afterDate)Date

nextNewMoon(new Date('2024-03-20'))  // Mon Apr 08 2024 18:21 UTC

months — Array of month data

The twelve standard months. Each has:

  • number (1–12)
  • name — transliteration
  • cuneiform — Unicode cuneiform
  • meaning — English translation
  • season
  • description
  • festivals — array of { day, name, description }

intercalaryMonth / intercalaryMonthYear17

The two intercalary month variants (Diri Šekinku and Diri Kin Inana).


The Twelve Months

| # | Name | 𒀭 | Meaning | Season | |---|------|-----|---------|--------| | 1 | Barazagar | 𒌗𒁈𒍠𒃻 | Dais of the Sanctuary | Spring | | 2 | Gusisu | 𒌗𒄞𒋛𒁲 | Marching Forth of Oxen | Spring | | 3 | Sig Ga | 𒌗𒋞𒂵 | Placing of Bricks | Spring | | 4 | Šunumun | 𒌗𒋗𒆰𒈾 | Seeding | Summer | | 5 | Nenegar | 𒌗𒉈𒉈𒃻 | Lighting of the Braziers | Summer | | 6 | Kin Inana | 𒌗𒆥𒀭𒈹 | The Labours of Inana | Summer | | 7 | Duku | 𒌗𒇯𒆬 | The Sacred Mound | Autumn | | 8 | Apin Dua | 𒌗𒀳𒃮𒀀 | Releasing of the Plough | Autumn | | 9 | Gan Gan-e | 𒌗𒃶𒃶𒈾 | Coming of Clouds | Autumn | | 10 | Kusu | 𒌗𒆬𒋆 | Lady of the Grain | Autumn | | 11 | Uduru | 𒌗𒍩𒀀 | Emmer | Winter | | 12 | Šekinku | 𒌗𒊺𒆥𒋻 | Reaping of Barley | Winter | | 13* | Diri Šekinku | 𒌗𒋛𒀀𒊺𒆥𒋻 | Second Reaping of Barley | Winter |

*Intercalary month, appended after Šekinku in cycle years 3, 6, 8, 11, 14, 19. In cycle year 17, Diri Kin Inana is inserted after month 6 instead.


Monthly Observances

Two observances occur every month:

| Day | Name | Description | |-----|------|-------------| | 7 | Ešeš (Quarter Moon) | First-quarter moon; offering to household gods | | 15 | Ešeš (Full Moon) | Great Offering to all household gods | | Last | Kisiga (New Moon) | Funerary offerings; libation of fresh water for the dead |

These are returned in sumerianDate().observances for the current day.


Calendar Rules (Summary)

  1. Month start: First sunset after the astronomical new moon (day begins at sunset, per Sumerian custom).
  2. Year start: The month whose new moon falls first after the vernal equinox.
  3. Intercalation: Metonic 19-year cycle. Years 3, 6, 8, 11, 14, 17, 19 have 13 months. Cycle began spring 2007.
  4. Month 13 placement: After month 12 in most long years; after month 6 (as Diri Kin Inana) in cycle year 17.
  5. Reference location: Nippur (32.13°N, 45.23°E) by default. Override with opts.latitude / opts.longitude.

Sources

  • The Ishtar Gate — Ritual Calendar (archived): https://web.archive.org/web/20250125122100/https://www.theishtargate.com/Calendar/
  • Mark E. Cohen, Cultic Calendars of the Ancient Near East (CDL Press, 1993)
  • Jean Meeus, Astronomical Algorithms (2nd ed., Willmann-Bell, 1998) — Chapters 27 & 49

License

MIT