chrono-node 2.9.2 → 2.10.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 (319) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/locales/en/constants.d.ts +1 -1
  3. package/dist/cjs/locales/en/constants.js +1 -1
  4. package/dist/cjs/locales/en/constants.js.map +1 -1
  5. package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.js +1 -1
  6. package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.js.map +1 -1
  7. package/dist/cjs/locales/fr/constants.js +13 -0
  8. package/dist/cjs/locales/fr/constants.js.map +1 -1
  9. package/dist/cjs/locales/it/configuration.d.ts +5 -0
  10. package/dist/cjs/locales/it/configuration.js +66 -0
  11. package/dist/cjs/locales/it/configuration.js.map +1 -0
  12. package/dist/cjs/locales/it/constants.d.ts +8 -4
  13. package/dist/cjs/locales/it/constants.js +216 -90
  14. package/dist/cjs/locales/it/constants.js.map +1 -1
  15. package/dist/cjs/locales/it/index.d.ts +9 -7
  16. package/dist/cjs/locales/it/index.js +13 -51
  17. package/dist/cjs/locales/it/index.js.map +1 -1
  18. package/dist/cjs/locales/it/parsers/ITCasualDateParser.js +19 -10
  19. package/dist/cjs/locales/it/parsers/ITCasualDateParser.js.map +1 -1
  20. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.d.ts +1 -1
  21. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js +70 -37
  22. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
  23. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.d.ts +1 -1
  24. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js +6 -6
  25. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -1
  26. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.d.ts +4 -2
  27. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js +17 -6
  28. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -1
  29. package/dist/cjs/locales/it/parsers/ITMonthNameParser.d.ts +2 -2
  30. package/dist/cjs/locales/it/parsers/ITMonthNameParser.js +5 -4
  31. package/dist/cjs/locales/it/parsers/ITMonthNameParser.js.map +1 -1
  32. package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js +21 -7
  33. package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
  34. package/dist/cjs/locales/it/parsers/ITSlashMonthFormatParser.d.ts +1 -1
  35. package/dist/cjs/locales/it/parsers/ITSlashMonthFormatParser.js +2 -2
  36. package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.d.ts +3 -2
  37. package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js +37 -29
  38. package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
  39. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.d.ts +1 -1
  40. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js +9 -7
  41. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
  42. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.d.ts +3 -1
  43. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +17 -9
  44. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
  45. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.d.ts +1 -1
  46. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js +9 -6
  47. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
  48. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.d.ts +3 -1
  49. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js +21 -6
  50. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -1
  51. package/dist/cjs/locales/it/parsers/ITWeekdayParser.d.ts +1 -1
  52. package/dist/cjs/locales/it/parsers/ITWeekdayParser.js +21 -12
  53. package/dist/cjs/locales/it/parsers/ITWeekdayParser.js.map +1 -1
  54. package/dist/cjs/locales/it/parsers/{ITCasualYearMonthDayParser.d.ts → ITYearMonthDayParser.d.ts} +3 -1
  55. package/dist/cjs/locales/it/parsers/{ITCasualYearMonthDayParser.js → ITYearMonthDayParser.js} +20 -8
  56. package/dist/cjs/locales/it/parsers/ITYearMonthDayParser.js.map +1 -0
  57. package/dist/cjs/locales/it/refiners/ITExtractYearSuffixRefiner.d.ts +5 -0
  58. package/dist/cjs/locales/it/refiners/ITExtractYearSuffixRefiner.js +34 -0
  59. package/dist/cjs/locales/it/refiners/ITExtractYearSuffixRefiner.js.map +1 -0
  60. package/dist/cjs/locales/it/refiners/ITMergeDateRangeRefiner.d.ts +1 -1
  61. package/dist/cjs/locales/it/refiners/ITMergeDateRangeRefiner.js +3 -3
  62. package/dist/cjs/locales/it/refiners/ITMergeDateRangeRefiner.js.map +1 -1
  63. package/dist/cjs/locales/it/refiners/ITMergeDateTimeRefiner.d.ts +1 -1
  64. package/dist/cjs/locales/it/refiners/ITMergeDateTimeRefiner.js +3 -3
  65. package/dist/cjs/locales/it/refiners/ITMergeDateTimeRefiner.js.map +1 -1
  66. package/dist/cjs/locales/it/refiners/ITMergeRelativeAfterDateRefiner.d.ts +6 -0
  67. package/dist/cjs/locales/it/refiners/ITMergeRelativeAfterDateRefiner.js +30 -0
  68. package/dist/cjs/locales/it/refiners/ITMergeRelativeAfterDateRefiner.js.map +1 -0
  69. package/dist/cjs/locales/it/refiners/{ITMergeRelativeDateRefiner.d.ts → ITMergeRelativeFollowByDateRefiner.d.ts} +1 -1
  70. package/dist/cjs/locales/it/refiners/{ITMergeRelativeDateRefiner.js → ITMergeRelativeFollowByDateRefiner.js} +8 -8
  71. package/dist/cjs/locales/it/refiners/ITMergeRelativeFollowByDateRefiner.js.map +1 -0
  72. package/dist/cjs/locales/it/refiners/ITUnlikelyFormatFilter.d.ts +6 -0
  73. package/dist/cjs/locales/it/refiners/ITUnlikelyFormatFilter.js +26 -0
  74. package/dist/cjs/locales/it/refiners/ITUnlikelyFormatFilter.js.map +1 -0
  75. package/dist/cjs/results.js +15 -9
  76. package/dist/cjs/results.js.map +1 -1
  77. package/dist/esm/locales/en/constants.d.ts +1 -1
  78. package/dist/esm/locales/en/constants.js +1 -1
  79. package/dist/esm/locales/en/constants.js.map +1 -1
  80. package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js +1 -1
  81. package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js.map +1 -1
  82. package/dist/esm/locales/fr/constants.js +13 -0
  83. package/dist/esm/locales/fr/constants.js.map +1 -1
  84. package/dist/esm/locales/it/configuration.d.ts +5 -0
  85. package/dist/esm/locales/it/configuration.js +60 -0
  86. package/dist/esm/locales/it/configuration.js.map +1 -0
  87. package/dist/esm/locales/it/constants.d.ts +8 -4
  88. package/dist/esm/locales/it/constants.js +256 -117
  89. package/dist/esm/locales/it/constants.js.map +1 -1
  90. package/dist/esm/locales/it/index.d.ts +9 -7
  91. package/dist/esm/locales/it/index.js +8 -48
  92. package/dist/esm/locales/it/index.js.map +1 -1
  93. package/dist/esm/locales/it/parsers/ITCasualDateParser.js +19 -10
  94. package/dist/esm/locales/it/parsers/ITCasualDateParser.js.map +1 -1
  95. package/dist/esm/locales/it/parsers/ITCasualTimeParser.d.ts +1 -1
  96. package/dist/esm/locales/it/parsers/ITCasualTimeParser.js +37 -37
  97. package/dist/esm/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
  98. package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.d.ts +1 -1
  99. package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.js +5 -5
  100. package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -1
  101. package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.d.ts +4 -2
  102. package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.js +17 -5
  103. package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -1
  104. package/dist/esm/locales/it/parsers/ITMonthNameParser.d.ts +2 -2
  105. package/dist/esm/locales/it/parsers/ITMonthNameParser.js +4 -3
  106. package/dist/esm/locales/it/parsers/ITMonthNameParser.js.map +1 -1
  107. package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js +21 -7
  108. package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
  109. package/dist/esm/locales/it/parsers/ITSlashMonthFormatParser.d.ts +1 -1
  110. package/dist/esm/locales/it/parsers/ITSlashMonthFormatParser.js +1 -1
  111. package/dist/esm/locales/it/parsers/ITTimeExpressionParser.d.ts +3 -2
  112. package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js +35 -27
  113. package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
  114. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.d.ts +1 -1
  115. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js +9 -7
  116. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
  117. package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.d.ts +3 -1
  118. package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +18 -9
  119. package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
  120. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.d.ts +1 -1
  121. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js +9 -6
  122. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
  123. package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.d.ts +3 -1
  124. package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js +22 -6
  125. package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -1
  126. package/dist/esm/locales/it/parsers/ITWeekdayParser.d.ts +1 -1
  127. package/dist/esm/locales/it/parsers/ITWeekdayParser.js +21 -12
  128. package/dist/esm/locales/it/parsers/ITWeekdayParser.js.map +1 -1
  129. package/dist/esm/locales/it/parsers/{ITCasualYearMonthDayParser.d.ts → ITYearMonthDayParser.d.ts} +3 -1
  130. package/dist/esm/locales/it/parsers/{ITCasualYearMonthDayParser.js → ITYearMonthDayParser.js} +20 -7
  131. package/dist/esm/locales/it/parsers/ITYearMonthDayParser.js.map +1 -0
  132. package/dist/esm/locales/it/refiners/ITExtractYearSuffixRefiner.d.ts +5 -0
  133. package/dist/esm/locales/it/refiners/ITExtractYearSuffixRefiner.js +31 -0
  134. package/dist/esm/locales/it/refiners/ITExtractYearSuffixRefiner.js.map +1 -0
  135. package/dist/esm/locales/it/refiners/ITMergeDateRangeRefiner.d.ts +1 -1
  136. package/dist/esm/locales/it/refiners/ITMergeDateRangeRefiner.js +2 -2
  137. package/dist/esm/locales/it/refiners/ITMergeDateRangeRefiner.js.map +1 -1
  138. package/dist/esm/locales/it/refiners/ITMergeDateTimeRefiner.d.ts +1 -1
  139. package/dist/esm/locales/it/refiners/ITMergeDateTimeRefiner.js +2 -2
  140. package/dist/esm/locales/it/refiners/ITMergeDateTimeRefiner.js.map +1 -1
  141. package/dist/esm/locales/it/refiners/ITMergeRelativeAfterDateRefiner.d.ts +6 -0
  142. package/dist/esm/locales/it/refiners/ITMergeRelativeAfterDateRefiner.js +27 -0
  143. package/dist/esm/locales/it/refiners/ITMergeRelativeAfterDateRefiner.js.map +1 -0
  144. package/dist/esm/locales/it/refiners/{ITMergeRelativeDateRefiner.d.ts → ITMergeRelativeFollowByDateRefiner.d.ts} +1 -1
  145. package/dist/esm/locales/it/refiners/{ITMergeRelativeDateRefiner.js → ITMergeRelativeFollowByDateRefiner.js} +7 -7
  146. package/dist/esm/locales/it/refiners/ITMergeRelativeFollowByDateRefiner.js.map +1 -0
  147. package/dist/esm/locales/it/refiners/ITUnlikelyFormatFilter.d.ts +6 -0
  148. package/dist/esm/locales/it/refiners/ITUnlikelyFormatFilter.js +23 -0
  149. package/dist/esm/locales/it/refiners/ITUnlikelyFormatFilter.js.map +1 -0
  150. package/dist/esm/results.js +14 -9
  151. package/dist/esm/results.js.map +1 -1
  152. package/package.json +5 -1
  153. package/src/locales/en/constants.ts +1 -1
  154. package/src/locales/en/parsers/ENMonthNameMiddleEndianParser.ts +1 -1
  155. package/src/locales/fr/constants.ts +13 -0
  156. package/src/locales/it/configuration.ts +85 -0
  157. package/src/locales/it/constants.ts +273 -123
  158. package/src/locales/it/index.ts +14 -73
  159. package/src/locales/it/parsers/ITCasualDateParser.ts +20 -12
  160. package/src/locales/it/parsers/ITCasualTimeParser.ts +39 -44
  161. package/src/locales/it/parsers/ITMonthNameLittleEndianParser.ts +6 -6
  162. package/src/locales/it/parsers/ITMonthNameMiddleEndianParser.ts +34 -17
  163. package/src/locales/it/parsers/ITMonthNameParser.ts +9 -8
  164. package/src/locales/it/parsers/ITRelativeDateFormatParser.ts +33 -12
  165. package/src/locales/it/parsers/ITSlashMonthFormatParser.ts +1 -1
  166. package/src/locales/it/parsers/ITTimeExpressionParser.ts +42 -28
  167. package/src/locales/it/parsers/ITTimeUnitAgoFormatParser.ts +9 -8
  168. package/src/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.ts +21 -11
  169. package/src/locales/it/parsers/ITTimeUnitLaterFormatParser.ts +12 -6
  170. package/src/locales/it/parsers/ITTimeUnitWithinFormatParser.ts +28 -8
  171. package/src/locales/it/parsers/ITWeekdayParser.ts +23 -13
  172. package/src/locales/it/parsers/{ITCasualYearMonthDayParser.ts → ITYearMonthDayParser.ts} +19 -8
  173. package/src/locales/it/refiners/ITExtractYearSuffixRefiner.ts +34 -0
  174. package/src/locales/it/refiners/ITMergeDateRangeRefiner.ts +5 -9
  175. package/src/locales/it/refiners/ITMergeDateTimeRefiner.ts +5 -5
  176. package/src/locales/it/refiners/ITMergeRelativeAfterDateRefiner.ts +46 -0
  177. package/src/locales/it/refiners/{ITMergeRelativeDateRefiner.ts → ITMergeRelativeFollowByDateRefiner.ts} +10 -10
  178. package/src/locales/it/refiners/ITUnlikelyFormatFilter.ts +31 -0
  179. package/src/results.ts +40 -9
  180. package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.js.map +0 -1
  181. package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +0 -1
  182. package/dist/esm/locales/it/parsers/ITCasualYearMonthDayParser.js.map +0 -1
  183. package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +0 -1
  184. package/test/calculation_duration.test.ts +0 -165
  185. package/test/calculation_weekdays.test.ts +0 -133
  186. package/test/de/de_casual.test.ts +0 -336
  187. package/test/de/de_dash.test.ts +0 -32
  188. package/test/de/de_month_name_little_endian.test.ts +0 -273
  189. package/test/de/de_time_exp.test.ts +0 -223
  190. package/test/de/de_time_units_casual_relative.test.ts +0 -120
  191. package/test/de/de_time_units_within.test.ts +0 -119
  192. package/test/de/de_weekday.test.ts +0 -158
  193. package/test/de/de_year.test.ts +0 -147
  194. package/test/debugging.test.ts +0 -17
  195. package/test/en/en.test.ts +0 -191
  196. package/test/en/en_casual.test.ts +0 -425
  197. package/test/en/en_inter_std.test.ts +0 -118
  198. package/test/en/en_merging_relative_dates.test.ts +0 -50
  199. package/test/en/en_month.test.ts +0 -339
  200. package/test/en/en_month_name_little_endian.test.ts +0 -448
  201. package/test/en/en_month_name_middle_endian.test.ts +0 -386
  202. package/test/en/en_performance.test.ts +0 -26
  203. package/test/en/en_relative.test.ts +0 -393
  204. package/test/en/en_slash.test.ts +0 -284
  205. package/test/en/en_time_exp.test.ts +0 -535
  206. package/test/en/en_time_units_ago.test.ts +0 -357
  207. package/test/en/en_time_units_casual_relative.test.ts +0 -186
  208. package/test/en/en_time_units_later.test.ts +0 -361
  209. package/test/en/en_time_units_within.test.ts +0 -417
  210. package/test/en/en_timezone_exp.test.ts +0 -410
  211. package/test/en/en_weekday.test.ts +0 -573
  212. package/test/en/en_year.test.ts +0 -138
  213. package/test/en/en_year_month_day.test.ts +0 -101
  214. package/test/en/negative_cases.test.ts +0 -99
  215. package/test/es/es_casual.test.ts +0 -175
  216. package/test/es/es_month_name_little_endian.test.ts +0 -217
  217. package/test/es/es_slash.test.ts +0 -26
  218. package/test/es/es_time_exp.test.ts +0 -175
  219. package/test/es/es_time_units_within.test.ts +0 -119
  220. package/test/fi/fi_casual.test.ts +0 -99
  221. package/test/fi/fi_casual_time.test.ts +0 -56
  222. package/test/fi/fi_month_name_little_endian.test.ts +0 -50
  223. package/test/fi/fi_time_exp.test.ts +0 -39
  224. package/test/fi/fi_time_units_ago.test.ts +0 -93
  225. package/test/fi/fi_time_units_casual_relative.test.ts +0 -117
  226. package/test/fi/fi_time_units_within.test.ts +0 -74
  227. package/test/fi/fi_weekday.test.ts +0 -90
  228. package/test/fr/fr_casual.test.ts +0 -314
  229. package/test/fr/fr_little_endian.test.ts +0 -320
  230. package/test/fr/fr_slash.test.ts +0 -49
  231. package/test/fr/fr_time_exp.test.ts +0 -588
  232. package/test/fr/fr_time_units_ago.test.ts +0 -103
  233. package/test/fr/fr_time_units_casual_relative.test.ts +0 -114
  234. package/test/fr/fr_time_units_within.test.ts +0 -129
  235. package/test/fr/fr_weekday.test.ts +0 -130
  236. package/test/it/it_casual.test.ts +0 -81
  237. package/test/it/it_month_name_little_endian.test.ts +0 -28
  238. package/test/it/it_month_name_middle_endian.test.ts +0 -39
  239. package/test/it/it_time_exp.test.ts +0 -84
  240. package/test/it/it_weekday.test.ts +0 -37
  241. package/test/it/it_year_month_day.test.ts +0 -41
  242. package/test/ja/ja_casual.test.ts +0 -73
  243. package/test/ja/ja_slash_date_format.test.ts +0 -60
  244. package/test/ja/ja_standard.test.ts +0 -235
  245. package/test/ja/ja_time_exp.test.ts +0 -305
  246. package/test/ja/ja_weekday.test.ts +0 -183
  247. package/test/nl/nl_casual.test.ts +0 -408
  248. package/test/nl/nl_month.test.ts +0 -205
  249. package/test/nl/nl_month_name_little_endian.test.ts +0 -358
  250. package/test/nl/nl_relative.test.ts +0 -242
  251. package/test/nl/nl_slash.test.ts +0 -206
  252. package/test/nl/nl_time_exp.test.ts +0 -79
  253. package/test/nl/nl_time_units_ago.test.ts +0 -243
  254. package/test/nl/nl_time_units_casual_relative.test.ts +0 -130
  255. package/test/nl/nl_time_units_later.test.ts +0 -250
  256. package/test/nl/nl_time_units_within.test.ts +0 -225
  257. package/test/nl/nl_weekday.test.ts +0 -216
  258. package/test/pt/pt_casual.test.ts +0 -175
  259. package/test/pt/pt_month_name_little_endian.test.ts +0 -217
  260. package/test/pt/pt_slash.test.ts +0 -26
  261. package/test/pt/pt_time_exp.test.ts +0 -175
  262. package/test/result.test.ts +0 -283
  263. package/test/ru/ru_casual.test.ts +0 -159
  264. package/test/ru/ru_month.test.ts +0 -70
  265. package/test/ru/ru_month_name_little_endian.test.ts +0 -145
  266. package/test/ru/ru_relative.test.ts +0 -107
  267. package/test/ru/ru_time_exp.test.ts +0 -111
  268. package/test/ru/ru_time_units_ago.test.ts +0 -48
  269. package/test/ru/ru_time_units_casual_relative.test.ts +0 -190
  270. package/test/ru/ru_time_units_within.test.ts +0 -16
  271. package/test/ru/ru_weekday.test.ts +0 -52
  272. package/test/sv/sv_casual.test.ts +0 -87
  273. package/test/sv/sv_month_name_little_endian.test.ts +0 -48
  274. package/test/sv/sv_time_units_casual_relative.test.ts +0 -143
  275. package/test/sv/sv_weekday.test.ts +0 -68
  276. package/test/system.test.ts +0 -247
  277. package/test/system_timezone.test.ts +0 -284
  278. package/test/test_util.ts +0 -135
  279. package/test/uk/uk_casual.test.ts +0 -153
  280. package/test/uk/uk_month.test.ts +0 -70
  281. package/test/uk/uk_month_name_little_endian.test.ts +0 -148
  282. package/test/uk/uk_relative.test.ts +0 -107
  283. package/test/uk/uk_time_exp.test.ts +0 -111
  284. package/test/uk/uk_time_units_ago.test.ts +0 -48
  285. package/test/uk/uk_time_units_casual_relative.test.ts +0 -142
  286. package/test/uk/uk_time_units_within.test.ts +0 -23
  287. package/test/uk/uk_weekday.test.ts +0 -52
  288. package/test/vi/vi_casual.test.ts +0 -84
  289. package/test/vi/vi_casual_time.test.ts +0 -77
  290. package/test/vi/vi_date_range.test.ts +0 -61
  291. package/test/vi/vi_forward_date.test.ts +0 -45
  292. package/test/vi/vi_month_year.test.ts +0 -40
  293. package/test/vi/vi_negative_cases.test.ts +0 -60
  294. package/test/vi/vi_slash.test.ts +0 -36
  295. package/test/vi/vi_standard.test.ts +0 -86
  296. package/test/vi/vi_strict.test.ts +0 -67
  297. package/test/vi/vi_time_exp.test.ts +0 -99
  298. package/test/vi/vi_time_units_ago.test.ts +0 -56
  299. package/test/vi/vi_time_units_casual_relative.test.ts +0 -56
  300. package/test/vi/vi_time_units_later.test.ts +0 -43
  301. package/test/vi/vi_time_units_within.test.ts +0 -24
  302. package/test/vi/vi_weekday.test.ts +0 -77
  303. package/test/vi/vi_year.test.ts +0 -42
  304. package/test/zh/hans/zh_hans_ago.test.ts +0 -58
  305. package/test/zh/hans/zh_hans_casual.test.ts +0 -242
  306. package/test/zh/hans/zh_hans_date.test.ts +0 -116
  307. package/test/zh/hans/zh_hans_deadline.test.ts +0 -175
  308. package/test/zh/hans/zh_hans_time_exp.test.ts +0 -508
  309. package/test/zh/hans/zh_hans_weekday.test.ts +0 -219
  310. package/test/zh/hant/zh_hant_ago.test.ts +0 -58
  311. package/test/zh/hant/zh_hant_casual.test.ts +0 -260
  312. package/test/zh/hant/zh_hant_date.test.ts +0 -116
  313. package/test/zh/hant/zh_hant_deadline.test.ts +0 -136
  314. package/test/zh/hant/zh_hant_time_exp.test.ts +0 -226
  315. package/test/zh/hant/zh_hant_weekday.test.ts +0 -175
  316. package/test/zh/zh.test.ts +0 -36
  317. package/tsconfig.build.esm.json +0 -8
  318. package/tsconfig.build.json +0 -10
  319. package/tsconfig.json +0 -29
@@ -1,84 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase } from "../test_util";
3
-
4
- test("Test - h\u00f4m nay (today)", () => {
5
- testSingleCase(chrono.vi, "Cu\u1ed9c h\u1ecdn h\u00f4m nay.", new Date(2012, 7, 10, 12), (r) => {
6
- expect(r.index).toBe(9);
7
- expect(r.text).toBe("h\u00f4m nay");
8
- expect(r.start.get("year")).toBe(2012);
9
- expect(r.start.get("month")).toBe(8);
10
- expect(r.start.get("day")).toBe(10);
11
- expect(r.start).toBeDate(new Date(2012, 7, 10, 12));
12
- });
13
- });
14
-
15
- test("Test - h\u00f4m qua (yesterday)", () => {
16
- testSingleCase(chrono.vi, "H\u1ed9i ngh\u1ecb h\u00f4m qua.", new Date(2012, 7, 10, 12), (r) => {
17
- expect(r.index).toBe(9);
18
- expect(r.text).toBe("h\u00f4m qua");
19
- expect(r.start.get("year")).toBe(2012);
20
- expect(r.start.get("month")).toBe(8);
21
- expect(r.start.get("day")).toBe(9);
22
- expect(r.start).toBeDate(new Date(2012, 7, 9, 12));
23
- });
24
-
25
- testSingleCase(chrono.vi, "h\u00f4m qua", new Date(2012, 7, 1, 12), (r) => {
26
- expect(r.start.get("month")).toBe(7); // July — crosses month boundary
27
- expect(r.start.get("day")).toBe(31);
28
- });
29
- });
30
-
31
- test("Test - ng\u00e0y mai (tomorrow)", () => {
32
- testSingleCase(chrono.vi, "L\u1ecbch ng\u00e0y mai.", new Date(2012, 7, 10, 12), (r) => {
33
- expect(r.index).toBe(5);
34
- expect(r.text).toBe("ng\u00e0y mai");
35
- expect(r.start.get("day")).toBe(11);
36
- expect(r.start.get("month")).toBe(8);
37
- expect(r.start).toBeDate(new Date(2012, 7, 11, 12));
38
- });
39
-
40
- testSingleCase(chrono.vi, "ng\u00e0y mai", new Date(2012, 7, 31, 12), (r) => {
41
- expect(r.start.get("month")).toBe(9); // Sept — crosses month boundary
42
- expect(r.start.get("day")).toBe(1);
43
- });
44
- });
45
-
46
- test("Test - ng\u00e0y kia (day after tomorrow)", () => {
47
- testSingleCase(chrono.vi, "ng\u00e0y kia", new Date(2012, 7, 10, 12), (r) => {
48
- expect(r.text).toBe("ng\u00e0y kia");
49
- expect(r.start.get("day")).toBe(12);
50
- });
51
- });
52
-
53
- test("Test - b\u00e2y gi\u1edd / l\u00fac n\u00e0y (now)", () => {
54
- testSingleCase(chrono.vi, "b\u00e2y gi\u1edd", new Date(2012, 7, 10, 8, 9, 10, 11), (r) => {
55
- expect(r.start.get("year")).toBe(2012);
56
- expect(r.start.get("month")).toBe(8);
57
- expect(r.start.get("day")).toBe(10);
58
- expect(r.start.get("hour")).toBe(8);
59
- expect(r.start.get("minute")).toBe(9);
60
- expect(r.start.get("second")).toBe(10);
61
- expect(r.start).toBeDate(new Date(2012, 7, 10, 8, 9, 10, 11));
62
- });
63
-
64
- testSingleCase(chrono.vi, "l\u00fac n\u00e0y", new Date(2012, 7, 10, 8, 9, 10, 11), (r) => {
65
- expect(r.start.get("hour")).toBe(8);
66
- });
67
- });
68
-
69
- test("Test - hôm kia (day before yesterday, -2)", () => {
70
- testSingleCase(chrono.vi, "hôm kia", new Date(2012, 7, 10, 12), (r) => {
71
- expect(r.start.get("year")).toBe(2012);
72
- expect(r.start.get("month")).toBe(8);
73
- expect(r.start.get("day")).toBe(8); // 10 - 2
74
- });
75
- });
76
-
77
- test("Test - isCertain: casual date sets day/month/year certain, hour not", () => {
78
- testSingleCase(chrono.vi, "hôm nay", new Date(2012, 7, 10, 12), (r) => {
79
- expect(r.start.isCertain("day")).toBe(true);
80
- expect(r.start.isCertain("month")).toBe(true);
81
- expect(r.start.isCertain("year")).toBe(true);
82
- expect(r.start.isCertain("hour")).toBe(false);
83
- });
84
- });
@@ -1,77 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12); // 2012-08-10 noon
5
-
6
- test("Test - sáng (morning, AM)", () => {
7
- // "buổi sáng" is a time-of-day modifier; test it with an explicit time expression
8
- testSingleCase(chrono.vi, "7 giờ sáng", REF, (r) => {
9
- expect(r.start.get("hour")).toBe(7);
10
- expect(r.start.get("meridiem")).toBe(0); // AM
11
- });
12
- // standalone "sáng" sets implied hour=9, AM
13
- testSingleCase(chrono.vi, "hôm nay buổi sáng", new Date(2012, 7, 10, 6), (r) => {
14
- expect(r.start.get("hour")).toBe(9);
15
- expect(r.start.get("meridiem")).toBe(0); // AM
16
- });
17
- });
18
-
19
- test("Test - trưa (noon, PM)", () => {
20
- testSingleCase(chrono.vi, "buổi trưa", REF, (r) => {
21
- expect(r.start.get("hour")).toBe(12);
22
- expect(r.start.get("meridiem")).toBe(1); // PM — noon is 12:00 PM
23
- });
24
- });
25
-
26
- test("Test - chiều (afternoon, PM)", () => {
27
- testSingleCase(chrono.vi, "buổi chiều", REF, (r) => {
28
- expect(r.start.get("hour")).toBe(15);
29
- expect(r.start.get("meridiem")).toBe(1); // PM
30
- });
31
- });
32
-
33
- test("Test - tối (evening, PM)", () => {
34
- testSingleCase(chrono.vi, "buổi tối", REF, (r) => {
35
- expect(r.start.get("hour")).toBe(19);
36
- expect(r.start.get("meridiem")).toBe(1); // PM
37
- });
38
- });
39
-
40
- test("Test - đêm (late night, PM)", () => {
41
- testSingleCase(chrono.vi, "buổi đêm", REF, (r) => {
42
- expect(r.start.get("hour")).toBe(22);
43
- expect(r.start.get("meridiem")).toBe(1); // PM
44
- });
45
-
46
- // Standalone "đêm" without "buổi" prefix — works after removing \b from pattern
47
- testSingleCase(chrono.vi, "đêm", REF, (r) => {
48
- expect(r.start.get("hour")).toBe(22);
49
- expect(r.start.get("meridiem")).toBe(1); // PM
50
- });
51
- });
52
-
53
- test("Test - nửa đêm (midnight, AM)", () => {
54
- testSingleCase(chrono.vi, "nửa đêm", REF, (r) => {
55
- expect(r.start.get("hour")).toBe(0);
56
- expect(r.start.get("meridiem")).toBe(0); // AM
57
- });
58
- });
59
-
60
- test("Test - bình minh / sáng sớm (dawn)", () => {
61
- testSingleCase(chrono.vi, "bình minh", REF, (r) => {
62
- expect(r.start.get("hour")).toBe(6);
63
- expect(r.start.get("meridiem")).toBe(0); // AM
64
- });
65
-
66
- testSingleCase(chrono.vi, "sáng sớm", REF, (r) => {
67
- expect(r.start.get("hour")).toBe(6);
68
- expect(r.start.get("meridiem")).toBe(0); // AM
69
- });
70
- });
71
-
72
- test("Test - time keyword merges with date", () => {
73
- testSingleCase(chrono.vi, "hôm nay buổi chiều", REF, (r) => {
74
- expect(r.start.get("day")).toBe(10);
75
- expect(r.start.get("hour")).toBe(15);
76
- });
77
- });
@@ -1,61 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12); // 2012-08-10 noon
5
-
6
- test("Test - từ ngày X đến ngày Y (đến connector)", () => {
7
- testSingleCase(chrono.vi, "từ ngày 5 tháng 8 đến ngày 10 tháng 8 năm 2012", REF, (r) => {
8
- expect(r.start.get("day")).toBe(5);
9
- expect(r.start.get("month")).toBe(8);
10
- expect(r.start.get("year")).toBe(2012);
11
-
12
- expect(r.end).not.toBeNull();
13
- expect(r.end.get("day")).toBe(10);
14
- expect(r.end.get("month")).toBe(8);
15
- expect(r.end.get("year")).toBe(2012);
16
- });
17
- });
18
-
19
- test("Test - em dash separator (–)", () => {
20
- testSingleCase(chrono.vi, "ngày 1 tháng 4 – ngày 30 tháng 4 năm 2000", REF, (r) => {
21
- expect(r.start.get("day")).toBe(1);
22
- expect(r.start.get("month")).toBe(4);
23
-
24
- expect(r.end).not.toBeNull();
25
- expect(r.end.get("day")).toBe(30);
26
- expect(r.end.get("month")).toBe(4);
27
- expect(r.end.get("year")).toBe(2000);
28
- });
29
- });
30
-
31
- test("Test - hyphen separator (-)", () => {
32
- testSingleCase(chrono.vi, "ngày 3 tháng 9 - ngày 5 tháng 9 năm 1945", REF, (r) => {
33
- expect(r.start.get("day")).toBe(3);
34
- expect(r.start.get("month")).toBe(9);
35
- expect(r.start.get("year")).toBe(1945);
36
-
37
- expect(r.end).not.toBeNull();
38
- expect(r.end.get("day")).toBe(5);
39
- expect(r.end.get("month")).toBe(9);
40
- expect(r.end.get("year")).toBe(1945);
41
- });
42
- });
43
-
44
- test("Test - tới connector", () => {
45
- testSingleCase(chrono.vi, "tháng 3 tới tháng 5 năm 1975", REF, (r) => {
46
- expect(r.start.get("month")).toBe(3);
47
-
48
- expect(r.end).not.toBeNull();
49
- expect(r.end.get("month")).toBe(5);
50
- expect(r.end.get("year")).toBe(1975);
51
- });
52
- });
53
-
54
- test("Test - start is before end", () => {
55
- testSingleCase(chrono.vi, "ngày 1 tháng 1 đến ngày 31 tháng 12 năm 2020", REF, (r) => {
56
- expect(r.end).not.toBeNull();
57
- const startDate = r.start.date();
58
- const endDate = r.end.date();
59
- expect(startDate.getTime()).toBeLessThan(endDate.getTime());
60
- });
61
- });
@@ -1,45 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase } from "../test_util";
3
-
4
- test("Test - forwardDate: time-only rolls to next day when ref is past", () => {
5
- // "7 gi\u1edd s\u00e1ng" = 7:00 AM; ref is 8:00 AM same day \u2192 next day
6
- testSingleCase(chrono.vi, "7 gi\u1edd s\u00e1ng", new Date(2012, 7, 10, 8, 0), { forwardDate: true }, (r) => {
7
- expect(r.start.get("day")).toBe(11);
8
- expect(r.start.get("hour")).toBe(7);
9
- });
10
- });
11
-
12
- test("Test - forwardDate: weekday rolls to next occurrence", () => {
13
- // REF = Tuesday Aug 14, 2012; "th\u1ee9 hai" (Monday) last was Aug 13 \u2192 next Monday = Aug 20
14
- testSingleCase(chrono.vi, "th\u1ee9 hai", new Date(2012, 7, 14, 12), { forwardDate: true }, (r) => {
15
- expect(r.start.get("weekday")).toBe(1);
16
- expect(r.start.get("day")).toBe(20);
17
- expect(r.start.get("month")).toBe(8);
18
- });
19
- });
20
-
21
- test("Test - forwardDate: slash date without year rolls to next year", () => {
22
- // "15/3" = March 15; ref is Aug 10 (past March) \u2192 year 2013
23
- testSingleCase(chrono.vi, "15/3", new Date(2012, 7, 10, 12), { forwardDate: true }, (r) => {
24
- expect(r.start.get("day")).toBe(15);
25
- expect(r.start.get("month")).toBe(3);
26
- expect(r.start.get("year")).toBe(2013);
27
- });
28
- });
29
-
30
- test("Test - forwardDate: same weekday as ref stays on same day", () => {
31
- // REF = Thursday Aug 9, 2012; "thứ năm" (Thursday) = same day → stays on Aug 9 (not past)
32
- testSingleCase(chrono.vi, "th\u1ee9 n\u0103m", new Date(2012, 7, 9, 12), { forwardDate: true }, (r) => {
33
- expect(r.start.get("weekday")).toBe(4);
34
- expect(r.start.get("day")).toBe(9);
35
- expect(r.start.get("month")).toBe(8);
36
- });
37
- });
38
-
39
- test("Test - forwardDate: month without year rolls to next year", () => {
40
- // "th\u00e1ng 3" = March; ref is Aug 10 \u2192 next March = 2013
41
- testSingleCase(chrono.vi, "th\u00e1ng 3", new Date(2012, 7, 10, 12), { forwardDate: true }, (r) => {
42
- expect(r.start.get("month")).toBe(3);
43
- expect(r.start.get("year")).toBe(2013);
44
- });
45
- });
@@ -1,40 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase, testUnexpectedResult } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12); // 2012-08-10
5
-
6
- test("Test - tháng M năm YYYY", () => {
7
- testSingleCase(chrono.vi, "tháng 4 năm 1975", REF, (r) => {
8
- expect(r.text).toBe("tháng 4 năm 1975");
9
- expect(r.start.get("month")).toBe(4);
10
- expect(r.start.get("year")).toBe(1975);
11
- expect(r.start.isCertain("month")).toBe(true);
12
- expect(r.start.isCertain("year")).toBe(true);
13
- expect(r.start.isCertain("day")).toBe(false); // day is implied
14
- });
15
-
16
- testSingleCase(chrono.vi, "tháng 1 năm 1863", REF, (r) => {
17
- expect(r.start.get("month")).toBe(1);
18
- expect(r.start.get("year")).toBe(1863);
19
- });
20
- });
21
-
22
- test("Test - tháng M/YYYY (slash separator)", () => {
23
- testSingleCase(chrono.vi, "tháng 3/1975", REF, (r) => {
24
- expect(r.start.get("month")).toBe(3);
25
- expect(r.start.get("year")).toBe(1975);
26
- });
27
- });
28
-
29
- test("Test - tháng M only (implies current year)", () => {
30
- testSingleCase(chrono.vi, "tháng 3", REF, (r) => {
31
- expect(r.start.get("month")).toBe(3);
32
- expect(r.start.isCertain("year")).toBe(false); // year implied from reference
33
- expect(r.start.get("year")).toBe(2012);
34
- });
35
- });
36
-
37
- test("Test - negative: month > 12 rejected", () => {
38
- testUnexpectedResult(chrono.vi, "tháng 13", REF);
39
- testUnexpectedResult(chrono.vi, "tháng 0", REF);
40
- });
@@ -1,60 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testUnexpectedResult } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12); // 2012-08-10
5
-
6
- test("Test - invalid day rejected", () => {
7
- testUnexpectedResult(chrono.vi, "ngày 0 tháng 4 năm 2000", REF);
8
- // "ngày 32 tháng 4" — VIStandardParser skips "ngày 3" and sub-matches "2 tháng 4"
9
- // (day bounds are not pre-validated in the regex). This is known parser behaviour.
10
- });
11
-
12
- test("Test - invalid month rejected", () => {
13
- testUnexpectedResult(chrono.vi, "tháng 0", REF);
14
- testUnexpectedResult(chrono.vi, "tháng 13", REF);
15
- testUnexpectedResult(chrono.vi, "ngày 1 tháng 13", REF);
16
- });
17
-
18
- test("Test - invalid slash date rejected", () => {
19
- testUnexpectedResult(chrono.vi, "32/13/2020", REF);
20
- });
21
-
22
- test("Test - bare 4-digit number without năm prefix is not a year", () => {
23
- testUnexpectedResult(chrono.vi, "Có 1975 người tham gia.", REF);
24
- });
25
-
26
- test("Test - phone number not parsed as date", () => {
27
- testUnexpectedResult(chrono.vi, "0912345678", REF);
28
- });
29
-
30
- test("Test - bare numbers not parsed as dates", () => {
31
- testUnexpectedResult(chrono.vi, "3", REF);
32
- testUnexpectedResult(chrono.vi, "11", REF);
33
- testUnexpectedResult(chrono.vi, "0.5", REF);
34
- testUnexpectedResult(chrono.vi, "35.49", REF);
35
- testUnexpectedResult(chrono.vi, "12.53%", REF);
36
- });
37
-
38
- test("Test - currency and measurement not parsed as dates", () => {
39
- testUnexpectedResult(chrono.vi, "$1,194.09", REF);
40
- testUnexpectedResult(chrono.vi, "at 6.5 kilograms", REF);
41
- });
42
-
43
- test("Test - version numbers not parsed as dates", () => {
44
- testUnexpectedResult(chrono.vi, "1.1.3", REF);
45
- testUnexpectedResult(chrono.vi, "1.10.30", REF);
46
- });
47
-
48
- test("Test - hyphenated number ranges not parsed as dates", () => {
49
- testUnexpectedResult(chrono.vi, "1-2", REF);
50
- testUnexpectedResult(chrono.vi, "1-2-3", REF);
51
- });
52
-
53
- test("Test - URL-encoded strings not parsed as dates", () => {
54
- testUnexpectedResult(chrono.vi, "%e7%b7%8a", REF);
55
- });
56
-
57
- test("Test - impossible minute rejected", () => {
58
- testUnexpectedResult(chrono.vi, "7 giờ 61 phút", REF);
59
- testUnexpectedResult(chrono.vi, "7 giờ 99 phút", REF);
60
- });
@@ -1,36 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12);
5
-
6
- test("Test - DD/MM/YYYY (little-endian)", () => {
7
- testSingleCase(chrono.vi, "Ng\u00e0y 30/04/1975.", REF, (r) => {
8
- expect(r.index).toBe(5);
9
- expect(r.start.get("day")).toBe(30);
10
- expect(r.start.get("month")).toBe(4);
11
- expect(r.start.get("year")).toBe(1975);
12
- });
13
-
14
- testSingleCase(chrono.vi, "H\u1ed9i ngh\u1ecb 01/01/1954", REF, (r) => {
15
- expect(r.index).toBe(9);
16
- expect(r.start.get("day")).toBe(1);
17
- expect(r.start.get("month")).toBe(1);
18
- expect(r.start.get("year")).toBe(1954);
19
- });
20
- });
21
-
22
- test("Test - D/M/YYYY (no zero padding)", () => {
23
- testSingleCase(chrono.vi, "3/5/1968", REF, (r) => {
24
- expect(r.start.get("day")).toBe(3);
25
- expect(r.start.get("month")).toBe(5);
26
- expect(r.start.get("year")).toBe(1968);
27
- });
28
- });
29
-
30
- test("Test - ISO 2024-03-15 also parses", () => {
31
- testSingleCase(chrono.vi, "Ng\u00e0y 2024-03-15 l\u00e0 quan tr\u1ecdng.", REF, (r) => {
32
- expect(r.start.get("year")).toBe(2024);
33
- expect(r.start.get("month")).toBe(3);
34
- expect(r.start.get("day")).toBe(15);
35
- });
36
- });
@@ -1,86 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase, testUnexpectedResult } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12, 0, 0); // 2012-08-10
5
-
6
- test("Test - ng\u00e0y D th\u00e1ng M n\u0103m YYYY (full with ng\u00e0y prefix)", () => {
7
- testSingleCase(
8
- chrono.vi,
9
- "Ng\u00e0y 30 th\u00e1ng 4 n\u0103m 1975 l\u00e0 ng\u00e0y gi\u1ea3i ph\u00f3ng.",
10
- REF,
11
- (r) => {
12
- expect(r.start.get("year")).toBe(1975);
13
- expect(r.start.get("month")).toBe(4);
14
- expect(r.start.get("day")).toBe(30);
15
- expect(r.start.isCertain("year")).toBe(true);
16
- expect(r.start.isCertain("month")).toBe(true);
17
- expect(r.start.isCertain("day")).toBe(true);
18
- }
19
- );
20
-
21
- testSingleCase(
22
- chrono.vi,
23
- "Hi\u1ec7p \u0111\u1ecbnh \u0111\u01b0\u1ee3c k\u00fd ng\u00e0y 27 th\u00e1ng 1 n\u0103m 1973.",
24
- REF,
25
- (r) => {
26
- expect(r.text).toBe("ng\u00e0y 27 th\u00e1ng 1 n\u0103m 1973");
27
- expect(r.start.get("year")).toBe(1973);
28
- expect(r.start.get("month")).toBe(1);
29
- expect(r.start.get("day")).toBe(27);
30
- }
31
- );
32
-
33
- testSingleCase(chrono.vi, "ng\u00e0y 2 th\u00e1ng 9 n\u0103m 1945", REF, (r) => {
34
- expect(r.start.get("year")).toBe(1945);
35
- expect(r.start.get("month")).toBe(9);
36
- expect(r.start.get("day")).toBe(2);
37
- });
38
- });
39
-
40
- test("Test - D th\u00e1ng M n\u0103m YYYY (no ng\u00e0y prefix)", () => {
41
- testSingleCase(
42
- chrono.vi,
43
- "7 th\u00e1ng 5 n\u0103m 1954 l\u00e0 ng\u00e0y ch\u1ea5m d\u1ee9t tr\u1eadn \u0110i\u1ec7n Bi\u00ean Ph\u1ee7.",
44
- REF,
45
- (r) => {
46
- expect(r.start.get("day")).toBe(7);
47
- expect(r.start.get("month")).toBe(5);
48
- expect(r.start.get("year")).toBe(1954);
49
- }
50
- );
51
-
52
- testSingleCase(chrono.vi, "1 th\u00e1ng 1 n\u0103m 1863", REF, (r) => {
53
- expect(r.start.get("day")).toBe(1);
54
- expect(r.start.get("month")).toBe(1);
55
- expect(r.start.get("year")).toBe(1863);
56
- });
57
- });
58
-
59
- test("Test - Date without year implies closest year", () => {
60
- testSingleCase(chrono.vi, "ng\u00e0y 15 th\u00e1ng 3", REF, (r) => {
61
- expect(r.start.get("day")).toBe(15);
62
- expect(r.start.get("month")).toBe(3);
63
- expect(r.start.isCertain("year")).toBe(false);
64
- expect(r.start.isCertain("day")).toBe(true);
65
- expect(r.start.isCertain("month")).toBe(true);
66
- });
67
- });
68
-
69
- test("Test - index position is correct", () => {
70
- testSingleCase(
71
- chrono.vi,
72
- "S\u1ef1 ki\u1ec7n ng\u00e0y 30 th\u00e1ng 4 n\u0103m 1975 quan tr\u1ecdng.",
73
- REF,
74
- (r) => {
75
- expect(r.index).toBe(8);
76
- expect(r.text).toBe("ng\u00e0y 30 th\u00e1ng 4 n\u0103m 1975");
77
- expect(r.start.get("year")).toBe(1975);
78
- }
79
- );
80
- });
81
-
82
- test("Test - negative: invalid month rejected", () => {
83
- // tháng 13 is rejected; without a year, no other parser fires
84
- testUnexpectedResult(chrono.vi, "ngày 1 tháng 13", REF);
85
- // "ngày 32 tháng 4" partially matches as "2 tháng 4" — day bounds enforced by VIStandardParser (day > 31)
86
- });
@@ -1,67 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase, testUnexpectedResult } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12); // 2012-08-10
5
-
6
- test("Test - Strict rejects casual date expressions", () => {
7
- testUnexpectedResult(chrono.vi.strict, "h\u00f4m nay", REF);
8
- testUnexpectedResult(chrono.vi.strict, "h\u00f4m qua", REF);
9
- testUnexpectedResult(chrono.vi.strict, "ng\u00e0y mai", REF);
10
- testUnexpectedResult(chrono.vi.strict, "ng\u00e0y kia", REF);
11
- });
12
-
13
- test("Test - Strict rejects casual time-of-day expressions", () => {
14
- testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i s\u00e1ng", REF);
15
- testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i tr\u01b0a", REF);
16
- testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i chi\u1ec1u", REF);
17
- testUnexpectedResult(chrono.vi.strict, "bu\u1ed5i t\u1ed1i", REF);
18
- });
19
-
20
- test("Test - Strict rejects casual relative expressions", () => {
21
- testUnexpectedResult(chrono.vi.strict, "tu\u1ea7n n\u00e0y", REF);
22
- testUnexpectedResult(chrono.vi.strict, "th\u00e1ng tr\u01b0\u1edbc", REF);
23
- testUnexpectedResult(chrono.vi.strict, "n\u0103m sau", REF);
24
- });
25
-
26
- test("Test - Strict rejects weekday-only expressions", () => {
27
- testUnexpectedResult(chrono.vi.strict, "th\u1ee9 hai", REF);
28
- testUnexpectedResult(chrono.vi.strict, "ch\u1ee7 nh\u1eadt", REF);
29
- });
30
-
31
- test("Test - Strict accepts standard full dates and times", () => {
32
- testSingleCase(chrono.vi.strict, "ng\u00e0y 30 th\u00e1ng 4 n\u0103m 1975", REF, (r) => {
33
- expect(r.start.get("year")).toBe(1975);
34
- expect(r.start.get("month")).toBe(4);
35
- expect(r.start.get("day")).toBe(30);
36
- });
37
-
38
- testSingleCase(chrono.vi.strict, "l\u00fac 7 gi\u1edd 30 ph\u00fat", REF, (r) => {
39
- expect(r.start.get("hour")).toBe(7);
40
- expect(r.start.get("minute")).toBe(30);
41
- });
42
- });
43
-
44
- test("Test - Strict accepts slash dates", () => {
45
- testSingleCase(chrono.vi.strict, "30/4/1975", REF, (r) => {
46
- expect(r.start.get("day")).toBe(30);
47
- expect(r.start.get("month")).toBe(4);
48
- expect(r.start.get("year")).toBe(1975);
49
- });
50
-
51
- testSingleCase(chrono.vi.strict, "15/3", REF, (r) => {
52
- expect(r.start.get("day")).toBe(15);
53
- expect(r.start.get("month")).toBe(3);
54
- });
55
- });
56
-
57
- test("Test - Strict accepts explicit time unit expressions", () => {
58
- testSingleCase(chrono.vi.strict, "3 ng\u00e0y tr\u01b0\u1edbc", REF, (r) => {
59
- expect(r.start.get("day")).toBe(7);
60
- expect(r.start.get("month")).toBe(8);
61
- });
62
-
63
- testSingleCase(chrono.vi.strict, "2 tu\u1ea7n sau", REF, (r) => {
64
- expect(r.start.get("day")).toBe(24);
65
- expect(r.start.get("month")).toBe(8);
66
- });
67
- });
@@ -1,99 +0,0 @@
1
- import * as chrono from "../../src/";
2
- import { testSingleCase } from "../test_util";
3
-
4
- const REF = new Date(2012, 7, 10, 12);
5
-
6
- test("Test - X gi\u1edd", () => {
7
- testSingleCase(chrono.vi, "Cu\u1ed9c h\u1ecdn l\u00fac 7 gi\u1edd.", REF, (r) => {
8
- expect(r.index).toBe(9);
9
- expect(r.text).toBe("l\u00fac 7 gi\u1edd");
10
- expect(r.start.get("hour")).toBe(7);
11
- expect(r.start.get("minute")).toBe(0);
12
- });
13
-
14
- testSingleCase(chrono.vi, "7 gi\u1edd s\u00e1ng", REF, (r) => {
15
- expect(r.start.get("hour")).toBe(7);
16
- expect(r.start.get("meridiem")).toBe(0); // AM
17
- });
18
-
19
- testSingleCase(chrono.vi, "7 gi\u1edd t\u1ed1i", REF, (r) => {
20
- expect(r.start.get("hour")).toBe(19);
21
- });
22
- });
23
-
24
- test("Test - X gi\u1edd Y ph\u00fat", () => {
25
- testSingleCase(chrono.vi, "l\u00fac 7 gi\u1edd 30 ph\u00fat", REF, (r) => {
26
- expect(r.start.get("hour")).toBe(7);
27
- expect(r.start.get("minute")).toBe(30);
28
- });
29
-
30
- testSingleCase(chrono.vi, "v\u00e0o 15 gi\u1edd 45 ph\u00fat", REF, (r) => {
31
- expect(r.start.get("hour")).toBe(15);
32
- expect(r.start.get("minute")).toBe(45);
33
- });
34
- });
35
-
36
- test("Test - colon format HH:MM", () => {
37
- testSingleCase(chrono.vi, "H\u1ecdn l\u00fac 15:30.", REF, (r) => {
38
- expect(r.start.get("hour")).toBe(15);
39
- expect(r.start.get("minute")).toBe(30);
40
- });
41
- });
42
-
43
- test("Test - date + time combined", () => {
44
- testSingleCase(chrono.vi, "ng\u00e0y 30 th\u00e1ng 4 n\u0103m 1975 l\u00fac 11 gi\u1edd", REF, (r) => {
45
- expect(r.start.get("day")).toBe(30);
46
- expect(r.start.get("month")).toBe(4);
47
- expect(r.start.get("year")).toBe(1975);
48
- expect(r.start.get("hour")).toBe(11);
49
- });
50
- });
51
-
52
- test("Test - meridiem: s\u00e1ng/chi\u1ec1u/t\u1ed1i/\u0111\u00eam", () => {
53
- testSingleCase(chrono.vi, "9 gi\u1edd s\u00e1ng", REF, (r) => {
54
- expect(r.start.get("hour")).toBe(9);
55
- expect(r.start.get("meridiem")).toBe(0); // AM
56
- });
57
- testSingleCase(chrono.vi, "3 gi\u1edd chi\u1ec1u", REF, (r) => {
58
- expect(r.start.get("hour")).toBe(15);
59
- });
60
- testSingleCase(chrono.vi, "10 gi\u1edd \u0111\u00eam", REF, (r) => {
61
- expect(r.start.get("hour")).toBe(22);
62
- });
63
- });
64
-
65
- test("Test - trưa meridiem: X giờ trưa → PM (hour + 12)", () => {
66
- // trưa = noon/midday — times expressed with trưa are PM
67
- testSingleCase(chrono.vi, "1 giờ trưa", REF, (r) => {
68
- expect(r.start.get("hour")).toBe(13);
69
- expect(r.start.get("meridiem")).toBe(1); // PM
70
- });
71
- testSingleCase(chrono.vi, "11 giờ trưa", REF, (r) => {
72
- expect(r.start.get("hour")).toBe(11);
73
- expect(r.start.get("meridiem")).toBe(0); // AM — 11 giờ trưa = approaching noon
74
- });
75
- // 12 giờ trưa = noon, no offset applied (12 < 12 is false)
76
- testSingleCase(chrono.vi, "12 giờ trưa", REF, (r) => {
77
- expect(r.start.get("hour")).toBe(12);
78
- expect(r.start.get("meridiem")).toBe(1); // PM
79
- });
80
- });
81
-
82
- test("Test - 12 giờ sáng = midnight (00:00)", () => {
83
- testSingleCase(chrono.vi, "12 giờ sáng", REF, (r) => {
84
- expect(r.start.get("hour")).toBe(0);
85
- expect(r.start.get("meridiem")).toBe(0); // AM
86
- });
87
- });
88
-
89
- test("Test - isCertain: hour and meridiem certainty", () => {
90
- testSingleCase(chrono.vi, "lúc 7 giờ", REF, (r) => {
91
- expect(r.start.isCertain("hour")).toBe(true);
92
- expect(r.start.isCertain("meridiem")).toBe(false);
93
- });
94
-
95
- testSingleCase(chrono.vi, "7 giờ sáng", REF, (r) => {
96
- expect(r.start.isCertain("hour")).toBe(true);
97
- expect(r.start.isCertain("meridiem")).toBe(true);
98
- });
99
- });