@wener/common 2.0.3 → 2.0.6

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 (312) hide show
  1. package/lib/ai/qwen3vl/index.js +1 -1
  2. package/lib/ai/qwen3vl/utils.js +15 -15
  3. package/lib/ai/qwen3vl/utils.js.map +1 -1
  4. package/lib/ai/vision/DocLayoutElementTypeSchema.js +22 -22
  5. package/lib/ai/vision/ImageAnnotationSchema.js +63 -47
  6. package/lib/ai/vision/index.js +2 -2
  7. package/lib/ai/vision/resolveImageAnnotation.js +81 -95
  8. package/lib/cn/ChineseResidentIdNo.js +55 -41
  9. package/lib/cn/ChineseResidentIdNo.js.map +1 -1
  10. package/lib/cn/ChineseResidentIdNo.mod.js +6 -1
  11. package/lib/cn/ChineseResidentIdNo.test.js +22 -21
  12. package/lib/cn/DivisionCode.js +220 -235
  13. package/lib/cn/DivisionCode.mod.js +6 -1
  14. package/lib/cn/DivisionCode.test.js +92 -121
  15. package/lib/cn/Mod11.js +18 -37
  16. package/lib/cn/Mod11.js.map +1 -1
  17. package/lib/cn/Mod31.js +23 -41
  18. package/lib/cn/UnifiedSocialCreditCode.js +143 -137
  19. package/lib/cn/UnifiedSocialCreditCode.mod.js +6 -1
  20. package/lib/cn/UnifiedSocialCreditCode.test.js +21 -15
  21. package/lib/cn/formatChineseAmount.js +46 -71
  22. package/lib/cn/index.js +6 -6
  23. package/lib/cn/mod.js +5 -3
  24. package/lib/cn/parseChineseNumber.js +81 -85
  25. package/lib/cn/parseChineseNumber.test.js +183 -261
  26. package/lib/cn/pinyin/cartesianProduct.js +19 -19
  27. package/lib/cn/pinyin/cartesianProduct.test.js +78 -178
  28. package/lib/cn/pinyin/loader.js +13 -11
  29. package/lib/cn/pinyin/preload.js +2 -1
  30. package/lib/cn/pinyin/toPinyin.test.js +149 -161
  31. package/lib/cn/pinyin/toPinyinPure.js +28 -23
  32. package/lib/cn/pinyin/transform.js +11 -11
  33. package/lib/cn/types.d.js +2 -2
  34. package/lib/consola/createStandardConsolaReporter.js +14 -15
  35. package/lib/consola/formatLogObject.js +149 -133
  36. package/lib/consola/formatLogObject.js.map +1 -1
  37. package/lib/consola/formatLogObject.test.js +167 -178
  38. package/lib/consola/index.js +2 -2
  39. package/lib/data/formatSort.js +14 -12
  40. package/lib/data/formatSort.test.js +33 -33
  41. package/lib/data/index.js +3 -3
  42. package/lib/data/maybeNumber.js +23 -23
  43. package/lib/data/maybeNumber.js.map +1 -1
  44. package/lib/data/parseSort.js +75 -68
  45. package/lib/data/parseSort.test.js +196 -187
  46. package/lib/data/resolvePagination.js +38 -39
  47. package/lib/data/resolvePagination.test.js +228 -218
  48. package/lib/data/types.d.js +2 -2
  49. package/lib/data/types.d.js.map +1 -1
  50. package/lib/dayjs/dayjs.js +20 -20
  51. package/lib/dayjs/formatDuration.js +56 -56
  52. package/lib/dayjs/formatDuration.js.map +1 -1
  53. package/lib/dayjs/formatDuration.test.js +63 -77
  54. package/lib/dayjs/index.js +4 -4
  55. package/lib/dayjs/parseDuration.js +21 -26
  56. package/lib/dayjs/parseRelativeTime.js +65 -66
  57. package/lib/dayjs/parseRelativeTime.test.js +227 -243
  58. package/lib/dayjs/resolveRelativeTime.js +74 -144
  59. package/lib/dayjs/resolveRelativeTime.js.map +1 -1
  60. package/lib/dayjs/resolveRelativeTime.test.js +296 -307
  61. package/lib/decimal/index.js +1 -1
  62. package/lib/decimal/parseDecimal.js +12 -12
  63. package/lib/drain3/Drain.js +321 -0
  64. package/lib/drain3/Drain.js.map +1 -0
  65. package/lib/drain3/LogCluster.js +38 -0
  66. package/lib/drain3/LogCluster.js.map +1 -0
  67. package/lib/drain3/Node.js +39 -0
  68. package/lib/drain3/Node.js.map +1 -0
  69. package/lib/drain3/TemplateMiner.js +205 -0
  70. package/lib/drain3/TemplateMiner.js.map +1 -0
  71. package/lib/drain3/index.js +31 -0
  72. package/lib/drain3/index.js.map +1 -0
  73. package/lib/drain3/persistence/FilePersistence.js +24 -0
  74. package/lib/drain3/persistence/FilePersistence.js.map +1 -0
  75. package/lib/drain3/persistence/MemoryPersistence.js +18 -0
  76. package/lib/drain3/persistence/MemoryPersistence.js.map +1 -0
  77. package/lib/drain3/persistence/PersistenceHandler.js +5 -0
  78. package/lib/drain3/persistence/PersistenceHandler.js.map +1 -0
  79. package/lib/drain3/types.js +7 -0
  80. package/lib/drain3/types.js.map +1 -0
  81. package/lib/emittery/emitter.js +7 -7
  82. package/lib/emittery/index.js +1 -1
  83. package/lib/foundation/schema/SexType.js +15 -12
  84. package/lib/foundation/schema/index.js +1 -1
  85. package/lib/foundation/schema/parseSexType.js +15 -16
  86. package/lib/foundation/schema/types.js +8 -6
  87. package/lib/fs/FileSystemError.js +18 -18
  88. package/lib/fs/IFileSystem.d.js +2 -2
  89. package/lib/fs/IFileSystem.d.js.map +1 -1
  90. package/lib/fs/MemoryFileSystem.test.js +172 -181
  91. package/lib/fs/createBrowserFileSystem.js +222 -233
  92. package/lib/fs/createBrowserFileSystem.js.map +1 -1
  93. package/lib/fs/createMemoryFileSystem.js +473 -510
  94. package/lib/fs/createMemoryFileSystem.js.map +1 -1
  95. package/lib/fs/createSandboxFileSystem.js +102 -101
  96. package/lib/fs/createSandboxFileSystem.js.map +1 -1
  97. package/lib/fs/createWebDavFileSystem.js +162 -132
  98. package/lib/fs/createWebDavFileSystem.js.map +1 -1
  99. package/lib/fs/createWebFileSystem.js +202 -0
  100. package/lib/fs/createWebFileSystem.js.map +1 -0
  101. package/lib/fs/findMimeType.js +14 -14
  102. package/lib/fs/findMimeType.js.map +1 -1
  103. package/lib/fs/index.js +7 -7
  104. package/lib/fs/index.js.map +1 -1
  105. package/lib/fs/minio/createMinioFileSystem.js +977 -0
  106. package/lib/fs/minio/createMinioFileSystem.js.map +1 -0
  107. package/lib/fs/minio/index.js +2 -0
  108. package/lib/fs/minio/index.js.map +1 -0
  109. package/lib/fs/orpc/FileSystemContract.js +57 -57
  110. package/lib/fs/orpc/createContractClientFileSystem.js +88 -88
  111. package/lib/fs/orpc/createContractClientFileSystem.js.map +1 -1
  112. package/lib/fs/orpc/index.js +2 -2
  113. package/lib/fs/orpc/server/createFileSystemContractImpl.js +62 -60
  114. package/lib/fs/orpc/server/createFileSystemContractImpl.js.map +1 -1
  115. package/lib/fs/orpc/server/index.js +1 -1
  116. package/lib/fs/s3/createS3MiniFileSystem.js +756 -689
  117. package/lib/fs/s3/createS3MiniFileSystem.js.map +1 -1
  118. package/lib/fs/s3/index.js +1 -1
  119. package/lib/fs/s3/s3mini.test.js +524 -553
  120. package/lib/fs/scandir.js +56 -56
  121. package/lib/fs/server/createDatabaseFileSystem.js +834 -741
  122. package/lib/fs/server/createDatabaseFileSystem.js.map +1 -1
  123. package/lib/fs/server/createNodeFileSystem.js +407 -380
  124. package/lib/fs/server/createNodeFileSystem.js.map +1 -1
  125. package/lib/fs/server/dbfs.test.js +201 -214
  126. package/lib/fs/server/index.js +1 -1
  127. package/lib/fs/server/loadTestDatabase.js +40 -43
  128. package/lib/fs/tests/runFileSystemTest.js +352 -315
  129. package/lib/fs/tests/runFileSystemTest.js.map +1 -1
  130. package/lib/fs/types.js +17 -20
  131. package/lib/fs/utils/getFileUrl.js +24 -30
  132. package/lib/fs/utils.js +17 -17
  133. package/lib/fs/utils.js.map +1 -1
  134. package/lib/fs/webdav/index.js +2 -0
  135. package/lib/fs/webdav/index.js.map +1 -0
  136. package/lib/index.js +2 -2
  137. package/lib/jsonschema/JsonSchema.js +216 -155
  138. package/lib/jsonschema/JsonSchema.js.map +1 -1
  139. package/lib/jsonschema/JsonSchema.test.js +123 -124
  140. package/lib/jsonschema/forEachJsonSchema.js +41 -41
  141. package/lib/jsonschema/forEachJsonSchema.js.map +1 -1
  142. package/lib/jsonschema/index.js +2 -2
  143. package/lib/jsonschema/types.d.js +2 -2
  144. package/lib/jsonschema/types.d.js.map +1 -1
  145. package/lib/meta/defineFileType.js +32 -38
  146. package/lib/meta/defineInit.js +39 -35
  147. package/lib/meta/defineMetadata.js +37 -34
  148. package/lib/meta/defineMetadata.js.map +1 -1
  149. package/lib/meta/defineMetadata.test.js +13 -12
  150. package/lib/meta/index.js +3 -3
  151. package/lib/orpc/createOpenApiContractClient.js +26 -24
  152. package/lib/orpc/createOpenApiContractClient.js.map +1 -1
  153. package/lib/orpc/createRpcContractClient.js +37 -31
  154. package/lib/orpc/index.js +2 -2
  155. package/lib/orpc/resolveLinkPlugins.js +25 -25
  156. package/lib/password/PHC.js +187 -189
  157. package/lib/password/PHC.js.map +1 -1
  158. package/lib/password/PHC.test.js +517 -535
  159. package/lib/password/Password.js +85 -80
  160. package/lib/password/Password.test.js +330 -364
  161. package/lib/password/createArgon2PasswordAlgorithm.js +50 -51
  162. package/lib/password/createArgon2PasswordAlgorithm.js.map +1 -1
  163. package/lib/password/createBase64PasswordAlgorithm.js +11 -11
  164. package/lib/password/createBase64PasswordAlgorithm.js.map +1 -1
  165. package/lib/password/createBcryptPasswordAlgorithm.js +20 -18
  166. package/lib/password/createBcryptPasswordAlgorithm.js.map +1 -1
  167. package/lib/password/createPBKDF2PasswordAlgorithm.js +65 -52
  168. package/lib/password/createPBKDF2PasswordAlgorithm.js.map +1 -1
  169. package/lib/password/createScryptPasswordAlgorithm.js +74 -63
  170. package/lib/password/createScryptPasswordAlgorithm.js.map +1 -1
  171. package/lib/password/index.js +5 -5
  172. package/lib/password/server/index.js +1 -1
  173. package/lib/resource/Identifiable.js +2 -2
  174. package/lib/resource/ListQuery.js +42 -42
  175. package/lib/resource/ListQuery.js.map +1 -1
  176. package/lib/resource/getTitleOfResource.js +5 -5
  177. package/lib/resource/index.js +2 -2
  178. package/lib/resource/index.js.map +1 -1
  179. package/lib/resource/schema/AnyResourceSchema.js +91 -89
  180. package/lib/resource/schema/BaseResourceSchema.js +26 -26
  181. package/lib/resource/schema/ResourceActionType.js +117 -115
  182. package/lib/resource/schema/ResourceStatus.js +94 -92
  183. package/lib/resource/schema/ResourceType.js +25 -23
  184. package/lib/resource/schema/index.js +5 -5
  185. package/lib/resource/schema/types.js +86 -55
  186. package/lib/resource/schema/types.test.js +16 -13
  187. package/lib/s3/formatS3Url.js +60 -60
  188. package/lib/s3/formatS3Url.js.map +1 -1
  189. package/lib/s3/formatS3Url.test.js +238 -261
  190. package/lib/s3/index.js +2 -2
  191. package/lib/s3/parseS3Url.js +61 -60
  192. package/lib/s3/parseS3Url.js.map +1 -1
  193. package/lib/s3/parseS3Url.test.js +270 -269
  194. package/lib/schema/SchemaRegistry.js +41 -42
  195. package/lib/schema/SchemaRegistry.js.map +1 -1
  196. package/lib/schema/SchemaRegistry.mod.js +1 -1
  197. package/lib/schema/TypeSchema.d.js +2 -2
  198. package/lib/schema/TypeSchema.d.js.map +1 -1
  199. package/lib/schema/createSchemaData.js +113 -67
  200. package/lib/schema/createSchemaData.js.map +1 -1
  201. package/lib/schema/findJsonSchemaByPath.js +28 -23
  202. package/lib/schema/findJsonSchemaByPath.js.map +1 -1
  203. package/lib/schema/formatZodError.js +113 -134
  204. package/lib/schema/formatZodError.js.map +1 -1
  205. package/lib/schema/formatZodError.test.js +192 -195
  206. package/lib/schema/getSchemaCache.js +7 -7
  207. package/lib/schema/getSchemaOptions.js +17 -16
  208. package/lib/schema/index.js +6 -6
  209. package/lib/schema/toJsonSchema.js +196 -190
  210. package/lib/schema/toJsonSchema.js.map +1 -1
  211. package/lib/schema/toJsonSchema.test.js +34 -26
  212. package/lib/schema/validate.js +106 -97
  213. package/lib/schema/validate.js.map +1 -1
  214. package/lib/tools/generateSchema.js +40 -40
  215. package/lib/tools/renderJsonSchemaToMarkdownDoc.js +74 -74
  216. package/lib/utils/buildBaseUrl.js +8 -8
  217. package/lib/utils/buildRedactorFormSchema.js +55 -54
  218. package/lib/utils/buildRedactorFormSchema.js.map +1 -1
  219. package/lib/utils/getEstimateProcessTime.js +24 -19
  220. package/lib/utils/index.js +3 -3
  221. package/lib/utils/resolveFeatureOptions.js +9 -9
  222. package/package.json +37 -18
  223. package/src/ai/qwen3vl/utils.ts +1 -1
  224. package/src/ai/vision/index.ts +2 -2
  225. package/src/cn/ChineseResidentIdNo.ts +1 -1
  226. package/src/cn/Mod11.ts +1 -1
  227. package/src/cn/__snapshots__/ChineseResidentIdNo.test.ts.snap +1 -1
  228. package/src/cn/__snapshots__/UnifiedSocialCreditCode.test.ts.snap +0 -23
  229. package/src/cn/index.ts +1 -2
  230. package/src/cn/parseChineseNumber.test.ts +4 -4
  231. package/src/consola/formatLogObject.ts +6 -6
  232. package/src/consola/index.ts +1 -1
  233. package/src/data/index.ts +3 -4
  234. package/src/data/maybeNumber.ts +1 -1
  235. package/src/data/parseSort.test.ts +0 -1
  236. package/src/data/resolvePagination.ts +2 -2
  237. package/src/data/types.d.ts +2 -2
  238. package/src/dayjs/formatDuration.ts +10 -11
  239. package/src/dayjs/index.ts +1 -1
  240. package/src/dayjs/parseRelativeTime.ts +1 -1
  241. package/src/dayjs/resolveRelativeTime.ts +11 -14
  242. package/src/drain3/Drain.test.ts +378 -0
  243. package/src/drain3/Drain.ts +394 -0
  244. package/src/drain3/LogCluster.ts +46 -0
  245. package/src/drain3/Node.ts +53 -0
  246. package/src/drain3/TemplateMiner.ts +246 -0
  247. package/src/drain3/index.ts +34 -0
  248. package/src/drain3/persistence/FilePersistence.ts +24 -0
  249. package/src/drain3/persistence/MemoryPersistence.ts +23 -0
  250. package/src/drain3/persistence/PersistenceHandler.ts +19 -0
  251. package/src/drain3/types.ts +75 -0
  252. package/src/fs/IFileSystem.d.ts +1 -2
  253. package/src/fs/createBrowserFileSystem.ts +7 -5
  254. package/src/fs/createMemoryFileSystem.ts +9 -13
  255. package/src/fs/createSandboxFileSystem.ts +1 -1
  256. package/src/fs/createWebDavFileSystem.ts +30 -17
  257. package/src/fs/createWebFileSystem.ts +242 -0
  258. package/src/fs/findMimeType.ts +1 -4
  259. package/src/fs/index.ts +5 -5
  260. package/src/fs/minio/createMinioFileSystem.ts +1148 -0
  261. package/src/fs/minio/index.ts +1 -0
  262. package/src/fs/orpc/createContractClientFileSystem.ts +5 -5
  263. package/src/fs/orpc/server/createFileSystemContractImpl.ts +1 -1
  264. package/src/fs/s3/createS3MiniFileSystem.ts +120 -79
  265. package/src/fs/s3/s3fs.test.ts +441 -0
  266. package/src/fs/s3/s3mini.test.ts +2 -2
  267. package/src/fs/server/createDatabaseFileSystem.ts +78 -114
  268. package/src/fs/server/createNodeFileSystem.ts +32 -13
  269. package/src/fs/server/dbfs.test.ts +13 -8
  270. package/src/fs/server/index.ts +1 -0
  271. package/src/fs/server/loadTestDatabase.ts +8 -119
  272. package/src/fs/tests/runFileSystemTest.ts +29 -28
  273. package/src/fs/utils.ts +1 -1
  274. package/src/fs/webdav/index.ts +1 -0
  275. package/src/jsonschema/JsonSchema.ts +5 -5
  276. package/src/jsonschema/forEachJsonSchema.ts +1 -1
  277. package/src/jsonschema/index.ts +1 -1
  278. package/src/jsonschema/types.d.ts +1 -1
  279. package/src/meta/defineMetadata.ts +1 -1
  280. package/src/meta/index.ts +2 -3
  281. package/src/orm/createSqliteDialect.ts +17 -0
  282. package/src/orm/index.ts +1 -0
  283. package/src/orpc/createOpenApiContractClient.ts +3 -3
  284. package/src/orpc/index.ts +1 -1
  285. package/src/password/PHC.ts +3 -3
  286. package/src/password/createArgon2PasswordAlgorithm.ts +2 -2
  287. package/src/password/createBase64PasswordAlgorithm.ts +2 -2
  288. package/src/password/createBcryptPasswordAlgorithm.ts +4 -2
  289. package/src/password/createPBKDF2PasswordAlgorithm.ts +2 -2
  290. package/src/password/createScryptPasswordAlgorithm.ts +4 -4
  291. package/src/password/index.ts +2 -2
  292. package/src/resource/ListQuery.ts +4 -1
  293. package/src/resource/index.ts +3 -3
  294. package/src/resource/schema/index.ts +4 -4
  295. package/src/s3/formatS3Url.test.ts +1 -1
  296. package/src/s3/formatS3Url.ts +2 -2
  297. package/src/s3/index.ts +1 -1
  298. package/src/s3/parseS3Url.ts +1 -1
  299. package/src/schema/SchemaRegistry.ts +2 -2
  300. package/src/schema/TypeSchema.d.ts +6 -6
  301. package/src/schema/createSchemaData.ts +5 -5
  302. package/src/schema/findJsonSchemaByPath.ts +5 -5
  303. package/src/schema/formatZodError.test.ts +2 -1
  304. package/src/schema/formatZodError.ts +50 -62
  305. package/src/schema/index.ts +5 -5
  306. package/src/schema/toJsonSchema.ts +6 -6
  307. package/src/schema/validate.ts +2 -2
  308. package/src/utils/buildRedactorFormSchema.ts +4 -4
  309. package/src/utils/formatNumber.ts +18 -0
  310. package/src/utils/formatPercent.ts +17 -0
  311. package/src/utils/index.ts +3 -3
  312. package/src/utils/resolveFeatureOptions.ts +1 -1
@@ -1,310 +1,299 @@
1
- import dayjs from "dayjs";
2
- import quarterOfYear from "dayjs/plugin/quarterOfYear";
3
- import weekOfYear from "dayjs/plugin/weekOfYear";
4
- import { describe, expect, it } from "vitest";
5
- import { resolveRelativeTime } from "./resolveRelativeTime.js";
1
+ import dayjs from 'dayjs';
2
+ import quarterOfYear from 'dayjs/plugin/quarterOfYear';
3
+ import weekOfYear from 'dayjs/plugin/weekOfYear';
4
+ import { describe, expect, it } from 'vitest';
5
+ import { resolveRelativeTime } from './resolveRelativeTime.js';
6
+
6
7
  dayjs.extend(quarterOfYear);
7
8
  dayjs.extend(weekOfYear);
8
- describe("resolveRelativeTime", function () {
9
- var fixedDate = new Date("2024-03-15T14:30:45.123Z");
10
- describe("basic cases", function () {
11
- it("should handle \"now\"", function () {
12
- var result = resolveRelativeTime("now", fixedDate);
13
- expect(result).toEqual(fixedDate);
14
- });
15
- it("should handle \"now\" without reference date", function () {
16
- var result = resolveRelativeTime("now", undefined);
17
- expect(result).toBeInstanceOf(Date);
18
- });
19
- });
20
- describe("subtraction operations", function () {
21
- it("should subtract seconds", function () {
22
- var result = resolveRelativeTime("now-30s", fixedDate);
23
- var expected = dayjs(fixedDate).subtract(30, "second").toDate();
24
- expect(result).toEqual(expected);
25
- });
26
- it("should subtract minutes", function () {
27
- var result = resolveRelativeTime("now-15m", fixedDate);
28
- var expected = dayjs(fixedDate).subtract(15, "minute").toDate();
29
- expect(result).toEqual(expected);
30
- });
31
- it("should subtract hours", function () {
32
- var result = resolveRelativeTime("now-2h", fixedDate);
33
- var expected = dayjs(fixedDate).subtract(2, "hour").toDate();
34
- expect(result).toEqual(expected);
35
- });
36
- it("should subtract days", function () {
37
- var result = resolveRelativeTime("now-7d", fixedDate);
38
- var expected = dayjs(fixedDate).subtract(7, "day").toDate();
39
- expect(result).toEqual(expected);
40
- });
41
- it("should subtract weeks", function () {
42
- var result = resolveRelativeTime("now-2w", fixedDate);
43
- var expected = dayjs(fixedDate).subtract(2, "week").toDate();
44
- expect(result).toEqual(expected);
45
- });
46
- it("should subtract months", function () {
47
- var result = resolveRelativeTime("now-1M", fixedDate);
48
- var expected = dayjs(fixedDate).subtract(1, "month").toDate();
49
- expect(result).toEqual(expected);
50
- });
51
- it("should subtract quarters", function () {
52
- var result = resolveRelativeTime("now-1Q", fixedDate);
53
- var expected = dayjs(fixedDate).subtract(1, "quarter").toDate();
54
- expect(result).toEqual(expected);
55
- });
56
- it("should subtract years", function () {
57
- var result = resolveRelativeTime("now-1y", fixedDate);
58
- var expected = dayjs(fixedDate).subtract(1, "year").toDate();
59
- expect(result).toEqual(expected);
60
- });
61
- });
62
- describe("addition operations", function () {
63
- it("should add seconds", function () {
64
- var result = resolveRelativeTime("now+30s", fixedDate);
65
- var expected = dayjs(fixedDate).add(30, "second").toDate();
66
- expect(result).toEqual(expected);
67
- });
68
- it("should add minutes", function () {
69
- var result = resolveRelativeTime("now+15m", fixedDate);
70
- var expected = dayjs(fixedDate).add(15, "minute").toDate();
71
- expect(result).toEqual(expected);
72
- });
73
- it("should add hours", function () {
74
- var result = resolveRelativeTime("now+3h", fixedDate);
75
- var expected = dayjs(fixedDate).add(3, "hour").toDate();
76
- expect(result).toEqual(expected);
77
- });
78
- it("should add days", function () {
79
- var result = resolveRelativeTime("now+5d", fixedDate);
80
- var expected = dayjs(fixedDate).add(5, "day").toDate();
81
- expect(result).toEqual(expected);
82
- });
83
- it("should add weeks", function () {
84
- var result = resolveRelativeTime("now+2w", fixedDate);
85
- var expected = dayjs(fixedDate).add(2, "week").toDate();
86
- expect(result).toEqual(expected);
87
- });
88
- it("should add months", function () {
89
- var result = resolveRelativeTime("now+2M", fixedDate);
90
- var expected = dayjs(fixedDate).add(2, "month").toDate();
91
- expect(result).toEqual(expected);
92
- });
93
- it("should add quarters", function () {
94
- var result = resolveRelativeTime("now+1Q", fixedDate);
95
- var expected = dayjs(fixedDate).add(1, "quarter").toDate();
96
- expect(result).toEqual(expected);
97
- });
98
- it("should add years", function () {
99
- var result = resolveRelativeTime("now+1y", fixedDate);
100
- var expected = dayjs(fixedDate).add(1, "year").toDate();
101
- expect(result).toEqual(expected);
102
- });
103
- });
104
- describe("truncation operations", function () {
105
- it("should truncate to start of second", function () {
106
- var result = resolveRelativeTime("now/s", fixedDate);
107
- var expected = dayjs(fixedDate).startOf("second").toDate();
108
- expect(result).toEqual(expected);
109
- });
110
- it("should truncate to start of minute", function () {
111
- var result = resolveRelativeTime("now/m", fixedDate);
112
- var expected = dayjs(fixedDate).startOf("minute").toDate();
113
- expect(result).toEqual(expected);
114
- });
115
- it("should truncate to start of hour", function () {
116
- var result = resolveRelativeTime("now/h", fixedDate);
117
- var expected = dayjs(fixedDate).startOf("hour").toDate();
118
- expect(result).toEqual(expected);
119
- });
120
- it("should truncate to start of day", function () {
121
- var result = resolveRelativeTime("now/d", fixedDate);
122
- var expected = dayjs(fixedDate).startOf("day").toDate();
123
- expect(result).toEqual(expected);
124
- });
125
- it("should truncate to start of week", function () {
126
- var result = resolveRelativeTime("now/w", fixedDate);
127
- var expected = dayjs(fixedDate).startOf("week").toDate();
128
- expect(result).toEqual(expected);
129
- });
130
- it("should truncate to start of month", function () {
131
- var result = resolveRelativeTime("now/M", fixedDate);
132
- var expected = dayjs(fixedDate).startOf("month").toDate();
133
- expect(result).toEqual(expected);
134
- });
135
- it("should truncate to start of quarter", function () {
136
- var result = resolveRelativeTime("now/Q", fixedDate);
137
- var expected = dayjs(fixedDate).startOf("quarter").toDate();
138
- expect(result).toEqual(expected);
139
- });
140
- it("should truncate to start of year", function () {
141
- var result = resolveRelativeTime("now/y", fixedDate);
142
- var expected = dayjs(fixedDate).startOf("year").toDate();
143
- expect(result).toEqual(expected);
144
- });
145
- });
146
- describe("endOf truncation operations (backslash)", function () {
147
- it("should truncate to end of second", function () {
148
- var result = resolveRelativeTime("now\\s", fixedDate);
149
- var expected = dayjs(fixedDate).endOf("second").toDate();
150
- expect(result).toEqual(expected);
151
- });
152
- it("should truncate to end of minute", function () {
153
- var result = resolveRelativeTime("now\\m", fixedDate);
154
- var expected = dayjs(fixedDate).endOf("minute").toDate();
155
- expect(result).toEqual(expected);
156
- });
157
- it("should truncate to end of hour", function () {
158
- var result = resolveRelativeTime("now\\h", fixedDate);
159
- var expected = dayjs(fixedDate).endOf("hour").toDate();
160
- expect(result).toEqual(expected);
161
- });
162
- it("should truncate to end of day", function () {
163
- var result = resolveRelativeTime("now\\d", fixedDate);
164
- var expected = dayjs(fixedDate).endOf("day").toDate();
165
- expect(result).toEqual(expected);
166
- });
167
- it("should truncate to end of week", function () {
168
- var result = resolveRelativeTime("now\\w", fixedDate);
169
- var expected = dayjs(fixedDate).endOf("week").toDate();
170
- expect(result).toEqual(expected);
171
- });
172
- it("should truncate to end of month", function () {
173
- var result = resolveRelativeTime("now\\M", fixedDate);
174
- var expected = dayjs(fixedDate).endOf("month").toDate();
175
- expect(result).toEqual(expected);
176
- });
177
- it("should truncate to end of quarter", function () {
178
- var result = resolveRelativeTime("now\\Q", fixedDate);
179
- var expected = dayjs(fixedDate).endOf("quarter").toDate();
180
- expect(result).toEqual(expected);
181
- });
182
- it("should truncate to end of year", function () {
183
- var result = resolveRelativeTime("now\\y", fixedDate);
184
- var expected = dayjs(fixedDate).endOf("year").toDate();
185
- expect(result).toEqual(expected);
186
- });
187
- });
188
- describe("complex combinations", function () {
189
- it("should handle \"now-1M/M\" (start of previous month)", function () {
190
- var result = resolveRelativeTime("now-1M/M", fixedDate);
191
- var expected = dayjs(fixedDate).subtract(1, "month").startOf("month").toDate();
192
- expect(result).toEqual(expected);
193
- });
194
- it("should handle \"now/d+1d-1s\" (end of current day)", function () {
195
- var result = resolveRelativeTime("now/d+1d-1s", fixedDate);
196
- var expected = dayjs(fixedDate).startOf("day").add(1, "day").subtract(1, "second").toDate();
197
- expect(result).toEqual(expected);
198
- });
199
- it("should handle multiple operations \"now-1w+2d-3h\"", function () {
200
- var result = resolveRelativeTime("now-1w+2d-3h", fixedDate);
201
- var expected = dayjs(fixedDate).subtract(1, "week").add(2, "day").subtract(3, "hour").toDate();
202
- expect(result).toEqual(expected);
203
- });
204
- it("should handle \"now-1M\\M\" (end of previous month)", function () {
205
- var result = resolveRelativeTime("now-1M\\M", fixedDate);
206
- var expected = dayjs(fixedDate).subtract(1, "month").endOf("month").toDate();
207
- expect(result).toEqual(expected);
208
- });
209
- it("should handle \"now\\d\" vs \"now/d+1d-1s\" (both end of current day)", function () {
210
- var resultBackslash = resolveRelativeTime("now\\d", fixedDate);
211
- var resultAlternative = resolveRelativeTime("now/d+1d-1s", fixedDate);
212
- var expectedBackslash = dayjs(fixedDate).endOf("day").toDate();
213
- var expectedAlternative = dayjs(fixedDate).startOf("day").add(1, "day").subtract(1, "second").toDate();
214
- expect(resultBackslash).toEqual(expectedBackslash);
215
- expect(resultAlternative).toEqual(expectedAlternative);
216
- // Note: endOf gives millisecond precision (.999), while alternative gives second precision (.000)
217
- // Both represent end of day, but endOf is more precise
218
- expect(resultBackslash.getTime()).toBeGreaterThan(resultAlternative.getTime());
219
- });
220
- it("should handle \"now-1y\\y\" (end of previous year)", function () {
221
- var result = resolveRelativeTime("now-1y\\y", fixedDate);
222
- var expected = dayjs(fixedDate).subtract(1, "year").endOf("year").toDate();
223
- expect(result).toEqual(expected);
224
- });
225
- it("should handle \"now/y+6M\" (middle of current year)", function () {
226
- var result = resolveRelativeTime("now/y+6M", fixedDate);
227
- var expected = dayjs(fixedDate).startOf("year").add(6, "month").toDate();
228
- expect(result).toEqual(expected);
229
- });
230
- });
231
- describe("error cases", function () {
232
- it("should throw error for invalid format", function () {
233
- expect(function () {
234
- return resolveRelativeTime("invalid", fixedDate);
235
- }).toThrow("Invalid");
236
- });
237
- it("should throw error for non-now start", function () {
238
- expect(function () {
239
- return resolveRelativeTime("then-1h", fixedDate);
240
- }).toThrow("Invalid");
241
- });
242
- it("should throw error for invalid time unit", function () {
243
- expect(function () {
244
- return resolveRelativeTime("now-1x", fixedDate);
245
- }).toThrow("Invalid time operand");
246
- });
247
- it("should throw error for invalid operator", function () {
248
- expect(function () {
249
- return resolveRelativeTime("now*1h", fixedDate);
250
- }).toThrow("Invalid relative time format");
251
- });
252
- it("should throw error for invalid truncation unit", function () {
253
- expect(function () {
254
- return resolveRelativeTime("now/z", fixedDate);
255
- }).toThrow();
256
- });
257
- it("should throw error for incomplete operation", function () {
258
- expect(function () {
259
- return resolveRelativeTime("now-", fixedDate);
260
- }).toThrow("Invalid relative time format");
261
- });
262
- });
263
- describe("Grafana examples from comments", function () {
264
- it("should handle \"now-24h\" (last 24 hours)", function () {
265
- var result = resolveRelativeTime("now-24h", fixedDate);
266
- var expected = dayjs(fixedDate).subtract(24, "hour").toDate();
267
- expect(result).toEqual(expected);
268
- });
269
- it("should handle \"now/M\" (start of current month)", function () {
270
- var result = resolveRelativeTime("now/M", fixedDate);
271
- var expected = dayjs(fixedDate).startOf("month").toDate();
272
- expect(result).toEqual(expected);
273
- });
274
- it("should handle \"now-7d\" (last 7 days)", function () {
275
- var result = resolveRelativeTime("now-7d", fixedDate);
276
- var expected = dayjs(fixedDate).subtract(7, "day").toDate();
277
- expect(result).toEqual(expected);
278
- });
279
- it("should handle \"now/y\" (start of current year)", function () {
280
- var result = resolveRelativeTime("now/y", fixedDate);
281
- var expected = dayjs(fixedDate).startOf("year").toDate();
282
- expect(result).toEqual(expected);
283
- });
284
- it("should handle \"now/w\" (start of current week)", function () {
285
- var result = resolveRelativeTime("now/w", fixedDate);
286
- var expected = dayjs(fixedDate).startOf("week").toDate();
287
- expect(result).toEqual(expected);
288
- });
289
- it("should handle \"now\\d\" (end of current day)", function () {
290
- var result = resolveRelativeTime("now\\d", fixedDate);
291
- var expected = dayjs(fixedDate).endOf("day").toDate();
292
- expect(result).toEqual(expected);
293
- });
294
- it("should handle \"now\\M\" (end of current month)", function () {
295
- var result = resolveRelativeTime("now\\M", fixedDate);
296
- var expected = dayjs(fixedDate).endOf("month").toDate();
297
- expect(result).toEqual(expected);
298
- });
299
- it("should handle \"now\\w\" (end of current week)", function () {
300
- var result = resolveRelativeTime("now\\w", fixedDate);
301
- var expected = dayjs(fixedDate).endOf("week").toDate();
302
- expect(result).toEqual(expected);
303
- });
304
- it("should handle \"now\\y\" (end of current year)", function () {
305
- var result = resolveRelativeTime("now\\y", fixedDate);
306
- var expected = dayjs(fixedDate).endOf("year").toDate();
307
- expect(result).toEqual(expected);
308
- });
309
- });
9
+ describe('resolveRelativeTime', () => {
10
+ var fixedDate = new Date('2024-03-15T14:30:45.123Z');
11
+ describe('basic cases', () => {
12
+ it('should handle "now"', () => {
13
+ var result = resolveRelativeTime('now', fixedDate);
14
+ expect(result).toEqual(fixedDate);
15
+ });
16
+ it('should handle "now" without reference date', () => {
17
+ var result = resolveRelativeTime('now', undefined);
18
+ expect(result).toBeInstanceOf(Date);
19
+ });
20
+ });
21
+ describe('subtraction operations', () => {
22
+ it('should subtract seconds', () => {
23
+ var result = resolveRelativeTime('now-30s', fixedDate);
24
+ var expected = dayjs(fixedDate).subtract(30, 'second').toDate();
25
+ expect(result).toEqual(expected);
26
+ });
27
+ it('should subtract minutes', () => {
28
+ var result = resolveRelativeTime('now-15m', fixedDate);
29
+ var expected = dayjs(fixedDate).subtract(15, 'minute').toDate();
30
+ expect(result).toEqual(expected);
31
+ });
32
+ it('should subtract hours', () => {
33
+ var result = resolveRelativeTime('now-2h', fixedDate);
34
+ var expected = dayjs(fixedDate).subtract(2, 'hour').toDate();
35
+ expect(result).toEqual(expected);
36
+ });
37
+ it('should subtract days', () => {
38
+ var result = resolveRelativeTime('now-7d', fixedDate);
39
+ var expected = dayjs(fixedDate).subtract(7, 'day').toDate();
40
+ expect(result).toEqual(expected);
41
+ });
42
+ it('should subtract weeks', () => {
43
+ var result = resolveRelativeTime('now-2w', fixedDate);
44
+ var expected = dayjs(fixedDate).subtract(2, 'week').toDate();
45
+ expect(result).toEqual(expected);
46
+ });
47
+ it('should subtract months', () => {
48
+ var result = resolveRelativeTime('now-1M', fixedDate);
49
+ var expected = dayjs(fixedDate).subtract(1, 'month').toDate();
50
+ expect(result).toEqual(expected);
51
+ });
52
+ it('should subtract quarters', () => {
53
+ var result = resolveRelativeTime('now-1Q', fixedDate);
54
+ var expected = dayjs(fixedDate).subtract(1, 'quarter').toDate();
55
+ expect(result).toEqual(expected);
56
+ });
57
+ it('should subtract years', () => {
58
+ var result = resolveRelativeTime('now-1y', fixedDate);
59
+ var expected = dayjs(fixedDate).subtract(1, 'year').toDate();
60
+ expect(result).toEqual(expected);
61
+ });
62
+ });
63
+ describe('addition operations', () => {
64
+ it('should add seconds', () => {
65
+ var result = resolveRelativeTime('now+30s', fixedDate);
66
+ var expected = dayjs(fixedDate).add(30, 'second').toDate();
67
+ expect(result).toEqual(expected);
68
+ });
69
+ it('should add minutes', () => {
70
+ var result = resolveRelativeTime('now+15m', fixedDate);
71
+ var expected = dayjs(fixedDate).add(15, 'minute').toDate();
72
+ expect(result).toEqual(expected);
73
+ });
74
+ it('should add hours', () => {
75
+ var result = resolveRelativeTime('now+3h', fixedDate);
76
+ var expected = dayjs(fixedDate).add(3, 'hour').toDate();
77
+ expect(result).toEqual(expected);
78
+ });
79
+ it('should add days', () => {
80
+ var result = resolveRelativeTime('now+5d', fixedDate);
81
+ var expected = dayjs(fixedDate).add(5, 'day').toDate();
82
+ expect(result).toEqual(expected);
83
+ });
84
+ it('should add weeks', () => {
85
+ var result = resolveRelativeTime('now+2w', fixedDate);
86
+ var expected = dayjs(fixedDate).add(2, 'week').toDate();
87
+ expect(result).toEqual(expected);
88
+ });
89
+ it('should add months', () => {
90
+ var result = resolveRelativeTime('now+2M', fixedDate);
91
+ var expected = dayjs(fixedDate).add(2, 'month').toDate();
92
+ expect(result).toEqual(expected);
93
+ });
94
+ it('should add quarters', () => {
95
+ var result = resolveRelativeTime('now+1Q', fixedDate);
96
+ var expected = dayjs(fixedDate).add(1, 'quarter').toDate();
97
+ expect(result).toEqual(expected);
98
+ });
99
+ it('should add years', () => {
100
+ var result = resolveRelativeTime('now+1y', fixedDate);
101
+ var expected = dayjs(fixedDate).add(1, 'year').toDate();
102
+ expect(result).toEqual(expected);
103
+ });
104
+ });
105
+ describe('truncation operations', () => {
106
+ it('should truncate to start of second', () => {
107
+ var result = resolveRelativeTime('now/s', fixedDate);
108
+ var expected = dayjs(fixedDate).startOf('second').toDate();
109
+ expect(result).toEqual(expected);
110
+ });
111
+ it('should truncate to start of minute', () => {
112
+ var result = resolveRelativeTime('now/m', fixedDate);
113
+ var expected = dayjs(fixedDate).startOf('minute').toDate();
114
+ expect(result).toEqual(expected);
115
+ });
116
+ it('should truncate to start of hour', () => {
117
+ var result = resolveRelativeTime('now/h', fixedDate);
118
+ var expected = dayjs(fixedDate).startOf('hour').toDate();
119
+ expect(result).toEqual(expected);
120
+ });
121
+ it('should truncate to start of day', () => {
122
+ var result = resolveRelativeTime('now/d', fixedDate);
123
+ var expected = dayjs(fixedDate).startOf('day').toDate();
124
+ expect(result).toEqual(expected);
125
+ });
126
+ it('should truncate to start of week', () => {
127
+ var result = resolveRelativeTime('now/w', fixedDate);
128
+ var expected = dayjs(fixedDate).startOf('week').toDate();
129
+ expect(result).toEqual(expected);
130
+ });
131
+ it('should truncate to start of month', () => {
132
+ var result = resolveRelativeTime('now/M', fixedDate);
133
+ var expected = dayjs(fixedDate).startOf('month').toDate();
134
+ expect(result).toEqual(expected);
135
+ });
136
+ it('should truncate to start of quarter', () => {
137
+ var result = resolveRelativeTime('now/Q', fixedDate);
138
+ var expected = dayjs(fixedDate).startOf('quarter').toDate();
139
+ expect(result).toEqual(expected);
140
+ });
141
+ it('should truncate to start of year', () => {
142
+ var result = resolveRelativeTime('now/y', fixedDate);
143
+ var expected = dayjs(fixedDate).startOf('year').toDate();
144
+ expect(result).toEqual(expected);
145
+ });
146
+ });
147
+ describe('endOf truncation operations (backslash)', () => {
148
+ it('should truncate to end of second', () => {
149
+ var result = resolveRelativeTime('now\\s', fixedDate);
150
+ var expected = dayjs(fixedDate).endOf('second').toDate();
151
+ expect(result).toEqual(expected);
152
+ });
153
+ it('should truncate to end of minute', () => {
154
+ var result = resolveRelativeTime('now\\m', fixedDate);
155
+ var expected = dayjs(fixedDate).endOf('minute').toDate();
156
+ expect(result).toEqual(expected);
157
+ });
158
+ it('should truncate to end of hour', () => {
159
+ var result = resolveRelativeTime('now\\h', fixedDate);
160
+ var expected = dayjs(fixedDate).endOf('hour').toDate();
161
+ expect(result).toEqual(expected);
162
+ });
163
+ it('should truncate to end of day', () => {
164
+ var result = resolveRelativeTime('now\\d', fixedDate);
165
+ var expected = dayjs(fixedDate).endOf('day').toDate();
166
+ expect(result).toEqual(expected);
167
+ });
168
+ it('should truncate to end of week', () => {
169
+ var result = resolveRelativeTime('now\\w', fixedDate);
170
+ var expected = dayjs(fixedDate).endOf('week').toDate();
171
+ expect(result).toEqual(expected);
172
+ });
173
+ it('should truncate to end of month', () => {
174
+ var result = resolveRelativeTime('now\\M', fixedDate);
175
+ var expected = dayjs(fixedDate).endOf('month').toDate();
176
+ expect(result).toEqual(expected);
177
+ });
178
+ it('should truncate to end of quarter', () => {
179
+ var result = resolveRelativeTime('now\\Q', fixedDate);
180
+ var expected = dayjs(fixedDate).endOf('quarter').toDate();
181
+ expect(result).toEqual(expected);
182
+ });
183
+ it('should truncate to end of year', () => {
184
+ var result = resolveRelativeTime('now\\y', fixedDate);
185
+ var expected = dayjs(fixedDate).endOf('year').toDate();
186
+ expect(result).toEqual(expected);
187
+ });
188
+ });
189
+ describe('complex combinations', () => {
190
+ it('should handle "now-1M/M" (start of previous month)', () => {
191
+ var result = resolveRelativeTime('now-1M/M', fixedDate);
192
+ var expected = dayjs(fixedDate).subtract(1, 'month').startOf('month').toDate();
193
+ expect(result).toEqual(expected);
194
+ });
195
+ it('should handle "now/d+1d-1s" (end of current day)', () => {
196
+ var result = resolveRelativeTime('now/d+1d-1s', fixedDate);
197
+ var expected = dayjs(fixedDate).startOf('day').add(1, 'day').subtract(1, 'second').toDate();
198
+ expect(result).toEqual(expected);
199
+ });
200
+ it('should handle multiple operations "now-1w+2d-3h"', () => {
201
+ var result = resolveRelativeTime('now-1w+2d-3h', fixedDate);
202
+ var expected = dayjs(fixedDate).subtract(1, 'week').add(2, 'day').subtract(3, 'hour').toDate();
203
+ expect(result).toEqual(expected);
204
+ });
205
+ it('should handle "now-1M\\M" (end of previous month)', () => {
206
+ var result = resolveRelativeTime('now-1M\\M', fixedDate);
207
+ var expected = dayjs(fixedDate).subtract(1, 'month').endOf('month').toDate();
208
+ expect(result).toEqual(expected);
209
+ });
210
+ it('should handle "now\\d" vs "now/d+1d-1s" (both end of current day)', () => {
211
+ var resultBackslash = resolveRelativeTime('now\\d', fixedDate);
212
+ var resultAlternative = resolveRelativeTime('now/d+1d-1s', fixedDate);
213
+ var expectedBackslash = dayjs(fixedDate).endOf('day').toDate();
214
+ var expectedAlternative = dayjs(fixedDate).startOf('day').add(1, 'day').subtract(1, 'second').toDate();
215
+ expect(resultBackslash).toEqual(expectedBackslash);
216
+ expect(resultAlternative).toEqual(expectedAlternative);
217
+ // Note: endOf gives millisecond precision (.999), while alternative gives second precision (.000)
218
+ // Both represent end of day, but endOf is more precise
219
+ expect(resultBackslash.getTime()).toBeGreaterThan(resultAlternative.getTime());
220
+ });
221
+ it('should handle "now-1y\\y" (end of previous year)', () => {
222
+ var result = resolveRelativeTime('now-1y\\y', fixedDate);
223
+ var expected = dayjs(fixedDate).subtract(1, 'year').endOf('year').toDate();
224
+ expect(result).toEqual(expected);
225
+ });
226
+ it('should handle "now/y+6M" (middle of current year)', () => {
227
+ var result = resolveRelativeTime('now/y+6M', fixedDate);
228
+ var expected = dayjs(fixedDate).startOf('year').add(6, 'month').toDate();
229
+ expect(result).toEqual(expected);
230
+ });
231
+ });
232
+ describe('error cases', () => {
233
+ it('should throw error for invalid format', () => {
234
+ expect(() => resolveRelativeTime('invalid', fixedDate)).toThrow('Invalid');
235
+ });
236
+ it('should throw error for non-now start', () => {
237
+ expect(() => resolveRelativeTime('then-1h', fixedDate)).toThrow('Invalid');
238
+ });
239
+ it('should throw error for invalid time unit', () => {
240
+ expect(() => resolveRelativeTime('now-1x', fixedDate)).toThrow('Invalid time operand');
241
+ });
242
+ it('should throw error for invalid operator', () => {
243
+ expect(() => resolveRelativeTime('now*1h', fixedDate)).toThrow('Invalid relative time format');
244
+ });
245
+ it('should throw error for invalid truncation unit', () => {
246
+ expect(() => resolveRelativeTime('now/z', fixedDate)).toThrow();
247
+ });
248
+ it('should throw error for incomplete operation', () => {
249
+ expect(() => resolveRelativeTime('now-', fixedDate)).toThrow('Invalid relative time format');
250
+ });
251
+ });
252
+ describe('Grafana examples from comments', () => {
253
+ it('should handle "now-24h" (last 24 hours)', () => {
254
+ var result = resolveRelativeTime('now-24h', fixedDate);
255
+ var expected = dayjs(fixedDate).subtract(24, 'hour').toDate();
256
+ expect(result).toEqual(expected);
257
+ });
258
+ it('should handle "now/M" (start of current month)', () => {
259
+ var result = resolveRelativeTime('now/M', fixedDate);
260
+ var expected = dayjs(fixedDate).startOf('month').toDate();
261
+ expect(result).toEqual(expected);
262
+ });
263
+ it('should handle "now-7d" (last 7 days)', () => {
264
+ var result = resolveRelativeTime('now-7d', fixedDate);
265
+ var expected = dayjs(fixedDate).subtract(7, 'day').toDate();
266
+ expect(result).toEqual(expected);
267
+ });
268
+ it('should handle "now/y" (start of current year)', () => {
269
+ var result = resolveRelativeTime('now/y', fixedDate);
270
+ var expected = dayjs(fixedDate).startOf('year').toDate();
271
+ expect(result).toEqual(expected);
272
+ });
273
+ it('should handle "now/w" (start of current week)', () => {
274
+ var result = resolveRelativeTime('now/w', fixedDate);
275
+ var expected = dayjs(fixedDate).startOf('week').toDate();
276
+ expect(result).toEqual(expected);
277
+ });
278
+ it('should handle "now\\d" (end of current day)', () => {
279
+ var result = resolveRelativeTime('now\\d', fixedDate);
280
+ var expected = dayjs(fixedDate).endOf('day').toDate();
281
+ expect(result).toEqual(expected);
282
+ });
283
+ it('should handle "now\\M" (end of current month)', () => {
284
+ var result = resolveRelativeTime('now\\M', fixedDate);
285
+ var expected = dayjs(fixedDate).endOf('month').toDate();
286
+ expect(result).toEqual(expected);
287
+ });
288
+ it('should handle "now\\w" (end of current week)', () => {
289
+ var result = resolveRelativeTime('now\\w', fixedDate);
290
+ var expected = dayjs(fixedDate).endOf('week').toDate();
291
+ expect(result).toEqual(expected);
292
+ });
293
+ it('should handle "now\\y" (end of current year)', () => {
294
+ var result = resolveRelativeTime('now\\y', fixedDate);
295
+ var expected = dayjs(fixedDate).endOf('year').toDate();
296
+ expect(result).toEqual(expected);
297
+ });
298
+ });
310
299
  });