From 6f0fb8293bed38dbae94aa61950a6a889e1b0897 Mon Sep 17 00:00:00 2001 From: Alireza Alibeiki Date: Thu, 15 Jul 2021 14:00:54 +0430 Subject: [PATCH] add isInArray function and write tests & change webpack to rollup --- .babelrc | 3 + dist/PersianDate.js | 7328 +++++++++++++----------------- dist/PersianDate.js.map | 1 - dist/PersianDate.min.js | 3 +- dist/PersianDate.min.js.map | 1 - dist/PersianDate.umd.js | 7444 +++++++++++++------------------ dist/PersianDate.umd.js.map | 1 - dist/PersianDate.umd.min.js | 3 +- dist/PersianDate.umd.min.js.map | 1 - lib/plugin.js | 7 - lib/nuxt.js => nuxt/index.js | 0 nuxt/plugin.js | 7 + package.json | 14 +- rollup.config.js | 86 + src/PersianDate.js | 46 +- src/base/gtj.js | 13 +- src/comparison/index.js | 1 + src/comparison/isInArray.js | 5 + test.js | 58 +- typings/PersianDate.d.ts | 177 +- webpack.config.js | 53 - yarn.lock | 1438 +----- 22 files changed, 6534 insertions(+), 10156 deletions(-) create mode 100644 .babelrc delete mode 100644 dist/PersianDate.js.map delete mode 100644 dist/PersianDate.min.js.map delete mode 100644 dist/PersianDate.umd.js.map delete mode 100644 dist/PersianDate.umd.min.js.map delete mode 100644 lib/plugin.js rename lib/nuxt.js => nuxt/index.js (100%) create mode 100644 nuxt/plugin.js create mode 100644 rollup.config.js create mode 100644 src/comparison/isInArray.js delete mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..526ddfd --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/preset-env"] +} diff --git a/dist/PersianDate.js b/dist/PersianDate.js index 90496d2..3c3a599 100644 --- a/dist/PersianDate.js +++ b/dist/PersianDate.js @@ -1,2422 +1,488 @@ -(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["PersianDate"] = factory(); - else - root["PersianDate"] = factory(); -})(global, function() { -return /******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ "./src/PersianDate.js": -/*!****************************!*\ - !*** ./src/PersianDate.js ***! - \****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ "./src/base/index.js"); -/* harmony import */ var _create__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create */ "./src/create/index.js"); -/* harmony import */ var _set_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./set-get */ "./src/set-get/index.js"); -/* harmony import */ var _add_sub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add-sub */ "./src/add-sub/index.js"); -/* harmony import */ var _conversion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./conversion */ "./src/conversion/index.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./comparison */ "./src/comparison/index.js"); -/* harmony import */ var _diff__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./diff */ "./src/diff/index.js"); -////////////////////---------- Are You Ready? ----------//////////////////// -////////////////////------------- Let's Go -------------//////////////////// -////////////////////---- Read Comments And Enjoy It ----//////////////////// - -////////////////////------------- ATTENTION -------------//////////////////// -// In the first, I'm must say, in the all of the project, // -// g means Gregorian and j means Jalali // -///////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - -/** - * A Date library for working with persian date - * @class - * @param {Date|Array|Null|Object|String} date - the date that convert to persian date - * @param {String} [calendar='jalali'] - the calendar - */ -const PersianDate = function (dateVal, calendarVal) { - "use strict"; - - /** - * keeps the date and time - * @type {Object} - * @property {Number} year - the year of date - * @property {Number} month - the month of date - * @property {Number} date - the day of month of date - * @property {Number} hour - the hour of time - * @property {Number} minute - the minute of time - * @property {Number} second - the second of time - * @property {Number} millisecond - the millisecond of time - * @property {Number} gregorian - the gregorian date - */ - this.d = {}; - - /** - * the calendar type - * @type {String} - * @default "jalali" - * @example jalali | gregorian - */ - this.c = "jalali"; - - ////////////////////--------- create & parse ---------///////////////////// - - /** - * make current date in persian calendar - * @returns {PersianDate} make current date and return class - */ - PersianDate.prototype.now = function () { - if (this.error) { - delete this.error; - this.d = {}; - } - return _create__WEBPACK_IMPORTED_MODULE_1__.now.call(this); - }; - - /** - * set persian date from Gregorian date - * @deprecated - * @param {...Number|Date|Array|Null} date - the date that convert to persian date - * @returns {PersianDate} return class with persian date - * @throws {PersianDate|String} if date invalid return class with error property with error property - */ - PersianDate.prototype.setDate = function () { - (0,_base__WEBPACK_IMPORTED_MODULE_0__.warn)( - '"setDate" function is deprecated! use "fromGregorian" function instead.\n' + - "https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date" - ); - return this.fromGregorian(...arguments); - }; - - /** - * convert a jalali or gregorian date to PersianDate instance - * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {PersianDate} return class with persian date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.parse = function () { - return _create__WEBPACK_IMPORTED_MODULE_1__.parse.call(this, ...arguments); - }; - - /** - * get clone of this date - * @since 1.1.0 - * @returns {PersianDate} returns the clone of this date - */ - PersianDate.prototype.clone = function () { - return _create__WEBPACK_IMPORTED_MODULE_1__.clone.call(this); - }; - - /** - * convert a jalali date to PersianDate instance - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {PersianDate} return class with persian date - * @throws {PersianDate} if date invalid return class with error - */ - PersianDate.prototype.fromJalali = function () { - if (this.error) { - delete this.error; - this.d = {}; - } - return _create__WEBPACK_IMPORTED_MODULE_1__.fromJalali.call(this, ...arguments); - }; - - /** - * convert a gregorian date to PersianDate instance - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {PersianDate} return class with persian date - * @throws {PersianDate} if date invalid return class with error - */ - PersianDate.prototype.fromGregorian = function () { - if (this.error) { - delete this.error; - this.d = {}; - } - return _create__WEBPACK_IMPORTED_MODULE_1__.fromGregorian.call(this, ...arguments); - }; - - /** - * convert a gregorian date to PersianDate instance - * @since 2.0.0 - * @param {"j"|"jalali"|"g"|"gregorian"} calendar - the calendar - * @returns {PersianDate} return class with persian date - */ - PersianDate.prototype.calendar = function (calendar) { - return _create__WEBPACK_IMPORTED_MODULE_1__.calendar.call(this, calendar); - }; - - ////////////////////--------- set & get ---------///////////////////// - - /** - * get or set year - * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting - * @returns {PersianDate|String|Number} if set the year, returns class, - * else returns a number or string from year - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.year = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.year.call(this, format); - }; - - /** - * get or set month - * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting - * @returns {PersianDate|String|Number} if set the month, returns class, - * else returns a number or string from month - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.month = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.month.call(this, format); - }; - - /** - * get or set day in month - * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting - * @returns {PersianDate|String|Number} if set the day, returns class, - * else returns a number or string from day - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.date = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.date.call(this, format); - }; - - /** - * get or set quarter - * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting - * @returns {PersianDate|String|Number} if set the quarter, returns class, - * else returns a number or string from quarter - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.quarter = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.quarter.call(this, format); - }; - - /** - * get or set week - * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting - * @returns {PersianDate|String|Number} if set the week, returns class, - * else returns a number or string from week - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.week = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.week.call(this, format); - }; - - /** - * get or set hour - * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting - * @returns {PersianDate|String|Number} if set the hour, returns class, - * else returns a number or string from hour - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.hour = function (format = "H") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.hour.call(this, format); - }; - - /** - * get or set minute - * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting - * @returns {PersianDate|String|Number} if set the minute, returns class, - * else returns a number or string from minute - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.minute = function (format = "m") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.minute.call(this, format); - }; - - /** - * get or set second - * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting - * @returns {PersianDate|String|Number} if set the second, returns class, - * else returns a number or string from second - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.second = function (format = "s") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.second.call(this, format); - }; - - /** - * get or set millisecond - * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting - * @returns {PersianDate|String|Number} if set the millisecond, returns class, - * else returns a number or string from millisecond - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.millisecond = function (format = "c") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.millisecond.call(this, format); - }; - - /** - * get timestamp or set date from timestamp - * @param {Null|Number|String} value - a number for set the millisecond - * @returns {PersianDate|Number} if set the timestamp, returns class, - * else returns timestamp (number) - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.timestamp = function (value) { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.timestamp.call(this, value); - }; - - PersianDate.prototype.valueOf = function () { - return this.timestamp(); - }; - - /** - * returns number of days in month - * @param {?Number} year - year of date that returns number of days in month - * @param {?Number} month - month of date that returns number of days in month - * @returns {Number} number of days in month - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.getDaysInMonth = function ( - year = this.d.year, - month = this.d.month - ) { - if (this.error) return this.error; - return (0,_set_get__WEBPACK_IMPORTED_MODULE_2__.getDaysInMonth)(this.c, year, month); - }; - - /** - * return number of weeks in year - * @since 2.0.0 - * @param {Number|String} year - the year - * @returns {Number} number of weeks in year - */ - PersianDate.prototype.getWeeksInYear = function (year = this.d.year) { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.getWeeksInYear.call(this, year); - }; - - /** - * change the date to start of the year or month or ... - * @since 2.0.0 - * @param {String} unit - the unit of time - * @returns {PersianDate} return the class with new date or time - */ - PersianDate.prototype.startOf = function (unit = "year") { - return _set_get__WEBPACK_IMPORTED_MODULE_2__.startOf.call(this, unit); - }; - - /** - * change the date to end of the year or month or ... - * @since 2.0.0 - * @param {String} unit - the unit of time - * @returns {PersianDate} return the class with new date or time - */ - PersianDate.prototype.endOf = function (unit = "year") { - return _set_get__WEBPACK_IMPORTED_MODULE_2__.endOf.call(this, unit); - }; - - /** - * change the time - * @since 2.3.0 - * @param {PersianDate|Date|String|Array|Object|Number} time - the new time - * @param {Null|String|Number} time.h - hour of date - * @param {Null|String|Number} time.hour - hour of date - * @param {Null|String|Number} time.hours - hour of date - * @param {Null|String|Number} time.m - minute of date - * @param {Null|String|Number} time.minute - minute of date - * @param {Null|String|Number} time.minutes - minute of date - * @param {Null|String|Number} time.s - second of date - * @param {Null|String|Number} time.second - second of date - * @param {Null|String|Number} time.seconds - second of date - * @param {Null|String|Number} time.ms - millisecond of date - * @param {Null|String|Number} time.millisecond - millisecond of date - * @param {Null|String|Number} time.milliseconds - millisecond of date - * @returns {PersianDate|Array} if set the time, returns class, - * else returns an array of time - * @throws {String} if time invalid return error text - */ - PersianDate.prototype.time = function () { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.time.call(this, ...arguments); - }; - - ////////////////////--------- add & sub ---------///////////////////// - - /** - * add to year - * @param {?Number|String} [year=1] - a number for add with year - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addYear = function (year = 1, checkDate = true) { - if (this.error) return this.error; - if (!year) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addYear.call(this, year, checkDate); - }; - - /** - * add to month - * @param {?Number|String} [month=1] - a number for add with month - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addMonth = function (month = 1, checkDate = true) { - if (this.error) return this.error; - if (!month) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addMonth.call(this, month, checkDate); - }; - - /** - * add to day - * @param {?Number|String} [day=1] - a number for add with day - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addDay = function (day = 1, checkDate = true) { - if (this.error) return this.error; - if (!day) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addDay.call(this, day, checkDate); - }; - - /** - * add to quarter - * @param {?Number|String} [quarter=1] - a number for add with quarter - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addQuarter = function (quarter = 1, checkDate = true) { - if (this.error) return this.error; - if (!quarter) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addQuarter.call(this, quarter, checkDate); - }; - - /** - * add to week - * @param {?Number|String} [week=1] - a number for add with week - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addWeek = function (week = 1, checkDate = true) { - if (this.error) return this.error; - if (!week) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addWeek.call(this, week, checkDate); - }; - - /** - * add to hour - * @param {?Number|String} [hour=1] - a number for add with hour - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addHour = function (hour = 1, checkDate = true) { - if (this.error) return this.error; - if (!hour) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addHour.call(this, hour, checkDate); - }; - - /** - * add to minute - * @param {?Number|String} [minute=1] - a number for add with minute - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addMinute = function (minute = 1, checkDate = true) { - if (this.error) return this.error; - if (!minute) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addMinute.call(this, minute, checkDate); - }; - - /** - * add to second - * @param {?Number|String} [second=1] - a number for add with second - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addSecond = function (second = 1, checkDate = true) { - if (this.error) return this.error; - if (!second) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addSecond.call(this, second, checkDate); - }; - - /** - * add to millisecond - * @param {?Number|String} [millisecond=1] - a number for add with millisecond - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addMillisecond = function ( - millisecond = 1, - checkDate = true - ) { - if (this.error) return this.error; - if (!millisecond) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addMillisecond.call(this, millisecond, checkDate); - }; - - /** - * subtract from year - * @param {?Number|String} [year=1] - a number for subtract from year - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subYear = function (year = 1, checkDate = true) { - if (this.error) return this.error; - if (!year) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subYear.call(this, year, checkDate); - }; - - /** - * subtract from month - * @param {?Number|String} [month=1] - a number for subtract from month - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subMonth = function (month = 1, checkDate = true) { - if (this.error) return this.error; - if (!month) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subMonth.call(this, month, checkDate); - }; - - /** - * subtract from day - * @param {?Number|String} [day=1] - a number for subtract from day - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subDay = function (day = 1, checkDate = true) { - if (this.error) return this.error; - if (!day) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subDay.call(this, day, checkDate); - }; - - /** - * subtract from quarter - * @param {?Number|String} [quarter=1] - a number for subtract from quarter - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subQuarter = function (quarter = 1, checkDate = true) { - if (this.error) return this.error; - if (!quarter) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subQuarter.call(this, quarter, checkDate); - }; - - /** - * subtract from week - * @param {?Number|String} [week=1] - a number for subtract from week - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subWeek = function (week = 1, checkDate = true) { - if (this.error) return this.error; - if (!week) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subWeek.call(this, week, checkDate); - }; - - /** - * subtract from hour - * @param {?Number|String} [hour=1] - a number for subtract from hour - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subHour = function (hour = 1, checkDate = true) { - if (this.error) return this.error; - if (!hour) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subHour.call(this, hour, checkDate); - }; - - /** - * subtract from minute - * @param {?Number|String} [minute=1] - a number for subtract from minute - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subMinute = function (minute = 1, checkDate = true) { - if (this.error) return this.error; - if (!minute) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subMinute.call(this, minute, checkDate); - }; - - /** - * subtract from second - * @param {?Number|String} [second=1] - a number for subtract from second - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subSecond = function (second = 1, checkDate = true) { - if (this.error) return this.error; - if (!second) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subSecond.call(this, second, checkDate); - }; - - /** - * subtract from millisecond - * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subMillisecond = function ( - millisecond = 1, - checkDate = true - ) { - if (this.error) return this.error; - if (!millisecond) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subMillisecond.call(this, millisecond, checkDate); - }; - - ////////////////////--------- conversion ---------///////////////////// - - /** - * returns date as string with specify format - * @param {?String} [format=date] - formatting date to string - * @returns {String} date string - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toString = function (format = "date") { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toString.call(this, format); - }; - - /** - * return the array of PersianDate - * @since 1.3.0 - * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year - * @param {String|Number} yearForamt.y - year format - * @param {Null|String|Number} yearForamt.year - year format - * @param {Null|String|Number} yearForamt.years - year format - * @param {Null|String|Number} yearForamt.M - month format - * @param {Null|String|Number} yearForamt.month - month format - * @param {Null|String|Number} yearForamt.months - month format - * @param {Null|String|Number} yearForamt.d - day format - * @param {Null|String|Number} yearForamt.day - day format - * @param {Null|String|Number} yearForamt.days - day format - * @param {Null|String|Number} yearForamt.date - day format - * @param {Null|String|Number} yearForamt.h - hour format - * @param {Null|String|Number} yearForamt.hour - hour format - * @param {Null|String|Number} yearForamt.hours - hour format - * @param {Null|String|Number} yearForamt.m - minute format - * @param {Null|String|Number} yearForamt.minute - minute format - * @param {Null|String|Number} yearForamt.minutes - minute format - * @param {Null|String|Number} yearForamt.s - second format - * @param {Null|String|Number} yearForamt.second - second format - * @param {Null|String|Number} yearForamt.seconds - second format - * @param {Null|String|Number} yearForamt.ms - millisecond format - * @param {Null|String|Number} yearForamt.millisecond - millisecond format - * @param {Null|String|Number} yearForamt.milliseconds - millisecond format - * @param {Null|Number|String} monthFormat month format - * @param {Null|Number|String} dayFormat day format - * @param {Null|Number|String} hourFormat hour format - * @param {Null|Number|String} minuteFormat minute format - * @param {Null|Number|String} secondFormat second format - * @param {Null|Number|String} millisecondFormat millisecond format - * @returns {Object} if date valid, return array of date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toArray = function () { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toArray.call(this, ...arguments); - }; - - /** - * return the object of PersianDate - * @since 1.3.0 - * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year - * @param {String|Number} yearForamt.y - year format - * @param {Null|String|Number} yearForamt.year - year format - * @param {Null|String|Number} yearForamt.years - year format - * @param {Null|String|Number} yearForamt.M - month format - * @param {Null|String|Number} yearForamt.month - month format - * @param {Null|String|Number} yearForamt.months - month format - * @param {Null|String|Number} yearForamt.d - day format - * @param {Null|String|Number} yearForamt.day - day format - * @param {Null|String|Number} yearForamt.days - day format - * @param {Null|String|Number} yearForamt.date - day format - * @param {Null|String|Number} yearForamt.h - hour format - * @param {Null|String|Number} yearForamt.hour - hour format - * @param {Null|String|Number} yearForamt.hours - hour format - * @param {Null|String|Number} yearForamt.m - minute format - * @param {Null|String|Number} yearForamt.minute - minute format - * @param {Null|String|Number} yearForamt.minutes - minute format - * @param {Null|String|Number} yearForamt.s - second format - * @param {Null|String|Number} yearForamt.second - second format - * @param {Null|String|Number} yearForamt.seconds - second format - * @param {Null|String|Number} yearForamt.ms - millisecond format - * @param {Null|String|Number} yearForamt.millisecond - millisecond format - * @param {Null|String|Number} yearForamt.milliseconds - millisecond format - * @param {Null|Number|String} monthFormat month format - * @param {Null|Number|String} dayFormat day format - * @param {Null|Number|String} hourFormat hour format - * @param {Null|Number|String} minuteFormat minute format - * @param {Null|Number|String} secondFormat second format - * @param {Null|Number|String} millisecondFormat millisecond format - * @returns {Object} if date valid, return Object of date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toObject = function () { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toObject.call(this, ...arguments); - }; - - /** - * return the Date instance of PersianDate - * @since 2.0.0 - * @returns {Date} if date valid, return Date instance of date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toDate = function () { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toDate.call(this); - }; - - ////////////////////--------- diff ---------///////////////////// - - /** - * get the diffrence between two date - * @since 1.4.0 - * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date - * @param {String|Number} date.y - year of date - * @param {Null|String|Number} date.year - year of date - * @param {Null|String|Number} date.years - year of date - * @param {Null|String|Number} date.M - month of date - * @param {Null|String|Number} date.month - month of date - * @param {Null|String|Number} date.months - month of date - * @param {Null|String|Number} date.d - day of date - * @param {Null|String|Number} date.day - day of date - * @param {Null|String|Number} date.days - day of date - * @param {Null|String|Number} date.date - day of date - * @param {Null|String|Number} date.h - hour of date - * @param {Null|String|Number} date.hour - hour of date - * @param {Null|String|Number} date.hours - hour of date - * @param {Null|String|Number} date.m - minute of date - * @param {Null|String|Number} date.minute - minute of date - * @param {Null|String|Number} date.minutes - minute of date - * @param {Null|String|Number} date.s - second of date - * @param {Null|String|Number} date.second - second of date - * @param {Null|String|Number} date.seconds - second of date - * @param {Null|String|Number} date.ms - millisecond of date - * @param {Null|String|Number} date.millisecond - millisecond of date - * @param {Null|String|Number} date.milliseconds - millisecond of date - * @param {String} unit - the unit of the measurment - * @param {Boolean} addOne - add one day to result - * @returns {Number} diffrence - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.diff = function (date, unit, addOne = false) { - if (this.error) return this.error; - return _diff__WEBPACK_IMPORTED_MODULE_6__.diff.call(this, date, unit, addOne); - }; - - /** - * get the diffrence between two date in a human-readable format - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date - * @param {String|Number} date.y - year of date - * @param {Null|String|Number} date.year - year of date - * @param {Null|String|Number} date.years - year of date - * @param {Null|String|Number} date.M - month of date - * @param {Null|String|Number} date.month - month of date - * @param {Null|String|Number} date.months - month of date - * @param {Null|String|Number} date.d - day of date - * @param {Null|String|Number} date.day - day of date - * @param {Null|String|Number} date.days - day of date - * @param {Null|String|Number} date.date - day of date - * @param {Null|String|Number} date.h - hour of date - * @param {Null|String|Number} date.hour - hour of date - * @param {Null|String|Number} date.hours - hour of date - * @param {Null|String|Number} date.m - minute of date - * @param {Null|String|Number} date.minute - minute of date - * @param {Null|String|Number} date.minutes - minute of date - * @param {Null|String|Number} date.s - second of date - * @param {Null|String|Number} date.second - second of date - * @param {Null|String|Number} date.seconds - second of date - * @param {Null|String|Number} date.ms - millisecond of date - * @param {Null|String|Number} date.millisecond - millisecond of date - * @param {Null|String|Number} date.milliseconds - millisecond of date - * @param {Boolean} suffix - add suffix or not - * @returns {String} if date valid, return diff human-readable format - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.diffForHumans = function (date, suffix = true) { - if (this.error) return this.error; - return _diff__WEBPACK_IMPORTED_MODULE_6__.diffForHumans.call(this, date, suffix); - }; - - ////////////////////--------- comparison ---------///////////////////// - - /** - * returns minimum date in arguments that passed - * @since 1.4.0 - * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; - * @param {String} date.y - year of date - * @param {Null|String} date.year - year of date - * @param {Null|String} date.years - year of date - * @param {Null|String} date.M - month of date - * @param {Null|String} date.month - month of date - * @param {Null|String} date.months - month of date - * @param {Null|String} date.d - day of date - * @param {Null|String} date.day - day of date - * @param {Null|String} date.days - day of date - * @param {Null|String} date.date - day of date - * @param {Null|String} date.h - hour of date - * @param {Null|String} date.hour - hour of date - * @param {Null|String} date.hours - hour of date - * @param {Null|String} date.m - minute of date - * @param {Null|String} date.minute - minute of date - * @param {Null|String} date.minutes - minute of date - * @param {Null|String} date.s - second of date - * @param {Null|String} date.second - second of date - * @param {Null|String} date.seconds - second of date - * @param {Null|String} date.ms - millisecond of date - * @param {Null|String} date.millisecond - millisecond of date - * @param {Null|String} date.milliseconds - millisecond of date - * @returns {*} return minimum date - * @throws {false} if parameters not send or parameters is invalid, return false - */ - PersianDate.prototype.min = function () { - return _base__WEBPACK_IMPORTED_MODULE_0__.mathOperation.call(this, arguments, "min"); - }; - - /** - * returns maximum date in arguments that passed - * @since 1.4.0 - * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; - * @param {String} date.y - year of date - * @param {Null|String} date.year - year of date - * @param {Null|String} date.years - year of date - * @param {Null|String} date.M - month of date - * @param {Null|String} date.month - month of date - * @param {Null|String} date.months - month of date - * @param {Null|String} date.d - day of date - * @param {Null|String} date.day - day of date - * @param {Null|String} date.days - day of date - * @param {Null|String} date.date - day of date - * @param {Null|String} date.h - hour of date - * @param {Null|String} date.hour - hour of date - * @param {Null|String} date.hours - hour of date - * @param {Null|String} date.m - minute of date - * @param {Null|String} date.minute - minute of date - * @param {Null|String} date.minutes - minute of date - * @param {Null|String} date.s - second of date - * @param {Null|String} date.second - second of date - * @param {Null|String} date.seconds - second of date - * @param {Null|String} date.ms - millisecond of date - * @param {Null|String} date.millisecond - millisecond of date - * @param {Null|String} date.milliseconds - millisecond of date - * @returns {*} return maximum date - * @throws {false} if parameters not send or parameters is invalid, return false - */ - PersianDate.prototype.max = function () { - return _base__WEBPACK_IMPORTED_MODULE_0__.mathOperation.call(this, arguments, "max"); - }; - - /** - * receives year and determined that is leap year or not - * @param {?Number} year - the year to be determined is a leap or not - * @returns {Boolean} if is leap year, returns true - */ - PersianDate.prototype.isLeapYear = function (year = this.d.year) { - if (this.error) return false; - return (0,_comparison__WEBPACK_IMPORTED_MODULE_5__.isLeapYear)(this.c, year); - }; - - /** - * checks the persian date and time - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid, returns true - */ - PersianDate.prototype.isValid = function ( - year, - month, - day, - hour, - minute, - second, - millisecond - ) { - if (this.error) return false; - return ( - this.isValidDate(year, month, day) && - this.isValidTime(hour, minute, second, millisecond) - ); - }; - - /** - * checks the persian date - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @returns {Boolean} if is valid date, returns true - */ - PersianDate.prototype.isValidDate = function ( - year = this.d.year, - month = this.d.month, - day = this.d.date - ) { - if (this.error) return false; - return (0,_comparison__WEBPACK_IMPORTED_MODULE_5__.isValidDate)(this.c, year, month, day); - }; - - /** - * checks the time - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid time, returns true - */ - PersianDate.prototype.isValidTime = function ( - hour = this.d.hour, - minute = this.d.minute, - second = this.d.second, - millisecond = this.d.millisecond - ) { - if (this.error) return false; - return (0,_comparison__WEBPACK_IMPORTED_MODULE_5__.isValidTime)(hour, minute, second, millisecond); - }; - - /** - * checks this date is the same to another date - * @since 1.1.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isSame = function () { - if (this.error) return false; - return _comparison__WEBPACK_IMPORTED_MODULE_5__.isSame.call(this, ...arguments); - }; - - /** - * checks this date is before the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isBefore = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, "<"); - }; - - /** - * checks this date is after the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isAfter = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, ">"); - }; - - /** - * checks this date is same or before the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isSameOrBefore = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, "<="); - }; - - /** - * checks this date is same or after the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isSameOrAfter = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, ">="); - }; - - /** - * checks this date is between the another dates - * @since 1.3.0 - * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date - * @param {String|Number} from.y - year of date - * @param {Null|String|Number} from.year - year of date - * @param {Null|String|Number} from.years - year of date - * @param {Null|String|Number} from.M - month of date - * @param {Null|String|Number} from.month - month of date - * @param {Null|String|Number} from.months - month of date - * @param {Null|String|Number} from.d - day of date - * @param {Null|String|Number} from.day - day of date - * @param {Null|String|Number} from.days - day of date - * @param {Null|String|Number} from.date - day of date - * @param {Null|String|Number} from.h - hour of date - * @param {Null|String|Number} from.hour - hour of date - * @param {Null|String|Number} from.hours - hour of date - * @param {Null|String|Number} from.m - minute of date - * @param {Null|String|Number} from.minute - minute of date - * @param {Null|String|Number} from.minutes - minute of date - * @param {Null|String|Number} from.s - second of date - * @param {Null|String|Number} from.second - second of date - * @param {Null|String|Number} from.seconds - second of date - * @param {Null|String|Number} from.ms - millisecond of date - * @param {Null|String|Number} from.millisecond - millisecond of date - * @param {Null|String|Number} from.milliseconds - millisecond of date - * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date - * @param {String|Number} to.y - year of date - * @param {Null|String|Number} to.year - year of date - * @param {Null|String|Number} to.years - year of date - * @param {Null|String|Number} to.M - month of date - * @param {Null|String|Number} to.month - month of date - * @param {Null|String|Number} to.months - month of date - * @param {Null|String|Number} to.d - day of date - * @param {Null|String|Number} to.day - day of date - * @param {Null|String|Number} to.days - day of date - * @param {Null|String|Number} to.date - day of date - * @param {Null|String|Number} to.h - hour of date - * @param {Null|String|Number} to.hour - hour of date - * @param {Null|String|Number} to.hours - hour of date - * @param {Null|String|Number} to.m - minute of date - * @param {Null|String|Number} to.minute - minute of date - * @param {Null|String|Number} to.minutes - minute of date - * @param {Null|String|Number} to.s - second of date - * @param {Null|String|Number} to.second - second of date - * @param {Null|String|Number} to.seconds - second of date - * @param {Null|String|Number} to.ms - millisecond of date - * @param {Null|String|Number} to.millisecond - millisecond of date - * @param {Null|String|Number} to.milliseconds - millisecond of date - * @param {String} method - determines that consider the dates themselves - * @returns {‌Boolean} if date valid, return true or false - */ - PersianDate.prototype.isBetween = function (from, to, method = "()") { - if (this.error) return false; - return _comparison__WEBPACK_IMPORTED_MODULE_5__.isBetween.call(this, from, to, method); - }; - - /** - * checks date is a native js Date object - * @since 1.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a native js Date, return true - */ - PersianDate.prototype.isDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isDate; - - /** - * checks date is a PersianDate object - * @since 1.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a PersianDate, return true - */ - PersianDate.prototype.isPersianDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isPersianDate; - - if (calendarVal) this.calendar(calendarVal); - if (dateVal) { - if (calendarVal && calendarVal[0] == "j") this.fromJalali(dateVal); - else this.fromGregorian(dateVal); - } else this.now(); +'use strict'; + +var CALENDAR = { + jalali: { + months: { + 1: "فروردین", + 2: "اردیبهشت", + 3: "خرداد", + 4: "تیر", + 5: "مرداد", + 6: "شهریور", + 7: "مهر", + 8: "آبان", + 9: "آذر", + 10: "دی", + 11: "بهمن", + 12: "اسفند" + }, + days: { + label: { + 6: "شنبه", + 0: "یکشنبه", + 1: "دوشنبه", + 2: "سه‌شنبه", + 3: "چهارشنبه", + 4: "پنجشنبه", + 5: "جمعه" + }, + weekNumber: { + // days in jalali calendar start from saturday or 6 + 6: 0, + //شنبه + 0: 1, + //یکشنبه + 1: 2, + //دوشنبه + 2: 3, + //سه‌شنبه + 3: 4, + //چهارشنبه + 4: 5, + //پنجشنبه + 5: 6 //جمعه + + } + }, + ordinalNumbers: function ordinalNumbers(number, mode) { + var numbers = { + 1: "یک", + 2: "دو", + 3: "سو", + 4: "چهار", + 5: "پنج", + 6: "شش", + 7: "هفت", + 8: "هشت", + 9: "نه", + 10: "ده", + 11: "یازده", + 12: "دوازده", + 13: "سیزده", + 14: "چهارده", + 15: "پانزده", + 16: "شانزده", + 17: "هفده", + 18: "هجده", + 19: "نوزده", + 20: "بیست", + 30: "سی‌", + 40: "چهل", + 50: "پنجاه", + 60: "شصت", + 70: "هفتاد", + 80: "هشتاد", + 90: "نود", + 100: "صد", + 200: "دویست", + 300: "سیصد" + }; + var ordinalNumber = ""; + if (number == 1) ordinalNumber = "اول";else if (numbers[number]) ordinalNumber = numbers[number] + (number == 30 ? "ام" : "م");else { + var remainder = number % 100; + if (numbers[remainder]) ordinalNumber = numbers[remainder] + "م";else { + remainder = number % 10; + if (remainder) ordinalNumber = numbers[remainder] + "م"; + } + remainder = (number - remainder) % 100; + if (remainder) ordinalNumber = numbers[remainder] + (ordinalNumber ? " و " + ordinalNumber : remainder == 30 ? "ام " : "م"); + remainder = Math.floor(number / 100) * 100; + if (remainder) ordinalNumber = numbers[remainder] + (ordinalNumber ? " و " + ordinalNumber : "م"); + } + if (mode == 2) ordinalNumber += "ین"; + return ordinalNumber; + } + }, + gregorian: { + months: { + 1: "January", + 2: "February", + 3: "March", + 4: "April", + 5: "May", + 6: "June", + 7: "July", + 8: "August", + 9: "September", + 10: "October", + 11: "November", + 12: "December" + }, + days: { + label: { + 0: "Sunday", + 1: "Monday", + 2: "Tuesday", + 3: "Wednesday", + 4: "Thursday", + 5: "Friday", + 6: "Saturday" + }, + weekNumber: { + // days in gregorian calendar start from sunday or 0 + 0: 0, + // Sunday + 1: 1, + // Monday + 2: 2, + // Tuesday + 3: 3, + // Wednesday + 4: 4, + // Thursday + 5: 5, + // Friday + 6: 6 // Saturday + + } + }, + ordinalNumbers: function ordinalNumbers(number) { + if (number == 1 || number % 10 == 1 && number != 11) return number + "st";else if (number == 2 || number % 10 == 2 && number != 12) return number + "nd";else if (number == 3 || number % 10 == 3 && number != 13) return number + "rd";else return number + "th"; + } + } }; +var REGEX = { + format: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g, + isNumeric: /^\d+$/, + // this regex, checks input to see is a number or not + separators: "\\/| |-|\\.|,|:", + // find ['/',' ','-','.',',',':'] and split string to array by this symbols + betweenBacktick: /`(.*?)`/g // find the texts between the backticks ==> `Alireza` -////////////////////--------- statics ---------///////////////////// - -/** - * receives year and determined that is leap year or not - * @static - * @since 2.3.0 - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {Number} year - the year to be determined is a leap or not - * @returns {Boolean} if is leap year, returns true - */ -PersianDate.isLeapYear = _comparison__WEBPACK_IMPORTED_MODULE_5__.isLeapYear; - -/** - * checks date is a native js Date object - * @static - * @since 2.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a native js Date, return true - */ -PersianDate.isDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isDate; - -/** - * checks date is a PersianDate object - * @static - * @since 2.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a PersianDate, return true - */ -PersianDate.isPersianDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isPersianDate; - -/** - * checks the date and time - * @static - * @since 2.4.0 - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid, returns true - */ -PersianDate.isValid = _comparison__WEBPACK_IMPORTED_MODULE_5__.isValid; - -/** - * checks the date - * @static - * @since 2.4.0 - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @returns {Boolean} if is valid date, returns true - */ -PersianDate.isValidDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isValidDate; - -/** - * checks the time - * @static - * @since 2.4.0 - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid time, returns true - */ -PersianDate.isValidTime = _comparison__WEBPACK_IMPORTED_MODULE_5__.isValidTime; - -/** - * returns number of days in month - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {?Number} year - year of date that returns number of days in month - * @param {?Number} month - month of date that returns number of days in month - * @returns {Number} number of days in month - * @throws {String} if date invalid return error message - */ -PersianDate.getDaysInMonth = _set_get__WEBPACK_IMPORTED_MODULE_2__.getDaysInMonth; - -//TODO: add localization - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PersianDate); - -////////////////////- Email: Alibeikialireza@gmail.com -//////////////////// -////////////////////--------- Have A Good Day ---------///////////////////// - - -/***/ }), - -/***/ "./src/add-sub/addDay.js": -/*!*******************************!*\ - !*** ./src/add-sub/addDay.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addDay": () => (/* binding */ addDay) -/* harmony export */ }); -function addDay(day) { - if (day < 0) - // if the number was negative, send to subDay method - return this.subDay(Math.abs(day)); - day = +day; //plus sign before a variable, convert variable to int - - const dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month - if (dayToStartNextMonth > day) { - this.d.date += day; - } else { - this.addMonth(1, false); - this.d.date = 1; - day -= dayToStartNextMonth; - let daysInMonth = this.getDaysInMonth(); - while (day >= daysInMonth) { - day -= daysInMonth; - this.addMonth(1, false); - daysInMonth = this.getDaysInMonth(); - } - if (day != 0) { - this.d.date += day; - } - } - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addHour.js": -/*!********************************!*\ - !*** ./src/add-sub/addHour.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addHour": () => (/* binding */ addHour) -/* harmony export */ }); -function addHour(hour) { - if (hour < 0) - // if the number was negative, send to subHour method - return this.subHour(Math.abs(hour)); - hour = +hour; //plus sign before a variable, convert variable to int - while (hour >= 24) { - hour -= 24; - this.addDay(1, false); - } - const hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day - if (hour >= hourToNextDay) { - this.addDay(1, false); - hour -= hourToNextDay; - this.d.hour = hour; - } else this.d.hour += hour; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addMillisecond.js": -/*!***************************************!*\ - !*** ./src/add-sub/addMillisecond.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addMillisecond": () => (/* binding */ addMillisecond) -/* harmony export */ }); -function addMillisecond(millisecond) { - if (millisecond < 0) - // if the number was negative, send to subMillisecond method - return this.subMillisecond(Math.abs(millisecond)); - millisecond = +millisecond; //plus sign before a variable, convert variable to int - while (millisecond >= 1000) { - this.addSecond(1, false); - millisecond -= 1000; - } - const millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second - if (millisecond >= millisecondToNextSecond) { - this.addSecond(1, false); - millisecond -= millisecondToNextSecond; - this.d.millisecond = millisecond; - } else this.d.millisecond += millisecond; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addMinute.js": -/*!**********************************!*\ - !*** ./src/add-sub/addMinute.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addMinute": () => (/* binding */ addMinute) -/* harmony export */ }); -function addMinute(minute) { - if (minute < 0) - // if the number was negative, send to subMinute method - return this.subMinute(Math.abs(minute)); - minute = +minute; //plus sign before a variable, convert variable to int - while (minute >= 60) { - this.addHour(1, false); - minute -= 60; - } - const minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour - if (minute >= minuteToNextHour) { - this.addHour(1, false); - minute -= minuteToNextHour; - this.d.minute = minute; - } else this.d.minute += minute; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addMonth.js": -/*!*********************************!*\ - !*** ./src/add-sub/addMonth.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addMonth": () => (/* binding */ addMonth) -/* harmony export */ }); -function addMonth(month, checkDate) { - if (month < 0) - // if the number was negative, send to subMonth method - return this.subMonth(Math.abs(month)); - month = +month; // plus sign before a variable, convert variable to int - - const monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year - if (monthToStartNewYear > month) { - this.d.month += month; - } else { - this.addYear(1, false); - this.d.month = 1; - month -= monthToStartNewYear; - while (month >= 12) { - month -= 12; - this.addYear(1, false); - } - if (month != 0) { - this.d.month += month; - } - } - - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addQuarter.js": -/*!***********************************!*\ - !*** ./src/add-sub/addQuarter.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addQuarter": () => (/* binding */ addQuarter) -/* harmony export */ }); -function addQuarter(quarter, checkDate) { - // if the number was negative, send to subQuarter method - if (quarter < 0) return this.subQuarter(Math.abs(quarter)); - return this.addMonth(+quarter * 3, checkDate); -} - - -/***/ }), - -/***/ "./src/add-sub/addSecond.js": -/*!**********************************!*\ - !*** ./src/add-sub/addSecond.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addSecond": () => (/* binding */ addSecond) -/* harmony export */ }); -function addSecond(second) { - if (second < 0) - // if the number was negative, send to subSecond method - return this.subSecond(Math.abs(second)); - second = +second; //plus sign before a variable, convert variable to int - while (second >= 60) { - this.addMinute(1, false); - second -= 60; - } - const secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute - if (second >= secondToNextMinute) { - this.addMinute(1, false); - second -= secondToNextMinute; - this.d.second = second; - } else this.d.second += second; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addWeek.js": -/*!********************************!*\ - !*** ./src/add-sub/addWeek.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addWeek": () => (/* binding */ addWeek) -/* harmony export */ }); -function addWeek(week, checkDate) { - // if the number was negative, send to subWeek method - if (week < 0) return this.subWeek(Math.abs(week)); - return this.addDay(+week * 7, checkDate); -} - - -/***/ }), - -/***/ "./src/add-sub/addYear.js": -/*!********************************!*\ - !*** ./src/add-sub/addYear.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addYear": () => (/* binding */ addYear) -/* harmony export */ }); -function addYear(year, checkDate) { - // if the number was negative, send to subYear method - if (year < 0) return this.subYear(Math.abs(year)); - this.d.year += +year; //plus sign before a variable, convert variable to int - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/index.js": -/*!******************************!*\ - !*** ./src/add-sub/index.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addYear": () => (/* reexport safe */ _addYear__WEBPACK_IMPORTED_MODULE_0__.addYear), -/* harmony export */ "addQuarter": () => (/* reexport safe */ _addQuarter__WEBPACK_IMPORTED_MODULE_1__.addQuarter), -/* harmony export */ "addMonth": () => (/* reexport safe */ _addMonth__WEBPACK_IMPORTED_MODULE_2__.addMonth), -/* harmony export */ "addWeek": () => (/* reexport safe */ _addWeek__WEBPACK_IMPORTED_MODULE_3__.addWeek), -/* harmony export */ "addDay": () => (/* reexport safe */ _addDay__WEBPACK_IMPORTED_MODULE_4__.addDay), -/* harmony export */ "addHour": () => (/* reexport safe */ _addHour__WEBPACK_IMPORTED_MODULE_5__.addHour), -/* harmony export */ "addMinute": () => (/* reexport safe */ _addMinute__WEBPACK_IMPORTED_MODULE_6__.addMinute), -/* harmony export */ "addSecond": () => (/* reexport safe */ _addSecond__WEBPACK_IMPORTED_MODULE_7__.addSecond), -/* harmony export */ "addMillisecond": () => (/* reexport safe */ _addMillisecond__WEBPACK_IMPORTED_MODULE_8__.addMillisecond), -/* harmony export */ "subYear": () => (/* reexport safe */ _subYear__WEBPACK_IMPORTED_MODULE_9__.subYear), -/* harmony export */ "subQuarter": () => (/* reexport safe */ _subQuarter__WEBPACK_IMPORTED_MODULE_10__.subQuarter), -/* harmony export */ "subMonth": () => (/* reexport safe */ _subMonth__WEBPACK_IMPORTED_MODULE_11__.subMonth), -/* harmony export */ "subWeek": () => (/* reexport safe */ _subWeek__WEBPACK_IMPORTED_MODULE_12__.subWeek), -/* harmony export */ "subDay": () => (/* reexport safe */ _subDay__WEBPACK_IMPORTED_MODULE_13__.subDay), -/* harmony export */ "subHour": () => (/* reexport safe */ _subHour__WEBPACK_IMPORTED_MODULE_14__.subHour), -/* harmony export */ "subMinute": () => (/* reexport safe */ _subMinute__WEBPACK_IMPORTED_MODULE_15__.subMinute), -/* harmony export */ "subSecond": () => (/* reexport safe */ _subSecond__WEBPACK_IMPORTED_MODULE_16__.subSecond), -/* harmony export */ "subMillisecond": () => (/* reexport safe */ _subMillisecond__WEBPACK_IMPORTED_MODULE_17__.subMillisecond) -/* harmony export */ }); -/* harmony import */ var _addYear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addYear */ "./src/add-sub/addYear.js"); -/* harmony import */ var _addQuarter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addQuarter */ "./src/add-sub/addQuarter.js"); -/* harmony import */ var _addMonth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addMonth */ "./src/add-sub/addMonth.js"); -/* harmony import */ var _addWeek__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./addWeek */ "./src/add-sub/addWeek.js"); -/* harmony import */ var _addDay__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addDay */ "./src/add-sub/addDay.js"); -/* harmony import */ var _addHour__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./addHour */ "./src/add-sub/addHour.js"); -/* harmony import */ var _addMinute__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./addMinute */ "./src/add-sub/addMinute.js"); -/* harmony import */ var _addSecond__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./addSecond */ "./src/add-sub/addSecond.js"); -/* harmony import */ var _addMillisecond__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./addMillisecond */ "./src/add-sub/addMillisecond.js"); -/* harmony import */ var _subYear__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./subYear */ "./src/add-sub/subYear.js"); -/* harmony import */ var _subQuarter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./subQuarter */ "./src/add-sub/subQuarter.js"); -/* harmony import */ var _subMonth__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./subMonth */ "./src/add-sub/subMonth.js"); -/* harmony import */ var _subWeek__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./subWeek */ "./src/add-sub/subWeek.js"); -/* harmony import */ var _subDay__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./subDay */ "./src/add-sub/subDay.js"); -/* harmony import */ var _subHour__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./subHour */ "./src/add-sub/subHour.js"); -/* harmony import */ var _subMinute__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./subMinute */ "./src/add-sub/subMinute.js"); -/* harmony import */ var _subSecond__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./subSecond */ "./src/add-sub/subSecond.js"); -/* harmony import */ var _subMillisecond__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./subMillisecond */ "./src/add-sub/subMillisecond.js"); - - - - - - - - - - - - - - - - - - - - - -/***/ }), - -/***/ "./src/add-sub/subDay.js": -/*!*******************************!*\ - !*** ./src/add-sub/subDay.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subDay": () => (/* binding */ subDay) -/* harmony export */ }); -function subDay(day) { - day = Math.abs(day); - let pastDays = this.d.date; // pastDays -> Number of days that is past - if (pastDays > day) { - this.d.date -= day; - } else { - this.subMonth(1, false); - let daysInMonth = this.getDaysInMonth(); - this.d.date = daysInMonth; - day -= pastDays; - while (day >= daysInMonth) { - day -= daysInMonth; - this.subMonth(1, false); - daysInMonth = this.getDaysInMonth(); - } - this.d.date = daysInMonth - day; - } - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subHour.js": -/*!********************************!*\ - !*** ./src/add-sub/subHour.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subHour": () => (/* binding */ subHour) -/* harmony export */ }); -function subHour(hour) { - hour = Math.abs(hour); - while (hour >= 24) { - hour -= 24; - this.subDay(1, false); - } - const pastHours = this.d.hour; // pastHours -> Number of hours that is past - if (hour > pastHours) { - this.subDay(1, false); - hour -= pastHours; - this.d.hour = 24 - hour; - } else this.d.hour -= hour; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subMillisecond.js": -/*!***************************************!*\ - !*** ./src/add-sub/subMillisecond.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subMillisecond": () => (/* binding */ subMillisecond) -/* harmony export */ }); -function subMillisecond(millisecond) { - millisecond = Math.abs(millisecond); - while (millisecond >= 1000) { - millisecond -= 1000; - this.subSecond(1, false); - } - const pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past - if (millisecond > pastMilliseconds) { - this.subSecond(1, false); - millisecond -= pastMilliseconds; - this.d.millisecond = 1000 - millisecond; - } else this.d.millisecond -= millisecond; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subMinute.js": -/*!**********************************!*\ - !*** ./src/add-sub/subMinute.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subMinute": () => (/* binding */ subMinute) -/* harmony export */ }); -function subMinute(minute) { - minute = Math.abs(minute); - while (minute >= 60) { - minute -= 60; - this.subHour(1, false); - } - const pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past - if (minute > pastMinute) { - this.subHour(1, false); - minute -= pastMinute; - this.d.minute = 60 - minute; - } else this.d.minute -= minute; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subMonth.js": -/*!*********************************!*\ - !*** ./src/add-sub/subMonth.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subMonth": () => (/* binding */ subMonth) -/* harmony export */ }); -function subMonth(month, checkDate) { - month = Math.abs(month); //plus sign before a variable, convert variable to int - const pastMonth = this.d.month; //pastMonth -> Number of month that is past - if (pastMonth > month) { - this.d.month -= month; - } else { - this.subYear(1, false); - this.d.month = 12; - month -= pastMonth; - while (month >= 12) { - this.subYear(1, false); - month -= 12; - } - if (month != 0) { - this.d.month -= month; - } - } - - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subQuarter.js": -/*!***********************************!*\ - !*** ./src/add-sub/subQuarter.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subQuarter": () => (/* binding */ subQuarter) -/* harmony export */ }); -function subQuarter(quarter, checkDate) { - quarter = Math.abs(quarter); - return this.subMonth(quarter * 3, checkDate); -} - - -/***/ }), - -/***/ "./src/add-sub/subSecond.js": -/*!**********************************!*\ - !*** ./src/add-sub/subSecond.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subSecond": () => (/* binding */ subSecond) -/* harmony export */ }); -function subSecond(second) { - second = Math.abs(second); - while (second >= 60) { - second -= 60; - this.subMinute(1, false); - } - const pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past - if (second > pastSeconds) { - this.subMinute(1, false); - second -= pastSeconds; - this.d.second = 60 - second; - } else this.d.second -= second; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subWeek.js": -/*!********************************!*\ - !*** ./src/add-sub/subWeek.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subWeek": () => (/* binding */ subWeek) -/* harmony export */ }); -function subWeek(week, checkDate) { - week = Math.abs(week); - return this.subDay(week * 7, checkDate); -} - - -/***/ }), - -/***/ "./src/add-sub/subYear.js": -/*!********************************!*\ - !*** ./src/add-sub/subYear.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subYear": () => (/* binding */ subYear) -/* harmony export */ }); -function subYear(year, checkDate) { - this.d.year -= Math.abs(year); - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/base/addPrefix.js": -/*!*******************************!*\ - !*** ./src/base/addPrefix.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addPrefix": () => (/* binding */ addPrefix) -/* harmony export */ }); -/** - * add a prefix to the text in the number of characters that the text has less - * @param {String|Number} text a text need prefix - * @param {Number} length length of text - * @param {String} [prefix=0] - string for add before of text - * @returns {String} text with or wihtout prefix - */ -const addPrefix = (text, length, prefix = "0") => { - return prefix.repeat(length - String(text).length) + text; }; - -/***/ }), - -/***/ "./src/base/compare.js": -/*!*****************************!*\ - !*** ./src/base/compare.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "compare": () => (/* binding */ compare) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -/** - * compare the dates - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object} date - the date - * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare - * @returns {‌Boolean} if date valid, return true of false - */ -const compare = function (date, operator) { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...date); - - if (this.isValid(...date)) - return eval( - "this.timestamp()" + operator + "this.clone().parse(...date).timestamp()" - ); - return false; +var TIMETYPE = function TIMETYPE(hour, format) { + if (hour >= 0 && hour < 12) { + if (format == "a") return "am";else if (format == "aa") return "A.M.";else if (format == "A") return "AM";else if (format == "ja") return "ق ظ";else if (format == "jaa") return "ق.ظ";else if (format == "jA") return "قبل از ظهر"; + return "ق.ظ"; + } else if (hour >= 12 && hour < 24) { + if (format == "a") return "pm";else if (format == "aa") return "P.M.";else if (format == "A") return "PM";else if (format == "ja") return "ب ظ";else if (format == "jaa") return "ب.ظ";else if (format == "jA") return "بعد از ظهر"; + return "ب.ظ"; + } }; - -/***/ }), - -/***/ "./src/base/error.js": -/*!***************************!*\ - !*** ./src/base/error.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "error": () => (/* binding */ error) -/* harmony export */ }); -/** - * show error - * @since 3.0.0 - * @param {String} msg - the message for error - */ -const error = (msg) => { - console.error(msg); +var isDate = function isDate(date) { + return date instanceof Date; }; - -/***/ }), - -/***/ "./src/base/getDayLabel.js": -/*!*********************************!*\ - !*** ./src/base/getDayLabel.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDayLabel": () => (/* binding */ getDayLabel) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./error */ "./src/base/error.js"); -/* harmony import */ var _comparison_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../comparison/isDate */ "./src/comparison/isDate.js"); - - - - -/** - * get label of day - * @param {Date} date - the date that received day - * @param {'jalali'|'gregorian'} calendar - the calendar - * @returns {String} returns day label - * @example Saturday | شنبه - */ -const getDayLabel = function (date = new Date(), calendar = "jalali") { - if ((0,_comparison_isDate__WEBPACK_IMPORTED_MODULE_2__.isDate)(date)) return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR[calendar]["days"]["label"][date.getDay()]; - return (0,_error__WEBPACK_IMPORTED_MODULE_1__.error)("the first param must be instance of Date."); +var jalali$4 = function jalali(year) { + var array = year > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30]; + var remainder = year % 33; + return array.includes(remainder); }; - -/***/ }), - -/***/ "./src/base/getDayOfWeek.js": -/*!**********************************!*\ - !*** ./src/base/getDayOfWeek.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDayOfWeek": () => (/* binding */ getDayOfWeek) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./error */ "./src/base/error.js"); -/* harmony import */ var _comparison_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../comparison/isDate */ "./src/comparison/isDate.js"); - - - - -/** - * get the day of the week - * @param {Date} date - the date that received day of week - * @param {'jalali', 'gregorian'} calendar - the calendar - * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0 - * @returns {Number|String} the number of the day of week - */ -const getDayOfWeek = ( - date = new Date(), - calendar = "jalali", - mode = "standard" -) => { - if ((0,_comparison_isDate__WEBPACK_IMPORTED_MODULE_2__.isDate)(date)) { - // if the year was an instance of Date - return ( - _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR[calendar]["days"]["weekNumber"][date.getDay()] + - (mode != "standard" ? 0 : 1) - ); - } - return (0,_error__WEBPACK_IMPORTED_MODULE_1__.error)("the first param must be instance of Date."); +var gregorian$4 = function gregorian(year) { + return year % 4 == 0 && year % 100 != 0 || year % 400 == 0; }; +var isLeapYear = function isLeapYear(calendar, year) { + // calendar[0] ==> first letter of calendar ('j' | 'g' | ...) + switch (calendar[0]) { + case "j": + return jalali$4(year); -/***/ }), - -/***/ "./src/base/getDayOfYear.js": -/*!**********************************!*\ - !*** ./src/base/getDayOfYear.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDayOfYear": () => (/* binding */ getDayOfYear) -/* harmony export */ }); -/* harmony import */ var _set_get__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../set-get */ "./src/set-get/index.js"); - - -/** - * get the day of the year - * @param {Null|String|Number} year - the year of date - * @param {Null|Number|String} month - the month of date that gives the day of the year - * @param {Null|Number|String} day - the day of date that gives the day of the year - * @param {Null|Number|String} calendar - the calendar - * @returns {Number} the day of the year - */ -const getDayOfYear = (year, month, day, calendar) => { - //plus sign before a variable, convert variable to int - month = +month; - day = +day; - while (--month != 0) { - day += (0,_set_get__WEBPACK_IMPORTED_MODULE_0__.getDaysInMonth)(calendar, year, month); - } - return day; + default: + return gregorian$4(year); + } }; - -/***/ }), - -/***/ "./src/base/getWeekOfYear.js": -/*!***********************************!*\ - !*** ./src/base/getWeekOfYear.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getWeekOfYear": () => (/* binding */ getWeekOfYear) -/* harmony export */ }); -const dayOfYearFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jd"; - default: - return "d"; - } +var isPersianDate = function isPersianDate(date) { + return date instanceof PersianDate; }; -/** - * get the week of the year - * @param {Null|Number|String} year - the year of date that gives the week of the year - * @param {Null|Number|String} month - the month of date that gives the week of the year - * @param {Null|Number|String} day - the day of date that gives the week of the year - * @param {String} calendar - the calendar - * @returns {Number} the week of the year - */ -const getWeekOfYear = function (year, month, day, calendar) { - const firstOfYear = this.clone().calendar(calendar).parse(year); - const firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar)); - const date = firstOfYear.clone().parse(year, month, day); - if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay); - - const weekNumber = Math.ceil(date.diff(firstOfYear, "date", true) / 7); - - const weeksInYear = date.clone().getWeeksInYear(); - return weekNumber > weeksInYear ? weeksInYear : weekNumber; +var isValid = function isValid(calendar, year, month, day, hour, minute, second, millisecond) { + return isValidDate(calendar, year, month, day) && isValidTime(hour, minute, second, millisecond); }; - -/***/ }), - -/***/ "./src/base/gtj.js": -/*!*************************!*\ - !*** ./src/base/gtj.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "gtj": () => (/* binding */ gtj) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); - - - -/** - * Gregorian to Jalali - * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year - * @param {Null|Number|String} [month=1] - Gregorian month - * @param {Null|Number|String} [day=1] - Gregorian day - * @param {Null|Number|String} [hour=0] - Gregorian hour - * @param {Null|Number|String} [minute=0] - Gregorian minute - * @param {Null|Number|String} [second=0] - Gregorian second - * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond - * @returns {Array} Jalali date - */ -const gtj = (year, month, day, hour, minute, second, millisecond) => { - let date; - if (!year) date = new Date(); - else if ((0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isDate)(year)) - // if the year was an instance of Date - date = year; - else - date = new Date( - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(year) ? year : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(month) ? month : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(day) ? day : 1, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(hour) ? hour : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(minute) ? minute : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(second) ? second : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(millisecond) ? millisecond : 0 - ); - day = date.getDate(); - month = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one - year = date.getFullYear(); - hour = date.getHours(); - minute = date.getMinutes(); - second = date.getSeconds(); - millisecond = date.getMilliseconds(); - let jYear, jMonth, jDay; - const pastDaysInMonth = [ - 0, - 31, - 59, - 90, - 120, - 151, - 181, - 212, - 243, - 273, - 304, - 334, - ]; // Past days from the start of the year in each month - if (year > 1600) { - jYear = 979; - year -= 1600; - } else { - jYear = 0; - year -= 621; - } - const newYear = month > 2 ? year + 1 : year; - let days = - 365 * year + - parseInt((newYear + 3) / 4) - - parseInt((newYear + 99) / 100) + - parseInt((newYear + 399) / 400) - - 80 + - day + - pastDaysInMonth[month - 1]; - jYear += 33 * parseInt(days / 12053); - days %= 12053; - jYear += 4 * parseInt(days / 1461); - days %= 1461; - if (days > 365) { - jYear += parseInt((days - 1) / 365); - days = (days - 1) % 365; - } - jMonth = - days < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30); - jDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30); - return [jYear, jMonth, jDay, hour, minute, second, millisecond]; +var jalali$3 = function jalali(year, month, day) { + if (month >= 7 && month <= 11 && day == 31) return false; + if (month == 12 && day == 31) return false; + if (month == 12 && day == 30 && !isLeapYear("j", year)) return false; + return true; }; +var gregorian$3 = function gregorian(year, month, day) { + if ([2, 4, 6, 9, 11].includes(month) && day == 31) return false; + if (month == 2 && (day == 30 || day == 29 && !isLeapYear("g", year))) return false; + return true; +}; -/***/ }), - -/***/ "./src/base/index.js": -/*!***************************!*\ - !*** ./src/base/index.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "gtj": () => (/* reexport safe */ _gtj__WEBPACK_IMPORTED_MODULE_0__.gtj), -/* harmony export */ "jtg": () => (/* reexport safe */ _jtg__WEBPACK_IMPORTED_MODULE_1__.jtg), -/* harmony export */ "warn": () => (/* reexport safe */ _warn__WEBPACK_IMPORTED_MODULE_2__.warn), -/* harmony export */ "error": () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_3__.error), -/* harmony export */ "invalid": () => (/* reexport safe */ _invalid__WEBPACK_IMPORTED_MODULE_4__.invalid), -/* harmony export */ "typesToArray": () => (/* reexport safe */ _typesToArray__WEBPACK_IMPORTED_MODULE_5__.typesToArray), -/* harmony export */ "ordinalNumber": () => (/* reexport safe */ _ordinalNumber__WEBPACK_IMPORTED_MODULE_6__.ordinalNumber), -/* harmony export */ "addPrefix": () => (/* reexport safe */ _addPrefix__WEBPACK_IMPORTED_MODULE_7__.addPrefix), -/* harmony export */ "setJalaliDate": () => (/* reexport safe */ _setJalaliDate__WEBPACK_IMPORTED_MODULE_8__.setJalaliDate), -/* harmony export */ "setGregorianDate": () => (/* reexport safe */ _setGregorianDate__WEBPACK_IMPORTED_MODULE_9__.setGregorianDate), -/* harmony export */ "getDayLabel": () => (/* reexport safe */ _getDayLabel__WEBPACK_IMPORTED_MODULE_10__.getDayLabel), -/* harmony export */ "getDayOfWeek": () => (/* reexport safe */ _getDayOfWeek__WEBPACK_IMPORTED_MODULE_11__.getDayOfWeek), -/* harmony export */ "getDayOfYear": () => (/* reexport safe */ _getDayOfYear__WEBPACK_IMPORTED_MODULE_12__.getDayOfYear), -/* harmony export */ "getWeekOfYear": () => (/* reexport safe */ _getWeekOfYear__WEBPACK_IMPORTED_MODULE_13__.getWeekOfYear), -/* harmony export */ "compare": () => (/* reexport safe */ _compare__WEBPACK_IMPORTED_MODULE_14__.compare), -/* harmony export */ "mathOperation": () => (/* reexport safe */ _mathOperation__WEBPACK_IMPORTED_MODULE_15__.mathOperation), -/* harmony export */ "isTimestamp": () => (/* reexport safe */ _isTimestamp__WEBPACK_IMPORTED_MODULE_16__.isTimestamp) -/* harmony export */ }); -/* harmony import */ var _gtj__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gtj */ "./src/base/gtj.js"); -/* harmony import */ var _jtg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jtg */ "./src/base/jtg.js"); -/* harmony import */ var _warn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./warn */ "./src/base/warn.js"); -/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./error */ "./src/base/error.js"); -/* harmony import */ var _invalid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./invalid */ "./src/base/invalid.js"); -/* harmony import */ var _typesToArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typesToArray */ "./src/base/typesToArray.js"); -/* harmony import */ var _ordinalNumber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ordinalNumber */ "./src/base/ordinalNumber.js"); -/* harmony import */ var _addPrefix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./addPrefix */ "./src/base/addPrefix.js"); -/* harmony import */ var _setJalaliDate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./setJalaliDate */ "./src/base/setJalaliDate.js"); -/* harmony import */ var _setGregorianDate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./setGregorianDate */ "./src/base/setGregorianDate.js"); -/* harmony import */ var _getDayLabel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getDayLabel */ "./src/base/getDayLabel.js"); -/* harmony import */ var _getDayOfWeek__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./getDayOfWeek */ "./src/base/getDayOfWeek.js"); -/* harmony import */ var _getDayOfYear__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getDayOfYear */ "./src/base/getDayOfYear.js"); -/* harmony import */ var _getWeekOfYear__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./getWeekOfYear */ "./src/base/getWeekOfYear.js"); -/* harmony import */ var _compare__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./compare */ "./src/base/compare.js"); -/* harmony import */ var _mathOperation__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./mathOperation */ "./src/base/mathOperation.js"); -/* harmony import */ var _isTimestamp__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./isTimestamp */ "./src/base/isTimestamp.js"); - - - - - - - +var isValidDate = function isValidDate(calendar, year, month, day) { + if ([year, month, day].some(function (e) { + return String(e).search(/null|NaN/) != -1; + })) return false; + if (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false; + switch (calendar[0]) { + case "j": + return jalali$3(year, month, day); + default: + return gregorian$3(year, month, day); + } +}; +var isValidTime = function isValidTime(hour, minute, second, millisecond) { + if ([hour, minute, second, millisecond].some(function (e) { + return String(e).search(/null|NaN/) != -1; + })) return false; + if (hour < 0 || hour > 23) return false; + if (minute < 0 || minute > 59) return false; + if (second < 0 || second > 59) return false; + if (millisecond < 0 || millisecond > 999) return false; + return true; +}; +function isSame() { + var date = typesToArray.apply(void 0, [this.c].concat(Array.prototype.slice.call(arguments))); + date = this.toArray().map(function (value, i) { + return REGEX["isNumeric"].test(date[i]) ? date[i] : value; + }); + return compare.call(this, date, "=="); +} +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); +} +function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } +} +function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); +} +function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); +} +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); +} +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); +} -/***/ }), +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} -/***/ "./src/base/invalid.js": -/*!*****************************!*\ - !*** ./src/base/invalid.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); +} -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "invalid": () => (/* binding */ invalid) -/* harmony export */ }); -/** - * make error and delete this.d - * @param {String} errorText - Error Text - * @returns {PersianDate} make error and return class - */ -const invalid = function (errorText) { - delete this.d; - this.error = errorText; - return this; -}; +function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} -/***/ }), +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; -/***/ "./src/base/isTimestamp.js": -/*!*********************************!*\ - !*** ./src/base/isTimestamp.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isTimestamp": () => (/* binding */ isTimestamp) -/* harmony export */ }); -/** - * check the input is timestamp - * @since 2.0.0 - * @param {Number|String} timestamp - input that must be checked - * @returns {Boolean} if input was timestamp, return true - */ -const isTimestamp = (timestamp) => { - return !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0; -}; + return arr2; +} + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +function _createForOfIteratorHelper(o, allowArrayLike) { + var it; + + if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function () {}; + + return { + s: F, + n: function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function (e) { + throw e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function () { + it = o[Symbol.iterator](); + }, + n: function () { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function (e) { + didErr = true; + err = e; + }, + f: function () { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } + }; +} -/***/ }), +function isBetween(from, to, method) { + var date = this.toArray(); + from = typesToArray(this.c, from); + if (!from[2]) date[2] = 1; + from = date.map(function (value, i) { + return REGEX["isNumeric"].test(from[i]) ? from[i] : value; + }); + to = typesToArray(this.c, to); + to = date.map(function (value, i) { + return REGEX["isNumeric"].test(to[i]) ? to[i] : value; + }); + if (!(this.isValid.apply(this, _toConsumableArray(from)) && this.isValid.apply(this, _toConsumableArray(to)))) return false; + return compare.call(this, from, method[0] === "[" ? ">=" : ">") && compare.call(this, to, method[1] === "]" ? "<=" : "<"); +} -/***/ "./src/base/jtg.js": -/*!*************************!*\ - !*** ./src/base/jtg.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function isInArray(array) { + var _this = this; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "jtg": () => (/* binding */ jtg) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); + return array.some(function (date) { + return isSame.call(_this, date); + }); +} +/** + * Gregorian to Jalali + * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year + * @param {Null|Number|String} [month=1] - Gregorian month + * @param {Null|Number|String} [day=1] - Gregorian day + * @param {Null|Number|String} [hour=0] - Gregorian hour + * @param {Null|Number|String} [minute=0] - Gregorian minute + * @param {Null|Number|String} [second=0] - Gregorian second + * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond + * @returns {Array} Jalali date + */ +var gtj = function gtj(year, month, day, hour, minute, second, millisecond) { + var date; + if (!year) date = new Date();else if (isDate(year)) // if the year was an instance of Date + date = year;else date = new Date(REGEX["isNumeric"].test(year) ? year : 0, REGEX["isNumeric"].test(month) ? month : 0, REGEX["isNumeric"].test(day) ? day : 1, REGEX["isNumeric"].test(hour) ? hour : 0, REGEX["isNumeric"].test(minute) ? minute : 0, REGEX["isNumeric"].test(second) ? second : 0, REGEX["isNumeric"].test(millisecond) ? millisecond : 0); + day = date.getDate(); + month = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one + + year = date.getFullYear(); + hour = date.getHours(); + minute = date.getMinutes(); + second = date.getSeconds(); + millisecond = date.getMilliseconds(); + var jYear, jMonth, jDay; + var pastDaysInMonth = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; // Past days from the start of the year in each month + + if (year > 1600) { + jYear = 979; + year -= 1600; + } else { + jYear = 0; + year -= 621; + } + + var newYear = month > 2 ? year + 1 : year; + var days = 365 * year + parseInt((newYear + 3) / 4) - parseInt((newYear + 99) / 100) + parseInt((newYear + 399) / 400) - 80 + day + pastDaysInMonth[month - 1]; + jYear += 33 * parseInt(days / 12053); + days %= 12053; + jYear += 4 * parseInt(days / 1461); + days %= 1461; + + if (days > 365) { + jYear += parseInt((days - 1) / 365); + days = (days - 1) % 365; + } + + jMonth = days < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30); + jDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30); + return [jYear, jMonth, jDay, hour, minute, second, millisecond]; +}; /** * Jalali to Gregorian @@ -2429,217 +495,84 @@ __webpack_require__.r(__webpack_exports__); * @param {Null|Number|String} [millisecond=0] - Jalali millisecond * @returns {Date} Gregorian date */ -const jtg = (year, month, day, hour, minute, second, millisecond) => { - //plus sign before a variable, convert variable to int - year = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(year) ? +year : 1; - month = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(month) ? +month : 1; - day = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(day) ? +day : 1; - hour = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(hour) ? +hour : 0; - minute = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(minute) ? +minute : 0; - second = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(second) ? +second : 0; - millisecond = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(millisecond) ? +millisecond : 0; - let gYear, gMonth, gDay; - if (year > 979) { - gYear = 1600; - year -= 979; - } else { - gYear = 621; - } - let days = - 365 * year + - parseInt(year / 33) * 8 + - parseInt(((year % 33) + 3) / 4) + - 78 + - day + - (month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186); - gYear += 400 * parseInt(days / 146097); - days %= 146097; - if (days > 36524) { - gYear += 100 * parseInt(--days / 36524); - days %= 36524; - if (days >= 365) days++; - } - gYear += 4 * parseInt(days / 1461); - days %= 1461; - if (days > 365) { - gYear += parseInt((days - 1) / 365); - days = (days - 1) % 365; - } - gDay = days + 1; - const daysOfMonths = [ - 0, - 31, - (0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isLeapYear)("gregorian", gYear) ? 29 : 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31, - ]; - for (gMonth = 0; gMonth < 13; gMonth++) { - const v = daysOfMonths[gMonth]; - if (gDay <= v) break; - gDay -= v; - } - - return new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond); -}; - -/***/ }), - -/***/ "./src/base/mathOperation.js": -/*!***********************************!*\ - !*** ./src/base/mathOperation.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "mathOperation": () => (/* binding */ mathOperation) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -/** - * do the math operation on dates - * @since 1.4.0 - * @param {...String|PersianDate|Date|Array|Object} values - the dates - * @param {'min'|'max'} operation - the operation - * @returns {*} return maximum date - * @throws {false} if parameters not send or parameters is invalid, return false - */ -const mathOperation = function (values, operation) { - if (!values.length) { - return false; - } - const args = [...values]; - const argsNumber = args.map((date) => { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, date); - if (this.isValid(...date)) - return this.clone() - .parse(...date) - .timestamp(); - return false; - }); - if (argsNumber.includes(false)) return false; - return args[argsNumber.indexOf(Math[operation](...argsNumber))]; +var jtg = function jtg(year, month, day, hour, minute, second, millisecond) { + //plus sign before a variable, convert variable to int + year = REGEX["isNumeric"].test(year) ? +year : 1; + month = REGEX["isNumeric"].test(month) ? +month : 1; + day = REGEX["isNumeric"].test(day) ? +day : 1; + hour = REGEX["isNumeric"].test(hour) ? +hour : 0; + minute = REGEX["isNumeric"].test(minute) ? +minute : 0; + second = REGEX["isNumeric"].test(second) ? +second : 0; + millisecond = REGEX["isNumeric"].test(millisecond) ? +millisecond : 0; + var gYear, gMonth, gDay; + + if (year > 979) { + gYear = 1600; + year -= 979; + } else { + gYear = 621; + } + + var days = 365 * year + parseInt(year / 33) * 8 + parseInt((year % 33 + 3) / 4) + 78 + day + (month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186); + gYear += 400 * parseInt(days / 146097); + days %= 146097; + + if (days > 36524) { + gYear += 100 * parseInt(--days / 36524); + days %= 36524; + if (days >= 365) days++; + } + + gYear += 4 * parseInt(days / 1461); + days %= 1461; + + if (days > 365) { + gYear += parseInt((days - 1) / 365); + days = (days - 1) % 365; + } + + gDay = days + 1; + var daysOfMonths = [0, 31, isLeapYear("gregorian", gYear) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + + for (gMonth = 0; gMonth < 13; gMonth++) { + var v = daysOfMonths[gMonth]; + if (gDay <= v) break; + gDay -= v; + } + + return new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond); }; - -/***/ }), - -/***/ "./src/base/ordinalNumber.js": -/*!***********************************!*\ - !*** ./src/base/ordinalNumber.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "ordinalNumber": () => (/* binding */ ordinalNumber) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); - /** - * returns the ordinal number of that number sent to it - * @param {Number} number - the number that gives ordinal number --> from 1 to 366 - * @param {'jalali','gregorian'} calendar - the calendar - * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number - * @returns {String} ordinal number - * @example 1st | اول | اولین + * show warning + * @since 2.0.0 + * @param {String} msg - the message for warning */ -const ordinalNumber = (number, calendar = "jalali", mode = 1) => { - return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR[calendar].ordinalNumbers(number, mode); +var warn = function warn(msg) { + console.warn(msg); }; - -/***/ }), - -/***/ "./src/base/setGregorianDate.js": -/*!**************************************!*\ - !*** ./src/base/setGregorianDate.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "setGregorianDate": () => (/* binding */ setGregorianDate) -/* harmony export */ }); /** - * set the date with Date instance - * @since 2.0.0 - * @param {Date} date - the Date instance + * show error + * @since 3.0.0 + * @param {String} msg - the message for error */ -const setGregorianDate = function (date) { - this.d = { - year: date.getFullYear(), - month: date.getMonth() + 1, - date: date.getDate(), - hour: date.getHours(), - minute: date.getMinutes(), - second: date.getSeconds(), - millisecond: date.getMilliseconds(), - }; +var error = function error(msg) { + console.error(msg); }; - -/***/ }), - -/***/ "./src/base/setJalaliDate.js": -/*!***********************************!*\ - !*** ./src/base/setJalaliDate.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "setJalaliDate": () => (/* binding */ setJalaliDate) -/* harmony export */ }); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/base/index.js"); - /** - * set the date with Date instance - * @since 2.0.0 - * @param {Date} date - the Date + * make error and delete this.d + * @param {String} errorText - Error Text + * @returns {PersianDate} make error and return class */ -const setJalaliDate = function (date) { - [ - this.d.year, - this.d.month, - this.d.date, - this.d.hour, - this.d.minute, - this.d.second, - this.d.millisecond, - ] = (0,___WEBPACK_IMPORTED_MODULE_0__.gtj)(date); +var invalid = function invalid(errorText) { + delete this.d; + this.error = errorText; + return this; }; - -/***/ }), - -/***/ "./src/base/typesToArray.js": -/*!**********************************!*\ - !*** ./src/base/typesToArray.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "typesToArray": () => (/* binding */ typesToArray) -/* harmony export */ }); -/* harmony import */ var _PersianDate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PersianDate */ "./src/PersianDate.js"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ "./src/base/index.js"); - - - - /** * convert String or Array or Object or PersianDate to Array * @since 1.2.0 @@ -2674,1929 +607,2690 @@ __webpack_require__.r(__webpack_exports__); * @param {Null|Number|String} millisecond millisecond of date * @returns {Array} array includes year, month, date, hour, minute, second, millinsecond */ -const typesToArray = ( - calendar, - year, - month, - date, - hour, - minute, - second, - millisecond -) => { - if (!year) - // if year not defined - year = new Date(); // return now - if (typeof year == "string" && year.search(_utils__WEBPACK_IMPORTED_MODULE_1__.REGEX.separators) != -1) { - return year.split(/[/ -.,:\\]/); - } else if (Array.isArray(year)) { - return year; - } else if (_PersianDate__WEBPACK_IMPORTED_MODULE_0__.default.isPersianDate(year)) { - return year.clone().calendar(calendar).toArray(); - } else if (_PersianDate__WEBPACK_IMPORTED_MODULE_0__.default.isDate(year)) { - return new _PersianDate__WEBPACK_IMPORTED_MODULE_0__.default(year).calendar(calendar).toArray(); - } else if (Object.prototype.toString.call(year) === "[object Object]") { - return [ - year.y || year.year || year.years, - year.M || year.month || year.months || 1, - year.d || year.day || year.days || year.date || 1, - year.h || year.hour || year.hours || 0, - year.m || year.minute || year.minutes || 0, - year.s || year.second || year.seconds || 0, - year.ms || year.millisecond || year.milliseconds || 0, - ]; - } - return [year, month, date, hour, minute, second, millisecond]; -}; +var typesToArray = function typesToArray(calendar, year, month, date, hour, minute, second, millisecond) { + if (!year) // if year not defined + year = new Date(); // return now + + if (typeof year == "string" && year.search(REGEX["separators"]) != -1) { + return year.split(/[/ -.,:\\]/); + } else if (Array.isArray(year)) { + return year; + } else if (PersianDate.isPersianDate(year)) { + return year.clone().calendar(calendar).toArray(); + } else if (PersianDate.isDate(year)) { + return new PersianDate(year).calendar(calendar).toArray(); + } else if (Object.prototype.toString.call(year) === "[object Object]") { + return [year.y || year.year || year.years, year.M || year.month || year.months || 1, year.d || year.day || year.days || year.date || 1, year.h || year.hour || year.hours || 0, year.m || year.minute || year.minutes || 0, year.s || year.second || year.seconds || 0, year.ms || year.millisecond || year.milliseconds || 0]; + } + + return [year, month, date, hour, minute, second, millisecond]; +}; -/***/ }), - -/***/ "./src/base/warn.js": -/*!**************************!*\ - !*** ./src/base/warn.js ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "warn": () => (/* binding */ warn) -/* harmony export */ }); /** - * show warning - * @since 2.0.0 - * @param {String} msg - the message for warning + * returns the ordinal number of that number sent to it + * @param {Number} number - the number that gives ordinal number --> from 1 to 366 + * @param {'jalali','gregorian'} calendar - the calendar + * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number + * @returns {String} ordinal number + * @example 1st | اول | اولین */ -const warn = (msg) => { - console.warn(msg); -}; - - -/***/ }), - -/***/ "./src/comparison/index.js": -/*!*********************************!*\ - !*** ./src/comparison/index.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isDate": () => (/* reexport safe */ _isDate__WEBPACK_IMPORTED_MODULE_0__.isDate), -/* harmony export */ "isLeapYear": () => (/* reexport safe */ _isLeapYear__WEBPACK_IMPORTED_MODULE_1__.isLeapYear), -/* harmony export */ "isPersianDate": () => (/* reexport safe */ _isPersianDate__WEBPACK_IMPORTED_MODULE_2__.isPersianDate), -/* harmony export */ "isValid": () => (/* reexport safe */ _isValid__WEBPACK_IMPORTED_MODULE_3__.isValid), -/* harmony export */ "isValidDate": () => (/* reexport safe */ _isValidDate__WEBPACK_IMPORTED_MODULE_4__.isValidDate), -/* harmony export */ "isValidTime": () => (/* reexport safe */ _isValidTime__WEBPACK_IMPORTED_MODULE_5__.isValidTime), -/* harmony export */ "isSame": () => (/* reexport safe */ _isSame__WEBPACK_IMPORTED_MODULE_6__.isSame), -/* harmony export */ "isBetween": () => (/* reexport safe */ _isBetween__WEBPACK_IMPORTED_MODULE_7__.isBetween) -/* harmony export */ }); -/* harmony import */ var _isDate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isDate */ "./src/comparison/isDate.js"); -/* harmony import */ var _isLeapYear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isLeapYear */ "./src/comparison/isLeapYear.js"); -/* harmony import */ var _isPersianDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isPersianDate */ "./src/comparison/isPersianDate.js"); -/* harmony import */ var _isValid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isValid */ "./src/comparison/isValid.js"); -/* harmony import */ var _isValidDate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isValidDate */ "./src/comparison/isValidDate.js"); -/* harmony import */ var _isValidTime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isValidTime */ "./src/comparison/isValidTime.js"); -/* harmony import */ var _isSame__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isSame */ "./src/comparison/isSame.js"); -/* harmony import */ var _isBetween__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./isBetween */ "./src/comparison/isBetween.js"); - - - - - - - - - - -/***/ }), - -/***/ "./src/comparison/isBetween.js": -/*!*************************************!*\ - !*** ./src/comparison/isBetween.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isBetween": () => (/* binding */ isBetween) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - - -function isBetween(from, to, method) { - const date = this.toArray(); - - from = (0,_base__WEBPACK_IMPORTED_MODULE_1__.typesToArray)(this.c, from); - if (!from[2]) date[2] = 1; - from = date.map((value, i) => - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(from[i]) ? from[i] : value - ); - - to = (0,_base__WEBPACK_IMPORTED_MODULE_1__.typesToArray)(this.c, to); - to = date.map((value, i) => (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(to[i]) ? to[i] : value)); - - if (!(this.isValid(...from) && this.isValid(...to))) return false; - - return ( - _base__WEBPACK_IMPORTED_MODULE_1__.compare.call(this, from, method[0] === "[" ? ">=" : ">") && - _base__WEBPACK_IMPORTED_MODULE_1__.compare.call(this, to, method[1] === "]" ? "<=" : "<") - ); -} - - -/***/ }), - -/***/ "./src/comparison/isDate.js": -/*!**********************************!*\ - !*** ./src/comparison/isDate.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isDate": () => (/* binding */ isDate) -/* harmony export */ }); -const isDate = function (date) { - return date instanceof Date; -}; - -/***/ }), - -/***/ "./src/comparison/isLeapYear.js": -/*!**************************************!*\ - !*** ./src/comparison/isLeapYear.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isLeapYear": () => (/* binding */ isLeapYear) -/* harmony export */ }); -const jalali = (year) => { - const array = - year > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30]; - const remainder = year % 33; - return array.includes(remainder); -}; - -const gregorian = (year) => { - return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; -}; - -const isLeapYear = function (calendar, year) { - // calendar[0] ==> first letter of calendar ('j' | 'g' | ...) - switch (calendar[0]) { - case "j": - return jalali(year); - default: - return gregorian(year); - } -}; - - -/***/ }), - -/***/ "./src/comparison/isPersianDate.js": -/*!*****************************************!*\ - !*** ./src/comparison/isPersianDate.js ***! - \*****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isPersianDate": () => (/* binding */ isPersianDate) -/* harmony export */ }); -/* harmony import */ var _PersianDate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PersianDate */ "./src/PersianDate.js"); - -const isPersianDate = function (date) { - return date instanceof _PersianDate__WEBPACK_IMPORTED_MODULE_0__.default; -}; - - -/***/ }), - -/***/ "./src/comparison/isSame.js": -/*!**********************************!*\ - !*** ./src/comparison/isSame.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isSame": () => (/* binding */ isSame) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - - -function isSame() { - let date = (0,_base__WEBPACK_IMPORTED_MODULE_1__.typesToArray)(this.c, ...arguments); - date = this.toArray().map((value, i) => - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(date[i]) ? date[i] : value - ); - - return _base__WEBPACK_IMPORTED_MODULE_1__.compare.call(this, date, "=="); -} - - -/***/ }), - -/***/ "./src/comparison/isValid.js": -/*!***********************************!*\ - !*** ./src/comparison/isValid.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isValid": () => (/* binding */ isValid) -/* harmony export */ }); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/comparison/index.js"); - - -const isValid = function ( - calendar, - year, - month, - day, - hour, - minute, - second, - millisecond -) { - return ( - (0,___WEBPACK_IMPORTED_MODULE_0__.isValidDate)(calendar, year, month, day) && - (0,___WEBPACK_IMPORTED_MODULE_0__.isValidTime)(hour, minute, second, millisecond) - ); -}; - - -/***/ }), - -/***/ "./src/comparison/isValidDate.js": -/*!***************************************!*\ - !*** ./src/comparison/isValidDate.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isValidDate": () => (/* binding */ isValidDate) -/* harmony export */ }); -/* harmony import */ var _isLeapYear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isLeapYear */ "./src/comparison/isLeapYear.js"); - - -const jalali = (year, month, day) => { - if (month >= 7 && month <= 11 && day == 31) return false; - if (month == 12 && day == 31) return false; - if (month == 12 && day == 30 && !(0,_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)("j", year)) return false; - return true; -}; - -const gregorian = (year, month, day) => { - if ([2, 4, 6, 9, 11].includes(month) && day == 31) return false; - if (month == 2 && (day == 30 || (day == 29 && !(0,_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)("g", year)))) - return false; - return true; -}; - -const isValidDate = function (calendar, year, month, day) { - if ([year, month, day].some((e) => String(e).search(/null|NaN/) != -1)) - return false; - if (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false; - switch (calendar[0]) { - case "j": - return jalali(year, month, day); - default: - return gregorian(year, month, day); - } -}; - - -/***/ }), - -/***/ "./src/comparison/isValidTime.js": -/*!***************************************!*\ - !*** ./src/comparison/isValidTime.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isValidTime": () => (/* binding */ isValidTime) -/* harmony export */ }); -const isValidTime = function (hour, minute, second, millisecond) { - if ( - [hour, minute, second, millisecond].some( - (e) => String(e).search(/null|NaN/) != -1 - ) - ) - return false; - if (hour < 0 || hour > 23) return false; - if (minute < 0 || minute > 59) return false; - if (second < 0 || second > 59) return false; - if (millisecond < 0 || millisecond > 999) return false; - return true; -}; - - -/***/ }), - -/***/ "./src/conversion/index.js": -/*!*********************************!*\ - !*** ./src/conversion/index.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toString": () => (/* reexport safe */ _toString__WEBPACK_IMPORTED_MODULE_0__.toString), -/* harmony export */ "toArray": () => (/* reexport safe */ _toArray__WEBPACK_IMPORTED_MODULE_1__.toArray), -/* harmony export */ "toObject": () => (/* reexport safe */ _toObject__WEBPACK_IMPORTED_MODULE_2__.toObject), -/* harmony export */ "toDate": () => (/* reexport safe */ _toDate__WEBPACK_IMPORTED_MODULE_3__.toDate) -/* harmony export */ }); -/* harmony import */ var _toString__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toString */ "./src/conversion/toString.js"); -/* harmony import */ var _toArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toArray */ "./src/conversion/toArray.js"); -/* harmony import */ var _toObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./toObject */ "./src/conversion/toObject.js"); -/* harmony import */ var _toDate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toDate */ "./src/conversion/toDate.js"); - - - - - - -/***/ }), - -/***/ "./src/conversion/toArray.js": -/*!***********************************!*\ - !*** ./src/conversion/toArray.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toArray": () => (/* binding */ toArray) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function toArray() { - if (!arguments.length) { - return Object.values(this.d); - } - const formats = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...arguments); - return [ - this.year(formats[0]), - this.month(formats[1]), - this.date(formats[2]), - this.hour(formats[3]), - this.minute(formats[4]), - this.second(formats[5]), - this.millisecond(formats[6]), - ]; -} - - -/***/ }), - -/***/ "./src/conversion/toDate.js": -/*!**********************************!*\ - !*** ./src/conversion/toDate.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toDate": () => (/* binding */ toDate) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -const jalali = (date) => { - return (0,_base__WEBPACK_IMPORTED_MODULE_0__.jtg)(...date); -}; - -const gregorian = (date) => { - --date[1]; - return new Date(...date); +var ordinalNumber = function ordinalNumber(number) { + var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "jalali"; + var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + return CALENDAR[calendar].ordinalNumbers(number, mode); }; -function toDate() { - switch (this.c[0]) { - case "j": - return jalali(this.toArray()); - default: - return gregorian(this.toArray()); - } -} - - -/***/ }), - -/***/ "./src/conversion/toObject.js": -/*!************************************!*\ - !*** ./src/conversion/toObject.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toObject": () => (/* binding */ toObject) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function toObject() { - if (!arguments.length) { - return this.d; - } - const formats = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...arguments); - return { - year: this.year(formats[0]), - month: this.month(formats[1]), - date: this.date(formats[2]), - hour: this.hour(formats[3]), - minute: this.minute(formats[4]), - second: this.second(formats[5]), - millisecond: this.millisecond(formats[6]), - }; -} - - -/***/ }), - -/***/ "./src/conversion/toString.js": -/*!************************************!*\ - !*** ./src/conversion/toString.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toString": () => (/* binding */ toString) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); - - -const jalali = (format) => { - return format - .replace(/\?/g, "j") - .replace(/datetime/gi, "jYYYY/jMM/jDD HH:mm") - .replace(/date/gi, "jYYYY/jMM/jDD") - .replace(/time/gi, "HH:mm"); -}; - -const gregorian = (format) => { - return format - .replace(/\?/g, "") - .replace(/datetime/gi, "YYYY-MM-DD HH:mm") - .replace(/date/gi, "YYYY-MM-DD") - .replace(/time/gi, "HH:mm"); +/** + * add a prefix to the text in the number of characters that the text has less + * @param {String|Number} text a text need prefix + * @param {Number} length length of text + * @param {String} [prefix=0] - string for add before of text + * @returns {String} text with or wihtout prefix + */ +var addPrefix = function addPrefix(text, length) { + var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "0"; + return prefix.repeat(length - String(text).length) + text; }; -function toString(format) { - const rawTexts = []; - format = format.replace(_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.betweenBacktick, (_matched, text) => { - rawTexts.push(text); - return "###"; - }); - switch (this.c[0]) { - case "j": - format = jalali(format); - break; - default: - format = gregorian(format); - } - const matchedFormats = format.match(_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.format); - let dateString = ""; - for (const i of matchedFormats) { - dateString += format.substring(0, format.indexOf(i)); - - if (i.search(/Y|y/) != -1) dateString += this.year(i); - else if (i.search(/M/) != -1) dateString += this.month(i); - else if (i.search(/Q/) != -1) dateString += this.quarter(i); - else if (i.search(/D|d/) != -1) dateString += this.date(i); - else if (i.search(/W|w/) != -1) dateString += this.week(i); - else if (i.search(/H|h|k/) != -1) dateString += this.hour(i); - else if (i.search(/m/) != -1) dateString += this.minute(i); - else if (i.search(/s/) != -1) dateString += this.second(i); - else if (i.search(/c|C/) != -1) dateString += this.millisecond(i); - else if (i.search(/t/) != -1) dateString += this.timestamp(); - else if (i.search(/a|A/) != -1) dateString += (0,_utils__WEBPACK_IMPORTED_MODULE_0__.TIMETYPE)(this.d.hour, i); - - format = format.substr(format.indexOf(i) + i.length); - } - dateString += format; - for (let i = 0; i < rawTexts.length; i++) - dateString = dateString.replace("###", rawTexts[i]); - return String(dateString); -} - - -/***/ }), - -/***/ "./src/create/calendar.js": -/*!********************************!*\ - !*** ./src/create/calendar.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "calendar": () => (/* binding */ calendar) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function calendar(c) { - if (!c) return this.c; - - if (c[0] == "j" && this.c[0] != "j") { - if (!this.error) _base__WEBPACK_IMPORTED_MODULE_0__.setJalaliDate.call(this, this.toDate()); - this.c = "jalali"; - } else if (c[0] == "g" && this.c[0] != "g") { - if (!this.error) _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, this.toDate()); - this.c = "gregorian"; - } - - return this; -} - - -/***/ }), - -/***/ "./src/create/clone.js": -/*!*****************************!*\ - !*** ./src/create/clone.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "clone": () => (/* binding */ clone) -/* harmony export */ }); -function clone() { - return Object.assign( - Object.create(Object.getPrototypeOf(this)), - JSON.parse(JSON.stringify(this)) - ); -} - - -/***/ }), - -/***/ "./src/create/fromGregorian.js": -/*!*************************************!*\ - !*** ./src/create/fromGregorian.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "fromGregorian": () => (/* binding */ fromGregorian) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); - - - -function fromGregorian(...date) { - if (!date.length) date[0] = new Date().getTime(); - else if (this.isPersianDate(date[0])) { - date = date[0].clone().calendar("g").toArray(); - } else if (!(0,_base__WEBPACK_IMPORTED_MODULE_0__.isTimestamp)(date[0])) { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)("gregorian", ...date); - date[6] = +date[6] || 0; - date[5] = +date[5] || 0; - date[4] = +date[4] || 0; - date[3] = +date[3] || 0; - date[2] = +date[2] || 1; - date[1] = +date[1] || 1; - date[0] = +date[0]; - } - - if (date.length > 1) { - if (!(0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isValid)("gregorian", ...date)) - return _base__WEBPACK_IMPORTED_MODULE_0__.invalid.call(this, "تاریخ نامعتبر"); - --date[1]; // this is month; becuse the Date get month from 0, subtract one - } - - date = new Date(...date); - if (date == "Invalid Date") return _base__WEBPACK_IMPORTED_MODULE_0__.invalid.call(this, "تاریخ نامعتبر"); - if (this.c == "jalali") { - _base__WEBPACK_IMPORTED_MODULE_0__.setJalaliDate.call(this, date); - } else { - _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, date); - } - return this; -} - - -/***/ }), - -/***/ "./src/create/fromJalali.js": -/*!**********************************!*\ - !*** ./src/create/fromJalali.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "fromJalali": () => (/* binding */ fromJalali) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function fromJalali(...date) { - if (!date.length) date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.gtj)(); - else date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)("jalali", ...date); - - if (this.c == "jalali") { - this.d.year = +date[0]; - this.d.month = +date[1] || 1; - this.d.date = +date[2] || 1; - this.d.hour = +date[3] || 0; - this.d.minute = +date[4] || 0; - this.d.second = +date[5] || 0; - this.d.millisecond = +date[6] || 0; - } else { - _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, (0,_base__WEBPACK_IMPORTED_MODULE_0__.jtg)(...date)); - } - - if (!this.isValid()) return _base__WEBPACK_IMPORTED_MODULE_0__.invalid.call(this, "تاریخ نامعتبر"); - return this; -} - - -/***/ }), - -/***/ "./src/create/index.js": -/*!*****************************!*\ - !*** ./src/create/index.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "now": () => (/* reexport safe */ _now__WEBPACK_IMPORTED_MODULE_0__.now), -/* harmony export */ "parse": () => (/* reexport safe */ _parse__WEBPACK_IMPORTED_MODULE_1__.parse), -/* harmony export */ "clone": () => (/* reexport safe */ _clone__WEBPACK_IMPORTED_MODULE_2__.clone), -/* harmony export */ "fromJalali": () => (/* reexport safe */ _fromJalali__WEBPACK_IMPORTED_MODULE_3__.fromJalali), -/* harmony export */ "fromGregorian": () => (/* reexport safe */ _fromGregorian__WEBPACK_IMPORTED_MODULE_4__.fromGregorian), -/* harmony export */ "calendar": () => (/* reexport safe */ _calendar__WEBPACK_IMPORTED_MODULE_5__.calendar) -/* harmony export */ }); -/* harmony import */ var _now__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now */ "./src/create/now.js"); -/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse */ "./src/create/parse.js"); -/* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clone */ "./src/create/clone.js"); -/* harmony import */ var _fromJalali__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fromJalali */ "./src/create/fromJalali.js"); -/* harmony import */ var _fromGregorian__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fromGregorian */ "./src/create/fromGregorian.js"); -/* harmony import */ var _calendar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./calendar */ "./src/create/calendar.js"); - +/** + * set the date with Date instance + * @since 2.0.0 + * @param {Date} date - the Date + */ +var setJalaliDate = function setJalaliDate(date) { + var _gtj = gtj(date); + var _gtj2 = _slicedToArray(_gtj, 7); + this.d.year = _gtj2[0]; + this.d.month = _gtj2[1]; + this.d.date = _gtj2[2]; + this.d.hour = _gtj2[3]; + this.d.minute = _gtj2[4]; + this.d.second = _gtj2[5]; + this.d.millisecond = _gtj2[6]; +}; +/** + * set the date with Date instance + * @since 2.0.0 + * @param {Date} date - the Date instance + */ +var setGregorianDate = function setGregorianDate(date) { + this.d = { + year: date.getFullYear(), + month: date.getMonth() + 1, + date: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + millisecond: date.getMilliseconds() + }; +}; +/** + * get label of day + * @param {Date} date - the date that received day + * @param {'jalali'|'gregorian'} calendar - the calendar + * @returns {String} returns day label + * @example Saturday | شنبه + */ +var getDayLabel = function getDayLabel() { + var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); + var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "jalali"; + if (isDate(date)) return CALENDAR[calendar]["days"]["label"][date.getDay()]; + return error("the first param must be instance of Date."); +}; -/***/ }), +/** + * get the day of the week + * @param {Date} date - the date that received day of week + * @param {'jalali', 'gregorian'} calendar - the calendar + * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0 + * @returns {Number|String} the number of the day of week + */ -/***/ "./src/create/now.js": -/*!***************************!*\ - !*** ./src/create/now.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +var getDayOfWeek = function getDayOfWeek() { + var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); + var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "jalali"; + var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "standard"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "now": () => (/* binding */ now) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + if (isDate(date)) { + // if the year was an instance of Date + return CALENDAR[calendar]["days"]["weekNumber"][date.getDay()] + (mode != "standard" ? 0 : 1); + } + return error("the first param must be instance of Date."); +}; -function now() { - const date = new Date(); +var getDefaultFormat$4 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jy"; - if (this.c == "jalali") { - _base__WEBPACK_IMPORTED_MODULE_0__.setJalaliDate.call(this, date); - } else { - _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, date); - } + default: + return "y"; + } +}; - return this; +function year(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + this.d.year = +format; + + if (!this.isValidDate()) { + return this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$4(this.c); + var jYear = this.c == "jalali" ? this.d.year : gtj(this.toDate())[0]; + if (format == "jy" || format == "jYYYY") return jYear; + if (format == "jYY") return String(jYear).slice(-2); + var gYear = this.c == "gregorian" ? this.d.year : this.toDate().getFullYear(); + if (format == "y" || format == "YYYY") return gYear; + if (format == "YY") return String(gYear).slice(-2); + return jYear; + } } +var getDefaultFormat$3 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jQ"; + + default: + return "Q"; + } +}; -/***/ }), - -/***/ "./src/create/parse.js": -/*!*****************************!*\ - !*** ./src/create/parse.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "parse": () => (/* binding */ parse) -/* harmony export */ }); -function parse(...date) { - if (this.c == "jalali") { - return this.fromJalali(...date); - } else { - return this.fromGregorian(...date); - } +function quarter(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 1) { + this.d.month = 1; + this.subQuarter(format - 1, false); + } else if (format > 4) { + this.d.month = 12; + this.addQuarter(format - 4, false); + } else { + this.d.month = +format * 3 - 2; + } + + while (!this.isValidDate()) { + this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$3(this.c); + var jQuarter = Math.ceil((this.c == "jalali" ? this.d.month : gtj(this.toDate())[1]) / 3); + if (format == "jQ") return jQuarter; + if (format == "jQo") return ordinalNumber(jQuarter); + if (format == "jQO") return ordinalNumber(jQuarter, "jalali", 2); + var gQuarter = Math.ceil((this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1) / 3); + if (format == "Q") return gQuarter; + if (format == "Qo" || format == "QO") return ordinalNumber(gQuarter, "gregorian"); + return jQuarter; + } } +var getDefaultFormat$2 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jM"; -/***/ }), + default: + return "M"; + } +}; -/***/ "./src/diff/diff.js": -/*!**************************!*\ - !*** ./src/diff/diff.js ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function month(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 1) { + this.d.month = 1; + this.subMonth(format - 1, false); + } else if (format > 12) { + this.d.month = 12; + this.addMonth(format - 12, false); + } else { + this.d.month = +format; + } + + while (!this.isValidDate()) { + this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$2(this.c); + var jMonth = this.c == "jalali" ? this.d.month : gtj(this.toDate())[1]; + if (format == "jMM") return addPrefix(jMonth, 2); + if (format == "jM") return jMonth; + if (format == "jMMMM" || format == "jMMM") return CALENDAR["jalali"]["months"][jMonth]; + if (format == "jMo") return ordinalNumber(jMonth); + if (format == "jMO") return ordinalNumber(jMonth, "jalali", 2); + var gMonth = this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1; + if (format == "M") return gMonth; + if (format == "MM") return addPrefix(gMonth, 2); + if (format == "MMMM") return CALENDAR["gregorian"]["months"][gMonth]; + if (format == "Mo" || format == "MO") return ordinalNumber(gMonth, "gregorian"); + if (format == "MMM") return CALENDAR["gregorian"]["months"][gMonth].slice(0, 3); + return jMonth; + } +} -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "diff": () => (/* binding */ diff) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); +var getDefaultFormat$1 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jw"; + default: + return "w"; + } +}; -function diff(date, unit, addOne) { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, date); - if (!this.isValid(...date)) return "تاریخ نامعتبر"; - let result = - this.timestamp() - - this.clone() - .parse(...date) - .timestamp(); - switch (unit) { - case "y": - case "year": - case "years": - result = this.d.year - date[0]; - break; - case "M": - case "month": - case "months": - result = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]); - break; - case "d": - case "date": - case "day": - case "days": - result = Math.ceil(result / 1000 / 60 / 60 / 24); - break; - case "h": - case "hour": - case "hours": - result = Math.ceil(result / 1000 / 60 / 60); - break; - case "m": - case "minute": - case "minutes": - result = Math.ceil(result / 1000 / 60); - break; - case "s": - case "second": - case "seconds": - result = Math.ceil(result / 1000); - break; - case "ms": - case "millisecond": - case "milliseconds": - } - return addOne ? result + (result >= 0 ? 1 : -1) : result; +function week(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + var weeksInYear = this.getWeeksInYear(); + + if (format < 1) { + this.week(1); + this.subWeek(format - 1, false); + } else if (format > weeksInYear) { + this.week(weeksInYear); + this.addWeek(format - weeksInYear, false); + } else { + var weekOfYear = getWeekOfYear.call(this, this.d.year, this.d.month, this.d.date, this.c); + this.addWeek(+format - weekOfYear); + } + + while (!this.isValidDate()) { + this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$1(this.c); + var jWeekOfYear = getWeekOfYear.call(this, this.year("jy"), this.month("jM"), this.date("jD"), this.c); + if (format == "jw" || format == "jW") return jWeekOfYear; + if (format == "jww" || format == "jWW") return addPrefix(jWeekOfYear, 2); + if (format == "jwo" || format == "jWo") return ordinalNumber(jWeekOfYear); + if (format == "jwO" || format == "jWO") return ordinalNumber(jWeekOfYear, "jalali", 2); + var gWeekOfYear = getWeekOfYear.call(this, this.year("y"), this.month("M"), this.date("D"), "gregorian"); + if (format == "w" || format == "W") return gWeekOfYear; + if (format == "ww" || format == "WW") return addPrefix(gWeekOfYear, 2); + if (format == "wo" || format == "Wo" || format == "wO" || format == "WO") return ordinalNumber(gWeekOfYear, "gregorian"); + return jWeekOfYear; + } } +var getDefaultFormat = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jD"; -/***/ }), - -/***/ "./src/diff/diffForHumans.js": -/*!***********************************!*\ - !*** ./src/diff/diffForHumans.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + default: + return "D"; + } +}; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "diffForHumans": () => (/* binding */ diffForHumans) -/* harmony export */ }); -function diffForHumans(date, suffix) { - let result = this.diff(date, "s"); - if (typeof result == "string") return "تاریخ نامعتبر"; - - const prefix = suffix && (result > 0 ? "آینده" : "پیش"); - result = Math.abs(result); - - if (result == 0) return "هم اکنون"; - else if (result < 45) result = "لحظات"; - else if ((result /= 60) < 45) - // divide by 60, for getting minute - result = Math.round(result) + " " + "دقیقه"; - else if ((result /= 60) < 23.5) - // divide by 60, for getting hour - result = Math.round(result) + " " + "ساعت"; - else if ((result /= 24) < 26) - // divide by 24, for getting day - result = Math.round(result) + " " + "روز"; - else if (result < 320) result = Math.round(result / 30) + " " + "ماه"; - else result = Math.round(result / 365) + " " + "سال"; - return result + (suffix ? " " + prefix : ""); +function date(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + var daysInMonth = this.getDaysInMonth(); + + if (format < 1) { + this.d.date = 1; + this.subDay(format - 1); + } else if (format > daysInMonth) { + this.d.date = daysInMonth; + this.addDay(format - daysInMonth); + } else { + this.d.date = +format; + } + + return this; + } else { + if (!format) format = getDefaultFormat(this.c); + var jDate = this.c == "jalali" ? this.d.date : gtj(this.toDate())[2]; //---------- Day of Month ----------// + + if (format == "jDD") return addPrefix(jDate, 2); + if (format == "jD") return jDate; + if (format == "jDo") return ordinalNumber(jDate); + if (format == "jDO") return ordinalNumber(jDate, "jalali", 2); //---------- Day of Week ----------// + + var gDate = this.toDate(); + if (format == "jdddd" || format == "jddd") return getDayLabel(gDate); + if (format == "jdd") return getDayLabel(gDate).slice(0, 1); + var dayOfWeek = getDayOfWeek(gDate); + if (format == "jdo") return ordinalNumber(dayOfWeek); + if (format == "jdO") return ordinalNumber(dayOfWeek, "jalali", 2); + if (format == "jd") return getDayOfWeek(gDate, "jalali", "array"); + if (format == "jde") return dayOfWeek; //---------- Day of Year ----------// + + var dayOfYear = getDayOfYear(this.year("jy"), this.month("jM"), jDate, "j"); + if (format == "jDDDD") return addPrefix(dayOfYear, 3); + if (format == "jDDD") return dayOfYear; + if (format == "jDDDo") return ordinalNumber(dayOfYear); + if (format == "jDDDO") return ordinalNumber(dayOfYear, "jalali", 2); //---------- Day of Month ----------// + + if (format == "DD") return addPrefix(gDate.getDate(), 2); + if (format == "D") return gDate.getDate(); + if (format == "Do" || format == "DO") return ordinalNumber(gDate.getDate(), "gregorian"); //---------- Day of Week ----------// + + if (format == "dddd") return getDayLabel(gDate, "gregorian"); + if (format == "ddd") return getDayLabel(gDate, "gregorian").slice(0, 3); + if (format == "dd") return getDayLabel(gDate, "gregorian").slice(0, 2); + dayOfWeek = getDayOfWeek(gDate, "gregorian"); + if (format == "do" || format == "dO") return ordinalNumber(dayOfWeek, "gregorian"); + if (format == "d") return dayOfWeek - 1; + if (format == "de") return dayOfWeek; //---------- Day of Year ----------// + + dayOfYear = getDayOfYear(gDate.getFullYear(), gDate.getMonth() + 1, gDate.getDate(), "g"); + if (format == "DDDD") return addPrefix(dayOfYear, 3); + if (format == "DDD") return dayOfYear; + if (format == "DDDo" || format == "DDDO") return ordinalNumber(dayOfYear, "gregorian"); + return jDate; + } } +function hour(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.hour = 0; + this.subHour(format); + } else if (format > 23) { + this.d.hour = 23; + this.addHour(format - 23); + } else { + this.d.hour = +format; + } + + return this; + } else { + var h = this.d.hour; + if (format == "H") return h; + if (format == "HH") return addPrefix(h, 2); + if (format == "k") return h || 24; + if (format == "kk") return addPrefix(h || 24, 2); + h = h > 12 ? h - 12 : h; + if (format == "h") return h; + if (format == "hh") return addPrefix(h, 2); + return h; + } +} -/***/ }), - -/***/ "./src/diff/index.js": -/*!***************************!*\ - !*** ./src/diff/index.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "diff": () => (/* reexport safe */ _diff__WEBPACK_IMPORTED_MODULE_0__.diff), -/* harmony export */ "diffForHumans": () => (/* reexport safe */ _diffForHumans__WEBPACK_IMPORTED_MODULE_1__.diffForHumans) -/* harmony export */ }); -/* harmony import */ var _diff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./diff */ "./src/diff/diff.js"); -/* harmony import */ var _diffForHumans__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./diffForHumans */ "./src/diff/diffForHumans.js"); +function minute(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.minute = 0; + this.subMinute(format); + } else if (format > 23) { + this.d.minute = 23; + this.addMinute(format - 23); + } else { + this.d.minute = +format; + } + + return this; + } else { + if (format == "m") return this.d.minute; + if (format == "mm") return addPrefix(this.d.minute, 2); + return this.d.minute; + } +} +function second(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.second = 0; + this.subSecond(format); + } else if (format > 23) { + this.d.second = 23; + this.addSecond(format - 23); + } else { + this.d.second = +format; + } + + return this; + } else { + if (format == "s") return this.d.second; + if (format == "ss") return addPrefix(this.d.second, 2); + return this.d.second; + } +} +function millisecond(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.millisecond = 0; + this.subMillisecond(format); + } else if (format > 23) { + this.d.millisecond = 23; + this.addMillisecond(format - 23); + } else { + this.d.millisecond = +format; + } + + return this; + } else { + if (format == "CCC" || format == "c") return this.d.millisecond; + if (format == "CCCC") return addPrefix(this.d.millisecond, 3); + return this.d.millisecond; + } +} +function timestamp(value) { + if (value) { + return this.fromGregorian(+String(value).trim()); + } else { + return this.toDate().getTime(); + } +} -/***/ }), +var jalali$2 = function jalali(calendar, year, month) { + if (month >= 1 && month <= 6) return 31;else if (month > 6 && month <= 11 || isLeapYear(calendar, year)) { + return 30; + } + return 29; +}; -/***/ "./src/set-get/date.js": -/*!*****************************!*\ - !*** ./src/set-get/date.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +var gregorian$2 = function gregorian(calendar, year, month) { + if ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31;else if (month != 2) return 30;else if (isLeapYear(calendar, year)) return 29; + return 28; +}; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "date": () => (/* binding */ date) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); +var getDaysInMonth = function getDaysInMonth(calendar, year, month) { + switch (calendar[0]) { + case "j": + return jalali$2(calendar, year, month); + default: + return gregorian$2(calendar, year, month); + } +}; +var getDayOfYearFormat = function getDayOfYearFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jd"; -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jD"; - default: - return "D"; - } + default: + return "d"; + } }; -function date(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - const daysInMonth = this.getDaysInMonth(); - - if (format < 1) { - this.d.date = 1; - this.subDay(format - 1); - } else if (format > daysInMonth) { - this.d.date = daysInMonth; - this.addDay(format - daysInMonth); - } else { - this.d.date = +format; - } - - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - const jDate = this.c == "jalali" ? this.d.date : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[2]; - //---------- Day of Month ----------// - if (format == "jDD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(jDate, 2); - if (format == "jD") return jDate; - if (format == "jDo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jDate); - if (format == "jDO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jDate, "jalali", 2); - //---------- Day of Week ----------// - const gDate = this.toDate(); - if (format == "jdddd" || format == "jddd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate); - if (format == "jdd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate).slice(0, 1); - let dayOfWeek = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfWeek)(gDate); - if (format == "jdo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfWeek); - if (format == "jdO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfWeek, "jalali", 2); - if (format == "jd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfWeek)(gDate, "jalali", "array"); - if (format == "jde") return dayOfWeek; - //---------- Day of Year ----------// - let dayOfYear = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfYear)(this.year("jy"), this.month("jM"), jDate, "j"); - if (format == "jDDDD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(dayOfYear, 3); - if (format == "jDDD") return dayOfYear; - if (format == "jDDDo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfYear); - if (format == "jDDDO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfYear, "jalali", 2); - //---------- Day of Month ----------// - if (format == "DD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(gDate.getDate(), 2); - if (format == "D") return gDate.getDate(); - if (format == "Do" || format == "DO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gDate.getDate(), "gregorian"); - //---------- Day of Week ----------// - if (format == "dddd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate, "gregorian"); - if (format == "ddd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate, "gregorian").slice(0, 3); - if (format == "dd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate, "gregorian").slice(0, 2); - dayOfWeek = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfWeek)(gDate, "gregorian"); - if (format == "do" || format == "dO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfWeek, "gregorian"); - if (format == "d") return dayOfWeek - 1; - if (format == "de") return dayOfWeek; - //---------- Day of Year ----------// - dayOfYear = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfYear)( - gDate.getFullYear(), - gDate.getMonth() + 1, - gDate.getDate(), - "g" - ); - if (format == "DDDD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(dayOfYear, 3); - if (format == "DDD") return dayOfYear; - if (format == "DDDo" || format == "DDDO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfYear, "gregorian"); - return jDate; - } +function getWeeksInYear(year) { + var dayOfYearFormat = getDayOfYearFormat(this.c); + var firstOfYear = this.clone().parse(year); + var firstOfYearDay = firstOfYear.date(dayOfYearFormat); + var lastOfYear = firstOfYear.clone().endOf("year").startOf("day"); + var lastOfYearDay = lastOfYear.date(dayOfYearFormat); + if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);else firstOfYear.subDay(firstOfYearDay); + if (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay);else lastOfYear.subDay(lastOfYearDay); + return Math.ceil(lastOfYear.diff(firstOfYear, "date") / 7); } +function startOf(unit) { + this.d.millisecond = 0; + if (unit[0] == "s") return this; + this.d.second = 0; + if (unit == "m" || unit == "minute") return this; + this.d.minute = 0; + if (unit[0] == "h") return this; + this.d.hour = 0; + if (unit[0] == "d") return this; + if (unit[0] == "w") return this.subDay(getDayOfWeek(this.toDate(), this.c, "array")); + this.d.date = 1; + if (unit[0] == "q") return this.quarter(this.quarter()); + if (unit == "M" || unit == "month") return this; + this.d.month = 1; + if (unit[0] == "y") return this; +} -/***/ }), - -/***/ "./src/set-get/endOf.js": -/*!******************************!*\ - !*** ./src/set-get/endOf.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function endOf(unit) { + this.d.millisecond = 999; + if (unit[0] == "s") return this; + this.d.second = 59; + if (unit == "m" || unit == "minute") return this; + this.d.minute = 59; + if (unit[0] == "h") return this; + this.d.hour = 23; + if (unit[0] == "d") return this; + if (unit[0] == "w") return this.addDay(7 - getDayOfWeek(this.toDate(), this.c)); + + if (unit[0] == "q") { + this.quarter(this.quarter()).addMonth(2); + this.d.date = this.getDaysInMonth(); + return this; + } + + this.d.date = this.getDaysInMonth(); + if (unit == "M" || unit == "month") return this; + this.d.month = 12; + this.d.date = this.getDaysInMonth(); + if (unit[0] == "y") return this; +} -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "endOf": () => (/* binding */ endOf) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); +function time() { + for (var _len = arguments.length, t = new Array(_len), _key = 0; _key < _len; _key++) { + t[_key] = arguments[_key]; + } + if (!t.length) return this.toArray().slice(3); + var times = []; + if (isPersianDate(t[0])) times = t[0].time();else if (isDate(t[0])) times = [t[0].getHours(), t[0].getMinutes(), t[0].getSeconds(), t[0].getMilliseconds()];else if (Object.prototype.toString.call(t[0]) === "[object Object]") times = [t[0].h || t[0].hour || t[0].hours || 0, t[0].m || t[0].minute || t[0].minutes || 0, t[0].s || t[0].second || t[0].seconds || 0, t[0].ms || t[0].millisecond || t[0].milliseconds || 0];else times = typesToArray.apply(void 0, [this.c].concat(t)); -function endOf(unit) { - this.d.millisecond = 999; - if (unit[0] == "s") return this; - this.d.second = 59; - if (unit == "m" || unit == "minute") return this; - this.d.minute = 59; - if (unit[0] == "h") return this; - this.d.hour = 23; - if (unit[0] == "d") return this; - if (unit[0] == "w") - return this.addDay(7 - (0,_base__WEBPACK_IMPORTED_MODULE_0__.getDayOfWeek)(this.toDate(), this.c)); - if (unit[0] == "q") { - this.quarter(this.quarter()).addMonth(2); - this.d.date = this.getDaysInMonth(); - return this; - } - this.d.date = this.getDaysInMonth(); - if (unit == "M" || unit == "month") return this; - this.d.month = 12; - this.d.date = this.getDaysInMonth(); - if (unit[0] == "y") return this; + if (this.isValidTime.apply(this, _toConsumableArray(times))) { + return this.hour(times[0] || 0).minute(times[1] || 0).second(times[2] || 0).millisecond(times[3] || 0); + } else return "زمان نامعتبر"; } +/** + * get the day of the year + * @param {Null|String|Number} year - the year of date + * @param {Null|Number|String} month - the month of date that gives the day of the year + * @param {Null|Number|String} day - the day of date that gives the day of the year + * @param {Null|Number|String} calendar - the calendar + * @returns {Number} the day of the year + */ -/***/ }), +var getDayOfYear = function getDayOfYear(year, month, day, calendar) { + //plus sign before a variable, convert variable to int + month = +month; + day = +day; -/***/ "./src/set-get/getDaysInMonth.js": -/*!***************************************!*\ - !*** ./src/set-get/getDaysInMonth.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + while (--month != 0) { + day += getDaysInMonth(calendar, year, month); + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDaysInMonth": () => (/* binding */ getDaysInMonth) -/* harmony export */ }); -/* harmony import */ var _comparison_isLeapYear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../comparison/isLeapYear */ "./src/comparison/isLeapYear.js"); + return day; +}; +var dayOfYearFormat = function dayOfYearFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jd"; -const jalali = (calendar, year, month) => { - if (month >= 1 && month <= 6) return 31; - else if ((month > 6 && month <= 11) || (0,_comparison_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)(calendar, year)) { - return 30; - } - return 29; + default: + return "d"; + } }; +/** + * get the week of the year + * @param {Null|Number|String} year - the year of date that gives the week of the year + * @param {Null|Number|String} month - the month of date that gives the week of the year + * @param {Null|Number|String} day - the day of date that gives the week of the year + * @param {String} calendar - the calendar + * @returns {Number} the week of the year + */ -const gregorian = (calendar, year, month) => { - if ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31; - else if (month != 2) return 30; - else if ((0,_comparison_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)(calendar, year)) return 29; - return 28; -}; -const getDaysInMonth = function (calendar, year, month) { - switch (calendar[0]) { - case "j": - return jalali(calendar, year, month); - default: - return gregorian(calendar, year, month); - } +var getWeekOfYear = function getWeekOfYear(year, month, day, calendar) { + var firstOfYear = this.clone().calendar(calendar).parse(year); + var firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar)); + var date = firstOfYear.clone().parse(year, month, day); + if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay); + var weekNumber = Math.ceil(date.diff(firstOfYear, "date", true) / 7); + var weeksInYear = date.clone().getWeeksInYear(); + return weekNumber > weeksInYear ? weeksInYear : weekNumber; }; +/** + * compare the dates + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object} date - the date + * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare + * @returns {‌Boolean} if date valid, return true of false + */ -/***/ }), - -/***/ "./src/set-get/getWeeksInYear.js": -/*!***************************************!*\ - !*** ./src/set-get/getWeeksInYear.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getWeeksInYear": () => (/* binding */ getWeeksInYear) -/* harmony export */ }); -const getDayOfYearFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jd"; - default: - return "d"; - } +var compare = function compare(date, operator) { + date = typesToArray.apply(void 0, [this.c].concat(_toConsumableArray(date))); + if (this.isValid.apply(this, _toConsumableArray(date))) return eval("this.timestamp()" + operator + "this.clone().parse(...date).timestamp()"); + return false; }; -function getWeeksInYear(year) { - const dayOfYearFormat = getDayOfYearFormat(this.c); +/** + * do the math operation on dates + * @since 1.4.0 + * @param {...String|PersianDate|Date|Array|Object} values - the dates + * @param {'min'|'max'} operation - the operation + * @returns {*} return maximum date + * @throws {false} if parameters not send or parameters is invalid, return false + */ - const firstOfYear = this.clone().parse(year); - const firstOfYearDay = firstOfYear.date(dayOfYearFormat); - const lastOfYear = firstOfYear.clone().endOf("year").startOf("day"); - const lastOfYearDay = lastOfYear.date(dayOfYearFormat); +var mathOperation = function mathOperation(values, operation) { + var _this = this; - if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay); - else firstOfYear.subDay(firstOfYearDay); + if (!values.length) { + return false; + } - if (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay); - else lastOfYear.subDay(lastOfYearDay); + var args = _toConsumableArray(values); - return Math.ceil(lastOfYear.diff(firstOfYear, "date") / 7); -} + var argsNumber = args.map(function (date) { + var _this$clone; + date = typesToArray(_this.c, date); + if (_this.isValid.apply(_this, _toConsumableArray(date))) return (_this$clone = _this.clone()).parse.apply(_this$clone, _toConsumableArray(date)).timestamp(); + return false; + }); + if (argsNumber.includes(false)) return false; + return args[argsNumber.indexOf(Math[operation].apply(Math, _toConsumableArray(argsNumber)))]; +}; -/***/ }), +/** + * check the input is timestamp + * @since 2.0.0 + * @param {Number|String} timestamp - input that must be checked + * @returns {Boolean} if input was timestamp, return true + */ +var isTimestamp = function isTimestamp(timestamp) { + return !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0; +}; -/***/ "./src/set-get/hour.js": -/*!*****************************!*\ - !*** ./src/set-get/hour.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function now() { + var date = new Date(); -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "hour": () => (/* binding */ hour) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + if (this.c == "jalali") { + setJalaliDate.call(this, date); + } else { + setGregorianDate.call(this, date); + } + return this; +} +function parse() { + if (this.c == "jalali") { + return this.fromJalali.apply(this, arguments); + } else { + return this.fromGregorian.apply(this, arguments); + } +} -function hour(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.hour = 0; - this.subHour(format); - } else if (format > 23) { - this.d.hour = 23; - this.addHour(format - 23); - } else { - this.d.hour = +format; - } - - return this; - } else { - let h = this.d.hour; - if (format == "H") return h; - if (format == "HH") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(h, 2); - if (format == "k") return h || 24; - if (format == "kk") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(h || 24, 2); - h = h > 12 ? h - 12 : h; - if (format == "h") return h; - if (format == "hh") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(h, 2); - return h; - } +function clone() { + return Object.assign(Object.create(Object.getPrototypeOf(this)), JSON.parse(JSON.stringify(this))); +} + +function fromJalali() { + for (var _len = arguments.length, date = new Array(_len), _key = 0; _key < _len; _key++) { + date[_key] = arguments[_key]; + } + + if (!date.length) date = gtj();else date = typesToArray.apply(void 0, ["jalali"].concat(_toConsumableArray(date))); + + if (this.c == "jalali") { + this.d.year = +date[0]; + this.d.month = +date[1] || 1; + this.d.date = +date[2] || 1; + this.d.hour = +date[3] || 0; + this.d.minute = +date[4] || 0; + this.d.second = +date[5] || 0; + this.d.millisecond = +date[6] || 0; + } else { + setGregorianDate.call(this, jtg.apply(void 0, _toConsumableArray(date))); + } + + if (!this.isValid()) return invalid.call(this, "تاریخ نامعتبر"); + return this; } +function fromGregorian() { + for (var _len = arguments.length, date = new Array(_len), _key = 0; _key < _len; _key++) { + date[_key] = arguments[_key]; + } + + if (!date.length) date[0] = new Date().getTime();else if (this.isPersianDate(date[0])) { + date = date[0].clone().calendar("g").toArray(); + } else if (!isTimestamp(date[0])) { + date = typesToArray.apply(void 0, ["gregorian"].concat(_toConsumableArray(date))); + date[6] = +date[6] || 0; + date[5] = +date[5] || 0; + date[4] = +date[4] || 0; + date[3] = +date[3] || 0; + date[2] = +date[2] || 1; + date[1] = +date[1] || 1; + date[0] = +date[0]; + } + + if (date.length > 1) { + if (!isValid.apply(void 0, ["gregorian"].concat(_toConsumableArray(date)))) return invalid.call(this, "تاریخ نامعتبر"); + --date[1]; // this is month; becuse the Date get month from 0, subtract one + } + + date = _construct(Date, _toConsumableArray(date)); + if (date == "Invalid Date") return invalid.call(this, "تاریخ نامعتبر"); + + if (this.c == "jalali") { + setJalaliDate.call(this, date); + } else { + setGregorianDate.call(this, date); + } + + return this; +} -/***/ }), +function calendar(c) { + if (!c) return this.c; -/***/ "./src/set-get/index.js": -/*!******************************!*\ - !*** ./src/set-get/index.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (c[0] == "j" && this.c[0] != "j") { + if (!this.error) setJalaliDate.call(this, this.toDate()); + this.c = "jalali"; + } else if (c[0] == "g" && this.c[0] != "g") { + if (!this.error) setGregorianDate.call(this, this.toDate()); + this.c = "gregorian"; + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "year": () => (/* reexport safe */ _year__WEBPACK_IMPORTED_MODULE_0__.year), -/* harmony export */ "quarter": () => (/* reexport safe */ _quarter__WEBPACK_IMPORTED_MODULE_1__.quarter), -/* harmony export */ "month": () => (/* reexport safe */ _month__WEBPACK_IMPORTED_MODULE_2__.month), -/* harmony export */ "week": () => (/* reexport safe */ _week__WEBPACK_IMPORTED_MODULE_3__.week), -/* harmony export */ "date": () => (/* reexport safe */ _date__WEBPACK_IMPORTED_MODULE_4__.date), -/* harmony export */ "hour": () => (/* reexport safe */ _hour__WEBPACK_IMPORTED_MODULE_5__.hour), -/* harmony export */ "minute": () => (/* reexport safe */ _minute__WEBPACK_IMPORTED_MODULE_6__.minute), -/* harmony export */ "second": () => (/* reexport safe */ _second__WEBPACK_IMPORTED_MODULE_7__.second), -/* harmony export */ "millisecond": () => (/* reexport safe */ _millisecond__WEBPACK_IMPORTED_MODULE_8__.millisecond), -/* harmony export */ "timestamp": () => (/* reexport safe */ _timestamp__WEBPACK_IMPORTED_MODULE_9__.timestamp), -/* harmony export */ "getDaysInMonth": () => (/* reexport safe */ _getDaysInMonth__WEBPACK_IMPORTED_MODULE_10__.getDaysInMonth), -/* harmony export */ "getWeeksInYear": () => (/* reexport safe */ _getWeeksInYear__WEBPACK_IMPORTED_MODULE_11__.getWeeksInYear), -/* harmony export */ "startOf": () => (/* reexport safe */ _startOf__WEBPACK_IMPORTED_MODULE_12__.startOf), -/* harmony export */ "endOf": () => (/* reexport safe */ _endOf__WEBPACK_IMPORTED_MODULE_13__.endOf), -/* harmony export */ "time": () => (/* reexport safe */ _time__WEBPACK_IMPORTED_MODULE_14__.time) -/* harmony export */ }); -/* harmony import */ var _year__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./year */ "./src/set-get/year.js"); -/* harmony import */ var _quarter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quarter */ "./src/set-get/quarter.js"); -/* harmony import */ var _month__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./month */ "./src/set-get/month.js"); -/* harmony import */ var _week__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./week */ "./src/set-get/week.js"); -/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date */ "./src/set-get/date.js"); -/* harmony import */ var _hour__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hour */ "./src/set-get/hour.js"); -/* harmony import */ var _minute__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./minute */ "./src/set-get/minute.js"); -/* harmony import */ var _second__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./second */ "./src/set-get/second.js"); -/* harmony import */ var _millisecond__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./millisecond */ "./src/set-get/millisecond.js"); -/* harmony import */ var _timestamp__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./timestamp */ "./src/set-get/timestamp.js"); -/* harmony import */ var _getDaysInMonth__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getDaysInMonth */ "./src/set-get/getDaysInMonth.js"); -/* harmony import */ var _getWeeksInYear__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./getWeeksInYear */ "./src/set-get/getWeeksInYear.js"); -/* harmony import */ var _startOf__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./startOf */ "./src/set-get/startOf.js"); -/* harmony import */ var _endOf__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./endOf */ "./src/set-get/endOf.js"); -/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./time */ "./src/set-get/time.js"); + return this; +} +function addYear(year, checkDate) { + // if the number was negative, send to subYear method + if (year < 0) return this.subYear(Math.abs(year)); + this.d.year += +year; //plus sign before a variable, convert variable to int + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } + return this; +} +function addQuarter(quarter, checkDate) { + // if the number was negative, send to subQuarter method + if (quarter < 0) return this.subQuarter(Math.abs(quarter)); + return this.addMonth(+quarter * 3, checkDate); +} +function addMonth(month, checkDate) { + if (month < 0) // if the number was negative, send to subMonth method + return this.subMonth(Math.abs(month)); + month = +month; // plus sign before a variable, convert variable to int + + var monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year + + if (monthToStartNewYear > month) { + this.d.month += month; + } else { + this.addYear(1, false); + this.d.month = 1; + month -= monthToStartNewYear; + + while (month >= 12) { + month -= 12; + this.addYear(1, false); + } + + if (month != 0) { + this.d.month += month; + } + } + + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } + + return this; +} +function addWeek(week, checkDate) { + // if the number was negative, send to subWeek method + if (week < 0) return this.subWeek(Math.abs(week)); + return this.addDay(+week * 7, checkDate); +} +function addDay(day) { + if (day < 0) // if the number was negative, send to subDay method + return this.subDay(Math.abs(day)); + day = +day; //plus sign before a variable, convert variable to int + + var dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month + + if (dayToStartNextMonth > day) { + this.d.date += day; + } else { + this.addMonth(1, false); + this.d.date = 1; + day -= dayToStartNextMonth; + var daysInMonth = this.getDaysInMonth(); + + while (day >= daysInMonth) { + day -= daysInMonth; + this.addMonth(1, false); + daysInMonth = this.getDaysInMonth(); + } + + if (day != 0) { + this.d.date += day; + } + } + + return this; +} +function addHour(hour) { + if (hour < 0) // if the number was negative, send to subHour method + return this.subHour(Math.abs(hour)); + hour = +hour; //plus sign before a variable, convert variable to int + while (hour >= 24) { + hour -= 24; + this.addDay(1, false); + } + var hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day + if (hour >= hourToNextDay) { + this.addDay(1, false); + hour -= hourToNextDay; + this.d.hour = hour; + } else this.d.hour += hour; + return this; +} +function addMinute(minute) { + if (minute < 0) // if the number was negative, send to subMinute method + return this.subMinute(Math.abs(minute)); + minute = +minute; //plus sign before a variable, convert variable to int + while (minute >= 60) { + this.addHour(1, false); + minute -= 60; + } + var minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour + if (minute >= minuteToNextHour) { + this.addHour(1, false); + minute -= minuteToNextHour; + this.d.minute = minute; + } else this.d.minute += minute; -/***/ }), + return this; +} -/***/ "./src/set-get/millisecond.js": -/*!************************************!*\ - !*** ./src/set-get/millisecond.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function addSecond(second) { + if (second < 0) // if the number was negative, send to subSecond method + return this.subSecond(Math.abs(second)); + second = +second; //plus sign before a variable, convert variable to int -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "millisecond": () => (/* binding */ millisecond) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + while (second >= 60) { + this.addMinute(1, false); + second -= 60; + } + var secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute + if (second >= secondToNextMinute) { + this.addMinute(1, false); + second -= secondToNextMinute; + this.d.second = second; + } else this.d.second += second; -function millisecond(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.millisecond = 0; - this.subMillisecond(format); - } else if (format > 23) { - this.d.millisecond = 23; - this.addMillisecond(format - 23); - } else { - this.d.millisecond = +format; - } - - return this; - } else { - if (format == "CCC" || format == "c") return this.d.millisecond; - if (format == "CCCC") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(this.d.millisecond, 3); - return this.d.millisecond; - } + return this; } +function addMillisecond(millisecond) { + if (millisecond < 0) // if the number was negative, send to subMillisecond method + return this.subMillisecond(Math.abs(millisecond)); + millisecond = +millisecond; //plus sign before a variable, convert variable to int -/***/ }), + while (millisecond >= 1000) { + this.addSecond(1, false); + millisecond -= 1000; + } -/***/ "./src/set-get/minute.js": -/*!*******************************!*\ - !*** ./src/set-get/minute.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "minute": () => (/* binding */ minute) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + if (millisecond >= millisecondToNextSecond) { + this.addSecond(1, false); + millisecond -= millisecondToNextSecond; + this.d.millisecond = millisecond; + } else this.d.millisecond += millisecond; + return this; +} +function subYear(year, checkDate) { + this.d.year -= Math.abs(year); -function minute(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.minute = 0; - this.subMinute(format); - } else if (format > 23) { - this.d.minute = 23; - this.addMinute(format - 23); - } else { - this.d.minute = +format; - } - - return this; - } else { - if (format == "m") return this.d.minute; - if (format == "mm") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(this.d.minute, 2); - return this.d.minute; - } + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } + + return this; } +function subQuarter(quarter, checkDate) { + quarter = Math.abs(quarter); + return this.subMonth(quarter * 3, checkDate); +} -/***/ }), +function subMonth(month, checkDate) { + month = Math.abs(month); //plus sign before a variable, convert variable to int -/***/ "./src/set-get/month.js": -/*!******************************!*\ - !*** ./src/set-get/month.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var pastMonth = this.d.month; //pastMonth -> Number of month that is past -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "month": () => (/* binding */ month) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + if (pastMonth > month) { + this.d.month -= month; + } else { + this.subYear(1, false); + this.d.month = 12; + month -= pastMonth; + while (month >= 12) { + this.subYear(1, false); + month -= 12; + } + if (month != 0) { + this.d.month -= month; + } + } -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jM"; - default: - return "M"; - } -}; + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } -function month(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 1) { - this.d.month = 1; - this.subMonth(format - 1, false); - } else if (format > 12) { - this.d.month = 12; - this.addMonth(format - 12, false); - } else { - this.d.month = +format; - } - - while (!this.isValidDate()) { - this.subDay(1, false); - } - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - const jMonth = this.c == "jalali" ? this.d.month : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[1]; - if (format == "jMM") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(jMonth, 2); - if (format == "jM") return jMonth; - if (format == "jMMMM" || format == "jMMM") - return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR.jalali.months[jMonth]; - if (format == "jMo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jMonth); - if (format == "jMO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jMonth, "jalali", 2); - - const gMonth = - this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1; - if (format == "M") return gMonth; - if (format == "MM") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(gMonth, 2); - if (format == "MMMM") return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR.gregorian.months[gMonth]; - if (format == "Mo" || format == "MO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gMonth, "gregorian"); - if (format == "MMM") - return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR.gregorian.months[gMonth].slice(0, 3); - - return jMonth; - } + return this; } +function subWeek(week, checkDate) { + week = Math.abs(week); + return this.subDay(week * 7, checkDate); +} -/***/ }), - -/***/ "./src/set-get/quarter.js": -/*!********************************!*\ - !*** ./src/set-get/quarter.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function subDay(day) { + day = Math.abs(day); + var pastDays = this.d.date; // pastDays -> Number of days that is past + + if (pastDays > day) { + this.d.date -= day; + } else { + this.subMonth(1, false); + var daysInMonth = this.getDaysInMonth(); + this.d.date = daysInMonth; + day -= pastDays; + + while (day >= daysInMonth) { + day -= daysInMonth; + this.subMonth(1, false); + daysInMonth = this.getDaysInMonth(); + } + + this.d.date = daysInMonth - day; + } + + return this; +} -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "quarter": () => (/* binding */ quarter) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); +function subHour(hour) { + hour = Math.abs(hour); + while (hour >= 24) { + hour -= 24; + this.subDay(1, false); + } + var pastHours = this.d.hour; // pastHours -> Number of hours that is past -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jQ"; - default: - return "Q"; - } -}; + if (hour > pastHours) { + this.subDay(1, false); + hour -= pastHours; + this.d.hour = 24 - hour; + } else this.d.hour -= hour; -function quarter(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 1) { - this.d.month = 1; - this.subQuarter(format - 1, false); - } else if (format > 4) { - this.d.month = 12; - this.addQuarter(format - 4, false); - } else { - this.d.month = +format * 3 - 2; - } - while (!this.isValidDate()) { - this.subDay(1, false); - } - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - let jQuarter = Math.ceil( - (this.c == "jalali" ? this.d.month : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[1]) / 3 - ); - if (format == "jQ") return jQuarter; - if (format == "jQo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jQuarter); - if (format == "jQO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jQuarter, "jalali", 2); - - const gQuarter = Math.ceil( - (this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1) / 3 - ); - if (format == "Q") return gQuarter; - if (format == "Qo" || format == "QO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gQuarter, "gregorian"); - - return jQuarter; - } + return this; } +function subMinute(minute) { + minute = Math.abs(minute); -/***/ }), - -/***/ "./src/set-get/second.js": -/*!*******************************!*\ - !*** ./src/set-get/second.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "second": () => (/* binding */ second) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + while (minute >= 60) { + minute -= 60; + this.subHour(1, false); + } + var pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past + if (minute > pastMinute) { + this.subHour(1, false); + minute -= pastMinute; + this.d.minute = 60 - minute; + } else this.d.minute -= minute; -function second(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.second = 0; - this.subSecond(format); - } else if (format > 23) { - this.d.second = 23; - this.addSecond(format - 23); - } else { - this.d.second = +format; - } - - return this; - } else { - if (format == "s") return this.d.second; - if (format == "ss") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(this.d.second, 2); - return this.d.second; - } + return this; } +function subSecond(second) { + second = Math.abs(second); -/***/ }), - -/***/ "./src/set-get/startOf.js": -/*!********************************!*\ - !*** ./src/set-get/startOf.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + while (second >= 60) { + second -= 60; + this.subMinute(1, false); + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "startOf": () => (/* binding */ startOf) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + var pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past + if (second > pastSeconds) { + this.subMinute(1, false); + second -= pastSeconds; + this.d.second = 60 - second; + } else this.d.second -= second; -function startOf(unit) { - this.d.millisecond = 0; - if (unit[0] == "s") return this; - this.d.second = 0; - if (unit == "m" || unit == "minute") return this; - this.d.minute = 0; - if (unit[0] == "h") return this; - this.d.hour = 0; - if (unit[0] == "d") return this; - if (unit[0] == "w") - return this.subDay((0,_base__WEBPACK_IMPORTED_MODULE_0__.getDayOfWeek)(this.toDate(), this.c, "array")); - this.d.date = 1; - if (unit[0] == "q") return this.quarter(this.quarter()); - if (unit == "M" || unit == "month") return this; - this.d.month = 1; - if (unit[0] == "y") return this; + return this; } +function subMillisecond(millisecond) { + millisecond = Math.abs(millisecond); -/***/ }), - -/***/ "./src/set-get/time.js": -/*!*****************************!*\ - !*** ./src/set-get/time.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "time": () => (/* binding */ time) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); - - - -function time(...t) { - if (!t.length) return this.toArray().slice(3); - let times = []; - if ((0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isPersianDate)(t[0])) times = t[0].time(); - else if ((0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isDate)(t[0])) - times = [ - t[0].getHours(), - t[0].getMinutes(), - t[0].getSeconds(), - t[0].getMilliseconds(), - ]; - else if (Object.prototype.toString.call(t[0]) === "[object Object]") - times = [ - t[0].h || t[0].hour || t[0].hours || 0, - t[0].m || t[0].minute || t[0].minutes || 0, - t[0].s || t[0].second || t[0].seconds || 0, - t[0].ms || t[0].millisecond || t[0].milliseconds || 0, - ]; - else times = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...t); - if (this.isValidTime(...times)) { - return this.hour(times[0] || 0) - .minute(times[1] || 0) - .second(times[2] || 0) - .millisecond(times[3] || 0); - } else return "زمان نامعتبر"; -} - + while (millisecond >= 1000) { + millisecond -= 1000; + this.subSecond(1, false); + } -/***/ }), + var pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past -/***/ "./src/set-get/timestamp.js": -/*!**********************************!*\ - !*** ./src/set-get/timestamp.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (millisecond > pastMilliseconds) { + this.subSecond(1, false); + millisecond -= pastMilliseconds; + this.d.millisecond = 1000 - millisecond; + } else this.d.millisecond -= millisecond; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "timestamp": () => (/* binding */ timestamp) -/* harmony export */ }); -function timestamp(value) { - if (value) { - return this.fromGregorian(+String(value).trim()); - } else { - return this.toDate().getTime(); - } + return this; } +var jalali$1 = function jalali(format) { + return format.replace(/\?/g, "j").replace(/datetime/gi, "jYYYY/jMM/jDD HH:mm").replace(/date/gi, "jYYYY/jMM/jDD").replace(/time/gi, "HH:mm"); +}; -/***/ }), +var gregorian$1 = function gregorian(format) { + return format.replace(/\?/g, "").replace(/datetime/gi, "YYYY-MM-DD HH:mm").replace(/date/gi, "YYYY-MM-DD").replace(/time/gi, "HH:mm"); +}; -/***/ "./src/set-get/week.js": -/*!*****************************!*\ - !*** ./src/set-get/week.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function toString(format) { + var rawTexts = []; + format = format.replace(REGEX["betweenBacktick"], function (_matched, text) { + rawTexts.push(text); + return "###"; + }); + + switch (this.c[0]) { + case "j": + format = jalali$1(format); + break; + + default: + format = gregorian$1(format); + } + + var matchedFormats = format.match(REGEX["format"]); + var dateString = ""; + + var _iterator = _createForOfIteratorHelper(matchedFormats), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _i = _step.value; + dateString += format.substring(0, format.indexOf(_i)); + if (_i.search(/Y|y/) != -1) dateString += this.year(_i);else if (_i.search(/M/) != -1) dateString += this.month(_i);else if (_i.search(/Q/) != -1) dateString += this.quarter(_i);else if (_i.search(/D|d/) != -1) dateString += this.date(_i);else if (_i.search(/W|w/) != -1) dateString += this.week(_i);else if (_i.search(/H|h|k/) != -1) dateString += this.hour(_i);else if (_i.search(/m/) != -1) dateString += this.minute(_i);else if (_i.search(/s/) != -1) dateString += this.second(_i);else if (_i.search(/c|C/) != -1) dateString += this.millisecond(_i);else if (_i.search(/t/) != -1) dateString += this.timestamp();else if (_i.search(/a|A/) != -1) dateString += TIMETYPE(this.d.hour, _i); + format = format.substr(format.indexOf(_i) + _i.length); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + dateString += format; + + for (var i = 0; i < rawTexts.length; i++) { + dateString = dateString.replace("###", rawTexts[i]); + } + + return String(dateString); +} -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "week": () => (/* binding */ week) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); +function toArray() { + if (!arguments.length) { + return Object.values(this.d); + } + var formats = typesToArray.apply(void 0, [this.c].concat(Array.prototype.slice.call(arguments))); + return [this.year(formats[0]), this.month(formats[1]), this.date(formats[2]), this.hour(formats[3]), this.minute(formats[4]), this.second(formats[5]), this.millisecond(formats[6])]; +} +function toObject() { + if (!arguments.length) { + return this.d; + } + + var formats = typesToArray.apply(void 0, [this.c].concat(Array.prototype.slice.call(arguments))); + return { + year: this.year(formats[0]), + month: this.month(formats[1]), + date: this.date(formats[2]), + hour: this.hour(formats[3]), + minute: this.minute(formats[4]), + second: this.second(formats[5]), + millisecond: this.millisecond(formats[6]) + }; +} -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jw"; - default: - return "w"; - } +var jalali = function jalali(date) { + return jtg.apply(void 0, _toConsumableArray(date)); }; -function week(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - const weeksInYear = this.getWeeksInYear(); - if (format < 1) { - this.week(1); - this.subWeek(format - 1, false); - } else if (format > weeksInYear) { - this.week(weeksInYear); - this.addWeek(format - weeksInYear, false); - } else { - const weekOfYear = _base__WEBPACK_IMPORTED_MODULE_1__.getWeekOfYear.call( - this, - this.d.year, - this.d.month, - this.d.date, - this.c - ); - this.addWeek(+format - weekOfYear); - } - - while (!this.isValidDate()) { - this.subDay(1, false); - } - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - const jWeekOfYear = _base__WEBPACK_IMPORTED_MODULE_1__.getWeekOfYear.call( - this, - this.year("jy"), - this.month("jM"), - this.date("jD"), - this.c - ); - if (format == "jw" || format == "jW") return jWeekOfYear; - if (format == "jww" || format == "jWW") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(jWeekOfYear, 2); - if (format == "jwo" || format == "jWo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jWeekOfYear); - if (format == "jwO" || format == "jWO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jWeekOfYear, "jalali", 2); - - const gWeekOfYear = _base__WEBPACK_IMPORTED_MODULE_1__.getWeekOfYear.call( - this, - this.year("y"), - this.month("M"), - this.date("D"), - "gregorian" - ); - if (format == "w" || format == "W") return gWeekOfYear; - if (format == "ww" || format == "WW") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(gWeekOfYear, 2); - if (format == "wo" || format == "Wo" || format == "wO" || format == "WO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gWeekOfYear, "gregorian"); - return jWeekOfYear; - } -} +var gregorian = function gregorian(date) { + --date[1]; + return _construct(Date, _toConsumableArray(date)); +}; +function toDate() { + switch (this.c[0]) { + case "j": + return jalali(this.toArray()); -/***/ }), + default: + return gregorian(this.toArray()); + } +} -/***/ "./src/set-get/year.js": -/*!*****************************!*\ - !*** ./src/set-get/year.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +function diff(date, unit, addOne) { + var _this$clone; + + date = typesToArray(this.c, date); + if (!this.isValid.apply(this, _toConsumableArray(date))) return "تاریخ نامعتبر"; + + var result = this.timestamp() - (_this$clone = this.clone()).parse.apply(_this$clone, _toConsumableArray(date)).timestamp(); + + switch (unit) { + case "y": + case "year": + case "years": + result = this.d.year - date[0]; + break; + + case "M": + case "month": + case "months": + result = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]); + break; + + case "d": + case "date": + case "day": + case "days": + result = Math.ceil(result / 1000 / 60 / 60 / 24); + break; + + case "h": + case "hour": + case "hours": + result = Math.ceil(result / 1000 / 60 / 60); + break; + + case "m": + case "minute": + case "minutes": + result = Math.ceil(result / 1000 / 60); + break; + + case "s": + case "second": + case "seconds": + result = Math.ceil(result / 1000); + break; + } + + return addOne ? result + (result >= 0 ? 1 : -1) : result; +} -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "year": () => (/* binding */ year) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); +function diffForHumans(date, suffix) { + var result = this.diff(date, "s"); + if (typeof result == "string") return "تاریخ نامعتبر"; + var prefix = suffix && (result > 0 ? "آینده" : "پیش"); + result = Math.abs(result); + if (result == 0) return "هم اکنون";else if (result < 45) result = "لحظات";else if ((result /= 60) < 45) // divide by 60, for getting minute + result = Math.round(result) + " " + "دقیقه";else if ((result /= 60) < 23.5) // divide by 60, for getting hour + result = Math.round(result) + " " + "ساعت";else if ((result /= 24) < 26) // divide by 24, for getting day + result = Math.round(result) + " " + "روز";else if (result < 320) result = Math.round(result / 30) + " " + "ماه";else result = Math.round(result / 365) + " " + "سال"; + return result + (suffix ? " " + prefix : ""); +} +////////////////////---------- Are You Ready? ----------//////////////////// +/** + * A Date library for working with persian date + * @class + * @param {Date|Array|Null|Object|String} date - the date that convert to persian date + * @param {String} [calendar='jalali'] - the calendar + */ +var PersianDate = function PersianDate(dateVal, calendarVal) { + /** + * keeps the date and time + * @type {Object} + * @property {Number} year - the year of date + * @property {Number} month - the month of date + * @property {Number} date - the day of month of date + * @property {Number} hour - the hour of time + * @property {Number} minute - the minute of time + * @property {Number} second - the second of time + * @property {Number} millisecond - the millisecond of time + * @property {Number} gregorian - the gregorian date + */ + + this.d = {}; + /** + * the calendar type + * @type {String} + * @default "jalali" + * @example jalali | gregorian + */ + + this.c = "jalali"; ////////////////////--------- create & parse ---------///////////////////// + + /** + * make current date in persian calendar + * @returns {PersianDate} make current date and return class + */ + + PersianDate.prototype.now = function () { + if (this.error) { + delete this.error; + this.d = {}; + } + + return now.call(this); + }; + /** + * set persian date from Gregorian date + * @deprecated + * @param {...Number|Date|Array|Null} date - the date that convert to persian date + * @returns {PersianDate} return class with persian date + * @throws {PersianDate|String} if date invalid return class with error property with error property + */ + + + PersianDate.prototype.setDate = function () { + warn('"setDate" function is deprecated! use "fromGregorian" function instead.\n' + "https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date"); + return this.fromGregorian.apply(this, arguments); + }; + /** + * convert a jalali or gregorian date to PersianDate instance + * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {PersianDate} return class with persian date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.parse = function () { + return parse.call.apply(parse, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * get clone of this date + * @since 1.1.0 + * @returns {PersianDate} returns the clone of this date + */ + + + PersianDate.prototype.clone = function () { + return clone.call(this); + }; + /** + * convert a jalali date to PersianDate instance + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {PersianDate} return class with persian date + * @throws {PersianDate} if date invalid return class with error + */ + + + PersianDate.prototype.fromJalali = function () { + if (this.error) { + delete this.error; + this.d = {}; + } + + return fromJalali.call.apply(fromJalali, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * convert a gregorian date to PersianDate instance + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {PersianDate} return class with persian date + * @throws {PersianDate} if date invalid return class with error + */ + + + PersianDate.prototype.fromGregorian = function () { + if (this.error) { + delete this.error; + this.d = {}; + } + + return fromGregorian.call.apply(fromGregorian, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * convert a gregorian date to PersianDate instance + * @since 2.0.0 + * @param {"j"|"jalali"|"g"|"gregorian"} calendar - the calendar + * @returns {PersianDate} return class with persian date + */ + + + PersianDate.prototype.calendar = function (calendar$1) { + return calendar.call(this, calendar$1); + }; ////////////////////--------- set & get ---------///////////////////// + + /** + * get or set year + * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting + * @returns {PersianDate|String|Number} if set the year, returns class, + * else returns a number or string from year + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.year = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return year.call(this, format); + }; + /** + * get or set month + * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting + * @returns {PersianDate|String|Number} if set the month, returns class, + * else returns a number or string from month + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.month = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return month.call(this, format); + }; + /** + * get or set day in month + * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting + * @returns {PersianDate|String|Number} if set the day, returns class, + * else returns a number or string from day + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.date = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return date.call(this, format); + }; + /** + * get or set quarter + * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting + * @returns {PersianDate|String|Number} if set the quarter, returns class, + * else returns a number or string from quarter + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.quarter = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return quarter.call(this, format); + }; + /** + * get or set week + * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting + * @returns {PersianDate|String|Number} if set the week, returns class, + * else returns a number or string from week + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.week = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return week.call(this, format); + }; + /** + * get or set hour + * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting + * @returns {PersianDate|String|Number} if set the hour, returns class, + * else returns a number or string from hour + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.hour = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "H"; + if (this.error) return this.error; + return hour.call(this, format); + }; + /** + * get or set minute + * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting + * @returns {PersianDate|String|Number} if set the minute, returns class, + * else returns a number or string from minute + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.minute = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "m"; + if (this.error) return this.error; + return minute.call(this, format); + }; + /** + * get or set second + * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting + * @returns {PersianDate|String|Number} if set the second, returns class, + * else returns a number or string from second + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.second = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "s"; + if (this.error) return this.error; + return second.call(this, format); + }; + /** + * get or set millisecond + * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting + * @returns {PersianDate|String|Number} if set the millisecond, returns class, + * else returns a number or string from millisecond + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.millisecond = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "c"; + if (this.error) return this.error; + return millisecond.call(this, format); + }; + /** + * get timestamp or set date from timestamp + * @param {Null|Number|String} value - a number for set the millisecond + * @returns {PersianDate|Number} if set the timestamp, returns class, + * else returns timestamp (number) + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.timestamp = function (value) { + if (this.error) return this.error; + return timestamp.call(this, value); + }; + + PersianDate.prototype.valueOf = function () { + return this.timestamp(); + }; + /** + * returns number of days in month + * @param {?Number} year - year of date that returns number of days in month + * @param {?Number} month - month of date that returns number of days in month + * @returns {Number} number of days in month + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.getDaysInMonth = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + var month = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.d.month; + if (this.error) return this.error; + return getDaysInMonth(this.c, year, month); + }; + /** + * return number of weeks in year + * @since 2.0.0 + * @param {Number|String} year - the year + * @returns {Number} number of weeks in year + */ + + + PersianDate.prototype.getWeeksInYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + if (this.error) return this.error; + return getWeeksInYear.call(this, year); + }; + /** + * change the date to start of the year or month or ... + * @since 2.0.0 + * @param {String} unit - the unit of time + * @returns {PersianDate} return the class with new date or time + */ + + + PersianDate.prototype.startOf = function () { + var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "year"; + return startOf.call(this, unit); + }; + /** + * change the date to end of the year or month or ... + * @since 2.0.0 + * @param {String} unit - the unit of time + * @returns {PersianDate} return the class with new date or time + */ + + + PersianDate.prototype.endOf = function () { + var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "year"; + return endOf.call(this, unit); + }; + /** + * change the time + * @since 2.3.0 + * @param {PersianDate|Date|String|Array|Object|Number} time - the new time + * @param {Null|String|Number} time.h - hour of date + * @param {Null|String|Number} time.hour - hour of date + * @param {Null|String|Number} time.hours - hour of date + * @param {Null|String|Number} time.m - minute of date + * @param {Null|String|Number} time.minute - minute of date + * @param {Null|String|Number} time.minutes - minute of date + * @param {Null|String|Number} time.s - second of date + * @param {Null|String|Number} time.second - second of date + * @param {Null|String|Number} time.seconds - second of date + * @param {Null|String|Number} time.ms - millisecond of date + * @param {Null|String|Number} time.millisecond - millisecond of date + * @param {Null|String|Number} time.milliseconds - millisecond of date + * @returns {PersianDate|Array} if set the time, returns class, + * else returns an array of time + * @throws {String} if time invalid return error text + */ + + + PersianDate.prototype.time = function () { + if (this.error) return this.error; + return time.call.apply(time, [this].concat(Array.prototype.slice.call(arguments))); + }; ////////////////////--------- add & sub ---------///////////////////// + + /** + * add to year + * @param {?Number|String} [year=1] - a number for add with year + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!year) return this; + return addYear.call(this, year, checkDate); + }; + /** + * add to month + * @param {?Number|String} [month=1] - a number for add with month + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addMonth = function () { + var month = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!month) return this; + return addMonth.call(this, month, checkDate); + }; + /** + * add to day + * @param {?Number|String} [day=1] - a number for add with day + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addDay = function () { + var day = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!day) return this; + return addDay.call(this, day, checkDate); + }; + /** + * add to quarter + * @param {?Number|String} [quarter=1] - a number for add with quarter + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addQuarter = function () { + var quarter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!quarter) return this; + return addQuarter.call(this, quarter, checkDate); + }; + /** + * add to week + * @param {?Number|String} [week=1] - a number for add with week + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addWeek = function () { + var week = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!week) return this; + return addWeek.call(this, week, checkDate); + }; + /** + * add to hour + * @param {?Number|String} [hour=1] - a number for add with hour + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addHour = function () { + var hour = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!hour) return this; + return addHour.call(this, hour, checkDate); + }; + /** + * add to minute + * @param {?Number|String} [minute=1] - a number for add with minute + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addMinute = function () { + var minute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!minute) return this; + return addMinute.call(this, minute, checkDate); + }; + /** + * add to second + * @param {?Number|String} [second=1] - a number for add with second + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addSecond = function () { + var second = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!second) return this; + return addSecond.call(this, second, checkDate); + }; + /** + * add to millisecond + * @param {?Number|String} [millisecond=1] - a number for add with millisecond + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addMillisecond = function () { + var millisecond = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!millisecond) return this; + return addMillisecond.call(this, millisecond, checkDate); + }; + /** + * subtract from year + * @param {?Number|String} [year=1] - a number for subtract from year + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!year) return this; + return subYear.call(this, year, checkDate); + }; + /** + * subtract from month + * @param {?Number|String} [month=1] - a number for subtract from month + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subMonth = function () { + var month = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!month) return this; + return subMonth.call(this, month, checkDate); + }; + /** + * subtract from day + * @param {?Number|String} [day=1] - a number for subtract from day + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subDay = function () { + var day = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!day) return this; + return subDay.call(this, day, checkDate); + }; + /** + * subtract from quarter + * @param {?Number|String} [quarter=1] - a number for subtract from quarter + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subQuarter = function () { + var quarter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!quarter) return this; + return subQuarter.call(this, quarter, checkDate); + }; + /** + * subtract from week + * @param {?Number|String} [week=1] - a number for subtract from week + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subWeek = function () { + var week = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!week) return this; + return subWeek.call(this, week, checkDate); + }; + /** + * subtract from hour + * @param {?Number|String} [hour=1] - a number for subtract from hour + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subHour = function () { + var hour = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!hour) return this; + return subHour.call(this, hour, checkDate); + }; + /** + * subtract from minute + * @param {?Number|String} [minute=1] - a number for subtract from minute + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subMinute = function () { + var minute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!minute) return this; + return subMinute.call(this, minute, checkDate); + }; + /** + * subtract from second + * @param {?Number|String} [second=1] - a number for subtract from second + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subSecond = function () { + var second = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!second) return this; + return subSecond.call(this, second, checkDate); + }; + /** + * subtract from millisecond + * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subMillisecond = function () { + var millisecond = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!millisecond) return this; + return subMillisecond.call(this, millisecond, checkDate); + }; ////////////////////--------- conversion ---------///////////////////// + + /** + * returns date as string with specify format + * @param {?String} [format=date] - formatting date to string + * @returns {String} date string + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toString = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "date"; + if (this.error) return this.error; + return toString.call(this, format); + }; + /** + * return the array of PersianDate + * @since 1.3.0 + * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year + * @param {String|Number} yearForamt.y - year format + * @param {Null|String|Number} yearForamt.year - year format + * @param {Null|String|Number} yearForamt.years - year format + * @param {Null|String|Number} yearForamt.M - month format + * @param {Null|String|Number} yearForamt.month - month format + * @param {Null|String|Number} yearForamt.months - month format + * @param {Null|String|Number} yearForamt.d - day format + * @param {Null|String|Number} yearForamt.day - day format + * @param {Null|String|Number} yearForamt.days - day format + * @param {Null|String|Number} yearForamt.date - day format + * @param {Null|String|Number} yearForamt.h - hour format + * @param {Null|String|Number} yearForamt.hour - hour format + * @param {Null|String|Number} yearForamt.hours - hour format + * @param {Null|String|Number} yearForamt.m - minute format + * @param {Null|String|Number} yearForamt.minute - minute format + * @param {Null|String|Number} yearForamt.minutes - minute format + * @param {Null|String|Number} yearForamt.s - second format + * @param {Null|String|Number} yearForamt.second - second format + * @param {Null|String|Number} yearForamt.seconds - second format + * @param {Null|String|Number} yearForamt.ms - millisecond format + * @param {Null|String|Number} yearForamt.millisecond - millisecond format + * @param {Null|String|Number} yearForamt.milliseconds - millisecond format + * @param {Null|Number|String} monthFormat month format + * @param {Null|Number|String} dayFormat day format + * @param {Null|Number|String} hourFormat hour format + * @param {Null|Number|String} minuteFormat minute format + * @param {Null|Number|String} secondFormat second format + * @param {Null|Number|String} millisecondFormat millisecond format + * @returns {Object} if date valid, return array of date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toArray = function () { + if (this.error) return this.error; + return toArray.call.apply(toArray, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * return the object of PersianDate + * @since 1.3.0 + * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year + * @param {String|Number} yearForamt.y - year format + * @param {Null|String|Number} yearForamt.year - year format + * @param {Null|String|Number} yearForamt.years - year format + * @param {Null|String|Number} yearForamt.M - month format + * @param {Null|String|Number} yearForamt.month - month format + * @param {Null|String|Number} yearForamt.months - month format + * @param {Null|String|Number} yearForamt.d - day format + * @param {Null|String|Number} yearForamt.day - day format + * @param {Null|String|Number} yearForamt.days - day format + * @param {Null|String|Number} yearForamt.date - day format + * @param {Null|String|Number} yearForamt.h - hour format + * @param {Null|String|Number} yearForamt.hour - hour format + * @param {Null|String|Number} yearForamt.hours - hour format + * @param {Null|String|Number} yearForamt.m - minute format + * @param {Null|String|Number} yearForamt.minute - minute format + * @param {Null|String|Number} yearForamt.minutes - minute format + * @param {Null|String|Number} yearForamt.s - second format + * @param {Null|String|Number} yearForamt.second - second format + * @param {Null|String|Number} yearForamt.seconds - second format + * @param {Null|String|Number} yearForamt.ms - millisecond format + * @param {Null|String|Number} yearForamt.millisecond - millisecond format + * @param {Null|String|Number} yearForamt.milliseconds - millisecond format + * @param {Null|Number|String} monthFormat month format + * @param {Null|Number|String} dayFormat day format + * @param {Null|Number|String} hourFormat hour format + * @param {Null|Number|String} minuteFormat minute format + * @param {Null|Number|String} secondFormat second format + * @param {Null|Number|String} millisecondFormat millisecond format + * @returns {Object} if date valid, return Object of date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toObject = function () { + if (this.error) return this.error; + return toObject.call.apply(toObject, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * return the Date instance of PersianDate + * @since 2.0.0 + * @returns {Date} if date valid, return Date instance of date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toDate = function () { + if (this.error) return this.error; + return toDate.call(this); + }; ////////////////////--------- diff ---------///////////////////// + + /** + * get the diffrence between two date + * @since 1.4.0 + * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date + * @param {String|Number} date.y - year of date + * @param {Null|String|Number} date.year - year of date + * @param {Null|String|Number} date.years - year of date + * @param {Null|String|Number} date.M - month of date + * @param {Null|String|Number} date.month - month of date + * @param {Null|String|Number} date.months - month of date + * @param {Null|String|Number} date.d - day of date + * @param {Null|String|Number} date.day - day of date + * @param {Null|String|Number} date.days - day of date + * @param {Null|String|Number} date.date - day of date + * @param {Null|String|Number} date.h - hour of date + * @param {Null|String|Number} date.hour - hour of date + * @param {Null|String|Number} date.hours - hour of date + * @param {Null|String|Number} date.m - minute of date + * @param {Null|String|Number} date.minute - minute of date + * @param {Null|String|Number} date.minutes - minute of date + * @param {Null|String|Number} date.s - second of date + * @param {Null|String|Number} date.second - second of date + * @param {Null|String|Number} date.seconds - second of date + * @param {Null|String|Number} date.ms - millisecond of date + * @param {Null|String|Number} date.millisecond - millisecond of date + * @param {Null|String|Number} date.milliseconds - millisecond of date + * @param {String} unit - the unit of the measurment + * @param {Boolean} addOne - add one day to result + * @returns {Number} diffrence + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.diff = function (date, unit) { + var addOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + if (this.error) return this.error; + return diff.call(this, date, unit, addOne); + }; + /** + * get the diffrence between two date in a human-readable format + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date + * @param {String|Number} date.y - year of date + * @param {Null|String|Number} date.year - year of date + * @param {Null|String|Number} date.years - year of date + * @param {Null|String|Number} date.M - month of date + * @param {Null|String|Number} date.month - month of date + * @param {Null|String|Number} date.months - month of date + * @param {Null|String|Number} date.d - day of date + * @param {Null|String|Number} date.day - day of date + * @param {Null|String|Number} date.days - day of date + * @param {Null|String|Number} date.date - day of date + * @param {Null|String|Number} date.h - hour of date + * @param {Null|String|Number} date.hour - hour of date + * @param {Null|String|Number} date.hours - hour of date + * @param {Null|String|Number} date.m - minute of date + * @param {Null|String|Number} date.minute - minute of date + * @param {Null|String|Number} date.minutes - minute of date + * @param {Null|String|Number} date.s - second of date + * @param {Null|String|Number} date.second - second of date + * @param {Null|String|Number} date.seconds - second of date + * @param {Null|String|Number} date.ms - millisecond of date + * @param {Null|String|Number} date.millisecond - millisecond of date + * @param {Null|String|Number} date.milliseconds - millisecond of date + * @param {Boolean} suffix - add suffix or not + * @returns {String} if date valid, return diff human-readable format + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.diffForHumans = function (date) { + var suffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + return diffForHumans.call(this, date, suffix); + }; ////////////////////--------- comparison ---------///////////////////// + + /** + * returns minimum date in arguments that passed + * @since 1.4.0 + * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; + * @param {String} date.y - year of date + * @param {Null|String} date.year - year of date + * @param {Null|String} date.years - year of date + * @param {Null|String} date.M - month of date + * @param {Null|String} date.month - month of date + * @param {Null|String} date.months - month of date + * @param {Null|String} date.d - day of date + * @param {Null|String} date.day - day of date + * @param {Null|String} date.days - day of date + * @param {Null|String} date.date - day of date + * @param {Null|String} date.h - hour of date + * @param {Null|String} date.hour - hour of date + * @param {Null|String} date.hours - hour of date + * @param {Null|String} date.m - minute of date + * @param {Null|String} date.minute - minute of date + * @param {Null|String} date.minutes - minute of date + * @param {Null|String} date.s - second of date + * @param {Null|String} date.second - second of date + * @param {Null|String} date.seconds - second of date + * @param {Null|String} date.ms - millisecond of date + * @param {Null|String} date.millisecond - millisecond of date + * @param {Null|String} date.milliseconds - millisecond of date + * @returns {*} return minimum date + * @throws {false} if parameters not send or parameters is invalid, return false + */ + + + PersianDate.prototype.min = function () { + return mathOperation.call(this, arguments, "min"); + }; + /** + * returns maximum date in arguments that passed + * @since 1.4.0 + * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; + * @param {String} date.y - year of date + * @param {Null|String} date.year - year of date + * @param {Null|String} date.years - year of date + * @param {Null|String} date.M - month of date + * @param {Null|String} date.month - month of date + * @param {Null|String} date.months - month of date + * @param {Null|String} date.d - day of date + * @param {Null|String} date.day - day of date + * @param {Null|String} date.days - day of date + * @param {Null|String} date.date - day of date + * @param {Null|String} date.h - hour of date + * @param {Null|String} date.hour - hour of date + * @param {Null|String} date.hours - hour of date + * @param {Null|String} date.m - minute of date + * @param {Null|String} date.minute - minute of date + * @param {Null|String} date.minutes - minute of date + * @param {Null|String} date.s - second of date + * @param {Null|String} date.second - second of date + * @param {Null|String} date.seconds - second of date + * @param {Null|String} date.ms - millisecond of date + * @param {Null|String} date.millisecond - millisecond of date + * @param {Null|String} date.milliseconds - millisecond of date + * @returns {*} return maximum date + * @throws {false} if parameters not send or parameters is invalid, return false + */ + + + PersianDate.prototype.max = function () { + return mathOperation.call(this, arguments, "max"); + }; + /** + * receives year and determined that is leap year or not + * @param {?Number} year - the year to be determined is a leap or not + * @returns {Boolean} if is leap year, returns true + */ + + + PersianDate.prototype.isLeapYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + if (this.error) return false; + return isLeapYear(this.c, year); + }; + /** + * checks the persian date and time + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid, returns true + */ + + + PersianDate.prototype.isValid = function (year, month, day, hour, minute, second, millisecond) { + if (this.error) return false; + return this.isValidDate(year, month, day) && this.isValidTime(hour, minute, second, millisecond); + }; + /** + * checks the persian date + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @returns {Boolean} if is valid date, returns true + */ + + + PersianDate.prototype.isValidDate = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + var month = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.d.month; + var day = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.d.date; + if (this.error) return false; + return isValidDate(this.c, year, month, day); + }; + /** + * checks the time + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid time, returns true + */ + + + PersianDate.prototype.isValidTime = function () { + var hour = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.hour; + var minute = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.d.minute; + var second = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.d.second; + var millisecond = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.d.millisecond; + if (this.error) return false; + return isValidTime(hour, minute, second, millisecond); + }; + /** + * checks this date is the same to another date + * @since 1.1.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is same to the argument, return true of false + */ + + + PersianDate.prototype.isSame = function () { + if (this.error) return false; + return isSame.call.apply(isSame, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * checks this date is before the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is before the argument, return true of false + */ + + + PersianDate.prototype.isBefore = function () { + if (this.error) return false; + return compare.call(this, arguments, "<"); + }; + /** + * checks this date is after the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is after the argument, return true of false + */ + + + PersianDate.prototype.isAfter = function () { + if (this.error) return false; + return compare.call(this, arguments, ">"); + }; + /** + * checks this date is same or before the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is samr or before the argument, return true of false + */ + + + PersianDate.prototype.isSameOrBefore = function () { + if (this.error) return false; + return compare.call(this, arguments, "<="); + }; + /** + * checks this date is same or after the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is same or after the argument, return true of false + */ + + + PersianDate.prototype.isSameOrAfter = function () { + if (this.error) return false; + return compare.call(this, arguments, ">="); + }; + /** + * checks this date is between the another dates + * @since 1.3.0 + * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date + * @param {String|Number} from.y - year of date + * @param {Null|String|Number} from.year - year of date + * @param {Null|String|Number} from.years - year of date + * @param {Null|String|Number} from.M - month of date + * @param {Null|String|Number} from.month - month of date + * @param {Null|String|Number} from.months - month of date + * @param {Null|String|Number} from.d - day of date + * @param {Null|String|Number} from.day - day of date + * @param {Null|String|Number} from.days - day of date + * @param {Null|String|Number} from.date - day of date + * @param {Null|String|Number} from.h - hour of date + * @param {Null|String|Number} from.hour - hour of date + * @param {Null|String|Number} from.hours - hour of date + * @param {Null|String|Number} from.m - minute of date + * @param {Null|String|Number} from.minute - minute of date + * @param {Null|String|Number} from.minutes - minute of date + * @param {Null|String|Number} from.s - second of date + * @param {Null|String|Number} from.second - second of date + * @param {Null|String|Number} from.seconds - second of date + * @param {Null|String|Number} from.ms - millisecond of date + * @param {Null|String|Number} from.millisecond - millisecond of date + * @param {Null|String|Number} from.milliseconds - millisecond of date + * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date + * @param {String|Number} to.y - year of date + * @param {Null|String|Number} to.year - year of date + * @param {Null|String|Number} to.years - year of date + * @param {Null|String|Number} to.M - month of date + * @param {Null|String|Number} to.month - month of date + * @param {Null|String|Number} to.months - month of date + * @param {Null|String|Number} to.d - day of date + * @param {Null|String|Number} to.day - day of date + * @param {Null|String|Number} to.days - day of date + * @param {Null|String|Number} to.date - day of date + * @param {Null|String|Number} to.h - hour of date + * @param {Null|String|Number} to.hour - hour of date + * @param {Null|String|Number} to.hours - hour of date + * @param {Null|String|Number} to.m - minute of date + * @param {Null|String|Number} to.minute - minute of date + * @param {Null|String|Number} to.minutes - minute of date + * @param {Null|String|Number} to.s - second of date + * @param {Null|String|Number} to.second - second of date + * @param {Null|String|Number} to.seconds - second of date + * @param {Null|String|Number} to.ms - millisecond of date + * @param {Null|String|Number} to.millisecond - millisecond of date + * @param {Null|String|Number} to.milliseconds - millisecond of date + * @param {String} method - determines that consider the dates themselves + * @returns {‌Boolean} if this date is between the arguments, return true of false + */ + + + PersianDate.prototype.isBetween = function (from, to) { + var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "()"; + if (this.error) return false; + return isBetween.call(this, from, to, method); + }; + /** + * checks this date is in array of dates + * @since 2.6.0 + * @param {(PersianDate|Date|String|Array|Object)[]} array - this param must be array of PersianDate - string - array - Object and array date + * @param {String|Number} array[].y - year of date + * @param {Null|String|Number} array[].year - year of date + * @param {Null|String|Number} array[].years - year of date + * @param {Null|String|Number} array[].M - month of date + * @param {Null|String|Number} array[].month - month of date + * @param {Null|String|Number} array[].months - month of date + * @param {Null|String|Number} array[].d - day of date + * @param {Null|String|Number} array[].day - day of date + * @param {Null|String|Number} array[].days - day of date + * @param {Null|String|Number} array[].date - day of date + * @param {Null|String|Number} array[].h - hour of date + * @param {Null|String|Number} array[].hour - hour of date + * @param {Null|String|Number} array[].hours - hour of date + * @param {Null|String|Number} array[].m - minute of date + * @param {Null|String|Number} array[].minute - minute of date + * @param {Null|String|Number} array[].minutes - minute of date + * @param {Null|String|Number} array[].s - second of date + * @param {Null|String|Number} array[].second - second of date + * @param {Null|String|Number} array[].seconds - second of date + * @param {Null|String|Number} array[].ms - millisecond of date + * @param {Null|String|Number} array[].millisecond - millisecond of date + * @param {Null|String|Number} array[].milliseconds - millisecond of date + * @returns {‌Boolean} if date is in array return true + */ + + + PersianDate.prototype.isInArray = function (array) { + if (this.error) return false; + return isInArray.call(this, array); + }; + /** + * checks date is a native js Date object + * @since 1.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a native js Date, return true + */ + + + PersianDate.prototype.isDate = isDate; + /** + * checks date is a PersianDate object + * @since 1.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a PersianDate, return true + */ + + PersianDate.prototype.isPersianDate = isPersianDate; + if (calendarVal) this.calendar(calendarVal); + + if (dateVal) { + if (calendarVal && calendarVal[0] == "j") this.fromJalali(dateVal);else this.fromGregorian(dateVal); + } else this.now(); +}; ////////////////////--------- statics ---------///////////////////// -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jy"; - default: - return "y"; - } -}; +/** + * receives year and determined that is leap year or not + * @static + * @since 2.3.0 + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {Number} year - the year to be determined is a leap or not + * @returns {Boolean} if is leap year, returns true + */ -function year(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - this.d.year = +format; - if (!this.isValidDate()) { - return this.subDay(1, false); - } - - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - const jYear = this.c == "jalali" ? this.d.year : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[0]; - if (format == "jy" || format == "jYYYY") return jYear; - if (format == "jYY") return String(jYear).slice(-2); - const gYear = - this.c == "gregorian" ? this.d.year : this.toDate().getFullYear(); - if (format == "y" || format == "YYYY") return gYear; - if (format == "YY") return String(gYear).slice(-2); - return jYear; - } -} +PersianDate.isLeapYear = isLeapYear; +/** + * checks date is a native js Date object + * @static + * @since 2.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a native js Date, return true + */ -/***/ }), - -/***/ "./src/utils.js": -/*!**********************!*\ - !*** ./src/utils.js ***! - \**********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "CALENDAR": () => (/* binding */ CALENDAR), -/* harmony export */ "TIMETYPE": () => (/* binding */ TIMETYPE), -/* harmony export */ "REGEX": () => (/* binding */ REGEX) -/* harmony export */ }); -const CALENDAR = { - jalali: { - months: { - 1: "فروردین", - 2: "اردیبهشت", - 3: "خرداد", - 4: "تیر", - 5: "مرداد", - 6: "شهریور", - 7: "مهر", - 8: "آبان", - 9: "آذر", - 10: "دی", - 11: "بهمن", - 12: "اسفند", - }, - days: { - label: { - 6: "شنبه", - 0: "یکشنبه", - 1: "دوشنبه", - 2: "سه‌شنبه", - 3: "چهارشنبه", - 4: "پنجشنبه", - 5: "جمعه", - }, - weekNumber: { - // days in jalali calendar start from saturday or 6 - 6: 0, //شنبه - 0: 1, //یکشنبه - 1: 2, //دوشنبه - 2: 3, //سه‌شنبه - 3: 4, //چهارشنبه - 4: 5, //پنجشنبه - 5: 6, //جمعه - }, - }, - ordinalNumbers: function (number, mode) { - const numbers = { - 1: "یک", - 2: "دو", - 3: "سو", - 4: "چهار", - 5: "پنج", - 6: "شش", - 7: "هفت", - 8: "هشت", - 9: "نه", - 10: "ده", - 11: "یازده", - 12: "دوازده", - 13: "سیزده", - 14: "چهارده", - 15: "پانزده", - 16: "شانزده", - 17: "هفده", - 18: "هجده", - 19: "نوزده", - 20: "بیست", - 30: "سی‌", - 40: "چهل", - 50: "پنجاه", - 60: "شصت", - 70: "هفتاد", - 80: "هشتاد", - 90: "نود", - 100: "صد", - 200: "دویست", - 300: "سیصد", - }; - let ordinalNumber = ""; - if (number == 1) ordinalNumber = "اول"; - else if (numbers[number]) - ordinalNumber = numbers[number] + (number == 30 ? "ام" : "م"); - else { - let remainder = number % 100; - if (numbers[remainder]) ordinalNumber = numbers[remainder] + "م"; - else { - remainder = number % 10; - if (remainder) ordinalNumber = numbers[remainder] + "م"; - } - remainder = (number - remainder) % 100; - if (remainder) - ordinalNumber = - numbers[remainder] + - (ordinalNumber - ? " و " + ordinalNumber - : remainder == 30 - ? "ام " - : "م"); - remainder = Math.floor(number / 100) * 100; - if (remainder) - ordinalNumber = - numbers[remainder] + (ordinalNumber ? " و " + ordinalNumber : "م"); - } - if (mode == 2) ordinalNumber += "ین"; - return ordinalNumber; - }, - }, - gregorian: { - months: { - 1: "January", - 2: "February", - 3: "March", - 4: "April", - 5: "May", - 6: "June", - 7: "July", - 8: "August", - 9: "September", - 10: "October", - 11: "November", - 12: "December", - }, - days: { - label: { - 0: "Sunday", - 1: "Monday", - 2: "Tuesday", - 3: "Wednesday", - 4: "Thursday", - 5: "Friday", - 6: "Saturday", - }, - weekNumber: { - // days in gregorian calendar start from sunday or 0 - 0: 0, // Sunday - 1: 1, // Monday - 2: 2, // Tuesday - 3: 3, // Wednesday - 4: 4, // Thursday - 5: 5, // Friday - 6: 6, // Saturday - }, - }, - ordinalNumbers: function (number) { - if (number == 1 || (number % 10 == 1 && number != 11)) - return number + "st"; - else if (number == 2 || (number % 10 == 2 && number != 12)) - return number + "nd"; - else if (number == 3 || (number % 10 == 3 && number != 13)) - return number + "rd"; - else return number + "th"; - }, - }, -}; +PersianDate.isDate = isDate; +/** + * checks date is a PersianDate object + * @static + * @since 2.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a PersianDate, return true + */ -const REGEX = { - format: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g, - isNumeric: /^\d+$/, // this regex, checks input to see is a number or not - separators: "\\/| |-|\\.|,|:", // find ['/',' ','-','.',',',':'] and split string to array by this symbols - betweenBacktick: /`(.*?)`/g, // find the texts between the backticks ==> `Alireza` -}; +PersianDate.isPersianDate = isPersianDate; +/** + * checks the date and time + * @static + * @since 2.4.0 + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid, returns true + */ -const TIMETYPE = function (hour, format) { - if (hour >= 0 && hour < 12) { - if (format == "a") return "am"; - else if (format == "aa") return "A.M."; - else if (format == "A") return "AM"; - else if (format == "ja") return "ق ظ"; - else if (format == "jaa") return "ق.ظ"; - else if (format == "jA") return "قبل از ظهر"; - return "ق.ظ"; - } else if (hour >= 12 && hour < 24) { - if (format == "a") return "pm"; - else if (format == "aa") return "P.M."; - else if (format == "A") return "PM"; - else if (format == "ja") return "ب ظ"; - else if (format == "jaa") return "ب.ظ"; - else if (format == "jA") return "بعد از ظهر"; - return "ب.ظ"; - } -}; +PersianDate.isValid = isValid; +/** + * checks the date + * @static + * @since 2.4.0 + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @returns {Boolean} if is valid date, returns true + */ +PersianDate.isValidDate = isValidDate; +/** + * checks the time + * @static + * @since 2.4.0 + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid time, returns true + */ +PersianDate.isValidTime = isValidTime; +/** + * returns number of days in month + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {?Number} year - year of date that returns number of days in month + * @param {?Number} month - month of date that returns number of days in month + * @returns {Number} number of days in month + * @throws {String} if date invalid return error message + */ +PersianDate.getDaysInMonth = getDaysInMonth; //TODO: add localization +////////////////////--------- Have A Good Day ---------///////////////////// -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module is referenced by other modules so it can't be inlined -/******/ var __webpack_exports__ = __webpack_require__("./src/PersianDate.js"); -/******/ __webpack_exports__ = __webpack_exports__.default; -/******/ -/******/ return __webpack_exports__; -/******/ })() -; -}); -//# sourceMappingURL=PersianDate.js.map \ No newline at end of file +module.exports = PersianDate; diff --git a/dist/PersianDate.js.map b/dist/PersianDate.js.map deleted file mode 100644 index efb7ed6..0000000 --- a/dist/PersianDate.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://PersianDate/webpack/universalModuleDefinition","webpack://PersianDate/./src/PersianDate.js","webpack://PersianDate/./src/add-sub/addDay.js","webpack://PersianDate/./src/add-sub/addHour.js","webpack://PersianDate/./src/add-sub/addMillisecond.js","webpack://PersianDate/./src/add-sub/addMinute.js","webpack://PersianDate/./src/add-sub/addMonth.js","webpack://PersianDate/./src/add-sub/addQuarter.js","webpack://PersianDate/./src/add-sub/addSecond.js","webpack://PersianDate/./src/add-sub/addWeek.js","webpack://PersianDate/./src/add-sub/addYear.js","webpack://PersianDate/./src/add-sub/index.js","webpack://PersianDate/./src/add-sub/subDay.js","webpack://PersianDate/./src/add-sub/subHour.js","webpack://PersianDate/./src/add-sub/subMillisecond.js","webpack://PersianDate/./src/add-sub/subMinute.js","webpack://PersianDate/./src/add-sub/subMonth.js","webpack://PersianDate/./src/add-sub/subQuarter.js","webpack://PersianDate/./src/add-sub/subSecond.js","webpack://PersianDate/./src/add-sub/subWeek.js","webpack://PersianDate/./src/add-sub/subYear.js","webpack://PersianDate/./src/base/addPrefix.js","webpack://PersianDate/./src/base/compare.js","webpack://PersianDate/./src/base/error.js","webpack://PersianDate/./src/base/getDayLabel.js","webpack://PersianDate/./src/base/getDayOfWeek.js","webpack://PersianDate/./src/base/getDayOfYear.js","webpack://PersianDate/./src/base/getWeekOfYear.js","webpack://PersianDate/./src/base/gtj.js","webpack://PersianDate/./src/base/index.js","webpack://PersianDate/./src/base/invalid.js","webpack://PersianDate/./src/base/isTimestamp.js","webpack://PersianDate/./src/base/jtg.js","webpack://PersianDate/./src/base/mathOperation.js","webpack://PersianDate/./src/base/ordinalNumber.js","webpack://PersianDate/./src/base/setGregorianDate.js","webpack://PersianDate/./src/base/setJalaliDate.js","webpack://PersianDate/./src/base/typesToArray.js","webpack://PersianDate/./src/base/warn.js","webpack://PersianDate/./src/comparison/index.js","webpack://PersianDate/./src/comparison/isBetween.js","webpack://PersianDate/./src/comparison/isDate.js","webpack://PersianDate/./src/comparison/isLeapYear.js","webpack://PersianDate/./src/comparison/isPersianDate.js","webpack://PersianDate/./src/comparison/isSame.js","webpack://PersianDate/./src/comparison/isValid.js","webpack://PersianDate/./src/comparison/isValidDate.js","webpack://PersianDate/./src/comparison/isValidTime.js","webpack://PersianDate/./src/conversion/index.js","webpack://PersianDate/./src/conversion/toArray.js","webpack://PersianDate/./src/conversion/toDate.js","webpack://PersianDate/./src/conversion/toObject.js","webpack://PersianDate/./src/conversion/toString.js","webpack://PersianDate/./src/create/calendar.js","webpack://PersianDate/./src/create/clone.js","webpack://PersianDate/./src/create/fromGregorian.js","webpack://PersianDate/./src/create/fromJalali.js","webpack://PersianDate/./src/create/index.js","webpack://PersianDate/./src/create/now.js","webpack://PersianDate/./src/create/parse.js","webpack://PersianDate/./src/diff/diff.js","webpack://PersianDate/./src/diff/diffForHumans.js","webpack://PersianDate/./src/diff/index.js","webpack://PersianDate/./src/set-get/date.js","webpack://PersianDate/./src/set-get/endOf.js","webpack://PersianDate/./src/set-get/getDaysInMonth.js","webpack://PersianDate/./src/set-get/getWeeksInYear.js","webpack://PersianDate/./src/set-get/hour.js","webpack://PersianDate/./src/set-get/index.js","webpack://PersianDate/./src/set-get/millisecond.js","webpack://PersianDate/./src/set-get/minute.js","webpack://PersianDate/./src/set-get/month.js","webpack://PersianDate/./src/set-get/quarter.js","webpack://PersianDate/./src/set-get/second.js","webpack://PersianDate/./src/set-get/startOf.js","webpack://PersianDate/./src/set-get/time.js","webpack://PersianDate/./src/set-get/timestamp.js","webpack://PersianDate/./src/set-get/week.js","webpack://PersianDate/./src/set-get/year.js","webpack://PersianDate/./src/utils.js","webpack://PersianDate/webpack/bootstrap","webpack://PersianDate/webpack/runtime/define property getters","webpack://PersianDate/webpack/runtime/hasOwnProperty shorthand","webpack://PersianDate/webpack/runtime/make namespace object","webpack://PersianDate/webpack/startup"],"names":[],"mappings":"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EA;AACA;;;;;;;;;;;;;;;ACzBO;AACP;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA,gBAAgB;;AAEhB,mDAAmD;AACnD;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;ACxBO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJO;AACP;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN0B;AACG;AACF;AACD;AACD;AACC;AACE;AACA;AACK;;AAEP;AACG;AACF;AACD;AACD;AACC;AACE;AACA;AACK;;;;;;;;;;;;;;;AClB1B;AACP;AACA,4BAA4B;AAC5B;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACnBO;AACP;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP,yBAAyB;AACzB,gCAAgC;AAChC;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;ACpBO;AACP;AACA;AACA;;;;;;;;;;;;;;;ACHO;AACP;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;;;;;;;;;;;;;;;ACHO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACO;AACP;AACA;;;;;;;;;;;;;;;;ACTuC;;AAEvC;AACA;AACA;AACA,WAAW,qCAAqC;AAChD,WAAW,uBAAuB;AAClC,aAAa,SAAS;AACtB;AACO;AACP,QAAQ,mDAAY;;AAEpB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;ACPoC;AACJ;AACc;;AAE9C;AACA;AACA,WAAW,KAAK;AAChB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACO;AACP,KAAK,0DAAM,eAAe,4CAAQ;AAClC,QAAQ,6CAAK;AACb;;;;;;;;;;;;;;;;;;ACdoC;AACJ;AACc;;AAE9C;AACA;AACA,WAAW,KAAK;AAChB,WAAW,sBAAsB;AACjC,WAAW,mBAAmB;AAC9B,aAAa,cAAc;AAC3B;AACO;AACP;AACA;AACA;AACA;AACA,KAAK,0DAAM;AACX;AACA;AACA,GAAG,4CAAQ;AACX;AACA;AACA;AACA,QAAQ,6CAAK;AACb;;;;;;;;;;;;;;;;ACxB4C;;AAE5C;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB;AACO;AACP;AACA;AACA;AACA;AACA,SAAS,wDAAc;AACvB;AACA;AACA;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;AC3BiC;AACM;;AAEvC;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,MAAM;AACnB;AACO;AACP;AACA;AACA,UAAU,mDAAM;AAChB;AACA;AACA;AACA;AACA,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFsB;AACA;AACC;AACC;AACE;AACK;AACC;AACJ;AACI;AACG;AACL;AACC;AACA;AACC;AACN;AACM;AACF;;;;;;;;;;;;;;;AChB9B;AACA;AACA,WAAW,OAAO;AAClB,aAAa,YAAY;AACzB;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,QAAQ;AACrB;AACO;AACP;AACA;;;;;;;;;;;;;;;;;ACRiC;AACU;;AAE3C;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,KAAK;AAClB;AACO;AACP;AACA,QAAQ,wDAAuB;AAC/B,SAAS,wDAAuB;AAChC,OAAO,wDAAuB;AAC9B,QAAQ,wDAAuB;AAC/B,UAAU,wDAAuB;AACjC,UAAU,wDAAuB;AACjC,eAAe,wDAAuB;AACtC;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,uDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACzEuC;;AAEvC;AACA;AACA;AACA,WAAW,wCAAwC;AACnD,WAAW,YAAY;AACvB,aAAa,EAAE;AACf,YAAY,MAAM;AAClB;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS,mDAAY;AACrB;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;;;;;;ACzBoC;AACpC;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACO;AACP,QAAQ,4CAAQ;AAChB;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACfwB;AACxB;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sCAAG;AACR;;;;;;;;;;;;;;;;;;AChByC;AACR;AACT;;AAExB;AACA;AACA;AACA,WAAW,2BAA2B;AACtC,WAAW,cAAc;AACzB,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,MAAM;AACnB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,4CAA4C,oDAAmB;AAC/D;AACA,EAAE;AACF;AACA,EAAE,UAAU,+DAAyB;AACrC;AACA,EAAE,UAAU,wDAAkB;AAC9B,aAAa,iDAAW;AACxB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPyB;AACI;AACG;AACN;AACI;AACA;AACL;AACG;;;;;;;;;;;;;;;;;ACPK;AACe;;AAEzC;AACP;;AAEA,QAAQ,mDAAY;AACpB;AACA;AACA,EAAE,wDAAuB;AACzB;;AAEA,MAAM,mDAAY;AAClB,8BAA8B,wDAAuB;;AAErD;;AAEA;AACA,EAAE,+CAAY;AACd,EAAE,+CAAY;AACd;AACA;;;;;;;;;;;;;;;ACrBO;AACP;AACA;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACnByC;AAClC;AACP,wBAAwB,iDAAW;AACnC;;;;;;;;;;;;;;;;;ACHiC;AACe;;AAEzC;AACP,YAAY,mDAAY;AACxB;AACA,EAAE,wDAAuB;AACzB;;AAEA,QAAQ,+CAAY;AACpB;;;;;;;;;;;;;;;;ACV6C;;AAEtC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,8CAAW;AACb,EAAE,8CAAW;AACb;AACA;;;;;;;;;;;;;;;;AChB0C;;AAE1C;AACA;AACA;AACA,kCAAkC,uDAAU;AAC5C;AACA;;AAEA;AACA;AACA,gDAAgD,uDAAU;AAC1D;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACZ2B;AACD;AACC;AACF;;;;;;;;;;;;;;;;ACHc;;AAEhC;AACP;AACA;AACA;AACA,iBAAiB,mDAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChB8B;;AAE9B;AACA,QAAQ,0CAAG;AACX;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AClBuC;;AAEhC;AACP;AACA;AACA;AACA,iBAAiB,mDAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChB2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,yBAAyB,yDAAwB;AACjD;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gDAAe;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gDAAQ;;AAExD;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;;;;;;;;;;;;;;;;ACtD0D;;AAEnD;AACP;;AAEA;AACA,mBAAmB,qDAAkB;AACrC;AACA,EAAE;AACF,mBAAmB,wDAAqB;AACxC;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACCiB;AACuB;;AAEjC;AACP;AACA;AACA;AACA,EAAE,WAAW,kDAAW;AACxB,SAAS,mDAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,oDAAO;AACd,UAAU,+CAAY;AACtB,YAAY,kBAAkB;AAC9B;;AAEA;AACA,oCAAoC,+CAAY;AAChD;AACA,EAAE,qDAAkB;AACpB,EAAE;AACF,EAAE,wDAAqB;AACvB;AACA;AACA;;;;;;;;;;;;;;;;ACtC4E;;AAErE;AACP,0BAA0B,0CAAG;AAC7B,aAAa,mDAAY;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,EAAE,wDAAqB,OAAO,0CAAG;AACjC;;AAEA,6BAA6B,+CAAY;AACzC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBsB;AACE;AACA;AACK;AACG;AACL;;;;;;;;;;;;;;;;ACL+B;;AAEnD;AACP;;AAEA;AACA,EAAE,qDAAkB;AACpB,EAAE;AACF,EAAE,wDAAqB;AACvB;;AAEA;AACA;;;;;;;;;;;;;;;ACZO;AACP;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;;;;;;ACNuC;;AAEhC;AACP,QAAQ,mDAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC/CO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrBuB;AACS;;;;;;;;;;;;;;;;;ACDC;AAQhB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;;AAEA,mDAAmD,0CAAG;AACtD;AACA,8BAA8B,gDAAS;AACvC;AACA,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;AAC3C;AACA;AACA,oDAAoD,kDAAW;AAC/D,8BAA8B,kDAAW;AACzC,kBAAkB,mDAAY;AAC9B,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;AAC3C,6BAA6B,mDAAY;AACzC;AACA;AACA,kBAAkB,mDAAY;AAC9B,gCAAgC,gDAAS;AACzC;AACA,gCAAgC,oDAAa;AAC7C,gCAAgC,oDAAa;AAC7C;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA,UAAU,oDAAa;AACvB;AACA,+BAA+B,kDAAW;AAC1C,8BAA8B,kDAAW;AACzC,6BAA6B,kDAAW;AACxC,cAAc,mDAAY;AAC1B;AACA,UAAU,oDAAa;AACvB;AACA;AACA;AACA,cAAc,mDAAY;AAC1B;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAS;AACxC;AACA;AACA,UAAU,oDAAa;AACvB;AACA;AACA;;;;;;;;;;;;;;;;ACvFuC;;AAEhC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mDAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACvBsD;;AAEtD;AACA;AACA,wCAAwC,kEAAU;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,kEAAU;AACpB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACxBiC;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,6BAA6B,gDAAS;AACtC;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BuB;AACG;AACF;AACD;AACA;AACA;AACE;AACA;AACK;AACF;AACK;AACA;AACP;AACF;AACD;;;;;;;;;;;;;;;;;ACdU;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA,+BAA+B,gDAAS;AACxC;AACA;AACA;;;;;;;;;;;;;;;;;ACvBiC;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA;;;;;;;;;;;;;;;;;ACvB2C;AACa;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,qDAAqD,0CAAG;AACxD,8BAA8B,gDAAS;AACvC;AACA;AACA,UAAU,0DAA4B;AACtC,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;;AAE3C;AACA;AACA;AACA,6BAA6B,gDAAS;AACtC,+BAA+B,6DAA+B;AAC9D;AACA,UAAU,oDAAa;AACvB;AACA,UAAU,6DAA+B;;AAEzC;AACA;AACA;;;;;;;;;;;;;;;;;ACrDiC;AACY;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA,wCAAwC,0CAAG;AAC3C;AACA;AACA,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,UAAU,oDAAa;;AAEvB;AACA;AACA;;;;;;;;;;;;;;;;;AChDiC;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA;;;;;;;;;;;;;;;;ACvBuC;;AAEhC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mDAAY;AACjC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClBuC;AACe;;AAE/C;AACP;AACA;AACA,KAAK,0DAAa;AAClB,UAAU,mDAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mDAAY;AAC1B;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;;;;;;;;;;;;;AC5BO;AACP;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;;;;;;;ACNiC;AACsC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,sBAAsB,qDAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,sBAAsB,qDAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gDAAS;AAC1D,iDAAiD,oDAAa;AAC9D;AACA,UAAU,oDAAa;;AAEvB,sBAAsB,qDAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gDAAS;AACxD;AACA,UAAU,oDAAa;AACvB;AACA;AACA;;;;;;;;;;;;;;;;;ACnEiC;AACH;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA,mDAAmD,0CAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqC;;;;;;;UC9KrC;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,wF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;UCNA;UACA;UACA;UACA","file":"PersianDate.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PersianDate\"] = factory();\n\telse\n\t\troot[\"PersianDate\"] = factory();\n})(global, function() {\nreturn ","////////////////////---------- Are You Ready? ----------////////////////////\n////////////////////------------- Let's Go -------------////////////////////\n////////////////////---- Read Comments And Enjoy It ----////////////////////\n\n////////////////////------------- ATTENTION -------------////////////////////\n// In the first, I'm must say, in the all of the project, //\n// g means Gregorian and j means Jalali //\n/////////////////////////////////////////////////////////////////////////////\nimport { warn, compare, mathOperation } from \"./base\";\n\nimport {\n\tnow,\n\tparse,\n\tclone,\n\tfromJalali,\n\tfromGregorian,\n\tcalendar as calendarMethod,\n} from \"./create\";\n\nimport {\n\tyear as yearMethod,\n\tquarter as quarterMethod,\n\tmonth as monthMethod,\n\tweek as weekMethod,\n\tdate as dateMethod,\n\thour as hourMethod,\n\tminute as minuteMethod,\n\tsecond as secondMethod,\n\tmillisecond as millisecondMethod,\n\ttimestamp,\n\tgetDaysInMonth,\n\tgetWeeksInYear,\n\tstartOf,\n\tendOf,\n\ttime,\n} from \"./set-get\";\n\nimport {\n\taddYear,\n\taddQuarter,\n\taddMonth,\n\taddWeek,\n\taddDay,\n\taddHour,\n\taddMinute,\n\taddSecond,\n\taddMillisecond,\n\tsubYear,\n\tsubQuarter,\n\tsubMonth,\n\tsubWeek,\n\tsubDay,\n\tsubHour,\n\tsubMinute,\n\tsubSecond,\n\tsubMillisecond,\n} from \"./add-sub\";\n\nimport { toString, toArray, toObject, toDate } from \"./conversion\";\n\nimport {\n\tisLeapYear,\n\tisDate,\n\tisPersianDate,\n\tisValidDate,\n\tisValidTime,\n\tisValid,\n\tisSame,\n\tisBetween,\n} from \"./comparison\";\n\nimport { diff, diffForHumans } from \"./diff\";\n\n/**\n * A Date library for working with persian date\n * @class\n * @param {Date|Array|Null|Object|String} date - the date that convert to persian date\n * @param {String} [calendar='jalali'] - the calendar\n */\nconst PersianDate = function (dateVal, calendarVal) {\n\t\"use strict\";\n\n\t/**\n\t * keeps the date and time\n\t * @type {Object}\n\t * @property {Number} year - the year of date\n\t * @property {Number} month - the month of date\n\t * @property {Number} date - the day of month of date\n\t * @property {Number} hour - the hour of time\n\t * @property {Number} minute - the minute of time\n\t * @property {Number} second - the second of time\n\t * @property {Number} millisecond - the millisecond of time\n\t * @property {Number} gregorian - the gregorian date\n\t */\n\tthis.d = {};\n\n\t/**\n\t * the calendar type\n\t * @type {String}\n\t * @default \"jalali\"\n\t * @example jalali | gregorian\n\t */\n\tthis.c = \"jalali\";\n\n\t////////////////////--------- create & parse ---------/////////////////////\n\n\t/**\n\t * make current date in persian calendar\n\t * @returns {PersianDate} make current date and return class\n\t */\n\tPersianDate.prototype.now = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn now.call(this);\n\t};\n\n\t/**\n\t * set persian date from Gregorian date\n\t * @deprecated\n\t * @param {...Number|Date|Array|Null} date - the date that convert to persian date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate|String} if date invalid return class with error property with error property\n\t */\n\tPersianDate.prototype.setDate = function () {\n\t\twarn(\n\t\t\t'\"setDate\" function is deprecated! use \"fromGregorian\" function instead.\\n' +\n\t\t\t\t\"https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date\"\n\t\t);\n\t\treturn this.fromGregorian(...arguments);\n\t};\n\n\t/**\n\t * convert a jalali or gregorian date to PersianDate instance\n\t * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.parse = function () {\n\t\treturn parse.call(this, ...arguments);\n\t};\n\n\t/**\n\t * get clone of this date\n\t * @since 1.1.0\n\t * @returns {PersianDate} returns the clone of this date\n\t */\n\tPersianDate.prototype.clone = function () {\n\t\treturn clone.call(this);\n\t};\n\n\t/**\n\t * convert a jalali date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromJalali = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromJalali.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromGregorian = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromGregorian.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {\"j\"|\"jalali\"|\"g\"|\"gregorian\"} calendar - the calendar\n\t * @returns {PersianDate} return class with persian date\n\t */\n\tPersianDate.prototype.calendar = function (calendar) {\n\t\treturn calendarMethod.call(this, calendar);\n\t};\n\n\t////////////////////--------- set & get ---------/////////////////////\n\n\t/**\n\t * get or set year\n\t * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the year, returns class,\n\t * else returns a number or string from year\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.year = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn yearMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set month\n\t * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the month, returns class,\n\t * else returns a number or string from month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.month = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn monthMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set day in month\n\t * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the day, returns class,\n\t * else returns a number or string from day\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.date = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn dateMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set quarter\n\t * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the quarter, returns class,\n\t * else returns a number or string from quarter\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.quarter = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn quarterMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set week\n\t * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the week, returns class,\n\t * else returns a number or string from week\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.week = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn weekMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set hour\n\t * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the hour, returns class,\n\t * else returns a number or string from hour\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.hour = function (format = \"H\") {\n\t\tif (this.error) return this.error;\n\t\treturn hourMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set minute\n\t * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the minute, returns class,\n\t * else returns a number or string from minute\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.minute = function (format = \"m\") {\n\t\tif (this.error) return this.error;\n\t\treturn minuteMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set second\n\t * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the second, returns class,\n\t * else returns a number or string from second\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.second = function (format = \"s\") {\n\t\tif (this.error) return this.error;\n\t\treturn secondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set millisecond\n\t * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the millisecond, returns class,\n\t * else returns a number or string from millisecond\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.millisecond = function (format = \"c\") {\n\t\tif (this.error) return this.error;\n\t\treturn millisecondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get timestamp or set date from timestamp\n\t * @param {Null|Number|String} value - a number for set the millisecond\n\t * @returns {PersianDate|Number} if set the timestamp, returns class,\n\t * else returns timestamp (number)\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.timestamp = function (value) {\n\t\tif (this.error) return this.error;\n\t\treturn timestamp.call(this, value);\n\t};\n\n\tPersianDate.prototype.valueOf = function () {\n\t\treturn this.timestamp();\n\t};\n\n\t/**\n\t * returns number of days in month\n\t * @param {?Number} year - year of date that returns number of days in month\n\t * @param {?Number} month - month of date that returns number of days in month\n\t * @returns {Number} number of days in month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.getDaysInMonth = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month\n\t) {\n\t\tif (this.error) return this.error;\n\t\treturn getDaysInMonth(this.c, year, month);\n\t};\n\n\t/**\n\t * return number of weeks in year\n\t * @since 2.0.0\n\t * @param {Number|String} year - the year\n\t * @returns {Number} number of weeks in year\n\t */\n\tPersianDate.prototype.getWeeksInYear = function (year = this.d.year) {\n\t\tif (this.error) return this.error;\n\t\treturn getWeeksInYear.call(this, year);\n\t};\n\n\t/**\n\t * change the date to start of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.startOf = function (unit = \"year\") {\n\t\treturn startOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the date to end of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.endOf = function (unit = \"year\") {\n\t\treturn endOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the time\n\t * @since 2.3.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} time - the new time\n\t * @param {Null|String|Number} time.h - hour of date\n\t * @param {Null|String|Number} time.hour - hour of date\n\t * @param {Null|String|Number} time.hours - hour of date\n\t * @param {Null|String|Number} time.m - minute of date\n\t * @param {Null|String|Number} time.minute - minute of date\n\t * @param {Null|String|Number} time.minutes - minute of date\n\t * @param {Null|String|Number} time.s - second of date\n\t * @param {Null|String|Number} time.second - second of date\n\t * @param {Null|String|Number} time.seconds - second of date\n\t * @param {Null|String|Number} time.ms - millisecond of date\n\t * @param {Null|String|Number} time.millisecond - millisecond of date\n\t * @param {Null|String|Number} time.milliseconds - millisecond of date\n\t * @returns {PersianDate|Array} if set the time, returns class,\n\t * else returns an array of time\n\t * @throws {String} if time invalid return error text\n\t */\n\tPersianDate.prototype.time = function () {\n\t\tif (this.error) return this.error;\n\t\treturn time.call(this, ...arguments);\n\t};\n\n\t////////////////////--------- add & sub ---------/////////////////////\n\n\t/**\n\t * add to year\n\t * @param {?Number|String} [year=1] - a number for add with year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn addYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * add to month\n\t * @param {?Number|String} [month=1] - a number for add with month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn addMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * add to day\n\t * @param {?Number|String} [day=1] - a number for add with day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn addDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * add to quarter\n\t * @param {?Number|String} [quarter=1] - a number for add with quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn addQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * add to week\n\t * @param {?Number|String} [week=1] - a number for add with week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn addWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * add to hour\n\t * @param {?Number|String} [hour=1] - a number for add with hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn addHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * add to minute\n\t * @param {?Number|String} [minute=1] - a number for add with minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn addMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * add to second\n\t * @param {?Number|String} [second=1] - a number for add with second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn addSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * add to millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for add with millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn addMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t/**\n\t * subtract from year\n\t * @param {?Number|String} [year=1] - a number for subtract from year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn subYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * subtract from month\n\t * @param {?Number|String} [month=1] - a number for subtract from month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn subMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * subtract from day\n\t * @param {?Number|String} [day=1] - a number for subtract from day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn subDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * subtract from quarter\n\t * @param {?Number|String} [quarter=1] - a number for subtract from quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn subQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * subtract from week\n\t * @param {?Number|String} [week=1] - a number for subtract from week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn subWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * subtract from hour\n\t * @param {?Number|String} [hour=1] - a number for subtract from hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn subHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * subtract from minute\n\t * @param {?Number|String} [minute=1] - a number for subtract from minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn subMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * subtract from second\n\t * @param {?Number|String} [second=1] - a number for subtract from second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn subSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * subtract from millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn subMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t////////////////////--------- conversion ---------/////////////////////\n\n\t/**\n\t * returns date as string with specify format\n\t * @param {?String} [format=date] - formatting date to string\n\t * @returns {String} date string\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toString = function (format = \"date\") {\n\t\tif (this.error) return this.error;\n\t\treturn toString.call(this, format);\n\t};\n\n\t/**\n\t * return the array of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return array of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toArray = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toArray.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the object of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return Object of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toObject = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toObject.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the Date instance of PersianDate\n\t * @since 2.0.0\n\t * @returns {Date} if date valid, return Date instance of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toDate = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toDate.call(this);\n\t};\n\n\t////////////////////--------- diff ---------/////////////////////\n\n\t/**\n\t * get the diffrence between two date\n\t * @since 1.4.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {String} unit - the unit of the measurment\n\t * @param {Boolean} addOne - add one day to result\n\t * @returns {Number} diffrence\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diff = function (date, unit, addOne = false) {\n\t\tif (this.error) return this.error;\n\t\treturn diff.call(this, date, unit, addOne);\n\t};\n\n\t/**\n\t * get the diffrence between two date in a human-readable format\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {Boolean} suffix - add suffix or not\n\t * @returns {String} if date valid, return diff human-readable format\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diffForHumans = function (date, suffix = true) {\n\t\tif (this.error) return this.error;\n\t\treturn diffForHumans.call(this, date, suffix);\n\t};\n\n\t////////////////////--------- comparison ---------/////////////////////\n\n\t/**\n\t * returns minimum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return minimum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.min = function () {\n\t\treturn mathOperation.call(this, arguments, \"min\");\n\t};\n\n\t/**\n\t * returns maximum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return maximum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.max = function () {\n\t\treturn mathOperation.call(this, arguments, \"max\");\n\t};\n\n\t/**\n\t * receives year and determined that is leap year or not\n\t * @param {?Number} year - the year to be determined is a leap or not\n\t * @returns {Boolean} if is leap year, returns true\n\t */\n\tPersianDate.prototype.isLeapYear = function (year = this.d.year) {\n\t\tif (this.error) return false;\n\t\treturn isLeapYear(this.c, year);\n\t};\n\n\t/**\n\t * checks the persian date and time\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid, returns true\n\t */\n\tPersianDate.prototype.isValid = function (\n\t\tyear,\n\t\tmonth,\n\t\tday,\n\t\thour,\n\t\tminute,\n\t\tsecond,\n\t\tmillisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn (\n\t\t\tthis.isValidDate(year, month, day) &&\n\t\t\tthis.isValidTime(hour, minute, second, millisecond)\n\t\t);\n\t};\n\n\t/**\n\t * checks the persian date\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @returns {Boolean} if is valid date, returns true\n\t */\n\tPersianDate.prototype.isValidDate = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month,\n\t\tday = this.d.date\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidDate(this.c, year, month, day);\n\t};\n\n\t/**\n\t * checks the time\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid time, returns true\n\t */\n\tPersianDate.prototype.isValidTime = function (\n\t\thour = this.d.hour,\n\t\tminute = this.d.minute,\n\t\tsecond = this.d.second,\n\t\tmillisecond = this.d.millisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidTime(hour, minute, second, millisecond);\n\t};\n\n\t/**\n\t * checks this date is the same to another date\n\t * @since 1.1.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSame = function () {\n\t\tif (this.error) return false;\n\t\treturn isSame.call(this, ...arguments);\n\t};\n\n\t/**\n\t * checks this date is before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<\");\n\t};\n\n\t/**\n\t * checks this date is after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">\");\n\t};\n\n\t/**\n\t * checks this date is same or before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<=\");\n\t};\n\n\t/**\n\t * checks this date is same or after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">=\");\n\t};\n\n\t/**\n\t * checks this date is between the another dates\n\t * @since 1.3.0\n\t * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} from.y - year of date\n\t * @param {Null|String|Number} from.year - year of date\n\t * @param {Null|String|Number} from.years - year of date\n\t * @param {Null|String|Number} from.M - month of date\n\t * @param {Null|String|Number} from.month - month of date\n\t * @param {Null|String|Number} from.months - month of date\n\t * @param {Null|String|Number} from.d - day of date\n\t * @param {Null|String|Number} from.day - day of date\n\t * @param {Null|String|Number} from.days - day of date\n\t * @param {Null|String|Number} from.date - day of date\n\t * @param {Null|String|Number} from.h - hour of date\n\t * @param {Null|String|Number} from.hour - hour of date\n\t * @param {Null|String|Number} from.hours - hour of date\n\t * @param {Null|String|Number} from.m - minute of date\n\t * @param {Null|String|Number} from.minute - minute of date\n\t * @param {Null|String|Number} from.minutes - minute of date\n\t * @param {Null|String|Number} from.s - second of date\n\t * @param {Null|String|Number} from.second - second of date\n\t * @param {Null|String|Number} from.seconds - second of date\n\t * @param {Null|String|Number} from.ms - millisecond of date\n\t * @param {Null|String|Number} from.millisecond - millisecond of date\n\t * @param {Null|String|Number} from.milliseconds - millisecond of date\n\t * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} to.y - year of date\n\t * @param {Null|String|Number} to.year - year of date\n\t * @param {Null|String|Number} to.years - year of date\n\t * @param {Null|String|Number} to.M - month of date\n\t * @param {Null|String|Number} to.month - month of date\n\t * @param {Null|String|Number} to.months - month of date\n\t * @param {Null|String|Number} to.d - day of date\n\t * @param {Null|String|Number} to.day - day of date\n\t * @param {Null|String|Number} to.days - day of date\n\t * @param {Null|String|Number} to.date - day of date\n\t * @param {Null|String|Number} to.h - hour of date\n\t * @param {Null|String|Number} to.hour - hour of date\n\t * @param {Null|String|Number} to.hours - hour of date\n\t * @param {Null|String|Number} to.m - minute of date\n\t * @param {Null|String|Number} to.minute - minute of date\n\t * @param {Null|String|Number} to.minutes - minute of date\n\t * @param {Null|String|Number} to.s - second of date\n\t * @param {Null|String|Number} to.second - second of date\n\t * @param {Null|String|Number} to.seconds - second of date\n\t * @param {Null|String|Number} to.ms - millisecond of date\n\t * @param {Null|String|Number} to.millisecond - millisecond of date\n\t * @param {Null|String|Number} to.milliseconds - millisecond of date\n\t * @param {String} method - determines that consider the dates themselves\n\t * @returns {‌Boolean} if date valid, return true or false\n\t */\n\tPersianDate.prototype.isBetween = function (from, to, method = \"()\") {\n\t\tif (this.error) return false;\n\t\treturn isBetween.call(this, from, to, method);\n\t};\n\n\t/**\n\t * checks date is a native js Date object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a native js Date, return true\n\t */\n\tPersianDate.prototype.isDate = isDate;\n\n\t/**\n\t * checks date is a PersianDate object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a PersianDate, return true\n\t */\n\tPersianDate.prototype.isPersianDate = isPersianDate;\n\n\tif (calendarVal) this.calendar(calendarVal);\n\tif (dateVal) {\n\t\tif (calendarVal && calendarVal[0] == \"j\") this.fromJalali(dateVal);\n\t\telse this.fromGregorian(dateVal);\n\t} else this.now();\n};\n\n////////////////////--------- statics ---------/////////////////////\n\n/**\n * receives year and determined that is leap year or not\n * @static\n * @since 2.3.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {Number} year - the year to be determined is a leap or not\n * @returns {Boolean} if is leap year, returns true\n */\nPersianDate.isLeapYear = isLeapYear;\n\n/**\n * checks date is a native js Date object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a native js Date, return true\n */\nPersianDate.isDate = isDate;\n\n/**\n * checks date is a PersianDate object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a PersianDate, return true\n */\nPersianDate.isPersianDate = isPersianDate;\n\n/**\n * checks the date and time\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid, returns true\n */\nPersianDate.isValid = isValid;\n\n/**\n * checks the date\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @returns {Boolean} if is valid date, returns true\n */\nPersianDate.isValidDate = isValidDate;\n\n/**\n * checks the time\n * @static\n * @since 2.4.0\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid time, returns true\n */\nPersianDate.isValidTime = isValidTime;\n\n/**\n * returns number of days in month\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that returns number of days in month\n * @param {?Number} month - month of date that returns number of days in month\n * @returns {Number} number of days in month\n * @throws {String} if date invalid return error message\n */\nPersianDate.getDaysInMonth = getDaysInMonth;\n\n//TODO: add localization\n\nexport default PersianDate;\n\n////////////////////- Email: Alibeikialireza@gmail.com -////////////////////\n////////////////////--------- Have A Good Day ---------/////////////////////\n","export function addDay(day) {\n\tif (day < 0)\n\t\t// if the number was negative, send to subDay method\n\t\treturn this.subDay(Math.abs(day));\n\tday = +day; //plus sign before a variable, convert variable to int\n\n\tconst dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month\n\tif (dayToStartNextMonth > day) {\n\t\tthis.d.date += day;\n\t} else {\n\t\tthis.addMonth(1, false);\n\t\tthis.d.date = 1;\n\t\tday -= dayToStartNextMonth;\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.addMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tif (day != 0) {\n\t\t\tthis.d.date += day;\n\t\t}\n\t}\n\n\treturn this;\n}\n","export function addHour(hour) {\n\tif (hour < 0)\n\t\t// if the number was negative, send to subHour method\n\t\treturn this.subHour(Math.abs(hour));\n\thour = +hour; //plus sign before a variable, convert variable to int\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.addDay(1, false);\n\t}\n\tconst hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day\n\tif (hour >= hourToNextDay) {\n\t\tthis.addDay(1, false);\n\t\thour -= hourToNextDay;\n\t\tthis.d.hour = hour;\n\t} else this.d.hour += hour;\n\n\treturn this;\n}\n","export function addMillisecond(millisecond) {\n\tif (millisecond < 0)\n\t\t// if the number was negative, send to subMillisecond method\n\t\treturn this.subMillisecond(Math.abs(millisecond));\n\tmillisecond = +millisecond; //plus sign before a variable, convert variable to int\n\twhile (millisecond >= 1000) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= 1000;\n\t}\n\tconst millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second\n\tif (millisecond >= millisecondToNextSecond) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= millisecondToNextSecond;\n\t\tthis.d.millisecond = millisecond;\n\t} else this.d.millisecond += millisecond;\n\n\treturn this;\n}\n","export function addMinute(minute) {\n\tif (minute < 0)\n\t\t// if the number was negative, send to subMinute method\n\t\treturn this.subMinute(Math.abs(minute));\n\tminute = +minute; //plus sign before a variable, convert variable to int\n\twhile (minute >= 60) {\n\t\tthis.addHour(1, false);\n\t\tminute -= 60;\n\t}\n\tconst minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour\n\tif (minute >= minuteToNextHour) {\n\t\tthis.addHour(1, false);\n\t\tminute -= minuteToNextHour;\n\t\tthis.d.minute = minute;\n\t} else this.d.minute += minute;\n\n\treturn this;\n}\n","export function addMonth(month, checkDate) {\n\tif (month < 0)\n\t\t// if the number was negative, send to subMonth method\n\t\treturn this.subMonth(Math.abs(month));\n\tmonth = +month; // plus sign before a variable, convert variable to int\n\n\tconst monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year\n\tif (monthToStartNewYear > month) {\n\t\tthis.d.month += month;\n\t} else {\n\t\tthis.addYear(1, false);\n\t\tthis.d.month = 1;\n\t\tmonth -= monthToStartNewYear;\n\t\twhile (month >= 12) {\n\t\t\tmonth -= 12;\n\t\t\tthis.addYear(1, false);\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month += month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function addQuarter(quarter, checkDate) {\n\t// if the number was negative, send to subQuarter method\n\tif (quarter < 0) return this.subQuarter(Math.abs(quarter));\n\treturn this.addMonth(+quarter * 3, checkDate);\n}\n","export function addSecond(second) {\n\tif (second < 0)\n\t\t// if the number was negative, send to subSecond method\n\t\treturn this.subSecond(Math.abs(second));\n\tsecond = +second; //plus sign before a variable, convert variable to int\n\twhile (second >= 60) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= 60;\n\t}\n\tconst secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute\n\tif (second >= secondToNextMinute) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= secondToNextMinute;\n\t\tthis.d.second = second;\n\t} else this.d.second += second;\n\n\treturn this;\n}\n","export function addWeek(week, checkDate) {\n\t// if the number was negative, send to subWeek method\n\tif (week < 0) return this.subWeek(Math.abs(week));\n\treturn this.addDay(+week * 7, checkDate);\n}\n","export function addYear(year, checkDate) {\n\t// if the number was negative, send to subYear method\n\tif (year < 0) return this.subYear(Math.abs(year));\n\tthis.d.year += +year; //plus sign before a variable, convert variable to int\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export * from \"./addYear\";\nexport * from \"./addQuarter\";\nexport * from \"./addMonth\";\nexport * from \"./addWeek\";\nexport * from \"./addDay\";\nexport * from \"./addHour\";\nexport * from \"./addMinute\";\nexport * from \"./addSecond\";\nexport * from \"./addMillisecond\";\n\nexport * from \"./subYear\";\nexport * from \"./subQuarter\";\nexport * from \"./subMonth\";\nexport * from \"./subWeek\";\nexport * from \"./subDay\";\nexport * from \"./subHour\";\nexport * from \"./subMinute\";\nexport * from \"./subSecond\";\nexport * from \"./subMillisecond\";\n","export function subDay(day) {\n\tday = Math.abs(day);\n\tlet pastDays = this.d.date; // pastDays -> Number of days that is past\n\tif (pastDays > day) {\n\t\tthis.d.date -= day;\n\t} else {\n\t\tthis.subMonth(1, false);\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\tthis.d.date = daysInMonth;\n\t\tday -= pastDays;\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.subMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tthis.d.date = daysInMonth - day;\n\t}\n\n\treturn this;\n}\n","export function subHour(hour) {\n\thour = Math.abs(hour);\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.subDay(1, false);\n\t}\n\tconst pastHours = this.d.hour; // pastHours -> Number of hours that is past\n\tif (hour > pastHours) {\n\t\tthis.subDay(1, false);\n\t\thour -= pastHours;\n\t\tthis.d.hour = 24 - hour;\n\t} else this.d.hour -= hour;\n\n\treturn this;\n}\n","export function subMillisecond(millisecond) {\n\tmillisecond = Math.abs(millisecond);\n\twhile (millisecond >= 1000) {\n\t\tmillisecond -= 1000;\n\t\tthis.subSecond(1, false);\n\t}\n\tconst pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past\n\tif (millisecond > pastMilliseconds) {\n\t\tthis.subSecond(1, false);\n\t\tmillisecond -= pastMilliseconds;\n\t\tthis.d.millisecond = 1000 - millisecond;\n\t} else this.d.millisecond -= millisecond;\n\n\treturn this;\n}\n","export function subMinute(minute) {\n\tminute = Math.abs(minute);\n\twhile (minute >= 60) {\n\t\tminute -= 60;\n\t\tthis.subHour(1, false);\n\t}\n\tconst pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past\n\tif (minute > pastMinute) {\n\t\tthis.subHour(1, false);\n\t\tminute -= pastMinute;\n\t\tthis.d.minute = 60 - minute;\n\t} else this.d.minute -= minute;\n\n\treturn this;\n}\n","export function subMonth(month, checkDate) {\n\tmonth = Math.abs(month); //plus sign before a variable, convert variable to int\n\tconst pastMonth = this.d.month; //pastMonth -> Number of month that is past\n\tif (pastMonth > month) {\n\t\tthis.d.month -= month;\n\t} else {\n\t\tthis.subYear(1, false);\n\t\tthis.d.month = 12;\n\t\tmonth -= pastMonth;\n\t\twhile (month >= 12) {\n\t\t\tthis.subYear(1, false);\n\t\t\tmonth -= 12;\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month -= month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function subQuarter(quarter, checkDate) {\n\tquarter = Math.abs(quarter);\n\treturn this.subMonth(quarter * 3, checkDate);\n}\n","export function subSecond(second) {\n\tsecond = Math.abs(second);\n\twhile (second >= 60) {\n\t\tsecond -= 60;\n\t\tthis.subMinute(1, false);\n\t}\n\tconst pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past\n\tif (second > pastSeconds) {\n\t\tthis.subMinute(1, false);\n\t\tsecond -= pastSeconds;\n\t\tthis.d.second = 60 - second;\n\t} else this.d.second -= second;\n\n\treturn this;\n}\n","export function subWeek(week, checkDate) {\n\tweek = Math.abs(week);\n\treturn this.subDay(week * 7, checkDate);\n}\n","export function subYear(year, checkDate) {\n\tthis.d.year -= Math.abs(year);\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","/**\n * add a prefix to the text in the number of characters that the text has less\n * @param {String|Number} text a text need prefix\n * @param {Number} length length of text\n * @param {String} [prefix=0] - string for add before of text\n * @returns {String} text with or wihtout prefix\n */\nexport const addPrefix = (text, length, prefix = \"0\") => {\n\treturn prefix.repeat(length - String(text).length) + text;\n};\n","import { typesToArray } from \"../base\";\n\n/**\n * compare the dates\n * @since 2.0.0\n * @param {PersianDate|Date|String|Array|Object} date - the date\n * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare\n * @returns {‌Boolean} if date valid, return true of false\n */\nexport const compare = function (date, operator) {\n\tdate = typesToArray(this.c, ...date);\n\n\tif (this.isValid(...date))\n\t\treturn eval(\n\t\t\t\"this.timestamp()\" + operator + \"this.clone().parse(...date).timestamp()\"\n\t\t);\n\treturn false;\n};\n","/**\n * show error\n * @since 3.0.0\n * @param {String} msg - the message for error\n */\nexport const error = (msg) => {\n\tconsole.error(msg);\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get label of day\n * @param {Date} date - the date that received day\n * @param {'jalali'|'gregorian'} calendar - the calendar\n * @returns {String} returns day label\n * @example Saturday | شنبه\n */\nexport const getDayLabel = function (date = new Date(), calendar = \"jalali\") {\n\tif (isDate(date)) return CALENDAR[calendar][\"days\"][\"label\"][date.getDay()];\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get the day of the week\n * @param {Date} date - the date that received day of week\n * @param {'jalali', 'gregorian'} calendar - the calendar\n * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0\n * @returns {Number|String} the number of the day of week\n */\nexport const getDayOfWeek = (\n\tdate = new Date(),\n\tcalendar = \"jalali\",\n\tmode = \"standard\"\n) => {\n\tif (isDate(date)) {\n\t\t// if the year was an instance of Date\n\t\treturn (\n\t\t\tCALENDAR[calendar][\"days\"][\"weekNumber\"][date.getDay()] +\n\t\t\t(mode != \"standard\" ? 0 : 1)\n\t\t);\n\t}\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { getDaysInMonth } from \"../set-get\";\n\n/**\n * get the day of the year\n * @param {Null|String|Number} year - the year of date\n * @param {Null|Number|String} month - the month of date that gives the day of the year\n * @param {Null|Number|String} day - the day of date that gives the day of the year\n * @param {Null|Number|String} calendar - the calendar\n * @returns {Number} the day of the year\n */\nexport const getDayOfYear = (year, month, day, calendar) => {\n\t//plus sign before a variable, convert variable to int\n\tmonth = +month;\n\tday = +day;\n\twhile (--month != 0) {\n\t\tday += getDaysInMonth(calendar, year, month);\n\t}\n\treturn day;\n};\n","const dayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\n/**\n * get the week of the year\n * @param {Null|Number|String} year - the year of date that gives the week of the year\n * @param {Null|Number|String} month - the month of date that gives the week of the year\n * @param {Null|Number|String} day - the day of date that gives the week of the year\n * @param {String} calendar - the calendar\n * @returns {Number} the week of the year\n */\nexport const getWeekOfYear = function (year, month, day, calendar) {\n\tconst firstOfYear = this.clone().calendar(calendar).parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar));\n\tconst date = firstOfYear.clone().parse(year, month, day);\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\n\tconst weekNumber = Math.ceil(date.diff(firstOfYear, \"date\", true) / 7);\n\n\tconst weeksInYear = date.clone().getWeeksInYear();\n\treturn weekNumber > weeksInYear ? weeksInYear : weekNumber;\n};\n","import { REGEX } from \"../utils\";\nimport { isDate } from \"../comparison\";\n\n/**\n * Gregorian to Jalali\n * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year\n * @param {Null|Number|String} [month=1] - Gregorian month\n * @param {Null|Number|String} [day=1] - Gregorian day\n * @param {Null|Number|String} [hour=0] - Gregorian hour\n * @param {Null|Number|String} [minute=0] - Gregorian minute\n * @param {Null|Number|String} [second=0] - Gregorian second\n * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond\n * @returns {Array} Jalali date\n */\nexport const gtj = (year, month, day, hour, minute, second, millisecond) => {\n\tlet date;\n\tif (!year) date = new Date();\n\telse if (isDate(year))\n\t\t// if the year was an instance of Date\n\t\tdate = year;\n\telse\n\t\tdate = new Date(\n\t\t\tREGEX[\"isNumeric\"].test(year) ? year : 0,\n\t\t\tREGEX[\"isNumeric\"].test(month) ? month : 0,\n\t\t\tREGEX[\"isNumeric\"].test(day) ? day : 1,\n\t\t\tREGEX[\"isNumeric\"].test(hour) ? hour : 0,\n\t\t\tREGEX[\"isNumeric\"].test(minute) ? minute : 0,\n\t\t\tREGEX[\"isNumeric\"].test(second) ? second : 0,\n\t\t\tREGEX[\"isNumeric\"].test(millisecond) ? millisecond : 0\n\t\t);\n\tday = date.getDate();\n\tmonth = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one\n\tyear = date.getFullYear();\n\thour = date.getHours();\n\tminute = date.getMinutes();\n\tsecond = date.getSeconds();\n\tmillisecond = date.getMilliseconds();\n\tlet jYear, jMonth, jDay;\n\tconst pastDaysInMonth = [\n\t\t0,\n\t\t31,\n\t\t59,\n\t\t90,\n\t\t120,\n\t\t151,\n\t\t181,\n\t\t212,\n\t\t243,\n\t\t273,\n\t\t304,\n\t\t334,\n\t]; // Past days from the start of the year in each month\n\tif (year > 1600) {\n\t\tjYear = 979;\n\t\tyear -= 1600;\n\t} else {\n\t\tjYear = 0;\n\t\tyear -= 621;\n\t}\n\tconst newYear = month > 2 ? year + 1 : year;\n\tlet days =\n\t\t365 * year +\n\t\tparseInt((newYear + 3) / 4) -\n\t\tparseInt((newYear + 99) / 100) +\n\t\tparseInt((newYear + 399) / 400) -\n\t\t80 +\n\t\tday +\n\t\tpastDaysInMonth[month - 1];\n\tjYear += 33 * parseInt(days / 12053);\n\tdays %= 12053;\n\tjYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tjYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tjMonth =\n\t\tdays < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30);\n\tjDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30);\n\treturn [jYear, jMonth, jDay, hour, minute, second, millisecond];\n};\n","export * from \"./gtj\";\nexport * from \"./jtg\";\nexport * from \"./warn\";\nexport * from \"./error\";\nexport * from \"./invalid\";\nexport * from \"./typesToArray\";\nexport * from \"./ordinalNumber\";\nexport * from \"./addPrefix\";\nexport * from \"./setJalaliDate\";\nexport * from \"./setGregorianDate\";\nexport * from \"./getDayLabel\";\nexport * from \"./getDayOfWeek\";\nexport * from \"./getDayOfYear\";\nexport * from \"./getWeekOfYear\";\nexport * from \"./compare\";\nexport * from \"./mathOperation\";\nexport * from \"./isTimestamp\";\n","/**\n * make error and delete this.d\n * @param {String} errorText - Error Text\n * @returns {PersianDate} make error and return class\n */\nexport const invalid = function (errorText) {\n\tdelete this.d;\n\tthis.error = errorText;\n\treturn this;\n};\n","/**\n * check the input is timestamp\n * @since 2.0.0\n * @param {Number|String} timestamp - input that must be checked\n * @returns {Boolean} if input was timestamp, return true\n */\nexport const isTimestamp = (timestamp) => {\n\treturn !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0;\n};\n","import { REGEX } from \"../utils\";\nimport { isLeapYear } from \"../comparison\";\n\n/**\n * Jalali to Gregorian\n * @param {Null|Number|String} year - Jalali year\n * @param {Null|Number|String} [month=1] - Jalali month\n * @param {Null|Number|String} [day=1] - Jalali day\n * @param {Null|Number|String} [hour=0] - Jalali hour\n * @param {Null|Number|String} [minute=0] - Jalali minute\n * @param {Null|Number|String} [second=0] - Jalali second\n * @param {Null|Number|String} [millisecond=0] - Jalali millisecond\n * @returns {Date} Gregorian date\n */\nexport const jtg = (year, month, day, hour, minute, second, millisecond) => {\n\t//plus sign before a variable, convert variable to int\n\tyear = REGEX[\"isNumeric\"].test(year) ? +year : 1;\n\tmonth = REGEX[\"isNumeric\"].test(month) ? +month : 1;\n\tday = REGEX[\"isNumeric\"].test(day) ? +day : 1;\n\thour = REGEX[\"isNumeric\"].test(hour) ? +hour : 0;\n\tminute = REGEX[\"isNumeric\"].test(minute) ? +minute : 0;\n\tsecond = REGEX[\"isNumeric\"].test(second) ? +second : 0;\n\tmillisecond = REGEX[\"isNumeric\"].test(millisecond) ? +millisecond : 0;\n\tlet gYear, gMonth, gDay;\n\tif (year > 979) {\n\t\tgYear = 1600;\n\t\tyear -= 979;\n\t} else {\n\t\tgYear = 621;\n\t}\n\tlet days =\n\t\t365 * year +\n\t\tparseInt(year / 33) * 8 +\n\t\tparseInt(((year % 33) + 3) / 4) +\n\t\t78 +\n\t\tday +\n\t\t(month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186);\n\tgYear += 400 * parseInt(days / 146097);\n\tdays %= 146097;\n\tif (days > 36524) {\n\t\tgYear += 100 * parseInt(--days / 36524);\n\t\tdays %= 36524;\n\t\tif (days >= 365) days++;\n\t}\n\tgYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tgYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tgDay = days + 1;\n\tconst daysOfMonths = [\n\t\t0,\n\t\t31,\n\t\tisLeapYear(\"gregorian\", gYear) ? 29 : 28,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t];\n\tfor (gMonth = 0; gMonth < 13; gMonth++) {\n\t\tconst v = daysOfMonths[gMonth];\n\t\tif (gDay <= v) break;\n\t\tgDay -= v;\n\t}\n\n\treturn new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond);\n};\n","import { typesToArray } from \"../base\";\n\n/**\n * do the math operation on dates\n * @since 1.4.0\n * @param {...String|PersianDate|Date|Array|Object} values - the dates\n * @param {'min'|'max'} operation - the operation\n * @returns {*} return maximum date\n * @throws {false} if parameters not send or parameters is invalid, return false\n */\nexport const mathOperation = function (values, operation) {\n\tif (!values.length) {\n\t\treturn false;\n\t}\n\tconst args = [...values];\n\tconst argsNumber = args.map((date) => {\n\t\tdate = typesToArray(this.c, date);\n\t\tif (this.isValid(...date))\n\t\t\treturn this.clone()\n\t\t\t\t.parse(...date)\n\t\t\t\t.timestamp();\n\t\treturn false;\n\t});\n\tif (argsNumber.includes(false)) return false;\n\treturn args[argsNumber.indexOf(Math[operation](...argsNumber))];\n};\n","import { CALENDAR } from \"../utils\";\n/**\n * returns the ordinal number of that number sent to it\n * @param {Number} number - the number that gives ordinal number --> from 1 to 366\n * @param {'jalali','gregorian'} calendar - the calendar\n * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number\n * @returns {String} ordinal number\n * @example 1st | اول | اولین\n */\nexport const ordinalNumber = (number, calendar = \"jalali\", mode = 1) => {\n\treturn CALENDAR[calendar].ordinalNumbers(number, mode);\n};\n","/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date instance\n */\nexport const setGregorianDate = function (date) {\n\tthis.d = {\n\t\tyear: date.getFullYear(),\n\t\tmonth: date.getMonth() + 1,\n\t\tdate: date.getDate(),\n\t\thour: date.getHours(),\n\t\tminute: date.getMinutes(),\n\t\tsecond: date.getSeconds(),\n\t\tmillisecond: date.getMilliseconds(),\n\t};\n};\n","import { gtj } from \".\";\n/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date\n */\nexport const setJalaliDate = function (date) {\n\t[\n\t\tthis.d.year,\n\t\tthis.d.month,\n\t\tthis.d.date,\n\t\tthis.d.hour,\n\t\tthis.d.minute,\n\t\tthis.d.second,\n\t\tthis.d.millisecond,\n\t] = gtj(date);\n};\n","import PersianDate from \"../PersianDate\";\nimport { REGEX } from \"../utils\";\nimport { gtj } from \".\";\n\n/**\n * convert String or Array or Object or PersianDate to Array\n * @since 1.2.0\n * @param {String|Array|Object|Number} year - this param must be string or array or Object from date or year\n * @param {String|Number} year.y - year of date\n * @param {Null|String|Number} year.year - year of date\n * @param {Null|String|Number} year.years - year of date\n * @param {Null|String|Number} year.M - month of date\n * @param {Null|String|Number} year.month - month of date\n * @param {Null|String|Number} year.months - month of date\n * @param {Null|String|Number} year.d - day of date\n * @param {Null|String|Number} year.day - day of date\n * @param {Null|String|Number} year.days - day of date\n * @param {Null|String|Number} year.date - day of date\n * @param {Null|String|Number} year.h - hour of date\n * @param {Null|String|Number} year.hour - hour of date\n * @param {Null|String|Number} year.hours - hour of date\n * @param {Null|String|Number} year.m - minute of date\n * @param {Null|String|Number} year.minute - minute of date\n * @param {Null|String|Number} year.minutes - minute of date\n * @param {Null|String|Number} year.s - second of date\n * @param {Null|String|Number} year.second - second of date\n * @param {Null|String|Number} year.seconds - second of date\n * @param {Null|String|Number} year.ms - millisecond of date\n * @param {Null|String|Number} year.millisecond - millisecond of date\n * @param {Null|String|Number} year.milliseconds - millisecond of date\n * @param {Null|Number|String} month month of date\n * @param {Null|Number|String} day day of date\n * @param {Null|Number|String} hour hour of date\n * @param {Null|Number|String} minute minute of date\n * @param {Null|Number|String} second second of date\n * @param {Null|Number|String} millisecond millisecond of date\n * @returns {Array} array includes year, month, date, hour, minute, second, millinsecond\n */\nexport const typesToArray = (\n\tcalendar,\n\tyear,\n\tmonth,\n\tdate,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) => {\n\tif (!year)\n\t\t// if year not defined\n\t\tyear = new Date(); // return now\n\tif (typeof year == \"string\" && year.search(REGEX[\"separators\"]) != -1) {\n\t\treturn year.split(/[/ -.,:\\\\]/);\n\t} else if (Array.isArray(year)) {\n\t\treturn year;\n\t} else if (PersianDate.isPersianDate(year)) {\n\t\treturn year.clone().calendar(calendar).toArray();\n\t} else if (PersianDate.isDate(year)) {\n\t\treturn new PersianDate(year).calendar(calendar).toArray();\n\t} else if (Object.prototype.toString.call(year) === \"[object Object]\") {\n\t\treturn [\n\t\t\tyear.y || year.year || year.years,\n\t\t\tyear.M || year.month || year.months || 1,\n\t\t\tyear.d || year.day || year.days || year.date || 1,\n\t\t\tyear.h || year.hour || year.hours || 0,\n\t\t\tyear.m || year.minute || year.minutes || 0,\n\t\t\tyear.s || year.second || year.seconds || 0,\n\t\t\tyear.ms || year.millisecond || year.milliseconds || 0,\n\t\t];\n\t}\n\treturn [year, month, date, hour, minute, second, millisecond];\n};\n","/**\n * show warning\n * @since 2.0.0\n * @param {String} msg - the message for warning\n */\nexport const warn = (msg) => {\n\tconsole.warn(msg);\n};\n","export * from \"./isDate\";\nexport * from \"./isLeapYear\";\nexport * from \"./isPersianDate\";\nexport * from \"./isValid\";\nexport * from \"./isValidDate\";\nexport * from \"./isValidTime\";\nexport * from \"./isSame\";\nexport * from \"./isBetween\";\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isBetween(from, to, method) {\n\tconst date = this.toArray();\n\n\tfrom = typesToArray(this.c, from);\n\tif (!from[2]) date[2] = 1;\n\tfrom = date.map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(from[i]) ? from[i] : value\n\t);\n\n\tto = typesToArray(this.c, to);\n\tto = date.map((value, i) => (REGEX[\"isNumeric\"].test(to[i]) ? to[i] : value));\n\n\tif (!(this.isValid(...from) && this.isValid(...to))) return false;\n\n\treturn (\n\t\tcompare.call(this, from, method[0] === \"[\" ? \">=\" : \">\") &&\n\t\tcompare.call(this, to, method[1] === \"]\" ? \"<=\" : \"<\")\n\t);\n}\n","export const isDate = function (date) {\n\treturn date instanceof Date;\n};\n","const jalali = (year) => {\n\tconst array =\n\t\tyear > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30];\n\tconst remainder = year % 33;\n\treturn array.includes(remainder);\n};\n\nconst gregorian = (year) => {\n\treturn (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;\n};\n\nexport const isLeapYear = function (calendar, year) {\n\t// calendar[0] ==> first letter of calendar ('j' | 'g' | ...)\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year);\n\t\tdefault:\n\t\t\treturn gregorian(year);\n\t}\n};\n","import PersianDate from \"../PersianDate\";\nexport const isPersianDate = function (date) {\n\treturn date instanceof PersianDate;\n};\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isSame() {\n\tlet date = typesToArray(this.c, ...arguments);\n\tdate = this.toArray().map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(date[i]) ? date[i] : value\n\t);\n\n\treturn compare.call(this, date, \"==\");\n}\n","import { isValidDate, isValidTime } from \".\";\n\nexport const isValid = function (\n\tcalendar,\n\tyear,\n\tmonth,\n\tday,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) {\n\treturn (\n\t\tisValidDate(calendar, year, month, day) &&\n\t\tisValidTime(hour, minute, second, millisecond)\n\t);\n};\n","import { isLeapYear } from \"./isLeapYear\";\n\nconst jalali = (year, month, day) => {\n\tif (month >= 7 && month <= 11 && day == 31) return false;\n\tif (month == 12 && day == 31) return false;\n\tif (month == 12 && day == 30 && !isLeapYear(\"j\", year)) return false;\n\treturn true;\n};\n\nconst gregorian = (year, month, day) => {\n\tif ([2, 4, 6, 9, 11].includes(month) && day == 31) return false;\n\tif (month == 2 && (day == 30 || (day == 29 && !isLeapYear(\"g\", year))))\n\t\treturn false;\n\treturn true;\n};\n\nexport const isValidDate = function (calendar, year, month, day) {\n\tif ([year, month, day].some((e) => String(e).search(/null|NaN/) != -1))\n\t\treturn false;\n\tif (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false;\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year, month, day);\n\t\tdefault:\n\t\t\treturn gregorian(year, month, day);\n\t}\n};\n","export const isValidTime = function (hour, minute, second, millisecond) {\n\tif (\n\t\t[hour, minute, second, millisecond].some(\n\t\t\t(e) => String(e).search(/null|NaN/) != -1\n\t\t)\n\t)\n\t\treturn false;\n\tif (hour < 0 || hour > 23) return false;\n\tif (minute < 0 || minute > 59) return false;\n\tif (second < 0 || second > 59) return false;\n\tif (millisecond < 0 || millisecond > 999) return false;\n\treturn true;\n};\n","export * from \"./toString\";\nexport * from \"./toArray\";\nexport * from \"./toObject\";\nexport * from \"./toDate\";\n","import { typesToArray } from \"../base\";\n\nexport function toArray() {\n\tif (!arguments.length) {\n\t\treturn Object.values(this.d);\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn [\n\t\tthis.year(formats[0]),\n\t\tthis.month(formats[1]),\n\t\tthis.date(formats[2]),\n\t\tthis.hour(formats[3]),\n\t\tthis.minute(formats[4]),\n\t\tthis.second(formats[5]),\n\t\tthis.millisecond(formats[6]),\n\t];\n}\n","import { jtg } from \"../base\";\n\nconst jalali = (date) => {\n\treturn jtg(...date);\n};\n\nconst gregorian = (date) => {\n\t--date[1];\n\treturn new Date(...date);\n};\n\nexport function toDate() {\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(this.toArray());\n\t\tdefault:\n\t\t\treturn gregorian(this.toArray());\n\t}\n}\n","import { typesToArray } from \"../base\";\n\nexport function toObject() {\n\tif (!arguments.length) {\n\t\treturn this.d;\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn {\n\t\tyear: this.year(formats[0]),\n\t\tmonth: this.month(formats[1]),\n\t\tdate: this.date(formats[2]),\n\t\thour: this.hour(formats[3]),\n\t\tminute: this.minute(formats[4]),\n\t\tsecond: this.second(formats[5]),\n\t\tmillisecond: this.millisecond(formats[6]),\n\t};\n}\n","import { REGEX, TIMETYPE } from \"../utils\";\n\nconst jalali = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"j\")\n\t\t.replace(/datetime/gi, \"jYYYY/jMM/jDD HH:mm\")\n\t\t.replace(/date/gi, \"jYYYY/jMM/jDD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nconst gregorian = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"\")\n\t\t.replace(/datetime/gi, \"YYYY-MM-DD HH:mm\")\n\t\t.replace(/date/gi, \"YYYY-MM-DD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nexport function toString(format) {\n\tconst rawTexts = [];\n\tformat = format.replace(REGEX[\"betweenBacktick\"], (_matched, text) => {\n\t\trawTexts.push(text);\n\t\treturn \"###\";\n\t});\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\tformat = jalali(format);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tformat = gregorian(format);\n\t}\n\tconst matchedFormats = format.match(REGEX[\"format\"]);\n\tlet dateString = \"\";\n\tfor (const i of matchedFormats) {\n\t\tdateString += format.substring(0, format.indexOf(i));\n\n\t\tif (i.search(/Y|y/) != -1) dateString += this.year(i);\n\t\telse if (i.search(/M/) != -1) dateString += this.month(i);\n\t\telse if (i.search(/Q/) != -1) dateString += this.quarter(i);\n\t\telse if (i.search(/D|d/) != -1) dateString += this.date(i);\n\t\telse if (i.search(/W|w/) != -1) dateString += this.week(i);\n\t\telse if (i.search(/H|h|k/) != -1) dateString += this.hour(i);\n\t\telse if (i.search(/m/) != -1) dateString += this.minute(i);\n\t\telse if (i.search(/s/) != -1) dateString += this.second(i);\n\t\telse if (i.search(/c|C/) != -1) dateString += this.millisecond(i);\n\t\telse if (i.search(/t/) != -1) dateString += this.timestamp();\n\t\telse if (i.search(/a|A/) != -1) dateString += TIMETYPE(this.d.hour, i);\n\n\t\tformat = format.substr(format.indexOf(i) + i.length);\n\t}\n\tdateString += format;\n\tfor (let i = 0; i < rawTexts.length; i++)\n\t\tdateString = dateString.replace(\"###\", rawTexts[i]);\n\treturn String(dateString);\n}\n","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function calendar(c) {\n\tif (!c) return this.c;\n\n\tif (c[0] == \"j\" && this.c[0] != \"j\") {\n\t\tif (!this.error) setJalaliDate.call(this, this.toDate());\n\t\tthis.c = \"jalali\";\n\t} else if (c[0] == \"g\" && this.c[0] != \"g\") {\n\t\tif (!this.error) setGregorianDate.call(this, this.toDate());\n\t\tthis.c = \"gregorian\";\n\t}\n\n\treturn this;\n}\n","export function clone() {\n\treturn Object.assign(\n\t\tObject.create(Object.getPrototypeOf(this)),\n\t\tJSON.parse(JSON.stringify(this))\n\t);\n}\n","import {\n\ttypesToArray,\n\tsetGregorianDate,\n\tsetJalaliDate,\n\tinvalid,\n\tisTimestamp,\n} from \"../base\";\nimport { isValid } from \"../comparison\";\n\nexport function fromGregorian(...date) {\n\tif (!date.length) date[0] = new Date().getTime();\n\telse if (this.isPersianDate(date[0])) {\n\t\tdate = date[0].clone().calendar(\"g\").toArray();\n\t} else if (!isTimestamp(date[0])) {\n\t\tdate = typesToArray(\"gregorian\", ...date);\n\t\tdate[6] = +date[6] || 0;\n\t\tdate[5] = +date[5] || 0;\n\t\tdate[4] = +date[4] || 0;\n\t\tdate[3] = +date[3] || 0;\n\t\tdate[2] = +date[2] || 1;\n\t\tdate[1] = +date[1] || 1;\n\t\tdate[0] = +date[0];\n\t}\n\n\tif (date.length > 1) {\n\t\tif (!isValid(\"gregorian\", ...date))\n\t\t\treturn invalid.call(this, \"تاریخ نامعتبر\");\n\t\t--date[1]; // this is month; becuse the Date get month from 0, subtract one\n\t}\n\n\tdate = new Date(...date);\n\tif (date == \"Invalid Date\") return invalid.call(this, \"تاریخ نامعتبر\");\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\treturn this;\n}\n","import { typesToArray, gtj, jtg, setGregorianDate, invalid } from \"../base\";\n\nexport function fromJalali(...date) {\n\tif (!date.length) date = gtj();\n\telse date = typesToArray(\"jalali\", ...date);\n\n\tif (this.c == \"jalali\") {\n\t\tthis.d.year = +date[0];\n\t\tthis.d.month = +date[1] || 1;\n\t\tthis.d.date = +date[2] || 1;\n\t\tthis.d.hour = +date[3] || 0;\n\t\tthis.d.minute = +date[4] || 0;\n\t\tthis.d.second = +date[5] || 0;\n\t\tthis.d.millisecond = +date[6] || 0;\n\t} else {\n\t\tsetGregorianDate.call(this, jtg(...date));\n\t}\n\n\tif (!this.isValid()) return invalid.call(this, \"تاریخ نامعتبر\");\n\treturn this;\n}\n","export * from \"./now\";\nexport * from \"./parse\";\nexport * from \"./clone\";\nexport * from \"./fromJalali\";\nexport * from \"./fromGregorian\";\nexport * from \"./calendar\";\n","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function now() {\n\tconst date = new Date();\n\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\n\treturn this;\n}\n","export function parse(...date) {\n\tif (this.c == \"jalali\") {\n\t\treturn this.fromJalali(...date);\n\t} else {\n\t\treturn this.fromGregorian(...date);\n\t}\n}\n","import { typesToArray } from \"../base\";\n\nexport function diff(date, unit, addOne) {\n\tdate = typesToArray(this.c, date);\n\tif (!this.isValid(...date)) return \"تاریخ نامعتبر\";\n\tlet result =\n\t\tthis.timestamp() -\n\t\tthis.clone()\n\t\t\t.parse(...date)\n\t\t\t.timestamp();\n\tswitch (unit) {\n\t\tcase \"y\":\n\t\tcase \"year\":\n\t\tcase \"years\":\n\t\t\tresult = this.d.year - date[0];\n\t\t\tbreak;\n\t\tcase \"M\":\n\t\tcase \"month\":\n\t\tcase \"months\":\n\t\t\tresult = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]);\n\t\t\tbreak;\n\t\tcase \"d\":\n\t\tcase \"date\":\n\t\tcase \"day\":\n\t\tcase \"days\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60 / 24);\n\t\t\tbreak;\n\t\tcase \"h\":\n\t\tcase \"hour\":\n\t\tcase \"hours\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60);\n\t\t\tbreak;\n\t\tcase \"m\":\n\t\tcase \"minute\":\n\t\tcase \"minutes\":\n\t\t\tresult = Math.ceil(result / 1000 / 60);\n\t\t\tbreak;\n\t\tcase \"s\":\n\t\tcase \"second\":\n\t\tcase \"seconds\":\n\t\t\tresult = Math.ceil(result / 1000);\n\t\t\tbreak;\n\t\tcase \"ms\":\n\t\tcase \"millisecond\":\n\t\tcase \"milliseconds\":\n\t}\n\treturn addOne ? result + (result >= 0 ? 1 : -1) : result;\n}\n","export function diffForHumans(date, suffix) {\n\tlet result = this.diff(date, \"s\");\n\tif (typeof result == \"string\") return \"تاریخ نامعتبر\";\n\n\tconst prefix = suffix && (result > 0 ? \"آینده\" : \"پیش\");\n\tresult = Math.abs(result);\n\n\tif (result == 0) return \"هم اکنون\";\n\telse if (result < 45) result = \"لحظات\";\n\telse if ((result /= 60) < 45)\n\t\t// divide by 60, for getting minute\n\t\tresult = Math.round(result) + \" \" + \"دقیقه\";\n\telse if ((result /= 60) < 23.5)\n\t\t// divide by 60, for getting hour\n\t\tresult = Math.round(result) + \" \" + \"ساعت\";\n\telse if ((result /= 24) < 26)\n\t\t// divide by 24, for getting day\n\t\tresult = Math.round(result) + \" \" + \"روز\";\n\telse if (result < 320) result = Math.round(result / 30) + \" \" + \"ماه\";\n\telse result = Math.round(result / 365) + \" \" + \"سال\";\n\treturn result + (suffix ? \" \" + prefix : \"\");\n}\n","export * from \"./diff\";\nexport * from \"./diffForHumans\";\n","import { REGEX } from \"../utils\";\nimport {\n\taddPrefix,\n\tordinalNumber,\n\tgetDayOfWeek,\n\tgtj,\n\tgetDayLabel,\n\tgetDayOfYear,\n} from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jD\";\n\t\tdefault:\n\t\t\treturn \"D\";\n\t}\n};\n\nexport function date(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst daysInMonth = this.getDaysInMonth();\n\n\t\tif (format < 1) {\n\t\t\tthis.d.date = 1;\n\t\t\tthis.subDay(format - 1);\n\t\t} else if (format > daysInMonth) {\n\t\t\tthis.d.date = daysInMonth;\n\t\t\tthis.addDay(format - daysInMonth);\n\t\t} else {\n\t\t\tthis.d.date = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jDate = this.c == \"jalali\" ? this.d.date : gtj(this.toDate())[2];\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"jDD\") return addPrefix(jDate, 2);\n\t\tif (format == \"jD\") return jDate;\n\t\tif (format == \"jDo\") return ordinalNumber(jDate);\n\t\tif (format == \"jDO\") return ordinalNumber(jDate, \"jalali\", 2);\n\t\t//---------- Day of Week ----------//\n\t\tconst gDate = this.toDate();\n\t\tif (format == \"jdddd\" || format == \"jddd\") return getDayLabel(gDate);\n\t\tif (format == \"jdd\") return getDayLabel(gDate).slice(0, 1);\n\t\tlet dayOfWeek = getDayOfWeek(gDate);\n\t\tif (format == \"jdo\") return ordinalNumber(dayOfWeek);\n\t\tif (format == \"jdO\") return ordinalNumber(dayOfWeek, \"jalali\", 2);\n\t\tif (format == \"jd\") return getDayOfWeek(gDate, \"jalali\", \"array\");\n\t\tif (format == \"jde\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tlet dayOfYear = getDayOfYear(this.year(\"jy\"), this.month(\"jM\"), jDate, \"j\");\n\t\tif (format == \"jDDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"jDDD\") return dayOfYear;\n\t\tif (format == \"jDDDo\") return ordinalNumber(dayOfYear);\n\t\tif (format == \"jDDDO\") return ordinalNumber(dayOfYear, \"jalali\", 2);\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"DD\") return addPrefix(gDate.getDate(), 2);\n\t\tif (format == \"D\") return gDate.getDate();\n\t\tif (format == \"Do\" || format == \"DO\")\n\t\t\treturn ordinalNumber(gDate.getDate(), \"gregorian\");\n\t\t//---------- Day of Week ----------//\n\t\tif (format == \"dddd\") return getDayLabel(gDate, \"gregorian\");\n\t\tif (format == \"ddd\") return getDayLabel(gDate, \"gregorian\").slice(0, 3);\n\t\tif (format == \"dd\") return getDayLabel(gDate, \"gregorian\").slice(0, 2);\n\t\tdayOfWeek = getDayOfWeek(gDate, \"gregorian\");\n\t\tif (format == \"do\" || format == \"dO\")\n\t\t\treturn ordinalNumber(dayOfWeek, \"gregorian\");\n\t\tif (format == \"d\") return dayOfWeek - 1;\n\t\tif (format == \"de\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tdayOfYear = getDayOfYear(\n\t\t\tgDate.getFullYear(),\n\t\t\tgDate.getMonth() + 1,\n\t\t\tgDate.getDate(),\n\t\t\t\"g\"\n\t\t);\n\t\tif (format == \"DDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"DDD\") return dayOfYear;\n\t\tif (format == \"DDDo\" || format == \"DDDO\")\n\t\t\treturn ordinalNumber(dayOfYear, \"gregorian\");\n\t\treturn jDate;\n\t}\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function endOf(unit) {\n\tthis.d.millisecond = 999;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 59;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 59;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 23;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.addDay(7 - getDayOfWeek(this.toDate(), this.c));\n\tif (unit[0] == \"q\") {\n\t\tthis.quarter(this.quarter()).addMonth(2);\n\t\tthis.d.date = this.getDaysInMonth();\n\t\treturn this;\n\t}\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 12;\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit[0] == \"y\") return this;\n}\n","import { isLeapYear } from \"../comparison/isLeapYear\";\n\nconst jalali = (calendar, year, month) => {\n\tif (month >= 1 && month <= 6) return 31;\n\telse if ((month > 6 && month <= 11) || isLeapYear(calendar, year)) {\n\t\treturn 30;\n\t}\n\treturn 29;\n};\n\nconst gregorian = (calendar, year, month) => {\n\tif ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31;\n\telse if (month != 2) return 30;\n\telse if (isLeapYear(calendar, year)) return 29;\n\treturn 28;\n};\n\nexport const getDaysInMonth = function (calendar, year, month) {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(calendar, year, month);\n\t\tdefault:\n\t\t\treturn gregorian(calendar, year, month);\n\t}\n};\n","const getDayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\nexport function getWeeksInYear(year) {\n\tconst dayOfYearFormat = getDayOfYearFormat(this.c);\n\n\tconst firstOfYear = this.clone().parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat);\n\tconst lastOfYear = firstOfYear.clone().endOf(\"year\").startOf(\"day\");\n\tconst lastOfYearDay = lastOfYear.date(dayOfYearFormat);\n\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\telse firstOfYear.subDay(firstOfYearDay);\n\n\tif (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay);\n\telse lastOfYear.subDay(lastOfYearDay);\n\n\treturn Math.ceil(lastOfYear.diff(firstOfYear, \"date\") / 7);\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function hour(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.hour = 0;\n\t\t\tthis.subHour(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.hour = 23;\n\t\t\tthis.addHour(format - 23);\n\t\t} else {\n\t\t\tthis.d.hour = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tlet h = this.d.hour;\n\t\tif (format == \"H\") return h;\n\t\tif (format == \"HH\") return addPrefix(h, 2);\n\t\tif (format == \"k\") return h || 24;\n\t\tif (format == \"kk\") return addPrefix(h || 24, 2);\n\t\th = h > 12 ? h - 12 : h;\n\t\tif (format == \"h\") return h;\n\t\tif (format == \"hh\") return addPrefix(h, 2);\n\t\treturn h;\n\t}\n}\n","export * from \"./year\";\nexport * from \"./quarter\";\nexport * from \"./month\";\nexport * from \"./week\";\nexport * from \"./date\";\nexport * from \"./hour\";\nexport * from \"./minute\";\nexport * from \"./second\";\nexport * from \"./millisecond\";\nexport * from \"./timestamp\";\nexport * from \"./getDaysInMonth\";\nexport * from \"./getWeeksInYear\";\nexport * from \"./startOf\";\nexport * from \"./endOf\";\nexport * from \"./time\";\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function millisecond(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.millisecond = 0;\n\t\t\tthis.subMillisecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.millisecond = 23;\n\t\t\tthis.addMillisecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.millisecond = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"CCC\" || format == \"c\") return this.d.millisecond;\n\t\tif (format == \"CCCC\") return addPrefix(this.d.millisecond, 3);\n\t\treturn this.d.millisecond;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function minute(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.minute = 0;\n\t\t\tthis.subMinute(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.minute = 23;\n\t\t\tthis.addMinute(format - 23);\n\t\t} else {\n\t\t\tthis.d.minute = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"m\") return this.d.minute;\n\t\tif (format == \"mm\") return addPrefix(this.d.minute, 2);\n\t\treturn this.d.minute;\n\t}\n}\n","import { REGEX, CALENDAR } from \"../utils\";\nimport { addPrefix, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jM\";\n\t\tdefault:\n\t\t\treturn \"M\";\n\t}\n};\n\nexport function month(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subMonth(format - 1, false);\n\t\t} else if (format > 12) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addMonth(format - 12, false);\n\t\t} else {\n\t\t\tthis.d.month = +format;\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jMonth = this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1];\n\t\tif (format == \"jMM\") return addPrefix(jMonth, 2);\n\t\tif (format == \"jM\") return jMonth;\n\t\tif (format == \"jMMMM\" || format == \"jMMM\")\n\t\t\treturn CALENDAR[\"jalali\"][\"months\"][jMonth];\n\t\tif (format == \"jMo\") return ordinalNumber(jMonth);\n\t\tif (format == \"jMO\") return ordinalNumber(jMonth, \"jalali\", 2);\n\n\t\tconst gMonth =\n\t\t\tthis.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1;\n\t\tif (format == \"M\") return gMonth;\n\t\tif (format == \"MM\") return addPrefix(gMonth, 2);\n\t\tif (format == \"MMMM\") return CALENDAR[\"gregorian\"][\"months\"][gMonth];\n\t\tif (format == \"Mo\" || format == \"MO\")\n\t\t\treturn ordinalNumber(gMonth, \"gregorian\");\n\t\tif (format == \"MMM\")\n\t\t\treturn CALENDAR[\"gregorian\"][\"months\"][gMonth].slice(0, 3);\n\n\t\treturn jMonth;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jQ\";\n\t\tdefault:\n\t\t\treturn \"Q\";\n\t}\n};\n\nexport function quarter(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subQuarter(format - 1, false);\n\t\t} else if (format > 4) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addQuarter(format - 4, false);\n\t\t} else {\n\t\t\tthis.d.month = +format * 3 - 2;\n\t\t}\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tlet jQuarter = Math.ceil(\n\t\t\t(this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1]) / 3\n\t\t);\n\t\tif (format == \"jQ\") return jQuarter;\n\t\tif (format == \"jQo\") return ordinalNumber(jQuarter);\n\t\tif (format == \"jQO\") return ordinalNumber(jQuarter, \"jalali\", 2);\n\n\t\tconst gQuarter = Math.ceil(\n\t\t\t(this.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1) / 3\n\t\t);\n\t\tif (format == \"Q\") return gQuarter;\n\t\tif (format == \"Qo\" || format == \"QO\")\n\t\t\treturn ordinalNumber(gQuarter, \"gregorian\");\n\n\t\treturn jQuarter;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function second(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.second = 0;\n\t\t\tthis.subSecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.second = 23;\n\t\t\tthis.addSecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.second = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"s\") return this.d.second;\n\t\tif (format == \"ss\") return addPrefix(this.d.second, 2);\n\t\treturn this.d.second;\n\t}\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function startOf(unit) {\n\tthis.d.millisecond = 0;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 0;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 0;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 0;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.subDay(getDayOfWeek(this.toDate(), this.c, \"array\"));\n\tthis.d.date = 1;\n\tif (unit[0] == \"q\") return this.quarter(this.quarter());\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 1;\n\tif (unit[0] == \"y\") return this;\n}\n","import { typesToArray } from \"../base\";\nimport { isDate, isPersianDate } from \"../comparison\";\n\nexport function time(...t) {\n\tif (!t.length) return this.toArray().slice(3);\n\tlet times = [];\n\tif (isPersianDate(t[0])) times = t[0].time();\n\telse if (isDate(t[0]))\n\t\ttimes = [\n\t\t\tt[0].getHours(),\n\t\t\tt[0].getMinutes(),\n\t\t\tt[0].getSeconds(),\n\t\t\tt[0].getMilliseconds(),\n\t\t];\n\telse if (Object.prototype.toString.call(t[0]) === \"[object Object]\")\n\t\ttimes = [\n\t\t\tt[0].h || t[0].hour || t[0].hours || 0,\n\t\t\tt[0].m || t[0].minute || t[0].minutes || 0,\n\t\t\tt[0].s || t[0].second || t[0].seconds || 0,\n\t\t\tt[0].ms || t[0].millisecond || t[0].milliseconds || 0,\n\t\t];\n\telse times = typesToArray(this.c, ...t);\n\tif (this.isValidTime(...times)) {\n\t\treturn this.hour(times[0] || 0)\n\t\t\t.minute(times[1] || 0)\n\t\t\t.second(times[2] || 0)\n\t\t\t.millisecond(times[3] || 0);\n\t} else return \"زمان نامعتبر\";\n}\n","export function timestamp(value) {\n\tif (value) {\n\t\treturn this.fromGregorian(+String(value).trim());\n\t} else {\n\t\treturn this.toDate().getTime();\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix, getWeekOfYear, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jw\";\n\t\tdefault:\n\t\t\treturn \"w\";\n\t}\n};\n\nexport function week(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst weeksInYear = this.getWeeksInYear();\n\t\tif (format < 1) {\n\t\t\tthis.week(1);\n\t\t\tthis.subWeek(format - 1, false);\n\t\t} else if (format > weeksInYear) {\n\t\t\tthis.week(weeksInYear);\n\t\t\tthis.addWeek(format - weeksInYear, false);\n\t\t} else {\n\t\t\tconst weekOfYear = getWeekOfYear.call(\n\t\t\t\tthis,\n\t\t\t\tthis.d.year,\n\t\t\t\tthis.d.month,\n\t\t\t\tthis.d.date,\n\t\t\t\tthis.c\n\t\t\t);\n\t\t\tthis.addWeek(+format - weekOfYear);\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"jy\"),\n\t\t\tthis.month(\"jM\"),\n\t\t\tthis.date(\"jD\"),\n\t\t\tthis.c\n\t\t);\n\t\tif (format == \"jw\" || format == \"jW\") return jWeekOfYear;\n\t\tif (format == \"jww\" || format == \"jWW\") return addPrefix(jWeekOfYear, 2);\n\t\tif (format == \"jwo\" || format == \"jWo\") return ordinalNumber(jWeekOfYear);\n\t\tif (format == \"jwO\" || format == \"jWO\")\n\t\t\treturn ordinalNumber(jWeekOfYear, \"jalali\", 2);\n\n\t\tconst gWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"y\"),\n\t\t\tthis.month(\"M\"),\n\t\t\tthis.date(\"D\"),\n\t\t\t\"gregorian\"\n\t\t);\n\t\tif (format == \"w\" || format == \"W\") return gWeekOfYear;\n\t\tif (format == \"ww\" || format == \"WW\") return addPrefix(gWeekOfYear, 2);\n\t\tif (format == \"wo\" || format == \"Wo\" || format == \"wO\" || format == \"WO\")\n\t\t\treturn ordinalNumber(gWeekOfYear, \"gregorian\");\n\t\treturn jWeekOfYear;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { gtj } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jy\";\n\t\tdefault:\n\t\t\treturn \"y\";\n\t}\n};\n\nexport function year(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tthis.d.year = +format;\n\t\tif (!this.isValidDate()) {\n\t\t\treturn this.subDay(1, false);\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\t\tconst jYear = this.c == \"jalali\" ? this.d.year : gtj(this.toDate())[0];\n\t\tif (format == \"jy\" || format == \"jYYYY\") return jYear;\n\t\tif (format == \"jYY\") return String(jYear).slice(-2);\n\t\tconst gYear =\n\t\t\tthis.c == \"gregorian\" ? this.d.year : this.toDate().getFullYear();\n\t\tif (format == \"y\" || format == \"YYYY\") return gYear;\n\t\tif (format == \"YY\") return String(gYear).slice(-2);\n\t\treturn jYear;\n\t}\n}\n","const CALENDAR = {\n\tjalali: {\n\t\tmonths: {\n\t\t\t1: \"فروردین\",\n\t\t\t2: \"اردیبهشت\",\n\t\t\t3: \"خرداد\",\n\t\t\t4: \"تیر\",\n\t\t\t5: \"مرداد\",\n\t\t\t6: \"شهریور\",\n\t\t\t7: \"مهر\",\n\t\t\t8: \"آبان\",\n\t\t\t9: \"آذر\",\n\t\t\t10: \"دی\",\n\t\t\t11: \"بهمن\",\n\t\t\t12: \"اسفند\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t6: \"شنبه\",\n\t\t\t\t0: \"یکشنبه\",\n\t\t\t\t1: \"دوشنبه\",\n\t\t\t\t2: \"سه‌شنبه\",\n\t\t\t\t3: \"چهارشنبه\",\n\t\t\t\t4: \"پنجشنبه\",\n\t\t\t\t5: \"جمعه\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in jalali calendar start from saturday or 6\n\t\t\t\t6: 0, //شنبه\n\t\t\t\t0: 1, //یکشنبه\n\t\t\t\t1: 2, //دوشنبه\n\t\t\t\t2: 3, //سه‌شنبه\n\t\t\t\t3: 4, //چهارشنبه\n\t\t\t\t4: 5, //پنجشنبه\n\t\t\t\t5: 6, //جمعه\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number, mode) {\n\t\t\tconst numbers = {\n\t\t\t\t1: \"یک\",\n\t\t\t\t2: \"دو\",\n\t\t\t\t3: \"سو\",\n\t\t\t\t4: \"چهار\",\n\t\t\t\t5: \"پنج\",\n\t\t\t\t6: \"شش\",\n\t\t\t\t7: \"هفت\",\n\t\t\t\t8: \"هشت\",\n\t\t\t\t9: \"نه\",\n\t\t\t\t10: \"ده\",\n\t\t\t\t11: \"یازده\",\n\t\t\t\t12: \"دوازده\",\n\t\t\t\t13: \"سیزده\",\n\t\t\t\t14: \"چهارده\",\n\t\t\t\t15: \"پانزده\",\n\t\t\t\t16: \"شانزده\",\n\t\t\t\t17: \"هفده\",\n\t\t\t\t18: \"هجده\",\n\t\t\t\t19: \"نوزده\",\n\t\t\t\t20: \"بیست\",\n\t\t\t\t30: \"سی‌\",\n\t\t\t\t40: \"چهل\",\n\t\t\t\t50: \"پنجاه\",\n\t\t\t\t60: \"شصت\",\n\t\t\t\t70: \"هفتاد\",\n\t\t\t\t80: \"هشتاد\",\n\t\t\t\t90: \"نود\",\n\t\t\t\t100: \"صد\",\n\t\t\t\t200: \"دویست\",\n\t\t\t\t300: \"سیصد\",\n\t\t\t};\n\t\t\tlet ordinalNumber = \"\";\n\t\t\tif (number == 1) ordinalNumber = \"اول\";\n\t\t\telse if (numbers[number])\n\t\t\t\tordinalNumber = numbers[number] + (number == 30 ? \"ام\" : \"م\");\n\t\t\telse {\n\t\t\t\tlet remainder = number % 100;\n\t\t\t\tif (numbers[remainder]) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\telse {\n\t\t\t\t\tremainder = number % 10;\n\t\t\t\t\tif (remainder) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\t}\n\t\t\t\tremainder = (number - remainder) % 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] +\n\t\t\t\t\t\t(ordinalNumber\n\t\t\t\t\t\t\t? \" و \" + ordinalNumber\n\t\t\t\t\t\t\t: remainder == 30\n\t\t\t\t\t\t\t? \"ام \"\n\t\t\t\t\t\t\t: \"م\");\n\t\t\t\tremainder = Math.floor(number / 100) * 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] + (ordinalNumber ? \" و \" + ordinalNumber : \"م\");\n\t\t\t}\n\t\t\tif (mode == 2) ordinalNumber += \"ین\";\n\t\t\treturn ordinalNumber;\n\t\t},\n\t},\n\tgregorian: {\n\t\tmonths: {\n\t\t\t1: \"January\",\n\t\t\t2: \"February\",\n\t\t\t3: \"March\",\n\t\t\t4: \"April\",\n\t\t\t5: \"May\",\n\t\t\t6: \"June\",\n\t\t\t7: \"July\",\n\t\t\t8: \"August\",\n\t\t\t9: \"September\",\n\t\t\t10: \"October\",\n\t\t\t11: \"November\",\n\t\t\t12: \"December\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t0: \"Sunday\",\n\t\t\t\t1: \"Monday\",\n\t\t\t\t2: \"Tuesday\",\n\t\t\t\t3: \"Wednesday\",\n\t\t\t\t4: \"Thursday\",\n\t\t\t\t5: \"Friday\",\n\t\t\t\t6: \"Saturday\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in gregorian calendar start from sunday or 0\n\t\t\t\t0: 0, // Sunday\n\t\t\t\t1: 1, // Monday\n\t\t\t\t2: 2, // Tuesday\n\t\t\t\t3: 3, // Wednesday\n\t\t\t\t4: 4, // Thursday\n\t\t\t\t5: 5, // Friday\n\t\t\t\t6: 6, // Saturday\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number) {\n\t\t\tif (number == 1 || (number % 10 == 1 && number != 11))\n\t\t\t\treturn number + \"st\";\n\t\t\telse if (number == 2 || (number % 10 == 2 && number != 12))\n\t\t\t\treturn number + \"nd\";\n\t\t\telse if (number == 3 || (number % 10 == 3 && number != 13))\n\t\t\t\treturn number + \"rd\";\n\t\t\telse return number + \"th\";\n\t\t},\n\t},\n};\n\nconst REGEX = {\n\tformat: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,\n\tisNumeric: /^\\d+$/, // this regex, checks input to see is a number or not\n\tseparators: \"\\\\/| |-|\\\\.|,|:\", // find ['/',' ','-','.',',',':'] and split string to array by this symbols\n\tbetweenBacktick: /`(.*?)`/g, // find the texts between the backticks ==> `Alireza`\n};\n\nconst TIMETYPE = function (hour, format) {\n\tif (hour >= 0 && hour < 12) {\n\t\tif (format == \"a\") return \"am\";\n\t\telse if (format == \"aa\") return \"A.M.\";\n\t\telse if (format == \"A\") return \"AM\";\n\t\telse if (format == \"ja\") return \"ق ظ\";\n\t\telse if (format == \"jaa\") return \"ق.ظ\";\n\t\telse if (format == \"jA\") return \"قبل از ظهر\";\n\t\treturn \"ق.ظ\";\n\t} else if (hour >= 12 && hour < 24) {\n\t\tif (format == \"a\") return \"pm\";\n\t\telse if (format == \"aa\") return \"P.M.\";\n\t\telse if (format == \"A\") return \"PM\";\n\t\telse if (format == \"ja\") return \"ب ظ\";\n\t\telse if (format == \"jaa\") return \"ب.ظ\";\n\t\telse if (format == \"jA\") return \"بعد از ظهر\";\n\t\treturn \"ب.ظ\";\n\t}\n};\n\nexport { CALENDAR, TIMETYPE, REGEX };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/PersianDate.js\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/PersianDate.min.js b/dist/PersianDate.min.js index 01c38b7..d789885 100644 --- a/dist/PersianDate.min.js +++ b/dist/PersianDate.min.js @@ -1,2 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PersianDate=e():t.PersianDate=e()}(global,(function(){return(()=>{"use strict";var __webpack_modules__={739:(t,e,r)=>{r.d(e,{default:()=>C});var i=r(552);function s(){const t=new Date;return"jalali"==this.c?i.SA.call(this,t):i.dZ.call(this,t),this}function n(...t){return"jalali"==this.c?this.fromJalali(...t):this.fromGregorian(...t)}function o(){return Object.assign(Object.create(Object.getPrototypeOf(this)),JSON.parse(JSON.stringify(this)))}function h(...t){return t=t.length?(0,i.Jz)("jalali",...t):(0,i.VK)(),"jalali"==this.c?(this.d.year=+t[0],this.d.month=+t[1]||1,this.d.date=+t[2]||1,this.d.hour=+t[3]||0,this.d.minute=+t[4]||0,this.d.second=+t[5]||0,this.d.millisecond=+t[6]||0):i.dZ.call(this,(0,i.B_)(...t)),this.isValid()?this:i.I1.call(this,"تاریخ نامعتبر")}var a=r(747);function u(...t){if(t.length?this.isPersianDate(t[0])?t=t[0].clone().calendar("g").toArray():(0,i.WD)(t[0])||((t=(0,i.Jz)("gregorian",...t))[6]=+t[6]||0,t[5]=+t[5]||0,t[4]=+t[4]||0,t[3]=+t[3]||0,t[2]=+t[2]||1,t[1]=+t[1]||1,t[0]=+t[0]):t[0]=(new Date).getTime(),t.length>1){if(!(0,a.JY)("gregorian",...t))return i.I1.call(this,"تاریخ نامعتبر");--t[1]}return"Invalid Date"==(t=new Date(...t))?i.I1.call(this,"تاریخ نامعتبر"):("jalali"==this.c?i.SA.call(this,t):i.dZ.call(this,t),this)}function c(t){return t?("j"==t[0]&&"j"!=this.c[0]?(this.error||i.SA.call(this,this.toDate()),this.c="jalali"):"g"==t[0]&&"g"!=this.c[0]&&(this.error||i.dZ.call(this,this.toDate()),this.c="gregorian"),this):this.c}var d=r(419);function l(t,e){if(t<0)return this.subYear(Math.abs(t));for(this.d.year+=+t;e&&!this.isValidDate();)this.subDay(1,!1);return this}function f(t,e){if(t<0)return this.subMonth(Math.abs(t));t=+t;const r=12-this.d.month+1;if(r>t)this.d.month+=t;else{for(this.addYear(1,!1),this.d.month=1,t-=r;t>=12;)t-=12,this.addYear(1,!1);0!=t&&(this.d.month+=t)}for(;e&&!this.isValidDate();)this.subDay(1,!1);return this}function m(t){if(t<0)return this.subDay(Math.abs(t));t=+t;const e=this.getDaysInMonth()-this.d.date+1;if(e>t)this.d.date+=t;else{this.addMonth(1,!1),this.d.date=1,t-=e;let r=this.getDaysInMonth();for(;t>=r;)t-=r,this.addMonth(1,!1),r=this.getDaysInMonth();0!=t&&(this.d.date+=t)}return this}function p(t,e){return t<0?this.subQuarter(Math.abs(t)):this.addMonth(3*+t,e)}function y(t,e){return t<0?this.subWeek(Math.abs(t)):this.addDay(7*+t,e)}function D(t){if(t<0)return this.subHour(Math.abs(t));for(t=+t;t>=24;)t-=24,this.addDay(1,!1);const e=24-this.d.hour;return t>=e?(this.addDay(1,!1),t-=e,this.d.hour=t):this.d.hour+=t,this}function g(t){if(t<0)return this.subMinute(Math.abs(t));for(t=+t;t>=60;)this.addHour(1,!1),t-=60;const e=60-this.d.minute;return t>=e?(this.addHour(1,!1),t-=e,this.d.minute=t):this.d.minute+=t,this}function M(t){if(t<0)return this.subSecond(Math.abs(t));for(t=+t;t>=60;)this.addMinute(1,!1),t-=60;const e=60-this.d.second;return t>=e?(this.addMinute(1,!1),t-=e,this.d.second=t):this.d.second+=t,this}function b(t){if(t<0)return this.subMillisecond(Math.abs(t));for(t=+t;t>=1e3;)this.addSecond(1,!1),t-=1e3;const e=1e3-this.d.millisecond;return t>=e?(this.addSecond(1,!1),t-=e,this.d.millisecond=t):this.d.millisecond+=t,this}function _(t,e){for(this.d.year-=Math.abs(t);e&&!this.isValidDate();)this.subDay(1,!1);return this}function j(t,e){t=Math.abs(t);const r=this.d.month;if(r>t)this.d.month-=t;else{for(this.subYear(1,!1),this.d.month=12,t-=r;t>=12;)this.subYear(1,!1),t-=12;0!=t&&(this.d.month-=t)}for(;e&&!this.isValidDate();)this.subDay(1,!1);return this}function w(t){t=Math.abs(t);let e=this.d.date;if(e>t)this.d.date-=t;else{this.subMonth(1,!1);let r=this.getDaysInMonth();for(this.d.date=r,t-=e;t>=r;)t-=r,this.subMonth(1,!1),r=this.getDaysInMonth();this.d.date=r-t}return this}function k(t,e){return t=Math.abs(t),this.subMonth(3*t,e)}function O(t,e){return t=Math.abs(t),this.subDay(7*t,e)}function Y(t){for(t=Math.abs(t);t>=24;)t-=24,this.subDay(1,!1);const e=this.d.hour;return t>e?(this.subDay(1,!1),t-=e,this.d.hour=24-t):this.d.hour-=t,this}function N(t){for(t=Math.abs(t);t>=60;)t-=60,this.subHour(1,!1);const e=this.d.minute;return t>e?(this.subHour(1,!1),t-=e,this.d.minute=60-t):this.d.minute-=t,this}function S(t){for(t=Math.abs(t);t>=60;)t-=60,this.subMinute(1,!1);const e=this.d.second;return t>e?(this.subMinute(1,!1),t-=e,this.d.second=60-t):this.d.second-=t,this}function L(t){for(t=Math.abs(t);t>=1e3;)t-=1e3,this.subSecond(1,!1);const e=this.d.millisecond;return t>e?(this.subSecond(1,!1),t-=e,this.d.millisecond=1e3-t):this.d.millisecond-=t,this}var I=r(555);function A(t){const e=[];switch(t=t.replace(I.mL.betweenBacktick,((t,r)=>(e.push(r),"###"))),this.c[0]){case"j":t=(t=>t.replace(/\?/g,"j").replace(/datetime/gi,"jYYYY/jMM/jDD HH:mm").replace(/date/gi,"jYYYY/jMM/jDD").replace(/time/gi,"HH:mm"))(t);break;default:t=(t=>t.replace(/\?/g,"").replace(/datetime/gi,"YYYY-MM-DD HH:mm").replace(/date/gi,"YYYY-MM-DD").replace(/time/gi,"HH:mm"))(t)}const r=t.match(I.mL.format);let i="";for(const e of r)i+=t.substring(0,t.indexOf(e)),-1!=e.search(/Y|y/)?i+=this.year(e):-1!=e.search(/M/)?i+=this.month(e):-1!=e.search(/Q/)?i+=this.quarter(e):-1!=e.search(/D|d/)?i+=this.date(e):-1!=e.search(/W|w/)?i+=this.week(e):-1!=e.search(/H|h|k/)?i+=this.hour(e):-1!=e.search(/m/)?i+=this.minute(e):-1!=e.search(/s/)?i+=this.second(e):-1!=e.search(/c|C/)?i+=this.millisecond(e):-1!=e.search(/t/)?i+=this.timestamp():-1!=e.search(/a|A/)&&(i+=(0,I.d7)(this.d.hour,e)),t=t.substr(t.indexOf(e)+e.length);i+=t;for(let t=0;t(--t[1],new Date(...t)))(this.toArray())}var t}function v(t,e,r){if(t=(0,i.Jz)(this.c,t),!this.isValid(...t))return"تاریخ نامعتبر";let s=this.timestamp()-this.clone().parse(...t).timestamp();switch(e){case"y":case"year":case"years":s=this.d.year-t[0];break;case"M":case"month":case"months":s=12*this.d.year+this.d.month-(12*+t[0]+ +t[1]);break;case"d":case"date":case"day":case"days":s=Math.ceil(s/1e3/60/60/24);break;case"h":case"hour":case"hours":s=Math.ceil(s/1e3/60/60);break;case"m":case"minute":case"minutes":s=Math.ceil(s/1e3/60);break;case"s":case"second":case"seconds":s=Math.ceil(s/1e3)}return r?s+(s>=0?1:-1):s}function W(t,e){let r=this.diff(t,"s");if("string"==typeof r)return"تاریخ نامعتبر";const i=e&&(r>0?"آینده":"پیش");return r=Math.abs(r),0==r?"هم اکنون":(r=r<45?"لحظات":(r/=60)<45?Math.round(r)+" دقیقه":(r/=60)<23.5?Math.round(r)+" ساعت":(r/=24)<26?Math.round(r)+" روز":r<320?Math.round(r/30)+" ماه":Math.round(r/365)+" سال",r+(e?" "+i:""))}const H=function(t,e){this.d={},this.c="jalali",H.prototype.now=function(){return this.error&&(delete this.error,this.d={}),s.call(this)},H.prototype.setDate=function(){return(0,i.ZK)('"setDate" function is deprecated! use "fromGregorian" function instead.\nhttps://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date'),this.fromGregorian(...arguments)},H.prototype.parse=function(){return n.call(this,...arguments)},H.prototype.clone=function(){return o.call(this)},H.prototype.fromJalali=function(){return this.error&&(delete this.error,this.d={}),h.call(this,...arguments)},H.prototype.fromGregorian=function(){return this.error&&(delete this.error,this.d={}),u.call(this,...arguments)},H.prototype.calendar=function(t){return c.call(this,t)},H.prototype.year=function(t=""){return this.error?this.error:d.ty.call(this,t)},H.prototype.month=function(t=""){return this.error?this.error:d.iL.call(this,t)},H.prototype.date=function(t=""){return this.error?this.error:d.hT.call(this,t)},H.prototype.quarter=function(t=""){return this.error?this.error:d.mS.call(this,t)},H.prototype.week=function(t=""){return this.error?this.error:d.g0.call(this,t)},H.prototype.hour=function(t="H"){return this.error?this.error:d.xO.call(this,t)},H.prototype.minute=function(t="m"){return this.error?this.error:d.Z7.call(this,t)},H.prototype.second=function(t="s"){return this.error?this.error:d.E0.call(this,t)},H.prototype.millisecond=function(t="c"){return this.error?this.error:d.AG.call(this,t)},H.prototype.timestamp=function(t){return this.error?this.error:d.AB.call(this,t)},H.prototype.valueOf=function(){return this.timestamp()},H.prototype.getDaysInMonth=function(t=this.d.year,e=this.d.month){return this.error?this.error:(0,d.NC)(this.c,t,e)},H.prototype.getWeeksInYear=function(t=this.d.year){return this.error?this.error:d.FY.call(this,t)},H.prototype.startOf=function(t="year"){return d.gl.call(this,t)},H.prototype.endOf=function(t="year"){return d.Dz.call(this,t)},H.prototype.time=function(){return this.error?this.error:d.XV.call(this,...arguments)},H.prototype.addYear=function(t=1,e=!0){return this.error?this.error:t?l.call(this,t,e):this},H.prototype.addMonth=function(t=1,e=!0){return this.error?this.error:t?f.call(this,t,e):this},H.prototype.addDay=function(t=1,e=!0){return this.error?this.error:t?m.call(this,t,e):this},H.prototype.addQuarter=function(t=1,e=!0){return this.error?this.error:t?p.call(this,t,e):this},H.prototype.addWeek=function(t=1,e=!0){return this.error?this.error:t?y.call(this,t,e):this},H.prototype.addHour=function(t=1,e=!0){return this.error?this.error:t?D.call(this,t,e):this},H.prototype.addMinute=function(t=1,e=!0){return this.error?this.error:t?g.call(this,t,e):this},H.prototype.addSecond=function(t=1,e=!0){return this.error?this.error:t?M.call(this,t,e):this},H.prototype.addMillisecond=function(t=1,e=!0){return this.error?this.error:t?b.call(this,t,e):this},H.prototype.subYear=function(t=1,e=!0){return this.error?this.error:t?_.call(this,t,e):this},H.prototype.subMonth=function(t=1,e=!0){return this.error?this.error:t?j.call(this,t,e):this},H.prototype.subDay=function(t=1,e=!0){return this.error?this.error:t?w.call(this,t,e):this},H.prototype.subQuarter=function(t=1,e=!0){return this.error?this.error:t?k.call(this,t,e):this},H.prototype.subWeek=function(t=1,e=!0){return this.error?this.error:t?O.call(this,t,e):this},H.prototype.subHour=function(t=1,e=!0){return this.error?this.error:t?Y.call(this,t,e):this},H.prototype.subMinute=function(t=1,e=!0){return this.error?this.error:t?N.call(this,t,e):this},H.prototype.subSecond=function(t=1,e=!0){return this.error?this.error:t?S.call(this,t,e):this},H.prototype.subMillisecond=function(t=1,e=!0){return this.error?this.error:t?L.call(this,t,e):this},H.prototype.toString=function(t="date"){return this.error?this.error:A.call(this,t)},H.prototype.toArray=function(){return this.error?this.error:q.call(this,...arguments)},H.prototype.toObject=function(){return this.error?this.error:J.call(this,...arguments)},H.prototype.toDate=function(){return this.error?this.error:V.call(this)},H.prototype.diff=function(t,e,r=!1){return this.error?this.error:v.call(this,t,e,r)},H.prototype.diffForHumans=function(t,e=!0){return this.error?this.error:W.call(this,t,e)},H.prototype.min=function(){return i.F6.call(this,arguments,"min")},H.prototype.max=function(){return i.F6.call(this,arguments,"max")},H.prototype.isLeapYear=function(t=this.d.year){return!this.error&&(0,a.Eg)(this.c,t)},H.prototype.isValid=function(t,e,r,i,s,n,o){return!this.error&&this.isValidDate(t,e,r)&&this.isValidTime(i,s,n,o)},H.prototype.isValidDate=function(t=this.d.year,e=this.d.month,r=this.d.date){return!this.error&&(0,a.qb)(this.c,t,e,r)},H.prototype.isValidTime=function(t=this.d.hour,e=this.d.minute,r=this.d.second,i=this.d.millisecond){return!this.error&&(0,a.sC)(t,e,r,i)},H.prototype.isSame=function(){return!this.error&&a.ZG.call(this,...arguments)},H.prototype.isBefore=function(){return!this.error&&i.qu.call(this,arguments,"<")},H.prototype.isAfter=function(){return!this.error&&i.qu.call(this,arguments,">")},H.prototype.isSameOrBefore=function(){return!this.error&&i.qu.call(this,arguments,"<=")},H.prototype.isSameOrAfter=function(){return!this.error&&i.qu.call(this,arguments,">=")},H.prototype.isBetween=function(t,e,r="()"){return!this.error&&a.Kh.call(this,t,e,r)},H.prototype.isDate=a.J_,H.prototype.isPersianDate=a._B,e&&this.calendar(e),t?e&&"j"==e[0]?this.fromJalali(t):this.fromGregorian(t):this.now()};H.isLeapYear=a.Eg,H.isDate=a.J_,H.isPersianDate=a._B,H.isValid=a.JY,H.isValidDate=a.qb,H.isValidTime=a.sC,H.getDaysInMonth=d.NC;const C=H},76:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{q:()=>compare});var _base__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(552);const compare=function(date,operator){return date=(0,_base__WEBPACK_IMPORTED_MODULE_0__.Jz)(this.c,...date),!!this.isValid(...date)&&eval("this.timestamp()"+operator+"this.clone().parse(...date).timestamp()")}},552:(t,e,r)=>{r.d(e,{U9:()=>l,qu:()=>j.q,Ot:()=>D,ji:()=>g,Bk:()=>b,EC:()=>_,VK:()=>n,I1:()=>a,WD:()=>k,B_:()=>o,F6:()=>w,ke:()=>d,dZ:()=>m,SA:()=>f,Jz:()=>c,ZK:()=>h});var i=r(555),s=r(747);const n=(t,e,r,n,o,h,a)=>{let u,c,d,l;u=t?(0,s.J_)(t)?t:new Date(i.mL.isNumeric.test(t)?t:0,i.mL.isNumeric.test(e)?e:0,i.mL.isNumeric.test(r)?r:1,i.mL.isNumeric.test(n)?n:0,i.mL.isNumeric.test(o)?o:0,i.mL.isNumeric.test(h)?h:0,i.mL.isNumeric.test(a)?a:0):new Date,r=u.getDate(),e=u.getMonth()+1,t=u.getFullYear(),n=u.getHours(),o=u.getMinutes(),h=u.getSeconds(),a=u.getMilliseconds(),t>1600?(c=979,t-=1600):(c=0,t-=621);const f=e>2?t+1:t;let m=365*t+parseInt((f+3)/4)-parseInt((f+99)/100)+parseInt((f+399)/400)-80+r+[0,31,59,90,120,151,181,212,243,273,304,334][e-1];return c+=33*parseInt(m/12053),m%=12053,c+=4*parseInt(m/1461),m%=1461,m>365&&(c+=parseInt((m-1)/365),m=(m-1)%365),d=m<186?1+parseInt(m/31):7+parseInt((m-186)/30),l=1+(m<186?m%31:(m-186)%30),[c,d,l,n,o,h,a]},o=(t,e,r,n,o,h,a)=>{let u,c,d;t=i.mL.isNumeric.test(t)?+t:1,e=i.mL.isNumeric.test(e)?+e:1,r=i.mL.isNumeric.test(r)?+r:1,n=i.mL.isNumeric.test(n)?+n:0,o=i.mL.isNumeric.test(o)?+o:0,h=i.mL.isNumeric.test(h)?+h:0,a=i.mL.isNumeric.test(a)?+a:0,t>979?(u=1600,t-=979):u=621;let l=365*t+8*parseInt(t/33)+parseInt((t%33+3)/4)+78+r+(e<7?31*(e-1):30*(e-7)+186);u+=400*parseInt(l/146097),l%=146097,l>36524&&(u+=100*parseInt(--l/36524),l%=36524,l>=365&&l++),u+=4*parseInt(l/1461),l%=1461,l>365&&(u+=parseInt((l-1)/365),l=(l-1)%365),d=l+1;const f=[0,31,(0,s.Eg)("gregorian",u)?29:28,31,30,31,30,31,31,30,31,30,31];for(c=0;c<13;c++){const t=f[c];if(d<=t)break;d-=t}return new Date(u,c-1,d,n,o,h,a)},h=t=>{console.warn(t)},a=function(t){return delete this.d,this.error=t,this};var u=r(739);const c=(t,e,r,s,n,o,h,a)=>(e||(e=new Date),"string"==typeof e&&-1!=e.search(i.mL.separators)?e.split(/[/ -.,:\\]/):Array.isArray(e)?e:u.default.isPersianDate(e)?e.clone().calendar(t).toArray():u.default.isDate(e)?new u.default(e).calendar(t).toArray():"[object Object]"===Object.prototype.toString.call(e)?[e.y||e.year||e.years,e.M||e.month||e.months||1,e.d||e.day||e.days||e.date||1,e.h||e.hour||e.hours||0,e.m||e.minute||e.minutes||0,e.s||e.second||e.seconds||0,e.ms||e.millisecond||e.milliseconds||0]:[e,r,s,n,o,h,a]),d=(t,e="jalali",r=1)=>i.XN[e].ordinalNumbers(t,r),l=(t,e,r="0")=>r.repeat(e-String(t).length)+t,f=function(t){[this.d.year,this.d.month,this.d.date,this.d.hour,this.d.minute,this.d.second,this.d.millisecond]=n(t)},m=function(t){this.d={year:t.getFullYear(),month:t.getMonth()+1,date:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),second:t.getSeconds(),millisecond:t.getMilliseconds()}},p=t=>{console.error(t)};var y=r(682);const D=function(t=new Date,e="jalali"){return(0,y.J)(t)?i.XN[e].days.label[t.getDay()]:p("the first param must be instance of Date.")},g=(t=new Date,e="jalali",r="standard")=>(0,y.J)(t)?i.XN[e].days.weekNumber[t.getDay()]+("standard"!=r?0:1):p("the first param must be instance of Date.");var M=r(419);const b=(t,e,r,i)=>{for(e=+e,r=+r;0!=--e;)r+=(0,M.NC)(i,t,e);return r},_=function(t,e,r,i){const s=this.clone().calendar(i).parse(t),n=s.date((t=>{switch(t[0]){case"j":return"jd";default:return"d"}})(i)),o=s.clone().parse(t,e,r);n>3&&s.addDay(7-n);const h=Math.ceil(o.diff(s,"date",!0)/7),a=o.clone().getWeeksInYear();return h>a?a:h};var j=r(76);const w=function(t,e){if(!t.length)return!1;const r=[...t],i=r.map((t=>(t=c(this.c,t),!!this.isValid(...t)&&this.clone().parse(...t).timestamp())));return!i.includes(!1)&&r[i.indexOf(Math[e](...i))]},k=t=>!isNaN(t)&&Math.floor(t/1e4)>0},747:(t,e,r)=>{r.d(e,{Kh:()=>f,J_:()=>i.J,Eg:()=>s.E,_B:()=>o,ZG:()=>l,JY:()=>h,qb:()=>a,sC:()=>u});var i=r(682),s=r(424),n=r(739);const o=function(t){return t instanceof n.default},h=function(t,e,r,i,s,n,o,h){return a(t,e,r,i)&&u(s,n,o,h)},a=function(t,e,r,i){if([e,r,i].some((t=>-1!=String(t).search(/null|NaN/))))return!1;if(e<0||r>12||r<1||i>31||i<1)return!1;switch(t[0]){case"j":return((t,e,r)=>!(e>=7&&e<=11&&31==r||12==e&&31==r||12==e&&30==r&&!(0,s.E)("j",t)))(e,r,i);default:return((t,e,r)=>!([2,4,6,9,11].includes(e)&&31==r||2==e&&(30==r||29==r&&!(0,s.E)("g",t))))(e,r,i)}},u=function(t,e,r,i){return!([t,e,r,i].some((t=>-1!=String(t).search(/null|NaN/)))||t<0||t>23||e<0||e>59||r<0||r>59||i<0||i>999)};var c=r(555),d=r(552);function l(){let t=(0,d.Jz)(this.c,...arguments);return t=this.toArray().map(((e,r)=>c.mL.isNumeric.test(t[r])?t[r]:e)),d.qu.call(this,t,"==")}function f(t,e,r){const i=this.toArray();return(t=(0,d.Jz)(this.c,t))[2]||(i[2]=1),t=i.map(((e,r)=>c.mL.isNumeric.test(t[r])?t[r]:e)),e=(0,d.Jz)(this.c,e),e=i.map(((t,r)=>c.mL.isNumeric.test(e[r])?e[r]:t)),!(!this.isValid(...t)||!this.isValid(...e))&&d.qu.call(this,t,"["===r[0]?">=":">")&&d.qu.call(this,e,"]"===r[1]?"<=":"<")}},682:(t,e,r)=>{r.d(e,{J:()=>i});const i=function(t){return t instanceof Date}},424:(t,e,r)=>{r.d(e,{E:()=>i});const i=function(t,e){switch(t[0]){case"j":return(t=>(t>1342?[1,5,9,13,17,22,26,30]:[1,5,9,13,17,21,26,30]).includes(t%33))(e);default:return(t=>t%4==0&&t%100!=0||t%400==0)(e)}}},419:(t,e,r)=>{r.d(e,{hT:()=>u,Dz:()=>M,NC:()=>y,FY:()=>D,xO:()=>c,AG:()=>f,Z7:()=>d,iL:()=>h,mS:()=>o,E0:()=>l,gl:()=>g,XV:()=>_,AB:()=>m,g0:()=>a,ty:()=>n});var i=r(555),s=r(552);function n(t){if(t=String(t).trim(),i.mL.isNumeric.test(t))return this.d.year=+t,this.isValidDate()?this:this.subDay(1,!1);{t||(t=(t=>{switch(this.c[0]){case"j":return"jy";default:return"y"}})());const e="jalali"==this.c?this.d.year:(0,s.VK)(this.toDate())[0];if("jy"==t||"jYYYY"==t)return e;if("jYY"==t)return String(e).slice(-2);const r="gregorian"==this.c?this.d.year:this.toDate().getFullYear();return"y"==t||"YYYY"==t?r:"YY"==t?String(r).slice(-2):e}}function o(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subQuarter(t-1,!1)):t>4?(this.d.month=12,this.addQuarter(t-4,!1)):this.d.month=3*+t-2;!this.isValidDate();)this.subDay(1,!1);return this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jQ";default:return"Q"}})());let e=Math.ceil(("jalali"==this.c?this.d.month:(0,s.VK)(this.toDate())[1])/3);if("jQ"==t)return e;if("jQo"==t)return(0,s.ke)(e);if("jQO"==t)return(0,s.ke)(e,"jalali",2);const r=Math.ceil(("gregorian"==this.c?this.d.month:this.toDate().getMonth()+1)/3);return"Q"==t?r:"Qo"==t||"QO"==t?(0,s.ke)(r,"gregorian"):e}}function h(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subMonth(t-1,!1)):t>12?(this.d.month=12,this.addMonth(t-12,!1)):this.d.month=+t;!this.isValidDate();)this.subDay(1,!1);return this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jM";default:return"M"}})());const e="jalali"==this.c?this.d.month:(0,s.VK)(this.toDate())[1];if("jMM"==t)return(0,s.U9)(e,2);if("jM"==t)return e;if("jMMMM"==t||"jMMM"==t)return i.XN.jalali.months[e];if("jMo"==t)return(0,s.ke)(e);if("jMO"==t)return(0,s.ke)(e,"jalali",2);const r="gregorian"==this.c?this.d.month:this.toDate().getMonth()+1;return"M"==t?r:"MM"==t?(0,s.U9)(r,2):"MMMM"==t?i.XN.gregorian.months[r]:"Mo"==t||"MO"==t?(0,s.ke)(r,"gregorian"):"MMM"==t?i.XN.gregorian.months[r].slice(0,3):e}}function a(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){const e=this.getWeeksInYear();if(t<1)this.week(1),this.subWeek(t-1,!1);else if(t>e)this.week(e),this.addWeek(t-e,!1);else{const e=s.EC.call(this,this.d.year,this.d.month,this.d.date,this.c);this.addWeek(+t-e)}for(;!this.isValidDate();)this.subDay(1,!1);return this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jw";default:return"w"}})());const e=s.EC.call(this,this.year("jy"),this.month("jM"),this.date("jD"),this.c);if("jw"==t||"jW"==t)return e;if("jww"==t||"jWW"==t)return(0,s.U9)(e,2);if("jwo"==t||"jWo"==t)return(0,s.ke)(e);if("jwO"==t||"jWO"==t)return(0,s.ke)(e,"jalali",2);const r=s.EC.call(this,this.year("y"),this.month("M"),this.date("D"),"gregorian");return"w"==t||"W"==t?r:"ww"==t||"WW"==t?(0,s.U9)(r,2):"wo"==t||"Wo"==t||"wO"==t||"WO"==t?(0,s.ke)(r,"gregorian"):e}}function u(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){const e=this.getDaysInMonth();return t<1?(this.d.date=1,this.subDay(t-1)):t>e?(this.d.date=e,this.addDay(t-e)):this.d.date=+t,this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jD";default:return"D"}})());const e="jalali"==this.c?this.d.date:(0,s.VK)(this.toDate())[2];if("jDD"==t)return(0,s.U9)(e,2);if("jD"==t)return e;if("jDo"==t)return(0,s.ke)(e);if("jDO"==t)return(0,s.ke)(e,"jalali",2);const r=this.toDate();if("jdddd"==t||"jddd"==t)return(0,s.Ot)(r);if("jdd"==t)return(0,s.Ot)(r).slice(0,1);let i=(0,s.ji)(r);if("jdo"==t)return(0,s.ke)(i);if("jdO"==t)return(0,s.ke)(i,"jalali",2);if("jd"==t)return(0,s.ji)(r,"jalali","array");if("jde"==t)return i;let n=(0,s.Bk)(this.year("jy"),this.month("jM"),e,"j");return"jDDDD"==t?(0,s.U9)(n,3):"jDDD"==t?n:"jDDDo"==t?(0,s.ke)(n):"jDDDO"==t?(0,s.ke)(n,"jalali",2):"DD"==t?(0,s.U9)(r.getDate(),2):"D"==t?r.getDate():"Do"==t||"DO"==t?(0,s.ke)(r.getDate(),"gregorian"):"dddd"==t?(0,s.Ot)(r,"gregorian"):"ddd"==t?(0,s.Ot)(r,"gregorian").slice(0,3):"dd"==t?(0,s.Ot)(r,"gregorian").slice(0,2):(i=(0,s.ji)(r,"gregorian"),"do"==t||"dO"==t?(0,s.ke)(i,"gregorian"):"d"==t?i-1:"de"==t?i:(n=(0,s.Bk)(r.getFullYear(),r.getMonth()+1,r.getDate(),"g"),"DDDD"==t?(0,s.U9)(n,3):"DDD"==t?n:"DDDo"==t||"DDDO"==t?(0,s.ke)(n,"gregorian"):e))}}function c(t){if(t=String(t).trim(),i.mL.isNumeric.test(t))return t<0?(this.d.hour=0,this.subHour(t)):t>23?(this.d.hour=23,this.addHour(t-23)):this.d.hour=+t,this;{let e=this.d.hour;return"H"==t?e:"HH"==t?(0,s.U9)(e,2):"k"==t?e||24:"kk"==t?(0,s.U9)(e||24,2):(e=e>12?e-12:e,"h"==t?e:"hh"==t?(0,s.U9)(e,2):e)}}function d(t){return t=String(t).trim(),i.mL.isNumeric.test(t)?(t<0?(this.d.minute=0,this.subMinute(t)):t>23?(this.d.minute=23,this.addMinute(t-23)):this.d.minute=+t,this):"m"==t?this.d.minute:"mm"==t?(0,s.U9)(this.d.minute,2):this.d.minute}function l(t){return t=String(t).trim(),i.mL.isNumeric.test(t)?(t<0?(this.d.second=0,this.subSecond(t)):t>23?(this.d.second=23,this.addSecond(t-23)):this.d.second=+t,this):"s"==t?this.d.second:"ss"==t?(0,s.U9)(this.d.second,2):this.d.second}function f(t){return t=String(t).trim(),i.mL.isNumeric.test(t)?(t<0?(this.d.millisecond=0,this.subMillisecond(t)):t>23?(this.d.millisecond=23,this.addMillisecond(t-23)):this.d.millisecond=+t,this):"CCC"==t||"c"==t?this.d.millisecond:"CCCC"==t?(0,s.U9)(this.d.millisecond,3):this.d.millisecond}function m(t){return t?this.fromGregorian(+String(t).trim()):this.toDate().getTime()}var p=r(424);const y=function(t,e,r){switch(t[0]){case"j":return((t,e,r)=>r>=1&&r<=6?31:r>6&&r<=11||(0,p.E)(t,e)?30:29)(t,e,r);default:return((t,e,r)=>[1,3,5,7,8,10,12].includes(r)?31:2!=r?30:(0,p.E)(t,e)?29:28)(t,e,r)}};function D(t){const e=(t=>{switch(this.c[0]){case"j":return"jd";default:return"d"}})(),r=this.clone().parse(t),i=r.date(e),s=r.clone().endOf("year").startOf("day"),n=s.date(e);return i>3?r.addDay(7-i):r.subDay(i),n>3?s.addDay(7-n):s.subDay(n),Math.ceil(s.diff(r,"date")/7)}function g(t){return this.d.millisecond=0,"s"==t[0]?this:(this.d.second=0,"m"==t||"minute"==t?this:(this.d.minute=0,"h"==t[0]?this:(this.d.hour=0,"d"==t[0]?this:"w"==t[0]?this.subDay((0,s.ji)(this.toDate(),this.c,"array")):(this.d.date=1,"q"==t[0]?this.quarter(this.quarter()):"M"==t||"month"==t?this:(this.d.month=1,"y"==t[0]?this:void 0)))))}function M(t){return this.d.millisecond=999,"s"==t[0]?this:(this.d.second=59,"m"==t||"minute"==t?this:(this.d.minute=59,"h"==t[0]?this:(this.d.hour=23,"d"==t[0]?this:"w"==t[0]?this.addDay(7-(0,s.ji)(this.toDate(),this.c)):"q"==t[0]?(this.quarter(this.quarter()).addMonth(2),this.d.date=this.getDaysInMonth(),this):(this.d.date=this.getDaysInMonth(),"M"==t||"month"==t?this:(this.d.month=12,this.d.date=this.getDaysInMonth(),"y"==t[0]?this:void 0)))))}var b=r(747);function _(...t){if(!t.length)return this.toArray().slice(3);let e=[];return e=(0,b._B)(t[0])?t[0].time():(0,b.J_)(t[0])?[t[0].getHours(),t[0].getMinutes(),t[0].getSeconds(),t[0].getMilliseconds()]:"[object Object]"===Object.prototype.toString.call(t[0])?[t[0].h||t[0].hour||t[0].hours||0,t[0].m||t[0].minute||t[0].minutes||0,t[0].s||t[0].second||t[0].seconds||0,t[0].ms||t[0].millisecond||t[0].milliseconds||0]:(0,s.Jz)(this.c,...t),this.isValidTime(...e)?this.hour(e[0]||0).minute(e[1]||0).second(e[2]||0).millisecond(e[3]||0):"زمان نامعتبر"}},555:(t,e,r)=>{r.d(e,{XN:()=>i,d7:()=>n,mL:()=>s});const i={jalali:{months:{1:"فروردین",2:"اردیبهشت",3:"خرداد",4:"تیر",5:"مرداد",6:"شهریور",7:"مهر",8:"آبان",9:"آذر",10:"دی",11:"بهمن",12:"اسفند"},days:{label:{6:"شنبه",0:"یکشنبه",1:"دوشنبه",2:"سه‌شنبه",3:"چهارشنبه",4:"پنجشنبه",5:"جمعه"},weekNumber:{6:0,0:1,1:2,2:3,3:4,4:5,5:6}},ordinalNumbers:function(t,e){const r={1:"یک",2:"دو",3:"سو",4:"چهار",5:"پنج",6:"شش",7:"هفت",8:"هشت",9:"نه",10:"ده",11:"یازده",12:"دوازده",13:"سیزده",14:"چهارده",15:"پانزده",16:"شانزده",17:"هفده",18:"هجده",19:"نوزده",20:"بیست",30:"سی‌",40:"چهل",50:"پنجاه",60:"شصت",70:"هفتاد",80:"هشتاد",90:"نود",100:"صد",200:"دویست",300:"سیصد"};let i="";if(1==t)i="اول";else if(r[t])i=r[t]+(30==t?"ام":"م");else{let e=t%100;r[e]?i=r[e]+"م":(e=t%10,e&&(i=r[e]+"م")),e=(t-e)%100,e&&(i=r[e]+(i?" و "+i:30==e?"ام ":"م")),e=100*Math.floor(t/100),e&&(i=r[e]+(i?" و "+i:"م"))}return 2==e&&(i+="ین"),i}},gregorian:{months:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},days:{label:{0:"Sunday",1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday"},weekNumber:{0:0,1:1,2:2,3:3,4:4,5:5,6:6}},ordinalNumbers:function(t){return 1==t||t%10==1&&11!=t?t+"st":2==t||t%10==2&&12!=t?t+"nd":3==t||t%10==3&&13!=t?t+"rd":t+"th"}}},s={format:/j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,isNumeric:/^\d+$/,separators:"\\/| |-|\\.|,|:",betweenBacktick:/`(.*?)`/g},n=function(t,e){return t>=0&&t<12?"a"==e?"am":"aa"==e?"A.M.":"A"==e?"AM":"ja"==e?"ق ظ":"jaa"==e?"ق.ظ":"jA"==e?"قبل از ظهر":"ق.ظ":t>=12&&t<24?"a"==e?"pm":"aa"==e?"P.M.":"A"==e?"PM":"ja"==e?"ب ظ":"jaa"==e?"ب.ظ":"jA"==e?"بعد از ظهر":"ب.ظ":void 0}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](r,r.exports,__webpack_require__),r.exports}__webpack_require__.d=(t,e)=>{for(var r in e)__webpack_require__.o(e,r)&&!__webpack_require__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var __webpack_exports__=__webpack_require__(739);return __webpack_exports__=__webpack_exports__.default,__webpack_exports__})()})); -//# sourceMappingURL=PersianDate.min.js.map \ No newline at end of file +"use strict";var CALENDAR={jalali:{months:{1:"فروردین",2:"اردیبهشت",3:"خرداد",4:"تیر",5:"مرداد",6:"شهریور",7:"مهر",8:"آبان",9:"آذر",10:"دی",11:"بهمن",12:"اسفند"},days:{label:{6:"شنبه",0:"یکشنبه",1:"دوشنبه",2:"سه‌شنبه",3:"چهارشنبه",4:"پنجشنبه",5:"جمعه"},weekNumber:{6:0,0:1,1:2,2:3,3:4,4:5,5:6}},ordinalNumbers:function(t,r){var e={1:"یک",2:"دو",3:"سو",4:"چهار",5:"پنج",6:"شش",7:"هفت",8:"هشت",9:"نه",10:"ده",11:"یازده",12:"دوازده",13:"سیزده",14:"چهارده",15:"پانزده",16:"شانزده",17:"هفده",18:"هجده",19:"نوزده",20:"بیست",30:"سی‌",40:"چهل",50:"پنجاه",60:"شصت",70:"هفتاد",80:"هشتاد",90:"نود",100:"صد",200:"دویست",300:"سیصد"},i="";if(1==t)i="اول";else if(e[t])i=e[t]+(30==t?"ام":"م");else{var a=t%100;(e[a]||(a=t%10))&&(i=e[a]+"م"),(a=(t-a)%100)&&(i=e[a]+(i?" و "+i:30==a?"ام ":"م")),(a=100*Math.floor(t/100))&&(i=e[a]+(i?" و "+i:"م"))}return 2==r&&(i+="ین"),i}},gregorian:{months:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},days:{label:{0:"Sunday",1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday"},weekNumber:{0:0,1:1,2:2,3:3,4:4,5:5,6:6}},ordinalNumbers:function(t){return 1==t||t%10==1&&11!=t?t+"st":2==t||t%10==2&&12!=t?t+"nd":3==t||t%10==3&&13!=t?t+"rd":t+"th"}}},REGEX={format:/j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,isNumeric:/^\d+$/,separators:"\\/| |-|\\.|,|:",betweenBacktick:/`(.*?)`/g},TIMETYPE=function(t,r){return t>=0&&t<12?"a"==r?"am":"aa"==r?"A.M.":"A"==r?"AM":"ja"==r?"ق ظ":"jaa"==r?"ق.ظ":"jA"==r?"قبل از ظهر":"ق.ظ":t>=12&&t<24?"a"==r?"pm":"aa"==r?"P.M.":"A"==r?"PM":"ja"==r?"ب ظ":"jaa"==r?"ب.ظ":"jA"==r?"بعد از ظهر":"ب.ظ":void 0},isDate=function(t){return t instanceof Date},jalali$4=function(t){return(t>1342?[1,5,9,13,17,22,26,30]:[1,5,9,13,17,21,26,30]).includes(t%33)},gregorian$4=function(t){return t%4==0&&t%100!=0||t%400==0},isLeapYear=function(t,r){switch(t[0]){case"j":return jalali$4(r);default:return gregorian$4(r)}},isPersianDate=function(t){return t instanceof PersianDate},isValid=function(t,r,e,i,a,n,s,o){return isValidDate(t,r,e,i)&&isValidTime(a,n,s,o)},jalali$3=function(t,r,e){return!(r>=7&&r<=11&&31==e)&&((12!=r||31!=e)&&!(12==r&&30==e&&!isLeapYear("j",t)))},gregorian$3=function(t,r,e){return(![2,4,6,9,11].includes(r)||31!=e)&&!(2==r&&(30==e||29==e&&!isLeapYear("g",t)))},isValidDate=function(t,r,e,i){if([r,e,i].some((function(t){return-1!=String(t).search(/null|NaN/)})))return!1;if(r<0||e>12||e<1||i>31||i<1)return!1;switch(t[0]){case"j":return jalali$3(r,e,i);default:return gregorian$3(r,e,i)}},isValidTime=function(t,r,e,i){return![t,r,e,i].some((function(t){return-1!=String(t).search(/null|NaN/)}))&&(!(t<0||t>23)&&(!(r<0||r>59)&&(!(e<0||e>59)&&!(i<0||i>999))))};function isSame(){var t=typesToArray.apply(void 0,[this.c].concat(Array.prototype.slice.call(arguments)));return t=this.toArray().map((function(r,e){return REGEX.isNumeric.test(t[e])?t[e]:r})),compare.call(this,t,"==")}function _setPrototypeOf(t,r){return(_setPrototypeOf=Object.setPrototypeOf||function(t,r){return t.__proto__=r,t})(t,r)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function _construct(t,r,e){return(_construct=_isNativeReflectConstruct()?Reflect.construct:function(t,r,e){var i=[null];i.push.apply(i,r);var a=new(Function.bind.apply(t,i));return e&&_setPrototypeOf(a,e.prototype),a}).apply(null,arguments)}function _slicedToArray(t,r){return _arrayWithHoles(t)||_iterableToArrayLimit(t,r)||_unsupportedIterableToArray(t,r)||_nonIterableRest()}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_unsupportedIterableToArray(t)||_nonIterableSpread()}function _arrayWithoutHoles(t){if(Array.isArray(t))return _arrayLikeToArray(t)}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _iterableToArray(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function _iterableToArrayLimit(t,r){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var e=[],i=!0,a=!1,n=void 0;try{for(var s,o=t[Symbol.iterator]();!(i=(s=o.next()).done)&&(e.push(s.value),!r||e.length!==r);i=!0);}catch(t){a=!0,n=t}finally{try{i||null==o.return||o.return()}finally{if(a)throw n}}return e}}function _unsupportedIterableToArray(t,r){if(t){if("string"==typeof t)return _arrayLikeToArray(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?_arrayLikeToArray(t,r):void 0}}function _arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,i=new Array(r);e=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,s=!0,o=!1;return{s:function(){e=t[Symbol.iterator]()},n:function(){var t=e.next();return s=t.done,t},e:function(t){o=!0,n=t},f:function(){try{s||null==e.return||e.return()}finally{if(o)throw n}}}}function isBetween(t,r,e){var i=this.toArray();return(t=typesToArray(this.c,t))[2]||(i[2]=1),t=i.map((function(r,e){return REGEX.isNumeric.test(t[e])?t[e]:r})),r=typesToArray(this.c,r),r=i.map((function(t,e){return REGEX.isNumeric.test(r[e])?r[e]:t})),!(!this.isValid.apply(this,_toConsumableArray(t))||!this.isValid.apply(this,_toConsumableArray(r)))&&(compare.call(this,t,"["===e[0]?">=":">")&&compare.call(this,r,"]"===e[1]?"<=":"<"))}function isInArray(t){var r=this;return t.some((function(t){return isSame.call(r,t)}))}var gtj=function(t,r,e,i,a,n,s){var o,h;e=(o=t?isDate(t)?t:new Date(REGEX.isNumeric.test(t)?t:0,REGEX.isNumeric.test(r)?r:0,REGEX.isNumeric.test(e)?e:1,REGEX.isNumeric.test(i)?i:0,REGEX.isNumeric.test(a)?a:0,REGEX.isNumeric.test(n)?n:0,REGEX.isNumeric.test(s)?s:0):new Date).getDate(),r=o.getMonth()+1,t=o.getFullYear(),i=o.getHours(),a=o.getMinutes(),n=o.getSeconds(),s=o.getMilliseconds();t>1600?(h=979,t-=1600):(h=0,t-=621);var u=r>2?t+1:t,l=365*t+parseInt((u+3)/4)-parseInt((u+99)/100)+parseInt((u+399)/400)-80+e+[0,31,59,90,120,151,181,212,243,273,304,334][r-1];return h+=33*parseInt(l/12053),l%=12053,h+=4*parseInt(l/1461),(l%=1461)>365&&(h+=parseInt((l-1)/365),l=(l-1)%365),[h,l<186?1+parseInt(l/31):7+parseInt((l-186)/30),1+(l<186?l%31:(l-186)%30),i,a,n,s]},jtg=function(t,r,e,i,a,n,s){var o,h,u;t=REGEX.isNumeric.test(t)?+t:1,r=REGEX.isNumeric.test(r)?+r:1,e=REGEX.isNumeric.test(e)?+e:1,i=REGEX.isNumeric.test(i)?+i:0,a=REGEX.isNumeric.test(a)?+a:0,n=REGEX.isNumeric.test(n)?+n:0,s=REGEX.isNumeric.test(s)?+s:0,t>979?(o=1600,t-=979):o=621;var l=365*t+8*parseInt(t/33)+parseInt((t%33+3)/4)+78+e+(r<7?31*(r-1):30*(r-7)+186);o+=400*parseInt(l/146097),(l%=146097)>36524&&(o+=100*parseInt(--l/36524),(l%=36524)>=365&&l++),o+=4*parseInt(l/1461),(l%=1461)>365&&(o+=parseInt((l-1)/365),l=(l-1)%365),u=l+1;var d=[0,31,isLeapYear("gregorian",o)?29:28,31,30,31,30,31,31,30,31,30,31];for(h=0;h<13;h++){var c=d[h];if(u<=c)break;u-=c}return new Date(o,h-1,u,i,a,n,s)},warn=function(t){console.warn(t)},error=function(t){console.error(t)},invalid=function(t){return delete this.d,this.error=t,this},typesToArray=function(t,r,e,i,a,n,s,o){return r||(r=new Date),"string"==typeof r&&-1!=r.search(REGEX.separators)?r.split(/[/ -.,:\\]/):Array.isArray(r)?r:PersianDate.isPersianDate(r)?r.clone().calendar(t).toArray():PersianDate.isDate(r)?new PersianDate(r).calendar(t).toArray():"[object Object]"===Object.prototype.toString.call(r)?[r.y||r.year||r.years,r.M||r.month||r.months||1,r.d||r.day||r.days||r.date||1,r.h||r.hour||r.hours||0,r.m||r.minute||r.minutes||0,r.s||r.second||r.seconds||0,r.ms||r.millisecond||r.milliseconds||0]:[r,e,i,a,n,s,o]},ordinalNumber=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"jalali",e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return CALENDAR[r].ordinalNumbers(t,e)},addPrefix=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"0";return e.repeat(r-String(t).length)+t},setJalaliDate=function(t){var r=_slicedToArray(gtj(t),7);this.d.year=r[0],this.d.month=r[1],this.d.date=r[2],this.d.hour=r[3],this.d.minute=r[4],this.d.second=r[5],this.d.millisecond=r[6]},setGregorianDate=function(t){this.d={year:t.getFullYear(),month:t.getMonth()+1,date:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),second:t.getSeconds(),millisecond:t.getMilliseconds()}},getDayLabel=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"jalali";return isDate(t)?CALENDAR[r].days.label[t.getDay()]:error("the first param must be instance of Date.")},getDayOfWeek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"jalali",e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"standard";return isDate(t)?CALENDAR[r].days.weekNumber[t.getDay()]+("standard"!=e?0:1):error("the first param must be instance of Date.")},getDefaultFormat$4=function(t){switch(t[0]){case"j":return"jy";default:return"y"}};function year(t){if(t=String(t).trim(),REGEX.isNumeric.test(t))return this.d.year=+t,this.isValidDate()?this:this.subDay(1,!1);t||(t=getDefaultFormat$4(this.c));var r="jalali"==this.c?this.d.year:gtj(this.toDate())[0];if("jy"==t||"jYYYY"==t)return r;if("jYY"==t)return String(r).slice(-2);var e="gregorian"==this.c?this.d.year:this.toDate().getFullYear();return"y"==t||"YYYY"==t?e:"YY"==t?String(e).slice(-2):r}var getDefaultFormat$3=function(t){switch(t[0]){case"j":return"jQ";default:return"Q"}};function quarter(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subQuarter(t-1,!1)):t>4?(this.d.month=12,this.addQuarter(t-4,!1)):this.d.month=3*+t-2;!this.isValidDate();)this.subDay(1,!1);return this}t||(t=getDefaultFormat$3(this.c));var r=Math.ceil(("jalali"==this.c?this.d.month:gtj(this.toDate())[1])/3);if("jQ"==t)return r;if("jQo"==t)return ordinalNumber(r);if("jQO"==t)return ordinalNumber(r,"jalali",2);var e=Math.ceil(("gregorian"==this.c?this.d.month:this.toDate().getMonth()+1)/3);return"Q"==t?e:"Qo"==t||"QO"==t?ordinalNumber(e,"gregorian"):r}var getDefaultFormat$2=function(t){switch(t[0]){case"j":return"jM";default:return"M"}};function month(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subMonth(t-1,!1)):t>12?(this.d.month=12,this.addMonth(t-12,!1)):this.d.month=+t;!this.isValidDate();)this.subDay(1,!1);return this}t||(t=getDefaultFormat$2(this.c));var r="jalali"==this.c?this.d.month:gtj(this.toDate())[1];if("jMM"==t)return addPrefix(r,2);if("jM"==t)return r;if("jMMMM"==t||"jMMM"==t)return CALENDAR.jalali.months[r];if("jMo"==t)return ordinalNumber(r);if("jMO"==t)return ordinalNumber(r,"jalali",2);var e="gregorian"==this.c?this.d.month:this.toDate().getMonth()+1;return"M"==t?e:"MM"==t?addPrefix(e,2):"MMMM"==t?CALENDAR.gregorian.months[e]:"Mo"==t||"MO"==t?ordinalNumber(e,"gregorian"):"MMM"==t?CALENDAR.gregorian.months[e].slice(0,3):r}var getDefaultFormat$1=function(t){switch(t[0]){case"j":return"jw";default:return"w"}};function week(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){var r=this.getWeeksInYear();if(t<1)this.week(1),this.subWeek(t-1,!1);else if(t>r)this.week(r),this.addWeek(t-r,!1);else{var e=getWeekOfYear.call(this,this.d.year,this.d.month,this.d.date,this.c);this.addWeek(+t-e)}for(;!this.isValidDate();)this.subDay(1,!1);return this}t||(t=getDefaultFormat$1(this.c));var i=getWeekOfYear.call(this,this.year("jy"),this.month("jM"),this.date("jD"),this.c);if("jw"==t||"jW"==t)return i;if("jww"==t||"jWW"==t)return addPrefix(i,2);if("jwo"==t||"jWo"==t)return ordinalNumber(i);if("jwO"==t||"jWO"==t)return ordinalNumber(i,"jalali",2);var a=getWeekOfYear.call(this,this.year("y"),this.month("M"),this.date("D"),"gregorian");return"w"==t||"W"==t?a:"ww"==t||"WW"==t?addPrefix(a,2):"wo"==t||"Wo"==t||"wO"==t||"WO"==t?ordinalNumber(a,"gregorian"):i}var getDefaultFormat=function(t){switch(t[0]){case"j":return"jD";default:return"D"}};function date(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){var r=this.getDaysInMonth();return t<1?(this.d.date=1,this.subDay(t-1)):t>r?(this.d.date=r,this.addDay(t-r)):this.d.date=+t,this}t||(t=getDefaultFormat(this.c));var e="jalali"==this.c?this.d.date:gtj(this.toDate())[2];if("jDD"==t)return addPrefix(e,2);if("jD"==t)return e;if("jDo"==t)return ordinalNumber(e);if("jDO"==t)return ordinalNumber(e,"jalali",2);var i=this.toDate();if("jdddd"==t||"jddd"==t)return getDayLabel(i);if("jdd"==t)return getDayLabel(i).slice(0,1);var a=getDayOfWeek(i);if("jdo"==t)return ordinalNumber(a);if("jdO"==t)return ordinalNumber(a,"jalali",2);if("jd"==t)return getDayOfWeek(i,"jalali","array");if("jde"==t)return a;var n=getDayOfYear(this.year("jy"),this.month("jM"),e,"j");return"jDDDD"==t?addPrefix(n,3):"jDDD"==t?n:"jDDDo"==t?ordinalNumber(n):"jDDDO"==t?ordinalNumber(n,"jalali",2):"DD"==t?addPrefix(i.getDate(),2):"D"==t?i.getDate():"Do"==t||"DO"==t?ordinalNumber(i.getDate(),"gregorian"):"dddd"==t?getDayLabel(i,"gregorian"):"ddd"==t?getDayLabel(i,"gregorian").slice(0,3):"dd"==t?getDayLabel(i,"gregorian").slice(0,2):(a=getDayOfWeek(i,"gregorian"),"do"==t||"dO"==t?ordinalNumber(a,"gregorian"):"d"==t?a-1:"de"==t?a:(n=getDayOfYear(i.getFullYear(),i.getMonth()+1,i.getDate(),"g"),"DDDD"==t?addPrefix(n,3):"DDD"==t?n:"DDDo"==t||"DDDO"==t?ordinalNumber(n,"gregorian"):e))}function hour(t){if(t=String(t).trim(),REGEX.isNumeric.test(t))return t<0?(this.d.hour=0,this.subHour(t)):t>23?(this.d.hour=23,this.addHour(t-23)):this.d.hour=+t,this;var r=this.d.hour;return"H"==t?r:"HH"==t?addPrefix(r,2):"k"==t?r||24:"kk"==t?addPrefix(r||24,2):(r=r>12?r-12:r,"h"==t?r:"hh"==t?addPrefix(r,2):r)}function minute(t){return t=String(t).trim(),REGEX.isNumeric.test(t)?(t<0?(this.d.minute=0,this.subMinute(t)):t>23?(this.d.minute=23,this.addMinute(t-23)):this.d.minute=+t,this):"m"==t?this.d.minute:"mm"==t?addPrefix(this.d.minute,2):this.d.minute}function second(t){return t=String(t).trim(),REGEX.isNumeric.test(t)?(t<0?(this.d.second=0,this.subSecond(t)):t>23?(this.d.second=23,this.addSecond(t-23)):this.d.second=+t,this):"s"==t?this.d.second:"ss"==t?addPrefix(this.d.second,2):this.d.second}function millisecond(t){return t=String(t).trim(),REGEX.isNumeric.test(t)?(t<0?(this.d.millisecond=0,this.subMillisecond(t)):t>23?(this.d.millisecond=23,this.addMillisecond(t-23)):this.d.millisecond=+t,this):"CCC"==t||"c"==t?this.d.millisecond:"CCCC"==t?addPrefix(this.d.millisecond,3):this.d.millisecond}function timestamp(t){return t?this.fromGregorian(+String(t).trim()):this.toDate().getTime()}var jalali$2=function(t,r,e){return e>=1&&e<=6?31:e>6&&e<=11||isLeapYear(t,r)?30:29},gregorian$2=function(t,r,e){return[1,3,5,7,8,10,12].includes(e)?31:2!=e?30:isLeapYear(t,r)?29:28},getDaysInMonth=function(t,r,e){switch(t[0]){case"j":return jalali$2(t,r,e);default:return gregorian$2(t,r,e)}},getDayOfYearFormat=function(t){switch(t[0]){case"j":return"jd";default:return"d"}};function getWeeksInYear(t){var r=getDayOfYearFormat(this.c),e=this.clone().parse(t),i=e.date(r),a=e.clone().endOf("year").startOf("day"),n=a.date(r);return i>3?e.addDay(7-i):e.subDay(i),n>3?a.addDay(7-n):a.subDay(n),Math.ceil(a.diff(e,"date")/7)}function startOf(t){return this.d.millisecond=0,"s"==t[0]?this:(this.d.second=0,"m"==t||"minute"==t?this:(this.d.minute=0,"h"==t[0]?this:(this.d.hour=0,"d"==t[0]?this:"w"==t[0]?this.subDay(getDayOfWeek(this.toDate(),this.c,"array")):(this.d.date=1,"q"==t[0]?this.quarter(this.quarter()):"M"==t||"month"==t?this:(this.d.month=1,"y"==t[0]?this:void 0)))))}function endOf(t){return this.d.millisecond=999,"s"==t[0]?this:(this.d.second=59,"m"==t||"minute"==t?this:(this.d.minute=59,"h"==t[0]?this:(this.d.hour=23,"d"==t[0]?this:"w"==t[0]?this.addDay(7-getDayOfWeek(this.toDate(),this.c)):"q"==t[0]?(this.quarter(this.quarter()).addMonth(2),this.d.date=this.getDaysInMonth(),this):(this.d.date=this.getDaysInMonth(),"M"==t||"month"==t?this:(this.d.month=12,this.d.date=this.getDaysInMonth(),"y"==t[0]?this:void 0)))))}function time(){for(var t=arguments.length,r=new Array(t),e=0;e3&&a.addDay(7-n);var o=Math.ceil(s.diff(a,"date",!0)/7),h=s.clone().getWeeksInYear();return o>h?h:o},compare=function compare(date,operator){return date=typesToArray.apply(void 0,[this.c].concat(_toConsumableArray(date))),!!this.isValid.apply(this,_toConsumableArray(date))&&eval("this.timestamp()"+operator+"this.clone().parse(...date).timestamp()")},mathOperation=function(t,r){var e=this;if(!t.length)return!1;var i=_toConsumableArray(t),a=i.map((function(t){var r;return t=typesToArray(e.c,t),!!e.isValid.apply(e,_toConsumableArray(t))&&(r=e.clone()).parse.apply(r,_toConsumableArray(t)).timestamp()}));return!a.includes(!1)&&i[a.indexOf(Math[r].apply(Math,_toConsumableArray(a)))]},isTimestamp=function(t){return!isNaN(t)&&Math.floor(t/1e4)>0};function now(){var t=new Date;return"jalali"==this.c?setJalaliDate.call(this,t):setGregorianDate.call(this,t),this}function parse(){return"jalali"==this.c?this.fromJalali.apply(this,arguments):this.fromGregorian.apply(this,arguments)}function clone(){return Object.assign(Object.create(Object.getPrototypeOf(this)),JSON.parse(JSON.stringify(this)))}function fromJalali(){for(var t=arguments.length,r=new Array(t),e=0;e1){if(!isValid.apply(void 0,["gregorian"].concat(_toConsumableArray(r))))return invalid.call(this,"تاریخ نامعتبر");--r[1]}return"Invalid Date"==(r=_construct(Date,_toConsumableArray(r)))?invalid.call(this,"تاریخ نامعتبر"):("jalali"==this.c?setJalaliDate.call(this,r):setGregorianDate.call(this,r),this)}function calendar(t){return t?("j"==t[0]&&"j"!=this.c[0]?(this.error||setJalaliDate.call(this,this.toDate()),this.c="jalali"):"g"==t[0]&&"g"!=this.c[0]&&(this.error||setGregorianDate.call(this,this.toDate()),this.c="gregorian"),this):this.c}function addYear(t,r){if(t<0)return this.subYear(Math.abs(t));for(this.d.year+=+t;r&&!this.isValidDate();)this.subDay(1,!1);return this}function addQuarter(t,r){return t<0?this.subQuarter(Math.abs(t)):this.addMonth(3*+t,r)}function addMonth(t,r){if(t<0)return this.subMonth(Math.abs(t));t=+t;var e=12-this.d.month+1;if(e>t)this.d.month+=t;else{for(this.addYear(1,!1),this.d.month=1,t-=e;t>=12;)t-=12,this.addYear(1,!1);0!=t&&(this.d.month+=t)}for(;r&&!this.isValidDate();)this.subDay(1,!1);return this}function addWeek(t,r){return t<0?this.subWeek(Math.abs(t)):this.addDay(7*+t,r)}function addDay(t){if(t<0)return this.subDay(Math.abs(t));t=+t;var r=this.getDaysInMonth()-this.d.date+1;if(r>t)this.d.date+=t;else{this.addMonth(1,!1),this.d.date=1,t-=r;for(var e=this.getDaysInMonth();t>=e;)t-=e,this.addMonth(1,!1),e=this.getDaysInMonth();0!=t&&(this.d.date+=t)}return this}function addHour(t){if(t<0)return this.subHour(Math.abs(t));for(t=+t;t>=24;)t-=24,this.addDay(1,!1);var r=24-this.d.hour;return t>=r?(this.addDay(1,!1),t-=r,this.d.hour=t):this.d.hour+=t,this}function addMinute(t){if(t<0)return this.subMinute(Math.abs(t));for(t=+t;t>=60;)this.addHour(1,!1),t-=60;var r=60-this.d.minute;return t>=r?(this.addHour(1,!1),t-=r,this.d.minute=t):this.d.minute+=t,this}function addSecond(t){if(t<0)return this.subSecond(Math.abs(t));for(t=+t;t>=60;)this.addMinute(1,!1),t-=60;var r=60-this.d.second;return t>=r?(this.addMinute(1,!1),t-=r,this.d.second=t):this.d.second+=t,this}function addMillisecond(t){if(t<0)return this.subMillisecond(Math.abs(t));for(t=+t;t>=1e3;)this.addSecond(1,!1),t-=1e3;var r=1e3-this.d.millisecond;return t>=r?(this.addSecond(1,!1),t-=r,this.d.millisecond=t):this.d.millisecond+=t,this}function subYear(t,r){for(this.d.year-=Math.abs(t);r&&!this.isValidDate();)this.subDay(1,!1);return this}function subQuarter(t,r){return t=Math.abs(t),this.subMonth(3*t,r)}function subMonth(t,r){t=Math.abs(t);var e=this.d.month;if(e>t)this.d.month-=t;else{for(this.subYear(1,!1),this.d.month=12,t-=e;t>=12;)this.subYear(1,!1),t-=12;0!=t&&(this.d.month-=t)}for(;r&&!this.isValidDate();)this.subDay(1,!1);return this}function subWeek(t,r){return t=Math.abs(t),this.subDay(7*t,r)}function subDay(t){t=Math.abs(t);var r=this.d.date;if(r>t)this.d.date-=t;else{this.subMonth(1,!1);var e=this.getDaysInMonth();for(this.d.date=e,t-=r;t>=e;)t-=e,this.subMonth(1,!1),e=this.getDaysInMonth();this.d.date=e-t}return this}function subHour(t){for(t=Math.abs(t);t>=24;)t-=24,this.subDay(1,!1);var r=this.d.hour;return t>r?(this.subDay(1,!1),t-=r,this.d.hour=24-t):this.d.hour-=t,this}function subMinute(t){for(t=Math.abs(t);t>=60;)t-=60,this.subHour(1,!1);var r=this.d.minute;return t>r?(this.subHour(1,!1),t-=r,this.d.minute=60-t):this.d.minute-=t,this}function subSecond(t){for(t=Math.abs(t);t>=60;)t-=60,this.subMinute(1,!1);var r=this.d.second;return t>r?(this.subMinute(1,!1),t-=r,this.d.second=60-t):this.d.second-=t,this}function subMillisecond(t){for(t=Math.abs(t);t>=1e3;)t-=1e3,this.subSecond(1,!1);var r=this.d.millisecond;return t>r?(this.subSecond(1,!1),t-=r,this.d.millisecond=1e3-t):this.d.millisecond-=t,this}var jalali$1=function(t){return t.replace(/\?/g,"j").replace(/datetime/gi,"jYYYY/jMM/jDD HH:mm").replace(/date/gi,"jYYYY/jMM/jDD").replace(/time/gi,"HH:mm")},gregorian$1=function(t){return t.replace(/\?/g,"").replace(/datetime/gi,"YYYY-MM-DD HH:mm").replace(/date/gi,"YYYY-MM-DD").replace(/time/gi,"HH:mm")};function toString(t){var r=[];switch(t=t.replace(REGEX.betweenBacktick,(function(t,e){return r.push(e),"###"})),this.c[0]){case"j":t=jalali$1(t);break;default:t=gregorian$1(t)}var e,i="",a=_createForOfIteratorHelper(t.match(REGEX.format));try{for(a.s();!(e=a.n()).done;){var n=e.value;i+=t.substring(0,t.indexOf(n)),-1!=n.search(/Y|y/)?i+=this.year(n):-1!=n.search(/M/)?i+=this.month(n):-1!=n.search(/Q/)?i+=this.quarter(n):-1!=n.search(/D|d/)?i+=this.date(n):-1!=n.search(/W|w/)?i+=this.week(n):-1!=n.search(/H|h|k/)?i+=this.hour(n):-1!=n.search(/m/)?i+=this.minute(n):-1!=n.search(/s/)?i+=this.second(n):-1!=n.search(/c|C/)?i+=this.millisecond(n):-1!=n.search(/t/)?i+=this.timestamp():-1!=n.search(/a|A/)&&(i+=TIMETYPE(this.d.hour,n)),t=t.substr(t.indexOf(n)+n.length)}}catch(t){a.e(t)}finally{a.f()}i+=t;for(var s=0;s=0?1:-1):a}function diffForHumans(t,r){var e=this.diff(t,"s");if("string"==typeof e)return"تاریخ نامعتبر";var i=r&&(e>0?"آینده":"پیش");return 0==(e=Math.abs(e))?"هم اکنون":(e=e<45?"لحظات":(e/=60)<45?Math.round(e)+" دقیقه":(e/=60)<23.5?Math.round(e)+" ساعت":(e/=24)<26?Math.round(e)+" روز":e<320?Math.round(e/30)+" ماه":Math.round(e/365)+" سال")+(r?" "+i:"")}var PersianDate=function t(r,e){this.d={},this.c="jalali",t.prototype.now=function(){return this.error&&(delete this.error,this.d={}),now.call(this)},t.prototype.setDate=function(){return warn('"setDate" function is deprecated! use "fromGregorian" function instead.\nhttps://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date'),this.fromGregorian.apply(this,arguments)},t.prototype.parse=function(){return parse.call.apply(parse,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.clone=function(){return clone.call(this)},t.prototype.fromJalali=function(){return this.error&&(delete this.error,this.d={}),fromJalali.call.apply(fromJalali,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.fromGregorian=function(){return this.error&&(delete this.error,this.d={}),fromGregorian.call.apply(fromGregorian,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.calendar=function(t){return calendar.call(this,t)},t.prototype.year=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:year.call(this,t)},t.prototype.month=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:month.call(this,t)},t.prototype.date=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:date.call(this,t)},t.prototype.quarter=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:quarter.call(this,t)},t.prototype.week=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:week.call(this,t)},t.prototype.hour=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"H";return this.error?this.error:hour.call(this,t)},t.prototype.minute=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"m";return this.error?this.error:minute.call(this,t)},t.prototype.second=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"s";return this.error?this.error:second.call(this,t)},t.prototype.millisecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"c";return this.error?this.error:millisecond.call(this,t)},t.prototype.timestamp=function(t){return this.error?this.error:timestamp.call(this,t)},t.prototype.valueOf=function(){return this.timestamp()},t.prototype.getDaysInMonth=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.d.month;return this.error?this.error:getDaysInMonth(this.c,t,r)},t.prototype.getWeeksInYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year;return this.error?this.error:getWeeksInYear.call(this,t)},t.prototype.startOf=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"year";return startOf.call(this,t)},t.prototype.endOf=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"year";return endOf.call(this,t)},t.prototype.time=function(){return this.error?this.error:time.call.apply(time,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.addYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addYear.call(this,t,r):this},t.prototype.addMonth=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addMonth.call(this,t,r):this},t.prototype.addDay=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addDay.call(this,t,r):this},t.prototype.addQuarter=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addQuarter.call(this,t,r):this},t.prototype.addWeek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addWeek.call(this,t,r):this},t.prototype.addHour=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addHour.call(this,t,r):this},t.prototype.addMinute=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addMinute.call(this,t,r):this},t.prototype.addSecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addSecond.call(this,t,r):this},t.prototype.addMillisecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addMillisecond.call(this,t,r):this},t.prototype.subYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subYear.call(this,t,r):this},t.prototype.subMonth=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subMonth.call(this,t,r):this},t.prototype.subDay=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subDay.call(this,t,r):this},t.prototype.subQuarter=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subQuarter.call(this,t,r):this},t.prototype.subWeek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subWeek.call(this,t,r):this},t.prototype.subHour=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subHour.call(this,t,r):this},t.prototype.subMinute=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subMinute.call(this,t,r):this},t.prototype.subSecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subSecond.call(this,t,r):this},t.prototype.subMillisecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subMillisecond.call(this,t,r):this},t.prototype.toString=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"date";return this.error?this.error:toString.call(this,t)},t.prototype.toArray=function(){return this.error?this.error:toArray.call.apply(toArray,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.toObject=function(){return this.error?this.error:toObject.call.apply(toObject,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.toDate=function(){return this.error?this.error:toDate.call(this)},t.prototype.diff=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.error?this.error:diff.call(this,t,r,e)},t.prototype.diffForHumans=function(t){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:diffForHumans.call(this,t,r)},t.prototype.min=function(){return mathOperation.call(this,arguments,"min")},t.prototype.max=function(){return mathOperation.call(this,arguments,"max")},t.prototype.isLeapYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year;return!this.error&&isLeapYear(this.c,t)},t.prototype.isValid=function(t,r,e,i,a,n,s){return!this.error&&(this.isValidDate(t,r,e)&&this.isValidTime(i,a,n,s))},t.prototype.isValidDate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.d.month,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.d.date;return!this.error&&isValidDate(this.c,t,r,e)},t.prototype.isValidTime=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.hour,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.d.minute,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.d.second,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.d.millisecond;return!this.error&&isValidTime(t,r,e,i)},t.prototype.isSame=function(){return!this.error&&isSame.call.apply(isSame,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.isBefore=function(){return!this.error&&compare.call(this,arguments,"<")},t.prototype.isAfter=function(){return!this.error&&compare.call(this,arguments,">")},t.prototype.isSameOrBefore=function(){return!this.error&&compare.call(this,arguments,"<=")},t.prototype.isSameOrAfter=function(){return!this.error&&compare.call(this,arguments,">=")},t.prototype.isBetween=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"()";return!this.error&&isBetween.call(this,t,r,e)},t.prototype.isInArray=function(t){return!this.error&&isInArray.call(this,t)},t.prototype.isDate=isDate,t.prototype.isPersianDate=isPersianDate,e&&this.calendar(e),r?e&&"j"==e[0]?this.fromJalali(r):this.fromGregorian(r):this.now()};PersianDate.isLeapYear=isLeapYear,PersianDate.isDate=isDate,PersianDate.isPersianDate=isPersianDate,PersianDate.isValid=isValid,PersianDate.isValidDate=isValidDate,PersianDate.isValidTime=isValidTime,PersianDate.getDaysInMonth=getDaysInMonth,module.exports=PersianDate; diff --git a/dist/PersianDate.min.js.map b/dist/PersianDate.min.js.map deleted file mode 100644 index c0e5395..0000000 --- a/dist/PersianDate.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://PersianDate/webpack/universalModuleDefinition","webpack://PersianDate/./src/create/now.js","webpack://PersianDate/./src/create/parse.js","webpack://PersianDate/./src/create/clone.js","webpack://PersianDate/./src/create/fromJalali.js","webpack://PersianDate/./src/create/fromGregorian.js","webpack://PersianDate/./src/create/calendar.js","webpack://PersianDate/./src/add-sub/addYear.js","webpack://PersianDate/./src/add-sub/addMonth.js","webpack://PersianDate/./src/add-sub/addDay.js","webpack://PersianDate/./src/add-sub/addQuarter.js","webpack://PersianDate/./src/add-sub/addWeek.js","webpack://PersianDate/./src/add-sub/addHour.js","webpack://PersianDate/./src/add-sub/addMinute.js","webpack://PersianDate/./src/add-sub/addSecond.js","webpack://PersianDate/./src/add-sub/addMillisecond.js","webpack://PersianDate/./src/add-sub/subYear.js","webpack://PersianDate/./src/add-sub/subMonth.js","webpack://PersianDate/./src/add-sub/subDay.js","webpack://PersianDate/./src/add-sub/subQuarter.js","webpack://PersianDate/./src/add-sub/subWeek.js","webpack://PersianDate/./src/add-sub/subHour.js","webpack://PersianDate/./src/add-sub/subMinute.js","webpack://PersianDate/./src/add-sub/subSecond.js","webpack://PersianDate/./src/add-sub/subMillisecond.js","webpack://PersianDate/./src/conversion/toString.js","webpack://PersianDate/./src/conversion/toArray.js","webpack://PersianDate/./src/conversion/toObject.js","webpack://PersianDate/./src/conversion/toDate.js","webpack://PersianDate/./src/diff/diff.js","webpack://PersianDate/./src/diff/diffForHumans.js","webpack://PersianDate/./src/PersianDate.js","webpack://PersianDate/./src/base/compare.js","webpack://PersianDate/./src/base/gtj.js","webpack://PersianDate/./src/base/jtg.js","webpack://PersianDate/./src/base/warn.js","webpack://PersianDate/./src/base/invalid.js","webpack://PersianDate/./src/base/typesToArray.js","webpack://PersianDate/./src/base/ordinalNumber.js","webpack://PersianDate/./src/base/addPrefix.js","webpack://PersianDate/./src/base/setJalaliDate.js","webpack://PersianDate/./src/base/setGregorianDate.js","webpack://PersianDate/./src/base/error.js","webpack://PersianDate/./src/base/getDayLabel.js","webpack://PersianDate/./src/base/getDayOfWeek.js","webpack://PersianDate/./src/base/getDayOfYear.js","webpack://PersianDate/./src/base/getWeekOfYear.js","webpack://PersianDate/./src/base/mathOperation.js","webpack://PersianDate/./src/base/isTimestamp.js","webpack://PersianDate/./src/comparison/isPersianDate.js","webpack://PersianDate/./src/comparison/isValid.js","webpack://PersianDate/./src/comparison/isValidDate.js","webpack://PersianDate/./src/comparison/isValidTime.js","webpack://PersianDate/./src/comparison/isSame.js","webpack://PersianDate/./src/comparison/isBetween.js","webpack://PersianDate/./src/comparison/isDate.js","webpack://PersianDate/./src/comparison/isLeapYear.js","webpack://PersianDate/./src/set-get/year.js","webpack://PersianDate/./src/set-get/quarter.js","webpack://PersianDate/./src/set-get/month.js","webpack://PersianDate/./src/set-get/week.js","webpack://PersianDate/./src/set-get/date.js","webpack://PersianDate/./src/set-get/hour.js","webpack://PersianDate/./src/set-get/minute.js","webpack://PersianDate/./src/set-get/second.js","webpack://PersianDate/./src/set-get/millisecond.js","webpack://PersianDate/./src/set-get/timestamp.js","webpack://PersianDate/./src/set-get/getDaysInMonth.js","webpack://PersianDate/./src/set-get/getWeeksInYear.js","webpack://PersianDate/./src/set-get/startOf.js","webpack://PersianDate/./src/set-get/endOf.js","webpack://PersianDate/./src/set-get/time.js","webpack://PersianDate/./src/utils.js","webpack://PersianDate/webpack/bootstrap","webpack://PersianDate/webpack/runtime/define property getters","webpack://PersianDate/webpack/runtime/hasOwnProperty shorthand","webpack://PersianDate/webpack/startup"],"names":["root","factory","exports","module","define","amd","global","now","date","Date","this","c","parse","fromJalali","fromGregorian","clone","Object","assign","create","getPrototypeOf","JSON","stringify","length","d","year","month","hour","minute","second","millisecond","isValid","isPersianDate","calendar","toArray","getTime","error","toDate","addYear","checkDate","subYear","Math","abs","isValidDate","subDay","addMonth","subMonth","monthToStartNewYear","addDay","day","dayToStartNextMonth","getDaysInMonth","daysInMonth","addQuarter","quarter","subQuarter","addWeek","week","subWeek","addHour","subHour","hourToNextDay","addMinute","subMinute","minuteToNextHour","addSecond","subSecond","secondToNextMinute","addMillisecond","subMillisecond","millisecondToNextSecond","pastMonth","pastDays","pastHours","pastMinute","pastSeconds","pastMilliseconds","format","rawTexts","replace","_matched","text","push","jalali","gregorian","matchedFormats","match","dateString","i","substring","indexOf","search","timestamp","substr","String","arguments","values","formats","toObject","diff","unit","addOne","result","ceil","diffForHumans","suffix","prefix","round","PersianDate","dateVal","calendarVal","prototype","call","setDate","value","valueOf","getWeeksInYear","startOf","endOf","time","toString","min","max","isLeapYear","isValidTime","isSame","isBefore","isAfter","isSameOrBefore","isSameOrAfter","isBetween","from","to","method","isDate","compare","operator","eval","gtj","jYear","jMonth","jDay","getDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","newYear","days","parseInt","jtg","gYear","gMonth","gDay","daysOfMonths","v","warn","msg","console","invalid","errorText","typesToArray","split","Array","isArray","y","years","M","months","h","hours","m","minutes","s","seconds","ms","milliseconds","ordinalNumber","number","mode","ordinalNumbers","addPrefix","repeat","setJalaliDate","setGregorianDate","getDayLabel","getDay","getDayOfWeek","getDayOfYear","getWeekOfYear","firstOfYear","firstOfYearDay","dayOfYearFormat","weekNumber","weeksInYear","mathOperation","operation","args","argsNumber","map","includes","isTimestamp","isNaN","floor","some","e","trim","getDefaultFormat","slice","jQuarter","gQuarter","weekOfYear","jWeekOfYear","gWeekOfYear","jDate","gDate","dayOfWeek","dayOfYear","getDayOfYearFormat","lastOfYear","lastOfYearDay","t","times","CALENDAR","1","2","3","4","5","6","7","8","9","10","11","12","label","0","numbers","13","14","15","16","17","18","19","20","30","40","50","60","70","80","90","100","200","300","remainder","REGEX","isNumeric","separators","betweenBacktick","TIMETYPE","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","definition","key","o","defineProperty","enumerable","get","obj","prop","hasOwnProperty","__webpack_exports__"],"mappings":"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","file":"PersianDate.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PersianDate\"] = factory();\n\telse\n\t\troot[\"PersianDate\"] = factory();\n})(global, function() {\nreturn ","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function now() {\n\tconst date = new Date();\n\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\n\treturn this;\n}\n","export function parse(...date) {\n\tif (this.c == \"jalali\") {\n\t\treturn this.fromJalali(...date);\n\t} else {\n\t\treturn this.fromGregorian(...date);\n\t}\n}\n","export function clone() {\n\treturn Object.assign(\n\t\tObject.create(Object.getPrototypeOf(this)),\n\t\tJSON.parse(JSON.stringify(this))\n\t);\n}\n","import { typesToArray, gtj, jtg, setGregorianDate, invalid } from \"../base\";\n\nexport function fromJalali(...date) {\n\tif (!date.length) date = gtj();\n\telse date = typesToArray(\"jalali\", ...date);\n\n\tif (this.c == \"jalali\") {\n\t\tthis.d.year = +date[0];\n\t\tthis.d.month = +date[1] || 1;\n\t\tthis.d.date = +date[2] || 1;\n\t\tthis.d.hour = +date[3] || 0;\n\t\tthis.d.minute = +date[4] || 0;\n\t\tthis.d.second = +date[5] || 0;\n\t\tthis.d.millisecond = +date[6] || 0;\n\t} else {\n\t\tsetGregorianDate.call(this, jtg(...date));\n\t}\n\n\tif (!this.isValid()) return invalid.call(this, \"تاریخ نامعتبر\");\n\treturn this;\n}\n","import {\n\ttypesToArray,\n\tsetGregorianDate,\n\tsetJalaliDate,\n\tinvalid,\n\tisTimestamp,\n} from \"../base\";\nimport { isValid } from \"../comparison\";\n\nexport function fromGregorian(...date) {\n\tif (!date.length) date[0] = new Date().getTime();\n\telse if (this.isPersianDate(date[0])) {\n\t\tdate = date[0].clone().calendar(\"g\").toArray();\n\t} else if (!isTimestamp(date[0])) {\n\t\tdate = typesToArray(\"gregorian\", ...date);\n\t\tdate[6] = +date[6] || 0;\n\t\tdate[5] = +date[5] || 0;\n\t\tdate[4] = +date[4] || 0;\n\t\tdate[3] = +date[3] || 0;\n\t\tdate[2] = +date[2] || 1;\n\t\tdate[1] = +date[1] || 1;\n\t\tdate[0] = +date[0];\n\t}\n\n\tif (date.length > 1) {\n\t\tif (!isValid(\"gregorian\", ...date))\n\t\t\treturn invalid.call(this, \"تاریخ نامعتبر\");\n\t\t--date[1]; // this is month; becuse the Date get month from 0, subtract one\n\t}\n\n\tdate = new Date(...date);\n\tif (date == \"Invalid Date\") return invalid.call(this, \"تاریخ نامعتبر\");\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\treturn this;\n}\n","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function calendar(c) {\n\tif (!c) return this.c;\n\n\tif (c[0] == \"j\" && this.c[0] != \"j\") {\n\t\tif (!this.error) setJalaliDate.call(this, this.toDate());\n\t\tthis.c = \"jalali\";\n\t} else if (c[0] == \"g\" && this.c[0] != \"g\") {\n\t\tif (!this.error) setGregorianDate.call(this, this.toDate());\n\t\tthis.c = \"gregorian\";\n\t}\n\n\treturn this;\n}\n","export function addYear(year, checkDate) {\n\t// if the number was negative, send to subYear method\n\tif (year < 0) return this.subYear(Math.abs(year));\n\tthis.d.year += +year; //plus sign before a variable, convert variable to int\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function addMonth(month, checkDate) {\n\tif (month < 0)\n\t\t// if the number was negative, send to subMonth method\n\t\treturn this.subMonth(Math.abs(month));\n\tmonth = +month; // plus sign before a variable, convert variable to int\n\n\tconst monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year\n\tif (monthToStartNewYear > month) {\n\t\tthis.d.month += month;\n\t} else {\n\t\tthis.addYear(1, false);\n\t\tthis.d.month = 1;\n\t\tmonth -= monthToStartNewYear;\n\t\twhile (month >= 12) {\n\t\t\tmonth -= 12;\n\t\t\tthis.addYear(1, false);\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month += month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function addDay(day) {\n\tif (day < 0)\n\t\t// if the number was negative, send to subDay method\n\t\treturn this.subDay(Math.abs(day));\n\tday = +day; //plus sign before a variable, convert variable to int\n\n\tconst dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month\n\tif (dayToStartNextMonth > day) {\n\t\tthis.d.date += day;\n\t} else {\n\t\tthis.addMonth(1, false);\n\t\tthis.d.date = 1;\n\t\tday -= dayToStartNextMonth;\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.addMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tif (day != 0) {\n\t\t\tthis.d.date += day;\n\t\t}\n\t}\n\n\treturn this;\n}\n","export function addQuarter(quarter, checkDate) {\n\t// if the number was negative, send to subQuarter method\n\tif (quarter < 0) return this.subQuarter(Math.abs(quarter));\n\treturn this.addMonth(+quarter * 3, checkDate);\n}\n","export function addWeek(week, checkDate) {\n\t// if the number was negative, send to subWeek method\n\tif (week < 0) return this.subWeek(Math.abs(week));\n\treturn this.addDay(+week * 7, checkDate);\n}\n","export function addHour(hour) {\n\tif (hour < 0)\n\t\t// if the number was negative, send to subHour method\n\t\treturn this.subHour(Math.abs(hour));\n\thour = +hour; //plus sign before a variable, convert variable to int\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.addDay(1, false);\n\t}\n\tconst hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day\n\tif (hour >= hourToNextDay) {\n\t\tthis.addDay(1, false);\n\t\thour -= hourToNextDay;\n\t\tthis.d.hour = hour;\n\t} else this.d.hour += hour;\n\n\treturn this;\n}\n","export function addMinute(minute) {\n\tif (minute < 0)\n\t\t// if the number was negative, send to subMinute method\n\t\treturn this.subMinute(Math.abs(minute));\n\tminute = +minute; //plus sign before a variable, convert variable to int\n\twhile (minute >= 60) {\n\t\tthis.addHour(1, false);\n\t\tminute -= 60;\n\t}\n\tconst minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour\n\tif (minute >= minuteToNextHour) {\n\t\tthis.addHour(1, false);\n\t\tminute -= minuteToNextHour;\n\t\tthis.d.minute = minute;\n\t} else this.d.minute += minute;\n\n\treturn this;\n}\n","export function addSecond(second) {\n\tif (second < 0)\n\t\t// if the number was negative, send to subSecond method\n\t\treturn this.subSecond(Math.abs(second));\n\tsecond = +second; //plus sign before a variable, convert variable to int\n\twhile (second >= 60) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= 60;\n\t}\n\tconst secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute\n\tif (second >= secondToNextMinute) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= secondToNextMinute;\n\t\tthis.d.second = second;\n\t} else this.d.second += second;\n\n\treturn this;\n}\n","export function addMillisecond(millisecond) {\n\tif (millisecond < 0)\n\t\t// if the number was negative, send to subMillisecond method\n\t\treturn this.subMillisecond(Math.abs(millisecond));\n\tmillisecond = +millisecond; //plus sign before a variable, convert variable to int\n\twhile (millisecond >= 1000) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= 1000;\n\t}\n\tconst millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second\n\tif (millisecond >= millisecondToNextSecond) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= millisecondToNextSecond;\n\t\tthis.d.millisecond = millisecond;\n\t} else this.d.millisecond += millisecond;\n\n\treturn this;\n}\n","export function subYear(year, checkDate) {\n\tthis.d.year -= Math.abs(year);\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function subMonth(month, checkDate) {\n\tmonth = Math.abs(month); //plus sign before a variable, convert variable to int\n\tconst pastMonth = this.d.month; //pastMonth -> Number of month that is past\n\tif (pastMonth > month) {\n\t\tthis.d.month -= month;\n\t} else {\n\t\tthis.subYear(1, false);\n\t\tthis.d.month = 12;\n\t\tmonth -= pastMonth;\n\t\twhile (month >= 12) {\n\t\t\tthis.subYear(1, false);\n\t\t\tmonth -= 12;\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month -= month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function subDay(day) {\n\tday = Math.abs(day);\n\tlet pastDays = this.d.date; // pastDays -> Number of days that is past\n\tif (pastDays > day) {\n\t\tthis.d.date -= day;\n\t} else {\n\t\tthis.subMonth(1, false);\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\tthis.d.date = daysInMonth;\n\t\tday -= pastDays;\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.subMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tthis.d.date = daysInMonth - day;\n\t}\n\n\treturn this;\n}\n","export function subQuarter(quarter, checkDate) {\n\tquarter = Math.abs(quarter);\n\treturn this.subMonth(quarter * 3, checkDate);\n}\n","export function subWeek(week, checkDate) {\n\tweek = Math.abs(week);\n\treturn this.subDay(week * 7, checkDate);\n}\n","export function subHour(hour) {\n\thour = Math.abs(hour);\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.subDay(1, false);\n\t}\n\tconst pastHours = this.d.hour; // pastHours -> Number of hours that is past\n\tif (hour > pastHours) {\n\t\tthis.subDay(1, false);\n\t\thour -= pastHours;\n\t\tthis.d.hour = 24 - hour;\n\t} else this.d.hour -= hour;\n\n\treturn this;\n}\n","export function subMinute(minute) {\n\tminute = Math.abs(minute);\n\twhile (minute >= 60) {\n\t\tminute -= 60;\n\t\tthis.subHour(1, false);\n\t}\n\tconst pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past\n\tif (minute > pastMinute) {\n\t\tthis.subHour(1, false);\n\t\tminute -= pastMinute;\n\t\tthis.d.minute = 60 - minute;\n\t} else this.d.minute -= minute;\n\n\treturn this;\n}\n","export function subSecond(second) {\n\tsecond = Math.abs(second);\n\twhile (second >= 60) {\n\t\tsecond -= 60;\n\t\tthis.subMinute(1, false);\n\t}\n\tconst pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past\n\tif (second > pastSeconds) {\n\t\tthis.subMinute(1, false);\n\t\tsecond -= pastSeconds;\n\t\tthis.d.second = 60 - second;\n\t} else this.d.second -= second;\n\n\treturn this;\n}\n","export function subMillisecond(millisecond) {\n\tmillisecond = Math.abs(millisecond);\n\twhile (millisecond >= 1000) {\n\t\tmillisecond -= 1000;\n\t\tthis.subSecond(1, false);\n\t}\n\tconst pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past\n\tif (millisecond > pastMilliseconds) {\n\t\tthis.subSecond(1, false);\n\t\tmillisecond -= pastMilliseconds;\n\t\tthis.d.millisecond = 1000 - millisecond;\n\t} else this.d.millisecond -= millisecond;\n\n\treturn this;\n}\n","import { REGEX, TIMETYPE } from \"../utils\";\n\nconst jalali = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"j\")\n\t\t.replace(/datetime/gi, \"jYYYY/jMM/jDD HH:mm\")\n\t\t.replace(/date/gi, \"jYYYY/jMM/jDD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nconst gregorian = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"\")\n\t\t.replace(/datetime/gi, \"YYYY-MM-DD HH:mm\")\n\t\t.replace(/date/gi, \"YYYY-MM-DD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nexport function toString(format) {\n\tconst rawTexts = [];\n\tformat = format.replace(REGEX[\"betweenBacktick\"], (_matched, text) => {\n\t\trawTexts.push(text);\n\t\treturn \"###\";\n\t});\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\tformat = jalali(format);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tformat = gregorian(format);\n\t}\n\tconst matchedFormats = format.match(REGEX[\"format\"]);\n\tlet dateString = \"\";\n\tfor (const i of matchedFormats) {\n\t\tdateString += format.substring(0, format.indexOf(i));\n\n\t\tif (i.search(/Y|y/) != -1) dateString += this.year(i);\n\t\telse if (i.search(/M/) != -1) dateString += this.month(i);\n\t\telse if (i.search(/Q/) != -1) dateString += this.quarter(i);\n\t\telse if (i.search(/D|d/) != -1) dateString += this.date(i);\n\t\telse if (i.search(/W|w/) != -1) dateString += this.week(i);\n\t\telse if (i.search(/H|h|k/) != -1) dateString += this.hour(i);\n\t\telse if (i.search(/m/) != -1) dateString += this.minute(i);\n\t\telse if (i.search(/s/) != -1) dateString += this.second(i);\n\t\telse if (i.search(/c|C/) != -1) dateString += this.millisecond(i);\n\t\telse if (i.search(/t/) != -1) dateString += this.timestamp();\n\t\telse if (i.search(/a|A/) != -1) dateString += TIMETYPE(this.d.hour, i);\n\n\t\tformat = format.substr(format.indexOf(i) + i.length);\n\t}\n\tdateString += format;\n\tfor (let i = 0; i < rawTexts.length; i++)\n\t\tdateString = dateString.replace(\"###\", rawTexts[i]);\n\treturn String(dateString);\n}\n","import { typesToArray } from \"../base\";\n\nexport function toArray() {\n\tif (!arguments.length) {\n\t\treturn Object.values(this.d);\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn [\n\t\tthis.year(formats[0]),\n\t\tthis.month(formats[1]),\n\t\tthis.date(formats[2]),\n\t\tthis.hour(formats[3]),\n\t\tthis.minute(formats[4]),\n\t\tthis.second(formats[5]),\n\t\tthis.millisecond(formats[6]),\n\t];\n}\n","import { typesToArray } from \"../base\";\n\nexport function toObject() {\n\tif (!arguments.length) {\n\t\treturn this.d;\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn {\n\t\tyear: this.year(formats[0]),\n\t\tmonth: this.month(formats[1]),\n\t\tdate: this.date(formats[2]),\n\t\thour: this.hour(formats[3]),\n\t\tminute: this.minute(formats[4]),\n\t\tsecond: this.second(formats[5]),\n\t\tmillisecond: this.millisecond(formats[6]),\n\t};\n}\n","import { jtg } from \"../base\";\n\nconst jalali = (date) => {\n\treturn jtg(...date);\n};\n\nconst gregorian = (date) => {\n\t--date[1];\n\treturn new Date(...date);\n};\n\nexport function toDate() {\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(this.toArray());\n\t\tdefault:\n\t\t\treturn gregorian(this.toArray());\n\t}\n}\n","import { typesToArray } from \"../base\";\n\nexport function diff(date, unit, addOne) {\n\tdate = typesToArray(this.c, date);\n\tif (!this.isValid(...date)) return \"تاریخ نامعتبر\";\n\tlet result =\n\t\tthis.timestamp() -\n\t\tthis.clone()\n\t\t\t.parse(...date)\n\t\t\t.timestamp();\n\tswitch (unit) {\n\t\tcase \"y\":\n\t\tcase \"year\":\n\t\tcase \"years\":\n\t\t\tresult = this.d.year - date[0];\n\t\t\tbreak;\n\t\tcase \"M\":\n\t\tcase \"month\":\n\t\tcase \"months\":\n\t\t\tresult = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]);\n\t\t\tbreak;\n\t\tcase \"d\":\n\t\tcase \"date\":\n\t\tcase \"day\":\n\t\tcase \"days\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60 / 24);\n\t\t\tbreak;\n\t\tcase \"h\":\n\t\tcase \"hour\":\n\t\tcase \"hours\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60);\n\t\t\tbreak;\n\t\tcase \"m\":\n\t\tcase \"minute\":\n\t\tcase \"minutes\":\n\t\t\tresult = Math.ceil(result / 1000 / 60);\n\t\t\tbreak;\n\t\tcase \"s\":\n\t\tcase \"second\":\n\t\tcase \"seconds\":\n\t\t\tresult = Math.ceil(result / 1000);\n\t\t\tbreak;\n\t\tcase \"ms\":\n\t\tcase \"millisecond\":\n\t\tcase \"milliseconds\":\n\t}\n\treturn addOne ? result + (result >= 0 ? 1 : -1) : result;\n}\n","export function diffForHumans(date, suffix) {\n\tlet result = this.diff(date, \"s\");\n\tif (typeof result == \"string\") return \"تاریخ نامعتبر\";\n\n\tconst prefix = suffix && (result > 0 ? \"آینده\" : \"پیش\");\n\tresult = Math.abs(result);\n\n\tif (result == 0) return \"هم اکنون\";\n\telse if (result < 45) result = \"لحظات\";\n\telse if ((result /= 60) < 45)\n\t\t// divide by 60, for getting minute\n\t\tresult = Math.round(result) + \" \" + \"دقیقه\";\n\telse if ((result /= 60) < 23.5)\n\t\t// divide by 60, for getting hour\n\t\tresult = Math.round(result) + \" \" + \"ساعت\";\n\telse if ((result /= 24) < 26)\n\t\t// divide by 24, for getting day\n\t\tresult = Math.round(result) + \" \" + \"روز\";\n\telse if (result < 320) result = Math.round(result / 30) + \" \" + \"ماه\";\n\telse result = Math.round(result / 365) + \" \" + \"سال\";\n\treturn result + (suffix ? \" \" + prefix : \"\");\n}\n","////////////////////---------- Are You Ready? ----------////////////////////\n////////////////////------------- Let's Go -------------////////////////////\n////////////////////---- Read Comments And Enjoy It ----////////////////////\n\n////////////////////------------- ATTENTION -------------////////////////////\n// In the first, I'm must say, in the all of the project, //\n// g means Gregorian and j means Jalali //\n/////////////////////////////////////////////////////////////////////////////\nimport { warn, compare, mathOperation } from \"./base\";\n\nimport {\n\tnow,\n\tparse,\n\tclone,\n\tfromJalali,\n\tfromGregorian,\n\tcalendar as calendarMethod,\n} from \"./create\";\n\nimport {\n\tyear as yearMethod,\n\tquarter as quarterMethod,\n\tmonth as monthMethod,\n\tweek as weekMethod,\n\tdate as dateMethod,\n\thour as hourMethod,\n\tminute as minuteMethod,\n\tsecond as secondMethod,\n\tmillisecond as millisecondMethod,\n\ttimestamp,\n\tgetDaysInMonth,\n\tgetWeeksInYear,\n\tstartOf,\n\tendOf,\n\ttime,\n} from \"./set-get\";\n\nimport {\n\taddYear,\n\taddQuarter,\n\taddMonth,\n\taddWeek,\n\taddDay,\n\taddHour,\n\taddMinute,\n\taddSecond,\n\taddMillisecond,\n\tsubYear,\n\tsubQuarter,\n\tsubMonth,\n\tsubWeek,\n\tsubDay,\n\tsubHour,\n\tsubMinute,\n\tsubSecond,\n\tsubMillisecond,\n} from \"./add-sub\";\n\nimport { toString, toArray, toObject, toDate } from \"./conversion\";\n\nimport {\n\tisLeapYear,\n\tisDate,\n\tisPersianDate,\n\tisValidDate,\n\tisValidTime,\n\tisValid,\n\tisSame,\n\tisBetween,\n} from \"./comparison\";\n\nimport { diff, diffForHumans } from \"./diff\";\n\n/**\n * A Date library for working with persian date\n * @class\n * @param {Date|Array|Null|Object|String} date - the date that convert to persian date\n * @param {String} [calendar='jalali'] - the calendar\n */\nconst PersianDate = function (dateVal, calendarVal) {\n\t\"use strict\";\n\n\t/**\n\t * keeps the date and time\n\t * @type {Object}\n\t * @property {Number} year - the year of date\n\t * @property {Number} month - the month of date\n\t * @property {Number} date - the day of month of date\n\t * @property {Number} hour - the hour of time\n\t * @property {Number} minute - the minute of time\n\t * @property {Number} second - the second of time\n\t * @property {Number} millisecond - the millisecond of time\n\t * @property {Number} gregorian - the gregorian date\n\t */\n\tthis.d = {};\n\n\t/**\n\t * the calendar type\n\t * @type {String}\n\t * @default \"jalali\"\n\t * @example jalali | gregorian\n\t */\n\tthis.c = \"jalali\";\n\n\t////////////////////--------- create & parse ---------/////////////////////\n\n\t/**\n\t * make current date in persian calendar\n\t * @returns {PersianDate} make current date and return class\n\t */\n\tPersianDate.prototype.now = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn now.call(this);\n\t};\n\n\t/**\n\t * set persian date from Gregorian date\n\t * @deprecated\n\t * @param {...Number|Date|Array|Null} date - the date that convert to persian date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate|String} if date invalid return class with error property with error property\n\t */\n\tPersianDate.prototype.setDate = function () {\n\t\twarn(\n\t\t\t'\"setDate\" function is deprecated! use \"fromGregorian\" function instead.\\n' +\n\t\t\t\t\"https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date\"\n\t\t);\n\t\treturn this.fromGregorian(...arguments);\n\t};\n\n\t/**\n\t * convert a jalali or gregorian date to PersianDate instance\n\t * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.parse = function () {\n\t\treturn parse.call(this, ...arguments);\n\t};\n\n\t/**\n\t * get clone of this date\n\t * @since 1.1.0\n\t * @returns {PersianDate} returns the clone of this date\n\t */\n\tPersianDate.prototype.clone = function () {\n\t\treturn clone.call(this);\n\t};\n\n\t/**\n\t * convert a jalali date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromJalali = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromJalali.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromGregorian = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromGregorian.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {\"j\"|\"jalali\"|\"g\"|\"gregorian\"} calendar - the calendar\n\t * @returns {PersianDate} return class with persian date\n\t */\n\tPersianDate.prototype.calendar = function (calendar) {\n\t\treturn calendarMethod.call(this, calendar);\n\t};\n\n\t////////////////////--------- set & get ---------/////////////////////\n\n\t/**\n\t * get or set year\n\t * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the year, returns class,\n\t * else returns a number or string from year\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.year = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn yearMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set month\n\t * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the month, returns class,\n\t * else returns a number or string from month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.month = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn monthMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set day in month\n\t * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the day, returns class,\n\t * else returns a number or string from day\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.date = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn dateMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set quarter\n\t * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the quarter, returns class,\n\t * else returns a number or string from quarter\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.quarter = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn quarterMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set week\n\t * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the week, returns class,\n\t * else returns a number or string from week\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.week = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn weekMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set hour\n\t * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the hour, returns class,\n\t * else returns a number or string from hour\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.hour = function (format = \"H\") {\n\t\tif (this.error) return this.error;\n\t\treturn hourMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set minute\n\t * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the minute, returns class,\n\t * else returns a number or string from minute\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.minute = function (format = \"m\") {\n\t\tif (this.error) return this.error;\n\t\treturn minuteMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set second\n\t * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the second, returns class,\n\t * else returns a number or string from second\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.second = function (format = \"s\") {\n\t\tif (this.error) return this.error;\n\t\treturn secondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set millisecond\n\t * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the millisecond, returns class,\n\t * else returns a number or string from millisecond\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.millisecond = function (format = \"c\") {\n\t\tif (this.error) return this.error;\n\t\treturn millisecondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get timestamp or set date from timestamp\n\t * @param {Null|Number|String} value - a number for set the millisecond\n\t * @returns {PersianDate|Number} if set the timestamp, returns class,\n\t * else returns timestamp (number)\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.timestamp = function (value) {\n\t\tif (this.error) return this.error;\n\t\treturn timestamp.call(this, value);\n\t};\n\n\tPersianDate.prototype.valueOf = function () {\n\t\treturn this.timestamp();\n\t};\n\n\t/**\n\t * returns number of days in month\n\t * @param {?Number} year - year of date that returns number of days in month\n\t * @param {?Number} month - month of date that returns number of days in month\n\t * @returns {Number} number of days in month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.getDaysInMonth = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month\n\t) {\n\t\tif (this.error) return this.error;\n\t\treturn getDaysInMonth(this.c, year, month);\n\t};\n\n\t/**\n\t * return number of weeks in year\n\t * @since 2.0.0\n\t * @param {Number|String} year - the year\n\t * @returns {Number} number of weeks in year\n\t */\n\tPersianDate.prototype.getWeeksInYear = function (year = this.d.year) {\n\t\tif (this.error) return this.error;\n\t\treturn getWeeksInYear.call(this, year);\n\t};\n\n\t/**\n\t * change the date to start of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.startOf = function (unit = \"year\") {\n\t\treturn startOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the date to end of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.endOf = function (unit = \"year\") {\n\t\treturn endOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the time\n\t * @since 2.3.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} time - the new time\n\t * @param {Null|String|Number} time.h - hour of date\n\t * @param {Null|String|Number} time.hour - hour of date\n\t * @param {Null|String|Number} time.hours - hour of date\n\t * @param {Null|String|Number} time.m - minute of date\n\t * @param {Null|String|Number} time.minute - minute of date\n\t * @param {Null|String|Number} time.minutes - minute of date\n\t * @param {Null|String|Number} time.s - second of date\n\t * @param {Null|String|Number} time.second - second of date\n\t * @param {Null|String|Number} time.seconds - second of date\n\t * @param {Null|String|Number} time.ms - millisecond of date\n\t * @param {Null|String|Number} time.millisecond - millisecond of date\n\t * @param {Null|String|Number} time.milliseconds - millisecond of date\n\t * @returns {PersianDate|Array} if set the time, returns class,\n\t * else returns an array of time\n\t * @throws {String} if time invalid return error text\n\t */\n\tPersianDate.prototype.time = function () {\n\t\tif (this.error) return this.error;\n\t\treturn time.call(this, ...arguments);\n\t};\n\n\t////////////////////--------- add & sub ---------/////////////////////\n\n\t/**\n\t * add to year\n\t * @param {?Number|String} [year=1] - a number for add with year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn addYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * add to month\n\t * @param {?Number|String} [month=1] - a number for add with month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn addMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * add to day\n\t * @param {?Number|String} [day=1] - a number for add with day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn addDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * add to quarter\n\t * @param {?Number|String} [quarter=1] - a number for add with quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn addQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * add to week\n\t * @param {?Number|String} [week=1] - a number for add with week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn addWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * add to hour\n\t * @param {?Number|String} [hour=1] - a number for add with hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn addHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * add to minute\n\t * @param {?Number|String} [minute=1] - a number for add with minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn addMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * add to second\n\t * @param {?Number|String} [second=1] - a number for add with second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn addSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * add to millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for add with millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn addMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t/**\n\t * subtract from year\n\t * @param {?Number|String} [year=1] - a number for subtract from year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn subYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * subtract from month\n\t * @param {?Number|String} [month=1] - a number for subtract from month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn subMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * subtract from day\n\t * @param {?Number|String} [day=1] - a number for subtract from day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn subDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * subtract from quarter\n\t * @param {?Number|String} [quarter=1] - a number for subtract from quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn subQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * subtract from week\n\t * @param {?Number|String} [week=1] - a number for subtract from week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn subWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * subtract from hour\n\t * @param {?Number|String} [hour=1] - a number for subtract from hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn subHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * subtract from minute\n\t * @param {?Number|String} [minute=1] - a number for subtract from minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn subMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * subtract from second\n\t * @param {?Number|String} [second=1] - a number for subtract from second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn subSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * subtract from millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn subMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t////////////////////--------- conversion ---------/////////////////////\n\n\t/**\n\t * returns date as string with specify format\n\t * @param {?String} [format=date] - formatting date to string\n\t * @returns {String} date string\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toString = function (format = \"date\") {\n\t\tif (this.error) return this.error;\n\t\treturn toString.call(this, format);\n\t};\n\n\t/**\n\t * return the array of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return array of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toArray = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toArray.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the object of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return Object of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toObject = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toObject.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the Date instance of PersianDate\n\t * @since 2.0.0\n\t * @returns {Date} if date valid, return Date instance of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toDate = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toDate.call(this);\n\t};\n\n\t////////////////////--------- diff ---------/////////////////////\n\n\t/**\n\t * get the diffrence between two date\n\t * @since 1.4.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {String} unit - the unit of the measurment\n\t * @param {Boolean} addOne - add one day to result\n\t * @returns {Number} diffrence\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diff = function (date, unit, addOne = false) {\n\t\tif (this.error) return this.error;\n\t\treturn diff.call(this, date, unit, addOne);\n\t};\n\n\t/**\n\t * get the diffrence between two date in a human-readable format\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {Boolean} suffix - add suffix or not\n\t * @returns {String} if date valid, return diff human-readable format\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diffForHumans = function (date, suffix = true) {\n\t\tif (this.error) return this.error;\n\t\treturn diffForHumans.call(this, date, suffix);\n\t};\n\n\t////////////////////--------- comparison ---------/////////////////////\n\n\t/**\n\t * returns minimum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return minimum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.min = function () {\n\t\treturn mathOperation.call(this, arguments, \"min\");\n\t};\n\n\t/**\n\t * returns maximum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return maximum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.max = function () {\n\t\treturn mathOperation.call(this, arguments, \"max\");\n\t};\n\n\t/**\n\t * receives year and determined that is leap year or not\n\t * @param {?Number} year - the year to be determined is a leap or not\n\t * @returns {Boolean} if is leap year, returns true\n\t */\n\tPersianDate.prototype.isLeapYear = function (year = this.d.year) {\n\t\tif (this.error) return false;\n\t\treturn isLeapYear(this.c, year);\n\t};\n\n\t/**\n\t * checks the persian date and time\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid, returns true\n\t */\n\tPersianDate.prototype.isValid = function (\n\t\tyear,\n\t\tmonth,\n\t\tday,\n\t\thour,\n\t\tminute,\n\t\tsecond,\n\t\tmillisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn (\n\t\t\tthis.isValidDate(year, month, day) &&\n\t\t\tthis.isValidTime(hour, minute, second, millisecond)\n\t\t);\n\t};\n\n\t/**\n\t * checks the persian date\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @returns {Boolean} if is valid date, returns true\n\t */\n\tPersianDate.prototype.isValidDate = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month,\n\t\tday = this.d.date\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidDate(this.c, year, month, day);\n\t};\n\n\t/**\n\t * checks the time\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid time, returns true\n\t */\n\tPersianDate.prototype.isValidTime = function (\n\t\thour = this.d.hour,\n\t\tminute = this.d.minute,\n\t\tsecond = this.d.second,\n\t\tmillisecond = this.d.millisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidTime(hour, minute, second, millisecond);\n\t};\n\n\t/**\n\t * checks this date is the same to another date\n\t * @since 1.1.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSame = function () {\n\t\tif (this.error) return false;\n\t\treturn isSame.call(this, ...arguments);\n\t};\n\n\t/**\n\t * checks this date is before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<\");\n\t};\n\n\t/**\n\t * checks this date is after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">\");\n\t};\n\n\t/**\n\t * checks this date is same or before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<=\");\n\t};\n\n\t/**\n\t * checks this date is same or after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">=\");\n\t};\n\n\t/**\n\t * checks this date is between the another dates\n\t * @since 1.3.0\n\t * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} from.y - year of date\n\t * @param {Null|String|Number} from.year - year of date\n\t * @param {Null|String|Number} from.years - year of date\n\t * @param {Null|String|Number} from.M - month of date\n\t * @param {Null|String|Number} from.month - month of date\n\t * @param {Null|String|Number} from.months - month of date\n\t * @param {Null|String|Number} from.d - day of date\n\t * @param {Null|String|Number} from.day - day of date\n\t * @param {Null|String|Number} from.days - day of date\n\t * @param {Null|String|Number} from.date - day of date\n\t * @param {Null|String|Number} from.h - hour of date\n\t * @param {Null|String|Number} from.hour - hour of date\n\t * @param {Null|String|Number} from.hours - hour of date\n\t * @param {Null|String|Number} from.m - minute of date\n\t * @param {Null|String|Number} from.minute - minute of date\n\t * @param {Null|String|Number} from.minutes - minute of date\n\t * @param {Null|String|Number} from.s - second of date\n\t * @param {Null|String|Number} from.second - second of date\n\t * @param {Null|String|Number} from.seconds - second of date\n\t * @param {Null|String|Number} from.ms - millisecond of date\n\t * @param {Null|String|Number} from.millisecond - millisecond of date\n\t * @param {Null|String|Number} from.milliseconds - millisecond of date\n\t * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} to.y - year of date\n\t * @param {Null|String|Number} to.year - year of date\n\t * @param {Null|String|Number} to.years - year of date\n\t * @param {Null|String|Number} to.M - month of date\n\t * @param {Null|String|Number} to.month - month of date\n\t * @param {Null|String|Number} to.months - month of date\n\t * @param {Null|String|Number} to.d - day of date\n\t * @param {Null|String|Number} to.day - day of date\n\t * @param {Null|String|Number} to.days - day of date\n\t * @param {Null|String|Number} to.date - day of date\n\t * @param {Null|String|Number} to.h - hour of date\n\t * @param {Null|String|Number} to.hour - hour of date\n\t * @param {Null|String|Number} to.hours - hour of date\n\t * @param {Null|String|Number} to.m - minute of date\n\t * @param {Null|String|Number} to.minute - minute of date\n\t * @param {Null|String|Number} to.minutes - minute of date\n\t * @param {Null|String|Number} to.s - second of date\n\t * @param {Null|String|Number} to.second - second of date\n\t * @param {Null|String|Number} to.seconds - second of date\n\t * @param {Null|String|Number} to.ms - millisecond of date\n\t * @param {Null|String|Number} to.millisecond - millisecond of date\n\t * @param {Null|String|Number} to.milliseconds - millisecond of date\n\t * @param {String} method - determines that consider the dates themselves\n\t * @returns {‌Boolean} if date valid, return true or false\n\t */\n\tPersianDate.prototype.isBetween = function (from, to, method = \"()\") {\n\t\tif (this.error) return false;\n\t\treturn isBetween.call(this, from, to, method);\n\t};\n\n\t/**\n\t * checks date is a native js Date object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a native js Date, return true\n\t */\n\tPersianDate.prototype.isDate = isDate;\n\n\t/**\n\t * checks date is a PersianDate object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a PersianDate, return true\n\t */\n\tPersianDate.prototype.isPersianDate = isPersianDate;\n\n\tif (calendarVal) this.calendar(calendarVal);\n\tif (dateVal) {\n\t\tif (calendarVal && calendarVal[0] == \"j\") this.fromJalali(dateVal);\n\t\telse this.fromGregorian(dateVal);\n\t} else this.now();\n};\n\n////////////////////--------- statics ---------/////////////////////\n\n/**\n * receives year and determined that is leap year or not\n * @static\n * @since 2.3.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {Number} year - the year to be determined is a leap or not\n * @returns {Boolean} if is leap year, returns true\n */\nPersianDate.isLeapYear = isLeapYear;\n\n/**\n * checks date is a native js Date object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a native js Date, return true\n */\nPersianDate.isDate = isDate;\n\n/**\n * checks date is a PersianDate object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a PersianDate, return true\n */\nPersianDate.isPersianDate = isPersianDate;\n\n/**\n * checks the date and time\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid, returns true\n */\nPersianDate.isValid = isValid;\n\n/**\n * checks the date\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @returns {Boolean} if is valid date, returns true\n */\nPersianDate.isValidDate = isValidDate;\n\n/**\n * checks the time\n * @static\n * @since 2.4.0\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid time, returns true\n */\nPersianDate.isValidTime = isValidTime;\n\n/**\n * returns number of days in month\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that returns number of days in month\n * @param {?Number} month - month of date that returns number of days in month\n * @returns {Number} number of days in month\n * @throws {String} if date invalid return error message\n */\nPersianDate.getDaysInMonth = getDaysInMonth;\n\n//TODO: add localization\n\nexport default PersianDate;\n\n////////////////////- Email: Alibeikialireza@gmail.com -////////////////////\n////////////////////--------- Have A Good Day ---------/////////////////////\n","import { typesToArray } from \"../base\";\n\n/**\n * compare the dates\n * @since 2.0.0\n * @param {PersianDate|Date|String|Array|Object} date - the date\n * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare\n * @returns {‌Boolean} if date valid, return true of false\n */\nexport const compare = function (date, operator) {\n\tdate = typesToArray(this.c, ...date);\n\n\tif (this.isValid(...date))\n\t\treturn eval(\n\t\t\t\"this.timestamp()\" + operator + \"this.clone().parse(...date).timestamp()\"\n\t\t);\n\treturn false;\n};\n","import { REGEX } from \"../utils\";\nimport { isDate } from \"../comparison\";\n\n/**\n * Gregorian to Jalali\n * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year\n * @param {Null|Number|String} [month=1] - Gregorian month\n * @param {Null|Number|String} [day=1] - Gregorian day\n * @param {Null|Number|String} [hour=0] - Gregorian hour\n * @param {Null|Number|String} [minute=0] - Gregorian minute\n * @param {Null|Number|String} [second=0] - Gregorian second\n * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond\n * @returns {Array} Jalali date\n */\nexport const gtj = (year, month, day, hour, minute, second, millisecond) => {\n\tlet date;\n\tif (!year) date = new Date();\n\telse if (isDate(year))\n\t\t// if the year was an instance of Date\n\t\tdate = year;\n\telse\n\t\tdate = new Date(\n\t\t\tREGEX[\"isNumeric\"].test(year) ? year : 0,\n\t\t\tREGEX[\"isNumeric\"].test(month) ? month : 0,\n\t\t\tREGEX[\"isNumeric\"].test(day) ? day : 1,\n\t\t\tREGEX[\"isNumeric\"].test(hour) ? hour : 0,\n\t\t\tREGEX[\"isNumeric\"].test(minute) ? minute : 0,\n\t\t\tREGEX[\"isNumeric\"].test(second) ? second : 0,\n\t\t\tREGEX[\"isNumeric\"].test(millisecond) ? millisecond : 0\n\t\t);\n\tday = date.getDate();\n\tmonth = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one\n\tyear = date.getFullYear();\n\thour = date.getHours();\n\tminute = date.getMinutes();\n\tsecond = date.getSeconds();\n\tmillisecond = date.getMilliseconds();\n\tlet jYear, jMonth, jDay;\n\tconst pastDaysInMonth = [\n\t\t0,\n\t\t31,\n\t\t59,\n\t\t90,\n\t\t120,\n\t\t151,\n\t\t181,\n\t\t212,\n\t\t243,\n\t\t273,\n\t\t304,\n\t\t334,\n\t]; // Past days from the start of the year in each month\n\tif (year > 1600) {\n\t\tjYear = 979;\n\t\tyear -= 1600;\n\t} else {\n\t\tjYear = 0;\n\t\tyear -= 621;\n\t}\n\tconst newYear = month > 2 ? year + 1 : year;\n\tlet days =\n\t\t365 * year +\n\t\tparseInt((newYear + 3) / 4) -\n\t\tparseInt((newYear + 99) / 100) +\n\t\tparseInt((newYear + 399) / 400) -\n\t\t80 +\n\t\tday +\n\t\tpastDaysInMonth[month - 1];\n\tjYear += 33 * parseInt(days / 12053);\n\tdays %= 12053;\n\tjYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tjYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tjMonth =\n\t\tdays < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30);\n\tjDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30);\n\treturn [jYear, jMonth, jDay, hour, minute, second, millisecond];\n};\n","import { REGEX } from \"../utils\";\nimport { isLeapYear } from \"../comparison\";\n\n/**\n * Jalali to Gregorian\n * @param {Null|Number|String} year - Jalali year\n * @param {Null|Number|String} [month=1] - Jalali month\n * @param {Null|Number|String} [day=1] - Jalali day\n * @param {Null|Number|String} [hour=0] - Jalali hour\n * @param {Null|Number|String} [minute=0] - Jalali minute\n * @param {Null|Number|String} [second=0] - Jalali second\n * @param {Null|Number|String} [millisecond=0] - Jalali millisecond\n * @returns {Date} Gregorian date\n */\nexport const jtg = (year, month, day, hour, minute, second, millisecond) => {\n\t//plus sign before a variable, convert variable to int\n\tyear = REGEX[\"isNumeric\"].test(year) ? +year : 1;\n\tmonth = REGEX[\"isNumeric\"].test(month) ? +month : 1;\n\tday = REGEX[\"isNumeric\"].test(day) ? +day : 1;\n\thour = REGEX[\"isNumeric\"].test(hour) ? +hour : 0;\n\tminute = REGEX[\"isNumeric\"].test(minute) ? +minute : 0;\n\tsecond = REGEX[\"isNumeric\"].test(second) ? +second : 0;\n\tmillisecond = REGEX[\"isNumeric\"].test(millisecond) ? +millisecond : 0;\n\tlet gYear, gMonth, gDay;\n\tif (year > 979) {\n\t\tgYear = 1600;\n\t\tyear -= 979;\n\t} else {\n\t\tgYear = 621;\n\t}\n\tlet days =\n\t\t365 * year +\n\t\tparseInt(year / 33) * 8 +\n\t\tparseInt(((year % 33) + 3) / 4) +\n\t\t78 +\n\t\tday +\n\t\t(month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186);\n\tgYear += 400 * parseInt(days / 146097);\n\tdays %= 146097;\n\tif (days > 36524) {\n\t\tgYear += 100 * parseInt(--days / 36524);\n\t\tdays %= 36524;\n\t\tif (days >= 365) days++;\n\t}\n\tgYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tgYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tgDay = days + 1;\n\tconst daysOfMonths = [\n\t\t0,\n\t\t31,\n\t\tisLeapYear(\"gregorian\", gYear) ? 29 : 28,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t];\n\tfor (gMonth = 0; gMonth < 13; gMonth++) {\n\t\tconst v = daysOfMonths[gMonth];\n\t\tif (gDay <= v) break;\n\t\tgDay -= v;\n\t}\n\n\treturn new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond);\n};\n","/**\n * show warning\n * @since 2.0.0\n * @param {String} msg - the message for warning\n */\nexport const warn = (msg) => {\n\tconsole.warn(msg);\n};\n","/**\n * make error and delete this.d\n * @param {String} errorText - Error Text\n * @returns {PersianDate} make error and return class\n */\nexport const invalid = function (errorText) {\n\tdelete this.d;\n\tthis.error = errorText;\n\treturn this;\n};\n","import PersianDate from \"../PersianDate\";\nimport { REGEX } from \"../utils\";\nimport { gtj } from \".\";\n\n/**\n * convert String or Array or Object or PersianDate to Array\n * @since 1.2.0\n * @param {String|Array|Object|Number} year - this param must be string or array or Object from date or year\n * @param {String|Number} year.y - year of date\n * @param {Null|String|Number} year.year - year of date\n * @param {Null|String|Number} year.years - year of date\n * @param {Null|String|Number} year.M - month of date\n * @param {Null|String|Number} year.month - month of date\n * @param {Null|String|Number} year.months - month of date\n * @param {Null|String|Number} year.d - day of date\n * @param {Null|String|Number} year.day - day of date\n * @param {Null|String|Number} year.days - day of date\n * @param {Null|String|Number} year.date - day of date\n * @param {Null|String|Number} year.h - hour of date\n * @param {Null|String|Number} year.hour - hour of date\n * @param {Null|String|Number} year.hours - hour of date\n * @param {Null|String|Number} year.m - minute of date\n * @param {Null|String|Number} year.minute - minute of date\n * @param {Null|String|Number} year.minutes - minute of date\n * @param {Null|String|Number} year.s - second of date\n * @param {Null|String|Number} year.second - second of date\n * @param {Null|String|Number} year.seconds - second of date\n * @param {Null|String|Number} year.ms - millisecond of date\n * @param {Null|String|Number} year.millisecond - millisecond of date\n * @param {Null|String|Number} year.milliseconds - millisecond of date\n * @param {Null|Number|String} month month of date\n * @param {Null|Number|String} day day of date\n * @param {Null|Number|String} hour hour of date\n * @param {Null|Number|String} minute minute of date\n * @param {Null|Number|String} second second of date\n * @param {Null|Number|String} millisecond millisecond of date\n * @returns {Array} array includes year, month, date, hour, minute, second, millinsecond\n */\nexport const typesToArray = (\n\tcalendar,\n\tyear,\n\tmonth,\n\tdate,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) => {\n\tif (!year)\n\t\t// if year not defined\n\t\tyear = new Date(); // return now\n\tif (typeof year == \"string\" && year.search(REGEX[\"separators\"]) != -1) {\n\t\treturn year.split(/[/ -.,:\\\\]/);\n\t} else if (Array.isArray(year)) {\n\t\treturn year;\n\t} else if (PersianDate.isPersianDate(year)) {\n\t\treturn year.clone().calendar(calendar).toArray();\n\t} else if (PersianDate.isDate(year)) {\n\t\treturn new PersianDate(year).calendar(calendar).toArray();\n\t} else if (Object.prototype.toString.call(year) === \"[object Object]\") {\n\t\treturn [\n\t\t\tyear.y || year.year || year.years,\n\t\t\tyear.M || year.month || year.months || 1,\n\t\t\tyear.d || year.day || year.days || year.date || 1,\n\t\t\tyear.h || year.hour || year.hours || 0,\n\t\t\tyear.m || year.minute || year.minutes || 0,\n\t\t\tyear.s || year.second || year.seconds || 0,\n\t\t\tyear.ms || year.millisecond || year.milliseconds || 0,\n\t\t];\n\t}\n\treturn [year, month, date, hour, minute, second, millisecond];\n};\n","import { CALENDAR } from \"../utils\";\n/**\n * returns the ordinal number of that number sent to it\n * @param {Number} number - the number that gives ordinal number --> from 1 to 366\n * @param {'jalali','gregorian'} calendar - the calendar\n * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number\n * @returns {String} ordinal number\n * @example 1st | اول | اولین\n */\nexport const ordinalNumber = (number, calendar = \"jalali\", mode = 1) => {\n\treturn CALENDAR[calendar].ordinalNumbers(number, mode);\n};\n","/**\n * add a prefix to the text in the number of characters that the text has less\n * @param {String|Number} text a text need prefix\n * @param {Number} length length of text\n * @param {String} [prefix=0] - string for add before of text\n * @returns {String} text with or wihtout prefix\n */\nexport const addPrefix = (text, length, prefix = \"0\") => {\n\treturn prefix.repeat(length - String(text).length) + text;\n};\n","import { gtj } from \".\";\n/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date\n */\nexport const setJalaliDate = function (date) {\n\t[\n\t\tthis.d.year,\n\t\tthis.d.month,\n\t\tthis.d.date,\n\t\tthis.d.hour,\n\t\tthis.d.minute,\n\t\tthis.d.second,\n\t\tthis.d.millisecond,\n\t] = gtj(date);\n};\n","/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date instance\n */\nexport const setGregorianDate = function (date) {\n\tthis.d = {\n\t\tyear: date.getFullYear(),\n\t\tmonth: date.getMonth() + 1,\n\t\tdate: date.getDate(),\n\t\thour: date.getHours(),\n\t\tminute: date.getMinutes(),\n\t\tsecond: date.getSeconds(),\n\t\tmillisecond: date.getMilliseconds(),\n\t};\n};\n","/**\n * show error\n * @since 3.0.0\n * @param {String} msg - the message for error\n */\nexport const error = (msg) => {\n\tconsole.error(msg);\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get label of day\n * @param {Date} date - the date that received day\n * @param {'jalali'|'gregorian'} calendar - the calendar\n * @returns {String} returns day label\n * @example Saturday | شنبه\n */\nexport const getDayLabel = function (date = new Date(), calendar = \"jalali\") {\n\tif (isDate(date)) return CALENDAR[calendar][\"days\"][\"label\"][date.getDay()];\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get the day of the week\n * @param {Date} date - the date that received day of week\n * @param {'jalali', 'gregorian'} calendar - the calendar\n * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0\n * @returns {Number|String} the number of the day of week\n */\nexport const getDayOfWeek = (\n\tdate = new Date(),\n\tcalendar = \"jalali\",\n\tmode = \"standard\"\n) => {\n\tif (isDate(date)) {\n\t\t// if the year was an instance of Date\n\t\treturn (\n\t\t\tCALENDAR[calendar][\"days\"][\"weekNumber\"][date.getDay()] +\n\t\t\t(mode != \"standard\" ? 0 : 1)\n\t\t);\n\t}\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { getDaysInMonth } from \"../set-get\";\n\n/**\n * get the day of the year\n * @param {Null|String|Number} year - the year of date\n * @param {Null|Number|String} month - the month of date that gives the day of the year\n * @param {Null|Number|String} day - the day of date that gives the day of the year\n * @param {Null|Number|String} calendar - the calendar\n * @returns {Number} the day of the year\n */\nexport const getDayOfYear = (year, month, day, calendar) => {\n\t//plus sign before a variable, convert variable to int\n\tmonth = +month;\n\tday = +day;\n\twhile (--month != 0) {\n\t\tday += getDaysInMonth(calendar, year, month);\n\t}\n\treturn day;\n};\n","const dayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\n/**\n * get the week of the year\n * @param {Null|Number|String} year - the year of date that gives the week of the year\n * @param {Null|Number|String} month - the month of date that gives the week of the year\n * @param {Null|Number|String} day - the day of date that gives the week of the year\n * @param {String} calendar - the calendar\n * @returns {Number} the week of the year\n */\nexport const getWeekOfYear = function (year, month, day, calendar) {\n\tconst firstOfYear = this.clone().calendar(calendar).parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar));\n\tconst date = firstOfYear.clone().parse(year, month, day);\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\n\tconst weekNumber = Math.ceil(date.diff(firstOfYear, \"date\", true) / 7);\n\n\tconst weeksInYear = date.clone().getWeeksInYear();\n\treturn weekNumber > weeksInYear ? weeksInYear : weekNumber;\n};\n","import { typesToArray } from \"../base\";\n\n/**\n * do the math operation on dates\n * @since 1.4.0\n * @param {...String|PersianDate|Date|Array|Object} values - the dates\n * @param {'min'|'max'} operation - the operation\n * @returns {*} return maximum date\n * @throws {false} if parameters not send or parameters is invalid, return false\n */\nexport const mathOperation = function (values, operation) {\n\tif (!values.length) {\n\t\treturn false;\n\t}\n\tconst args = [...values];\n\tconst argsNumber = args.map((date) => {\n\t\tdate = typesToArray(this.c, date);\n\t\tif (this.isValid(...date))\n\t\t\treturn this.clone()\n\t\t\t\t.parse(...date)\n\t\t\t\t.timestamp();\n\t\treturn false;\n\t});\n\tif (argsNumber.includes(false)) return false;\n\treturn args[argsNumber.indexOf(Math[operation](...argsNumber))];\n};\n","/**\n * check the input is timestamp\n * @since 2.0.0\n * @param {Number|String} timestamp - input that must be checked\n * @returns {Boolean} if input was timestamp, return true\n */\nexport const isTimestamp = (timestamp) => {\n\treturn !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0;\n};\n","import PersianDate from \"../PersianDate\";\nexport const isPersianDate = function (date) {\n\treturn date instanceof PersianDate;\n};\n","import { isValidDate, isValidTime } from \".\";\n\nexport const isValid = function (\n\tcalendar,\n\tyear,\n\tmonth,\n\tday,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) {\n\treturn (\n\t\tisValidDate(calendar, year, month, day) &&\n\t\tisValidTime(hour, minute, second, millisecond)\n\t);\n};\n","import { isLeapYear } from \"./isLeapYear\";\n\nconst jalali = (year, month, day) => {\n\tif (month >= 7 && month <= 11 && day == 31) return false;\n\tif (month == 12 && day == 31) return false;\n\tif (month == 12 && day == 30 && !isLeapYear(\"j\", year)) return false;\n\treturn true;\n};\n\nconst gregorian = (year, month, day) => {\n\tif ([2, 4, 6, 9, 11].includes(month) && day == 31) return false;\n\tif (month == 2 && (day == 30 || (day == 29 && !isLeapYear(\"g\", year))))\n\t\treturn false;\n\treturn true;\n};\n\nexport const isValidDate = function (calendar, year, month, day) {\n\tif ([year, month, day].some((e) => String(e).search(/null|NaN/) != -1))\n\t\treturn false;\n\tif (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false;\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year, month, day);\n\t\tdefault:\n\t\t\treturn gregorian(year, month, day);\n\t}\n};\n","export const isValidTime = function (hour, minute, second, millisecond) {\n\tif (\n\t\t[hour, minute, second, millisecond].some(\n\t\t\t(e) => String(e).search(/null|NaN/) != -1\n\t\t)\n\t)\n\t\treturn false;\n\tif (hour < 0 || hour > 23) return false;\n\tif (minute < 0 || minute > 59) return false;\n\tif (second < 0 || second > 59) return false;\n\tif (millisecond < 0 || millisecond > 999) return false;\n\treturn true;\n};\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isSame() {\n\tlet date = typesToArray(this.c, ...arguments);\n\tdate = this.toArray().map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(date[i]) ? date[i] : value\n\t);\n\n\treturn compare.call(this, date, \"==\");\n}\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isBetween(from, to, method) {\n\tconst date = this.toArray();\n\n\tfrom = typesToArray(this.c, from);\n\tif (!from[2]) date[2] = 1;\n\tfrom = date.map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(from[i]) ? from[i] : value\n\t);\n\n\tto = typesToArray(this.c, to);\n\tto = date.map((value, i) => (REGEX[\"isNumeric\"].test(to[i]) ? to[i] : value));\n\n\tif (!(this.isValid(...from) && this.isValid(...to))) return false;\n\n\treturn (\n\t\tcompare.call(this, from, method[0] === \"[\" ? \">=\" : \">\") &&\n\t\tcompare.call(this, to, method[1] === \"]\" ? \"<=\" : \"<\")\n\t);\n}\n","export const isDate = function (date) {\n\treturn date instanceof Date;\n};\n","const jalali = (year) => {\n\tconst array =\n\t\tyear > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30];\n\tconst remainder = year % 33;\n\treturn array.includes(remainder);\n};\n\nconst gregorian = (year) => {\n\treturn (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;\n};\n\nexport const isLeapYear = function (calendar, year) {\n\t// calendar[0] ==> first letter of calendar ('j' | 'g' | ...)\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year);\n\t\tdefault:\n\t\t\treturn gregorian(year);\n\t}\n};\n","import { REGEX } from \"../utils\";\nimport { gtj } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jy\";\n\t\tdefault:\n\t\t\treturn \"y\";\n\t}\n};\n\nexport function year(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tthis.d.year = +format;\n\t\tif (!this.isValidDate()) {\n\t\t\treturn this.subDay(1, false);\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\t\tconst jYear = this.c == \"jalali\" ? this.d.year : gtj(this.toDate())[0];\n\t\tif (format == \"jy\" || format == \"jYYYY\") return jYear;\n\t\tif (format == \"jYY\") return String(jYear).slice(-2);\n\t\tconst gYear =\n\t\t\tthis.c == \"gregorian\" ? this.d.year : this.toDate().getFullYear();\n\t\tif (format == \"y\" || format == \"YYYY\") return gYear;\n\t\tif (format == \"YY\") return String(gYear).slice(-2);\n\t\treturn jYear;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jQ\";\n\t\tdefault:\n\t\t\treturn \"Q\";\n\t}\n};\n\nexport function quarter(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subQuarter(format - 1, false);\n\t\t} else if (format > 4) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addQuarter(format - 4, false);\n\t\t} else {\n\t\t\tthis.d.month = +format * 3 - 2;\n\t\t}\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tlet jQuarter = Math.ceil(\n\t\t\t(this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1]) / 3\n\t\t);\n\t\tif (format == \"jQ\") return jQuarter;\n\t\tif (format == \"jQo\") return ordinalNumber(jQuarter);\n\t\tif (format == \"jQO\") return ordinalNumber(jQuarter, \"jalali\", 2);\n\n\t\tconst gQuarter = Math.ceil(\n\t\t\t(this.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1) / 3\n\t\t);\n\t\tif (format == \"Q\") return gQuarter;\n\t\tif (format == \"Qo\" || format == \"QO\")\n\t\t\treturn ordinalNumber(gQuarter, \"gregorian\");\n\n\t\treturn jQuarter;\n\t}\n}\n","import { REGEX, CALENDAR } from \"../utils\";\nimport { addPrefix, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jM\";\n\t\tdefault:\n\t\t\treturn \"M\";\n\t}\n};\n\nexport function month(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subMonth(format - 1, false);\n\t\t} else if (format > 12) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addMonth(format - 12, false);\n\t\t} else {\n\t\t\tthis.d.month = +format;\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jMonth = this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1];\n\t\tif (format == \"jMM\") return addPrefix(jMonth, 2);\n\t\tif (format == \"jM\") return jMonth;\n\t\tif (format == \"jMMMM\" || format == \"jMMM\")\n\t\t\treturn CALENDAR[\"jalali\"][\"months\"][jMonth];\n\t\tif (format == \"jMo\") return ordinalNumber(jMonth);\n\t\tif (format == \"jMO\") return ordinalNumber(jMonth, \"jalali\", 2);\n\n\t\tconst gMonth =\n\t\t\tthis.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1;\n\t\tif (format == \"M\") return gMonth;\n\t\tif (format == \"MM\") return addPrefix(gMonth, 2);\n\t\tif (format == \"MMMM\") return CALENDAR[\"gregorian\"][\"months\"][gMonth];\n\t\tif (format == \"Mo\" || format == \"MO\")\n\t\t\treturn ordinalNumber(gMonth, \"gregorian\");\n\t\tif (format == \"MMM\")\n\t\t\treturn CALENDAR[\"gregorian\"][\"months\"][gMonth].slice(0, 3);\n\n\t\treturn jMonth;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix, getWeekOfYear, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jw\";\n\t\tdefault:\n\t\t\treturn \"w\";\n\t}\n};\n\nexport function week(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst weeksInYear = this.getWeeksInYear();\n\t\tif (format < 1) {\n\t\t\tthis.week(1);\n\t\t\tthis.subWeek(format - 1, false);\n\t\t} else if (format > weeksInYear) {\n\t\t\tthis.week(weeksInYear);\n\t\t\tthis.addWeek(format - weeksInYear, false);\n\t\t} else {\n\t\t\tconst weekOfYear = getWeekOfYear.call(\n\t\t\t\tthis,\n\t\t\t\tthis.d.year,\n\t\t\t\tthis.d.month,\n\t\t\t\tthis.d.date,\n\t\t\t\tthis.c\n\t\t\t);\n\t\t\tthis.addWeek(+format - weekOfYear);\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"jy\"),\n\t\t\tthis.month(\"jM\"),\n\t\t\tthis.date(\"jD\"),\n\t\t\tthis.c\n\t\t);\n\t\tif (format == \"jw\" || format == \"jW\") return jWeekOfYear;\n\t\tif (format == \"jww\" || format == \"jWW\") return addPrefix(jWeekOfYear, 2);\n\t\tif (format == \"jwo\" || format == \"jWo\") return ordinalNumber(jWeekOfYear);\n\t\tif (format == \"jwO\" || format == \"jWO\")\n\t\t\treturn ordinalNumber(jWeekOfYear, \"jalali\", 2);\n\n\t\tconst gWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"y\"),\n\t\t\tthis.month(\"M\"),\n\t\t\tthis.date(\"D\"),\n\t\t\t\"gregorian\"\n\t\t);\n\t\tif (format == \"w\" || format == \"W\") return gWeekOfYear;\n\t\tif (format == \"ww\" || format == \"WW\") return addPrefix(gWeekOfYear, 2);\n\t\tif (format == \"wo\" || format == \"Wo\" || format == \"wO\" || format == \"WO\")\n\t\t\treturn ordinalNumber(gWeekOfYear, \"gregorian\");\n\t\treturn jWeekOfYear;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport {\n\taddPrefix,\n\tordinalNumber,\n\tgetDayOfWeek,\n\tgtj,\n\tgetDayLabel,\n\tgetDayOfYear,\n} from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jD\";\n\t\tdefault:\n\t\t\treturn \"D\";\n\t}\n};\n\nexport function date(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst daysInMonth = this.getDaysInMonth();\n\n\t\tif (format < 1) {\n\t\t\tthis.d.date = 1;\n\t\t\tthis.subDay(format - 1);\n\t\t} else if (format > daysInMonth) {\n\t\t\tthis.d.date = daysInMonth;\n\t\t\tthis.addDay(format - daysInMonth);\n\t\t} else {\n\t\t\tthis.d.date = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jDate = this.c == \"jalali\" ? this.d.date : gtj(this.toDate())[2];\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"jDD\") return addPrefix(jDate, 2);\n\t\tif (format == \"jD\") return jDate;\n\t\tif (format == \"jDo\") return ordinalNumber(jDate);\n\t\tif (format == \"jDO\") return ordinalNumber(jDate, \"jalali\", 2);\n\t\t//---------- Day of Week ----------//\n\t\tconst gDate = this.toDate();\n\t\tif (format == \"jdddd\" || format == \"jddd\") return getDayLabel(gDate);\n\t\tif (format == \"jdd\") return getDayLabel(gDate).slice(0, 1);\n\t\tlet dayOfWeek = getDayOfWeek(gDate);\n\t\tif (format == \"jdo\") return ordinalNumber(dayOfWeek);\n\t\tif (format == \"jdO\") return ordinalNumber(dayOfWeek, \"jalali\", 2);\n\t\tif (format == \"jd\") return getDayOfWeek(gDate, \"jalali\", \"array\");\n\t\tif (format == \"jde\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tlet dayOfYear = getDayOfYear(this.year(\"jy\"), this.month(\"jM\"), jDate, \"j\");\n\t\tif (format == \"jDDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"jDDD\") return dayOfYear;\n\t\tif (format == \"jDDDo\") return ordinalNumber(dayOfYear);\n\t\tif (format == \"jDDDO\") return ordinalNumber(dayOfYear, \"jalali\", 2);\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"DD\") return addPrefix(gDate.getDate(), 2);\n\t\tif (format == \"D\") return gDate.getDate();\n\t\tif (format == \"Do\" || format == \"DO\")\n\t\t\treturn ordinalNumber(gDate.getDate(), \"gregorian\");\n\t\t//---------- Day of Week ----------//\n\t\tif (format == \"dddd\") return getDayLabel(gDate, \"gregorian\");\n\t\tif (format == \"ddd\") return getDayLabel(gDate, \"gregorian\").slice(0, 3);\n\t\tif (format == \"dd\") return getDayLabel(gDate, \"gregorian\").slice(0, 2);\n\t\tdayOfWeek = getDayOfWeek(gDate, \"gregorian\");\n\t\tif (format == \"do\" || format == \"dO\")\n\t\t\treturn ordinalNumber(dayOfWeek, \"gregorian\");\n\t\tif (format == \"d\") return dayOfWeek - 1;\n\t\tif (format == \"de\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tdayOfYear = getDayOfYear(\n\t\t\tgDate.getFullYear(),\n\t\t\tgDate.getMonth() + 1,\n\t\t\tgDate.getDate(),\n\t\t\t\"g\"\n\t\t);\n\t\tif (format == \"DDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"DDD\") return dayOfYear;\n\t\tif (format == \"DDDo\" || format == \"DDDO\")\n\t\t\treturn ordinalNumber(dayOfYear, \"gregorian\");\n\t\treturn jDate;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function hour(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.hour = 0;\n\t\t\tthis.subHour(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.hour = 23;\n\t\t\tthis.addHour(format - 23);\n\t\t} else {\n\t\t\tthis.d.hour = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tlet h = this.d.hour;\n\t\tif (format == \"H\") return h;\n\t\tif (format == \"HH\") return addPrefix(h, 2);\n\t\tif (format == \"k\") return h || 24;\n\t\tif (format == \"kk\") return addPrefix(h || 24, 2);\n\t\th = h > 12 ? h - 12 : h;\n\t\tif (format == \"h\") return h;\n\t\tif (format == \"hh\") return addPrefix(h, 2);\n\t\treturn h;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function minute(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.minute = 0;\n\t\t\tthis.subMinute(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.minute = 23;\n\t\t\tthis.addMinute(format - 23);\n\t\t} else {\n\t\t\tthis.d.minute = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"m\") return this.d.minute;\n\t\tif (format == \"mm\") return addPrefix(this.d.minute, 2);\n\t\treturn this.d.minute;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function second(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.second = 0;\n\t\t\tthis.subSecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.second = 23;\n\t\t\tthis.addSecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.second = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"s\") return this.d.second;\n\t\tif (format == \"ss\") return addPrefix(this.d.second, 2);\n\t\treturn this.d.second;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function millisecond(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.millisecond = 0;\n\t\t\tthis.subMillisecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.millisecond = 23;\n\t\t\tthis.addMillisecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.millisecond = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"CCC\" || format == \"c\") return this.d.millisecond;\n\t\tif (format == \"CCCC\") return addPrefix(this.d.millisecond, 3);\n\t\treturn this.d.millisecond;\n\t}\n}\n","export function timestamp(value) {\n\tif (value) {\n\t\treturn this.fromGregorian(+String(value).trim());\n\t} else {\n\t\treturn this.toDate().getTime();\n\t}\n}\n","import { isLeapYear } from \"../comparison/isLeapYear\";\n\nconst jalali = (calendar, year, month) => {\n\tif (month >= 1 && month <= 6) return 31;\n\telse if ((month > 6 && month <= 11) || isLeapYear(calendar, year)) {\n\t\treturn 30;\n\t}\n\treturn 29;\n};\n\nconst gregorian = (calendar, year, month) => {\n\tif ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31;\n\telse if (month != 2) return 30;\n\telse if (isLeapYear(calendar, year)) return 29;\n\treturn 28;\n};\n\nexport const getDaysInMonth = function (calendar, year, month) {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(calendar, year, month);\n\t\tdefault:\n\t\t\treturn gregorian(calendar, year, month);\n\t}\n};\n","const getDayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\nexport function getWeeksInYear(year) {\n\tconst dayOfYearFormat = getDayOfYearFormat(this.c);\n\n\tconst firstOfYear = this.clone().parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat);\n\tconst lastOfYear = firstOfYear.clone().endOf(\"year\").startOf(\"day\");\n\tconst lastOfYearDay = lastOfYear.date(dayOfYearFormat);\n\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\telse firstOfYear.subDay(firstOfYearDay);\n\n\tif (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay);\n\telse lastOfYear.subDay(lastOfYearDay);\n\n\treturn Math.ceil(lastOfYear.diff(firstOfYear, \"date\") / 7);\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function startOf(unit) {\n\tthis.d.millisecond = 0;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 0;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 0;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 0;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.subDay(getDayOfWeek(this.toDate(), this.c, \"array\"));\n\tthis.d.date = 1;\n\tif (unit[0] == \"q\") return this.quarter(this.quarter());\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 1;\n\tif (unit[0] == \"y\") return this;\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function endOf(unit) {\n\tthis.d.millisecond = 999;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 59;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 59;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 23;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.addDay(7 - getDayOfWeek(this.toDate(), this.c));\n\tif (unit[0] == \"q\") {\n\t\tthis.quarter(this.quarter()).addMonth(2);\n\t\tthis.d.date = this.getDaysInMonth();\n\t\treturn this;\n\t}\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 12;\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit[0] == \"y\") return this;\n}\n","import { typesToArray } from \"../base\";\nimport { isDate, isPersianDate } from \"../comparison\";\n\nexport function time(...t) {\n\tif (!t.length) return this.toArray().slice(3);\n\tlet times = [];\n\tif (isPersianDate(t[0])) times = t[0].time();\n\telse if (isDate(t[0]))\n\t\ttimes = [\n\t\t\tt[0].getHours(),\n\t\t\tt[0].getMinutes(),\n\t\t\tt[0].getSeconds(),\n\t\t\tt[0].getMilliseconds(),\n\t\t];\n\telse if (Object.prototype.toString.call(t[0]) === \"[object Object]\")\n\t\ttimes = [\n\t\t\tt[0].h || t[0].hour || t[0].hours || 0,\n\t\t\tt[0].m || t[0].minute || t[0].minutes || 0,\n\t\t\tt[0].s || t[0].second || t[0].seconds || 0,\n\t\t\tt[0].ms || t[0].millisecond || t[0].milliseconds || 0,\n\t\t];\n\telse times = typesToArray(this.c, ...t);\n\tif (this.isValidTime(...times)) {\n\t\treturn this.hour(times[0] || 0)\n\t\t\t.minute(times[1] || 0)\n\t\t\t.second(times[2] || 0)\n\t\t\t.millisecond(times[3] || 0);\n\t} else return \"زمان نامعتبر\";\n}\n","const CALENDAR = {\n\tjalali: {\n\t\tmonths: {\n\t\t\t1: \"فروردین\",\n\t\t\t2: \"اردیبهشت\",\n\t\t\t3: \"خرداد\",\n\t\t\t4: \"تیر\",\n\t\t\t5: \"مرداد\",\n\t\t\t6: \"شهریور\",\n\t\t\t7: \"مهر\",\n\t\t\t8: \"آبان\",\n\t\t\t9: \"آذر\",\n\t\t\t10: \"دی\",\n\t\t\t11: \"بهمن\",\n\t\t\t12: \"اسفند\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t6: \"شنبه\",\n\t\t\t\t0: \"یکشنبه\",\n\t\t\t\t1: \"دوشنبه\",\n\t\t\t\t2: \"سه‌شنبه\",\n\t\t\t\t3: \"چهارشنبه\",\n\t\t\t\t4: \"پنجشنبه\",\n\t\t\t\t5: \"جمعه\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in jalali calendar start from saturday or 6\n\t\t\t\t6: 0, //شنبه\n\t\t\t\t0: 1, //یکشنبه\n\t\t\t\t1: 2, //دوشنبه\n\t\t\t\t2: 3, //سه‌شنبه\n\t\t\t\t3: 4, //چهارشنبه\n\t\t\t\t4: 5, //پنجشنبه\n\t\t\t\t5: 6, //جمعه\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number, mode) {\n\t\t\tconst numbers = {\n\t\t\t\t1: \"یک\",\n\t\t\t\t2: \"دو\",\n\t\t\t\t3: \"سو\",\n\t\t\t\t4: \"چهار\",\n\t\t\t\t5: \"پنج\",\n\t\t\t\t6: \"شش\",\n\t\t\t\t7: \"هفت\",\n\t\t\t\t8: \"هشت\",\n\t\t\t\t9: \"نه\",\n\t\t\t\t10: \"ده\",\n\t\t\t\t11: \"یازده\",\n\t\t\t\t12: \"دوازده\",\n\t\t\t\t13: \"سیزده\",\n\t\t\t\t14: \"چهارده\",\n\t\t\t\t15: \"پانزده\",\n\t\t\t\t16: \"شانزده\",\n\t\t\t\t17: \"هفده\",\n\t\t\t\t18: \"هجده\",\n\t\t\t\t19: \"نوزده\",\n\t\t\t\t20: \"بیست\",\n\t\t\t\t30: \"سی‌\",\n\t\t\t\t40: \"چهل\",\n\t\t\t\t50: \"پنجاه\",\n\t\t\t\t60: \"شصت\",\n\t\t\t\t70: \"هفتاد\",\n\t\t\t\t80: \"هشتاد\",\n\t\t\t\t90: \"نود\",\n\t\t\t\t100: \"صد\",\n\t\t\t\t200: \"دویست\",\n\t\t\t\t300: \"سیصد\",\n\t\t\t};\n\t\t\tlet ordinalNumber = \"\";\n\t\t\tif (number == 1) ordinalNumber = \"اول\";\n\t\t\telse if (numbers[number])\n\t\t\t\tordinalNumber = numbers[number] + (number == 30 ? \"ام\" : \"م\");\n\t\t\telse {\n\t\t\t\tlet remainder = number % 100;\n\t\t\t\tif (numbers[remainder]) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\telse {\n\t\t\t\t\tremainder = number % 10;\n\t\t\t\t\tif (remainder) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\t}\n\t\t\t\tremainder = (number - remainder) % 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] +\n\t\t\t\t\t\t(ordinalNumber\n\t\t\t\t\t\t\t? \" و \" + ordinalNumber\n\t\t\t\t\t\t\t: remainder == 30\n\t\t\t\t\t\t\t? \"ام \"\n\t\t\t\t\t\t\t: \"م\");\n\t\t\t\tremainder = Math.floor(number / 100) * 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] + (ordinalNumber ? \" و \" + ordinalNumber : \"م\");\n\t\t\t}\n\t\t\tif (mode == 2) ordinalNumber += \"ین\";\n\t\t\treturn ordinalNumber;\n\t\t},\n\t},\n\tgregorian: {\n\t\tmonths: {\n\t\t\t1: \"January\",\n\t\t\t2: \"February\",\n\t\t\t3: \"March\",\n\t\t\t4: \"April\",\n\t\t\t5: \"May\",\n\t\t\t6: \"June\",\n\t\t\t7: \"July\",\n\t\t\t8: \"August\",\n\t\t\t9: \"September\",\n\t\t\t10: \"October\",\n\t\t\t11: \"November\",\n\t\t\t12: \"December\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t0: \"Sunday\",\n\t\t\t\t1: \"Monday\",\n\t\t\t\t2: \"Tuesday\",\n\t\t\t\t3: \"Wednesday\",\n\t\t\t\t4: \"Thursday\",\n\t\t\t\t5: \"Friday\",\n\t\t\t\t6: \"Saturday\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in gregorian calendar start from sunday or 0\n\t\t\t\t0: 0, // Sunday\n\t\t\t\t1: 1, // Monday\n\t\t\t\t2: 2, // Tuesday\n\t\t\t\t3: 3, // Wednesday\n\t\t\t\t4: 4, // Thursday\n\t\t\t\t5: 5, // Friday\n\t\t\t\t6: 6, // Saturday\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number) {\n\t\t\tif (number == 1 || (number % 10 == 1 && number != 11))\n\t\t\t\treturn number + \"st\";\n\t\t\telse if (number == 2 || (number % 10 == 2 && number != 12))\n\t\t\t\treturn number + \"nd\";\n\t\t\telse if (number == 3 || (number % 10 == 3 && number != 13))\n\t\t\t\treturn number + \"rd\";\n\t\t\telse return number + \"th\";\n\t\t},\n\t},\n};\n\nconst REGEX = {\n\tformat: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,\n\tisNumeric: /^\\d+$/, // this regex, checks input to see is a number or not\n\tseparators: \"\\\\/| |-|\\\\.|,|:\", // find ['/',' ','-','.',',',':'] and split string to array by this symbols\n\tbetweenBacktick: /`(.*?)`/g, // find the texts between the backticks ==> `Alireza`\n};\n\nconst TIMETYPE = function (hour, format) {\n\tif (hour >= 0 && hour < 12) {\n\t\tif (format == \"a\") return \"am\";\n\t\telse if (format == \"aa\") return \"A.M.\";\n\t\telse if (format == \"A\") return \"AM\";\n\t\telse if (format == \"ja\") return \"ق ظ\";\n\t\telse if (format == \"jaa\") return \"ق.ظ\";\n\t\telse if (format == \"jA\") return \"قبل از ظهر\";\n\t\treturn \"ق.ظ\";\n\t} else if (hour >= 12 && hour < 24) {\n\t\tif (format == \"a\") return \"pm\";\n\t\telse if (format == \"aa\") return \"P.M.\";\n\t\telse if (format == \"A\") return \"PM\";\n\t\telse if (format == \"ja\") return \"ب ظ\";\n\t\telse if (format == \"jaa\") return \"ب.ظ\";\n\t\telse if (format == \"jA\") return \"بعد از ظهر\";\n\t\treturn \"ب.ظ\";\n\t}\n};\n\nexport { CALENDAR, TIMETYPE, REGEX };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(739);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/PersianDate.umd.js b/dist/PersianDate.umd.js index 9f8d0dd..d95d9d3 100644 --- a/dist/PersianDate.umd.js +++ b/dist/PersianDate.umd.js @@ -1,4602 +1,3302 @@ -(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["PersianDate"] = factory(); - else - root["PersianDate"] = factory(); -})(self, function() { -return /******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ "./src/PersianDate.js": -/*!****************************!*\ - !*** ./src/PersianDate.js ***! - \****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ "./src/base/index.js"); -/* harmony import */ var _create__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create */ "./src/create/index.js"); -/* harmony import */ var _set_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./set-get */ "./src/set-get/index.js"); -/* harmony import */ var _add_sub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add-sub */ "./src/add-sub/index.js"); -/* harmony import */ var _conversion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./conversion */ "./src/conversion/index.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./comparison */ "./src/comparison/index.js"); -/* harmony import */ var _diff__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./diff */ "./src/diff/index.js"); -////////////////////---------- Are You Ready? ----------//////////////////// -////////////////////------------- Let's Go -------------//////////////////// -////////////////////---- Read Comments And Enjoy It ----//////////////////// - -////////////////////------------- ATTENTION -------------//////////////////// -// In the first, I'm must say, in the all of the project, // -// g means Gregorian and j means Jalali // -///////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - -/** - * A Date library for working with persian date - * @class - * @param {Date|Array|Null|Object|String} date - the date that convert to persian date - * @param {String} [calendar='jalali'] - the calendar - */ -const PersianDate = function (dateVal, calendarVal) { - "use strict"; - - /** - * keeps the date and time - * @type {Object} - * @property {Number} year - the year of date - * @property {Number} month - the month of date - * @property {Number} date - the day of month of date - * @property {Number} hour - the hour of time - * @property {Number} minute - the minute of time - * @property {Number} second - the second of time - * @property {Number} millisecond - the millisecond of time - * @property {Number} gregorian - the gregorian date - */ - this.d = {}; - - /** - * the calendar type - * @type {String} - * @default "jalali" - * @example jalali | gregorian - */ - this.c = "jalali"; - - ////////////////////--------- create & parse ---------///////////////////// - - /** - * make current date in persian calendar - * @returns {PersianDate} make current date and return class - */ - PersianDate.prototype.now = function () { - if (this.error) { - delete this.error; - this.d = {}; - } - return _create__WEBPACK_IMPORTED_MODULE_1__.now.call(this); - }; - - /** - * set persian date from Gregorian date - * @deprecated - * @param {...Number|Date|Array|Null} date - the date that convert to persian date - * @returns {PersianDate} return class with persian date - * @throws {PersianDate|String} if date invalid return class with error property with error property - */ - PersianDate.prototype.setDate = function () { - (0,_base__WEBPACK_IMPORTED_MODULE_0__.warn)( - '"setDate" function is deprecated! use "fromGregorian" function instead.\n' + - "https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date" - ); - return this.fromGregorian(...arguments); - }; - - /** - * convert a jalali or gregorian date to PersianDate instance - * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {PersianDate} return class with persian date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.parse = function () { - return _create__WEBPACK_IMPORTED_MODULE_1__.parse.call(this, ...arguments); - }; - - /** - * get clone of this date - * @since 1.1.0 - * @returns {PersianDate} returns the clone of this date - */ - PersianDate.prototype.clone = function () { - return _create__WEBPACK_IMPORTED_MODULE_1__.clone.call(this); - }; - - /** - * convert a jalali date to PersianDate instance - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {PersianDate} return class with persian date - * @throws {PersianDate} if date invalid return class with error - */ - PersianDate.prototype.fromJalali = function () { - if (this.error) { - delete this.error; - this.d = {}; - } - return _create__WEBPACK_IMPORTED_MODULE_1__.fromJalali.call(this, ...arguments); - }; - - /** - * convert a gregorian date to PersianDate instance - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {PersianDate} return class with persian date - * @throws {PersianDate} if date invalid return class with error - */ - PersianDate.prototype.fromGregorian = function () { - if (this.error) { - delete this.error; - this.d = {}; - } - return _create__WEBPACK_IMPORTED_MODULE_1__.fromGregorian.call(this, ...arguments); - }; - - /** - * convert a gregorian date to PersianDate instance - * @since 2.0.0 - * @param {"j"|"jalali"|"g"|"gregorian"} calendar - the calendar - * @returns {PersianDate} return class with persian date - */ - PersianDate.prototype.calendar = function (calendar) { - return _create__WEBPACK_IMPORTED_MODULE_1__.calendar.call(this, calendar); - }; - - ////////////////////--------- set & get ---------///////////////////// - - /** - * get or set year - * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting - * @returns {PersianDate|String|Number} if set the year, returns class, - * else returns a number or string from year - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.year = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.year.call(this, format); - }; - - /** - * get or set month - * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting - * @returns {PersianDate|String|Number} if set the month, returns class, - * else returns a number or string from month - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.month = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.month.call(this, format); - }; - - /** - * get or set day in month - * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting - * @returns {PersianDate|String|Number} if set the day, returns class, - * else returns a number or string from day - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.date = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.date.call(this, format); - }; - - /** - * get or set quarter - * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting - * @returns {PersianDate|String|Number} if set the quarter, returns class, - * else returns a number or string from quarter - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.quarter = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.quarter.call(this, format); - }; - - /** - * get or set week - * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting - * @returns {PersianDate|String|Number} if set the week, returns class, - * else returns a number or string from week - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.week = function (format = "") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.week.call(this, format); - }; - - /** - * get or set hour - * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting - * @returns {PersianDate|String|Number} if set the hour, returns class, - * else returns a number or string from hour - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.hour = function (format = "H") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.hour.call(this, format); - }; - - /** - * get or set minute - * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting - * @returns {PersianDate|String|Number} if set the minute, returns class, - * else returns a number or string from minute - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.minute = function (format = "m") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.minute.call(this, format); - }; - - /** - * get or set second - * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting - * @returns {PersianDate|String|Number} if set the second, returns class, - * else returns a number or string from second - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.second = function (format = "s") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.second.call(this, format); - }; - - /** - * get or set millisecond - * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting - * @returns {PersianDate|String|Number} if set the millisecond, returns class, - * else returns a number or string from millisecond - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.millisecond = function (format = "c") { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.millisecond.call(this, format); - }; - - /** - * get timestamp or set date from timestamp - * @param {Null|Number|String} value - a number for set the millisecond - * @returns {PersianDate|Number} if set the timestamp, returns class, - * else returns timestamp (number) - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.timestamp = function (value) { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.timestamp.call(this, value); - }; - - PersianDate.prototype.valueOf = function () { - return this.timestamp(); - }; - - /** - * returns number of days in month - * @param {?Number} year - year of date that returns number of days in month - * @param {?Number} month - month of date that returns number of days in month - * @returns {Number} number of days in month - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.getDaysInMonth = function ( - year = this.d.year, - month = this.d.month - ) { - if (this.error) return this.error; - return (0,_set_get__WEBPACK_IMPORTED_MODULE_2__.getDaysInMonth)(this.c, year, month); - }; - - /** - * return number of weeks in year - * @since 2.0.0 - * @param {Number|String} year - the year - * @returns {Number} number of weeks in year - */ - PersianDate.prototype.getWeeksInYear = function (year = this.d.year) { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.getWeeksInYear.call(this, year); - }; - - /** - * change the date to start of the year or month or ... - * @since 2.0.0 - * @param {String} unit - the unit of time - * @returns {PersianDate} return the class with new date or time - */ - PersianDate.prototype.startOf = function (unit = "year") { - return _set_get__WEBPACK_IMPORTED_MODULE_2__.startOf.call(this, unit); - }; - - /** - * change the date to end of the year or month or ... - * @since 2.0.0 - * @param {String} unit - the unit of time - * @returns {PersianDate} return the class with new date or time - */ - PersianDate.prototype.endOf = function (unit = "year") { - return _set_get__WEBPACK_IMPORTED_MODULE_2__.endOf.call(this, unit); - }; - - /** - * change the time - * @since 2.3.0 - * @param {PersianDate|Date|String|Array|Object|Number} time - the new time - * @param {Null|String|Number} time.h - hour of date - * @param {Null|String|Number} time.hour - hour of date - * @param {Null|String|Number} time.hours - hour of date - * @param {Null|String|Number} time.m - minute of date - * @param {Null|String|Number} time.minute - minute of date - * @param {Null|String|Number} time.minutes - minute of date - * @param {Null|String|Number} time.s - second of date - * @param {Null|String|Number} time.second - second of date - * @param {Null|String|Number} time.seconds - second of date - * @param {Null|String|Number} time.ms - millisecond of date - * @param {Null|String|Number} time.millisecond - millisecond of date - * @param {Null|String|Number} time.milliseconds - millisecond of date - * @returns {PersianDate|Array} if set the time, returns class, - * else returns an array of time - * @throws {String} if time invalid return error text - */ - PersianDate.prototype.time = function () { - if (this.error) return this.error; - return _set_get__WEBPACK_IMPORTED_MODULE_2__.time.call(this, ...arguments); - }; - - ////////////////////--------- add & sub ---------///////////////////// - - /** - * add to year - * @param {?Number|String} [year=1] - a number for add with year - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addYear = function (year = 1, checkDate = true) { - if (this.error) return this.error; - if (!year) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addYear.call(this, year, checkDate); - }; - - /** - * add to month - * @param {?Number|String} [month=1] - a number for add with month - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addMonth = function (month = 1, checkDate = true) { - if (this.error) return this.error; - if (!month) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addMonth.call(this, month, checkDate); - }; - - /** - * add to day - * @param {?Number|String} [day=1] - a number for add with day - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addDay = function (day = 1, checkDate = true) { - if (this.error) return this.error; - if (!day) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addDay.call(this, day, checkDate); - }; - - /** - * add to quarter - * @param {?Number|String} [quarter=1] - a number for add with quarter - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addQuarter = function (quarter = 1, checkDate = true) { - if (this.error) return this.error; - if (!quarter) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addQuarter.call(this, quarter, checkDate); - }; - - /** - * add to week - * @param {?Number|String} [week=1] - a number for add with week - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addWeek = function (week = 1, checkDate = true) { - if (this.error) return this.error; - if (!week) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addWeek.call(this, week, checkDate); - }; - - /** - * add to hour - * @param {?Number|String} [hour=1] - a number for add with hour - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addHour = function (hour = 1, checkDate = true) { - if (this.error) return this.error; - if (!hour) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addHour.call(this, hour, checkDate); - }; - - /** - * add to minute - * @param {?Number|String} [minute=1] - a number for add with minute - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addMinute = function (minute = 1, checkDate = true) { - if (this.error) return this.error; - if (!minute) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addMinute.call(this, minute, checkDate); - }; - - /** - * add to second - * @param {?Number|String} [second=1] - a number for add with second - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addSecond = function (second = 1, checkDate = true) { - if (this.error) return this.error; - if (!second) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addSecond.call(this, second, checkDate); - }; - - /** - * add to millisecond - * @param {?Number|String} [millisecond=1] - a number for add with millisecond - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.addMillisecond = function ( - millisecond = 1, - checkDate = true - ) { - if (this.error) return this.error; - if (!millisecond) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.addMillisecond.call(this, millisecond, checkDate); - }; - - /** - * subtract from year - * @param {?Number|String} [year=1] - a number for subtract from year - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subYear = function (year = 1, checkDate = true) { - if (this.error) return this.error; - if (!year) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subYear.call(this, year, checkDate); - }; - - /** - * subtract from month - * @param {?Number|String} [month=1] - a number for subtract from month - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subMonth = function (month = 1, checkDate = true) { - if (this.error) return this.error; - if (!month) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subMonth.call(this, month, checkDate); - }; - - /** - * subtract from day - * @param {?Number|String} [day=1] - a number for subtract from day - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subDay = function (day = 1, checkDate = true) { - if (this.error) return this.error; - if (!day) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subDay.call(this, day, checkDate); - }; - - /** - * subtract from quarter - * @param {?Number|String} [quarter=1] - a number for subtract from quarter - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subQuarter = function (quarter = 1, checkDate = true) { - if (this.error) return this.error; - if (!quarter) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subQuarter.call(this, quarter, checkDate); - }; - - /** - * subtract from week - * @param {?Number|String} [week=1] - a number for subtract from week - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subWeek = function (week = 1, checkDate = true) { - if (this.error) return this.error; - if (!week) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subWeek.call(this, week, checkDate); - }; - - /** - * subtract from hour - * @param {?Number|String} [hour=1] - a number for subtract from hour - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subHour = function (hour = 1, checkDate = true) { - if (this.error) return this.error; - if (!hour) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subHour.call(this, hour, checkDate); - }; - - /** - * subtract from minute - * @param {?Number|String} [minute=1] - a number for subtract from minute - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subMinute = function (minute = 1, checkDate = true) { - if (this.error) return this.error; - if (!minute) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subMinute.call(this, minute, checkDate); - }; - - /** - * subtract from second - * @param {?Number|String} [second=1] - a number for subtract from second - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subSecond = function (second = 1, checkDate = true) { - if (this.error) return this.error; - if (!second) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subSecond.call(this, second, checkDate); - }; - - /** - * subtract from millisecond - * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond - * @param {?Boolean} checkDate checks the result that the date is valid, - * If not valid, it will be deducted from the day to be valid - * @returns {PersianDate} return class with new date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.subMillisecond = function ( - millisecond = 1, - checkDate = true - ) { - if (this.error) return this.error; - if (!millisecond) return this; - return _add_sub__WEBPACK_IMPORTED_MODULE_3__.subMillisecond.call(this, millisecond, checkDate); - }; - - ////////////////////--------- conversion ---------///////////////////// - - /** - * returns date as string with specify format - * @param {?String} [format=date] - formatting date to string - * @returns {String} date string - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toString = function (format = "date") { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toString.call(this, format); - }; - - /** - * return the array of PersianDate - * @since 1.3.0 - * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year - * @param {String|Number} yearForamt.y - year format - * @param {Null|String|Number} yearForamt.year - year format - * @param {Null|String|Number} yearForamt.years - year format - * @param {Null|String|Number} yearForamt.M - month format - * @param {Null|String|Number} yearForamt.month - month format - * @param {Null|String|Number} yearForamt.months - month format - * @param {Null|String|Number} yearForamt.d - day format - * @param {Null|String|Number} yearForamt.day - day format - * @param {Null|String|Number} yearForamt.days - day format - * @param {Null|String|Number} yearForamt.date - day format - * @param {Null|String|Number} yearForamt.h - hour format - * @param {Null|String|Number} yearForamt.hour - hour format - * @param {Null|String|Number} yearForamt.hours - hour format - * @param {Null|String|Number} yearForamt.m - minute format - * @param {Null|String|Number} yearForamt.minute - minute format - * @param {Null|String|Number} yearForamt.minutes - minute format - * @param {Null|String|Number} yearForamt.s - second format - * @param {Null|String|Number} yearForamt.second - second format - * @param {Null|String|Number} yearForamt.seconds - second format - * @param {Null|String|Number} yearForamt.ms - millisecond format - * @param {Null|String|Number} yearForamt.millisecond - millisecond format - * @param {Null|String|Number} yearForamt.milliseconds - millisecond format - * @param {Null|Number|String} monthFormat month format - * @param {Null|Number|String} dayFormat day format - * @param {Null|Number|String} hourFormat hour format - * @param {Null|Number|String} minuteFormat minute format - * @param {Null|Number|String} secondFormat second format - * @param {Null|Number|String} millisecondFormat millisecond format - * @returns {Object} if date valid, return array of date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toArray = function () { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toArray.call(this, ...arguments); - }; - - /** - * return the object of PersianDate - * @since 1.3.0 - * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year - * @param {String|Number} yearForamt.y - year format - * @param {Null|String|Number} yearForamt.year - year format - * @param {Null|String|Number} yearForamt.years - year format - * @param {Null|String|Number} yearForamt.M - month format - * @param {Null|String|Number} yearForamt.month - month format - * @param {Null|String|Number} yearForamt.months - month format - * @param {Null|String|Number} yearForamt.d - day format - * @param {Null|String|Number} yearForamt.day - day format - * @param {Null|String|Number} yearForamt.days - day format - * @param {Null|String|Number} yearForamt.date - day format - * @param {Null|String|Number} yearForamt.h - hour format - * @param {Null|String|Number} yearForamt.hour - hour format - * @param {Null|String|Number} yearForamt.hours - hour format - * @param {Null|String|Number} yearForamt.m - minute format - * @param {Null|String|Number} yearForamt.minute - minute format - * @param {Null|String|Number} yearForamt.minutes - minute format - * @param {Null|String|Number} yearForamt.s - second format - * @param {Null|String|Number} yearForamt.second - second format - * @param {Null|String|Number} yearForamt.seconds - second format - * @param {Null|String|Number} yearForamt.ms - millisecond format - * @param {Null|String|Number} yearForamt.millisecond - millisecond format - * @param {Null|String|Number} yearForamt.milliseconds - millisecond format - * @param {Null|Number|String} monthFormat month format - * @param {Null|Number|String} dayFormat day format - * @param {Null|Number|String} hourFormat hour format - * @param {Null|Number|String} minuteFormat minute format - * @param {Null|Number|String} secondFormat second format - * @param {Null|Number|String} millisecondFormat millisecond format - * @returns {Object} if date valid, return Object of date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toObject = function () { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toObject.call(this, ...arguments); - }; - - /** - * return the Date instance of PersianDate - * @since 2.0.0 - * @returns {Date} if date valid, return Date instance of date - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.toDate = function () { - if (this.error) return this.error; - return _conversion__WEBPACK_IMPORTED_MODULE_4__.toDate.call(this); - }; - - ////////////////////--------- diff ---------///////////////////// - - /** - * get the diffrence between two date - * @since 1.4.0 - * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date - * @param {String|Number} date.y - year of date - * @param {Null|String|Number} date.year - year of date - * @param {Null|String|Number} date.years - year of date - * @param {Null|String|Number} date.M - month of date - * @param {Null|String|Number} date.month - month of date - * @param {Null|String|Number} date.months - month of date - * @param {Null|String|Number} date.d - day of date - * @param {Null|String|Number} date.day - day of date - * @param {Null|String|Number} date.days - day of date - * @param {Null|String|Number} date.date - day of date - * @param {Null|String|Number} date.h - hour of date - * @param {Null|String|Number} date.hour - hour of date - * @param {Null|String|Number} date.hours - hour of date - * @param {Null|String|Number} date.m - minute of date - * @param {Null|String|Number} date.minute - minute of date - * @param {Null|String|Number} date.minutes - minute of date - * @param {Null|String|Number} date.s - second of date - * @param {Null|String|Number} date.second - second of date - * @param {Null|String|Number} date.seconds - second of date - * @param {Null|String|Number} date.ms - millisecond of date - * @param {Null|String|Number} date.millisecond - millisecond of date - * @param {Null|String|Number} date.milliseconds - millisecond of date - * @param {String} unit - the unit of the measurment - * @param {Boolean} addOne - add one day to result - * @returns {Number} diffrence - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.diff = function (date, unit, addOne = false) { - if (this.error) return this.error; - return _diff__WEBPACK_IMPORTED_MODULE_6__.diff.call(this, date, unit, addOne); - }; - - /** - * get the diffrence between two date in a human-readable format - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date - * @param {String|Number} date.y - year of date - * @param {Null|String|Number} date.year - year of date - * @param {Null|String|Number} date.years - year of date - * @param {Null|String|Number} date.M - month of date - * @param {Null|String|Number} date.month - month of date - * @param {Null|String|Number} date.months - month of date - * @param {Null|String|Number} date.d - day of date - * @param {Null|String|Number} date.day - day of date - * @param {Null|String|Number} date.days - day of date - * @param {Null|String|Number} date.date - day of date - * @param {Null|String|Number} date.h - hour of date - * @param {Null|String|Number} date.hour - hour of date - * @param {Null|String|Number} date.hours - hour of date - * @param {Null|String|Number} date.m - minute of date - * @param {Null|String|Number} date.minute - minute of date - * @param {Null|String|Number} date.minutes - minute of date - * @param {Null|String|Number} date.s - second of date - * @param {Null|String|Number} date.second - second of date - * @param {Null|String|Number} date.seconds - second of date - * @param {Null|String|Number} date.ms - millisecond of date - * @param {Null|String|Number} date.millisecond - millisecond of date - * @param {Null|String|Number} date.milliseconds - millisecond of date - * @param {Boolean} suffix - add suffix or not - * @returns {String} if date valid, return diff human-readable format - * @throws {String} if date invalid return error message - */ - PersianDate.prototype.diffForHumans = function (date, suffix = true) { - if (this.error) return this.error; - return _diff__WEBPACK_IMPORTED_MODULE_6__.diffForHumans.call(this, date, suffix); - }; - - ////////////////////--------- comparison ---------///////////////////// - - /** - * returns minimum date in arguments that passed - * @since 1.4.0 - * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; - * @param {String} date.y - year of date - * @param {Null|String} date.year - year of date - * @param {Null|String} date.years - year of date - * @param {Null|String} date.M - month of date - * @param {Null|String} date.month - month of date - * @param {Null|String} date.months - month of date - * @param {Null|String} date.d - day of date - * @param {Null|String} date.day - day of date - * @param {Null|String} date.days - day of date - * @param {Null|String} date.date - day of date - * @param {Null|String} date.h - hour of date - * @param {Null|String} date.hour - hour of date - * @param {Null|String} date.hours - hour of date - * @param {Null|String} date.m - minute of date - * @param {Null|String} date.minute - minute of date - * @param {Null|String} date.minutes - minute of date - * @param {Null|String} date.s - second of date - * @param {Null|String} date.second - second of date - * @param {Null|String} date.seconds - second of date - * @param {Null|String} date.ms - millisecond of date - * @param {Null|String} date.millisecond - millisecond of date - * @param {Null|String} date.milliseconds - millisecond of date - * @returns {*} return minimum date - * @throws {false} if parameters not send or parameters is invalid, return false - */ - PersianDate.prototype.min = function () { - return _base__WEBPACK_IMPORTED_MODULE_0__.mathOperation.call(this, arguments, "min"); - }; - - /** - * returns maximum date in arguments that passed - * @since 1.4.0 - * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; - * @param {String} date.y - year of date - * @param {Null|String} date.year - year of date - * @param {Null|String} date.years - year of date - * @param {Null|String} date.M - month of date - * @param {Null|String} date.month - month of date - * @param {Null|String} date.months - month of date - * @param {Null|String} date.d - day of date - * @param {Null|String} date.day - day of date - * @param {Null|String} date.days - day of date - * @param {Null|String} date.date - day of date - * @param {Null|String} date.h - hour of date - * @param {Null|String} date.hour - hour of date - * @param {Null|String} date.hours - hour of date - * @param {Null|String} date.m - minute of date - * @param {Null|String} date.minute - minute of date - * @param {Null|String} date.minutes - minute of date - * @param {Null|String} date.s - second of date - * @param {Null|String} date.second - second of date - * @param {Null|String} date.seconds - second of date - * @param {Null|String} date.ms - millisecond of date - * @param {Null|String} date.millisecond - millisecond of date - * @param {Null|String} date.milliseconds - millisecond of date - * @returns {*} return maximum date - * @throws {false} if parameters not send or parameters is invalid, return false - */ - PersianDate.prototype.max = function () { - return _base__WEBPACK_IMPORTED_MODULE_0__.mathOperation.call(this, arguments, "max"); - }; - - /** - * receives year and determined that is leap year or not - * @param {?Number} year - the year to be determined is a leap or not - * @returns {Boolean} if is leap year, returns true - */ - PersianDate.prototype.isLeapYear = function (year = this.d.year) { - if (this.error) return false; - return (0,_comparison__WEBPACK_IMPORTED_MODULE_5__.isLeapYear)(this.c, year); - }; - - /** - * checks the persian date and time - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid, returns true - */ - PersianDate.prototype.isValid = function ( - year, - month, - day, - hour, - minute, - second, - millisecond - ) { - if (this.error) return false; - return ( - this.isValidDate(year, month, day) && - this.isValidTime(hour, minute, second, millisecond) - ); - }; - - /** - * checks the persian date - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @returns {Boolean} if is valid date, returns true - */ - PersianDate.prototype.isValidDate = function ( - year = this.d.year, - month = this.d.month, - day = this.d.date - ) { - if (this.error) return false; - return (0,_comparison__WEBPACK_IMPORTED_MODULE_5__.isValidDate)(this.c, year, month, day); - }; - - /** - * checks the time - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid time, returns true - */ - PersianDate.prototype.isValidTime = function ( - hour = this.d.hour, - minute = this.d.minute, - second = this.d.second, - millisecond = this.d.millisecond - ) { - if (this.error) return false; - return (0,_comparison__WEBPACK_IMPORTED_MODULE_5__.isValidTime)(hour, minute, second, millisecond); - }; - - /** - * checks this date is the same to another date - * @since 1.1.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isSame = function () { - if (this.error) return false; - return _comparison__WEBPACK_IMPORTED_MODULE_5__.isSame.call(this, ...arguments); - }; - - /** - * checks this date is before the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isBefore = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, "<"); - }; - - /** - * checks this date is after the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isAfter = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, ">"); - }; - - /** - * checks this date is same or before the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isSameOrBefore = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, "<="); - }; - - /** - * checks this date is same or after the another date - * @since 1.2.0 - * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false - */ - PersianDate.prototype.isSameOrAfter = function () { - if (this.error) return false; - return _base__WEBPACK_IMPORTED_MODULE_0__.compare.call(this, arguments, ">="); - }; - - /** - * checks this date is between the another dates - * @since 1.3.0 - * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date - * @param {String|Number} from.y - year of date - * @param {Null|String|Number} from.year - year of date - * @param {Null|String|Number} from.years - year of date - * @param {Null|String|Number} from.M - month of date - * @param {Null|String|Number} from.month - month of date - * @param {Null|String|Number} from.months - month of date - * @param {Null|String|Number} from.d - day of date - * @param {Null|String|Number} from.day - day of date - * @param {Null|String|Number} from.days - day of date - * @param {Null|String|Number} from.date - day of date - * @param {Null|String|Number} from.h - hour of date - * @param {Null|String|Number} from.hour - hour of date - * @param {Null|String|Number} from.hours - hour of date - * @param {Null|String|Number} from.m - minute of date - * @param {Null|String|Number} from.minute - minute of date - * @param {Null|String|Number} from.minutes - minute of date - * @param {Null|String|Number} from.s - second of date - * @param {Null|String|Number} from.second - second of date - * @param {Null|String|Number} from.seconds - second of date - * @param {Null|String|Number} from.ms - millisecond of date - * @param {Null|String|Number} from.millisecond - millisecond of date - * @param {Null|String|Number} from.milliseconds - millisecond of date - * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date - * @param {String|Number} to.y - year of date - * @param {Null|String|Number} to.year - year of date - * @param {Null|String|Number} to.years - year of date - * @param {Null|String|Number} to.M - month of date - * @param {Null|String|Number} to.month - month of date - * @param {Null|String|Number} to.months - month of date - * @param {Null|String|Number} to.d - day of date - * @param {Null|String|Number} to.day - day of date - * @param {Null|String|Number} to.days - day of date - * @param {Null|String|Number} to.date - day of date - * @param {Null|String|Number} to.h - hour of date - * @param {Null|String|Number} to.hour - hour of date - * @param {Null|String|Number} to.hours - hour of date - * @param {Null|String|Number} to.m - minute of date - * @param {Null|String|Number} to.minute - minute of date - * @param {Null|String|Number} to.minutes - minute of date - * @param {Null|String|Number} to.s - second of date - * @param {Null|String|Number} to.second - second of date - * @param {Null|String|Number} to.seconds - second of date - * @param {Null|String|Number} to.ms - millisecond of date - * @param {Null|String|Number} to.millisecond - millisecond of date - * @param {Null|String|Number} to.milliseconds - millisecond of date - * @param {String} method - determines that consider the dates themselves - * @returns {‌Boolean} if date valid, return true or false - */ - PersianDate.prototype.isBetween = function (from, to, method = "()") { - if (this.error) return false; - return _comparison__WEBPACK_IMPORTED_MODULE_5__.isBetween.call(this, from, to, method); - }; - - /** - * checks date is a native js Date object - * @since 1.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a native js Date, return true - */ - PersianDate.prototype.isDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isDate; - - /** - * checks date is a PersianDate object - * @since 1.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a PersianDate, return true - */ - PersianDate.prototype.isPersianDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isPersianDate; - - if (calendarVal) this.calendar(calendarVal); - if (dateVal) { - if (calendarVal && calendarVal[0] == "j") this.fromJalali(dateVal); - else this.fromGregorian(dateVal); - } else this.now(); -}; - -////////////////////--------- statics ---------///////////////////// - -/** - * receives year and determined that is leap year or not - * @static - * @since 2.3.0 - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {Number} year - the year to be determined is a leap or not - * @returns {Boolean} if is leap year, returns true - */ -PersianDate.isLeapYear = _comparison__WEBPACK_IMPORTED_MODULE_5__.isLeapYear; - -/** - * checks date is a native js Date object - * @static - * @since 2.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a native js Date, return true - */ -PersianDate.isDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isDate; - -/** - * checks date is a PersianDate object - * @static - * @since 2.3.0 - * @param {*} date date that must be checked - * @returns {Boolean} if date is a PersianDate, return true - */ -PersianDate.isPersianDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isPersianDate; - -/** - * checks the date and time - * @static - * @since 2.4.0 - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid, returns true - */ -PersianDate.isValid = _comparison__WEBPACK_IMPORTED_MODULE_5__.isValid; - -/** - * checks the date - * @static - * @since 2.4.0 - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {?Number} year - year of date that will be checked - * @param {?Number} month - month of date that will be checked - * @param {?Number} day - day of date that will be checked - * @returns {Boolean} if is valid date, returns true - */ -PersianDate.isValidDate = _comparison__WEBPACK_IMPORTED_MODULE_5__.isValidDate; - -/** - * checks the time - * @static - * @since 2.4.0 - * @param {?Number} hour - hour of date that will be checked - * @param {?Number} minute - minute of date that will be checked - * @param {?Number} second - second of date that will be checked - * @param {?Number} millisecond - millisecond of date that will be checked - * @returns {Boolean} if is valid time, returns true - */ -PersianDate.isValidTime = _comparison__WEBPACK_IMPORTED_MODULE_5__.isValidTime; - -/** - * returns number of days in month - * @param {"jalali"|"gregorian"} calendar - the calendar - * @param {?Number} year - year of date that returns number of days in month - * @param {?Number} month - month of date that returns number of days in month - * @returns {Number} number of days in month - * @throws {String} if date invalid return error message - */ -PersianDate.getDaysInMonth = _set_get__WEBPACK_IMPORTED_MODULE_2__.getDaysInMonth; - -//TODO: add localization - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PersianDate); - -////////////////////- Email: Alibeikialireza@gmail.com -//////////////////// -////////////////////--------- Have A Good Day ---------///////////////////// - - -/***/ }), - -/***/ "./src/add-sub/addDay.js": -/*!*******************************!*\ - !*** ./src/add-sub/addDay.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addDay": () => (/* binding */ addDay) -/* harmony export */ }); -function addDay(day) { - if (day < 0) - // if the number was negative, send to subDay method - return this.subDay(Math.abs(day)); - day = +day; //plus sign before a variable, convert variable to int - - const dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month - if (dayToStartNextMonth > day) { - this.d.date += day; - } else { - this.addMonth(1, false); - this.d.date = 1; - day -= dayToStartNextMonth; - let daysInMonth = this.getDaysInMonth(); - while (day >= daysInMonth) { - day -= daysInMonth; - this.addMonth(1, false); - daysInMonth = this.getDaysInMonth(); - } - if (day != 0) { - this.d.date += day; - } - } - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addHour.js": -/*!********************************!*\ - !*** ./src/add-sub/addHour.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addHour": () => (/* binding */ addHour) -/* harmony export */ }); -function addHour(hour) { - if (hour < 0) - // if the number was negative, send to subHour method - return this.subHour(Math.abs(hour)); - hour = +hour; //plus sign before a variable, convert variable to int - while (hour >= 24) { - hour -= 24; - this.addDay(1, false); - } - const hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day - if (hour >= hourToNextDay) { - this.addDay(1, false); - hour -= hourToNextDay; - this.d.hour = hour; - } else this.d.hour += hour; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addMillisecond.js": -/*!***************************************!*\ - !*** ./src/add-sub/addMillisecond.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addMillisecond": () => (/* binding */ addMillisecond) -/* harmony export */ }); -function addMillisecond(millisecond) { - if (millisecond < 0) - // if the number was negative, send to subMillisecond method - return this.subMillisecond(Math.abs(millisecond)); - millisecond = +millisecond; //plus sign before a variable, convert variable to int - while (millisecond >= 1000) { - this.addSecond(1, false); - millisecond -= 1000; - } - const millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second - if (millisecond >= millisecondToNextSecond) { - this.addSecond(1, false); - millisecond -= millisecondToNextSecond; - this.d.millisecond = millisecond; - } else this.d.millisecond += millisecond; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addMinute.js": -/*!**********************************!*\ - !*** ./src/add-sub/addMinute.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addMinute": () => (/* binding */ addMinute) -/* harmony export */ }); -function addMinute(minute) { - if (minute < 0) - // if the number was negative, send to subMinute method - return this.subMinute(Math.abs(minute)); - minute = +minute; //plus sign before a variable, convert variable to int - while (minute >= 60) { - this.addHour(1, false); - minute -= 60; - } - const minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour - if (minute >= minuteToNextHour) { - this.addHour(1, false); - minute -= minuteToNextHour; - this.d.minute = minute; - } else this.d.minute += minute; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addMonth.js": -/*!*********************************!*\ - !*** ./src/add-sub/addMonth.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addMonth": () => (/* binding */ addMonth) -/* harmony export */ }); -function addMonth(month, checkDate) { - if (month < 0) - // if the number was negative, send to subMonth method - return this.subMonth(Math.abs(month)); - month = +month; // plus sign before a variable, convert variable to int - - const monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year - if (monthToStartNewYear > month) { - this.d.month += month; - } else { - this.addYear(1, false); - this.d.month = 1; - month -= monthToStartNewYear; - while (month >= 12) { - month -= 12; - this.addYear(1, false); - } - if (month != 0) { - this.d.month += month; - } - } - - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addQuarter.js": -/*!***********************************!*\ - !*** ./src/add-sub/addQuarter.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addQuarter": () => (/* binding */ addQuarter) -/* harmony export */ }); -function addQuarter(quarter, checkDate) { - // if the number was negative, send to subQuarter method - if (quarter < 0) return this.subQuarter(Math.abs(quarter)); - return this.addMonth(+quarter * 3, checkDate); -} - - -/***/ }), - -/***/ "./src/add-sub/addSecond.js": -/*!**********************************!*\ - !*** ./src/add-sub/addSecond.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addSecond": () => (/* binding */ addSecond) -/* harmony export */ }); -function addSecond(second) { - if (second < 0) - // if the number was negative, send to subSecond method - return this.subSecond(Math.abs(second)); - second = +second; //plus sign before a variable, convert variable to int - while (second >= 60) { - this.addMinute(1, false); - second -= 60; - } - const secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute - if (second >= secondToNextMinute) { - this.addMinute(1, false); - second -= secondToNextMinute; - this.d.second = second; - } else this.d.second += second; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/addWeek.js": -/*!********************************!*\ - !*** ./src/add-sub/addWeek.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addWeek": () => (/* binding */ addWeek) -/* harmony export */ }); -function addWeek(week, checkDate) { - // if the number was negative, send to subWeek method - if (week < 0) return this.subWeek(Math.abs(week)); - return this.addDay(+week * 7, checkDate); -} - - -/***/ }), +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.PersianDate = factory()); +}(this, (function () { 'use strict'; + + var CALENDAR = { + jalali: { + months: { + 1: "فروردین", + 2: "اردیبهشت", + 3: "خرداد", + 4: "تیر", + 5: "مرداد", + 6: "شهریور", + 7: "مهر", + 8: "آبان", + 9: "آذر", + 10: "دی", + 11: "بهمن", + 12: "اسفند" + }, + days: { + label: { + 6: "شنبه", + 0: "یکشنبه", + 1: "دوشنبه", + 2: "سه‌شنبه", + 3: "چهارشنبه", + 4: "پنجشنبه", + 5: "جمعه" + }, + weekNumber: { + // days in jalali calendar start from saturday or 6 + 6: 0, + //شنبه + 0: 1, + //یکشنبه + 1: 2, + //دوشنبه + 2: 3, + //سه‌شنبه + 3: 4, + //چهارشنبه + 4: 5, + //پنجشنبه + 5: 6 //جمعه + + } + }, + ordinalNumbers: function ordinalNumbers(number, mode) { + var numbers = { + 1: "یک", + 2: "دو", + 3: "سو", + 4: "چهار", + 5: "پنج", + 6: "شش", + 7: "هفت", + 8: "هشت", + 9: "نه", + 10: "ده", + 11: "یازده", + 12: "دوازده", + 13: "سیزده", + 14: "چهارده", + 15: "پانزده", + 16: "شانزده", + 17: "هفده", + 18: "هجده", + 19: "نوزده", + 20: "بیست", + 30: "سی‌", + 40: "چهل", + 50: "پنجاه", + 60: "شصت", + 70: "هفتاد", + 80: "هشتاد", + 90: "نود", + 100: "صد", + 200: "دویست", + 300: "سیصد" + }; + var ordinalNumber = ""; + if (number == 1) ordinalNumber = "اول";else if (numbers[number]) ordinalNumber = numbers[number] + (number == 30 ? "ام" : "م");else { + var remainder = number % 100; + if (numbers[remainder]) ordinalNumber = numbers[remainder] + "م";else { + remainder = number % 10; + if (remainder) ordinalNumber = numbers[remainder] + "م"; + } + remainder = (number - remainder) % 100; + if (remainder) ordinalNumber = numbers[remainder] + (ordinalNumber ? " و " + ordinalNumber : remainder == 30 ? "ام " : "م"); + remainder = Math.floor(number / 100) * 100; + if (remainder) ordinalNumber = numbers[remainder] + (ordinalNumber ? " و " + ordinalNumber : "م"); + } + if (mode == 2) ordinalNumber += "ین"; + return ordinalNumber; + } + }, + gregorian: { + months: { + 1: "January", + 2: "February", + 3: "March", + 4: "April", + 5: "May", + 6: "June", + 7: "July", + 8: "August", + 9: "September", + 10: "October", + 11: "November", + 12: "December" + }, + days: { + label: { + 0: "Sunday", + 1: "Monday", + 2: "Tuesday", + 3: "Wednesday", + 4: "Thursday", + 5: "Friday", + 6: "Saturday" + }, + weekNumber: { + // days in gregorian calendar start from sunday or 0 + 0: 0, + // Sunday + 1: 1, + // Monday + 2: 2, + // Tuesday + 3: 3, + // Wednesday + 4: 4, + // Thursday + 5: 5, + // Friday + 6: 6 // Saturday + + } + }, + ordinalNumbers: function ordinalNumbers(number) { + if (number == 1 || number % 10 == 1 && number != 11) return number + "st";else if (number == 2 || number % 10 == 2 && number != 12) return number + "nd";else if (number == 3 || number % 10 == 3 && number != 13) return number + "rd";else return number + "th"; + } + } + }; + var REGEX = { + format: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g, + isNumeric: /^\d+$/, + // this regex, checks input to see is a number or not + separators: "\\/| |-|\\.|,|:", + // find ['/',' ','-','.',',',':'] and split string to array by this symbols + betweenBacktick: /`(.*?)`/g // find the texts between the backticks ==> `Alireza` -/***/ "./src/add-sub/addYear.js": -/*!********************************!*\ - !*** ./src/add-sub/addYear.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + }; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addYear": () => (/* binding */ addYear) -/* harmony export */ }); -function addYear(year, checkDate) { - // if the number was negative, send to subYear method - if (year < 0) return this.subYear(Math.abs(year)); - this.d.year += +year; //plus sign before a variable, convert variable to int - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/index.js": -/*!******************************!*\ - !*** ./src/add-sub/index.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addYear": () => (/* reexport safe */ _addYear__WEBPACK_IMPORTED_MODULE_0__.addYear), -/* harmony export */ "addQuarter": () => (/* reexport safe */ _addQuarter__WEBPACK_IMPORTED_MODULE_1__.addQuarter), -/* harmony export */ "addMonth": () => (/* reexport safe */ _addMonth__WEBPACK_IMPORTED_MODULE_2__.addMonth), -/* harmony export */ "addWeek": () => (/* reexport safe */ _addWeek__WEBPACK_IMPORTED_MODULE_3__.addWeek), -/* harmony export */ "addDay": () => (/* reexport safe */ _addDay__WEBPACK_IMPORTED_MODULE_4__.addDay), -/* harmony export */ "addHour": () => (/* reexport safe */ _addHour__WEBPACK_IMPORTED_MODULE_5__.addHour), -/* harmony export */ "addMinute": () => (/* reexport safe */ _addMinute__WEBPACK_IMPORTED_MODULE_6__.addMinute), -/* harmony export */ "addSecond": () => (/* reexport safe */ _addSecond__WEBPACK_IMPORTED_MODULE_7__.addSecond), -/* harmony export */ "addMillisecond": () => (/* reexport safe */ _addMillisecond__WEBPACK_IMPORTED_MODULE_8__.addMillisecond), -/* harmony export */ "subYear": () => (/* reexport safe */ _subYear__WEBPACK_IMPORTED_MODULE_9__.subYear), -/* harmony export */ "subQuarter": () => (/* reexport safe */ _subQuarter__WEBPACK_IMPORTED_MODULE_10__.subQuarter), -/* harmony export */ "subMonth": () => (/* reexport safe */ _subMonth__WEBPACK_IMPORTED_MODULE_11__.subMonth), -/* harmony export */ "subWeek": () => (/* reexport safe */ _subWeek__WEBPACK_IMPORTED_MODULE_12__.subWeek), -/* harmony export */ "subDay": () => (/* reexport safe */ _subDay__WEBPACK_IMPORTED_MODULE_13__.subDay), -/* harmony export */ "subHour": () => (/* reexport safe */ _subHour__WEBPACK_IMPORTED_MODULE_14__.subHour), -/* harmony export */ "subMinute": () => (/* reexport safe */ _subMinute__WEBPACK_IMPORTED_MODULE_15__.subMinute), -/* harmony export */ "subSecond": () => (/* reexport safe */ _subSecond__WEBPACK_IMPORTED_MODULE_16__.subSecond), -/* harmony export */ "subMillisecond": () => (/* reexport safe */ _subMillisecond__WEBPACK_IMPORTED_MODULE_17__.subMillisecond) -/* harmony export */ }); -/* harmony import */ var _addYear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addYear */ "./src/add-sub/addYear.js"); -/* harmony import */ var _addQuarter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addQuarter */ "./src/add-sub/addQuarter.js"); -/* harmony import */ var _addMonth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addMonth */ "./src/add-sub/addMonth.js"); -/* harmony import */ var _addWeek__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./addWeek */ "./src/add-sub/addWeek.js"); -/* harmony import */ var _addDay__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addDay */ "./src/add-sub/addDay.js"); -/* harmony import */ var _addHour__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./addHour */ "./src/add-sub/addHour.js"); -/* harmony import */ var _addMinute__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./addMinute */ "./src/add-sub/addMinute.js"); -/* harmony import */ var _addSecond__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./addSecond */ "./src/add-sub/addSecond.js"); -/* harmony import */ var _addMillisecond__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./addMillisecond */ "./src/add-sub/addMillisecond.js"); -/* harmony import */ var _subYear__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./subYear */ "./src/add-sub/subYear.js"); -/* harmony import */ var _subQuarter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./subQuarter */ "./src/add-sub/subQuarter.js"); -/* harmony import */ var _subMonth__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./subMonth */ "./src/add-sub/subMonth.js"); -/* harmony import */ var _subWeek__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./subWeek */ "./src/add-sub/subWeek.js"); -/* harmony import */ var _subDay__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./subDay */ "./src/add-sub/subDay.js"); -/* harmony import */ var _subHour__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./subHour */ "./src/add-sub/subHour.js"); -/* harmony import */ var _subMinute__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./subMinute */ "./src/add-sub/subMinute.js"); -/* harmony import */ var _subSecond__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./subSecond */ "./src/add-sub/subSecond.js"); -/* harmony import */ var _subMillisecond__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./subMillisecond */ "./src/add-sub/subMillisecond.js"); + var TIMETYPE = function TIMETYPE(hour, format) { + if (hour >= 0 && hour < 12) { + if (format == "a") return "am";else if (format == "aa") return "A.M.";else if (format == "A") return "AM";else if (format == "ja") return "ق ظ";else if (format == "jaa") return "ق.ظ";else if (format == "jA") return "قبل از ظهر"; + return "ق.ظ"; + } else if (hour >= 12 && hour < 24) { + if (format == "a") return "pm";else if (format == "aa") return "P.M.";else if (format == "A") return "PM";else if (format == "ja") return "ب ظ";else if (format == "jaa") return "ب.ظ";else if (format == "jA") return "بعد از ظهر"; + return "ب.ظ"; + } + }; + var isDate = function isDate(date) { + return date instanceof Date; + }; + var jalali$4 = function jalali(year) { + var array = year > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30]; + var remainder = year % 33; + return array.includes(remainder); + }; + var gregorian$4 = function gregorian(year) { + return year % 4 == 0 && year % 100 != 0 || year % 400 == 0; + }; + var isLeapYear = function isLeapYear(calendar, year) { + // calendar[0] ==> first letter of calendar ('j' | 'g' | ...) + switch (calendar[0]) { + case "j": + return jalali$4(year); + default: + return gregorian$4(year); + } + }; + var isPersianDate = function isPersianDate(date) { + return date instanceof PersianDate; + }; + var isValid = function isValid(calendar, year, month, day, hour, minute, second, millisecond) { + return isValidDate(calendar, year, month, day) && isValidTime(hour, minute, second, millisecond); + }; + var jalali$3 = function jalali(year, month, day) { + if (month >= 7 && month <= 11 && day == 31) return false; + if (month == 12 && day == 31) return false; + if (month == 12 && day == 30 && !isLeapYear("j", year)) return false; + return true; + }; + var gregorian$3 = function gregorian(year, month, day) { + if ([2, 4, 6, 9, 11].includes(month) && day == 31) return false; + if (month == 2 && (day == 30 || day == 29 && !isLeapYear("g", year))) return false; + return true; + }; + var isValidDate = function isValidDate(calendar, year, month, day) { + if ([year, month, day].some(function (e) { + return String(e).search(/null|NaN/) != -1; + })) return false; + if (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false; + switch (calendar[0]) { + case "j": + return jalali$3(year, month, day); + default: + return gregorian$3(year, month, day); + } + }; + var isValidTime = function isValidTime(hour, minute, second, millisecond) { + if ([hour, minute, second, millisecond].some(function (e) { + return String(e).search(/null|NaN/) != -1; + })) return false; + if (hour < 0 || hour > 23) return false; + if (minute < 0 || minute > 59) return false; + if (second < 0 || second > 59) return false; + if (millisecond < 0 || millisecond > 999) return false; + return true; + }; + function isSame() { + var date = typesToArray.apply(void 0, [this.c].concat(Array.prototype.slice.call(arguments))); + date = this.toArray().map(function (value, i) { + return REGEX["isNumeric"].test(date[i]) ? date[i] : value; + }); + return compare.call(this, date, "=="); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); + } + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } -/***/ }), + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } -/***/ "./src/add-sub/subDay.js": -/*!*******************************!*\ - !*** ./src/add-sub/subDay.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subDay": () => (/* binding */ subDay) -/* harmony export */ }); -function subDay(day) { - day = Math.abs(day); - let pastDays = this.d.date; // pastDays -> Number of days that is past - if (pastDays > day) { - this.d.date -= day; - } else { - this.subMonth(1, false); - let daysInMonth = this.getDaysInMonth(); - this.d.date = daysInMonth; - day -= pastDays; - while (day >= daysInMonth) { - day -= daysInMonth; - this.subMonth(1, false); - daysInMonth = this.getDaysInMonth(); - } - this.d.date = daysInMonth - day; + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } - return this; -} + function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } -/***/ }), + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; -/***/ "./src/add-sub/subHour.js": -/*!********************************!*\ - !*** ./src/add-sub/subHour.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subHour": () => (/* binding */ subHour) -/* harmony export */ }); -function subHour(hour) { - hour = Math.abs(hour); - while (hour >= 24) { - hour -= 24; - this.subDay(1, false); - } - const pastHours = this.d.hour; // pastHours -> Number of hours that is past - if (hour > pastHours) { - this.subDay(1, false); - hour -= pastHours; - this.d.hour = 24 - hour; - } else this.d.hour -= hour; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subMillisecond.js": -/*!***************************************!*\ - !*** ./src/add-sub/subMillisecond.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subMillisecond": () => (/* binding */ subMillisecond) -/* harmony export */ }); -function subMillisecond(millisecond) { - millisecond = Math.abs(millisecond); - while (millisecond >= 1000) { - millisecond -= 1000; - this.subSecond(1, false); - } - const pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past - if (millisecond > pastMilliseconds) { - this.subSecond(1, false); - millisecond -= pastMilliseconds; - this.d.millisecond = 1000 - millisecond; - } else this.d.millisecond -= millisecond; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subMinute.js": -/*!**********************************!*\ - !*** ./src/add-sub/subMinute.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subMinute": () => (/* binding */ subMinute) -/* harmony export */ }); -function subMinute(minute) { - minute = Math.abs(minute); - while (minute >= 60) { - minute -= 60; - this.subHour(1, false); - } - const pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past - if (minute > pastMinute) { - this.subHour(1, false); - minute -= pastMinute; - this.d.minute = 60 - minute; - } else this.d.minute -= minute; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subMonth.js": -/*!*********************************!*\ - !*** ./src/add-sub/subMonth.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subMonth": () => (/* binding */ subMonth) -/* harmony export */ }); -function subMonth(month, checkDate) { - month = Math.abs(month); //plus sign before a variable, convert variable to int - const pastMonth = this.d.month; //pastMonth -> Number of month that is past - if (pastMonth > month) { - this.d.month -= month; - } else { - this.subYear(1, false); - this.d.month = 12; - month -= pastMonth; - while (month >= 12) { - this.subYear(1, false); - month -= 12; - } - if (month != 0) { - this.d.month -= month; - } + return arr2; } - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subQuarter.js": -/*!***********************************!*\ - !*** ./src/add-sub/subQuarter.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subQuarter": () => (/* binding */ subQuarter) -/* harmony export */ }); -function subQuarter(quarter, checkDate) { - quarter = Math.abs(quarter); - return this.subMonth(quarter * 3, checkDate); -} - - -/***/ }), - -/***/ "./src/add-sub/subSecond.js": -/*!**********************************!*\ - !*** ./src/add-sub/subSecond.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subSecond": () => (/* binding */ subSecond) -/* harmony export */ }); -function subSecond(second) { - second = Math.abs(second); - while (second >= 60) { - second -= 60; - this.subMinute(1, false); - } - const pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past - if (second > pastSeconds) { - this.subMinute(1, false); - second -= pastSeconds; - this.d.second = 60 - second; - } else this.d.second -= second; - - return this; -} - - -/***/ }), - -/***/ "./src/add-sub/subWeek.js": -/*!********************************!*\ - !*** ./src/add-sub/subWeek.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subWeek": () => (/* binding */ subWeek) -/* harmony export */ }); -function subWeek(week, checkDate) { - week = Math.abs(week); - return this.subDay(week * 7, checkDate); -} - - -/***/ }), - -/***/ "./src/add-sub/subYear.js": -/*!********************************!*\ - !*** ./src/add-sub/subYear.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "subYear": () => (/* binding */ subYear) -/* harmony export */ }); -function subYear(year, checkDate) { - this.d.year -= Math.abs(year); - while (checkDate && !this.isValidDate()) this.subDay(1, false); - return this; -} - - -/***/ }), - -/***/ "./src/base/addPrefix.js": -/*!*******************************!*\ - !*** ./src/base/addPrefix.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "addPrefix": () => (/* binding */ addPrefix) -/* harmony export */ }); -/** - * add a prefix to the text in the number of characters that the text has less - * @param {String|Number} text a text need prefix - * @param {Number} length length of text - * @param {String} [prefix=0] - string for add before of text - * @returns {String} text with or wihtout prefix - */ -const addPrefix = (text, length, prefix = "0") => { - return prefix.repeat(length - String(text).length) + text; -}; - - -/***/ }), - -/***/ "./src/base/compare.js": -/*!*****************************!*\ - !*** ./src/base/compare.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "compare": () => (/* binding */ compare) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -/** - * compare the dates - * @since 2.0.0 - * @param {PersianDate|Date|String|Array|Object} date - the date - * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare - * @returns {‌Boolean} if date valid, return true of false - */ -const compare = function (date, operator) { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...date); - - if (this.isValid(...date)) - return eval( - "this.timestamp()" + operator + "this.clone().parse(...date).timestamp()" - ); - return false; -}; - - -/***/ }), - -/***/ "./src/base/error.js": -/*!***************************!*\ - !*** ./src/base/error.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "error": () => (/* binding */ error) -/* harmony export */ }); -/** - * show error - * @since 3.0.0 - * @param {String} msg - the message for error - */ -const error = (msg) => { - console.error(msg); -}; - - -/***/ }), - -/***/ "./src/base/getDayLabel.js": -/*!*********************************!*\ - !*** ./src/base/getDayLabel.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDayLabel": () => (/* binding */ getDayLabel) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./error */ "./src/base/error.js"); -/* harmony import */ var _comparison_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../comparison/isDate */ "./src/comparison/isDate.js"); - - - - -/** - * get label of day - * @param {Date} date - the date that received day - * @param {'jalali'|'gregorian'} calendar - the calendar - * @returns {String} returns day label - * @example Saturday | شنبه - */ -const getDayLabel = function (date = new Date(), calendar = "jalali") { - if ((0,_comparison_isDate__WEBPACK_IMPORTED_MODULE_2__.isDate)(date)) return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR[calendar]["days"]["label"][date.getDay()]; - return (0,_error__WEBPACK_IMPORTED_MODULE_1__.error)("the first param must be instance of Date."); -}; - - -/***/ }), - -/***/ "./src/base/getDayOfWeek.js": -/*!**********************************!*\ - !*** ./src/base/getDayOfWeek.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDayOfWeek": () => (/* binding */ getDayOfWeek) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./error */ "./src/base/error.js"); -/* harmony import */ var _comparison_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../comparison/isDate */ "./src/comparison/isDate.js"); - - - - -/** - * get the day of the week - * @param {Date} date - the date that received day of week - * @param {'jalali', 'gregorian'} calendar - the calendar - * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0 - * @returns {Number|String} the number of the day of week - */ -const getDayOfWeek = ( - date = new Date(), - calendar = "jalali", - mode = "standard" -) => { - if ((0,_comparison_isDate__WEBPACK_IMPORTED_MODULE_2__.isDate)(date)) { - // if the year was an instance of Date - return ( - _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR[calendar]["days"]["weekNumber"][date.getDay()] + - (mode != "standard" ? 0 : 1) - ); - } - return (0,_error__WEBPACK_IMPORTED_MODULE_1__.error)("the first param must be instance of Date."); -}; - - -/***/ }), - -/***/ "./src/base/getDayOfYear.js": -/*!**********************************!*\ - !*** ./src/base/getDayOfYear.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDayOfYear": () => (/* binding */ getDayOfYear) -/* harmony export */ }); -/* harmony import */ var _set_get__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../set-get */ "./src/set-get/index.js"); - - -/** - * get the day of the year - * @param {Null|String|Number} year - the year of date - * @param {Null|Number|String} month - the month of date that gives the day of the year - * @param {Null|Number|String} day - the day of date that gives the day of the year - * @param {Null|Number|String} calendar - the calendar - * @returns {Number} the day of the year - */ -const getDayOfYear = (year, month, day, calendar) => { - //plus sign before a variable, convert variable to int - month = +month; - day = +day; - while (--month != 0) { - day += (0,_set_get__WEBPACK_IMPORTED_MODULE_0__.getDaysInMonth)(calendar, year, month); + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - return day; -}; - - -/***/ }), - -/***/ "./src/base/getWeekOfYear.js": -/*!***********************************!*\ - !*** ./src/base/getWeekOfYear.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getWeekOfYear": () => (/* binding */ getWeekOfYear) -/* harmony export */ }); -const dayOfYearFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jd"; - default: - return "d"; - } -}; - -/** - * get the week of the year - * @param {Null|Number|String} year - the year of date that gives the week of the year - * @param {Null|Number|String} month - the month of date that gives the week of the year - * @param {Null|Number|String} day - the day of date that gives the week of the year - * @param {String} calendar - the calendar - * @returns {Number} the week of the year - */ -const getWeekOfYear = function (year, month, day, calendar) { - const firstOfYear = this.clone().calendar(calendar).parse(year); - const firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar)); - const date = firstOfYear.clone().parse(year, month, day); - if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay); - - const weekNumber = Math.ceil(date.diff(firstOfYear, "date", true) / 7); - - const weeksInYear = date.clone().getWeeksInYear(); - return weekNumber > weeksInYear ? weeksInYear : weekNumber; -}; - - -/***/ }), - -/***/ "./src/base/gtj.js": -/*!*************************!*\ - !*** ./src/base/gtj.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "gtj": () => (/* binding */ gtj) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); - - - -/** - * Gregorian to Jalali - * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year - * @param {Null|Number|String} [month=1] - Gregorian month - * @param {Null|Number|String} [day=1] - Gregorian day - * @param {Null|Number|String} [hour=0] - Gregorian hour - * @param {Null|Number|String} [minute=0] - Gregorian minute - * @param {Null|Number|String} [second=0] - Gregorian second - * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond - * @returns {Array} Jalali date - */ -const gtj = (year, month, day, hour, minute, second, millisecond) => { - let date; - if (!year) date = new Date(); - else if ((0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isDate)(year)) - // if the year was an instance of Date - date = year; - else - date = new Date( - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(year) ? year : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(month) ? month : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(day) ? day : 1, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(hour) ? hour : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(minute) ? minute : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(second) ? second : 0, - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(millisecond) ? millisecond : 0 - ); - day = date.getDate(); - month = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one - year = date.getFullYear(); - hour = date.getHours(); - minute = date.getMinutes(); - second = date.getSeconds(); - millisecond = date.getMilliseconds(); - let jYear, jMonth, jDay; - const pastDaysInMonth = [ - 0, - 31, - 59, - 90, - 120, - 151, - 181, - 212, - 243, - 273, - 304, - 334, - ]; // Past days from the start of the year in each month - if (year > 1600) { - jYear = 979; - year -= 1600; - } else { - jYear = 0; - year -= 621; - } - const newYear = month > 2 ? year + 1 : year; - let days = - 365 * year + - parseInt((newYear + 3) / 4) - - parseInt((newYear + 99) / 100) + - parseInt((newYear + 399) / 400) - - 80 + - day + - pastDaysInMonth[month - 1]; - jYear += 33 * parseInt(days / 12053); - days %= 12053; - jYear += 4 * parseInt(days / 1461); - days %= 1461; - if (days > 365) { - jYear += parseInt((days - 1) / 365); - days = (days - 1) % 365; - } - jMonth = - days < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30); - jDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30); - return [jYear, jMonth, jDay, hour, minute, second, millisecond]; -}; - -/***/ }), - -/***/ "./src/base/index.js": -/*!***************************!*\ - !*** ./src/base/index.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "gtj": () => (/* reexport safe */ _gtj__WEBPACK_IMPORTED_MODULE_0__.gtj), -/* harmony export */ "jtg": () => (/* reexport safe */ _jtg__WEBPACK_IMPORTED_MODULE_1__.jtg), -/* harmony export */ "warn": () => (/* reexport safe */ _warn__WEBPACK_IMPORTED_MODULE_2__.warn), -/* harmony export */ "error": () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_3__.error), -/* harmony export */ "invalid": () => (/* reexport safe */ _invalid__WEBPACK_IMPORTED_MODULE_4__.invalid), -/* harmony export */ "typesToArray": () => (/* reexport safe */ _typesToArray__WEBPACK_IMPORTED_MODULE_5__.typesToArray), -/* harmony export */ "ordinalNumber": () => (/* reexport safe */ _ordinalNumber__WEBPACK_IMPORTED_MODULE_6__.ordinalNumber), -/* harmony export */ "addPrefix": () => (/* reexport safe */ _addPrefix__WEBPACK_IMPORTED_MODULE_7__.addPrefix), -/* harmony export */ "setJalaliDate": () => (/* reexport safe */ _setJalaliDate__WEBPACK_IMPORTED_MODULE_8__.setJalaliDate), -/* harmony export */ "setGregorianDate": () => (/* reexport safe */ _setGregorianDate__WEBPACK_IMPORTED_MODULE_9__.setGregorianDate), -/* harmony export */ "getDayLabel": () => (/* reexport safe */ _getDayLabel__WEBPACK_IMPORTED_MODULE_10__.getDayLabel), -/* harmony export */ "getDayOfWeek": () => (/* reexport safe */ _getDayOfWeek__WEBPACK_IMPORTED_MODULE_11__.getDayOfWeek), -/* harmony export */ "getDayOfYear": () => (/* reexport safe */ _getDayOfYear__WEBPACK_IMPORTED_MODULE_12__.getDayOfYear), -/* harmony export */ "getWeekOfYear": () => (/* reexport safe */ _getWeekOfYear__WEBPACK_IMPORTED_MODULE_13__.getWeekOfYear), -/* harmony export */ "compare": () => (/* reexport safe */ _compare__WEBPACK_IMPORTED_MODULE_14__.compare), -/* harmony export */ "mathOperation": () => (/* reexport safe */ _mathOperation__WEBPACK_IMPORTED_MODULE_15__.mathOperation), -/* harmony export */ "isTimestamp": () => (/* reexport safe */ _isTimestamp__WEBPACK_IMPORTED_MODULE_16__.isTimestamp) -/* harmony export */ }); -/* harmony import */ var _gtj__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gtj */ "./src/base/gtj.js"); -/* harmony import */ var _jtg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jtg */ "./src/base/jtg.js"); -/* harmony import */ var _warn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./warn */ "./src/base/warn.js"); -/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./error */ "./src/base/error.js"); -/* harmony import */ var _invalid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./invalid */ "./src/base/invalid.js"); -/* harmony import */ var _typesToArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typesToArray */ "./src/base/typesToArray.js"); -/* harmony import */ var _ordinalNumber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ordinalNumber */ "./src/base/ordinalNumber.js"); -/* harmony import */ var _addPrefix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./addPrefix */ "./src/base/addPrefix.js"); -/* harmony import */ var _setJalaliDate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./setJalaliDate */ "./src/base/setJalaliDate.js"); -/* harmony import */ var _setGregorianDate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./setGregorianDate */ "./src/base/setGregorianDate.js"); -/* harmony import */ var _getDayLabel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getDayLabel */ "./src/base/getDayLabel.js"); -/* harmony import */ var _getDayOfWeek__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./getDayOfWeek */ "./src/base/getDayOfWeek.js"); -/* harmony import */ var _getDayOfYear__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getDayOfYear */ "./src/base/getDayOfYear.js"); -/* harmony import */ var _getWeekOfYear__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./getWeekOfYear */ "./src/base/getWeekOfYear.js"); -/* harmony import */ var _compare__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./compare */ "./src/base/compare.js"); -/* harmony import */ var _mathOperation__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./mathOperation */ "./src/base/mathOperation.js"); -/* harmony import */ var _isTimestamp__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./isTimestamp */ "./src/base/isTimestamp.js"); - - - - - - - - - - - - - - - - - - - -/***/ }), - -/***/ "./src/base/invalid.js": -/*!*****************************!*\ - !*** ./src/base/invalid.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "invalid": () => (/* binding */ invalid) -/* harmony export */ }); -/** - * make error and delete this.d - * @param {String} errorText - Error Text - * @returns {PersianDate} make error and return class - */ -const invalid = function (errorText) { - delete this.d; - this.error = errorText; - return this; -}; - - -/***/ }), - -/***/ "./src/base/isTimestamp.js": -/*!*********************************!*\ - !*** ./src/base/isTimestamp.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isTimestamp": () => (/* binding */ isTimestamp) -/* harmony export */ }); -/** - * check the input is timestamp - * @since 2.0.0 - * @param {Number|String} timestamp - input that must be checked - * @returns {Boolean} if input was timestamp, return true - */ -const isTimestamp = (timestamp) => { - return !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0; -}; - - -/***/ }), - -/***/ "./src/base/jtg.js": -/*!*************************!*\ - !*** ./src/base/jtg.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "jtg": () => (/* binding */ jtg) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); + function _createForOfIteratorHelper(o, allowArrayLike) { + var it; + + if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function () {}; + + return { + s: F, + n: function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function (e) { + throw e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function () { + it = o[Symbol.iterator](); + }, + n: function () { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function (e) { + didErr = true; + err = e; + }, + f: function () { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } + }; + } + function isBetween(from, to, method) { + var date = this.toArray(); + from = typesToArray(this.c, from); + if (!from[2]) date[2] = 1; + from = date.map(function (value, i) { + return REGEX["isNumeric"].test(from[i]) ? from[i] : value; + }); + to = typesToArray(this.c, to); + to = date.map(function (value, i) { + return REGEX["isNumeric"].test(to[i]) ? to[i] : value; + }); + if (!(this.isValid.apply(this, _toConsumableArray(from)) && this.isValid.apply(this, _toConsumableArray(to)))) return false; + return compare.call(this, from, method[0] === "[" ? ">=" : ">") && compare.call(this, to, method[1] === "]" ? "<=" : "<"); + } + function isInArray(array) { + var _this = this; -/** - * Jalali to Gregorian - * @param {Null|Number|String} year - Jalali year - * @param {Null|Number|String} [month=1] - Jalali month - * @param {Null|Number|String} [day=1] - Jalali day - * @param {Null|Number|String} [hour=0] - Jalali hour - * @param {Null|Number|String} [minute=0] - Jalali minute - * @param {Null|Number|String} [second=0] - Jalali second - * @param {Null|Number|String} [millisecond=0] - Jalali millisecond - * @returns {Date} Gregorian date - */ -const jtg = (year, month, day, hour, minute, second, millisecond) => { - //plus sign before a variable, convert variable to int - year = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(year) ? +year : 1; - month = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(month) ? +month : 1; - day = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(day) ? +day : 1; - hour = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(hour) ? +hour : 0; - minute = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(minute) ? +minute : 0; - second = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(second) ? +second : 0; - millisecond = _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(millisecond) ? +millisecond : 0; - let gYear, gMonth, gDay; - if (year > 979) { - gYear = 1600; - year -= 979; - } else { - gYear = 621; - } - let days = - 365 * year + - parseInt(year / 33) * 8 + - parseInt(((year % 33) + 3) / 4) + - 78 + - day + - (month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186); - gYear += 400 * parseInt(days / 146097); - days %= 146097; - if (days > 36524) { - gYear += 100 * parseInt(--days / 36524); - days %= 36524; - if (days >= 365) days++; - } - gYear += 4 * parseInt(days / 1461); - days %= 1461; - if (days > 365) { - gYear += parseInt((days - 1) / 365); - days = (days - 1) % 365; - } - gDay = days + 1; - const daysOfMonths = [ - 0, - 31, - (0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isLeapYear)("gregorian", gYear) ? 29 : 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31, - ]; - for (gMonth = 0; gMonth < 13; gMonth++) { - const v = daysOfMonths[gMonth]; - if (gDay <= v) break; - gDay -= v; + return array.some(function (date) { + return isSame.call(_this, date); + }); } - return new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond); -}; + /** + * Gregorian to Jalali + * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year + * @param {Null|Number|String} [month=1] - Gregorian month + * @param {Null|Number|String} [day=1] - Gregorian day + * @param {Null|Number|String} [hour=0] - Gregorian hour + * @param {Null|Number|String} [minute=0] - Gregorian minute + * @param {Null|Number|String} [second=0] - Gregorian second + * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond + * @returns {Array} Jalali date + */ + var gtj = function gtj(year, month, day, hour, minute, second, millisecond) { + var date; + if (!year) date = new Date();else if (isDate(year)) // if the year was an instance of Date + date = year;else date = new Date(REGEX["isNumeric"].test(year) ? year : 0, REGEX["isNumeric"].test(month) ? month : 0, REGEX["isNumeric"].test(day) ? day : 1, REGEX["isNumeric"].test(hour) ? hour : 0, REGEX["isNumeric"].test(minute) ? minute : 0, REGEX["isNumeric"].test(second) ? second : 0, REGEX["isNumeric"].test(millisecond) ? millisecond : 0); + day = date.getDate(); + month = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one + + year = date.getFullYear(); + hour = date.getHours(); + minute = date.getMinutes(); + second = date.getSeconds(); + millisecond = date.getMilliseconds(); + var jYear, jMonth, jDay; + var pastDaysInMonth = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; // Past days from the start of the year in each month + + if (year > 1600) { + jYear = 979; + year -= 1600; + } else { + jYear = 0; + year -= 621; + } + + var newYear = month > 2 ? year + 1 : year; + var days = 365 * year + parseInt((newYear + 3) / 4) - parseInt((newYear + 99) / 100) + parseInt((newYear + 399) / 400) - 80 + day + pastDaysInMonth[month - 1]; + jYear += 33 * parseInt(days / 12053); + days %= 12053; + jYear += 4 * parseInt(days / 1461); + days %= 1461; + + if (days > 365) { + jYear += parseInt((days - 1) / 365); + days = (days - 1) % 365; + } + + jMonth = days < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30); + jDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30); + return [jYear, jMonth, jDay, hour, minute, second, millisecond]; + }; -/***/ }), + /** + * Jalali to Gregorian + * @param {Null|Number|String} year - Jalali year + * @param {Null|Number|String} [month=1] - Jalali month + * @param {Null|Number|String} [day=1] - Jalali day + * @param {Null|Number|String} [hour=0] - Jalali hour + * @param {Null|Number|String} [minute=0] - Jalali minute + * @param {Null|Number|String} [second=0] - Jalali second + * @param {Null|Number|String} [millisecond=0] - Jalali millisecond + * @returns {Date} Gregorian date + */ -/***/ "./src/base/mathOperation.js": -/*!***********************************!*\ - !*** ./src/base/mathOperation.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var jtg = function jtg(year, month, day, hour, minute, second, millisecond) { + //plus sign before a variable, convert variable to int + year = REGEX["isNumeric"].test(year) ? +year : 1; + month = REGEX["isNumeric"].test(month) ? +month : 1; + day = REGEX["isNumeric"].test(day) ? +day : 1; + hour = REGEX["isNumeric"].test(hour) ? +hour : 0; + minute = REGEX["isNumeric"].test(minute) ? +minute : 0; + second = REGEX["isNumeric"].test(second) ? +second : 0; + millisecond = REGEX["isNumeric"].test(millisecond) ? +millisecond : 0; + var gYear, gMonth, gDay; + + if (year > 979) { + gYear = 1600; + year -= 979; + } else { + gYear = 621; + } + + var days = 365 * year + parseInt(year / 33) * 8 + parseInt((year % 33 + 3) / 4) + 78 + day + (month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186); + gYear += 400 * parseInt(days / 146097); + days %= 146097; + + if (days > 36524) { + gYear += 100 * parseInt(--days / 36524); + days %= 36524; + if (days >= 365) days++; + } + + gYear += 4 * parseInt(days / 1461); + days %= 1461; + + if (days > 365) { + gYear += parseInt((days - 1) / 365); + days = (days - 1) % 365; + } + + gDay = days + 1; + var daysOfMonths = [0, 31, isLeapYear("gregorian", gYear) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + + for (gMonth = 0; gMonth < 13; gMonth++) { + var v = daysOfMonths[gMonth]; + if (gDay <= v) break; + gDay -= v; + } + + return new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond); + }; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "mathOperation": () => (/* binding */ mathOperation) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + /** + * show warning + * @since 2.0.0 + * @param {String} msg - the message for warning + */ + var warn = function warn(msg) { + console.warn(msg); + }; + /** + * show error + * @since 3.0.0 + * @param {String} msg - the message for error + */ + var error = function error(msg) { + console.error(msg); + }; -/** - * do the math operation on dates - * @since 1.4.0 - * @param {...String|PersianDate|Date|Array|Object} values - the dates - * @param {'min'|'max'} operation - the operation - * @returns {*} return maximum date - * @throws {false} if parameters not send or parameters is invalid, return false - */ -const mathOperation = function (values, operation) { - if (!values.length) { - return false; - } - const args = [...values]; - const argsNumber = args.map((date) => { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, date); - if (this.isValid(...date)) - return this.clone() - .parse(...date) - .timestamp(); - return false; - }); - if (argsNumber.includes(false)) return false; - return args[argsNumber.indexOf(Math[operation](...argsNumber))]; -}; - - -/***/ }), - -/***/ "./src/base/ordinalNumber.js": -/*!***********************************!*\ - !*** ./src/base/ordinalNumber.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "ordinalNumber": () => (/* binding */ ordinalNumber) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); - -/** - * returns the ordinal number of that number sent to it - * @param {Number} number - the number that gives ordinal number --> from 1 to 366 - * @param {'jalali','gregorian'} calendar - the calendar - * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number - * @returns {String} ordinal number - * @example 1st | اول | اولین - */ -const ordinalNumber = (number, calendar = "jalali", mode = 1) => { - return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR[calendar].ordinalNumbers(number, mode); -}; - - -/***/ }), - -/***/ "./src/base/setGregorianDate.js": -/*!**************************************!*\ - !*** ./src/base/setGregorianDate.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "setGregorianDate": () => (/* binding */ setGregorianDate) -/* harmony export */ }); -/** - * set the date with Date instance - * @since 2.0.0 - * @param {Date} date - the Date instance - */ -const setGregorianDate = function (date) { - this.d = { - year: date.getFullYear(), - month: date.getMonth() + 1, - date: date.getDate(), - hour: date.getHours(), - minute: date.getMinutes(), - second: date.getSeconds(), - millisecond: date.getMilliseconds(), + /** + * make error and delete this.d + * @param {String} errorText - Error Text + * @returns {PersianDate} make error and return class + */ + var invalid = function invalid(errorText) { + delete this.d; + this.error = errorText; + return this; }; -}; - - -/***/ }), - -/***/ "./src/base/setJalaliDate.js": -/*!***********************************!*\ - !*** ./src/base/setJalaliDate.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "setJalaliDate": () => (/* binding */ setJalaliDate) -/* harmony export */ }); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/base/index.js"); - -/** - * set the date with Date instance - * @since 2.0.0 - * @param {Date} date - the Date - */ -const setJalaliDate = function (date) { - [ - this.d.year, - this.d.month, - this.d.date, - this.d.hour, - this.d.minute, - this.d.second, - this.d.millisecond, - ] = (0,___WEBPACK_IMPORTED_MODULE_0__.gtj)(date); -}; - - -/***/ }), - -/***/ "./src/base/typesToArray.js": -/*!**********************************!*\ - !*** ./src/base/typesToArray.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "typesToArray": () => (/* binding */ typesToArray) -/* harmony export */ }); -/* harmony import */ var _PersianDate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PersianDate */ "./src/PersianDate.js"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ "./src/base/index.js"); - - - - -/** - * convert String or Array or Object or PersianDate to Array - * @since 1.2.0 - * @param {String|Array|Object|Number} year - this param must be string or array or Object from date or year - * @param {String|Number} year.y - year of date - * @param {Null|String|Number} year.year - year of date - * @param {Null|String|Number} year.years - year of date - * @param {Null|String|Number} year.M - month of date - * @param {Null|String|Number} year.month - month of date - * @param {Null|String|Number} year.months - month of date - * @param {Null|String|Number} year.d - day of date - * @param {Null|String|Number} year.day - day of date - * @param {Null|String|Number} year.days - day of date - * @param {Null|String|Number} year.date - day of date - * @param {Null|String|Number} year.h - hour of date - * @param {Null|String|Number} year.hour - hour of date - * @param {Null|String|Number} year.hours - hour of date - * @param {Null|String|Number} year.m - minute of date - * @param {Null|String|Number} year.minute - minute of date - * @param {Null|String|Number} year.minutes - minute of date - * @param {Null|String|Number} year.s - second of date - * @param {Null|String|Number} year.second - second of date - * @param {Null|String|Number} year.seconds - second of date - * @param {Null|String|Number} year.ms - millisecond of date - * @param {Null|String|Number} year.millisecond - millisecond of date - * @param {Null|String|Number} year.milliseconds - millisecond of date - * @param {Null|Number|String} month month of date - * @param {Null|Number|String} day day of date - * @param {Null|Number|String} hour hour of date - * @param {Null|Number|String} minute minute of date - * @param {Null|Number|String} second second of date - * @param {Null|Number|String} millisecond millisecond of date - * @returns {Array} array includes year, month, date, hour, minute, second, millinsecond - */ -const typesToArray = ( - calendar, - year, - month, - date, - hour, - minute, - second, - millisecond -) => { - if (!year) - // if year not defined - year = new Date(); // return now - if (typeof year == "string" && year.search(_utils__WEBPACK_IMPORTED_MODULE_1__.REGEX.separators) != -1) { - return year.split(/[/ -.,:\\]/); - } else if (Array.isArray(year)) { - return year; - } else if (_PersianDate__WEBPACK_IMPORTED_MODULE_0__.default.isPersianDate(year)) { - return year.clone().calendar(calendar).toArray(); - } else if (_PersianDate__WEBPACK_IMPORTED_MODULE_0__.default.isDate(year)) { - return new _PersianDate__WEBPACK_IMPORTED_MODULE_0__.default(year).calendar(calendar).toArray(); - } else if (Object.prototype.toString.call(year) === "[object Object]") { - return [ - year.y || year.year || year.years, - year.M || year.month || year.months || 1, - year.d || year.day || year.days || year.date || 1, - year.h || year.hour || year.hours || 0, - year.m || year.minute || year.minutes || 0, - year.s || year.second || year.seconds || 0, - year.ms || year.millisecond || year.milliseconds || 0, - ]; - } - return [year, month, date, hour, minute, second, millisecond]; -}; + /** + * convert String or Array or Object or PersianDate to Array + * @since 1.2.0 + * @param {String|Array|Object|Number} year - this param must be string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {Array} array includes year, month, date, hour, minute, second, millinsecond + */ -/***/ }), + var typesToArray = function typesToArray(calendar, year, month, date, hour, minute, second, millisecond) { + if (!year) // if year not defined + year = new Date(); // return now + + if (typeof year == "string" && year.search(REGEX["separators"]) != -1) { + return year.split(/[/ -.,:\\]/); + } else if (Array.isArray(year)) { + return year; + } else if (PersianDate.isPersianDate(year)) { + return year.clone().calendar(calendar).toArray(); + } else if (PersianDate.isDate(year)) { + return new PersianDate(year).calendar(calendar).toArray(); + } else if (Object.prototype.toString.call(year) === "[object Object]") { + return [year.y || year.year || year.years, year.M || year.month || year.months || 1, year.d || year.day || year.days || year.date || 1, year.h || year.hour || year.hours || 0, year.m || year.minute || year.minutes || 0, year.s || year.second || year.seconds || 0, year.ms || year.millisecond || year.milliseconds || 0]; + } + + return [year, month, date, hour, minute, second, millisecond]; + }; -/***/ "./src/base/warn.js": -/*!**************************!*\ - !*** ./src/base/warn.js ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + /** + * returns the ordinal number of that number sent to it + * @param {Number} number - the number that gives ordinal number --> from 1 to 366 + * @param {'jalali','gregorian'} calendar - the calendar + * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number + * @returns {String} ordinal number + * @example 1st | اول | اولین + */ -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "warn": () => (/* binding */ warn) -/* harmony export */ }); -/** - * show warning - * @since 2.0.0 - * @param {String} msg - the message for warning - */ -const warn = (msg) => { - console.warn(msg); -}; + var ordinalNumber = function ordinalNumber(number) { + var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "jalali"; + var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + return CALENDAR[calendar].ordinalNumbers(number, mode); + }; + /** + * add a prefix to the text in the number of characters that the text has less + * @param {String|Number} text a text need prefix + * @param {Number} length length of text + * @param {String} [prefix=0] - string for add before of text + * @returns {String} text with or wihtout prefix + */ + var addPrefix = function addPrefix(text, length) { + var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "0"; + return prefix.repeat(length - String(text).length) + text; + }; -/***/ }), + /** + * set the date with Date instance + * @since 2.0.0 + * @param {Date} date - the Date + */ -/***/ "./src/comparison/index.js": -/*!*********************************!*\ - !*** ./src/comparison/index.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var setJalaliDate = function setJalaliDate(date) { + var _gtj = gtj(date); -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isDate": () => (/* reexport safe */ _isDate__WEBPACK_IMPORTED_MODULE_0__.isDate), -/* harmony export */ "isLeapYear": () => (/* reexport safe */ _isLeapYear__WEBPACK_IMPORTED_MODULE_1__.isLeapYear), -/* harmony export */ "isPersianDate": () => (/* reexport safe */ _isPersianDate__WEBPACK_IMPORTED_MODULE_2__.isPersianDate), -/* harmony export */ "isValid": () => (/* reexport safe */ _isValid__WEBPACK_IMPORTED_MODULE_3__.isValid), -/* harmony export */ "isValidDate": () => (/* reexport safe */ _isValidDate__WEBPACK_IMPORTED_MODULE_4__.isValidDate), -/* harmony export */ "isValidTime": () => (/* reexport safe */ _isValidTime__WEBPACK_IMPORTED_MODULE_5__.isValidTime), -/* harmony export */ "isSame": () => (/* reexport safe */ _isSame__WEBPACK_IMPORTED_MODULE_6__.isSame), -/* harmony export */ "isBetween": () => (/* reexport safe */ _isBetween__WEBPACK_IMPORTED_MODULE_7__.isBetween) -/* harmony export */ }); -/* harmony import */ var _isDate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isDate */ "./src/comparison/isDate.js"); -/* harmony import */ var _isLeapYear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isLeapYear */ "./src/comparison/isLeapYear.js"); -/* harmony import */ var _isPersianDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isPersianDate */ "./src/comparison/isPersianDate.js"); -/* harmony import */ var _isValid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isValid */ "./src/comparison/isValid.js"); -/* harmony import */ var _isValidDate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isValidDate */ "./src/comparison/isValidDate.js"); -/* harmony import */ var _isValidTime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isValidTime */ "./src/comparison/isValidTime.js"); -/* harmony import */ var _isSame__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isSame */ "./src/comparison/isSame.js"); -/* harmony import */ var _isBetween__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./isBetween */ "./src/comparison/isBetween.js"); + var _gtj2 = _slicedToArray(_gtj, 7); + this.d.year = _gtj2[0]; + this.d.month = _gtj2[1]; + this.d.date = _gtj2[2]; + this.d.hour = _gtj2[3]; + this.d.minute = _gtj2[4]; + this.d.second = _gtj2[5]; + this.d.millisecond = _gtj2[6]; + }; + /** + * set the date with Date instance + * @since 2.0.0 + * @param {Date} date - the Date instance + */ + var setGregorianDate = function setGregorianDate(date) { + this.d = { + year: date.getFullYear(), + month: date.getMonth() + 1, + date: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + millisecond: date.getMilliseconds() + }; + }; + /** + * get label of day + * @param {Date} date - the date that received day + * @param {'jalali'|'gregorian'} calendar - the calendar + * @returns {String} returns day label + * @example Saturday | شنبه + */ + var getDayLabel = function getDayLabel() { + var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); + var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "jalali"; + if (isDate(date)) return CALENDAR[calendar]["days"]["label"][date.getDay()]; + return error("the first param must be instance of Date."); + }; + /** + * get the day of the week + * @param {Date} date - the date that received day of week + * @param {'jalali', 'gregorian'} calendar - the calendar + * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0 + * @returns {Number|String} the number of the day of week + */ + var getDayOfWeek = function getDayOfWeek() { + var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); + var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "jalali"; + var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "standard"; + if (isDate(date)) { + // if the year was an instance of Date + return CALENDAR[calendar]["days"]["weekNumber"][date.getDay()] + (mode != "standard" ? 0 : 1); + } + return error("the first param must be instance of Date."); + }; + var getDefaultFormat$4 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jy"; -/***/ }), + default: + return "y"; + } + }; -/***/ "./src/comparison/isBetween.js": -/*!*************************************!*\ - !*** ./src/comparison/isBetween.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + function year(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + this.d.year = +format; + + if (!this.isValidDate()) { + return this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$4(this.c); + var jYear = this.c == "jalali" ? this.d.year : gtj(this.toDate())[0]; + if (format == "jy" || format == "jYYYY") return jYear; + if (format == "jYY") return String(jYear).slice(-2); + var gYear = this.c == "gregorian" ? this.d.year : this.toDate().getFullYear(); + if (format == "y" || format == "YYYY") return gYear; + if (format == "YY") return String(gYear).slice(-2); + return jYear; + } + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isBetween": () => (/* binding */ isBetween) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + var getDefaultFormat$3 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jQ"; + default: + return "Q"; + } + }; + function quarter(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 1) { + this.d.month = 1; + this.subQuarter(format - 1, false); + } else if (format > 4) { + this.d.month = 12; + this.addQuarter(format - 4, false); + } else { + this.d.month = +format * 3 - 2; + } + + while (!this.isValidDate()) { + this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$3(this.c); + var jQuarter = Math.ceil((this.c == "jalali" ? this.d.month : gtj(this.toDate())[1]) / 3); + if (format == "jQ") return jQuarter; + if (format == "jQo") return ordinalNumber(jQuarter); + if (format == "jQO") return ordinalNumber(jQuarter, "jalali", 2); + var gQuarter = Math.ceil((this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1) / 3); + if (format == "Q") return gQuarter; + if (format == "Qo" || format == "QO") return ordinalNumber(gQuarter, "gregorian"); + return jQuarter; + } + } -function isBetween(from, to, method) { - const date = this.toArray(); + var getDefaultFormat$2 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jM"; - from = (0,_base__WEBPACK_IMPORTED_MODULE_1__.typesToArray)(this.c, from); - if (!from[2]) date[2] = 1; - from = date.map((value, i) => - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(from[i]) ? from[i] : value - ); + default: + return "M"; + } + }; - to = (0,_base__WEBPACK_IMPORTED_MODULE_1__.typesToArray)(this.c, to); - to = date.map((value, i) => (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(to[i]) ? to[i] : value)); + function month(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 1) { + this.d.month = 1; + this.subMonth(format - 1, false); + } else if (format > 12) { + this.d.month = 12; + this.addMonth(format - 12, false); + } else { + this.d.month = +format; + } + + while (!this.isValidDate()) { + this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$2(this.c); + var jMonth = this.c == "jalali" ? this.d.month : gtj(this.toDate())[1]; + if (format == "jMM") return addPrefix(jMonth, 2); + if (format == "jM") return jMonth; + if (format == "jMMMM" || format == "jMMM") return CALENDAR["jalali"]["months"][jMonth]; + if (format == "jMo") return ordinalNumber(jMonth); + if (format == "jMO") return ordinalNumber(jMonth, "jalali", 2); + var gMonth = this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1; + if (format == "M") return gMonth; + if (format == "MM") return addPrefix(gMonth, 2); + if (format == "MMMM") return CALENDAR["gregorian"]["months"][gMonth]; + if (format == "Mo" || format == "MO") return ordinalNumber(gMonth, "gregorian"); + if (format == "MMM") return CALENDAR["gregorian"]["months"][gMonth].slice(0, 3); + return jMonth; + } + } - if (!(this.isValid(...from) && this.isValid(...to))) return false; + var getDefaultFormat$1 = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jw"; - return ( - _base__WEBPACK_IMPORTED_MODULE_1__.compare.call(this, from, method[0] === "[" ? ">=" : ">") && - _base__WEBPACK_IMPORTED_MODULE_1__.compare.call(this, to, method[1] === "]" ? "<=" : "<") - ); -} + default: + return "w"; + } + }; + function week(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + var weeksInYear = this.getWeeksInYear(); + + if (format < 1) { + this.week(1); + this.subWeek(format - 1, false); + } else if (format > weeksInYear) { + this.week(weeksInYear); + this.addWeek(format - weeksInYear, false); + } else { + var weekOfYear = getWeekOfYear.call(this, this.d.year, this.d.month, this.d.date, this.c); + this.addWeek(+format - weekOfYear); + } + + while (!this.isValidDate()) { + this.subDay(1, false); + } + + return this; + } else { + if (!format) format = getDefaultFormat$1(this.c); + var jWeekOfYear = getWeekOfYear.call(this, this.year("jy"), this.month("jM"), this.date("jD"), this.c); + if (format == "jw" || format == "jW") return jWeekOfYear; + if (format == "jww" || format == "jWW") return addPrefix(jWeekOfYear, 2); + if (format == "jwo" || format == "jWo") return ordinalNumber(jWeekOfYear); + if (format == "jwO" || format == "jWO") return ordinalNumber(jWeekOfYear, "jalali", 2); + var gWeekOfYear = getWeekOfYear.call(this, this.year("y"), this.month("M"), this.date("D"), "gregorian"); + if (format == "w" || format == "W") return gWeekOfYear; + if (format == "ww" || format == "WW") return addPrefix(gWeekOfYear, 2); + if (format == "wo" || format == "Wo" || format == "wO" || format == "WO") return ordinalNumber(gWeekOfYear, "gregorian"); + return jWeekOfYear; + } + } -/***/ }), + var getDefaultFormat = function getDefaultFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jD"; -/***/ "./src/comparison/isDate.js": -/*!**********************************!*\ - !*** ./src/comparison/isDate.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isDate": () => (/* binding */ isDate) -/* harmony export */ }); -const isDate = function (date) { - return date instanceof Date; -}; + default: + return "D"; + } + }; + function date(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + var daysInMonth = this.getDaysInMonth(); + + if (format < 1) { + this.d.date = 1; + this.subDay(format - 1); + } else if (format > daysInMonth) { + this.d.date = daysInMonth; + this.addDay(format - daysInMonth); + } else { + this.d.date = +format; + } + + return this; + } else { + if (!format) format = getDefaultFormat(this.c); + var jDate = this.c == "jalali" ? this.d.date : gtj(this.toDate())[2]; //---------- Day of Month ----------// + + if (format == "jDD") return addPrefix(jDate, 2); + if (format == "jD") return jDate; + if (format == "jDo") return ordinalNumber(jDate); + if (format == "jDO") return ordinalNumber(jDate, "jalali", 2); //---------- Day of Week ----------// + + var gDate = this.toDate(); + if (format == "jdddd" || format == "jddd") return getDayLabel(gDate); + if (format == "jdd") return getDayLabel(gDate).slice(0, 1); + var dayOfWeek = getDayOfWeek(gDate); + if (format == "jdo") return ordinalNumber(dayOfWeek); + if (format == "jdO") return ordinalNumber(dayOfWeek, "jalali", 2); + if (format == "jd") return getDayOfWeek(gDate, "jalali", "array"); + if (format == "jde") return dayOfWeek; //---------- Day of Year ----------// + + var dayOfYear = getDayOfYear(this.year("jy"), this.month("jM"), jDate, "j"); + if (format == "jDDDD") return addPrefix(dayOfYear, 3); + if (format == "jDDD") return dayOfYear; + if (format == "jDDDo") return ordinalNumber(dayOfYear); + if (format == "jDDDO") return ordinalNumber(dayOfYear, "jalali", 2); //---------- Day of Month ----------// + + if (format == "DD") return addPrefix(gDate.getDate(), 2); + if (format == "D") return gDate.getDate(); + if (format == "Do" || format == "DO") return ordinalNumber(gDate.getDate(), "gregorian"); //---------- Day of Week ----------// + + if (format == "dddd") return getDayLabel(gDate, "gregorian"); + if (format == "ddd") return getDayLabel(gDate, "gregorian").slice(0, 3); + if (format == "dd") return getDayLabel(gDate, "gregorian").slice(0, 2); + dayOfWeek = getDayOfWeek(gDate, "gregorian"); + if (format == "do" || format == "dO") return ordinalNumber(dayOfWeek, "gregorian"); + if (format == "d") return dayOfWeek - 1; + if (format == "de") return dayOfWeek; //---------- Day of Year ----------// + + dayOfYear = getDayOfYear(gDate.getFullYear(), gDate.getMonth() + 1, gDate.getDate(), "g"); + if (format == "DDDD") return addPrefix(dayOfYear, 3); + if (format == "DDD") return dayOfYear; + if (format == "DDDo" || format == "DDDO") return ordinalNumber(dayOfYear, "gregorian"); + return jDate; + } + } -/***/ }), + function hour(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.hour = 0; + this.subHour(format); + } else if (format > 23) { + this.d.hour = 23; + this.addHour(format - 23); + } else { + this.d.hour = +format; + } + + return this; + } else { + var h = this.d.hour; + if (format == "H") return h; + if (format == "HH") return addPrefix(h, 2); + if (format == "k") return h || 24; + if (format == "kk") return addPrefix(h || 24, 2); + h = h > 12 ? h - 12 : h; + if (format == "h") return h; + if (format == "hh") return addPrefix(h, 2); + return h; + } + } -/***/ "./src/comparison/isLeapYear.js": -/*!**************************************!*\ - !*** ./src/comparison/isLeapYear.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + function minute(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.minute = 0; + this.subMinute(format); + } else if (format > 23) { + this.d.minute = 23; + this.addMinute(format - 23); + } else { + this.d.minute = +format; + } + + return this; + } else { + if (format == "m") return this.d.minute; + if (format == "mm") return addPrefix(this.d.minute, 2); + return this.d.minute; + } + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isLeapYear": () => (/* binding */ isLeapYear) -/* harmony export */ }); -const jalali = (year) => { - const array = - year > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30]; - const remainder = year % 33; - return array.includes(remainder); -}; + function second(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.second = 0; + this.subSecond(format); + } else if (format > 23) { + this.d.second = 23; + this.addSecond(format - 23); + } else { + this.d.second = +format; + } + + return this; + } else { + if (format == "s") return this.d.second; + if (format == "ss") return addPrefix(this.d.second, 2); + return this.d.second; + } + } -const gregorian = (year) => { - return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; -}; + function millisecond(format) { + format = String(format).trim(); + + if (REGEX["isNumeric"].test(format)) { + if (format < 0) { + this.d.millisecond = 0; + this.subMillisecond(format); + } else if (format > 23) { + this.d.millisecond = 23; + this.addMillisecond(format - 23); + } else { + this.d.millisecond = +format; + } + + return this; + } else { + if (format == "CCC" || format == "c") return this.d.millisecond; + if (format == "CCCC") return addPrefix(this.d.millisecond, 3); + return this.d.millisecond; + } + } -const isLeapYear = function (calendar, year) { - // calendar[0] ==> first letter of calendar ('j' | 'g' | ...) - switch (calendar[0]) { - case "j": - return jalali(year); - default: - return gregorian(year); + function timestamp(value) { + if (value) { + return this.fromGregorian(+String(value).trim()); + } else { + return this.toDate().getTime(); + } } -}; + var jalali$2 = function jalali(calendar, year, month) { + if (month >= 1 && month <= 6) return 31;else if (month > 6 && month <= 11 || isLeapYear(calendar, year)) { + return 30; + } + return 29; + }; -/***/ }), + var gregorian$2 = function gregorian(calendar, year, month) { + if ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31;else if (month != 2) return 30;else if (isLeapYear(calendar, year)) return 29; + return 28; + }; -/***/ "./src/comparison/isPersianDate.js": -/*!*****************************************!*\ - !*** ./src/comparison/isPersianDate.js ***! - \*****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var getDaysInMonth = function getDaysInMonth(calendar, year, month) { + switch (calendar[0]) { + case "j": + return jalali$2(calendar, year, month); -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isPersianDate": () => (/* binding */ isPersianDate) -/* harmony export */ }); -/* harmony import */ var _PersianDate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PersianDate */ "./src/PersianDate.js"); - -const isPersianDate = function (date) { - return date instanceof _PersianDate__WEBPACK_IMPORTED_MODULE_0__.default; -}; - - -/***/ }), - -/***/ "./src/comparison/isSame.js": -/*!**********************************!*\ - !*** ./src/comparison/isSame.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isSame": () => (/* binding */ isSame) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - - -function isSame() { - let date = (0,_base__WEBPACK_IMPORTED_MODULE_1__.typesToArray)(this.c, ...arguments); - date = this.toArray().map((value, i) => - _utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(date[i]) ? date[i] : value - ); - - return _base__WEBPACK_IMPORTED_MODULE_1__.compare.call(this, date, "=="); -} - - -/***/ }), - -/***/ "./src/comparison/isValid.js": -/*!***********************************!*\ - !*** ./src/comparison/isValid.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isValid": () => (/* binding */ isValid) -/* harmony export */ }); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/comparison/index.js"); - - -const isValid = function ( - calendar, - year, - month, - day, - hour, - minute, - second, - millisecond -) { - return ( - (0,___WEBPACK_IMPORTED_MODULE_0__.isValidDate)(calendar, year, month, day) && - (0,___WEBPACK_IMPORTED_MODULE_0__.isValidTime)(hour, minute, second, millisecond) - ); -}; - - -/***/ }), - -/***/ "./src/comparison/isValidDate.js": -/*!***************************************!*\ - !*** ./src/comparison/isValidDate.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isValidDate": () => (/* binding */ isValidDate) -/* harmony export */ }); -/* harmony import */ var _isLeapYear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isLeapYear */ "./src/comparison/isLeapYear.js"); - - -const jalali = (year, month, day) => { - if (month >= 7 && month <= 11 && day == 31) return false; - if (month == 12 && day == 31) return false; - if (month == 12 && day == 30 && !(0,_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)("j", year)) return false; - return true; -}; - -const gregorian = (year, month, day) => { - if ([2, 4, 6, 9, 11].includes(month) && day == 31) return false; - if (month == 2 && (day == 30 || (day == 29 && !(0,_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)("g", year)))) - return false; - return true; -}; - -const isValidDate = function (calendar, year, month, day) { - if ([year, month, day].some((e) => String(e).search(/null|NaN/) != -1)) - return false; - if (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false; - switch (calendar[0]) { - case "j": - return jalali(year, month, day); - default: - return gregorian(year, month, day); - } -}; + default: + return gregorian$2(calendar, year, month); + } + }; + var getDayOfYearFormat = function getDayOfYearFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jd"; -/***/ }), + default: + return "d"; + } + }; -/***/ "./src/comparison/isValidTime.js": -/*!***************************************!*\ - !*** ./src/comparison/isValidTime.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + function getWeeksInYear(year) { + var dayOfYearFormat = getDayOfYearFormat(this.c); + var firstOfYear = this.clone().parse(year); + var firstOfYearDay = firstOfYear.date(dayOfYearFormat); + var lastOfYear = firstOfYear.clone().endOf("year").startOf("day"); + var lastOfYearDay = lastOfYear.date(dayOfYearFormat); + if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);else firstOfYear.subDay(firstOfYearDay); + if (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay);else lastOfYear.subDay(lastOfYearDay); + return Math.ceil(lastOfYear.diff(firstOfYear, "date") / 7); + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isValidTime": () => (/* binding */ isValidTime) -/* harmony export */ }); -const isValidTime = function (hour, minute, second, millisecond) { - if ( - [hour, minute, second, millisecond].some( - (e) => String(e).search(/null|NaN/) != -1 - ) - ) - return false; - if (hour < 0 || hour > 23) return false; - if (minute < 0 || minute > 59) return false; - if (second < 0 || second > 59) return false; - if (millisecond < 0 || millisecond > 999) return false; - return true; -}; + function startOf(unit) { + this.d.millisecond = 0; + if (unit[0] == "s") return this; + this.d.second = 0; + if (unit == "m" || unit == "minute") return this; + this.d.minute = 0; + if (unit[0] == "h") return this; + this.d.hour = 0; + if (unit[0] == "d") return this; + if (unit[0] == "w") return this.subDay(getDayOfWeek(this.toDate(), this.c, "array")); + this.d.date = 1; + if (unit[0] == "q") return this.quarter(this.quarter()); + if (unit == "M" || unit == "month") return this; + this.d.month = 1; + if (unit[0] == "y") return this; + } + function endOf(unit) { + this.d.millisecond = 999; + if (unit[0] == "s") return this; + this.d.second = 59; + if (unit == "m" || unit == "minute") return this; + this.d.minute = 59; + if (unit[0] == "h") return this; + this.d.hour = 23; + if (unit[0] == "d") return this; + if (unit[0] == "w") return this.addDay(7 - getDayOfWeek(this.toDate(), this.c)); + + if (unit[0] == "q") { + this.quarter(this.quarter()).addMonth(2); + this.d.date = this.getDaysInMonth(); + return this; + } + + this.d.date = this.getDaysInMonth(); + if (unit == "M" || unit == "month") return this; + this.d.month = 12; + this.d.date = this.getDaysInMonth(); + if (unit[0] == "y") return this; + } -/***/ }), + function time() { + for (var _len = arguments.length, t = new Array(_len), _key = 0; _key < _len; _key++) { + t[_key] = arguments[_key]; + } -/***/ "./src/conversion/index.js": -/*!*********************************!*\ - !*** ./src/conversion/index.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (!t.length) return this.toArray().slice(3); + var times = []; + if (isPersianDate(t[0])) times = t[0].time();else if (isDate(t[0])) times = [t[0].getHours(), t[0].getMinutes(), t[0].getSeconds(), t[0].getMilliseconds()];else if (Object.prototype.toString.call(t[0]) === "[object Object]") times = [t[0].h || t[0].hour || t[0].hours || 0, t[0].m || t[0].minute || t[0].minutes || 0, t[0].s || t[0].second || t[0].seconds || 0, t[0].ms || t[0].millisecond || t[0].milliseconds || 0];else times = typesToArray.apply(void 0, [this.c].concat(t)); -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toString": () => (/* reexport safe */ _toString__WEBPACK_IMPORTED_MODULE_0__.toString), -/* harmony export */ "toArray": () => (/* reexport safe */ _toArray__WEBPACK_IMPORTED_MODULE_1__.toArray), -/* harmony export */ "toObject": () => (/* reexport safe */ _toObject__WEBPACK_IMPORTED_MODULE_2__.toObject), -/* harmony export */ "toDate": () => (/* reexport safe */ _toDate__WEBPACK_IMPORTED_MODULE_3__.toDate) -/* harmony export */ }); -/* harmony import */ var _toString__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toString */ "./src/conversion/toString.js"); -/* harmony import */ var _toArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toArray */ "./src/conversion/toArray.js"); -/* harmony import */ var _toObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./toObject */ "./src/conversion/toObject.js"); -/* harmony import */ var _toDate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toDate */ "./src/conversion/toDate.js"); + if (this.isValidTime.apply(this, _toConsumableArray(times))) { + return this.hour(times[0] || 0).minute(times[1] || 0).second(times[2] || 0).millisecond(times[3] || 0); + } else return "زمان نامعتبر"; + } + /** + * get the day of the year + * @param {Null|String|Number} year - the year of date + * @param {Null|Number|String} month - the month of date that gives the day of the year + * @param {Null|Number|String} day - the day of date that gives the day of the year + * @param {Null|Number|String} calendar - the calendar + * @returns {Number} the day of the year + */ + var getDayOfYear = function getDayOfYear(year, month, day, calendar) { + //plus sign before a variable, convert variable to int + month = +month; + day = +day; + while (--month != 0) { + day += getDaysInMonth(calendar, year, month); + } + return day; + }; + var dayOfYearFormat = function dayOfYearFormat(calendar) { + switch (calendar[0]) { + case "j": + return "jd"; -/***/ }), + default: + return "d"; + } + }; + /** + * get the week of the year + * @param {Null|Number|String} year - the year of date that gives the week of the year + * @param {Null|Number|String} month - the month of date that gives the week of the year + * @param {Null|Number|String} day - the day of date that gives the week of the year + * @param {String} calendar - the calendar + * @returns {Number} the week of the year + */ -/***/ "./src/conversion/toArray.js": -/*!***********************************!*\ - !*** ./src/conversion/toArray.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toArray": () => (/* binding */ toArray) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + var getWeekOfYear = function getWeekOfYear(year, month, day, calendar) { + var firstOfYear = this.clone().calendar(calendar).parse(year); + var firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar)); + var date = firstOfYear.clone().parse(year, month, day); + if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay); + var weekNumber = Math.ceil(date.diff(firstOfYear, "date", true) / 7); + var weeksInYear = date.clone().getWeeksInYear(); + return weekNumber > weeksInYear ? weeksInYear : weekNumber; + }; + /** + * compare the dates + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object} date - the date + * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare + * @returns {‌Boolean} if date valid, return true of false + */ -function toArray() { - if (!arguments.length) { - return Object.values(this.d); - } - const formats = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...arguments); - return [ - this.year(formats[0]), - this.month(formats[1]), - this.date(formats[2]), - this.hour(formats[3]), - this.minute(formats[4]), - this.second(formats[5]), - this.millisecond(formats[6]), - ]; -} - - -/***/ }), - -/***/ "./src/conversion/toDate.js": -/*!**********************************!*\ - !*** ./src/conversion/toDate.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toDate": () => (/* binding */ toDate) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -const jalali = (date) => { - return (0,_base__WEBPACK_IMPORTED_MODULE_0__.jtg)(...date); -}; - -const gregorian = (date) => { - --date[1]; - return new Date(...date); -}; - -function toDate() { - switch (this.c[0]) { - case "j": - return jalali(this.toArray()); - default: - return gregorian(this.toArray()); - } -} + var compare = function compare(date, operator) { + date = typesToArray.apply(void 0, [this.c].concat(_toConsumableArray(date))); + if (this.isValid.apply(this, _toConsumableArray(date))) return eval("this.timestamp()" + operator + "this.clone().parse(...date).timestamp()"); + return false; + }; + /** + * do the math operation on dates + * @since 1.4.0 + * @param {...String|PersianDate|Date|Array|Object} values - the dates + * @param {'min'|'max'} operation - the operation + * @returns {*} return maximum date + * @throws {false} if parameters not send or parameters is invalid, return false + */ -/***/ }), + var mathOperation = function mathOperation(values, operation) { + var _this = this; -/***/ "./src/conversion/toObject.js": -/*!************************************!*\ - !*** ./src/conversion/toObject.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (!values.length) { + return false; + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toObject": () => (/* binding */ toObject) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + var args = _toConsumableArray(values); + var argsNumber = args.map(function (date) { + var _this$clone; -function toObject() { - if (!arguments.length) { - return this.d; - } - const formats = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...arguments); - return { - year: this.year(formats[0]), - month: this.month(formats[1]), - date: this.date(formats[2]), - hour: this.hour(formats[3]), - minute: this.minute(formats[4]), - second: this.second(formats[5]), - millisecond: this.millisecond(formats[6]), + date = typesToArray(_this.c, date); + if (_this.isValid.apply(_this, _toConsumableArray(date))) return (_this$clone = _this.clone()).parse.apply(_this$clone, _toConsumableArray(date)).timestamp(); + return false; + }); + if (argsNumber.includes(false)) return false; + return args[argsNumber.indexOf(Math[operation].apply(Math, _toConsumableArray(argsNumber)))]; }; -} - - -/***/ }), - -/***/ "./src/conversion/toString.js": -/*!************************************!*\ - !*** ./src/conversion/toString.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "toString": () => (/* binding */ toString) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); - - -const jalali = (format) => { - return format - .replace(/\?/g, "j") - .replace(/datetime/gi, "jYYYY/jMM/jDD HH:mm") - .replace(/date/gi, "jYYYY/jMM/jDD") - .replace(/time/gi, "HH:mm"); -}; - -const gregorian = (format) => { - return format - .replace(/\?/g, "") - .replace(/datetime/gi, "YYYY-MM-DD HH:mm") - .replace(/date/gi, "YYYY-MM-DD") - .replace(/time/gi, "HH:mm"); -}; - -function toString(format) { - const rawTexts = []; - format = format.replace(_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.betweenBacktick, (_matched, text) => { - rawTexts.push(text); - return "###"; - }); - switch (this.c[0]) { - case "j": - format = jalali(format); - break; - default: - format = gregorian(format); - } - const matchedFormats = format.match(_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.format); - let dateString = ""; - for (const i of matchedFormats) { - dateString += format.substring(0, format.indexOf(i)); - - if (i.search(/Y|y/) != -1) dateString += this.year(i); - else if (i.search(/M/) != -1) dateString += this.month(i); - else if (i.search(/Q/) != -1) dateString += this.quarter(i); - else if (i.search(/D|d/) != -1) dateString += this.date(i); - else if (i.search(/W|w/) != -1) dateString += this.week(i); - else if (i.search(/H|h|k/) != -1) dateString += this.hour(i); - else if (i.search(/m/) != -1) dateString += this.minute(i); - else if (i.search(/s/) != -1) dateString += this.second(i); - else if (i.search(/c|C/) != -1) dateString += this.millisecond(i); - else if (i.search(/t/) != -1) dateString += this.timestamp(); - else if (i.search(/a|A/) != -1) dateString += (0,_utils__WEBPACK_IMPORTED_MODULE_0__.TIMETYPE)(this.d.hour, i); - - format = format.substr(format.indexOf(i) + i.length); - } - dateString += format; - for (let i = 0; i < rawTexts.length; i++) - dateString = dateString.replace("###", rawTexts[i]); - return String(dateString); -} - - -/***/ }), - -/***/ "./src/create/calendar.js": -/*!********************************!*\ - !*** ./src/create/calendar.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "calendar": () => (/* binding */ calendar) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + /** + * check the input is timestamp + * @since 2.0.0 + * @param {Number|String} timestamp - input that must be checked + * @returns {Boolean} if input was timestamp, return true + */ + var isTimestamp = function isTimestamp(timestamp) { + return !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0; + }; + function now() { + var date = new Date(); -function calendar(c) { - if (!c) return this.c; + if (this.c == "jalali") { + setJalaliDate.call(this, date); + } else { + setGregorianDate.call(this, date); + } - if (c[0] == "j" && this.c[0] != "j") { - if (!this.error) _base__WEBPACK_IMPORTED_MODULE_0__.setJalaliDate.call(this, this.toDate()); - this.c = "jalali"; - } else if (c[0] == "g" && this.c[0] != "g") { - if (!this.error) _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, this.toDate()); - this.c = "gregorian"; + return this; } - return this; -} - - -/***/ }), - -/***/ "./src/create/clone.js": -/*!*****************************!*\ - !*** ./src/create/clone.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "clone": () => (/* binding */ clone) -/* harmony export */ }); -function clone() { - return Object.assign( - Object.create(Object.getPrototypeOf(this)), - JSON.parse(JSON.stringify(this)) - ); -} - - -/***/ }), - -/***/ "./src/create/fromGregorian.js": -/*!*************************************!*\ - !*** ./src/create/fromGregorian.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "fromGregorian": () => (/* binding */ fromGregorian) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); - - - -function fromGregorian(...date) { - if (!date.length) date[0] = new Date().getTime(); - else if (this.isPersianDate(date[0])) { - date = date[0].clone().calendar("g").toArray(); - } else if (!(0,_base__WEBPACK_IMPORTED_MODULE_0__.isTimestamp)(date[0])) { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)("gregorian", ...date); - date[6] = +date[6] || 0; - date[5] = +date[5] || 0; - date[4] = +date[4] || 0; - date[3] = +date[3] || 0; - date[2] = +date[2] || 1; - date[1] = +date[1] || 1; - date[0] = +date[0]; + function parse() { + if (this.c == "jalali") { + return this.fromJalali.apply(this, arguments); + } else { + return this.fromGregorian.apply(this, arguments); + } } - if (date.length > 1) { - if (!(0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isValid)("gregorian", ...date)) - return _base__WEBPACK_IMPORTED_MODULE_0__.invalid.call(this, "تاریخ نامعتبر"); - --date[1]; // this is month; becuse the Date get month from 0, subtract one + function clone() { + return Object.assign(Object.create(Object.getPrototypeOf(this)), JSON.parse(JSON.stringify(this))); } - date = new Date(...date); - if (date == "Invalid Date") return _base__WEBPACK_IMPORTED_MODULE_0__.invalid.call(this, "تاریخ نامعتبر"); - if (this.c == "jalali") { - _base__WEBPACK_IMPORTED_MODULE_0__.setJalaliDate.call(this, date); - } else { - _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, date); + function fromJalali() { + for (var _len = arguments.length, date = new Array(_len), _key = 0; _key < _len; _key++) { + date[_key] = arguments[_key]; + } + + if (!date.length) date = gtj();else date = typesToArray.apply(void 0, ["jalali"].concat(_toConsumableArray(date))); + + if (this.c == "jalali") { + this.d.year = +date[0]; + this.d.month = +date[1] || 1; + this.d.date = +date[2] || 1; + this.d.hour = +date[3] || 0; + this.d.minute = +date[4] || 0; + this.d.second = +date[5] || 0; + this.d.millisecond = +date[6] || 0; + } else { + setGregorianDate.call(this, jtg.apply(void 0, _toConsumableArray(date))); + } + + if (!this.isValid()) return invalid.call(this, "تاریخ نامعتبر"); + return this; } - return this; -} - - -/***/ }), - -/***/ "./src/create/fromJalali.js": -/*!**********************************!*\ - !*** ./src/create/fromJalali.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "fromJalali": () => (/* binding */ fromJalali) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function fromJalali(...date) { - if (!date.length) date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.gtj)(); - else date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)("jalali", ...date); - - if (this.c == "jalali") { - this.d.year = +date[0]; - this.d.month = +date[1] || 1; - this.d.date = +date[2] || 1; - this.d.hour = +date[3] || 0; - this.d.minute = +date[4] || 0; - this.d.second = +date[5] || 0; - this.d.millisecond = +date[6] || 0; - } else { - _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, (0,_base__WEBPACK_IMPORTED_MODULE_0__.jtg)(...date)); - } - - if (!this.isValid()) return _base__WEBPACK_IMPORTED_MODULE_0__.invalid.call(this, "تاریخ نامعتبر"); - return this; -} + function fromGregorian() { + for (var _len = arguments.length, date = new Array(_len), _key = 0; _key < _len; _key++) { + date[_key] = arguments[_key]; + } + + if (!date.length) date[0] = new Date().getTime();else if (this.isPersianDate(date[0])) { + date = date[0].clone().calendar("g").toArray(); + } else if (!isTimestamp(date[0])) { + date = typesToArray.apply(void 0, ["gregorian"].concat(_toConsumableArray(date))); + date[6] = +date[6] || 0; + date[5] = +date[5] || 0; + date[4] = +date[4] || 0; + date[3] = +date[3] || 0; + date[2] = +date[2] || 1; + date[1] = +date[1] || 1; + date[0] = +date[0]; + } + + if (date.length > 1) { + if (!isValid.apply(void 0, ["gregorian"].concat(_toConsumableArray(date)))) return invalid.call(this, "تاریخ نامعتبر"); + --date[1]; // this is month; becuse the Date get month from 0, subtract one + } + + date = _construct(Date, _toConsumableArray(date)); + if (date == "Invalid Date") return invalid.call(this, "تاریخ نامعتبر"); + + if (this.c == "jalali") { + setJalaliDate.call(this, date); + } else { + setGregorianDate.call(this, date); + } + + return this; + } -/***/ }), + function calendar(c) { + if (!c) return this.c; -/***/ "./src/create/index.js": -/*!*****************************!*\ - !*** ./src/create/index.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (c[0] == "j" && this.c[0] != "j") { + if (!this.error) setJalaliDate.call(this, this.toDate()); + this.c = "jalali"; + } else if (c[0] == "g" && this.c[0] != "g") { + if (!this.error) setGregorianDate.call(this, this.toDate()); + this.c = "gregorian"; + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "now": () => (/* reexport safe */ _now__WEBPACK_IMPORTED_MODULE_0__.now), -/* harmony export */ "parse": () => (/* reexport safe */ _parse__WEBPACK_IMPORTED_MODULE_1__.parse), -/* harmony export */ "clone": () => (/* reexport safe */ _clone__WEBPACK_IMPORTED_MODULE_2__.clone), -/* harmony export */ "fromJalali": () => (/* reexport safe */ _fromJalali__WEBPACK_IMPORTED_MODULE_3__.fromJalali), -/* harmony export */ "fromGregorian": () => (/* reexport safe */ _fromGregorian__WEBPACK_IMPORTED_MODULE_4__.fromGregorian), -/* harmony export */ "calendar": () => (/* reexport safe */ _calendar__WEBPACK_IMPORTED_MODULE_5__.calendar) -/* harmony export */ }); -/* harmony import */ var _now__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now */ "./src/create/now.js"); -/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse */ "./src/create/parse.js"); -/* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clone */ "./src/create/clone.js"); -/* harmony import */ var _fromJalali__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fromJalali */ "./src/create/fromJalali.js"); -/* harmony import */ var _fromGregorian__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fromGregorian */ "./src/create/fromGregorian.js"); -/* harmony import */ var _calendar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./calendar */ "./src/create/calendar.js"); + return this; + } + function addYear(year, checkDate) { + // if the number was negative, send to subYear method + if (year < 0) return this.subYear(Math.abs(year)); + this.d.year += +year; //plus sign before a variable, convert variable to int + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } + return this; + } + function addQuarter(quarter, checkDate) { + // if the number was negative, send to subQuarter method + if (quarter < 0) return this.subQuarter(Math.abs(quarter)); + return this.addMonth(+quarter * 3, checkDate); + } + function addMonth(month, checkDate) { + if (month < 0) // if the number was negative, send to subMonth method + return this.subMonth(Math.abs(month)); + month = +month; // plus sign before a variable, convert variable to int + var monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year + if (monthToStartNewYear > month) { + this.d.month += month; + } else { + this.addYear(1, false); + this.d.month = 1; + month -= monthToStartNewYear; -/***/ }), + while (month >= 12) { + month -= 12; + this.addYear(1, false); + } -/***/ "./src/create/now.js": -/*!***************************!*\ - !*** ./src/create/now.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (month != 0) { + this.d.month += month; + } + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "now": () => (/* binding */ now) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } + return this; + } -function now() { - const date = new Date(); + function addWeek(week, checkDate) { + // if the number was negative, send to subWeek method + if (week < 0) return this.subWeek(Math.abs(week)); + return this.addDay(+week * 7, checkDate); + } - if (this.c == "jalali") { - _base__WEBPACK_IMPORTED_MODULE_0__.setJalaliDate.call(this, date); - } else { - _base__WEBPACK_IMPORTED_MODULE_0__.setGregorianDate.call(this, date); + function addDay(day) { + if (day < 0) // if the number was negative, send to subDay method + return this.subDay(Math.abs(day)); + day = +day; //plus sign before a variable, convert variable to int + + var dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month + + if (dayToStartNextMonth > day) { + this.d.date += day; + } else { + this.addMonth(1, false); + this.d.date = 1; + day -= dayToStartNextMonth; + var daysInMonth = this.getDaysInMonth(); + + while (day >= daysInMonth) { + day -= daysInMonth; + this.addMonth(1, false); + daysInMonth = this.getDaysInMonth(); + } + + if (day != 0) { + this.d.date += day; + } + } + + return this; } - return this; -} + function addHour(hour) { + if (hour < 0) // if the number was negative, send to subHour method + return this.subHour(Math.abs(hour)); + hour = +hour; //plus sign before a variable, convert variable to int + while (hour >= 24) { + hour -= 24; + this.addDay(1, false); + } -/***/ }), + var hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day -/***/ "./src/create/parse.js": -/*!*****************************!*\ - !*** ./src/create/parse.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (hour >= hourToNextDay) { + this.addDay(1, false); + hour -= hourToNextDay; + this.d.hour = hour; + } else this.d.hour += hour; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "parse": () => (/* binding */ parse) -/* harmony export */ }); -function parse(...date) { - if (this.c == "jalali") { - return this.fromJalali(...date); - } else { - return this.fromGregorian(...date); + return this; } -} - - -/***/ }), - -/***/ "./src/diff/diff.js": -/*!**************************!*\ - !*** ./src/diff/diff.js ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "diff": () => (/* binding */ diff) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function diff(date, unit, addOne) { - date = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, date); - if (!this.isValid(...date)) return "تاریخ نامعتبر"; - let result = - this.timestamp() - - this.clone() - .parse(...date) - .timestamp(); - switch (unit) { - case "y": - case "year": - case "years": - result = this.d.year - date[0]; - break; - case "M": - case "month": - case "months": - result = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]); - break; - case "d": - case "date": - case "day": - case "days": - result = Math.ceil(result / 1000 / 60 / 60 / 24); - break; - case "h": - case "hour": - case "hours": - result = Math.ceil(result / 1000 / 60 / 60); - break; - case "m": - case "minute": - case "minutes": - result = Math.ceil(result / 1000 / 60); - break; - case "s": - case "second": - case "seconds": - result = Math.ceil(result / 1000); - break; - case "ms": - case "millisecond": - case "milliseconds": - } - return addOne ? result + (result >= 0 ? 1 : -1) : result; -} - - -/***/ }), - -/***/ "./src/diff/diffForHumans.js": -/*!***********************************!*\ - !*** ./src/diff/diffForHumans.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "diffForHumans": () => (/* binding */ diffForHumans) -/* harmony export */ }); -function diffForHumans(date, suffix) { - let result = this.diff(date, "s"); - if (typeof result == "string") return "تاریخ نامعتبر"; - - const prefix = suffix && (result > 0 ? "آینده" : "پیش"); - result = Math.abs(result); - - if (result == 0) return "هم اکنون"; - else if (result < 45) result = "لحظات"; - else if ((result /= 60) < 45) - // divide by 60, for getting minute - result = Math.round(result) + " " + "دقیقه"; - else if ((result /= 60) < 23.5) - // divide by 60, for getting hour - result = Math.round(result) + " " + "ساعت"; - else if ((result /= 24) < 26) - // divide by 24, for getting day - result = Math.round(result) + " " + "روز"; - else if (result < 320) result = Math.round(result / 30) + " " + "ماه"; - else result = Math.round(result / 365) + " " + "سال"; - return result + (suffix ? " " + prefix : ""); -} - - -/***/ }), - -/***/ "./src/diff/index.js": -/*!***************************!*\ - !*** ./src/diff/index.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "diff": () => (/* reexport safe */ _diff__WEBPACK_IMPORTED_MODULE_0__.diff), -/* harmony export */ "diffForHumans": () => (/* reexport safe */ _diffForHumans__WEBPACK_IMPORTED_MODULE_1__.diffForHumans) -/* harmony export */ }); -/* harmony import */ var _diff__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./diff */ "./src/diff/diff.js"); -/* harmony import */ var _diffForHumans__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./diffForHumans */ "./src/diff/diffForHumans.js"); - - - - -/***/ }), - -/***/ "./src/set-get/date.js": -/*!*****************************!*\ - !*** ./src/set-get/date.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "date": () => (/* binding */ date) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - - -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jD"; - default: - return "D"; - } -}; - -function date(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - const daysInMonth = this.getDaysInMonth(); - - if (format < 1) { - this.d.date = 1; - this.subDay(format - 1); - } else if (format > daysInMonth) { - this.d.date = daysInMonth; - this.addDay(format - daysInMonth); - } else { - this.d.date = +format; - } - - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - const jDate = this.c == "jalali" ? this.d.date : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[2]; - //---------- Day of Month ----------// - if (format == "jDD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(jDate, 2); - if (format == "jD") return jDate; - if (format == "jDo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jDate); - if (format == "jDO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jDate, "jalali", 2); - //---------- Day of Week ----------// - const gDate = this.toDate(); - if (format == "jdddd" || format == "jddd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate); - if (format == "jdd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate).slice(0, 1); - let dayOfWeek = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfWeek)(gDate); - if (format == "jdo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfWeek); - if (format == "jdO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfWeek, "jalali", 2); - if (format == "jd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfWeek)(gDate, "jalali", "array"); - if (format == "jde") return dayOfWeek; - //---------- Day of Year ----------// - let dayOfYear = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfYear)(this.year("jy"), this.month("jM"), jDate, "j"); - if (format == "jDDDD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(dayOfYear, 3); - if (format == "jDDD") return dayOfYear; - if (format == "jDDDo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfYear); - if (format == "jDDDO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfYear, "jalali", 2); - //---------- Day of Month ----------// - if (format == "DD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(gDate.getDate(), 2); - if (format == "D") return gDate.getDate(); - if (format == "Do" || format == "DO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gDate.getDate(), "gregorian"); - //---------- Day of Week ----------// - if (format == "dddd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate, "gregorian"); - if (format == "ddd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate, "gregorian").slice(0, 3); - if (format == "dd") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayLabel)(gDate, "gregorian").slice(0, 2); - dayOfWeek = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfWeek)(gDate, "gregorian"); - if (format == "do" || format == "dO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfWeek, "gregorian"); - if (format == "d") return dayOfWeek - 1; - if (format == "de") return dayOfWeek; - //---------- Day of Year ----------// - dayOfYear = (0,_base__WEBPACK_IMPORTED_MODULE_1__.getDayOfYear)( - gDate.getFullYear(), - gDate.getMonth() + 1, - gDate.getDate(), - "g" - ); - if (format == "DDDD") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(dayOfYear, 3); - if (format == "DDD") return dayOfYear; - if (format == "DDDo" || format == "DDDO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(dayOfYear, "gregorian"); - return jDate; - } -} - - -/***/ }), - -/***/ "./src/set-get/endOf.js": -/*!******************************!*\ - !*** ./src/set-get/endOf.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "endOf": () => (/* binding */ endOf) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function endOf(unit) { - this.d.millisecond = 999; - if (unit[0] == "s") return this; - this.d.second = 59; - if (unit == "m" || unit == "minute") return this; - this.d.minute = 59; - if (unit[0] == "h") return this; - this.d.hour = 23; - if (unit[0] == "d") return this; - if (unit[0] == "w") - return this.addDay(7 - (0,_base__WEBPACK_IMPORTED_MODULE_0__.getDayOfWeek)(this.toDate(), this.c)); - if (unit[0] == "q") { - this.quarter(this.quarter()).addMonth(2); - this.d.date = this.getDaysInMonth(); - return this; - } - this.d.date = this.getDaysInMonth(); - if (unit == "M" || unit == "month") return this; - this.d.month = 12; - this.d.date = this.getDaysInMonth(); - if (unit[0] == "y") return this; -} + function addMinute(minute) { + if (minute < 0) // if the number was negative, send to subMinute method + return this.subMinute(Math.abs(minute)); + minute = +minute; //plus sign before a variable, convert variable to int -/***/ }), + while (minute >= 60) { + this.addHour(1, false); + minute -= 60; + } -/***/ "./src/set-get/getDaysInMonth.js": -/*!***************************************!*\ - !*** ./src/set-get/getDaysInMonth.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getDaysInMonth": () => (/* binding */ getDaysInMonth) -/* harmony export */ }); -/* harmony import */ var _comparison_isLeapYear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../comparison/isLeapYear */ "./src/comparison/isLeapYear.js"); + if (minute >= minuteToNextHour) { + this.addHour(1, false); + minute -= minuteToNextHour; + this.d.minute = minute; + } else this.d.minute += minute; - -const jalali = (calendar, year, month) => { - if (month >= 1 && month <= 6) return 31; - else if ((month > 6 && month <= 11) || (0,_comparison_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)(calendar, year)) { - return 30; - } - return 29; -}; - -const gregorian = (calendar, year, month) => { - if ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31; - else if (month != 2) return 30; - else if ((0,_comparison_isLeapYear__WEBPACK_IMPORTED_MODULE_0__.isLeapYear)(calendar, year)) return 29; - return 28; -}; - -const getDaysInMonth = function (calendar, year, month) { - switch (calendar[0]) { - case "j": - return jalali(calendar, year, month); - default: - return gregorian(calendar, year, month); - } -}; - - -/***/ }), - -/***/ "./src/set-get/getWeeksInYear.js": -/*!***************************************!*\ - !*** ./src/set-get/getWeeksInYear.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getWeeksInYear": () => (/* binding */ getWeeksInYear) -/* harmony export */ }); -const getDayOfYearFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jd"; - default: - return "d"; - } -}; - -function getWeeksInYear(year) { - const dayOfYearFormat = getDayOfYearFormat(this.c); - - const firstOfYear = this.clone().parse(year); - const firstOfYearDay = firstOfYear.date(dayOfYearFormat); - const lastOfYear = firstOfYear.clone().endOf("year").startOf("day"); - const lastOfYearDay = lastOfYear.date(dayOfYearFormat); - - if (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay); - else firstOfYear.subDay(firstOfYearDay); - - if (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay); - else lastOfYear.subDay(lastOfYearDay); - - return Math.ceil(lastOfYear.diff(firstOfYear, "date") / 7); -} - - -/***/ }), - -/***/ "./src/set-get/hour.js": -/*!*****************************!*\ - !*** ./src/set-get/hour.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "hour": () => (/* binding */ hour) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - - -function hour(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.hour = 0; - this.subHour(format); - } else if (format > 23) { - this.d.hour = 23; - this.addHour(format - 23); - } else { - this.d.hour = +format; - } - - return this; - } else { - let h = this.d.hour; - if (format == "H") return h; - if (format == "HH") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(h, 2); - if (format == "k") return h || 24; - if (format == "kk") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(h || 24, 2); - h = h > 12 ? h - 12 : h; - if (format == "h") return h; - if (format == "hh") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(h, 2); - return h; + return this; } -} + function addSecond(second) { + if (second < 0) // if the number was negative, send to subSecond method + return this.subSecond(Math.abs(second)); + second = +second; //plus sign before a variable, convert variable to int -/***/ }), + while (second >= 60) { + this.addMinute(1, false); + second -= 60; + } -/***/ "./src/set-get/index.js": -/*!******************************!*\ - !*** ./src/set-get/index.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "year": () => (/* reexport safe */ _year__WEBPACK_IMPORTED_MODULE_0__.year), -/* harmony export */ "quarter": () => (/* reexport safe */ _quarter__WEBPACK_IMPORTED_MODULE_1__.quarter), -/* harmony export */ "month": () => (/* reexport safe */ _month__WEBPACK_IMPORTED_MODULE_2__.month), -/* harmony export */ "week": () => (/* reexport safe */ _week__WEBPACK_IMPORTED_MODULE_3__.week), -/* harmony export */ "date": () => (/* reexport safe */ _date__WEBPACK_IMPORTED_MODULE_4__.date), -/* harmony export */ "hour": () => (/* reexport safe */ _hour__WEBPACK_IMPORTED_MODULE_5__.hour), -/* harmony export */ "minute": () => (/* reexport safe */ _minute__WEBPACK_IMPORTED_MODULE_6__.minute), -/* harmony export */ "second": () => (/* reexport safe */ _second__WEBPACK_IMPORTED_MODULE_7__.second), -/* harmony export */ "millisecond": () => (/* reexport safe */ _millisecond__WEBPACK_IMPORTED_MODULE_8__.millisecond), -/* harmony export */ "timestamp": () => (/* reexport safe */ _timestamp__WEBPACK_IMPORTED_MODULE_9__.timestamp), -/* harmony export */ "getDaysInMonth": () => (/* reexport safe */ _getDaysInMonth__WEBPACK_IMPORTED_MODULE_10__.getDaysInMonth), -/* harmony export */ "getWeeksInYear": () => (/* reexport safe */ _getWeeksInYear__WEBPACK_IMPORTED_MODULE_11__.getWeeksInYear), -/* harmony export */ "startOf": () => (/* reexport safe */ _startOf__WEBPACK_IMPORTED_MODULE_12__.startOf), -/* harmony export */ "endOf": () => (/* reexport safe */ _endOf__WEBPACK_IMPORTED_MODULE_13__.endOf), -/* harmony export */ "time": () => (/* reexport safe */ _time__WEBPACK_IMPORTED_MODULE_14__.time) -/* harmony export */ }); -/* harmony import */ var _year__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./year */ "./src/set-get/year.js"); -/* harmony import */ var _quarter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quarter */ "./src/set-get/quarter.js"); -/* harmony import */ var _month__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./month */ "./src/set-get/month.js"); -/* harmony import */ var _week__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./week */ "./src/set-get/week.js"); -/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date */ "./src/set-get/date.js"); -/* harmony import */ var _hour__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hour */ "./src/set-get/hour.js"); -/* harmony import */ var _minute__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./minute */ "./src/set-get/minute.js"); -/* harmony import */ var _second__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./second */ "./src/set-get/second.js"); -/* harmony import */ var _millisecond__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./millisecond */ "./src/set-get/millisecond.js"); -/* harmony import */ var _timestamp__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./timestamp */ "./src/set-get/timestamp.js"); -/* harmony import */ var _getDaysInMonth__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getDaysInMonth */ "./src/set-get/getDaysInMonth.js"); -/* harmony import */ var _getWeeksInYear__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./getWeeksInYear */ "./src/set-get/getWeeksInYear.js"); -/* harmony import */ var _startOf__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./startOf */ "./src/set-get/startOf.js"); -/* harmony import */ var _endOf__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./endOf */ "./src/set-get/endOf.js"); -/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./time */ "./src/set-get/time.js"); + var secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute + if (second >= secondToNextMinute) { + this.addMinute(1, false); + second -= secondToNextMinute; + this.d.second = second; + } else this.d.second += second; + return this; + } + function addMillisecond(millisecond) { + if (millisecond < 0) // if the number was negative, send to subMillisecond method + return this.subMillisecond(Math.abs(millisecond)); + millisecond = +millisecond; //plus sign before a variable, convert variable to int + while (millisecond >= 1000) { + this.addSecond(1, false); + millisecond -= 1000; + } + var millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second + if (millisecond >= millisecondToNextSecond) { + this.addSecond(1, false); + millisecond -= millisecondToNextSecond; + this.d.millisecond = millisecond; + } else this.d.millisecond += millisecond; + return this; + } + function subYear(year, checkDate) { + this.d.year -= Math.abs(year); + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } + return this; + } + function subQuarter(quarter, checkDate) { + quarter = Math.abs(quarter); + return this.subMonth(quarter * 3, checkDate); + } + function subMonth(month, checkDate) { + month = Math.abs(month); //plus sign before a variable, convert variable to int + var pastMonth = this.d.month; //pastMonth -> Number of month that is past + if (pastMonth > month) { + this.d.month -= month; + } else { + this.subYear(1, false); + this.d.month = 12; + month -= pastMonth; + while (month >= 12) { + this.subYear(1, false); + month -= 12; + } + if (month != 0) { + this.d.month -= month; + } + } -/***/ }), + while (checkDate && !this.isValidDate()) { + this.subDay(1, false); + } -/***/ "./src/set-get/millisecond.js": -/*!************************************!*\ - !*** ./src/set-get/millisecond.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + return this; + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "millisecond": () => (/* binding */ millisecond) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + function subWeek(week, checkDate) { + week = Math.abs(week); + return this.subDay(week * 7, checkDate); + } + function subDay(day) { + day = Math.abs(day); + var pastDays = this.d.date; // pastDays -> Number of days that is past + if (pastDays > day) { + this.d.date -= day; + } else { + this.subMonth(1, false); + var daysInMonth = this.getDaysInMonth(); + this.d.date = daysInMonth; + day -= pastDays; -function millisecond(format) { - format = String(format).trim(); + while (day >= daysInMonth) { + day -= daysInMonth; + this.subMonth(1, false); + daysInMonth = this.getDaysInMonth(); + } - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.millisecond = 0; - this.subMillisecond(format); - } else if (format > 23) { - this.d.millisecond = 23; - this.addMillisecond(format - 23); - } else { - this.d.millisecond = +format; - } + this.d.date = daysInMonth - day; + } - return this; - } else { - if (format == "CCC" || format == "c") return this.d.millisecond; - if (format == "CCCC") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(this.d.millisecond, 3); - return this.d.millisecond; + return this; } -} - -/***/ }), + function subHour(hour) { + hour = Math.abs(hour); -/***/ "./src/set-get/minute.js": -/*!*******************************!*\ - !*** ./src/set-get/minute.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + while (hour >= 24) { + hour -= 24; + this.subDay(1, false); + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "minute": () => (/* binding */ minute) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + var pastHours = this.d.hour; // pastHours -> Number of hours that is past + if (hour > pastHours) { + this.subDay(1, false); + hour -= pastHours; + this.d.hour = 24 - hour; + } else this.d.hour -= hour; + return this; + } -function minute(format) { - format = String(format).trim(); + function subMinute(minute) { + minute = Math.abs(minute); - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.minute = 0; - this.subMinute(format); - } else if (format > 23) { - this.d.minute = 23; - this.addMinute(format - 23); - } else { - this.d.minute = +format; - } + while (minute >= 60) { + minute -= 60; + this.subHour(1, false); + } - return this; - } else { - if (format == "m") return this.d.minute; - if (format == "mm") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(this.d.minute, 2); - return this.d.minute; - } -} + var pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past + if (minute > pastMinute) { + this.subHour(1, false); + minute -= pastMinute; + this.d.minute = 60 - minute; + } else this.d.minute -= minute; -/***/ }), + return this; + } -/***/ "./src/set-get/month.js": -/*!******************************!*\ - !*** ./src/set-get/month.js ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + function subSecond(second) { + second = Math.abs(second); -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "month": () => (/* binding */ month) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + while (second >= 60) { + second -= 60; + this.subMinute(1, false); + } + var pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past + if (second > pastSeconds) { + this.subMinute(1, false); + second -= pastSeconds; + this.d.second = 60 - second; + } else this.d.second -= second; -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jM"; - default: - return "M"; - } -}; - -function month(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 1) { - this.d.month = 1; - this.subMonth(format - 1, false); - } else if (format > 12) { - this.d.month = 12; - this.addMonth(format - 12, false); - } else { - this.d.month = +format; - } - - while (!this.isValidDate()) { - this.subDay(1, false); - } - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - const jMonth = this.c == "jalali" ? this.d.month : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[1]; - if (format == "jMM") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(jMonth, 2); - if (format == "jM") return jMonth; - if (format == "jMMMM" || format == "jMMM") - return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR.jalali.months[jMonth]; - if (format == "jMo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jMonth); - if (format == "jMO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jMonth, "jalali", 2); - - const gMonth = - this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1; - if (format == "M") return gMonth; - if (format == "MM") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(gMonth, 2); - if (format == "MMMM") return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR.gregorian.months[gMonth]; - if (format == "Mo" || format == "MO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gMonth, "gregorian"); - if (format == "MMM") - return _utils__WEBPACK_IMPORTED_MODULE_0__.CALENDAR.gregorian.months[gMonth].slice(0, 3); - - return jMonth; + return this; } -} + function subMillisecond(millisecond) { + millisecond = Math.abs(millisecond); -/***/ }), + while (millisecond >= 1000) { + millisecond -= 1000; + this.subSecond(1, false); + } -/***/ "./src/set-get/quarter.js": -/*!********************************!*\ - !*** ./src/set-get/quarter.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "quarter": () => (/* binding */ quarter) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + if (millisecond > pastMilliseconds) { + this.subSecond(1, false); + millisecond -= pastMilliseconds; + this.d.millisecond = 1000 - millisecond; + } else this.d.millisecond -= millisecond; - - -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jQ"; - default: - return "Q"; + return this; } -}; - -function quarter(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 1) { - this.d.month = 1; - this.subQuarter(format - 1, false); - } else if (format > 4) { - this.d.month = 12; - this.addQuarter(format - 4, false); - } else { - this.d.month = +format * 3 - 2; - } - while (!this.isValidDate()) { - this.subDay(1, false); - } - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - let jQuarter = Math.ceil( - (this.c == "jalali" ? this.d.month : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[1]) / 3 - ); - if (format == "jQ") return jQuarter; - if (format == "jQo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jQuarter); - if (format == "jQO") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jQuarter, "jalali", 2); - - const gQuarter = Math.ceil( - (this.c == "gregorian" ? this.d.month : this.toDate().getMonth() + 1) / 3 - ); - if (format == "Q") return gQuarter; - if (format == "Qo" || format == "QO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gQuarter, "gregorian"); - - return jQuarter; - } -} + var jalali$1 = function jalali(format) { + return format.replace(/\?/g, "j").replace(/datetime/gi, "jYYYY/jMM/jDD HH:mm").replace(/date/gi, "jYYYY/jMM/jDD").replace(/time/gi, "HH:mm"); + }; + + var gregorian$1 = function gregorian(format) { + return format.replace(/\?/g, "").replace(/datetime/gi, "YYYY-MM-DD HH:mm").replace(/date/gi, "YYYY-MM-DD").replace(/time/gi, "HH:mm"); + }; -/***/ }), + function toString(format) { + var rawTexts = []; + format = format.replace(REGEX["betweenBacktick"], function (_matched, text) { + rawTexts.push(text); + return "###"; + }); + + switch (this.c[0]) { + case "j": + format = jalali$1(format); + break; + + default: + format = gregorian$1(format); + } + + var matchedFormats = format.match(REGEX["format"]); + var dateString = ""; + + var _iterator = _createForOfIteratorHelper(matchedFormats), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _i = _step.value; + dateString += format.substring(0, format.indexOf(_i)); + if (_i.search(/Y|y/) != -1) dateString += this.year(_i);else if (_i.search(/M/) != -1) dateString += this.month(_i);else if (_i.search(/Q/) != -1) dateString += this.quarter(_i);else if (_i.search(/D|d/) != -1) dateString += this.date(_i);else if (_i.search(/W|w/) != -1) dateString += this.week(_i);else if (_i.search(/H|h|k/) != -1) dateString += this.hour(_i);else if (_i.search(/m/) != -1) dateString += this.minute(_i);else if (_i.search(/s/) != -1) dateString += this.second(_i);else if (_i.search(/c|C/) != -1) dateString += this.millisecond(_i);else if (_i.search(/t/) != -1) dateString += this.timestamp();else if (_i.search(/a|A/) != -1) dateString += TIMETYPE(this.d.hour, _i); + format = format.substr(format.indexOf(_i) + _i.length); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + dateString += format; + + for (var i = 0; i < rawTexts.length; i++) { + dateString = dateString.replace("###", rawTexts[i]); + } + + return String(dateString); + } -/***/ "./src/set-get/second.js": -/*!*******************************!*\ - !*** ./src/set-get/second.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + function toArray() { + if (!arguments.length) { + return Object.values(this.d); + } -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "second": () => (/* binding */ second) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + var formats = typesToArray.apply(void 0, [this.c].concat(Array.prototype.slice.call(arguments))); + return [this.year(formats[0]), this.month(formats[1]), this.date(formats[2]), this.hour(formats[3]), this.minute(formats[4]), this.second(formats[5]), this.millisecond(formats[6])]; + } + function toObject() { + if (!arguments.length) { + return this.d; + } + + var formats = typesToArray.apply(void 0, [this.c].concat(Array.prototype.slice.call(arguments))); + return { + year: this.year(formats[0]), + month: this.month(formats[1]), + date: this.date(formats[2]), + hour: this.hour(formats[3]), + minute: this.minute(formats[4]), + second: this.second(formats[5]), + millisecond: this.millisecond(formats[6]) + }; + } + var jalali = function jalali(date) { + return jtg.apply(void 0, _toConsumableArray(date)); + }; -function second(format) { - format = String(format).trim(); + var gregorian = function gregorian(date) { + --date[1]; + return _construct(Date, _toConsumableArray(date)); + }; - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - if (format < 0) { - this.d.second = 0; - this.subSecond(format); - } else if (format > 23) { - this.d.second = 23; - this.addSecond(format - 23); - } else { - this.d.second = +format; - } + function toDate() { + switch (this.c[0]) { + case "j": + return jalali(this.toArray()); - return this; - } else { - if (format == "s") return this.d.second; - if (format == "ss") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(this.d.second, 2); - return this.d.second; + default: + return gregorian(this.toArray()); + } } -} - - -/***/ }), - -/***/ "./src/set-get/startOf.js": -/*!********************************!*\ - !*** ./src/set-get/startOf.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "startOf": () => (/* binding */ startOf) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); - - -function startOf(unit) { - this.d.millisecond = 0; - if (unit[0] == "s") return this; - this.d.second = 0; - if (unit == "m" || unit == "minute") return this; - this.d.minute = 0; - if (unit[0] == "h") return this; - this.d.hour = 0; - if (unit[0] == "d") return this; - if (unit[0] == "w") - return this.subDay((0,_base__WEBPACK_IMPORTED_MODULE_0__.getDayOfWeek)(this.toDate(), this.c, "array")); - this.d.date = 1; - if (unit[0] == "q") return this.quarter(this.quarter()); - if (unit == "M" || unit == "month") return this; - this.d.month = 1; - if (unit[0] == "y") return this; -} - - -/***/ }), - -/***/ "./src/set-get/time.js": -/*!*****************************!*\ - !*** ./src/set-get/time.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "time": () => (/* binding */ time) -/* harmony export */ }); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); -/* harmony import */ var _comparison__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../comparison */ "./src/comparison/index.js"); - - - -function time(...t) { - if (!t.length) return this.toArray().slice(3); - let times = []; - if ((0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isPersianDate)(t[0])) times = t[0].time(); - else if ((0,_comparison__WEBPACK_IMPORTED_MODULE_1__.isDate)(t[0])) - times = [ - t[0].getHours(), - t[0].getMinutes(), - t[0].getSeconds(), - t[0].getMilliseconds(), - ]; - else if (Object.prototype.toString.call(t[0]) === "[object Object]") - times = [ - t[0].h || t[0].hour || t[0].hours || 0, - t[0].m || t[0].minute || t[0].minutes || 0, - t[0].s || t[0].second || t[0].seconds || 0, - t[0].ms || t[0].millisecond || t[0].milliseconds || 0, - ]; - else times = (0,_base__WEBPACK_IMPORTED_MODULE_0__.typesToArray)(this.c, ...t); - if (this.isValidTime(...times)) { - return this.hour(times[0] || 0) - .minute(times[1] || 0) - .second(times[2] || 0) - .millisecond(times[3] || 0); - } else return "زمان نامعتبر"; -} - - -/***/ }), - -/***/ "./src/set-get/timestamp.js": -/*!**********************************!*\ - !*** ./src/set-get/timestamp.js ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "timestamp": () => (/* binding */ timestamp) -/* harmony export */ }); -function timestamp(value) { - if (value) { - return this.fromGregorian(+String(value).trim()); - } else { - return this.toDate().getTime(); + + function diff(date, unit, addOne) { + var _this$clone; + + date = typesToArray(this.c, date); + if (!this.isValid.apply(this, _toConsumableArray(date))) return "تاریخ نامعتبر"; + + var result = this.timestamp() - (_this$clone = this.clone()).parse.apply(_this$clone, _toConsumableArray(date)).timestamp(); + + switch (unit) { + case "y": + case "year": + case "years": + result = this.d.year - date[0]; + break; + + case "M": + case "month": + case "months": + result = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]); + break; + + case "d": + case "date": + case "day": + case "days": + result = Math.ceil(result / 1000 / 60 / 60 / 24); + break; + + case "h": + case "hour": + case "hours": + result = Math.ceil(result / 1000 / 60 / 60); + break; + + case "m": + case "minute": + case "minutes": + result = Math.ceil(result / 1000 / 60); + break; + + case "s": + case "second": + case "seconds": + result = Math.ceil(result / 1000); + break; + } + + return addOne ? result + (result >= 0 ? 1 : -1) : result; } -} + function diffForHumans(date, suffix) { + var result = this.diff(date, "s"); + if (typeof result == "string") return "تاریخ نامعتبر"; + var prefix = suffix && (result > 0 ? "آینده" : "پیش"); + result = Math.abs(result); + if (result == 0) return "هم اکنون";else if (result < 45) result = "لحظات";else if ((result /= 60) < 45) // divide by 60, for getting minute + result = Math.round(result) + " " + "دقیقه";else if ((result /= 60) < 23.5) // divide by 60, for getting hour + result = Math.round(result) + " " + "ساعت";else if ((result /= 24) < 26) // divide by 24, for getting day + result = Math.round(result) + " " + "روز";else if (result < 320) result = Math.round(result / 30) + " " + "ماه";else result = Math.round(result / 365) + " " + "سال"; + return result + (suffix ? " " + prefix : ""); + } -/***/ }), + ////////////////////---------- Are You Ready? ----------//////////////////// + /** + * A Date library for working with persian date + * @class + * @param {Date|Array|Null|Object|String} date - the date that convert to persian date + * @param {String} [calendar='jalali'] - the calendar + */ -/***/ "./src/set-get/week.js": -/*!*****************************!*\ - !*** ./src/set-get/week.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + var PersianDate = function PersianDate(dateVal, calendarVal) { + /** + * keeps the date and time + * @type {Object} + * @property {Number} year - the year of date + * @property {Number} month - the month of date + * @property {Number} date - the day of month of date + * @property {Number} hour - the hour of time + * @property {Number} minute - the minute of time + * @property {Number} second - the second of time + * @property {Number} millisecond - the millisecond of time + * @property {Number} gregorian - the gregorian date + */ + + this.d = {}; + /** + * the calendar type + * @type {String} + * @default "jalali" + * @example jalali | gregorian + */ + + this.c = "jalali"; ////////////////////--------- create & parse ---------///////////////////// + + /** + * make current date in persian calendar + * @returns {PersianDate} make current date and return class + */ + + PersianDate.prototype.now = function () { + if (this.error) { + delete this.error; + this.d = {}; + } + + return now.call(this); + }; + /** + * set persian date from Gregorian date + * @deprecated + * @param {...Number|Date|Array|Null} date - the date that convert to persian date + * @returns {PersianDate} return class with persian date + * @throws {PersianDate|String} if date invalid return class with error property with error property + */ + + + PersianDate.prototype.setDate = function () { + warn('"setDate" function is deprecated! use "fromGregorian" function instead.\n' + "https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date"); + return this.fromGregorian.apply(this, arguments); + }; + /** + * convert a jalali or gregorian date to PersianDate instance + * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {PersianDate} return class with persian date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.parse = function () { + return parse.call.apply(parse, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * get clone of this date + * @since 1.1.0 + * @returns {PersianDate} returns the clone of this date + */ + + + PersianDate.prototype.clone = function () { + return clone.call(this); + }; + /** + * convert a jalali date to PersianDate instance + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {PersianDate} return class with persian date + * @throws {PersianDate} if date invalid return class with error + */ + + + PersianDate.prototype.fromJalali = function () { + if (this.error) { + delete this.error; + this.d = {}; + } + + return fromJalali.call.apply(fromJalali, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * convert a gregorian date to PersianDate instance + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {PersianDate} return class with persian date + * @throws {PersianDate} if date invalid return class with error + */ + + + PersianDate.prototype.fromGregorian = function () { + if (this.error) { + delete this.error; + this.d = {}; + } + + return fromGregorian.call.apply(fromGregorian, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * convert a gregorian date to PersianDate instance + * @since 2.0.0 + * @param {"j"|"jalali"|"g"|"gregorian"} calendar - the calendar + * @returns {PersianDate} return class with persian date + */ + + + PersianDate.prototype.calendar = function (calendar$1) { + return calendar.call(this, calendar$1); + }; ////////////////////--------- set & get ---------///////////////////// + + /** + * get or set year + * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting + * @returns {PersianDate|String|Number} if set the year, returns class, + * else returns a number or string from year + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.year = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return year.call(this, format); + }; + /** + * get or set month + * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting + * @returns {PersianDate|String|Number} if set the month, returns class, + * else returns a number or string from month + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.month = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return month.call(this, format); + }; + /** + * get or set day in month + * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting + * @returns {PersianDate|String|Number} if set the day, returns class, + * else returns a number or string from day + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.date = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return date.call(this, format); + }; + /** + * get or set quarter + * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting + * @returns {PersianDate|String|Number} if set the quarter, returns class, + * else returns a number or string from quarter + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.quarter = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return quarter.call(this, format); + }; + /** + * get or set week + * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting + * @returns {PersianDate|String|Number} if set the week, returns class, + * else returns a number or string from week + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.week = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + if (this.error) return this.error; + return week.call(this, format); + }; + /** + * get or set hour + * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting + * @returns {PersianDate|String|Number} if set the hour, returns class, + * else returns a number or string from hour + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.hour = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "H"; + if (this.error) return this.error; + return hour.call(this, format); + }; + /** + * get or set minute + * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting + * @returns {PersianDate|String|Number} if set the minute, returns class, + * else returns a number or string from minute + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.minute = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "m"; + if (this.error) return this.error; + return minute.call(this, format); + }; + /** + * get or set second + * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting + * @returns {PersianDate|String|Number} if set the second, returns class, + * else returns a number or string from second + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.second = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "s"; + if (this.error) return this.error; + return second.call(this, format); + }; + /** + * get or set millisecond + * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting + * @returns {PersianDate|String|Number} if set the millisecond, returns class, + * else returns a number or string from millisecond + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.millisecond = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "c"; + if (this.error) return this.error; + return millisecond.call(this, format); + }; + /** + * get timestamp or set date from timestamp + * @param {Null|Number|String} value - a number for set the millisecond + * @returns {PersianDate|Number} if set the timestamp, returns class, + * else returns timestamp (number) + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.timestamp = function (value) { + if (this.error) return this.error; + return timestamp.call(this, value); + }; + + PersianDate.prototype.valueOf = function () { + return this.timestamp(); + }; + /** + * returns number of days in month + * @param {?Number} year - year of date that returns number of days in month + * @param {?Number} month - month of date that returns number of days in month + * @returns {Number} number of days in month + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.getDaysInMonth = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + var month = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.d.month; + if (this.error) return this.error; + return getDaysInMonth(this.c, year, month); + }; + /** + * return number of weeks in year + * @since 2.0.0 + * @param {Number|String} year - the year + * @returns {Number} number of weeks in year + */ + + + PersianDate.prototype.getWeeksInYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + if (this.error) return this.error; + return getWeeksInYear.call(this, year); + }; + /** + * change the date to start of the year or month or ... + * @since 2.0.0 + * @param {String} unit - the unit of time + * @returns {PersianDate} return the class with new date or time + */ + + + PersianDate.prototype.startOf = function () { + var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "year"; + return startOf.call(this, unit); + }; + /** + * change the date to end of the year or month or ... + * @since 2.0.0 + * @param {String} unit - the unit of time + * @returns {PersianDate} return the class with new date or time + */ + + + PersianDate.prototype.endOf = function () { + var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "year"; + return endOf.call(this, unit); + }; + /** + * change the time + * @since 2.3.0 + * @param {PersianDate|Date|String|Array|Object|Number} time - the new time + * @param {Null|String|Number} time.h - hour of date + * @param {Null|String|Number} time.hour - hour of date + * @param {Null|String|Number} time.hours - hour of date + * @param {Null|String|Number} time.m - minute of date + * @param {Null|String|Number} time.minute - minute of date + * @param {Null|String|Number} time.minutes - minute of date + * @param {Null|String|Number} time.s - second of date + * @param {Null|String|Number} time.second - second of date + * @param {Null|String|Number} time.seconds - second of date + * @param {Null|String|Number} time.ms - millisecond of date + * @param {Null|String|Number} time.millisecond - millisecond of date + * @param {Null|String|Number} time.milliseconds - millisecond of date + * @returns {PersianDate|Array} if set the time, returns class, + * else returns an array of time + * @throws {String} if time invalid return error text + */ + + + PersianDate.prototype.time = function () { + if (this.error) return this.error; + return time.call.apply(time, [this].concat(Array.prototype.slice.call(arguments))); + }; ////////////////////--------- add & sub ---------///////////////////// + + /** + * add to year + * @param {?Number|String} [year=1] - a number for add with year + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!year) return this; + return addYear.call(this, year, checkDate); + }; + /** + * add to month + * @param {?Number|String} [month=1] - a number for add with month + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addMonth = function () { + var month = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!month) return this; + return addMonth.call(this, month, checkDate); + }; + /** + * add to day + * @param {?Number|String} [day=1] - a number for add with day + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addDay = function () { + var day = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!day) return this; + return addDay.call(this, day, checkDate); + }; + /** + * add to quarter + * @param {?Number|String} [quarter=1] - a number for add with quarter + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addQuarter = function () { + var quarter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!quarter) return this; + return addQuarter.call(this, quarter, checkDate); + }; + /** + * add to week + * @param {?Number|String} [week=1] - a number for add with week + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addWeek = function () { + var week = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!week) return this; + return addWeek.call(this, week, checkDate); + }; + /** + * add to hour + * @param {?Number|String} [hour=1] - a number for add with hour + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addHour = function () { + var hour = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!hour) return this; + return addHour.call(this, hour, checkDate); + }; + /** + * add to minute + * @param {?Number|String} [minute=1] - a number for add with minute + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addMinute = function () { + var minute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!minute) return this; + return addMinute.call(this, minute, checkDate); + }; + /** + * add to second + * @param {?Number|String} [second=1] - a number for add with second + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addSecond = function () { + var second = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!second) return this; + return addSecond.call(this, second, checkDate); + }; + /** + * add to millisecond + * @param {?Number|String} [millisecond=1] - a number for add with millisecond + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.addMillisecond = function () { + var millisecond = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!millisecond) return this; + return addMillisecond.call(this, millisecond, checkDate); + }; + /** + * subtract from year + * @param {?Number|String} [year=1] - a number for subtract from year + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!year) return this; + return subYear.call(this, year, checkDate); + }; + /** + * subtract from month + * @param {?Number|String} [month=1] - a number for subtract from month + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subMonth = function () { + var month = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!month) return this; + return subMonth.call(this, month, checkDate); + }; + /** + * subtract from day + * @param {?Number|String} [day=1] - a number for subtract from day + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subDay = function () { + var day = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!day) return this; + return subDay.call(this, day, checkDate); + }; + /** + * subtract from quarter + * @param {?Number|String} [quarter=1] - a number for subtract from quarter + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subQuarter = function () { + var quarter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!quarter) return this; + return subQuarter.call(this, quarter, checkDate); + }; + /** + * subtract from week + * @param {?Number|String} [week=1] - a number for subtract from week + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subWeek = function () { + var week = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!week) return this; + return subWeek.call(this, week, checkDate); + }; + /** + * subtract from hour + * @param {?Number|String} [hour=1] - a number for subtract from hour + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subHour = function () { + var hour = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!hour) return this; + return subHour.call(this, hour, checkDate); + }; + /** + * subtract from minute + * @param {?Number|String} [minute=1] - a number for subtract from minute + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subMinute = function () { + var minute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!minute) return this; + return subMinute.call(this, minute, checkDate); + }; + /** + * subtract from second + * @param {?Number|String} [second=1] - a number for subtract from second + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subSecond = function () { + var second = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!second) return this; + return subSecond.call(this, second, checkDate); + }; + /** + * subtract from millisecond + * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond + * @param {?Boolean} checkDate checks the result that the date is valid, + * If not valid, it will be deducted from the day to be valid + * @returns {PersianDate} return class with new date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.subMillisecond = function () { + var millisecond = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var checkDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + if (!millisecond) return this; + return subMillisecond.call(this, millisecond, checkDate); + }; ////////////////////--------- conversion ---------///////////////////// + + /** + * returns date as string with specify format + * @param {?String} [format=date] - formatting date to string + * @returns {String} date string + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toString = function () { + var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "date"; + if (this.error) return this.error; + return toString.call(this, format); + }; + /** + * return the array of PersianDate + * @since 1.3.0 + * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year + * @param {String|Number} yearForamt.y - year format + * @param {Null|String|Number} yearForamt.year - year format + * @param {Null|String|Number} yearForamt.years - year format + * @param {Null|String|Number} yearForamt.M - month format + * @param {Null|String|Number} yearForamt.month - month format + * @param {Null|String|Number} yearForamt.months - month format + * @param {Null|String|Number} yearForamt.d - day format + * @param {Null|String|Number} yearForamt.day - day format + * @param {Null|String|Number} yearForamt.days - day format + * @param {Null|String|Number} yearForamt.date - day format + * @param {Null|String|Number} yearForamt.h - hour format + * @param {Null|String|Number} yearForamt.hour - hour format + * @param {Null|String|Number} yearForamt.hours - hour format + * @param {Null|String|Number} yearForamt.m - minute format + * @param {Null|String|Number} yearForamt.minute - minute format + * @param {Null|String|Number} yearForamt.minutes - minute format + * @param {Null|String|Number} yearForamt.s - second format + * @param {Null|String|Number} yearForamt.second - second format + * @param {Null|String|Number} yearForamt.seconds - second format + * @param {Null|String|Number} yearForamt.ms - millisecond format + * @param {Null|String|Number} yearForamt.millisecond - millisecond format + * @param {Null|String|Number} yearForamt.milliseconds - millisecond format + * @param {Null|Number|String} monthFormat month format + * @param {Null|Number|String} dayFormat day format + * @param {Null|Number|String} hourFormat hour format + * @param {Null|Number|String} minuteFormat minute format + * @param {Null|Number|String} secondFormat second format + * @param {Null|Number|String} millisecondFormat millisecond format + * @returns {Object} if date valid, return array of date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toArray = function () { + if (this.error) return this.error; + return toArray.call.apply(toArray, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * return the object of PersianDate + * @since 1.3.0 + * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year + * @param {String|Number} yearForamt.y - year format + * @param {Null|String|Number} yearForamt.year - year format + * @param {Null|String|Number} yearForamt.years - year format + * @param {Null|String|Number} yearForamt.M - month format + * @param {Null|String|Number} yearForamt.month - month format + * @param {Null|String|Number} yearForamt.months - month format + * @param {Null|String|Number} yearForamt.d - day format + * @param {Null|String|Number} yearForamt.day - day format + * @param {Null|String|Number} yearForamt.days - day format + * @param {Null|String|Number} yearForamt.date - day format + * @param {Null|String|Number} yearForamt.h - hour format + * @param {Null|String|Number} yearForamt.hour - hour format + * @param {Null|String|Number} yearForamt.hours - hour format + * @param {Null|String|Number} yearForamt.m - minute format + * @param {Null|String|Number} yearForamt.minute - minute format + * @param {Null|String|Number} yearForamt.minutes - minute format + * @param {Null|String|Number} yearForamt.s - second format + * @param {Null|String|Number} yearForamt.second - second format + * @param {Null|String|Number} yearForamt.seconds - second format + * @param {Null|String|Number} yearForamt.ms - millisecond format + * @param {Null|String|Number} yearForamt.millisecond - millisecond format + * @param {Null|String|Number} yearForamt.milliseconds - millisecond format + * @param {Null|Number|String} monthFormat month format + * @param {Null|Number|String} dayFormat day format + * @param {Null|Number|String} hourFormat hour format + * @param {Null|Number|String} minuteFormat minute format + * @param {Null|Number|String} secondFormat second format + * @param {Null|Number|String} millisecondFormat millisecond format + * @returns {Object} if date valid, return Object of date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toObject = function () { + if (this.error) return this.error; + return toObject.call.apply(toObject, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * return the Date instance of PersianDate + * @since 2.0.0 + * @returns {Date} if date valid, return Date instance of date + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.toDate = function () { + if (this.error) return this.error; + return toDate.call(this); + }; ////////////////////--------- diff ---------///////////////////// + + /** + * get the diffrence between two date + * @since 1.4.0 + * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date + * @param {String|Number} date.y - year of date + * @param {Null|String|Number} date.year - year of date + * @param {Null|String|Number} date.years - year of date + * @param {Null|String|Number} date.M - month of date + * @param {Null|String|Number} date.month - month of date + * @param {Null|String|Number} date.months - month of date + * @param {Null|String|Number} date.d - day of date + * @param {Null|String|Number} date.day - day of date + * @param {Null|String|Number} date.days - day of date + * @param {Null|String|Number} date.date - day of date + * @param {Null|String|Number} date.h - hour of date + * @param {Null|String|Number} date.hour - hour of date + * @param {Null|String|Number} date.hours - hour of date + * @param {Null|String|Number} date.m - minute of date + * @param {Null|String|Number} date.minute - minute of date + * @param {Null|String|Number} date.minutes - minute of date + * @param {Null|String|Number} date.s - second of date + * @param {Null|String|Number} date.second - second of date + * @param {Null|String|Number} date.seconds - second of date + * @param {Null|String|Number} date.ms - millisecond of date + * @param {Null|String|Number} date.millisecond - millisecond of date + * @param {Null|String|Number} date.milliseconds - millisecond of date + * @param {String} unit - the unit of the measurment + * @param {Boolean} addOne - add one day to result + * @returns {Number} diffrence + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.diff = function (date, unit) { + var addOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + if (this.error) return this.error; + return diff.call(this, date, unit, addOne); + }; + /** + * get the diffrence between two date in a human-readable format + * @since 2.0.0 + * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date + * @param {String|Number} date.y - year of date + * @param {Null|String|Number} date.year - year of date + * @param {Null|String|Number} date.years - year of date + * @param {Null|String|Number} date.M - month of date + * @param {Null|String|Number} date.month - month of date + * @param {Null|String|Number} date.months - month of date + * @param {Null|String|Number} date.d - day of date + * @param {Null|String|Number} date.day - day of date + * @param {Null|String|Number} date.days - day of date + * @param {Null|String|Number} date.date - day of date + * @param {Null|String|Number} date.h - hour of date + * @param {Null|String|Number} date.hour - hour of date + * @param {Null|String|Number} date.hours - hour of date + * @param {Null|String|Number} date.m - minute of date + * @param {Null|String|Number} date.minute - minute of date + * @param {Null|String|Number} date.minutes - minute of date + * @param {Null|String|Number} date.s - second of date + * @param {Null|String|Number} date.second - second of date + * @param {Null|String|Number} date.seconds - second of date + * @param {Null|String|Number} date.ms - millisecond of date + * @param {Null|String|Number} date.millisecond - millisecond of date + * @param {Null|String|Number} date.milliseconds - millisecond of date + * @param {Boolean} suffix - add suffix or not + * @returns {String} if date valid, return diff human-readable format + * @throws {String} if date invalid return error message + */ + + + PersianDate.prototype.diffForHumans = function (date) { + var suffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + if (this.error) return this.error; + return diffForHumans.call(this, date, suffix); + }; ////////////////////--------- comparison ---------///////////////////// + + /** + * returns minimum date in arguments that passed + * @since 1.4.0 + * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; + * @param {String} date.y - year of date + * @param {Null|String} date.year - year of date + * @param {Null|String} date.years - year of date + * @param {Null|String} date.M - month of date + * @param {Null|String} date.month - month of date + * @param {Null|String} date.months - month of date + * @param {Null|String} date.d - day of date + * @param {Null|String} date.day - day of date + * @param {Null|String} date.days - day of date + * @param {Null|String} date.date - day of date + * @param {Null|String} date.h - hour of date + * @param {Null|String} date.hour - hour of date + * @param {Null|String} date.hours - hour of date + * @param {Null|String} date.m - minute of date + * @param {Null|String} date.minute - minute of date + * @param {Null|String} date.minutes - minute of date + * @param {Null|String} date.s - second of date + * @param {Null|String} date.second - second of date + * @param {Null|String} date.seconds - second of date + * @param {Null|String} date.ms - millisecond of date + * @param {Null|String} date.millisecond - millisecond of date + * @param {Null|String} date.milliseconds - millisecond of date + * @returns {*} return minimum date + * @throws {false} if parameters not send or parameters is invalid, return false + */ + + + PersianDate.prototype.min = function () { + return mathOperation.call(this, arguments, "min"); + }; + /** + * returns maximum date in arguments that passed + * @since 1.4.0 + * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date; + * @param {String} date.y - year of date + * @param {Null|String} date.year - year of date + * @param {Null|String} date.years - year of date + * @param {Null|String} date.M - month of date + * @param {Null|String} date.month - month of date + * @param {Null|String} date.months - month of date + * @param {Null|String} date.d - day of date + * @param {Null|String} date.day - day of date + * @param {Null|String} date.days - day of date + * @param {Null|String} date.date - day of date + * @param {Null|String} date.h - hour of date + * @param {Null|String} date.hour - hour of date + * @param {Null|String} date.hours - hour of date + * @param {Null|String} date.m - minute of date + * @param {Null|String} date.minute - minute of date + * @param {Null|String} date.minutes - minute of date + * @param {Null|String} date.s - second of date + * @param {Null|String} date.second - second of date + * @param {Null|String} date.seconds - second of date + * @param {Null|String} date.ms - millisecond of date + * @param {Null|String} date.millisecond - millisecond of date + * @param {Null|String} date.milliseconds - millisecond of date + * @returns {*} return maximum date + * @throws {false} if parameters not send or parameters is invalid, return false + */ + + + PersianDate.prototype.max = function () { + return mathOperation.call(this, arguments, "max"); + }; + /** + * receives year and determined that is leap year or not + * @param {?Number} year - the year to be determined is a leap or not + * @returns {Boolean} if is leap year, returns true + */ + + + PersianDate.prototype.isLeapYear = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + if (this.error) return false; + return isLeapYear(this.c, year); + }; + /** + * checks the persian date and time + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid, returns true + */ + + + PersianDate.prototype.isValid = function (year, month, day, hour, minute, second, millisecond) { + if (this.error) return false; + return this.isValidDate(year, month, day) && this.isValidTime(hour, minute, second, millisecond); + }; + /** + * checks the persian date + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @returns {Boolean} if is valid date, returns true + */ + + + PersianDate.prototype.isValidDate = function () { + var year = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.year; + var month = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.d.month; + var day = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.d.date; + if (this.error) return false; + return isValidDate(this.c, year, month, day); + }; + /** + * checks the time + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid time, returns true + */ + + + PersianDate.prototype.isValidTime = function () { + var hour = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.d.hour; + var minute = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.d.minute; + var second = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.d.second; + var millisecond = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.d.millisecond; + if (this.error) return false; + return isValidTime(hour, minute, second, millisecond); + }; + /** + * checks this date is the same to another date + * @since 1.1.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is same to the argument, return true of false + */ + + + PersianDate.prototype.isSame = function () { + if (this.error) return false; + return isSame.call.apply(isSame, [this].concat(Array.prototype.slice.call(arguments))); + }; + /** + * checks this date is before the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is before the argument, return true of false + */ + + + PersianDate.prototype.isBefore = function () { + if (this.error) return false; + return compare.call(this, arguments, "<"); + }; + /** + * checks this date is after the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is after the argument, return true of false + */ + + + PersianDate.prototype.isAfter = function () { + if (this.error) return false; + return compare.call(this, arguments, ">"); + }; + /** + * checks this date is same or before the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is samr or before the argument, return true of false + */ + + + PersianDate.prototype.isSameOrBefore = function () { + if (this.error) return false; + return compare.call(this, arguments, "<="); + }; + /** + * checks this date is same or after the another date + * @since 1.2.0 + * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year + * @param {String|Number} year.y - year of date + * @param {Null|String|Number} year.year - year of date + * @param {Null|String|Number} year.years - year of date + * @param {Null|String|Number} year.M - month of date + * @param {Null|String|Number} year.month - month of date + * @param {Null|String|Number} year.months - month of date + * @param {Null|String|Number} year.d - day of date + * @param {Null|String|Number} year.day - day of date + * @param {Null|String|Number} year.days - day of date + * @param {Null|String|Number} year.date - day of date + * @param {Null|String|Number} year.h - hour of date + * @param {Null|String|Number} year.hour - hour of date + * @param {Null|String|Number} year.hours - hour of date + * @param {Null|String|Number} year.m - minute of date + * @param {Null|String|Number} year.minute - minute of date + * @param {Null|String|Number} year.minutes - minute of date + * @param {Null|String|Number} year.s - second of date + * @param {Null|String|Number} year.second - second of date + * @param {Null|String|Number} year.seconds - second of date + * @param {Null|String|Number} year.ms - millisecond of date + * @param {Null|String|Number} year.millisecond - millisecond of date + * @param {Null|String|Number} year.milliseconds - millisecond of date + * @param {Null|Number|String} month month of date + * @param {Null|Number|String} day day of date + * @param {Null|Number|String} hour hour of date + * @param {Null|Number|String} minute minute of date + * @param {Null|Number|String} second second of date + * @param {Null|Number|String} millisecond millisecond of date + * @returns {‌Boolean} if this date is same or after the argument, return true of false + */ + + + PersianDate.prototype.isSameOrAfter = function () { + if (this.error) return false; + return compare.call(this, arguments, ">="); + }; + /** + * checks this date is between the another dates + * @since 1.3.0 + * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date + * @param {String|Number} from.y - year of date + * @param {Null|String|Number} from.year - year of date + * @param {Null|String|Number} from.years - year of date + * @param {Null|String|Number} from.M - month of date + * @param {Null|String|Number} from.month - month of date + * @param {Null|String|Number} from.months - month of date + * @param {Null|String|Number} from.d - day of date + * @param {Null|String|Number} from.day - day of date + * @param {Null|String|Number} from.days - day of date + * @param {Null|String|Number} from.date - day of date + * @param {Null|String|Number} from.h - hour of date + * @param {Null|String|Number} from.hour - hour of date + * @param {Null|String|Number} from.hours - hour of date + * @param {Null|String|Number} from.m - minute of date + * @param {Null|String|Number} from.minute - minute of date + * @param {Null|String|Number} from.minutes - minute of date + * @param {Null|String|Number} from.s - second of date + * @param {Null|String|Number} from.second - second of date + * @param {Null|String|Number} from.seconds - second of date + * @param {Null|String|Number} from.ms - millisecond of date + * @param {Null|String|Number} from.millisecond - millisecond of date + * @param {Null|String|Number} from.milliseconds - millisecond of date + * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date + * @param {String|Number} to.y - year of date + * @param {Null|String|Number} to.year - year of date + * @param {Null|String|Number} to.years - year of date + * @param {Null|String|Number} to.M - month of date + * @param {Null|String|Number} to.month - month of date + * @param {Null|String|Number} to.months - month of date + * @param {Null|String|Number} to.d - day of date + * @param {Null|String|Number} to.day - day of date + * @param {Null|String|Number} to.days - day of date + * @param {Null|String|Number} to.date - day of date + * @param {Null|String|Number} to.h - hour of date + * @param {Null|String|Number} to.hour - hour of date + * @param {Null|String|Number} to.hours - hour of date + * @param {Null|String|Number} to.m - minute of date + * @param {Null|String|Number} to.minute - minute of date + * @param {Null|String|Number} to.minutes - minute of date + * @param {Null|String|Number} to.s - second of date + * @param {Null|String|Number} to.second - second of date + * @param {Null|String|Number} to.seconds - second of date + * @param {Null|String|Number} to.ms - millisecond of date + * @param {Null|String|Number} to.millisecond - millisecond of date + * @param {Null|String|Number} to.milliseconds - millisecond of date + * @param {String} method - determines that consider the dates themselves + * @returns {‌Boolean} if this date is between the arguments, return true of false + */ + + + PersianDate.prototype.isBetween = function (from, to) { + var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "()"; + if (this.error) return false; + return isBetween.call(this, from, to, method); + }; + /** + * checks this date is in array of dates + * @since 2.6.0 + * @param {(PersianDate|Date|String|Array|Object)[]} array - this param must be array of PersianDate - string - array - Object and array date + * @param {String|Number} array[].y - year of date + * @param {Null|String|Number} array[].year - year of date + * @param {Null|String|Number} array[].years - year of date + * @param {Null|String|Number} array[].M - month of date + * @param {Null|String|Number} array[].month - month of date + * @param {Null|String|Number} array[].months - month of date + * @param {Null|String|Number} array[].d - day of date + * @param {Null|String|Number} array[].day - day of date + * @param {Null|String|Number} array[].days - day of date + * @param {Null|String|Number} array[].date - day of date + * @param {Null|String|Number} array[].h - hour of date + * @param {Null|String|Number} array[].hour - hour of date + * @param {Null|String|Number} array[].hours - hour of date + * @param {Null|String|Number} array[].m - minute of date + * @param {Null|String|Number} array[].minute - minute of date + * @param {Null|String|Number} array[].minutes - minute of date + * @param {Null|String|Number} array[].s - second of date + * @param {Null|String|Number} array[].second - second of date + * @param {Null|String|Number} array[].seconds - second of date + * @param {Null|String|Number} array[].ms - millisecond of date + * @param {Null|String|Number} array[].millisecond - millisecond of date + * @param {Null|String|Number} array[].milliseconds - millisecond of date + * @returns {‌Boolean} if date is in array return true + */ + + + PersianDate.prototype.isInArray = function (array) { + if (this.error) return false; + return isInArray.call(this, array); + }; + /** + * checks date is a native js Date object + * @since 1.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a native js Date, return true + */ + + + PersianDate.prototype.isDate = isDate; + /** + * checks date is a PersianDate object + * @since 1.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a PersianDate, return true + */ + + PersianDate.prototype.isPersianDate = isPersianDate; + if (calendarVal) this.calendar(calendarVal); + + if (dateVal) { + if (calendarVal && calendarVal[0] == "j") this.fromJalali(dateVal);else this.fromGregorian(dateVal); + } else this.now(); + }; ////////////////////--------- statics ---------///////////////////// -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "week": () => (/* binding */ week) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + /** + * receives year and determined that is leap year or not + * @static + * @since 2.3.0 + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {Number} year - the year to be determined is a leap or not + * @returns {Boolean} if is leap year, returns true + */ + PersianDate.isLeapYear = isLeapYear; + /** + * checks date is a native js Date object + * @static + * @since 2.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a native js Date, return true + */ -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jw"; - default: - return "w"; - } -}; - -function week(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - const weeksInYear = this.getWeeksInYear(); - if (format < 1) { - this.week(1); - this.subWeek(format - 1, false); - } else if (format > weeksInYear) { - this.week(weeksInYear); - this.addWeek(format - weeksInYear, false); - } else { - const weekOfYear = _base__WEBPACK_IMPORTED_MODULE_1__.getWeekOfYear.call( - this, - this.d.year, - this.d.month, - this.d.date, - this.c - ); - this.addWeek(+format - weekOfYear); - } - - while (!this.isValidDate()) { - this.subDay(1, false); - } - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - - const jWeekOfYear = _base__WEBPACK_IMPORTED_MODULE_1__.getWeekOfYear.call( - this, - this.year("jy"), - this.month("jM"), - this.date("jD"), - this.c - ); - if (format == "jw" || format == "jW") return jWeekOfYear; - if (format == "jww" || format == "jWW") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(jWeekOfYear, 2); - if (format == "jwo" || format == "jWo") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jWeekOfYear); - if (format == "jwO" || format == "jWO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(jWeekOfYear, "jalali", 2); - - const gWeekOfYear = _base__WEBPACK_IMPORTED_MODULE_1__.getWeekOfYear.call( - this, - this.year("y"), - this.month("M"), - this.date("D"), - "gregorian" - ); - if (format == "w" || format == "W") return gWeekOfYear; - if (format == "ww" || format == "WW") return (0,_base__WEBPACK_IMPORTED_MODULE_1__.addPrefix)(gWeekOfYear, 2); - if (format == "wo" || format == "Wo" || format == "wO" || format == "WO") - return (0,_base__WEBPACK_IMPORTED_MODULE_1__.ordinalNumber)(gWeekOfYear, "gregorian"); - return jWeekOfYear; - } -} + PersianDate.isDate = isDate; + /** + * checks date is a PersianDate object + * @static + * @since 2.3.0 + * @param {*} date date that must be checked + * @returns {Boolean} if date is a PersianDate, return true + */ + PersianDate.isPersianDate = isPersianDate; + /** + * checks the date and time + * @static + * @since 2.4.0 + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid, returns true + */ -/***/ }), + PersianDate.isValid = isValid; + /** + * checks the date + * @static + * @since 2.4.0 + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {?Number} year - year of date that will be checked + * @param {?Number} month - month of date that will be checked + * @param {?Number} day - day of date that will be checked + * @returns {Boolean} if is valid date, returns true + */ -/***/ "./src/set-get/year.js": -/*!*****************************!*\ - !*** ./src/set-get/year.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + PersianDate.isValidDate = isValidDate; + /** + * checks the time + * @static + * @since 2.4.0 + * @param {?Number} hour - hour of date that will be checked + * @param {?Number} minute - minute of date that will be checked + * @param {?Number} second - second of date that will be checked + * @param {?Number} millisecond - millisecond of date that will be checked + * @returns {Boolean} if is valid time, returns true + */ -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "year": () => (/* binding */ year) -/* harmony export */ }); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils.js"); -/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ "./src/base/index.js"); + PersianDate.isValidTime = isValidTime; + /** + * returns number of days in month + * @param {"jalali"|"gregorian"} calendar - the calendar + * @param {?Number} year - year of date that returns number of days in month + * @param {?Number} month - month of date that returns number of days in month + * @returns {Number} number of days in month + * @throws {String} if date invalid return error message + */ + PersianDate.getDaysInMonth = getDaysInMonth; //TODO: add localization + ////////////////////--------- Have A Good Day ---------///////////////////// + return PersianDate; -const getDefaultFormat = (calendar) => { - switch (calendar[0]) { - case "j": - return "jy"; - default: - return "y"; - } -}; - -function year(format) { - format = String(format).trim(); - - if (_utils__WEBPACK_IMPORTED_MODULE_0__.REGEX.isNumeric.test(format)) { - this.d.year = +format; - if (!this.isValidDate()) { - return this.subDay(1, false); - } - - return this; - } else { - if (!format) format = getDefaultFormat(this.c); - const jYear = this.c == "jalali" ? this.d.year : (0,_base__WEBPACK_IMPORTED_MODULE_1__.gtj)(this.toDate())[0]; - if (format == "jy" || format == "jYYYY") return jYear; - if (format == "jYY") return String(jYear).slice(-2); - const gYear = - this.c == "gregorian" ? this.d.year : this.toDate().getFullYear(); - if (format == "y" || format == "YYYY") return gYear; - if (format == "YY") return String(gYear).slice(-2); - return jYear; - } -} - - -/***/ }), - -/***/ "./src/utils.js": -/*!**********************!*\ - !*** ./src/utils.js ***! - \**********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "CALENDAR": () => (/* binding */ CALENDAR), -/* harmony export */ "TIMETYPE": () => (/* binding */ TIMETYPE), -/* harmony export */ "REGEX": () => (/* binding */ REGEX) -/* harmony export */ }); -const CALENDAR = { - jalali: { - months: { - 1: "فروردین", - 2: "اردیبهشت", - 3: "خرداد", - 4: "تیر", - 5: "مرداد", - 6: "شهریور", - 7: "مهر", - 8: "آبان", - 9: "آذر", - 10: "دی", - 11: "بهمن", - 12: "اسفند", - }, - days: { - label: { - 6: "شنبه", - 0: "یکشنبه", - 1: "دوشنبه", - 2: "سه‌شنبه", - 3: "چهارشنبه", - 4: "پنجشنبه", - 5: "جمعه", - }, - weekNumber: { - // days in jalali calendar start from saturday or 6 - 6: 0, //شنبه - 0: 1, //یکشنبه - 1: 2, //دوشنبه - 2: 3, //سه‌شنبه - 3: 4, //چهارشنبه - 4: 5, //پنجشنبه - 5: 6, //جمعه - }, - }, - ordinalNumbers: function (number, mode) { - const numbers = { - 1: "یک", - 2: "دو", - 3: "سو", - 4: "چهار", - 5: "پنج", - 6: "شش", - 7: "هفت", - 8: "هشت", - 9: "نه", - 10: "ده", - 11: "یازده", - 12: "دوازده", - 13: "سیزده", - 14: "چهارده", - 15: "پانزده", - 16: "شانزده", - 17: "هفده", - 18: "هجده", - 19: "نوزده", - 20: "بیست", - 30: "سی‌", - 40: "چهل", - 50: "پنجاه", - 60: "شصت", - 70: "هفتاد", - 80: "هشتاد", - 90: "نود", - 100: "صد", - 200: "دویست", - 300: "سیصد", - }; - let ordinalNumber = ""; - if (number == 1) ordinalNumber = "اول"; - else if (numbers[number]) - ordinalNumber = numbers[number] + (number == 30 ? "ام" : "م"); - else { - let remainder = number % 100; - if (numbers[remainder]) ordinalNumber = numbers[remainder] + "م"; - else { - remainder = number % 10; - if (remainder) ordinalNumber = numbers[remainder] + "م"; - } - remainder = (number - remainder) % 100; - if (remainder) - ordinalNumber = - numbers[remainder] + - (ordinalNumber - ? " و " + ordinalNumber - : remainder == 30 - ? "ام " - : "م"); - remainder = Math.floor(number / 100) * 100; - if (remainder) - ordinalNumber = - numbers[remainder] + (ordinalNumber ? " و " + ordinalNumber : "م"); - } - if (mode == 2) ordinalNumber += "ین"; - return ordinalNumber; - }, - }, - gregorian: { - months: { - 1: "January", - 2: "February", - 3: "March", - 4: "April", - 5: "May", - 6: "June", - 7: "July", - 8: "August", - 9: "September", - 10: "October", - 11: "November", - 12: "December", - }, - days: { - label: { - 0: "Sunday", - 1: "Monday", - 2: "Tuesday", - 3: "Wednesday", - 4: "Thursday", - 5: "Friday", - 6: "Saturday", - }, - weekNumber: { - // days in gregorian calendar start from sunday or 0 - 0: 0, // Sunday - 1: 1, // Monday - 2: 2, // Tuesday - 3: 3, // Wednesday - 4: 4, // Thursday - 5: 5, // Friday - 6: 6, // Saturday - }, - }, - ordinalNumbers: function (number) { - if (number == 1 || (number % 10 == 1 && number != 11)) - return number + "st"; - else if (number == 2 || (number % 10 == 2 && number != 12)) - return number + "nd"; - else if (number == 3 || (number % 10 == 3 && number != 13)) - return number + "rd"; - else return number + "th"; - }, - }, -}; - -const REGEX = { - format: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g, - isNumeric: /^\d+$/, // this regex, checks input to see is a number or not - separators: "\\/| |-|\\.|,|:", // find ['/',' ','-','.',',',':'] and split string to array by this symbols - betweenBacktick: /`(.*?)`/g, // find the texts between the backticks ==> `Alireza` -}; - -const TIMETYPE = function (hour, format) { - if (hour >= 0 && hour < 12) { - if (format == "a") return "am"; - else if (format == "aa") return "A.M."; - else if (format == "A") return "AM"; - else if (format == "ja") return "ق ظ"; - else if (format == "jaa") return "ق.ظ"; - else if (format == "jA") return "قبل از ظهر"; - return "ق.ظ"; - } else if (hour >= 12 && hour < 24) { - if (format == "a") return "pm"; - else if (format == "aa") return "P.M."; - else if (format == "A") return "PM"; - else if (format == "ja") return "ب ظ"; - else if (format == "jaa") return "ب.ظ"; - else if (format == "jA") return "بعد از ظهر"; - return "ب.ظ"; - } -}; - - - - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module is referenced by other modules so it can't be inlined -/******/ var __webpack_exports__ = __webpack_require__("./src/PersianDate.js"); -/******/ __webpack_exports__ = __webpack_exports__.default; -/******/ -/******/ return __webpack_exports__; -/******/ })() -; -}); -//# sourceMappingURL=PersianDate.umd.js.map \ No newline at end of file +}))); diff --git a/dist/PersianDate.umd.js.map b/dist/PersianDate.umd.js.map deleted file mode 100644 index 1811149..0000000 --- a/dist/PersianDate.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://PersianDate/webpack/universalModuleDefinition","webpack://PersianDate/./src/PersianDate.js","webpack://PersianDate/./src/add-sub/addDay.js","webpack://PersianDate/./src/add-sub/addHour.js","webpack://PersianDate/./src/add-sub/addMillisecond.js","webpack://PersianDate/./src/add-sub/addMinute.js","webpack://PersianDate/./src/add-sub/addMonth.js","webpack://PersianDate/./src/add-sub/addQuarter.js","webpack://PersianDate/./src/add-sub/addSecond.js","webpack://PersianDate/./src/add-sub/addWeek.js","webpack://PersianDate/./src/add-sub/addYear.js","webpack://PersianDate/./src/add-sub/index.js","webpack://PersianDate/./src/add-sub/subDay.js","webpack://PersianDate/./src/add-sub/subHour.js","webpack://PersianDate/./src/add-sub/subMillisecond.js","webpack://PersianDate/./src/add-sub/subMinute.js","webpack://PersianDate/./src/add-sub/subMonth.js","webpack://PersianDate/./src/add-sub/subQuarter.js","webpack://PersianDate/./src/add-sub/subSecond.js","webpack://PersianDate/./src/add-sub/subWeek.js","webpack://PersianDate/./src/add-sub/subYear.js","webpack://PersianDate/./src/base/addPrefix.js","webpack://PersianDate/./src/base/compare.js","webpack://PersianDate/./src/base/error.js","webpack://PersianDate/./src/base/getDayLabel.js","webpack://PersianDate/./src/base/getDayOfWeek.js","webpack://PersianDate/./src/base/getDayOfYear.js","webpack://PersianDate/./src/base/getWeekOfYear.js","webpack://PersianDate/./src/base/gtj.js","webpack://PersianDate/./src/base/index.js","webpack://PersianDate/./src/base/invalid.js","webpack://PersianDate/./src/base/isTimestamp.js","webpack://PersianDate/./src/base/jtg.js","webpack://PersianDate/./src/base/mathOperation.js","webpack://PersianDate/./src/base/ordinalNumber.js","webpack://PersianDate/./src/base/setGregorianDate.js","webpack://PersianDate/./src/base/setJalaliDate.js","webpack://PersianDate/./src/base/typesToArray.js","webpack://PersianDate/./src/base/warn.js","webpack://PersianDate/./src/comparison/index.js","webpack://PersianDate/./src/comparison/isBetween.js","webpack://PersianDate/./src/comparison/isDate.js","webpack://PersianDate/./src/comparison/isLeapYear.js","webpack://PersianDate/./src/comparison/isPersianDate.js","webpack://PersianDate/./src/comparison/isSame.js","webpack://PersianDate/./src/comparison/isValid.js","webpack://PersianDate/./src/comparison/isValidDate.js","webpack://PersianDate/./src/comparison/isValidTime.js","webpack://PersianDate/./src/conversion/index.js","webpack://PersianDate/./src/conversion/toArray.js","webpack://PersianDate/./src/conversion/toDate.js","webpack://PersianDate/./src/conversion/toObject.js","webpack://PersianDate/./src/conversion/toString.js","webpack://PersianDate/./src/create/calendar.js","webpack://PersianDate/./src/create/clone.js","webpack://PersianDate/./src/create/fromGregorian.js","webpack://PersianDate/./src/create/fromJalali.js","webpack://PersianDate/./src/create/index.js","webpack://PersianDate/./src/create/now.js","webpack://PersianDate/./src/create/parse.js","webpack://PersianDate/./src/diff/diff.js","webpack://PersianDate/./src/diff/diffForHumans.js","webpack://PersianDate/./src/diff/index.js","webpack://PersianDate/./src/set-get/date.js","webpack://PersianDate/./src/set-get/endOf.js","webpack://PersianDate/./src/set-get/getDaysInMonth.js","webpack://PersianDate/./src/set-get/getWeeksInYear.js","webpack://PersianDate/./src/set-get/hour.js","webpack://PersianDate/./src/set-get/index.js","webpack://PersianDate/./src/set-get/millisecond.js","webpack://PersianDate/./src/set-get/minute.js","webpack://PersianDate/./src/set-get/month.js","webpack://PersianDate/./src/set-get/quarter.js","webpack://PersianDate/./src/set-get/second.js","webpack://PersianDate/./src/set-get/startOf.js","webpack://PersianDate/./src/set-get/time.js","webpack://PersianDate/./src/set-get/timestamp.js","webpack://PersianDate/./src/set-get/week.js","webpack://PersianDate/./src/set-get/year.js","webpack://PersianDate/./src/utils.js","webpack://PersianDate/webpack/bootstrap","webpack://PersianDate/webpack/runtime/define property getters","webpack://PersianDate/webpack/runtime/hasOwnProperty shorthand","webpack://PersianDate/webpack/runtime/make namespace object","webpack://PersianDate/webpack/startup"],"names":[],"mappings":"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EA;AACA;;;;;;;;;;;;;;;ACzBO;AACP;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA,gBAAgB;;AAEhB,mDAAmD;AACnD;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;ACxBO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACjBO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJO;AACP;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN0B;AACG;AACF;AACD;AACD;AACC;AACE;AACA;AACK;;AAEP;AACG;AACF;AACD;AACD;AACC;AACE;AACA;AACK;;;;;;;;;;;;;;;AClB1B;AACP;AACA,4BAA4B;AAC5B;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACnBO;AACP;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP,yBAAyB;AACzB,gCAAgC;AAChC;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;ACpBO;AACP;AACA;AACA;;;;;;;;;;;;;;;ACHO;AACP;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;;;;;;;;;;;;;;;ACHO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACO;AACP;AACA;;;;;;;;;;;;;;;;ACTuC;;AAEvC;AACA;AACA;AACA,WAAW,qCAAqC;AAChD,WAAW,uBAAuB;AAClC,aAAa,SAAS;AACtB;AACO;AACP,QAAQ,mDAAY;;AAEpB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;ACPoC;AACJ;AACc;;AAE9C;AACA;AACA,WAAW,KAAK;AAChB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACO;AACP,KAAK,0DAAM,eAAe,4CAAQ;AAClC,QAAQ,6CAAK;AACb;;;;;;;;;;;;;;;;;;ACdoC;AACJ;AACc;;AAE9C;AACA;AACA,WAAW,KAAK;AAChB,WAAW,sBAAsB;AACjC,WAAW,mBAAmB;AAC9B,aAAa,cAAc;AAC3B;AACO;AACP;AACA;AACA;AACA;AACA,KAAK,0DAAM;AACX;AACA;AACA,GAAG,4CAAQ;AACX;AACA;AACA;AACA,QAAQ,6CAAK;AACb;;;;;;;;;;;;;;;;ACxB4C;;AAE5C;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB;AACO;AACP;AACA;AACA;AACA;AACA,SAAS,wDAAc;AACvB;AACA;AACA;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;AC3BiC;AACM;;AAEvC;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,MAAM;AACnB;AACO;AACP;AACA;AACA,UAAU,mDAAM;AAChB;AACA;AACA;AACA;AACA,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B,GAAG,wDAAuB;AAC1B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFsB;AACA;AACC;AACC;AACE;AACK;AACC;AACJ;AACI;AACG;AACL;AACC;AACA;AACC;AACN;AACM;AACF;;;;;;;;;;;;;;;AChB9B;AACA;AACA,WAAW,OAAO;AAClB,aAAa,YAAY;AACzB;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,QAAQ;AACrB;AACO;AACP;AACA;;;;;;;;;;;;;;;;;ACRiC;AACU;;AAE3C;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,KAAK;AAClB;AACO;AACP;AACA,QAAQ,wDAAuB;AAC/B,SAAS,wDAAuB;AAChC,OAAO,wDAAuB;AAC9B,QAAQ,wDAAuB;AAC/B,UAAU,wDAAuB;AACjC,UAAU,wDAAuB;AACjC,eAAe,wDAAuB;AACtC;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,uDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACzEuC;;AAEvC;AACA;AACA;AACA,WAAW,wCAAwC;AACnD,WAAW,YAAY;AACvB,aAAa,EAAE;AACf,YAAY,MAAM;AAClB;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS,mDAAY;AACrB;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;;;;;;ACzBoC;AACpC;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACO;AACP,QAAQ,4CAAQ;AAChB;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACfwB;AACxB;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,sCAAG;AACR;;;;;;;;;;;;;;;;;;AChByC;AACR;AACT;;AAExB;AACA;AACA;AACA,WAAW,2BAA2B;AACtC,WAAW,cAAc;AACzB,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,aAAa,MAAM;AACnB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,4CAA4C,oDAAmB;AAC/D;AACA,EAAE;AACF;AACA,EAAE,UAAU,+DAAyB;AACrC;AACA,EAAE,UAAU,wDAAkB;AAC9B,aAAa,iDAAW;AACxB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPyB;AACI;AACG;AACN;AACI;AACA;AACL;AACG;;;;;;;;;;;;;;;;;ACPK;AACe;;AAEzC;AACP;;AAEA,QAAQ,mDAAY;AACpB;AACA;AACA,EAAE,wDAAuB;AACzB;;AAEA,MAAM,mDAAY;AAClB,8BAA8B,wDAAuB;;AAErD;;AAEA;AACA,EAAE,+CAAY;AACd,EAAE,+CAAY;AACd;AACA;;;;;;;;;;;;;;;ACrBO;AACP;AACA;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACnByC;AAClC;AACP,wBAAwB,iDAAW;AACnC;;;;;;;;;;;;;;;;;ACHiC;AACe;;AAEzC;AACP,YAAY,mDAAY;AACxB;AACA,EAAE,wDAAuB;AACzB;;AAEA,QAAQ,+CAAY;AACpB;;;;;;;;;;;;;;;;ACV6C;;AAEtC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,8CAAW;AACb,EAAE,8CAAW;AACb;AACA;;;;;;;;;;;;;;;;AChB0C;;AAE1C;AACA;AACA;AACA,kCAAkC,uDAAU;AAC5C;AACA;;AAEA;AACA;AACA,gDAAgD,uDAAU;AAC1D;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACZ2B;AACD;AACC;AACF;;;;;;;;;;;;;;;;ACHc;;AAEhC;AACP;AACA;AACA;AACA,iBAAiB,mDAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChB8B;;AAE9B;AACA,QAAQ,0CAAG;AACX;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AClBuC;;AAEhC;AACP;AACA;AACA;AACA,iBAAiB,mDAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChB2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,yBAAyB,yDAAwB;AACjD;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gDAAe;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gDAAQ;;AAExD;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;;;;;;;;;;;;;;;;ACtD0D;;AAEnD;AACP;;AAEA;AACA,mBAAmB,qDAAkB;AACrC;AACA,EAAE;AACF,mBAAmB,wDAAqB;AACxC;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACdO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACCiB;AACuB;;AAEjC;AACP;AACA;AACA;AACA,EAAE,WAAW,kDAAW;AACxB,SAAS,mDAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,oDAAO;AACd,UAAU,+CAAY;AACtB,YAAY,kBAAkB;AAC9B;;AAEA;AACA,oCAAoC,+CAAY;AAChD;AACA,EAAE,qDAAkB;AACpB,EAAE;AACF,EAAE,wDAAqB;AACvB;AACA;AACA;;;;;;;;;;;;;;;;ACtC4E;;AAErE;AACP,0BAA0B,0CAAG;AAC7B,aAAa,mDAAY;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,EAAE,wDAAqB,OAAO,0CAAG;AACjC;;AAEA,6BAA6B,+CAAY;AACzC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBsB;AACE;AACA;AACK;AACG;AACL;;;;;;;;;;;;;;;;ACL+B;;AAEnD;AACP;;AAEA;AACA,EAAE,qDAAkB;AACpB,EAAE;AACF,EAAE,wDAAqB;AACvB;;AAEA;AACA;;;;;;;;;;;;;;;ACZO;AACP;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;;;;;;ACNuC;;AAEhC;AACP,QAAQ,mDAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC/CO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrBuB;AACS;;;;;;;;;;;;;;;;;ACDC;AAQhB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;;AAEA,mDAAmD,0CAAG;AACtD;AACA,8BAA8B,gDAAS;AACvC;AACA,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;AAC3C;AACA;AACA,oDAAoD,kDAAW;AAC/D,8BAA8B,kDAAW;AACzC,kBAAkB,mDAAY;AAC9B,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;AAC3C,6BAA6B,mDAAY;AACzC;AACA;AACA,kBAAkB,mDAAY;AAC9B,gCAAgC,gDAAS;AACzC;AACA,gCAAgC,oDAAa;AAC7C,gCAAgC,oDAAa;AAC7C;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA,UAAU,oDAAa;AACvB;AACA,+BAA+B,kDAAW;AAC1C,8BAA8B,kDAAW;AACzC,6BAA6B,kDAAW;AACxC,cAAc,mDAAY;AAC1B;AACA,UAAU,oDAAa;AACvB;AACA;AACA;AACA,cAAc,mDAAY;AAC1B;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAS;AACxC;AACA;AACA,UAAU,oDAAa;AACvB;AACA;AACA;;;;;;;;;;;;;;;;ACvFuC;;AAEhC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mDAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACvBsD;;AAEtD;AACA;AACA,wCAAwC,kEAAU;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,kEAAU;AACpB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACxBiC;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,6BAA6B,gDAAS;AACtC;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BuB;AACG;AACF;AACD;AACA;AACA;AACE;AACA;AACK;AACF;AACK;AACA;AACP;AACF;AACD;;;;;;;;;;;;;;;;;ACdU;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA,+BAA+B,gDAAS;AACxC;AACA;AACA;;;;;;;;;;;;;;;;;ACvBiC;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA;;;;;;;;;;;;;;;;;ACvB2C;AACa;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,qDAAqD,0CAAG;AACxD,8BAA8B,gDAAS;AACvC;AACA;AACA,UAAU,0DAA4B;AACtC,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;;AAE3C;AACA;AACA;AACA,6BAA6B,gDAAS;AACtC,+BAA+B,6DAA+B;AAC9D;AACA,UAAU,oDAAa;AACvB;AACA,UAAU,6DAA+B;;AAEzC;AACA;AACA;;;;;;;;;;;;;;;;;ACrDiC;AACY;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA,wCAAwC,0CAAG;AAC3C;AACA;AACA,8BAA8B,oDAAa;AAC3C,8BAA8B,oDAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,UAAU,oDAAa;;AAEvB;AACA;AACA;;;;;;;;;;;;;;;;;AChDiC;AACG;;AAE7B;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA,6BAA6B,gDAAS;AACtC;AACA;AACA;;;;;;;;;;;;;;;;ACvBuC;;AAEhC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mDAAY;AACjC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClBuC;AACe;;AAE/C;AACP;AACA;AACA,KAAK,0DAAa;AAClB,UAAU,mDAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mDAAY;AAC1B;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;;;;;;;;;;;;;AC5BO;AACP;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;;;;;;;ACNiC;AACsC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,sBAAsB,qDAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,sBAAsB,qDAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gDAAS;AAC1D,iDAAiD,oDAAa;AAC9D;AACA,UAAU,oDAAa;;AAEvB,sBAAsB,qDAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gDAAS;AACxD;AACA,UAAU,oDAAa;AACvB;AACA;AACA;;;;;;;;;;;;;;;;;ACnEiC;AACH;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,KAAK,wDAAuB;AAC5B;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA,mDAAmD,0CAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqC;;;;;;;UC9KrC;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,wF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;UCNA;UACA;UACA;UACA","file":"PersianDate.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PersianDate\"] = factory();\n\telse\n\t\troot[\"PersianDate\"] = factory();\n})(self, function() {\nreturn ","////////////////////---------- Are You Ready? ----------////////////////////\n////////////////////------------- Let's Go -------------////////////////////\n////////////////////---- Read Comments And Enjoy It ----////////////////////\n\n////////////////////------------- ATTENTION -------------////////////////////\n// In the first, I'm must say, in the all of the project, //\n// g means Gregorian and j means Jalali //\n/////////////////////////////////////////////////////////////////////////////\nimport { warn, compare, mathOperation } from \"./base\";\n\nimport {\n\tnow,\n\tparse,\n\tclone,\n\tfromJalali,\n\tfromGregorian,\n\tcalendar as calendarMethod,\n} from \"./create\";\n\nimport {\n\tyear as yearMethod,\n\tquarter as quarterMethod,\n\tmonth as monthMethod,\n\tweek as weekMethod,\n\tdate as dateMethod,\n\thour as hourMethod,\n\tminute as minuteMethod,\n\tsecond as secondMethod,\n\tmillisecond as millisecondMethod,\n\ttimestamp,\n\tgetDaysInMonth,\n\tgetWeeksInYear,\n\tstartOf,\n\tendOf,\n\ttime,\n} from \"./set-get\";\n\nimport {\n\taddYear,\n\taddQuarter,\n\taddMonth,\n\taddWeek,\n\taddDay,\n\taddHour,\n\taddMinute,\n\taddSecond,\n\taddMillisecond,\n\tsubYear,\n\tsubQuarter,\n\tsubMonth,\n\tsubWeek,\n\tsubDay,\n\tsubHour,\n\tsubMinute,\n\tsubSecond,\n\tsubMillisecond,\n} from \"./add-sub\";\n\nimport { toString, toArray, toObject, toDate } from \"./conversion\";\n\nimport {\n\tisLeapYear,\n\tisDate,\n\tisPersianDate,\n\tisValidDate,\n\tisValidTime,\n\tisValid,\n\tisSame,\n\tisBetween,\n} from \"./comparison\";\n\nimport { diff, diffForHumans } from \"./diff\";\n\n/**\n * A Date library for working with persian date\n * @class\n * @param {Date|Array|Null|Object|String} date - the date that convert to persian date\n * @param {String} [calendar='jalali'] - the calendar\n */\nconst PersianDate = function (dateVal, calendarVal) {\n\t\"use strict\";\n\n\t/**\n\t * keeps the date and time\n\t * @type {Object}\n\t * @property {Number} year - the year of date\n\t * @property {Number} month - the month of date\n\t * @property {Number} date - the day of month of date\n\t * @property {Number} hour - the hour of time\n\t * @property {Number} minute - the minute of time\n\t * @property {Number} second - the second of time\n\t * @property {Number} millisecond - the millisecond of time\n\t * @property {Number} gregorian - the gregorian date\n\t */\n\tthis.d = {};\n\n\t/**\n\t * the calendar type\n\t * @type {String}\n\t * @default \"jalali\"\n\t * @example jalali | gregorian\n\t */\n\tthis.c = \"jalali\";\n\n\t////////////////////--------- create & parse ---------/////////////////////\n\n\t/**\n\t * make current date in persian calendar\n\t * @returns {PersianDate} make current date and return class\n\t */\n\tPersianDate.prototype.now = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn now.call(this);\n\t};\n\n\t/**\n\t * set persian date from Gregorian date\n\t * @deprecated\n\t * @param {...Number|Date|Array|Null} date - the date that convert to persian date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate|String} if date invalid return class with error property with error property\n\t */\n\tPersianDate.prototype.setDate = function () {\n\t\twarn(\n\t\t\t'\"setDate\" function is deprecated! use \"fromGregorian\" function instead.\\n' +\n\t\t\t\t\"https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date\"\n\t\t);\n\t\treturn this.fromGregorian(...arguments);\n\t};\n\n\t/**\n\t * convert a jalali or gregorian date to PersianDate instance\n\t * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.parse = function () {\n\t\treturn parse.call(this, ...arguments);\n\t};\n\n\t/**\n\t * get clone of this date\n\t * @since 1.1.0\n\t * @returns {PersianDate} returns the clone of this date\n\t */\n\tPersianDate.prototype.clone = function () {\n\t\treturn clone.call(this);\n\t};\n\n\t/**\n\t * convert a jalali date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromJalali = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromJalali.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromGregorian = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromGregorian.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {\"j\"|\"jalali\"|\"g\"|\"gregorian\"} calendar - the calendar\n\t * @returns {PersianDate} return class with persian date\n\t */\n\tPersianDate.prototype.calendar = function (calendar) {\n\t\treturn calendarMethod.call(this, calendar);\n\t};\n\n\t////////////////////--------- set & get ---------/////////////////////\n\n\t/**\n\t * get or set year\n\t * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the year, returns class,\n\t * else returns a number or string from year\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.year = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn yearMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set month\n\t * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the month, returns class,\n\t * else returns a number or string from month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.month = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn monthMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set day in month\n\t * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the day, returns class,\n\t * else returns a number or string from day\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.date = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn dateMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set quarter\n\t * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the quarter, returns class,\n\t * else returns a number or string from quarter\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.quarter = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn quarterMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set week\n\t * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the week, returns class,\n\t * else returns a number or string from week\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.week = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn weekMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set hour\n\t * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the hour, returns class,\n\t * else returns a number or string from hour\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.hour = function (format = \"H\") {\n\t\tif (this.error) return this.error;\n\t\treturn hourMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set minute\n\t * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the minute, returns class,\n\t * else returns a number or string from minute\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.minute = function (format = \"m\") {\n\t\tif (this.error) return this.error;\n\t\treturn minuteMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set second\n\t * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the second, returns class,\n\t * else returns a number or string from second\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.second = function (format = \"s\") {\n\t\tif (this.error) return this.error;\n\t\treturn secondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set millisecond\n\t * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the millisecond, returns class,\n\t * else returns a number or string from millisecond\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.millisecond = function (format = \"c\") {\n\t\tif (this.error) return this.error;\n\t\treturn millisecondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get timestamp or set date from timestamp\n\t * @param {Null|Number|String} value - a number for set the millisecond\n\t * @returns {PersianDate|Number} if set the timestamp, returns class,\n\t * else returns timestamp (number)\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.timestamp = function (value) {\n\t\tif (this.error) return this.error;\n\t\treturn timestamp.call(this, value);\n\t};\n\n\tPersianDate.prototype.valueOf = function () {\n\t\treturn this.timestamp();\n\t};\n\n\t/**\n\t * returns number of days in month\n\t * @param {?Number} year - year of date that returns number of days in month\n\t * @param {?Number} month - month of date that returns number of days in month\n\t * @returns {Number} number of days in month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.getDaysInMonth = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month\n\t) {\n\t\tif (this.error) return this.error;\n\t\treturn getDaysInMonth(this.c, year, month);\n\t};\n\n\t/**\n\t * return number of weeks in year\n\t * @since 2.0.0\n\t * @param {Number|String} year - the year\n\t * @returns {Number} number of weeks in year\n\t */\n\tPersianDate.prototype.getWeeksInYear = function (year = this.d.year) {\n\t\tif (this.error) return this.error;\n\t\treturn getWeeksInYear.call(this, year);\n\t};\n\n\t/**\n\t * change the date to start of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.startOf = function (unit = \"year\") {\n\t\treturn startOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the date to end of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.endOf = function (unit = \"year\") {\n\t\treturn endOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the time\n\t * @since 2.3.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} time - the new time\n\t * @param {Null|String|Number} time.h - hour of date\n\t * @param {Null|String|Number} time.hour - hour of date\n\t * @param {Null|String|Number} time.hours - hour of date\n\t * @param {Null|String|Number} time.m - minute of date\n\t * @param {Null|String|Number} time.minute - minute of date\n\t * @param {Null|String|Number} time.minutes - minute of date\n\t * @param {Null|String|Number} time.s - second of date\n\t * @param {Null|String|Number} time.second - second of date\n\t * @param {Null|String|Number} time.seconds - second of date\n\t * @param {Null|String|Number} time.ms - millisecond of date\n\t * @param {Null|String|Number} time.millisecond - millisecond of date\n\t * @param {Null|String|Number} time.milliseconds - millisecond of date\n\t * @returns {PersianDate|Array} if set the time, returns class,\n\t * else returns an array of time\n\t * @throws {String} if time invalid return error text\n\t */\n\tPersianDate.prototype.time = function () {\n\t\tif (this.error) return this.error;\n\t\treturn time.call(this, ...arguments);\n\t};\n\n\t////////////////////--------- add & sub ---------/////////////////////\n\n\t/**\n\t * add to year\n\t * @param {?Number|String} [year=1] - a number for add with year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn addYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * add to month\n\t * @param {?Number|String} [month=1] - a number for add with month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn addMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * add to day\n\t * @param {?Number|String} [day=1] - a number for add with day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn addDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * add to quarter\n\t * @param {?Number|String} [quarter=1] - a number for add with quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn addQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * add to week\n\t * @param {?Number|String} [week=1] - a number for add with week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn addWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * add to hour\n\t * @param {?Number|String} [hour=1] - a number for add with hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn addHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * add to minute\n\t * @param {?Number|String} [minute=1] - a number for add with minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn addMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * add to second\n\t * @param {?Number|String} [second=1] - a number for add with second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn addSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * add to millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for add with millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn addMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t/**\n\t * subtract from year\n\t * @param {?Number|String} [year=1] - a number for subtract from year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn subYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * subtract from month\n\t * @param {?Number|String} [month=1] - a number for subtract from month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn subMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * subtract from day\n\t * @param {?Number|String} [day=1] - a number for subtract from day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn subDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * subtract from quarter\n\t * @param {?Number|String} [quarter=1] - a number for subtract from quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn subQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * subtract from week\n\t * @param {?Number|String} [week=1] - a number for subtract from week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn subWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * subtract from hour\n\t * @param {?Number|String} [hour=1] - a number for subtract from hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn subHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * subtract from minute\n\t * @param {?Number|String} [minute=1] - a number for subtract from minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn subMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * subtract from second\n\t * @param {?Number|String} [second=1] - a number for subtract from second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn subSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * subtract from millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn subMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t////////////////////--------- conversion ---------/////////////////////\n\n\t/**\n\t * returns date as string with specify format\n\t * @param {?String} [format=date] - formatting date to string\n\t * @returns {String} date string\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toString = function (format = \"date\") {\n\t\tif (this.error) return this.error;\n\t\treturn toString.call(this, format);\n\t};\n\n\t/**\n\t * return the array of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return array of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toArray = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toArray.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the object of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return Object of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toObject = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toObject.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the Date instance of PersianDate\n\t * @since 2.0.0\n\t * @returns {Date} if date valid, return Date instance of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toDate = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toDate.call(this);\n\t};\n\n\t////////////////////--------- diff ---------/////////////////////\n\n\t/**\n\t * get the diffrence between two date\n\t * @since 1.4.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {String} unit - the unit of the measurment\n\t * @param {Boolean} addOne - add one day to result\n\t * @returns {Number} diffrence\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diff = function (date, unit, addOne = false) {\n\t\tif (this.error) return this.error;\n\t\treturn diff.call(this, date, unit, addOne);\n\t};\n\n\t/**\n\t * get the diffrence between two date in a human-readable format\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {Boolean} suffix - add suffix or not\n\t * @returns {String} if date valid, return diff human-readable format\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diffForHumans = function (date, suffix = true) {\n\t\tif (this.error) return this.error;\n\t\treturn diffForHumans.call(this, date, suffix);\n\t};\n\n\t////////////////////--------- comparison ---------/////////////////////\n\n\t/**\n\t * returns minimum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return minimum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.min = function () {\n\t\treturn mathOperation.call(this, arguments, \"min\");\n\t};\n\n\t/**\n\t * returns maximum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return maximum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.max = function () {\n\t\treturn mathOperation.call(this, arguments, \"max\");\n\t};\n\n\t/**\n\t * receives year and determined that is leap year or not\n\t * @param {?Number} year - the year to be determined is a leap or not\n\t * @returns {Boolean} if is leap year, returns true\n\t */\n\tPersianDate.prototype.isLeapYear = function (year = this.d.year) {\n\t\tif (this.error) return false;\n\t\treturn isLeapYear(this.c, year);\n\t};\n\n\t/**\n\t * checks the persian date and time\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid, returns true\n\t */\n\tPersianDate.prototype.isValid = function (\n\t\tyear,\n\t\tmonth,\n\t\tday,\n\t\thour,\n\t\tminute,\n\t\tsecond,\n\t\tmillisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn (\n\t\t\tthis.isValidDate(year, month, day) &&\n\t\t\tthis.isValidTime(hour, minute, second, millisecond)\n\t\t);\n\t};\n\n\t/**\n\t * checks the persian date\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @returns {Boolean} if is valid date, returns true\n\t */\n\tPersianDate.prototype.isValidDate = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month,\n\t\tday = this.d.date\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidDate(this.c, year, month, day);\n\t};\n\n\t/**\n\t * checks the time\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid time, returns true\n\t */\n\tPersianDate.prototype.isValidTime = function (\n\t\thour = this.d.hour,\n\t\tminute = this.d.minute,\n\t\tsecond = this.d.second,\n\t\tmillisecond = this.d.millisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidTime(hour, minute, second, millisecond);\n\t};\n\n\t/**\n\t * checks this date is the same to another date\n\t * @since 1.1.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSame = function () {\n\t\tif (this.error) return false;\n\t\treturn isSame.call(this, ...arguments);\n\t};\n\n\t/**\n\t * checks this date is before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<\");\n\t};\n\n\t/**\n\t * checks this date is after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">\");\n\t};\n\n\t/**\n\t * checks this date is same or before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<=\");\n\t};\n\n\t/**\n\t * checks this date is same or after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">=\");\n\t};\n\n\t/**\n\t * checks this date is between the another dates\n\t * @since 1.3.0\n\t * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} from.y - year of date\n\t * @param {Null|String|Number} from.year - year of date\n\t * @param {Null|String|Number} from.years - year of date\n\t * @param {Null|String|Number} from.M - month of date\n\t * @param {Null|String|Number} from.month - month of date\n\t * @param {Null|String|Number} from.months - month of date\n\t * @param {Null|String|Number} from.d - day of date\n\t * @param {Null|String|Number} from.day - day of date\n\t * @param {Null|String|Number} from.days - day of date\n\t * @param {Null|String|Number} from.date - day of date\n\t * @param {Null|String|Number} from.h - hour of date\n\t * @param {Null|String|Number} from.hour - hour of date\n\t * @param {Null|String|Number} from.hours - hour of date\n\t * @param {Null|String|Number} from.m - minute of date\n\t * @param {Null|String|Number} from.minute - minute of date\n\t * @param {Null|String|Number} from.minutes - minute of date\n\t * @param {Null|String|Number} from.s - second of date\n\t * @param {Null|String|Number} from.second - second of date\n\t * @param {Null|String|Number} from.seconds - second of date\n\t * @param {Null|String|Number} from.ms - millisecond of date\n\t * @param {Null|String|Number} from.millisecond - millisecond of date\n\t * @param {Null|String|Number} from.milliseconds - millisecond of date\n\t * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} to.y - year of date\n\t * @param {Null|String|Number} to.year - year of date\n\t * @param {Null|String|Number} to.years - year of date\n\t * @param {Null|String|Number} to.M - month of date\n\t * @param {Null|String|Number} to.month - month of date\n\t * @param {Null|String|Number} to.months - month of date\n\t * @param {Null|String|Number} to.d - day of date\n\t * @param {Null|String|Number} to.day - day of date\n\t * @param {Null|String|Number} to.days - day of date\n\t * @param {Null|String|Number} to.date - day of date\n\t * @param {Null|String|Number} to.h - hour of date\n\t * @param {Null|String|Number} to.hour - hour of date\n\t * @param {Null|String|Number} to.hours - hour of date\n\t * @param {Null|String|Number} to.m - minute of date\n\t * @param {Null|String|Number} to.minute - minute of date\n\t * @param {Null|String|Number} to.minutes - minute of date\n\t * @param {Null|String|Number} to.s - second of date\n\t * @param {Null|String|Number} to.second - second of date\n\t * @param {Null|String|Number} to.seconds - second of date\n\t * @param {Null|String|Number} to.ms - millisecond of date\n\t * @param {Null|String|Number} to.millisecond - millisecond of date\n\t * @param {Null|String|Number} to.milliseconds - millisecond of date\n\t * @param {String} method - determines that consider the dates themselves\n\t * @returns {‌Boolean} if date valid, return true or false\n\t */\n\tPersianDate.prototype.isBetween = function (from, to, method = \"()\") {\n\t\tif (this.error) return false;\n\t\treturn isBetween.call(this, from, to, method);\n\t};\n\n\t/**\n\t * checks date is a native js Date object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a native js Date, return true\n\t */\n\tPersianDate.prototype.isDate = isDate;\n\n\t/**\n\t * checks date is a PersianDate object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a PersianDate, return true\n\t */\n\tPersianDate.prototype.isPersianDate = isPersianDate;\n\n\tif (calendarVal) this.calendar(calendarVal);\n\tif (dateVal) {\n\t\tif (calendarVal && calendarVal[0] == \"j\") this.fromJalali(dateVal);\n\t\telse this.fromGregorian(dateVal);\n\t} else this.now();\n};\n\n////////////////////--------- statics ---------/////////////////////\n\n/**\n * receives year and determined that is leap year or not\n * @static\n * @since 2.3.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {Number} year - the year to be determined is a leap or not\n * @returns {Boolean} if is leap year, returns true\n */\nPersianDate.isLeapYear = isLeapYear;\n\n/**\n * checks date is a native js Date object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a native js Date, return true\n */\nPersianDate.isDate = isDate;\n\n/**\n * checks date is a PersianDate object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a PersianDate, return true\n */\nPersianDate.isPersianDate = isPersianDate;\n\n/**\n * checks the date and time\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid, returns true\n */\nPersianDate.isValid = isValid;\n\n/**\n * checks the date\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @returns {Boolean} if is valid date, returns true\n */\nPersianDate.isValidDate = isValidDate;\n\n/**\n * checks the time\n * @static\n * @since 2.4.0\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid time, returns true\n */\nPersianDate.isValidTime = isValidTime;\n\n/**\n * returns number of days in month\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that returns number of days in month\n * @param {?Number} month - month of date that returns number of days in month\n * @returns {Number} number of days in month\n * @throws {String} if date invalid return error message\n */\nPersianDate.getDaysInMonth = getDaysInMonth;\n\n//TODO: add localization\n\nexport default PersianDate;\n\n////////////////////- Email: Alibeikialireza@gmail.com -////////////////////\n////////////////////--------- Have A Good Day ---------/////////////////////\n","export function addDay(day) {\n\tif (day < 0)\n\t\t// if the number was negative, send to subDay method\n\t\treturn this.subDay(Math.abs(day));\n\tday = +day; //plus sign before a variable, convert variable to int\n\n\tconst dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month\n\tif (dayToStartNextMonth > day) {\n\t\tthis.d.date += day;\n\t} else {\n\t\tthis.addMonth(1, false);\n\t\tthis.d.date = 1;\n\t\tday -= dayToStartNextMonth;\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.addMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tif (day != 0) {\n\t\t\tthis.d.date += day;\n\t\t}\n\t}\n\n\treturn this;\n}\n","export function addHour(hour) {\n\tif (hour < 0)\n\t\t// if the number was negative, send to subHour method\n\t\treturn this.subHour(Math.abs(hour));\n\thour = +hour; //plus sign before a variable, convert variable to int\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.addDay(1, false);\n\t}\n\tconst hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day\n\tif (hour >= hourToNextDay) {\n\t\tthis.addDay(1, false);\n\t\thour -= hourToNextDay;\n\t\tthis.d.hour = hour;\n\t} else this.d.hour += hour;\n\n\treturn this;\n}\n","export function addMillisecond(millisecond) {\n\tif (millisecond < 0)\n\t\t// if the number was negative, send to subMillisecond method\n\t\treturn this.subMillisecond(Math.abs(millisecond));\n\tmillisecond = +millisecond; //plus sign before a variable, convert variable to int\n\twhile (millisecond >= 1000) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= 1000;\n\t}\n\tconst millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second\n\tif (millisecond >= millisecondToNextSecond) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= millisecondToNextSecond;\n\t\tthis.d.millisecond = millisecond;\n\t} else this.d.millisecond += millisecond;\n\n\treturn this;\n}\n","export function addMinute(minute) {\n\tif (minute < 0)\n\t\t// if the number was negative, send to subMinute method\n\t\treturn this.subMinute(Math.abs(minute));\n\tminute = +minute; //plus sign before a variable, convert variable to int\n\twhile (minute >= 60) {\n\t\tthis.addHour(1, false);\n\t\tminute -= 60;\n\t}\n\tconst minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour\n\tif (minute >= minuteToNextHour) {\n\t\tthis.addHour(1, false);\n\t\tminute -= minuteToNextHour;\n\t\tthis.d.minute = minute;\n\t} else this.d.minute += minute;\n\n\treturn this;\n}\n","export function addMonth(month, checkDate) {\n\tif (month < 0)\n\t\t// if the number was negative, send to subMonth method\n\t\treturn this.subMonth(Math.abs(month));\n\tmonth = +month; // plus sign before a variable, convert variable to int\n\n\tconst monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year\n\tif (monthToStartNewYear > month) {\n\t\tthis.d.month += month;\n\t} else {\n\t\tthis.addYear(1, false);\n\t\tthis.d.month = 1;\n\t\tmonth -= monthToStartNewYear;\n\t\twhile (month >= 12) {\n\t\t\tmonth -= 12;\n\t\t\tthis.addYear(1, false);\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month += month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function addQuarter(quarter, checkDate) {\n\t// if the number was negative, send to subQuarter method\n\tif (quarter < 0) return this.subQuarter(Math.abs(quarter));\n\treturn this.addMonth(+quarter * 3, checkDate);\n}\n","export function addSecond(second) {\n\tif (second < 0)\n\t\t// if the number was negative, send to subSecond method\n\t\treturn this.subSecond(Math.abs(second));\n\tsecond = +second; //plus sign before a variable, convert variable to int\n\twhile (second >= 60) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= 60;\n\t}\n\tconst secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute\n\tif (second >= secondToNextMinute) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= secondToNextMinute;\n\t\tthis.d.second = second;\n\t} else this.d.second += second;\n\n\treturn this;\n}\n","export function addWeek(week, checkDate) {\n\t// if the number was negative, send to subWeek method\n\tif (week < 0) return this.subWeek(Math.abs(week));\n\treturn this.addDay(+week * 7, checkDate);\n}\n","export function addYear(year, checkDate) {\n\t// if the number was negative, send to subYear method\n\tif (year < 0) return this.subYear(Math.abs(year));\n\tthis.d.year += +year; //plus sign before a variable, convert variable to int\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export * from \"./addYear\";\nexport * from \"./addQuarter\";\nexport * from \"./addMonth\";\nexport * from \"./addWeek\";\nexport * from \"./addDay\";\nexport * from \"./addHour\";\nexport * from \"./addMinute\";\nexport * from \"./addSecond\";\nexport * from \"./addMillisecond\";\n\nexport * from \"./subYear\";\nexport * from \"./subQuarter\";\nexport * from \"./subMonth\";\nexport * from \"./subWeek\";\nexport * from \"./subDay\";\nexport * from \"./subHour\";\nexport * from \"./subMinute\";\nexport * from \"./subSecond\";\nexport * from \"./subMillisecond\";\n","export function subDay(day) {\n\tday = Math.abs(day);\n\tlet pastDays = this.d.date; // pastDays -> Number of days that is past\n\tif (pastDays > day) {\n\t\tthis.d.date -= day;\n\t} else {\n\t\tthis.subMonth(1, false);\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\tthis.d.date = daysInMonth;\n\t\tday -= pastDays;\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.subMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tthis.d.date = daysInMonth - day;\n\t}\n\n\treturn this;\n}\n","export function subHour(hour) {\n\thour = Math.abs(hour);\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.subDay(1, false);\n\t}\n\tconst pastHours = this.d.hour; // pastHours -> Number of hours that is past\n\tif (hour > pastHours) {\n\t\tthis.subDay(1, false);\n\t\thour -= pastHours;\n\t\tthis.d.hour = 24 - hour;\n\t} else this.d.hour -= hour;\n\n\treturn this;\n}\n","export function subMillisecond(millisecond) {\n\tmillisecond = Math.abs(millisecond);\n\twhile (millisecond >= 1000) {\n\t\tmillisecond -= 1000;\n\t\tthis.subSecond(1, false);\n\t}\n\tconst pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past\n\tif (millisecond > pastMilliseconds) {\n\t\tthis.subSecond(1, false);\n\t\tmillisecond -= pastMilliseconds;\n\t\tthis.d.millisecond = 1000 - millisecond;\n\t} else this.d.millisecond -= millisecond;\n\n\treturn this;\n}\n","export function subMinute(minute) {\n\tminute = Math.abs(minute);\n\twhile (minute >= 60) {\n\t\tminute -= 60;\n\t\tthis.subHour(1, false);\n\t}\n\tconst pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past\n\tif (minute > pastMinute) {\n\t\tthis.subHour(1, false);\n\t\tminute -= pastMinute;\n\t\tthis.d.minute = 60 - minute;\n\t} else this.d.minute -= minute;\n\n\treturn this;\n}\n","export function subMonth(month, checkDate) {\n\tmonth = Math.abs(month); //plus sign before a variable, convert variable to int\n\tconst pastMonth = this.d.month; //pastMonth -> Number of month that is past\n\tif (pastMonth > month) {\n\t\tthis.d.month -= month;\n\t} else {\n\t\tthis.subYear(1, false);\n\t\tthis.d.month = 12;\n\t\tmonth -= pastMonth;\n\t\twhile (month >= 12) {\n\t\t\tthis.subYear(1, false);\n\t\t\tmonth -= 12;\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month -= month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function subQuarter(quarter, checkDate) {\n\tquarter = Math.abs(quarter);\n\treturn this.subMonth(quarter * 3, checkDate);\n}\n","export function subSecond(second) {\n\tsecond = Math.abs(second);\n\twhile (second >= 60) {\n\t\tsecond -= 60;\n\t\tthis.subMinute(1, false);\n\t}\n\tconst pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past\n\tif (second > pastSeconds) {\n\t\tthis.subMinute(1, false);\n\t\tsecond -= pastSeconds;\n\t\tthis.d.second = 60 - second;\n\t} else this.d.second -= second;\n\n\treturn this;\n}\n","export function subWeek(week, checkDate) {\n\tweek = Math.abs(week);\n\treturn this.subDay(week * 7, checkDate);\n}\n","export function subYear(year, checkDate) {\n\tthis.d.year -= Math.abs(year);\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","/**\n * add a prefix to the text in the number of characters that the text has less\n * @param {String|Number} text a text need prefix\n * @param {Number} length length of text\n * @param {String} [prefix=0] - string for add before of text\n * @returns {String} text with or wihtout prefix\n */\nexport const addPrefix = (text, length, prefix = \"0\") => {\n\treturn prefix.repeat(length - String(text).length) + text;\n};\n","import { typesToArray } from \"../base\";\n\n/**\n * compare the dates\n * @since 2.0.0\n * @param {PersianDate|Date|String|Array|Object} date - the date\n * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare\n * @returns {‌Boolean} if date valid, return true of false\n */\nexport const compare = function (date, operator) {\n\tdate = typesToArray(this.c, ...date);\n\n\tif (this.isValid(...date))\n\t\treturn eval(\n\t\t\t\"this.timestamp()\" + operator + \"this.clone().parse(...date).timestamp()\"\n\t\t);\n\treturn false;\n};\n","/**\n * show error\n * @since 3.0.0\n * @param {String} msg - the message for error\n */\nexport const error = (msg) => {\n\tconsole.error(msg);\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get label of day\n * @param {Date} date - the date that received day\n * @param {'jalali'|'gregorian'} calendar - the calendar\n * @returns {String} returns day label\n * @example Saturday | شنبه\n */\nexport const getDayLabel = function (date = new Date(), calendar = \"jalali\") {\n\tif (isDate(date)) return CALENDAR[calendar][\"days\"][\"label\"][date.getDay()];\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get the day of the week\n * @param {Date} date - the date that received day of week\n * @param {'jalali', 'gregorian'} calendar - the calendar\n * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0\n * @returns {Number|String} the number of the day of week\n */\nexport const getDayOfWeek = (\n\tdate = new Date(),\n\tcalendar = \"jalali\",\n\tmode = \"standard\"\n) => {\n\tif (isDate(date)) {\n\t\t// if the year was an instance of Date\n\t\treturn (\n\t\t\tCALENDAR[calendar][\"days\"][\"weekNumber\"][date.getDay()] +\n\t\t\t(mode != \"standard\" ? 0 : 1)\n\t\t);\n\t}\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { getDaysInMonth } from \"../set-get\";\n\n/**\n * get the day of the year\n * @param {Null|String|Number} year - the year of date\n * @param {Null|Number|String} month - the month of date that gives the day of the year\n * @param {Null|Number|String} day - the day of date that gives the day of the year\n * @param {Null|Number|String} calendar - the calendar\n * @returns {Number} the day of the year\n */\nexport const getDayOfYear = (year, month, day, calendar) => {\n\t//plus sign before a variable, convert variable to int\n\tmonth = +month;\n\tday = +day;\n\twhile (--month != 0) {\n\t\tday += getDaysInMonth(calendar, year, month);\n\t}\n\treturn day;\n};\n","const dayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\n/**\n * get the week of the year\n * @param {Null|Number|String} year - the year of date that gives the week of the year\n * @param {Null|Number|String} month - the month of date that gives the week of the year\n * @param {Null|Number|String} day - the day of date that gives the week of the year\n * @param {String} calendar - the calendar\n * @returns {Number} the week of the year\n */\nexport const getWeekOfYear = function (year, month, day, calendar) {\n\tconst firstOfYear = this.clone().calendar(calendar).parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar));\n\tconst date = firstOfYear.clone().parse(year, month, day);\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\n\tconst weekNumber = Math.ceil(date.diff(firstOfYear, \"date\", true) / 7);\n\n\tconst weeksInYear = date.clone().getWeeksInYear();\n\treturn weekNumber > weeksInYear ? weeksInYear : weekNumber;\n};\n","import { REGEX } from \"../utils\";\nimport { isDate } from \"../comparison\";\n\n/**\n * Gregorian to Jalali\n * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year\n * @param {Null|Number|String} [month=1] - Gregorian month\n * @param {Null|Number|String} [day=1] - Gregorian day\n * @param {Null|Number|String} [hour=0] - Gregorian hour\n * @param {Null|Number|String} [minute=0] - Gregorian minute\n * @param {Null|Number|String} [second=0] - Gregorian second\n * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond\n * @returns {Array} Jalali date\n */\nexport const gtj = (year, month, day, hour, minute, second, millisecond) => {\n\tlet date;\n\tif (!year) date = new Date();\n\telse if (isDate(year))\n\t\t// if the year was an instance of Date\n\t\tdate = year;\n\telse\n\t\tdate = new Date(\n\t\t\tREGEX[\"isNumeric\"].test(year) ? year : 0,\n\t\t\tREGEX[\"isNumeric\"].test(month) ? month : 0,\n\t\t\tREGEX[\"isNumeric\"].test(day) ? day : 1,\n\t\t\tREGEX[\"isNumeric\"].test(hour) ? hour : 0,\n\t\t\tREGEX[\"isNumeric\"].test(minute) ? minute : 0,\n\t\t\tREGEX[\"isNumeric\"].test(second) ? second : 0,\n\t\t\tREGEX[\"isNumeric\"].test(millisecond) ? millisecond : 0\n\t\t);\n\tday = date.getDate();\n\tmonth = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one\n\tyear = date.getFullYear();\n\thour = date.getHours();\n\tminute = date.getMinutes();\n\tsecond = date.getSeconds();\n\tmillisecond = date.getMilliseconds();\n\tlet jYear, jMonth, jDay;\n\tconst pastDaysInMonth = [\n\t\t0,\n\t\t31,\n\t\t59,\n\t\t90,\n\t\t120,\n\t\t151,\n\t\t181,\n\t\t212,\n\t\t243,\n\t\t273,\n\t\t304,\n\t\t334,\n\t]; // Past days from the start of the year in each month\n\tif (year > 1600) {\n\t\tjYear = 979;\n\t\tyear -= 1600;\n\t} else {\n\t\tjYear = 0;\n\t\tyear -= 621;\n\t}\n\tconst newYear = month > 2 ? year + 1 : year;\n\tlet days =\n\t\t365 * year +\n\t\tparseInt((newYear + 3) / 4) -\n\t\tparseInt((newYear + 99) / 100) +\n\t\tparseInt((newYear + 399) / 400) -\n\t\t80 +\n\t\tday +\n\t\tpastDaysInMonth[month - 1];\n\tjYear += 33 * parseInt(days / 12053);\n\tdays %= 12053;\n\tjYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tjYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tjMonth =\n\t\tdays < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30);\n\tjDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30);\n\treturn [jYear, jMonth, jDay, hour, minute, second, millisecond];\n};\n","export * from \"./gtj\";\nexport * from \"./jtg\";\nexport * from \"./warn\";\nexport * from \"./error\";\nexport * from \"./invalid\";\nexport * from \"./typesToArray\";\nexport * from \"./ordinalNumber\";\nexport * from \"./addPrefix\";\nexport * from \"./setJalaliDate\";\nexport * from \"./setGregorianDate\";\nexport * from \"./getDayLabel\";\nexport * from \"./getDayOfWeek\";\nexport * from \"./getDayOfYear\";\nexport * from \"./getWeekOfYear\";\nexport * from \"./compare\";\nexport * from \"./mathOperation\";\nexport * from \"./isTimestamp\";\n","/**\n * make error and delete this.d\n * @param {String} errorText - Error Text\n * @returns {PersianDate} make error and return class\n */\nexport const invalid = function (errorText) {\n\tdelete this.d;\n\tthis.error = errorText;\n\treturn this;\n};\n","/**\n * check the input is timestamp\n * @since 2.0.0\n * @param {Number|String} timestamp - input that must be checked\n * @returns {Boolean} if input was timestamp, return true\n */\nexport const isTimestamp = (timestamp) => {\n\treturn !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0;\n};\n","import { REGEX } from \"../utils\";\nimport { isLeapYear } from \"../comparison\";\n\n/**\n * Jalali to Gregorian\n * @param {Null|Number|String} year - Jalali year\n * @param {Null|Number|String} [month=1] - Jalali month\n * @param {Null|Number|String} [day=1] - Jalali day\n * @param {Null|Number|String} [hour=0] - Jalali hour\n * @param {Null|Number|String} [minute=0] - Jalali minute\n * @param {Null|Number|String} [second=0] - Jalali second\n * @param {Null|Number|String} [millisecond=0] - Jalali millisecond\n * @returns {Date} Gregorian date\n */\nexport const jtg = (year, month, day, hour, minute, second, millisecond) => {\n\t//plus sign before a variable, convert variable to int\n\tyear = REGEX[\"isNumeric\"].test(year) ? +year : 1;\n\tmonth = REGEX[\"isNumeric\"].test(month) ? +month : 1;\n\tday = REGEX[\"isNumeric\"].test(day) ? +day : 1;\n\thour = REGEX[\"isNumeric\"].test(hour) ? +hour : 0;\n\tminute = REGEX[\"isNumeric\"].test(minute) ? +minute : 0;\n\tsecond = REGEX[\"isNumeric\"].test(second) ? +second : 0;\n\tmillisecond = REGEX[\"isNumeric\"].test(millisecond) ? +millisecond : 0;\n\tlet gYear, gMonth, gDay;\n\tif (year > 979) {\n\t\tgYear = 1600;\n\t\tyear -= 979;\n\t} else {\n\t\tgYear = 621;\n\t}\n\tlet days =\n\t\t365 * year +\n\t\tparseInt(year / 33) * 8 +\n\t\tparseInt(((year % 33) + 3) / 4) +\n\t\t78 +\n\t\tday +\n\t\t(month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186);\n\tgYear += 400 * parseInt(days / 146097);\n\tdays %= 146097;\n\tif (days > 36524) {\n\t\tgYear += 100 * parseInt(--days / 36524);\n\t\tdays %= 36524;\n\t\tif (days >= 365) days++;\n\t}\n\tgYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tgYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tgDay = days + 1;\n\tconst daysOfMonths = [\n\t\t0,\n\t\t31,\n\t\tisLeapYear(\"gregorian\", gYear) ? 29 : 28,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t];\n\tfor (gMonth = 0; gMonth < 13; gMonth++) {\n\t\tconst v = daysOfMonths[gMonth];\n\t\tif (gDay <= v) break;\n\t\tgDay -= v;\n\t}\n\n\treturn new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond);\n};\n","import { typesToArray } from \"../base\";\n\n/**\n * do the math operation on dates\n * @since 1.4.0\n * @param {...String|PersianDate|Date|Array|Object} values - the dates\n * @param {'min'|'max'} operation - the operation\n * @returns {*} return maximum date\n * @throws {false} if parameters not send or parameters is invalid, return false\n */\nexport const mathOperation = function (values, operation) {\n\tif (!values.length) {\n\t\treturn false;\n\t}\n\tconst args = [...values];\n\tconst argsNumber = args.map((date) => {\n\t\tdate = typesToArray(this.c, date);\n\t\tif (this.isValid(...date))\n\t\t\treturn this.clone()\n\t\t\t\t.parse(...date)\n\t\t\t\t.timestamp();\n\t\treturn false;\n\t});\n\tif (argsNumber.includes(false)) return false;\n\treturn args[argsNumber.indexOf(Math[operation](...argsNumber))];\n};\n","import { CALENDAR } from \"../utils\";\n/**\n * returns the ordinal number of that number sent to it\n * @param {Number} number - the number that gives ordinal number --> from 1 to 366\n * @param {'jalali','gregorian'} calendar - the calendar\n * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number\n * @returns {String} ordinal number\n * @example 1st | اول | اولین\n */\nexport const ordinalNumber = (number, calendar = \"jalali\", mode = 1) => {\n\treturn CALENDAR[calendar].ordinalNumbers(number, mode);\n};\n","/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date instance\n */\nexport const setGregorianDate = function (date) {\n\tthis.d = {\n\t\tyear: date.getFullYear(),\n\t\tmonth: date.getMonth() + 1,\n\t\tdate: date.getDate(),\n\t\thour: date.getHours(),\n\t\tminute: date.getMinutes(),\n\t\tsecond: date.getSeconds(),\n\t\tmillisecond: date.getMilliseconds(),\n\t};\n};\n","import { gtj } from \".\";\n/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date\n */\nexport const setJalaliDate = function (date) {\n\t[\n\t\tthis.d.year,\n\t\tthis.d.month,\n\t\tthis.d.date,\n\t\tthis.d.hour,\n\t\tthis.d.minute,\n\t\tthis.d.second,\n\t\tthis.d.millisecond,\n\t] = gtj(date);\n};\n","import PersianDate from \"../PersianDate\";\nimport { REGEX } from \"../utils\";\nimport { gtj } from \".\";\n\n/**\n * convert String or Array or Object or PersianDate to Array\n * @since 1.2.0\n * @param {String|Array|Object|Number} year - this param must be string or array or Object from date or year\n * @param {String|Number} year.y - year of date\n * @param {Null|String|Number} year.year - year of date\n * @param {Null|String|Number} year.years - year of date\n * @param {Null|String|Number} year.M - month of date\n * @param {Null|String|Number} year.month - month of date\n * @param {Null|String|Number} year.months - month of date\n * @param {Null|String|Number} year.d - day of date\n * @param {Null|String|Number} year.day - day of date\n * @param {Null|String|Number} year.days - day of date\n * @param {Null|String|Number} year.date - day of date\n * @param {Null|String|Number} year.h - hour of date\n * @param {Null|String|Number} year.hour - hour of date\n * @param {Null|String|Number} year.hours - hour of date\n * @param {Null|String|Number} year.m - minute of date\n * @param {Null|String|Number} year.minute - minute of date\n * @param {Null|String|Number} year.minutes - minute of date\n * @param {Null|String|Number} year.s - second of date\n * @param {Null|String|Number} year.second - second of date\n * @param {Null|String|Number} year.seconds - second of date\n * @param {Null|String|Number} year.ms - millisecond of date\n * @param {Null|String|Number} year.millisecond - millisecond of date\n * @param {Null|String|Number} year.milliseconds - millisecond of date\n * @param {Null|Number|String} month month of date\n * @param {Null|Number|String} day day of date\n * @param {Null|Number|String} hour hour of date\n * @param {Null|Number|String} minute minute of date\n * @param {Null|Number|String} second second of date\n * @param {Null|Number|String} millisecond millisecond of date\n * @returns {Array} array includes year, month, date, hour, minute, second, millinsecond\n */\nexport const typesToArray = (\n\tcalendar,\n\tyear,\n\tmonth,\n\tdate,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) => {\n\tif (!year)\n\t\t// if year not defined\n\t\tyear = new Date(); // return now\n\tif (typeof year == \"string\" && year.search(REGEX[\"separators\"]) != -1) {\n\t\treturn year.split(/[/ -.,:\\\\]/);\n\t} else if (Array.isArray(year)) {\n\t\treturn year;\n\t} else if (PersianDate.isPersianDate(year)) {\n\t\treturn year.clone().calendar(calendar).toArray();\n\t} else if (PersianDate.isDate(year)) {\n\t\treturn new PersianDate(year).calendar(calendar).toArray();\n\t} else if (Object.prototype.toString.call(year) === \"[object Object]\") {\n\t\treturn [\n\t\t\tyear.y || year.year || year.years,\n\t\t\tyear.M || year.month || year.months || 1,\n\t\t\tyear.d || year.day || year.days || year.date || 1,\n\t\t\tyear.h || year.hour || year.hours || 0,\n\t\t\tyear.m || year.minute || year.minutes || 0,\n\t\t\tyear.s || year.second || year.seconds || 0,\n\t\t\tyear.ms || year.millisecond || year.milliseconds || 0,\n\t\t];\n\t}\n\treturn [year, month, date, hour, minute, second, millisecond];\n};\n","/**\n * show warning\n * @since 2.0.0\n * @param {String} msg - the message for warning\n */\nexport const warn = (msg) => {\n\tconsole.warn(msg);\n};\n","export * from \"./isDate\";\nexport * from \"./isLeapYear\";\nexport * from \"./isPersianDate\";\nexport * from \"./isValid\";\nexport * from \"./isValidDate\";\nexport * from \"./isValidTime\";\nexport * from \"./isSame\";\nexport * from \"./isBetween\";\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isBetween(from, to, method) {\n\tconst date = this.toArray();\n\n\tfrom = typesToArray(this.c, from);\n\tif (!from[2]) date[2] = 1;\n\tfrom = date.map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(from[i]) ? from[i] : value\n\t);\n\n\tto = typesToArray(this.c, to);\n\tto = date.map((value, i) => (REGEX[\"isNumeric\"].test(to[i]) ? to[i] : value));\n\n\tif (!(this.isValid(...from) && this.isValid(...to))) return false;\n\n\treturn (\n\t\tcompare.call(this, from, method[0] === \"[\" ? \">=\" : \">\") &&\n\t\tcompare.call(this, to, method[1] === \"]\" ? \"<=\" : \"<\")\n\t);\n}\n","export const isDate = function (date) {\n\treturn date instanceof Date;\n};\n","const jalali = (year) => {\n\tconst array =\n\t\tyear > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30];\n\tconst remainder = year % 33;\n\treturn array.includes(remainder);\n};\n\nconst gregorian = (year) => {\n\treturn (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;\n};\n\nexport const isLeapYear = function (calendar, year) {\n\t// calendar[0] ==> first letter of calendar ('j' | 'g' | ...)\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year);\n\t\tdefault:\n\t\t\treturn gregorian(year);\n\t}\n};\n","import PersianDate from \"../PersianDate\";\nexport const isPersianDate = function (date) {\n\treturn date instanceof PersianDate;\n};\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isSame() {\n\tlet date = typesToArray(this.c, ...arguments);\n\tdate = this.toArray().map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(date[i]) ? date[i] : value\n\t);\n\n\treturn compare.call(this, date, \"==\");\n}\n","import { isValidDate, isValidTime } from \".\";\n\nexport const isValid = function (\n\tcalendar,\n\tyear,\n\tmonth,\n\tday,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) {\n\treturn (\n\t\tisValidDate(calendar, year, month, day) &&\n\t\tisValidTime(hour, minute, second, millisecond)\n\t);\n};\n","import { isLeapYear } from \"./isLeapYear\";\n\nconst jalali = (year, month, day) => {\n\tif (month >= 7 && month <= 11 && day == 31) return false;\n\tif (month == 12 && day == 31) return false;\n\tif (month == 12 && day == 30 && !isLeapYear(\"j\", year)) return false;\n\treturn true;\n};\n\nconst gregorian = (year, month, day) => {\n\tif ([2, 4, 6, 9, 11].includes(month) && day == 31) return false;\n\tif (month == 2 && (day == 30 || (day == 29 && !isLeapYear(\"g\", year))))\n\t\treturn false;\n\treturn true;\n};\n\nexport const isValidDate = function (calendar, year, month, day) {\n\tif ([year, month, day].some((e) => String(e).search(/null|NaN/) != -1))\n\t\treturn false;\n\tif (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false;\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year, month, day);\n\t\tdefault:\n\t\t\treturn gregorian(year, month, day);\n\t}\n};\n","export const isValidTime = function (hour, minute, second, millisecond) {\n\tif (\n\t\t[hour, minute, second, millisecond].some(\n\t\t\t(e) => String(e).search(/null|NaN/) != -1\n\t\t)\n\t)\n\t\treturn false;\n\tif (hour < 0 || hour > 23) return false;\n\tif (minute < 0 || minute > 59) return false;\n\tif (second < 0 || second > 59) return false;\n\tif (millisecond < 0 || millisecond > 999) return false;\n\treturn true;\n};\n","export * from \"./toString\";\nexport * from \"./toArray\";\nexport * from \"./toObject\";\nexport * from \"./toDate\";\n","import { typesToArray } from \"../base\";\n\nexport function toArray() {\n\tif (!arguments.length) {\n\t\treturn Object.values(this.d);\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn [\n\t\tthis.year(formats[0]),\n\t\tthis.month(formats[1]),\n\t\tthis.date(formats[2]),\n\t\tthis.hour(formats[3]),\n\t\tthis.minute(formats[4]),\n\t\tthis.second(formats[5]),\n\t\tthis.millisecond(formats[6]),\n\t];\n}\n","import { jtg } from \"../base\";\n\nconst jalali = (date) => {\n\treturn jtg(...date);\n};\n\nconst gregorian = (date) => {\n\t--date[1];\n\treturn new Date(...date);\n};\n\nexport function toDate() {\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(this.toArray());\n\t\tdefault:\n\t\t\treturn gregorian(this.toArray());\n\t}\n}\n","import { typesToArray } from \"../base\";\n\nexport function toObject() {\n\tif (!arguments.length) {\n\t\treturn this.d;\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn {\n\t\tyear: this.year(formats[0]),\n\t\tmonth: this.month(formats[1]),\n\t\tdate: this.date(formats[2]),\n\t\thour: this.hour(formats[3]),\n\t\tminute: this.minute(formats[4]),\n\t\tsecond: this.second(formats[5]),\n\t\tmillisecond: this.millisecond(formats[6]),\n\t};\n}\n","import { REGEX, TIMETYPE } from \"../utils\";\n\nconst jalali = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"j\")\n\t\t.replace(/datetime/gi, \"jYYYY/jMM/jDD HH:mm\")\n\t\t.replace(/date/gi, \"jYYYY/jMM/jDD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nconst gregorian = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"\")\n\t\t.replace(/datetime/gi, \"YYYY-MM-DD HH:mm\")\n\t\t.replace(/date/gi, \"YYYY-MM-DD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nexport function toString(format) {\n\tconst rawTexts = [];\n\tformat = format.replace(REGEX[\"betweenBacktick\"], (_matched, text) => {\n\t\trawTexts.push(text);\n\t\treturn \"###\";\n\t});\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\tformat = jalali(format);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tformat = gregorian(format);\n\t}\n\tconst matchedFormats = format.match(REGEX[\"format\"]);\n\tlet dateString = \"\";\n\tfor (const i of matchedFormats) {\n\t\tdateString += format.substring(0, format.indexOf(i));\n\n\t\tif (i.search(/Y|y/) != -1) dateString += this.year(i);\n\t\telse if (i.search(/M/) != -1) dateString += this.month(i);\n\t\telse if (i.search(/Q/) != -1) dateString += this.quarter(i);\n\t\telse if (i.search(/D|d/) != -1) dateString += this.date(i);\n\t\telse if (i.search(/W|w/) != -1) dateString += this.week(i);\n\t\telse if (i.search(/H|h|k/) != -1) dateString += this.hour(i);\n\t\telse if (i.search(/m/) != -1) dateString += this.minute(i);\n\t\telse if (i.search(/s/) != -1) dateString += this.second(i);\n\t\telse if (i.search(/c|C/) != -1) dateString += this.millisecond(i);\n\t\telse if (i.search(/t/) != -1) dateString += this.timestamp();\n\t\telse if (i.search(/a|A/) != -1) dateString += TIMETYPE(this.d.hour, i);\n\n\t\tformat = format.substr(format.indexOf(i) + i.length);\n\t}\n\tdateString += format;\n\tfor (let i = 0; i < rawTexts.length; i++)\n\t\tdateString = dateString.replace(\"###\", rawTexts[i]);\n\treturn String(dateString);\n}\n","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function calendar(c) {\n\tif (!c) return this.c;\n\n\tif (c[0] == \"j\" && this.c[0] != \"j\") {\n\t\tif (!this.error) setJalaliDate.call(this, this.toDate());\n\t\tthis.c = \"jalali\";\n\t} else if (c[0] == \"g\" && this.c[0] != \"g\") {\n\t\tif (!this.error) setGregorianDate.call(this, this.toDate());\n\t\tthis.c = \"gregorian\";\n\t}\n\n\treturn this;\n}\n","export function clone() {\n\treturn Object.assign(\n\t\tObject.create(Object.getPrototypeOf(this)),\n\t\tJSON.parse(JSON.stringify(this))\n\t);\n}\n","import {\n\ttypesToArray,\n\tsetGregorianDate,\n\tsetJalaliDate,\n\tinvalid,\n\tisTimestamp,\n} from \"../base\";\nimport { isValid } from \"../comparison\";\n\nexport function fromGregorian(...date) {\n\tif (!date.length) date[0] = new Date().getTime();\n\telse if (this.isPersianDate(date[0])) {\n\t\tdate = date[0].clone().calendar(\"g\").toArray();\n\t} else if (!isTimestamp(date[0])) {\n\t\tdate = typesToArray(\"gregorian\", ...date);\n\t\tdate[6] = +date[6] || 0;\n\t\tdate[5] = +date[5] || 0;\n\t\tdate[4] = +date[4] || 0;\n\t\tdate[3] = +date[3] || 0;\n\t\tdate[2] = +date[2] || 1;\n\t\tdate[1] = +date[1] || 1;\n\t\tdate[0] = +date[0];\n\t}\n\n\tif (date.length > 1) {\n\t\tif (!isValid(\"gregorian\", ...date))\n\t\t\treturn invalid.call(this, \"تاریخ نامعتبر\");\n\t\t--date[1]; // this is month; becuse the Date get month from 0, subtract one\n\t}\n\n\tdate = new Date(...date);\n\tif (date == \"Invalid Date\") return invalid.call(this, \"تاریخ نامعتبر\");\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\treturn this;\n}\n","import { typesToArray, gtj, jtg, setGregorianDate, invalid } from \"../base\";\n\nexport function fromJalali(...date) {\n\tif (!date.length) date = gtj();\n\telse date = typesToArray(\"jalali\", ...date);\n\n\tif (this.c == \"jalali\") {\n\t\tthis.d.year = +date[0];\n\t\tthis.d.month = +date[1] || 1;\n\t\tthis.d.date = +date[2] || 1;\n\t\tthis.d.hour = +date[3] || 0;\n\t\tthis.d.minute = +date[4] || 0;\n\t\tthis.d.second = +date[5] || 0;\n\t\tthis.d.millisecond = +date[6] || 0;\n\t} else {\n\t\tsetGregorianDate.call(this, jtg(...date));\n\t}\n\n\tif (!this.isValid()) return invalid.call(this, \"تاریخ نامعتبر\");\n\treturn this;\n}\n","export * from \"./now\";\nexport * from \"./parse\";\nexport * from \"./clone\";\nexport * from \"./fromJalali\";\nexport * from \"./fromGregorian\";\nexport * from \"./calendar\";\n","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function now() {\n\tconst date = new Date();\n\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\n\treturn this;\n}\n","export function parse(...date) {\n\tif (this.c == \"jalali\") {\n\t\treturn this.fromJalali(...date);\n\t} else {\n\t\treturn this.fromGregorian(...date);\n\t}\n}\n","import { typesToArray } from \"../base\";\n\nexport function diff(date, unit, addOne) {\n\tdate = typesToArray(this.c, date);\n\tif (!this.isValid(...date)) return \"تاریخ نامعتبر\";\n\tlet result =\n\t\tthis.timestamp() -\n\t\tthis.clone()\n\t\t\t.parse(...date)\n\t\t\t.timestamp();\n\tswitch (unit) {\n\t\tcase \"y\":\n\t\tcase \"year\":\n\t\tcase \"years\":\n\t\t\tresult = this.d.year - date[0];\n\t\t\tbreak;\n\t\tcase \"M\":\n\t\tcase \"month\":\n\t\tcase \"months\":\n\t\t\tresult = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]);\n\t\t\tbreak;\n\t\tcase \"d\":\n\t\tcase \"date\":\n\t\tcase \"day\":\n\t\tcase \"days\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60 / 24);\n\t\t\tbreak;\n\t\tcase \"h\":\n\t\tcase \"hour\":\n\t\tcase \"hours\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60);\n\t\t\tbreak;\n\t\tcase \"m\":\n\t\tcase \"minute\":\n\t\tcase \"minutes\":\n\t\t\tresult = Math.ceil(result / 1000 / 60);\n\t\t\tbreak;\n\t\tcase \"s\":\n\t\tcase \"second\":\n\t\tcase \"seconds\":\n\t\t\tresult = Math.ceil(result / 1000);\n\t\t\tbreak;\n\t\tcase \"ms\":\n\t\tcase \"millisecond\":\n\t\tcase \"milliseconds\":\n\t}\n\treturn addOne ? result + (result >= 0 ? 1 : -1) : result;\n}\n","export function diffForHumans(date, suffix) {\n\tlet result = this.diff(date, \"s\");\n\tif (typeof result == \"string\") return \"تاریخ نامعتبر\";\n\n\tconst prefix = suffix && (result > 0 ? \"آینده\" : \"پیش\");\n\tresult = Math.abs(result);\n\n\tif (result == 0) return \"هم اکنون\";\n\telse if (result < 45) result = \"لحظات\";\n\telse if ((result /= 60) < 45)\n\t\t// divide by 60, for getting minute\n\t\tresult = Math.round(result) + \" \" + \"دقیقه\";\n\telse if ((result /= 60) < 23.5)\n\t\t// divide by 60, for getting hour\n\t\tresult = Math.round(result) + \" \" + \"ساعت\";\n\telse if ((result /= 24) < 26)\n\t\t// divide by 24, for getting day\n\t\tresult = Math.round(result) + \" \" + \"روز\";\n\telse if (result < 320) result = Math.round(result / 30) + \" \" + \"ماه\";\n\telse result = Math.round(result / 365) + \" \" + \"سال\";\n\treturn result + (suffix ? \" \" + prefix : \"\");\n}\n","export * from \"./diff\";\nexport * from \"./diffForHumans\";\n","import { REGEX } from \"../utils\";\nimport {\n\taddPrefix,\n\tordinalNumber,\n\tgetDayOfWeek,\n\tgtj,\n\tgetDayLabel,\n\tgetDayOfYear,\n} from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jD\";\n\t\tdefault:\n\t\t\treturn \"D\";\n\t}\n};\n\nexport function date(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst daysInMonth = this.getDaysInMonth();\n\n\t\tif (format < 1) {\n\t\t\tthis.d.date = 1;\n\t\t\tthis.subDay(format - 1);\n\t\t} else if (format > daysInMonth) {\n\t\t\tthis.d.date = daysInMonth;\n\t\t\tthis.addDay(format - daysInMonth);\n\t\t} else {\n\t\t\tthis.d.date = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jDate = this.c == \"jalali\" ? this.d.date : gtj(this.toDate())[2];\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"jDD\") return addPrefix(jDate, 2);\n\t\tif (format == \"jD\") return jDate;\n\t\tif (format == \"jDo\") return ordinalNumber(jDate);\n\t\tif (format == \"jDO\") return ordinalNumber(jDate, \"jalali\", 2);\n\t\t//---------- Day of Week ----------//\n\t\tconst gDate = this.toDate();\n\t\tif (format == \"jdddd\" || format == \"jddd\") return getDayLabel(gDate);\n\t\tif (format == \"jdd\") return getDayLabel(gDate).slice(0, 1);\n\t\tlet dayOfWeek = getDayOfWeek(gDate);\n\t\tif (format == \"jdo\") return ordinalNumber(dayOfWeek);\n\t\tif (format == \"jdO\") return ordinalNumber(dayOfWeek, \"jalali\", 2);\n\t\tif (format == \"jd\") return getDayOfWeek(gDate, \"jalali\", \"array\");\n\t\tif (format == \"jde\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tlet dayOfYear = getDayOfYear(this.year(\"jy\"), this.month(\"jM\"), jDate, \"j\");\n\t\tif (format == \"jDDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"jDDD\") return dayOfYear;\n\t\tif (format == \"jDDDo\") return ordinalNumber(dayOfYear);\n\t\tif (format == \"jDDDO\") return ordinalNumber(dayOfYear, \"jalali\", 2);\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"DD\") return addPrefix(gDate.getDate(), 2);\n\t\tif (format == \"D\") return gDate.getDate();\n\t\tif (format == \"Do\" || format == \"DO\")\n\t\t\treturn ordinalNumber(gDate.getDate(), \"gregorian\");\n\t\t//---------- Day of Week ----------//\n\t\tif (format == \"dddd\") return getDayLabel(gDate, \"gregorian\");\n\t\tif (format == \"ddd\") return getDayLabel(gDate, \"gregorian\").slice(0, 3);\n\t\tif (format == \"dd\") return getDayLabel(gDate, \"gregorian\").slice(0, 2);\n\t\tdayOfWeek = getDayOfWeek(gDate, \"gregorian\");\n\t\tif (format == \"do\" || format == \"dO\")\n\t\t\treturn ordinalNumber(dayOfWeek, \"gregorian\");\n\t\tif (format == \"d\") return dayOfWeek - 1;\n\t\tif (format == \"de\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tdayOfYear = getDayOfYear(\n\t\t\tgDate.getFullYear(),\n\t\t\tgDate.getMonth() + 1,\n\t\t\tgDate.getDate(),\n\t\t\t\"g\"\n\t\t);\n\t\tif (format == \"DDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"DDD\") return dayOfYear;\n\t\tif (format == \"DDDo\" || format == \"DDDO\")\n\t\t\treturn ordinalNumber(dayOfYear, \"gregorian\");\n\t\treturn jDate;\n\t}\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function endOf(unit) {\n\tthis.d.millisecond = 999;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 59;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 59;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 23;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.addDay(7 - getDayOfWeek(this.toDate(), this.c));\n\tif (unit[0] == \"q\") {\n\t\tthis.quarter(this.quarter()).addMonth(2);\n\t\tthis.d.date = this.getDaysInMonth();\n\t\treturn this;\n\t}\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 12;\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit[0] == \"y\") return this;\n}\n","import { isLeapYear } from \"../comparison/isLeapYear\";\n\nconst jalali = (calendar, year, month) => {\n\tif (month >= 1 && month <= 6) return 31;\n\telse if ((month > 6 && month <= 11) || isLeapYear(calendar, year)) {\n\t\treturn 30;\n\t}\n\treturn 29;\n};\n\nconst gregorian = (calendar, year, month) => {\n\tif ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31;\n\telse if (month != 2) return 30;\n\telse if (isLeapYear(calendar, year)) return 29;\n\treturn 28;\n};\n\nexport const getDaysInMonth = function (calendar, year, month) {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(calendar, year, month);\n\t\tdefault:\n\t\t\treturn gregorian(calendar, year, month);\n\t}\n};\n","const getDayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\nexport function getWeeksInYear(year) {\n\tconst dayOfYearFormat = getDayOfYearFormat(this.c);\n\n\tconst firstOfYear = this.clone().parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat);\n\tconst lastOfYear = firstOfYear.clone().endOf(\"year\").startOf(\"day\");\n\tconst lastOfYearDay = lastOfYear.date(dayOfYearFormat);\n\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\telse firstOfYear.subDay(firstOfYearDay);\n\n\tif (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay);\n\telse lastOfYear.subDay(lastOfYearDay);\n\n\treturn Math.ceil(lastOfYear.diff(firstOfYear, \"date\") / 7);\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function hour(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.hour = 0;\n\t\t\tthis.subHour(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.hour = 23;\n\t\t\tthis.addHour(format - 23);\n\t\t} else {\n\t\t\tthis.d.hour = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tlet h = this.d.hour;\n\t\tif (format == \"H\") return h;\n\t\tif (format == \"HH\") return addPrefix(h, 2);\n\t\tif (format == \"k\") return h || 24;\n\t\tif (format == \"kk\") return addPrefix(h || 24, 2);\n\t\th = h > 12 ? h - 12 : h;\n\t\tif (format == \"h\") return h;\n\t\tif (format == \"hh\") return addPrefix(h, 2);\n\t\treturn h;\n\t}\n}\n","export * from \"./year\";\nexport * from \"./quarter\";\nexport * from \"./month\";\nexport * from \"./week\";\nexport * from \"./date\";\nexport * from \"./hour\";\nexport * from \"./minute\";\nexport * from \"./second\";\nexport * from \"./millisecond\";\nexport * from \"./timestamp\";\nexport * from \"./getDaysInMonth\";\nexport * from \"./getWeeksInYear\";\nexport * from \"./startOf\";\nexport * from \"./endOf\";\nexport * from \"./time\";\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function millisecond(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.millisecond = 0;\n\t\t\tthis.subMillisecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.millisecond = 23;\n\t\t\tthis.addMillisecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.millisecond = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"CCC\" || format == \"c\") return this.d.millisecond;\n\t\tif (format == \"CCCC\") return addPrefix(this.d.millisecond, 3);\n\t\treturn this.d.millisecond;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function minute(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.minute = 0;\n\t\t\tthis.subMinute(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.minute = 23;\n\t\t\tthis.addMinute(format - 23);\n\t\t} else {\n\t\t\tthis.d.minute = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"m\") return this.d.minute;\n\t\tif (format == \"mm\") return addPrefix(this.d.minute, 2);\n\t\treturn this.d.minute;\n\t}\n}\n","import { REGEX, CALENDAR } from \"../utils\";\nimport { addPrefix, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jM\";\n\t\tdefault:\n\t\t\treturn \"M\";\n\t}\n};\n\nexport function month(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subMonth(format - 1, false);\n\t\t} else if (format > 12) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addMonth(format - 12, false);\n\t\t} else {\n\t\t\tthis.d.month = +format;\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jMonth = this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1];\n\t\tif (format == \"jMM\") return addPrefix(jMonth, 2);\n\t\tif (format == \"jM\") return jMonth;\n\t\tif (format == \"jMMMM\" || format == \"jMMM\")\n\t\t\treturn CALENDAR[\"jalali\"][\"months\"][jMonth];\n\t\tif (format == \"jMo\") return ordinalNumber(jMonth);\n\t\tif (format == \"jMO\") return ordinalNumber(jMonth, \"jalali\", 2);\n\n\t\tconst gMonth =\n\t\t\tthis.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1;\n\t\tif (format == \"M\") return gMonth;\n\t\tif (format == \"MM\") return addPrefix(gMonth, 2);\n\t\tif (format == \"MMMM\") return CALENDAR[\"gregorian\"][\"months\"][gMonth];\n\t\tif (format == \"Mo\" || format == \"MO\")\n\t\t\treturn ordinalNumber(gMonth, \"gregorian\");\n\t\tif (format == \"MMM\")\n\t\t\treturn CALENDAR[\"gregorian\"][\"months\"][gMonth].slice(0, 3);\n\n\t\treturn jMonth;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jQ\";\n\t\tdefault:\n\t\t\treturn \"Q\";\n\t}\n};\n\nexport function quarter(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subQuarter(format - 1, false);\n\t\t} else if (format > 4) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addQuarter(format - 4, false);\n\t\t} else {\n\t\t\tthis.d.month = +format * 3 - 2;\n\t\t}\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tlet jQuarter = Math.ceil(\n\t\t\t(this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1]) / 3\n\t\t);\n\t\tif (format == \"jQ\") return jQuarter;\n\t\tif (format == \"jQo\") return ordinalNumber(jQuarter);\n\t\tif (format == \"jQO\") return ordinalNumber(jQuarter, \"jalali\", 2);\n\n\t\tconst gQuarter = Math.ceil(\n\t\t\t(this.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1) / 3\n\t\t);\n\t\tif (format == \"Q\") return gQuarter;\n\t\tif (format == \"Qo\" || format == \"QO\")\n\t\t\treturn ordinalNumber(gQuarter, \"gregorian\");\n\n\t\treturn jQuarter;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function second(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.second = 0;\n\t\t\tthis.subSecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.second = 23;\n\t\t\tthis.addSecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.second = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"s\") return this.d.second;\n\t\tif (format == \"ss\") return addPrefix(this.d.second, 2);\n\t\treturn this.d.second;\n\t}\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function startOf(unit) {\n\tthis.d.millisecond = 0;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 0;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 0;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 0;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.subDay(getDayOfWeek(this.toDate(), this.c, \"array\"));\n\tthis.d.date = 1;\n\tif (unit[0] == \"q\") return this.quarter(this.quarter());\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 1;\n\tif (unit[0] == \"y\") return this;\n}\n","import { typesToArray } from \"../base\";\nimport { isDate, isPersianDate } from \"../comparison\";\n\nexport function time(...t) {\n\tif (!t.length) return this.toArray().slice(3);\n\tlet times = [];\n\tif (isPersianDate(t[0])) times = t[0].time();\n\telse if (isDate(t[0]))\n\t\ttimes = [\n\t\t\tt[0].getHours(),\n\t\t\tt[0].getMinutes(),\n\t\t\tt[0].getSeconds(),\n\t\t\tt[0].getMilliseconds(),\n\t\t];\n\telse if (Object.prototype.toString.call(t[0]) === \"[object Object]\")\n\t\ttimes = [\n\t\t\tt[0].h || t[0].hour || t[0].hours || 0,\n\t\t\tt[0].m || t[0].minute || t[0].minutes || 0,\n\t\t\tt[0].s || t[0].second || t[0].seconds || 0,\n\t\t\tt[0].ms || t[0].millisecond || t[0].milliseconds || 0,\n\t\t];\n\telse times = typesToArray(this.c, ...t);\n\tif (this.isValidTime(...times)) {\n\t\treturn this.hour(times[0] || 0)\n\t\t\t.minute(times[1] || 0)\n\t\t\t.second(times[2] || 0)\n\t\t\t.millisecond(times[3] || 0);\n\t} else return \"زمان نامعتبر\";\n}\n","export function timestamp(value) {\n\tif (value) {\n\t\treturn this.fromGregorian(+String(value).trim());\n\t} else {\n\t\treturn this.toDate().getTime();\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix, getWeekOfYear, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jw\";\n\t\tdefault:\n\t\t\treturn \"w\";\n\t}\n};\n\nexport function week(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst weeksInYear = this.getWeeksInYear();\n\t\tif (format < 1) {\n\t\t\tthis.week(1);\n\t\t\tthis.subWeek(format - 1, false);\n\t\t} else if (format > weeksInYear) {\n\t\t\tthis.week(weeksInYear);\n\t\t\tthis.addWeek(format - weeksInYear, false);\n\t\t} else {\n\t\t\tconst weekOfYear = getWeekOfYear.call(\n\t\t\t\tthis,\n\t\t\t\tthis.d.year,\n\t\t\t\tthis.d.month,\n\t\t\t\tthis.d.date,\n\t\t\t\tthis.c\n\t\t\t);\n\t\t\tthis.addWeek(+format - weekOfYear);\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"jy\"),\n\t\t\tthis.month(\"jM\"),\n\t\t\tthis.date(\"jD\"),\n\t\t\tthis.c\n\t\t);\n\t\tif (format == \"jw\" || format == \"jW\") return jWeekOfYear;\n\t\tif (format == \"jww\" || format == \"jWW\") return addPrefix(jWeekOfYear, 2);\n\t\tif (format == \"jwo\" || format == \"jWo\") return ordinalNumber(jWeekOfYear);\n\t\tif (format == \"jwO\" || format == \"jWO\")\n\t\t\treturn ordinalNumber(jWeekOfYear, \"jalali\", 2);\n\n\t\tconst gWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"y\"),\n\t\t\tthis.month(\"M\"),\n\t\t\tthis.date(\"D\"),\n\t\t\t\"gregorian\"\n\t\t);\n\t\tif (format == \"w\" || format == \"W\") return gWeekOfYear;\n\t\tif (format == \"ww\" || format == \"WW\") return addPrefix(gWeekOfYear, 2);\n\t\tif (format == \"wo\" || format == \"Wo\" || format == \"wO\" || format == \"WO\")\n\t\t\treturn ordinalNumber(gWeekOfYear, \"gregorian\");\n\t\treturn jWeekOfYear;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { gtj } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jy\";\n\t\tdefault:\n\t\t\treturn \"y\";\n\t}\n};\n\nexport function year(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tthis.d.year = +format;\n\t\tif (!this.isValidDate()) {\n\t\t\treturn this.subDay(1, false);\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\t\tconst jYear = this.c == \"jalali\" ? this.d.year : gtj(this.toDate())[0];\n\t\tif (format == \"jy\" || format == \"jYYYY\") return jYear;\n\t\tif (format == \"jYY\") return String(jYear).slice(-2);\n\t\tconst gYear =\n\t\t\tthis.c == \"gregorian\" ? this.d.year : this.toDate().getFullYear();\n\t\tif (format == \"y\" || format == \"YYYY\") return gYear;\n\t\tif (format == \"YY\") return String(gYear).slice(-2);\n\t\treturn jYear;\n\t}\n}\n","const CALENDAR = {\n\tjalali: {\n\t\tmonths: {\n\t\t\t1: \"فروردین\",\n\t\t\t2: \"اردیبهشت\",\n\t\t\t3: \"خرداد\",\n\t\t\t4: \"تیر\",\n\t\t\t5: \"مرداد\",\n\t\t\t6: \"شهریور\",\n\t\t\t7: \"مهر\",\n\t\t\t8: \"آبان\",\n\t\t\t9: \"آذر\",\n\t\t\t10: \"دی\",\n\t\t\t11: \"بهمن\",\n\t\t\t12: \"اسفند\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t6: \"شنبه\",\n\t\t\t\t0: \"یکشنبه\",\n\t\t\t\t1: \"دوشنبه\",\n\t\t\t\t2: \"سه‌شنبه\",\n\t\t\t\t3: \"چهارشنبه\",\n\t\t\t\t4: \"پنجشنبه\",\n\t\t\t\t5: \"جمعه\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in jalali calendar start from saturday or 6\n\t\t\t\t6: 0, //شنبه\n\t\t\t\t0: 1, //یکشنبه\n\t\t\t\t1: 2, //دوشنبه\n\t\t\t\t2: 3, //سه‌شنبه\n\t\t\t\t3: 4, //چهارشنبه\n\t\t\t\t4: 5, //پنجشنبه\n\t\t\t\t5: 6, //جمعه\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number, mode) {\n\t\t\tconst numbers = {\n\t\t\t\t1: \"یک\",\n\t\t\t\t2: \"دو\",\n\t\t\t\t3: \"سو\",\n\t\t\t\t4: \"چهار\",\n\t\t\t\t5: \"پنج\",\n\t\t\t\t6: \"شش\",\n\t\t\t\t7: \"هفت\",\n\t\t\t\t8: \"هشت\",\n\t\t\t\t9: \"نه\",\n\t\t\t\t10: \"ده\",\n\t\t\t\t11: \"یازده\",\n\t\t\t\t12: \"دوازده\",\n\t\t\t\t13: \"سیزده\",\n\t\t\t\t14: \"چهارده\",\n\t\t\t\t15: \"پانزده\",\n\t\t\t\t16: \"شانزده\",\n\t\t\t\t17: \"هفده\",\n\t\t\t\t18: \"هجده\",\n\t\t\t\t19: \"نوزده\",\n\t\t\t\t20: \"بیست\",\n\t\t\t\t30: \"سی‌\",\n\t\t\t\t40: \"چهل\",\n\t\t\t\t50: \"پنجاه\",\n\t\t\t\t60: \"شصت\",\n\t\t\t\t70: \"هفتاد\",\n\t\t\t\t80: \"هشتاد\",\n\t\t\t\t90: \"نود\",\n\t\t\t\t100: \"صد\",\n\t\t\t\t200: \"دویست\",\n\t\t\t\t300: \"سیصد\",\n\t\t\t};\n\t\t\tlet ordinalNumber = \"\";\n\t\t\tif (number == 1) ordinalNumber = \"اول\";\n\t\t\telse if (numbers[number])\n\t\t\t\tordinalNumber = numbers[number] + (number == 30 ? \"ام\" : \"م\");\n\t\t\telse {\n\t\t\t\tlet remainder = number % 100;\n\t\t\t\tif (numbers[remainder]) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\telse {\n\t\t\t\t\tremainder = number % 10;\n\t\t\t\t\tif (remainder) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\t}\n\t\t\t\tremainder = (number - remainder) % 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] +\n\t\t\t\t\t\t(ordinalNumber\n\t\t\t\t\t\t\t? \" و \" + ordinalNumber\n\t\t\t\t\t\t\t: remainder == 30\n\t\t\t\t\t\t\t? \"ام \"\n\t\t\t\t\t\t\t: \"م\");\n\t\t\t\tremainder = Math.floor(number / 100) * 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] + (ordinalNumber ? \" و \" + ordinalNumber : \"م\");\n\t\t\t}\n\t\t\tif (mode == 2) ordinalNumber += \"ین\";\n\t\t\treturn ordinalNumber;\n\t\t},\n\t},\n\tgregorian: {\n\t\tmonths: {\n\t\t\t1: \"January\",\n\t\t\t2: \"February\",\n\t\t\t3: \"March\",\n\t\t\t4: \"April\",\n\t\t\t5: \"May\",\n\t\t\t6: \"June\",\n\t\t\t7: \"July\",\n\t\t\t8: \"August\",\n\t\t\t9: \"September\",\n\t\t\t10: \"October\",\n\t\t\t11: \"November\",\n\t\t\t12: \"December\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t0: \"Sunday\",\n\t\t\t\t1: \"Monday\",\n\t\t\t\t2: \"Tuesday\",\n\t\t\t\t3: \"Wednesday\",\n\t\t\t\t4: \"Thursday\",\n\t\t\t\t5: \"Friday\",\n\t\t\t\t6: \"Saturday\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in gregorian calendar start from sunday or 0\n\t\t\t\t0: 0, // Sunday\n\t\t\t\t1: 1, // Monday\n\t\t\t\t2: 2, // Tuesday\n\t\t\t\t3: 3, // Wednesday\n\t\t\t\t4: 4, // Thursday\n\t\t\t\t5: 5, // Friday\n\t\t\t\t6: 6, // Saturday\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number) {\n\t\t\tif (number == 1 || (number % 10 == 1 && number != 11))\n\t\t\t\treturn number + \"st\";\n\t\t\telse if (number == 2 || (number % 10 == 2 && number != 12))\n\t\t\t\treturn number + \"nd\";\n\t\t\telse if (number == 3 || (number % 10 == 3 && number != 13))\n\t\t\t\treturn number + \"rd\";\n\t\t\telse return number + \"th\";\n\t\t},\n\t},\n};\n\nconst REGEX = {\n\tformat: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,\n\tisNumeric: /^\\d+$/, // this regex, checks input to see is a number or not\n\tseparators: \"\\\\/| |-|\\\\.|,|:\", // find ['/',' ','-','.',',',':'] and split string to array by this symbols\n\tbetweenBacktick: /`(.*?)`/g, // find the texts between the backticks ==> `Alireza`\n};\n\nconst TIMETYPE = function (hour, format) {\n\tif (hour >= 0 && hour < 12) {\n\t\tif (format == \"a\") return \"am\";\n\t\telse if (format == \"aa\") return \"A.M.\";\n\t\telse if (format == \"A\") return \"AM\";\n\t\telse if (format == \"ja\") return \"ق ظ\";\n\t\telse if (format == \"jaa\") return \"ق.ظ\";\n\t\telse if (format == \"jA\") return \"قبل از ظهر\";\n\t\treturn \"ق.ظ\";\n\t} else if (hour >= 12 && hour < 24) {\n\t\tif (format == \"a\") return \"pm\";\n\t\telse if (format == \"aa\") return \"P.M.\";\n\t\telse if (format == \"A\") return \"PM\";\n\t\telse if (format == \"ja\") return \"ب ظ\";\n\t\telse if (format == \"jaa\") return \"ب.ظ\";\n\t\telse if (format == \"jA\") return \"بعد از ظهر\";\n\t\treturn \"ب.ظ\";\n\t}\n};\n\nexport { CALENDAR, TIMETYPE, REGEX };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/PersianDate.js\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/PersianDate.umd.min.js b/dist/PersianDate.umd.min.js index b84f479..565c6e6 100644 --- a/dist/PersianDate.umd.min.js +++ b/dist/PersianDate.umd.min.js @@ -1,2 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PersianDate=e():t.PersianDate=e()}(self,(function(){return(()=>{"use strict";var __webpack_modules__={739:(t,e,r)=>{r.d(e,{default:()=>C});var i=r(552);function s(){const t=new Date;return"jalali"==this.c?i.SA.call(this,t):i.dZ.call(this,t),this}function n(...t){return"jalali"==this.c?this.fromJalali(...t):this.fromGregorian(...t)}function o(){return Object.assign(Object.create(Object.getPrototypeOf(this)),JSON.parse(JSON.stringify(this)))}function h(...t){return t=t.length?(0,i.Jz)("jalali",...t):(0,i.VK)(),"jalali"==this.c?(this.d.year=+t[0],this.d.month=+t[1]||1,this.d.date=+t[2]||1,this.d.hour=+t[3]||0,this.d.minute=+t[4]||0,this.d.second=+t[5]||0,this.d.millisecond=+t[6]||0):i.dZ.call(this,(0,i.B_)(...t)),this.isValid()?this:i.I1.call(this,"تاریخ نامعتبر")}var a=r(747);function u(...t){if(t.length?this.isPersianDate(t[0])?t=t[0].clone().calendar("g").toArray():(0,i.WD)(t[0])||((t=(0,i.Jz)("gregorian",...t))[6]=+t[6]||0,t[5]=+t[5]||0,t[4]=+t[4]||0,t[3]=+t[3]||0,t[2]=+t[2]||1,t[1]=+t[1]||1,t[0]=+t[0]):t[0]=(new Date).getTime(),t.length>1){if(!(0,a.JY)("gregorian",...t))return i.I1.call(this,"تاریخ نامعتبر");--t[1]}return"Invalid Date"==(t=new Date(...t))?i.I1.call(this,"تاریخ نامعتبر"):("jalali"==this.c?i.SA.call(this,t):i.dZ.call(this,t),this)}function c(t){return t?("j"==t[0]&&"j"!=this.c[0]?(this.error||i.SA.call(this,this.toDate()),this.c="jalali"):"g"==t[0]&&"g"!=this.c[0]&&(this.error||i.dZ.call(this,this.toDate()),this.c="gregorian"),this):this.c}var d=r(419);function l(t,e){if(t<0)return this.subYear(Math.abs(t));for(this.d.year+=+t;e&&!this.isValidDate();)this.subDay(1,!1);return this}function f(t,e){if(t<0)return this.subMonth(Math.abs(t));t=+t;const r=12-this.d.month+1;if(r>t)this.d.month+=t;else{for(this.addYear(1,!1),this.d.month=1,t-=r;t>=12;)t-=12,this.addYear(1,!1);0!=t&&(this.d.month+=t)}for(;e&&!this.isValidDate();)this.subDay(1,!1);return this}function m(t){if(t<0)return this.subDay(Math.abs(t));t=+t;const e=this.getDaysInMonth()-this.d.date+1;if(e>t)this.d.date+=t;else{this.addMonth(1,!1),this.d.date=1,t-=e;let r=this.getDaysInMonth();for(;t>=r;)t-=r,this.addMonth(1,!1),r=this.getDaysInMonth();0!=t&&(this.d.date+=t)}return this}function p(t,e){return t<0?this.subQuarter(Math.abs(t)):this.addMonth(3*+t,e)}function y(t,e){return t<0?this.subWeek(Math.abs(t)):this.addDay(7*+t,e)}function D(t){if(t<0)return this.subHour(Math.abs(t));for(t=+t;t>=24;)t-=24,this.addDay(1,!1);const e=24-this.d.hour;return t>=e?(this.addDay(1,!1),t-=e,this.d.hour=t):this.d.hour+=t,this}function g(t){if(t<0)return this.subMinute(Math.abs(t));for(t=+t;t>=60;)this.addHour(1,!1),t-=60;const e=60-this.d.minute;return t>=e?(this.addHour(1,!1),t-=e,this.d.minute=t):this.d.minute+=t,this}function M(t){if(t<0)return this.subSecond(Math.abs(t));for(t=+t;t>=60;)this.addMinute(1,!1),t-=60;const e=60-this.d.second;return t>=e?(this.addMinute(1,!1),t-=e,this.d.second=t):this.d.second+=t,this}function b(t){if(t<0)return this.subMillisecond(Math.abs(t));for(t=+t;t>=1e3;)this.addSecond(1,!1),t-=1e3;const e=1e3-this.d.millisecond;return t>=e?(this.addSecond(1,!1),t-=e,this.d.millisecond=t):this.d.millisecond+=t,this}function _(t,e){for(this.d.year-=Math.abs(t);e&&!this.isValidDate();)this.subDay(1,!1);return this}function j(t,e){t=Math.abs(t);const r=this.d.month;if(r>t)this.d.month-=t;else{for(this.subYear(1,!1),this.d.month=12,t-=r;t>=12;)this.subYear(1,!1),t-=12;0!=t&&(this.d.month-=t)}for(;e&&!this.isValidDate();)this.subDay(1,!1);return this}function w(t){t=Math.abs(t);let e=this.d.date;if(e>t)this.d.date-=t;else{this.subMonth(1,!1);let r=this.getDaysInMonth();for(this.d.date=r,t-=e;t>=r;)t-=r,this.subMonth(1,!1),r=this.getDaysInMonth();this.d.date=r-t}return this}function k(t,e){return t=Math.abs(t),this.subMonth(3*t,e)}function O(t,e){return t=Math.abs(t),this.subDay(7*t,e)}function Y(t){for(t=Math.abs(t);t>=24;)t-=24,this.subDay(1,!1);const e=this.d.hour;return t>e?(this.subDay(1,!1),t-=e,this.d.hour=24-t):this.d.hour-=t,this}function N(t){for(t=Math.abs(t);t>=60;)t-=60,this.subHour(1,!1);const e=this.d.minute;return t>e?(this.subHour(1,!1),t-=e,this.d.minute=60-t):this.d.minute-=t,this}function S(t){for(t=Math.abs(t);t>=60;)t-=60,this.subMinute(1,!1);const e=this.d.second;return t>e?(this.subMinute(1,!1),t-=e,this.d.second=60-t):this.d.second-=t,this}function L(t){for(t=Math.abs(t);t>=1e3;)t-=1e3,this.subSecond(1,!1);const e=this.d.millisecond;return t>e?(this.subSecond(1,!1),t-=e,this.d.millisecond=1e3-t):this.d.millisecond-=t,this}var I=r(555);function A(t){const e=[];switch(t=t.replace(I.mL.betweenBacktick,((t,r)=>(e.push(r),"###"))),this.c[0]){case"j":t=(t=>t.replace(/\?/g,"j").replace(/datetime/gi,"jYYYY/jMM/jDD HH:mm").replace(/date/gi,"jYYYY/jMM/jDD").replace(/time/gi,"HH:mm"))(t);break;default:t=(t=>t.replace(/\?/g,"").replace(/datetime/gi,"YYYY-MM-DD HH:mm").replace(/date/gi,"YYYY-MM-DD").replace(/time/gi,"HH:mm"))(t)}const r=t.match(I.mL.format);let i="";for(const e of r)i+=t.substring(0,t.indexOf(e)),-1!=e.search(/Y|y/)?i+=this.year(e):-1!=e.search(/M/)?i+=this.month(e):-1!=e.search(/Q/)?i+=this.quarter(e):-1!=e.search(/D|d/)?i+=this.date(e):-1!=e.search(/W|w/)?i+=this.week(e):-1!=e.search(/H|h|k/)?i+=this.hour(e):-1!=e.search(/m/)?i+=this.minute(e):-1!=e.search(/s/)?i+=this.second(e):-1!=e.search(/c|C/)?i+=this.millisecond(e):-1!=e.search(/t/)?i+=this.timestamp():-1!=e.search(/a|A/)&&(i+=(0,I.d7)(this.d.hour,e)),t=t.substr(t.indexOf(e)+e.length);i+=t;for(let t=0;t(--t[1],new Date(...t)))(this.toArray())}var t}function v(t,e,r){if(t=(0,i.Jz)(this.c,t),!this.isValid(...t))return"تاریخ نامعتبر";let s=this.timestamp()-this.clone().parse(...t).timestamp();switch(e){case"y":case"year":case"years":s=this.d.year-t[0];break;case"M":case"month":case"months":s=12*this.d.year+this.d.month-(12*+t[0]+ +t[1]);break;case"d":case"date":case"day":case"days":s=Math.ceil(s/1e3/60/60/24);break;case"h":case"hour":case"hours":s=Math.ceil(s/1e3/60/60);break;case"m":case"minute":case"minutes":s=Math.ceil(s/1e3/60);break;case"s":case"second":case"seconds":s=Math.ceil(s/1e3)}return r?s+(s>=0?1:-1):s}function W(t,e){let r=this.diff(t,"s");if("string"==typeof r)return"تاریخ نامعتبر";const i=e&&(r>0?"آینده":"پیش");return r=Math.abs(r),0==r?"هم اکنون":(r=r<45?"لحظات":(r/=60)<45?Math.round(r)+" دقیقه":(r/=60)<23.5?Math.round(r)+" ساعت":(r/=24)<26?Math.round(r)+" روز":r<320?Math.round(r/30)+" ماه":Math.round(r/365)+" سال",r+(e?" "+i:""))}const H=function(t,e){this.d={},this.c="jalali",H.prototype.now=function(){return this.error&&(delete this.error,this.d={}),s.call(this)},H.prototype.setDate=function(){return(0,i.ZK)('"setDate" function is deprecated! use "fromGregorian" function instead.\nhttps://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date'),this.fromGregorian(...arguments)},H.prototype.parse=function(){return n.call(this,...arguments)},H.prototype.clone=function(){return o.call(this)},H.prototype.fromJalali=function(){return this.error&&(delete this.error,this.d={}),h.call(this,...arguments)},H.prototype.fromGregorian=function(){return this.error&&(delete this.error,this.d={}),u.call(this,...arguments)},H.prototype.calendar=function(t){return c.call(this,t)},H.prototype.year=function(t=""){return this.error?this.error:d.ty.call(this,t)},H.prototype.month=function(t=""){return this.error?this.error:d.iL.call(this,t)},H.prototype.date=function(t=""){return this.error?this.error:d.hT.call(this,t)},H.prototype.quarter=function(t=""){return this.error?this.error:d.mS.call(this,t)},H.prototype.week=function(t=""){return this.error?this.error:d.g0.call(this,t)},H.prototype.hour=function(t="H"){return this.error?this.error:d.xO.call(this,t)},H.prototype.minute=function(t="m"){return this.error?this.error:d.Z7.call(this,t)},H.prototype.second=function(t="s"){return this.error?this.error:d.E0.call(this,t)},H.prototype.millisecond=function(t="c"){return this.error?this.error:d.AG.call(this,t)},H.prototype.timestamp=function(t){return this.error?this.error:d.AB.call(this,t)},H.prototype.valueOf=function(){return this.timestamp()},H.prototype.getDaysInMonth=function(t=this.d.year,e=this.d.month){return this.error?this.error:(0,d.NC)(this.c,t,e)},H.prototype.getWeeksInYear=function(t=this.d.year){return this.error?this.error:d.FY.call(this,t)},H.prototype.startOf=function(t="year"){return d.gl.call(this,t)},H.prototype.endOf=function(t="year"){return d.Dz.call(this,t)},H.prototype.time=function(){return this.error?this.error:d.XV.call(this,...arguments)},H.prototype.addYear=function(t=1,e=!0){return this.error?this.error:t?l.call(this,t,e):this},H.prototype.addMonth=function(t=1,e=!0){return this.error?this.error:t?f.call(this,t,e):this},H.prototype.addDay=function(t=1,e=!0){return this.error?this.error:t?m.call(this,t,e):this},H.prototype.addQuarter=function(t=1,e=!0){return this.error?this.error:t?p.call(this,t,e):this},H.prototype.addWeek=function(t=1,e=!0){return this.error?this.error:t?y.call(this,t,e):this},H.prototype.addHour=function(t=1,e=!0){return this.error?this.error:t?D.call(this,t,e):this},H.prototype.addMinute=function(t=1,e=!0){return this.error?this.error:t?g.call(this,t,e):this},H.prototype.addSecond=function(t=1,e=!0){return this.error?this.error:t?M.call(this,t,e):this},H.prototype.addMillisecond=function(t=1,e=!0){return this.error?this.error:t?b.call(this,t,e):this},H.prototype.subYear=function(t=1,e=!0){return this.error?this.error:t?_.call(this,t,e):this},H.prototype.subMonth=function(t=1,e=!0){return this.error?this.error:t?j.call(this,t,e):this},H.prototype.subDay=function(t=1,e=!0){return this.error?this.error:t?w.call(this,t,e):this},H.prototype.subQuarter=function(t=1,e=!0){return this.error?this.error:t?k.call(this,t,e):this},H.prototype.subWeek=function(t=1,e=!0){return this.error?this.error:t?O.call(this,t,e):this},H.prototype.subHour=function(t=1,e=!0){return this.error?this.error:t?Y.call(this,t,e):this},H.prototype.subMinute=function(t=1,e=!0){return this.error?this.error:t?N.call(this,t,e):this},H.prototype.subSecond=function(t=1,e=!0){return this.error?this.error:t?S.call(this,t,e):this},H.prototype.subMillisecond=function(t=1,e=!0){return this.error?this.error:t?L.call(this,t,e):this},H.prototype.toString=function(t="date"){return this.error?this.error:A.call(this,t)},H.prototype.toArray=function(){return this.error?this.error:q.call(this,...arguments)},H.prototype.toObject=function(){return this.error?this.error:J.call(this,...arguments)},H.prototype.toDate=function(){return this.error?this.error:V.call(this)},H.prototype.diff=function(t,e,r=!1){return this.error?this.error:v.call(this,t,e,r)},H.prototype.diffForHumans=function(t,e=!0){return this.error?this.error:W.call(this,t,e)},H.prototype.min=function(){return i.F6.call(this,arguments,"min")},H.prototype.max=function(){return i.F6.call(this,arguments,"max")},H.prototype.isLeapYear=function(t=this.d.year){return!this.error&&(0,a.Eg)(this.c,t)},H.prototype.isValid=function(t,e,r,i,s,n,o){return!this.error&&this.isValidDate(t,e,r)&&this.isValidTime(i,s,n,o)},H.prototype.isValidDate=function(t=this.d.year,e=this.d.month,r=this.d.date){return!this.error&&(0,a.qb)(this.c,t,e,r)},H.prototype.isValidTime=function(t=this.d.hour,e=this.d.minute,r=this.d.second,i=this.d.millisecond){return!this.error&&(0,a.sC)(t,e,r,i)},H.prototype.isSame=function(){return!this.error&&a.ZG.call(this,...arguments)},H.prototype.isBefore=function(){return!this.error&&i.qu.call(this,arguments,"<")},H.prototype.isAfter=function(){return!this.error&&i.qu.call(this,arguments,">")},H.prototype.isSameOrBefore=function(){return!this.error&&i.qu.call(this,arguments,"<=")},H.prototype.isSameOrAfter=function(){return!this.error&&i.qu.call(this,arguments,">=")},H.prototype.isBetween=function(t,e,r="()"){return!this.error&&a.Kh.call(this,t,e,r)},H.prototype.isDate=a.J_,H.prototype.isPersianDate=a._B,e&&this.calendar(e),t?e&&"j"==e[0]?this.fromJalali(t):this.fromGregorian(t):this.now()};H.isLeapYear=a.Eg,H.isDate=a.J_,H.isPersianDate=a._B,H.isValid=a.JY,H.isValidDate=a.qb,H.isValidTime=a.sC,H.getDaysInMonth=d.NC;const C=H},76:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{q:()=>compare});var _base__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(552);const compare=function(date,operator){return date=(0,_base__WEBPACK_IMPORTED_MODULE_0__.Jz)(this.c,...date),!!this.isValid(...date)&&eval("this.timestamp()"+operator+"this.clone().parse(...date).timestamp()")}},552:(t,e,r)=>{r.d(e,{U9:()=>l,qu:()=>j.q,Ot:()=>D,ji:()=>g,Bk:()=>b,EC:()=>_,VK:()=>n,I1:()=>a,WD:()=>k,B_:()=>o,F6:()=>w,ke:()=>d,dZ:()=>m,SA:()=>f,Jz:()=>c,ZK:()=>h});var i=r(555),s=r(747);const n=(t,e,r,n,o,h,a)=>{let u,c,d,l;u=t?(0,s.J_)(t)?t:new Date(i.mL.isNumeric.test(t)?t:0,i.mL.isNumeric.test(e)?e:0,i.mL.isNumeric.test(r)?r:1,i.mL.isNumeric.test(n)?n:0,i.mL.isNumeric.test(o)?o:0,i.mL.isNumeric.test(h)?h:0,i.mL.isNumeric.test(a)?a:0):new Date,r=u.getDate(),e=u.getMonth()+1,t=u.getFullYear(),n=u.getHours(),o=u.getMinutes(),h=u.getSeconds(),a=u.getMilliseconds(),t>1600?(c=979,t-=1600):(c=0,t-=621);const f=e>2?t+1:t;let m=365*t+parseInt((f+3)/4)-parseInt((f+99)/100)+parseInt((f+399)/400)-80+r+[0,31,59,90,120,151,181,212,243,273,304,334][e-1];return c+=33*parseInt(m/12053),m%=12053,c+=4*parseInt(m/1461),m%=1461,m>365&&(c+=parseInt((m-1)/365),m=(m-1)%365),d=m<186?1+parseInt(m/31):7+parseInt((m-186)/30),l=1+(m<186?m%31:(m-186)%30),[c,d,l,n,o,h,a]},o=(t,e,r,n,o,h,a)=>{let u,c,d;t=i.mL.isNumeric.test(t)?+t:1,e=i.mL.isNumeric.test(e)?+e:1,r=i.mL.isNumeric.test(r)?+r:1,n=i.mL.isNumeric.test(n)?+n:0,o=i.mL.isNumeric.test(o)?+o:0,h=i.mL.isNumeric.test(h)?+h:0,a=i.mL.isNumeric.test(a)?+a:0,t>979?(u=1600,t-=979):u=621;let l=365*t+8*parseInt(t/33)+parseInt((t%33+3)/4)+78+r+(e<7?31*(e-1):30*(e-7)+186);u+=400*parseInt(l/146097),l%=146097,l>36524&&(u+=100*parseInt(--l/36524),l%=36524,l>=365&&l++),u+=4*parseInt(l/1461),l%=1461,l>365&&(u+=parseInt((l-1)/365),l=(l-1)%365),d=l+1;const f=[0,31,(0,s.Eg)("gregorian",u)?29:28,31,30,31,30,31,31,30,31,30,31];for(c=0;c<13;c++){const t=f[c];if(d<=t)break;d-=t}return new Date(u,c-1,d,n,o,h,a)},h=t=>{console.warn(t)},a=function(t){return delete this.d,this.error=t,this};var u=r(739);const c=(t,e,r,s,n,o,h,a)=>(e||(e=new Date),"string"==typeof e&&-1!=e.search(i.mL.separators)?e.split(/[/ -.,:\\]/):Array.isArray(e)?e:u.default.isPersianDate(e)?e.clone().calendar(t).toArray():u.default.isDate(e)?new u.default(e).calendar(t).toArray():"[object Object]"===Object.prototype.toString.call(e)?[e.y||e.year||e.years,e.M||e.month||e.months||1,e.d||e.day||e.days||e.date||1,e.h||e.hour||e.hours||0,e.m||e.minute||e.minutes||0,e.s||e.second||e.seconds||0,e.ms||e.millisecond||e.milliseconds||0]:[e,r,s,n,o,h,a]),d=(t,e="jalali",r=1)=>i.XN[e].ordinalNumbers(t,r),l=(t,e,r="0")=>r.repeat(e-String(t).length)+t,f=function(t){[this.d.year,this.d.month,this.d.date,this.d.hour,this.d.minute,this.d.second,this.d.millisecond]=n(t)},m=function(t){this.d={year:t.getFullYear(),month:t.getMonth()+1,date:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),second:t.getSeconds(),millisecond:t.getMilliseconds()}},p=t=>{console.error(t)};var y=r(682);const D=function(t=new Date,e="jalali"){return(0,y.J)(t)?i.XN[e].days.label[t.getDay()]:p("the first param must be instance of Date.")},g=(t=new Date,e="jalali",r="standard")=>(0,y.J)(t)?i.XN[e].days.weekNumber[t.getDay()]+("standard"!=r?0:1):p("the first param must be instance of Date.");var M=r(419);const b=(t,e,r,i)=>{for(e=+e,r=+r;0!=--e;)r+=(0,M.NC)(i,t,e);return r},_=function(t,e,r,i){const s=this.clone().calendar(i).parse(t),n=s.date((t=>{switch(t[0]){case"j":return"jd";default:return"d"}})(i)),o=s.clone().parse(t,e,r);n>3&&s.addDay(7-n);const h=Math.ceil(o.diff(s,"date",!0)/7),a=o.clone().getWeeksInYear();return h>a?a:h};var j=r(76);const w=function(t,e){if(!t.length)return!1;const r=[...t],i=r.map((t=>(t=c(this.c,t),!!this.isValid(...t)&&this.clone().parse(...t).timestamp())));return!i.includes(!1)&&r[i.indexOf(Math[e](...i))]},k=t=>!isNaN(t)&&Math.floor(t/1e4)>0},747:(t,e,r)=>{r.d(e,{Kh:()=>f,J_:()=>i.J,Eg:()=>s.E,_B:()=>o,ZG:()=>l,JY:()=>h,qb:()=>a,sC:()=>u});var i=r(682),s=r(424),n=r(739);const o=function(t){return t instanceof n.default},h=function(t,e,r,i,s,n,o,h){return a(t,e,r,i)&&u(s,n,o,h)},a=function(t,e,r,i){if([e,r,i].some((t=>-1!=String(t).search(/null|NaN/))))return!1;if(e<0||r>12||r<1||i>31||i<1)return!1;switch(t[0]){case"j":return((t,e,r)=>!(e>=7&&e<=11&&31==r||12==e&&31==r||12==e&&30==r&&!(0,s.E)("j",t)))(e,r,i);default:return((t,e,r)=>!([2,4,6,9,11].includes(e)&&31==r||2==e&&(30==r||29==r&&!(0,s.E)("g",t))))(e,r,i)}},u=function(t,e,r,i){return!([t,e,r,i].some((t=>-1!=String(t).search(/null|NaN/)))||t<0||t>23||e<0||e>59||r<0||r>59||i<0||i>999)};var c=r(555),d=r(552);function l(){let t=(0,d.Jz)(this.c,...arguments);return t=this.toArray().map(((e,r)=>c.mL.isNumeric.test(t[r])?t[r]:e)),d.qu.call(this,t,"==")}function f(t,e,r){const i=this.toArray();return(t=(0,d.Jz)(this.c,t))[2]||(i[2]=1),t=i.map(((e,r)=>c.mL.isNumeric.test(t[r])?t[r]:e)),e=(0,d.Jz)(this.c,e),e=i.map(((t,r)=>c.mL.isNumeric.test(e[r])?e[r]:t)),!(!this.isValid(...t)||!this.isValid(...e))&&d.qu.call(this,t,"["===r[0]?">=":">")&&d.qu.call(this,e,"]"===r[1]?"<=":"<")}},682:(t,e,r)=>{r.d(e,{J:()=>i});const i=function(t){return t instanceof Date}},424:(t,e,r)=>{r.d(e,{E:()=>i});const i=function(t,e){switch(t[0]){case"j":return(t=>(t>1342?[1,5,9,13,17,22,26,30]:[1,5,9,13,17,21,26,30]).includes(t%33))(e);default:return(t=>t%4==0&&t%100!=0||t%400==0)(e)}}},419:(t,e,r)=>{r.d(e,{hT:()=>u,Dz:()=>M,NC:()=>y,FY:()=>D,xO:()=>c,AG:()=>f,Z7:()=>d,iL:()=>h,mS:()=>o,E0:()=>l,gl:()=>g,XV:()=>_,AB:()=>m,g0:()=>a,ty:()=>n});var i=r(555),s=r(552);function n(t){if(t=String(t).trim(),i.mL.isNumeric.test(t))return this.d.year=+t,this.isValidDate()?this:this.subDay(1,!1);{t||(t=(t=>{switch(this.c[0]){case"j":return"jy";default:return"y"}})());const e="jalali"==this.c?this.d.year:(0,s.VK)(this.toDate())[0];if("jy"==t||"jYYYY"==t)return e;if("jYY"==t)return String(e).slice(-2);const r="gregorian"==this.c?this.d.year:this.toDate().getFullYear();return"y"==t||"YYYY"==t?r:"YY"==t?String(r).slice(-2):e}}function o(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subQuarter(t-1,!1)):t>4?(this.d.month=12,this.addQuarter(t-4,!1)):this.d.month=3*+t-2;!this.isValidDate();)this.subDay(1,!1);return this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jQ";default:return"Q"}})());let e=Math.ceil(("jalali"==this.c?this.d.month:(0,s.VK)(this.toDate())[1])/3);if("jQ"==t)return e;if("jQo"==t)return(0,s.ke)(e);if("jQO"==t)return(0,s.ke)(e,"jalali",2);const r=Math.ceil(("gregorian"==this.c?this.d.month:this.toDate().getMonth()+1)/3);return"Q"==t?r:"Qo"==t||"QO"==t?(0,s.ke)(r,"gregorian"):e}}function h(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subMonth(t-1,!1)):t>12?(this.d.month=12,this.addMonth(t-12,!1)):this.d.month=+t;!this.isValidDate();)this.subDay(1,!1);return this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jM";default:return"M"}})());const e="jalali"==this.c?this.d.month:(0,s.VK)(this.toDate())[1];if("jMM"==t)return(0,s.U9)(e,2);if("jM"==t)return e;if("jMMMM"==t||"jMMM"==t)return i.XN.jalali.months[e];if("jMo"==t)return(0,s.ke)(e);if("jMO"==t)return(0,s.ke)(e,"jalali",2);const r="gregorian"==this.c?this.d.month:this.toDate().getMonth()+1;return"M"==t?r:"MM"==t?(0,s.U9)(r,2):"MMMM"==t?i.XN.gregorian.months[r]:"Mo"==t||"MO"==t?(0,s.ke)(r,"gregorian"):"MMM"==t?i.XN.gregorian.months[r].slice(0,3):e}}function a(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){const e=this.getWeeksInYear();if(t<1)this.week(1),this.subWeek(t-1,!1);else if(t>e)this.week(e),this.addWeek(t-e,!1);else{const e=s.EC.call(this,this.d.year,this.d.month,this.d.date,this.c);this.addWeek(+t-e)}for(;!this.isValidDate();)this.subDay(1,!1);return this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jw";default:return"w"}})());const e=s.EC.call(this,this.year("jy"),this.month("jM"),this.date("jD"),this.c);if("jw"==t||"jW"==t)return e;if("jww"==t||"jWW"==t)return(0,s.U9)(e,2);if("jwo"==t||"jWo"==t)return(0,s.ke)(e);if("jwO"==t||"jWO"==t)return(0,s.ke)(e,"jalali",2);const r=s.EC.call(this,this.year("y"),this.month("M"),this.date("D"),"gregorian");return"w"==t||"W"==t?r:"ww"==t||"WW"==t?(0,s.U9)(r,2):"wo"==t||"Wo"==t||"wO"==t||"WO"==t?(0,s.ke)(r,"gregorian"):e}}function u(t){if(t=String(t).trim(),i.mL.isNumeric.test(t)){const e=this.getDaysInMonth();return t<1?(this.d.date=1,this.subDay(t-1)):t>e?(this.d.date=e,this.addDay(t-e)):this.d.date=+t,this}{t||(t=(t=>{switch(this.c[0]){case"j":return"jD";default:return"D"}})());const e="jalali"==this.c?this.d.date:(0,s.VK)(this.toDate())[2];if("jDD"==t)return(0,s.U9)(e,2);if("jD"==t)return e;if("jDo"==t)return(0,s.ke)(e);if("jDO"==t)return(0,s.ke)(e,"jalali",2);const r=this.toDate();if("jdddd"==t||"jddd"==t)return(0,s.Ot)(r);if("jdd"==t)return(0,s.Ot)(r).slice(0,1);let i=(0,s.ji)(r);if("jdo"==t)return(0,s.ke)(i);if("jdO"==t)return(0,s.ke)(i,"jalali",2);if("jd"==t)return(0,s.ji)(r,"jalali","array");if("jde"==t)return i;let n=(0,s.Bk)(this.year("jy"),this.month("jM"),e,"j");return"jDDDD"==t?(0,s.U9)(n,3):"jDDD"==t?n:"jDDDo"==t?(0,s.ke)(n):"jDDDO"==t?(0,s.ke)(n,"jalali",2):"DD"==t?(0,s.U9)(r.getDate(),2):"D"==t?r.getDate():"Do"==t||"DO"==t?(0,s.ke)(r.getDate(),"gregorian"):"dddd"==t?(0,s.Ot)(r,"gregorian"):"ddd"==t?(0,s.Ot)(r,"gregorian").slice(0,3):"dd"==t?(0,s.Ot)(r,"gregorian").slice(0,2):(i=(0,s.ji)(r,"gregorian"),"do"==t||"dO"==t?(0,s.ke)(i,"gregorian"):"d"==t?i-1:"de"==t?i:(n=(0,s.Bk)(r.getFullYear(),r.getMonth()+1,r.getDate(),"g"),"DDDD"==t?(0,s.U9)(n,3):"DDD"==t?n:"DDDo"==t||"DDDO"==t?(0,s.ke)(n,"gregorian"):e))}}function c(t){if(t=String(t).trim(),i.mL.isNumeric.test(t))return t<0?(this.d.hour=0,this.subHour(t)):t>23?(this.d.hour=23,this.addHour(t-23)):this.d.hour=+t,this;{let e=this.d.hour;return"H"==t?e:"HH"==t?(0,s.U9)(e,2):"k"==t?e||24:"kk"==t?(0,s.U9)(e||24,2):(e=e>12?e-12:e,"h"==t?e:"hh"==t?(0,s.U9)(e,2):e)}}function d(t){return t=String(t).trim(),i.mL.isNumeric.test(t)?(t<0?(this.d.minute=0,this.subMinute(t)):t>23?(this.d.minute=23,this.addMinute(t-23)):this.d.minute=+t,this):"m"==t?this.d.minute:"mm"==t?(0,s.U9)(this.d.minute,2):this.d.minute}function l(t){return t=String(t).trim(),i.mL.isNumeric.test(t)?(t<0?(this.d.second=0,this.subSecond(t)):t>23?(this.d.second=23,this.addSecond(t-23)):this.d.second=+t,this):"s"==t?this.d.second:"ss"==t?(0,s.U9)(this.d.second,2):this.d.second}function f(t){return t=String(t).trim(),i.mL.isNumeric.test(t)?(t<0?(this.d.millisecond=0,this.subMillisecond(t)):t>23?(this.d.millisecond=23,this.addMillisecond(t-23)):this.d.millisecond=+t,this):"CCC"==t||"c"==t?this.d.millisecond:"CCCC"==t?(0,s.U9)(this.d.millisecond,3):this.d.millisecond}function m(t){return t?this.fromGregorian(+String(t).trim()):this.toDate().getTime()}var p=r(424);const y=function(t,e,r){switch(t[0]){case"j":return((t,e,r)=>r>=1&&r<=6?31:r>6&&r<=11||(0,p.E)(t,e)?30:29)(t,e,r);default:return((t,e,r)=>[1,3,5,7,8,10,12].includes(r)?31:2!=r?30:(0,p.E)(t,e)?29:28)(t,e,r)}};function D(t){const e=(t=>{switch(this.c[0]){case"j":return"jd";default:return"d"}})(),r=this.clone().parse(t),i=r.date(e),s=r.clone().endOf("year").startOf("day"),n=s.date(e);return i>3?r.addDay(7-i):r.subDay(i),n>3?s.addDay(7-n):s.subDay(n),Math.ceil(s.diff(r,"date")/7)}function g(t){return this.d.millisecond=0,"s"==t[0]?this:(this.d.second=0,"m"==t||"minute"==t?this:(this.d.minute=0,"h"==t[0]?this:(this.d.hour=0,"d"==t[0]?this:"w"==t[0]?this.subDay((0,s.ji)(this.toDate(),this.c,"array")):(this.d.date=1,"q"==t[0]?this.quarter(this.quarter()):"M"==t||"month"==t?this:(this.d.month=1,"y"==t[0]?this:void 0)))))}function M(t){return this.d.millisecond=999,"s"==t[0]?this:(this.d.second=59,"m"==t||"minute"==t?this:(this.d.minute=59,"h"==t[0]?this:(this.d.hour=23,"d"==t[0]?this:"w"==t[0]?this.addDay(7-(0,s.ji)(this.toDate(),this.c)):"q"==t[0]?(this.quarter(this.quarter()).addMonth(2),this.d.date=this.getDaysInMonth(),this):(this.d.date=this.getDaysInMonth(),"M"==t||"month"==t?this:(this.d.month=12,this.d.date=this.getDaysInMonth(),"y"==t[0]?this:void 0)))))}var b=r(747);function _(...t){if(!t.length)return this.toArray().slice(3);let e=[];return e=(0,b._B)(t[0])?t[0].time():(0,b.J_)(t[0])?[t[0].getHours(),t[0].getMinutes(),t[0].getSeconds(),t[0].getMilliseconds()]:"[object Object]"===Object.prototype.toString.call(t[0])?[t[0].h||t[0].hour||t[0].hours||0,t[0].m||t[0].minute||t[0].minutes||0,t[0].s||t[0].second||t[0].seconds||0,t[0].ms||t[0].millisecond||t[0].milliseconds||0]:(0,s.Jz)(this.c,...t),this.isValidTime(...e)?this.hour(e[0]||0).minute(e[1]||0).second(e[2]||0).millisecond(e[3]||0):"زمان نامعتبر"}},555:(t,e,r)=>{r.d(e,{XN:()=>i,d7:()=>n,mL:()=>s});const i={jalali:{months:{1:"فروردین",2:"اردیبهشت",3:"خرداد",4:"تیر",5:"مرداد",6:"شهریور",7:"مهر",8:"آبان",9:"آذر",10:"دی",11:"بهمن",12:"اسفند"},days:{label:{6:"شنبه",0:"یکشنبه",1:"دوشنبه",2:"سه‌شنبه",3:"چهارشنبه",4:"پنجشنبه",5:"جمعه"},weekNumber:{6:0,0:1,1:2,2:3,3:4,4:5,5:6}},ordinalNumbers:function(t,e){const r={1:"یک",2:"دو",3:"سو",4:"چهار",5:"پنج",6:"شش",7:"هفت",8:"هشت",9:"نه",10:"ده",11:"یازده",12:"دوازده",13:"سیزده",14:"چهارده",15:"پانزده",16:"شانزده",17:"هفده",18:"هجده",19:"نوزده",20:"بیست",30:"سی‌",40:"چهل",50:"پنجاه",60:"شصت",70:"هفتاد",80:"هشتاد",90:"نود",100:"صد",200:"دویست",300:"سیصد"};let i="";if(1==t)i="اول";else if(r[t])i=r[t]+(30==t?"ام":"م");else{let e=t%100;r[e]?i=r[e]+"م":(e=t%10,e&&(i=r[e]+"م")),e=(t-e)%100,e&&(i=r[e]+(i?" و "+i:30==e?"ام ":"م")),e=100*Math.floor(t/100),e&&(i=r[e]+(i?" و "+i:"م"))}return 2==e&&(i+="ین"),i}},gregorian:{months:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},days:{label:{0:"Sunday",1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday"},weekNumber:{0:0,1:1,2:2,3:3,4:4,5:5,6:6}},ordinalNumbers:function(t){return 1==t||t%10==1&&11!=t?t+"st":2==t||t%10==2&&12!=t?t+"nd":3==t||t%10==3&&13!=t?t+"rd":t+"th"}}},s={format:/j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,isNumeric:/^\d+$/,separators:"\\/| |-|\\.|,|:",betweenBacktick:/`(.*?)`/g},n=function(t,e){return t>=0&&t<12?"a"==e?"am":"aa"==e?"A.M.":"A"==e?"AM":"ja"==e?"ق ظ":"jaa"==e?"ق.ظ":"jA"==e?"قبل از ظهر":"ق.ظ":t>=12&&t<24?"a"==e?"pm":"aa"==e?"P.M.":"A"==e?"PM":"ja"==e?"ب ظ":"jaa"==e?"ب.ظ":"jA"==e?"بعد از ظهر":"ب.ظ":void 0}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](r,r.exports,__webpack_require__),r.exports}__webpack_require__.d=(t,e)=>{for(var r in e)__webpack_require__.o(e,r)&&!__webpack_require__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var __webpack_exports__=__webpack_require__(739);return __webpack_exports__=__webpack_exports__.default,__webpack_exports__})()})); -//# sourceMappingURL=PersianDate.umd.min.js.map \ No newline at end of file +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t="undefined"!=typeof globalThis?globalThis:t||self).PersianDate=r()}(this,(function(){"use strict";var CALENDAR={jalali:{months:{1:"فروردین",2:"اردیبهشت",3:"خرداد",4:"تیر",5:"مرداد",6:"شهریور",7:"مهر",8:"آبان",9:"آذر",10:"دی",11:"بهمن",12:"اسفند"},days:{label:{6:"شنبه",0:"یکشنبه",1:"دوشنبه",2:"سه‌شنبه",3:"چهارشنبه",4:"پنجشنبه",5:"جمعه"},weekNumber:{6:0,0:1,1:2,2:3,3:4,4:5,5:6}},ordinalNumbers:function(t,r){var e={1:"یک",2:"دو",3:"سو",4:"چهار",5:"پنج",6:"شش",7:"هفت",8:"هشت",9:"نه",10:"ده",11:"یازده",12:"دوازده",13:"سیزده",14:"چهارده",15:"پانزده",16:"شانزده",17:"هفده",18:"هجده",19:"نوزده",20:"بیست",30:"سی‌",40:"چهل",50:"پنجاه",60:"شصت",70:"هفتاد",80:"هشتاد",90:"نود",100:"صد",200:"دویست",300:"سیصد"},i="";if(1==t)i="اول";else if(e[t])i=e[t]+(30==t?"ام":"م");else{var a=t%100;(e[a]||(a=t%10))&&(i=e[a]+"م"),(a=(t-a)%100)&&(i=e[a]+(i?" و "+i:30==a?"ام ":"م")),(a=100*Math.floor(t/100))&&(i=e[a]+(i?" و "+i:"م"))}return 2==r&&(i+="ین"),i}},gregorian:{months:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},days:{label:{0:"Sunday",1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday"},weekNumber:{0:0,1:1,2:2,3:3,4:4,5:5,6:6}},ordinalNumbers:function(t){return 1==t||t%10==1&&11!=t?t+"st":2==t||t%10==2&&12!=t?t+"nd":3==t||t%10==3&&13!=t?t+"rd":t+"th"}}},REGEX={format:/j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,isNumeric:/^\d+$/,separators:"\\/| |-|\\.|,|:",betweenBacktick:/`(.*?)`/g},TIMETYPE=function(t,r){return t>=0&&t<12?"a"==r?"am":"aa"==r?"A.M.":"A"==r?"AM":"ja"==r?"ق ظ":"jaa"==r?"ق.ظ":"jA"==r?"قبل از ظهر":"ق.ظ":t>=12&&t<24?"a"==r?"pm":"aa"==r?"P.M.":"A"==r?"PM":"ja"==r?"ب ظ":"jaa"==r?"ب.ظ":"jA"==r?"بعد از ظهر":"ب.ظ":void 0},isDate=function(t){return t instanceof Date},jalali$4=function(t){return(t>1342?[1,5,9,13,17,22,26,30]:[1,5,9,13,17,21,26,30]).includes(t%33)},gregorian$4=function(t){return t%4==0&&t%100!=0||t%400==0},isLeapYear=function(t,r){switch(t[0]){case"j":return jalali$4(r);default:return gregorian$4(r)}},isPersianDate=function(t){return t instanceof PersianDate},isValid=function(t,r,e,i,a,n,s,o){return isValidDate(t,r,e,i)&&isValidTime(a,n,s,o)},jalali$3=function(t,r,e){return!(r>=7&&r<=11&&31==e)&&((12!=r||31!=e)&&!(12==r&&30==e&&!isLeapYear("j",t)))},gregorian$3=function(t,r,e){return(![2,4,6,9,11].includes(r)||31!=e)&&!(2==r&&(30==e||29==e&&!isLeapYear("g",t)))},isValidDate=function(t,r,e,i){if([r,e,i].some((function(t){return-1!=String(t).search(/null|NaN/)})))return!1;if(r<0||e>12||e<1||i>31||i<1)return!1;switch(t[0]){case"j":return jalali$3(r,e,i);default:return gregorian$3(r,e,i)}},isValidTime=function(t,r,e,i){return![t,r,e,i].some((function(t){return-1!=String(t).search(/null|NaN/)}))&&(!(t<0||t>23)&&(!(r<0||r>59)&&(!(e<0||e>59)&&!(i<0||i>999))))};function isSame(){var t=typesToArray.apply(void 0,[this.c].concat(Array.prototype.slice.call(arguments)));return t=this.toArray().map((function(r,e){return REGEX.isNumeric.test(t[e])?t[e]:r})),compare.call(this,t,"==")}function _setPrototypeOf(t,r){return(_setPrototypeOf=Object.setPrototypeOf||function(t,r){return t.__proto__=r,t})(t,r)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function _construct(t,r,e){return(_construct=_isNativeReflectConstruct()?Reflect.construct:function(t,r,e){var i=[null];i.push.apply(i,r);var a=new(Function.bind.apply(t,i));return e&&_setPrototypeOf(a,e.prototype),a}).apply(null,arguments)}function _slicedToArray(t,r){return _arrayWithHoles(t)||_iterableToArrayLimit(t,r)||_unsupportedIterableToArray(t,r)||_nonIterableRest()}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_unsupportedIterableToArray(t)||_nonIterableSpread()}function _arrayWithoutHoles(t){if(Array.isArray(t))return _arrayLikeToArray(t)}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _iterableToArray(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function _iterableToArrayLimit(t,r){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var e=[],i=!0,a=!1,n=void 0;try{for(var s,o=t[Symbol.iterator]();!(i=(s=o.next()).done)&&(e.push(s.value),!r||e.length!==r);i=!0);}catch(t){a=!0,n=t}finally{try{i||null==o.return||o.return()}finally{if(a)throw n}}return e}}function _unsupportedIterableToArray(t,r){if(t){if("string"==typeof t)return _arrayLikeToArray(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?_arrayLikeToArray(t,r):void 0}}function _arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,i=new Array(r);e=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,s=!0,o=!1;return{s:function(){e=t[Symbol.iterator]()},n:function(){var t=e.next();return s=t.done,t},e:function(t){o=!0,n=t},f:function(){try{s||null==e.return||e.return()}finally{if(o)throw n}}}}function isBetween(t,r,e){var i=this.toArray();return(t=typesToArray(this.c,t))[2]||(i[2]=1),t=i.map((function(r,e){return REGEX.isNumeric.test(t[e])?t[e]:r})),r=typesToArray(this.c,r),r=i.map((function(t,e){return REGEX.isNumeric.test(r[e])?r[e]:t})),!(!this.isValid.apply(this,_toConsumableArray(t))||!this.isValid.apply(this,_toConsumableArray(r)))&&(compare.call(this,t,"["===e[0]?">=":">")&&compare.call(this,r,"]"===e[1]?"<=":"<"))}function isInArray(t){var r=this;return t.some((function(t){return isSame.call(r,t)}))}var gtj=function(t,r,e,i,a,n,s){var o,h;e=(o=t?isDate(t)?t:new Date(REGEX.isNumeric.test(t)?t:0,REGEX.isNumeric.test(r)?r:0,REGEX.isNumeric.test(e)?e:1,REGEX.isNumeric.test(i)?i:0,REGEX.isNumeric.test(a)?a:0,REGEX.isNumeric.test(n)?n:0,REGEX.isNumeric.test(s)?s:0):new Date).getDate(),r=o.getMonth()+1,t=o.getFullYear(),i=o.getHours(),a=o.getMinutes(),n=o.getSeconds(),s=o.getMilliseconds();t>1600?(h=979,t-=1600):(h=0,t-=621);var u=r>2?t+1:t,l=365*t+parseInt((u+3)/4)-parseInt((u+99)/100)+parseInt((u+399)/400)-80+e+[0,31,59,90,120,151,181,212,243,273,304,334][r-1];return h+=33*parseInt(l/12053),l%=12053,h+=4*parseInt(l/1461),(l%=1461)>365&&(h+=parseInt((l-1)/365),l=(l-1)%365),[h,l<186?1+parseInt(l/31):7+parseInt((l-186)/30),1+(l<186?l%31:(l-186)%30),i,a,n,s]},jtg=function(t,r,e,i,a,n,s){var o,h,u;t=REGEX.isNumeric.test(t)?+t:1,r=REGEX.isNumeric.test(r)?+r:1,e=REGEX.isNumeric.test(e)?+e:1,i=REGEX.isNumeric.test(i)?+i:0,a=REGEX.isNumeric.test(a)?+a:0,n=REGEX.isNumeric.test(n)?+n:0,s=REGEX.isNumeric.test(s)?+s:0,t>979?(o=1600,t-=979):o=621;var l=365*t+8*parseInt(t/33)+parseInt((t%33+3)/4)+78+e+(r<7?31*(r-1):30*(r-7)+186);o+=400*parseInt(l/146097),(l%=146097)>36524&&(o+=100*parseInt(--l/36524),(l%=36524)>=365&&l++),o+=4*parseInt(l/1461),(l%=1461)>365&&(o+=parseInt((l-1)/365),l=(l-1)%365),u=l+1;var d=[0,31,isLeapYear("gregorian",o)?29:28,31,30,31,30,31,31,30,31,30,31];for(h=0;h<13;h++){var c=d[h];if(u<=c)break;u-=c}return new Date(o,h-1,u,i,a,n,s)},warn=function(t){console.warn(t)},error=function(t){console.error(t)},invalid=function(t){return delete this.d,this.error=t,this},typesToArray=function(t,r,e,i,a,n,s,o){return r||(r=new Date),"string"==typeof r&&-1!=r.search(REGEX.separators)?r.split(/[/ -.,:\\]/):Array.isArray(r)?r:PersianDate.isPersianDate(r)?r.clone().calendar(t).toArray():PersianDate.isDate(r)?new PersianDate(r).calendar(t).toArray():"[object Object]"===Object.prototype.toString.call(r)?[r.y||r.year||r.years,r.M||r.month||r.months||1,r.d||r.day||r.days||r.date||1,r.h||r.hour||r.hours||0,r.m||r.minute||r.minutes||0,r.s||r.second||r.seconds||0,r.ms||r.millisecond||r.milliseconds||0]:[r,e,i,a,n,s,o]},ordinalNumber=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"jalali",e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return CALENDAR[r].ordinalNumbers(t,e)},addPrefix=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"0";return e.repeat(r-String(t).length)+t},setJalaliDate=function(t){var r=_slicedToArray(gtj(t),7);this.d.year=r[0],this.d.month=r[1],this.d.date=r[2],this.d.hour=r[3],this.d.minute=r[4],this.d.second=r[5],this.d.millisecond=r[6]},setGregorianDate=function(t){this.d={year:t.getFullYear(),month:t.getMonth()+1,date:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),second:t.getSeconds(),millisecond:t.getMilliseconds()}},getDayLabel=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"jalali";return isDate(t)?CALENDAR[r].days.label[t.getDay()]:error("the first param must be instance of Date.")},getDayOfWeek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"jalali",e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"standard";return isDate(t)?CALENDAR[r].days.weekNumber[t.getDay()]+("standard"!=e?0:1):error("the first param must be instance of Date.")},getDefaultFormat$4=function(t){switch(t[0]){case"j":return"jy";default:return"y"}};function year(t){if(t=String(t).trim(),REGEX.isNumeric.test(t))return this.d.year=+t,this.isValidDate()?this:this.subDay(1,!1);t||(t=getDefaultFormat$4(this.c));var r="jalali"==this.c?this.d.year:gtj(this.toDate())[0];if("jy"==t||"jYYYY"==t)return r;if("jYY"==t)return String(r).slice(-2);var e="gregorian"==this.c?this.d.year:this.toDate().getFullYear();return"y"==t||"YYYY"==t?e:"YY"==t?String(e).slice(-2):r}var getDefaultFormat$3=function(t){switch(t[0]){case"j":return"jQ";default:return"Q"}};function quarter(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subQuarter(t-1,!1)):t>4?(this.d.month=12,this.addQuarter(t-4,!1)):this.d.month=3*+t-2;!this.isValidDate();)this.subDay(1,!1);return this}t||(t=getDefaultFormat$3(this.c));var r=Math.ceil(("jalali"==this.c?this.d.month:gtj(this.toDate())[1])/3);if("jQ"==t)return r;if("jQo"==t)return ordinalNumber(r);if("jQO"==t)return ordinalNumber(r,"jalali",2);var e=Math.ceil(("gregorian"==this.c?this.d.month:this.toDate().getMonth()+1)/3);return"Q"==t?e:"Qo"==t||"QO"==t?ordinalNumber(e,"gregorian"):r}var getDefaultFormat$2=function(t){switch(t[0]){case"j":return"jM";default:return"M"}};function month(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){for(t<1?(this.d.month=1,this.subMonth(t-1,!1)):t>12?(this.d.month=12,this.addMonth(t-12,!1)):this.d.month=+t;!this.isValidDate();)this.subDay(1,!1);return this}t||(t=getDefaultFormat$2(this.c));var r="jalali"==this.c?this.d.month:gtj(this.toDate())[1];if("jMM"==t)return addPrefix(r,2);if("jM"==t)return r;if("jMMMM"==t||"jMMM"==t)return CALENDAR.jalali.months[r];if("jMo"==t)return ordinalNumber(r);if("jMO"==t)return ordinalNumber(r,"jalali",2);var e="gregorian"==this.c?this.d.month:this.toDate().getMonth()+1;return"M"==t?e:"MM"==t?addPrefix(e,2):"MMMM"==t?CALENDAR.gregorian.months[e]:"Mo"==t||"MO"==t?ordinalNumber(e,"gregorian"):"MMM"==t?CALENDAR.gregorian.months[e].slice(0,3):r}var getDefaultFormat$1=function(t){switch(t[0]){case"j":return"jw";default:return"w"}};function week(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){var r=this.getWeeksInYear();if(t<1)this.week(1),this.subWeek(t-1,!1);else if(t>r)this.week(r),this.addWeek(t-r,!1);else{var e=getWeekOfYear.call(this,this.d.year,this.d.month,this.d.date,this.c);this.addWeek(+t-e)}for(;!this.isValidDate();)this.subDay(1,!1);return this}t||(t=getDefaultFormat$1(this.c));var i=getWeekOfYear.call(this,this.year("jy"),this.month("jM"),this.date("jD"),this.c);if("jw"==t||"jW"==t)return i;if("jww"==t||"jWW"==t)return addPrefix(i,2);if("jwo"==t||"jWo"==t)return ordinalNumber(i);if("jwO"==t||"jWO"==t)return ordinalNumber(i,"jalali",2);var a=getWeekOfYear.call(this,this.year("y"),this.month("M"),this.date("D"),"gregorian");return"w"==t||"W"==t?a:"ww"==t||"WW"==t?addPrefix(a,2):"wo"==t||"Wo"==t||"wO"==t||"WO"==t?ordinalNumber(a,"gregorian"):i}var getDefaultFormat=function(t){switch(t[0]){case"j":return"jD";default:return"D"}};function date(t){if(t=String(t).trim(),REGEX.isNumeric.test(t)){var r=this.getDaysInMonth();return t<1?(this.d.date=1,this.subDay(t-1)):t>r?(this.d.date=r,this.addDay(t-r)):this.d.date=+t,this}t||(t=getDefaultFormat(this.c));var e="jalali"==this.c?this.d.date:gtj(this.toDate())[2];if("jDD"==t)return addPrefix(e,2);if("jD"==t)return e;if("jDo"==t)return ordinalNumber(e);if("jDO"==t)return ordinalNumber(e,"jalali",2);var i=this.toDate();if("jdddd"==t||"jddd"==t)return getDayLabel(i);if("jdd"==t)return getDayLabel(i).slice(0,1);var a=getDayOfWeek(i);if("jdo"==t)return ordinalNumber(a);if("jdO"==t)return ordinalNumber(a,"jalali",2);if("jd"==t)return getDayOfWeek(i,"jalali","array");if("jde"==t)return a;var n=getDayOfYear(this.year("jy"),this.month("jM"),e,"j");return"jDDDD"==t?addPrefix(n,3):"jDDD"==t?n:"jDDDo"==t?ordinalNumber(n):"jDDDO"==t?ordinalNumber(n,"jalali",2):"DD"==t?addPrefix(i.getDate(),2):"D"==t?i.getDate():"Do"==t||"DO"==t?ordinalNumber(i.getDate(),"gregorian"):"dddd"==t?getDayLabel(i,"gregorian"):"ddd"==t?getDayLabel(i,"gregorian").slice(0,3):"dd"==t?getDayLabel(i,"gregorian").slice(0,2):(a=getDayOfWeek(i,"gregorian"),"do"==t||"dO"==t?ordinalNumber(a,"gregorian"):"d"==t?a-1:"de"==t?a:(n=getDayOfYear(i.getFullYear(),i.getMonth()+1,i.getDate(),"g"),"DDDD"==t?addPrefix(n,3):"DDD"==t?n:"DDDo"==t||"DDDO"==t?ordinalNumber(n,"gregorian"):e))}function hour(t){if(t=String(t).trim(),REGEX.isNumeric.test(t))return t<0?(this.d.hour=0,this.subHour(t)):t>23?(this.d.hour=23,this.addHour(t-23)):this.d.hour=+t,this;var r=this.d.hour;return"H"==t?r:"HH"==t?addPrefix(r,2):"k"==t?r||24:"kk"==t?addPrefix(r||24,2):(r=r>12?r-12:r,"h"==t?r:"hh"==t?addPrefix(r,2):r)}function minute(t){return t=String(t).trim(),REGEX.isNumeric.test(t)?(t<0?(this.d.minute=0,this.subMinute(t)):t>23?(this.d.minute=23,this.addMinute(t-23)):this.d.minute=+t,this):"m"==t?this.d.minute:"mm"==t?addPrefix(this.d.minute,2):this.d.minute}function second(t){return t=String(t).trim(),REGEX.isNumeric.test(t)?(t<0?(this.d.second=0,this.subSecond(t)):t>23?(this.d.second=23,this.addSecond(t-23)):this.d.second=+t,this):"s"==t?this.d.second:"ss"==t?addPrefix(this.d.second,2):this.d.second}function millisecond(t){return t=String(t).trim(),REGEX.isNumeric.test(t)?(t<0?(this.d.millisecond=0,this.subMillisecond(t)):t>23?(this.d.millisecond=23,this.addMillisecond(t-23)):this.d.millisecond=+t,this):"CCC"==t||"c"==t?this.d.millisecond:"CCCC"==t?addPrefix(this.d.millisecond,3):this.d.millisecond}function timestamp(t){return t?this.fromGregorian(+String(t).trim()):this.toDate().getTime()}var jalali$2=function(t,r,e){return e>=1&&e<=6?31:e>6&&e<=11||isLeapYear(t,r)?30:29},gregorian$2=function(t,r,e){return[1,3,5,7,8,10,12].includes(e)?31:2!=e?30:isLeapYear(t,r)?29:28},getDaysInMonth=function(t,r,e){switch(t[0]){case"j":return jalali$2(t,r,e);default:return gregorian$2(t,r,e)}},getDayOfYearFormat=function(t){switch(t[0]){case"j":return"jd";default:return"d"}};function getWeeksInYear(t){var r=getDayOfYearFormat(this.c),e=this.clone().parse(t),i=e.date(r),a=e.clone().endOf("year").startOf("day"),n=a.date(r);return i>3?e.addDay(7-i):e.subDay(i),n>3?a.addDay(7-n):a.subDay(n),Math.ceil(a.diff(e,"date")/7)}function startOf(t){return this.d.millisecond=0,"s"==t[0]?this:(this.d.second=0,"m"==t||"minute"==t?this:(this.d.minute=0,"h"==t[0]?this:(this.d.hour=0,"d"==t[0]?this:"w"==t[0]?this.subDay(getDayOfWeek(this.toDate(),this.c,"array")):(this.d.date=1,"q"==t[0]?this.quarter(this.quarter()):"M"==t||"month"==t?this:(this.d.month=1,"y"==t[0]?this:void 0)))))}function endOf(t){return this.d.millisecond=999,"s"==t[0]?this:(this.d.second=59,"m"==t||"minute"==t?this:(this.d.minute=59,"h"==t[0]?this:(this.d.hour=23,"d"==t[0]?this:"w"==t[0]?this.addDay(7-getDayOfWeek(this.toDate(),this.c)):"q"==t[0]?(this.quarter(this.quarter()).addMonth(2),this.d.date=this.getDaysInMonth(),this):(this.d.date=this.getDaysInMonth(),"M"==t||"month"==t?this:(this.d.month=12,this.d.date=this.getDaysInMonth(),"y"==t[0]?this:void 0)))))}function time(){for(var t=arguments.length,r=new Array(t),e=0;e3&&a.addDay(7-n);var o=Math.ceil(s.diff(a,"date",!0)/7),h=s.clone().getWeeksInYear();return o>h?h:o},compare=function compare(date,operator){return date=typesToArray.apply(void 0,[this.c].concat(_toConsumableArray(date))),!!this.isValid.apply(this,_toConsumableArray(date))&&eval("this.timestamp()"+operator+"this.clone().parse(...date).timestamp()")},mathOperation=function(t,r){var e=this;if(!t.length)return!1;var i=_toConsumableArray(t),a=i.map((function(t){var r;return t=typesToArray(e.c,t),!!e.isValid.apply(e,_toConsumableArray(t))&&(r=e.clone()).parse.apply(r,_toConsumableArray(t)).timestamp()}));return!a.includes(!1)&&i[a.indexOf(Math[r].apply(Math,_toConsumableArray(a)))]},isTimestamp=function(t){return!isNaN(t)&&Math.floor(t/1e4)>0};function now(){var t=new Date;return"jalali"==this.c?setJalaliDate.call(this,t):setGregorianDate.call(this,t),this}function parse(){return"jalali"==this.c?this.fromJalali.apply(this,arguments):this.fromGregorian.apply(this,arguments)}function clone(){return Object.assign(Object.create(Object.getPrototypeOf(this)),JSON.parse(JSON.stringify(this)))}function fromJalali(){for(var t=arguments.length,r=new Array(t),e=0;e1){if(!isValid.apply(void 0,["gregorian"].concat(_toConsumableArray(r))))return invalid.call(this,"تاریخ نامعتبر");--r[1]}return"Invalid Date"==(r=_construct(Date,_toConsumableArray(r)))?invalid.call(this,"تاریخ نامعتبر"):("jalali"==this.c?setJalaliDate.call(this,r):setGregorianDate.call(this,r),this)}function calendar(t){return t?("j"==t[0]&&"j"!=this.c[0]?(this.error||setJalaliDate.call(this,this.toDate()),this.c="jalali"):"g"==t[0]&&"g"!=this.c[0]&&(this.error||setGregorianDate.call(this,this.toDate()),this.c="gregorian"),this):this.c}function addYear(t,r){if(t<0)return this.subYear(Math.abs(t));for(this.d.year+=+t;r&&!this.isValidDate();)this.subDay(1,!1);return this}function addQuarter(t,r){return t<0?this.subQuarter(Math.abs(t)):this.addMonth(3*+t,r)}function addMonth(t,r){if(t<0)return this.subMonth(Math.abs(t));t=+t;var e=12-this.d.month+1;if(e>t)this.d.month+=t;else{for(this.addYear(1,!1),this.d.month=1,t-=e;t>=12;)t-=12,this.addYear(1,!1);0!=t&&(this.d.month+=t)}for(;r&&!this.isValidDate();)this.subDay(1,!1);return this}function addWeek(t,r){return t<0?this.subWeek(Math.abs(t)):this.addDay(7*+t,r)}function addDay(t){if(t<0)return this.subDay(Math.abs(t));t=+t;var r=this.getDaysInMonth()-this.d.date+1;if(r>t)this.d.date+=t;else{this.addMonth(1,!1),this.d.date=1,t-=r;for(var e=this.getDaysInMonth();t>=e;)t-=e,this.addMonth(1,!1),e=this.getDaysInMonth();0!=t&&(this.d.date+=t)}return this}function addHour(t){if(t<0)return this.subHour(Math.abs(t));for(t=+t;t>=24;)t-=24,this.addDay(1,!1);var r=24-this.d.hour;return t>=r?(this.addDay(1,!1),t-=r,this.d.hour=t):this.d.hour+=t,this}function addMinute(t){if(t<0)return this.subMinute(Math.abs(t));for(t=+t;t>=60;)this.addHour(1,!1),t-=60;var r=60-this.d.minute;return t>=r?(this.addHour(1,!1),t-=r,this.d.minute=t):this.d.minute+=t,this}function addSecond(t){if(t<0)return this.subSecond(Math.abs(t));for(t=+t;t>=60;)this.addMinute(1,!1),t-=60;var r=60-this.d.second;return t>=r?(this.addMinute(1,!1),t-=r,this.d.second=t):this.d.second+=t,this}function addMillisecond(t){if(t<0)return this.subMillisecond(Math.abs(t));for(t=+t;t>=1e3;)this.addSecond(1,!1),t-=1e3;var r=1e3-this.d.millisecond;return t>=r?(this.addSecond(1,!1),t-=r,this.d.millisecond=t):this.d.millisecond+=t,this}function subYear(t,r){for(this.d.year-=Math.abs(t);r&&!this.isValidDate();)this.subDay(1,!1);return this}function subQuarter(t,r){return t=Math.abs(t),this.subMonth(3*t,r)}function subMonth(t,r){t=Math.abs(t);var e=this.d.month;if(e>t)this.d.month-=t;else{for(this.subYear(1,!1),this.d.month=12,t-=e;t>=12;)this.subYear(1,!1),t-=12;0!=t&&(this.d.month-=t)}for(;r&&!this.isValidDate();)this.subDay(1,!1);return this}function subWeek(t,r){return t=Math.abs(t),this.subDay(7*t,r)}function subDay(t){t=Math.abs(t);var r=this.d.date;if(r>t)this.d.date-=t;else{this.subMonth(1,!1);var e=this.getDaysInMonth();for(this.d.date=e,t-=r;t>=e;)t-=e,this.subMonth(1,!1),e=this.getDaysInMonth();this.d.date=e-t}return this}function subHour(t){for(t=Math.abs(t);t>=24;)t-=24,this.subDay(1,!1);var r=this.d.hour;return t>r?(this.subDay(1,!1),t-=r,this.d.hour=24-t):this.d.hour-=t,this}function subMinute(t){for(t=Math.abs(t);t>=60;)t-=60,this.subHour(1,!1);var r=this.d.minute;return t>r?(this.subHour(1,!1),t-=r,this.d.minute=60-t):this.d.minute-=t,this}function subSecond(t){for(t=Math.abs(t);t>=60;)t-=60,this.subMinute(1,!1);var r=this.d.second;return t>r?(this.subMinute(1,!1),t-=r,this.d.second=60-t):this.d.second-=t,this}function subMillisecond(t){for(t=Math.abs(t);t>=1e3;)t-=1e3,this.subSecond(1,!1);var r=this.d.millisecond;return t>r?(this.subSecond(1,!1),t-=r,this.d.millisecond=1e3-t):this.d.millisecond-=t,this}var jalali$1=function(t){return t.replace(/\?/g,"j").replace(/datetime/gi,"jYYYY/jMM/jDD HH:mm").replace(/date/gi,"jYYYY/jMM/jDD").replace(/time/gi,"HH:mm")},gregorian$1=function(t){return t.replace(/\?/g,"").replace(/datetime/gi,"YYYY-MM-DD HH:mm").replace(/date/gi,"YYYY-MM-DD").replace(/time/gi,"HH:mm")};function toString(t){var r=[];switch(t=t.replace(REGEX.betweenBacktick,(function(t,e){return r.push(e),"###"})),this.c[0]){case"j":t=jalali$1(t);break;default:t=gregorian$1(t)}var e,i="",a=_createForOfIteratorHelper(t.match(REGEX.format));try{for(a.s();!(e=a.n()).done;){var n=e.value;i+=t.substring(0,t.indexOf(n)),-1!=n.search(/Y|y/)?i+=this.year(n):-1!=n.search(/M/)?i+=this.month(n):-1!=n.search(/Q/)?i+=this.quarter(n):-1!=n.search(/D|d/)?i+=this.date(n):-1!=n.search(/W|w/)?i+=this.week(n):-1!=n.search(/H|h|k/)?i+=this.hour(n):-1!=n.search(/m/)?i+=this.minute(n):-1!=n.search(/s/)?i+=this.second(n):-1!=n.search(/c|C/)?i+=this.millisecond(n):-1!=n.search(/t/)?i+=this.timestamp():-1!=n.search(/a|A/)&&(i+=TIMETYPE(this.d.hour,n)),t=t.substr(t.indexOf(n)+n.length)}}catch(t){a.e(t)}finally{a.f()}i+=t;for(var s=0;s=0?1:-1):a}function diffForHumans(t,r){var e=this.diff(t,"s");if("string"==typeof e)return"تاریخ نامعتبر";var i=r&&(e>0?"آینده":"پیش");return 0==(e=Math.abs(e))?"هم اکنون":(e=e<45?"لحظات":(e/=60)<45?Math.round(e)+" دقیقه":(e/=60)<23.5?Math.round(e)+" ساعت":(e/=24)<26?Math.round(e)+" روز":e<320?Math.round(e/30)+" ماه":Math.round(e/365)+" سال")+(r?" "+i:"")}var PersianDate=function t(r,e){this.d={},this.c="jalali",t.prototype.now=function(){return this.error&&(delete this.error,this.d={}),now.call(this)},t.prototype.setDate=function(){return warn('"setDate" function is deprecated! use "fromGregorian" function instead.\nhttps://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date'),this.fromGregorian.apply(this,arguments)},t.prototype.parse=function(){return parse.call.apply(parse,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.clone=function(){return clone.call(this)},t.prototype.fromJalali=function(){return this.error&&(delete this.error,this.d={}),fromJalali.call.apply(fromJalali,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.fromGregorian=function(){return this.error&&(delete this.error,this.d={}),fromGregorian.call.apply(fromGregorian,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.calendar=function(t){return calendar.call(this,t)},t.prototype.year=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:year.call(this,t)},t.prototype.month=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:month.call(this,t)},t.prototype.date=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:date.call(this,t)},t.prototype.quarter=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:quarter.call(this,t)},t.prototype.week=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.error?this.error:week.call(this,t)},t.prototype.hour=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"H";return this.error?this.error:hour.call(this,t)},t.prototype.minute=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"m";return this.error?this.error:minute.call(this,t)},t.prototype.second=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"s";return this.error?this.error:second.call(this,t)},t.prototype.millisecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"c";return this.error?this.error:millisecond.call(this,t)},t.prototype.timestamp=function(t){return this.error?this.error:timestamp.call(this,t)},t.prototype.valueOf=function(){return this.timestamp()},t.prototype.getDaysInMonth=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.d.month;return this.error?this.error:getDaysInMonth(this.c,t,r)},t.prototype.getWeeksInYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year;return this.error?this.error:getWeeksInYear.call(this,t)},t.prototype.startOf=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"year";return startOf.call(this,t)},t.prototype.endOf=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"year";return endOf.call(this,t)},t.prototype.time=function(){return this.error?this.error:time.call.apply(time,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.addYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addYear.call(this,t,r):this},t.prototype.addMonth=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addMonth.call(this,t,r):this},t.prototype.addDay=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addDay.call(this,t,r):this},t.prototype.addQuarter=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addQuarter.call(this,t,r):this},t.prototype.addWeek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addWeek.call(this,t,r):this},t.prototype.addHour=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addHour.call(this,t,r):this},t.prototype.addMinute=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addMinute.call(this,t,r):this},t.prototype.addSecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addSecond.call(this,t,r):this},t.prototype.addMillisecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?addMillisecond.call(this,t,r):this},t.prototype.subYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subYear.call(this,t,r):this},t.prototype.subMonth=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subMonth.call(this,t,r):this},t.prototype.subDay=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subDay.call(this,t,r):this},t.prototype.subQuarter=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subQuarter.call(this,t,r):this},t.prototype.subWeek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subWeek.call(this,t,r):this},t.prototype.subHour=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subHour.call(this,t,r):this},t.prototype.subMinute=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subMinute.call(this,t,r):this},t.prototype.subSecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subSecond.call(this,t,r):this},t.prototype.subMillisecond=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:t?subMillisecond.call(this,t,r):this},t.prototype.toString=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"date";return this.error?this.error:toString.call(this,t)},t.prototype.toArray=function(){return this.error?this.error:toArray.call.apply(toArray,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.toObject=function(){return this.error?this.error:toObject.call.apply(toObject,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.toDate=function(){return this.error?this.error:toDate.call(this)},t.prototype.diff=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.error?this.error:diff.call(this,t,r,e)},t.prototype.diffForHumans=function(t){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.error?this.error:diffForHumans.call(this,t,r)},t.prototype.min=function(){return mathOperation.call(this,arguments,"min")},t.prototype.max=function(){return mathOperation.call(this,arguments,"max")},t.prototype.isLeapYear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year;return!this.error&&isLeapYear(this.c,t)},t.prototype.isValid=function(t,r,e,i,a,n,s){return!this.error&&(this.isValidDate(t,r,e)&&this.isValidTime(i,a,n,s))},t.prototype.isValidDate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.year,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.d.month,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.d.date;return!this.error&&isValidDate(this.c,t,r,e)},t.prototype.isValidTime=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.d.hour,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.d.minute,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.d.second,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.d.millisecond;return!this.error&&isValidTime(t,r,e,i)},t.prototype.isSame=function(){return!this.error&&isSame.call.apply(isSame,[this].concat(Array.prototype.slice.call(arguments)))},t.prototype.isBefore=function(){return!this.error&&compare.call(this,arguments,"<")},t.prototype.isAfter=function(){return!this.error&&compare.call(this,arguments,">")},t.prototype.isSameOrBefore=function(){return!this.error&&compare.call(this,arguments,"<=")},t.prototype.isSameOrAfter=function(){return!this.error&&compare.call(this,arguments,">=")},t.prototype.isBetween=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"()";return!this.error&&isBetween.call(this,t,r,e)},t.prototype.isInArray=function(t){return!this.error&&isInArray.call(this,t)},t.prototype.isDate=isDate,t.prototype.isPersianDate=isPersianDate,e&&this.calendar(e),r?e&&"j"==e[0]?this.fromJalali(r):this.fromGregorian(r):this.now()};return PersianDate.isLeapYear=isLeapYear,PersianDate.isDate=isDate,PersianDate.isPersianDate=isPersianDate,PersianDate.isValid=isValid,PersianDate.isValidDate=isValidDate,PersianDate.isValidTime=isValidTime,PersianDate.getDaysInMonth=getDaysInMonth,PersianDate})); diff --git a/dist/PersianDate.umd.min.js.map b/dist/PersianDate.umd.min.js.map deleted file mode 100644 index 74e8a83..0000000 --- a/dist/PersianDate.umd.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://PersianDate/webpack/universalModuleDefinition","webpack://PersianDate/./src/create/now.js","webpack://PersianDate/./src/create/parse.js","webpack://PersianDate/./src/create/clone.js","webpack://PersianDate/./src/create/fromJalali.js","webpack://PersianDate/./src/create/fromGregorian.js","webpack://PersianDate/./src/create/calendar.js","webpack://PersianDate/./src/add-sub/addYear.js","webpack://PersianDate/./src/add-sub/addMonth.js","webpack://PersianDate/./src/add-sub/addDay.js","webpack://PersianDate/./src/add-sub/addQuarter.js","webpack://PersianDate/./src/add-sub/addWeek.js","webpack://PersianDate/./src/add-sub/addHour.js","webpack://PersianDate/./src/add-sub/addMinute.js","webpack://PersianDate/./src/add-sub/addSecond.js","webpack://PersianDate/./src/add-sub/addMillisecond.js","webpack://PersianDate/./src/add-sub/subYear.js","webpack://PersianDate/./src/add-sub/subMonth.js","webpack://PersianDate/./src/add-sub/subDay.js","webpack://PersianDate/./src/add-sub/subQuarter.js","webpack://PersianDate/./src/add-sub/subWeek.js","webpack://PersianDate/./src/add-sub/subHour.js","webpack://PersianDate/./src/add-sub/subMinute.js","webpack://PersianDate/./src/add-sub/subSecond.js","webpack://PersianDate/./src/add-sub/subMillisecond.js","webpack://PersianDate/./src/conversion/toString.js","webpack://PersianDate/./src/conversion/toArray.js","webpack://PersianDate/./src/conversion/toObject.js","webpack://PersianDate/./src/conversion/toDate.js","webpack://PersianDate/./src/diff/diff.js","webpack://PersianDate/./src/diff/diffForHumans.js","webpack://PersianDate/./src/PersianDate.js","webpack://PersianDate/./src/base/compare.js","webpack://PersianDate/./src/base/gtj.js","webpack://PersianDate/./src/base/jtg.js","webpack://PersianDate/./src/base/warn.js","webpack://PersianDate/./src/base/invalid.js","webpack://PersianDate/./src/base/typesToArray.js","webpack://PersianDate/./src/base/ordinalNumber.js","webpack://PersianDate/./src/base/addPrefix.js","webpack://PersianDate/./src/base/setJalaliDate.js","webpack://PersianDate/./src/base/setGregorianDate.js","webpack://PersianDate/./src/base/error.js","webpack://PersianDate/./src/base/getDayLabel.js","webpack://PersianDate/./src/base/getDayOfWeek.js","webpack://PersianDate/./src/base/getDayOfYear.js","webpack://PersianDate/./src/base/getWeekOfYear.js","webpack://PersianDate/./src/base/mathOperation.js","webpack://PersianDate/./src/base/isTimestamp.js","webpack://PersianDate/./src/comparison/isPersianDate.js","webpack://PersianDate/./src/comparison/isValid.js","webpack://PersianDate/./src/comparison/isValidDate.js","webpack://PersianDate/./src/comparison/isValidTime.js","webpack://PersianDate/./src/comparison/isSame.js","webpack://PersianDate/./src/comparison/isBetween.js","webpack://PersianDate/./src/comparison/isDate.js","webpack://PersianDate/./src/comparison/isLeapYear.js","webpack://PersianDate/./src/set-get/year.js","webpack://PersianDate/./src/set-get/quarter.js","webpack://PersianDate/./src/set-get/month.js","webpack://PersianDate/./src/set-get/week.js","webpack://PersianDate/./src/set-get/date.js","webpack://PersianDate/./src/set-get/hour.js","webpack://PersianDate/./src/set-get/minute.js","webpack://PersianDate/./src/set-get/second.js","webpack://PersianDate/./src/set-get/millisecond.js","webpack://PersianDate/./src/set-get/timestamp.js","webpack://PersianDate/./src/set-get/getDaysInMonth.js","webpack://PersianDate/./src/set-get/getWeeksInYear.js","webpack://PersianDate/./src/set-get/startOf.js","webpack://PersianDate/./src/set-get/endOf.js","webpack://PersianDate/./src/set-get/time.js","webpack://PersianDate/./src/utils.js","webpack://PersianDate/webpack/bootstrap","webpack://PersianDate/webpack/runtime/define property getters","webpack://PersianDate/webpack/runtime/hasOwnProperty shorthand","webpack://PersianDate/webpack/startup"],"names":["root","factory","exports","module","define","amd","self","now","date","Date","this","c","parse","fromJalali","fromGregorian","clone","Object","assign","create","getPrototypeOf","JSON","stringify","length","d","year","month","hour","minute","second","millisecond","isValid","isPersianDate","calendar","toArray","getTime","error","toDate","addYear","checkDate","subYear","Math","abs","isValidDate","subDay","addMonth","subMonth","monthToStartNewYear","addDay","day","dayToStartNextMonth","getDaysInMonth","daysInMonth","addQuarter","quarter","subQuarter","addWeek","week","subWeek","addHour","subHour","hourToNextDay","addMinute","subMinute","minuteToNextHour","addSecond","subSecond","secondToNextMinute","addMillisecond","subMillisecond","millisecondToNextSecond","pastMonth","pastDays","pastHours","pastMinute","pastSeconds","pastMilliseconds","format","rawTexts","replace","_matched","text","push","jalali","gregorian","matchedFormats","match","dateString","i","substring","indexOf","search","timestamp","substr","String","arguments","values","formats","toObject","diff","unit","addOne","result","ceil","diffForHumans","suffix","prefix","round","PersianDate","dateVal","calendarVal","prototype","call","setDate","value","valueOf","getWeeksInYear","startOf","endOf","time","toString","min","max","isLeapYear","isValidTime","isSame","isBefore","isAfter","isSameOrBefore","isSameOrAfter","isBetween","from","to","method","isDate","compare","operator","eval","gtj","jYear","jMonth","jDay","getDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","newYear","days","parseInt","jtg","gYear","gMonth","gDay","daysOfMonths","v","warn","msg","console","invalid","errorText","typesToArray","split","Array","isArray","y","years","M","months","h","hours","m","minutes","s","seconds","ms","milliseconds","ordinalNumber","number","mode","ordinalNumbers","addPrefix","repeat","setJalaliDate","setGregorianDate","getDayLabel","getDay","getDayOfWeek","getDayOfYear","getWeekOfYear","firstOfYear","firstOfYearDay","dayOfYearFormat","weekNumber","weeksInYear","mathOperation","operation","args","argsNumber","map","includes","isTimestamp","isNaN","floor","some","e","trim","getDefaultFormat","slice","jQuarter","gQuarter","weekOfYear","jWeekOfYear","gWeekOfYear","jDate","gDate","dayOfWeek","dayOfYear","getDayOfYearFormat","lastOfYear","lastOfYearDay","t","times","CALENDAR","1","2","3","4","5","6","7","8","9","10","11","12","label","0","numbers","13","14","15","16","17","18","19","20","30","40","50","60","70","80","90","100","200","300","remainder","REGEX","isNumeric","separators","betweenBacktick","TIMETYPE","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","definition","key","o","defineProperty","enumerable","get","obj","prop","hasOwnProperty","__webpack_exports__"],"mappings":"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","file":"PersianDate.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PersianDate\"] = factory();\n\telse\n\t\troot[\"PersianDate\"] = factory();\n})(self, function() {\nreturn ","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function now() {\n\tconst date = new Date();\n\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\n\treturn this;\n}\n","export function parse(...date) {\n\tif (this.c == \"jalali\") {\n\t\treturn this.fromJalali(...date);\n\t} else {\n\t\treturn this.fromGregorian(...date);\n\t}\n}\n","export function clone() {\n\treturn Object.assign(\n\t\tObject.create(Object.getPrototypeOf(this)),\n\t\tJSON.parse(JSON.stringify(this))\n\t);\n}\n","import { typesToArray, gtj, jtg, setGregorianDate, invalid } from \"../base\";\n\nexport function fromJalali(...date) {\n\tif (!date.length) date = gtj();\n\telse date = typesToArray(\"jalali\", ...date);\n\n\tif (this.c == \"jalali\") {\n\t\tthis.d.year = +date[0];\n\t\tthis.d.month = +date[1] || 1;\n\t\tthis.d.date = +date[2] || 1;\n\t\tthis.d.hour = +date[3] || 0;\n\t\tthis.d.minute = +date[4] || 0;\n\t\tthis.d.second = +date[5] || 0;\n\t\tthis.d.millisecond = +date[6] || 0;\n\t} else {\n\t\tsetGregorianDate.call(this, jtg(...date));\n\t}\n\n\tif (!this.isValid()) return invalid.call(this, \"تاریخ نامعتبر\");\n\treturn this;\n}\n","import {\n\ttypesToArray,\n\tsetGregorianDate,\n\tsetJalaliDate,\n\tinvalid,\n\tisTimestamp,\n} from \"../base\";\nimport { isValid } from \"../comparison\";\n\nexport function fromGregorian(...date) {\n\tif (!date.length) date[0] = new Date().getTime();\n\telse if (this.isPersianDate(date[0])) {\n\t\tdate = date[0].clone().calendar(\"g\").toArray();\n\t} else if (!isTimestamp(date[0])) {\n\t\tdate = typesToArray(\"gregorian\", ...date);\n\t\tdate[6] = +date[6] || 0;\n\t\tdate[5] = +date[5] || 0;\n\t\tdate[4] = +date[4] || 0;\n\t\tdate[3] = +date[3] || 0;\n\t\tdate[2] = +date[2] || 1;\n\t\tdate[1] = +date[1] || 1;\n\t\tdate[0] = +date[0];\n\t}\n\n\tif (date.length > 1) {\n\t\tif (!isValid(\"gregorian\", ...date))\n\t\t\treturn invalid.call(this, \"تاریخ نامعتبر\");\n\t\t--date[1]; // this is month; becuse the Date get month from 0, subtract one\n\t}\n\n\tdate = new Date(...date);\n\tif (date == \"Invalid Date\") return invalid.call(this, \"تاریخ نامعتبر\");\n\tif (this.c == \"jalali\") {\n\t\tsetJalaliDate.call(this, date);\n\t} else {\n\t\tsetGregorianDate.call(this, date);\n\t}\n\treturn this;\n}\n","import { setJalaliDate, setGregorianDate } from \"../base\";\n\nexport function calendar(c) {\n\tif (!c) return this.c;\n\n\tif (c[0] == \"j\" && this.c[0] != \"j\") {\n\t\tif (!this.error) setJalaliDate.call(this, this.toDate());\n\t\tthis.c = \"jalali\";\n\t} else if (c[0] == \"g\" && this.c[0] != \"g\") {\n\t\tif (!this.error) setGregorianDate.call(this, this.toDate());\n\t\tthis.c = \"gregorian\";\n\t}\n\n\treturn this;\n}\n","export function addYear(year, checkDate) {\n\t// if the number was negative, send to subYear method\n\tif (year < 0) return this.subYear(Math.abs(year));\n\tthis.d.year += +year; //plus sign before a variable, convert variable to int\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function addMonth(month, checkDate) {\n\tif (month < 0)\n\t\t// if the number was negative, send to subMonth method\n\t\treturn this.subMonth(Math.abs(month));\n\tmonth = +month; // plus sign before a variable, convert variable to int\n\n\tconst monthToStartNewYear = 12 - this.d.month + 1; // monthToStartNewYear -> Number of month to start of new year\n\tif (monthToStartNewYear > month) {\n\t\tthis.d.month += month;\n\t} else {\n\t\tthis.addYear(1, false);\n\t\tthis.d.month = 1;\n\t\tmonth -= monthToStartNewYear;\n\t\twhile (month >= 12) {\n\t\t\tmonth -= 12;\n\t\t\tthis.addYear(1, false);\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month += month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function addDay(day) {\n\tif (day < 0)\n\t\t// if the number was negative, send to subDay method\n\t\treturn this.subDay(Math.abs(day));\n\tday = +day; //plus sign before a variable, convert variable to int\n\n\tconst dayToStartNextMonth = this.getDaysInMonth() - this.d.date + 1; // dayToStartNextMonth -> Number of day to start of next month\n\tif (dayToStartNextMonth > day) {\n\t\tthis.d.date += day;\n\t} else {\n\t\tthis.addMonth(1, false);\n\t\tthis.d.date = 1;\n\t\tday -= dayToStartNextMonth;\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.addMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tif (day != 0) {\n\t\t\tthis.d.date += day;\n\t\t}\n\t}\n\n\treturn this;\n}\n","export function addQuarter(quarter, checkDate) {\n\t// if the number was negative, send to subQuarter method\n\tif (quarter < 0) return this.subQuarter(Math.abs(quarter));\n\treturn this.addMonth(+quarter * 3, checkDate);\n}\n","export function addWeek(week, checkDate) {\n\t// if the number was negative, send to subWeek method\n\tif (week < 0) return this.subWeek(Math.abs(week));\n\treturn this.addDay(+week * 7, checkDate);\n}\n","export function addHour(hour) {\n\tif (hour < 0)\n\t\t// if the number was negative, send to subHour method\n\t\treturn this.subHour(Math.abs(hour));\n\thour = +hour; //plus sign before a variable, convert variable to int\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.addDay(1, false);\n\t}\n\tconst hourToNextDay = 24 - this.d.hour; // hourToNextDay -> Number of hour to start of next day\n\tif (hour >= hourToNextDay) {\n\t\tthis.addDay(1, false);\n\t\thour -= hourToNextDay;\n\t\tthis.d.hour = hour;\n\t} else this.d.hour += hour;\n\n\treturn this;\n}\n","export function addMinute(minute) {\n\tif (minute < 0)\n\t\t// if the number was negative, send to subMinute method\n\t\treturn this.subMinute(Math.abs(minute));\n\tminute = +minute; //plus sign before a variable, convert variable to int\n\twhile (minute >= 60) {\n\t\tthis.addHour(1, false);\n\t\tminute -= 60;\n\t}\n\tconst minuteToNextHour = 60 - this.d.minute; // minuteToNextHour -> Number of minute to start of next hour\n\tif (minute >= minuteToNextHour) {\n\t\tthis.addHour(1, false);\n\t\tminute -= minuteToNextHour;\n\t\tthis.d.minute = minute;\n\t} else this.d.minute += minute;\n\n\treturn this;\n}\n","export function addSecond(second) {\n\tif (second < 0)\n\t\t// if the number was negative, send to subSecond method\n\t\treturn this.subSecond(Math.abs(second));\n\tsecond = +second; //plus sign before a variable, convert variable to int\n\twhile (second >= 60) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= 60;\n\t}\n\tconst secondToNextMinute = 60 - this.d.second; // secondToNextMinute -> Number of second to start of next Minute\n\tif (second >= secondToNextMinute) {\n\t\tthis.addMinute(1, false);\n\t\tsecond -= secondToNextMinute;\n\t\tthis.d.second = second;\n\t} else this.d.second += second;\n\n\treturn this;\n}\n","export function addMillisecond(millisecond) {\n\tif (millisecond < 0)\n\t\t// if the number was negative, send to subMillisecond method\n\t\treturn this.subMillisecond(Math.abs(millisecond));\n\tmillisecond = +millisecond; //plus sign before a variable, convert variable to int\n\twhile (millisecond >= 1000) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= 1000;\n\t}\n\tconst millisecondToNextSecond = 1000 - this.d.millisecond; // millisecondToNextSecond -> Number of milllisecond to start of next second\n\tif (millisecond >= millisecondToNextSecond) {\n\t\tthis.addSecond(1, false);\n\t\tmillisecond -= millisecondToNextSecond;\n\t\tthis.d.millisecond = millisecond;\n\t} else this.d.millisecond += millisecond;\n\n\treturn this;\n}\n","export function subYear(year, checkDate) {\n\tthis.d.year -= Math.abs(year);\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function subMonth(month, checkDate) {\n\tmonth = Math.abs(month); //plus sign before a variable, convert variable to int\n\tconst pastMonth = this.d.month; //pastMonth -> Number of month that is past\n\tif (pastMonth > month) {\n\t\tthis.d.month -= month;\n\t} else {\n\t\tthis.subYear(1, false);\n\t\tthis.d.month = 12;\n\t\tmonth -= pastMonth;\n\t\twhile (month >= 12) {\n\t\t\tthis.subYear(1, false);\n\t\t\tmonth -= 12;\n\t\t}\n\t\tif (month != 0) {\n\t\t\tthis.d.month -= month;\n\t\t}\n\t}\n\n\twhile (checkDate && !this.isValidDate()) this.subDay(1, false);\n\treturn this;\n}\n","export function subDay(day) {\n\tday = Math.abs(day);\n\tlet pastDays = this.d.date; // pastDays -> Number of days that is past\n\tif (pastDays > day) {\n\t\tthis.d.date -= day;\n\t} else {\n\t\tthis.subMonth(1, false);\n\t\tlet daysInMonth = this.getDaysInMonth();\n\t\tthis.d.date = daysInMonth;\n\t\tday -= pastDays;\n\t\twhile (day >= daysInMonth) {\n\t\t\tday -= daysInMonth;\n\t\t\tthis.subMonth(1, false);\n\t\t\tdaysInMonth = this.getDaysInMonth();\n\t\t}\n\t\tthis.d.date = daysInMonth - day;\n\t}\n\n\treturn this;\n}\n","export function subQuarter(quarter, checkDate) {\n\tquarter = Math.abs(quarter);\n\treturn this.subMonth(quarter * 3, checkDate);\n}\n","export function subWeek(week, checkDate) {\n\tweek = Math.abs(week);\n\treturn this.subDay(week * 7, checkDate);\n}\n","export function subHour(hour) {\n\thour = Math.abs(hour);\n\twhile (hour >= 24) {\n\t\thour -= 24;\n\t\tthis.subDay(1, false);\n\t}\n\tconst pastHours = this.d.hour; // pastHours -> Number of hours that is past\n\tif (hour > pastHours) {\n\t\tthis.subDay(1, false);\n\t\thour -= pastHours;\n\t\tthis.d.hour = 24 - hour;\n\t} else this.d.hour -= hour;\n\n\treturn this;\n}\n","export function subMinute(minute) {\n\tminute = Math.abs(minute);\n\twhile (minute >= 60) {\n\t\tminute -= 60;\n\t\tthis.subHour(1, false);\n\t}\n\tconst pastMinute = this.d.minute; // pastMinutes -> Number of minutes that is past\n\tif (minute > pastMinute) {\n\t\tthis.subHour(1, false);\n\t\tminute -= pastMinute;\n\t\tthis.d.minute = 60 - minute;\n\t} else this.d.minute -= minute;\n\n\treturn this;\n}\n","export function subSecond(second) {\n\tsecond = Math.abs(second);\n\twhile (second >= 60) {\n\t\tsecond -= 60;\n\t\tthis.subMinute(1, false);\n\t}\n\tconst pastSeconds = this.d.second; // pastSeconds -> Number of seconds that is past\n\tif (second > pastSeconds) {\n\t\tthis.subMinute(1, false);\n\t\tsecond -= pastSeconds;\n\t\tthis.d.second = 60 - second;\n\t} else this.d.second -= second;\n\n\treturn this;\n}\n","export function subMillisecond(millisecond) {\n\tmillisecond = Math.abs(millisecond);\n\twhile (millisecond >= 1000) {\n\t\tmillisecond -= 1000;\n\t\tthis.subSecond(1, false);\n\t}\n\tconst pastMilliseconds = this.d.millisecond; // pastMilliseconds -> Number of milliseconds that is past\n\tif (millisecond > pastMilliseconds) {\n\t\tthis.subSecond(1, false);\n\t\tmillisecond -= pastMilliseconds;\n\t\tthis.d.millisecond = 1000 - millisecond;\n\t} else this.d.millisecond -= millisecond;\n\n\treturn this;\n}\n","import { REGEX, TIMETYPE } from \"../utils\";\n\nconst jalali = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"j\")\n\t\t.replace(/datetime/gi, \"jYYYY/jMM/jDD HH:mm\")\n\t\t.replace(/date/gi, \"jYYYY/jMM/jDD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nconst gregorian = (format) => {\n\treturn format\n\t\t.replace(/\\?/g, \"\")\n\t\t.replace(/datetime/gi, \"YYYY-MM-DD HH:mm\")\n\t\t.replace(/date/gi, \"YYYY-MM-DD\")\n\t\t.replace(/time/gi, \"HH:mm\");\n};\n\nexport function toString(format) {\n\tconst rawTexts = [];\n\tformat = format.replace(REGEX[\"betweenBacktick\"], (_matched, text) => {\n\t\trawTexts.push(text);\n\t\treturn \"###\";\n\t});\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\tformat = jalali(format);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tformat = gregorian(format);\n\t}\n\tconst matchedFormats = format.match(REGEX[\"format\"]);\n\tlet dateString = \"\";\n\tfor (const i of matchedFormats) {\n\t\tdateString += format.substring(0, format.indexOf(i));\n\n\t\tif (i.search(/Y|y/) != -1) dateString += this.year(i);\n\t\telse if (i.search(/M/) != -1) dateString += this.month(i);\n\t\telse if (i.search(/Q/) != -1) dateString += this.quarter(i);\n\t\telse if (i.search(/D|d/) != -1) dateString += this.date(i);\n\t\telse if (i.search(/W|w/) != -1) dateString += this.week(i);\n\t\telse if (i.search(/H|h|k/) != -1) dateString += this.hour(i);\n\t\telse if (i.search(/m/) != -1) dateString += this.minute(i);\n\t\telse if (i.search(/s/) != -1) dateString += this.second(i);\n\t\telse if (i.search(/c|C/) != -1) dateString += this.millisecond(i);\n\t\telse if (i.search(/t/) != -1) dateString += this.timestamp();\n\t\telse if (i.search(/a|A/) != -1) dateString += TIMETYPE(this.d.hour, i);\n\n\t\tformat = format.substr(format.indexOf(i) + i.length);\n\t}\n\tdateString += format;\n\tfor (let i = 0; i < rawTexts.length; i++)\n\t\tdateString = dateString.replace(\"###\", rawTexts[i]);\n\treturn String(dateString);\n}\n","import { typesToArray } from \"../base\";\n\nexport function toArray() {\n\tif (!arguments.length) {\n\t\treturn Object.values(this.d);\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn [\n\t\tthis.year(formats[0]),\n\t\tthis.month(formats[1]),\n\t\tthis.date(formats[2]),\n\t\tthis.hour(formats[3]),\n\t\tthis.minute(formats[4]),\n\t\tthis.second(formats[5]),\n\t\tthis.millisecond(formats[6]),\n\t];\n}\n","import { typesToArray } from \"../base\";\n\nexport function toObject() {\n\tif (!arguments.length) {\n\t\treturn this.d;\n\t}\n\tconst formats = typesToArray(this.c, ...arguments);\n\treturn {\n\t\tyear: this.year(formats[0]),\n\t\tmonth: this.month(formats[1]),\n\t\tdate: this.date(formats[2]),\n\t\thour: this.hour(formats[3]),\n\t\tminute: this.minute(formats[4]),\n\t\tsecond: this.second(formats[5]),\n\t\tmillisecond: this.millisecond(formats[6]),\n\t};\n}\n","import { jtg } from \"../base\";\n\nconst jalali = (date) => {\n\treturn jtg(...date);\n};\n\nconst gregorian = (date) => {\n\t--date[1];\n\treturn new Date(...date);\n};\n\nexport function toDate() {\n\tswitch (this.c[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(this.toArray());\n\t\tdefault:\n\t\t\treturn gregorian(this.toArray());\n\t}\n}\n","import { typesToArray } from \"../base\";\n\nexport function diff(date, unit, addOne) {\n\tdate = typesToArray(this.c, date);\n\tif (!this.isValid(...date)) return \"تاریخ نامعتبر\";\n\tlet result =\n\t\tthis.timestamp() -\n\t\tthis.clone()\n\t\t\t.parse(...date)\n\t\t\t.timestamp();\n\tswitch (unit) {\n\t\tcase \"y\":\n\t\tcase \"year\":\n\t\tcase \"years\":\n\t\t\tresult = this.d.year - date[0];\n\t\t\tbreak;\n\t\tcase \"M\":\n\t\tcase \"month\":\n\t\tcase \"months\":\n\t\t\tresult = this.d.year * 12 + this.d.month - (+date[0] * 12 + +date[1]);\n\t\t\tbreak;\n\t\tcase \"d\":\n\t\tcase \"date\":\n\t\tcase \"day\":\n\t\tcase \"days\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60 / 24);\n\t\t\tbreak;\n\t\tcase \"h\":\n\t\tcase \"hour\":\n\t\tcase \"hours\":\n\t\t\tresult = Math.ceil(result / 1000 / 60 / 60);\n\t\t\tbreak;\n\t\tcase \"m\":\n\t\tcase \"minute\":\n\t\tcase \"minutes\":\n\t\t\tresult = Math.ceil(result / 1000 / 60);\n\t\t\tbreak;\n\t\tcase \"s\":\n\t\tcase \"second\":\n\t\tcase \"seconds\":\n\t\t\tresult = Math.ceil(result / 1000);\n\t\t\tbreak;\n\t\tcase \"ms\":\n\t\tcase \"millisecond\":\n\t\tcase \"milliseconds\":\n\t}\n\treturn addOne ? result + (result >= 0 ? 1 : -1) : result;\n}\n","export function diffForHumans(date, suffix) {\n\tlet result = this.diff(date, \"s\");\n\tif (typeof result == \"string\") return \"تاریخ نامعتبر\";\n\n\tconst prefix = suffix && (result > 0 ? \"آینده\" : \"پیش\");\n\tresult = Math.abs(result);\n\n\tif (result == 0) return \"هم اکنون\";\n\telse if (result < 45) result = \"لحظات\";\n\telse if ((result /= 60) < 45)\n\t\t// divide by 60, for getting minute\n\t\tresult = Math.round(result) + \" \" + \"دقیقه\";\n\telse if ((result /= 60) < 23.5)\n\t\t// divide by 60, for getting hour\n\t\tresult = Math.round(result) + \" \" + \"ساعت\";\n\telse if ((result /= 24) < 26)\n\t\t// divide by 24, for getting day\n\t\tresult = Math.round(result) + \" \" + \"روز\";\n\telse if (result < 320) result = Math.round(result / 30) + \" \" + \"ماه\";\n\telse result = Math.round(result / 365) + \" \" + \"سال\";\n\treturn result + (suffix ? \" \" + prefix : \"\");\n}\n","////////////////////---------- Are You Ready? ----------////////////////////\n////////////////////------------- Let's Go -------------////////////////////\n////////////////////---- Read Comments And Enjoy It ----////////////////////\n\n////////////////////------------- ATTENTION -------------////////////////////\n// In the first, I'm must say, in the all of the project, //\n// g means Gregorian and j means Jalali //\n/////////////////////////////////////////////////////////////////////////////\nimport { warn, compare, mathOperation } from \"./base\";\n\nimport {\n\tnow,\n\tparse,\n\tclone,\n\tfromJalali,\n\tfromGregorian,\n\tcalendar as calendarMethod,\n} from \"./create\";\n\nimport {\n\tyear as yearMethod,\n\tquarter as quarterMethod,\n\tmonth as monthMethod,\n\tweek as weekMethod,\n\tdate as dateMethod,\n\thour as hourMethod,\n\tminute as minuteMethod,\n\tsecond as secondMethod,\n\tmillisecond as millisecondMethod,\n\ttimestamp,\n\tgetDaysInMonth,\n\tgetWeeksInYear,\n\tstartOf,\n\tendOf,\n\ttime,\n} from \"./set-get\";\n\nimport {\n\taddYear,\n\taddQuarter,\n\taddMonth,\n\taddWeek,\n\taddDay,\n\taddHour,\n\taddMinute,\n\taddSecond,\n\taddMillisecond,\n\tsubYear,\n\tsubQuarter,\n\tsubMonth,\n\tsubWeek,\n\tsubDay,\n\tsubHour,\n\tsubMinute,\n\tsubSecond,\n\tsubMillisecond,\n} from \"./add-sub\";\n\nimport { toString, toArray, toObject, toDate } from \"./conversion\";\n\nimport {\n\tisLeapYear,\n\tisDate,\n\tisPersianDate,\n\tisValidDate,\n\tisValidTime,\n\tisValid,\n\tisSame,\n\tisBetween,\n} from \"./comparison\";\n\nimport { diff, diffForHumans } from \"./diff\";\n\n/**\n * A Date library for working with persian date\n * @class\n * @param {Date|Array|Null|Object|String} date - the date that convert to persian date\n * @param {String} [calendar='jalali'] - the calendar\n */\nconst PersianDate = function (dateVal, calendarVal) {\n\t\"use strict\";\n\n\t/**\n\t * keeps the date and time\n\t * @type {Object}\n\t * @property {Number} year - the year of date\n\t * @property {Number} month - the month of date\n\t * @property {Number} date - the day of month of date\n\t * @property {Number} hour - the hour of time\n\t * @property {Number} minute - the minute of time\n\t * @property {Number} second - the second of time\n\t * @property {Number} millisecond - the millisecond of time\n\t * @property {Number} gregorian - the gregorian date\n\t */\n\tthis.d = {};\n\n\t/**\n\t * the calendar type\n\t * @type {String}\n\t * @default \"jalali\"\n\t * @example jalali | gregorian\n\t */\n\tthis.c = \"jalali\";\n\n\t////////////////////--------- create & parse ---------/////////////////////\n\n\t/**\n\t * make current date in persian calendar\n\t * @returns {PersianDate} make current date and return class\n\t */\n\tPersianDate.prototype.now = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn now.call(this);\n\t};\n\n\t/**\n\t * set persian date from Gregorian date\n\t * @deprecated\n\t * @param {...Number|Date|Array|Null} date - the date that convert to persian date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate|String} if date invalid return class with error property with error property\n\t */\n\tPersianDate.prototype.setDate = function () {\n\t\twarn(\n\t\t\t'\"setDate\" function is deprecated! use \"fromGregorian\" function instead.\\n' +\n\t\t\t\t\"https://alireza-ab.ir/persian-date/create-and-parse#from-gregorian-date\"\n\t\t);\n\t\treturn this.fromGregorian(...arguments);\n\t};\n\n\t/**\n\t * convert a jalali or gregorian date to PersianDate instance\n\t * @param {String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.parse = function () {\n\t\treturn parse.call(this, ...arguments);\n\t};\n\n\t/**\n\t * get clone of this date\n\t * @since 1.1.0\n\t * @returns {PersianDate} returns the clone of this date\n\t */\n\tPersianDate.prototype.clone = function () {\n\t\treturn clone.call(this);\n\t};\n\n\t/**\n\t * convert a jalali date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromJalali = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromJalali.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be string of date or array of date or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {PersianDate} return class with persian date\n\t * @throws {PersianDate} if date invalid return class with error\n\t */\n\tPersianDate.prototype.fromGregorian = function () {\n\t\tif (this.error) {\n\t\t\tdelete this.error;\n\t\t\tthis.d = {};\n\t\t}\n\t\treturn fromGregorian.call(this, ...arguments);\n\t};\n\n\t/**\n\t * convert a gregorian date to PersianDate instance\n\t * @since 2.0.0\n\t * @param {\"j\"|\"jalali\"|\"g\"|\"gregorian\"} calendar - the calendar\n\t * @returns {PersianDate} return class with persian date\n\t */\n\tPersianDate.prototype.calendar = function (calendar) {\n\t\treturn calendarMethod.call(this, calendar);\n\t};\n\n\t////////////////////--------- set & get ---------/////////////////////\n\n\t/**\n\t * get or set year\n\t * @param {Null|Number|String} [format=jYYYY] - a number for set the year or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the year, returns class,\n\t * else returns a number or string from year\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.year = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn yearMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set month\n\t * @param {Null|Number|String} [format=jM] - a number for set the month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the month, returns class,\n\t * else returns a number or string from month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.month = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn monthMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set day in month\n\t * @param {Null|Number|String} [format=jD] - a number for set the day in month or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the day, returns class,\n\t * else returns a number or string from day\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.date = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn dateMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set quarter\n\t * @param {Null|Number|String} [format=jQ] - a number for set the quarter or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the quarter, returns class,\n\t * else returns a number or string from quarter\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.quarter = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn quarterMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set week\n\t * @param {Null|Number|String} [format=jw] - a number for set the week or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the week, returns class,\n\t * else returns a number or string from week\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.week = function (format = \"\") {\n\t\tif (this.error) return this.error;\n\t\treturn weekMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set hour\n\t * @param {Null|Number|String} [format=H] - a number for set the hour or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the hour, returns class,\n\t * else returns a number or string from hour\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.hour = function (format = \"H\") {\n\t\tif (this.error) return this.error;\n\t\treturn hourMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set minute\n\t * @param {Null|Number|String} [format=m] - a number for set the minute or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the minute, returns class,\n\t * else returns a number or string from minute\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.minute = function (format = \"m\") {\n\t\tif (this.error) return this.error;\n\t\treturn minuteMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set second\n\t * @param {Null|Number|String} [format=s] - a number for set the second or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the second, returns class,\n\t * else returns a number or string from second\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.second = function (format = \"s\") {\n\t\tif (this.error) return this.error;\n\t\treturn secondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get or set millisecond\n\t * @param {Null|Number|String} [format=c] - a number for set the millisecond or a format for formatting\n\t * @returns {PersianDate|String|Number} if set the millisecond, returns class,\n\t * else returns a number or string from millisecond\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.millisecond = function (format = \"c\") {\n\t\tif (this.error) return this.error;\n\t\treturn millisecondMethod.call(this, format);\n\t};\n\n\t/**\n\t * get timestamp or set date from timestamp\n\t * @param {Null|Number|String} value - a number for set the millisecond\n\t * @returns {PersianDate|Number} if set the timestamp, returns class,\n\t * else returns timestamp (number)\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.timestamp = function (value) {\n\t\tif (this.error) return this.error;\n\t\treturn timestamp.call(this, value);\n\t};\n\n\tPersianDate.prototype.valueOf = function () {\n\t\treturn this.timestamp();\n\t};\n\n\t/**\n\t * returns number of days in month\n\t * @param {?Number} year - year of date that returns number of days in month\n\t * @param {?Number} month - month of date that returns number of days in month\n\t * @returns {Number} number of days in month\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.getDaysInMonth = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month\n\t) {\n\t\tif (this.error) return this.error;\n\t\treturn getDaysInMonth(this.c, year, month);\n\t};\n\n\t/**\n\t * return number of weeks in year\n\t * @since 2.0.0\n\t * @param {Number|String} year - the year\n\t * @returns {Number} number of weeks in year\n\t */\n\tPersianDate.prototype.getWeeksInYear = function (year = this.d.year) {\n\t\tif (this.error) return this.error;\n\t\treturn getWeeksInYear.call(this, year);\n\t};\n\n\t/**\n\t * change the date to start of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.startOf = function (unit = \"year\") {\n\t\treturn startOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the date to end of the year or month or ...\n\t * @since 2.0.0\n\t * @param {String} unit - the unit of time\n\t * @returns {PersianDate} return the class with new date or time\n\t */\n\tPersianDate.prototype.endOf = function (unit = \"year\") {\n\t\treturn endOf.call(this, unit);\n\t};\n\n\t/**\n\t * change the time\n\t * @since 2.3.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} time - the new time\n\t * @param {Null|String|Number} time.h - hour of date\n\t * @param {Null|String|Number} time.hour - hour of date\n\t * @param {Null|String|Number} time.hours - hour of date\n\t * @param {Null|String|Number} time.m - minute of date\n\t * @param {Null|String|Number} time.minute - minute of date\n\t * @param {Null|String|Number} time.minutes - minute of date\n\t * @param {Null|String|Number} time.s - second of date\n\t * @param {Null|String|Number} time.second - second of date\n\t * @param {Null|String|Number} time.seconds - second of date\n\t * @param {Null|String|Number} time.ms - millisecond of date\n\t * @param {Null|String|Number} time.millisecond - millisecond of date\n\t * @param {Null|String|Number} time.milliseconds - millisecond of date\n\t * @returns {PersianDate|Array} if set the time, returns class,\n\t * else returns an array of time\n\t * @throws {String} if time invalid return error text\n\t */\n\tPersianDate.prototype.time = function () {\n\t\tif (this.error) return this.error;\n\t\treturn time.call(this, ...arguments);\n\t};\n\n\t////////////////////--------- add & sub ---------/////////////////////\n\n\t/**\n\t * add to year\n\t * @param {?Number|String} [year=1] - a number for add with year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn addYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * add to month\n\t * @param {?Number|String} [month=1] - a number for add with month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn addMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * add to day\n\t * @param {?Number|String} [day=1] - a number for add with day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn addDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * add to quarter\n\t * @param {?Number|String} [quarter=1] - a number for add with quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn addQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * add to week\n\t * @param {?Number|String} [week=1] - a number for add with week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn addWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * add to hour\n\t * @param {?Number|String} [hour=1] - a number for add with hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn addHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * add to minute\n\t * @param {?Number|String} [minute=1] - a number for add with minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn addMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * add to second\n\t * @param {?Number|String} [second=1] - a number for add with second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn addSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * add to millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for add with millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.addMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn addMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t/**\n\t * subtract from year\n\t * @param {?Number|String} [year=1] - a number for subtract from year\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subYear = function (year = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!year) return this;\n\t\treturn subYear.call(this, year, checkDate);\n\t};\n\n\t/**\n\t * subtract from month\n\t * @param {?Number|String} [month=1] - a number for subtract from month\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMonth = function (month = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!month) return this;\n\t\treturn subMonth.call(this, month, checkDate);\n\t};\n\n\t/**\n\t * subtract from day\n\t * @param {?Number|String} [day=1] - a number for subtract from day\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subDay = function (day = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!day) return this;\n\t\treturn subDay.call(this, day, checkDate);\n\t};\n\n\t/**\n\t * subtract from quarter\n\t * @param {?Number|String} [quarter=1] - a number for subtract from quarter\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subQuarter = function (quarter = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!quarter) return this;\n\t\treturn subQuarter.call(this, quarter, checkDate);\n\t};\n\n\t/**\n\t * subtract from week\n\t * @param {?Number|String} [week=1] - a number for subtract from week\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subWeek = function (week = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!week) return this;\n\t\treturn subWeek.call(this, week, checkDate);\n\t};\n\n\t/**\n\t * subtract from hour\n\t * @param {?Number|String} [hour=1] - a number for subtract from hour\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subHour = function (hour = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!hour) return this;\n\t\treturn subHour.call(this, hour, checkDate);\n\t};\n\n\t/**\n\t * subtract from minute\n\t * @param {?Number|String} [minute=1] - a number for subtract from minute\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMinute = function (minute = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!minute) return this;\n\t\treturn subMinute.call(this, minute, checkDate);\n\t};\n\n\t/**\n\t * subtract from second\n\t * @param {?Number|String} [second=1] - a number for subtract from second\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subSecond = function (second = 1, checkDate = true) {\n\t\tif (this.error) return this.error;\n\t\tif (!second) return this;\n\t\treturn subSecond.call(this, second, checkDate);\n\t};\n\n\t/**\n\t * subtract from millisecond\n\t * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond\n\t * @param {?Boolean} checkDate checks the result that the date is valid,\n\t * If not valid, it will be deducted from the day to be valid\n\t * @returns {PersianDate} return class with new date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.subMillisecond = function (\n\t\tmillisecond = 1,\n\t\tcheckDate = true\n\t) {\n\t\tif (this.error) return this.error;\n\t\tif (!millisecond) return this;\n\t\treturn subMillisecond.call(this, millisecond, checkDate);\n\t};\n\n\t////////////////////--------- conversion ---------/////////////////////\n\n\t/**\n\t * returns date as string with specify format\n\t * @param {?String} [format=date] - formatting date to string\n\t * @returns {String} date string\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toString = function (format = \"date\") {\n\t\tif (this.error) return this.error;\n\t\treturn toString.call(this, format);\n\t};\n\n\t/**\n\t * return the array of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return array of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toArray = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toArray.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the object of PersianDate\n\t * @since 1.3.0\n\t * @param {String|Array|Object|Number} yearForamt - this param must be string or array or Object from date or year\n\t * @param {String|Number} yearForamt.y - year format\n\t * @param {Null|String|Number} yearForamt.year - year format\n\t * @param {Null|String|Number} yearForamt.years - year format\n\t * @param {Null|String|Number} yearForamt.M - month format\n\t * @param {Null|String|Number} yearForamt.month - month format\n\t * @param {Null|String|Number} yearForamt.months - month format\n\t * @param {Null|String|Number} yearForamt.d - day format\n\t * @param {Null|String|Number} yearForamt.day - day format\n\t * @param {Null|String|Number} yearForamt.days - day format\n\t * @param {Null|String|Number} yearForamt.date - day format\n\t * @param {Null|String|Number} yearForamt.h - hour format\n\t * @param {Null|String|Number} yearForamt.hour - hour format\n\t * @param {Null|String|Number} yearForamt.hours - hour format\n\t * @param {Null|String|Number} yearForamt.m - minute format\n\t * @param {Null|String|Number} yearForamt.minute - minute format\n\t * @param {Null|String|Number} yearForamt.minutes - minute format\n\t * @param {Null|String|Number} yearForamt.s - second format\n\t * @param {Null|String|Number} yearForamt.second - second format\n\t * @param {Null|String|Number} yearForamt.seconds - second format\n\t * @param {Null|String|Number} yearForamt.ms - millisecond format\n\t * @param {Null|String|Number} yearForamt.millisecond - millisecond format\n\t * @param {Null|String|Number} yearForamt.milliseconds - millisecond format\n\t * @param {Null|Number|String} monthFormat month format\n\t * @param {Null|Number|String} dayFormat day format\n\t * @param {Null|Number|String} hourFormat hour format\n\t * @param {Null|Number|String} minuteFormat minute format\n\t * @param {Null|Number|String} secondFormat second format\n\t * @param {Null|Number|String} millisecondFormat millisecond format\n\t * @returns {Object} if date valid, return Object of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toObject = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toObject.call(this, ...arguments);\n\t};\n\n\t/**\n\t * return the Date instance of PersianDate\n\t * @since 2.0.0\n\t * @returns {Date} if date valid, return Date instance of date\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.toDate = function () {\n\t\tif (this.error) return this.error;\n\t\treturn toDate.call(this);\n\t};\n\n\t////////////////////--------- diff ---------/////////////////////\n\n\t/**\n\t * get the diffrence between two date\n\t * @since 1.4.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {String} unit - the unit of the measurment\n\t * @param {Boolean} addOne - add one day to result\n\t * @returns {Number} diffrence\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diff = function (date, unit, addOne = false) {\n\t\tif (this.error) return this.error;\n\t\treturn diff.call(this, date, unit, addOne);\n\t};\n\n\t/**\n\t * get the diffrence between two date in a human-readable format\n\t * @since 2.0.0\n\t * @param {PersianDate|Date|String|Array|Object} date - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} date.y - year of date\n\t * @param {Null|String|Number} date.year - year of date\n\t * @param {Null|String|Number} date.years - year of date\n\t * @param {Null|String|Number} date.M - month of date\n\t * @param {Null|String|Number} date.month - month of date\n\t * @param {Null|String|Number} date.months - month of date\n\t * @param {Null|String|Number} date.d - day of date\n\t * @param {Null|String|Number} date.day - day of date\n\t * @param {Null|String|Number} date.days - day of date\n\t * @param {Null|String|Number} date.date - day of date\n\t * @param {Null|String|Number} date.h - hour of date\n\t * @param {Null|String|Number} date.hour - hour of date\n\t * @param {Null|String|Number} date.hours - hour of date\n\t * @param {Null|String|Number} date.m - minute of date\n\t * @param {Null|String|Number} date.minute - minute of date\n\t * @param {Null|String|Number} date.minutes - minute of date\n\t * @param {Null|String|Number} date.s - second of date\n\t * @param {Null|String|Number} date.second - second of date\n\t * @param {Null|String|Number} date.seconds - second of date\n\t * @param {Null|String|Number} date.ms - millisecond of date\n\t * @param {Null|String|Number} date.millisecond - millisecond of date\n\t * @param {Null|String|Number} date.milliseconds - millisecond of date\n\t * @param {Boolean} suffix - add suffix or not\n\t * @returns {String} if date valid, return diff human-readable format\n\t * @throws {String} if date invalid return error message\n\t */\n\tPersianDate.prototype.diffForHumans = function (date, suffix = true) {\n\t\tif (this.error) return this.error;\n\t\treturn diffForHumans.call(this, date, suffix);\n\t};\n\n\t////////////////////--------- comparison ---------/////////////////////\n\n\t/**\n\t * returns minimum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return minimum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.min = function () {\n\t\treturn mathOperation.call(this, arguments, \"min\");\n\t};\n\n\t/**\n\t * returns maximum date in arguments that passed\n\t * @since 1.4.0\n\t * @param {...String|PersianDate|Date|Array|Object} date - this parameters must be string or array or Object from date;\n\t * @param {String} date.y - year of date\n\t * @param {Null|String} date.year - year of date\n\t * @param {Null|String} date.years - year of date\n\t * @param {Null|String} date.M - month of date\n\t * @param {Null|String} date.month - month of date\n\t * @param {Null|String} date.months - month of date\n\t * @param {Null|String} date.d - day of date\n\t * @param {Null|String} date.day - day of date\n\t * @param {Null|String} date.days - day of date\n\t * @param {Null|String} date.date - day of date\n\t * @param {Null|String} date.h - hour of date\n\t * @param {Null|String} date.hour - hour of date\n\t * @param {Null|String} date.hours - hour of date\n\t * @param {Null|String} date.m - minute of date\n\t * @param {Null|String} date.minute - minute of date\n\t * @param {Null|String} date.minutes - minute of date\n\t * @param {Null|String} date.s - second of date\n\t * @param {Null|String} date.second - second of date\n\t * @param {Null|String} date.seconds - second of date\n\t * @param {Null|String} date.ms - millisecond of date\n\t * @param {Null|String} date.millisecond - millisecond of date\n\t * @param {Null|String} date.milliseconds - millisecond of date\n\t * @returns {*} return maximum date\n\t * @throws {false} if parameters not send or parameters is invalid, return false\n\t */\n\tPersianDate.prototype.max = function () {\n\t\treturn mathOperation.call(this, arguments, \"max\");\n\t};\n\n\t/**\n\t * receives year and determined that is leap year or not\n\t * @param {?Number} year - the year to be determined is a leap or not\n\t * @returns {Boolean} if is leap year, returns true\n\t */\n\tPersianDate.prototype.isLeapYear = function (year = this.d.year) {\n\t\tif (this.error) return false;\n\t\treturn isLeapYear(this.c, year);\n\t};\n\n\t/**\n\t * checks the persian date and time\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid, returns true\n\t */\n\tPersianDate.prototype.isValid = function (\n\t\tyear,\n\t\tmonth,\n\t\tday,\n\t\thour,\n\t\tminute,\n\t\tsecond,\n\t\tmillisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn (\n\t\t\tthis.isValidDate(year, month, day) &&\n\t\t\tthis.isValidTime(hour, minute, second, millisecond)\n\t\t);\n\t};\n\n\t/**\n\t * checks the persian date\n\t * @param {?Number} year - year of date that will be checked\n\t * @param {?Number} month - month of date that will be checked\n\t * @param {?Number} day - day of date that will be checked\n\t * @returns {Boolean} if is valid date, returns true\n\t */\n\tPersianDate.prototype.isValidDate = function (\n\t\tyear = this.d.year,\n\t\tmonth = this.d.month,\n\t\tday = this.d.date\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidDate(this.c, year, month, day);\n\t};\n\n\t/**\n\t * checks the time\n\t * @param {?Number} hour - hour of date that will be checked\n\t * @param {?Number} minute - minute of date that will be checked\n\t * @param {?Number} second - second of date that will be checked\n\t * @param {?Number} millisecond - millisecond of date that will be checked\n\t * @returns {Boolean} if is valid time, returns true\n\t */\n\tPersianDate.prototype.isValidTime = function (\n\t\thour = this.d.hour,\n\t\tminute = this.d.minute,\n\t\tsecond = this.d.second,\n\t\tmillisecond = this.d.millisecond\n\t) {\n\t\tif (this.error) return false;\n\t\treturn isValidTime(hour, minute, second, millisecond);\n\t};\n\n\t/**\n\t * checks this date is the same to another date\n\t * @since 1.1.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSame = function () {\n\t\tif (this.error) return false;\n\t\treturn isSame.call(this, ...arguments);\n\t};\n\n\t/**\n\t * checks this date is before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<\");\n\t};\n\n\t/**\n\t * checks this date is after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">\");\n\t};\n\n\t/**\n\t * checks this date is same or before the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrBefore = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \"<=\");\n\t};\n\n\t/**\n\t * checks this date is same or after the another date\n\t * @since 1.2.0\n\t * @param {PersianDate|Date|String|Array|Object|Number} year - this param must be PersianDate or string or array or Object from date or year\n\t * @param {String|Number} year.y - year of date\n\t * @param {Null|String|Number} year.year - year of date\n\t * @param {Null|String|Number} year.years - year of date\n\t * @param {Null|String|Number} year.M - month of date\n\t * @param {Null|String|Number} year.month - month of date\n\t * @param {Null|String|Number} year.months - month of date\n\t * @param {Null|String|Number} year.d - day of date\n\t * @param {Null|String|Number} year.day - day of date\n\t * @param {Null|String|Number} year.days - day of date\n\t * @param {Null|String|Number} year.date - day of date\n\t * @param {Null|String|Number} year.h - hour of date\n\t * @param {Null|String|Number} year.hour - hour of date\n\t * @param {Null|String|Number} year.hours - hour of date\n\t * @param {Null|String|Number} year.m - minute of date\n\t * @param {Null|String|Number} year.minute - minute of date\n\t * @param {Null|String|Number} year.minutes - minute of date\n\t * @param {Null|String|Number} year.s - second of date\n\t * @param {Null|String|Number} year.second - second of date\n\t * @param {Null|String|Number} year.seconds - second of date\n\t * @param {Null|String|Number} year.ms - millisecond of date\n\t * @param {Null|String|Number} year.millisecond - millisecond of date\n\t * @param {Null|String|Number} year.milliseconds - millisecond of date\n\t * @param {Null|Number|String} month month of date\n\t * @param {Null|Number|String} day day of date\n\t * @param {Null|Number|String} hour hour of date\n\t * @param {Null|Number|String} minute minute of date\n\t * @param {Null|Number|String} second second of date\n\t * @param {Null|Number|String} millisecond millisecond of date\n\t * @returns {‌Boolean} if date valid, return true of false\n\t */\n\tPersianDate.prototype.isSameOrAfter = function () {\n\t\tif (this.error) return false;\n\t\treturn compare.call(this, arguments, \">=\");\n\t};\n\n\t/**\n\t * checks this date is between the another dates\n\t * @since 1.3.0\n\t * @param {PersianDate|Date|String|Array|Object} from - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} from.y - year of date\n\t * @param {Null|String|Number} from.year - year of date\n\t * @param {Null|String|Number} from.years - year of date\n\t * @param {Null|String|Number} from.M - month of date\n\t * @param {Null|String|Number} from.month - month of date\n\t * @param {Null|String|Number} from.months - month of date\n\t * @param {Null|String|Number} from.d - day of date\n\t * @param {Null|String|Number} from.day - day of date\n\t * @param {Null|String|Number} from.days - day of date\n\t * @param {Null|String|Number} from.date - day of date\n\t * @param {Null|String|Number} from.h - hour of date\n\t * @param {Null|String|Number} from.hour - hour of date\n\t * @param {Null|String|Number} from.hours - hour of date\n\t * @param {Null|String|Number} from.m - minute of date\n\t * @param {Null|String|Number} from.minute - minute of date\n\t * @param {Null|String|Number} from.minutes - minute of date\n\t * @param {Null|String|Number} from.s - second of date\n\t * @param {Null|String|Number} from.second - second of date\n\t * @param {Null|String|Number} from.seconds - second of date\n\t * @param {Null|String|Number} from.ms - millisecond of date\n\t * @param {Null|String|Number} from.millisecond - millisecond of date\n\t * @param {Null|String|Number} from.milliseconds - millisecond of date\n\t * @param {PersianDate|Date|String|Array|Object} to - this param must be PersianDate or string or array or Object from date\n\t * @param {String|Number} to.y - year of date\n\t * @param {Null|String|Number} to.year - year of date\n\t * @param {Null|String|Number} to.years - year of date\n\t * @param {Null|String|Number} to.M - month of date\n\t * @param {Null|String|Number} to.month - month of date\n\t * @param {Null|String|Number} to.months - month of date\n\t * @param {Null|String|Number} to.d - day of date\n\t * @param {Null|String|Number} to.day - day of date\n\t * @param {Null|String|Number} to.days - day of date\n\t * @param {Null|String|Number} to.date - day of date\n\t * @param {Null|String|Number} to.h - hour of date\n\t * @param {Null|String|Number} to.hour - hour of date\n\t * @param {Null|String|Number} to.hours - hour of date\n\t * @param {Null|String|Number} to.m - minute of date\n\t * @param {Null|String|Number} to.minute - minute of date\n\t * @param {Null|String|Number} to.minutes - minute of date\n\t * @param {Null|String|Number} to.s - second of date\n\t * @param {Null|String|Number} to.second - second of date\n\t * @param {Null|String|Number} to.seconds - second of date\n\t * @param {Null|String|Number} to.ms - millisecond of date\n\t * @param {Null|String|Number} to.millisecond - millisecond of date\n\t * @param {Null|String|Number} to.milliseconds - millisecond of date\n\t * @param {String} method - determines that consider the dates themselves\n\t * @returns {‌Boolean} if date valid, return true or false\n\t */\n\tPersianDate.prototype.isBetween = function (from, to, method = \"()\") {\n\t\tif (this.error) return false;\n\t\treturn isBetween.call(this, from, to, method);\n\t};\n\n\t/**\n\t * checks date is a native js Date object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a native js Date, return true\n\t */\n\tPersianDate.prototype.isDate = isDate;\n\n\t/**\n\t * checks date is a PersianDate object\n\t * @since 1.3.0\n\t * @param {*} date date that must be checked\n\t * @returns {Boolean} if date is a PersianDate, return true\n\t */\n\tPersianDate.prototype.isPersianDate = isPersianDate;\n\n\tif (calendarVal) this.calendar(calendarVal);\n\tif (dateVal) {\n\t\tif (calendarVal && calendarVal[0] == \"j\") this.fromJalali(dateVal);\n\t\telse this.fromGregorian(dateVal);\n\t} else this.now();\n};\n\n////////////////////--------- statics ---------/////////////////////\n\n/**\n * receives year and determined that is leap year or not\n * @static\n * @since 2.3.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {Number} year - the year to be determined is a leap or not\n * @returns {Boolean} if is leap year, returns true\n */\nPersianDate.isLeapYear = isLeapYear;\n\n/**\n * checks date is a native js Date object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a native js Date, return true\n */\nPersianDate.isDate = isDate;\n\n/**\n * checks date is a PersianDate object\n * @static\n * @since 2.3.0\n * @param {*} date date that must be checked\n * @returns {Boolean} if date is a PersianDate, return true\n */\nPersianDate.isPersianDate = isPersianDate;\n\n/**\n * checks the date and time\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid, returns true\n */\nPersianDate.isValid = isValid;\n\n/**\n * checks the date\n * @static\n * @since 2.4.0\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that will be checked\n * @param {?Number} month - month of date that will be checked\n * @param {?Number} day - day of date that will be checked\n * @returns {Boolean} if is valid date, returns true\n */\nPersianDate.isValidDate = isValidDate;\n\n/**\n * checks the time\n * @static\n * @since 2.4.0\n * @param {?Number} hour - hour of date that will be checked\n * @param {?Number} minute - minute of date that will be checked\n * @param {?Number} second - second of date that will be checked\n * @param {?Number} millisecond - millisecond of date that will be checked\n * @returns {Boolean} if is valid time, returns true\n */\nPersianDate.isValidTime = isValidTime;\n\n/**\n * returns number of days in month\n * @param {\"jalali\"|\"gregorian\"} calendar - the calendar\n * @param {?Number} year - year of date that returns number of days in month\n * @param {?Number} month - month of date that returns number of days in month\n * @returns {Number} number of days in month\n * @throws {String} if date invalid return error message\n */\nPersianDate.getDaysInMonth = getDaysInMonth;\n\n//TODO: add localization\n\nexport default PersianDate;\n\n////////////////////- Email: Alibeikialireza@gmail.com -////////////////////\n////////////////////--------- Have A Good Day ---------/////////////////////\n","import { typesToArray } from \"../base\";\n\n/**\n * compare the dates\n * @since 2.0.0\n * @param {PersianDate|Date|String|Array|Object} date - the date\n * @param {'>'|'>='|'<'|'<='|'=='} operator - the operator for compare\n * @returns {‌Boolean} if date valid, return true of false\n */\nexport const compare = function (date, operator) {\n\tdate = typesToArray(this.c, ...date);\n\n\tif (this.isValid(...date))\n\t\treturn eval(\n\t\t\t\"this.timestamp()\" + operator + \"this.clone().parse(...date).timestamp()\"\n\t\t);\n\treturn false;\n};\n","import { REGEX } from \"../utils\";\nimport { isDate } from \"../comparison\";\n\n/**\n * Gregorian to Jalali\n * @param {Null|Date|Number|String} [year=new Date()] - Gregorian year\n * @param {Null|Number|String} [month=1] - Gregorian month\n * @param {Null|Number|String} [day=1] - Gregorian day\n * @param {Null|Number|String} [hour=0] - Gregorian hour\n * @param {Null|Number|String} [minute=0] - Gregorian minute\n * @param {Null|Number|String} [second=0] - Gregorian second\n * @param {Null|Number|String} [millisecond=0] - Gregorian millisecond\n * @returns {Array} Jalali date\n */\nexport const gtj = (year, month, day, hour, minute, second, millisecond) => {\n\tlet date;\n\tif (!year) date = new Date();\n\telse if (isDate(year))\n\t\t// if the year was an instance of Date\n\t\tdate = year;\n\telse\n\t\tdate = new Date(\n\t\t\tREGEX[\"isNumeric\"].test(year) ? year : 0,\n\t\t\tREGEX[\"isNumeric\"].test(month) ? month : 0,\n\t\t\tREGEX[\"isNumeric\"].test(day) ? day : 1,\n\t\t\tREGEX[\"isNumeric\"].test(hour) ? hour : 0,\n\t\t\tREGEX[\"isNumeric\"].test(minute) ? minute : 0,\n\t\t\tREGEX[\"isNumeric\"].test(second) ? second : 0,\n\t\t\tREGEX[\"isNumeric\"].test(millisecond) ? millisecond : 0\n\t\t);\n\tday = date.getDate();\n\tmonth = date.getMonth() + 1; // Because the output of getMonth() start from zero, add one\n\tyear = date.getFullYear();\n\thour = date.getHours();\n\tminute = date.getMinutes();\n\tsecond = date.getSeconds();\n\tmillisecond = date.getMilliseconds();\n\tlet jYear, jMonth, jDay;\n\tconst pastDaysInMonth = [\n\t\t0,\n\t\t31,\n\t\t59,\n\t\t90,\n\t\t120,\n\t\t151,\n\t\t181,\n\t\t212,\n\t\t243,\n\t\t273,\n\t\t304,\n\t\t334,\n\t]; // Past days from the start of the year in each month\n\tif (year > 1600) {\n\t\tjYear = 979;\n\t\tyear -= 1600;\n\t} else {\n\t\tjYear = 0;\n\t\tyear -= 621;\n\t}\n\tconst newYear = month > 2 ? year + 1 : year;\n\tlet days =\n\t\t365 * year +\n\t\tparseInt((newYear + 3) / 4) -\n\t\tparseInt((newYear + 99) / 100) +\n\t\tparseInt((newYear + 399) / 400) -\n\t\t80 +\n\t\tday +\n\t\tpastDaysInMonth[month - 1];\n\tjYear += 33 * parseInt(days / 12053);\n\tdays %= 12053;\n\tjYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tjYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tjMonth =\n\t\tdays < 186 ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30);\n\tjDay = 1 + (days < 186 ? days % 31 : (days - 186) % 30);\n\treturn [jYear, jMonth, jDay, hour, minute, second, millisecond];\n};\n","import { REGEX } from \"../utils\";\nimport { isLeapYear } from \"../comparison\";\n\n/**\n * Jalali to Gregorian\n * @param {Null|Number|String} year - Jalali year\n * @param {Null|Number|String} [month=1] - Jalali month\n * @param {Null|Number|String} [day=1] - Jalali day\n * @param {Null|Number|String} [hour=0] - Jalali hour\n * @param {Null|Number|String} [minute=0] - Jalali minute\n * @param {Null|Number|String} [second=0] - Jalali second\n * @param {Null|Number|String} [millisecond=0] - Jalali millisecond\n * @returns {Date} Gregorian date\n */\nexport const jtg = (year, month, day, hour, minute, second, millisecond) => {\n\t//plus sign before a variable, convert variable to int\n\tyear = REGEX[\"isNumeric\"].test(year) ? +year : 1;\n\tmonth = REGEX[\"isNumeric\"].test(month) ? +month : 1;\n\tday = REGEX[\"isNumeric\"].test(day) ? +day : 1;\n\thour = REGEX[\"isNumeric\"].test(hour) ? +hour : 0;\n\tminute = REGEX[\"isNumeric\"].test(minute) ? +minute : 0;\n\tsecond = REGEX[\"isNumeric\"].test(second) ? +second : 0;\n\tmillisecond = REGEX[\"isNumeric\"].test(millisecond) ? +millisecond : 0;\n\tlet gYear, gMonth, gDay;\n\tif (year > 979) {\n\t\tgYear = 1600;\n\t\tyear -= 979;\n\t} else {\n\t\tgYear = 621;\n\t}\n\tlet days =\n\t\t365 * year +\n\t\tparseInt(year / 33) * 8 +\n\t\tparseInt(((year % 33) + 3) / 4) +\n\t\t78 +\n\t\tday +\n\t\t(month < 7 ? (month - 1) * 31 : (month - 7) * 30 + 186);\n\tgYear += 400 * parseInt(days / 146097);\n\tdays %= 146097;\n\tif (days > 36524) {\n\t\tgYear += 100 * parseInt(--days / 36524);\n\t\tdays %= 36524;\n\t\tif (days >= 365) days++;\n\t}\n\tgYear += 4 * parseInt(days / 1461);\n\tdays %= 1461;\n\tif (days > 365) {\n\t\tgYear += parseInt((days - 1) / 365);\n\t\tdays = (days - 1) % 365;\n\t}\n\tgDay = days + 1;\n\tconst daysOfMonths = [\n\t\t0,\n\t\t31,\n\t\tisLeapYear(\"gregorian\", gYear) ? 29 : 28,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t31,\n\t\t30,\n\t\t31,\n\t\t30,\n\t\t31,\n\t];\n\tfor (gMonth = 0; gMonth < 13; gMonth++) {\n\t\tconst v = daysOfMonths[gMonth];\n\t\tif (gDay <= v) break;\n\t\tgDay -= v;\n\t}\n\n\treturn new Date(gYear, gMonth - 1, gDay, hour, minute, second, millisecond);\n};\n","/**\n * show warning\n * @since 2.0.0\n * @param {String} msg - the message for warning\n */\nexport const warn = (msg) => {\n\tconsole.warn(msg);\n};\n","/**\n * make error and delete this.d\n * @param {String} errorText - Error Text\n * @returns {PersianDate} make error and return class\n */\nexport const invalid = function (errorText) {\n\tdelete this.d;\n\tthis.error = errorText;\n\treturn this;\n};\n","import PersianDate from \"../PersianDate\";\nimport { REGEX } from \"../utils\";\nimport { gtj } from \".\";\n\n/**\n * convert String or Array or Object or PersianDate to Array\n * @since 1.2.0\n * @param {String|Array|Object|Number} year - this param must be string or array or Object from date or year\n * @param {String|Number} year.y - year of date\n * @param {Null|String|Number} year.year - year of date\n * @param {Null|String|Number} year.years - year of date\n * @param {Null|String|Number} year.M - month of date\n * @param {Null|String|Number} year.month - month of date\n * @param {Null|String|Number} year.months - month of date\n * @param {Null|String|Number} year.d - day of date\n * @param {Null|String|Number} year.day - day of date\n * @param {Null|String|Number} year.days - day of date\n * @param {Null|String|Number} year.date - day of date\n * @param {Null|String|Number} year.h - hour of date\n * @param {Null|String|Number} year.hour - hour of date\n * @param {Null|String|Number} year.hours - hour of date\n * @param {Null|String|Number} year.m - minute of date\n * @param {Null|String|Number} year.minute - minute of date\n * @param {Null|String|Number} year.minutes - minute of date\n * @param {Null|String|Number} year.s - second of date\n * @param {Null|String|Number} year.second - second of date\n * @param {Null|String|Number} year.seconds - second of date\n * @param {Null|String|Number} year.ms - millisecond of date\n * @param {Null|String|Number} year.millisecond - millisecond of date\n * @param {Null|String|Number} year.milliseconds - millisecond of date\n * @param {Null|Number|String} month month of date\n * @param {Null|Number|String} day day of date\n * @param {Null|Number|String} hour hour of date\n * @param {Null|Number|String} minute minute of date\n * @param {Null|Number|String} second second of date\n * @param {Null|Number|String} millisecond millisecond of date\n * @returns {Array} array includes year, month, date, hour, minute, second, millinsecond\n */\nexport const typesToArray = (\n\tcalendar,\n\tyear,\n\tmonth,\n\tdate,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) => {\n\tif (!year)\n\t\t// if year not defined\n\t\tyear = new Date(); // return now\n\tif (typeof year == \"string\" && year.search(REGEX[\"separators\"]) != -1) {\n\t\treturn year.split(/[/ -.,:\\\\]/);\n\t} else if (Array.isArray(year)) {\n\t\treturn year;\n\t} else if (PersianDate.isPersianDate(year)) {\n\t\treturn year.clone().calendar(calendar).toArray();\n\t} else if (PersianDate.isDate(year)) {\n\t\treturn new PersianDate(year).calendar(calendar).toArray();\n\t} else if (Object.prototype.toString.call(year) === \"[object Object]\") {\n\t\treturn [\n\t\t\tyear.y || year.year || year.years,\n\t\t\tyear.M || year.month || year.months || 1,\n\t\t\tyear.d || year.day || year.days || year.date || 1,\n\t\t\tyear.h || year.hour || year.hours || 0,\n\t\t\tyear.m || year.minute || year.minutes || 0,\n\t\t\tyear.s || year.second || year.seconds || 0,\n\t\t\tyear.ms || year.millisecond || year.milliseconds || 0,\n\t\t];\n\t}\n\treturn [year, month, date, hour, minute, second, millisecond];\n};\n","import { CALENDAR } from \"../utils\";\n/**\n * returns the ordinal number of that number sent to it\n * @param {Number} number - the number that gives ordinal number --> from 1 to 366\n * @param {'jalali','gregorian'} calendar - the calendar\n * @param {?Number} mode - 'jalali' calendar have two mode of ordinal number\n * @returns {String} ordinal number\n * @example 1st | اول | اولین\n */\nexport const ordinalNumber = (number, calendar = \"jalali\", mode = 1) => {\n\treturn CALENDAR[calendar].ordinalNumbers(number, mode);\n};\n","/**\n * add a prefix to the text in the number of characters that the text has less\n * @param {String|Number} text a text need prefix\n * @param {Number} length length of text\n * @param {String} [prefix=0] - string for add before of text\n * @returns {String} text with or wihtout prefix\n */\nexport const addPrefix = (text, length, prefix = \"0\") => {\n\treturn prefix.repeat(length - String(text).length) + text;\n};\n","import { gtj } from \".\";\n/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date\n */\nexport const setJalaliDate = function (date) {\n\t[\n\t\tthis.d.year,\n\t\tthis.d.month,\n\t\tthis.d.date,\n\t\tthis.d.hour,\n\t\tthis.d.minute,\n\t\tthis.d.second,\n\t\tthis.d.millisecond,\n\t] = gtj(date);\n};\n","/**\n * set the date with Date instance\n * @since 2.0.0\n * @param {Date} date - the Date instance\n */\nexport const setGregorianDate = function (date) {\n\tthis.d = {\n\t\tyear: date.getFullYear(),\n\t\tmonth: date.getMonth() + 1,\n\t\tdate: date.getDate(),\n\t\thour: date.getHours(),\n\t\tminute: date.getMinutes(),\n\t\tsecond: date.getSeconds(),\n\t\tmillisecond: date.getMilliseconds(),\n\t};\n};\n","/**\n * show error\n * @since 3.0.0\n * @param {String} msg - the message for error\n */\nexport const error = (msg) => {\n\tconsole.error(msg);\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get label of day\n * @param {Date} date - the date that received day\n * @param {'jalali'|'gregorian'} calendar - the calendar\n * @returns {String} returns day label\n * @example Saturday | شنبه\n */\nexport const getDayLabel = function (date = new Date(), calendar = \"jalali\") {\n\tif (isDate(date)) return CALENDAR[calendar][\"days\"][\"label\"][date.getDay()];\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { CALENDAR } from \"../utils\";\nimport { error } from \"./error\";\nimport { isDate } from \"../comparison/isDate\";\n\n/**\n * get the day of the week\n * @param {Date} date - the date that received day of week\n * @param {'jalali', 'gregorian'} calendar - the calendar\n * @param {'standard','array'} mode - standard mode start from 1 and array mode start from 0\n * @returns {Number|String} the number of the day of week\n */\nexport const getDayOfWeek = (\n\tdate = new Date(),\n\tcalendar = \"jalali\",\n\tmode = \"standard\"\n) => {\n\tif (isDate(date)) {\n\t\t// if the year was an instance of Date\n\t\treturn (\n\t\t\tCALENDAR[calendar][\"days\"][\"weekNumber\"][date.getDay()] +\n\t\t\t(mode != \"standard\" ? 0 : 1)\n\t\t);\n\t}\n\treturn error(\"the first param must be instance of Date.\");\n};\n","import { getDaysInMonth } from \"../set-get\";\n\n/**\n * get the day of the year\n * @param {Null|String|Number} year - the year of date\n * @param {Null|Number|String} month - the month of date that gives the day of the year\n * @param {Null|Number|String} day - the day of date that gives the day of the year\n * @param {Null|Number|String} calendar - the calendar\n * @returns {Number} the day of the year\n */\nexport const getDayOfYear = (year, month, day, calendar) => {\n\t//plus sign before a variable, convert variable to int\n\tmonth = +month;\n\tday = +day;\n\twhile (--month != 0) {\n\t\tday += getDaysInMonth(calendar, year, month);\n\t}\n\treturn day;\n};\n","const dayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\n/**\n * get the week of the year\n * @param {Null|Number|String} year - the year of date that gives the week of the year\n * @param {Null|Number|String} month - the month of date that gives the week of the year\n * @param {Null|Number|String} day - the day of date that gives the week of the year\n * @param {String} calendar - the calendar\n * @returns {Number} the week of the year\n */\nexport const getWeekOfYear = function (year, month, day, calendar) {\n\tconst firstOfYear = this.clone().calendar(calendar).parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat(calendar));\n\tconst date = firstOfYear.clone().parse(year, month, day);\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\n\tconst weekNumber = Math.ceil(date.diff(firstOfYear, \"date\", true) / 7);\n\n\tconst weeksInYear = date.clone().getWeeksInYear();\n\treturn weekNumber > weeksInYear ? weeksInYear : weekNumber;\n};\n","import { typesToArray } from \"../base\";\n\n/**\n * do the math operation on dates\n * @since 1.4.0\n * @param {...String|PersianDate|Date|Array|Object} values - the dates\n * @param {'min'|'max'} operation - the operation\n * @returns {*} return maximum date\n * @throws {false} if parameters not send or parameters is invalid, return false\n */\nexport const mathOperation = function (values, operation) {\n\tif (!values.length) {\n\t\treturn false;\n\t}\n\tconst args = [...values];\n\tconst argsNumber = args.map((date) => {\n\t\tdate = typesToArray(this.c, date);\n\t\tif (this.isValid(...date))\n\t\t\treturn this.clone()\n\t\t\t\t.parse(...date)\n\t\t\t\t.timestamp();\n\t\treturn false;\n\t});\n\tif (argsNumber.includes(false)) return false;\n\treturn args[argsNumber.indexOf(Math[operation](...argsNumber))];\n};\n","/**\n * check the input is timestamp\n * @since 2.0.0\n * @param {Number|String} timestamp - input that must be checked\n * @returns {Boolean} if input was timestamp, return true\n */\nexport const isTimestamp = (timestamp) => {\n\treturn !isNaN(timestamp) && Math.floor(timestamp / 10000) > 0;\n};\n","import PersianDate from \"../PersianDate\";\nexport const isPersianDate = function (date) {\n\treturn date instanceof PersianDate;\n};\n","import { isValidDate, isValidTime } from \".\";\n\nexport const isValid = function (\n\tcalendar,\n\tyear,\n\tmonth,\n\tday,\n\thour,\n\tminute,\n\tsecond,\n\tmillisecond\n) {\n\treturn (\n\t\tisValidDate(calendar, year, month, day) &&\n\t\tisValidTime(hour, minute, second, millisecond)\n\t);\n};\n","import { isLeapYear } from \"./isLeapYear\";\n\nconst jalali = (year, month, day) => {\n\tif (month >= 7 && month <= 11 && day == 31) return false;\n\tif (month == 12 && day == 31) return false;\n\tif (month == 12 && day == 30 && !isLeapYear(\"j\", year)) return false;\n\treturn true;\n};\n\nconst gregorian = (year, month, day) => {\n\tif ([2, 4, 6, 9, 11].includes(month) && day == 31) return false;\n\tif (month == 2 && (day == 30 || (day == 29 && !isLeapYear(\"g\", year))))\n\t\treturn false;\n\treturn true;\n};\n\nexport const isValidDate = function (calendar, year, month, day) {\n\tif ([year, month, day].some((e) => String(e).search(/null|NaN/) != -1))\n\t\treturn false;\n\tif (year < 0 || month > 12 || month < 1 || day > 31 || day < 1) return false;\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year, month, day);\n\t\tdefault:\n\t\t\treturn gregorian(year, month, day);\n\t}\n};\n","export const isValidTime = function (hour, minute, second, millisecond) {\n\tif (\n\t\t[hour, minute, second, millisecond].some(\n\t\t\t(e) => String(e).search(/null|NaN/) != -1\n\t\t)\n\t)\n\t\treturn false;\n\tif (hour < 0 || hour > 23) return false;\n\tif (minute < 0 || minute > 59) return false;\n\tif (second < 0 || second > 59) return false;\n\tif (millisecond < 0 || millisecond > 999) return false;\n\treturn true;\n};\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isSame() {\n\tlet date = typesToArray(this.c, ...arguments);\n\tdate = this.toArray().map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(date[i]) ? date[i] : value\n\t);\n\n\treturn compare.call(this, date, \"==\");\n}\n","import { REGEX } from \"../utils\";\nimport { typesToArray, compare } from \"../base\";\n\nexport function isBetween(from, to, method) {\n\tconst date = this.toArray();\n\n\tfrom = typesToArray(this.c, from);\n\tif (!from[2]) date[2] = 1;\n\tfrom = date.map((value, i) =>\n\t\tREGEX[\"isNumeric\"].test(from[i]) ? from[i] : value\n\t);\n\n\tto = typesToArray(this.c, to);\n\tto = date.map((value, i) => (REGEX[\"isNumeric\"].test(to[i]) ? to[i] : value));\n\n\tif (!(this.isValid(...from) && this.isValid(...to))) return false;\n\n\treturn (\n\t\tcompare.call(this, from, method[0] === \"[\" ? \">=\" : \">\") &&\n\t\tcompare.call(this, to, method[1] === \"]\" ? \"<=\" : \"<\")\n\t);\n}\n","export const isDate = function (date) {\n\treturn date instanceof Date;\n};\n","const jalali = (year) => {\n\tconst array =\n\t\tyear > 1342 ? [1, 5, 9, 13, 17, 22, 26, 30] : [1, 5, 9, 13, 17, 21, 26, 30];\n\tconst remainder = year % 33;\n\treturn array.includes(remainder);\n};\n\nconst gregorian = (year) => {\n\treturn (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;\n};\n\nexport const isLeapYear = function (calendar, year) {\n\t// calendar[0] ==> first letter of calendar ('j' | 'g' | ...)\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(year);\n\t\tdefault:\n\t\t\treturn gregorian(year);\n\t}\n};\n","import { REGEX } from \"../utils\";\nimport { gtj } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jy\";\n\t\tdefault:\n\t\t\treturn \"y\";\n\t}\n};\n\nexport function year(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tthis.d.year = +format;\n\t\tif (!this.isValidDate()) {\n\t\t\treturn this.subDay(1, false);\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\t\tconst jYear = this.c == \"jalali\" ? this.d.year : gtj(this.toDate())[0];\n\t\tif (format == \"jy\" || format == \"jYYYY\") return jYear;\n\t\tif (format == \"jYY\") return String(jYear).slice(-2);\n\t\tconst gYear =\n\t\t\tthis.c == \"gregorian\" ? this.d.year : this.toDate().getFullYear();\n\t\tif (format == \"y\" || format == \"YYYY\") return gYear;\n\t\tif (format == \"YY\") return String(gYear).slice(-2);\n\t\treturn jYear;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jQ\";\n\t\tdefault:\n\t\t\treturn \"Q\";\n\t}\n};\n\nexport function quarter(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subQuarter(format - 1, false);\n\t\t} else if (format > 4) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addQuarter(format - 4, false);\n\t\t} else {\n\t\t\tthis.d.month = +format * 3 - 2;\n\t\t}\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tlet jQuarter = Math.ceil(\n\t\t\t(this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1]) / 3\n\t\t);\n\t\tif (format == \"jQ\") return jQuarter;\n\t\tif (format == \"jQo\") return ordinalNumber(jQuarter);\n\t\tif (format == \"jQO\") return ordinalNumber(jQuarter, \"jalali\", 2);\n\n\t\tconst gQuarter = Math.ceil(\n\t\t\t(this.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1) / 3\n\t\t);\n\t\tif (format == \"Q\") return gQuarter;\n\t\tif (format == \"Qo\" || format == \"QO\")\n\t\t\treturn ordinalNumber(gQuarter, \"gregorian\");\n\n\t\treturn jQuarter;\n\t}\n}\n","import { REGEX, CALENDAR } from \"../utils\";\nimport { addPrefix, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jM\";\n\t\tdefault:\n\t\t\treturn \"M\";\n\t}\n};\n\nexport function month(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 1) {\n\t\t\tthis.d.month = 1;\n\t\t\tthis.subMonth(format - 1, false);\n\t\t} else if (format > 12) {\n\t\t\tthis.d.month = 12;\n\t\t\tthis.addMonth(format - 12, false);\n\t\t} else {\n\t\t\tthis.d.month = +format;\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jMonth = this.c == \"jalali\" ? this.d.month : gtj(this.toDate())[1];\n\t\tif (format == \"jMM\") return addPrefix(jMonth, 2);\n\t\tif (format == \"jM\") return jMonth;\n\t\tif (format == \"jMMMM\" || format == \"jMMM\")\n\t\t\treturn CALENDAR[\"jalali\"][\"months\"][jMonth];\n\t\tif (format == \"jMo\") return ordinalNumber(jMonth);\n\t\tif (format == \"jMO\") return ordinalNumber(jMonth, \"jalali\", 2);\n\n\t\tconst gMonth =\n\t\t\tthis.c == \"gregorian\" ? this.d.month : this.toDate().getMonth() + 1;\n\t\tif (format == \"M\") return gMonth;\n\t\tif (format == \"MM\") return addPrefix(gMonth, 2);\n\t\tif (format == \"MMMM\") return CALENDAR[\"gregorian\"][\"months\"][gMonth];\n\t\tif (format == \"Mo\" || format == \"MO\")\n\t\t\treturn ordinalNumber(gMonth, \"gregorian\");\n\t\tif (format == \"MMM\")\n\t\t\treturn CALENDAR[\"gregorian\"][\"months\"][gMonth].slice(0, 3);\n\n\t\treturn jMonth;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix, getWeekOfYear, gtj, ordinalNumber } from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jw\";\n\t\tdefault:\n\t\t\treturn \"w\";\n\t}\n};\n\nexport function week(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst weeksInYear = this.getWeeksInYear();\n\t\tif (format < 1) {\n\t\t\tthis.week(1);\n\t\t\tthis.subWeek(format - 1, false);\n\t\t} else if (format > weeksInYear) {\n\t\t\tthis.week(weeksInYear);\n\t\t\tthis.addWeek(format - weeksInYear, false);\n\t\t} else {\n\t\t\tconst weekOfYear = getWeekOfYear.call(\n\t\t\t\tthis,\n\t\t\t\tthis.d.year,\n\t\t\t\tthis.d.month,\n\t\t\t\tthis.d.date,\n\t\t\t\tthis.c\n\t\t\t);\n\t\t\tthis.addWeek(+format - weekOfYear);\n\t\t}\n\n\t\twhile (!this.isValidDate()) {\n\t\t\tthis.subDay(1, false);\n\t\t}\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"jy\"),\n\t\t\tthis.month(\"jM\"),\n\t\t\tthis.date(\"jD\"),\n\t\t\tthis.c\n\t\t);\n\t\tif (format == \"jw\" || format == \"jW\") return jWeekOfYear;\n\t\tif (format == \"jww\" || format == \"jWW\") return addPrefix(jWeekOfYear, 2);\n\t\tif (format == \"jwo\" || format == \"jWo\") return ordinalNumber(jWeekOfYear);\n\t\tif (format == \"jwO\" || format == \"jWO\")\n\t\t\treturn ordinalNumber(jWeekOfYear, \"jalali\", 2);\n\n\t\tconst gWeekOfYear = getWeekOfYear.call(\n\t\t\tthis,\n\t\t\tthis.year(\"y\"),\n\t\t\tthis.month(\"M\"),\n\t\t\tthis.date(\"D\"),\n\t\t\t\"gregorian\"\n\t\t);\n\t\tif (format == \"w\" || format == \"W\") return gWeekOfYear;\n\t\tif (format == \"ww\" || format == \"WW\") return addPrefix(gWeekOfYear, 2);\n\t\tif (format == \"wo\" || format == \"Wo\" || format == \"wO\" || format == \"WO\")\n\t\t\treturn ordinalNumber(gWeekOfYear, \"gregorian\");\n\t\treturn jWeekOfYear;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport {\n\taddPrefix,\n\tordinalNumber,\n\tgetDayOfWeek,\n\tgtj,\n\tgetDayLabel,\n\tgetDayOfYear,\n} from \"../base\";\n\nconst getDefaultFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jD\";\n\t\tdefault:\n\t\t\treturn \"D\";\n\t}\n};\n\nexport function date(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tconst daysInMonth = this.getDaysInMonth();\n\n\t\tif (format < 1) {\n\t\t\tthis.d.date = 1;\n\t\t\tthis.subDay(format - 1);\n\t\t} else if (format > daysInMonth) {\n\t\t\tthis.d.date = daysInMonth;\n\t\t\tthis.addDay(format - daysInMonth);\n\t\t} else {\n\t\t\tthis.d.date = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (!format) format = getDefaultFormat(this.c);\n\n\t\tconst jDate = this.c == \"jalali\" ? this.d.date : gtj(this.toDate())[2];\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"jDD\") return addPrefix(jDate, 2);\n\t\tif (format == \"jD\") return jDate;\n\t\tif (format == \"jDo\") return ordinalNumber(jDate);\n\t\tif (format == \"jDO\") return ordinalNumber(jDate, \"jalali\", 2);\n\t\t//---------- Day of Week ----------//\n\t\tconst gDate = this.toDate();\n\t\tif (format == \"jdddd\" || format == \"jddd\") return getDayLabel(gDate);\n\t\tif (format == \"jdd\") return getDayLabel(gDate).slice(0, 1);\n\t\tlet dayOfWeek = getDayOfWeek(gDate);\n\t\tif (format == \"jdo\") return ordinalNumber(dayOfWeek);\n\t\tif (format == \"jdO\") return ordinalNumber(dayOfWeek, \"jalali\", 2);\n\t\tif (format == \"jd\") return getDayOfWeek(gDate, \"jalali\", \"array\");\n\t\tif (format == \"jde\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tlet dayOfYear = getDayOfYear(this.year(\"jy\"), this.month(\"jM\"), jDate, \"j\");\n\t\tif (format == \"jDDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"jDDD\") return dayOfYear;\n\t\tif (format == \"jDDDo\") return ordinalNumber(dayOfYear);\n\t\tif (format == \"jDDDO\") return ordinalNumber(dayOfYear, \"jalali\", 2);\n\t\t//---------- Day of Month ----------//\n\t\tif (format == \"DD\") return addPrefix(gDate.getDate(), 2);\n\t\tif (format == \"D\") return gDate.getDate();\n\t\tif (format == \"Do\" || format == \"DO\")\n\t\t\treturn ordinalNumber(gDate.getDate(), \"gregorian\");\n\t\t//---------- Day of Week ----------//\n\t\tif (format == \"dddd\") return getDayLabel(gDate, \"gregorian\");\n\t\tif (format == \"ddd\") return getDayLabel(gDate, \"gregorian\").slice(0, 3);\n\t\tif (format == \"dd\") return getDayLabel(gDate, \"gregorian\").slice(0, 2);\n\t\tdayOfWeek = getDayOfWeek(gDate, \"gregorian\");\n\t\tif (format == \"do\" || format == \"dO\")\n\t\t\treturn ordinalNumber(dayOfWeek, \"gregorian\");\n\t\tif (format == \"d\") return dayOfWeek - 1;\n\t\tif (format == \"de\") return dayOfWeek;\n\t\t//---------- Day of Year ----------//\n\t\tdayOfYear = getDayOfYear(\n\t\t\tgDate.getFullYear(),\n\t\t\tgDate.getMonth() + 1,\n\t\t\tgDate.getDate(),\n\t\t\t\"g\"\n\t\t);\n\t\tif (format == \"DDDD\") return addPrefix(dayOfYear, 3);\n\t\tif (format == \"DDD\") return dayOfYear;\n\t\tif (format == \"DDDo\" || format == \"DDDO\")\n\t\t\treturn ordinalNumber(dayOfYear, \"gregorian\");\n\t\treturn jDate;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function hour(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.hour = 0;\n\t\t\tthis.subHour(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.hour = 23;\n\t\t\tthis.addHour(format - 23);\n\t\t} else {\n\t\t\tthis.d.hour = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tlet h = this.d.hour;\n\t\tif (format == \"H\") return h;\n\t\tif (format == \"HH\") return addPrefix(h, 2);\n\t\tif (format == \"k\") return h || 24;\n\t\tif (format == \"kk\") return addPrefix(h || 24, 2);\n\t\th = h > 12 ? h - 12 : h;\n\t\tif (format == \"h\") return h;\n\t\tif (format == \"hh\") return addPrefix(h, 2);\n\t\treturn h;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function minute(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.minute = 0;\n\t\t\tthis.subMinute(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.minute = 23;\n\t\t\tthis.addMinute(format - 23);\n\t\t} else {\n\t\t\tthis.d.minute = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"m\") return this.d.minute;\n\t\tif (format == \"mm\") return addPrefix(this.d.minute, 2);\n\t\treturn this.d.minute;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function second(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.second = 0;\n\t\t\tthis.subSecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.second = 23;\n\t\t\tthis.addSecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.second = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"s\") return this.d.second;\n\t\tif (format == \"ss\") return addPrefix(this.d.second, 2);\n\t\treturn this.d.second;\n\t}\n}\n","import { REGEX } from \"../utils\";\nimport { addPrefix } from \"../base\";\n\nexport function millisecond(format) {\n\tformat = String(format).trim();\n\n\tif (REGEX[\"isNumeric\"].test(format)) {\n\t\tif (format < 0) {\n\t\t\tthis.d.millisecond = 0;\n\t\t\tthis.subMillisecond(format);\n\t\t} else if (format > 23) {\n\t\t\tthis.d.millisecond = 23;\n\t\t\tthis.addMillisecond(format - 23);\n\t\t} else {\n\t\t\tthis.d.millisecond = +format;\n\t\t}\n\n\t\treturn this;\n\t} else {\n\t\tif (format == \"CCC\" || format == \"c\") return this.d.millisecond;\n\t\tif (format == \"CCCC\") return addPrefix(this.d.millisecond, 3);\n\t\treturn this.d.millisecond;\n\t}\n}\n","export function timestamp(value) {\n\tif (value) {\n\t\treturn this.fromGregorian(+String(value).trim());\n\t} else {\n\t\treturn this.toDate().getTime();\n\t}\n}\n","import { isLeapYear } from \"../comparison/isLeapYear\";\n\nconst jalali = (calendar, year, month) => {\n\tif (month >= 1 && month <= 6) return 31;\n\telse if ((month > 6 && month <= 11) || isLeapYear(calendar, year)) {\n\t\treturn 30;\n\t}\n\treturn 29;\n};\n\nconst gregorian = (calendar, year, month) => {\n\tif ([1, 3, 5, 7, 8, 10, 12].includes(month)) return 31;\n\telse if (month != 2) return 30;\n\telse if (isLeapYear(calendar, year)) return 29;\n\treturn 28;\n};\n\nexport const getDaysInMonth = function (calendar, year, month) {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn jalali(calendar, year, month);\n\t\tdefault:\n\t\t\treturn gregorian(calendar, year, month);\n\t}\n};\n","const getDayOfYearFormat = (calendar) => {\n\tswitch (calendar[0]) {\n\t\tcase \"j\":\n\t\t\treturn \"jd\";\n\t\tdefault:\n\t\t\treturn \"d\";\n\t}\n};\n\nexport function getWeeksInYear(year) {\n\tconst dayOfYearFormat = getDayOfYearFormat(this.c);\n\n\tconst firstOfYear = this.clone().parse(year);\n\tconst firstOfYearDay = firstOfYear.date(dayOfYearFormat);\n\tconst lastOfYear = firstOfYear.clone().endOf(\"year\").startOf(\"day\");\n\tconst lastOfYearDay = lastOfYear.date(dayOfYearFormat);\n\n\tif (firstOfYearDay > 3) firstOfYear.addDay(7 - firstOfYearDay);\n\telse firstOfYear.subDay(firstOfYearDay);\n\n\tif (lastOfYearDay > 3) lastOfYear.addDay(7 - lastOfYearDay);\n\telse lastOfYear.subDay(lastOfYearDay);\n\n\treturn Math.ceil(lastOfYear.diff(firstOfYear, \"date\") / 7);\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function startOf(unit) {\n\tthis.d.millisecond = 0;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 0;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 0;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 0;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.subDay(getDayOfWeek(this.toDate(), this.c, \"array\"));\n\tthis.d.date = 1;\n\tif (unit[0] == \"q\") return this.quarter(this.quarter());\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 1;\n\tif (unit[0] == \"y\") return this;\n}\n","import { getDayOfWeek } from \"../base\";\n\nexport function endOf(unit) {\n\tthis.d.millisecond = 999;\n\tif (unit[0] == \"s\") return this;\n\tthis.d.second = 59;\n\tif (unit == \"m\" || unit == \"minute\") return this;\n\tthis.d.minute = 59;\n\tif (unit[0] == \"h\") return this;\n\tthis.d.hour = 23;\n\tif (unit[0] == \"d\") return this;\n\tif (unit[0] == \"w\")\n\t\treturn this.addDay(7 - getDayOfWeek(this.toDate(), this.c));\n\tif (unit[0] == \"q\") {\n\t\tthis.quarter(this.quarter()).addMonth(2);\n\t\tthis.d.date = this.getDaysInMonth();\n\t\treturn this;\n\t}\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit == \"M\" || unit == \"month\") return this;\n\tthis.d.month = 12;\n\tthis.d.date = this.getDaysInMonth();\n\tif (unit[0] == \"y\") return this;\n}\n","import { typesToArray } from \"../base\";\nimport { isDate, isPersianDate } from \"../comparison\";\n\nexport function time(...t) {\n\tif (!t.length) return this.toArray().slice(3);\n\tlet times = [];\n\tif (isPersianDate(t[0])) times = t[0].time();\n\telse if (isDate(t[0]))\n\t\ttimes = [\n\t\t\tt[0].getHours(),\n\t\t\tt[0].getMinutes(),\n\t\t\tt[0].getSeconds(),\n\t\t\tt[0].getMilliseconds(),\n\t\t];\n\telse if (Object.prototype.toString.call(t[0]) === \"[object Object]\")\n\t\ttimes = [\n\t\t\tt[0].h || t[0].hour || t[0].hours || 0,\n\t\t\tt[0].m || t[0].minute || t[0].minutes || 0,\n\t\t\tt[0].s || t[0].second || t[0].seconds || 0,\n\t\t\tt[0].ms || t[0].millisecond || t[0].milliseconds || 0,\n\t\t];\n\telse times = typesToArray(this.c, ...t);\n\tif (this.isValidTime(...times)) {\n\t\treturn this.hour(times[0] || 0)\n\t\t\t.minute(times[1] || 0)\n\t\t\t.second(times[2] || 0)\n\t\t\t.millisecond(times[3] || 0);\n\t} else return \"زمان نامعتبر\";\n}\n","const CALENDAR = {\n\tjalali: {\n\t\tmonths: {\n\t\t\t1: \"فروردین\",\n\t\t\t2: \"اردیبهشت\",\n\t\t\t3: \"خرداد\",\n\t\t\t4: \"تیر\",\n\t\t\t5: \"مرداد\",\n\t\t\t6: \"شهریور\",\n\t\t\t7: \"مهر\",\n\t\t\t8: \"آبان\",\n\t\t\t9: \"آذر\",\n\t\t\t10: \"دی\",\n\t\t\t11: \"بهمن\",\n\t\t\t12: \"اسفند\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t6: \"شنبه\",\n\t\t\t\t0: \"یکشنبه\",\n\t\t\t\t1: \"دوشنبه\",\n\t\t\t\t2: \"سه‌شنبه\",\n\t\t\t\t3: \"چهارشنبه\",\n\t\t\t\t4: \"پنجشنبه\",\n\t\t\t\t5: \"جمعه\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in jalali calendar start from saturday or 6\n\t\t\t\t6: 0, //شنبه\n\t\t\t\t0: 1, //یکشنبه\n\t\t\t\t1: 2, //دوشنبه\n\t\t\t\t2: 3, //سه‌شنبه\n\t\t\t\t3: 4, //چهارشنبه\n\t\t\t\t4: 5, //پنجشنبه\n\t\t\t\t5: 6, //جمعه\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number, mode) {\n\t\t\tconst numbers = {\n\t\t\t\t1: \"یک\",\n\t\t\t\t2: \"دو\",\n\t\t\t\t3: \"سو\",\n\t\t\t\t4: \"چهار\",\n\t\t\t\t5: \"پنج\",\n\t\t\t\t6: \"شش\",\n\t\t\t\t7: \"هفت\",\n\t\t\t\t8: \"هشت\",\n\t\t\t\t9: \"نه\",\n\t\t\t\t10: \"ده\",\n\t\t\t\t11: \"یازده\",\n\t\t\t\t12: \"دوازده\",\n\t\t\t\t13: \"سیزده\",\n\t\t\t\t14: \"چهارده\",\n\t\t\t\t15: \"پانزده\",\n\t\t\t\t16: \"شانزده\",\n\t\t\t\t17: \"هفده\",\n\t\t\t\t18: \"هجده\",\n\t\t\t\t19: \"نوزده\",\n\t\t\t\t20: \"بیست\",\n\t\t\t\t30: \"سی‌\",\n\t\t\t\t40: \"چهل\",\n\t\t\t\t50: \"پنجاه\",\n\t\t\t\t60: \"شصت\",\n\t\t\t\t70: \"هفتاد\",\n\t\t\t\t80: \"هشتاد\",\n\t\t\t\t90: \"نود\",\n\t\t\t\t100: \"صد\",\n\t\t\t\t200: \"دویست\",\n\t\t\t\t300: \"سیصد\",\n\t\t\t};\n\t\t\tlet ordinalNumber = \"\";\n\t\t\tif (number == 1) ordinalNumber = \"اول\";\n\t\t\telse if (numbers[number])\n\t\t\t\tordinalNumber = numbers[number] + (number == 30 ? \"ام\" : \"م\");\n\t\t\telse {\n\t\t\t\tlet remainder = number % 100;\n\t\t\t\tif (numbers[remainder]) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\telse {\n\t\t\t\t\tremainder = number % 10;\n\t\t\t\t\tif (remainder) ordinalNumber = numbers[remainder] + \"م\";\n\t\t\t\t}\n\t\t\t\tremainder = (number - remainder) % 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] +\n\t\t\t\t\t\t(ordinalNumber\n\t\t\t\t\t\t\t? \" و \" + ordinalNumber\n\t\t\t\t\t\t\t: remainder == 30\n\t\t\t\t\t\t\t? \"ام \"\n\t\t\t\t\t\t\t: \"م\");\n\t\t\t\tremainder = Math.floor(number / 100) * 100;\n\t\t\t\tif (remainder)\n\t\t\t\t\tordinalNumber =\n\t\t\t\t\t\tnumbers[remainder] + (ordinalNumber ? \" و \" + ordinalNumber : \"م\");\n\t\t\t}\n\t\t\tif (mode == 2) ordinalNumber += \"ین\";\n\t\t\treturn ordinalNumber;\n\t\t},\n\t},\n\tgregorian: {\n\t\tmonths: {\n\t\t\t1: \"January\",\n\t\t\t2: \"February\",\n\t\t\t3: \"March\",\n\t\t\t4: \"April\",\n\t\t\t5: \"May\",\n\t\t\t6: \"June\",\n\t\t\t7: \"July\",\n\t\t\t8: \"August\",\n\t\t\t9: \"September\",\n\t\t\t10: \"October\",\n\t\t\t11: \"November\",\n\t\t\t12: \"December\",\n\t\t},\n\t\tdays: {\n\t\t\tlabel: {\n\t\t\t\t0: \"Sunday\",\n\t\t\t\t1: \"Monday\",\n\t\t\t\t2: \"Tuesday\",\n\t\t\t\t3: \"Wednesday\",\n\t\t\t\t4: \"Thursday\",\n\t\t\t\t5: \"Friday\",\n\t\t\t\t6: \"Saturday\",\n\t\t\t},\n\t\t\tweekNumber: {\n\t\t\t\t// days in gregorian calendar start from sunday or 0\n\t\t\t\t0: 0, // Sunday\n\t\t\t\t1: 1, // Monday\n\t\t\t\t2: 2, // Tuesday\n\t\t\t\t3: 3, // Wednesday\n\t\t\t\t4: 4, // Thursday\n\t\t\t\t5: 5, // Friday\n\t\t\t\t6: 6, // Saturday\n\t\t\t},\n\t\t},\n\t\tordinalNumbers: function (number) {\n\t\t\tif (number == 1 || (number % 10 == 1 && number != 11))\n\t\t\t\treturn number + \"st\";\n\t\t\telse if (number == 2 || (number % 10 == 2 && number != 12))\n\t\t\t\treturn number + \"nd\";\n\t\t\telse if (number == 3 || (number % 10 == 3 && number != 13))\n\t\t\t\treturn number + \"rd\";\n\t\t\telse return number + \"th\";\n\t\t},\n\t},\n};\n\nconst REGEX = {\n\tformat: /j*(YYYY|YY|y|Qo|QO|Q|MMMM|MMM|MM|Mo|MO|M|DDDD|DDDo|DDDO|DDD|DD|Do|DO|D|dddd|ddd|dd|do|dO|de|d|ww|WW|wo|Wo|wO|WO|w|W|HH|hh|H|h|kk|k|mm|m|ss|s|CCCC|CCC|c|t|aa|a|A)/g,\n\tisNumeric: /^\\d+$/, // this regex, checks input to see is a number or not\n\tseparators: \"\\\\/| |-|\\\\.|,|:\", // find ['/',' ','-','.',',',':'] and split string to array by this symbols\n\tbetweenBacktick: /`(.*?)`/g, // find the texts between the backticks ==> `Alireza`\n};\n\nconst TIMETYPE = function (hour, format) {\n\tif (hour >= 0 && hour < 12) {\n\t\tif (format == \"a\") return \"am\";\n\t\telse if (format == \"aa\") return \"A.M.\";\n\t\telse if (format == \"A\") return \"AM\";\n\t\telse if (format == \"ja\") return \"ق ظ\";\n\t\telse if (format == \"jaa\") return \"ق.ظ\";\n\t\telse if (format == \"jA\") return \"قبل از ظهر\";\n\t\treturn \"ق.ظ\";\n\t} else if (hour >= 12 && hour < 24) {\n\t\tif (format == \"a\") return \"pm\";\n\t\telse if (format == \"aa\") return \"P.M.\";\n\t\telse if (format == \"A\") return \"PM\";\n\t\telse if (format == \"ja\") return \"ب ظ\";\n\t\telse if (format == \"jaa\") return \"ب.ظ\";\n\t\telse if (format == \"jA\") return \"بعد از ظهر\";\n\t\treturn \"ب.ظ\";\n\t}\n};\n\nexport { CALENDAR, TIMETYPE, REGEX };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(739);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/plugin.js b/lib/plugin.js deleted file mode 100644 index 6be7aef..0000000 --- a/lib/plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -import PersianDate from '@alireza-ab/persian-date' - -export default (ctx, inject) => { - let persianDate = new PersianDate(); - ctx.$PersianDate = persianDate; - inject('PersianDate', persianDate) -} diff --git a/lib/nuxt.js b/nuxt/index.js similarity index 100% rename from lib/nuxt.js rename to nuxt/index.js diff --git a/nuxt/plugin.js b/nuxt/plugin.js new file mode 100644 index 0000000..48a767b --- /dev/null +++ b/nuxt/plugin.js @@ -0,0 +1,7 @@ +import PersianDate from "@alireza-ab/persian-date"; + +export default (ctx, inject) => { + const persianDate = new PersianDate(); + ctx.$PersianDate = persianDate; + inject("PersianDate", persianDate); +}; diff --git a/package.json b/package.json index 9d062ba..0225feb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@alireza-ab/persian-date", - "version": "2.5.0", + "version": "2.6.0", "description": "A lightweight but professional library for working with Persian dates", "main": "./dist/PersianDate.min.js", "typings": "./typings/PersianDate.d.ts", @@ -13,7 +13,7 @@ "url": "https://github.com/alireza-ab/persian-date/issues" }, "scripts": { - "build": "webpack", + "build": "rollup -c", "test": "jest", "bt": "yarn build && yarn test" }, @@ -27,13 +27,11 @@ "license": "MIT", "devDependencies": { "@alireza-ab/performance-check": "^1.0.0", - "@babel/cli": "^7.14.3", - "@babel/core": "^7.14.3", - "@babel/plugin-transform-modules-umd": "^7.14.0", "@babel/preset-env": "^7.14.2", - "babel-plugin-add-module-exports": "^1.0.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-node-resolve": "^13.0.0", "jest": "^27.0.1", - "webpack": "^5.37.1", - "webpack-cli": "^4.7.0" + "rollup": "^2.53.2", + "rollup-plugin-terser": "^7.0.2" } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..bc586e6 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,86 @@ +import { defineConfig } from "rollup"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; +import { babel } from "@rollup/plugin-babel"; +import { terser } from "rollup-plugin-terser"; + +export default defineConfig({ + input: "src/PersianDate.js", + output: [ + { + file: "dist/PersianDate.js", + format: "cjs", + exports: "auto", + }, + { + file: "dist/PersianDate.min.js", + format: "cjs", + plugins: [terser()], + exports: "auto", + }, + { + file: "dist/PersianDate.umd.js", + format: "umd", + name: "PersianDate", + }, + { + file: "dist/PersianDate.umd.min.js", + format: "umd", + plugins: [terser()], + name: "PersianDate", + }, + ], + plugins: [nodeResolve(), babel({ babelHelpers: "bundled" })], +}); +// const path = require('path'); +// module.exports = [ +// { +// mode: "development", +// target: "node", +// entry: './src/PersianDate.js', +// devtool: 'source-map', +// output: { +// path: path.resolve(__dirname, "dist"), +// filename: 'PersianDate.js', +// library: "PersianDate", +// libraryTarget: "umd", +// libraryExport: "default", +// }, +// }, +// { +// mode: "production", +// target: "node", +// entry: './src/PersianDate.js', +// devtool: 'source-map', +// output: { +// path: path.resolve(__dirname, "dist"), +// filename: 'PersianDate.min.js', +// library: "PersianDate", +// libraryTarget: "umd", +// libraryExport: "default", +// }, +// }, +// { +// mode: "development", +// entry: './src/PersianDate.js', +// devtool: 'source-map', +// output: { +// path: path.resolve(__dirname, "dist"), +// filename: 'PersianDate.umd.js', +// library: "PersianDate", +// libraryTarget: "umd", +// libraryExport: "default", +// }, +// }, +// { +// mode: "production", +// entry: './src/PersianDate.js', +// devtool: 'source-map', +// output: { +// path: path.resolve(__dirname, "dist"), +// filename: 'PersianDate.umd.min.js', +// library: "PersianDate", +// libraryTarget: "umd", +// libraryExport: "default", +// }, +// } +// ]; diff --git a/src/PersianDate.js b/src/PersianDate.js index 0f1ad42..e02f982 100644 --- a/src/PersianDate.js +++ b/src/PersianDate.js @@ -67,6 +67,7 @@ import { isValid, isSame, isBetween, + isInArray, } from "./comparison"; import { diff, diffForHumans } from "./diff"; @@ -1079,7 +1080,7 @@ const PersianDate = function (dateVal, calendarVal) { * @param {Null|Number|String} minute minute of date * @param {Null|Number|String} second second of date * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is same to the argument, return true of false */ PersianDate.prototype.isSame = function () { if (this.error) return false; @@ -1118,7 +1119,7 @@ const PersianDate = function (dateVal, calendarVal) { * @param {Null|Number|String} minute minute of date * @param {Null|Number|String} second second of date * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is before the argument, return true of false */ PersianDate.prototype.isBefore = function () { if (this.error) return false; @@ -1157,7 +1158,7 @@ const PersianDate = function (dateVal, calendarVal) { * @param {Null|Number|String} minute minute of date * @param {Null|Number|String} second second of date * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is after the argument, return true of false */ PersianDate.prototype.isAfter = function () { if (this.error) return false; @@ -1196,7 +1197,7 @@ const PersianDate = function (dateVal, calendarVal) { * @param {Null|Number|String} minute minute of date * @param {Null|Number|String} second second of date * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is samr or before the argument, return true of false */ PersianDate.prototype.isSameOrBefore = function () { if (this.error) return false; @@ -1235,7 +1236,7 @@ const PersianDate = function (dateVal, calendarVal) { * @param {Null|Number|String} minute minute of date * @param {Null|Number|String} second second of date * @param {Null|Number|String} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is same or after the argument, return true of false */ PersianDate.prototype.isSameOrAfter = function () { if (this.error) return false; @@ -1292,13 +1293,46 @@ const PersianDate = function (dateVal, calendarVal) { * @param {Null|String|Number} to.millisecond - millisecond of date * @param {Null|String|Number} to.milliseconds - millisecond of date * @param {String} method - determines that consider the dates themselves - * @returns {‌Boolean} if date valid, return true or false + * @returns {‌Boolean} if this date is between the arguments, return true of false */ PersianDate.prototype.isBetween = function (from, to, method = "()") { if (this.error) return false; return isBetween.call(this, from, to, method); }; + /** + * checks this date is in array of dates + * @since 2.6.0 + * @param {(PersianDate|Date|String|Array|Object)[]} array - this param must be array of PersianDate - string - array - Object and array date + * @param {String|Number} array[].y - year of date + * @param {Null|String|Number} array[].year - year of date + * @param {Null|String|Number} array[].years - year of date + * @param {Null|String|Number} array[].M - month of date + * @param {Null|String|Number} array[].month - month of date + * @param {Null|String|Number} array[].months - month of date + * @param {Null|String|Number} array[].d - day of date + * @param {Null|String|Number} array[].day - day of date + * @param {Null|String|Number} array[].days - day of date + * @param {Null|String|Number} array[].date - day of date + * @param {Null|String|Number} array[].h - hour of date + * @param {Null|String|Number} array[].hour - hour of date + * @param {Null|String|Number} array[].hours - hour of date + * @param {Null|String|Number} array[].m - minute of date + * @param {Null|String|Number} array[].minute - minute of date + * @param {Null|String|Number} array[].minutes - minute of date + * @param {Null|String|Number} array[].s - second of date + * @param {Null|String|Number} array[].second - second of date + * @param {Null|String|Number} array[].seconds - second of date + * @param {Null|String|Number} array[].ms - millisecond of date + * @param {Null|String|Number} array[].millisecond - millisecond of date + * @param {Null|String|Number} array[].milliseconds - millisecond of date + * @returns {‌Boolean} if date is in array return true + */ + PersianDate.prototype.isInArray = function (array) { + if (this.error) return false; + return isInArray.call(this, array); + }; + /** * checks date is a native js Date object * @since 1.3.0 diff --git a/src/base/gtj.js b/src/base/gtj.js index 34a6361..676aa60 100644 --- a/src/base/gtj.js +++ b/src/base/gtj.js @@ -37,18 +37,7 @@ export const gtj = (year, month, day, hour, minute, second, millisecond) => { millisecond = date.getMilliseconds(); let jYear, jMonth, jDay; const pastDaysInMonth = [ - 0, - 31, - 59, - 90, - 120, - 151, - 181, - 212, - 243, - 273, - 304, - 334, + 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, ]; // Past days from the start of the year in each month if (year > 1600) { jYear = 979; diff --git a/src/comparison/index.js b/src/comparison/index.js index 0d50b39..fc9768e 100644 --- a/src/comparison/index.js +++ b/src/comparison/index.js @@ -6,3 +6,4 @@ export * from "./isValidDate"; export * from "./isValidTime"; export * from "./isSame"; export * from "./isBetween"; +export * from "./isInArray"; diff --git a/src/comparison/isInArray.js b/src/comparison/isInArray.js new file mode 100644 index 0000000..09f7783 --- /dev/null +++ b/src/comparison/isInArray.js @@ -0,0 +1,5 @@ +import { isSame } from "."; + +export function isInArray(array) { + return array.some((date) => isSame.call(this, date)); +} diff --git a/test.js b/test.js index 33c9eeb..9f59bda 100644 --- a/test.js +++ b/test.js @@ -10,8 +10,8 @@ let persianDate = new PersianDate(); const now = { year: 1400, - month: 3, - date: 5, + month: 4, + date: 24, }; test("create date and return now", () => { @@ -2318,3 +2318,57 @@ test("test errors", () => { perf.end(); }); + +////////////////////--- Version 2.6.0 ---//////////////////// + +test("isInArray function", () => { + persianDate.calendar("j").parse("1399/6/1 12:20:30.235"); + expect( + persianDate.isInArray([[1399, "6", 1, "12", 20, 30, 235], new PersianDate()]) + ).toBe(true); + expect( + persianDate.isInArray([[1399, 7], new Date(2020, 7, 22, 12, 20, 30, 235)]) + ).toBe(true); + expect( + persianDate.isInArray([ + { + year: 1399, + month: 6, + date: 24, + hour: 11, + minute: 2, + second: 55, + millisecond: 112, + }, + "1399/13/1", + ]) + ).toBe(false); + expect(persianDate.isInArray(["1399/6/1"])).toBe(true); + expect(persianDate.isInArray([])).toBe(false); + expect(persianDate.isInArray([[1399, "6", 1, "12", 20, 30, 0]])).toBe(false); + + persianDate.calendar("g").parse("2020-6-1 12:20:30.235"); + expect( + persianDate.isInArray([[2020, "6", 1, "12", 20, 30, 235], new PersianDate()]) + ).toBe(true); + expect( + persianDate.isInArray([[2020, 7], new Date(2020, 5, 1, 12, 20, 30, 235)]) + ).toBe(true); + expect( + persianDate.isInArray([ + { + year: 2020, + month: 6, + date: 24, + hour: 11, + minute: 2, + second: 55, + millisecond: 112, + }, + "2020-13-1", + ]) + ).toBe(false); + expect(persianDate.isInArray(["2020-6-1"])).toBe(true); + expect(persianDate.isInArray([])).toBe(false); + expect(persianDate.isInArray([[2020, "6", 1, "12", 20, 30, 0]])).toBe(false); +}); diff --git a/typings/PersianDate.d.ts b/typings/PersianDate.d.ts index 3d85c50..67fdb90 100644 --- a/typings/PersianDate.d.ts +++ b/typings/PersianDate.d.ts @@ -23,6 +23,14 @@ declare type Unit = | "ms" | "millisecond" | "milliseconds"; +declare type AllUnit = + | Unit + | "w" + | "week" + | "weeks" + | "q" + | "quarter" + | "quarters"; declare type DateArray = [ year?: DateInput, month?: DateInput, @@ -117,7 +125,7 @@ declare class PersianDate { minute?: DateInput, second?: DateInput, millisecond?: DateInput - ): PersianDate | string; + ): PersianDate; /** * receives year and determined that is leap year or not * @param {?Number} year - the year to be determined is a leap or not @@ -237,7 +245,7 @@ declare class PersianDate { * @returns {Number} number of days in month * @throws {String} if date invalid return error message */ - getDaysInMonth(year?: number, month?: number): number | string; + getDaysInMonth(year?: number, month?: number): number; /** * returns number of days in month * @param {"jalali"|"gregorian"} calendar - the calendar @@ -250,7 +258,7 @@ declare class PersianDate { calendar: CalendarName, year?: number, month?: number - ): number | string; + ): number; /** * add to year * @param {?Number|String} [year=1] - a number for add with year @@ -259,7 +267,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addYear(year?: DateInput, checkDate?: boolean): PersianDate | string; + addYear(year?: DateInput, checkDate?: boolean): PersianDate; /** * add to month * @param {?Number|String} [month=1] - a number for add with month @@ -268,7 +276,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addMonth(month?: DateInput, checkDate?: boolean): PersianDate | string; + addMonth(month?: DateInput, checkDate?: boolean): PersianDate; /** * add to day * @param {?Number|String} [day=1] - a number for add with day @@ -277,7 +285,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addDay(day?: DateInput, checkDate?: boolean): PersianDate | string; + addDay(day?: DateInput, checkDate?: boolean): PersianDate; /** * add to quarter * @param {?Number|String} [quarter=1] - a number for add with quarter @@ -286,7 +294,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addQuarter(quarter?: DateInput, checkDate?: boolean): PersianDate | string; + addQuarter(quarter?: DateInput, checkDate?: boolean): PersianDate; /** * add to week * @param {?Number|String} [week=1] - a number for add with week @@ -295,7 +303,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addWeek(week?: DateInput, checkDate?: boolean): PersianDate | string; + addWeek(week?: DateInput, checkDate?: boolean): PersianDate; /** * add to hour * @param {?Number|String} [hour=1] - a number for add with hour @@ -304,7 +312,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addHour(hour?: DateInput, checkDate?: boolean): PersianDate | string; + addHour(hour?: DateInput, checkDate?: boolean): PersianDate; /** * add to minute * @param {?Number|String} [minute=1] - a number for add with minute @@ -313,7 +321,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addMinute(minute?: DateInput, checkDate?: boolean): PersianDate | string; + addMinute(minute?: DateInput, checkDate?: boolean): PersianDate; /** * add to second * @param {?Number|String} [second=1] - a number for add with second @@ -322,7 +330,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addSecond(second?: DateInput, checkDate?: boolean): PersianDate | string; + addSecond(second?: DateInput, checkDate?: boolean): PersianDate; /** * add to millisecond * @param {?Number|String} [millisecond=1] - a number for add with millisecond @@ -331,10 +339,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - addMillisecond( - millisecond?: DateInput, - checkDate?: boolean - ): PersianDate | string; + addMillisecond(millisecond?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from year * @param {?Number|String} [year=1] - a number for subtract from year @@ -343,7 +348,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subYear(year?: DateInput, checkDate?: boolean): PersianDate | string; + subYear(year?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from month * @param {?Number|String} [month=1] - a number for subtract from month @@ -352,7 +357,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subMonth(month?: DateInput, checkDate?: boolean): PersianDate | string; + subMonth(month?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from day * @param {?Number|String} [day=1] - a number for subtract from day @@ -361,7 +366,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subDay(day?: DateInput, checkDate?: boolean): PersianDate | string; + subDay(day?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from quarter * @param {?Number|String} [quarter=1] - a number for subtract from quarter @@ -370,7 +375,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subQuarter(quarter?: DateInput, checkDate?: boolean): PersianDate | string; + subQuarter(quarter?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from week * @param {?Number|String} [week=1] - a number for subtract from week @@ -379,7 +384,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subWeek(week?: DateInput, checkDate?: boolean): PersianDate | string; + subWeek(week?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from hour * @param {?Number|String} [hour=1] - a number for subtract from hour @@ -388,7 +393,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subHour(hour?: DateInput, checkDate?: boolean): PersianDate | string; + subHour(hour?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from minute * @param {?Number|String} [minute=1] - a number for subtract from minute @@ -397,7 +402,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subMinute(minute?: DateInput, checkDate?: boolean): PersianDate | string; + subMinute(minute?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from second * @param {?Number|String} [second=1] - a number for subtract from second @@ -406,7 +411,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subSecond(second?: DateInput, checkDate?: boolean): PersianDate | string; + subSecond(second?: DateInput, checkDate?: boolean): PersianDate; /** * subtract from millisecond * @param {?Number|String} [millisecond=1] - a number for subtract from millisecond @@ -415,10 +420,7 @@ declare class PersianDate { * @returns {PersianDate} return class with new date * @throws {String} if date invalid return error message */ - subMillisecond( - millisecond?: DateInput, - checkDate?: boolean - ): PersianDate | string; + subMillisecond(millisecond?: DateInput, checkDate?: boolean): PersianDate; /** * returns date as string with specify format * @param {?String} [format=date] - formatting date to string @@ -433,7 +435,8 @@ declare class PersianDate { * else returns a number or string from year * @throws {String} if date invalid return error message */ - year(format?: DateInput): PersianDate | string | number; + year(): number; + year(format: DateInput): PersianDate; /** * get or set month * @param {Null|String|Number} [format=jM] - a number for set the month or a format for formatting @@ -441,7 +444,8 @@ declare class PersianDate { * else returns a number or string from month * @throws {String} if date invalid return error message */ - month(format?: DateInput): PersianDate | string | number; + month(): number; + month(format: DateInput): PersianDate; /** * get or set day in month * @param {Null|String|Number} [format=jD] - a number for set the day in month or a format for formatting @@ -449,7 +453,8 @@ declare class PersianDate { * else returns a number or string from day * @throws {String} if date invalid return error message */ - date(format?: DateInput): PersianDate | string | number; + date(): number; + date(format: DateInput): PersianDate; /** * get or set quarter * @param {Null|String|Number} [format=jQ] - a number for set the quarter or a format for formatting @@ -457,7 +462,8 @@ declare class PersianDate { * else returns a number or string from quarter * @throws {String} if date invalid return error message */ - quarter(format?: DateInput): PersianDate | string | number; + quarter(): number; + quarter(format: DateInput): PersianDate; /** * get or set week * @param {Null|String|Number} [format=jw] - a number for set the week or a format for formatting @@ -465,7 +471,8 @@ declare class PersianDate { * else returns a number or string from week * @throws {String} if date invalid return error message */ - week(format?: DateInput): PersianDate | string | number; + week(): number; + week(format: DateInput): PersianDate; /** * get or set hour * @param {Null|String|Number} [format=H] - a number for set the hour or a format for formatting @@ -473,7 +480,8 @@ declare class PersianDate { * else returns a number or string from hour * @throws {String} if date invalid return error message */ - hour(format?: DateInput): PersianDate | string | number; + hour(): number; + hour(format: DateInput): PersianDate; /** * get or set minute * @param {Null|String|Number} [format=m] - a number for set the minute or a format for formatting @@ -481,7 +489,8 @@ declare class PersianDate { * else returns a number or string from minute * @throws {String} if date invalid return error message */ - minute(format?: DateInput): PersianDate | string | number; + minute(): number; + minute(format: DateInput): PersianDate; /** * get or set second * @param {Null|String|Number} [format=s] - a number for set the second or a format for formatting @@ -489,7 +498,8 @@ declare class PersianDate { * else returns a number or string from second * @throws {String} if date invalid return error message */ - second(format?: DateInput): PersianDate | string | number; + second(): number; + second(format: DateInput): PersianDate; /** * get or set millisecond * @param {Null|String|Number} [format=c] - a number for set the millisecond or a format for formatting @@ -497,7 +507,8 @@ declare class PersianDate { * else returns a number or string from millisecond * @throws {String} if date invalid return error message */ - millisecond(format?: DateInput): PersianDate | string | number; + millisecond(): number; + millisecond(format: DateInput): PersianDate; /** * get timestamp or set date from timestamp * @param {Null|String|Number} value - a number for set the millisecond @@ -505,7 +516,8 @@ declare class PersianDate { * else returns timestamp (number) * @throws {String} if date invalid return error message */ - timestamp(value?: DateInput): PersianDate | number | string; + timestamp(): number; + timestamp(format: DateInput): PersianDate; /** * get clone of this date * @since 1.1.0 @@ -544,7 +556,7 @@ declare class PersianDate { * @param {Null|String|Number} minute minute of date * @param {Null|String|Number} second second of date * @param {Null|String|Number} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is same to the argument, return true of false */ isSame( year?: AllDateInput, @@ -587,7 +599,7 @@ declare class PersianDate { * @param {Null|String|Number} minute minute of date * @param {Null|String|Number} second second of date * @param {Null|String|Number} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is before the argument, return true of false */ isBefore( year?: AllDateInput, @@ -630,7 +642,7 @@ declare class PersianDate { * @param {Null|String|Number} minute minute of date * @param {Null|String|Number} second second of date * @param {Null|String|Number} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is after the argument, return true of false */ isAfter( year?: AllDateInput, @@ -684,17 +696,15 @@ declare class PersianDate { minuteFormat?: DateInput, secondFormat?: DateInput, millisecondFormat?: DateInput - ): - | { - year?: DateInput; - month?: DateInput; - date?: DateInput; - hour?: DateInput; - minute?: DateInput; - second?: DateInput; - millisecond?: DateInput; - } - | string; + ): { + year?: DateInput; + month?: DateInput; + date?: DateInput; + hour?: DateInput; + minute?: DateInput; + second?: DateInput; + millisecond?: DateInput; + }; /** * checks date is a native js Date object * @since 1.3.0 @@ -757,7 +767,7 @@ declare class PersianDate { * @param {Null|String|Number} minute minute of date * @param {Null|String|Number} second second of date * @param {Null|String|Number} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is samr or before the argument, return true of false */ isSameOrBefore( year?: AllDateInput, @@ -800,7 +810,7 @@ declare class PersianDate { * @param {Null|String|Number} minute minute of date * @param {Null|String|Number} second second of date * @param {Null|String|Number} millisecond millisecond of date - * @returns {‌Boolean} if date valid, return true of false + * @returns {‌Boolean} if this date is same or after the argument, return true of false */ isSameOrAfter( year?: AllDateInput, @@ -861,13 +871,42 @@ declare class PersianDate { * @param {Null|String|Number} to.millisecond - millisecond of date * @param {Null|String|Number} to.milliseconds - millisecond of date * @param {String} [method='()'] - determines that consider the dates themselves - * @returns {‌Boolean} if date valid, return true or false + * @returns {‌Boolean} if this date is between the arguments, return true of false */ isBetween( from: AllDateInput, to: AllDateInput, method?: "()" | "[]" | "[)" | "(]" ): boolean; + /** + * checks this date is in array of dates + * @since 2.6.0 + * @param {(PersianDate|Date|String|Array|Object)[]} array - this param must be array of PersianDate - string - array - Object and array date + * @param {String|Number} array[].y - year of date + * @param {Null|String|Number} array[].year - year of date + * @param {Null|String|Number} array[].years - year of date + * @param {Null|String|Number} array[].M - month of date + * @param {Null|String|Number} array[].month - month of date + * @param {Null|String|Number} array[].months - month of date + * @param {Null|String|Number} array[].d - day of date + * @param {Null|String|Number} array[].day - day of date + * @param {Null|String|Number} array[].days - day of date + * @param {Null|String|Number} array[].date - day of date + * @param {Null|String|Number} array[].h - hour of date + * @param {Null|String|Number} array[].hour - hour of date + * @param {Null|String|Number} array[].hours - hour of date + * @param {Null|String|Number} array[].m - minute of date + * @param {Null|String|Number} array[].minute - minute of date + * @param {Null|String|Number} array[].minutes - minute of date + * @param {Null|String|Number} array[].s - second of date + * @param {Null|String|Number} array[].second - second of date + * @param {Null|String|Number} array[].seconds - second of date + * @param {Null|String|Number} array[].ms - millisecond of date + * @param {Null|String|Number} array[].millisecond - millisecond of date + * @param {Null|String|Number} array[].milliseconds - millisecond of date + * @returns {‌Boolean} if date is in array return true + */ + isInArray(array: AllDateInput[]): boolean; /** * returns minimum date in arguments that passed * @since 1.4.0 @@ -897,7 +936,7 @@ declare class PersianDate { * @returns {*} return minimum date * @throws {false} if parameters not send or parameters is invalid, return false */ - min(...dates: AllDateInput[]): AllDateInput; + min(...dates: T[]): T; /** * returns maximum date in arguments that passed * @since 1.4.0 @@ -927,7 +966,7 @@ declare class PersianDate { * @returns {*} return maximum date * @throws {false} if parameters not send or parameters is invalid, return false */ - max(...dates: AllDateInput[]): AllDateInput; + max(...dates: T[]): T; /** * get the diffrence between two date * @since 1.4.0 @@ -959,7 +998,7 @@ declare class PersianDate { * @returns {Number} diffrence * @throws {String} if date invalid return error message */ - diff(date: AllDateInput, unit: Unit, addOne?: boolean): number | string; + diff(date: AllDateInput, unit?: Unit, addOne?: boolean): number; /** * return the array of PersianDate * @since 1.3.0 @@ -1003,7 +1042,7 @@ declare class PersianDate { minuteFormat?: DateInput, secondFormat?: DateInput, millisecondFormat?: DateInput - ): DateArray | string; + ): DateArray; /** * get the diffrence between two date in a human-readable format * @since 2.0.0 @@ -1078,7 +1117,7 @@ declare class PersianDate { minute?: DateInput, second?: DateInput, millisecond?: DateInput - ): PersianDate | string; + ): PersianDate; /** * convert a gregorian date to PersianDate instance * @since 2.0.0 @@ -1122,43 +1161,43 @@ declare class PersianDate { minute?: DateInput, second?: DateInput, millisecond?: DateInput - ): PersianDate | string; + ): PersianDate; /** * convert a gregorian date to PersianDate instance * @since 2.0.0 * @param {"j"|"jalali"|"g"|"gregorian"} calendar - the calendar * @returns {PersianDate} return class with persian date */ - calendar(calendar: CalendarName): PersianDate | string; + calendar(): CalendarName; + calendar(calendar: CalendarName): PersianDate; /** * return number of weeks in year * @since 2.0.0 * @param {Number|String} year - the year * @returns {Number} number of weeks in year */ - getWeeksInYear(year?: DateInput): number | string; + getWeeksInYear(year?: DateInput): number; /** * return the Date instance of PersianDate * @since 2.0.0 * @returns {Date} if date valid, return Date instance of date * @throws {String} if date invalid return error message */ - toDate(): Date | string; + toDate(): Date; /** * change the date to start of the year or month or ... * @since 2.0.0 * @param {String} unit - the unit of time * @returns {PersianDate} return the class with new date or time */ - startOf(unit?: Unit): PersianDate; + startOf(unit?: AllUnit): PersianDate; /** * change the date to end of the year or month or ... * @since 2.0.0 * @param {String} unit - the unit of time * @returns {PersianDate} return the class with new date or time */ - endOf(unit?: Unit): PersianDate; - valueOf(): string | number | PersianDate; + endOf(unit?: AllUnit): PersianDate; /** * change the time * @since 2.3.0 @@ -1179,6 +1218,10 @@ declare class PersianDate { * else returns an array of time * @throws {String} if time invalid return error text */ - time(...time: AllDateInput[]): PersianDate | [] | string; + time(): DateInput[]; + time(...time: AllDateInput[]): PersianDate; + + valueOf(): number; + valueOf(format: DateInput): PersianDate; } export default PersianDate; diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index c451c6b..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,53 +0,0 @@ -const path = require('path'); -module.exports = [ - { - mode: "development", - target: "node", - entry: './src/PersianDate.js', - devtool: 'source-map', - output: { - path: path.resolve(__dirname, "dist"), - filename: 'PersianDate.js', - library: "PersianDate", - libraryTarget: "umd", - libraryExport: "default", - }, - }, - { - mode: "production", - target: "node", - entry: './src/PersianDate.js', - devtool: 'source-map', - output: { - path: path.resolve(__dirname, "dist"), - filename: 'PersianDate.min.js', - library: "PersianDate", - libraryTarget: "umd", - libraryExport: "default", - }, - }, - { - mode: "development", - entry: './src/PersianDate.js', - devtool: 'source-map', - output: { - path: path.resolve(__dirname, "dist"), - filename: 'PersianDate.umd.js', - library: "PersianDate", - libraryTarget: "umd", - libraryExport: "default", - }, - }, - { - mode: "production", - entry: './src/PersianDate.js', - devtool: 'source-map', - output: { - path: path.resolve(__dirname, "dist"), - filename: 'PersianDate.umd.min.js', - library: "PersianDate", - libraryTarget: "umd", - libraryExport: "default", - }, - } -]; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ddc0c7f..ff0e810 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,21 +7,12 @@ resolved "https://registry.yarnpkg.com/@alireza-ab/performance-check/-/performance-check-1.0.0.tgz#5744b11046b65adf075e10c94fd65ace0ca731ea" integrity sha512-o+KMkA9+gtsSm+Z1nVxnZ4SkDaZqKzW1v9Rhury3ecpaV/XOuyCaRmxbfrw1CaCFvz+eQFqshXAxP7svZQNu6A== -"@babel/cli@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.14.3.tgz#9f6c8aee12e8660df879610f19a8010958b26a6f" - integrity sha512-zU4JLvwk32ay1lhhyGfqiRUSPoltVDjhYkA3aQq8+Yby9z30s/EsFw1EPOHxWG9YZo2pAGfgdRNeHZQAYU5m9A== - dependencies: - commander "^4.0.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - make-dir "^2.1.0" - slash "^2.0.0" - source-map "^0.5.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents" - chokidar "^3.4.0" +"@babel/code-frame@^7.10.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + dependencies: + "@babel/highlight" "^7.14.5" "@babel/code-frame@^7.12.13": version "7.12.13" @@ -61,7 +52,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.14.3", "@babel/core@^7.7.2": +"@babel/core@^7.7.2": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== @@ -227,6 +218,13 @@ dependencies: "@babel/types" "^7.13.12" +"@babel/helper-module-imports@^7.10.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" @@ -334,6 +332,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" + integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== + "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -376,6 +379,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.15": version "7.13.15" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8" @@ -1050,16 +1062,19 @@ "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" +"@babel/types@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" + integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@discoveryjs/json-ext@^0.5.0": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" - integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1246,22 +1261,34 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents": - version "2.1.8-no-fsevents" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b" - integrity sha512-+nb9vWloHNNMFHjGofEam3wopE3m1yuambrrd/fnPc+lFOMB9ROTqQlche9ByFWNkdNqfSgR/kkQtQ8DzEWt2w== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" +"@rollup/plugin-babel@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" + integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" + integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -1315,26 +1342,10 @@ dependencies: "@babel/types" "^7.3.0" -"@types/eslint-scope@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" - integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "7.2.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" - integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.47": - version "0.0.47" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" - integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/graceful-fs@^4.1.2": version "4.1.5" @@ -1362,11 +1373,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.6": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - "@types/node@*": version "14.14.41" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615" @@ -1377,6 +1383,13 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" @@ -1394,154 +1407,6 @@ dependencies: "@types/yargs-parser" "*" -"@webassemblyjs/ast@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" - integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - -"@webassemblyjs/floating-point-hex-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" - integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== - -"@webassemblyjs/helper-api-error@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" - integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== - -"@webassemblyjs/helper-buffer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" - integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== - -"@webassemblyjs/helper-numbers@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" - integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" - integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== - -"@webassemblyjs/helper-wasm-section@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" - integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - -"@webassemblyjs/ieee754@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" - integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" - integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" - integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== - -"@webassemblyjs/wasm-edit@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" - integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/helper-wasm-section" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-opt" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - "@webassemblyjs/wast-printer" "1.11.0" - -"@webassemblyjs/wasm-gen@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" - integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wasm-opt@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" - integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - -"@webassemblyjs/wasm-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" - integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wast-printer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" - integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9" - integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw== - -"@webpack-cli/info@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573" - integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e" - integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -1565,7 +1430,7 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.1, acorn@^8.2.4: +acorn@^8.2.4: version "8.2.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== @@ -1577,21 +1442,6 @@ agent-base@6: dependencies: debug "4" -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1623,15 +1473,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3, anymatch@~3.1.1: +anymatch@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -1646,46 +1488,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - babel-jest@^27.0.1: version "27.0.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.1.tgz#9f1c4571ac17a39e599d1325dcaf53a274261df4" @@ -1700,11 +1507,6 @@ babel-jest@^27.0.1: graceful-fs "^4.2.4" slash "^3.0.0" -babel-plugin-add-module-exports@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz#6caa4ddbe1f578c6a5264d4d3e6c8a2720a7ca2b" - integrity sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg== - babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -1788,29 +1590,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1819,23 +1598,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1870,20 +1633,10 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== call-bind@^1.0.0: version "1.0.2" @@ -1935,26 +1688,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chokidar@^3.4.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - ci-info@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" @@ -1965,16 +1698,6 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz#2fd46d9906a126965aa541345c499aaa18e8cd73" integrity sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1984,15 +1707,6 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2003,14 +1717,6 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2035,7 +1741,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.1, colorette@^1.2.2: +colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== @@ -2052,38 +1758,18 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - core-js-compat@^3.9.0, core-js-compat@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.10.1.tgz#62183a3a77ceeffcc420d907a3e6fc67d9b27f1c" @@ -2092,11 +1778,6 @@ core-js-compat@^3.9.0, core-js-compat@^3.9.1: browserslist "^4.16.3" semver "7.0.0" -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2139,23 +1820,11 @@ debug@4, debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - decimal.js@^10.2.1: version "10.2.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -2178,28 +1847,6 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -2237,24 +1884,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -enhanced-resolve@^5.8.0: - version "5.8.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" - integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -envinfo@^7.7.3: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -es-module-lexer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" - integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -2282,46 +1911,26 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - execa@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" @@ -2342,19 +1951,6 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - expect@^27.0.1: version "27.0.1" resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.1.tgz#1290c74fef8d62f15f4c5dd1d7233001909abbfb" @@ -2367,40 +1963,6 @@ expect@^27.0.1: jest-message-util "^27.0.1" jest-regex-util "^27.0.1" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -2411,11 +1973,6 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -2423,16 +1980,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2448,11 +1995,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -2462,24 +2004,12 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.3.2, fsevents@~2.3.1: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -2518,32 +2048,7 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2560,7 +2065,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: +graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -2580,37 +2085,6 @@ has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -2680,49 +2154,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-ci@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" @@ -2737,55 +2173,6 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -2796,39 +2183,16 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -2844,33 +2208,11 @@ is-typedarray@^1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -3300,7 +2642,7 @@ jest-watcher@^27.0.1: jest-util "^27.0.1" string-length "^4.0.1" -jest-worker@^26.6.2: +jest-worker@^26.2.1: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -3383,16 +2725,6 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -3400,30 +2732,6 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -3442,11 +2750,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -3471,14 +2774,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -3493,42 +2788,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" @@ -3542,7 +2806,7 @@ mime-db@1.47.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== -mime-types@^2.1.12, mime-types@^2.1.27: +mime-types@^2.1.12: version "2.1.30" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== @@ -3566,51 +2830,16 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3626,14 +2855,7 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -3650,27 +2872,11 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - object.assign@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" @@ -3681,13 +2887,6 @@ object.assign@^4.1.0: has-symbols "^1.0.1" object-keys "^1.1.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3726,13 +2925,6 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -3750,16 +2942,6 @@ parse5@6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -3780,15 +2962,15 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +picomatch@^2.2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pirates@^4.0.1: version "4.0.1" @@ -3804,11 +2986,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3824,11 +3001,6 @@ pretty-format@^27.0.1: ansi-styles "^5.0.0" react-is "^17.0.1" -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - prompts@^2.0.1: version "2.4.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" @@ -3842,7 +3014,7 @@ psl@^1.1.33: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -3859,42 +3031,6 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -3919,14 +3055,6 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexpu-core@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" @@ -3951,21 +3079,6 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3983,12 +3096,7 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: +resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -3996,11 +3104,6 @@ resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: is-core-module "^2.2.0" path-parse "^1.0.6" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -4008,23 +3111,33 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" +rollup-plugin-terser@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.53.2: + version "2.53.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.53.2.tgz#3279f9bfba1fe446585560802e418c5fbcaefa51" + integrity sha512-1CtEYuS5CRCzFZ7SNW5528SlDlk4VDXIRGwbm/2POQxA/G4+7/crIqJwkmnj8Q/74hGx4oVlNvh4E1CJQ5hZ6w== + optionalDependencies: + fsevents "~2.3.2" + safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -4037,25 +3150,11 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== - dependencies: - "@types/json-schema" "^7.0.6" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -4068,30 +3167,13 @@ semver@^7.3.2: dependencies: lru-cache "^6.0.0" -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4114,62 +3196,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - source-map-support@^0.5.6, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -4178,12 +3209,7 @@ source-map-support@^0.5.6, source-map-support@~0.5.19: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -4198,13 +3224,6 @@ source-map@^0.7.3, source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4217,14 +3236,6 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -4242,13 +3253,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -4300,11 +3304,6 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -4313,22 +3312,10 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" - integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== - dependencies: - jest-worker "^26.6.2" - p-limit "^3.1.0" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.5.1" - -terser@^5.5.1: - version "5.6.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c" - integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw== +terser@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.1.tgz#2dc7a61009b66bb638305cb2a824763b116bf784" + integrity sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -4358,21 +3345,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -4380,16 +3352,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -4453,61 +3415,11 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-compile-cache@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - v8-to-istanbul@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.1.tgz#04bfd1026ba4577de5472df4f5e89af49de5edda" @@ -4538,14 +3450,6 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" -watchpack@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" - integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -4556,70 +3460,6 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35" - integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.0.3" - "@webpack-cli/info" "^1.2.4" - "@webpack-cli/serve" "^1.4.0" - colorette "^1.2.1" - commander "^7.0.0" - execa "^5.0.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - v8-compile-cache "^2.2.0" - webpack-merge "^5.7.3" - -webpack-merge@^5.7.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" - integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-sources@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" - integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack@^5.37.1: - version "5.37.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.37.1.tgz#2deb5acd350583c1ab9338471f323381b0b0c14b" - integrity sha512-btZjGy/hSjCAAVHw+cKG+L0M+rstlyxbO2C+BOTaQ5/XAnxkDrP5sVbqWhXgo4pL3X2dcOib6rqCP20Zr9PLow== - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.47" - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/wasm-edit" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - acorn "^8.2.1" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.0" - es-module-lexer "^0.4.0" - eslint-scope "^5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" - json-parse-better-errors "^1.0.2" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.0.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.1" - watchpack "^2.0.0" - webpack-sources "^2.1.1" - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -4648,11 +3488,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -4724,8 +3559,3 @@ yargs@^16.0.3: string-width "^4.2.0" y18n "^5.0.5" yargs-parser "^20.2.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==