You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1521 lines
						
					
					
						
							43 KiB
						
					
					
				
			
		
		
	
	
							1521 lines
						
					
					
						
							43 KiB
						
					
					
				"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.default = void 0;
 | 
						|
 | 
						|
var _index = _interopRequireDefault(require("../../../_lib/getUTCWeekYear/index.js"));
 | 
						|
 | 
						|
var _index2 = _interopRequireDefault(require("../../../_lib/setUTCDay/index.js"));
 | 
						|
 | 
						|
var _index3 = _interopRequireDefault(require("../../../_lib/setUTCISODay/index.js"));
 | 
						|
 | 
						|
var _index4 = _interopRequireDefault(require("../../../_lib/setUTCISOWeek/index.js"));
 | 
						|
 | 
						|
var _index5 = _interopRequireDefault(require("../../../_lib/setUTCWeek/index.js"));
 | 
						|
 | 
						|
var _index6 = _interopRequireDefault(require("../../../_lib/startOfUTCISOWeek/index.js"));
 | 
						|
 | 
						|
var _index7 = _interopRequireDefault(require("../../../_lib/startOfUTCWeek/index.js"));
 | 
						|
 | 
						|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 | 
						|
 | 
						|
var MILLISECONDS_IN_HOUR = 3600000;
 | 
						|
var MILLISECONDS_IN_MINUTE = 60000;
 | 
						|
var MILLISECONDS_IN_SECOND = 1000;
 | 
						|
var numericPatterns = {
 | 
						|
  month: /^(1[0-2]|0?\d)/,
 | 
						|
  // 0 to 12
 | 
						|
  date: /^(3[0-1]|[0-2]?\d)/,
 | 
						|
  // 0 to 31
 | 
						|
  dayOfYear: /^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,
 | 
						|
  // 0 to 366
 | 
						|
  week: /^(5[0-3]|[0-4]?\d)/,
 | 
						|
  // 0 to 53
 | 
						|
  hour23h: /^(2[0-3]|[0-1]?\d)/,
 | 
						|
  // 0 to 23
 | 
						|
  hour24h: /^(2[0-4]|[0-1]?\d)/,
 | 
						|
  // 0 to 24
 | 
						|
  hour11h: /^(1[0-1]|0?\d)/,
 | 
						|
  // 0 to 11
 | 
						|
  hour12h: /^(1[0-2]|0?\d)/,
 | 
						|
  // 0 to 12
 | 
						|
  minute: /^[0-5]?\d/,
 | 
						|
  // 0 to 59
 | 
						|
  second: /^[0-5]?\d/,
 | 
						|
  // 0 to 59
 | 
						|
  singleDigit: /^\d/,
 | 
						|
  // 0 to 9
 | 
						|
  twoDigits: /^\d{1,2}/,
 | 
						|
  // 0 to 99
 | 
						|
  threeDigits: /^\d{1,3}/,
 | 
						|
  // 0 to 999
 | 
						|
  fourDigits: /^\d{1,4}/,
 | 
						|
  // 0 to 9999
 | 
						|
  anyDigitsSigned: /^-?\d+/,
 | 
						|
  singleDigitSigned: /^-?\d/,
 | 
						|
  // 0 to 9, -0 to -9
 | 
						|
  twoDigitsSigned: /^-?\d{1,2}/,
 | 
						|
  // 0 to 99, -0 to -99
 | 
						|
  threeDigitsSigned: /^-?\d{1,3}/,
 | 
						|
  // 0 to 999, -0 to -999
 | 
						|
  fourDigitsSigned: /^-?\d{1,4}/ // 0 to 9999, -0 to -9999
 | 
						|
 | 
						|
};
 | 
						|
var timezonePatterns = {
 | 
						|
  basicOptionalMinutes: /^([+-])(\d{2})(\d{2})?|Z/,
 | 
						|
  basic: /^([+-])(\d{2})(\d{2})|Z/,
 | 
						|
  basicOptionalSeconds: /^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,
 | 
						|
  extended: /^([+-])(\d{2}):(\d{2})|Z/,
 | 
						|
  extendedOptionalSeconds: /^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/
 | 
						|
};
 | 
						|
 | 
						|
function parseNumericPattern(pattern, string, valueCallback) {
 | 
						|
  var matchResult = string.match(pattern);
 | 
						|
 | 
						|
  if (!matchResult) {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  var value = parseInt(matchResult[0], 10);
 | 
						|
  return {
 | 
						|
    value: valueCallback ? valueCallback(value) : value,
 | 
						|
    rest: string.slice(matchResult[0].length)
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
function parseTimezonePattern(pattern, string) {
 | 
						|
  var matchResult = string.match(pattern);
 | 
						|
 | 
						|
  if (!matchResult) {
 | 
						|
    return null;
 | 
						|
  } // Input is 'Z'
 | 
						|
 | 
						|
 | 
						|
  if (matchResult[0] === 'Z') {
 | 
						|
    return {
 | 
						|
      value: 0,
 | 
						|
      rest: string.slice(1)
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  var sign = matchResult[1] === '+' ? 1 : -1;
 | 
						|
  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;
 | 
						|
  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;
 | 
						|
  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;
 | 
						|
  return {
 | 
						|
    value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),
 | 
						|
    rest: string.slice(matchResult[0].length)
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
function parseAnyDigitsSigned(string, valueCallback) {
 | 
						|
  return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);
 | 
						|
}
 | 
						|
 | 
						|
function parseNDigits(n, string, valueCallback) {
 | 
						|
  switch (n) {
 | 
						|
    case 1:
 | 
						|
      return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);
 | 
						|
 | 
						|
    case 2:
 | 
						|
      return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);
 | 
						|
 | 
						|
    case 3:
 | 
						|
      return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);
 | 
						|
 | 
						|
    case 4:
 | 
						|
      return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);
 | 
						|
 | 
						|
    default:
 | 
						|
      return parseNumericPattern(new RegExp('^\\d{1,' + n + '}'), string, valueCallback);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function parseNDigitsSigned(n, string, valueCallback) {
 | 
						|
  switch (n) {
 | 
						|
    case 1:
 | 
						|
      return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);
 | 
						|
 | 
						|
    case 2:
 | 
						|
      return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);
 | 
						|
 | 
						|
    case 3:
 | 
						|
      return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);
 | 
						|
 | 
						|
    case 4:
 | 
						|
      return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);
 | 
						|
 | 
						|
    default:
 | 
						|
      return parseNumericPattern(new RegExp('^-?\\d{1,' + n + '}'), string, valueCallback);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function dayPeriodEnumToHours(enumValue) {
 | 
						|
  switch (enumValue) {
 | 
						|
    case 'morning':
 | 
						|
      return 4;
 | 
						|
 | 
						|
    case 'evening':
 | 
						|
      return 17;
 | 
						|
 | 
						|
    case 'pm':
 | 
						|
    case 'noon':
 | 
						|
    case 'afternoon':
 | 
						|
      return 12;
 | 
						|
 | 
						|
    case 'am':
 | 
						|
    case 'midnight':
 | 
						|
    case 'night':
 | 
						|
    default:
 | 
						|
      return 0;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function normalizeTwoDigitYear(twoDigitYear, currentYear) {
 | 
						|
  var isCommonEra = currentYear > 0; // Absolute number of the current year:
 | 
						|
  // 1 -> 1 AC
 | 
						|
  // 0 -> 1 BC
 | 
						|
  // -1 -> 2 BC
 | 
						|
 | 
						|
  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;
 | 
						|
  var result;
 | 
						|
 | 
						|
  if (absCurrentYear <= 50) {
 | 
						|
    result = twoDigitYear || 100;
 | 
						|
  } else {
 | 
						|
    var rangeEnd = absCurrentYear + 50;
 | 
						|
    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;
 | 
						|
    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;
 | 
						|
    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);
 | 
						|
  }
 | 
						|
 | 
						|
  return isCommonEra ? result : 1 - result;
 | 
						|
}
 | 
						|
 | 
						|
var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 | 
						|
var DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation
 | 
						|
 | 
						|
function isLeapYearIndex(year) {
 | 
						|
  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;
 | 
						|
}
 | 
						|
/*
 | 
						|
 * |     | Unit                           |     | Unit                           |
 | 
						|
 * |-----|--------------------------------|-----|--------------------------------|
 | 
						|
 * |  a  | AM, PM                         |  A* | Milliseconds in day            |
 | 
						|
 * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |
 | 
						|
 * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |
 | 
						|
 * |  d  | Day of month                   |  D  | Day of year                    |
 | 
						|
 * |  e  | Local day of week              |  E  | Day of week                    |
 | 
						|
 * |  f  |                                |  F* | Day of week in month           |
 | 
						|
 * |  g* | Modified Julian day            |  G  | Era                            |
 | 
						|
 * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |
 | 
						|
 * |  i! | ISO day of week                |  I! | ISO week of year               |
 | 
						|
 * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |
 | 
						|
 * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |
 | 
						|
 * |  l* | (deprecated)                   |  L  | Stand-alone month              |
 | 
						|
 * |  m  | Minute                         |  M  | Month                          |
 | 
						|
 * |  n  |                                |  N  |                                |
 | 
						|
 * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |
 | 
						|
 * |  p  |                                |  P  |                                |
 | 
						|
 * |  q  | Stand-alone quarter            |  Q  | Quarter                        |
 | 
						|
 * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |
 | 
						|
 * |  s  | Second                         |  S  | Fraction of second             |
 | 
						|
 * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |
 | 
						|
 * |  u  | Extended year                  |  U* | Cyclic year                    |
 | 
						|
 * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |
 | 
						|
 * |  w  | Local week of year             |  W* | Week of month                  |
 | 
						|
 * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |
 | 
						|
 * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |
 | 
						|
 * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |
 | 
						|
 *
 | 
						|
 * Letters marked by * are not implemented but reserved by Unicode standard.
 | 
						|
 *
 | 
						|
 * Letters marked by ! are non-standard, but implemented by date-fns:
 | 
						|
 * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)
 | 
						|
 * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,
 | 
						|
 *   i.e. 7 for Sunday, 1 for Monday, etc.
 | 
						|
 * - `I` is ISO week of year, as opposed to `w` which is local week of year.
 | 
						|
 * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.
 | 
						|
 *   `R` is supposed to be used in conjunction with `I` and `i`
 | 
						|
 *   for universal ISO week-numbering date, whereas
 | 
						|
 *   `Y` is supposed to be used in conjunction with `w` and `e`
 | 
						|
 *   for week-numbering date specific to the locale.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
var parsers = {
 | 
						|
  // Era
 | 
						|
  G: {
 | 
						|
    priority: 140,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        // AD, BC
 | 
						|
        case 'G':
 | 
						|
        case 'GG':
 | 
						|
        case 'GGG':
 | 
						|
          return match.era(string, {
 | 
						|
            width: 'abbreviated'
 | 
						|
          }) || match.era(string, {
 | 
						|
            width: 'narrow'
 | 
						|
          });
 | 
						|
        // A, B
 | 
						|
 | 
						|
        case 'GGGGG':
 | 
						|
          return match.era(string, {
 | 
						|
            width: 'narrow'
 | 
						|
          });
 | 
						|
        // Anno Domini, Before Christ
 | 
						|
 | 
						|
        case 'GGGG':
 | 
						|
        default:
 | 
						|
          return match.era(string, {
 | 
						|
            width: 'wide'
 | 
						|
          }) || match.era(string, {
 | 
						|
            width: 'abbreviated'
 | 
						|
          }) || match.era(string, {
 | 
						|
            width: 'narrow'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, flags, value, _options) {
 | 
						|
      flags.era = value;
 | 
						|
      date.setUTCFullYear(value, 0, 1);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['R', 'u', 't', 'T']
 | 
						|
  },
 | 
						|
  // Year
 | 
						|
  y: {
 | 
						|
    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns
 | 
						|
    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |
 | 
						|
    // |----------|-------|----|-------|-------|-------|
 | 
						|
    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |
 | 
						|
    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |
 | 
						|
    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |
 | 
						|
    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |
 | 
						|
    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |
 | 
						|
    priority: 130,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      var valueCallback = function (year) {
 | 
						|
        return {
 | 
						|
          year: year,
 | 
						|
          isTwoDigitYear: token === 'yy'
 | 
						|
        };
 | 
						|
      };
 | 
						|
 | 
						|
      switch (token) {
 | 
						|
        case 'y':
 | 
						|
          return parseNDigits(4, string, valueCallback);
 | 
						|
 | 
						|
        case 'yo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'year',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string, valueCallback);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value.isTwoDigitYear || value.year > 0;
 | 
						|
    },
 | 
						|
    set: function (date, flags, value, _options) {
 | 
						|
      var currentYear = date.getUTCFullYear();
 | 
						|
 | 
						|
      if (value.isTwoDigitYear) {
 | 
						|
        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);
 | 
						|
        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);
 | 
						|
        date.setUTCHours(0, 0, 0, 0);
 | 
						|
        return date;
 | 
						|
      }
 | 
						|
 | 
						|
      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;
 | 
						|
      date.setUTCFullYear(year, 0, 1);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Local week-numbering year
 | 
						|
  Y: {
 | 
						|
    priority: 130,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      var valueCallback = function (year) {
 | 
						|
        return {
 | 
						|
          year: year,
 | 
						|
          isTwoDigitYear: token === 'YY'
 | 
						|
        };
 | 
						|
      };
 | 
						|
 | 
						|
      switch (token) {
 | 
						|
        case 'Y':
 | 
						|
          return parseNDigits(4, string, valueCallback);
 | 
						|
 | 
						|
        case 'Yo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'year',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string, valueCallback);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value.isTwoDigitYear || value.year > 0;
 | 
						|
    },
 | 
						|
    set: function (date, flags, value, options) {
 | 
						|
      var currentYear = (0, _index.default)(date, options);
 | 
						|
 | 
						|
      if (value.isTwoDigitYear) {
 | 
						|
        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);
 | 
						|
        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);
 | 
						|
        date.setUTCHours(0, 0, 0, 0);
 | 
						|
        return (0, _index7.default)(date, options);
 | 
						|
      }
 | 
						|
 | 
						|
      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;
 | 
						|
      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return (0, _index7.default)(date, options);
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']
 | 
						|
  },
 | 
						|
  // ISO week-numbering year
 | 
						|
  R: {
 | 
						|
    priority: 130,
 | 
						|
    parse: function (string, token, _match, _options) {
 | 
						|
      if (token === 'R') {
 | 
						|
        return parseNDigitsSigned(4, string);
 | 
						|
      }
 | 
						|
 | 
						|
      return parseNDigitsSigned(token.length, string);
 | 
						|
    },
 | 
						|
    set: function (_date, _flags, value, _options) {
 | 
						|
      var firstWeekOfYear = new Date(0);
 | 
						|
      firstWeekOfYear.setUTCFullYear(value, 0, 4);
 | 
						|
      firstWeekOfYear.setUTCHours(0, 0, 0, 0);
 | 
						|
      return (0, _index6.default)(firstWeekOfYear);
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Extended year
 | 
						|
  u: {
 | 
						|
    priority: 130,
 | 
						|
    parse: function (string, token, _match, _options) {
 | 
						|
      if (token === 'u') {
 | 
						|
        return parseNDigitsSigned(4, string);
 | 
						|
      }
 | 
						|
 | 
						|
      return parseNDigitsSigned(token.length, string);
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCFullYear(value, 0, 1);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Quarter
 | 
						|
  Q: {
 | 
						|
    priority: 120,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        // 1, 2, 3, 4
 | 
						|
        case 'Q':
 | 
						|
        case 'QQ':
 | 
						|
          // 01, 02, 03, 04
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
        // 1st, 2nd, 3rd, 4th
 | 
						|
 | 
						|
        case 'Qo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'quarter'
 | 
						|
          });
 | 
						|
        // Q1, Q2, Q3, Q4
 | 
						|
 | 
						|
        case 'QQQ':
 | 
						|
          return match.quarter(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.quarter(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // 1, 2, 3, 4 (narrow quarter; could be not numerical)
 | 
						|
 | 
						|
        case 'QQQQQ':
 | 
						|
          return match.quarter(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // 1st quarter, 2nd quarter, ...
 | 
						|
 | 
						|
        case 'QQQQ':
 | 
						|
        default:
 | 
						|
          return match.quarter(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.quarter(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.quarter(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 1 && value <= 4;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCMonth((value - 1) * 3, 1);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Stand-alone quarter
 | 
						|
  q: {
 | 
						|
    priority: 120,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        // 1, 2, 3, 4
 | 
						|
        case 'q':
 | 
						|
        case 'qq':
 | 
						|
          // 01, 02, 03, 04
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
        // 1st, 2nd, 3rd, 4th
 | 
						|
 | 
						|
        case 'qo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'quarter'
 | 
						|
          });
 | 
						|
        // Q1, Q2, Q3, Q4
 | 
						|
 | 
						|
        case 'qqq':
 | 
						|
          return match.quarter(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.quarter(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
        // 1, 2, 3, 4 (narrow quarter; could be not numerical)
 | 
						|
 | 
						|
        case 'qqqqq':
 | 
						|
          return match.quarter(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
        // 1st quarter, 2nd quarter, ...
 | 
						|
 | 
						|
        case 'qqqq':
 | 
						|
        default:
 | 
						|
          return match.quarter(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.quarter(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.quarter(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 1 && value <= 4;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCMonth((value - 1) * 3, 1);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Month
 | 
						|
  M: {
 | 
						|
    priority: 110,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      var valueCallback = function (value) {
 | 
						|
        return value - 1;
 | 
						|
      };
 | 
						|
 | 
						|
      switch (token) {
 | 
						|
        // 1, 2, ..., 12
 | 
						|
        case 'M':
 | 
						|
          return parseNumericPattern(numericPatterns.month, string, valueCallback);
 | 
						|
        // 01, 02, ..., 12
 | 
						|
 | 
						|
        case 'MM':
 | 
						|
          return parseNDigits(2, string, valueCallback);
 | 
						|
        // 1st, 2nd, ..., 12th
 | 
						|
 | 
						|
        case 'Mo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'month',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
        // Jan, Feb, ..., Dec
 | 
						|
 | 
						|
        case 'MMM':
 | 
						|
          return match.month(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.month(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // J, F, ..., D
 | 
						|
 | 
						|
        case 'MMMMM':
 | 
						|
          return match.month(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // January, February, ..., December
 | 
						|
 | 
						|
        case 'MMMM':
 | 
						|
        default:
 | 
						|
          return match.month(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.month(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.month(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 11;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCMonth(value, 1);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Stand-alone month
 | 
						|
  L: {
 | 
						|
    priority: 110,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      var valueCallback = function (value) {
 | 
						|
        return value - 1;
 | 
						|
      };
 | 
						|
 | 
						|
      switch (token) {
 | 
						|
        // 1, 2, ..., 12
 | 
						|
        case 'L':
 | 
						|
          return parseNumericPattern(numericPatterns.month, string, valueCallback);
 | 
						|
        // 01, 02, ..., 12
 | 
						|
 | 
						|
        case 'LL':
 | 
						|
          return parseNDigits(2, string, valueCallback);
 | 
						|
        // 1st, 2nd, ..., 12th
 | 
						|
 | 
						|
        case 'Lo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'month',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
        // Jan, Feb, ..., Dec
 | 
						|
 | 
						|
        case 'LLL':
 | 
						|
          return match.month(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.month(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
        // J, F, ..., D
 | 
						|
 | 
						|
        case 'LLLLL':
 | 
						|
          return match.month(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
        // January, February, ..., December
 | 
						|
 | 
						|
        case 'LLLL':
 | 
						|
        default:
 | 
						|
          return match.month(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.month(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.month(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 11;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCMonth(value, 1);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Local week of year
 | 
						|
  w: {
 | 
						|
    priority: 100,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'w':
 | 
						|
          return parseNumericPattern(numericPatterns.week, string);
 | 
						|
 | 
						|
        case 'wo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'week'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 1 && value <= 53;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, options) {
 | 
						|
      return (0, _index7.default)((0, _index5.default)(date, value, options), options);
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']
 | 
						|
  },
 | 
						|
  // ISO week of year
 | 
						|
  I: {
 | 
						|
    priority: 100,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'I':
 | 
						|
          return parseNumericPattern(numericPatterns.week, string);
 | 
						|
 | 
						|
        case 'Io':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'week'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 1 && value <= 53;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, options) {
 | 
						|
      return (0, _index6.default)((0, _index4.default)(date, value, options), options);
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Day of the month
 | 
						|
  d: {
 | 
						|
    priority: 90,
 | 
						|
    subPriority: 1,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'd':
 | 
						|
          return parseNumericPattern(numericPatterns.date, string);
 | 
						|
 | 
						|
        case 'do':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'date'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (date, value, _options) {
 | 
						|
      var year = date.getUTCFullYear();
 | 
						|
      var isLeapYear = isLeapYearIndex(year);
 | 
						|
      var month = date.getUTCMonth();
 | 
						|
 | 
						|
      if (isLeapYear) {
 | 
						|
        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];
 | 
						|
      } else {
 | 
						|
        return value >= 1 && value <= DAYS_IN_MONTH[month];
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCDate(value);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Day of year
 | 
						|
  D: {
 | 
						|
    priority: 90,
 | 
						|
    subPriority: 1,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'D':
 | 
						|
        case 'DD':
 | 
						|
          return parseNumericPattern(numericPatterns.dayOfYear, string);
 | 
						|
 | 
						|
        case 'Do':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'date'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (date, value, _options) {
 | 
						|
      var year = date.getUTCFullYear();
 | 
						|
      var isLeapYear = isLeapYearIndex(year);
 | 
						|
 | 
						|
      if (isLeapYear) {
 | 
						|
        return value >= 1 && value <= 366;
 | 
						|
      } else {
 | 
						|
        return value >= 1 && value <= 365;
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCMonth(0, value);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Day of week
 | 
						|
  E: {
 | 
						|
    priority: 90,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        // Tue
 | 
						|
        case 'E':
 | 
						|
        case 'EE':
 | 
						|
        case 'EEE':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // T
 | 
						|
 | 
						|
        case 'EEEEE':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // Tu
 | 
						|
 | 
						|
        case 'EEEEEE':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // Tuesday
 | 
						|
 | 
						|
        case 'EEEE':
 | 
						|
        default:
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 6;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, options) {
 | 
						|
      date = (0, _index2.default)(date, value, options);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Local day of week
 | 
						|
  e: {
 | 
						|
    priority: 90,
 | 
						|
    parse: function (string, token, match, options) {
 | 
						|
      var valueCallback = function (value) {
 | 
						|
        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;
 | 
						|
        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;
 | 
						|
      };
 | 
						|
 | 
						|
      switch (token) {
 | 
						|
        // 3
 | 
						|
        case 'e':
 | 
						|
        case 'ee':
 | 
						|
          // 03
 | 
						|
          return parseNDigits(token.length, string, valueCallback);
 | 
						|
        // 3rd
 | 
						|
 | 
						|
        case 'eo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'day',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
        // Tue
 | 
						|
 | 
						|
        case 'eee':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // T
 | 
						|
 | 
						|
        case 'eeeee':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // Tu
 | 
						|
 | 
						|
        case 'eeeeee':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
        // Tuesday
 | 
						|
 | 
						|
        case 'eeee':
 | 
						|
        default:
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 6;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, options) {
 | 
						|
      date = (0, _index2.default)(date, value, options);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // Stand-alone local day of week
 | 
						|
  c: {
 | 
						|
    priority: 90,
 | 
						|
    parse: function (string, token, match, options) {
 | 
						|
      var valueCallback = function (value) {
 | 
						|
        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;
 | 
						|
        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;
 | 
						|
      };
 | 
						|
 | 
						|
      switch (token) {
 | 
						|
        // 3
 | 
						|
        case 'c':
 | 
						|
        case 'cc':
 | 
						|
          // 03
 | 
						|
          return parseNDigits(token.length, string, valueCallback);
 | 
						|
        // 3rd
 | 
						|
 | 
						|
        case 'co':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'day',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
        // Tue
 | 
						|
 | 
						|
        case 'ccc':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
        // T
 | 
						|
 | 
						|
        case 'ccccc':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
        // Tu
 | 
						|
 | 
						|
        case 'cccccc':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
        // Tuesday
 | 
						|
 | 
						|
        case 'cccc':
 | 
						|
        default:
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'standalone'
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'standalone'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 6;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, options) {
 | 
						|
      date = (0, _index2.default)(date, value, options);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']
 | 
						|
  },
 | 
						|
  // ISO day of week
 | 
						|
  i: {
 | 
						|
    priority: 90,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      var valueCallback = function (value) {
 | 
						|
        if (value === 0) {
 | 
						|
          return 7;
 | 
						|
        }
 | 
						|
 | 
						|
        return value;
 | 
						|
      };
 | 
						|
 | 
						|
      switch (token) {
 | 
						|
        // 2
 | 
						|
        case 'i':
 | 
						|
        case 'ii':
 | 
						|
          // 02
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
        // 2nd
 | 
						|
 | 
						|
        case 'io':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'day'
 | 
						|
          });
 | 
						|
        // Tue
 | 
						|
 | 
						|
        case 'iii':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
        // T
 | 
						|
 | 
						|
        case 'iiiii':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
        // Tu
 | 
						|
 | 
						|
        case 'iiiiii':
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
        // Tuesday
 | 
						|
 | 
						|
        case 'iiii':
 | 
						|
        default:
 | 
						|
          return match.day(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'short',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          }) || match.day(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting',
 | 
						|
            valueCallback: valueCallback
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 1 && value <= 7;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, options) {
 | 
						|
      date = (0, _index3.default)(date, value, options);
 | 
						|
      date.setUTCHours(0, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']
 | 
						|
  },
 | 
						|
  // AM or PM
 | 
						|
  a: {
 | 
						|
    priority: 80,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'a':
 | 
						|
        case 'aa':
 | 
						|
        case 'aaa':
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
 | 
						|
        case 'aaaaa':
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
 | 
						|
        case 'aaaa':
 | 
						|
        default:
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']
 | 
						|
  },
 | 
						|
  // AM, PM, midnight
 | 
						|
  b: {
 | 
						|
    priority: 80,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'b':
 | 
						|
        case 'bb':
 | 
						|
        case 'bbb':
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
 | 
						|
        case 'bbbbb':
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
 | 
						|
        case 'bbbb':
 | 
						|
        default:
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']
 | 
						|
  },
 | 
						|
  // in the morning, in the afternoon, in the evening, at night
 | 
						|
  B: {
 | 
						|
    priority: 80,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'B':
 | 
						|
        case 'BB':
 | 
						|
        case 'BBB':
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
 | 
						|
        case 'BBBBB':
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
 | 
						|
        case 'BBBB':
 | 
						|
        default:
 | 
						|
          return match.dayPeriod(string, {
 | 
						|
            width: 'wide',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'abbreviated',
 | 
						|
            context: 'formatting'
 | 
						|
          }) || match.dayPeriod(string, {
 | 
						|
            width: 'narrow',
 | 
						|
            context: 'formatting'
 | 
						|
          });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['a', 'b', 't', 'T']
 | 
						|
  },
 | 
						|
  // Hour [1-12]
 | 
						|
  h: {
 | 
						|
    priority: 70,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'h':
 | 
						|
          return parseNumericPattern(numericPatterns.hour12h, string);
 | 
						|
 | 
						|
        case 'ho':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'hour'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 1 && value <= 12;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      var isPM = date.getUTCHours() >= 12;
 | 
						|
 | 
						|
      if (isPM && value < 12) {
 | 
						|
        date.setUTCHours(value + 12, 0, 0, 0);
 | 
						|
      } else if (!isPM && value === 12) {
 | 
						|
        date.setUTCHours(0, 0, 0, 0);
 | 
						|
      } else {
 | 
						|
        date.setUTCHours(value, 0, 0, 0);
 | 
						|
      }
 | 
						|
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['H', 'K', 'k', 't', 'T']
 | 
						|
  },
 | 
						|
  // Hour [0-23]
 | 
						|
  H: {
 | 
						|
    priority: 70,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'H':
 | 
						|
          return parseNumericPattern(numericPatterns.hour23h, string);
 | 
						|
 | 
						|
        case 'Ho':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'hour'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 23;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCHours(value, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']
 | 
						|
  },
 | 
						|
  // Hour [0-11]
 | 
						|
  K: {
 | 
						|
    priority: 70,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'K':
 | 
						|
          return parseNumericPattern(numericPatterns.hour11h, string);
 | 
						|
 | 
						|
        case 'Ko':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'hour'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 11;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      var isPM = date.getUTCHours() >= 12;
 | 
						|
 | 
						|
      if (isPM && value < 12) {
 | 
						|
        date.setUTCHours(value + 12, 0, 0, 0);
 | 
						|
      } else {
 | 
						|
        date.setUTCHours(value, 0, 0, 0);
 | 
						|
      }
 | 
						|
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']
 | 
						|
  },
 | 
						|
  // Hour [1-24]
 | 
						|
  k: {
 | 
						|
    priority: 70,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'k':
 | 
						|
          return parseNumericPattern(numericPatterns.hour24h, string);
 | 
						|
 | 
						|
        case 'ko':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'hour'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 1 && value <= 24;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      var hours = value <= 24 ? value % 24 : value;
 | 
						|
      date.setUTCHours(hours, 0, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']
 | 
						|
  },
 | 
						|
  // Minute
 | 
						|
  m: {
 | 
						|
    priority: 60,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'm':
 | 
						|
          return parseNumericPattern(numericPatterns.minute, string);
 | 
						|
 | 
						|
        case 'mo':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'minute'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 59;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCMinutes(value, 0, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['t', 'T']
 | 
						|
  },
 | 
						|
  // Second
 | 
						|
  s: {
 | 
						|
    priority: 50,
 | 
						|
    parse: function (string, token, match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 's':
 | 
						|
          return parseNumericPattern(numericPatterns.second, string);
 | 
						|
 | 
						|
        case 'so':
 | 
						|
          return match.ordinalNumber(string, {
 | 
						|
            unit: 'second'
 | 
						|
          });
 | 
						|
 | 
						|
        default:
 | 
						|
          return parseNDigits(token.length, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    validate: function (_date, value, _options) {
 | 
						|
      return value >= 0 && value <= 59;
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCSeconds(value, 0);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['t', 'T']
 | 
						|
  },
 | 
						|
  // Fraction of second
 | 
						|
  S: {
 | 
						|
    priority: 30,
 | 
						|
    parse: function (string, token, _match, _options) {
 | 
						|
      var valueCallback = function (value) {
 | 
						|
        return Math.floor(value * Math.pow(10, -token.length + 3));
 | 
						|
      };
 | 
						|
 | 
						|
      return parseNDigits(token.length, string, valueCallback);
 | 
						|
    },
 | 
						|
    set: function (date, _flags, value, _options) {
 | 
						|
      date.setUTCMilliseconds(value);
 | 
						|
      return date;
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['t', 'T']
 | 
						|
  },
 | 
						|
  // Timezone (ISO-8601. +00:00 is `'Z'`)
 | 
						|
  X: {
 | 
						|
    priority: 10,
 | 
						|
    parse: function (string, token, _match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'X':
 | 
						|
          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);
 | 
						|
 | 
						|
        case 'XX':
 | 
						|
          return parseTimezonePattern(timezonePatterns.basic, string);
 | 
						|
 | 
						|
        case 'XXXX':
 | 
						|
          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);
 | 
						|
 | 
						|
        case 'XXXXX':
 | 
						|
          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);
 | 
						|
 | 
						|
        case 'XXX':
 | 
						|
        default:
 | 
						|
          return parseTimezonePattern(timezonePatterns.extended, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, flags, value, _options) {
 | 
						|
      if (flags.timestampIsSet) {
 | 
						|
        return date;
 | 
						|
      }
 | 
						|
 | 
						|
      return new Date(date.getTime() - value);
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['t', 'T', 'x']
 | 
						|
  },
 | 
						|
  // Timezone (ISO-8601)
 | 
						|
  x: {
 | 
						|
    priority: 10,
 | 
						|
    parse: function (string, token, _match, _options) {
 | 
						|
      switch (token) {
 | 
						|
        case 'x':
 | 
						|
          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);
 | 
						|
 | 
						|
        case 'xx':
 | 
						|
          return parseTimezonePattern(timezonePatterns.basic, string);
 | 
						|
 | 
						|
        case 'xxxx':
 | 
						|
          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);
 | 
						|
 | 
						|
        case 'xxxxx':
 | 
						|
          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);
 | 
						|
 | 
						|
        case 'xxx':
 | 
						|
        default:
 | 
						|
          return parseTimezonePattern(timezonePatterns.extended, string);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (date, flags, value, _options) {
 | 
						|
      if (flags.timestampIsSet) {
 | 
						|
        return date;
 | 
						|
      }
 | 
						|
 | 
						|
      return new Date(date.getTime() - value);
 | 
						|
    },
 | 
						|
    incompatibleTokens: ['t', 'T', 'X']
 | 
						|
  },
 | 
						|
  // Seconds timestamp
 | 
						|
  t: {
 | 
						|
    priority: 40,
 | 
						|
    parse: function (string, _token, _match, _options) {
 | 
						|
      return parseAnyDigitsSigned(string);
 | 
						|
    },
 | 
						|
    set: function (_date, _flags, value, _options) {
 | 
						|
      return [new Date(value * 1000), {
 | 
						|
        timestampIsSet: true
 | 
						|
      }];
 | 
						|
    },
 | 
						|
    incompatibleTokens: '*'
 | 
						|
  },
 | 
						|
  // Milliseconds timestamp
 | 
						|
  T: {
 | 
						|
    priority: 20,
 | 
						|
    parse: function (string, _token, _match, _options) {
 | 
						|
      return parseAnyDigitsSigned(string);
 | 
						|
    },
 | 
						|
    set: function (_date, _flags, value, _options) {
 | 
						|
      return [new Date(value), {
 | 
						|
        timestampIsSet: true
 | 
						|
      }];
 | 
						|
    },
 | 
						|
    incompatibleTokens: '*'
 | 
						|
  }
 | 
						|
};
 | 
						|
var _default = parsers;
 | 
						|
exports.default = _default;
 | 
						|
module.exports = exports.default; |