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

@sint-willibrordkerk/liturgical-calendar

v3.0.0

Published

Generate a (local) Catholic liturgical calendar following the 1960 Code of Rubrics (1962 Missal). Each language of the propers is published separately.

Readme

Liturgical Calendar

Generate a Catholic liturgical calendar in accordance with the 1960 Code of Rubrics, as promulgated in the 1962 Missal (Traditional Latin Mass / Extraordinary Form). The rubrics are of 1960 and the books of 1962, which is why the calendar data is calendar1962.yml and the propers are published under the 1962 rubric.

Overview

This library generates a complete liturgical calendar for any given year. It supports:

  • Base calendar: The universal calendar
  • Local propers: Add the local propers of your diocese or congregation to this repository; see Ultrajectum as an example.
  • Mass propers: The Introit, readings, chants and prayers of each day, generated from Divinum Officium
  • Translations: Multi-language support; see nl as an example.

Installation

The calendar and the propers are published separately: this package holds the calendar, and each language holds its own Mass propers and translations. Install the calendar and the languages you read.

pnpm add @sint-willibrordkerk/liturgical-calendar @sint-willibrordkerk/liturgical-calendar-la
# or Dutch, or both
pnpm add @sint-willibrordkerk/liturgical-calendar @sint-willibrordkerk/liturgical-calendar-nl

The propers run to well over a megabyte per language, so a caller carries only the languages they ask for.

Usage

Basic Example

import generateCalendar from '@sint-willibrordkerk/liturgical-calendar';
import la from '@sint-willibrordkerk/liturgical-calendar-la';

// Generate calendar for 2026
const calendar = generateCalendar(2026, [], la);

// Access a specific day
const january1 = calendar[1][1]; // January 1st
console.log(january1.title); // "in-circumcisione-domini"
console.log(january1.mass.introitus); // the Introit, in Latin

Called without a language the calendar is still generated — the days fall where they fall — but no day carries a Mass and nothing is translated.

Parameters

  • year (number): The year for which to generate the calendar
  • propers (string[]): Array of proper names to include (e.g., ['ultrajectum', 'fsspx'])
  • language (Language): A language package — @sint-willibrordkerk/liturgical-calendar-la, …-nl — imported and passed in. It supplies both the Mass propers and the translations. Optional; omit it for the bare calendar.

With Local Propers

import nl from '@sint-willibrordkerk/liturgical-calendar-nl';

// Generate calendar with local propers (e.g., Utrecht diocese)
const calendar = generateCalendar(2026, ['ultrajectum'], nl);

// November 7th will show local feast
const november7 = calendar[11][7];
console.log(november7.title); // "H. Willibrordus" (in Dutch)

Calendar Structure

The returned calendar is a nested object:

type Calendar = Record<
  number, // month (1-12)
  Record<
    number, // day (1-31)
    LiturgicalDay | undefined
  >
>;

type LiturgicalDay = {
  title?: string;
  type?: string;
  liturgicalClass: number;
  commemorations: Commemoration[];
};

Development

Building

pnpm install
pnpm build            # the calendar
pnpm build:languages  # the language packages

The Mass propers are generated from Divinum Officium rather than kept in this repository. To rebuild them, point DIVINUM_OFFICIUM_BASE at a checkout and run:

pnpm pipeline --from 0 --to 11
pnpm copy-mass-propers

Running

pnpm start # uses scripts/main.js to generate test_output.yml

Project Structure

├── assets/              # What every language shares
│   ├── calendar1962.yml # Base calendar
│   └── propers/         # Local proper calendars
├── languages/           # One package per language
│   ├── la/assets/       #   mass-propers/la/ (generated)
│   └── nl/assets/       #   mass-propers/nl/ (generated), translations/nl/
├── convert-do/          # The pipeline that generates the Mass propers
├── src/                 # TypeScript source
├── dist/                # Compiled output
└── scripts/             # Utility scripts

License

MIT

Author

Sint Willibrordus Stichting