moment-holiday
Advanced tools
Comparing version 0.0.1-beta.1 to 0.0.1-beta.2
@@ -0,1 +1,6 @@ | ||
### [0.0.1-beta.2](https://github.com/darrinholst/moment-holiday/releases/tag/0.0.1-beta.1) | ||
* API changes to better reflect what the current holiday counter is doing. | ||
* Require explicit use of a holiday config. i.e. `new US()` | ||
### [0.0.1-beta.1](https://github.com/darrinholst/moment-holiday/releases/tag/0.0.1-beta.1) | ||
@@ -2,0 +7,0 @@ |
import * as moment from 'moment'; | ||
export declare enum HolidaySet { | ||
UsMinimal = "US_MINIMAL", | ||
export declare abstract class Holidays { | ||
abstract countBusinessHolidaysBetween(fromDate: moment.Moment | string, toDate: moment.Moment | string): number; | ||
protected observedHoliday(date: string): moment.Moment; | ||
protected third(year: number, month: string, day: string): moment.Moment; | ||
protected last(year: number, month: string, day: string): moment.Moment; | ||
protected first(year: number, month: string, day: string): moment.Moment; | ||
} | ||
export declare function holidays(whichOnes: HolidaySet, startDate: moment.Moment | string, endDate: moment.Moment | string): number; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var moment = require("moment"); | ||
var us_minimal_1 = require("./sets/us-minimal"); | ||
var HolidaySet; | ||
(function (HolidaySet) { | ||
HolidaySet["UsMinimal"] = "US_MINIMAL"; | ||
})(HolidaySet = exports.HolidaySet || (exports.HolidaySet = {})); | ||
; | ||
var sets = (_a = {}, | ||
_a[HolidaySet.UsMinimal] = new us_minimal_1.UsMinimal(), | ||
_a); | ||
function holidays(whichOnes, startDate, endDate) { | ||
var holidaySet = sets[whichOnes]; | ||
if (!holidaySet) | ||
throw new Error("No holiday config found for " + whichOnes); | ||
return holidaySet.count(moment(startDate), moment(endDate)); | ||
} | ||
exports.holidays = holidays; | ||
var _a; | ||
var Holidays = (function () { | ||
function Holidays() { | ||
} | ||
Holidays.prototype.observedHoliday = function (date) { | ||
var momentized = moment(date); | ||
if (momentized.day() === 0) | ||
return momentized.add(1, 'day'); | ||
if (momentized.day() === 6) | ||
return momentized.subtract(1, 'day'); | ||
return momentized; | ||
}; | ||
Holidays.prototype.third = function (year, month, day) { | ||
return this.first(year, month, 'Thursday').add(3, 'weeks'); | ||
}; | ||
Holidays.prototype.last = function (year, month, day) { | ||
return moment(year + "-" + month + "-01").endOf('month').startOf('isoWeek'); | ||
}; | ||
Holidays.prototype.first = function (year, month, day) { | ||
var theFirstDayOfTheMonth = moment(year + "-" + month + "-01") | ||
.startOf('month') | ||
.day(day); | ||
if (theFirstDayOfTheMonth.date() > 7) | ||
theFirstDayOfTheMonth.add(7, 'days'); | ||
return theFirstDayOfTheMonth; | ||
}; | ||
return Holidays; | ||
}()); | ||
exports.Holidays = Holidays; | ||
//# sourceMappingURL=holidays.js.map |
@@ -1,1 +0,1 @@ | ||
export * from './holidays'; | ||
export * from './us'; |
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__export(require("./holidays")); | ||
__export(require("./us")); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "moment-holiday", | ||
"version": "0.0.1-beta.1", | ||
"version": "0.0.1-beta.2", | ||
"description": "Methods to work with holidays in moment.", | ||
@@ -8,6 +8,7 @@ "main": "dist/index.js", | ||
"scripts": { | ||
"lint": "tslint **/*.ts", | ||
"pretest": "npm run compile", | ||
"test": "mocha -c **/*.spec.js", | ||
"compile": "rimraf dist && tsc", | ||
"prepublish": "npm run compile" | ||
"prepublish": "npm run lint && npm run test" | ||
}, | ||
@@ -22,3 +23,4 @@ "repository": { | ||
"moment.js", | ||
"holiday" | ||
"holiday", | ||
"holidays" | ||
], | ||
@@ -37,4 +39,6 @@ "author": "Darrin Holst <darrinholst@gmail.com>", | ||
"moment": "^2.18.1", | ||
"prettier": "^1.5.3", | ||
"release-it": "^2.8.0", | ||
"rimraf": "^2.6.1", | ||
"tslint": "^5.5.0", | ||
"typescript": "^2.4.1" | ||
@@ -41,0 +45,0 @@ }, |
# moment-holiday | ||
Holiday utilities for Moment. API is up for debate. I'm not totally in love with it so PRs are | ||
welcomed. | ||
[![npm-version](https://img.shields.io/npm/v/moment-holiday.svg)](https://www.npmjs.com/package/moment-holiday) | ||
[![Build Status](https://travis-ci.org/darrinholst/moment-holiday.svg?branch=master)](https://travis-ci.org/darrinholst/moment-holiday) | ||
[![dependencies](https://david-dm.org/darrinholst/moment-holiday/status.svg)](https://david-dm.org/darrinholst/moment-holiday) | ||
[![dev dependencies](https://david-dm.org/darrinholst/moment-holiday/dev-status.svg)](https://david-dm.org/darrinholst/moment-holiday?type=dev) | ||
[![peer dependencies](https://david-dm.org/darrinholst/moment-holiday/peer-status.svg)](https://david-dm.org/darrinholst/moment-holiday?type=peer) | ||
Holiday utilities for Moment. | ||
### API | ||
##### `holidays(holidaySet, startDate, endDate)` | ||
##### `countBusinessHolidaysBetween(startDate: Moment | string, endDate: Moment | string)` | ||
Counts the number of holidays between `startDate` and `endDate` as defined by the rules of | ||
`holidaySet` | ||
Returns the number of holidays observed by businesses between `startDate` and `endDate`. | ||
``` js | ||
let {HolidaySet, holidays} = require('moment-holiday'); | ||
import {US} from 'moment-holiday'; | ||
holidays(HolidaySet.UsMinimal, '2017-01-01', '2017-12-31'); // => 6 | ||
new US().countBusinessHolidaysBetween('2017-01-01', '2017-12-31'); // => 6 | ||
``` | ||
### Holiday Sets | ||
### Holiday Rules | ||
All the rules for determining holidays is encapsulated in a `HolidaySet`. The only one currently | ||
implemented is `UsMinimal` which recognizes: | ||
All the rules for determining holidays is encapsulated in a `Holidays` object. `US` is currently the | ||
only one that's builtin. It recognizes: | ||
@@ -24,0 +28,0 @@ 1. New Years Day |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
13184
132
43
10
16
1