rpg-calendar
Version:
Low level library for working with RPG/Fantasy dates
80 lines (79 loc) • 2 kB
TypeScript
import { MonthTypes } from './monthTypes';
export interface RPGCalendarConfig {
name: string;
leapYearInterval?: number;
hasYear0?: boolean;
weekdays: RPGCalendarWeekday[];
months: RPGCalendarMonth[];
seasons: RPGCalendarSeason[];
yearNameMap?: Record<string, string>;
hoursInDay?: number;
minutesInHour?: number;
secondsInMinutes?: number;
monthStartOnWeekStart: boolean;
}
export interface RPGCalendarExtraDay {
name: string;
onlyInLeapYear?: boolean;
}
export interface RPGCalendarSeason {
name: string;
dayOfMonth: number;
monthOfYear: number;
}
export interface RPGCalendarMonth {
name: string;
daysInMonth: number;
monthInYear: number;
type?: MonthTypes;
extraDays?: RPGCalendarExtraDay[];
}
export interface RPGCalendarMoonPhase {
icon?: string;
name?: string;
value?: string;
}
export interface RPGCalendarWeekday {
name: string;
}
export interface RPGCalendarTime {
hour?: number;
minute?: number;
second?: number;
}
export interface RPGCalendarDate {
dayName?: string;
dayOfMonth?: number;
dayOfWeek?: number;
dayOfYear?: number;
epochDay?: number;
epochDayTime?: string;
inLeapYear?: boolean;
monthName?: string;
monthOfYear?: number;
moonPhase?: RPGCalendarMoonPhase;
season?: string;
time?: RPGCalendarTime;
year?: number;
yearName?: string;
extraDay?: RPGCalendarExtraDay;
}
export interface RPGCalendarMonthQuery {
month: number;
year: number;
}
export interface RPGCalendarMonthDisplay extends RPGCalendarMonth {
year: number;
monthOfYear: number;
yearName?: string;
weeks: RPGCalendarDate[][];
weekdays: RPGCalendarWeekday[];
nextMonthQuery: RPGCalendarMonthQuery;
prevMonthQuery: RPGCalendarMonthQuery;
nextYearQuery: RPGCalendarMonthQuery;
prevYearQuery: RPGCalendarMonthQuery;
}
export interface RPGDateSpan {
start: RPGCalendarDate;
end: RPGCalendarDate;
}