chrono-node 2.4.1 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/.idea/chrono.iml +13 -0
  2. package/.idea/compiler.xml +7 -0
  3. package/.idea/dictionaries/wanasit.xml +8 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. package/.idea/jsLibraryMappings.xml +6 -0
  6. package/.idea/jsLinters/eslint.xml +6 -0
  7. package/.idea/misc.xml +6 -0
  8. package/.idea/modules.xml +8 -0
  9. package/.idea/prettier.xml +6 -0
  10. package/.idea/vcs.xml +6 -0
  11. package/.idea/workspace.xml +327 -0
  12. package/README.md +1 -1
  13. package/benchmark/results/chrono.chart.html +111 -0
  14. package/coverage/clover.xml +4771 -0
  15. package/coverage/coverage-final.json +147 -0
  16. package/coverage/lcov-report/base.css +224 -0
  17. package/coverage/lcov-report/block-navigation.js +87 -0
  18. package/coverage/lcov-report/favicon.png +0 -0
  19. package/coverage/lcov-report/index.html +686 -0
  20. package/coverage/lcov-report/prettify.css +1 -0
  21. package/coverage/lcov-report/prettify.js +2 -0
  22. package/coverage/lcov-report/results.ts.html +701 -0
  23. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  24. package/coverage/lcov-report/sorter.js +196 -0
  25. package/coverage/lcov-report/src/calculation/index.html +131 -0
  26. package/coverage/lcov-report/src/calculation/mergingCalculation.ts.html +319 -0
  27. package/coverage/lcov-report/src/calculation/weeks.ts.html +199 -0
  28. package/coverage/lcov-report/src/calculation/yearCalculation.ts.html +194 -0
  29. package/coverage/lcov-report/src/calculation/years.ts.html +199 -0
  30. package/coverage/lcov-report/src/chrono.js.html +368 -0
  31. package/coverage/lcov-report/src/chrono.ts.html +649 -0
  32. package/coverage/lcov-report/src/common/abstractRefiners.ts.html +286 -0
  33. package/coverage/lcov-report/src/common/calculation/index.html +116 -0
  34. package/coverage/lcov-report/src/common/calculation/weekdays.ts.html +352 -0
  35. package/coverage/lcov-report/src/common/casualReferences.ts.html +499 -0
  36. package/coverage/lcov-report/src/common/index.html +131 -0
  37. package/coverage/lcov-report/src/common/parsers/AbstractParserWithWordBoundary.ts.html +214 -0
  38. package/coverage/lcov-report/src/common/parsers/AbstractTimeExpressionParser.ts.html +1384 -0
  39. package/coverage/lcov-report/src/common/parsers/ISOFormatParser.ts.html +340 -0
  40. package/coverage/lcov-report/src/common/parsers/SlashDateFormatParser.ts.html +385 -0
  41. package/coverage/lcov-report/src/common/parsers/index.html +161 -0
  42. package/coverage/lcov-report/src/common/refiners/AbstractMergeDateRangeRefiner.ts.html +268 -0
  43. package/coverage/lcov-report/src/common/refiners/AbstractMergeDateTimeRefiner.ts.html +172 -0
  44. package/coverage/lcov-report/src/common/refiners/ExtractTimezoneAbbrRefiner.ts.html +883 -0
  45. package/coverage/lcov-report/src/common/refiners/ExtractTimezoneOffsetRefiner.ts.html +226 -0
  46. package/coverage/lcov-report/src/common/refiners/ForwardDateRefiner.ts.html +334 -0
  47. package/coverage/lcov-report/src/common/refiners/MergeWeekdayComponentRefiner.ts.html +187 -0
  48. package/coverage/lcov-report/src/common/refiners/OverlapRemovalRefiner.ts.html +199 -0
  49. package/coverage/lcov-report/src/common/refiners/UnlikelyFormatFilter.ts.html +265 -0
  50. package/coverage/lcov-report/src/common/refiners/index.html +221 -0
  51. package/coverage/lcov-report/src/configurations.ts.html +154 -0
  52. package/coverage/lcov-report/src/debugging.ts.html +154 -0
  53. package/coverage/lcov-report/src/index.html +191 -0
  54. package/coverage/lcov-report/src/index.ts.html +520 -0
  55. package/coverage/lcov-report/src/locales/de/constants.ts.html +664 -0
  56. package/coverage/lcov-report/src/locales/de/index.html +131 -0
  57. package/coverage/lcov-report/src/locales/de/index.ts.html +238 -0
  58. package/coverage/lcov-report/src/locales/de/parsers/DECasualDateParser.ts.html +325 -0
  59. package/coverage/lcov-report/src/locales/de/parsers/DECasualTimeParser.ts.html +325 -0
  60. package/coverage/lcov-report/src/locales/de/parsers/DEMonthNameLittleEndianParser.ts.html +268 -0
  61. package/coverage/lcov-report/src/locales/de/parsers/DESpecificTimeExpressionParser.ts.html +535 -0
  62. package/coverage/lcov-report/src/locales/de/parsers/DETimeExpressionParser.ts.html +151 -0
  63. package/coverage/lcov-report/src/locales/de/parsers/DETimeUnitRelativeFormatParser.ts.html +211 -0
  64. package/coverage/lcov-report/src/locales/de/parsers/DEWeekdayParser.ts.html +232 -0
  65. package/coverage/lcov-report/src/locales/de/parsers/index.html +206 -0
  66. package/coverage/lcov-report/src/locales/de/refiners/DEMergeDateRangeRefiner.ts.html +130 -0
  67. package/coverage/lcov-report/src/locales/de/refiners/DEMergeDateTimeRefiner.ts.html +115 -0
  68. package/coverage/lcov-report/src/locales/de/refiners/index.html +131 -0
  69. package/coverage/lcov-report/src/locales/en/constants.ts.html +859 -0
  70. package/coverage/lcov-report/src/locales/en/index.html +131 -0
  71. package/coverage/lcov-report/src/locales/en/index.ts.html +382 -0
  72. package/coverage/lcov-report/src/locales/en/parsers/ENCasualDateParser.ts.html +244 -0
  73. package/coverage/lcov-report/src/locales/en/parsers/ENCasualTimeParser.ts.html +169 -0
  74. package/coverage/lcov-report/src/locales/en/parsers/ENCasualYearMonthDayParser.ts.html +232 -0
  75. package/coverage/lcov-report/src/locales/en/parsers/ENDeadlineFormatParser.ts.html +311 -0
  76. package/coverage/lcov-report/src/locales/en/parsers/ENISOFormatParser.ts.html +317 -0
  77. package/coverage/lcov-report/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts.html +292 -0
  78. package/coverage/lcov-report/src/locales/en/parsers/ENMonthNameMiddleEndianParser.ts.html +319 -0
  79. package/coverage/lcov-report/src/locales/en/parsers/ENMonthNameParser.ts.html +271 -0
  80. package/coverage/lcov-report/src/locales/en/parsers/ENRelativeDateFormatParser.ts.html +292 -0
  81. package/coverage/lcov-report/src/locales/en/parsers/ENSlashDateFormatParser.ts.html +443 -0
  82. package/coverage/lcov-report/src/locales/en/parsers/ENSlashDateFormatStartWithYearParser.ts.html +221 -0
  83. package/coverage/lcov-report/src/locales/en/parsers/ENSlashMonthFormatParser.ts.html +163 -0
  84. package/coverage/lcov-report/src/locales/en/parsers/ENTimeExpressionParser.ts.html +250 -0
  85. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts.html +160 -0
  86. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts.html +166 -0
  87. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitDeadlineFormatParser.ts.html +149 -0
  88. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts.html +166 -0
  89. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts.html +163 -0
  90. package/coverage/lcov-report/src/locales/en/parsers/ENWeekdayParser.ts.html +229 -0
  91. package/coverage/lcov-report/src/locales/en/parsers/index.html +311 -0
  92. package/coverage/lcov-report/src/locales/en/refiners/ENMergeDateRangeRefiner.ts.html +136 -0
  93. package/coverage/lcov-report/src/locales/en/refiners/ENMergeDateTimeRefiner.ts.html +124 -0
  94. package/coverage/lcov-report/src/locales/en/refiners/ENMergeRelativeDateRefiner.ts.html +259 -0
  95. package/coverage/lcov-report/src/locales/en/refiners/index.html +146 -0
  96. package/coverage/lcov-report/src/locales/es/constants.ts.html +340 -0
  97. package/coverage/lcov-report/src/locales/es/index.html +131 -0
  98. package/coverage/lcov-report/src/locales/es/index.ts.html +256 -0
  99. package/coverage/lcov-report/src/locales/es/parsers/ESCasualDateParser.ts.html +178 -0
  100. package/coverage/lcov-report/src/locales/es/parsers/ESCasualTimeParser.ts.html +226 -0
  101. package/coverage/lcov-report/src/locales/es/parsers/ESMonthNameLittleEndianParser.ts.html +265 -0
  102. package/coverage/lcov-report/src/locales/es/parsers/ESTimeExpressionParser.ts.html +145 -0
  103. package/coverage/lcov-report/src/locales/es/parsers/ESWeekdayParser.ts.html +235 -0
  104. package/coverage/lcov-report/src/locales/es/parsers/index.html +176 -0
  105. package/coverage/lcov-report/src/locales/es/refiners/ESMergeDateRangeRefiner.ts.html +130 -0
  106. package/coverage/lcov-report/src/locales/es/refiners/ESMergeDateTimeRefiner.ts.html +115 -0
  107. package/coverage/lcov-report/src/locales/es/refiners/index.html +131 -0
  108. package/coverage/lcov-report/src/locales/fr/constants.ts.html +637 -0
  109. package/coverage/lcov-report/src/locales/fr/index.html +131 -0
  110. package/coverage/lcov-report/src/locales/fr/index.ts.html +280 -0
  111. package/coverage/lcov-report/src/locales/fr/parsers/FRCasualDateParser.ts.html +223 -0
  112. package/coverage/lcov-report/src/locales/fr/parsers/FRCasualTimeParser.ts.html +232 -0
  113. package/coverage/lcov-report/src/locales/fr/parsers/FRMonthNameLittleEndianParser.ts.html +277 -0
  114. package/coverage/lcov-report/src/locales/fr/parsers/FRSpecificTimeExpressionParser.ts.html +484 -0
  115. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeExpressionParser.ts.html +151 -0
  116. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts.html +151 -0
  117. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts.html +214 -0
  118. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts.html +130 -0
  119. package/coverage/lcov-report/src/locales/fr/parsers/FRWeekdayParser.ts.html +223 -0
  120. package/coverage/lcov-report/src/locales/fr/parsers/index.html +236 -0
  121. package/coverage/lcov-report/src/locales/fr/refiners/FRMergeDateRangeRefiner.ts.html +130 -0
  122. package/coverage/lcov-report/src/locales/fr/refiners/FRMergeDateTimeRefiner.ts.html +115 -0
  123. package/coverage/lcov-report/src/locales/fr/refiners/index.html +131 -0
  124. package/coverage/lcov-report/src/locales/ja/constants.ts.html +157 -0
  125. package/coverage/lcov-report/src/locales/ja/index.html +131 -0
  126. package/coverage/lcov-report/src/locales/ja/index.ts.html +214 -0
  127. package/coverage/lcov-report/src/locales/ja/parsers/JPCasualDateParser.ts.html +217 -0
  128. package/coverage/lcov-report/src/locales/ja/parsers/JPStandardParser.ts.html +247 -0
  129. package/coverage/lcov-report/src/locales/ja/parsers/index.html +131 -0
  130. package/coverage/lcov-report/src/locales/ja/refiners/JPMergeDateRangeRefiner.ts.html +124 -0
  131. package/coverage/lcov-report/src/locales/ja/refiners/index.html +116 -0
  132. package/coverage/lcov-report/src/locales/nl/constants.ts.html +796 -0
  133. package/coverage/lcov-report/src/locales/nl/index.html +131 -0
  134. package/coverage/lcov-report/src/locales/nl/index.ts.html +304 -0
  135. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualDateParser.ts.html +181 -0
  136. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualDateTimeParser.ts.html +310 -0
  137. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualTimeParser.ts.html +265 -0
  138. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualYearMonthDayParser.ts.html +232 -0
  139. package/coverage/lcov-report/src/locales/nl/parsers/NLMonthNameMiddleEndianParser.ts.html +349 -0
  140. package/coverage/lcov-report/src/locales/nl/parsers/NLMonthNameParser.ts.html +235 -0
  141. package/coverage/lcov-report/src/locales/nl/parsers/NLRelativeDateFormatParser.ts.html +295 -0
  142. package/coverage/lcov-report/src/locales/nl/parsers/NLSlashMonthFormatParser.ts.html +163 -0
  143. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeExpressionParser.ts.html +163 -0
  144. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts.html +163 -0
  145. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts.html +166 -0
  146. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts.html +166 -0
  147. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts.html +130 -0
  148. package/coverage/lcov-report/src/locales/nl/parsers/NLWeekdayParser.ts.html +223 -0
  149. package/coverage/lcov-report/src/locales/nl/parsers/index.html +311 -0
  150. package/coverage/lcov-report/src/locales/nl/refiners/NLMergeDateRangeRefiner.ts.html +136 -0
  151. package/coverage/lcov-report/src/locales/nl/refiners/NLMergeDateTimeRefiner.ts.html +124 -0
  152. package/coverage/lcov-report/src/locales/nl/refiners/index.html +131 -0
  153. package/coverage/lcov-report/src/locales/pt/constants.ts.html +343 -0
  154. package/coverage/lcov-report/src/locales/pt/index.html +131 -0
  155. package/coverage/lcov-report/src/locales/pt/index.ts.html +256 -0
  156. package/coverage/lcov-report/src/locales/pt/parsers/PTCasualDateParser.ts.html +181 -0
  157. package/coverage/lcov-report/src/locales/pt/parsers/PTCasualTimeParser.ts.html +226 -0
  158. package/coverage/lcov-report/src/locales/pt/parsers/PTMonthNameLittleEndianParser.ts.html +265 -0
  159. package/coverage/lcov-report/src/locales/pt/parsers/PTTimeExpressionParser.ts.html +145 -0
  160. package/coverage/lcov-report/src/locales/pt/parsers/PTWeekdayParser.ts.html +235 -0
  161. package/coverage/lcov-report/src/locales/pt/parsers/index.html +176 -0
  162. package/coverage/lcov-report/src/locales/pt/refiners/PTMergeDateRangeRefiner.ts.html +130 -0
  163. package/coverage/lcov-report/src/locales/pt/refiners/PTMergeDateTimeRefiner.ts.html +115 -0
  164. package/coverage/lcov-report/src/locales/pt/refiners/index.html +131 -0
  165. package/coverage/lcov-report/src/locales/ru/constants.ts.html +1111 -0
  166. package/coverage/lcov-report/src/locales/ru/index.html +131 -0
  167. package/coverage/lcov-report/src/locales/ru/index.ts.html +337 -0
  168. package/coverage/lcov-report/src/locales/ru/parsers/RUCasualDateParser.ts.html +217 -0
  169. package/coverage/lcov-report/src/locales/ru/parsers/RUCasualTimeParser.ts.html +253 -0
  170. package/coverage/lcov-report/src/locales/ru/parsers/RUMonthNameLittleEndianParser.ts.html +301 -0
  171. package/coverage/lcov-report/src/locales/ru/parsers/RUMonthNameParser.ts.html +268 -0
  172. package/coverage/lcov-report/src/locales/ru/parsers/RURelativeDateFormatParser.ts.html +310 -0
  173. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeExpressionParser.ts.html +277 -0
  174. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeUnitAgoFormatParser.ts.html +157 -0
  175. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts.html +187 -0
  176. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts.html +157 -0
  177. package/coverage/lcov-report/src/locales/ru/parsers/RUWeekdayParser.ts.html +256 -0
  178. package/coverage/lcov-report/src/locales/ru/parsers/index.html +251 -0
  179. package/coverage/lcov-report/src/locales/ru/refiners/RUMergeDateRangeRefiner.ts.html +124 -0
  180. package/coverage/lcov-report/src/locales/ru/refiners/RUMergeDateTimeRefiner.ts.html +124 -0
  181. package/coverage/lcov-report/src/locales/ru/refiners/index.html +131 -0
  182. package/coverage/lcov-report/src/locales/zh/hans/constants.ts.html +241 -0
  183. package/coverage/lcov-report/src/locales/zh/hans/index.html +131 -0
  184. package/coverage/lcov-report/src/locales/zh/hans/index.ts.html +271 -0
  185. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansCasualDateParser.ts.html +469 -0
  186. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansDateParser.ts.html +310 -0
  187. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.ts.html +328 -0
  188. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.ts.html +292 -0
  189. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts.html +1357 -0
  190. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansWeekdayParser.ts.html +223 -0
  191. package/coverage/lcov-report/src/locales/zh/hans/parsers/index.html +191 -0
  192. package/coverage/lcov-report/src/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.ts.html +106 -0
  193. package/coverage/lcov-report/src/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.ts.html +106 -0
  194. package/coverage/lcov-report/src/locales/zh/hans/refiners/index.html +131 -0
  195. package/coverage/lcov-report/src/locales/zh/hant/constants.ts.html +244 -0
  196. package/coverage/lcov-report/src/locales/zh/hant/index.html +131 -0
  197. package/coverage/lcov-report/src/locales/zh/hant/index.ts.html +274 -0
  198. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantCasualDateParser.ts.html +469 -0
  199. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantDateParser.ts.html +289 -0
  200. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.ts.html +328 -0
  201. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.ts.html +292 -0
  202. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts.html +1357 -0
  203. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantWeekdayParser.ts.html +223 -0
  204. package/coverage/lcov-report/src/locales/zh/hant/parsers/index.html +191 -0
  205. package/coverage/lcov-report/src/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.ts.html +106 -0
  206. package/coverage/lcov-report/src/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.ts.html +106 -0
  207. package/coverage/lcov-report/src/locales/zh/hant/refiners/index.html +131 -0
  208. package/coverage/lcov-report/src/locales/zh/index.html +116 -0
  209. package/coverage/lcov-report/src/locales/zh/index.ts.html +91 -0
  210. package/coverage/lcov-report/src/options.js.html +1085 -0
  211. package/coverage/lcov-report/src/parsers/de/DECasualDateParser.js.html +368 -0
  212. package/coverage/lcov-report/src/parsers/de/DEDeadlineFormatParser.js.html +374 -0
  213. package/coverage/lcov-report/src/parsers/de/DEMonthNameLittleEndianParser.js.html +347 -0
  214. package/coverage/lcov-report/src/parsers/de/DEMonthNameParser.js.html +329 -0
  215. package/coverage/lcov-report/src/parsers/de/DESlashDateFormatParser.js.html +398 -0
  216. package/coverage/lcov-report/src/parsers/de/DETimeAgoFormatParser.js.html +401 -0
  217. package/coverage/lcov-report/src/parsers/de/DETimeExpressionParser.js.html +836 -0
  218. package/coverage/lcov-report/src/parsers/de/DEWeekdayParser.js.html +338 -0
  219. package/coverage/lcov-report/src/parsers/de/index.html +216 -0
  220. package/coverage/lcov-report/src/parsers/en/ENCasualDateParser.js.html +275 -0
  221. package/coverage/lcov-report/src/parsers/en/ENCasualTimeParser.js.html +242 -0
  222. package/coverage/lcov-report/src/parsers/en/ENDeadlineFormatParser.js.html +359 -0
  223. package/coverage/lcov-report/src/parsers/en/ENISOFormatParser.js.html +389 -0
  224. package/coverage/lcov-report/src/parsers/en/ENMonthNameLittleEndianParser.js.html +416 -0
  225. package/coverage/lcov-report/src/parsers/en/ENMonthNameMiddleEndianParser.js.html +437 -0
  226. package/coverage/lcov-report/src/parsers/en/ENMonthNameParser.js.html +320 -0
  227. package/coverage/lcov-report/src/parsers/en/ENRelativeDateFormatParser.js.html +518 -0
  228. package/coverage/lcov-report/src/parsers/en/ENSlashDateFormatParser.js.html +479 -0
  229. package/coverage/lcov-report/src/parsers/en/ENSlashDateFormatStartWithYearParser.js.html +245 -0
  230. package/coverage/lcov-report/src/parsers/en/ENSlashMonthFormatParser.js.html +221 -0
  231. package/coverage/lcov-report/src/parsers/en/ENTimeAgoFormatParser.js.html +287 -0
  232. package/coverage/lcov-report/src/parsers/en/ENTimeExpressionParser.js.html +869 -0
  233. package/coverage/lcov-report/src/parsers/en/ENTimeLaterFormatParser.js.html +305 -0
  234. package/coverage/lcov-report/src/parsers/en/ENWeekdayParser.js.html +356 -0
  235. package/coverage/lcov-report/src/parsers/en/index.html +321 -0
  236. package/coverage/lcov-report/src/parsers/es/ESCasualDateParser.js.html +452 -0
  237. package/coverage/lcov-report/src/parsers/es/ESDeadlineFormatParser.js.html +260 -0
  238. package/coverage/lcov-report/src/parsers/es/ESMonthNameLittleEndianParser.js.html +338 -0
  239. package/coverage/lcov-report/src/parsers/es/ESSlashDateFormatParser.js.html +419 -0
  240. package/coverage/lcov-report/src/parsers/es/ESTimeAgoFormatParser.js.html +341 -0
  241. package/coverage/lcov-report/src/parsers/es/ESTimeExpressionParser.js.html +782 -0
  242. package/coverage/lcov-report/src/parsers/es/ESWeekdayParser.js.html +260 -0
  243. package/coverage/lcov-report/src/parsers/es/index.html +201 -0
  244. package/coverage/lcov-report/src/parsers/fr/FRCasualDateParser.js.html +311 -0
  245. package/coverage/lcov-report/src/parsers/fr/FRDeadlineFormatParser.js.html +359 -0
  246. package/coverage/lcov-report/src/parsers/fr/FRMonthNameLittleEndianParser.js.html +338 -0
  247. package/coverage/lcov-report/src/parsers/fr/FRRelativeDateFormatParser.js.html +545 -0
  248. package/coverage/lcov-report/src/parsers/fr/FRSlashDateFormatParser.js.html +437 -0
  249. package/coverage/lcov-report/src/parsers/fr/FRTimeAgoFormatParser.js.html +341 -0
  250. package/coverage/lcov-report/src/parsers/fr/FRTimeExpressionParser.js.html +803 -0
  251. package/coverage/lcov-report/src/parsers/fr/FRWeekdayParser.js.html +257 -0
  252. package/coverage/lcov-report/src/parsers/fr/index.html +216 -0
  253. package/coverage/lcov-report/src/parsers/index.html +111 -0
  254. package/coverage/lcov-report/src/parsers/ja/JPCasualDateParser.js.html +245 -0
  255. package/coverage/lcov-report/src/parsers/ja/JPStandardParser.js.html +293 -0
  256. package/coverage/lcov-report/src/parsers/ja/index.html +126 -0
  257. package/coverage/lcov-report/src/parsers/nl/NLCasualDateParser.js.html +395 -0
  258. package/coverage/lcov-report/src/parsers/nl/NLCasualTimeParser.js.html +278 -0
  259. package/coverage/lcov-report/src/parsers/nl/NLMonthNameLittleEndianParser.js.html +383 -0
  260. package/coverage/lcov-report/src/parsers/nl/NLMonthNameParser.js.html +320 -0
  261. package/coverage/lcov-report/src/parsers/nl/NLSlashDateFormatParser.js.html +389 -0
  262. package/coverage/lcov-report/src/parsers/nl/NLTimeExpressionParser.js.html +836 -0
  263. package/coverage/lcov-report/src/parsers/nl/NLWeekdayParser.js.html +377 -0
  264. package/coverage/lcov-report/src/parsers/nl/index.html +201 -0
  265. package/coverage/lcov-report/src/parsers/parser.js.html +500 -0
  266. package/coverage/lcov-report/src/parsers/pt/PTCasualDateParser.js.html +449 -0
  267. package/coverage/lcov-report/src/parsers/pt/PTDeadlineFormatParser.js.html +263 -0
  268. package/coverage/lcov-report/src/parsers/pt/PTMonthNameLittleEndianParser.js.html +338 -0
  269. package/coverage/lcov-report/src/parsers/pt/PTSlashDateFormatParser.js.html +419 -0
  270. package/coverage/lcov-report/src/parsers/pt/PTTimeAgoFormatParser.js.html +341 -0
  271. package/coverage/lcov-report/src/parsers/pt/PTTimeExpressionParser.js.html +782 -0
  272. package/coverage/lcov-report/src/parsers/pt/PTWeekdayParser.js.html +260 -0
  273. package/coverage/lcov-report/src/parsers/pt/index.html +201 -0
  274. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantCasualDateParser.js.html +494 -0
  275. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantDateParser.js.html +281 -0
  276. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantDeadlineFormatParser.js.html +353 -0
  277. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantTimeExpressionParser.js.html +1346 -0
  278. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantWeekdayParser.js.html +239 -0
  279. package/coverage/lcov-report/src/parsers/zh-Hant/index.html +171 -0
  280. package/coverage/lcov-report/src/refiners/ExtractTimezoneAbbrRefiner.js.html +245 -0
  281. package/coverage/lcov-report/src/refiners/ExtractTimezoneOffsetRefiner.js.html +218 -0
  282. package/coverage/lcov-report/src/refiners/ForwardDateRefiner.js.html +239 -0
  283. package/coverage/lcov-report/src/refiners/OverlapRemovalRefiner.js.html +200 -0
  284. package/coverage/lcov-report/src/refiners/UnlikelyFormatFilter.js.html +131 -0
  285. package/coverage/lcov-report/src/refiners/de/DEMergeDateRangeRefiner.js.html +116 -0
  286. package/coverage/lcov-report/src/refiners/de/DEMergeDateTimeRefiner.js.html +377 -0
  287. package/coverage/lcov-report/src/refiners/de/index.html +126 -0
  288. package/coverage/lcov-report/src/refiners/en/ENMergeDateRangeRefiner.js.html +416 -0
  289. package/coverage/lcov-report/src/refiners/en/ENMergeDateTimeRefiner.js.html +533 -0
  290. package/coverage/lcov-report/src/refiners/en/ENPrioritizeSpecificDateRefiner.js.html +422 -0
  291. package/coverage/lcov-report/src/refiners/en/index.html +141 -0
  292. package/coverage/lcov-report/src/refiners/fr/FRMergeDateRangeRefiner.js.html +374 -0
  293. package/coverage/lcov-report/src/refiners/fr/FRMergeDateTimeRefiner.js.html +395 -0
  294. package/coverage/lcov-report/src/refiners/fr/index.html +126 -0
  295. package/coverage/lcov-report/src/refiners/index.html +186 -0
  296. package/coverage/lcov-report/src/refiners/ja/JPMergeDateRangeRefiner.js.html +113 -0
  297. package/coverage/lcov-report/src/refiners/ja/index.html +111 -0
  298. package/coverage/lcov-report/src/refiners/nl/NLMergeDateRangeRefiner.js.html +116 -0
  299. package/coverage/lcov-report/src/refiners/nl/NLMergeDateTimeRefiner.js.html +362 -0
  300. package/coverage/lcov-report/src/refiners/nl/index.html +126 -0
  301. package/coverage/lcov-report/src/refiners/refiner.js.html +239 -0
  302. package/coverage/lcov-report/src/result.js.html +545 -0
  303. package/coverage/lcov-report/src/results.ts.html +916 -0
  304. package/coverage/lcov-report/src/timezone.ts.html +700 -0
  305. package/coverage/lcov-report/src/utils/DE.js.html +308 -0
  306. package/coverage/lcov-report/src/utils/EN.js.html +596 -0
  307. package/coverage/lcov-report/src/utils/ES.js.html +254 -0
  308. package/coverage/lcov-report/src/utils/FR.js.html +302 -0
  309. package/coverage/lcov-report/src/utils/JP.js.html +215 -0
  310. package/coverage/lcov-report/src/utils/NL.js.html +620 -0
  311. package/coverage/lcov-report/src/utils/PT.js.html +263 -0
  312. package/coverage/lcov-report/src/utils/ParserWithWordEndingDetection.ts.html +176 -0
  313. package/coverage/lcov-report/src/utils/ZH-Hant.js.html +236 -0
  314. package/coverage/lcov-report/src/utils/dayjs.ts.html +223 -0
  315. package/coverage/lcov-report/src/utils/index.html +146 -0
  316. package/coverage/lcov-report/src/utils/pattern.ts.html +175 -0
  317. package/coverage/lcov-report/src/utils/timeunits.ts.html +199 -0
  318. package/coverage/lcov-report/test/index.html +116 -0
  319. package/coverage/lcov-report/test/test_util.js.html +299 -0
  320. package/coverage/lcov-report/test/test_util.ts.html +490 -0
  321. package/coverage/lcov.info +8049 -0
  322. package/dist/common/casualReferences.d.ts +1 -0
  323. package/dist/common/casualReferences.js +23 -2
  324. package/dist/common/casualReferences.js.map +1 -1
  325. package/dist/common/parsers/SlashDateFormatParser.js +5 -3
  326. package/dist/common/parsers/SlashDateFormatParser.js.map +1 -1
  327. package/dist/common/refiners/AbstractMergeDateTimeRefiner.d.ts +1 -1
  328. package/dist/common/refiners/AbstractMergeDateTimeRefiner.js +2 -2
  329. package/dist/common/refiners/AbstractMergeDateTimeRefiner.js.map +1 -1
  330. package/dist/common/refiners/ForwardDateRefiner.js +12 -0
  331. package/dist/common/refiners/ForwardDateRefiner.js.map +1 -1
  332. package/dist/index.d.ts +2 -1
  333. package/dist/index.js +3 -1
  334. package/dist/index.js.map +1 -1
  335. package/dist/locales/en/constants.js +6 -0
  336. package/dist/locales/en/constants.js.map +1 -1
  337. package/dist/locales/en/parsers/ENCasualTimeParser.js +27 -26
  338. package/dist/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
  339. package/dist/locales/es/constants.d.ts +8 -0
  340. package/dist/locales/es/constants.js +84 -0
  341. package/dist/locales/es/constants.js.map +1 -0
  342. package/dist/locales/es/index.d.ts +8 -0
  343. package/dist/locales/es/index.js +46 -0
  344. package/dist/locales/es/index.js.map +1 -0
  345. package/dist/locales/es/parsers/ESCasualDateParser.d.ts +7 -0
  346. package/dist/locales/es/parsers/ESCasualDateParser.js +45 -0
  347. package/dist/locales/es/parsers/ESCasualDateParser.js.map +1 -0
  348. package/dist/locales/es/parsers/ESCasualTimeParser.d.ts +6 -0
  349. package/dist/locales/es/parsers/ESCasualTimeParser.js +46 -0
  350. package/dist/locales/es/parsers/ESCasualTimeParser.js.map +1 -0
  351. package/dist/locales/es/parsers/ESMonthNameLittleEndianParser.d.ts +7 -0
  352. package/dist/locales/es/parsers/ESMonthNameLittleEndianParser.js +49 -0
  353. package/dist/locales/es/parsers/ESMonthNameLittleEndianParser.js.map +1 -0
  354. package/dist/locales/es/parsers/ESTimeExpressionParser.d.ts +5 -0
  355. package/dist/locales/es/parsers/ESTimeExpressionParser.js +13 -0
  356. package/dist/locales/es/parsers/ESTimeExpressionParser.js.map +1 -0
  357. package/dist/locales/es/parsers/ESWeekdayParser.d.ts +7 -0
  358. package/dist/locales/es/parsers/ESWeekdayParser.js +44 -0
  359. package/dist/locales/es/parsers/ESWeekdayParser.js.map +1 -0
  360. package/dist/locales/es/refiners/ESMergeDateRangeRefiner.d.ts +4 -0
  361. package/dist/locales/es/refiners/ESMergeDateRangeRefiner.js +13 -0
  362. package/dist/locales/es/refiners/ESMergeDateRangeRefiner.js.map +1 -0
  363. package/dist/locales/es/refiners/ESMergeDateTimeRefiner.d.ts +4 -0
  364. package/dist/locales/es/refiners/ESMergeDateTimeRefiner.js +13 -0
  365. package/dist/locales/es/refiners/ESMergeDateTimeRefiner.js.map +1 -0
  366. package/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +1 -1
  367. package/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
  368. package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +26 -26
  369. package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
  370. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +26 -26
  371. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
  372. package/dist/utils/dayjs.d.ts +2 -0
  373. package/dist/utils/dayjs.js +13 -1
  374. package/dist/utils/dayjs.js.map +1 -1
  375. package/docs/assets/css/main.css +2660 -0
  376. package/docs/assets/images/icons.png +0 -0
  377. package/docs/assets/images/icons@2x.png +0 -0
  378. package/docs/assets/images/widgets.png +0 -0
  379. package/docs/assets/images/widgets@2x.png +0 -0
  380. package/docs/assets/js/main.js +248 -0
  381. package/docs/assets/js/search.js +1 -0
  382. package/docs/classes/chrono.html +377 -0
  383. package/docs/enums/meridiem.html +191 -0
  384. package/docs/index.html +329 -0
  385. package/docs/interfaces/parsedcomponents.html +270 -0
  386. package/docs/interfaces/parsedresult.html +283 -0
  387. package/docs/interfaces/parser.html +240 -0
  388. package/docs/interfaces/parsingoption.html +218 -0
  389. package/docs/interfaces/refiner.html +218 -0
  390. package/docs/modules/de.html +298 -0
  391. package/docs/modules/en.html +361 -0
  392. package/docs/modules/fr.html +248 -0
  393. package/docs/modules/ja.html +248 -0
  394. package/docs/modules/nl.html +275 -0
  395. package/docs/modules/pt.html +248 -0
  396. package/package.json +1 -1
  397. package/src/common/casualReferences.ts +31 -2
  398. package/src/common/parsers/SlashDateFormatParser.ts +7 -6
  399. package/src/common/refiners/AbstractMergeDateTimeRefiner.ts +1 -1
  400. package/src/common/refiners/ForwardDateRefiner.ts +13 -0
  401. package/src/index.ts +2 -1
  402. package/src/locales/en/constants.ts +6 -0
  403. package/src/locales/en/parsers/ENCasualTimeParser.ts +9 -31
  404. package/src/locales/es/constants.ts +85 -0
  405. package/src/locales/es/index.ts +57 -0
  406. package/src/locales/es/parsers/ESCasualDateParser.ts +31 -0
  407. package/src/locales/es/parsers/ESCasualTimeParser.ts +47 -0
  408. package/src/locales/es/parsers/ESMonthNameLittleEndianParser.ts +60 -0
  409. package/src/locales/es/parsers/ESTimeExpressionParser.ts +20 -0
  410. package/src/locales/es/parsers/ESWeekdayParser.ts +50 -0
  411. package/src/locales/es/refiners/ESMergeDateRangeRefiner.ts +15 -0
  412. package/src/locales/es/refiners/ESMergeDateTimeRefiner.ts +10 -0
  413. package/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts +1 -1
  414. package/src/locales/ru/refiners/RUMergeDateTimeRefiner.ts +1 -1
  415. package/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts +26 -26
  416. package/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts +26 -26
  417. package/src/utils/dayjs.ts +12 -0
  418. package/test/en/en_casual.test.ts +34 -4
  419. package/test/en/en_slash.test.ts +12 -11
  420. package/test/en/en_time_exp.test.ts +53 -0
  421. package/test/en/en_time_units_ago.test.ts +17 -0
  422. package/test/en/en_time_units_later.test.ts +30 -0
  423. package/test/en/negative_cases.test.ts +11 -0
  424. package/test/es/es_casual.test.ts +175 -0
  425. package/test/es/es_month_name_little_endian.test.ts +217 -0
  426. package/test/es/es_slash.test.ts +26 -0
  427. package/test/es/es_time_exp.test.ts +175 -0
  428. package/test/ru/ru_time_units_casual_relative.test.ts +12 -0
  429. package/test/zh/zh_hans_time_exp.test.ts +15 -0
  430. package/test/zh/zh_hant_time_exp.test.ts +14 -0
@@ -0,0 +1,47 @@
1
+ import { ParsingContext } from "../../../chrono";
2
+ import { Meridiem } from "../../../index";
3
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
4
+ import { assignTheNextDay } from "../../../utils/dayjs";
5
+ import dayjs from "dayjs";
6
+
7
+ export default class ESCasualTimeParser extends AbstractParserWithWordBoundaryChecking {
8
+ innerPattern() {
9
+ return /(?:esta\s*)?(mañana|tarde|medianoche|mediodia|mediodía|noche)(?=\W|$)/i;
10
+ }
11
+
12
+ innerExtract(context: ParsingContext, match: RegExpMatchArray) {
13
+ const targetDate = dayjs(context.refDate);
14
+ const component = context.createParsingComponents();
15
+ switch (match[1].toLowerCase()) {
16
+ case "tarde":
17
+ component.imply("meridiem", Meridiem.PM);
18
+ component.imply("hour", 15);
19
+ break;
20
+
21
+ case "noche":
22
+ component.imply("meridiem", Meridiem.PM);
23
+ component.imply("hour", 22);
24
+ break;
25
+
26
+ case "mañana":
27
+ component.imply("meridiem", Meridiem.AM);
28
+ component.imply("hour", 6);
29
+ break;
30
+
31
+ case "medianoche":
32
+ assignTheNextDay(component, targetDate);
33
+ component.imply("hour", 0);
34
+ component.imply("minute", 0);
35
+ component.imply("second", 0);
36
+ break;
37
+
38
+ case "mediodia":
39
+ case "mediodía":
40
+ component.imply("meridiem", Meridiem.AM);
41
+ component.imply("hour", 12);
42
+ break;
43
+ }
44
+
45
+ return component;
46
+ }
47
+ }
@@ -0,0 +1,60 @@
1
+ import { ParsingContext } from "../../../chrono";
2
+ import { ParsingResult } from "../../../results";
3
+ import { findYearClosestToRef } from "../../../calculation/years";
4
+ import { MONTH_DICTIONARY } from "../constants";
5
+ import { YEAR_PATTERN, parseYear } from "../constants";
6
+ import { matchAnyPattern } from "../../../utils/pattern";
7
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
8
+
9
+ const PATTERN = new RegExp(
10
+ `([0-9]{1,2})(?:º|ª|°)?` +
11
+ "(?:\\s*(?:desde|de|\\-|\\–|ao?|\\s)\\s*([0-9]{1,2})(?:º|ª|°)?)?\\s*(?:de)?\\s*" +
12
+ `(?:-|/|\\s*(?:de|,)?\\s*)` +
13
+ `(${matchAnyPattern(MONTH_DICTIONARY)})` +
14
+ `(?:\\s*(?:de|,)?\\s*(${YEAR_PATTERN}))?` +
15
+ `(?=\\W|$)`,
16
+ "i"
17
+ );
18
+
19
+ const DATE_GROUP = 1;
20
+ const DATE_TO_GROUP = 2;
21
+ const MONTH_NAME_GROUP = 3;
22
+ const YEAR_GROUP = 4;
23
+
24
+ export default class ESMonthNameLittleEndianParser extends AbstractParserWithWordBoundaryChecking {
25
+ innerPattern(): RegExp {
26
+ return PATTERN;
27
+ }
28
+
29
+ innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingResult {
30
+ const result = context.createParsingResult(match.index, match[0]);
31
+
32
+ const month = MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];
33
+ const day = parseInt(match[DATE_GROUP]);
34
+ if (day > 31) {
35
+ // e.g. "[96 Aug]" => "9[6 Aug]", we need to shift away from the next number
36
+ match.index = match.index + match[DATE_GROUP].length;
37
+ return null;
38
+ }
39
+
40
+ result.start.assign("month", month);
41
+ result.start.assign("day", day);
42
+
43
+ if (match[YEAR_GROUP]) {
44
+ const yearNumber = parseYear(match[YEAR_GROUP]);
45
+ result.start.assign("year", yearNumber);
46
+ } else {
47
+ const year = findYearClosestToRef(context.refDate, day, month);
48
+ result.start.imply("year", year);
49
+ }
50
+
51
+ if (match[DATE_TO_GROUP]) {
52
+ const endDate = parseInt(match[DATE_TO_GROUP]);
53
+
54
+ result.end = result.start.clone();
55
+ result.end.assign("day", endDate);
56
+ }
57
+
58
+ return result;
59
+ }
60
+ }
@@ -0,0 +1,20 @@
1
+ import { AbstractTimeExpressionParser } from "../../../common/parsers/AbstractTimeExpressionParser";
2
+
3
+ export default class ESTimeExpressionParser extends AbstractTimeExpressionParser {
4
+ primaryPrefix(): string {
5
+ return "(?:(?:aslas|deslas|las?|al?|de|del)\\s*)?";
6
+ }
7
+
8
+ followingPhase(): string {
9
+ return "\\s*(?:\\-|\\–|\\~|\\〜|a(?:l)?|\\?)\\s*";
10
+ }
11
+
12
+ // extractPrimaryTimeComponents(context: ParsingContext, match: RegExpMatchArray): ParsingComponents | null {
13
+ // // This looks more like a year e.g. 2020
14
+ // // if (match[0].match(/^\s*\d{4}\s*$/)) {
15
+ // // return null;
16
+ // // }
17
+ //
18
+ // return super.extractPrimaryTimeComponents(context, match);
19
+ // }
20
+ }
@@ -0,0 +1,50 @@
1
+ import { ParsingContext } from "../../../chrono";
2
+ import { ParsingComponents } from "../../../results";
3
+ import { WEEKDAY_DICTIONARY } from "../constants";
4
+ import { matchAnyPattern } from "../../../utils/pattern";
5
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
6
+ import { createParsingComponentsAtWeekday } from "../../../common/calculation/weekdays";
7
+
8
+ const PATTERN = new RegExp(
9
+ "(?:(?:\\,|\\(|\\()\\s*)?" +
10
+ "(?:(este|esta|pasado|pr[oó]ximo)\\s*)?" +
11
+ `(${matchAnyPattern(WEEKDAY_DICTIONARY)})` +
12
+ "(?:\\s*(?:\\,|\\)|\\)))?" +
13
+ "(?:\\s*(este|esta|pasado|pr[óo]ximo)\\s*semana)?" +
14
+ "(?=\\W|\\d|$)",
15
+ "i"
16
+ );
17
+
18
+ const PREFIX_GROUP = 1;
19
+ const WEEKDAY_GROUP = 2;
20
+ const POSTFIX_GROUP = 3;
21
+
22
+ export default class ESWeekdayParser extends AbstractParserWithWordBoundaryChecking {
23
+ innerPattern(): RegExp {
24
+ return PATTERN;
25
+ }
26
+
27
+ innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
28
+ const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
29
+ const weekday = WEEKDAY_DICTIONARY[dayOfWeek];
30
+ if (weekday === undefined) {
31
+ return null;
32
+ }
33
+
34
+ const prefix = match[PREFIX_GROUP];
35
+ const postfix = match[POSTFIX_GROUP];
36
+ let norm = prefix || postfix || "";
37
+ norm = norm.toLowerCase();
38
+
39
+ let modifier = null;
40
+ if (norm == "pasado") {
41
+ modifier = "this";
42
+ } else if (norm == "próximo" || norm == "proximo") {
43
+ modifier = "next";
44
+ } else if (norm == "este") {
45
+ modifier = "this";
46
+ }
47
+
48
+ return createParsingComponentsAtWeekday(context.reference, weekday, modifier);
49
+ }
50
+ }
@@ -0,0 +1,15 @@
1
+ /*
2
+
3
+ */
4
+
5
+ import AbstractMergeDateRangeRefiner from "../../../common/refiners/AbstractMergeDateRangeRefiner";
6
+
7
+ /**
8
+ * Merging before and after results (see. AbstractMergeDateRangeRefiner)
9
+ *
10
+ */
11
+ export default class ESMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner {
12
+ patternBetween(): RegExp {
13
+ return /^\s*(?:-)\s*$/i;
14
+ }
15
+ }
@@ -0,0 +1,10 @@
1
+ import AbstractMergeDateTimeRefiner from "../../../common/refiners/AbstractMergeDateTimeRefiner";
2
+
3
+ /**
4
+ * Merging date-only result and time-only result (see. AbstractMergeDateTimeRefiner).
5
+ */
6
+ export default class ESMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner {
7
+ patternBetween(): RegExp {
8
+ return new RegExp("^\\s*(?:,|de|aslas|a)?\\s*$");
9
+ }
10
+ }
@@ -5,7 +5,7 @@ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/
5
5
  import { reverseTimeUnits } from "../../../utils/timeunits";
6
6
 
7
7
  const PATTERN = new RegExp(
8
- `(эти|последние|прошлые|следующие|после|через|\\+|-)\\s*(${TIME_UNITS_PATTERN})${REGEX_PARTS.rightBoundary}`,
8
+ `(эти|последние|прошлые|следующие|после|спустя|через|\\+|-)\\s*(${TIME_UNITS_PATTERN})${REGEX_PARTS.rightBoundary}`,
9
9
  REGEX_PARTS.flags
10
10
  );
11
11
 
@@ -2,7 +2,7 @@ import AbstractMergeDateTimeRefiner from "../../../common/refiners/AbstractMerge
2
2
 
3
3
  /**
4
4
  * Merging date-only result and time-only result (see. AbstractMergeDateTimeRefiner).
5
- * This implementation should provide English connecting phases
5
+ * This implementation should provide Russian connecting phases
6
6
  * - 2020-02-13 [в] 6:00
7
7
  * - Завтра [,] 7:00
8
8
  */
@@ -76,7 +76,7 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
76
76
 
77
77
  const refMoment = dayjs(context.refDate);
78
78
  const result = context.createParsingResult(match.index, match[0]);
79
- const startMoment = refMoment.clone();
79
+ let startMoment = refMoment.clone();
80
80
 
81
81
  // ----- Day
82
82
  if (match[DAY_GROUP_1]) {
@@ -84,18 +84,18 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
84
84
  if (day1 == "明") {
85
85
  // Check not "Tomorrow" on late night
86
86
  if (refMoment.hour() > 1) {
87
- startMoment.add(1, "day");
87
+ startMoment = startMoment.add(1, "day");
88
88
  }
89
89
  } else if (day1 == "昨") {
90
- startMoment.add(-1, "day");
90
+ startMoment = startMoment.add(-1, "day");
91
91
  } else if (day1 == "前") {
92
- startMoment.add(-2, "day");
92
+ startMoment = startMoment.add(-2, "day");
93
93
  } else if (day1 == "大前") {
94
- startMoment.add(-3, "day");
94
+ startMoment = startMoment.add(-3, "day");
95
95
  } else if (day1 == "后") {
96
- startMoment.add(2, "day");
96
+ startMoment = startMoment.add(2, "day");
97
97
  } else if (day1 == "大后") {
98
- startMoment.add(3, "day");
98
+ startMoment = startMoment.add(3, "day");
99
99
  }
100
100
  result.start.assign("day", startMoment.date());
101
101
  result.start.assign("month", startMoment.month() + 1);
@@ -103,17 +103,17 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
103
103
  } else if (match[DAY_GROUP_3]) {
104
104
  const day3 = match[DAY_GROUP_3];
105
105
  if (day3 == "明") {
106
- startMoment.add(1, "day");
106
+ startMoment = startMoment.add(1, "day");
107
107
  } else if (day3 == "昨") {
108
- startMoment.add(-1, "day");
108
+ startMoment = startMoment.add(-1, "day");
109
109
  } else if (day3 == "前") {
110
- startMoment.add(-2, "day");
110
+ startMoment = startMoment.add(-2, "day");
111
111
  } else if (day3 == "大前") {
112
- startMoment.add(-3, "day");
112
+ startMoment = startMoment.add(-3, "day");
113
113
  } else if (day3 == "后") {
114
- startMoment.add(2, "day");
114
+ startMoment = startMoment.add(2, "day");
115
115
  } else if (day3 == "大后") {
116
- startMoment.add(3, "day");
116
+ startMoment = startMoment.add(3, "day");
117
117
  }
118
118
  result.start.assign("day", startMoment.date());
119
119
  result.start.assign("month", startMoment.month() + 1);
@@ -242,7 +242,7 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
242
242
  return result;
243
243
  }
244
244
 
245
- const endMoment = startMoment.clone();
245
+ let endMoment = startMoment.clone();
246
246
  result.end = context.createParsingComponents();
247
247
 
248
248
  // ----- Day
@@ -251,18 +251,18 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
251
251
  if (day1 == "明") {
252
252
  // Check not "Tomorrow" on late night
253
253
  if (refMoment.hour() > 1) {
254
- endMoment.add(1, "day");
254
+ endMoment = endMoment.add(1, "day");
255
255
  }
256
256
  } else if (day1 == "昨") {
257
- endMoment.add(-1, "day");
257
+ endMoment = endMoment.add(-1, "day");
258
258
  } else if (day1 == "前") {
259
- endMoment.add(-2, "day");
259
+ endMoment = endMoment.add(-2, "day");
260
260
  } else if (day1 == "大前") {
261
- endMoment.add(-3, "day");
261
+ endMoment = endMoment.add(-3, "day");
262
262
  } else if (day1 == "后") {
263
- endMoment.add(2, "day");
263
+ endMoment = endMoment.add(2, "day");
264
264
  } else if (day1 == "大后") {
265
- endMoment.add(3, "day");
265
+ endMoment = endMoment.add(3, "day");
266
266
  }
267
267
  result.end.assign("day", endMoment.date());
268
268
  result.end.assign("month", endMoment.month() + 1);
@@ -270,17 +270,17 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
270
270
  } else if (match[DAY_GROUP_3]) {
271
271
  const day3 = match[DAY_GROUP_3];
272
272
  if (day3 == "明") {
273
- endMoment.add(1, "day");
273
+ endMoment = endMoment.add(1, "day");
274
274
  } else if (day3 == "昨") {
275
- endMoment.add(-1, "day");
275
+ endMoment = endMoment.add(-1, "day");
276
276
  } else if (day3 == "前") {
277
- endMoment.add(-2, "day");
277
+ endMoment = endMoment.add(-2, "day");
278
278
  } else if (day3 == "大前") {
279
- endMoment.add(-3, "day");
279
+ endMoment = endMoment.add(-3, "day");
280
280
  } else if (day3 == "后") {
281
- endMoment.add(2, "day");
281
+ endMoment = endMoment.add(2, "day");
282
282
  } else if (day3 == "大后") {
283
- endMoment.add(3, "day");
283
+ endMoment = endMoment.add(3, "day");
284
284
  }
285
285
  result.end.assign("day", endMoment.date());
286
286
  result.end.assign("month", endMoment.month() + 1);
@@ -76,7 +76,7 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
76
76
 
77
77
  const refMoment = dayjs(context.refDate);
78
78
  const result = context.createParsingResult(match.index, match[0]);
79
- const startMoment = refMoment.clone();
79
+ let startMoment = refMoment.clone();
80
80
 
81
81
  // ----- Day
82
82
  if (match[DAY_GROUP_1]) {
@@ -84,18 +84,18 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
84
84
  if (day1 == "明" || day1 == "聽") {
85
85
  // Check not "Tomorrow" on late night
86
86
  if (refMoment.hour() > 1) {
87
- startMoment.add(1, "day");
87
+ startMoment = startMoment.add(1, "day");
88
88
  }
89
89
  } else if (day1 == "昨" || day1 == "尋" || day1 == "琴") {
90
- startMoment.add(-1, "day");
90
+ startMoment = startMoment.add(-1, "day");
91
91
  } else if (day1 == "前") {
92
- startMoment.add(-2, "day");
92
+ startMoment = startMoment.add(-2, "day");
93
93
  } else if (day1 == "大前") {
94
- startMoment.add(-3, "day");
94
+ startMoment = startMoment.add(-3, "day");
95
95
  } else if (day1 == "後") {
96
- startMoment.add(2, "day");
96
+ startMoment = startMoment.add(2, "day");
97
97
  } else if (day1 == "大後") {
98
- startMoment.add(3, "day");
98
+ startMoment = startMoment.add(3, "day");
99
99
  }
100
100
  result.start.assign("day", startMoment.date());
101
101
  result.start.assign("month", startMoment.month() + 1);
@@ -103,17 +103,17 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
103
103
  } else if (match[DAY_GROUP_3]) {
104
104
  var day3 = match[DAY_GROUP_3];
105
105
  if (day3 == "明" || day3 == "聽") {
106
- startMoment.add(1, "day");
106
+ startMoment = startMoment.add(1, "day");
107
107
  } else if (day3 == "昨" || day3 == "尋" || day3 == "琴") {
108
- startMoment.add(-1, "day");
108
+ startMoment = startMoment.add(-1, "day");
109
109
  } else if (day3 == "前") {
110
- startMoment.add(-2, "day");
110
+ startMoment = startMoment.add(-2, "day");
111
111
  } else if (day3 == "大前") {
112
- startMoment.add(-3, "day");
112
+ startMoment = startMoment.add(-3, "day");
113
113
  } else if (day3 == "後") {
114
- startMoment.add(2, "day");
114
+ startMoment = startMoment.add(2, "day");
115
115
  } else if (day3 == "大後") {
116
- startMoment.add(3, "day");
116
+ startMoment = startMoment.add(3, "day");
117
117
  }
118
118
  result.start.assign("day", startMoment.date());
119
119
  result.start.assign("month", startMoment.month() + 1);
@@ -242,7 +242,7 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
242
242
  return result;
243
243
  }
244
244
 
245
- const endMoment = startMoment.clone();
245
+ let endMoment = startMoment.clone();
246
246
  result.end = context.createParsingComponents();
247
247
 
248
248
  // ----- Day
@@ -251,18 +251,18 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
251
251
  if (day1 == "明" || day1 == "聽") {
252
252
  // Check not "Tomorrow" on late night
253
253
  if (refMoment.hour() > 1) {
254
- endMoment.add(1, "day");
254
+ endMoment = endMoment.add(1, "day");
255
255
  }
256
256
  } else if (day1 == "昨" || day1 == "尋" || day1 == "琴") {
257
- endMoment.add(-1, "day");
257
+ endMoment = endMoment.add(-1, "day");
258
258
  } else if (day1 == "前") {
259
- endMoment.add(-2, "day");
259
+ endMoment = endMoment.add(-2, "day");
260
260
  } else if (day1 == "大前") {
261
- endMoment.add(-3, "day");
261
+ endMoment = endMoment.add(-3, "day");
262
262
  } else if (day1 == "後") {
263
- endMoment.add(2, "day");
263
+ endMoment = endMoment.add(2, "day");
264
264
  } else if (day1 == "大後") {
265
- endMoment.add(3, "day");
265
+ endMoment = endMoment.add(3, "day");
266
266
  }
267
267
  result.end.assign("day", endMoment.date());
268
268
  result.end.assign("month", endMoment.month() + 1);
@@ -270,17 +270,17 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
270
270
  } else if (match[DAY_GROUP_3]) {
271
271
  var day3 = match[DAY_GROUP_3];
272
272
  if (day3 == "明" || day3 == "聽") {
273
- endMoment.add(1, "day");
273
+ endMoment = endMoment.add(1, "day");
274
274
  } else if (day3 == "昨" || day3 == "尋" || day3 == "琴") {
275
- endMoment.add(-1, "day");
275
+ endMoment = endMoment.add(-1, "day");
276
276
  } else if (day3 == "前") {
277
- endMoment.add(-2, "day");
277
+ endMoment = endMoment.add(-2, "day");
278
278
  } else if (day3 == "大前") {
279
- endMoment.add(-3, "day");
279
+ endMoment = endMoment.add(-3, "day");
280
280
  } else if (day3 == "後") {
281
- endMoment.add(2, "day");
281
+ endMoment = endMoment.add(2, "day");
282
282
  } else if (day3 == "大後") {
283
- endMoment.add(3, "day");
283
+ endMoment = endMoment.add(3, "day");
284
284
  }
285
285
  result.end.assign("day", endMoment.date());
286
286
  result.end.assign("month", endMoment.month() + 1);
@@ -8,6 +8,12 @@ export function assignTheNextDay(component: ParsingComponents, targetDayJs: dayj
8
8
  implySimilarTime(component, targetDayJs);
9
9
  }
10
10
 
11
+ export function implyTheNextDay(component: ParsingComponents, targetDayJs: dayjs.Dayjs) {
12
+ targetDayJs = targetDayJs.add(1, "day");
13
+ implySimilarDate(component, targetDayJs);
14
+ implySimilarTime(component, targetDayJs);
15
+ }
16
+
11
17
  export function assignSimilarDate(component: ParsingComponents, targetDayJs: dayjs.Dayjs) {
12
18
  component.assign("day", targetDayJs.date());
13
19
  component.assign("month", targetDayJs.month() + 1);
@@ -26,6 +32,12 @@ export function assignSimilarTime(component: ParsingComponents, targetDayJs: day
26
32
  }
27
33
  }
28
34
 
35
+ export function implySimilarDate(component: ParsingComponents, targetDayJs: dayjs.Dayjs) {
36
+ component.imply("day", targetDayJs.date());
37
+ component.imply("month", targetDayJs.month() + 1);
38
+ component.imply("year", targetDayJs.year());
39
+ }
40
+
29
41
  export function implySimilarTime(component: ParsingComponents, targetDayJs: dayjs.Dayjs) {
30
42
  component.imply("hour", targetDayJs.hour());
31
43
  component.imply("minute", targetDayJs.minute());
@@ -132,15 +132,35 @@ test("Test - Single Expression", () => {
132
132
  expect(result.start.get("hour")).toBe(0);
133
133
  });
134
134
 
135
- // "Midnight" at 0~1AM, assume it's the coming midnight of following day
136
- // This is similar to "Tomorrow" at 0~1AM
137
- testSingleCase(chrono.casual, "The Deadline was midnight ", new Date(2012, 7, 10, 1), (result) => {
135
+ // "Midnight" at 0~2AM, assume it's the passed midnight
136
+ testSingleCase(chrono.casual, "The Deadline was midnight ", new Date(2012, 8 - 1, 10, 1), (result) => {
138
137
  expect(result.text).toBe("midnight");
139
138
  expect(result.start.get("year")).toBe(2012);
140
139
  expect(result.start.get("month")).toBe(8);
141
- expect(result.start.get("day")).toBe(11);
140
+ expect(result.start.get("day")).toBe(10);
142
141
  expect(result.start.get("hour")).toBe(0);
142
+ expect(result.start.get("minute")).toBe(0);
143
+ expect(result.start.get("second")).toBe(0);
144
+ expect(result.start.get("millisecond")).toBe(0);
143
145
  });
146
+
147
+ // "Midnight" at 0~2AM with forwardDate option, should be the next night
148
+ testSingleCase(
149
+ chrono.casual,
150
+ "The Deadline was midnight ",
151
+ new Date(2012, 8 - 1, 10, 1),
152
+ { forwardDate: true },
153
+ (result) => {
154
+ expect(result.text).toBe("midnight");
155
+ expect(result.start.get("year")).toBe(2012);
156
+ expect(result.start.get("month")).toBe(8);
157
+ expect(result.start.get("day")).toBe(11);
158
+ expect(result.start.get("hour")).toBe(0);
159
+ expect(result.start.get("minute")).toBe(0);
160
+ expect(result.start.get("second")).toBe(0);
161
+ expect(result.start.get("millisecond")).toBe(0);
162
+ }
163
+ );
144
164
  });
145
165
 
146
166
  test("Test - Combined Expression", () => {
@@ -337,6 +357,16 @@ test("Test - Random text", () => {
337
357
  expect(result.start.get("day")).toBe(1);
338
358
  expect(result.start.get("hour")).toBe(15);
339
359
  });
360
+
361
+ testSingleCase(chrono.casual, "at midnight on 12th August", new Date(2012, 8 - 1, 10, 15), (result) => {
362
+ expect(result.start.get("year")).toBe(2012);
363
+ expect(result.start.get("month")).toBe(8);
364
+ expect(result.start.get("day")).toBe(12);
365
+ expect(result.start.get("hour")).toBe(0);
366
+ expect(result.start.get("minute")).toBe(0);
367
+ expect(result.start.get("second")).toBe(0);
368
+ expect(result.start.get("millisecond")).toBe(0);
369
+ });
340
370
  });
341
371
 
342
372
  test("Test - Casual time with timezone", () => {
@@ -168,23 +168,24 @@ test("Test - Splitter variances patterns", function () {
168
168
  testWithExpectedDate(chrono, "05-25-2015", expectDate);
169
169
  testWithExpectedDate(chrono, "05/25/2015", expectDate);
170
170
  testWithExpectedDate(chrono, "05.25.2015", expectDate);
171
+ testWithExpectedDate(chrono, "/05/25/2015", expectDate);
171
172
 
172
173
  // Also, guessing ambiguous date
173
174
  testWithExpectedDate(chrono, "25/05/2015", expectDate);
174
175
  });
175
176
 
176
177
  test("Test - Impossible Dates and Unexpected Results", function () {
177
- testUnexpectedResult(chrono, "8/32/2014", new Date(2012, 7, 10));
178
-
179
- testUnexpectedResult(chrono, "8/32", new Date(2012, 7, 10));
180
-
181
- testUnexpectedResult(chrono, "2/29/2014", new Date(2012, 7, 10));
182
-
183
- testUnexpectedResult(chrono, "2014/22/29", new Date(2012, 7, 10));
184
-
185
- testUnexpectedResult(chrono, "2014/13/22", new Date(2012, 7, 10));
186
-
187
- testUnexpectedResult(chrono, "80-32-89-89", new Date(2012, 7, 10));
178
+ testUnexpectedResult(chrono, "8/32/2014");
179
+ testUnexpectedResult(chrono, "8/32");
180
+ testUnexpectedResult(chrono, "2/29/2014");
181
+ testUnexpectedResult(chrono, "2014/22/29");
182
+ testUnexpectedResult(chrono, "2014/13/22");
183
+ testUnexpectedResult(chrono, "80-32-89-89");
184
+ testUnexpectedResult(chrono, "02/29/2022");
185
+ testUnexpectedResult(chrono, "06/31/2022");
186
+ testUnexpectedResult(chrono, "06/-31/2022");
187
+ testUnexpectedResult(chrono, "18/13/2022");
188
+ testUnexpectedResult(chrono, "15/28/2022");
188
189
  });
189
190
 
190
191
  test("Test - forward dates only option", function () {
@@ -287,3 +287,56 @@ test("Test - Parsing negative cases : 'at [some numbers] - [some numbers]' (Stri
287
287
 
288
288
  testUnexpectedResult(chrono.strict, "7-730");
289
289
  });
290
+
291
+ test("Test - forward dates only option", function () {
292
+ testSingleCase(
293
+ chrono,
294
+ "1am",
295
+ {
296
+ instant: new Date("Wed May 26 2022 01:57:00 GMT-0500 (CDT)"),
297
+ timezone: "CDT",
298
+ },
299
+ {
300
+ forwardDate: true,
301
+ },
302
+ (result) => {
303
+ expect(result.start.get("year")).toBe(2022);
304
+ expect(result.start.get("month")).toBe(5);
305
+ expect(result.start.get("day")).toBe(27);
306
+ expect(result.start.get("hour")).toBe(1);
307
+ }
308
+ );
309
+
310
+ testSingleCase(chrono, "11am", new Date(2016, 10 - 1, 1, 12), { forwardDate: true }, (result) => {
311
+ expect(result.start.get("year")).toBe(2016);
312
+ expect(result.start.get("month")).toBe(10);
313
+ expect(result.start.get("day")).toBe(2);
314
+ expect(result.start.get("hour")).toBe(11);
315
+ });
316
+
317
+ testSingleCase(chrono, " 11am to 1am ", new Date(2016, 10 - 1, 1, 12), { forwardDate: true }, (result) => {
318
+ expect(result.start.get("year")).toBe(2016);
319
+ expect(result.start.get("month")).toBe(10);
320
+ expect(result.start.get("day")).toBe(2);
321
+ expect(result.start.get("hour")).toBe(11);
322
+
323
+ expect(result.end).not.toBeNull();
324
+ expect(result.end.get("year")).toBe(2016);
325
+ expect(result.end.get("month")).toBe(10);
326
+ expect(result.end.get("day")).toBe(3);
327
+ expect(result.end.get("hour")).toBe(1);
328
+ });
329
+
330
+ testSingleCase(chrono, " 10am to 12pm ", new Date(2016, 10 - 1, 1, 11), { forwardDate: true }, (result) => {
331
+ expect(result.start.get("year")).toBe(2016);
332
+ expect(result.start.get("month")).toBe(10);
333
+ expect(result.start.get("day")).toBe(2);
334
+ expect(result.start.get("hour")).toBe(10);
335
+
336
+ expect(result.end).not.toBeNull();
337
+ expect(result.end.get("year")).toBe(2016);
338
+ expect(result.end.get("month")).toBe(10);
339
+ expect(result.end.get("day")).toBe(2);
340
+ expect(result.end.get("hour")).toBe(12);
341
+ });
342
+ });