date-fns-holidays 1.1.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Khiet Tam Nguyen
4
+ Copyright (c) 2021 Jon Stuebe
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # date-fns-holidays
2
+
3
+ This project is fork of:
4
+
5
+ - https://github.com/jonstuebe/date-fns-holiday-us
6
+
7
+ The API will be the same as the original project, with the primary focus being bug fixes.
8
+
9
+ ## Install
10
+
11
+ ```
12
+ npm i date-fns-holidays date-fns
13
+ ```
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("date-fns");function t(t,r){return n((0,e.setDate)(t,1),r)}function n(t,n){return(0,e.getDay)(t)===n||(t=(0,e.getDay)(t)>n?(0,e.addDays)(t,7-(0,e.getDay)(t)+n):(0,e.addDays)(t,n-(0,e.getDay)(t))),t}function r(t,n){return(0,e.getDay)(t)===n||(t=(0,e.getDay)(t)>n?(0,e.addDays)(t,-1*((0,e.getDay)(t)-n)):(0,e.addDays)(t,-1*((0,e.getDay)(t)-0+(7-n)))),t}function i(t,n){return r((0,e.lastDayOfMonth)(t),n)}function a(e){return new Date(e,9,31)}function o(e){return new Date(e,1,14)}function s(n){return(0,e.addWeeks)(t(new Date(n,4),0),1)}function c(e){return new Date(e,5,19)}function l(e){if(e<325)throw RangeError(`Cannot calculate Easter dates before 325 AD.`);function t(e,t){return e%t}function n(e,t){let n=e/t;if(n<0)throw Error(`Unexpected negative q`);return Math.floor(n)}let r=e,i=t(r,19),a=n(r,100),o=t(r,100),s=n(a,4),c=t(a,4),l=n(a-n(a+8,25)+1,3),u=t(19*i+a-s-l+15,30),d=n(o,4),f=t(o,4),p=t(32+2*c+2*d-u-f,7),m=n(i+11*u+22*p,451),h=u+p-7*m+21,g=n(h,31)+3,_=t(h,31);return new Date(e,g-1,_+1)}function u(n){return(0,e.addWeeks)(t(new Date(n,9),1),1)}function d(e){return new Date(e,6,4)}function f(n){return(0,e.addWeeks)(t(new Date(n,1),1),2)}function p(e){return new Date(e,11,25)}function m(e){return t(new Date(e,8),1)}function h(e){return new Date(e,10,11)}function g(n){return(0,e.addWeeks)(t(new Date(n,10),4),3)}function _(t){return(0,e.lastDayOfMonth)(new Date(t,11))}function v(n){return(0,e.addWeeks)(t(new Date(n,0),1),2)}function y(e){return new Date(e,0,1)}function b(n){return(0,e.addWeeks)(t(new Date(n,5),0),2)}function x(e){return i(new Date(e,4),1)}function S(t){return(0,e.addDays)(l(t),-2)}function C(e){return{newYearsDay:{date:y(e),bankHoliday:!0,federal:!0},martinLutherKingJrDay:{date:v(e),bankHoliday:!0,federal:!0},valentinesDay:{date:o(e),bankHoliday:!1,federal:!1},juneteenth:{date:c(e),bankHoliday:!(e<2022),federal:!0},easter:{date:l(e),bankHoliday:!1,federal:!1},presidentsDay:{date:f(e),bankHoliday:!0,federal:!1},memorialDay:{date:x(e),bankHoliday:!0,federal:!0},independenceDay:{date:d(e),bankHoliday:!0,federal:!0},laborDay:{date:m(e),bankHoliday:!0,federal:!0},goodFriday:{date:S(e),bankHoliday:!1,federal:!1},mothersDay:{date:s(e),bankHoliday:!1,federal:!1},columbusDay:{date:u(e),bankHoliday:!0,federal:!0},halloween:{date:a(e),bankHoliday:!1,federal:!1},fathersDay:{date:b(e),bankHoliday:!1,federal:!1},veteransDay:{date:h(e),bankHoliday:!0,federal:!0},thanksgiving:{date:g(e),bankHoliday:!0,federal:!0},christmas:{date:p(e),bankHoliday:!0,federal:!0},newYearsEve:{date:_(e),bankHoliday:!1,federal:!1}}}function w(e){return j(e,e=>e.bankHoliday)}function T(e){return j(e,e=>e.federal)}function E(t){let n={};for(let[r,i]of Object.entries(C(t)))i.federal&&((0,e.isSaturday)(i.date)?n[r]={date:(0,e.addDays)(i.date,-1)}:(0,e.isSunday)(i.date)&&(n[r]={date:(0,e.addDays)(i.date,1)}));return n}function D(t,n){let r=n((0,e.getYear)(t));return Object.values(r).some(n=>(0,e.isSameDay)(t,n.date))}function O(e){return D(e,C)}function k(e){return D(e,T)}function A(e){return D(e,w)}function j(e,t){let n={};for(let[r,i]of Object.entries(C(e)))t(i)&&(n[r]={date:i.date});return n}exports.getBankHolidays=w,exports.getChristmas=p,exports.getColumbusDay=u,exports.getEaster=l,exports.getFathersDay=b,exports.getFederalHolidays=T,exports.getGoodFriday=S,exports.getHalloween=a,exports.getHolidays=C,exports.getIndependenceDay=d,exports.getJuneteenth=c,exports.getLaborDay=m,exports.getMartinLutherKingJrDay=v,exports.getMemorialDay=x,exports.getMothersDay=s,exports.getNewYearsDay=y,exports.getNewYearsEve=_,exports.getObservedHolidays=E,exports.getPresidentsDay=f,exports.getThanksgiving=g,exports.getValentinesDay=o,exports.getVeteransDay=h,exports.isBankHoliday=A,exports.isFederalHoliday=k,exports.isHoliday=O,exports.isInHolidayList=D;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import {\n addDays,\n getDay as getDayOfWeek,\n lastDayOfMonth,\n setDate as setDayOfMonth,\n} from \"date-fns\";\n\nexport function getFirstOccurence(date: Date, dayOfWeekIndex: number) {\n return getNextOccurence(setDayOfMonth(date, 1), dayOfWeekIndex);\n}\n\nexport function getNextOccurence(date: Date, dayOfWeekIndex: number) {\n if (getDayOfWeek(date) === dayOfWeekIndex) {\n return date;\n }\n\n if (getDayOfWeek(date) > dayOfWeekIndex) {\n date = addDays(date, 7 - getDayOfWeek(date) + dayOfWeekIndex);\n } else {\n date = addDays(date, dayOfWeekIndex - getDayOfWeek(date));\n }\n return date;\n}\n\nexport function getPrevOccurence(date: Date, dayOfWeekIndex: number) {\n if (getDayOfWeek(date) === dayOfWeekIndex) {\n return date;\n }\n\n if (getDayOfWeek(date) > dayOfWeekIndex) {\n date = addDays(date, -1 * (getDayOfWeek(date) - dayOfWeekIndex));\n } else {\n date = addDays(date, -1 * (getDayOfWeek(date) - 0 + (7 - dayOfWeekIndex)));\n }\n return date;\n}\n\nexport function getLastOfMonth(date: Date, dayOfWeekIndex: number) {\n return getPrevOccurence(lastDayOfMonth(date), dayOfWeekIndex);\n}\n","import {\n addDays,\n addWeeks,\n getYear,\n isEqual,\n isSameDay,\n isSaturday,\n isSunday,\n lastDayOfMonth,\n} from \"date-fns\";\n\nimport { getFirstOccurence, getLastOfMonth } from \"./utils\";\n\nexport type Holiday =\n | \"christmas\"\n | \"easter\"\n | \"halloween\"\n | \"valentinesDay\"\n | \"mothersDay\"\n | \"columbusDay\"\n | \"independenceDay\"\n | \"presidentsDay\"\n | \"laborDay\"\n | \"veteransDay\"\n | \"thanksgiving\"\n | \"newYearsEve\"\n | \"martinLutherKingJrDay\"\n | \"newYearsDay\"\n | \"fathersDay\"\n | \"memorialDay\"\n | \"goodFriday\"\n | \"juneteenth\";\n\nexport type HolidayList = Record<string, { date: Date }>;\n\nexport function getHalloween(year: number) {\n return new Date(year, 9, 31);\n}\n\nexport function getValentinesDay(year: number) {\n return new Date(year, 1, 14);\n}\n\nexport function getMothersDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 4), 0), 1);\n}\n\nexport function getJuneteenth(year: number) {\n return new Date(year, 5, 19);\n}\n\nexport function getEaster(year: number) {\n if (year < 325) {\n throw new RangeError(\"Cannot calculate Easter dates before 325 AD.\");\n }\n\n function mod(a: number, b: number) {\n return a % b;\n }\n\n function div(a: number, b: number) {\n const q = a / b;\n /* v8 ignore next */\n if (q < 0) {\n throw new Error(\"Unexpected negative q\");\n }\n return Math.floor(q);\n }\n\n const y = year,\n skipMarchDays = 21,\n a = mod(y, 19),\n b = div(y, 100),\n c = mod(y, 100),\n d = div(b, 4),\n e = mod(b, 4),\n f = div(b + 8, 25),\n g = div(b - f + 1, 3),\n h = mod(19 * a + b - d - g + 15, 30),\n i = div(c, 4),\n k = mod(c, 4),\n l = mod(32 + 2 * e + 2 * i - h - k, 7),\n m = div(a + 11 * h + 22 * l, 451),\n t = h + l - 7 * m + skipMarchDays,\n n = div(t, 31) + 3,\n p = mod(t, 31);\n\n return new Date(year, n - 1, p + 1);\n}\n\nexport function getColumbusDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 9), 1), 1);\n}\n\nexport function getIndependenceDay(year: number) {\n return new Date(year, 6, 4);\n}\n\nexport function getPresidentsDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 1), 1), 2);\n}\n\nexport function getChristmas(year: number) {\n return new Date(year, 11, 25);\n}\n\nexport function getLaborDay(year: number) {\n return getFirstOccurence(new Date(year, 8), 1);\n}\n\nexport function getVeteransDay(year: number) {\n return new Date(year, 10, 11);\n}\n\nexport function getThanksgiving(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 10), 4), 3);\n}\n\nexport function getNewYearsEve(year: number) {\n return lastDayOfMonth(new Date(year, 11));\n}\n\nexport function getMartinLutherKingJrDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 0), 1), 2);\n}\n\nexport function getNewYearsDay(year: number) {\n return new Date(year, 0, 1);\n}\n\nexport function getFathersDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 5), 0), 2);\n}\n\nexport function getMemorialDay(year: number) {\n return getLastOfMonth(new Date(year, 4), 1);\n}\n\nexport function getGoodFriday(year: number) {\n return addDays(getEaster(year), -2);\n}\n\nexport type Holidays = {\n [K in Holiday]: {\n date: Date;\n bankHoliday: boolean;\n federal: boolean;\n };\n};\n\nexport function getHolidays(year: number): Holidays {\n return {\n newYearsDay: {\n date: getNewYearsDay(year),\n bankHoliday: true,\n federal: true,\n },\n martinLutherKingJrDay: {\n date: getMartinLutherKingJrDay(year),\n bankHoliday: true,\n federal: true,\n },\n valentinesDay: {\n date: getValentinesDay(year),\n bankHoliday: false,\n federal: false,\n },\n juneteenth: {\n date: getJuneteenth(year),\n bankHoliday: !(year < 2022),\n federal: true,\n },\n easter: {\n date: getEaster(year),\n bankHoliday: false,\n federal: false,\n },\n presidentsDay: {\n date: getPresidentsDay(year),\n bankHoliday: true,\n federal: false,\n },\n memorialDay: {\n date: getMemorialDay(year),\n bankHoliday: true,\n federal: true,\n },\n independenceDay: {\n date: getIndependenceDay(year),\n bankHoliday: true,\n federal: true,\n },\n laborDay: {\n date: getLaborDay(year),\n bankHoliday: true,\n federal: true,\n },\n goodFriday: {\n date: getGoodFriday(year),\n bankHoliday: false,\n federal: false,\n },\n mothersDay: {\n date: getMothersDay(year),\n bankHoliday: false,\n federal: false,\n },\n columbusDay: {\n date: getColumbusDay(year),\n bankHoliday: true,\n federal: true,\n },\n halloween: {\n date: getHalloween(year),\n bankHoliday: false,\n federal: false,\n },\n fathersDay: {\n date: getFathersDay(year),\n bankHoliday: false,\n federal: false,\n },\n veteransDay: {\n date: getVeteransDay(year),\n bankHoliday: true,\n federal: true,\n },\n thanksgiving: {\n date: getThanksgiving(year),\n bankHoliday: true,\n federal: true,\n },\n christmas: {\n date: getChristmas(year),\n bankHoliday: true,\n federal: true,\n },\n newYearsEve: {\n date: getNewYearsEve(year),\n bankHoliday: false,\n federal: false,\n },\n };\n}\n\nexport function getBankHolidays(year: number): HolidayList {\n return filterHolidays(year, (holiday) => holiday.bankHoliday);\n}\n\nexport function getFederalHolidays(year: number): HolidayList {\n return filterHolidays(year, (holiday) => holiday.federal);\n}\n\nexport function getObservedHolidays(year: number): HolidayList {\n const result: HolidayList = {};\n\n for (const [name, holiday] of Object.entries(getHolidays(year))) {\n if (!holiday.federal) {\n continue;\n }\n\n if (isSaturday(holiday.date)) {\n result[name] = {\n date: addDays(holiday.date, -1),\n };\n } else if (isSunday(holiday.date)) {\n result[name] = {\n date: addDays(holiday.date, 1),\n };\n }\n }\n\n return result;\n}\n\nexport function isInHolidayList(\n date: Date,\n getHolidayList: (year: number) => HolidayList,\n): boolean {\n const holidays = getHolidayList(getYear(date));\n\n return Object.values(holidays).some((holiday) =>\n isSameDay(date, holiday.date),\n );\n}\n\nexport function isHoliday(date: Date): boolean {\n return isInHolidayList(date, getHolidays);\n}\n\nexport function isFederalHoliday(date: Date): boolean {\n return isInHolidayList(date, getFederalHolidays);\n}\n\nexport function isBankHoliday(date: Date): boolean {\n return isInHolidayList(date, getBankHolidays);\n}\n\nfunction filterHolidays(\n year: number,\n predicate: (holiday: Holidays[Holiday]) => boolean,\n): HolidayList {\n const result: HolidayList = {};\n\n for (const [name, holiday] of Object.entries(getHolidays(year))) {\n if (predicate(holiday)) {\n result[name] = {\n date: holiday.date,\n };\n }\n }\n\n return result;\n}\n"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ //#region src/index.d.ts
2
+ type Holiday = "christmas" | "easter" | "halloween" | "valentinesDay" | "mothersDay" | "columbusDay" | "independenceDay" | "presidentsDay" | "laborDay" | "veteransDay" | "thanksgiving" | "newYearsEve" | "martinLutherKingJrDay" | "newYearsDay" | "fathersDay" | "memorialDay" | "goodFriday" | "juneteenth";
3
+ type HolidayList = Record<string, {
4
+ date: Date;
5
+ }>;
6
+ declare function getHalloween(year: number): Date;
7
+ declare function getValentinesDay(year: number): Date;
8
+ declare function getMothersDay(year: number): Date;
9
+ declare function getJuneteenth(year: number): Date;
10
+ declare function getEaster(year: number): Date;
11
+ declare function getColumbusDay(year: number): Date;
12
+ declare function getIndependenceDay(year: number): Date;
13
+ declare function getPresidentsDay(year: number): Date;
14
+ declare function getChristmas(year: number): Date;
15
+ declare function getLaborDay(year: number): Date;
16
+ declare function getVeteransDay(year: number): Date;
17
+ declare function getThanksgiving(year: number): Date;
18
+ declare function getNewYearsEve(year: number): Date;
19
+ declare function getMartinLutherKingJrDay(year: number): Date;
20
+ declare function getNewYearsDay(year: number): Date;
21
+ declare function getFathersDay(year: number): Date;
22
+ declare function getMemorialDay(year: number): Date;
23
+ declare function getGoodFriday(year: number): Date;
24
+ type Holidays = { [K in Holiday]: {
25
+ date: Date;
26
+ bankHoliday: boolean;
27
+ federal: boolean;
28
+ } };
29
+ declare function getHolidays(year: number): Holidays;
30
+ declare function getBankHolidays(year: number): HolidayList;
31
+ declare function getFederalHolidays(year: number): HolidayList;
32
+ declare function getObservedHolidays(year: number): HolidayList;
33
+ declare function isInHolidayList(date: Date, getHolidayList: (year: number) => HolidayList): boolean;
34
+ declare function isHoliday(date: Date): boolean;
35
+ declare function isFederalHoliday(date: Date): boolean;
36
+ declare function isBankHoliday(date: Date): boolean;
37
+ //#endregion
38
+ export { Holiday, HolidayList, Holidays, getBankHolidays, getChristmas, getColumbusDay, getEaster, getFathersDay, getFederalHolidays, getGoodFriday, getHalloween, getHolidays, getIndependenceDay, getJuneteenth, getLaborDay, getMartinLutherKingJrDay, getMemorialDay, getMothersDay, getNewYearsDay, getNewYearsEve, getObservedHolidays, getPresidentsDay, getThanksgiving, getValentinesDay, getVeteransDay, isBankHoliday, isFederalHoliday, isHoliday, isInHolidayList };
39
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1,39 @@
1
+ //#region src/index.d.ts
2
+ type Holiday = "christmas" | "easter" | "halloween" | "valentinesDay" | "mothersDay" | "columbusDay" | "independenceDay" | "presidentsDay" | "laborDay" | "veteransDay" | "thanksgiving" | "newYearsEve" | "martinLutherKingJrDay" | "newYearsDay" | "fathersDay" | "memorialDay" | "goodFriday" | "juneteenth";
3
+ type HolidayList = Record<string, {
4
+ date: Date;
5
+ }>;
6
+ declare function getHalloween(year: number): Date;
7
+ declare function getValentinesDay(year: number): Date;
8
+ declare function getMothersDay(year: number): Date;
9
+ declare function getJuneteenth(year: number): Date;
10
+ declare function getEaster(year: number): Date;
11
+ declare function getColumbusDay(year: number): Date;
12
+ declare function getIndependenceDay(year: number): Date;
13
+ declare function getPresidentsDay(year: number): Date;
14
+ declare function getChristmas(year: number): Date;
15
+ declare function getLaborDay(year: number): Date;
16
+ declare function getVeteransDay(year: number): Date;
17
+ declare function getThanksgiving(year: number): Date;
18
+ declare function getNewYearsEve(year: number): Date;
19
+ declare function getMartinLutherKingJrDay(year: number): Date;
20
+ declare function getNewYearsDay(year: number): Date;
21
+ declare function getFathersDay(year: number): Date;
22
+ declare function getMemorialDay(year: number): Date;
23
+ declare function getGoodFriday(year: number): Date;
24
+ type Holidays = { [K in Holiday]: {
25
+ date: Date;
26
+ bankHoliday: boolean;
27
+ federal: boolean;
28
+ } };
29
+ declare function getHolidays(year: number): Holidays;
30
+ declare function getBankHolidays(year: number): HolidayList;
31
+ declare function getFederalHolidays(year: number): HolidayList;
32
+ declare function getObservedHolidays(year: number): HolidayList;
33
+ declare function isInHolidayList(date: Date, getHolidayList: (year: number) => HolidayList): boolean;
34
+ declare function isHoliday(date: Date): boolean;
35
+ declare function isFederalHoliday(date: Date): boolean;
36
+ declare function isBankHoliday(date: Date): boolean;
37
+ //#endregion
38
+ export { Holiday, HolidayList, Holidays, getBankHolidays, getChristmas, getColumbusDay, getEaster, getFathersDay, getFederalHolidays, getGoodFriday, getHalloween, getHolidays, getIndependenceDay, getJuneteenth, getLaborDay, getMartinLutherKingJrDay, getMemorialDay, getMothersDay, getNewYearsDay, getNewYearsEve, getObservedHolidays, getPresidentsDay, getThanksgiving, getValentinesDay, getVeteransDay, isBankHoliday, isFederalHoliday, isHoliday, isInHolidayList };
39
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1,2 @@
1
+ var date_fns_holidays=(function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function n(e,n){return r((0,t.setDate)(e,1),n)}function r(e,n){return(0,t.getDay)(e)===n||(e=(0,t.getDay)(e)>n?(0,t.addDays)(e,7-(0,t.getDay)(e)+n):(0,t.addDays)(e,n-(0,t.getDay)(e))),e}function i(e,n){return(0,t.getDay)(e)===n||(e=(0,t.getDay)(e)>n?(0,t.addDays)(e,-1*((0,t.getDay)(e)-n)):(0,t.addDays)(e,-1*((0,t.getDay)(e)-0+(7-n)))),e}function a(e,n){return i((0,t.lastDayOfMonth)(e),n)}function o(e){return new Date(e,9,31)}function s(e){return new Date(e,1,14)}function c(e){return(0,t.addWeeks)(n(new Date(e,4),0),1)}function l(e){return new Date(e,5,19)}function u(e){if(e<325)throw RangeError(`Cannot calculate Easter dates before 325 AD.`);function t(e,t){return e%t}function n(e,t){let n=e/t;if(n<0)throw Error(`Unexpected negative q`);return Math.floor(n)}let r=e,i=t(r,19),a=n(r,100),o=t(r,100),s=n(a,4),c=t(a,4),l=n(a-n(a+8,25)+1,3),u=t(19*i+a-s-l+15,30),d=n(o,4),f=t(o,4),p=t(32+2*c+2*d-u-f,7),m=n(i+11*u+22*p,451),h=u+p-7*m+21,g=n(h,31)+3,_=t(h,31);return new Date(e,g-1,_+1)}function d(e){return(0,t.addWeeks)(n(new Date(e,9),1),1)}function f(e){return new Date(e,6,4)}function p(e){return(0,t.addWeeks)(n(new Date(e,1),1),2)}function m(e){return new Date(e,11,25)}function h(e){return n(new Date(e,8),1)}function g(e){return new Date(e,10,11)}function _(e){return(0,t.addWeeks)(n(new Date(e,10),4),3)}function v(e){return(0,t.lastDayOfMonth)(new Date(e,11))}function y(e){return(0,t.addWeeks)(n(new Date(e,0),1),2)}function b(e){return new Date(e,0,1)}function x(e){return(0,t.addWeeks)(n(new Date(e,5),0),2)}function S(e){return a(new Date(e,4),1)}function C(e){return(0,t.addDays)(u(e),-2)}function w(e){return{newYearsDay:{date:b(e),bankHoliday:!0,federal:!0},martinLutherKingJrDay:{date:y(e),bankHoliday:!0,federal:!0},valentinesDay:{date:s(e),bankHoliday:!1,federal:!1},juneteenth:{date:l(e),bankHoliday:!(e<2022),federal:!0},easter:{date:u(e),bankHoliday:!1,federal:!1},presidentsDay:{date:p(e),bankHoliday:!0,federal:!1},memorialDay:{date:S(e),bankHoliday:!0,federal:!0},independenceDay:{date:f(e),bankHoliday:!0,federal:!0},laborDay:{date:h(e),bankHoliday:!0,federal:!0},goodFriday:{date:C(e),bankHoliday:!1,federal:!1},mothersDay:{date:c(e),bankHoliday:!1,federal:!1},columbusDay:{date:d(e),bankHoliday:!0,federal:!0},halloween:{date:o(e),bankHoliday:!1,federal:!1},fathersDay:{date:x(e),bankHoliday:!1,federal:!1},veteransDay:{date:g(e),bankHoliday:!0,federal:!0},thanksgiving:{date:_(e),bankHoliday:!0,federal:!0},christmas:{date:m(e),bankHoliday:!0,federal:!0},newYearsEve:{date:v(e),bankHoliday:!1,federal:!1}}}function T(e){return M(e,e=>e.bankHoliday)}function E(e){return M(e,e=>e.federal)}function D(e){let n={};for(let[r,i]of Object.entries(w(e)))i.federal&&((0,t.isSaturday)(i.date)?n[r]={date:(0,t.addDays)(i.date,-1)}:(0,t.isSunday)(i.date)&&(n[r]={date:(0,t.addDays)(i.date,1)}));return n}function O(e,n){let r=n((0,t.getYear)(e));return Object.values(r).some(n=>(0,t.isSameDay)(e,n.date))}function k(e){return O(e,w)}function A(e){return O(e,E)}function j(e){return O(e,T)}function M(e,t){let n={};for(let[r,i]of Object.entries(w(e)))t(i)&&(n[r]={date:i.date});return n}return e.getBankHolidays=T,e.getChristmas=m,e.getColumbusDay=d,e.getEaster=u,e.getFathersDay=x,e.getFederalHolidays=E,e.getGoodFriday=C,e.getHalloween=o,e.getHolidays=w,e.getIndependenceDay=f,e.getJuneteenth=l,e.getLaborDay=h,e.getMartinLutherKingJrDay=y,e.getMemorialDay=S,e.getMothersDay=c,e.getNewYearsDay=b,e.getNewYearsEve=v,e.getObservedHolidays=D,e.getPresidentsDay=p,e.getThanksgiving=_,e.getValentinesDay=s,e.getVeteransDay=g,e.isBankHoliday=j,e.isFederalHoliday=A,e.isHoliday=k,e.isInHolidayList=O,e})({},date_fns);
2
+ //# sourceMappingURL=index.iife.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.iife.js","names":[],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import {\n addDays,\n getDay as getDayOfWeek,\n lastDayOfMonth,\n setDate as setDayOfMonth,\n} from \"date-fns\";\n\nexport function getFirstOccurence(date: Date, dayOfWeekIndex: number) {\n return getNextOccurence(setDayOfMonth(date, 1), dayOfWeekIndex);\n}\n\nexport function getNextOccurence(date: Date, dayOfWeekIndex: number) {\n if (getDayOfWeek(date) === dayOfWeekIndex) {\n return date;\n }\n\n if (getDayOfWeek(date) > dayOfWeekIndex) {\n date = addDays(date, 7 - getDayOfWeek(date) + dayOfWeekIndex);\n } else {\n date = addDays(date, dayOfWeekIndex - getDayOfWeek(date));\n }\n return date;\n}\n\nexport function getPrevOccurence(date: Date, dayOfWeekIndex: number) {\n if (getDayOfWeek(date) === dayOfWeekIndex) {\n return date;\n }\n\n if (getDayOfWeek(date) > dayOfWeekIndex) {\n date = addDays(date, -1 * (getDayOfWeek(date) - dayOfWeekIndex));\n } else {\n date = addDays(date, -1 * (getDayOfWeek(date) - 0 + (7 - dayOfWeekIndex)));\n }\n return date;\n}\n\nexport function getLastOfMonth(date: Date, dayOfWeekIndex: number) {\n return getPrevOccurence(lastDayOfMonth(date), dayOfWeekIndex);\n}\n","import {\n addDays,\n addWeeks,\n getYear,\n isEqual,\n isSameDay,\n isSaturday,\n isSunday,\n lastDayOfMonth,\n} from \"date-fns\";\n\nimport { getFirstOccurence, getLastOfMonth } from \"./utils\";\n\nexport type Holiday =\n | \"christmas\"\n | \"easter\"\n | \"halloween\"\n | \"valentinesDay\"\n | \"mothersDay\"\n | \"columbusDay\"\n | \"independenceDay\"\n | \"presidentsDay\"\n | \"laborDay\"\n | \"veteransDay\"\n | \"thanksgiving\"\n | \"newYearsEve\"\n | \"martinLutherKingJrDay\"\n | \"newYearsDay\"\n | \"fathersDay\"\n | \"memorialDay\"\n | \"goodFriday\"\n | \"juneteenth\";\n\nexport type HolidayList = Record<string, { date: Date }>;\n\nexport function getHalloween(year: number) {\n return new Date(year, 9, 31);\n}\n\nexport function getValentinesDay(year: number) {\n return new Date(year, 1, 14);\n}\n\nexport function getMothersDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 4), 0), 1);\n}\n\nexport function getJuneteenth(year: number) {\n return new Date(year, 5, 19);\n}\n\nexport function getEaster(year: number) {\n if (year < 325) {\n throw new RangeError(\"Cannot calculate Easter dates before 325 AD.\");\n }\n\n function mod(a: number, b: number) {\n return a % b;\n }\n\n function div(a: number, b: number) {\n const q = a / b;\n /* v8 ignore next */\n if (q < 0) {\n throw new Error(\"Unexpected negative q\");\n }\n return Math.floor(q);\n }\n\n const y = year,\n skipMarchDays = 21,\n a = mod(y, 19),\n b = div(y, 100),\n c = mod(y, 100),\n d = div(b, 4),\n e = mod(b, 4),\n f = div(b + 8, 25),\n g = div(b - f + 1, 3),\n h = mod(19 * a + b - d - g + 15, 30),\n i = div(c, 4),\n k = mod(c, 4),\n l = mod(32 + 2 * e + 2 * i - h - k, 7),\n m = div(a + 11 * h + 22 * l, 451),\n t = h + l - 7 * m + skipMarchDays,\n n = div(t, 31) + 3,\n p = mod(t, 31);\n\n return new Date(year, n - 1, p + 1);\n}\n\nexport function getColumbusDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 9), 1), 1);\n}\n\nexport function getIndependenceDay(year: number) {\n return new Date(year, 6, 4);\n}\n\nexport function getPresidentsDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 1), 1), 2);\n}\n\nexport function getChristmas(year: number) {\n return new Date(year, 11, 25);\n}\n\nexport function getLaborDay(year: number) {\n return getFirstOccurence(new Date(year, 8), 1);\n}\n\nexport function getVeteransDay(year: number) {\n return new Date(year, 10, 11);\n}\n\nexport function getThanksgiving(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 10), 4), 3);\n}\n\nexport function getNewYearsEve(year: number) {\n return lastDayOfMonth(new Date(year, 11));\n}\n\nexport function getMartinLutherKingJrDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 0), 1), 2);\n}\n\nexport function getNewYearsDay(year: number) {\n return new Date(year, 0, 1);\n}\n\nexport function getFathersDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 5), 0), 2);\n}\n\nexport function getMemorialDay(year: number) {\n return getLastOfMonth(new Date(year, 4), 1);\n}\n\nexport function getGoodFriday(year: number) {\n return addDays(getEaster(year), -2);\n}\n\nexport type Holidays = {\n [K in Holiday]: {\n date: Date;\n bankHoliday: boolean;\n federal: boolean;\n };\n};\n\nexport function getHolidays(year: number): Holidays {\n return {\n newYearsDay: {\n date: getNewYearsDay(year),\n bankHoliday: true,\n federal: true,\n },\n martinLutherKingJrDay: {\n date: getMartinLutherKingJrDay(year),\n bankHoliday: true,\n federal: true,\n },\n valentinesDay: {\n date: getValentinesDay(year),\n bankHoliday: false,\n federal: false,\n },\n juneteenth: {\n date: getJuneteenth(year),\n bankHoliday: !(year < 2022),\n federal: true,\n },\n easter: {\n date: getEaster(year),\n bankHoliday: false,\n federal: false,\n },\n presidentsDay: {\n date: getPresidentsDay(year),\n bankHoliday: true,\n federal: false,\n },\n memorialDay: {\n date: getMemorialDay(year),\n bankHoliday: true,\n federal: true,\n },\n independenceDay: {\n date: getIndependenceDay(year),\n bankHoliday: true,\n federal: true,\n },\n laborDay: {\n date: getLaborDay(year),\n bankHoliday: true,\n federal: true,\n },\n goodFriday: {\n date: getGoodFriday(year),\n bankHoliday: false,\n federal: false,\n },\n mothersDay: {\n date: getMothersDay(year),\n bankHoliday: false,\n federal: false,\n },\n columbusDay: {\n date: getColumbusDay(year),\n bankHoliday: true,\n federal: true,\n },\n halloween: {\n date: getHalloween(year),\n bankHoliday: false,\n federal: false,\n },\n fathersDay: {\n date: getFathersDay(year),\n bankHoliday: false,\n federal: false,\n },\n veteransDay: {\n date: getVeteransDay(year),\n bankHoliday: true,\n federal: true,\n },\n thanksgiving: {\n date: getThanksgiving(year),\n bankHoliday: true,\n federal: true,\n },\n christmas: {\n date: getChristmas(year),\n bankHoliday: true,\n federal: true,\n },\n newYearsEve: {\n date: getNewYearsEve(year),\n bankHoliday: false,\n federal: false,\n },\n };\n}\n\nexport function getBankHolidays(year: number): HolidayList {\n return filterHolidays(year, (holiday) => holiday.bankHoliday);\n}\n\nexport function getFederalHolidays(year: number): HolidayList {\n return filterHolidays(year, (holiday) => holiday.federal);\n}\n\nexport function getObservedHolidays(year: number): HolidayList {\n const result: HolidayList = {};\n\n for (const [name, holiday] of Object.entries(getHolidays(year))) {\n if (!holiday.federal) {\n continue;\n }\n\n if (isSaturday(holiday.date)) {\n result[name] = {\n date: addDays(holiday.date, -1),\n };\n } else if (isSunday(holiday.date)) {\n result[name] = {\n date: addDays(holiday.date, 1),\n };\n }\n }\n\n return result;\n}\n\nexport function isInHolidayList(\n date: Date,\n getHolidayList: (year: number) => HolidayList,\n): boolean {\n const holidays = getHolidayList(getYear(date));\n\n return Object.values(holidays).some((holiday) =>\n isSameDay(date, holiday.date),\n );\n}\n\nexport function isHoliday(date: Date): boolean {\n return isInHolidayList(date, getHolidays);\n}\n\nexport function isFederalHoliday(date: Date): boolean {\n return isInHolidayList(date, getFederalHolidays);\n}\n\nexport function isBankHoliday(date: Date): boolean {\n return isInHolidayList(date, getBankHolidays);\n}\n\nfunction filterHolidays(\n year: number,\n predicate: (holiday: Holidays[Holiday]) => boolean,\n): HolidayList {\n const result: HolidayList = {};\n\n for (const [name, holiday] of Object.entries(getHolidays(year))) {\n if (predicate(holiday)) {\n result[name] = {\n date: holiday.date,\n };\n }\n }\n\n return result;\n}\n"],"mappings":"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"}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import{addDays as e,addWeeks as t,getDay as n,getYear as r,isSameDay as i,isSaturday as a,isSunday as o,lastDayOfMonth as s,setDate as c}from"date-fns";function l(e,t){return u(c(e,1),t)}function u(t,r){return n(t)===r||(t=n(t)>r?e(t,7-n(t)+r):e(t,r-n(t))),t}function d(t,r){return n(t)===r||(t=n(t)>r?e(t,-1*(n(t)-r)):e(t,-1*(n(t)-0+(7-r)))),t}function f(e,t){return d(s(e),t)}function p(e){return new Date(e,9,31)}function m(e){return new Date(e,1,14)}function h(e){return t(l(new Date(e,4),0),1)}function g(e){return new Date(e,5,19)}function _(e){if(e<325)throw RangeError(`Cannot calculate Easter dates before 325 AD.`);function t(e,t){return e%t}function n(e,t){let n=e/t;if(n<0)throw Error(`Unexpected negative q`);return Math.floor(n)}let r=e,i=t(r,19),a=n(r,100),o=t(r,100),s=n(a,4),c=t(a,4),l=n(a-n(a+8,25)+1,3),u=t(19*i+a-s-l+15,30),d=n(o,4),f=t(o,4),p=t(32+2*c+2*d-u-f,7),m=n(i+11*u+22*p,451),h=u+p-7*m+21,g=n(h,31)+3,_=t(h,31);return new Date(e,g-1,_+1)}function v(e){return t(l(new Date(e,9),1),1)}function y(e){return new Date(e,6,4)}function b(e){return t(l(new Date(e,1),1),2)}function x(e){return new Date(e,11,25)}function S(e){return l(new Date(e,8),1)}function C(e){return new Date(e,10,11)}function w(e){return t(l(new Date(e,10),4),3)}function T(e){return s(new Date(e,11))}function E(e){return t(l(new Date(e,0),1),2)}function D(e){return new Date(e,0,1)}function O(e){return t(l(new Date(e,5),0),2)}function k(e){return f(new Date(e,4),1)}function A(t){return e(_(t),-2)}function j(e){return{newYearsDay:{date:D(e),bankHoliday:!0,federal:!0},martinLutherKingJrDay:{date:E(e),bankHoliday:!0,federal:!0},valentinesDay:{date:m(e),bankHoliday:!1,federal:!1},juneteenth:{date:g(e),bankHoliday:!(e<2022),federal:!0},easter:{date:_(e),bankHoliday:!1,federal:!1},presidentsDay:{date:b(e),bankHoliday:!0,federal:!1},memorialDay:{date:k(e),bankHoliday:!0,federal:!0},independenceDay:{date:y(e),bankHoliday:!0,federal:!0},laborDay:{date:S(e),bankHoliday:!0,federal:!0},goodFriday:{date:A(e),bankHoliday:!1,federal:!1},mothersDay:{date:h(e),bankHoliday:!1,federal:!1},columbusDay:{date:v(e),bankHoliday:!0,federal:!0},halloween:{date:p(e),bankHoliday:!1,federal:!1},fathersDay:{date:O(e),bankHoliday:!1,federal:!1},veteransDay:{date:C(e),bankHoliday:!0,federal:!0},thanksgiving:{date:w(e),bankHoliday:!0,federal:!0},christmas:{date:x(e),bankHoliday:!0,federal:!0},newYearsEve:{date:T(e),bankHoliday:!1,federal:!1}}}function M(e){return z(e,e=>e.bankHoliday)}function N(e){return z(e,e=>e.federal)}function P(t){let n={};for(let[r,i]of Object.entries(j(t)))i.federal&&(a(i.date)?n[r]={date:e(i.date,-1)}:o(i.date)&&(n[r]={date:e(i.date,1)}));return n}function F(e,t){let n=t(r(e));return Object.values(n).some(t=>i(e,t.date))}function I(e){return F(e,j)}function L(e){return F(e,N)}function R(e){return F(e,M)}function z(e,t){let n={};for(let[r,i]of Object.entries(j(e)))t(i)&&(n[r]={date:i.date});return n}export{M as getBankHolidays,x as getChristmas,v as getColumbusDay,_ as getEaster,O as getFathersDay,N as getFederalHolidays,A as getGoodFriday,p as getHalloween,j as getHolidays,y as getIndependenceDay,g as getJuneteenth,S as getLaborDay,E as getMartinLutherKingJrDay,k as getMemorialDay,h as getMothersDay,D as getNewYearsDay,T as getNewYearsEve,P as getObservedHolidays,b as getPresidentsDay,w as getThanksgiving,m as getValentinesDay,C as getVeteransDay,R as isBankHoliday,L as isFederalHoliday,I as isHoliday,F as isInHolidayList};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["setDayOfMonth","getDayOfWeek"],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import {\n addDays,\n getDay as getDayOfWeek,\n lastDayOfMonth,\n setDate as setDayOfMonth,\n} from \"date-fns\";\n\nexport function getFirstOccurence(date: Date, dayOfWeekIndex: number) {\n return getNextOccurence(setDayOfMonth(date, 1), dayOfWeekIndex);\n}\n\nexport function getNextOccurence(date: Date, dayOfWeekIndex: number) {\n if (getDayOfWeek(date) === dayOfWeekIndex) {\n return date;\n }\n\n if (getDayOfWeek(date) > dayOfWeekIndex) {\n date = addDays(date, 7 - getDayOfWeek(date) + dayOfWeekIndex);\n } else {\n date = addDays(date, dayOfWeekIndex - getDayOfWeek(date));\n }\n return date;\n}\n\nexport function getPrevOccurence(date: Date, dayOfWeekIndex: number) {\n if (getDayOfWeek(date) === dayOfWeekIndex) {\n return date;\n }\n\n if (getDayOfWeek(date) > dayOfWeekIndex) {\n date = addDays(date, -1 * (getDayOfWeek(date) - dayOfWeekIndex));\n } else {\n date = addDays(date, -1 * (getDayOfWeek(date) - 0 + (7 - dayOfWeekIndex)));\n }\n return date;\n}\n\nexport function getLastOfMonth(date: Date, dayOfWeekIndex: number) {\n return getPrevOccurence(lastDayOfMonth(date), dayOfWeekIndex);\n}\n","import {\n addDays,\n addWeeks,\n getYear,\n isEqual,\n isSameDay,\n isSaturday,\n isSunday,\n lastDayOfMonth,\n} from \"date-fns\";\n\nimport { getFirstOccurence, getLastOfMonth } from \"./utils\";\n\nexport type Holiday =\n | \"christmas\"\n | \"easter\"\n | \"halloween\"\n | \"valentinesDay\"\n | \"mothersDay\"\n | \"columbusDay\"\n | \"independenceDay\"\n | \"presidentsDay\"\n | \"laborDay\"\n | \"veteransDay\"\n | \"thanksgiving\"\n | \"newYearsEve\"\n | \"martinLutherKingJrDay\"\n | \"newYearsDay\"\n | \"fathersDay\"\n | \"memorialDay\"\n | \"goodFriday\"\n | \"juneteenth\";\n\nexport type HolidayList = Record<string, { date: Date }>;\n\nexport function getHalloween(year: number) {\n return new Date(year, 9, 31);\n}\n\nexport function getValentinesDay(year: number) {\n return new Date(year, 1, 14);\n}\n\nexport function getMothersDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 4), 0), 1);\n}\n\nexport function getJuneteenth(year: number) {\n return new Date(year, 5, 19);\n}\n\nexport function getEaster(year: number) {\n if (year < 325) {\n throw new RangeError(\"Cannot calculate Easter dates before 325 AD.\");\n }\n\n function mod(a: number, b: number) {\n return a % b;\n }\n\n function div(a: number, b: number) {\n const q = a / b;\n /* v8 ignore next */\n if (q < 0) {\n throw new Error(\"Unexpected negative q\");\n }\n return Math.floor(q);\n }\n\n const y = year,\n skipMarchDays = 21,\n a = mod(y, 19),\n b = div(y, 100),\n c = mod(y, 100),\n d = div(b, 4),\n e = mod(b, 4),\n f = div(b + 8, 25),\n g = div(b - f + 1, 3),\n h = mod(19 * a + b - d - g + 15, 30),\n i = div(c, 4),\n k = mod(c, 4),\n l = mod(32 + 2 * e + 2 * i - h - k, 7),\n m = div(a + 11 * h + 22 * l, 451),\n t = h + l - 7 * m + skipMarchDays,\n n = div(t, 31) + 3,\n p = mod(t, 31);\n\n return new Date(year, n - 1, p + 1);\n}\n\nexport function getColumbusDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 9), 1), 1);\n}\n\nexport function getIndependenceDay(year: number) {\n return new Date(year, 6, 4);\n}\n\nexport function getPresidentsDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 1), 1), 2);\n}\n\nexport function getChristmas(year: number) {\n return new Date(year, 11, 25);\n}\n\nexport function getLaborDay(year: number) {\n return getFirstOccurence(new Date(year, 8), 1);\n}\n\nexport function getVeteransDay(year: number) {\n return new Date(year, 10, 11);\n}\n\nexport function getThanksgiving(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 10), 4), 3);\n}\n\nexport function getNewYearsEve(year: number) {\n return lastDayOfMonth(new Date(year, 11));\n}\n\nexport function getMartinLutherKingJrDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 0), 1), 2);\n}\n\nexport function getNewYearsDay(year: number) {\n return new Date(year, 0, 1);\n}\n\nexport function getFathersDay(year: number) {\n return addWeeks(getFirstOccurence(new Date(year, 5), 0), 2);\n}\n\nexport function getMemorialDay(year: number) {\n return getLastOfMonth(new Date(year, 4), 1);\n}\n\nexport function getGoodFriday(year: number) {\n return addDays(getEaster(year), -2);\n}\n\nexport type Holidays = {\n [K in Holiday]: {\n date: Date;\n bankHoliday: boolean;\n federal: boolean;\n };\n};\n\nexport function getHolidays(year: number): Holidays {\n return {\n newYearsDay: {\n date: getNewYearsDay(year),\n bankHoliday: true,\n federal: true,\n },\n martinLutherKingJrDay: {\n date: getMartinLutherKingJrDay(year),\n bankHoliday: true,\n federal: true,\n },\n valentinesDay: {\n date: getValentinesDay(year),\n bankHoliday: false,\n federal: false,\n },\n juneteenth: {\n date: getJuneteenth(year),\n bankHoliday: !(year < 2022),\n federal: true,\n },\n easter: {\n date: getEaster(year),\n bankHoliday: false,\n federal: false,\n },\n presidentsDay: {\n date: getPresidentsDay(year),\n bankHoliday: true,\n federal: false,\n },\n memorialDay: {\n date: getMemorialDay(year),\n bankHoliday: true,\n federal: true,\n },\n independenceDay: {\n date: getIndependenceDay(year),\n bankHoliday: true,\n federal: true,\n },\n laborDay: {\n date: getLaborDay(year),\n bankHoliday: true,\n federal: true,\n },\n goodFriday: {\n date: getGoodFriday(year),\n bankHoliday: false,\n federal: false,\n },\n mothersDay: {\n date: getMothersDay(year),\n bankHoliday: false,\n federal: false,\n },\n columbusDay: {\n date: getColumbusDay(year),\n bankHoliday: true,\n federal: true,\n },\n halloween: {\n date: getHalloween(year),\n bankHoliday: false,\n federal: false,\n },\n fathersDay: {\n date: getFathersDay(year),\n bankHoliday: false,\n federal: false,\n },\n veteransDay: {\n date: getVeteransDay(year),\n bankHoliday: true,\n federal: true,\n },\n thanksgiving: {\n date: getThanksgiving(year),\n bankHoliday: true,\n federal: true,\n },\n christmas: {\n date: getChristmas(year),\n bankHoliday: true,\n federal: true,\n },\n newYearsEve: {\n date: getNewYearsEve(year),\n bankHoliday: false,\n federal: false,\n },\n };\n}\n\nexport function getBankHolidays(year: number): HolidayList {\n return filterHolidays(year, (holiday) => holiday.bankHoliday);\n}\n\nexport function getFederalHolidays(year: number): HolidayList {\n return filterHolidays(year, (holiday) => holiday.federal);\n}\n\nexport function getObservedHolidays(year: number): HolidayList {\n const result: HolidayList = {};\n\n for (const [name, holiday] of Object.entries(getHolidays(year))) {\n if (!holiday.federal) {\n continue;\n }\n\n if (isSaturday(holiday.date)) {\n result[name] = {\n date: addDays(holiday.date, -1),\n };\n } else if (isSunday(holiday.date)) {\n result[name] = {\n date: addDays(holiday.date, 1),\n };\n }\n }\n\n return result;\n}\n\nexport function isInHolidayList(\n date: Date,\n getHolidayList: (year: number) => HolidayList,\n): boolean {\n const holidays = getHolidayList(getYear(date));\n\n return Object.values(holidays).some((holiday) =>\n isSameDay(date, holiday.date),\n );\n}\n\nexport function isHoliday(date: Date): boolean {\n return isInHolidayList(date, getHolidays);\n}\n\nexport function isFederalHoliday(date: Date): boolean {\n return isInHolidayList(date, getFederalHolidays);\n}\n\nexport function isBankHoliday(date: Date): boolean {\n return isInHolidayList(date, getBankHolidays);\n}\n\nfunction filterHolidays(\n year: number,\n predicate: (holiday: Holidays[Holiday]) => boolean,\n): HolidayList {\n const result: HolidayList = {};\n\n for (const [name, holiday] of Object.entries(getHolidays(year))) {\n if (predicate(holiday)) {\n result[name] = {\n date: holiday.date,\n };\n }\n }\n\n return result;\n}\n"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "date-fns-holidays",
3
+ "description": "The purpose of this project is to give an interface to work with holidays using date-fns",
4
+ "version": "1.1.1-beta.0",
5
+ "author": "Khiet Tam Nguyen",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "keywords": [
9
+ "date-fns",
10
+ "date",
11
+ "holiday",
12
+ "holidays"
13
+ ],
14
+ "repository": {
15
+ "url": "https://github.com/nktnet1/date-fns-holidays"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "peerDependencies": {
21
+ "date-fns": ">= 2.x.x"
22
+ },
23
+ "devDependencies": {
24
+ "@biomejs/biome": "2.4.16",
25
+ "@vitest/coverage-v8": "^4.1.8",
26
+ "date-fns": "^4.4.0",
27
+ "tsdown": "^0.22.2",
28
+ "typescript": "^6.0.3",
29
+ "vitest": "^4.1.8"
30
+ },
31
+ "main": "./dist/index.cjs",
32
+ "module": "./dist/index.mjs",
33
+ "types": "./dist/index.d.cts",
34
+ "exports": {
35
+ ".": {
36
+ "import": "./dist/index.mjs",
37
+ "require": "./dist/index.cjs"
38
+ },
39
+ "./package.json": "./package.json"
40
+ },
41
+ "scripts": {
42
+ "start": "tsdown --watch",
43
+ "build": "tsdown",
44
+ "test": "vitest run",
45
+ "lint": "biome lint",
46
+ "format": "biome format",
47
+ "check": "biome check"
48
+ }
49
+ }