chrono-node 2.6.3 → 2.6.5

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 (322) hide show
  1. package/README.md +25 -3
  2. package/dist/cjs/calculation/mergingCalculation.js +2 -2
  3. package/dist/cjs/chrono.d.ts +3 -1
  4. package/dist/cjs/chrono.js +10 -4
  5. package/dist/cjs/chrono.js.map +1 -1
  6. package/dist/cjs/common/calculation/weekdays.d.ts +1 -1
  7. package/dist/cjs/common/calculation/weekdays.js +7 -7
  8. package/dist/cjs/common/casualReferences.js +7 -7
  9. package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.d.ts +1 -1
  10. package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js +16 -16
  11. package/dist/cjs/common/refiners/ExtractTimezoneAbbrRefiner.d.ts +1 -1
  12. package/dist/cjs/index.d.ts +8 -63
  13. package/dist/cjs/index.js +10 -31
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/locales/de/index.d.ts +5 -2
  16. package/dist/cjs/locales/de/index.js +9 -1
  17. package/dist/cjs/locales/de/index.js.map +1 -1
  18. package/dist/cjs/locales/de/parsers/DECasualTimeParser.js +8 -8
  19. package/dist/cjs/locales/de/parsers/DESpecificTimeExpressionParser.js +9 -9
  20. package/dist/cjs/locales/en/configuration.d.ts +5 -0
  21. package/dist/cjs/locales/en/configuration.js +57 -0
  22. package/dist/cjs/locales/en/configuration.js.map +1 -0
  23. package/dist/cjs/locales/en/constants.d.ts +1 -1
  24. package/dist/cjs/locales/en/index.d.ts +5 -4
  25. package/dist/cjs/locales/en/index.js +14 -51
  26. package/dist/cjs/locales/en/index.js.map +1 -1
  27. package/dist/cjs/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
  28. package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.d.ts +1 -1
  29. package/dist/cjs/locales/en/parsers/ENMonthNameParser.d.ts +1 -1
  30. package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js +5 -5
  31. package/dist/cjs/locales/es/index.d.ts +5 -2
  32. package/dist/cjs/locales/es/index.js +9 -1
  33. package/dist/cjs/locales/es/index.js.map +1 -1
  34. package/dist/cjs/locales/es/parsers/ESCasualTimeParser.d.ts +1 -1
  35. package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js +5 -5
  36. package/dist/cjs/locales/fr/index.d.ts +5 -2
  37. package/dist/cjs/locales/fr/index.js +9 -1
  38. package/dist/cjs/locales/fr/index.js.map +1 -1
  39. package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js +2 -2
  40. package/dist/cjs/locales/fr/parsers/FRCasualTimeParser.js +6 -6
  41. package/dist/cjs/locales/fr/parsers/FRSpecificTimeExpressionParser.js +6 -6
  42. package/dist/cjs/locales/ja/index.d.ts +5 -2
  43. package/dist/cjs/locales/ja/index.js +9 -1
  44. package/dist/cjs/locales/ja/index.js.map +1 -1
  45. package/dist/cjs/locales/ja/parsers/JPCasualDateParser.d.ts +1 -1
  46. package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js +27 -5
  47. package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
  48. package/dist/cjs/locales/ja/parsers/JPStandardParser.d.ts +1 -1
  49. package/dist/cjs/locales/nl/index.d.ts +5 -2
  50. package/dist/cjs/locales/nl/index.js +9 -1
  51. package/dist/cjs/locales/nl/index.js.map +1 -1
  52. package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js +5 -5
  53. package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.d.ts +1 -1
  54. package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js +5 -5
  55. package/dist/cjs/locales/nl/parsers/NLMonthNameMiddleEndianParser.d.ts +1 -1
  56. package/dist/cjs/locales/nl/parsers/NLMonthNameParser.d.ts +1 -1
  57. package/dist/cjs/locales/pt/index.d.ts +5 -2
  58. package/dist/cjs/locales/pt/index.js +9 -1
  59. package/dist/cjs/locales/pt/index.js.map +1 -1
  60. package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.d.ts +1 -1
  61. package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js +5 -5
  62. package/dist/cjs/locales/ru/index.d.ts +5 -2
  63. package/dist/cjs/locales/ru/index.js +9 -1
  64. package/dist/cjs/locales/ru/index.js.map +1 -1
  65. package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.d.ts +1 -1
  66. package/dist/cjs/locales/ru/parsers/RUMonthNameParser.d.ts +1 -1
  67. package/dist/cjs/locales/ru/parsers/RUTimeExpressionParser.js +5 -5
  68. package/dist/cjs/locales/uk/constants.d.ts +33 -0
  69. package/dist/cjs/locales/uk/constants.js +301 -0
  70. package/dist/cjs/locales/uk/constants.js.map +1 -0
  71. package/dist/cjs/locales/uk/index.d.ts +11 -0
  72. package/dist/cjs/locales/uk/index.js +66 -0
  73. package/dist/cjs/locales/uk/index.js.map +1 -0
  74. package/dist/cjs/locales/uk/parsers/UKCasualDateParser.d.ts +8 -0
  75. package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js +56 -0
  76. package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js.map +1 -0
  77. package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.d.ts +7 -0
  78. package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js +77 -0
  79. package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js.map +1 -0
  80. package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.d.ts +8 -0
  81. package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js +59 -0
  82. package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -0
  83. package/dist/cjs/locales/uk/parsers/UKMonthNameParser.d.ts +7 -0
  84. package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js +45 -0
  85. package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js.map +1 -0
  86. package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.d.ts +8 -0
  87. package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js +66 -0
  88. package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -0
  89. package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.d.ts +12 -0
  90. package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.js +57 -0
  91. package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -0
  92. package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.d.ts +8 -0
  93. package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +22 -0
  94. package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -0
  95. package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.d.ts +8 -0
  96. package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +29 -0
  97. package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -0
  98. package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.d.ts +8 -0
  99. package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +22 -0
  100. package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -0
  101. package/dist/cjs/locales/uk/parsers/UKWeekdayParser.d.ts +8 -0
  102. package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js +50 -0
  103. package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js.map +1 -0
  104. package/dist/cjs/locales/uk/refiners/UKMergeDateRangeRefiner.d.ts +4 -0
  105. package/dist/cjs/locales/uk/refiners/UKMergeDateRangeRefiner.js +13 -0
  106. package/dist/cjs/locales/uk/refiners/UKMergeDateRangeRefiner.js.map +1 -0
  107. package/dist/cjs/locales/uk/refiners/UKMergeDateTimeRefiner.d.ts +4 -0
  108. package/dist/cjs/locales/uk/refiners/UKMergeDateTimeRefiner.js +13 -0
  109. package/dist/cjs/locales/uk/refiners/UKMergeDateTimeRefiner.js.map +1 -0
  110. package/dist/cjs/locales/zh/hans/index.d.ts +5 -2
  111. package/dist/cjs/locales/zh/hans/index.js +10 -2
  112. package/dist/cjs/locales/zh/hans/index.js.map +1 -1
  113. package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.d.ts +1 -1
  114. package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.d.ts +1 -1
  115. package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.d.ts +1 -1
  116. package/dist/cjs/locales/zh/hant/index.d.ts +5 -2
  117. package/dist/cjs/locales/zh/hant/index.js +10 -2
  118. package/dist/cjs/locales/zh/hant/index.js.map +1 -1
  119. package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.d.ts +1 -1
  120. package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.d.ts +1 -1
  121. package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +1 -1
  122. package/dist/cjs/results.d.ts +1 -1
  123. package/dist/cjs/timezone.d.ts +1 -1
  124. package/dist/cjs/timezone.js +11 -11
  125. package/dist/cjs/types.d.ts +58 -0
  126. package/dist/cjs/types.js +34 -0
  127. package/dist/cjs/types.js.map +1 -0
  128. package/dist/cjs/utils/dayjs.js +3 -3
  129. package/dist/esm/calculation/mergingCalculation.js +1 -1
  130. package/dist/esm/chrono.d.ts +3 -1
  131. package/dist/esm/chrono.js +7 -4
  132. package/dist/esm/chrono.js.map +1 -1
  133. package/dist/esm/common/calculation/weekdays.d.ts +1 -1
  134. package/dist/esm/common/calculation/weekdays.js +1 -1
  135. package/dist/esm/common/casualReferences.js +1 -1
  136. package/dist/esm/common/parsers/AbstractParserWithWordBoundary.d.ts +1 -1
  137. package/dist/esm/common/parsers/AbstractTimeExpressionParser.js +1 -1
  138. package/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.d.ts +1 -1
  139. package/dist/esm/index.d.ts +8 -63
  140. package/dist/esm/index.js +6 -32
  141. package/dist/esm/index.js.map +1 -1
  142. package/dist/esm/locales/de/index.d.ts +5 -2
  143. package/dist/esm/locales/de/index.js +4 -0
  144. package/dist/esm/locales/de/index.js.map +1 -1
  145. package/dist/esm/locales/de/parsers/DECasualTimeParser.js +1 -1
  146. package/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js +1 -1
  147. package/dist/esm/locales/en/configuration.d.ts +5 -0
  148. package/dist/esm/locales/en/configuration.js +51 -0
  149. package/dist/esm/locales/en/configuration.js.map +1 -0
  150. package/dist/esm/locales/en/constants.d.ts +1 -1
  151. package/dist/esm/locales/en/index.d.ts +5 -4
  152. package/dist/esm/locales/en/index.js +9 -48
  153. package/dist/esm/locales/en/index.js.map +1 -1
  154. package/dist/esm/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
  155. package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.d.ts +1 -1
  156. package/dist/esm/locales/en/parsers/ENMonthNameParser.d.ts +1 -1
  157. package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js +1 -1
  158. package/dist/esm/locales/es/index.d.ts +5 -2
  159. package/dist/esm/locales/es/index.js +4 -0
  160. package/dist/esm/locales/es/index.js.map +1 -1
  161. package/dist/esm/locales/es/parsers/ESCasualTimeParser.d.ts +1 -1
  162. package/dist/esm/locales/es/parsers/ESCasualTimeParser.js +1 -1
  163. package/dist/esm/locales/fr/index.d.ts +5 -2
  164. package/dist/esm/locales/fr/index.js +4 -0
  165. package/dist/esm/locales/fr/index.js.map +1 -1
  166. package/dist/esm/locales/fr/parsers/FRCasualDateParser.js +1 -1
  167. package/dist/esm/locales/fr/parsers/FRCasualTimeParser.js +1 -1
  168. package/dist/esm/locales/fr/parsers/FRSpecificTimeExpressionParser.js +1 -1
  169. package/dist/esm/locales/ja/index.d.ts +5 -2
  170. package/dist/esm/locales/ja/index.js +4 -0
  171. package/dist/esm/locales/ja/index.js.map +1 -1
  172. package/dist/esm/locales/ja/parsers/JPCasualDateParser.d.ts +1 -1
  173. package/dist/esm/locales/ja/parsers/JPCasualDateParser.js +25 -3
  174. package/dist/esm/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
  175. package/dist/esm/locales/ja/parsers/JPStandardParser.d.ts +1 -1
  176. package/dist/esm/locales/nl/index.d.ts +5 -2
  177. package/dist/esm/locales/nl/index.js +4 -0
  178. package/dist/esm/locales/nl/index.js.map +1 -1
  179. package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js +1 -1
  180. package/dist/esm/locales/nl/parsers/NLCasualTimeParser.d.ts +1 -1
  181. package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js +1 -1
  182. package/dist/esm/locales/nl/parsers/NLMonthNameMiddleEndianParser.d.ts +1 -1
  183. package/dist/esm/locales/nl/parsers/NLMonthNameParser.d.ts +1 -1
  184. package/dist/esm/locales/pt/index.d.ts +5 -2
  185. package/dist/esm/locales/pt/index.js +4 -0
  186. package/dist/esm/locales/pt/index.js.map +1 -1
  187. package/dist/esm/locales/pt/parsers/PTCasualTimeParser.d.ts +1 -1
  188. package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js +1 -1
  189. package/dist/esm/locales/ru/index.d.ts +5 -2
  190. package/dist/esm/locales/ru/index.js +4 -0
  191. package/dist/esm/locales/ru/index.js.map +1 -1
  192. package/dist/esm/locales/ru/parsers/RUCasualTimeParser.d.ts +1 -1
  193. package/dist/esm/locales/ru/parsers/RUMonthNameParser.d.ts +1 -1
  194. package/dist/esm/locales/ru/parsers/RUTimeExpressionParser.js +1 -1
  195. package/dist/esm/locales/uk/constants.d.ts +33 -0
  196. package/dist/esm/locales/uk/constants.js +324 -0
  197. package/dist/esm/locales/uk/constants.js.map +1 -0
  198. package/dist/esm/locales/uk/index.d.ts +11 -0
  199. package/dist/esm/locales/uk/index.js +52 -0
  200. package/dist/esm/locales/uk/index.js.map +1 -0
  201. package/dist/esm/locales/uk/parsers/UKCasualDateParser.d.ts +8 -0
  202. package/dist/esm/locales/uk/parsers/UKCasualDateParser.js +34 -0
  203. package/dist/esm/locales/uk/parsers/UKCasualDateParser.js.map +1 -0
  204. package/dist/esm/locales/uk/parsers/UKCasualTimeParser.d.ts +7 -0
  205. package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js +52 -0
  206. package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js.map +1 -0
  207. package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.d.ts +8 -0
  208. package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.js +56 -0
  209. package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -0
  210. package/dist/esm/locales/uk/parsers/UKMonthNameParser.d.ts +7 -0
  211. package/dist/esm/locales/uk/parsers/UKMonthNameParser.js +42 -0
  212. package/dist/esm/locales/uk/parsers/UKMonthNameParser.js.map +1 -0
  213. package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.d.ts +8 -0
  214. package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js +60 -0
  215. package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -0
  216. package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.d.ts +12 -0
  217. package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.js +54 -0
  218. package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -0
  219. package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.d.ts +8 -0
  220. package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +19 -0
  221. package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -0
  222. package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.d.ts +8 -0
  223. package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +26 -0
  224. package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -0
  225. package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.d.ts +8 -0
  226. package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +19 -0
  227. package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -0
  228. package/dist/esm/locales/uk/parsers/UKWeekdayParser.d.ts +8 -0
  229. package/dist/esm/locales/uk/parsers/UKWeekdayParser.js +47 -0
  230. package/dist/esm/locales/uk/parsers/UKWeekdayParser.js.map +1 -0
  231. package/dist/esm/locales/uk/refiners/UKMergeDateRangeRefiner.d.ts +4 -0
  232. package/dist/esm/locales/uk/refiners/UKMergeDateRangeRefiner.js +7 -0
  233. package/dist/esm/locales/uk/refiners/UKMergeDateRangeRefiner.js.map +1 -0
  234. package/dist/esm/locales/uk/refiners/UKMergeDateTimeRefiner.d.ts +4 -0
  235. package/dist/esm/locales/uk/refiners/UKMergeDateTimeRefiner.js +7 -0
  236. package/dist/esm/locales/uk/refiners/UKMergeDateTimeRefiner.js.map +1 -0
  237. package/dist/esm/locales/zh/hans/index.d.ts +5 -2
  238. package/dist/esm/locales/zh/hans/index.js +5 -1
  239. package/dist/esm/locales/zh/hans/index.js.map +1 -1
  240. package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.d.ts +1 -1
  241. package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.d.ts +1 -1
  242. package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.d.ts +1 -1
  243. package/dist/esm/locales/zh/hant/index.d.ts +5 -2
  244. package/dist/esm/locales/zh/hant/index.js +5 -1
  245. package/dist/esm/locales/zh/hant/index.js.map +1 -1
  246. package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.d.ts +1 -1
  247. package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.d.ts +1 -1
  248. package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +1 -1
  249. package/dist/esm/results.d.ts +1 -1
  250. package/dist/esm/timezone.d.ts +1 -1
  251. package/dist/esm/timezone.js +1 -1
  252. package/dist/esm/types.d.ts +58 -0
  253. package/dist/esm/types.js +31 -0
  254. package/dist/esm/types.js.map +1 -0
  255. package/dist/esm/utils/dayjs.js +1 -1
  256. package/package.json +9 -1
  257. package/src/calculation/mergingCalculation.ts +1 -1
  258. package/src/chrono.ts +14 -8
  259. package/src/common/calculation/weekdays.ts +1 -1
  260. package/src/common/casualReferences.ts +1 -1
  261. package/src/common/parsers/AbstractParserWithWordBoundary.ts +1 -1
  262. package/src/common/parsers/AbstractTimeExpressionParser.ts +1 -1
  263. package/src/common/parsers/ISOFormatParser.ts +1 -1
  264. package/src/common/refiners/ExtractTimezoneAbbrRefiner.ts +3 -3
  265. package/src/configurations.ts +1 -1
  266. package/src/index.ts +7 -153
  267. package/src/locales/de/index.ts +6 -2
  268. package/src/locales/de/parsers/DECasualTimeParser.ts +1 -1
  269. package/src/locales/de/parsers/DESpecificTimeExpressionParser.ts +1 -1
  270. package/src/locales/en/configuration.ts +71 -0
  271. package/src/locales/en/constants.ts +1 -1
  272. package/src/locales/en/index.ts +11 -65
  273. package/src/locales/en/parsers/ENTimeExpressionParser.ts +1 -1
  274. package/src/locales/es/index.ts +6 -2
  275. package/src/locales/es/parsers/ESCasualTimeParser.ts +1 -1
  276. package/src/locales/fr/index.ts +6 -2
  277. package/src/locales/fr/parsers/FRCasualDateParser.ts +1 -1
  278. package/src/locales/fr/parsers/FRCasualTimeParser.ts +1 -1
  279. package/src/locales/fr/parsers/FRSpecificTimeExpressionParser.ts +1 -1
  280. package/src/locales/ja/index.ts +6 -2
  281. package/src/locales/ja/parsers/JPCasualDateParser.ts +26 -3
  282. package/src/locales/nl/index.ts +6 -2
  283. package/src/locales/nl/parsers/NLCasualDateTimeParser.ts +1 -1
  284. package/src/locales/nl/parsers/NLCasualTimeParser.ts +1 -1
  285. package/src/locales/pt/index.ts +6 -2
  286. package/src/locales/pt/parsers/PTCasualTimeParser.ts +1 -1
  287. package/src/locales/ru/index.ts +6 -2
  288. package/src/locales/ru/parsers/RUTimeExpressionParser.ts +1 -1
  289. package/src/locales/uk/constants.ts +349 -0
  290. package/src/locales/uk/index.ts +90 -0
  291. package/src/locales/uk/parsers/UKCasualDateParser.ts +50 -0
  292. package/src/locales/uk/parsers/UKCasualTimeParser.ts +59 -0
  293. package/src/locales/uk/parsers/UKMonthNameLittleEndianParser.ts +72 -0
  294. package/src/locales/uk/parsers/UKMonthNameParser.ts +61 -0
  295. package/src/locales/uk/parsers/UKRelativeDateFormatParser.ts +85 -0
  296. package/src/locales/uk/parsers/UKTimeExpressionParser.ts +64 -0
  297. package/src/locales/uk/parsers/UKTimeUnitAgoFormatParser.ts +24 -0
  298. package/src/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.ts +34 -0
  299. package/src/locales/uk/parsers/UKTimeUnitWithinFormatParser.ts +27 -0
  300. package/src/locales/uk/parsers/UKWeekdayParser.ts +59 -0
  301. package/src/locales/uk/refiners/UKMergeDateRangeRefiner.ts +13 -0
  302. package/src/locales/uk/refiners/UKMergeDateTimeRefiner.ts +13 -0
  303. package/src/locales/zh/hans/index.ts +6 -2
  304. package/src/locales/zh/hant/index.ts +6 -2
  305. package/src/results.ts +1 -1
  306. package/src/timezone.ts +1 -1
  307. package/src/types.ts +150 -0
  308. package/src/utils/dayjs.ts +1 -1
  309. package/test/debugging.test.ts +17 -0
  310. package/test/en/en_month_name_little_endian.test.ts +12 -0
  311. package/test/en/en_time_units_within.test.ts +7 -0
  312. package/test/en/en_timezone_exp.test.ts +48 -4
  313. package/test/ja/ja_casual.test.ts +50 -13
  314. package/test/uk/uk_casual.test.ts +153 -0
  315. package/test/uk/uk_month.test.ts +70 -0
  316. package/test/uk/uk_month_name_little_endian.test.ts +148 -0
  317. package/test/uk/uk_relative.test.ts +74 -0
  318. package/test/uk/uk_time_exp.test.ts +111 -0
  319. package/test/uk/uk_time_units_ago.test.ts +48 -0
  320. package/test/uk/uk_time_units_casual_relative.test.ts +112 -0
  321. package/test/uk/uk_time_units_within.test.ts +16 -0
  322. package/test/uk/uk_weekday.test.ts +52 -0
@@ -5,8 +5,9 @@
5
5
  */
6
6
 
7
7
  import { includeCommonConfiguration } from "../../configurations";
8
- import { ParsedResult, ParsingOption } from "../../index";
9
- import { Chrono, Configuration } from "../../chrono";
8
+ import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
9
+ import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
10
+ import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
10
11
  import FRCasualDateParser from "./parsers/FRCasualDateParser";
11
12
  import FRCasualTimeParser from "./parsers/FRCasualTimeParser";
12
13
  import SlashDateFormatParser from "../../common/parsers/SlashDateFormatParser";
@@ -20,6 +21,9 @@ import FRTimeUnitAgoFormatParser from "./parsers/FRTimeUnitAgoFormatParser";
20
21
  import FRTimeUnitWithinFormatParser from "./parsers/FRTimeUnitWithinFormatParser";
21
22
  import FRTimeUnitRelativeFormatParser from "./parsers/FRTimeUnitRelativeFormatParser";
22
23
 
24
+ export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
25
+ export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
26
+
23
27
  // Shortcuts
24
28
  export const casual = new Chrono(createCasualConfiguration());
25
29
  export const strict = new Chrono(createConfiguration(true));
@@ -1,7 +1,7 @@
1
1
  import { ParsingContext } from "../../../chrono";
2
2
  import { ParsingComponents, ParsingResult } from "../../../results";
3
3
  import dayjs from "dayjs";
4
- import { Meridiem } from "../../../index";
4
+ import { Meridiem } from "../../../types";
5
5
  import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
6
6
  import { assignSimilarDate } from "../../../utils/dayjs";
7
7
  import * as references from "../../../common/casualReferences";
@@ -1,6 +1,6 @@
1
1
  import { ParsingContext } from "../../../chrono";
2
2
  import { ParsingComponents, ParsingResult } from "../../../results";
3
- import { Meridiem } from "../../../index";
3
+ import { Meridiem } from "../../../types";
4
4
  import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
5
5
 
6
6
  export default class FRCasualTimeParser extends AbstractParserWithWordBoundaryChecking {
@@ -1,6 +1,6 @@
1
1
  import { Parser, ParsingContext } from "../../../chrono";
2
2
  import { ParsingComponents, ParsingResult } from "../../../results";
3
- import { Meridiem } from "../../../index";
3
+ import { Meridiem } from "../../../types";
4
4
 
5
5
  /**
6
6
  * 8h10m00s
@@ -8,8 +8,12 @@ import JPStandardParser from "./parsers/JPStandardParser";
8
8
  import JPMergeDateRangeRefiner from "./refiners/JPMergeDateRangeRefiner";
9
9
  import JPCasualDateParser from "./parsers/JPCasualDateParser";
10
10
 
11
- import { Chrono, Configuration } from "../../chrono";
12
- import { ParsedResult, ParsingOption } from "../../index";
11
+ import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
12
+ import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
13
+ import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
14
+
15
+ export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
16
+ export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
13
17
 
14
18
  // Shortcuts
15
19
  export const casual = new Chrono(createCasualConfiguration());
@@ -1,9 +1,32 @@
1
1
  import { Parser, ParsingContext } from "../../../chrono";
2
2
  import dayjs from "dayjs";
3
- import { Meridiem } from "../../../index";
3
+ import { Meridiem } from "../../../types";
4
4
  import * as references from "../../../common/casualReferences";
5
5
 
6
- const PATTERN = /今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i;
6
+ const PATTERN = /今日|きょう|当日|とうじつ|昨日|きのう|明日|あした|今夜|こんや|今夕|こんゆう|今晩|こんばん|今朝|けさ/i;
7
+
8
+ function normalizeTextToKanji(text: string) {
9
+ switch (text) {
10
+ case "きょう":
11
+ return "今日";
12
+ case "とうじつ":
13
+ return "当日";
14
+ case "きのう":
15
+ return "昨日";
16
+ case "あした":
17
+ return "明日";
18
+ case "こんや":
19
+ return "今夜";
20
+ case "こんゆう":
21
+ return "今夕";
22
+ case "こんばん":
23
+ return "今晩";
24
+ case "けさ":
25
+ return "今朝";
26
+ default:
27
+ return text;
28
+ }
29
+ }
7
30
 
8
31
  export default class JPCasualDateParser implements Parser {
9
32
  pattern() {
@@ -11,7 +34,7 @@ export default class JPCasualDateParser implements Parser {
11
34
  }
12
35
 
13
36
  extract(context: ParsingContext, match: RegExpMatchArray) {
14
- const text = match[0];
37
+ const text = normalizeTextToKanji(match[0]);
15
38
 
16
39
  const date = dayjs(context.refDate);
17
40
  const components = context.createParsingComponents();
@@ -5,8 +5,9 @@
5
5
  */
6
6
 
7
7
  import { includeCommonConfiguration } from "../../configurations";
8
- import { ParsedResult, ParsingOption } from "../../index";
9
- import { Chrono, Configuration } from "../../chrono";
8
+ import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
9
+ import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
10
+ import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
10
11
  import NLMergeDateRangeRefiner from "./refiners/NLMergeDateRangeRefiner";
11
12
  import NLMergeDateTimeRefiner from "./refiners/NLMergeDateTimeRefiner";
12
13
  import NLCasualDateParser from "./parsers/NLCasualDateParser";
@@ -25,6 +26,9 @@ import NLRelativeDateFormatParser from "./parsers/NLRelativeDateFormatParser";
25
26
  import NLTimeUnitAgoFormatParser from "./parsers/NLTimeUnitAgoFormatParser";
26
27
  import NLTimeUnitLaterFormatParser from "./parsers/NLTimeUnitLaterFormatParser";
27
28
 
29
+ export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
30
+ export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
31
+
28
32
  // Shortcuts
29
33
  export const casual = new Chrono(createCasualConfiguration());
30
34
  export const strict = new Chrono(createConfiguration(true));
@@ -1,7 +1,7 @@
1
1
  import { ParsingContext } from "../../../chrono";
2
2
  import { ParsingComponents, ParsingResult } from "../../../results";
3
3
  import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
4
- import { Meridiem } from "../../../index";
4
+ import { Meridiem } from "../../../types";
5
5
  import { assignSimilarDate, assignTheNextDay } from "../../../utils/dayjs";
6
6
  import dayjs from "dayjs";
7
7
 
@@ -1,5 +1,5 @@
1
1
  import { ParsingContext } from "../../../chrono";
2
- import { Meridiem } from "../../../index";
2
+ import { Meridiem } from "../../../types";
3
3
  import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
4
4
  import dayjs from "dayjs";
5
5
  import { assignTheNextDay } from "../../../utils/dayjs";
@@ -5,8 +5,9 @@
5
5
  */
6
6
 
7
7
  import { includeCommonConfiguration } from "../../configurations";
8
- import { ParsedResult, ParsingOption } from "../../index";
9
- import { Chrono, Configuration } from "../../chrono";
8
+ import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
9
+ import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
10
+ import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
10
11
  import SlashDateFormatParser from "../../common/parsers/SlashDateFormatParser";
11
12
  import PTWeekdayParser from "./parsers/PTWeekdayParser";
12
13
  import PTTimeExpressionParser from "./parsers/PTTimeExpressionParser";
@@ -16,6 +17,9 @@ import PTMonthNameLittleEndianParser from "./parsers/PTMonthNameLittleEndianPars
16
17
  import PTCasualDateParser from "./parsers/PTCasualDateParser";
17
18
  import PTCasualTimeParser from "./parsers/PTCasualTimeParser";
18
19
 
20
+ export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
21
+ export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
22
+
19
23
  // Shortcuts
20
24
  export const casual = new Chrono(createCasualConfiguration());
21
25
  export const strict = new Chrono(createConfiguration(true));
@@ -1,5 +1,5 @@
1
1
  import { ParsingContext } from "../../../chrono";
2
- import { Meridiem } from "../../../index";
2
+ import { Meridiem } from "../../../types";
3
3
  import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
4
4
  import { assignTheNextDay } from "../../../utils/dayjs";
5
5
  import dayjs from "dayjs";
@@ -18,11 +18,15 @@ import RUCasualTimeParser from "./parsers/RUCasualTimeParser";
18
18
  import RUWeekdayParser from "./parsers/RUWeekdayParser";
19
19
  import RURelativeDateFormatParser from "./parsers/RURelativeDateFormatParser";
20
20
 
21
- import { ParsedResult, ParsingOption } from "../../index";
22
- import { Chrono, Configuration } from "../../chrono";
21
+ import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
22
+ import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
23
+ import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
23
24
  import SlashDateFormatParser from "../../common/parsers/SlashDateFormatParser";
24
25
  import RUTimeUnitCasualRelativeFormatParser from "./parsers/RUTimeUnitCasualRelativeFormatParser";
25
26
 
27
+ export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
28
+ export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
29
+
26
30
  /**
27
31
  * Chrono object configured for parsing *casual* Russian
28
32
  */
@@ -1,6 +1,6 @@
1
1
  import { ParsingContext } from "../../../chrono";
2
2
  import { ParsingComponents } from "../../../results";
3
- import { Meridiem } from "../../../index";
3
+ import { Meridiem } from "../../../types";
4
4
  import { AbstractTimeExpressionParser } from "../../../common/parsers/AbstractTimeExpressionParser";
5
5
  import { REGEX_PARTS } from "../constants";
6
6
 
@@ -0,0 +1,349 @@
1
+ import { OpUnitType, QUnitType } from "dayjs";
2
+ import { matchAnyPattern, repeatedTimeunitPattern } from "../../utils/pattern";
3
+ import { findMostLikelyADYear } from "../../calculation/years";
4
+ import { TimeUnits } from "../../utils/timeunits";
5
+
6
+ export const REGEX_PARTS = {
7
+ leftBoundary: "([^\\p{L}\\p{N}_]|^)",
8
+ rightBoundary: "(?=[^\\p{L}\\p{N}_]|$)",
9
+ flags: "iu",
10
+ };
11
+
12
+ export const WEEKDAY_DICTIONARY: { [word: string]: number } = {
13
+ "неділя": 0,
14
+ "неділі": 0,
15
+ "неділю": 0,
16
+ "нд": 0,
17
+ "нд.": 0,
18
+ "понеділок": 1,
19
+ "понеділка": 1,
20
+ "пн": 1,
21
+ "пн.": 1,
22
+ "вівторок": 2,
23
+ "вівторка": 2,
24
+ "вт": 2,
25
+ "вт.": 2,
26
+ "середа": 3,
27
+ "середи": 3,
28
+ "середу": 3,
29
+ "ср": 3,
30
+ "ср.": 3,
31
+ "четвер": 4,
32
+ "четверга": 4,
33
+ "четвергу": 4,
34
+ "чт": 4,
35
+ "чт.": 4,
36
+ "п'ятниця": 5,
37
+ "п'ятниці": 5,
38
+ "п'ятницю": 5,
39
+ "пт": 5,
40
+ "пт.": 5,
41
+ "субота": 6,
42
+ "суботи": 6,
43
+ "суботу": 6,
44
+ "сб": 6,
45
+ "сб.": 6,
46
+ };
47
+
48
+ export const FULL_MONTH_NAME_DICTIONARY: { [word: string]: number } = {
49
+ "січень": 1,
50
+ "січня": 1,
51
+ "січні": 1,
52
+ "лютий": 2,
53
+ "лютого": 2,
54
+ "лютому": 2,
55
+ "березень": 3,
56
+ "березня": 3,
57
+ "березні": 3,
58
+ "квітень": 4,
59
+ "квітня": 4,
60
+ "квітні": 4,
61
+ "травень": 5,
62
+ "травня": 5,
63
+ "травні": 5,
64
+ "червень": 6,
65
+ "червня": 6,
66
+ "червні": 6,
67
+ "липень": 7,
68
+ "липня": 7,
69
+ "липні": 7,
70
+ "серпень": 8,
71
+ "серпня": 8,
72
+ "серпні": 8,
73
+ "вересень": 9,
74
+ "вересня": 9,
75
+ "вересні": 9,
76
+ "жовтень": 10,
77
+ "жовтня": 10,
78
+ "жовтні": 10,
79
+ "листопад": 11,
80
+ "листопада": 11,
81
+ "листопаду": 11,
82
+ "грудень": 12,
83
+ "грудня": 12,
84
+ "грудні": 12,
85
+ };
86
+
87
+ export const MONTH_DICTIONARY: { [word: string]: number } = {
88
+ ...FULL_MONTH_NAME_DICTIONARY,
89
+ "січ": 1,
90
+ "січ.": 1,
91
+ "лют": 2,
92
+ "лют.": 2,
93
+ "бер": 3,
94
+ "бер.": 3,
95
+ "квіт": 4,
96
+ "квіт.": 4,
97
+ "трав": 5,
98
+ "трав.": 5,
99
+ "черв": 6,
100
+ "черв.": 6,
101
+ "лип": 7,
102
+ "лип.": 7,
103
+ "серп": 8,
104
+ "серп.": 8,
105
+ "сер": 8,
106
+ "cер.": 8,
107
+ "вер": 9,
108
+ "вер.": 9,
109
+ "верес": 9,
110
+ "верес.": 9,
111
+ "жовт": 10,
112
+ "жовт.": 10,
113
+ "листоп": 11,
114
+ "листоп.": 11,
115
+ "груд": 12,
116
+ "груд.": 12,
117
+ };
118
+
119
+ export const INTEGER_WORD_DICTIONARY: { [word: string]: number } = {
120
+ "один": 1,
121
+ "одна": 1,
122
+ "одної": 1,
123
+ "одну": 1,
124
+ "дві": 2,
125
+ "два": 2,
126
+ "двох": 2,
127
+ "три": 3,
128
+ "трьох": 3,
129
+ "чотири": 4,
130
+ "чотирьох": 4,
131
+ "п'ять": 5,
132
+ "п'яти": 5,
133
+ "шість": 6,
134
+ "шести": 6,
135
+ "сім": 7,
136
+ "семи": 7,
137
+ "вісім": 8,
138
+ "восьми": 8,
139
+ "дев'ять": 9,
140
+ "дев'яти": 9,
141
+ "десять": 10,
142
+ "десяти": 10,
143
+ "одинадцять": 11,
144
+ "одинадцяти": 11,
145
+ "дванадцять": 12,
146
+ "дванадцяти": 12,
147
+ };
148
+
149
+ export const ORDINAL_WORD_DICTIONARY: { [word: string]: number } = {
150
+ "перше": 1,
151
+ "першого": 1,
152
+ "друге": 2,
153
+ "другого": 2,
154
+ "третє": 3,
155
+ "третього": 3,
156
+ "четверте": 4,
157
+ "четвертого": 4,
158
+ "п'яте": 5,
159
+ "п'ятого": 5,
160
+ "шосте": 6,
161
+ "шостого": 6,
162
+ "сьоме": 7,
163
+ "сьомого": 7,
164
+ "восьме": 8,
165
+ "восьмого": 8,
166
+ "дев'яте": 9,
167
+ "дев'ятого": 9,
168
+ "десяте": 10,
169
+ "десятого": 10,
170
+ "одинадцяте": 11,
171
+ "одинадцятого": 11,
172
+ "дванадцяте": 12,
173
+ "дванадцятого": 12,
174
+ "тринадцяте": 13,
175
+ "тринадцятого": 13,
176
+ "чотирнадцяте": 14,
177
+ "чотинрнадцятого": 14,
178
+ "п'ятнадцяте": 15,
179
+ "п'ятнадцятого": 15,
180
+ "шістнадцяте": 16,
181
+ "шістнадцятого": 16,
182
+ "сімнадцяте": 17,
183
+ "сімнадцятого": 17,
184
+ "вісімнадцяте": 18,
185
+ "вісімнадцятого": 18,
186
+ "дев'ятнадцяте": 19,
187
+ "дев'ятнадцятого": 19,
188
+ "двадцяте": 20,
189
+ "двадцятого": 20,
190
+ "двадцять перше": 21,
191
+ "двадцять першого": 21,
192
+ "двадцять друге": 22,
193
+ "двадцять другого": 22,
194
+ "двадцять третє": 23,
195
+ "двадцять третього": 23,
196
+ "двадцять четверте": 24,
197
+ "двадцять четвертого": 24,
198
+ "двадцять п'яте": 25,
199
+ "двадцять п'ятого": 25,
200
+ "двадцять шосте": 26,
201
+ "двадцять шостого": 26,
202
+ "двадцять сьоме": 27,
203
+ "двадцять сьомого": 27,
204
+ "двадцять восьме": 28,
205
+ "двадцять восьмого": 28,
206
+ "двадцять дев'яте": 29,
207
+ "двадцять дев'ятого": 29,
208
+ "тридцяте": 30,
209
+ "тридцятого": 30,
210
+ "тридцять перше": 31,
211
+ "тридцять першого": 31,
212
+ };
213
+
214
+ export const TIME_UNIT_DICTIONARY: { [word: string]: OpUnitType | QUnitType } = {
215
+ сек: "second",
216
+ секунда: "second",
217
+ секунд: "second",
218
+ секунди: "second",
219
+ секунду: "second",
220
+ секундочок: "second",
221
+ секундочки: "second",
222
+ секундочку: "second",
223
+ хв: "minute",
224
+ хвилина: "minute",
225
+ хвилин: "minute",
226
+ хвилини: "minute",
227
+ хвилину: "minute",
228
+ хвилинок: "minute",
229
+ хвилинки: "minute",
230
+ хвилинку: "minute",
231
+ хвилиночок: "minute",
232
+ хвилиночки: "minute",
233
+ хвилиночку: "minute",
234
+ год: "hour",
235
+ година: "hour",
236
+ годин: "hour",
237
+ години: "hour",
238
+ годину: "hour",
239
+ годинка: "hour",
240
+ годинок: "hour",
241
+ годинки: "hour",
242
+ годинку: "hour",
243
+ день: "d",
244
+ дня: "d",
245
+ днів: "d",
246
+ дні: "d",
247
+ доба: "d",
248
+ добу: "d",
249
+ тиждень: "week",
250
+ тижню: "week",
251
+ тижня: "week",
252
+ тижні: "week",
253
+ тижнів: "week",
254
+ місяць: "month",
255
+ місяців: "month",
256
+ місяці: "month",
257
+ місяця: "month",
258
+ квартал: "quarter",
259
+ кварталу: "quarter",
260
+ квартала: "quarter",
261
+ кварталів: "quarter",
262
+ кварталі: "quarter",
263
+ рік: "year",
264
+ року: "year",
265
+ році: "year",
266
+ років: "year",
267
+ роки: "year",
268
+ };
269
+
270
+ //--------------------------------
271
+
272
+ export const NUMBER_PATTERN = `(?:${matchAnyPattern(
273
+ INTEGER_WORD_DICTIONARY
274
+ )}|[0-9]+|[0-9]+\\.[0-9]+|пів|декілька|пар(?:у)|\\s{0,3})`;
275
+
276
+ export function parseNumberPattern(match: string): number {
277
+ const num = match.toLowerCase();
278
+ if (INTEGER_WORD_DICTIONARY[num] !== undefined) {
279
+ return INTEGER_WORD_DICTIONARY[num];
280
+ }
281
+ if (num.match(/декілька/)) {
282
+ return 2;
283
+ } else if (num.match(/пів/)) {
284
+ return 0.5;
285
+ } else if (num.match(/пар/)) {
286
+ return 2;
287
+ } else if (num === "") {
288
+ return 1;
289
+ }
290
+ return parseFloat(num);
291
+ }
292
+
293
+ export const ORDINAL_NUMBER_PATTERN = `(?:${matchAnyPattern(ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:го|ого|е)?)`;
294
+ export function parseOrdinalNumberPattern(match: string): number {
295
+ const num = match.toLowerCase();
296
+ if (ORDINAL_WORD_DICTIONARY[num] !== undefined) {
297
+ return ORDINAL_WORD_DICTIONARY[num];
298
+ }
299
+ return parseInt(num);
300
+ }
301
+
302
+ const year = "(?:\\s+(?:року|рік|р|р.))?";
303
+ export const YEAR_PATTERN = `(?:[1-9][0-9]{0,3}${year}\\s*(?:н.е.|до н.е.|н. е.|до н. е.)|[1-2][0-9]{3}${year}|[5-9][0-9]${year})`;
304
+ export function parseYearPattern(match: string): number {
305
+ if (/(рік|року|р|р.)/i.test(match)) {
306
+ match = match.replace(/(рік|року|р|р.)/i, "");
307
+ }
308
+
309
+ if (/(до н.е.|до н. е.)/i.test(match)) {
310
+ //Before Common Era
311
+ match = match.replace(/(до н.е.|до н. е.)/i, "");
312
+ return -parseInt(match);
313
+ }
314
+
315
+ if (/(н. е.|н.е.)/i.test(match)) {
316
+ //Common Era
317
+ match = match.replace(/(н. е.|н.е.)/i, "");
318
+ return parseInt(match);
319
+ }
320
+
321
+ const rawYearNumber = parseInt(match);
322
+ return findMostLikelyADYear(rawYearNumber);
323
+ }
324
+
325
+ const SINGLE_TIME_UNIT_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY)})`;
326
+ const SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, "i");
327
+
328
+ export const TIME_UNITS_PATTERN = repeatedTimeunitPattern(
329
+ `(?:(?:близько|приблизно)\\s{0,3})?`,
330
+ SINGLE_TIME_UNIT_PATTERN
331
+ );
332
+
333
+ export function parseTimeUnits(timeunitText): TimeUnits {
334
+ const fragments = {};
335
+ let remainingText = timeunitText;
336
+ let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
337
+ while (match) {
338
+ collectDateTimeFragment(fragments, match);
339
+ remainingText = remainingText.substring(match[0].length).trim();
340
+ match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
341
+ }
342
+ return fragments;
343
+ }
344
+
345
+ function collectDateTimeFragment(fragments, match) {
346
+ const num = parseNumberPattern(match[1]);
347
+ const unit = TIME_UNIT_DICTIONARY[match[2].toLowerCase()];
348
+ fragments[unit] = num;
349
+ }
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Chrono components for Ukrainian support (*parsers*, *refiners*, and *configuration*)
3
+ *
4
+ * @module
5
+ */
6
+
7
+ import UKTimeUnitWithinFormatParser from "./parsers/UKTimeUnitWithinFormatParser";
8
+ import UKMonthNameLittleEndianParser from "./parsers/UKMonthNameLittleEndianParser";
9
+ import UkMonthNameParser from "./parsers/UKMonthNameParser";
10
+ import UKTimeExpressionParser from "./parsers/UKTimeExpressionParser";
11
+ import UKTimeUnitAgoFormatParser from "./parsers/UKTimeUnitAgoFormatParser";
12
+ import UKMergeDateRangeRefiner from "./refiners/UKMergeDateRangeRefiner";
13
+ import UKMergeDateTimeRefiner from "./refiners/UKMergeDateTimeRefiner";
14
+
15
+ import { includeCommonConfiguration } from "../../configurations";
16
+ import UKCasualDateParser from "./parsers/UKCasualDateParser";
17
+ import UKCasualTimeParser from "./parsers/UKCasualTimeParser";
18
+ import UKWeekdayParser from "./parsers/UKWeekdayParser";
19
+ import UKRelativeDateFormatParser from "./parsers/UKRelativeDateFormatParser";
20
+
21
+ import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
22
+ import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
23
+ import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
24
+ import SlashDateFormatParser from "../../common/parsers/SlashDateFormatParser";
25
+ import UKTimeUnitCasualRelativeFormatParser from "./parsers/UKTimeUnitCasualRelativeFormatParser";
26
+ import ISOFormatParser from "../../common/parsers/ISOFormatParser";
27
+
28
+ export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
29
+ export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
30
+
31
+ /**
32
+ * Chrono object configured for parsing *casual* Ukrainian
33
+ */
34
+ export const casual = new Chrono(createCasualConfiguration());
35
+
36
+ /**
37
+ * Chrono object configured for parsing *strict* Ukrainian
38
+ */
39
+ export const strict = new Chrono(createConfiguration(true));
40
+
41
+ /**
42
+ * Create a default *casual* {@Link Configuration} for Ukrainian chrono.
43
+ * It calls {@Link createConfiguration} and includes additional parsers.
44
+ */
45
+ export function createCasualConfiguration(): Configuration {
46
+ const option = createConfiguration(false);
47
+ option.parsers.unshift(new UKCasualDateParser());
48
+ option.parsers.unshift(new UKCasualTimeParser());
49
+ option.parsers.unshift(new UkMonthNameParser());
50
+ option.parsers.unshift(new UKRelativeDateFormatParser());
51
+ option.parsers.unshift(new UKTimeUnitCasualRelativeFormatParser());
52
+ return option;
53
+ }
54
+
55
+ /**
56
+ * Create a default {@Link Configuration} for Ukrainian chrono
57
+ *
58
+ * @param strictMode If the timeunit mentioning should be strict, not casual
59
+ */
60
+ export function createConfiguration(strictMode: boolean): Configuration {
61
+ return includeCommonConfiguration(
62
+ {
63
+ parsers: [
64
+ new ISOFormatParser(),
65
+ new SlashDateFormatParser(true),
66
+ new UKTimeUnitWithinFormatParser(),
67
+ new UKMonthNameLittleEndianParser(),
68
+ new UKWeekdayParser(),
69
+ new UKTimeExpressionParser(strictMode),
70
+ new UKTimeUnitAgoFormatParser(),
71
+ ],
72
+ refiners: [new UKMergeDateTimeRefiner(), new UKMergeDateRangeRefiner()],
73
+ },
74
+ strictMode
75
+ );
76
+ }
77
+
78
+ /**
79
+ * A shortcut for uk.casual.parse()
80
+ */
81
+ export function parse(text: string, ref?: Date, option?: ParsingOption): ParsedResult[] {
82
+ return casual.parse(text, ref, option);
83
+ }
84
+
85
+ /**
86
+ * A shortcut for uk.casual.parseDate()
87
+ */
88
+ export function parseDate(text: string, ref?: Date, option?: ParsingOption): Date {
89
+ return casual.parseDate(text, ref, option);
90
+ }