0.0.2 • Published 2 years ago
node-opening-hours v0.0.2
Introduction
This package is meant to be a tool to manage the opening hours of a business or any other place. It is heavyly inspired by the Spatie\OpeningHours package in the Laravel/PHP world. Most methods are implemented using the same name.
This package relies on the Luxon library. Some methods return Luxon DateTime/duration objects if specified.
node-opening-hours
is written in Typescript and exports its own types for code easy code completion if your IDE supports it.
Usage
Installation
npm i node-opening-hours
Basic usage
import { OpeningHours } from 'node-opening-hours';
const myHours = new OpeningHours();
// Call then the 'create' method providing an object with days of week as keys and array of 'HH:mm-HH:mm' strings to indicate open ranges. Overlapping ranges are automatically merged (i.e ['08:00-16:00', '09:00-17:00'] becomes ['08:00-17:00']
myHours.create({
monday: ['09:00-17:00'],
tuesday: ['09:00-17:00'],
wednesday: ['09:00-12:00', '14:00-18:00'],
thursday: [],
friday: ['09:00-12:00', '14:00-18:00'],
saturday: ['09:00-:12:00'],
sunday: [],
});
// You have then access to various methods on the 'myHours' instance
myHours.isOpen() // returns boolean indication whether business is currently open
myHours.isClosedAt(new Date(2022, 11, 1, 15, 0)); // returns boolean indicating whether business is closed on 01/12/2022 15:00.
...
Full docs
Full docs to come.
Spatie/OpeningHours methods comparison
Spatie/OpeningHours | node-opening-hours | Implemented | Note |
---|---|---|---|
create | create | ✅ | |
fill | fill | ✅ | |
forDay | forDay | ✅ | |
isOpen | isOpen | ✅ | |
isOpenAt | isOpenAt | ✅ | |
isOpenOn | isOpenOn | ✅ | |
isClosed | isClosed | ✅ | |
isClosedAt | isClosedAt | ✅ | |
isClosedOn | isClosedOn | ✅ | |
nextOpen | nextOpen | ✅ | |
nextClose | nextClose | ✅ | |
previousOpen | previousOpen | ✅ | |
previousClose | previousClose | ✅ | |
diffInOpenHours | diffInOpenHours | ✅ | |
diffInOpenMinutes | diffInOpenMinutes | ✅ | |
diffInOpenSeconds | diffInOpenSeconds | ✅ | |
diffInClosedHours | diffInClosedHours | ✅ | |
diffInClosedMinutes | diffInClosedMinutes | ✅ | |
diffInClosedSeconds | diffInClosedSeconds | ✅ | |
currentOpenRange | currentOpenRange | ✅ | |
currentOpenRangeStart | currentOpenRangeStart | ✅ | |
currentOpenRangeEnd | currentOpenRangeEnd | ✅ | |
forWeek | |||
forWeekCombined | |||
forWeekConsecutiveDays | |||
forDay | forDay | ✅ | |
forDate | forDate | ✅ |
To do
- Implement exceptions
- Handle schedules overflowing on the next day
- Better documentation