From bbb4a910a0f102f2948ab3d5c688214220dc3eb2 Mon Sep 17 00:00:00 2001 From: Daniel Triendl Date: Mon, 14 Oct 2024 11:01:38 +0200 Subject: [PATCH] Bump version to 9.2.0 --- 3CX_TAPI.user.js | 2099 ++++++++++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 1205 insertions(+), 896 deletions(-) diff --git a/3CX_TAPI.user.js b/3CX_TAPI.user.js index f14ba6a..e34d7ad 100644 --- a/3CX_TAPI.user.js +++ b/3CX_TAPI.user.js @@ -1,16 +1,16 @@ // ==UserScript== // @name 3CX TAPI // @namespace http://cp-solutions.at -// @version 9.1.1 +// @version 9.2.0 // @author Daniel Triendl // @copyright Copyright 2021 CP Solutions GmbH // @source https://source.cp-austria.at/git/CPATRD/3cx_tapi.git // @downloadURL https://source.cp-austria.at/git/CPATRD/3cx_tapi/raw/branch/master/3CX_TAPI.user.js -// @match https://192.168.0.154:5001/webclient* -// @match https://cpsolution.my3cx.at:5001/webclient* +// @match https://192.168.0.154:5001/* +// @match https://cpsolution.my3cx.at:5001/* // @require https://cdn.jsdelivr.net/gh/CoeJoder/waitForKeyElements.js@v1.2/waitForKeyElements.js -// @require https://cdn.jsdelivr.net/npm/axios@^1.4.0/dist/axios.min.js -// @require https://cdn.jsdelivr.net/npm/axios-userscript-adapter@^0.2.0-alpha.2/dist/axiosGmxhrAdapter.min.js +// @require https://cdn.jsdelivr.net/npm/axios@undefined/dist/axios.min.js +// @require https://cdn.jsdelivr.net/npm/axios-userscript-adapter@undefined/dist/axiosGmxhrAdapter.min.js // @grant GM.xmlHttpRequest // @grant GM.notification // @grant GM.getValue @@ -483,7 +483,7 @@ module.exports = function (i) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); @@ -548,7 +548,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.tapi-search-autocomplete { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); @@ -907,304 +907,42 @@ var __webpack_exports__ = {}; (() => { "use strict"; -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/utils/pattern.js -function repeatedTimeunitPattern(prefix, singleTimeunitPattern) { - const singleTimeunitPatternNoCapture = singleTimeunitPattern.replace(/\((?!\?)/g, "(?:"); - return `${prefix}${singleTimeunitPatternNoCapture}\\s{0,5}(?:,?\\s{0,5}${singleTimeunitPatternNoCapture}){0,10}`; -} -function extractTerms(dictionary) { - let keys; - if (dictionary instanceof Array) { - keys = [...dictionary]; - } else if (dictionary instanceof Map) { - keys = Array.from(dictionary.keys()); - } else { - keys = Object.keys(dictionary); - } - return keys; -} -function matchAnyPattern(dictionary) { - const joinedTerms = extractTerms(dictionary).sort((a, b) => b.length - a.length).join("|").replace(/\./g, "\\."); - return `(?:${joinedTerms})`; -} -// EXTERNAL MODULE: ./node_modules/dayjs/dayjs.min.js -var dayjs_min = __webpack_require__("./node_modules/dayjs/dayjs.min.js"); -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/calculation/years.js - -function findMostLikelyADYear(yearNumber) { - if (yearNumber < 100) { - if (yearNumber > 50) { - yearNumber = yearNumber + 1900; - } else { - yearNumber = yearNumber + 2000; - } - } - return yearNumber; -} -function findYearClosestToRef(refDate, day, month) { - const refMoment = dayjs_min(refDate); - let dateMoment = refMoment; - dateMoment = dateMoment.month(month - 1); - dateMoment = dateMoment.date(day); - dateMoment = dateMoment.year(refMoment.year()); - const nextYear = dateMoment.add(1, "y"); - const lastYear = dateMoment.add(-1, "y"); - if (Math.abs(nextYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) { - dateMoment = nextYear; - } else if (Math.abs(lastYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) { - dateMoment = lastYear; - } - return dateMoment.year(); -} -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/constants.js - - -const WEEKDAY_DICTIONARY = { - sunday: 0, - sun: 0, - "sun.": 0, - monday: 1, - mon: 1, - "mon.": 1, - tuesday: 2, - tue: 2, - "tue.": 2, - wednesday: 3, - wed: 3, - "wed.": 3, - thursday: 4, - thurs: 4, - "thurs.": 4, - thur: 4, - "thur.": 4, - thu: 4, - "thu.": 4, - friday: 5, - fri: 5, - "fri.": 5, - saturday: 6, - sat: 6, - "sat.": 6 -}; -const FULL_MONTH_NAME_DICTIONARY = { - january: 1, - february: 2, - march: 3, - april: 4, - may: 5, - june: 6, - july: 7, - august: 8, - september: 9, - october: 10, - november: 11, - december: 12 -}; -const MONTH_DICTIONARY = { - ...FULL_MONTH_NAME_DICTIONARY, - jan: 1, - "jan.": 1, - feb: 2, - "feb.": 2, - mar: 3, - "mar.": 3, - apr: 4, - "apr.": 4, - jun: 6, - "jun.": 6, - jul: 7, - "jul.": 7, - aug: 8, - "aug.": 8, - sep: 9, - "sep.": 9, - sept: 9, - "sept.": 9, - oct: 10, - "oct.": 10, - nov: 11, - "nov.": 11, - dec: 12, - "dec.": 12 -}; -const INTEGER_WORD_DICTIONARY = { - one: 1, - two: 2, - three: 3, - four: 4, - five: 5, - six: 6, - seven: 7, - eight: 8, - nine: 9, - ten: 10, - eleven: 11, - twelve: 12 -}; -const ORDINAL_WORD_DICTIONARY = { - first: 1, - second: 2, - third: 3, - fourth: 4, - fifth: 5, - sixth: 6, - seventh: 7, - eighth: 8, - ninth: 9, - tenth: 10, - eleventh: 11, - twelfth: 12, - thirteenth: 13, - fourteenth: 14, - fifteenth: 15, - sixteenth: 16, - seventeenth: 17, - eighteenth: 18, - nineteenth: 19, - twentieth: 20, - "twenty first": 21, - "twenty-first": 21, - "twenty second": 22, - "twenty-second": 22, - "twenty third": 23, - "twenty-third": 23, - "twenty fourth": 24, - "twenty-fourth": 24, - "twenty fifth": 25, - "twenty-fifth": 25, - "twenty sixth": 26, - "twenty-sixth": 26, - "twenty seventh": 27, - "twenty-seventh": 27, - "twenty eighth": 28, - "twenty-eighth": 28, - "twenty ninth": 29, - "twenty-ninth": 29, - "thirtieth": 30, - "thirty first": 31, - "thirty-first": 31 -}; -const TIME_UNIT_DICTIONARY_NO_ABBR = { - second: "second", - seconds: "second", - minute: "minute", - minutes: "minute", - hour: "hour", - hours: "hour", - day: "d", - days: "d", - week: "week", - weeks: "week", - month: "month", - months: "month", - quarter: "quarter", - quarters: "quarter", - year: "year", - years: "year" -}; -const TIME_UNIT_DICTIONARY = { - s: "second", - sec: "second", - second: "second", - seconds: "second", - m: "minute", - min: "minute", - mins: "minute", - minute: "minute", - minutes: "minute", - h: "hour", - hr: "hour", - hrs: "hour", - hour: "hour", - hours: "hour", - d: "d", - day: "d", - days: "d", - w: "w", - week: "week", - weeks: "week", - mo: "month", - mon: "month", - mos: "month", - month: "month", - months: "month", - qtr: "quarter", - quarter: "quarter", - quarters: "quarter", - y: "year", - yr: "year", - year: "year", - years: "year", - ...TIME_UNIT_DICTIONARY_NO_ABBR -}; -const NUMBER_PATTERN = `(?:${matchAnyPattern(INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|the|a?\\s{0,2}couple\\s{0,2}(?:of)?)`; -function parseNumberPattern(match) { - const num = match.toLowerCase(); - if (INTEGER_WORD_DICTIONARY[num] !== undefined) { - return INTEGER_WORD_DICTIONARY[num]; - } else if (num === "a" || num === "an" || num == "the") { - return 1; - } else if (num.match(/few/)) { - return 3; - } else if (num.match(/half/)) { - return 0.5; - } else if (num.match(/couple/)) { - return 2; - } else if (num.match(/several/)) { - return 7; - } - return parseFloat(num); -} -const ORDINAL_NUMBER_PATTERN = `(?:${matchAnyPattern(ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`; -function parseOrdinalNumberPattern(match) { - let num = match.toLowerCase(); - if (ORDINAL_WORD_DICTIONARY[num] !== undefined) { - return ORDINAL_WORD_DICTIONARY[num]; - } - num = num.replace(/(?:st|nd|rd|th)$/i, ""); - return parseInt(num); -} -const YEAR_PATTERN = `(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9])`; -function parseYear(match) { - if (/BE/i.test(match)) { - match = match.replace(/BE/i, ""); - return parseInt(match) - 543; - } - if (/BCE?/i.test(match)) { - match = match.replace(/BCE?/i, ""); - return -parseInt(match); - } - if (/(AD|CE)/i.test(match)) { - match = match.replace(/(AD|CE)/i, ""); - return parseInt(match); - } - const rawYearNumber = parseInt(match); - return findMostLikelyADYear(rawYearNumber); -} -const SINGLE_TIME_UNIT_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY)})`; -const SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, "i"); -const SINGLE_TIME_UNIT_NO_ABBR_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY_NO_ABBR)})`; -const TIME_UNITS_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_PATTERN); -const TIME_UNITS_NO_ABBR_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_NO_ABBR_PATTERN); -function parseTimeUnits(timeunitText) { - const fragments = {}; - let remainingText = timeunitText; - let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText); - while (match) { - collectDateTimeFragment(fragments, match); - remainingText = remainingText.substring(match[0].length).trim(); - match = SINGLE_TIME_UNIT_REGEX.exec(remainingText); - } - return fragments; -} -function collectDateTimeFragment(fragments, match) { - const num = parseNumberPattern(match[1]); - const unit = TIME_UNIT_DICTIONARY[match[2].toLowerCase()]; - fragments[unit] = num; -} // EXTERNAL MODULE: ./node_modules/dayjs/plugin/quarterOfYear.js var quarterOfYear = __webpack_require__("./node_modules/dayjs/plugin/quarterOfYear.js"); -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/utils/dayjs.js +// EXTERNAL MODULE: ./node_modules/dayjs/dayjs.min.js +var dayjs_min = __webpack_require__("./node_modules/dayjs/dayjs.min.js"); +;// ./node_modules/chrono-node/dist/esm/types.js +var types_Meridiem; +(function (Meridiem) { + Meridiem[Meridiem["AM"] = 0] = "AM"; + Meridiem[Meridiem["PM"] = 1] = "PM"; +})(types_Meridiem || (types_Meridiem = {})); +var Weekday; +(function (Weekday) { + Weekday[Weekday["SUNDAY"] = 0] = "SUNDAY"; + Weekday[Weekday["MONDAY"] = 1] = "MONDAY"; + Weekday[Weekday["TUESDAY"] = 2] = "TUESDAY"; + Weekday[Weekday["WEDNESDAY"] = 3] = "WEDNESDAY"; + Weekday[Weekday["THURSDAY"] = 4] = "THURSDAY"; + Weekday[Weekday["FRIDAY"] = 5] = "FRIDAY"; + Weekday[Weekday["SATURDAY"] = 6] = "SATURDAY"; +})(Weekday || (Weekday = {})); +var Month; +(function (Month) { + Month[Month["JANUARY"] = 1] = "JANUARY"; + Month[Month["FEBRUARY"] = 2] = "FEBRUARY"; + Month[Month["MARCH"] = 3] = "MARCH"; + Month[Month["APRIL"] = 4] = "APRIL"; + Month[Month["MAY"] = 5] = "MAY"; + Month[Month["JUNE"] = 6] = "JUNE"; + Month[Month["JULY"] = 7] = "JULY"; + Month[Month["AUGUST"] = 8] = "AUGUST"; + Month[Month["SEPTEMBER"] = 9] = "SEPTEMBER"; + Month[Month["OCTOBER"] = 10] = "OCTOBER"; + Month[Month["NOVEMBER"] = 11] = "NOVEMBER"; + Month[Month["DECEMBER"] = 12] = "DECEMBER"; +})(Month || (Month = {})); +;// ./node_modules/chrono-node/dist/esm/utils/dayjs.js function assignTheNextDay(component, targetDayJs) { targetDayJs = targetDayJs.add(1, "day"); @@ -1227,9 +965,9 @@ function assignSimilarTime(component, targetDayJs) { component.assign("second", targetDayJs.second()); component.assign("millisecond", targetDayJs.millisecond()); if (component.get("hour") < 12) { - component.assign("meridiem", esm_Meridiem.AM); + component.assign("meridiem", types_Meridiem.AM); } else { - component.assign("meridiem", esm_Meridiem.PM); + component.assign("meridiem", types_Meridiem.PM); } } function implySimilarDate(component, targetDayJs) { @@ -1243,7 +981,7 @@ function implySimilarTime(component, targetDayJs) { component.imply("second", targetDayJs.second()); component.imply("millisecond", targetDayJs.millisecond()); } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/timezone.js +;// ./node_modules/chrono-node/dist/esm/timezone.js const TIMEZONE_ABBR_MAP = { @@ -1507,7 +1245,7 @@ function toTimezoneOffset(timezoneInput, date, timezoneOverrides = {}) { } return matchedTimezone.timezoneOffsetNonDst; } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/results.js +;// ./node_modules/chrono-node/dist/esm/results.js @@ -1537,6 +1275,7 @@ class ReferenceWithTimezone { } class results_ParsingComponents { constructor(reference, knownComponents) { + this._tags = new Set(); this.reference = reference; this.knownValues = {}; this.impliedValues = {}; @@ -1601,7 +1340,7 @@ class results_ParsingComponents { return !this.isCertain("hour") && !this.isCertain("minute") && !this.isCertain("second"); } isOnlyTime() { - return !this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month"); + return !this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month") && !this.isCertain("year"); } isOnlyWeekdayComponent() { return this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month"); @@ -1619,7 +1358,11 @@ class results_ParsingComponents { return true; } toString() { - return `[ParsingComponents {knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`; + return `[ParsingComponents { + tags: ${JSON.stringify(Array.from(this._tags).sort())}, + knownValues: ${JSON.stringify(this.knownValues)}, + impliedValues: ${JSON.stringify(this.impliedValues)}}, + reference: ${JSON.stringify(this.reference)}]`; } dayjs() { return dayjs_min(this.date()); @@ -1629,6 +1372,19 @@ class results_ParsingComponents { const timezoneAdjustment = this.reference.getSystemTimezoneAdjustmentMinute(date, this.get("timezoneOffset")); return new Date(date.getTime() + timezoneAdjustment * 60000); } + addTag(tag) { + this._tags.add(tag); + return this; + } + addTags(tags) { + for (const tag of tags) { + this._tags.add(tag); + } + return this; + } + tags() { + return new Set(this._tags); + } dateWithoutTimezoneAdjustment() { const date = new Date(this.get("year"), this.get("month") - 1, this.get("day"), this.get("hour"), this.get("minute"), this.get("second"), this.get("millisecond")); date.setFullYear(this.get("year")); @@ -1655,10 +1411,12 @@ class results_ParsingComponents { components.assign("day", date.date()); components.assign("month", date.month() + 1); components.assign("year", date.year()); + } else if (fragments["week"]) { + components.assign("day", date.date()); + components.assign("month", date.month() + 1); + components.assign("year", date.year()); + components.imply("weekday", date.day()); } else { - if (fragments["week"]) { - components.imply("weekday", date.day()); - } components.imply("day", date.date()); if (fragments["month"]) { components.assign("month", date.month() + 1); @@ -1694,26 +1452,340 @@ class ParsingResult { date() { return this.start.date(); } + tags() { + const combinedTags = new Set(this.start.tags()); + if (this.end) { + for (const tag of this.end.tags()) { + combinedTags.add(tag); + } + } + return combinedTags; + } toString() { - return `[ParsingResult {index: ${this.index}, text: '${this.text}', ...}]`; + const tags = Array.from(this.tags()).sort(); + return `[ParsingResult {index: ${this.index}, text: '${this.text}', tags: ${JSON.stringify(tags)} ...}]`; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/AbstractParserWithWordBoundary.js +;// ./node_modules/chrono-node/dist/esm/utils/pattern.js +function repeatedTimeunitPattern(prefix, singleTimeunitPattern, connectorPattern = "\\s{0,5},?\\s{0,5}") { + const singleTimeunitPatternNoCapture = singleTimeunitPattern.replace(/\((?!\?)/g, "(?:"); + return `${prefix}${singleTimeunitPatternNoCapture}(?:${connectorPattern}${singleTimeunitPatternNoCapture}){0,10}`; +} +function extractTerms(dictionary) { + let keys; + if (dictionary instanceof Array) { + keys = [...dictionary]; + } else if (dictionary instanceof Map) { + keys = Array.from(dictionary.keys()); + } else { + keys = Object.keys(dictionary); + } + return keys; +} +function matchAnyPattern(dictionary) { + const joinedTerms = extractTerms(dictionary).sort((a, b) => b.length - a.length).join("|").replace(/\./g, "\\."); + return `(?:${joinedTerms})`; +} +;// ./node_modules/chrono-node/dist/esm/calculation/years.js + +function findMostLikelyADYear(yearNumber) { + if (yearNumber < 100) { + if (yearNumber > 50) { + yearNumber = yearNumber + 1900; + } else { + yearNumber = yearNumber + 2000; + } + } + return yearNumber; +} +function findYearClosestToRef(refDate, day, month) { + const refMoment = dayjs_min(refDate); + let dateMoment = refMoment; + dateMoment = dateMoment.month(month - 1); + dateMoment = dateMoment.date(day); + dateMoment = dateMoment.year(refMoment.year()); + const nextYear = dateMoment.add(1, "y"); + const lastYear = dateMoment.add(-1, "y"); + if (Math.abs(nextYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) { + dateMoment = nextYear; + } else if (Math.abs(lastYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) { + dateMoment = lastYear; + } + return dateMoment.year(); +} +;// ./node_modules/chrono-node/dist/esm/locales/en/constants.js + + +const WEEKDAY_DICTIONARY = { + sunday: 0, + sun: 0, + "sun.": 0, + monday: 1, + mon: 1, + "mon.": 1, + tuesday: 2, + tue: 2, + "tue.": 2, + wednesday: 3, + wed: 3, + "wed.": 3, + thursday: 4, + thurs: 4, + "thurs.": 4, + thur: 4, + "thur.": 4, + thu: 4, + "thu.": 4, + friday: 5, + fri: 5, + "fri.": 5, + saturday: 6, + sat: 6, + "sat.": 6 +}; +const FULL_MONTH_NAME_DICTIONARY = { + january: 1, + february: 2, + march: 3, + april: 4, + may: 5, + june: 6, + july: 7, + august: 8, + september: 9, + october: 10, + november: 11, + december: 12 +}; +const MONTH_DICTIONARY = { + ...FULL_MONTH_NAME_DICTIONARY, + jan: 1, + "jan.": 1, + feb: 2, + "feb.": 2, + mar: 3, + "mar.": 3, + apr: 4, + "apr.": 4, + jun: 6, + "jun.": 6, + jul: 7, + "jul.": 7, + aug: 8, + "aug.": 8, + sep: 9, + "sep.": 9, + sept: 9, + "sept.": 9, + oct: 10, + "oct.": 10, + nov: 11, + "nov.": 11, + dec: 12, + "dec.": 12 +}; +const INTEGER_WORD_DICTIONARY = { + one: 1, + two: 2, + three: 3, + four: 4, + five: 5, + six: 6, + seven: 7, + eight: 8, + nine: 9, + ten: 10, + eleven: 11, + twelve: 12 +}; +const ORDINAL_WORD_DICTIONARY = { + first: 1, + second: 2, + third: 3, + fourth: 4, + fifth: 5, + sixth: 6, + seventh: 7, + eighth: 8, + ninth: 9, + tenth: 10, + eleventh: 11, + twelfth: 12, + thirteenth: 13, + fourteenth: 14, + fifteenth: 15, + sixteenth: 16, + seventeenth: 17, + eighteenth: 18, + nineteenth: 19, + twentieth: 20, + "twenty first": 21, + "twenty-first": 21, + "twenty second": 22, + "twenty-second": 22, + "twenty third": 23, + "twenty-third": 23, + "twenty fourth": 24, + "twenty-fourth": 24, + "twenty fifth": 25, + "twenty-fifth": 25, + "twenty sixth": 26, + "twenty-sixth": 26, + "twenty seventh": 27, + "twenty-seventh": 27, + "twenty eighth": 28, + "twenty-eighth": 28, + "twenty ninth": 29, + "twenty-ninth": 29, + "thirtieth": 30, + "thirty first": 31, + "thirty-first": 31 +}; +const TIME_UNIT_DICTIONARY_NO_ABBR = { + second: "second", + seconds: "second", + minute: "minute", + minutes: "minute", + hour: "hour", + hours: "hour", + day: "d", + days: "d", + week: "week", + weeks: "week", + month: "month", + months: "month", + quarter: "quarter", + quarters: "quarter", + year: "year", + years: "year" +}; +const TIME_UNIT_DICTIONARY = { + s: "second", + sec: "second", + second: "second", + seconds: "second", + m: "minute", + min: "minute", + mins: "minute", + minute: "minute", + minutes: "minute", + h: "hour", + hr: "hour", + hrs: "hour", + hour: "hour", + hours: "hour", + d: "d", + day: "d", + days: "d", + w: "w", + week: "week", + weeks: "week", + mo: "month", + mon: "month", + mos: "month", + month: "month", + months: "month", + qtr: "quarter", + quarter: "quarter", + quarters: "quarter", + y: "year", + yr: "year", + year: "year", + years: "year", + ...TIME_UNIT_DICTIONARY_NO_ABBR +}; +const NUMBER_PATTERN = `(?:${matchAnyPattern(INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|the|a?\\s{0,2}couple\\s{0,2}(?:of)?)`; +function parseNumberPattern(match) { + const num = match.toLowerCase(); + if (INTEGER_WORD_DICTIONARY[num] !== undefined) { + return INTEGER_WORD_DICTIONARY[num]; + } else if (num === "a" || num === "an" || num == "the") { + return 1; + } else if (num.match(/few/)) { + return 3; + } else if (num.match(/half/)) { + return 0.5; + } else if (num.match(/couple/)) { + return 2; + } else if (num.match(/several/)) { + return 7; + } + return parseFloat(num); +} +const ORDINAL_NUMBER_PATTERN = `(?:${matchAnyPattern(ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`; +function parseOrdinalNumberPattern(match) { + let num = match.toLowerCase(); + if (ORDINAL_WORD_DICTIONARY[num] !== undefined) { + return ORDINAL_WORD_DICTIONARY[num]; + } + num = num.replace(/(?:st|nd|rd|th)$/i, ""); + return parseInt(num); +} +const YEAR_PATTERN = `(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9]|2[0-5])`; +function parseYear(match) { + if (/BE/i.test(match)) { + match = match.replace(/BE/i, ""); + return parseInt(match) - 543; + } + if (/BCE?/i.test(match)) { + match = match.replace(/BCE?/i, ""); + return -parseInt(match); + } + if (/(AD|CE)/i.test(match)) { + match = match.replace(/(AD|CE)/i, ""); + return parseInt(match); + } + const rawYearNumber = parseInt(match); + return findMostLikelyADYear(rawYearNumber); +} +const SINGLE_TIME_UNIT_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY)})`; +const SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, "i"); +const SINGLE_TIME_UNIT_NO_ABBR_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY_NO_ABBR)})`; +const TIME_UNIT_CONNECTOR_PATTERN = `\\s{0,5},?(?:\\s*and)?\\s{0,5}`; +const TIME_UNITS_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_PATTERN, TIME_UNIT_CONNECTOR_PATTERN); +const TIME_UNITS_NO_ABBR_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_NO_ABBR_PATTERN, TIME_UNIT_CONNECTOR_PATTERN); +function parseTimeUnits(timeunitText) { + const fragments = {}; + let remainingText = timeunitText; + let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText); + while (match) { + collectDateTimeFragment(fragments, match); + remainingText = remainingText.substring(match[0].length).trim(); + match = SINGLE_TIME_UNIT_REGEX.exec(remainingText); + } + if (Object.keys(fragments).length == 0) { + return null; + } + return fragments; +} +function collectDateTimeFragment(fragments, match) { + if (match[0].match(/^[a-zA-Z]+$/)) { + return; + } + const num = parseNumberPattern(match[1]); + const unit = TIME_UNIT_DICTIONARY[match[2].toLowerCase()]; + fragments[unit] = num; +} +;// ./node_modules/chrono-node/dist/esm/common/parsers/AbstractParserWithWordBoundary.js class AbstractParserWithWordBoundaryChecking { constructor() { this.cachedInnerPattern = null; this.cachedPattern = null; } + innerPatternHasChange(context, currentInnerPattern) { + return this.innerPattern(context) !== currentInnerPattern; + } patternLeftBoundary() { return `(\\W|^)`; } pattern(context) { - const innerPattern = this.innerPattern(context); - if (innerPattern == this.cachedInnerPattern) { - return this.cachedPattern; + if (this.cachedInnerPattern) { + if (!this.innerPatternHasChange(context, this.cachedInnerPattern)) { + return this.cachedPattern; + } } - this.cachedPattern = new RegExp(`${this.patternLeftBoundary()}${innerPattern.source}`, innerPattern.flags); - this.cachedInnerPattern = innerPattern; + this.cachedInnerPattern = this.innerPattern(context); + this.cachedPattern = new RegExp(`${this.patternLeftBoundary()}${this.cachedInnerPattern.source}`, this.cachedInnerPattern.flags); return this.cachedPattern; } extract(context, match) { @@ -1726,11 +1798,11 @@ class AbstractParserWithWordBoundaryChecking { return this.innerExtract(context, match); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js -const PATTERN_WITHOUT_PREFIX = new RegExp(`(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); +const PATTERN_WITH_OPTIONAL_PREFIX = new RegExp(`(?:(?:within|in|for)\\s*)?` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); const PATTERN_WITH_PREFIX = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); const PATTERN_WITH_PREFIX_STRICT = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i"); class ENTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryChecking { @@ -1742,21 +1814,27 @@ class ENTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryCheckin if (this.strictMode) { return PATTERN_WITH_PREFIX_STRICT; } - return context.option.forwardDate ? PATTERN_WITHOUT_PREFIX : PATTERN_WITH_PREFIX; + return context.option.forwardDate ? PATTERN_WITH_OPTIONAL_PREFIX : PATTERN_WITH_PREFIX; } innerExtract(context, match) { + if (match[0].match(/^for\s*the\s*\w+/)) { + return null; + } const timeUnits = parseTimeUnits(match[1]); + if (!timeUnits) { + return null; + } return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js -const PATTERN = new RegExp(`(?:on\\s{0,3})?` + `(${ORDINAL_NUMBER_PATTERN})` + `(?:` + `\\s{0,3}(?:to|\\-|\\–|until|through|till)?\\s{0,3}` + `(${ORDINAL_NUMBER_PATTERN})` + ")?" + `(?:-|/|\\s{0,3}(?:of)?\\s{0,3})` + `(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:" + `(?:-|/|,?\\s{0,3})` + `(${YEAR_PATTERN}(?![^\\s]\\d))` + ")?" + "(?=\\W|$)", "i"); +const PATTERN = new RegExp(`(?:on\\s{0,3})?` + `(${ORDINAL_NUMBER_PATTERN})` + `(?:` + `\\s{0,3}(?:to|\\-|\\–|until|through|till)?\\s{0,3}` + `(${ORDINAL_NUMBER_PATTERN})` + ")?" + `(?:-|/|\\s{0,3}(?:of)?\\s{0,3})` + `(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:" + `(?:-|/|,?\\s{0,3})` + `(${YEAR_PATTERN}(?!\\w))` + ")?" + "(?=\\W|$)", "i"); const DATE_GROUP = 1; const DATE_TO_GROUP = 2; const MONTH_NAME_GROUP = 3; @@ -1790,19 +1868,23 @@ class ENMonthNameLittleEndianParser extends AbstractParserWithWordBoundaryChecki return result; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js -const ENMonthNameMiddleEndianParser_PATTERN = new RegExp(`(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:-|/|\\s*,?\\s*)" + `(${ORDINAL_NUMBER_PATTERN})(?!\\s*(?:am|pm))\\s*` + "(?:" + "(?:to|\\-)\\s*" + `(${ORDINAL_NUMBER_PATTERN})\\s*` + ")?" + "(?:" + "(?:-|/|\\s*,?\\s*)" + `(${YEAR_PATTERN})` + ")?" + "(?=\\W|$)(?!\\:\\d)", "i"); +const ENMonthNameMiddleEndianParser_PATTERN = new RegExp(`(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:-|/|\\s*,?\\s*)" + `(${ORDINAL_NUMBER_PATTERN})(?!\\s*(?:am|pm))\\s*` + "(?:" + "(?:to|\\-)\\s*" + `(${ORDINAL_NUMBER_PATTERN})\\s*` + ")?" + "(?:" + `(?:-|/|\\s*,\\s*|\\s+)` + `(${YEAR_PATTERN})` + ")?" + "(?=\\W|$)(?!\\:\\d)", "i"); const ENMonthNameMiddleEndianParser_MONTH_NAME_GROUP = 1; const ENMonthNameMiddleEndianParser_DATE_GROUP = 2; const ENMonthNameMiddleEndianParser_DATE_TO_GROUP = 3; const ENMonthNameMiddleEndianParser_YEAR_GROUP = 4; class ENMonthNameMiddleEndianParser extends AbstractParserWithWordBoundaryChecking { + constructor(shouldSkipYearLikeDate) { + super(); + this.shouldSkipYearLikeDate = shouldSkipYearLikeDate; + } innerPattern() { return ENMonthNameMiddleEndianParser_PATTERN; } @@ -1812,10 +1894,15 @@ class ENMonthNameMiddleEndianParser extends AbstractParserWithWordBoundaryChecki if (day > 31) { return null; } + if (this.shouldSkipYearLikeDate) { + if (!match[ENMonthNameMiddleEndianParser_DATE_TO_GROUP] && !match[ENMonthNameMiddleEndianParser_YEAR_GROUP] && match[ENMonthNameMiddleEndianParser_DATE_GROUP].match(/^2[0-5]$/)) { + return null; + } + } const components = context.createParsingComponents({ day: day, month: month - }); + }).addTag("parser/ENMonthNameMiddleEndianParser"); if (match[ENMonthNameMiddleEndianParser_YEAR_GROUP]) { const year = parseYear(match[ENMonthNameMiddleEndianParser_YEAR_GROUP]); components.assign("year", year); @@ -1834,7 +1921,7 @@ class ENMonthNameMiddleEndianParser extends AbstractParserWithWordBoundaryChecki return result; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameParser.js @@ -1855,6 +1942,7 @@ class ENMonthNameParser extends AbstractParserWithWordBoundaryChecking { } const result = context.createParsingResult(match.index + (match[PREFIX_GROUP] || "").length, match.index + match[0].length); result.start.imply("day", 1); + result.start.addTag("parser/ENMonthNameParser"); const month = MONTH_DICTIONARY[monthName]; result.start.assign("month", month); if (match[ENMonthNameParser_YEAR_GROUP]) { @@ -1867,26 +1955,38 @@ class ENMonthNameParser extends AbstractParserWithWordBoundaryChecking { return result; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualYearMonthDayParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENYearMonthDayParser.js -const ENCasualYearMonthDayParser_PATTERN = new RegExp(`([0-9]{4})[\\.\\/\\s]` + `(?:(${matchAnyPattern(MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]` + `([0-9]{1,2})` + "(?=\\W|$)", "i"); +const ENYearMonthDayParser_PATTERN = new RegExp(`([0-9]{4})[-\\.\\/\\s]` + `(?:(${matchAnyPattern(MONTH_DICTIONARY)})|([0-9]{1,2}))[-\\.\\/\\s]` + `([0-9]{1,2})` + "(?=\\W|$)", "i"); const YEAR_NUMBER_GROUP = 1; -const ENCasualYearMonthDayParser_MONTH_NAME_GROUP = 2; +const ENYearMonthDayParser_MONTH_NAME_GROUP = 2; const MONTH_NUMBER_GROUP = 3; const DATE_NUMBER_GROUP = 4; -class ENCasualYearMonthDayParser extends AbstractParserWithWordBoundaryChecking { +class ENYearMonthDayParser extends AbstractParserWithWordBoundaryChecking { + constructor(strictMonthDateOrder) { + super(); + this.strictMonthDateOrder = strictMonthDateOrder; + } innerPattern() { - return ENCasualYearMonthDayParser_PATTERN; + return ENYearMonthDayParser_PATTERN; } innerExtract(context, match) { - const month = match[MONTH_NUMBER_GROUP] ? parseInt(match[MONTH_NUMBER_GROUP]) : MONTH_DICTIONARY[match[ENCasualYearMonthDayParser_MONTH_NAME_GROUP].toLowerCase()]; + const year = parseInt(match[YEAR_NUMBER_GROUP]); + let day = parseInt(match[DATE_NUMBER_GROUP]); + let month = match[MONTH_NUMBER_GROUP] ? parseInt(match[MONTH_NUMBER_GROUP]) : MONTH_DICTIONARY[match[ENYearMonthDayParser_MONTH_NAME_GROUP].toLowerCase()]; if (month < 1 || month > 12) { + if (this.strictMonthDateOrder) { + return null; + } + if (day >= 1 && day <= 12) { + [month, day] = [day, month]; + } + } + if (day < 1 || day > 31) { return null; } - const year = parseInt(match[YEAR_NUMBER_GROUP]); - const day = parseInt(match[DATE_NUMBER_GROUP]); return { day: day, month: month, @@ -1894,7 +1994,7 @@ class ENCasualYearMonthDayParser extends AbstractParserWithWordBoundaryChecking }; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENSlashMonthFormatParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENSlashMonthFormatParser.js const ENSlashMonthFormatParser_PATTERN = new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})" + "", "i"); const MONTH_GROUP = 1; @@ -1909,7 +2009,7 @@ class ENSlashMonthFormatParser extends AbstractParserWithWordBoundaryChecking { return context.createParsingComponents().imply("day", 1).assign("month", month).assign("year", year); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/AbstractTimeExpressionParser.js +;// ./node_modules/chrono-node/dist/esm/common/parsers/AbstractTimeExpressionParser.js function primaryTimePattern(leftBoundary, primaryPrefix, primarySuffix, flags) { return new RegExp(`${leftBoundary}` + `${primaryPrefix}` + `(\\d{1,4})` + `(?:` + `(?:\\.|:|:)` + `(\\d{1,2})` + `(?:` + `(?::|:)` + `(\\d{2})` + `(?:\\.(\\d{1,6}))?` + `)?` + `)?` + `(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?` + `${primarySuffix}`, flags); @@ -1939,10 +2039,10 @@ class AbstractTimeExpressionParser { return `(^|\\s|T|\\b)`; } primarySuffix() { - return `(?=\\W|$)`; + return `(?!/)(?=\\W|$)`; } followingSuffix() { - return `(?=\\W|$)`; + return `(?!/)(?=\\W|$)`; } pattern(context) { return this.getPrimaryTimePatternThroughCache(); @@ -1950,6 +2050,10 @@ class AbstractTimeExpressionParser { extract(context, match) { const startComponents = this.extractPrimaryTimeComponents(context, match); if (!startComponents) { + if (match[0].match(/^\d{4}/)) { + match.index += 4; + return null; + } match.index += match[0].length; return null; } @@ -1960,8 +2064,13 @@ class AbstractTimeExpressionParser { const remainingText = context.text.substring(match.index); const followingPattern = this.getFollowingTimePatternThroughCache(); const followingMatch = followingPattern.exec(remainingText); - if (text.match(/^\d{3,4}/) && followingMatch && followingMatch[0].match(/^\s*([+-])\s*\d{2,4}$/)) { - return null; + if (text.match(/^\d{3,4}/) && followingMatch) { + if (followingMatch[0].match(/^\s*([+-])\s*\d{2,4}$/)) { + return null; + } + if (followingMatch[0].match(/^\s*([+-])\s*\d{2}\W\d{2}/)) { + return null; + } } if (!followingMatch || followingMatch[0].match(/^\s*([+-])\s*\d{3,4}$/)) { return this.checkAndReturnWithoutFollowingPattern(result); @@ -1997,19 +2106,19 @@ class AbstractTimeExpressionParser { return null; } if (hour > 12) { - meridiem = esm_Meridiem.PM; + meridiem = types_Meridiem.PM; } if (match[AM_PM_HOUR_GROUP] != null) { if (hour > 12) return null; const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase(); if (ampm == "a") { - meridiem = esm_Meridiem.AM; + meridiem = types_Meridiem.AM; if (hour == 12) { hour = 0; } } if (ampm == "p") { - meridiem = esm_Meridiem.PM; + meridiem = types_Meridiem.PM; if (hour != 12) { hour += 12; } @@ -2021,9 +2130,9 @@ class AbstractTimeExpressionParser { components.assign("meridiem", meridiem); } else { if (hour < 12) { - components.imply("meridiem", esm_Meridiem.AM); + components.imply("meridiem", types_Meridiem.AM); } else { - components.imply("meridiem", esm_Meridiem.PM); + components.imply("meridiem", types_Meridiem.PM); } } if (match[MILLI_SECOND_GROUP] != null) { @@ -2063,7 +2172,7 @@ class AbstractTimeExpressionParser { return null; } if (hour >= 12) { - meridiem = esm_Meridiem.PM; + meridiem = types_Meridiem.PM; } if (match[AM_PM_HOUR_GROUP] != null) { if (hour > 12) { @@ -2071,7 +2180,7 @@ class AbstractTimeExpressionParser { } const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase(); if (ampm == "a") { - meridiem = esm_Meridiem.AM; + meridiem = types_Meridiem.AM; if (hour == 12) { hour = 0; if (!components.isCertain("day")) { @@ -2080,17 +2189,17 @@ class AbstractTimeExpressionParser { } } if (ampm == "p") { - meridiem = esm_Meridiem.PM; + meridiem = types_Meridiem.PM; if (hour != 12) hour += 12; } if (!result.start.isCertain("meridiem")) { - if (meridiem == esm_Meridiem.AM) { - result.start.imply("meridiem", esm_Meridiem.AM); + if (meridiem == types_Meridiem.AM) { + result.start.imply("meridiem", types_Meridiem.AM); if (result.start.get("hour") == 12) { result.start.assign("hour", 0); } } else { - result.start.imply("meridiem", esm_Meridiem.PM); + result.start.imply("meridiem", types_Meridiem.PM); if (result.start.get("hour") != 12) { result.start.assign("hour", result.start.get("hour") + 12); } @@ -2105,15 +2214,15 @@ class AbstractTimeExpressionParser { const startAtPM = result.start.isCertain("meridiem") && result.start.get("hour") > 12; if (startAtPM) { if (result.start.get("hour") - 12 > hour) { - components.imply("meridiem", esm_Meridiem.AM); + components.imply("meridiem", types_Meridiem.AM); } else if (hour <= 12) { components.assign("hour", hour + 12); - components.assign("meridiem", esm_Meridiem.PM); + components.assign("meridiem", types_Meridiem.PM); } } else if (hour > 12) { - components.imply("meridiem", esm_Meridiem.PM); + components.imply("meridiem", types_Meridiem.PM); } else if (hour <= 12) { - components.imply("meridiem", esm_Meridiem.AM); + components.imply("meridiem", types_Meridiem.AM); } } if (components.date().getTime() < result.start.date().getTime()) { @@ -2192,7 +2301,7 @@ class AbstractTimeExpressionParser { return this.cachedFollowingTimePatten; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeExpressionParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeExpressionParser.js class ENTimeExpressionParser extends AbstractTimeExpressionParser { @@ -2210,35 +2319,36 @@ class ENTimeExpressionParser extends AbstractTimeExpressionParser { } extractPrimaryTimeComponents(context, match) { const components = super.extractPrimaryTimeComponents(context, match); - if (components) { - if (match[0].endsWith("night")) { - const hour = components.get("hour"); - if (hour >= 6 && hour < 12) { - components.assign("hour", components.get("hour") + 12); - components.assign("meridiem", esm_Meridiem.PM); - } else if (hour < 6) { - components.assign("meridiem", esm_Meridiem.AM); - } - } - if (match[0].endsWith("afternoon")) { - components.assign("meridiem", esm_Meridiem.PM); - const hour = components.get("hour"); - if (hour >= 0 && hour <= 6) { - components.assign("hour", components.get("hour") + 12); - } - } - if (match[0].endsWith("morning")) { - components.assign("meridiem", esm_Meridiem.AM); - const hour = components.get("hour"); - if (hour < 12) { - components.assign("hour", components.get("hour")); - } + if (!components) { + return components; + } + if (match[0].endsWith("night")) { + const hour = components.get("hour"); + if (hour >= 6 && hour < 12) { + components.assign("hour", components.get("hour") + 12); + components.assign("meridiem", types_Meridiem.PM); + } else if (hour < 6) { + components.assign("meridiem", types_Meridiem.AM); } } - return components; + if (match[0].endsWith("afternoon")) { + components.assign("meridiem", types_Meridiem.PM); + const hour = components.get("hour"); + if (hour >= 0 && hour <= 6) { + components.assign("hour", components.get("hour") + 12); + } + } + if (match[0].endsWith("morning")) { + components.assign("meridiem", types_Meridiem.AM); + const hour = components.get("hour"); + if (hour < 12) { + components.assign("hour", components.get("hour")); + } + } + return components.addTag("parser/ENTimeExpressionParser"); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/utils/timeunits.js +;// ./node_modules/chrono-node/dist/esm/utils/timeunits.js function reverseTimeUnits(timeUnits) { const reversed = {}; for (const key in timeUnits) { @@ -2264,7 +2374,7 @@ function addImpliedTimeUnits(components, timeUnits) { } return output; } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js @@ -2281,16 +2391,19 @@ class ENTimeUnitAgoFormatParser extends AbstractParserWithWordBoundaryChecking { } innerExtract(context, match) { const timeUnits = parseTimeUnits(match[1]); + if (!timeUnits) { + return null; + } const outputTimeUnits = reverseTimeUnits(timeUnits); return results_ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js const ENTimeUnitLaterFormatParser_PATTERN = new RegExp(`(${TIME_UNITS_PATTERN})\\s{0,5}(?:later|after|from now|henceforth|forward|out)` + "(?=(?:\\W|$))", "i"); -const ENTimeUnitLaterFormatParser_STRICT_PATTERN = new RegExp("" + "(" + TIME_UNITS_NO_ABBR_PATTERN + ")" + "(later|from now)" + "(?=(?:\\W|$))", "i"); +const ENTimeUnitLaterFormatParser_STRICT_PATTERN = new RegExp(`(${TIME_UNITS_NO_ABBR_PATTERN})\\s{0,5}(later|after|from now)(?=\\W|$)`, "i"); const GROUP_NUM_TIMEUNITS = 1; class ENTimeUnitLaterFormatParser extends AbstractParserWithWordBoundaryChecking { constructor(strictMode) { @@ -2301,11 +2414,14 @@ class ENTimeUnitLaterFormatParser extends AbstractParserWithWordBoundaryChecking return this.strictMode ? ENTimeUnitLaterFormatParser_STRICT_PATTERN : ENTimeUnitLaterFormatParser_PATTERN; } innerExtract(context, match) { - const fragments = parseTimeUnits(match[GROUP_NUM_TIMEUNITS]); - return results_ParsingComponents.createRelativeFromReference(context.reference, fragments); + const timeUnits = parseTimeUnits(match[GROUP_NUM_TIMEUNITS]); + if (!timeUnits) { + return null; + } + return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/abstractRefiners.js +;// ./node_modules/chrono-node/dist/esm/common/abstractRefiners.js class Filter { refine(context, results) { return results.filter(r => this.isValid(context, r)); @@ -2341,7 +2457,7 @@ class MergingRefiner { return mergedResults; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js class AbstractMergeDateRangeRefiner extends MergingRefiner { shouldMergeResults(textBetween, currentResult, nextResult) { @@ -2395,14 +2511,14 @@ class AbstractMergeDateRangeRefiner extends MergingRefiner { return result; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateRangeRefiner.js +;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateRangeRefiner.js class ENMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner { patternBetween() { return /^\s*(to|-|–|until|through|till)\s*$/i; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/calculation/mergingCalculation.js +;// ./node_modules/chrono-node/dist/esm/calculation/mergingCalculation.js function mergeDateTimeResult(dateResult, timeResult) { @@ -2456,16 +2572,18 @@ function mergeDateTimeComponent(dateComponent, timeComponent) { } else if (timeComponent.get("meridiem") != null && dateTimeComponent.get("meridiem") == null) { dateTimeComponent.imply("meridiem", timeComponent.get("meridiem")); } - if (dateTimeComponent.get("meridiem") == esm_Meridiem.PM && dateTimeComponent.get("hour") < 12) { + if (dateTimeComponent.get("meridiem") == types_Meridiem.PM && dateTimeComponent.get("hour") < 12) { if (timeComponent.isCertain("hour")) { dateTimeComponent.assign("hour", dateTimeComponent.get("hour") + 12); } else { dateTimeComponent.imply("hour", dateTimeComponent.get("hour") + 12); } } + dateTimeComponent.addTags(dateComponent.tags()); + dateTimeComponent.addTags(timeComponent.tags()); return dateTimeComponent; } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateTimeRefiner.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateTimeRefiner.js class AbstractMergeDateTimeRefiner extends MergingRefiner { @@ -2479,14 +2597,14 @@ class AbstractMergeDateTimeRefiner extends MergingRefiner { return result; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateTimeRefiner.js +;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateTimeRefiner.js class ENMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner { patternBetween() { - return new RegExp("^\\s*(T|at|after|before|on|of|,|-)?\\s*$"); + return new RegExp("^\\s*(T|at|after|before|on|of|,|-|\\.|∙|:)?\\s*$"); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js const TIMEZONE_NAME_PATTERN = new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)", "i"); class ExtractTimezoneAbbrRefiner { @@ -2539,7 +2657,7 @@ class ExtractTimezoneAbbrRefiner { return results; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneOffsetRefiner.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneOffsetRefiner.js const TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?", "i"); const TIMEZONE_OFFSET_SIGN_GROUP = 1; const TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 2; @@ -2576,7 +2694,7 @@ class ExtractTimezoneOffsetRefiner { return results; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/OverlapRemovalRefiner.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/OverlapRemovalRefiner.js class OverlapRemovalRefiner { refine(context, results) { if (results.length < 2) { @@ -2586,14 +2704,24 @@ class OverlapRemovalRefiner { let prevResult = results[0]; for (let i = 1; i < results.length; i++) { const result = results[i]; - if (result.index < prevResult.index + prevResult.text.length) { - if (result.text.length > prevResult.text.length) { - prevResult = result; - } - } else { + if (result.index >= prevResult.index + prevResult.text.length) { filteredResults.push(prevResult); prevResult = result; + continue; } + let kept = null; + let removed = null; + if (result.text.length > prevResult.text.length) { + kept = result; + removed = prevResult; + } else { + kept = prevResult; + removed = result; + } + context.debug(() => { + console.log(`${this.constructor.name} remove ${removed} by ${kept}`); + }); + prevResult = kept; } if (prevResult != null) { filteredResults.push(prevResult); @@ -2601,7 +2729,7 @@ class OverlapRemovalRefiner { return filteredResults; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/ForwardDateRefiner.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/ForwardDateRefiner.js class ForwardDateRefiner { @@ -2609,7 +2737,7 @@ class ForwardDateRefiner { if (!context.option.forwardDate) { return results; } - results.forEach(function (result) { + results.forEach(result => { let refMoment = dayjs_min(context.refDate); if (result.start.isOnlyTime() && refMoment.isAfter(result.start.dayjs())) { refMoment = refMoment.add(1, "day"); @@ -2621,6 +2749,9 @@ class ForwardDateRefiner { implySimilarDate(result.end, refMoment); } } + context.debug(() => { + console.log(`${this.constructor.name} adjusted ${result} time result (${result.start})`); + }); } if (result.start.isOnlyWeekdayComponent() && refMoment.isAfter(result.start.dayjs())) { if (refMoment.day() >= result.start.get("weekday")) { @@ -2632,7 +2763,7 @@ class ForwardDateRefiner { result.start.imply("month", refMoment.month() + 1); result.start.imply("year", refMoment.year()); context.debug(() => { - console.log(`Forward weekly adjusted for ${result} (${result.start})`); + console.log(`${this.constructor.name} adjusted ${result} weekday (${result.start})`); }); if (result.end && result.end.isOnlyWeekdayComponent()) { if (refMoment.day() > result.end.get("weekday")) { @@ -2644,7 +2775,7 @@ class ForwardDateRefiner { result.end.imply("month", refMoment.month() + 1); result.end.imply("year", refMoment.year()); context.debug(() => { - console.log(`Forward weekly adjusted for ${result} (${result.end})`); + console.log(`${this.constructor.name} adjusted ${result} weekday (${result.end})`); }); } } @@ -2652,12 +2783,12 @@ class ForwardDateRefiner { for (let i = 0; i < 3 && refMoment.isAfter(result.start.dayjs()); i++) { result.start.imply("year", result.start.get("year") + 1); context.debug(() => { - console.log(`Forward yearly adjusted for ${result} (${result.start})`); + console.log(`${this.constructor.name} adjusted ${result} year (${result.start})`); }); if (result.end && !result.end.isCertain("year")) { result.end.imply("year", result.end.get("year") + 1); context.debug(() => { - console.log(`Forward yearly adjusted for ${result} (${result.end})`); + console.log(`${this.constructor.name} adjusted ${result} month (${result.start})`); }); } } @@ -2666,7 +2797,7 @@ class ForwardDateRefiner { return results; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/UnlikelyFormatFilter.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/UnlikelyFormatFilter.js class UnlikelyFormatFilter extends Filter { constructor(strictMode) { @@ -2713,9 +2844,9 @@ class UnlikelyFormatFilter extends Filter { return true; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/ISOFormatParser.js +;// ./node_modules/chrono-node/dist/esm/common/parsers/ISOFormatParser.js -const ISOFormatParser_PATTERN = new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})" + "(?:T" + "([0-9]{1,2}):([0-9]{1,2})" + "(?:" + ":([0-9]{1,2})(?:\\.(\\d{1,4}))?" + ")?" + "(?:" + "Z|([+-]\\d{2}):?(\\d{2})?" + ")?" + ")?" + "(?=\\W|$)", "i"); +const ISOFormatParser_PATTERN = new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})" + "(?:T" + "([0-9]{1,2}):([0-9]{1,2})" + "(?:" + ":([0-9]{1,2})(?:\\.(\\d{1,4}))?" + ")?" + "(" + "Z|([+-]\\d{2}):?(\\d{2})?" + ")?" + ")?" + "(?=\\W|$)", "i"); const ISOFormatParser_YEAR_NUMBER_GROUP = 1; const ISOFormatParser_MONTH_NUMBER_GROUP = 2; const ISOFormatParser_DATE_NUMBER_GROUP = 3; @@ -2723,47 +2854,50 @@ const HOUR_NUMBER_GROUP = 4; const MINUTE_NUMBER_GROUP = 5; const SECOND_NUMBER_GROUP = 6; const MILLISECOND_NUMBER_GROUP = 7; -const TZD_HOUR_OFFSET_GROUP = 8; -const TZD_MINUTE_OFFSET_GROUP = 9; +const TZD_GROUP = 8; +const TZD_HOUR_OFFSET_GROUP = 9; +const TZD_MINUTE_OFFSET_GROUP = 10; class ISOFormatParser extends AbstractParserWithWordBoundaryChecking { innerPattern() { return ISOFormatParser_PATTERN; } innerExtract(context, match) { - const components = {}; - components["year"] = parseInt(match[ISOFormatParser_YEAR_NUMBER_GROUP]); - components["month"] = parseInt(match[ISOFormatParser_MONTH_NUMBER_GROUP]); - components["day"] = parseInt(match[ISOFormatParser_DATE_NUMBER_GROUP]); + const components = context.createParsingComponents({ + "year": parseInt(match[ISOFormatParser_YEAR_NUMBER_GROUP]), + "month": parseInt(match[ISOFormatParser_MONTH_NUMBER_GROUP]), + "day": parseInt(match[ISOFormatParser_DATE_NUMBER_GROUP]) + }); if (match[HOUR_NUMBER_GROUP] != null) { - components["hour"] = parseInt(match[HOUR_NUMBER_GROUP]); - components["minute"] = parseInt(match[MINUTE_NUMBER_GROUP]); + components.assign("hour", parseInt(match[HOUR_NUMBER_GROUP])); + components.assign("minute", parseInt(match[MINUTE_NUMBER_GROUP])); if (match[SECOND_NUMBER_GROUP] != null) { - components["second"] = parseInt(match[SECOND_NUMBER_GROUP]); + components.assign("second", parseInt(match[SECOND_NUMBER_GROUP])); } if (match[MILLISECOND_NUMBER_GROUP] != null) { - components["millisecond"] = parseInt(match[MILLISECOND_NUMBER_GROUP]); + components.assign("millisecond", parseInt(match[MILLISECOND_NUMBER_GROUP])); } - if (match[TZD_HOUR_OFFSET_GROUP] == null) { - components["timezoneOffset"] = 0; - } else { - const hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]); - let minuteOffset = 0; - if (match[TZD_MINUTE_OFFSET_GROUP] != null) { - minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]); + if (match[TZD_GROUP] != null) { + let offset = 0; + if (match[TZD_HOUR_OFFSET_GROUP]) { + const hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]); + let minuteOffset = 0; + if (match[TZD_MINUTE_OFFSET_GROUP] != null) { + minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]); + } + offset = hourOffset * 60; + if (offset < 0) { + offset -= minuteOffset; + } else { + offset += minuteOffset; + } } - let offset = hourOffset * 60; - if (offset < 0) { - offset -= minuteOffset; - } else { - offset += minuteOffset; - } - components["timezoneOffset"] = offset; + components.assign("timezoneOffset", offset); } } - return components; + return components.addTag("parser/ISOFormatParser"); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/MergeWeekdayComponentRefiner.js +;// ./node_modules/chrono-node/dist/esm/common/refiners/MergeWeekdayComponentRefiner.js class MergeWeekdayComponentRefiner extends MergingRefiner { mergeResults(textBetween, currentResult, nextResult) { @@ -2781,7 +2915,7 @@ class MergeWeekdayComponentRefiner extends MergingRefiner { return weekdayThenNormalDate && textBetween.match(/^,?\s*$/) != null; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/configurations.js +;// ./node_modules/chrono-node/dist/esm/configurations.js @@ -2800,7 +2934,7 @@ function includeCommonConfiguration(configuration, strictMode = false) { configuration.refiners.push(new UnlikelyFormatFilter(strictMode)); return configuration; } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/casualReferences.js +;// ./node_modules/chrono-node/dist/esm/common/casualReferences.js @@ -2813,6 +2947,7 @@ function now(reference) { if (reference.timezoneOffset !== null) { component.assign("timezoneOffset", targetDate.utcOffset()); } + component.addTag("casualReference/now"); return component; } function today(reference) { @@ -2820,16 +2955,17 @@ function today(reference) { const component = new results_ParsingComponents(reference, {}); dayjs_assignSimilarDate(component, targetDate); implySimilarTime(component, targetDate); + component.addTag("casualReference/today"); return component; } function yesterday(reference) { - return theDayBefore(reference, 1); + return theDayBefore(reference, 1).addTag("casualReference/yesterday"); } function theDayBefore(reference, numDay) { return theDayAfter(reference, -numDay); } function tomorrow(reference) { - return theDayAfter(reference, 1); + return theDayAfter(reference, 1).addTag("casualReference/tomorrow"); } function theDayAfter(reference, nDays) { let targetDate = dayjs_min(reference.instant); @@ -2842,9 +2978,10 @@ function theDayAfter(reference, nDays) { function tonight(reference, implyHour = 22) { const targetDate = dayjs_min(reference.instant); const component = new results_ParsingComponents(reference, {}); - component.imply("hour", implyHour); - component.imply("meridiem", esm_Meridiem.PM); dayjs_assignSimilarDate(component, targetDate); + component.imply("hour", implyHour); + component.imply("meridiem", types_Meridiem.PM); + component.addTag("casualReference/tonight"); return component; } function lastNight(reference, implyHour = 0) { @@ -2859,8 +2996,9 @@ function lastNight(reference, implyHour = 0) { } function evening(reference, implyHour = 20) { const component = new results_ParsingComponents(reference, {}); - component.imply("meridiem", esm_Meridiem.PM); + component.imply("meridiem", types_Meridiem.PM); component.imply("hour", implyHour); + component.addTag("casualReference/evening"); return component; } function yesterdayEvening(reference, implyHour = 20) { @@ -2870,6 +3008,8 @@ function yesterdayEvening(reference, implyHour = 20) { assignSimilarDate(component, targetDate); component.imply("hour", implyHour); component.imply("meridiem", Meridiem.PM); + component.addTag("casualReference/yesterday"); + component.addTag("casualReference/evening"); return component; } function midnight(reference) { @@ -2882,36 +3022,40 @@ function midnight(reference) { component.imply("minute", 0); component.imply("second", 0); component.imply("millisecond", 0); + component.addTag("casualReference/midnight"); return component; } function morning(reference, implyHour = 6) { const component = new results_ParsingComponents(reference, {}); - component.imply("meridiem", esm_Meridiem.AM); + component.imply("meridiem", types_Meridiem.AM); component.imply("hour", implyHour); component.imply("minute", 0); component.imply("second", 0); component.imply("millisecond", 0); + component.addTag("casualReference/morning"); return component; } function afternoon(reference, implyHour = 15) { const component = new results_ParsingComponents(reference, {}); - component.imply("meridiem", esm_Meridiem.PM); + component.imply("meridiem", types_Meridiem.PM); component.imply("hour", implyHour); component.imply("minute", 0); component.imply("second", 0); component.imply("millisecond", 0); + component.addTag("casualReference/afternoon"); return component; } function noon(reference) { const component = new results_ParsingComponents(reference, {}); - component.imply("meridiem", esm_Meridiem.AM); + component.imply("meridiem", types_Meridiem.AM); component.imply("hour", 12); component.imply("minute", 0); component.imply("second", 0); component.imply("millisecond", 0); + component.addTag("casualReference/noon"); return component; } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualDateParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualDateParser.js @@ -2924,20 +3068,25 @@ class ENCasualDateParser extends AbstractParserWithWordBoundaryChecking { innerExtract(context, match) { let targetDate = dayjs_min(context.refDate); const lowerText = match[0].toLowerCase(); - const component = context.createParsingComponents(); + let component = context.createParsingComponents(); switch (lowerText) { case "now": - return now(context.reference); + component = now(context.reference); + break; case "today": - return today(context.reference); + component = today(context.reference); + break; case "yesterday": - return yesterday(context.reference); + component = yesterday(context.reference); + break; case "tomorrow": case "tmr": case "tmrw": - return tomorrow(context.reference); + component = tomorrow(context.reference); + break; case "tonight": - return tonight(context.reference); + component = tonight(context.reference); + break; default: if (lowerText.match(/last\s*night/)) { if (targetDate.hour() > 6) { @@ -2948,10 +3097,11 @@ class ENCasualDateParser extends AbstractParserWithWordBoundaryChecking { } break; } + component.addTag("parser/ENCasualDateParser"); return component; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualTimeParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualTimeParser.js const ENCasualTimeParser_PATTERN = /(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|midday|noon)(?=\W|$)/i; @@ -2960,24 +3110,33 @@ class ENCasualTimeParser extends AbstractParserWithWordBoundaryChecking { return ENCasualTimeParser_PATTERN; } innerExtract(context, match) { + let component = null; switch (match[1].toLowerCase()) { case "afternoon": - return afternoon(context.reference); + component = afternoon(context.reference); + break; case "evening": case "night": - return evening(context.reference); + component = evening(context.reference); + break; case "midnight": - return midnight(context.reference); + component = midnight(context.reference); + break; case "morning": - return morning(context.reference); + component = morning(context.reference); + break; case "noon": case "midday": - return noon(context.reference); + component = noon(context.reference); + break; } - return null; + if (component) { + component.addTag("parser/ENCasualTimeParser"); + } + return component; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/calculation/weekdays.js +;// ./node_modules/chrono-node/dist/esm/common/calculation/weekdays.js @@ -3036,7 +3195,7 @@ function getBackwardDaysToWeekday(refDate, weekday) { } return backwardCount; } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENWeekdayParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENWeekdayParser.js @@ -3068,7 +3227,7 @@ class ENWeekdayParser extends AbstractParserWithWordBoundaryChecking { return createParsingComponentsAtWeekday(context.reference, weekday, modifier); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js @@ -3117,12 +3276,246 @@ class ENRelativeDateFormatParser extends AbstractParserWithWordBoundaryChecking return components; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/chrono.js +;// ./node_modules/chrono-node/dist/esm/common/parsers/SlashDateFormatParser.js + +const SlashDateFormatParser_PATTERN = new RegExp("([^\\d]|^)" + "([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})" + "(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?" + "(\\W|$)", "i"); +const OPENING_GROUP = 1; +const ENDING_GROUP = 5; +const FIRST_NUMBERS_GROUP = 2; +const SECOND_NUMBERS_GROUP = 3; +const SlashDateFormatParser_YEAR_GROUP = 4; +class SlashDateFormatParser { + constructor(littleEndian) { + this.groupNumberMonth = littleEndian ? SECOND_NUMBERS_GROUP : FIRST_NUMBERS_GROUP; + this.groupNumberDay = littleEndian ? FIRST_NUMBERS_GROUP : SECOND_NUMBERS_GROUP; + } + pattern() { + return SlashDateFormatParser_PATTERN; + } + extract(context, match) { + const index = match.index + match[OPENING_GROUP].length; + const indexEnd = match.index + match[0].length - match[ENDING_GROUP].length; + if (index > 0) { + const textBefore = context.text.substring(0, index); + if (textBefore.match("\\d/?$")) { + return; + } + } + if (indexEnd < context.text.length) { + const textAfter = context.text.substring(indexEnd); + if (textAfter.match("^/?\\d")) { + return; + } + } + const text = context.text.substring(index, indexEnd); + if (text.match(/^\d\.\d$/) || text.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)) { + return; + } + if (!match[SlashDateFormatParser_YEAR_GROUP] && text.indexOf("/") < 0) { + return; + } + const result = context.createParsingResult(index, text); + let month = parseInt(match[this.groupNumberMonth]); + let day = parseInt(match[this.groupNumberDay]); + if (month < 1 || month > 12) { + if (month > 12) { + if (day >= 1 && day <= 12 && month <= 31) { + [day, month] = [month, day]; + } else { + return null; + } + } + } + if (day < 1 || day > 31) { + return null; + } + result.start.assign("day", day); + result.start.assign("month", month); + if (match[SlashDateFormatParser_YEAR_GROUP]) { + const rawYearNumber = parseInt(match[SlashDateFormatParser_YEAR_GROUP]); + const year = findMostLikelyADYear(rawYearNumber); + result.start.assign("year", year); + } else { + const year = findYearClosestToRef(context.refDate, day, month); + result.start.imply("year", year); + } + return result; + } +} +;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js + + + + +const ENTimeUnitCasualRelativeFormatParser_PATTERN = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); +const PATTERN_NO_ABBR = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i"); +class ENTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking { + constructor(allowAbbreviations = true) { + super(); + this.allowAbbreviations = allowAbbreviations; + } + innerPattern() { + return this.allowAbbreviations ? ENTimeUnitCasualRelativeFormatParser_PATTERN : PATTERN_NO_ABBR; + } + innerExtract(context, match) { + const prefix = match[1].toLowerCase(); + let timeUnits = parseTimeUnits(match[2]); + if (!timeUnits) { + return null; + } + switch (prefix) { + case "last": + case "past": + case "-": + timeUnits = reverseTimeUnits(timeUnits); + break; + } + return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits); + } +} +;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js + + + + +function IsPositiveFollowingReference(result) { + return result.text.match(/^[+-]/i) != null; +} +function IsNegativeFollowingReference(result) { + return result.text.match(/^-/i) != null; +} +class ENMergeRelativeAfterDateRefiner extends MergingRefiner { + shouldMergeResults(textBetween, currentResult, nextResult) { + if (!textBetween.match(/^\s*$/i)) { + return false; + } + return IsPositiveFollowingReference(nextResult) || IsNegativeFollowingReference(nextResult); + } + mergeResults(textBetween, currentResult, nextResult, context) { + let timeUnits = parseTimeUnits(nextResult.text); + if (IsNegativeFollowingReference(nextResult)) { + timeUnits = reverseTimeUnits(timeUnits); + } + const components = results_ParsingComponents.createRelativeFromReference(new ReferenceWithTimezone(currentResult.start.date()), timeUnits); + return new ParsingResult(currentResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components); + } +} +;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js + + + + +function hasImpliedEarlierReferenceDate(result) { + return result.text.match(/\s+(before|from)$/i) != null; +} +function hasImpliedLaterReferenceDate(result) { + return result.text.match(/\s+(after|since)$/i) != null; +} +class ENMergeRelativeFollowByDateRefiner extends MergingRefiner { + patternBetween() { + return /^\s*$/i; + } + shouldMergeResults(textBetween, currentResult, nextResult) { + if (!textBetween.match(this.patternBetween())) { + return false; + } + if (!hasImpliedEarlierReferenceDate(currentResult) && !hasImpliedLaterReferenceDate(currentResult)) { + return false; + } + return !!nextResult.start.get("day") && !!nextResult.start.get("month") && !!nextResult.start.get("year"); + } + mergeResults(textBetween, currentResult, nextResult) { + let timeUnits = parseTimeUnits(currentResult.text); + if (hasImpliedEarlierReferenceDate(currentResult)) { + timeUnits = reverseTimeUnits(timeUnits); + } + const components = results_ParsingComponents.createRelativeFromReference(new ReferenceWithTimezone(nextResult.start.date()), timeUnits); + return new ParsingResult(nextResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components); + } +} +;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js + +const YEAR_SUFFIX_PATTERN = new RegExp(`^\\s*(${YEAR_PATTERN})`, "i"); +const ENExtractYearSuffixRefiner_YEAR_GROUP = 1; +class ENExtractYearSuffixRefiner { + refine(context, results) { + results.forEach(function (result) { + if (!result.start.isDateWithUnknownYear()) { + return; + } + const suffix = context.text.substring(result.index + result.text.length); + const match = YEAR_SUFFIX_PATTERN.exec(suffix); + if (!match) { + return; + } + context.debug(() => { + console.log(`Extracting year: '${match[0]}' into : ${result}`); + }); + const year = parseYear(match[ENExtractYearSuffixRefiner_YEAR_GROUP]); + if (result.end != null) { + result.end.assign("year", year); + } + result.start.assign("year", year); + result.text += match[0]; + }); + return results; + } +} +;// ./node_modules/chrono-node/dist/esm/locales/en/configuration.js + + + + + + + + + + + + + + + + + + + + + + +class ENDefaultConfiguration { + createCasualConfiguration(littleEndian = false) { + const option = this.createConfiguration(false, littleEndian); + option.parsers.push(new ENCasualDateParser()); + option.parsers.push(new ENCasualTimeParser()); + option.parsers.push(new ENMonthNameParser()); + option.parsers.push(new ENRelativeDateFormatParser()); + option.parsers.push(new ENTimeUnitCasualRelativeFormatParser()); + return option; + } + createConfiguration(strictMode = true, littleEndian = false) { + const options = includeCommonConfiguration({ + parsers: [new SlashDateFormatParser(littleEndian), new ENTimeUnitWithinFormatParser(strictMode), new ENMonthNameLittleEndianParser(), new ENMonthNameMiddleEndianParser(littleEndian), new ENWeekdayParser(), new ENSlashMonthFormatParser(), new ENTimeExpressionParser(strictMode), new ENTimeUnitAgoFormatParser(strictMode), new ENTimeUnitLaterFormatParser(strictMode)], + refiners: [new ENMergeDateTimeRefiner()] + }, strictMode); + options.parsers.unshift(new ENYearMonthDayParser(strictMode)); + options.refiners.unshift(new ENMergeRelativeFollowByDateRefiner()); + options.refiners.unshift(new ENMergeRelativeAfterDateRefiner()); + options.refiners.unshift(new OverlapRemovalRefiner()); + options.refiners.push(new ENMergeDateTimeRefiner()); + options.refiners.push(new ENExtractYearSuffixRefiner()); + options.refiners.push(new ENMergeDateRangeRefiner()); + return options; + } +} +;// ./node_modules/chrono-node/dist/esm/chrono.js class Chrono { constructor(configuration) { - configuration = configuration || createCasualConfiguration(); + this.defaultConfig = new ENDefaultConfiguration(); + configuration = configuration || this.defaultConfig.createCasualConfiguration(); this.parsers = [...configuration.parsers]; this.refiners = [...configuration.refiners]; } @@ -3175,9 +3568,11 @@ class Chrono { } else { parsedResult = context.createParsingResult(match.index, match[0], result); } - context.debug(() => console.log(`${parser.constructor.name} extracted result ${parsedResult}`)); + const parsedIndex = parsedResult.index; + const parsedText = parsedResult.text; + context.debug(() => console.log(`${parser.constructor.name} extracted (at index=${parsedIndex}) '${parsedText}'`)); results.push(parsedResult); - remainingText = originalText.substring(index + parsedResult.text.length); + remainingText = originalText.substring(parsedIndex + parsedText.length); match = pattern.exec(remainingText); } return results; @@ -3213,205 +3608,31 @@ class ParsingContext { } } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/SlashDateFormatParser.js - -const SlashDateFormatParser_PATTERN = new RegExp("([^\\d]|^)" + "([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})" + "(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?" + "(\\W|$)", "i"); -const OPENING_GROUP = 1; -const ENDING_GROUP = 5; -const FIRST_NUMBERS_GROUP = 2; -const SECOND_NUMBERS_GROUP = 3; -const SlashDateFormatParser_YEAR_GROUP = 4; -class SlashDateFormatParser { - constructor(littleEndian) { - this.groupNumberMonth = littleEndian ? SECOND_NUMBERS_GROUP : FIRST_NUMBERS_GROUP; - this.groupNumberDay = littleEndian ? FIRST_NUMBERS_GROUP : SECOND_NUMBERS_GROUP; - } - pattern() { - return SlashDateFormatParser_PATTERN; - } - extract(context, match) { - if (match[OPENING_GROUP].length == 0 && match.index > 0 && match.index < context.text.length) { - const previousChar = context.text[match.index - 1]; - if (previousChar >= "0" && previousChar <= "9") { - return; - } - } - const index = match.index + match[OPENING_GROUP].length; - const text = match[0].substr(match[OPENING_GROUP].length, match[0].length - match[OPENING_GROUP].length - match[ENDING_GROUP].length); - if (text.match(/^\d\.\d$/) || text.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)) { - return; - } - if (!match[SlashDateFormatParser_YEAR_GROUP] && match[0].indexOf("/") < 0) { - return; - } - const result = context.createParsingResult(index, text); - let month = parseInt(match[this.groupNumberMonth]); - let day = parseInt(match[this.groupNumberDay]); - if (month < 1 || month > 12) { - if (month > 12) { - if (day >= 1 && day <= 12 && month <= 31) { - [day, month] = [month, day]; - } else { - return null; - } - } - } - if (day < 1 || day > 31) { - return null; - } - result.start.assign("day", day); - result.start.assign("month", month); - if (match[SlashDateFormatParser_YEAR_GROUP]) { - const rawYearNumber = parseInt(match[SlashDateFormatParser_YEAR_GROUP]); - const year = findMostLikelyADYear(rawYearNumber); - result.start.assign("year", year); - } else { - const year = findYearClosestToRef(context.refDate, day, month); - result.start.imply("year", year); - } - return result; - } -} -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js - - - - -const ENTimeUnitCasualRelativeFormatParser_PATTERN = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); -const PATTERN_NO_ABBR = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i"); -class ENTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking { - constructor(allowAbbreviations = true) { - super(); - this.allowAbbreviations = allowAbbreviations; - } - innerPattern() { - return this.allowAbbreviations ? ENTimeUnitCasualRelativeFormatParser_PATTERN : PATTERN_NO_ABBR; - } - innerExtract(context, match) { - const prefix = match[1].toLowerCase(); - let timeUnits = parseTimeUnits(match[2]); - switch (prefix) { - case "last": - case "past": - case "-": - timeUnits = reverseTimeUnits(timeUnits); - break; - } - return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits); - } -} -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeRelativeDateRefiner.js - - - - -function hasImpliedEarlierReferenceDate(result) { - return result.text.match(/\s+(before|from)$/i) != null; -} -function hasImpliedLaterReferenceDate(result) { - return result.text.match(/\s+(after|since)$/i) != null; -} -class ENMergeRelativeDateRefiner extends MergingRefiner { - patternBetween() { - return /^\s*$/i; - } - shouldMergeResults(textBetween, currentResult, nextResult) { - if (!textBetween.match(this.patternBetween())) { - return false; - } - if (!hasImpliedEarlierReferenceDate(currentResult) && !hasImpliedLaterReferenceDate(currentResult)) { - return false; - } - return !!nextResult.start.get("day") && !!nextResult.start.get("month") && !!nextResult.start.get("year"); - } - mergeResults(textBetween, currentResult, nextResult) { - let timeUnits = parseTimeUnits(currentResult.text); - if (hasImpliedEarlierReferenceDate(currentResult)) { - timeUnits = reverseTimeUnits(timeUnits); - } - const components = results_ParsingComponents.createRelativeFromReference(new ReferenceWithTimezone(nextResult.start.date()), timeUnits); - return new ParsingResult(nextResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components); - } -} -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/index.js +;// ./node_modules/chrono-node/dist/esm/locales/en/index.js - - - - - - - - - - - - - - -const casual = new Chrono(createCasualConfiguration(false)); -const strict = new Chrono(createConfiguration(true, false)); -const GB = new Chrono(createConfiguration(false, true)); +const configuration = new ENDefaultConfiguration(); +const casual = new Chrono(configuration.createCasualConfiguration(false)); +const strict = new Chrono(configuration.createConfiguration(true, false)); +const GB = new Chrono(configuration.createCasualConfiguration(true)); function parse(text, ref, option) { return casual.parse(text, ref, option); } function parseDate(text, ref, option) { return casual.parseDate(text, ref, option); } -function createCasualConfiguration(littleEndian = false) { - const option = createConfiguration(false, littleEndian); - option.parsers.unshift(new ENCasualDateParser()); - option.parsers.unshift(new ENCasualTimeParser()); - option.parsers.unshift(new ENMonthNameParser()); - option.parsers.unshift(new ENRelativeDateFormatParser()); - option.parsers.unshift(new ENTimeUnitCasualRelativeFormatParser()); - return option; -} -function createConfiguration(strictMode = true, littleEndian = false) { - return includeCommonConfiguration({ - parsers: [new SlashDateFormatParser(littleEndian), new ENTimeUnitWithinFormatParser(strictMode), new ENMonthNameLittleEndianParser(), new ENMonthNameMiddleEndianParser(), new ENWeekdayParser(), new ENCasualYearMonthDayParser(), new ENSlashMonthFormatParser(), new ENTimeExpressionParser(strictMode), new ENTimeUnitAgoFormatParser(strictMode), new ENTimeUnitLaterFormatParser(strictMode)], - refiners: [new ENMergeRelativeDateRefiner(), new ENMergeDateTimeRefiner(), new ENMergeDateRangeRefiner()] - }, strictMode); -} -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/index.js +;// ./node_modules/chrono-node/dist/esm/index.js + + + + -var esm_Meridiem; -(function (Meridiem) { - Meridiem[Meridiem["AM"] = 0] = "AM"; - Meridiem[Meridiem["PM"] = 1] = "PM"; -})(esm_Meridiem || (esm_Meridiem = {})); -var Weekday; -(function (Weekday) { - Weekday[Weekday["SUNDAY"] = 0] = "SUNDAY"; - Weekday[Weekday["MONDAY"] = 1] = "MONDAY"; - Weekday[Weekday["TUESDAY"] = 2] = "TUESDAY"; - Weekday[Weekday["WEDNESDAY"] = 3] = "WEDNESDAY"; - Weekday[Weekday["THURSDAY"] = 4] = "THURSDAY"; - Weekday[Weekday["FRIDAY"] = 5] = "FRIDAY"; - Weekday[Weekday["SATURDAY"] = 6] = "SATURDAY"; -})(Weekday || (Weekday = {})); -var Month; -(function (Month) { - Month[Month["JANUARY"] = 1] = "JANUARY"; - Month[Month["FEBRUARY"] = 2] = "FEBRUARY"; - Month[Month["MARCH"] = 3] = "MARCH"; - Month[Month["APRIL"] = 4] = "APRIL"; - Month[Month["MAY"] = 5] = "MAY"; - Month[Month["JUNE"] = 6] = "JUNE"; - Month[Month["JULY"] = 7] = "JULY"; - Month[Month["AUGUST"] = 8] = "AUGUST"; - Month[Month["SEPTEMBER"] = 9] = "SEPTEMBER"; - Month[Month["OCTOBER"] = 10] = "OCTOBER"; - Month[Month["NOVEMBER"] = 11] = "NOVEMBER"; - Month[Month["DECEMBER"] = 12] = "DECEMBER"; -})(Month || (Month = {})); @@ -3429,7 +3650,7 @@ function esm_parse(text, ref, option) { function esm_parseDate(text, ref, option) { return esm_casual.parseDate(text, ref, option); } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeExpressionParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeExpressionParser.js class DETimeExpressionParser extends AbstractTimeExpressionParser { primaryPrefix() { @@ -3445,7 +3666,7 @@ class DETimeExpressionParser extends AbstractTimeExpressionParser { return super.extractPrimaryTimeComponents(context, match); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/constants.js +;// ./node_modules/chrono-node/dist/esm/locales/de/constants.js const constants_WEEKDAY_DICTIONARY = { @@ -3611,7 +3832,7 @@ function constants_collectDateTimeFragment(fragments, match) { const unit = constants_TIME_UNIT_DICTIONARY[match[2].toLowerCase()]; fragments[unit] = num; } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEWeekdayParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEWeekdayParser.js @@ -3643,7 +3864,7 @@ class DEWeekdayParser extends AbstractParserWithWordBoundaryChecking { return createParsingComponentsAtWeekday(context.reference, offset, modifier); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js const FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:um|von)\\s*)?" + "(\\d{1,2})(?:h|:)?" + "(?:(\\d{1,2})(?:m|:)?)?" + "(?:(\\d{1,2})(?:s)?)?" + "(?:\\s*Uhr)?" + "(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?" + "(?=\\W|$)", "i"); const SECOND_REG_PATTERN = new RegExp("^\\s*(\\-|\\–|\\~|\\〜|bis(?:\\s+um)?|\\?)\\s*" + "(\\d{1,2})(?:h|:)?" + "(?:(\\d{1,2})(?:m|:)?)?" + "(?:(\\d{1,2})(?:s)?)?" + "(?:\\s*Uhr)?" + "(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?" + "(?=\\W|$)", "i"); @@ -3688,31 +3909,31 @@ class DESpecificTimeExpressionParser { return null; } if (hour >= 12) { - meridiem = esm_Meridiem.PM; + meridiem = types_Meridiem.PM; } if (match[DESpecificTimeExpressionParser_AM_PM_HOUR_GROUP] != null) { if (hour > 12) return null; const ampm = match[DESpecificTimeExpressionParser_AM_PM_HOUR_GROUP].toLowerCase(); if (ampm.match(/morgen|vormittag/)) { - meridiem = esm_Meridiem.AM; + meridiem = types_Meridiem.AM; if (hour == 12) { hour = 0; } } if (ampm.match(/nachmittag|abend/)) { - meridiem = esm_Meridiem.PM; + meridiem = types_Meridiem.PM; if (hour != 12) { hour += 12; } } if (ampm.match(/nacht/)) { if (hour == 12) { - meridiem = esm_Meridiem.AM; + meridiem = types_Meridiem.AM; hour = 0; } else if (hour < 6) { - meridiem = esm_Meridiem.AM; + meridiem = types_Meridiem.AM; } else { - meridiem = esm_Meridiem.PM; + meridiem = types_Meridiem.PM; hour += 12; } } @@ -3723,9 +3944,9 @@ class DESpecificTimeExpressionParser { extractingComponents.assign("meridiem", meridiem); } else { if (hour < 12) { - extractingComponents.imply("meridiem", esm_Meridiem.AM); + extractingComponents.imply("meridiem", types_Meridiem.AM); } else { - extractingComponents.imply("meridiem", esm_Meridiem.PM); + extractingComponents.imply("meridiem", types_Meridiem.PM); } } if (match[DESpecificTimeExpressionParser_SECOND_GROUP] != null) { @@ -3736,21 +3957,21 @@ class DESpecificTimeExpressionParser { return extractingComponents; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateRangeRefiner.js +;// ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateRangeRefiner.js class DEMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner { patternBetween() { return /^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateTimeRefiner.js +;// ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateTimeRefiner.js class DEMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner { patternBetween() { return new RegExp("^\\s*(T|um|am|,|-)?\\s*$"); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualTimeParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualTimeParser.js @@ -3773,38 +3994,38 @@ class DECasualTimeParser extends AbstractParserWithWordBoundaryChecking { component.imply("hour", 6); component.imply("minute", 0); component.imply("second", 0); - component.imply("meridiem", esm_Meridiem.AM); + component.imply("meridiem", types_Meridiem.AM); break; case "vormittag": component.imply("hour", 9); component.imply("minute", 0); component.imply("second", 0); - component.imply("meridiem", esm_Meridiem.AM); + component.imply("meridiem", types_Meridiem.AM); break; case "mittag": case "mittags": component.imply("hour", 12); component.imply("minute", 0); component.imply("second", 0); - component.imply("meridiem", esm_Meridiem.AM); + component.imply("meridiem", types_Meridiem.AM); break; case "nachmittag": component.imply("hour", 15); component.imply("minute", 0); component.imply("second", 0); - component.imply("meridiem", esm_Meridiem.PM); + component.imply("meridiem", types_Meridiem.PM); break; case "abend": component.imply("hour", 18); component.imply("minute", 0); component.imply("second", 0); - component.imply("meridiem", esm_Meridiem.PM); + component.imply("meridiem", types_Meridiem.PM); break; case "nacht": component.imply("hour", 22); component.imply("minute", 0); component.imply("second", 0); - component.imply("meridiem", esm_Meridiem.PM); + component.imply("meridiem", types_Meridiem.PM); break; case "mitternacht": if (component.get("hour") > 1) { @@ -3815,13 +4036,13 @@ class DECasualTimeParser extends AbstractParserWithWordBoundaryChecking { component.imply("hour", 0); component.imply("minute", 0); component.imply("second", 0); - component.imply("meridiem", esm_Meridiem.AM); + component.imply("meridiem", types_Meridiem.AM); break; } return component; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualDateParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualDateParser.js @@ -3880,7 +4101,7 @@ class DECasualDateParser extends AbstractParserWithWordBoundaryChecking { return component; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEMonthNameLittleEndianParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEMonthNameLittleEndianParser.js @@ -3920,7 +4141,7 @@ class DEMonthNameLittleEndianParser extends AbstractParserWithWordBoundaryChecki return result; } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js @@ -3949,7 +4170,7 @@ class DETimeUnitAgoFormatParser extends AbstractParserWithWordBoundaryChecking { return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js +;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js @@ -3962,7 +4183,7 @@ class DETimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryCheckin return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits); } } -;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/index.js +;// ./node_modules/chrono-node/dist/esm/locales/de/index.js @@ -3977,51 +4198,32 @@ class DETimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryCheckin -const de_casual = new Chrono(de_createCasualConfiguration()); -const de_strict = new Chrono(de_createConfiguration(true)); + + + + +const de_casual = new Chrono(createCasualConfiguration()); +const de_strict = new Chrono(createConfiguration(true)); function de_parse(text, ref, option) { return de_casual.parse(text, ref, option); } function de_parseDate(text, ref, option) { return de_casual.parseDate(text, ref, option); } -function de_createCasualConfiguration(littleEndian = true) { - const option = de_createConfiguration(false, littleEndian); +function createCasualConfiguration(littleEndian = true) { + const option = createConfiguration(false, littleEndian); option.parsers.unshift(new DECasualTimeParser()); option.parsers.unshift(new DECasualDateParser()); option.parsers.unshift(new DETimeUnitAgoFormatParser()); return option; } -function de_createConfiguration(strictMode = true, littleEndian = true) { +function createConfiguration(strictMode = true, littleEndian = true) { return includeCommonConfiguration({ parsers: [new ISOFormatParser(), new SlashDateFormatParser(littleEndian), new DETimeExpressionParser(), new DESpecificTimeExpressionParser(), new DEMonthNameLittleEndianParser(), new DEWeekdayParser(), new DETimeUnitWithinFormatParser()], refiners: [new DEMergeDateRangeRefiner(), new DEMergeDateTimeRefiner()] }, strictMode); } -;// CONCATENATED MODULE: external "axios" -const external_axios_namespaceObject = axios; -var external_axios_default = /*#__PURE__*/__webpack_require__.n(external_axios_namespaceObject); -;// CONCATENATED MODULE: external "axiosGmxhrAdapter" -const external_axiosGmxhrAdapter_namespaceObject = axiosGmxhrAdapter; -var external_axiosGmxhrAdapter_default = /*#__PURE__*/__webpack_require__.n(external_axiosGmxhrAdapter_namespaceObject); -;// CONCATENATED MODULE: ./src/utils.ts -/** - * @typedef {Object} AxiosResponse - * @property {Object} data - * @property {Object} headers - * @property {Object} config - * @property {Object} request - * @property {number} code - * @property {string} statusText - */ -/** - * @typedef {Object} AxiosError - * @property {AxiosResponse} response - */ - - -(external_axios_default()).defaults.adapter = (external_axiosGmxhrAdapter_default()); - +;// ./src/utils.ts function extractNumber(s) { var match = /(\+?[0-9]{4,})/.exec(s); if (!match) { @@ -4049,22 +4251,169 @@ function fireChangeEvents(element) { console.debug('change event dispatched for element: ' + element.id); } -;// CONCATENATED MODULE: ./src/call-history.ts -var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); +;// ./node_modules/@trim21/gm-fetch/dist/index.mjs +function parseRawHeaders(h) { + const s = h.trim(); + if (!s) { + return new Headers(); + } + const array = s.split("\r\n").map((value) => { + let s = value.split(":"); + return [s[0].trim(), s[1].trim()]; }); -}; + return new Headers(array); +} +function parseGMResponse(req, res) { + return new ResImpl(res.response, { + statusCode: res.status, + statusText: res.statusText, + headers: parseRawHeaders(res.responseHeaders), + finalUrl: res.finalUrl, + redirected: res.finalUrl === req.url, + }); +} +class ResImpl { + constructor(body, init) { + this.rawBody = body; + this.init = init; + this.body = toReadableStream(body); + const { headers, statusCode, statusText, finalUrl, redirected } = init; + this.headers = headers; + this.status = statusCode; + this.statusText = statusText; + this.url = finalUrl; + this.type = "basic"; + this.redirected = redirected; + this._bodyUsed = false; + } + get bodyUsed() { + return this._bodyUsed; + } + get ok() { + return this.status < 300; + } + arrayBuffer() { + if (this.bodyUsed) { + throw new TypeError("Failed to execute 'arrayBuffer' on 'Response': body stream already read"); + } + this._bodyUsed = true; + return this.rawBody.arrayBuffer(); + } + blob() { + if (this.bodyUsed) { + throw new TypeError("Failed to execute 'blob' on 'Response': body stream already read"); + } + this._bodyUsed = true; + // `slice` will use empty string as default value, so need to pass all arguments. + return Promise.resolve(this.rawBody.slice(0, this.rawBody.size, this.rawBody.type)); + } + clone() { + if (this.bodyUsed) { + throw new TypeError("Failed to execute 'clone' on 'Response': body stream already read"); + } + return new ResImpl(this.rawBody, this.init); + } + formData() { + if (this.bodyUsed) { + throw new TypeError("Failed to execute 'formData' on 'Response': body stream already read"); + } + this._bodyUsed = true; + return this.rawBody.text().then(decode); + } + async json() { + if (this.bodyUsed) { + throw new TypeError("Failed to execute 'json' on 'Response': body stream already read"); + } + this._bodyUsed = true; + return JSON.parse(await this.rawBody.text()); + } + text() { + if (this.bodyUsed) { + throw new TypeError("Failed to execute 'text' on 'Response': body stream already read"); + } + this._bodyUsed = true; + return this.rawBody.text(); + } +} +function decode(body) { + const form = new FormData(); + body + .trim() + .split("&") + .forEach(function (bytes) { + if (bytes) { + const split = bytes.split("="); + const name = split.shift()?.replace(/\+/g, " "); + const value = split.join("=").replace(/\+/g, " "); + form.append(decodeURIComponent(name), decodeURIComponent(value)); + } + }); + return form; +} +function toReadableStream(value) { + return new ReadableStream({ + start(controller) { + controller.enqueue(value); + controller.close(); + }, + }); +} + +async function GM_fetch(input, init) { + const request = new Request(input, init); + let data; + if (init?.body) { + data = await request.text(); + } + return await XHR(request, init, data); +} +function XHR(request, init, data) { + return new Promise((resolve, reject) => { + if (request.signal && request.signal.aborted) { + return reject(new DOMException("Aborted", "AbortError")); + } + GM.xmlHttpRequest({ + url: request.url, + method: gmXHRMethod(request.method.toUpperCase()), + headers: Object.fromEntries(new Headers(init?.headers).entries()), + data: data, + responseType: "blob", + onload(res) { + resolve(parseGMResponse(request, res)); + }, + onabort() { + reject(new DOMException("Aborted", "AbortError")); + }, + ontimeout() { + reject(new TypeError("Network request failed, timeout")); + }, + onerror(err) { + reject(new TypeError("Failed to fetch: " + err.finalUrl)); + }, + }); + }); +} +const httpMethods = ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "TRACE", "OPTIONS", "CONNECT"]; +// a ts type helper to narrow type +function includes(array, element) { + return array.includes(element); +} +function gmXHRMethod(method) { + if (includes(httpMethods, method)) { + return method; + } + throw new Error(`unsupported http method ${method}`); +} + + +//# sourceMappingURL=index.mjs.map + +;// ./src/call-history.ts + class CallHistory { - constructor() { - this.callerIds = {}; - } + callerIds = {}; updateCallHistoryEntry(call, callerId) { var span = call.querySelector(':scope > span'); this.showTimeManager(call, call.querySelector('.date').textContent, callerId); @@ -4126,67 +4475,55 @@ class CallHistory { a.classList.add('btn-plain'); toolbar.insertBefore(a, toolbar.firstChild); } - showCallHistory(element) { - return __awaiter(this, void 0, void 0, function* () { - var span = element.querySelector(':scope > span'); - var number = extractNumber(span.textContent); - if (!number) { - this.updateCallHistoryEntry(element, undefined); - return; + async showCallHistory(element) { + var span = element.querySelector(':scope > span'); + var number = extractNumber(span.textContent); + if (!number) { + this.updateCallHistoryEntry(element, undefined); + return; + } + if (this.callerIds[number] !== undefined) { + this.updateCallHistoryEntry(element, this.callerIds[number]); + } + else { + var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number)); + var callerId = { tD_NAME: '' }; + if (response.status === 200) { + callerId = await response.json(); } - if (this.callerIds[number] !== undefined) { - this.updateCallHistoryEntry(element, this.callerIds[number]); - } - else { - var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number)); - var callerId = { tD_NAME: '' }; - if (response.status === 200) { - callerId = response.data; - } - console.log('TAPI call histroy callerid response', number, response, callerId); - this.callerIds[number] = callerId; - this.updateCallHistoryEntry(element, callerId); - } - }); + console.log('TAPI call histroy callerid response', number, response, callerId); + this.callerIds[number] = callerId; + this.updateCallHistoryEntry(element, callerId); + } } } -;// CONCATENATED MODULE: ./src/call-notification.ts -var call_notification_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; +;// ./src/call-notification.ts + class CallNotification { - showCallNotification(element) { - return call_notification_awaiter(this, void 0, void 0, function* () { - var number = element.querySelector('.callNumber').textContent; - console.log('TAPI call notification', number); - number = extractNumber(number); - if (!number) { - console.log('TAPI callerid no number found'); - return; + async showCallNotification(element) { + var number = element.querySelector('.callNumber').textContent; + console.log('TAPI call notification', number); + number = extractNumber(number); + if (!number) { + console.log('TAPI callerid no number found'); + return; + } + console.log('TAPI searching callerid for', number); + var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number)); + console.log('TAPI callerid response', response); + var notification = { + text: number + }; + if (response.status === 200) { + var callerId = await response.json(); + if (callerId) { + notification.text = callerId.tD_NAME + '\r\n' + number + ' (' + callerId.tD_MEDIUM + ')'; } - console.log('TAPI searching callerid for', number); - var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number)); - console.log('TAPI callerid response', response); - var notification = { - text: number - }; - if (response.status === 200) { - var callerId = response.data; - if (callerId) { - notification.text = callerId.tD_NAME + '\r\n' + number + ' (' + callerId.tD_MEDIUM + ')'; - } - } - // eslint-disable-next-line no-undef - GM.notification(notification); - }); + } + // eslint-disable-next-line no-undef + GM.notification(notification.text, 'TAPI Anruf'); } } @@ -4210,7 +4547,7 @@ var styleTagTransform = __webpack_require__("./node_modules/style-loader/dist/ru var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./src/search.css var search = __webpack_require__("./node_modules/css-loader/dist/cjs.js!./src/search.css"); -;// CONCATENATED MODULE: ./src/search.css +;// ./src/search.css @@ -4226,26 +4563,21 @@ var options = {}; options.styleTagTransform = (styleTagTransform_default()); options.setAttributes = (setAttributesWithoutAttributes_default()); - - options.insert = insertBySelector_default().bind(null, "head"); - +options.insert = insertBySelector_default().bind(null, "head"); options.domAPI = (styleDomAPI_default()); options.insertStyleElement = (insertStyleElement_default()); -var update = injectStylesIntoStyleTag_default()(search/* default */.Z, options); +var update = injectStylesIntoStyleTag_default()(search/* default */.A, options); - /* harmony default export */ const src_search = (search/* default */.Z && search/* default */.Z.locals ? search/* default */.Z.locals : undefined); + /* harmony default export */ const src_search = (search/* default */.A && search/* default */.A.locals ? search/* default */.A.locals : undefined); -;// CONCATENATED MODULE: ./src/debounce.js +;// ./src/debounce.js function debounce(func, wait) { let timeout; - return function executedFunction() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } + return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); @@ -4254,56 +4586,13 @@ function debounce(func, wait) { timeout = setTimeout(later, wait); }; } -;// CONCATENATED MODULE: ./src/search.ts -var search_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; +;// ./src/search.ts + class Search { - constructor() { - this.currentSearchText = ''; - this.doSearch = debounce(() => search_awaiter(this, void 0, void 0, function* () { - var search = document.getElementById('tapiSearchInput'); - var searchText = search.value.trim(); - if (searchText === '') { - this.removeSearchResults(); - return; - } - else if (searchText === this.currentSearchText) { - return; - } - console.log('Searching TAPI'); - var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/search?query=' + encodeURIComponent(searchText)); - console.log('TAPI Search response', response); - var contacts = response.data; - console.log('TAPI Contacts', contacts); - this.removeSearchResults(); - this.currentSearchText = searchText; - var results = document.createElement('div'); - results.setAttribute('id', 'tapi-search-autocomplete-list'); - results.setAttribute('class', 'tapi-search-autocomplete-items'); - document.getElementById('tapiSearchBox').appendChild(results); - contacts.forEach(contact => { - var item = document.createElement('div'); - item.setAttribute('class', 'tapi-search-autocomplete-item'); - var p = document.createElement('p'); - p.innerHTML = contact.tD_NAME + '
' + contact.tD_MEDIUM + ': ' + contact.tD_NUMBER_TAPI; - item.appendChild(p); - item.onclick = () => { this.dial(contact.tD_NUMBER_TAPI); }; - item.onmouseover = () => { this.selectResult(item); }; - item.dataset.tapiNumber = contact.tD_NUMBER_TAPI; - results.appendChild(item); - }); - }), 200); - } + currentSearchText = ''; createSearchWindow(element) { console.log('Create TAPI Search'); var form = document.createElement('form'); @@ -4385,6 +4674,39 @@ class Search { this.doSearch(); } } + doSearch = debounce(async () => { + var search = document.getElementById('tapiSearchInput'); + var searchText = search.value.trim(); + if (searchText === '') { + this.removeSearchResults(); + return; + } + else if (searchText === this.currentSearchText) { + return; + } + console.log('Searching TAPI'); + var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/search?query=' + encodeURIComponent(searchText)); + console.log('TAPI Search response', response); + var contacts = await response.json(); + console.log('TAPI Contacts', contacts); + this.removeSearchResults(); + this.currentSearchText = searchText; + var results = document.createElement('div'); + results.setAttribute('id', 'tapi-search-autocomplete-list'); + results.setAttribute('class', 'tapi-search-autocomplete-items'); + document.getElementById('tapiSearchBox').appendChild(results); + contacts.forEach(contact => { + var item = document.createElement('div'); + item.setAttribute('class', 'tapi-search-autocomplete-item'); + var p = document.createElement('p'); + p.innerHTML = contact.tD_NAME + '
' + contact.tD_MEDIUM + ': ' + contact.tD_NUMBER_TAPI; + item.appendChild(p); + item.onclick = () => { this.dial(contact.tD_NUMBER_TAPI); }; + item.onmouseover = () => { this.selectResult(item); }; + item.dataset.tapiNumber = contact.tD_NUMBER_TAPI; + results.appendChild(item); + }); + }, 200); selectResult(item) { console.log('Select item', item); var items = document.getElementsByClassName('tapi-search-autocomplete-active'); @@ -4408,7 +4730,7 @@ class Search { // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./src/status.css var cjs_js_src_status = __webpack_require__("./node_modules/css-loader/dist/cjs.js!./src/status.css"); -;// CONCATENATED MODULE: ./src/status.css +;// ./src/status.css @@ -4424,73 +4746,60 @@ var status_options = {}; status_options.styleTagTransform = (styleTagTransform_default()); status_options.setAttributes = (setAttributesWithoutAttributes_default()); - - status_options.insert = insertBySelector_default().bind(null, "head"); - +status_options.insert = insertBySelector_default().bind(null, "head"); status_options.domAPI = (styleDomAPI_default()); status_options.insertStyleElement = (insertStyleElement_default()); -var status_update = injectStylesIntoStyleTag_default()(cjs_js_src_status/* default */.Z, status_options); +var status_update = injectStylesIntoStyleTag_default()(cjs_js_src_status/* default */.A, status_options); - /* harmony default export */ const src_status = (cjs_js_src_status/* default */.Z && cjs_js_src_status/* default */.Z.locals ? cjs_js_src_status/* default */.Z.locals : undefined); + /* harmony default export */ const src_status = (cjs_js_src_status/* default */.A && cjs_js_src_status/* default */.A.locals ? cjs_js_src_status/* default */.A.locals : undefined); -;// CONCATENATED MODULE: ./src/status.ts -var status_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; +;// ./src/status.ts class Status { - constructor() { - this._enabled = false; - this._statusOn = 'menuAvailable'; - this._statusOff = 'menuAway'; - this._currentStatus = undefined; + _user; + _enabled = false; + _statusOn = 'menuAvailable'; + _statusOff = 'menuAway'; + _currentStatus = undefined; + async showStatus(element) { + this._user = await GM.getValue('tapi-zc-user', ''); + this._enabled = await GM.getValue('tapi-zc-enabled', false); + this._statusOn = await GM.getValue('tapi-zc-on', 'menuAvailable'); + this._statusOff = await GM.getValue('tapi-zc-off', 'menuAvailable'); + console.log('tapi-zc-user', this._user, 'tapi-zc-enabled', this._enabled, 'tapi-zc-on', this._statusOn, 'tapi-zc-off', this._statusOff); + this.checkStatus(); + waitForKeyElements("wc-account-menu > div > ul", (element) => { this.addZcStatusPopup(element); }, true); } - showStatus(element) { - return status_awaiter(this, void 0, void 0, function* () { - this._user = yield GM.getValue('tapi-zc-user', ''); - this._enabled = yield GM.getValue('tapi-zc-enabled', false); - this._statusOn = yield GM.getValue('tapi-zc-on', 'menuAvailable'); - this._statusOff = yield GM.getValue('tapi-zc-off', 'menuAvailable'); - console.log('tapi-zc-user', this._user, 'tapi-zc-enabled', this._enabled, 'tapi-zc-on', this._statusOn, 'tapi-zc-off', this._statusOff); - this.checkStatus(); - waitForKeyElements("wc-account-menu > div > ul", (element) => { this.addZcStatusPopup(element); }, true); - }); - } - checkStatus() { - return status_awaiter(this, void 0, void 0, function* () { - if (this._enabled) { - try { - var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/availability/' + encodeURIComponent(this._user)); - if (response.status == 200) { - var status = response.data; - if (this._currentStatus !== status.loggedIn) { - this._currentStatus = status.loggedIn; - console.log('New status, loggedIn', this._currentStatus); - document.getElementsByTagName("wcavatar")[0].click(); - setTimeout(() => { - var statusId = this._currentStatus ? this._statusOn : this._statusOff; - document.getElementById(statusId).click(); - }, 1000); - } + async checkStatus() { + if (this._enabled) { + try { + var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/availability/' + encodeURIComponent(this._user)); + if (response.status == 200) { + var status = await response.json(); + if (this._currentStatus !== status.loggedIn) { + this._currentStatus = status.loggedIn; + console.log('New status, loggedIn', this._currentStatus); + var accMenu = document.getElementsByTagName("wc-account-menu")[0]; + var avatar = accMenu.getElementsByTagName("app-avatar")[0]; + avatar.click(); + setTimeout(() => { + var statusId = this._currentStatus ? this._statusOn : this._statusOff; + console.log('Clicking status', statusId); + document.getElementById(statusId).click(); + }, 1000); } } - catch (error) { - console.log(error); - } - setTimeout(() => this.checkStatus(), 30000); } - }); + catch (error) { + console.log(error); + } + setTimeout(() => this.checkStatus(), 30000); + } } addZcStatusPopup(element) { var divider = document.createElement('li'); @@ -4511,7 +4820,7 @@ class Status { var html = '' + ''; var modal = document.createElement('modal-container'); @@ -4551,7 +4860,7 @@ class Status { modal.classList.add('modal'); modal.classList.add('fade'); modal.innerHTML = html; - var body = document.getElementsByTagName('body')[0].appendChild(modal); + document.getElementsByTagName('body')[0].appendChild(modal); var btnClose = document.getElementById('zc-btnClose'); btnClose.onclick = () => { document.getElementById('zc-modal').classList.toggle('show'); @@ -4592,7 +4901,7 @@ class Status { } } -;// CONCATENATED MODULE: ./src/index.js +;// ./src/index.js // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/package.json b/package.json index 182d80b..838e2f2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "3cx-tapi", "description": "3CX CP Tapi and Projectmanager integration", - "version": "9.1.1", + "version": "9.2.0", "author": { "name": "Daniel Triendl", "email": "d.triendl@cp-solutions.at"