Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pascua

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pascua - npm Package Compare versions

Comparing version 1.1.2 to 1.1.3

dist/pascua.umd.js.map

294

dist/pascua.umd.js

@@ -1,2 +0,12 @@

/******/ (function(modules) { // webpackBootstrap
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["pascua"] = factory();
else
root["pascua"] = factory();
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache

@@ -81,3 +91,3 @@ /******/ var installedModules = {};

eval("module.exports = [{\"type\":1,\"name\":\"Año Nuevo\",\"day\":1,\"month\":1},{\"type\":1,\"name\":\"Día del Trabajo\",\"day\":1,\"month\":5},{\"type\":1,\"name\":\"Grito de la Independencia\",\"day\":20,\"month\":7},{\"type\":1,\"name\":\"Batalla de Boyacá\",\"day\":7,\"month\":8},{\"type\":1,\"name\":\"Inmaculada Concepción\",\"day\":8,\"month\":12},{\"type\":1,\"name\":\"Navidad\",\"day\":25,\"month\":12},{\"type\":2,\"name\":\"Reyes Magos\",\"day\":6,\"month\":1},{\"type\":2,\"name\":\"San José\",\"day\":19,\"month\":3},{\"type\":2,\"name\":\"San Pedro y San Pablo\",\"day\":29,\"month\":6},{\"type\":2,\"name\":\"Asunción de la Virgen\",\"day\":15,\"month\":8},{\"type\":2,\"name\":\"Día de la Raza\",\"day\":12,\"month\":10},{\"type\":2,\"name\":\"Todos los Santos\",\"day\":1,\"month\":11},{\"type\":2,\"name\":\"Independencia de Cartagena\",\"day\":11,\"month\":11},{\"type\":3,\"name\":\"Jueves Santo\",\"offset\":-3},{\"type\":3,\"name\":\"Viernes Santo\",\"offset\":-2},{\"type\":3,\"name\":\"Ascensión de Jesús\",\"offset\":43},{\"type\":3,\"name\":\"Corpus Christi\",\"offset\":64},{\"type\":3,\"name\":\"Sagrado Corazón de Jesús\",\"offset\":71}];\n\n//# sourceURL=webpack:///./src/holidays.json?");
module.exports = [{"type":1,"name":"Año Nuevo","day":1,"month":1},{"type":1,"name":"Día del Trabajo","day":1,"month":5},{"type":1,"name":"Grito de la Independencia","day":20,"month":7},{"type":1,"name":"Batalla de Boyacá","day":7,"month":8},{"type":1,"name":"Inmaculada Concepción","day":8,"month":12},{"type":1,"name":"Navidad","day":25,"month":12},{"type":2,"name":"Reyes Magos","day":6,"month":1},{"type":2,"name":"San José","day":19,"month":3},{"type":2,"name":"San Pedro y San Pablo","day":29,"month":6},{"type":2,"name":"Asunción de la Virgen","day":15,"month":8},{"type":2,"name":"Día de la Raza","day":12,"month":10},{"type":2,"name":"Todos los Santos","day":1,"month":11},{"type":2,"name":"Independencia de Cartagena","day":11,"month":11},{"type":3,"name":"Jueves Santo","offset":-3},{"type":3,"name":"Viernes Santo","offset":-2},{"type":3,"name":"Ascensión de Jesús","offset":43},{"type":3,"name":"Corpus Christi","offset":64},{"type":3,"name":"Sagrado Corazón de Jesús","offset":71}];

@@ -90,10 +100,282 @@ /***/ }),

\**********************/
/*! exports provided: getHoliday, getAllHolidays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHoliday\", function() { return getHoliday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllHolidays\", function() { return getAllHolidays; });\n/* harmony import */ var _holidays_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./holidays.json */ \"./src/holidays.json\");\nvar _holidays_json__WEBPACK_IMPORTED_MODULE_0___namespace = /*#__PURE__*/Object.assign({}, _holidays_json__WEBPACK_IMPORTED_MODULE_0__, {\"default\": _holidays_json__WEBPACK_IMPORTED_MODULE_0__});\n\n\n/**\n * Valida si el año pasado como argumento es un número entero mayor a 1983. En 1983 se expide la ley\n * por la cual se corren algunos festivos al próximo lunes:\n * http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=4954\n * @param {number} year El año para el cual se desea obtener los días festivos. Mayor a 1983.\n */\nfunction validateYear(year) {\n const int = Number.parseInt(year, 10);\n if (!Number.isNaN(int) && int > 1983) {\n return int;\n }\n throw new Error(\"Invalid year. Should be an integer > 1983\");\n}\n\n/**\n * Devuelve verdadero si el argumento pasado corresponde a un objeto de tipo fecha de JavaScript y\n * si el año de esa fecha es mayor a 1983, que es el año en el que se establece el decreto que rige\n * los festivos actuales:\n * http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=4954\n * @param {any} date La fecha que se desea validar.\n */\nfunction isValidDate(date) {\n return (\n Object.prototype.toString.call(date) === \"[object Date]\" &&\n validateYear(date.getFullYear())\n );\n}\n\n/**\n * Devuelve una cadena de texto en formato ISO 8601 que representa la fecha local correspondiente a\n * la fecha almacenada en el objeto Date pasado como argumento. El formato devuelto es el siguiente:\n * YYYY-MM-DDThh:mm:ss.sssTZD (eg 1997-07-16T19:20:30.453+01:00)\n * En donde:\n * YYYY = four-digit year\n * MM = two-digit month (01=January, etc.)\n * DD = two-digit day of month (01 through 31)\n * hh = two digits of hour (00 through 23) (am/pm NOT allowed)\n * mm = two digits of minute (00 through 59)\n * ss = two digits of second (00 through 59)\n * s = one or more digits representing a decimal fraction of a second\n * TZD = time zone designator (Z or +hh:mm or -hh:mm)\n * @param {object} date Objeto tipo Date de JavaScript\n * @param {string} timeOffset Desplazamiento horario por defecto '05:00' = 'America/Bogota'\n */\nfunction toISOString(date, timeOffset = \"-05:00\") {\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const sMonth = month < 10 ? `0${month}` : month;\n const sDay = day < 10 ? `0${day}` : day;\n return `${year}-${sMonth}-${sDay}T00:00:00.000${timeOffset}`;\n}\n\n/**\n * Devuelve un objecto Date creado a partir de una fecha en formato ISO 8601. Al crear un objecto\n * Date con un texto en formato ISO 8601 JavaScript lo interpreta como UTC y no como hora local, lo\n * que permite mantener una sistema estándarizado dentro del módulo usando siempre UTC. Por ello,\n * las fechas en el módulo se crean con esta función y así se preservan en UTC y hay menos\n * probabilidad de tener conflictos entre fechas por saltos de zona horaria.\n * Leer este artículo para entender un poco mejor el problema de la interpretación de las fechas\n * en JavaScript: https://codeofmatt.com/2015/06/17/javascript-date-parsing-changes-in-es6/\n * @param {number} year Año correspondiente a la fecha.\n * @param {number} month Mes correspondiente a la fecha. 1 = Enero.\n * @param {number} day Día correspondiente a la fecha.\n * @param {number} timeOffset El desplazamiento de la zona horaria. Por defecto = '-05:00'.\n */\nfunction getISODate(year, month, day, timeOffset = \"-05:00\") {\n const sMonth = month < 10 ? `0${month}` : month;\n const sDay = day < 10 ? `0${day}` : day;\n return new Date(`${year}-${sMonth}-${sDay}T00:00:00.000${timeOffset}`);\n}\n\n/**\n * Devuelve una nueva fecha sin mutar la fecha original pasada como argumento, a la que se le han\n * sumado los días especificados en el argumento amount.\n * @param {object} date Fecha tipo JavaScript.\n * @param {number} amount Días que se desean sumar.\n */\nfunction addDays(date, amount) {\n const resultDate = new Date(date.getTime());\n resultDate.setDate(resultDate.getDate() + amount);\n return resultDate;\n}\n\n/**\n * Devuelve true o false según dos fechas sean las mismas. La comparación se hace a nivel de día,\n * por lo que no se tiene en cuenta las horas sino sólo si son o no el mismo día del mismo mes del\n * mismo año.\n * @param {object} date1 Objeto fecha de JavaScript\n * @param {object} date2 Objeto fecha de JavaScript\n */\nfunction isSameDate(date1, date2) {\n if (date1.getDate() !== date2.getDate()) {\n return false;\n }\n if (date1.getMonth() !== date2.getMonth()) {\n return false;\n }\n // No necesitamos comparar el año ya que el festivo siempre lo creamos a partir del año de la\n // fecha que se pasó como argumento inicial, por lo tanto siempre estamos comparando fechas del\n // mismo año.\n return true;\n}\n\n/**\n * Devuelve el próximo día de la semana especificado en el argumento 'dayOfWeek' a partir de la\n * fecha especificada. Por ejemplo, para obtener el lunes siguiente a una fecha especificada se\n * usaría:\n * const nextMonday = getNextDayOfWeek(fecha, 1);\n * Si la fecha corresponde al mismo día solicitado se devuelve la misma fecha. En el caso anterior\n * si la 'fecha' pasada como argumento es lunes, entonces la función devolverá la misma fecha.\n * Basado en: https://codereview.stackexchange.com/a/33532/146118\n * @param {object} date Objeto fecha de JavaScript\n * @param {number} dayOfWeek Día de la semana que se desea. 0 = Domingo.\n */\nfunction getNextDayOfWeek(date, dayOfWeek) {\n const resultDate = new Date(date.getTime());\n resultDate.setDate(date.getDate() + (7 + dayOfWeek - date.getDay()) % 7);\n return resultDate;\n}\n\n/**\n * Devuelve la fecha que corresponde al domingo de Pascua para el año indicado usando el algoritmo\n * de Butcher: https://es.wikipedia.org/wiki/Computus#C.C3.A1lculo\n * Las fiestas correspondientes a la Pascua se calculan con referencia a esta fecha de la siguiente\n * forma:\n * Pascua -7 : Domingo de Ramos\n * Pascua -3 : Jueves Santo\n * Pascua -2 : Viernes Santo\n * Pascua : Domingo de Pascua\n * Pascua +43 : Ascensión de Jesús\n * Pascua +64 : Corpus Christi\n * Pascua +71 : Sagrado Corazón de Jesús\n * Ni el 'Domingo de Pascua' como tal, ni el 'Domingo de Ramos' se consideran días festivos.\n * @param {number} year Año para el cual se desea saber el Domingo de Pascua.\n * @param {string} timeOffset Desplazamiento de la zona horaria. Por defecto es '-05:00'.\n */\nfunction getPascua(year, timeOffset = \"-05:00\") {\n const A = year % 19;\n const B = Math.floor(year / 100);\n const C = year % 100;\n const D = Math.floor(B / 4);\n const E = B % 4;\n const F = Math.floor((B + 8) / 25);\n const G = Math.floor((B - F + 1) / 3);\n const H = (19 * A + B - D - G + 15) % 30;\n const I = Math.floor(C / 4);\n const K = C % 4;\n const L = (32 + 2 * E + 2 * I - H - K) % 7;\n const M = Math.floor((A + 11 * H + 22 * L) / 451);\n const N = H + L - 7 * M + 114;\n const month = Math.floor(N / 31);\n const day = 1 + N % 31;\n const pascua = getISODate(year, month, day, timeOffset);\n return pascua;\n}\n\n/**\n * Devuelve el nombre del festivo correspondiente a la fecha indicada si la fecha indicada es\n * festivo, de lo contrario devuelve false.\n * Exiten tres tipos de festivos en Colombia:\n * 1. De fecha fija: Siempre se celebra el día correspondiente a ese fecha. Ej. 25 de diciembre.\n * 2. Próximo lunes: Se celebra el lunes siguiente a la fecha en que cae el festivo. Ej. 6 de\n * enero. Si cae en lunes, se celebra ese mismo día.\n * 3. Respecto a la Pascua: Se celebran según la diferencia con respecto al domingo de Pascua para\n * ese año. Ej. Domingo de Pascua +45 días (Ascensión de Jesús).\n * @param {object} date Objeto tipo fecha para el cual se desea saber si es festivo.\n * @param {string} timeOffset Desplazamiento de la zona horaria. Por defecto es '-05:00'.\n */\nfunction getHoliday(date = new Date(), timeOffset = \"-05:00\") {\n if (!isValidDate(date)) {\n throw new Error(\"Invalid date.\");\n }\n const year = date.getFullYear();\n for (let i = 0; i < _holidays_json__WEBPACK_IMPORTED_MODULE_0__.length; i += 1) {\n if (_holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].type === 1) {\n const holiday = getISODate(\n year,\n _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].month,\n _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].day,\n timeOffset\n );\n if (isSameDate(date, holiday)) {\n return _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].name;\n }\n }\n if (_holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].type === 2) {\n const holiday = getISODate(\n year,\n _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].month,\n _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].day,\n timeOffset\n );\n const nextMonday = getNextDayOfWeek(holiday, 1);\n if (isSameDate(date, nextMonday)) {\n return _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].name;\n }\n }\n if (_holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].type === 3) {\n const pascua = getPascua(year, timeOffset);\n const pascuaHoliday = addDays(pascua, _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].offset);\n if (isSameDate(date, pascuaHoliday)) {\n return _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].name;\n }\n }\n }\n return \"\";\n}\n\n/**\n * Devuelve un array de objectos con todos los festivos del año indicado, en donde cada objeto\n * contiene la información de un día festivo. Por ejemplo, para el 2010 devolverá el siguiente\n * array:\n * [\n * { date: '2010-01-01T00:00:00.000-05:00', type: '1', name: 'Año Nuevo' },\n * { date: '2010-05-01T00:00:00.000-05:00', type: '1', name: 'Día del Trabajo' },\n * { date: '2010-07-20T00:00:00.000-05:00', type: '1', name: 'Grito de la Independencia' },\n * { date: '2010-08-07T00:00:00.000-05:00', type: '1', name: 'Batalla de Boyacá' },\n * { date: '2010-12-08T00:00:00.000-05:00', type: '1', name: 'Inmaculada Concepción' },\n * { date: '2010-12-25T00:00:00.000-05:00', type: '1', name: 'Navidad' },\n * { date: '2010-01-11T00:00:00.000-05:00', type: '2', name: 'Reyes Magos' },\n * { date: '2010-03-22T00:00:00.000-05:00', type: '2', name: 'San José' },\n * { date: '2010-07-05T00:00:00.000-05:00', type: '2', name: 'San Pedro y San Pablo' },\n * { date: '2010-08-16T00:00:00.000-05:00', type: '2', name: 'Asunción de la Virgen' },\n * { date: '2010-10-18T00:00:00.000-05:00', type: '2', name: 'Día de la Raza' },\n * { date: '2010-11-01T00:00:00.000-05:00', type: '2', name: 'Todos los Santos' },\n * { date: '2010-11-15T00:00:00.000-05:00', type: '2', name: 'Independencia de Cartagena' },\n * { date: '2010-04-01T00:00:00.000-05:00', type: '3', name: 'Jueves Santo' },\n * { date: '2010-04-02T00:00:00.000-05:00', type: '3', name: 'Viernes Santo' },\n * { date: '2010-05-17T00:00:00.000-05:00', type: '3', name: 'Ascensión de Jesús' },\n * { date: '2010-06-07T00:00:00.000-05:00', type: '3', name: 'Corpus Christi' },\n * { date: '2010-06-14T00:00:00.000-05:00', type: '3', name: 'Sagrado Corazón de Jesús' },\n * ]\n * @param {number} year El año para el cual deseamos saber los festivos\n */\nfunction getAllHolidays(year = new Date().getFullYear()) {\n const validYear = validateYear(year);\n const yearHolidays = [];\n for (let i = 0; i < _holidays_json__WEBPACK_IMPORTED_MODULE_0__.length; i += 1) {\n let holidayDate;\n if (_holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].type === 1) {\n holidayDate = getISODate(validYear, _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].month, _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].day);\n }\n if (_holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].type === 2) {\n holidayDate = getNextDayOfWeek(\n getISODate(validYear, _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].month, _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].day),\n 1\n );\n }\n if (_holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].type === 3) {\n holidayDate = addDays(getPascua(validYear), _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].offset);\n }\n yearHolidays.push({\n date: toISOString(holidayDate),\n type: _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].type,\n name: _holidays_json__WEBPACK_IMPORTED_MODULE_0__[i].name\n });\n }\n return yearHolidays;\n}\n\n\n\n\n//# sourceURL=webpack:///./src/index.js?");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAllHolidays = exports.getHoliday = undefined;
var _holidays = __webpack_require__(/*! ./holidays.json */ "./src/holidays.json");
var _holidays2 = _interopRequireDefault(_holidays);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Valida si el año pasado como argumento es un número entero mayor a 1983. En 1983 se expide la ley
* por la cual se corren algunos festivos al próximo lunes:
* http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=4954
* @param {number} year El año para el cual se desea obtener los días festivos. Mayor a 1983.
*/
function validateYear(year) {
var int = Number.parseInt(year, 10);
if (!Number.isNaN(int) && int > 1983) {
return int;
}
throw new Error("Invalid year. Should be an integer > 1983");
}
/**
* Devuelve verdadero si el argumento pasado corresponde a un objeto de tipo fecha de JavaScript y
* si el año de esa fecha es mayor a 1983, que es el año en el que se establece el decreto que rige
* los festivos actuales:
* http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=4954
* @param {any} date La fecha que se desea validar.
*/
function isValidDate(date) {
return Object.prototype.toString.call(date) === "[object Date]" && validateYear(date.getFullYear());
}
/**
* Devuelve una cadena de texto en formato ISO 8601 que representa la fecha local correspondiente a
* la fecha almacenada en el objeto Date pasado como argumento. El formato devuelto es el siguiente:
* YYYY-MM-DDThh:mm:ss.sssTZD (eg 1997-07-16T19:20:30.453+01:00)
* En donde:
* YYYY = four-digit year
* MM = two-digit month (01=January, etc.)
* DD = two-digit day of month (01 through 31)
* hh = two digits of hour (00 through 23) (am/pm NOT allowed)
* mm = two digits of minute (00 through 59)
* ss = two digits of second (00 through 59)
* s = one or more digits representing a decimal fraction of a second
* TZD = time zone designator (Z or +hh:mm or -hh:mm)
* @param {object} date Objeto tipo Date de JavaScript
* @param {string} timeOffset Desplazamiento horario por defecto '05:00' = 'America/Bogota'
*/
function toISOString(date) {
var timeOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "-05:00";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var sMonth = month < 10 ? "0" + month : month;
var sDay = day < 10 ? "0" + day : day;
return year + "-" + sMonth + "-" + sDay + "T00:00:00.000" + timeOffset;
}
/**
* Devuelve un objecto Date creado a partir de una fecha en formato ISO 8601. Al crear un objecto
* Date con un texto en formato ISO 8601 JavaScript lo interpreta como UTC y no como hora local, lo
* que permite mantener una sistema estándarizado dentro del módulo usando siempre UTC. Por ello,
* las fechas en el módulo se crean con esta función y así se preservan en UTC y hay menos
* probabilidad de tener conflictos entre fechas por saltos de zona horaria.
* Leer este artículo para entender un poco mejor el problema de la interpretación de las fechas
* en JavaScript: https://codeofmatt.com/2015/06/17/javascript-date-parsing-changes-in-es6/
* @param {number} year Año correspondiente a la fecha.
* @param {number} month Mes correspondiente a la fecha. 1 = Enero.
* @param {number} day Día correspondiente a la fecha.
* @param {number} timeOffset El desplazamiento de la zona horaria. Por defecto = '-05:00'.
*/
function getISODate(year, month, day) {
var timeOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "-05:00";
var sMonth = month < 10 ? "0" + month : month;
var sDay = day < 10 ? "0" + day : day;
return new Date(year + "-" + sMonth + "-" + sDay + "T00:00:00.000" + timeOffset);
}
/**
* Devuelve una nueva fecha sin mutar la fecha original pasada como argumento, a la que se le han
* sumado los días especificados en el argumento amount.
* @param {object} date Fecha tipo JavaScript.
* @param {number} amount Días que se desean sumar.
*/
function addDays(date, amount) {
var resultDate = new Date(date.getTime());
resultDate.setDate(resultDate.getDate() + amount);
return resultDate;
}
/**
* Devuelve true o false según dos fechas sean las mismas. La comparación se hace a nivel de día,
* por lo que no se tiene en cuenta las horas sino sólo si son o no el mismo día del mismo mes del
* mismo año.
* @param {object} date1 Objeto fecha de JavaScript
* @param {object} date2 Objeto fecha de JavaScript
*/
function isSameDate(date1, date2) {
if (date1.getDate() !== date2.getDate()) {
return false;
}
if (date1.getMonth() !== date2.getMonth()) {
return false;
}
// No necesitamos comparar el año ya que el festivo siempre lo creamos a partir del año de la
// fecha que se pasó como argumento inicial, por lo tanto siempre estamos comparando fechas del
// mismo año.
return true;
}
/**
* Devuelve el próximo día de la semana especificado en el argumento 'dayOfWeek' a partir de la
* fecha especificada. Por ejemplo, para obtener el lunes siguiente a una fecha especificada se
* usaría:
* const nextMonday = getNextDayOfWeek(fecha, 1);
* Si la fecha corresponde al mismo día solicitado se devuelve la misma fecha. En el caso anterior
* si la 'fecha' pasada como argumento es lunes, entonces la función devolverá la misma fecha.
* Basado en: https://codereview.stackexchange.com/a/33532/146118
* @param {object} date Objeto fecha de JavaScript
* @param {number} dayOfWeek Día de la semana que se desea. 0 = Domingo.
*/
function getNextDayOfWeek(date, dayOfWeek) {
var resultDate = new Date(date.getTime());
resultDate.setDate(date.getDate() + (7 + dayOfWeek - date.getDay()) % 7);
return resultDate;
}
/**
* Devuelve la fecha que corresponde al domingo de Pascua para el año indicado usando el algoritmo
* de Butcher: https://es.wikipedia.org/wiki/Computus#C.C3.A1lculo
* Las fiestas correspondientes a la Pascua se calculan con referencia a esta fecha de la siguiente
* forma:
* Pascua -7 : Domingo de Ramos
* Pascua -3 : Jueves Santo
* Pascua -2 : Viernes Santo
* Pascua : Domingo de Pascua
* Pascua +43 : Ascensión de Jesús
* Pascua +64 : Corpus Christi
* Pascua +71 : Sagrado Corazón de Jesús
* Ni el 'Domingo de Pascua' como tal, ni el 'Domingo de Ramos' se consideran días festivos.
* @param {number} year Año para el cual se desea saber el Domingo de Pascua.
* @param {string} timeOffset Desplazamiento de la zona horaria. Por defecto es '-05:00'.
*/
function getPascua(year) {
var timeOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "-05:00";
var A = year % 19;
var B = Math.floor(year / 100);
var C = year % 100;
var D = Math.floor(B / 4);
var E = B % 4;
var F = Math.floor((B + 8) / 25);
var G = Math.floor((B - F + 1) / 3);
var H = (19 * A + B - D - G + 15) % 30;
var I = Math.floor(C / 4);
var K = C % 4;
var L = (32 + 2 * E + 2 * I - H - K) % 7;
var M = Math.floor((A + 11 * H + 22 * L) / 451);
var N = H + L - 7 * M + 114;
var month = Math.floor(N / 31);
var day = 1 + N % 31;
var pascua = getISODate(year, month, day, timeOffset);
return pascua;
}
/**
* Devuelve el nombre del festivo correspondiente a la fecha indicada si la fecha indicada es
* festivo, de lo contrario devuelve false.
* Exiten tres tipos de festivos en Colombia:
* 1. De fecha fija: Siempre se celebra el día correspondiente a ese fecha. Ej. 25 de diciembre.
* 2. Próximo lunes: Se celebra el lunes siguiente a la fecha en que cae el festivo. Ej. 6 de
* enero. Si cae en lunes, se celebra ese mismo día.
* 3. Respecto a la Pascua: Se celebran según la diferencia con respecto al domingo de Pascua para
* ese año. Ej. Domingo de Pascua +45 días (Ascensión de Jesús).
* @param {object} date Objeto tipo fecha para el cual se desea saber si es festivo.
* @param {string} timeOffset Desplazamiento de la zona horaria. Por defecto es '-05:00'.
*/
function getHoliday() {
var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
var timeOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "-05:00";
if (!isValidDate(date)) {
throw new Error("Invalid date.");
}
var year = date.getFullYear();
for (var i = 0; i < _holidays2.default.length; i += 1) {
if (_holidays2.default[i].type === 1) {
var holiday = getISODate(year, _holidays2.default[i].month, _holidays2.default[i].day, timeOffset);
if (isSameDate(date, holiday)) {
return _holidays2.default[i].name;
}
}
if (_holidays2.default[i].type === 2) {
var _holiday = getISODate(year, _holidays2.default[i].month, _holidays2.default[i].day, timeOffset);
var nextMonday = getNextDayOfWeek(_holiday, 1);
if (isSameDate(date, nextMonday)) {
return _holidays2.default[i].name;
}
}
if (_holidays2.default[i].type === 3) {
var pascua = getPascua(year, timeOffset);
var pascuaHoliday = addDays(pascua, _holidays2.default[i].offset);
if (isSameDate(date, pascuaHoliday)) {
return _holidays2.default[i].name;
}
}
}
return "";
}
/**
* Devuelve un array de objectos con todos los festivos del año indicado, en donde cada objeto
* contiene la información de un día festivo. Por ejemplo, para el 2010 devolverá el siguiente
* array:
* [
* { date: '2010-01-01T00:00:00.000-05:00', type: '1', name: 'Año Nuevo' },
* { date: '2010-05-01T00:00:00.000-05:00', type: '1', name: 'Día del Trabajo' },
* { date: '2010-07-20T00:00:00.000-05:00', type: '1', name: 'Grito de la Independencia' },
* { date: '2010-08-07T00:00:00.000-05:00', type: '1', name: 'Batalla de Boyacá' },
* { date: '2010-12-08T00:00:00.000-05:00', type: '1', name: 'Inmaculada Concepción' },
* { date: '2010-12-25T00:00:00.000-05:00', type: '1', name: 'Navidad' },
* { date: '2010-01-11T00:00:00.000-05:00', type: '2', name: 'Reyes Magos' },
* { date: '2010-03-22T00:00:00.000-05:00', type: '2', name: 'San José' },
* { date: '2010-07-05T00:00:00.000-05:00', type: '2', name: 'San Pedro y San Pablo' },
* { date: '2010-08-16T00:00:00.000-05:00', type: '2', name: 'Asunción de la Virgen' },
* { date: '2010-10-18T00:00:00.000-05:00', type: '2', name: 'Día de la Raza' },
* { date: '2010-11-01T00:00:00.000-05:00', type: '2', name: 'Todos los Santos' },
* { date: '2010-11-15T00:00:00.000-05:00', type: '2', name: 'Independencia de Cartagena' },
* { date: '2010-04-01T00:00:00.000-05:00', type: '3', name: 'Jueves Santo' },
* { date: '2010-04-02T00:00:00.000-05:00', type: '3', name: 'Viernes Santo' },
* { date: '2010-05-17T00:00:00.000-05:00', type: '3', name: 'Ascensión de Jesús' },
* { date: '2010-06-07T00:00:00.000-05:00', type: '3', name: 'Corpus Christi' },
* { date: '2010-06-14T00:00:00.000-05:00', type: '3', name: 'Sagrado Corazón de Jesús' },
* ]
* @param {number} year El año para el cual deseamos saber los festivos
*/
function getAllHolidays() {
var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date().getFullYear();
var validYear = validateYear(year);
var yearHolidays = [];
for (var i = 0; i < _holidays2.default.length; i += 1) {
var holidayDate = void 0;
if (_holidays2.default[i].type === 1) {
holidayDate = getISODate(validYear, _holidays2.default[i].month, _holidays2.default[i].day);
}
if (_holidays2.default[i].type === 2) {
holidayDate = getNextDayOfWeek(getISODate(validYear, _holidays2.default[i].month, _holidays2.default[i].day), 1);
}
if (_holidays2.default[i].type === 3) {
holidayDate = addDays(getPascua(validYear), _holidays2.default[i].offset);
}
yearHolidays.push({
date: toISOString(holidayDate),
type: _holidays2.default[i].type,
name: _holidays2.default[i].name
});
}
return yearHolidays;
}
exports.getHoliday = getHoliday;
exports.getAllHolidays = getAllHolidays;
/***/ })
/******/ });
/******/ });
});
//# sourceMappingURL=pascua.umd.js.map

3

dist/pascua.umd.min.js

@@ -1,1 +0,2 @@

!function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e){e.exports=[{type:1,name:"Año Nuevo",day:1,month:1},{type:1,name:"Día del Trabajo",day:1,month:5},{type:1,name:"Grito de la Independencia",day:20,month:7},{type:1,name:"Batalla de Boyacá",day:7,month:8},{type:1,name:"Inmaculada Concepción",day:8,month:12},{type:1,name:"Navidad",day:25,month:12},{type:2,name:"Reyes Magos",day:6,month:1},{type:2,name:"San José",day:19,month:3},{type:2,name:"San Pedro y San Pablo",day:29,month:6},{type:2,name:"Asunción de la Virgen",day:15,month:8},{type:2,name:"Día de la Raza",day:12,month:10},{type:2,name:"Todos los Santos",day:1,month:11},{type:2,name:"Independencia de Cartagena",day:11,month:11},{type:3,name:"Jueves Santo",offset:-3},{type:3,name:"Viernes Santo",offset:-2},{type:3,name:"Ascensión de Jesús",offset:43},{type:3,name:"Corpus Christi",offset:64},{type:3,name:"Sagrado Corazón de Jesús",offset:71}]},function(e,t,n){"use strict";n.r(t),n.d(t,"getHoliday",function(){return l}),n.d(t,"getAllHolidays",function(){return s});var a=n(0);function o(e){const t=Number.parseInt(e,10);if(!Number.isNaN(t)&&t>1983)return t;throw new Error("Invalid year. Should be an integer > 1983")}function r(e,t="-05:00"){const n=e.getFullYear(),a=e.getMonth()+1,o=e.getDate();return`${n}-${a<10?`0${a}`:a}-${o<10?`0${o}`:o}T00:00:00.000${t}`}function u(e,t,n,a="-05:00"){const o=t<10?`0${t}`:t,r=n<10?`0${n}`:n;return new Date(`${e}-${o}-${r}T00:00:00.000${a}`)}function f(e,t){const n=new Date(e.getTime());return n.setDate(n.getDate()+t),n}function i(e,t){return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()}function y(e,t){const n=new Date(e.getTime());return n.setDate(e.getDate()+(7+t-e.getDay())%7),n}function d(e,t="-05:00"){const n=e%19,a=Math.floor(e/100),o=e%100,r=Math.floor(a/4),f=a%4,i=Math.floor((a+8)/25),y=(19*n+a-r-Math.floor((a-i+1)/3)+15)%30,d=(32+2*f+2*Math.floor(o/4)-y-o%4)%7,l=y+d-7*Math.floor((n+11*y+22*d)/451)+114;return u(e,Math.floor(l/31),1+l%31,t)}function l(e=new Date,t="-05:00"){if(!function(e){return"[object Date]"===Object.prototype.toString.call(e)&&o(e.getFullYear())}(e))throw new Error("Invalid date.");const n=e.getFullYear();for(let o=0;o<a.length;o+=1){if(1===a[o].type){if(i(e,u(n,a[o].month,a[o].day,t)))return a[o].name}if(2===a[o].type){if(i(e,y(u(n,a[o].month,a[o].day,t),1)))return a[o].name}if(3===a[o].type){if(i(e,f(d(n,t),a[o].offset)))return a[o].name}}return""}function s(e=(new Date).getFullYear()){const t=o(e),n=[];for(let e=0;e<a.length;e+=1){let o;1===a[e].type&&(o=u(t,a[e].month,a[e].day)),2===a[e].type&&(o=y(u(t,a[e].month,a[e].day),1)),3===a[e].type&&(o=f(d(t),a[e].offset)),n.push({date:r(o),type:a[e].type,name:a[e].name})}return n}}]);
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.pascua=t():e.pascua=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e){e.exports=[{type:1,name:"Año Nuevo",day:1,month:1},{type:1,name:"Día del Trabajo",day:1,month:5},{type:1,name:"Grito de la Independencia",day:20,month:7},{type:1,name:"Batalla de Boyacá",day:7,month:8},{type:1,name:"Inmaculada Concepción",day:8,month:12},{type:1,name:"Navidad",day:25,month:12},{type:2,name:"Reyes Magos",day:6,month:1},{type:2,name:"San José",day:19,month:3},{type:2,name:"San Pedro y San Pablo",day:29,month:6},{type:2,name:"Asunción de la Virgen",day:15,month:8},{type:2,name:"Día de la Raza",day:12,month:10},{type:2,name:"Todos los Santos",day:1,month:11},{type:2,name:"Independencia de Cartagena",day:11,month:11},{type:3,name:"Jueves Santo",offset:-3},{type:3,name:"Viernes Santo",offset:-2},{type:3,name:"Ascensión de Jesús",offset:43},{type:3,name:"Corpus Christi",offset:64},{type:3,name:"Sagrado Corazón de Jesús",offset:71}]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAllHolidays=t.getHoliday=void 0;var a,o=n(0),r=(a=o)&&a.__esModule?a:{default:a};function u(e){var t=Number.parseInt(e,10);if(!Number.isNaN(t)&&t>1983)return t;throw new Error("Invalid year. Should be an integer > 1983")}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"-05:00",n=e.getFullYear(),a=e.getMonth()+1,o=e.getDate();return n+"-"+(a<10?"0"+a:a)+"-"+(o<10?"0"+o:o)+"T00:00:00.000"+t}function f(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"-05:00";return new Date(e+"-"+(t<10?"0"+t:t)+"-"+(n<10?"0"+n:n)+"T00:00:00.000"+a)}function l(e,t){var n=new Date(e.getTime());return n.setDate(n.getDate()+t),n}function i(e,t){return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()}function y(e,t){var n=new Date(e.getTime());return n.setDate(e.getDate()+(7+t-e.getDay())%7),n}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"-05:00",n=e%19,a=Math.floor(e/100),o=e%100,r=Math.floor(a/4),u=a%4,d=Math.floor((a+8)/25),l=(19*n+a-r-Math.floor((a-d+1)/3)+15)%30,i=(32+2*u+2*Math.floor(o/4)-l-o%4)%7,y=l+i-7*Math.floor((n+11*l+22*i)/451)+114;return f(e,Math.floor(y/31),1+y%31,t)}t.getHoliday=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"-05:00";if(!function(e){return"[object Date]"===Object.prototype.toString.call(e)&&u(e.getFullYear())}(e))throw new Error("Invalid date.");for(var n=e.getFullYear(),a=0;a<r.default.length;a+=1){if(1===r.default[a].type&&i(e,f(n,r.default[a].month,r.default[a].day,t)))return r.default[a].name;if(2===r.default[a].type&&i(e,y(f(n,r.default[a].month,r.default[a].day,t),1)))return r.default[a].name;if(3===r.default[a].type&&i(e,l(p(n,t),r.default[a].offset)))return r.default[a].name}return""},t.getAllHolidays=function(){for(var e=u(arguments.length>0&&void 0!==arguments[0]?arguments[0]:(new Date).getFullYear()),t=[],n=0;n<r.default.length;n+=1){var a=void 0;1===r.default[n].type&&(a=f(e,r.default[n].month,r.default[n].day)),2===r.default[n].type&&(a=y(f(e,r.default[n].month,r.default[n].day),1)),3===r.default[n].type&&(a=l(p(e),r.default[n].offset)),t.push({date:d(a),type:r.default[n].type,name:r.default[n].name})}return t}}])});
//# sourceMappingURL=pascua.umd.min.js.map
{
"name": "pascua",
"version": "1.1.2",
"version": "1.1.3",
"description": "Calculadora para los festivos en Colombia",

@@ -13,4 +13,3 @@ "main": "dist/index.js",

"build:main": "babel --copy-files --out-dir dist --ignore __tests__ src",
"build:umd.dev": "webpack --output-filename pascua.umd.js --mode development",
"build:umd": "webpack --output-filename pascua.umd.min.js --mode production",
"build:umd": "webpack --config webpack.config.umd.js",
"prepublishOnly": "npm test && npm run build"

@@ -51,3 +50,3 @@ },

"eslint-plugin-prettier": "^2.6.0",
"husky": "^1.0.0-rc.4",
"husky": "^1.0.0-rc.6",
"jest": "^22.4.3",

@@ -54,0 +53,0 @@ "npm-run-all": "^4.1.3",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc