chrono-node 2.7.9 → 2.8.1

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 (536) hide show
  1. package/dist/cjs/calculation/mergingCalculation.js +4 -5
  2. package/dist/cjs/calculation/mergingCalculation.js.map +1 -1
  3. package/dist/cjs/calculation/years.js +3 -4
  4. package/dist/cjs/calculation/years.js.map +1 -1
  5. package/dist/cjs/chrono.js.map +1 -1
  6. package/dist/cjs/common/abstractRefiners.js.map +1 -1
  7. package/dist/cjs/common/calculation/weekdays.js +6 -7
  8. package/dist/cjs/common/calculation/weekdays.js.map +1 -1
  9. package/dist/cjs/common/casualReferences.js +32 -35
  10. package/dist/cjs/common/casualReferences.js.map +1 -1
  11. package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
  12. package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
  13. package/dist/cjs/common/parsers/ISOFormatParser.js.map +1 -1
  14. package/dist/cjs/common/parsers/SlashDateFormatParser.js +2 -2
  15. package/dist/cjs/common/parsers/SlashDateFormatParser.js.map +1 -1
  16. package/dist/cjs/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
  17. package/dist/cjs/common/refiners/AbstractMergeDateTimeRefiner.js +2 -2
  18. package/dist/cjs/common/refiners/AbstractMergeDateTimeRefiner.js.map +1 -1
  19. package/dist/cjs/common/refiners/ExtractTimezoneAbbrRefiner.js +1 -1
  20. package/dist/cjs/common/refiners/ExtractTimezoneAbbrRefiner.js.map +1 -1
  21. package/dist/cjs/common/refiners/ExtractTimezoneOffsetRefiner.js.map +1 -1
  22. package/dist/cjs/common/refiners/ForwardDateRefiner.js +47 -12
  23. package/dist/cjs/common/refiners/ForwardDateRefiner.js.map +1 -1
  24. package/dist/cjs/common/refiners/MergeWeekdayComponentRefiner.js.map +1 -1
  25. package/dist/cjs/common/refiners/OverlapRemovalRefiner.js.map +1 -1
  26. package/dist/cjs/common/refiners/UnlikelyFormatFilter.js.map +1 -1
  27. package/dist/cjs/configurations.js +1 -2
  28. package/dist/cjs/configurations.js.map +1 -1
  29. package/dist/cjs/debugging.d.ts +2 -2
  30. package/dist/cjs/index.js +25 -11
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/locales/de/constants.js +8 -8
  33. package/dist/cjs/locales/de/constants.js.map +1 -1
  34. package/dist/cjs/locales/de/index.js +6 -6
  35. package/dist/cjs/locales/de/index.js.map +1 -1
  36. package/dist/cjs/locales/de/parsers/DECasualDateParser.js +30 -16
  37. package/dist/cjs/locales/de/parsers/DECasualDateParser.js.map +1 -1
  38. package/dist/cjs/locales/de/parsers/DECasualTimeParser.js +3 -3
  39. package/dist/cjs/locales/de/parsers/DECasualTimeParser.js.map +1 -1
  40. package/dist/cjs/locales/de/parsers/DEMonthNameLittleEndianParser.js +3 -3
  41. package/dist/cjs/locales/de/parsers/DEMonthNameLittleEndianParser.js.map +1 -1
  42. package/dist/cjs/locales/de/parsers/DESpecificTimeExpressionParser.js.map +1 -1
  43. package/dist/cjs/locales/de/parsers/DETimeExpressionParser.js.map +1 -1
  44. package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js +3 -3
  45. package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
  46. package/dist/cjs/locales/de/parsers/DETimeUnitWithinFormatParser.js +1 -1
  47. package/dist/cjs/locales/de/parsers/DETimeUnitWithinFormatParser.js.map +1 -1
  48. package/dist/cjs/locales/de/parsers/DEWeekdayParser.js +2 -2
  49. package/dist/cjs/locales/de/parsers/DEWeekdayParser.js.map +1 -1
  50. package/dist/cjs/locales/en/configuration.js +1 -1
  51. package/dist/cjs/locales/en/configuration.js.map +1 -1
  52. package/dist/cjs/locales/en/constants.js +12 -12
  53. package/dist/cjs/locales/en/constants.js.map +1 -1
  54. package/dist/cjs/locales/en/index.js +3 -3
  55. package/dist/cjs/locales/en/index.js.map +1 -1
  56. package/dist/cjs/locales/en/parsers/ENCasualDateParser.js +24 -10
  57. package/dist/cjs/locales/en/parsers/ENCasualDateParser.js.map +1 -1
  58. package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js +22 -8
  59. package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
  60. package/dist/cjs/locales/en/parsers/ENMonthNameLittleEndianParser.js +5 -5
  61. package/dist/cjs/locales/en/parsers/ENMonthNameLittleEndianParser.js.map +1 -1
  62. package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.js +5 -5
  63. package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.js.map +1 -1
  64. package/dist/cjs/locales/en/parsers/ENMonthNameParser.js +3 -3
  65. package/dist/cjs/locales/en/parsers/ENMonthNameParser.js.map +1 -1
  66. package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js +2 -2
  67. package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
  68. package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
  69. package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js +2 -2
  70. package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
  71. package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +2 -2
  72. package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
  73. package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js +1 -1
  74. package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
  75. package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -1
  76. package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
  77. package/dist/cjs/locales/en/parsers/ENWeekdayParser.js +2 -2
  78. package/dist/cjs/locales/en/parsers/ENWeekdayParser.js.map +1 -1
  79. package/dist/cjs/locales/en/parsers/ENYearMonthDayParser.js +1 -1
  80. package/dist/cjs/locales/en/parsers/ENYearMonthDayParser.js.map +1 -1
  81. package/dist/cjs/locales/en/refiners/ENExtractYearSuffixRefiner.js +4 -1
  82. package/dist/cjs/locales/en/refiners/ENExtractYearSuffixRefiner.js.map +1 -1
  83. package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js +2 -2
  84. package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
  85. package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js +2 -2
  86. package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
  87. package/dist/cjs/locales/en/refiners/ENUnlikelyFormatFilter.js.map +1 -1
  88. package/dist/cjs/locales/es/constants.js +7 -7
  89. package/dist/cjs/locales/es/constants.js.map +1 -1
  90. package/dist/cjs/locales/es/index.js +6 -6
  91. package/dist/cjs/locales/es/index.js.map +1 -1
  92. package/dist/cjs/locales/es/parsers/ESCasualDateParser.js +22 -8
  93. package/dist/cjs/locales/es/parsers/ESCasualDateParser.js.map +1 -1
  94. package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js +2 -2
  95. package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
  96. package/dist/cjs/locales/es/parsers/ESMonthNameLittleEndianParser.js +3 -3
  97. package/dist/cjs/locales/es/parsers/ESMonthNameLittleEndianParser.js.map +1 -1
  98. package/dist/cjs/locales/es/parsers/ESTimeUnitWithinFormatParser.js +1 -1
  99. package/dist/cjs/locales/es/parsers/ESTimeUnitWithinFormatParser.js.map +1 -1
  100. package/dist/cjs/locales/es/parsers/ESWeekdayParser.js +2 -2
  101. package/dist/cjs/locales/es/parsers/ESWeekdayParser.js.map +1 -1
  102. package/dist/cjs/locales/fr/constants.js +8 -8
  103. package/dist/cjs/locales/fr/constants.js.map +1 -1
  104. package/dist/cjs/locales/fr/index.js +6 -6
  105. package/dist/cjs/locales/fr/index.js.map +1 -1
  106. package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js +25 -11
  107. package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
  108. package/dist/cjs/locales/fr/parsers/FRCasualTimeParser.js.map +1 -1
  109. package/dist/cjs/locales/fr/parsers/FRMonthNameLittleEndianParser.js +5 -5
  110. package/dist/cjs/locales/fr/parsers/FRMonthNameLittleEndianParser.js.map +1 -1
  111. package/dist/cjs/locales/fr/parsers/FRSpecificTimeExpressionParser.js.map +1 -1
  112. package/dist/cjs/locales/fr/parsers/FRTimeExpressionParser.js.map +1 -1
  113. package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +2 -2
  114. package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js.map +1 -1
  115. package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +3 -3
  116. package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
  117. package/dist/cjs/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +1 -1
  118. package/dist/cjs/locales/fr/parsers/FRTimeUnitWithinFormatParser.js.map +1 -1
  119. package/dist/cjs/locales/fr/parsers/FRWeekdayParser.js +2 -2
  120. package/dist/cjs/locales/fr/parsers/FRWeekdayParser.js.map +1 -1
  121. package/dist/cjs/locales/it/constants.js +10 -10
  122. package/dist/cjs/locales/it/constants.js.map +1 -1
  123. package/dist/cjs/locales/it/index.js +6 -6
  124. package/dist/cjs/locales/it/index.js.map +1 -1
  125. package/dist/cjs/locales/it/parsers/ITCasualDateParser.js +24 -10
  126. package/dist/cjs/locales/it/parsers/ITCasualDateParser.js.map +1 -1
  127. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js +2 -2
  128. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
  129. package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.js +1 -1
  130. package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.js.map +1 -1
  131. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js +5 -5
  132. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -1
  133. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js +5 -5
  134. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -1
  135. package/dist/cjs/locales/it/parsers/ITMonthNameParser.js +3 -3
  136. package/dist/cjs/locales/it/parsers/ITMonthNameParser.js.map +1 -1
  137. package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js +2 -2
  138. package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
  139. package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
  140. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js +2 -2
  141. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
  142. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +2 -2
  143. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
  144. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js +1 -1
  145. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
  146. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js +1 -1
  147. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -1
  148. package/dist/cjs/locales/it/parsers/ITWeekdayParser.js +2 -2
  149. package/dist/cjs/locales/it/parsers/ITWeekdayParser.js.map +1 -1
  150. package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js +2 -2
  151. package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
  152. package/dist/cjs/locales/ja/constants.d.ts +24 -0
  153. package/dist/cjs/locales/ja/constants.js +39 -2
  154. package/dist/cjs/locales/ja/constants.js.map +1 -1
  155. package/dist/cjs/locales/ja/index.d.ts +1 -1
  156. package/dist/cjs/locales/ja/index.js +32 -12
  157. package/dist/cjs/locales/ja/index.js.map +1 -1
  158. package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js +23 -9
  159. package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
  160. package/dist/cjs/locales/ja/parsers/JPSlashDateFormatParser.d.ts +6 -0
  161. package/dist/cjs/locales/ja/parsers/JPSlashDateFormatParser.js +38 -0
  162. package/dist/cjs/locales/ja/parsers/JPSlashDateFormatParser.js.map +1 -0
  163. package/dist/cjs/locales/ja/parsers/JPStandardParser.js +5 -5
  164. package/dist/cjs/locales/ja/parsers/JPStandardParser.js.map +1 -1
  165. package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.d.ts +6 -0
  166. package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js +261 -0
  167. package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -0
  168. package/dist/cjs/locales/ja/parsers/JPWeekdayParser.d.ts +6 -0
  169. package/dist/cjs/locales/ja/parsers/JPWeekdayParser.js +30 -0
  170. package/dist/cjs/locales/ja/parsers/JPWeekdayParser.js.map +1 -0
  171. package/dist/cjs/locales/ja/parsers/JPWeekdayWithParenthesesParser.d.ts +6 -0
  172. package/dist/cjs/locales/ja/parsers/JPWeekdayWithParenthesesParser.js +19 -0
  173. package/dist/cjs/locales/ja/parsers/JPWeekdayWithParenthesesParser.js.map +1 -0
  174. package/dist/cjs/locales/ja/refiners/JPMergeDateRangeRefiner.js +1 -1
  175. package/dist/cjs/locales/ja/refiners/JPMergeDateRangeRefiner.js.map +1 -1
  176. package/dist/cjs/locales/ja/refiners/JPMergeDateTimeRefiner.d.ts +4 -0
  177. package/dist/cjs/locales/ja/refiners/JPMergeDateTimeRefiner.js +13 -0
  178. package/dist/cjs/locales/ja/refiners/JPMergeDateTimeRefiner.js.map +1 -0
  179. package/dist/cjs/locales/ja/refiners/JPMergeWeekdayComponentRefiner.d.ts +6 -0
  180. package/dist/cjs/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js +22 -0
  181. package/dist/cjs/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js.map +1 -0
  182. package/dist/cjs/locales/nl/constants.js +10 -10
  183. package/dist/cjs/locales/nl/constants.js.map +1 -1
  184. package/dist/cjs/locales/nl/index.js +6 -6
  185. package/dist/cjs/locales/nl/index.js.map +1 -1
  186. package/dist/cjs/locales/nl/parsers/NLCasualDateParser.js +22 -8
  187. package/dist/cjs/locales/nl/parsers/NLCasualDateParser.js.map +1 -1
  188. package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js +4 -4
  189. package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
  190. package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js +2 -2
  191. package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
  192. package/dist/cjs/locales/nl/parsers/NLCasualYearMonthDayParser.js +1 -1
  193. package/dist/cjs/locales/nl/parsers/NLCasualYearMonthDayParser.js.map +1 -1
  194. package/dist/cjs/locales/nl/parsers/NLMonthNameMiddleEndianParser.js +5 -5
  195. package/dist/cjs/locales/nl/parsers/NLMonthNameMiddleEndianParser.js.map +1 -1
  196. package/dist/cjs/locales/nl/parsers/NLMonthNameParser.js +3 -3
  197. package/dist/cjs/locales/nl/parsers/NLMonthNameParser.js.map +1 -1
  198. package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js +2 -2
  199. package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
  200. package/dist/cjs/locales/nl/parsers/NLTimeExpressionParser.js.map +1 -1
  201. package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +2 -2
  202. package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
  203. package/dist/cjs/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +2 -2
  204. package/dist/cjs/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -1
  205. package/dist/cjs/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +1 -1
  206. package/dist/cjs/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -1
  207. package/dist/cjs/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -1
  208. package/dist/cjs/locales/nl/parsers/NLTimeUnitWithinFormatParser.js.map +1 -1
  209. package/dist/cjs/locales/nl/parsers/NLWeekdayParser.js +2 -2
  210. package/dist/cjs/locales/nl/parsers/NLWeekdayParser.js.map +1 -1
  211. package/dist/cjs/locales/pt/constants.js +2 -2
  212. package/dist/cjs/locales/pt/constants.js.map +1 -1
  213. package/dist/cjs/locales/pt/index.js +6 -6
  214. package/dist/cjs/locales/pt/index.js.map +1 -1
  215. package/dist/cjs/locales/pt/parsers/PTCasualDateParser.js +22 -8
  216. package/dist/cjs/locales/pt/parsers/PTCasualDateParser.js.map +1 -1
  217. package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js +2 -2
  218. package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
  219. package/dist/cjs/locales/pt/parsers/PTMonthNameLittleEndianParser.js +3 -3
  220. package/dist/cjs/locales/pt/parsers/PTMonthNameLittleEndianParser.js.map +1 -1
  221. package/dist/cjs/locales/pt/parsers/PTWeekdayParser.js +2 -2
  222. package/dist/cjs/locales/pt/parsers/PTWeekdayParser.js.map +1 -1
  223. package/dist/cjs/locales/ru/constants.d.ts +1 -1
  224. package/dist/cjs/locales/ru/constants.js +10 -10
  225. package/dist/cjs/locales/ru/constants.js.map +1 -1
  226. package/dist/cjs/locales/ru/index.js +6 -6
  227. package/dist/cjs/locales/ru/index.js.map +1 -1
  228. package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js +22 -8
  229. package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
  230. package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js +24 -10
  231. package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
  232. package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js +5 -5
  233. package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
  234. package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js +3 -3
  235. package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
  236. package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js +2 -2
  237. package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
  238. package/dist/cjs/locales/ru/parsers/RUTimeExpressionParser.js.map +1 -1
  239. package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +2 -2
  240. package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
  241. package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +2 -2
  242. package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
  243. package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +1 -1
  244. package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
  245. package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js +2 -2
  246. package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
  247. package/dist/cjs/locales/uk/constants.d.ts +1 -1
  248. package/dist/cjs/locales/uk/constants.js +10 -10
  249. package/dist/cjs/locales/uk/constants.js.map +1 -1
  250. package/dist/cjs/locales/uk/index.js +6 -6
  251. package/dist/cjs/locales/uk/index.js.map +1 -1
  252. package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js +22 -8
  253. package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js.map +1 -1
  254. package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js +24 -10
  255. package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
  256. package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js +5 -5
  257. package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -1
  258. package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js +3 -3
  259. package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js.map +1 -1
  260. package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js +2 -2
  261. package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
  262. package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -1
  263. package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +2 -2
  264. package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -1
  265. package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +2 -2
  266. package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -1
  267. package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +1 -1
  268. package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -1
  269. package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js +2 -2
  270. package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js.map +1 -1
  271. package/dist/cjs/locales/zh/hans/constants.js +3 -3
  272. package/dist/cjs/locales/zh/hans/constants.js.map +1 -1
  273. package/dist/cjs/locales/zh/hans/index.js +6 -6
  274. package/dist/cjs/locales/zh/hans/index.js.map +1 -1
  275. package/dist/cjs/locales/zh/hans/parsers/ZHHansCasualDateParser.js +1 -1
  276. package/dist/cjs/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
  277. package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js +4 -4
  278. package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
  279. package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +2 -2
  280. package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
  281. package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +1 -1
  282. package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
  283. package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +7 -7
  284. package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
  285. package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js +1 -1
  286. package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
  287. package/dist/cjs/locales/zh/hant/constants.js +3 -3
  288. package/dist/cjs/locales/zh/hant/constants.js.map +1 -1
  289. package/dist/cjs/locales/zh/hant/index.js +6 -6
  290. package/dist/cjs/locales/zh/hant/index.js.map +1 -1
  291. package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js +1 -1
  292. package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
  293. package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js +4 -4
  294. package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
  295. package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +2 -2
  296. package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
  297. package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +1 -1
  298. package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
  299. package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +7 -7
  300. package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
  301. package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js +1 -1
  302. package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
  303. package/dist/cjs/locales/zh/index.js +28 -14
  304. package/dist/cjs/locales/zh/index.js.map +1 -1
  305. package/dist/cjs/results.d.ts +1 -0
  306. package/dist/cjs/results.js +22 -17
  307. package/dist/cjs/results.js.map +1 -1
  308. package/dist/cjs/timezone.js +6 -6
  309. package/dist/cjs/timezone.js.map +1 -1
  310. package/dist/cjs/types.d.ts +2 -2
  311. package/dist/cjs/types.js +3 -3
  312. package/dist/cjs/types.js.map +1 -1
  313. package/dist/cjs/utils/dates.d.ts +3 -0
  314. package/dist/cjs/utils/dates.js +16 -0
  315. package/dist/cjs/utils/dates.js.map +1 -0
  316. package/dist/cjs/utils/dayjs.js +6 -7
  317. package/dist/cjs/utils/dayjs.js.map +1 -1
  318. package/dist/cjs/utils/pattern.d.ts +1 -1
  319. package/dist/cjs/utils/pattern.js +3 -4
  320. package/dist/cjs/utils/pattern.js.map +1 -1
  321. package/dist/cjs/utils/timeunits.d.ts +1 -1
  322. package/dist/cjs/utils/timeunits.js +2 -3
  323. package/dist/cjs/utils/timeunits.js.map +1 -1
  324. package/dist/esm/calculation/mergingCalculation.js.map +1 -1
  325. package/dist/esm/calculation/years.js.map +1 -1
  326. package/dist/esm/chrono.js +7 -1
  327. package/dist/esm/chrono.js.map +1 -1
  328. package/dist/esm/common/abstractRefiners.js.map +1 -1
  329. package/dist/esm/common/calculation/weekdays.js.map +1 -1
  330. package/dist/esm/common/casualReferences.js +8 -10
  331. package/dist/esm/common/casualReferences.js.map +1 -1
  332. package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js +2 -4
  333. package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
  334. package/dist/esm/common/parsers/AbstractTimeExpressionParser.js +7 -6
  335. package/dist/esm/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
  336. package/dist/esm/common/parsers/ISOFormatParser.js.map +1 -1
  337. package/dist/esm/common/parsers/SlashDateFormatParser.js +2 -0
  338. package/dist/esm/common/parsers/SlashDateFormatParser.js.map +1 -1
  339. package/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
  340. package/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js +1 -0
  341. package/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js.map +1 -1
  342. package/dist/esm/common/refiners/ExtractTimezoneOffsetRefiner.js.map +1 -1
  343. package/dist/esm/common/refiners/ForwardDateRefiner.js +14 -12
  344. package/dist/esm/common/refiners/ForwardDateRefiner.js.map +1 -1
  345. package/dist/esm/common/refiners/MergeWeekdayComponentRefiner.js.map +1 -1
  346. package/dist/esm/common/refiners/OverlapRemovalRefiner.js.map +1 -1
  347. package/dist/esm/common/refiners/UnlikelyFormatFilter.js +1 -0
  348. package/dist/esm/common/refiners/UnlikelyFormatFilter.js.map +1 -1
  349. package/dist/esm/debugging.d.ts +2 -2
  350. package/dist/esm/debugging.js +1 -0
  351. package/dist/esm/debugging.js.map +1 -1
  352. package/dist/esm/locales/de/constants.js.map +1 -1
  353. package/dist/esm/locales/de/parsers/DECasualDateParser.js.map +1 -1
  354. package/dist/esm/locales/de/parsers/DECasualTimeParser.js.map +1 -1
  355. package/dist/esm/locales/de/parsers/DEMonthNameLittleEndianParser.js.map +1 -1
  356. package/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js.map +1 -1
  357. package/dist/esm/locales/de/parsers/DETimeExpressionParser.js.map +1 -1
  358. package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
  359. package/dist/esm/locales/de/parsers/DEWeekdayParser.js.map +1 -1
  360. package/dist/esm/locales/en/constants.js.map +1 -1
  361. package/dist/esm/locales/en/parsers/ENCasualDateParser.js.map +1 -1
  362. package/dist/esm/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
  363. package/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js.map +1 -1
  364. package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js +1 -0
  365. package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js.map +1 -1
  366. package/dist/esm/locales/en/parsers/ENMonthNameParser.js.map +1 -1
  367. package/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
  368. package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
  369. package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js +1 -0
  370. package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
  371. package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -0
  372. package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
  373. package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js +1 -0
  374. package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
  375. package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -0
  376. package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
  377. package/dist/esm/locales/en/parsers/ENWeekdayParser.js.map +1 -1
  378. package/dist/esm/locales/en/parsers/ENYearMonthDayParser.js +1 -0
  379. package/dist/esm/locales/en/parsers/ENYearMonthDayParser.js.map +1 -1
  380. package/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js +3 -0
  381. package/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js.map +1 -1
  382. package/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
  383. package/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
  384. package/dist/esm/locales/en/refiners/ENUnlikelyFormatFilter.js.map +1 -1
  385. package/dist/esm/locales/es/constants.js.map +1 -1
  386. package/dist/esm/locales/es/parsers/ESCasualDateParser.js.map +1 -1
  387. package/dist/esm/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
  388. package/dist/esm/locales/es/parsers/ESMonthNameLittleEndianParser.js.map +1 -1
  389. package/dist/esm/locales/es/parsers/ESWeekdayParser.js.map +1 -1
  390. package/dist/esm/locales/fr/constants.js.map +1 -1
  391. package/dist/esm/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
  392. package/dist/esm/locales/fr/parsers/FRCasualTimeParser.js.map +1 -1
  393. package/dist/esm/locales/fr/parsers/FRMonthNameLittleEndianParser.js.map +1 -1
  394. package/dist/esm/locales/fr/parsers/FRSpecificTimeExpressionParser.js.map +1 -1
  395. package/dist/esm/locales/fr/parsers/FRTimeExpressionParser.js.map +1 -1
  396. package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
  397. package/dist/esm/locales/fr/parsers/FRWeekdayParser.js.map +1 -1
  398. package/dist/esm/locales/it/constants.js.map +1 -1
  399. package/dist/esm/locales/it/parsers/ITCasualDateParser.js.map +1 -1
  400. package/dist/esm/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
  401. package/dist/esm/locales/it/parsers/ITCasualYearMonthDayParser.js.map +1 -1
  402. package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -1
  403. package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -1
  404. package/dist/esm/locales/it/parsers/ITMonthNameParser.js.map +1 -1
  405. package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
  406. package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
  407. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js +1 -0
  408. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
  409. package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
  410. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js +1 -0
  411. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
  412. package/dist/esm/locales/it/parsers/ITWeekdayParser.js.map +1 -1
  413. package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
  414. package/dist/esm/locales/ja/constants.d.ts +24 -0
  415. package/dist/esm/locales/ja/constants.js +36 -0
  416. package/dist/esm/locales/ja/constants.js.map +1 -1
  417. package/dist/esm/locales/ja/index.d.ts +1 -1
  418. package/dist/esm/locales/ja/index.js +27 -7
  419. package/dist/esm/locales/ja/index.js.map +1 -1
  420. package/dist/esm/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
  421. package/dist/esm/locales/ja/parsers/JPSlashDateFormatParser.d.ts +6 -0
  422. package/dist/esm/locales/ja/parsers/JPSlashDateFormatParser.js +35 -0
  423. package/dist/esm/locales/ja/parsers/JPSlashDateFormatParser.js.map +1 -0
  424. package/dist/esm/locales/ja/parsers/JPStandardParser.js.map +1 -1
  425. package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.d.ts +6 -0
  426. package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js +258 -0
  427. package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -0
  428. package/dist/esm/locales/ja/parsers/JPWeekdayParser.d.ts +6 -0
  429. package/dist/esm/locales/ja/parsers/JPWeekdayParser.js +27 -0
  430. package/dist/esm/locales/ja/parsers/JPWeekdayParser.js.map +1 -0
  431. package/dist/esm/locales/ja/parsers/JPWeekdayWithParenthesesParser.d.ts +6 -0
  432. package/dist/esm/locales/ja/parsers/JPWeekdayWithParenthesesParser.js +16 -0
  433. package/dist/esm/locales/ja/parsers/JPWeekdayWithParenthesesParser.js.map +1 -0
  434. package/dist/esm/locales/ja/refiners/JPMergeDateRangeRefiner.js +1 -1
  435. package/dist/esm/locales/ja/refiners/JPMergeDateRangeRefiner.js.map +1 -1
  436. package/dist/esm/locales/ja/refiners/JPMergeDateTimeRefiner.d.ts +4 -0
  437. package/dist/esm/locales/ja/refiners/JPMergeDateTimeRefiner.js +7 -0
  438. package/dist/esm/locales/ja/refiners/JPMergeDateTimeRefiner.js.map +1 -0
  439. package/dist/esm/locales/ja/refiners/JPMergeWeekdayComponentRefiner.d.ts +6 -0
  440. package/dist/esm/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js +19 -0
  441. package/dist/esm/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js.map +1 -0
  442. package/dist/esm/locales/nl/constants.js.map +1 -1
  443. package/dist/esm/locales/nl/parsers/NLCasualDateParser.js.map +1 -1
  444. package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
  445. package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
  446. package/dist/esm/locales/nl/parsers/NLCasualYearMonthDayParser.js.map +1 -1
  447. package/dist/esm/locales/nl/parsers/NLMonthNameMiddleEndianParser.js.map +1 -1
  448. package/dist/esm/locales/nl/parsers/NLMonthNameParser.js.map +1 -1
  449. package/dist/esm/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
  450. package/dist/esm/locales/nl/parsers/NLTimeExpressionParser.js.map +1 -1
  451. package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +1 -0
  452. package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
  453. package/dist/esm/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -1
  454. package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +1 -0
  455. package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -1
  456. package/dist/esm/locales/nl/parsers/NLWeekdayParser.js.map +1 -1
  457. package/dist/esm/locales/pt/constants.js.map +1 -1
  458. package/dist/esm/locales/pt/parsers/PTCasualDateParser.js.map +1 -1
  459. package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
  460. package/dist/esm/locales/pt/parsers/PTMonthNameLittleEndianParser.js.map +1 -1
  461. package/dist/esm/locales/pt/parsers/PTWeekdayParser.js.map +1 -1
  462. package/dist/esm/locales/ru/constants.d.ts +1 -1
  463. package/dist/esm/locales/ru/constants.js.map +1 -1
  464. package/dist/esm/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
  465. package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
  466. package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
  467. package/dist/esm/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
  468. package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
  469. package/dist/esm/locales/ru/parsers/RUTimeExpressionParser.js.map +1 -1
  470. package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
  471. package/dist/esm/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
  472. package/dist/esm/locales/uk/constants.d.ts +1 -1
  473. package/dist/esm/locales/uk/constants.js.map +1 -1
  474. package/dist/esm/locales/uk/parsers/UKCasualDateParser.js.map +1 -1
  475. package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
  476. package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -1
  477. package/dist/esm/locales/uk/parsers/UKMonthNameParser.js.map +1 -1
  478. package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
  479. package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -1
  480. package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -1
  481. package/dist/esm/locales/uk/parsers/UKWeekdayParser.js.map +1 -1
  482. package/dist/esm/locales/zh/hans/constants.js.map +1 -1
  483. package/dist/esm/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
  484. package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
  485. package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
  486. package/dist/esm/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
  487. package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
  488. package/dist/esm/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
  489. package/dist/esm/locales/zh/hant/constants.js.map +1 -1
  490. package/dist/esm/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
  491. package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
  492. package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
  493. package/dist/esm/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
  494. package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
  495. package/dist/esm/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
  496. package/dist/esm/results.d.ts +1 -0
  497. package/dist/esm/results.js +29 -14
  498. package/dist/esm/results.js.map +1 -1
  499. package/dist/esm/timezone.js.map +1 -1
  500. package/dist/esm/types.d.ts +2 -2
  501. package/dist/esm/utils/dates.d.ts +3 -0
  502. package/dist/esm/utils/dates.js +12 -0
  503. package/dist/esm/utils/dates.js.map +1 -0
  504. package/dist/esm/utils/dayjs.js.map +1 -1
  505. package/dist/esm/utils/pattern.d.ts +1 -1
  506. package/dist/esm/utils/pattern.js.map +1 -1
  507. package/dist/esm/utils/timeunits.d.ts +1 -1
  508. package/dist/esm/utils/timeunits.js.map +1 -1
  509. package/package.json +16 -16
  510. package/src/common/casualReferences.ts +8 -10
  511. package/src/common/refiners/ForwardDateRefiner.ts +17 -11
  512. package/src/locales/en/refiners/ENExtractYearSuffixRefiner.ts +4 -4
  513. package/src/locales/ja/constants.ts +40 -0
  514. package/src/locales/ja/index.ts +35 -7
  515. package/src/locales/ja/parsers/JPSlashDateFormatParser.ts +53 -0
  516. package/src/locales/ja/parsers/JPTimeExpressionParser.ts +281 -0
  517. package/src/locales/ja/parsers/JPWeekdayParser.ts +35 -0
  518. package/src/locales/ja/parsers/JPWeekdayWithParenthesesParser.ts +25 -0
  519. package/src/locales/ja/refiners/JPMergeDateRangeRefiner.ts +2 -2
  520. package/src/locales/ja/refiners/JPMergeDateTimeRefiner.ts +7 -0
  521. package/src/locales/ja/refiners/JPMergeWeekdayComponentRefiner.ts +30 -0
  522. package/src/results.ts +18 -13
  523. package/src/utils/dates.ts +24 -0
  524. package/src/utils/dayjs.ts +6 -0
  525. package/test/de/de_dash.test.ts +19 -3
  526. package/test/en/en_casual.test.ts +4 -1
  527. package/test/en/en_relative.test.ts +126 -39
  528. package/test/en/en_slash.test.ts +8 -0
  529. package/test/en/en_time_exp.test.ts +27 -18
  530. package/test/ja/ja_slash_date_format.test.ts +60 -0
  531. package/test/ja/ja_time_exp.test.ts +244 -0
  532. package/test/ja/ja_weekday.test.ts +183 -0
  533. package/test/nl/nl_relative.test.ts +33 -17
  534. package/test/result.test.ts +24 -0
  535. package/test/system.test.ts +1 -1
  536. package/test/system_timezone.test.ts +20 -4
@@ -10,17 +10,18 @@ export default class ENExtractYearSuffixRefiner implements Refiner {
10
10
  if (!result.start.isDateWithUnknownYear()) {
11
11
  return;
12
12
  }
13
-
14
13
  const suffix = context.text.substring(result.index + result.text.length);
15
14
  const match = YEAR_SUFFIX_PATTERN.exec(suffix);
16
15
  if (!match) {
17
16
  return;
18
17
  }
19
-
18
+ // If the suffix match is just a short number, e.g. "14/4 90", don't assume it year.
19
+ if (match[0].trim().length <= 3) {
20
+ return;
21
+ }
20
22
  context.debug(() => {
21
23
  console.log(`Extracting year: '${match[0]}' into : ${result}`);
22
24
  });
23
-
24
25
  const year = parseYear(match[YEAR_GROUP]);
25
26
  if (result.end != null) {
26
27
  result.end.assign("year", year);
@@ -28,7 +29,6 @@ export default class ENExtractYearSuffixRefiner implements Refiner {
28
29
  result.start.assign("year", year);
29
30
  result.text += match[0];
30
31
  });
31
-
32
32
  return results;
33
33
  }
34
34
  }
@@ -1,3 +1,28 @@
1
+ export const NUMBER = {
2
+ "零": 0,
3
+ "〇": 0,
4
+ "一": 1,
5
+ "二": 2,
6
+ "三": 3,
7
+ "四": 4,
8
+ "五": 5,
9
+ "六": 6,
10
+ "七": 7,
11
+ "八": 8,
12
+ "九": 9,
13
+ "十": 10,
14
+ };
15
+
16
+ export const WEEKDAY_OFFSET = {
17
+ "日": 0,
18
+ "月": 1,
19
+ "火": 2,
20
+ "水": 3,
21
+ "木": 4,
22
+ "金": 5,
23
+ "土": 6,
24
+ };
25
+
1
26
  /**
2
27
  * to-hankaku.js
3
28
  * convert to ascii code strings.
@@ -22,3 +47,18 @@ export function toHankaku(text) {
22
47
  function alphaNum(token) {
23
48
  return String.fromCharCode(token.charCodeAt(0) - 65248);
24
49
  }
50
+
51
+ export function jaStringToNumber(text: string) {
52
+ let number = 0;
53
+
54
+ for (let i = 0; i < text.length; i++) {
55
+ const char = text[i];
56
+ if (char === "十") {
57
+ number = number === 0 ? NUMBER[char] : number * NUMBER[char];
58
+ } else {
59
+ number += NUMBER[char];
60
+ }
61
+ }
62
+
63
+ return number;
64
+ }
@@ -7,17 +7,25 @@
7
7
  import JPStandardParser from "./parsers/JPStandardParser";
8
8
  import JPMergeDateRangeRefiner from "./refiners/JPMergeDateRangeRefiner";
9
9
  import JPCasualDateParser from "./parsers/JPCasualDateParser";
10
+ import JPWeekdayParser from "./parsers/JPWeekdayParser";
11
+ import JPSlashDateFormatParser from "./parsers/JPSlashDateFormatParser";
12
+ import JPTimeExpressionParser from "./parsers/JPTimeExpressionParser";
13
+ import JPMergeDateTimeRefiner from "./refiners/JPMergeDateTimeRefiner";
10
14
 
11
15
  import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
12
16
  import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
13
17
  import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
18
+ import JPMergeWeekdayComponentRefiner from "./refiners/JPMergeWeekdayComponentRefiner";
19
+ import JPWeekdayWithParenthesesParser from "./parsers/JPWeekdayWithParenthesesParser";
20
+ import { includeCommonConfiguration } from "../../configurations";
21
+ import MergeWeekdayComponentRefiner from "../../common/refiners/MergeWeekdayComponentRefiner";
14
22
 
15
23
  export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
16
24
  export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
17
25
 
18
26
  // Shortcuts
19
27
  export const casual = new Chrono(createCasualConfiguration());
20
- export const strict = new Chrono(createConfiguration());
28
+ export const strict = new Chrono(createConfiguration(true));
21
29
 
22
30
  export function parse(text: string, ref?: ParsingReference | Date, option?: ParsingOption): ParsedResult[] {
23
31
  return casual.parse(text, ref, option);
@@ -31,7 +39,7 @@ export function parseDate(text: string, ref?: ParsingReference | Date, option?:
31
39
  * @ignore (to be documented later)
32
40
  */
33
41
  export function createCasualConfiguration(): Configuration {
34
- const option = createConfiguration();
42
+ const option = createConfiguration(false);
35
43
  option.parsers.unshift(new JPCasualDateParser());
36
44
  return option;
37
45
  }
@@ -39,9 +47,29 @@ export function createCasualConfiguration(): Configuration {
39
47
  /**
40
48
  * @ignore (to be documented later)
41
49
  */
42
- export function createConfiguration(): Configuration {
43
- return {
44
- parsers: [new JPStandardParser()],
45
- refiners: [new JPMergeDateRangeRefiner()],
46
- };
50
+ export function createConfiguration(strictMode = true): Configuration {
51
+ const configuration = includeCommonConfiguration(
52
+ {
53
+ parsers: [
54
+ new JPStandardParser(),
55
+ new JPWeekdayParser(),
56
+ new JPWeekdayWithParenthesesParser(),
57
+ new JPSlashDateFormatParser(),
58
+ new JPTimeExpressionParser(),
59
+ ],
60
+ refiners: [
61
+ new JPMergeWeekdayComponentRefiner(), // Note: should be before JPMergeDateTimeRefiner and JPMergeDateRangeRefiner
62
+ new JPMergeDateTimeRefiner(),
63
+ new JPMergeDateRangeRefiner(),
64
+ ],
65
+ },
66
+ strictMode
67
+ );
68
+
69
+ // Note: Remove because it is not used in Japanese grammar
70
+ configuration.refiners = configuration.refiners.filter(
71
+ (refiner) => !(refiner instanceof MergeWeekdayComponentRefiner)
72
+ );
73
+
74
+ return configuration;
47
75
  }
@@ -0,0 +1,53 @@
1
+ import { Parser, ParsingContext } from "../../../chrono";
2
+ import { ParsingComponents } from "../../../results";
3
+ import { findMostLikelyADYear, findYearClosestToRef } from "../../../calculation/years";
4
+ import { toHankaku } from "../constants";
5
+
6
+ /**
7
+ * Date format with slash "/" between numbers. YYYY/MM/DD or MM/DD
8
+ * Big-endian slash format is used in Japan.
9
+ * For examples:
10
+ * - 7/31
11
+ * - 2020/7/12
12
+ */
13
+ const PATTERN = new RegExp(
14
+ "([0-90-9]{4}[\\/|\\/])?" + "([0-10-1]{0,1}[0-90-9]{1})(?:[\\/|\\/]([0-30-3]{0,1}[0-90-9]{1}))",
15
+ "i"
16
+ );
17
+
18
+ const YEAR_GROUP = 1;
19
+ const MONTH_GROUP = 2;
20
+ const DAY_GROUP = 3;
21
+
22
+ export default class JPSlashDateFormatParser implements Parser {
23
+ pattern(): RegExp {
24
+ return PATTERN;
25
+ }
26
+
27
+ extract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
28
+ const result = context.createParsingComponents();
29
+ const month = parseInt(toHankaku(match[MONTH_GROUP]));
30
+ const day = parseInt(toHankaku(match[DAY_GROUP]));
31
+ if (month < 1 || month > 12) {
32
+ return null;
33
+ }
34
+
35
+ if (day < 1 || day > 31) {
36
+ return null;
37
+ }
38
+
39
+ result.assign("day", day);
40
+ result.assign("month", month);
41
+
42
+ if (match[YEAR_GROUP]) {
43
+ const rawYearNumber = parseInt(toHankaku(match[YEAR_GROUP]));
44
+ const year = findMostLikelyADYear(rawYearNumber);
45
+ result.assign("year", year);
46
+ } else {
47
+ const year = findYearClosestToRef(context.reference.instant, day, month);
48
+ result.imply("year", year);
49
+ }
50
+
51
+ return result;
52
+ }
53
+ }
@@ -0,0 +1,281 @@
1
+ import { ParsingContext } from "../../../chrono";
2
+ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
3
+ import { Meridiem } from "../../../types";
4
+ import { NUMBER, jaStringToNumber, toHankaku } from "../constants";
5
+
6
+ const FIRST_REG_PATTERN = new RegExp(
7
+ "(?:" +
8
+ "(午前|午後|A.M.|P.M.|AM|PM)" +
9
+ ")?" +
10
+ "(?:[\\s,,、]*)" +
11
+ "(?:([0-90-9]+|[" +
12
+ Object.keys(NUMBER).join("") +
13
+ "]+)(?:\\s*)(?:時|:|:)" +
14
+ "(?:\\s*)" +
15
+ "([0-90-9]+|半|[" +
16
+ Object.keys(NUMBER).join("") +
17
+ "]+)?(?:\\s*)(?:分|:|:)?" +
18
+ "(?:\\s*)" +
19
+ "([0-90-9]+|[" +
20
+ Object.keys(NUMBER).join("") +
21
+ "]+)?(?:\\s*)(?:秒)?)" +
22
+ "(?:\\s*(A.M.|P.M.|AM?|PM?))?",
23
+ "i"
24
+ );
25
+
26
+ const SECOND_REG_PATTERN = new RegExp(
27
+ "(?:^\\s*(?:から|\\-|\\–|\\-|\\~|\\〜)\\s*)" +
28
+ "(?:" +
29
+ "(午前|午後|A.M.|P.M.|AM|PM)" +
30
+ ")?" +
31
+ "(?:[\\s,,、]*)" +
32
+ "(?:([0-90-9]+|[" +
33
+ Object.keys(NUMBER).join("") +
34
+ "]+)(?:\\s*)(?:時|:|:)" +
35
+ "(?:\\s*)" +
36
+ "([0-90-9]+|半|[" +
37
+ Object.keys(NUMBER).join("") +
38
+ "]+)?(?:\\s*)(?:分|:|:)?" +
39
+ "(?:\\s*)" +
40
+ "([0-90-9]+|[" +
41
+ Object.keys(NUMBER).join("") +
42
+ "]+)?(?:\\s*)(?:秒)?)" +
43
+ "(?:\\s*(A.M.|P.M.|AM?|PM?))?",
44
+ "i"
45
+ );
46
+
47
+ const AM_PM_HOUR_GROUP_1 = 1;
48
+ const HOUR_GROUP = 2;
49
+ const MINUTE_GROUP = 3;
50
+ const SECOND_GROUP = 4;
51
+ const AM_PM_HOUR_GROUP_2 = 5;
52
+
53
+ export default class JPTimeExpressionParser extends AbstractParserWithWordBoundaryChecking {
54
+ innerPattern(): RegExp {
55
+ return FIRST_REG_PATTERN;
56
+ }
57
+
58
+ innerExtract(context: ParsingContext, match: RegExpMatchArray) {
59
+ // This pattern can be overlaped Ex. [12] AM, 1[2] AM
60
+ if (match.index > 0 && context.text[match.index - 1].match(/\w/)) {
61
+ return null;
62
+ }
63
+
64
+ const result = context.createParsingResult(match.index, match[0]);
65
+
66
+ let hour = 0;
67
+ let minute = 0;
68
+ let meridiem = -1;
69
+
70
+ // ----- Second
71
+ if (match[SECOND_GROUP]) {
72
+ let second = parseInt(toHankaku(match[SECOND_GROUP]));
73
+ if (isNaN(second)) {
74
+ second = jaStringToNumber(match[SECOND_GROUP]);
75
+ }
76
+ if (second >= 60) return null;
77
+ result.start.assign("second", second);
78
+ }
79
+
80
+ hour = parseInt(toHankaku(match[HOUR_GROUP]));
81
+ if (isNaN(hour)) {
82
+ hour = jaStringToNumber(match[HOUR_GROUP]);
83
+ }
84
+
85
+ // ----- Minutes
86
+ if (match[MINUTE_GROUP]) {
87
+ if (match[MINUTE_GROUP] === "半") {
88
+ minute = 30;
89
+ } else {
90
+ minute = parseInt(toHankaku(match[MINUTE_GROUP]));
91
+ if (isNaN(minute)) {
92
+ minute = jaStringToNumber(match[MINUTE_GROUP]);
93
+ }
94
+ }
95
+ } else if (hour > 100) {
96
+ minute = hour % 100;
97
+ hour = Math.floor(hour / 100);
98
+ }
99
+
100
+ if (minute >= 60) {
101
+ return null;
102
+ }
103
+
104
+ if (hour > 24) {
105
+ return null;
106
+ }
107
+ if (hour >= 12) {
108
+ meridiem = Meridiem.PM;
109
+ }
110
+
111
+ // ----- AM & PM
112
+ if (match[AM_PM_HOUR_GROUP_1]) {
113
+ if (hour > 12) return null;
114
+ const AMPMString = match[AM_PM_HOUR_GROUP_1];
115
+ const FirstAMPMString = AMPMString[0].toLowerCase();
116
+ if (AMPMString === "午前" || FirstAMPMString === "a") {
117
+ meridiem = Meridiem.AM;
118
+ if (hour === 12) hour = 0;
119
+ } else if (AMPMString === "午後" || FirstAMPMString === "p") {
120
+ meridiem = Meridiem.PM;
121
+ if (hour != 12) hour += 12;
122
+ }
123
+ } else if (match[AM_PM_HOUR_GROUP_2]) {
124
+ if (hour > 12) return null;
125
+ const ampm = match[AM_PM_HOUR_GROUP_2][0].toLowerCase();
126
+ if (ampm === "a") {
127
+ meridiem = Meridiem.AM;
128
+ if (hour === 12) hour = 0;
129
+ }
130
+
131
+ if (ampm === "p") {
132
+ meridiem = Meridiem.PM;
133
+ if (hour != 12) hour += 12;
134
+ }
135
+ }
136
+
137
+ result.start.assign("hour", hour);
138
+ result.start.assign("minute", minute);
139
+
140
+ if (meridiem >= 0) {
141
+ result.start.assign("meridiem", meridiem);
142
+ } else {
143
+ if (hour < 12) {
144
+ result.start.imply("meridiem", 0);
145
+ } else {
146
+ result.start.imply("meridiem", 1);
147
+ }
148
+ }
149
+
150
+ // =============================================================================================
151
+ // Extracting the 'to' chunk
152
+ // =============================================================================================
153
+
154
+ match = SECOND_REG_PATTERN.exec(context.text.substring(result.index + result.text.length));
155
+ if (!match) {
156
+ // Not accept number only result
157
+ if (result.text.match(/^\d+$/)) {
158
+ return null;
159
+ }
160
+ return result;
161
+ }
162
+
163
+ result.end = context.createParsingComponents();
164
+
165
+ hour = 0;
166
+ minute = 0;
167
+ meridiem = -1;
168
+
169
+ // ----- Second
170
+ if (match[SECOND_GROUP]) {
171
+ let second = parseInt(toHankaku(match[SECOND_GROUP]));
172
+ if (isNaN(second)) {
173
+ second = jaStringToNumber(match[SECOND_GROUP]);
174
+ }
175
+
176
+ if (second >= 60) return null;
177
+ result.end.assign("second", second);
178
+ }
179
+
180
+ hour = parseInt(toHankaku(match[HOUR_GROUP]));
181
+ if (isNaN(hour)) {
182
+ hour = jaStringToNumber(match[HOUR_GROUP]);
183
+ }
184
+
185
+ // ----- Minutes
186
+ if (match[MINUTE_GROUP]) {
187
+ if (match[MINUTE_GROUP] === "半") {
188
+ minute = 30;
189
+ } else {
190
+ minute = parseInt(toHankaku(match[MINUTE_GROUP]));
191
+ if (isNaN(minute)) {
192
+ minute = jaStringToNumber(match[MINUTE_GROUP]);
193
+ }
194
+ }
195
+ } else if (hour > 100) {
196
+ minute = hour % 100;
197
+ hour = Math.floor(hour / 100);
198
+ }
199
+
200
+ if (minute >= 60) {
201
+ return null;
202
+ }
203
+
204
+ if (hour > 24) {
205
+ return null;
206
+ }
207
+ if (hour >= 12) {
208
+ meridiem = Meridiem.PM;
209
+ }
210
+
211
+ // ----- AM & PM
212
+ if (match[AM_PM_HOUR_GROUP_1]) {
213
+ if (hour > 12) return null;
214
+ const AMPMString = match[AM_PM_HOUR_GROUP_1];
215
+ const FirstAMPMString = AMPMString[0].toLowerCase();
216
+ if (AMPMString === "午前" || FirstAMPMString === "a") {
217
+ meridiem = Meridiem.AM;
218
+ if (hour === 12) hour = 0;
219
+ } else if (AMPMString === "午後" || FirstAMPMString === "p") {
220
+ meridiem = Meridiem.PM;
221
+ if (hour != 12) hour += 12;
222
+ }
223
+
224
+ if (!result.start.isCertain("meridiem")) {
225
+ if (meridiem === Meridiem.AM) {
226
+ result.start.imply("meridiem", Meridiem.AM);
227
+
228
+ if (result.start.get("hour") === 12) {
229
+ result.start.assign("hour", 0);
230
+ }
231
+ } else {
232
+ result.start.imply("meridiem", 1);
233
+
234
+ if (result.start.get("hour") != 12) {
235
+ result.start.assign("hour", result.start.get("hour") + 12);
236
+ }
237
+ }
238
+ }
239
+ } else if (match[AM_PM_HOUR_GROUP_2]) {
240
+ if (hour > 12) return null;
241
+ const ampm = match[AM_PM_HOUR_GROUP_2][0].toLowerCase();
242
+ if (ampm === "a") {
243
+ meridiem = Meridiem.AM;
244
+ if (hour === 12) hour = 0;
245
+ }
246
+
247
+ if (ampm === "p") {
248
+ meridiem = Meridiem.PM;
249
+ if (hour != 12) hour += 12;
250
+ }
251
+ }
252
+
253
+ result.text = result.text + match[0];
254
+ result.end.assign("hour", hour);
255
+ result.end.assign("minute", minute);
256
+ if (meridiem >= 0) {
257
+ result.end.assign("meridiem", meridiem);
258
+ } else {
259
+ const startAtPM = result.start.isCertain("meridiem") && result.start.get("hour") > 12;
260
+ if (startAtPM) {
261
+ if (result.start.get("hour") - 12 > hour) {
262
+ // 10pm - 1 (am)
263
+ result.end.imply("meridiem", Meridiem.AM);
264
+ } else if (hour <= 12) {
265
+ result.end.assign("hour", hour + 12);
266
+ result.end.assign("meridiem", Meridiem.PM);
267
+ }
268
+ } else if (hour > 12) {
269
+ result.end.imply("meridiem", Meridiem.PM);
270
+ } else if (hour <= 12) {
271
+ result.end.imply("meridiem", Meridiem.AM);
272
+ }
273
+ }
274
+
275
+ if (result.end.date().getTime() < result.start.date().getTime()) {
276
+ result.end.imply("day", result.end.get("day") + 1);
277
+ }
278
+
279
+ return result;
280
+ }
281
+ }
@@ -0,0 +1,35 @@
1
+ import { ParsingContext, Parser } from "../../../chrono";
2
+ import { ParsingComponents } from "../../../results";
3
+ import { WEEKDAY_OFFSET } from "../constants";
4
+ import { createParsingComponentsAtWeekday } from "../../../common/calculation/weekdays";
5
+
6
+ const PATTERN = new RegExp(
7
+ "((?<prefix>前の|次の|今週))?(?<weekday>" + Object.keys(WEEKDAY_OFFSET).join("|") + ")(?:曜日|曜)",
8
+ "i"
9
+ );
10
+
11
+ export default class JPWeekdayParser implements Parser {
12
+ pattern(): RegExp {
13
+ return PATTERN;
14
+ }
15
+
16
+ extract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
17
+ const dayOfWeek = match.groups.weekday;
18
+ const offset = WEEKDAY_OFFSET[dayOfWeek];
19
+ if (offset === undefined) return null;
20
+
21
+ const prefix = match.groups.prefix || "";
22
+
23
+ let modifier = null;
24
+ if (prefix.match(/前の/)) {
25
+ modifier = "last";
26
+ } else if (prefix.match(/次の/)) {
27
+ modifier = "next";
28
+ } else if (prefix.match(/今週/)) {
29
+ modifier = "this";
30
+ }
31
+ // TODO: handle 先週, 来週. They are different from last and next.
32
+
33
+ return createParsingComponentsAtWeekday(context.reference, offset, modifier);
34
+ }
35
+ }
@@ -0,0 +1,25 @@
1
+ import { ParsingContext, Parser } from "../../../chrono";
2
+ import { ParsingComponents } from "../../../results";
3
+ import { WEEKDAY_OFFSET } from "../constants";
4
+ import { createParsingComponentsAtWeekday } from "../../../common/calculation/weekdays";
5
+
6
+ const PATTERN = new RegExp("(?:\\(|\\()(?<weekday>" + Object.keys(WEEKDAY_OFFSET).join("|") + ")(?:\\)|\\))", "i");
7
+
8
+ /**
9
+ * Weekday with parentheses in Japanese
10
+ * For examples:
11
+ * - (水)
12
+ * - (土)
13
+ */
14
+ export default class JPWeekdayWithParenthesesParser implements Parser {
15
+ pattern(): RegExp {
16
+ return PATTERN;
17
+ }
18
+
19
+ extract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
20
+ const dayOfWeek = match.groups.weekday;
21
+ const offset = WEEKDAY_OFFSET[dayOfWeek];
22
+ if (offset === undefined) return null;
23
+ return createParsingComponentsAtWeekday(context.reference, offset);
24
+ }
25
+ }
@@ -3,11 +3,11 @@ import AbstractMergeDateRangeRefiner from "../../../common/refiners/AbstractMerg
3
3
  /**
4
4
  * Merging before and after results (see. AbstractMergeDateRangeRefiner)
5
5
  * This implementation should provide Japanese connecting phases
6
- * - 水曜日[ー]日曜日
6
+ * - 2月11日[ー]2月13日
7
7
  * - 水曜日[から]日曜日
8
8
  */
9
9
  export default class JPMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner {
10
10
  patternBetween(): RegExp {
11
- return /^\s*(から|ー|-|~|~)\s*$/i;
11
+ return /^\s*(から|-|ー|-|~|~)\s*$/i;
12
12
  }
13
13
  }
@@ -0,0 +1,7 @@
1
+ import AbstractMergeDateTimeRefiner from "../../../common/refiners/AbstractMergeDateTimeRefiner";
2
+
3
+ export default class JPMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner {
4
+ patternBetween(): RegExp {
5
+ return /^\s*(の)?\s*$/i;
6
+ }
7
+ }
@@ -0,0 +1,30 @@
1
+ import { MergingRefiner } from "../../../../src/common/abstractRefiners";
2
+ import { ParsingResult } from "../../../results";
3
+
4
+ /**
5
+ * Merge weekday component into more completed data
6
+ * - [2014/7/12], [(土)] => [2014/7/12 (土)]
7
+ * - [7月12日], [土曜日] => [7月12日 土曜日]
8
+ * The difference between the original MergeWeekdayComponentRefiner and the JP one is the order of date and weekday.
9
+ */
10
+ export default class JPMergeWeekdayComponentRefiner extends MergingRefiner {
11
+ mergeResults(textBetween: string, currentResult: ParsingResult, nextResult: ParsingResult): ParsingResult {
12
+ const newResult = currentResult.clone();
13
+ newResult.text = currentResult.text + textBetween + nextResult.text;
14
+
15
+ newResult.start.assign("weekday", nextResult.start.get("weekday"));
16
+ if (newResult.end) {
17
+ newResult.end.assign("weekday", nextResult.start.get("weekday"));
18
+ }
19
+
20
+ return newResult;
21
+ }
22
+
23
+ shouldMergeResults(textBetween: string, currentResult: ParsingResult, nextResult: ParsingResult): boolean {
24
+ const normalDateThenWeekday =
25
+ currentResult.start.isCertain("day") &&
26
+ nextResult.start.isOnlyWeekdayComponent() &&
27
+ !nextResult.start.isCertain("hour");
28
+ return normalDateThenWeekday && textBetween.match(/^[,、の]?\s*$/) !== null;
29
+ }
30
+ }
package/src/results.ts CHANGED
@@ -14,6 +14,7 @@ export class ReferenceWithTimezone {
14
14
  input = input ?? new Date();
15
15
  if (input instanceof Date) {
16
16
  this.instant = input;
17
+ this.timezoneOffset = null;
17
18
  } else {
18
19
  this.instant = input.instant ?? new Date();
19
20
  this.timezoneOffset = toTimezoneOffset(input.timezone, this.instant);
@@ -25,7 +26,11 @@ export class ReferenceWithTimezone {
25
26
  * The output's instant is NOT the reference's instant when the reference's and system's timezone are different.
26
27
  */
27
28
  getDateWithAdjustedTimezone() {
28
- return new Date(this.instant.getTime() + this.getSystemTimezoneAdjustmentMinute(this.instant) * 60000);
29
+ const date = new Date(this.instant);
30
+ if (this.timezoneOffset !== null) {
31
+ date.setMinutes(date.getMinutes() - this.getSystemTimezoneAdjustmentMinute(this.instant));
32
+ }
33
+ return date;
29
34
  }
30
35
 
31
36
  /**
@@ -44,6 +49,10 @@ export class ReferenceWithTimezone {
44
49
  const targetTimezoneOffset = overrideTimezoneOffset ?? this.timezoneOffset ?? currentTimezoneOffset;
45
50
  return currentTimezoneOffset - targetTimezoneOffset;
46
51
  }
52
+
53
+ getTimezoneOffset(): number {
54
+ return this.timezoneOffset ?? -this.instant.getTimezoneOffset();
55
+ }
47
56
  }
48
57
 
49
58
  export class ParsingComponents implements ParsedComponents {
@@ -62,10 +71,10 @@ export class ParsingComponents implements ParsedComponents {
62
71
  }
63
72
  }
64
73
 
65
- const refDayJs = dayjs(reference.instant);
66
- this.imply("day", refDayJs.date());
67
- this.imply("month", refDayJs.month() + 1);
68
- this.imply("year", refDayJs.year());
74
+ const refDayJs = reference.getDateWithAdjustedTimezone();
75
+ this.imply("day", refDayJs.getDate());
76
+ this.imply("month", refDayJs.getMonth() + 1);
77
+ this.imply("year", refDayJs.getFullYear());
69
78
  this.imply("hour", 12);
70
79
  this.imply("minute", 0);
71
80
  this.imply("second", 0);
@@ -166,7 +175,7 @@ export class ParsingComponents implements ParsedComponents {
166
175
  }
167
176
 
168
177
  dayjs() {
169
- return dayjs(this.date());
178
+ return dayjs(this.dateWithoutTimezoneAdjustment());
170
179
  }
171
180
 
172
181
  date(): Date {
@@ -210,7 +219,7 @@ export class ParsingComponents implements ParsedComponents {
210
219
  reference: ReferenceWithTimezone,
211
220
  fragments: { [c in QUnitType]?: number }
212
221
  ): ParsingComponents {
213
- let date = dayjs(reference.instant);
222
+ let date = dayjs(reference.getDateWithAdjustedTimezone());
214
223
  for (const key in fragments) {
215
224
  date = date.add(fragments[key as QUnitType], key as QUnitType);
216
225
  }
@@ -221,14 +230,10 @@ export class ParsingComponents implements ParsedComponents {
221
230
  components.addTag("result/relativeDateAndTime");
222
231
  assignSimilarTime(components, date);
223
232
  assignSimilarDate(components, date);
224
- if (reference.timezoneOffset !== null) {
225
- components.assign("timezoneOffset", -reference.instant.getTimezoneOffset());
226
- }
233
+ components.assign("timezoneOffset", reference.getTimezoneOffset());
227
234
  } else {
228
235
  implySimilarTime(components, date);
229
- if (reference.timezoneOffset !== null) {
230
- components.imply("timezoneOffset", -reference.instant.getTimezoneOffset());
231
- }
236
+ components.imply("timezoneOffset", reference.getTimezoneOffset());
232
237
 
233
238
  if (fragments["d"]) {
234
239
  components.assign("day", date.date());