chrono-node 2.3.8 → 2.3.9

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 (331) hide show
  1. package/README.md +2 -2
  2. package/dist/calculation/mergingCalculation.js +1 -0
  3. package/dist/calculation/mergingCalculation.js.map +1 -0
  4. package/dist/calculation/weeks.js +1 -0
  5. package/dist/calculation/weeks.js.map +1 -0
  6. package/dist/calculation/years.js +1 -0
  7. package/dist/calculation/years.js.map +1 -0
  8. package/dist/chrono.js +1 -0
  9. package/dist/chrono.js.map +1 -0
  10. package/dist/common/abstractRefiners.js +1 -0
  11. package/dist/common/abstractRefiners.js.map +1 -0
  12. package/dist/common/casualReferences.d.ts +8 -0
  13. package/dist/common/casualReferences.js +65 -9
  14. package/dist/common/casualReferences.js.map +1 -0
  15. package/dist/common/parsers/AbstractParserWithWordBoundary.d.ts +1 -0
  16. package/dist/common/parsers/AbstractParserWithWordBoundary.js +5 -1
  17. package/dist/common/parsers/AbstractParserWithWordBoundary.js.map +1 -0
  18. package/dist/common/parsers/AbstractTimeExpressionParser.d.ts +2 -0
  19. package/dist/common/parsers/AbstractTimeExpressionParser.js +40 -27
  20. package/dist/common/parsers/AbstractTimeExpressionParser.js.map +1 -0
  21. package/dist/common/parsers/ISOFormatParser.js +1 -0
  22. package/dist/common/parsers/ISOFormatParser.js.map +1 -0
  23. package/dist/common/parsers/SlashDateFormatParser.js +1 -0
  24. package/dist/common/parsers/SlashDateFormatParser.js.map +1 -0
  25. package/dist/common/refiners/AbstractMergeDateRangeRefiner.js +1 -0
  26. package/dist/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -0
  27. package/dist/common/refiners/AbstractMergeDateTimeRefiner.js +1 -0
  28. package/dist/common/refiners/AbstractMergeDateTimeRefiner.js.map +1 -0
  29. package/dist/common/refiners/ExtractTimezoneAbbrRefiner.js +1 -0
  30. package/dist/common/refiners/ExtractTimezoneAbbrRefiner.js.map +1 -0
  31. package/dist/common/refiners/ExtractTimezoneOffsetRefiner.js +5 -1
  32. package/dist/common/refiners/ExtractTimezoneOffsetRefiner.js.map +1 -0
  33. package/dist/common/refiners/ForwardDateRefiner.js +1 -0
  34. package/dist/common/refiners/ForwardDateRefiner.js.map +1 -0
  35. package/dist/common/refiners/MergeWeekdayComponentRefiner.js +1 -0
  36. package/dist/common/refiners/MergeWeekdayComponentRefiner.js.map +1 -0
  37. package/dist/common/refiners/OverlapRemovalRefiner.js +1 -0
  38. package/dist/common/refiners/OverlapRemovalRefiner.js.map +1 -0
  39. package/dist/common/refiners/UnlikelyFormatFilter.js +1 -0
  40. package/dist/common/refiners/UnlikelyFormatFilter.js.map +1 -0
  41. package/dist/configurations.js +1 -0
  42. package/dist/configurations.js.map +1 -0
  43. package/dist/debugging.js +1 -0
  44. package/dist/debugging.js.map +1 -0
  45. package/dist/index.d.ts +2 -1
  46. package/dist/index.js +4 -1
  47. package/dist/index.js.map +1 -0
  48. package/dist/locales/de/constants.js +1 -0
  49. package/dist/locales/de/constants.js.map +1 -0
  50. package/dist/locales/de/index.js +1 -0
  51. package/dist/locales/de/index.js.map +1 -0
  52. package/dist/locales/de/parsers/DECasualDateParser.js +1 -0
  53. package/dist/locales/de/parsers/DECasualDateParser.js.map +1 -0
  54. package/dist/locales/de/parsers/DECasualTimeParser.js +1 -0
  55. package/dist/locales/de/parsers/DECasualTimeParser.js.map +1 -0
  56. package/dist/locales/de/parsers/DEMonthNameLittleEndianParser.js +1 -0
  57. package/dist/locales/de/parsers/DEMonthNameLittleEndianParser.js.map +1 -0
  58. package/dist/locales/de/parsers/DESpecificTimeExpressionParser.js +1 -0
  59. package/dist/locales/de/parsers/DESpecificTimeExpressionParser.js.map +1 -0
  60. package/dist/locales/de/parsers/DETimeExpressionParser.js +1 -0
  61. package/dist/locales/de/parsers/DETimeExpressionParser.js.map +1 -0
  62. package/dist/locales/de/parsers/DETimeUnitRelativeFormatParser.js +1 -0
  63. package/dist/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -0
  64. package/dist/locales/de/parsers/DEWeekdayParser.js +1 -0
  65. package/dist/locales/de/parsers/DEWeekdayParser.js.map +1 -0
  66. package/dist/locales/de/refiners/DEMergeDateRangeRefiner.js +1 -0
  67. package/dist/locales/de/refiners/DEMergeDateRangeRefiner.js.map +1 -0
  68. package/dist/locales/de/refiners/DEMergeDateTimeRefiner.js +1 -0
  69. package/dist/locales/de/refiners/DEMergeDateTimeRefiner.js.map +1 -0
  70. package/dist/locales/en/constants.js +1 -0
  71. package/dist/locales/en/constants.js.map +1 -0
  72. package/dist/locales/en/index.js +1 -0
  73. package/dist/locales/en/index.js.map +1 -0
  74. package/dist/locales/en/parsers/ENCasualDateParser.js +1 -0
  75. package/dist/locales/en/parsers/ENCasualDateParser.js.map +1 -0
  76. package/dist/locales/en/parsers/ENCasualTimeParser.js +1 -0
  77. package/dist/locales/en/parsers/ENCasualTimeParser.js.map +1 -0
  78. package/dist/locales/en/parsers/ENCasualYearMonthDayParser.js +1 -0
  79. package/dist/locales/en/parsers/ENCasualYearMonthDayParser.js.map +1 -0
  80. package/dist/locales/en/parsers/ENMonthNameLittleEndianParser.js +1 -0
  81. package/dist/locales/en/parsers/ENMonthNameLittleEndianParser.js.map +1 -0
  82. package/dist/locales/en/parsers/ENMonthNameMiddleEndianParser.js +1 -0
  83. package/dist/locales/en/parsers/ENMonthNameMiddleEndianParser.js.map +1 -0
  84. package/dist/locales/en/parsers/ENMonthNameParser.js +1 -0
  85. package/dist/locales/en/parsers/ENMonthNameParser.js.map +1 -0
  86. package/dist/locales/en/parsers/ENRelativeDateFormatParser.js +1 -0
  87. package/dist/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -0
  88. package/dist/locales/en/parsers/ENSlashMonthFormatParser.js +1 -0
  89. package/dist/locales/en/parsers/ENSlashMonthFormatParser.js.map +1 -0
  90. package/dist/locales/en/parsers/ENTimeExpressionParser.js +1 -0
  91. package/dist/locales/en/parsers/ENTimeExpressionParser.js.map +1 -0
  92. package/dist/locales/en/parsers/ENTimeUnitAgoFormatParser.js +1 -0
  93. package/dist/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -0
  94. package/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -0
  95. package/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -0
  96. package/dist/locales/en/parsers/ENTimeUnitLaterFormatParser.js +1 -0
  97. package/dist/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -0
  98. package/dist/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -0
  99. package/dist/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -0
  100. package/dist/locales/en/parsers/ENWeekdayParser.js +1 -0
  101. package/dist/locales/en/parsers/ENWeekdayParser.js.map +1 -0
  102. package/dist/locales/en/refiners/ENMergeDateRangeRefiner.js +1 -0
  103. package/dist/locales/en/refiners/ENMergeDateRangeRefiner.js.map +1 -0
  104. package/dist/locales/en/refiners/ENMergeDateTimeRefiner.js +1 -0
  105. package/dist/locales/en/refiners/ENMergeDateTimeRefiner.js.map +1 -0
  106. package/dist/locales/en/refiners/ENMergeRelativeDateRefiner.js +1 -0
  107. package/dist/locales/en/refiners/ENMergeRelativeDateRefiner.js.map +1 -0
  108. package/dist/locales/fr/constants.js +1 -0
  109. package/dist/locales/fr/constants.js.map +1 -0
  110. package/dist/locales/fr/index.js +1 -0
  111. package/dist/locales/fr/index.js.map +1 -0
  112. package/dist/locales/fr/parsers/FRCasualDateParser.js +1 -0
  113. package/dist/locales/fr/parsers/FRCasualDateParser.js.map +1 -0
  114. package/dist/locales/fr/parsers/FRCasualTimeParser.js +1 -0
  115. package/dist/locales/fr/parsers/FRCasualTimeParser.js.map +1 -0
  116. package/dist/locales/fr/parsers/FRMonthNameLittleEndianParser.js +1 -0
  117. package/dist/locales/fr/parsers/FRMonthNameLittleEndianParser.js.map +1 -0
  118. package/dist/locales/fr/parsers/FRSpecificTimeExpressionParser.js +1 -0
  119. package/dist/locales/fr/parsers/FRSpecificTimeExpressionParser.js.map +1 -0
  120. package/dist/locales/fr/parsers/FRTimeExpressionParser.js +1 -0
  121. package/dist/locales/fr/parsers/FRTimeExpressionParser.js.map +1 -0
  122. package/dist/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +1 -0
  123. package/dist/locales/fr/parsers/FRTimeUnitAgoFormatParser.js.map +1 -0
  124. package/dist/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +1 -0
  125. package/dist/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -0
  126. package/dist/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +2 -1
  127. package/dist/locales/fr/parsers/FRTimeUnitWithinFormatParser.js.map +1 -0
  128. package/dist/locales/fr/parsers/FRWeekdayParser.js +1 -0
  129. package/dist/locales/fr/parsers/FRWeekdayParser.js.map +1 -0
  130. package/dist/locales/fr/refiners/FRMergeDateRangeRefiner.js +1 -0
  131. package/dist/locales/fr/refiners/FRMergeDateRangeRefiner.js.map +1 -0
  132. package/dist/locales/fr/refiners/FRMergeDateTimeRefiner.js +1 -0
  133. package/dist/locales/fr/refiners/FRMergeDateTimeRefiner.js.map +1 -0
  134. package/dist/locales/ja/constants.js +1 -0
  135. package/dist/locales/ja/constants.js.map +1 -0
  136. package/dist/locales/ja/index.js +1 -0
  137. package/dist/locales/ja/index.js.map +1 -0
  138. package/dist/locales/ja/parsers/JPCasualDateParser.js +1 -0
  139. package/dist/locales/ja/parsers/JPCasualDateParser.js.map +1 -0
  140. package/dist/locales/ja/parsers/JPStandardParser.js +1 -0
  141. package/dist/locales/ja/parsers/JPStandardParser.js.map +1 -0
  142. package/dist/locales/ja/refiners/JPMergeDateRangeRefiner.js +1 -0
  143. package/dist/locales/ja/refiners/JPMergeDateRangeRefiner.js.map +1 -0
  144. package/dist/locales/nl/constants.js +1 -0
  145. package/dist/locales/nl/constants.js.map +1 -0
  146. package/dist/locales/nl/index.js +1 -0
  147. package/dist/locales/nl/index.js.map +1 -0
  148. package/dist/locales/nl/parsers/NLCasualDateParser.js +1 -0
  149. package/dist/locales/nl/parsers/NLCasualDateParser.js.map +1 -0
  150. package/dist/locales/nl/parsers/NLCasualDateTimeParser.js +1 -0
  151. package/dist/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -0
  152. package/dist/locales/nl/parsers/NLCasualTimeParser.js +1 -0
  153. package/dist/locales/nl/parsers/NLCasualTimeParser.js.map +1 -0
  154. package/dist/locales/nl/parsers/NLCasualYearMonthDayParser.js +1 -0
  155. package/dist/locales/nl/parsers/NLCasualYearMonthDayParser.js.map +1 -0
  156. package/dist/locales/nl/parsers/NLMonthNameMiddleEndianParser.js +1 -0
  157. package/dist/locales/nl/parsers/NLMonthNameMiddleEndianParser.js.map +1 -0
  158. package/dist/locales/nl/parsers/NLMonthNameParser.js +1 -0
  159. package/dist/locales/nl/parsers/NLMonthNameParser.js.map +1 -0
  160. package/dist/locales/nl/parsers/NLRelativeDateFormatParser.js +1 -0
  161. package/dist/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -0
  162. package/dist/locales/nl/parsers/NLSlashMonthFormatParser.js +1 -0
  163. package/dist/locales/nl/parsers/NLSlashMonthFormatParser.js.map +1 -0
  164. package/dist/locales/nl/parsers/NLTimeExpressionParser.js +1 -0
  165. package/dist/locales/nl/parsers/NLTimeExpressionParser.js.map +1 -0
  166. package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +1 -0
  167. package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -0
  168. package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +1 -0
  169. package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -0
  170. package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +1 -0
  171. package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -0
  172. package/dist/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -0
  173. package/dist/locales/nl/parsers/NLTimeUnitWithinFormatParser.js.map +1 -0
  174. package/dist/locales/nl/parsers/NLWeekdayParser.js +1 -0
  175. package/dist/locales/nl/parsers/NLWeekdayParser.js.map +1 -0
  176. package/dist/locales/nl/refiners/NLMergeDateRangeRefiner.js +1 -0
  177. package/dist/locales/nl/refiners/NLMergeDateRangeRefiner.js.map +1 -0
  178. package/dist/locales/nl/refiners/NLMergeDateTimeRefiner.js +1 -0
  179. package/dist/locales/nl/refiners/NLMergeDateTimeRefiner.js.map +1 -0
  180. package/dist/locales/pt/constants.js +1 -0
  181. package/dist/locales/pt/constants.js.map +1 -0
  182. package/dist/locales/pt/index.js +1 -0
  183. package/dist/locales/pt/index.js.map +1 -0
  184. package/dist/locales/pt/parsers/PTCasualDateParser.js +1 -0
  185. package/dist/locales/pt/parsers/PTCasualDateParser.js.map +1 -0
  186. package/dist/locales/pt/parsers/PTCasualTimeParser.js +1 -0
  187. package/dist/locales/pt/parsers/PTCasualTimeParser.js.map +1 -0
  188. package/dist/locales/pt/parsers/PTMonthNameLittleEndianParser.js +1 -0
  189. package/dist/locales/pt/parsers/PTMonthNameLittleEndianParser.js.map +1 -0
  190. package/dist/locales/pt/parsers/PTTimeExpressionParser.js +1 -0
  191. package/dist/locales/pt/parsers/PTTimeExpressionParser.js.map +1 -0
  192. package/dist/locales/pt/parsers/PTWeekdayParser.js +1 -0
  193. package/dist/locales/pt/parsers/PTWeekdayParser.js.map +1 -0
  194. package/dist/locales/pt/refiners/PTMergeDateRangeRefiner.js +1 -0
  195. package/dist/locales/pt/refiners/PTMergeDateRangeRefiner.js.map +1 -0
  196. package/dist/locales/pt/refiners/PTMergeDateTimeRefiner.js +1 -0
  197. package/dist/locales/pt/refiners/PTMergeDateTimeRefiner.js.map +1 -0
  198. package/dist/locales/ru/constants.d.ts +33 -0
  199. package/dist/locales/ru/constants.js +302 -0
  200. package/dist/locales/ru/constants.js.map +1 -0
  201. package/dist/locales/ru/index.d.ts +8 -0
  202. package/dist/locales/ru/index.js +56 -0
  203. package/dist/locales/ru/index.js.map +1 -0
  204. package/dist/locales/ru/parsers/RUCasualDateParser.d.ts +8 -0
  205. package/dist/locales/ru/parsers/RUCasualDateParser.js +52 -0
  206. package/dist/locales/ru/parsers/RUCasualDateParser.js.map +1 -0
  207. package/dist/locales/ru/parsers/RUCasualTimeParser.d.ts +7 -0
  208. package/dist/locales/ru/parsers/RUCasualTimeParser.js +74 -0
  209. package/dist/locales/ru/parsers/RUCasualTimeParser.js.map +1 -0
  210. package/dist/locales/ru/parsers/RUMonthNameLittleEndianParser.d.ts +8 -0
  211. package/dist/locales/ru/parsers/RUMonthNameLittleEndianParser.js +59 -0
  212. package/dist/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -0
  213. package/dist/locales/ru/parsers/RUMonthNameParser.d.ts +7 -0
  214. package/dist/locales/ru/parsers/RUMonthNameParser.js +45 -0
  215. package/dist/locales/ru/parsers/RUMonthNameParser.js.map +1 -0
  216. package/dist/locales/ru/parsers/RURelativeDateFormatParser.d.ts +8 -0
  217. package/dist/locales/ru/parsers/RURelativeDateFormatParser.js +60 -0
  218. package/dist/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -0
  219. package/dist/locales/ru/parsers/RUTimeExpressionParser.d.ts +12 -0
  220. package/dist/locales/ru/parsers/RUTimeExpressionParser.js +57 -0
  221. package/dist/locales/ru/parsers/RUTimeExpressionParser.js.map +1 -0
  222. package/dist/locales/ru/parsers/RUTimeUnitAgoFormatParser.d.ts +8 -0
  223. package/dist/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +22 -0
  224. package/dist/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -0
  225. package/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.d.ts +8 -0
  226. package/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +29 -0
  227. package/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -0
  228. package/dist/locales/ru/parsers/RUTimeUnitWithinFormatParser.d.ts +8 -0
  229. package/dist/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +22 -0
  230. package/dist/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -0
  231. package/dist/locales/ru/parsers/RUWeekdayParser.d.ts +8 -0
  232. package/dist/locales/ru/parsers/RUWeekdayParser.js +55 -0
  233. package/dist/locales/ru/parsers/RUWeekdayParser.js.map +1 -0
  234. package/dist/locales/ru/refiners/RUMergeDateRangeRefiner.d.ts +4 -0
  235. package/dist/locales/ru/refiners/RUMergeDateRangeRefiner.js +13 -0
  236. package/dist/locales/ru/refiners/RUMergeDateRangeRefiner.js.map +1 -0
  237. package/dist/locales/ru/refiners/RUMergeDateTimeRefiner.d.ts +4 -0
  238. package/dist/locales/ru/refiners/RUMergeDateTimeRefiner.js +13 -0
  239. package/dist/locales/ru/refiners/RUMergeDateTimeRefiner.js.map +1 -0
  240. package/dist/locales/zh/hans/constants.js +1 -0
  241. package/dist/locales/zh/hans/constants.js.map +1 -0
  242. package/dist/locales/zh/hans/index.js +1 -0
  243. package/dist/locales/zh/hans/index.js.map +1 -0
  244. package/dist/locales/zh/hans/parsers/ZHHansCasualDateParser.js +1 -0
  245. package/dist/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -0
  246. package/dist/locales/zh/hans/parsers/ZHHansDateParser.js +1 -0
  247. package/dist/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -0
  248. package/dist/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +1 -0
  249. package/dist/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -0
  250. package/dist/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +1 -0
  251. package/dist/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -0
  252. package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +1 -0
  253. package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -0
  254. package/dist/locales/zh/hans/parsers/ZHHansWeekdayParser.js +1 -0
  255. package/dist/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -0
  256. package/dist/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.js +1 -0
  257. package/dist/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.js.map +1 -0
  258. package/dist/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.js +1 -0
  259. package/dist/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.js.map +1 -0
  260. package/dist/locales/zh/hant/constants.js +1 -0
  261. package/dist/locales/zh/hant/constants.js.map +1 -0
  262. package/dist/locales/zh/hant/index.js +1 -0
  263. package/dist/locales/zh/hant/index.js.map +1 -0
  264. package/dist/locales/zh/hant/parsers/ZHHantCasualDateParser.js +1 -0
  265. package/dist/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -0
  266. package/dist/locales/zh/hant/parsers/ZHHantDateParser.js +1 -0
  267. package/dist/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -0
  268. package/dist/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +1 -0
  269. package/dist/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -0
  270. package/dist/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +1 -0
  271. package/dist/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -0
  272. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +1 -0
  273. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -0
  274. package/dist/locales/zh/hant/parsers/ZHHantWeekdayParser.js +1 -0
  275. package/dist/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -0
  276. package/dist/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.js +1 -0
  277. package/dist/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.js.map +1 -0
  278. package/dist/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.js +1 -0
  279. package/dist/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.js.map +1 -0
  280. package/dist/locales/zh/index.d.ts +1 -1
  281. package/dist/locales/zh/index.js +14 -2
  282. package/dist/locales/zh/index.js.map +1 -0
  283. package/dist/results.d.ts +2 -2
  284. package/dist/results.js +1 -0
  285. package/dist/results.js.map +1 -0
  286. package/dist/timezone.js +1 -0
  287. package/dist/timezone.js.map +1 -0
  288. package/dist/utils/dayjs.js +1 -0
  289. package/dist/utils/dayjs.js.map +1 -0
  290. package/dist/utils/pattern.js +1 -0
  291. package/dist/utils/pattern.js.map +1 -0
  292. package/dist/utils/timeunits.js +1 -0
  293. package/dist/utils/timeunits.js.map +1 -0
  294. package/package.json +1 -1
  295. package/src/common/casualReferences.ts +64 -9
  296. package/src/common/parsers/AbstractParserWithWordBoundary.ts +5 -1
  297. package/src/common/parsers/AbstractTimeExpressionParser.ts +52 -28
  298. package/src/common/refiners/ExtractTimezoneOffsetRefiner.ts +5 -1
  299. package/src/index.ts +2 -1
  300. package/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts +1 -1
  301. package/src/locales/ru/constants.ts +344 -0
  302. package/src/locales/ru/index.ts +84 -0
  303. package/src/locales/ru/parsers/RUCasualDateParser.ts +44 -0
  304. package/src/locales/ru/parsers/RUCasualTimeParser.ts +56 -0
  305. package/src/locales/ru/parsers/RUMonthNameLittleEndianParser.ts +72 -0
  306. package/src/locales/ru/parsers/RUMonthNameParser.ts +61 -0
  307. package/src/locales/ru/parsers/RURelativeDateFormatParser.ts +75 -0
  308. package/src/locales/ru/parsers/RUTimeExpressionParser.ts +64 -0
  309. package/src/locales/ru/parsers/RUTimeUnitAgoFormatParser.ts +24 -0
  310. package/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts +34 -0
  311. package/src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts +24 -0
  312. package/src/locales/ru/parsers/RUWeekdayParser.ts +63 -0
  313. package/src/locales/ru/refiners/RUMergeDateRangeRefiner.ts +13 -0
  314. package/src/locales/ru/refiners/RUMergeDateTimeRefiner.ts +13 -0
  315. package/src/locales/zh/index.ts +1 -1
  316. package/src/results.ts +3 -3
  317. package/src/utils/timeunits.ts +2 -2
  318. package/test/en/en_relative.test.ts +6 -0
  319. package/test/en/en_timezone_exp.test.ts +27 -0
  320. package/test/en/negative_cases.test.ts +8 -0
  321. package/test/fr/fr_time_units_within.test.ts +7 -0
  322. package/test/ru/ru_casual.test.ts +147 -0
  323. package/test/ru/ru_month.test.ts +70 -0
  324. package/test/ru/ru_month_name_little_endian.test.ts +145 -0
  325. package/test/ru/ru_relative.test.ts +74 -0
  326. package/test/ru/ru_time_exp.test.ts +111 -0
  327. package/test/ru/ru_time_units_ago.test.ts +48 -0
  328. package/test/ru/ru_time_units_casual_relative.test.ts +112 -0
  329. package/test/ru/ru_time_units_within.test.ts +16 -0
  330. package/test/ru/ru_weekday.test.ts +52 -0
  331. package/tsconfig.json +1 -1
@@ -0,0 +1,75 @@
1
+ import { REGEX_PARTS, TIME_UNIT_DICTIONARY } from "../constants";
2
+ import { ParsingContext } from "../../../chrono";
3
+ import { ParsingComponents } from "../../../results";
4
+ import dayjs from "dayjs";
5
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
6
+ import { matchAnyPattern } from "../../../utils/pattern";
7
+
8
+ const PATTERN = new RegExp(
9
+ `(в прошлом|на прошлой|на следующей|в следующем|на этой|в этом)\\s*(${matchAnyPattern(
10
+ TIME_UNIT_DICTIONARY
11
+ )})(?=\\s*)${REGEX_PARTS.rightBoundary}`,
12
+ REGEX_PARTS.flags
13
+ );
14
+
15
+ const MODIFIER_WORD_GROUP = 1;
16
+ const RELATIVE_WORD_GROUP = 2;
17
+
18
+ export default class RURelativeDateFormatParser extends AbstractParserWithWordBoundaryChecking {
19
+ patternLeftBoundary(): string {
20
+ return REGEX_PARTS.leftBoundary;
21
+ }
22
+
23
+ innerPattern(): RegExp {
24
+ return PATTERN;
25
+ }
26
+
27
+ innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
28
+ const modifier = match[MODIFIER_WORD_GROUP].toLowerCase();
29
+ const unitWord = match[RELATIVE_WORD_GROUP].toLowerCase();
30
+ const timeunit = TIME_UNIT_DICTIONARY[unitWord];
31
+
32
+ if (modifier == "на следующей" || modifier == "в следующем") {
33
+ const timeUnits = {};
34
+ timeUnits[timeunit] = 1;
35
+ return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
36
+ }
37
+
38
+ if (modifier == "в прошлом" || modifier == "на прошлой") {
39
+ const timeUnits = {};
40
+ timeUnits[timeunit] = -1;
41
+ return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
42
+ }
43
+
44
+ const components = context.createParsingComponents();
45
+ let date = dayjs(context.reference.instant);
46
+
47
+ // This week
48
+ if (timeunit.match(/week/i)) {
49
+ date = date.add(-date.get("d"), "d");
50
+ components.imply("day", date.date());
51
+ components.imply("month", date.month() + 1);
52
+ components.imply("year", date.year());
53
+ }
54
+
55
+ // This month
56
+ else if (timeunit.match(/month/i)) {
57
+ date = date.add(-date.date() + 1, "d");
58
+ components.imply("day", date.date());
59
+ components.assign("year", date.year());
60
+ components.assign("month", date.month() + 1);
61
+ }
62
+
63
+ // This year
64
+ else if (timeunit.match(/year/i)) {
65
+ date = date.add(-date.date() + 1, "d");
66
+ date = date.add(-date.month(), "month");
67
+
68
+ components.imply("day", date.date());
69
+ components.imply("month", date.month() + 1);
70
+ components.assign("year", date.year());
71
+ }
72
+
73
+ return components;
74
+ }
75
+ }
@@ -0,0 +1,64 @@
1
+ import { ParsingContext } from "../../../chrono";
2
+ import { ParsingComponents } from "../../../results";
3
+ import { Meridiem } from "../../../index";
4
+ import { AbstractTimeExpressionParser } from "../../../common/parsers/AbstractTimeExpressionParser";
5
+ import { REGEX_PARTS } from "../constants";
6
+
7
+ export default class RUTimeExpressionParser extends AbstractTimeExpressionParser {
8
+ constructor(strictMode) {
9
+ super(strictMode);
10
+ }
11
+
12
+ patternFlags(): string {
13
+ return REGEX_PARTS.flags;
14
+ }
15
+
16
+ primaryPatternLeftBoundary(): string {
17
+ return `(^|\\s|T|(?:[^\\p{L}\\p{N}_]))`;
18
+ }
19
+
20
+ followingPhase(): string {
21
+ return `\\s*(?:\\-|\\–|\\~|\\〜|до|и|по|\\?)\\s*`;
22
+ }
23
+
24
+ primaryPrefix(): string {
25
+ return `(?:(?:в|с)\\s*)??`;
26
+ }
27
+
28
+ primarySuffix(): string {
29
+ return `(?:\\s*(?:утра|вечера|после полудня))?(?!\\/)${REGEX_PARTS.rightBoundary}`;
30
+ }
31
+
32
+ extractPrimaryTimeComponents(context: ParsingContext, match: RegExpMatchArray): null | ParsingComponents {
33
+ const components = super.extractPrimaryTimeComponents(context, match);
34
+ if (components) {
35
+ if (match[0].endsWith("вечера")) {
36
+ const hour = components.get("hour");
37
+ if (hour >= 6 && hour < 12) {
38
+ components.assign("hour", components.get("hour") + 12);
39
+ components.assign("meridiem", Meridiem.PM);
40
+ } else if (hour < 6) {
41
+ components.assign("meridiem", Meridiem.AM);
42
+ }
43
+ }
44
+
45
+ if (match[0].endsWith("после полудня")) {
46
+ components.assign("meridiem", Meridiem.PM);
47
+ const hour = components.get("hour");
48
+ if (hour >= 0 && hour <= 6) {
49
+ components.assign("hour", components.get("hour") + 12);
50
+ }
51
+ }
52
+
53
+ if (match[0].endsWith("утра")) {
54
+ components.assign("meridiem", Meridiem.AM);
55
+ const hour = components.get("hour");
56
+ if (hour < 12) {
57
+ components.assign("hour", components.get("hour"));
58
+ }
59
+ }
60
+ }
61
+
62
+ return components;
63
+ }
64
+ }
@@ -0,0 +1,24 @@
1
+ import { ParsingContext } from "../../../chrono";
2
+ import { parseTimeUnits, REGEX_PARTS, TIME_UNITS_PATTERN } from "../constants";
3
+ import { ParsingComponents } from "../../../results";
4
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
5
+ import { reverseTimeUnits } from "../../../utils/timeunits";
6
+
7
+ const PATTERN = new RegExp(`(${TIME_UNITS_PATTERN})\\s{0,5}назад(?=(?:\\W|$))`, REGEX_PARTS.flags);
8
+
9
+ export default class RUTimeUnitAgoFormatParser extends AbstractParserWithWordBoundaryChecking {
10
+ patternLeftBoundary(): string {
11
+ return REGEX_PARTS.leftBoundary;
12
+ }
13
+
14
+ innerPattern(): RegExp {
15
+ return PATTERN;
16
+ }
17
+
18
+ innerExtract(context: ParsingContext, match: RegExpMatchArray) {
19
+ const timeUnits = parseTimeUnits(match[1]);
20
+ const outputTimeUnits = reverseTimeUnits(timeUnits);
21
+
22
+ return ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits);
23
+ }
24
+ }
@@ -0,0 +1,34 @@
1
+ import { TIME_UNITS_PATTERN, parseTimeUnits, REGEX_PARTS } from "../constants";
2
+ import { ParsingContext } from "../../../chrono";
3
+ import { ParsingComponents } from "../../../results";
4
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
5
+ import { reverseTimeUnits } from "../../../utils/timeunits";
6
+
7
+ const PATTERN = new RegExp(
8
+ `(эти|последние|прошлые|следующие|после|через|\\+|-)\\s*(${TIME_UNITS_PATTERN})${REGEX_PARTS.rightBoundary}`,
9
+ REGEX_PARTS.flags
10
+ );
11
+
12
+ export default class RUTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking {
13
+ patternLeftBoundary(): string {
14
+ return REGEX_PARTS.leftBoundary;
15
+ }
16
+
17
+ innerPattern(): RegExp {
18
+ return PATTERN;
19
+ }
20
+
21
+ innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
22
+ const prefix = match[1].toLowerCase();
23
+ let timeUnits = parseTimeUnits(match[2]);
24
+ switch (prefix) {
25
+ case "последние":
26
+ case "прошлые":
27
+ case "-":
28
+ timeUnits = reverseTimeUnits(timeUnits);
29
+ break;
30
+ }
31
+
32
+ return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
33
+ }
34
+ }
@@ -0,0 +1,24 @@
1
+ import { TIME_UNITS_PATTERN, parseTimeUnits, REGEX_PARTS } from "../constants";
2
+ import { ParsingContext } from "../../../chrono";
3
+ import { ParsingComponents } from "../../../results";
4
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
5
+
6
+ const PATTERN = `(?:(?:около|примерно)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})${REGEX_PARTS.rightBoundary}`;
7
+ const PATTERN_WITH_PREFIX = new RegExp(`(?:в течение|в течении)\\s*${PATTERN}`, REGEX_PARTS.flags);
8
+
9
+ const PATTERN_WITHOUT_PREFIX = new RegExp(PATTERN, "i");
10
+
11
+ export default class RUTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryChecking {
12
+ patternLeftBoundary(): string {
13
+ return REGEX_PARTS.leftBoundary;
14
+ }
15
+
16
+ innerPattern(context: ParsingContext): RegExp {
17
+ return context.option.forwardDate ? PATTERN_WITHOUT_PREFIX : PATTERN_WITH_PREFIX;
18
+ }
19
+
20
+ innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
21
+ const timeUnits = parseTimeUnits(match[1]);
22
+ return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
23
+ }
24
+ }
@@ -0,0 +1,63 @@
1
+ import { ParsingContext } from "../../../chrono";
2
+ import { ParsingComponents } from "../../../results";
3
+ import { REGEX_PARTS, WEEKDAY_DICTIONARY } from "../constants";
4
+ import { matchAnyPattern } from "../../../utils/pattern";
5
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
6
+ import { toDayJSWeekday } from "../../../calculation/weeks";
7
+
8
+ const PATTERN = new RegExp(
9
+ `(?:(?:,|\\(|()\\s*)?` +
10
+ `(?:в\\s*?)?` +
11
+ `(?:(эту|этот|прошлый|прошлую|следующий|следующую|следующего)\\s*)?` +
12
+ `(${matchAnyPattern(WEEKDAY_DICTIONARY)})` +
13
+ `(?:\\s*(?:,|\\)|)))?` +
14
+ `(?:\\s*на\\s*(этой|прошлой|следующей)\\s*неделе)?` +
15
+ `${REGEX_PARTS.rightBoundary}`,
16
+ REGEX_PARTS.flags
17
+ );
18
+
19
+ const PREFIX_GROUP = 1;
20
+ const WEEKDAY_GROUP = 2;
21
+ const POSTFIX_GROUP = 3;
22
+
23
+ export default class RUWeekdayParser extends AbstractParserWithWordBoundaryChecking {
24
+ innerPattern(): RegExp {
25
+ return PATTERN;
26
+ }
27
+
28
+ patternLeftBoundary(): string {
29
+ return REGEX_PARTS.leftBoundary;
30
+ }
31
+
32
+ innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
33
+ const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
34
+ const offset = WEEKDAY_DICTIONARY[dayOfWeek];
35
+ const prefix = match[PREFIX_GROUP];
36
+ const postfix = match[POSTFIX_GROUP];
37
+ let modifierWord = prefix || postfix;
38
+ modifierWord = modifierWord || "";
39
+ modifierWord = modifierWord.toLowerCase();
40
+
41
+ let modifier = null;
42
+ if (modifierWord == "прошлый" || modifierWord == "прошлую" || modifierWord == "прошлой") {
43
+ modifier = "last";
44
+ } else if (
45
+ modifierWord == "следующий" ||
46
+ modifierWord == "следующую" ||
47
+ modifierWord == "следующей" ||
48
+ modifierWord == "следующего"
49
+ ) {
50
+ modifier = "next";
51
+ } else if (modifierWord == "этот" || modifierWord == "эту" || modifierWord == "этой") {
52
+ modifier = "this";
53
+ }
54
+
55
+ const date = toDayJSWeekday(context.refDate, offset, modifier);
56
+ return context
57
+ .createParsingComponents()
58
+ .assign("weekday", offset)
59
+ .imply("day", date.date())
60
+ .imply("month", date.month() + 1)
61
+ .imply("year", date.year());
62
+ }
63
+ }
@@ -0,0 +1,13 @@
1
+ import AbstractMergeDateRangeRefiner from "../../../common/refiners/AbstractMergeDateRangeRefiner";
2
+
3
+ /**
4
+ * Merging before and after results (see. AbstractMergeDateRangeRefiner)
5
+ * This implementation should provide Russian connecting phases
6
+ * - c 06.09.1989 [до|по] 11.12.1996
7
+ * - c пятницы и до среды
8
+ */
9
+ export default class xf extends AbstractMergeDateRangeRefiner {
10
+ patternBetween(): RegExp {
11
+ return /^\s*(и до|и по|до|по|-)\s*$/i;
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ import AbstractMergeDateTimeRefiner from "../../../common/refiners/AbstractMergeDateTimeRefiner";
2
+
3
+ /**
4
+ * Merging date-only result and time-only result (see. AbstractMergeDateTimeRefiner).
5
+ * This implementation should provide English connecting phases
6
+ * - 2020-02-13 [в] 6:00
7
+ * - Завтра [,] 7:00
8
+ */
9
+ export default class RUMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner {
10
+ patternBetween(): RegExp {
11
+ return new RegExp(`^\\s*(T|в|,|-)?\\s*$`);
12
+ }
13
+ }
@@ -1,2 +1,2 @@
1
1
  export * from "./hant";
2
- export { hans } from "./hans";
2
+ export * as hans from "./hans";
package/src/results.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Component, ParsedComponents, ParsedResult, ParsingReference } from "./index";
2
2
 
3
3
  import quarterOfYear from "dayjs/plugin/quarterOfYear";
4
- import dayjs, { OpUnitType, QUnitType } from "dayjs";
4
+ import dayjs, { QUnitType } from "dayjs";
5
5
  import { assignSimilarDate, assignSimilarTime, implySimilarTime } from "./utils/dayjs";
6
6
  import { toTimezoneOffset } from "./timezone";
7
7
  dayjs.extend(quarterOfYear);
@@ -175,11 +175,11 @@ export class ParsingComponents implements ParsedComponents {
175
175
 
176
176
  static createRelativeFromReference(
177
177
  reference: ReferenceWithTimezone,
178
- fragments: { [c in OpUnitType | QUnitType]?: number }
178
+ fragments: { [c in QUnitType]?: number }
179
179
  ): ParsingComponents {
180
180
  let date = dayjs(reference.instant);
181
181
  for (const key in fragments) {
182
- date = date.add(fragments[key as OpUnitType], key as OpUnitType);
182
+ date = date.add(fragments[key as QUnitType], key as QUnitType);
183
183
  }
184
184
 
185
185
  const components = new ParsingComponents(reference);
@@ -18,8 +18,8 @@ export function addImpliedTimeUnits(components: ParsingComponents, timeUnits: Ti
18
18
 
19
19
  let date = components.dayjs();
20
20
  for (const key in timeUnits) {
21
- // noinspection JSUnfilteredForInLoop
22
- date = date.add(timeUnits[key], key as OpUnitType);
21
+ // noinspection JSUnfilteredForInLoop,TypeScriptValidateTypes
22
+ date = date.add(timeUnits[key], key as QUnitType);
23
23
  }
24
24
 
25
25
  if ("day" in timeUnits || "d" in timeUnits || "week" in timeUnits || "month" in timeUnits || "year" in timeUnits) {
@@ -194,6 +194,12 @@ test("Test - Future relative expressions", () => {
194
194
  expect(result.start.isCertain("millisecond")).toBe(false);
195
195
  expect(result.start.isCertain("timezoneOffset")).toBe(false);
196
196
  });
197
+
198
+ testSingleCase(chrono, "Connect back after this year", new Date(2022, 4 - 1, 16, 12), (result, text) => {
199
+ expect(result.start.get("year")).toBe(2023);
200
+ expect(result.start.get("month")).toBe(4);
201
+ expect(result.start.get("day")).toBe(16);
202
+ });
197
203
  });
198
204
 
199
205
  test("Test - Relative date components' certainty", () => {
@@ -27,6 +27,25 @@ test("Test - Parsing date/time with UTC offset", function () {
27
27
  });
28
28
  });
29
29
 
30
+ test("Test - Parsing date/time with numeric offset", () => {
31
+ testSingleCase(chrono, "wednesday, september 16, 2020 at 23.00+14", (result, text) => {
32
+ expect(result.text).toBe(text);
33
+ expect(result.start.isCertain("timezoneOffset")).toBe(true);
34
+ expect(result.start.get("timezoneOffset")).toBe(14 * 60);
35
+ });
36
+
37
+ testSingleCase(chrono, "wednesday, september 16, 2020 at 23.00+1400", (result, text) => {
38
+ expect(result.text).toBe(text);
39
+ expect(result.start.isCertain("timezoneOffset")).toBe(true);
40
+ expect(result.start.get("timezoneOffset")).toBe(14 * 60);
41
+ });
42
+
43
+ testSingleCase(chrono, "wednesday, september 16, 2020 at 23.00+15", (result, text) => {
44
+ expect(result.text).toBe("wednesday, september 16, 2020 at 23.00");
45
+ expect(result.start.isCertain("timezoneOffset")).toBe(false);
46
+ });
47
+ });
48
+
30
49
  test("Test - Parsing date/time with GMT offset", function () {
31
50
  testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am GMT -08:45 ", (result, text) => {
32
51
  expect(result.text).toBe("wednesday, september 16, 2020 at 11 am GMT -08:45");
@@ -43,6 +62,14 @@ test("Test - Parsing date/time with GMT offset", function () {
43
62
  expect(result.start.get("minute")).toBe(0);
44
63
  expect(result.start.get("timezoneOffset")).toBe(2 * 60);
45
64
  });
65
+
66
+ testSingleCase(chrono, "published: 10:30 (gmt-2:30).", (result, text) => {
67
+ expect(result.text).toBe("10:30 (gmt-2:30)");
68
+
69
+ expect(result.start.get("hour")).toBe(10);
70
+ expect(result.start.get("minute")).toBe(30);
71
+ expect(result.start.get("timezoneOffset")).toBe(-(2 * 60 + 30));
72
+ });
46
73
  });
47
74
 
48
75
  test("Test - Parsing date/time with timezone abbreviation", function () {
@@ -44,6 +44,14 @@ test("Test - Skip hyphenated numbers pattern", () => {
44
44
  testUnexpectedResult(chrono, "4-5-6");
45
45
 
46
46
  testUnexpectedResult(chrono, "20-30-12");
47
+
48
+ testUnexpectedResult(chrono, "2012");
49
+
50
+ testUnexpectedResult(chrono, "2012-14");
51
+
52
+ testUnexpectedResult(chrono, "2012-1400");
53
+
54
+ testUnexpectedResult(chrono, "2200-25");
47
55
  });
48
56
 
49
57
  test("Test - Skip version number pattern", () => {
@@ -52,6 +52,13 @@ test("Test - Single Expression", function () {
52
52
  expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 14));
53
53
  });
54
54
 
55
+ testSingleCase(chrono.fr, "régler une minuterie de 5 minutes", new Date(2012, 7, 10, 12, 14), (result) => {
56
+ expect(result.index).toBe(21);
57
+ expect(result.text).toBe("de 5 minutes");
58
+
59
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 19));
60
+ });
61
+
55
62
  testSingleCase(chrono.fr, "Dans 5 minutes je vais rentrer chez moi", new Date(2012, 7, 10, 12, 14), (result) => {
56
63
  expect(result.index).toBe(0);
57
64
  expect(result.text).toBe("Dans 5 minutes");
@@ -0,0 +1,147 @@
1
+ import * as chrono from "../../src/";
2
+ import { testSingleCase, testUnexpectedResult } from "../test_util";
3
+
4
+ test("Test - Single Expression", () => {
5
+ testSingleCase(chrono.ru.casual, "Дедлайн сегодня", new Date(2012, 7, 10, 17, 10), (result) => {
6
+ expect(result.index).toBe(8);
7
+ expect(result.text).toBe("сегодня");
8
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 17, 10));
9
+ });
10
+
11
+ testSingleCase(chrono.ru.casual, "Дедлайн завтра", new Date(2012, 7, 10, 17, 10), (result) => {
12
+ expect(result.index).toBe(8);
13
+ expect(result.text).toBe("завтра");
14
+ expect(result.start).toBeDate(new Date(2012, 7, 11, 17, 10));
15
+ });
16
+
17
+ testSingleCase(chrono.ru.casual, "Дедлайн послезавтра", new Date(2012, 7, 10, 17, 10), (result) => {
18
+ expect(result.index).toBe(8);
19
+ expect(result.text).toBe("послезавтра");
20
+ expect(result.start).toBeDate(new Date(2012, 7, 12, 17, 10));
21
+ });
22
+
23
+ testSingleCase(chrono.ru.casual, "Дедлайн вчера", new Date(2012, 7, 10, 17, 10), (result) => {
24
+ expect(result.index).toBe(8);
25
+ expect(result.text).toBe("вчера");
26
+ expect(result.start).toBeDate(new Date(2012, 7, 9, 17, 10));
27
+ });
28
+
29
+ testSingleCase(chrono.ru.casual, "Дедлайн позавчера", new Date(2012, 7, 10, 17, 10), (result) => {
30
+ expect(result.index).toBe(8);
31
+ expect(result.text).toBe("позавчера");
32
+ expect(result.start).toBeDate(new Date(2012, 7, 8, 17, 10));
33
+ });
34
+
35
+ testSingleCase(chrono.ru.casual, "Дедлайн сейчас", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
36
+ expect(result.index).toBe(8);
37
+ expect(result.text).toBe("сейчас");
38
+ expect(result.start).toBeDate(result.refDate);
39
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 9, 10, 11));
40
+ });
41
+
42
+ testSingleCase(chrono.ru.casual, "Дедлайн утром", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
43
+ expect(result.index).toBe(8);
44
+ expect(result.text).toBe("утром");
45
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 6, 0, 0, 0));
46
+ });
47
+
48
+ testSingleCase(chrono.ru.casual, "Дедлайн этим утром", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
49
+ expect(result.index).toBe(8);
50
+ expect(result.text).toBe("этим утром");
51
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 6, 0, 0, 0));
52
+ });
53
+
54
+ testSingleCase(chrono.ru.casual, "Дедлайн в полдень", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
55
+ expect(result.index).toBe(8);
56
+ expect(result.text).toBe("в полдень");
57
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 0, 0, 0));
58
+ });
59
+
60
+ testSingleCase(chrono.ru.casual, "Дедлайн прошлым вечером", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
61
+ expect(result.index).toBe(8);
62
+ expect(result.text).toBe("прошлым вечером");
63
+ expect(result.start).toBeDate(new Date(2012, 7, 9, 20, 0, 0, 0));
64
+ });
65
+
66
+ testSingleCase(chrono.ru.casual, "Дедлайн вечером", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
67
+ expect(result.index).toBe(8);
68
+ expect(result.text).toBe("вечером");
69
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 20, 0, 0, 0));
70
+ });
71
+
72
+ testSingleCase(chrono.ru.casual, "Дедлайн прошлой ночью", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
73
+ expect(result.index).toBe(8);
74
+ expect(result.text).toBe("прошлой ночью");
75
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
76
+ });
77
+
78
+ testSingleCase(chrono.ru.casual, "Дедлайн прошлой ночью", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
79
+ expect(result.index).toBe(8);
80
+ expect(result.text).toBe("прошлой ночью");
81
+ expect(result.start).toBeDate(new Date(2012, 7, 9, 0, 0, 0, 0));
82
+ });
83
+
84
+ testSingleCase(chrono.ru.casual, "Дедлайн сегодня ночью", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
85
+ expect(result.index).toBe(8);
86
+ expect(result.text).toBe("сегодня ночью");
87
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
88
+ });
89
+
90
+ testSingleCase(chrono.ru.casual, "Дедлайн этой ночью", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
91
+ expect(result.index).toBe(8);
92
+ expect(result.text).toBe("этой ночью");
93
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
94
+ });
95
+
96
+ testSingleCase(chrono.ru.casual, "Дедлайн ночью", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
97
+ expect(result.index).toBe(8);
98
+ expect(result.text).toBe("ночью");
99
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
100
+ });
101
+
102
+ testSingleCase(chrono.ru.casual, "Дедлайн в полночь", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
103
+ expect(result.index).toBe(8);
104
+ expect(result.text).toBe("в полночь");
105
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
106
+ });
107
+ });
108
+
109
+ test("Test - Combined Expression", () => {
110
+ testSingleCase(chrono.ru.casual, "Дедлайн вчера вечером", new Date(2012, 7, 10, 12), (result) => {
111
+ expect(result.index).toBe(8);
112
+ expect(result.text).toBe("вчера вечером");
113
+ expect(result.start).toBeDate(new Date(2012, 7, 9, 20));
114
+ });
115
+
116
+ testSingleCase(chrono.ru.casual, "Дедлайн завтра утром", new Date(2012, 8, 10, 14), (result) => {
117
+ expect(result.index).toBe(8);
118
+ expect(result.text).toBe("завтра утром");
119
+ expect(result.start).toBeDate(new Date(2012, 8, 11, 6));
120
+ });
121
+ });
122
+
123
+ test("Test - Casual date range", () => {
124
+ testSingleCase(chrono.ru.casual, "Событие с сегодня и до послезавтра", new Date(2012, 7, 4, 12), (result) => {
125
+ expect(result.index).toBe(8);
126
+ expect(result.text).toBe("с сегодня и до послезавтра");
127
+ expect(result.start).toBeDate(new Date(2012, 7, 4, 12));
128
+ expect(result.end).toBeDate(new Date(2012, 7, 6, 12));
129
+ });
130
+
131
+ testSingleCase(chrono.ru.casual, "Событие сегодня-завтра", new Date(2012, 7, 10, 12), (result) => {
132
+ expect(result.index).toBe(8);
133
+ expect(result.text).toBe("сегодня-завтра");
134
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12));
135
+ expect(result.end).toBeDate(new Date(2012, 7, 11, 12));
136
+ });
137
+ });
138
+
139
+ test("Test - Random negative text", () => {
140
+ testUnexpectedResult(chrono.ru, "несегодня");
141
+
142
+ testUnexpectedResult(chrono.ru, "зявтра");
143
+
144
+ testUnexpectedResult(chrono.ru, "вчеера");
145
+
146
+ testUnexpectedResult(chrono.ru, "январ");
147
+ });
@@ -0,0 +1,70 @@
1
+ import * as chrono from "../../src";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - Month-Year expression", function () {
5
+ testSingleCase(chrono.ru, "Сентябрь 2012", (result) => {
6
+ expect(result.index).toBe(0);
7
+ expect(result.text).toBe("Сентябрь 2012");
8
+ expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
9
+ });
10
+
11
+ testSingleCase(chrono.ru, "сен 2012", (result) => {
12
+ expect(result.index).toBe(0);
13
+ expect(result.text).toBe("сен 2012");
14
+ expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
15
+ });
16
+
17
+ testSingleCase(chrono.ru, "сен. 2012", (result) => {
18
+ expect(result.index).toBe(0);
19
+ expect(result.text).toBe("сен. 2012");
20
+ expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
21
+ });
22
+
23
+ testSingleCase(chrono.ru, "сен-2012", (result) => {
24
+ expect(result.index).toBe(0);
25
+ expect(result.text).toBe("сен-2012");
26
+ expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
27
+ });
28
+ });
29
+
30
+ test("Test - Month-Only expression", function () {
31
+ testSingleCase(chrono.ru, "в январе", new Date(2020, 11 - 1, 22), (result) => {
32
+ expect(result.index).toBe(0);
33
+ expect(result.text).toBe("в январе");
34
+ expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
35
+ });
36
+
37
+ testSingleCase(chrono.ru, "в янв", new Date(2020, 11 - 1, 22), (result) => {
38
+ expect(result.index).toBe(0);
39
+ expect(result.text).toBe("в янв");
40
+ expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
41
+ });
42
+
43
+ testSingleCase(chrono.ru, "май", new Date(2020, 11 - 1, 22), (result) => {
44
+ expect(result.index).toBe(0);
45
+ expect(result.text).toBe("май");
46
+ expect(result.start).toBeDate(new Date(2021, 5 - 1, 1, 12));
47
+ });
48
+ });
49
+
50
+ test("Test - Month expression in context", function () {
51
+ testSingleCase(chrono.ru, "Это было в сентябре 2012 перед новым годом", (result) => {
52
+ expect(result.index).toBe(9);
53
+ expect(result.text).toBe("в сентябре 2012");
54
+ expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
55
+ });
56
+ });
57
+
58
+ test("Test - year 90's parsing", () => {
59
+ testSingleCase(chrono.ru, "авг 96", new Date(2012, 7, 10), (result) => {
60
+ expect(result.index).toBe(0);
61
+ expect(result.text).toBe("авг 96");
62
+ expect(result.start).toBeDate(new Date(1996, 8 - 1, 1, 12));
63
+ });
64
+
65
+ testSingleCase(chrono.ru, "96 авг 96", new Date(2012, 7, 10), (result) => {
66
+ expect(result.index).toBe(3);
67
+ expect(result.text).toBe("авг 96");
68
+ expect(result.start).toBeDate(new Date(1996, 8 - 1, 1, 12));
69
+ });
70
+ });