0.0.2 • Published 2 years ago

node-opening-hours v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

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/OpeningHoursnode-opening-hoursImplementedNote
createcreate
fillfill
forDayforDay
isOpenisOpen
isOpenAtisOpenAt
isOpenOnisOpenOn
isClosedisClosed
isClosedAtisClosedAt
isClosedOnisClosedOn
nextOpennextOpen
nextClosenextClose
previousOpenpreviousOpen
previousClosepreviousClose
diffInOpenHoursdiffInOpenHours
diffInOpenMinutesdiffInOpenMinutes
diffInOpenSecondsdiffInOpenSeconds
diffInClosedHoursdiffInClosedHours
diffInClosedMinutesdiffInClosedMinutes
diffInClosedSecondsdiffInClosedSeconds
currentOpenRangecurrentOpenRange
currentOpenRangeStartcurrentOpenRangeStart
currentOpenRangeEndcurrentOpenRangeEnd
forWeek
forWeekCombined
forWeekConsecutiveDays
forDayforDay
forDateforDate

To do

  • Implement exceptions
  • Handle schedules overflowing on the next day
  • Better documentation