@atlastodo/shared 0.0.0-stage → 0.1.11-rc.7

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 (67) hide show
  1. package/LICENSE +661 -0
  2. package/dist/activity.d.ts +23 -0
  3. package/dist/avatarColor.d.ts +15 -0
  4. package/dist/boardMove.d.ts +14 -0
  5. package/dist/bugReport.d.ts +47 -0
  6. package/dist/calendar.d.ts +23 -0
  7. package/dist/comments.d.ts +14 -0
  8. package/dist/countdown.d.ts +14 -0
  9. package/dist/cursor.d.ts +6 -0
  10. package/dist/dataTransfer.d.ts +19 -0
  11. package/dist/duplicateProject.d.ts +19 -0
  12. package/dist/duplicateSection.d.ts +15 -0
  13. package/dist/filterQuery.d.ts +64 -0
  14. package/dist/focus.d.ts +17 -0
  15. package/dist/format.d.ts +30 -0
  16. package/dist/fuzzy.d.ts +14 -0
  17. package/dist/grouping.d.ts +24 -0
  18. package/dist/habitGroups.d.ts +46 -0
  19. package/dist/habitSchedule.d.ts +4 -0
  20. package/dist/habits.d.ts +115 -0
  21. package/dist/hotkeys.d.ts +50 -0
  22. package/dist/i18n.d.ts +14796 -0
  23. package/dist/ids.d.ts +7 -0
  24. package/dist/importTicktick.d.ts +34 -0
  25. package/dist/importTodoist.d.ts +60 -0
  26. package/dist/index.d.ts +62 -0
  27. package/dist/index.js +21446 -0
  28. package/dist/members.d.ts +26 -0
  29. package/dist/planDay.d.ts +31 -0
  30. package/dist/pomodoro.d.ts +49 -0
  31. package/dist/priority.d.ts +2 -0
  32. package/dist/projectMapper.d.ts +15 -0
  33. package/dist/projectStyle.d.ts +14 -0
  34. package/dist/projectTree.d.ts +40 -0
  35. package/dist/quickAddLexicons.d.ts +64 -0
  36. package/dist/quickAddLexiconsWire.d.ts +11 -0
  37. package/dist/quickAddParse.d.ts +44 -0
  38. package/dist/quickSchedule.d.ts +9 -0
  39. package/dist/rank.d.ts +9 -0
  40. package/dist/recurrence.d.ts +60 -0
  41. package/dist/regions.d.ts +6 -0
  42. package/dist/reminderSchedule.d.ts +42 -0
  43. package/dist/reminders.d.ts +28 -0
  44. package/dist/reorder.d.ts +21 -0
  45. package/dist/sectionMapper.d.ts +8 -0
  46. package/dist/sectionOps.d.ts +5 -0
  47. package/dist/serverUrl.d.ts +12 -0
  48. package/dist/smartLists.d.ts +11 -0
  49. package/dist/stats.d.ts +28 -0
  50. package/dist/swipe.d.ts +29 -0
  51. package/dist/taskClipboard.d.ts +19 -0
  52. package/dist/taskListTree.d.ts +33 -0
  53. package/dist/taskMapper.d.ts +3 -0
  54. package/dist/taskOps.d.ts +49 -0
  55. package/dist/taskSearch.d.ts +11 -0
  56. package/dist/taskTree.d.ts +53 -0
  57. package/dist/theme.d.ts +14 -0
  58. package/dist/toast.d.ts +26 -0
  59. package/dist/trash.d.ts +24 -0
  60. package/dist/views.d.ts +8 -0
  61. package/dist/zonedTime.d.ts +30 -0
  62. package/package.json +55 -4
  63. package/test-vectors/filter_vectors.json +1613 -0
  64. package/test-vectors/quick_add_vectors.json +1656 -0
  65. package/test-vectors/recurrence_vectors.json +779 -0
  66. package/test-vectors/task_rules_vectors.json +729 -0
  67. package/README.md +0 -3
@@ -0,0 +1,1656 @@
1
+ {
2
+ "_doc": "Quick-add parsing (packages/shared/src/quickAddParse.ts): each case parses `text` at `now` (unix ms) in `tz`, with the UI `language` (English when absent). `projects` (name to id, matched case-insensitively) and `labels` (known label names) are the lookups; without them every #name and @name is taken and no project id resolved. `expected` is the new task's fields (`null` when not set), the label names and the matched date span (UTF-16 offsets into `text`). Asserted by packages/shared/src/rulesVectors.test.ts and crates/atlas-client.",
3
+ "cases": [
4
+ {
5
+ "name": "Buy milk tomorrow",
6
+ "text": "Buy milk tomorrow",
7
+ "now": 1672653600000,
8
+ "tz": "UTC",
9
+ "projects": {
10
+ "Groceries": "p-groceries",
11
+ "Work": "p-work"
12
+ },
13
+ "labels": [
14
+ "errand"
15
+ ],
16
+ "expected": {
17
+ "title": "Buy milk",
18
+ "priority": null,
19
+ "due_at": 1672790340000,
20
+ "recurrence": null,
21
+ "project_id": null,
22
+ "labels": [],
23
+ "date_match": {
24
+ "start": 9,
25
+ "end": 17,
26
+ "text": "tomorrow"
27
+ }
28
+ }
29
+ },
30
+ {
31
+ "name": "Buy milk tomorrow 5pm",
32
+ "text": "Buy milk tomorrow 5pm",
33
+ "now": 1672653600000,
34
+ "tz": "UTC",
35
+ "projects": {
36
+ "Groceries": "p-groceries",
37
+ "Work": "p-work"
38
+ },
39
+ "labels": [
40
+ "errand"
41
+ ],
42
+ "expected": {
43
+ "title": "Buy milk",
44
+ "priority": null,
45
+ "due_at": 1672765200000,
46
+ "recurrence": null,
47
+ "project_id": null,
48
+ "labels": [],
49
+ "date_match": {
50
+ "start": 9,
51
+ "end": 21,
52
+ "text": "tomorrow 5pm"
53
+ }
54
+ }
55
+ },
56
+ {
57
+ "name": "Standup 09:30 today",
58
+ "text": "Standup 09:30 today",
59
+ "now": 1672653600000,
60
+ "tz": "UTC",
61
+ "projects": {
62
+ "Groceries": "p-groceries",
63
+ "Work": "p-work"
64
+ },
65
+ "labels": [
66
+ "errand"
67
+ ],
68
+ "expected": {
69
+ "title": "Standup",
70
+ "priority": null,
71
+ "due_at": 1672651800000,
72
+ "recurrence": null,
73
+ "project_id": null,
74
+ "labels": [],
75
+ "date_match": {
76
+ "start": 8,
77
+ "end": 19,
78
+ "text": "09:30 today"
79
+ }
80
+ }
81
+ },
82
+ {
83
+ "name": "Ping in 3 days",
84
+ "text": "Ping in 3 days",
85
+ "now": 1672653600000,
86
+ "tz": "UTC",
87
+ "projects": {
88
+ "Groceries": "p-groceries",
89
+ "Work": "p-work"
90
+ },
91
+ "labels": [
92
+ "errand"
93
+ ],
94
+ "expected": {
95
+ "title": "Ping",
96
+ "priority": null,
97
+ "due_at": 1672963140000,
98
+ "recurrence": null,
99
+ "project_id": null,
100
+ "labels": [],
101
+ "date_match": {
102
+ "start": 5,
103
+ "end": 14,
104
+ "text": "in 3 days"
105
+ }
106
+ }
107
+ },
108
+ {
109
+ "name": "Ping in a week",
110
+ "text": "Ping in a week",
111
+ "now": 1672653600000,
112
+ "tz": "UTC",
113
+ "projects": {
114
+ "Groceries": "p-groceries",
115
+ "Work": "p-work"
116
+ },
117
+ "labels": [
118
+ "errand"
119
+ ],
120
+ "expected": {
121
+ "title": "Ping",
122
+ "priority": null,
123
+ "due_at": 1673308740000,
124
+ "recurrence": null,
125
+ "project_id": null,
126
+ "labels": [],
127
+ "date_match": {
128
+ "start": 5,
129
+ "end": 14,
130
+ "text": "in a week"
131
+ }
132
+ }
133
+ },
134
+ {
135
+ "name": "Ping in 2 months",
136
+ "text": "Ping in 2 months",
137
+ "now": 1672653600000,
138
+ "tz": "UTC",
139
+ "projects": {
140
+ "Groceries": "p-groceries",
141
+ "Work": "p-work"
142
+ },
143
+ "labels": [
144
+ "errand"
145
+ ],
146
+ "expected": {
147
+ "title": "Ping",
148
+ "priority": null,
149
+ "due_at": 1677801540000,
150
+ "recurrence": null,
151
+ "project_id": null,
152
+ "labels": [],
153
+ "date_match": {
154
+ "start": 5,
155
+ "end": 16,
156
+ "text": "in 2 months"
157
+ }
158
+ }
159
+ },
160
+ {
161
+ "name": "Review next monday",
162
+ "text": "Review next monday",
163
+ "now": 1672653600000,
164
+ "tz": "UTC",
165
+ "projects": {
166
+ "Groceries": "p-groceries",
167
+ "Work": "p-work"
168
+ },
169
+ "labels": [
170
+ "errand"
171
+ ],
172
+ "expected": {
173
+ "title": "Review",
174
+ "priority": null,
175
+ "due_at": 1673308740000,
176
+ "recurrence": null,
177
+ "project_id": null,
178
+ "labels": [],
179
+ "date_match": {
180
+ "start": 7,
181
+ "end": 18,
182
+ "text": "next monday"
183
+ }
184
+ }
185
+ },
186
+ {
187
+ "name": "Review next week",
188
+ "text": "Review next week",
189
+ "now": 1672653600000,
190
+ "tz": "UTC",
191
+ "projects": {
192
+ "Groceries": "p-groceries",
193
+ "Work": "p-work"
194
+ },
195
+ "labels": [
196
+ "errand"
197
+ ],
198
+ "expected": {
199
+ "title": "Review",
200
+ "priority": null,
201
+ "due_at": 1673308740000,
202
+ "recurrence": null,
203
+ "project_id": null,
204
+ "labels": [],
205
+ "date_match": {
206
+ "start": 7,
207
+ "end": 16,
208
+ "text": "next week"
209
+ }
210
+ }
211
+ },
212
+ {
213
+ "name": "Submit friday",
214
+ "text": "Submit friday",
215
+ "now": 1672653600000,
216
+ "tz": "UTC",
217
+ "projects": {
218
+ "Groceries": "p-groceries",
219
+ "Work": "p-work"
220
+ },
221
+ "labels": [
222
+ "errand"
223
+ ],
224
+ "expected": {
225
+ "title": "Submit",
226
+ "priority": null,
227
+ "due_at": 1673049540000,
228
+ "recurrence": null,
229
+ "project_id": null,
230
+ "labels": [],
231
+ "date_match": {
232
+ "start": 7,
233
+ "end": 13,
234
+ "text": "friday"
235
+ }
236
+ }
237
+ },
238
+ {
239
+ "name": "Submit this friday",
240
+ "text": "Submit this friday",
241
+ "now": 1672653600000,
242
+ "tz": "UTC",
243
+ "projects": {
244
+ "Groceries": "p-groceries",
245
+ "Work": "p-work"
246
+ },
247
+ "labels": [
248
+ "errand"
249
+ ],
250
+ "expected": {
251
+ "title": "Submit",
252
+ "priority": null,
253
+ "due_at": 1673049540000,
254
+ "recurrence": null,
255
+ "project_id": null,
256
+ "labels": [],
257
+ "date_match": {
258
+ "start": 7,
259
+ "end": 18,
260
+ "text": "this friday"
261
+ }
262
+ }
263
+ },
264
+ {
265
+ "name": "Trip jun 3",
266
+ "text": "Trip jun 3",
267
+ "now": 1672653600000,
268
+ "tz": "UTC",
269
+ "projects": {
270
+ "Groceries": "p-groceries",
271
+ "Work": "p-work"
272
+ },
273
+ "labels": [
274
+ "errand"
275
+ ],
276
+ "expected": {
277
+ "title": "Trip",
278
+ "priority": null,
279
+ "due_at": 1685836740000,
280
+ "recurrence": null,
281
+ "project_id": null,
282
+ "labels": [],
283
+ "date_match": {
284
+ "start": 5,
285
+ "end": 10,
286
+ "text": "jun 3"
287
+ }
288
+ }
289
+ },
290
+ {
291
+ "name": "Trip june 3rd",
292
+ "text": "Trip june 3rd",
293
+ "now": 1672653600000,
294
+ "tz": "UTC",
295
+ "projects": {
296
+ "Groceries": "p-groceries",
297
+ "Work": "p-work"
298
+ },
299
+ "labels": [
300
+ "errand"
301
+ ],
302
+ "expected": {
303
+ "title": "Trip",
304
+ "priority": null,
305
+ "due_at": 1685836740000,
306
+ "recurrence": null,
307
+ "project_id": null,
308
+ "labels": [],
309
+ "date_match": {
310
+ "start": 5,
311
+ "end": 13,
312
+ "text": "june 3rd"
313
+ }
314
+ }
315
+ },
316
+ {
317
+ "name": "Trip 3rd of june",
318
+ "text": "Trip 3rd of june",
319
+ "now": 1672653600000,
320
+ "tz": "UTC",
321
+ "projects": {
322
+ "Groceries": "p-groceries",
323
+ "Work": "p-work"
324
+ },
325
+ "labels": [
326
+ "errand"
327
+ ],
328
+ "expected": {
329
+ "title": "Trip",
330
+ "priority": null,
331
+ "due_at": 1685836740000,
332
+ "recurrence": null,
333
+ "project_id": null,
334
+ "labels": [],
335
+ "date_match": {
336
+ "start": 5,
337
+ "end": 16,
338
+ "text": "3rd of june"
339
+ }
340
+ }
341
+ },
342
+ {
343
+ "name": "Trip 3 jun",
344
+ "text": "Trip 3 jun",
345
+ "now": 1672653600000,
346
+ "tz": "UTC",
347
+ "projects": {
348
+ "Groceries": "p-groceries",
349
+ "Work": "p-work"
350
+ },
351
+ "labels": [
352
+ "errand"
353
+ ],
354
+ "expected": {
355
+ "title": "Trip",
356
+ "priority": null,
357
+ "due_at": 1685836740000,
358
+ "recurrence": null,
359
+ "project_id": null,
360
+ "labels": [],
361
+ "date_match": {
362
+ "start": 5,
363
+ "end": 10,
364
+ "text": "3 jun"
365
+ }
366
+ }
367
+ },
368
+ {
369
+ "name": "Party jan 1",
370
+ "text": "Party jan 1",
371
+ "now": 1672653600000,
372
+ "tz": "UTC",
373
+ "projects": {
374
+ "Groceries": "p-groceries",
375
+ "Work": "p-work"
376
+ },
377
+ "labels": [
378
+ "errand"
379
+ ],
380
+ "expected": {
381
+ "title": "Party",
382
+ "priority": null,
383
+ "due_at": 1704153540000,
384
+ "recurrence": null,
385
+ "project_id": null,
386
+ "labels": [],
387
+ "date_match": {
388
+ "start": 6,
389
+ "end": 11,
390
+ "text": "jan 1"
391
+ }
392
+ }
393
+ },
394
+ {
395
+ "name": "Feb 30 is not a date",
396
+ "text": "Feb 30 is not a date",
397
+ "now": 1672653600000,
398
+ "tz": "UTC",
399
+ "projects": {
400
+ "Groceries": "p-groceries",
401
+ "Work": "p-work"
402
+ },
403
+ "labels": [
404
+ "errand"
405
+ ],
406
+ "expected": {
407
+ "title": "Feb 30 is not a date",
408
+ "priority": null,
409
+ "due_at": null,
410
+ "recurrence": null,
411
+ "project_id": null,
412
+ "labels": [],
413
+ "date_match": null
414
+ }
415
+ },
416
+ {
417
+ "name": "Call 5pm",
418
+ "text": "Call 5pm",
419
+ "now": 1672653600000,
420
+ "tz": "UTC",
421
+ "projects": {
422
+ "Groceries": "p-groceries",
423
+ "Work": "p-work"
424
+ },
425
+ "labels": [
426
+ "errand"
427
+ ],
428
+ "expected": {
429
+ "title": "Call",
430
+ "priority": null,
431
+ "due_at": 1672678800000,
432
+ "recurrence": null,
433
+ "project_id": null,
434
+ "labels": [],
435
+ "date_match": {
436
+ "start": 5,
437
+ "end": 8,
438
+ "text": "5pm"
439
+ }
440
+ }
441
+ },
442
+ {
443
+ "name": "Call 12am",
444
+ "text": "Call 12am",
445
+ "now": 1672653600000,
446
+ "tz": "UTC",
447
+ "projects": {
448
+ "Groceries": "p-groceries",
449
+ "Work": "p-work"
450
+ },
451
+ "labels": [
452
+ "errand"
453
+ ],
454
+ "expected": {
455
+ "title": "Call",
456
+ "priority": null,
457
+ "due_at": 1672617600000,
458
+ "recurrence": null,
459
+ "project_id": null,
460
+ "labels": [],
461
+ "date_match": {
462
+ "start": 5,
463
+ "end": 9,
464
+ "text": "12am"
465
+ }
466
+ }
467
+ },
468
+ {
469
+ "name": "Call 12pm",
470
+ "text": "Call 12pm",
471
+ "now": 1672653600000,
472
+ "tz": "UTC",
473
+ "projects": {
474
+ "Groceries": "p-groceries",
475
+ "Work": "p-work"
476
+ },
477
+ "labels": [
478
+ "errand"
479
+ ],
480
+ "expected": {
481
+ "title": "Call",
482
+ "priority": null,
483
+ "due_at": 1672660800000,
484
+ "recurrence": null,
485
+ "project_id": null,
486
+ "labels": [],
487
+ "date_match": {
488
+ "start": 5,
489
+ "end": 9,
490
+ "text": "12pm"
491
+ }
492
+ }
493
+ },
494
+ {
495
+ "name": "Call at 13:00",
496
+ "text": "Call at 13:00",
497
+ "now": 1672653600000,
498
+ "tz": "UTC",
499
+ "projects": {
500
+ "Groceries": "p-groceries",
501
+ "Work": "p-work"
502
+ },
503
+ "labels": [
504
+ "errand"
505
+ ],
506
+ "expected": {
507
+ "title": "Call",
508
+ "priority": null,
509
+ "due_at": 1672664400000,
510
+ "recurrence": null,
511
+ "project_id": null,
512
+ "labels": [],
513
+ "date_match": {
514
+ "start": 5,
515
+ "end": 13,
516
+ "text": "at 13:00"
517
+ }
518
+ }
519
+ },
520
+ {
521
+ "name": "Meeting 13:00 mon",
522
+ "text": "Meeting 13:00 mon",
523
+ "now": 1672653600000,
524
+ "tz": "UTC",
525
+ "projects": {
526
+ "Groceries": "p-groceries",
527
+ "Work": "p-work"
528
+ },
529
+ "labels": [
530
+ "errand"
531
+ ],
532
+ "expected": {
533
+ "title": "Meeting",
534
+ "priority": null,
535
+ "due_at": 1672664400000,
536
+ "recurrence": null,
537
+ "project_id": null,
538
+ "labels": [],
539
+ "date_match": {
540
+ "start": 8,
541
+ "end": 17,
542
+ "text": "13:00 mon"
543
+ }
544
+ }
545
+ },
546
+ {
547
+ "name": "Meeting mon 13:00",
548
+ "text": "Meeting mon 13:00",
549
+ "now": 1672653600000,
550
+ "tz": "UTC",
551
+ "projects": {
552
+ "Groceries": "p-groceries",
553
+ "Work": "p-work"
554
+ },
555
+ "labels": [
556
+ "errand"
557
+ ],
558
+ "expected": {
559
+ "title": "Meeting",
560
+ "priority": null,
561
+ "due_at": 1672664400000,
562
+ "recurrence": null,
563
+ "project_id": null,
564
+ "labels": [],
565
+ "date_match": {
566
+ "start": 8,
567
+ "end": 17,
568
+ "text": "mon 13:00"
569
+ }
570
+ }
571
+ },
572
+ {
573
+ "name": "Meeting at 13:00 mon",
574
+ "text": "Meeting at 13:00 mon",
575
+ "now": 1672653600000,
576
+ "tz": "UTC",
577
+ "projects": {
578
+ "Groceries": "p-groceries",
579
+ "Work": "p-work"
580
+ },
581
+ "labels": [
582
+ "errand"
583
+ ],
584
+ "expected": {
585
+ "title": "Meeting",
586
+ "priority": null,
587
+ "due_at": 1672664400000,
588
+ "recurrence": null,
589
+ "project_id": null,
590
+ "labels": [],
591
+ "date_match": {
592
+ "start": 8,
593
+ "end": 20,
594
+ "text": "at 13:00 mon"
595
+ }
596
+ }
597
+ },
598
+ {
599
+ "name": "Meeting mon at 13:00",
600
+ "text": "Meeting mon at 13:00",
601
+ "now": 1672653600000,
602
+ "tz": "UTC",
603
+ "projects": {
604
+ "Groceries": "p-groceries",
605
+ "Work": "p-work"
606
+ },
607
+ "labels": [
608
+ "errand"
609
+ ],
610
+ "expected": {
611
+ "title": "Meeting",
612
+ "priority": null,
613
+ "due_at": 1672664400000,
614
+ "recurrence": null,
615
+ "project_id": null,
616
+ "labels": [],
617
+ "date_match": {
618
+ "start": 8,
619
+ "end": 20,
620
+ "text": "mon at 13:00"
621
+ }
622
+ }
623
+ },
624
+ {
625
+ "name": "Lunch 13.00 mon",
626
+ "text": "Lunch 13.00 mon",
627
+ "now": 1672653600000,
628
+ "tz": "UTC",
629
+ "projects": {
630
+ "Groceries": "p-groceries",
631
+ "Work": "p-work"
632
+ },
633
+ "labels": [
634
+ "errand"
635
+ ],
636
+ "expected": {
637
+ "title": "Lunch",
638
+ "priority": null,
639
+ "due_at": 1672664400000,
640
+ "recurrence": null,
641
+ "project_id": null,
642
+ "labels": [],
643
+ "date_match": {
644
+ "start": 6,
645
+ "end": 15,
646
+ "text": "13.00 mon"
647
+ }
648
+ }
649
+ },
650
+ {
651
+ "name": "Lunch at noon tomorrow",
652
+ "text": "Lunch at noon tomorrow",
653
+ "now": 1672653600000,
654
+ "tz": "UTC",
655
+ "projects": {
656
+ "Groceries": "p-groceries",
657
+ "Work": "p-work"
658
+ },
659
+ "labels": [
660
+ "errand"
661
+ ],
662
+ "expected": {
663
+ "title": "Lunch",
664
+ "priority": null,
665
+ "due_at": 1672747200000,
666
+ "recurrence": null,
667
+ "project_id": null,
668
+ "labels": [],
669
+ "date_match": {
670
+ "start": 6,
671
+ "end": 22,
672
+ "text": "at noon tomorrow"
673
+ }
674
+ }
675
+ },
676
+ {
677
+ "name": "Backup at midnight",
678
+ "text": "Backup at midnight",
679
+ "now": 1672653600000,
680
+ "tz": "UTC",
681
+ "projects": {
682
+ "Groceries": "p-groceries",
683
+ "Work": "p-work"
684
+ },
685
+ "labels": [
686
+ "errand"
687
+ ],
688
+ "expected": {
689
+ "title": "Backup",
690
+ "priority": null,
691
+ "due_at": 1672617600000,
692
+ "recurrence": null,
693
+ "project_id": null,
694
+ "labels": [],
695
+ "date_match": {
696
+ "start": 7,
697
+ "end": 18,
698
+ "text": "at midnight"
699
+ }
700
+ }
701
+ },
702
+ {
703
+ "name": "Sync 13:00",
704
+ "text": "Sync 13:00",
705
+ "now": 1672653600000,
706
+ "tz": "UTC",
707
+ "projects": {
708
+ "Groceries": "p-groceries",
709
+ "Work": "p-work"
710
+ },
711
+ "labels": [
712
+ "errand"
713
+ ],
714
+ "expected": {
715
+ "title": "Sync",
716
+ "priority": null,
717
+ "due_at": 1672664400000,
718
+ "recurrence": null,
719
+ "project_id": null,
720
+ "labels": [],
721
+ "date_match": {
722
+ "start": 5,
723
+ "end": 10,
724
+ "text": "13:00"
725
+ }
726
+ }
727
+ },
728
+ {
729
+ "name": "Pay rent every month",
730
+ "text": "Pay rent every month",
731
+ "now": 1672653600000,
732
+ "tz": "UTC",
733
+ "projects": {
734
+ "Groceries": "p-groceries",
735
+ "Work": "p-work"
736
+ },
737
+ "labels": [
738
+ "errand"
739
+ ],
740
+ "expected": {
741
+ "title": "Pay rent",
742
+ "priority": null,
743
+ "due_at": 1672703940000,
744
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=2",
745
+ "project_id": null,
746
+ "labels": [],
747
+ "date_match": null
748
+ }
749
+ },
750
+ {
751
+ "name": "Pay rent every month on the 1st",
752
+ "text": "Pay rent every month on the 1st",
753
+ "now": 1672653600000,
754
+ "tz": "UTC",
755
+ "projects": {
756
+ "Groceries": "p-groceries",
757
+ "Work": "p-work"
758
+ },
759
+ "labels": [
760
+ "errand"
761
+ ],
762
+ "expected": {
763
+ "title": "Pay rent on the 1st",
764
+ "priority": null,
765
+ "due_at": 1672703940000,
766
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=2",
767
+ "project_id": null,
768
+ "labels": [],
769
+ "date_match": null
770
+ }
771
+ },
772
+ {
773
+ "name": "Water plants every 2 days",
774
+ "text": "Water plants every 2 days",
775
+ "now": 1672653600000,
776
+ "tz": "UTC",
777
+ "projects": {
778
+ "Groceries": "p-groceries",
779
+ "Work": "p-work"
780
+ },
781
+ "labels": [
782
+ "errand"
783
+ ],
784
+ "expected": {
785
+ "title": "Water plants",
786
+ "priority": null,
787
+ "due_at": 1672703940000,
788
+ "recurrence": "FREQ=DAILY;INTERVAL=2",
789
+ "project_id": null,
790
+ "labels": [],
791
+ "date_match": null
792
+ }
793
+ },
794
+ {
795
+ "name": "Water plants every! 3 days",
796
+ "text": "Water plants every! 3 days",
797
+ "now": 1672653600000,
798
+ "tz": "UTC",
799
+ "projects": {
800
+ "Groceries": "p-groceries",
801
+ "Work": "p-work"
802
+ },
803
+ "labels": [
804
+ "errand"
805
+ ],
806
+ "expected": {
807
+ "title": "Water plants",
808
+ "priority": null,
809
+ "due_at": 1672703940000,
810
+ "recurrence": "FREQ=DAILY;INTERVAL=3;MODE=COMPLETION",
811
+ "project_id": null,
812
+ "labels": [],
813
+ "date_match": null
814
+ }
815
+ },
816
+ {
817
+ "name": "Gym every monday",
818
+ "text": "Gym every monday",
819
+ "now": 1672653600000,
820
+ "tz": "UTC",
821
+ "projects": {
822
+ "Groceries": "p-groceries",
823
+ "Work": "p-work"
824
+ },
825
+ "labels": [
826
+ "errand"
827
+ ],
828
+ "expected": {
829
+ "title": "Gym",
830
+ "priority": null,
831
+ "due_at": 1672703940000,
832
+ "recurrence": "FREQ=WEEKLY;BYDAY=MO",
833
+ "project_id": null,
834
+ "labels": [],
835
+ "date_match": null
836
+ }
837
+ },
838
+ {
839
+ "name": "Gym every mon 7am",
840
+ "text": "Gym every mon 7am",
841
+ "now": 1672653600000,
842
+ "tz": "UTC",
843
+ "projects": {
844
+ "Groceries": "p-groceries",
845
+ "Work": "p-work"
846
+ },
847
+ "labels": [
848
+ "errand"
849
+ ],
850
+ "expected": {
851
+ "title": "Gym",
852
+ "priority": null,
853
+ "due_at": 1672642800000,
854
+ "recurrence": "FREQ=WEEKLY;BYDAY=MO",
855
+ "project_id": null,
856
+ "labels": [],
857
+ "date_match": {
858
+ "start": 14,
859
+ "end": 17,
860
+ "text": "7am"
861
+ }
862
+ }
863
+ },
864
+ {
865
+ "name": "Report every week from completion",
866
+ "text": "Report every week from completion",
867
+ "now": 1672653600000,
868
+ "tz": "UTC",
869
+ "projects": {
870
+ "Groceries": "p-groceries",
871
+ "Work": "p-work"
872
+ },
873
+ "labels": [
874
+ "errand"
875
+ ],
876
+ "expected": {
877
+ "title": "Report",
878
+ "priority": null,
879
+ "due_at": 1672703940000,
880
+ "recurrence": "FREQ=WEEKLY;MODE=COMPLETION",
881
+ "project_id": null,
882
+ "labels": [],
883
+ "date_match": null
884
+ }
885
+ },
886
+ {
887
+ "name": "Daily standup daily",
888
+ "text": "Daily standup daily",
889
+ "now": 1672653600000,
890
+ "tz": "UTC",
891
+ "projects": {
892
+ "Groceries": "p-groceries",
893
+ "Work": "p-work"
894
+ },
895
+ "labels": [
896
+ "errand"
897
+ ],
898
+ "expected": {
899
+ "title": "standup",
900
+ "priority": null,
901
+ "due_at": 1672703940000,
902
+ "recurrence": "FREQ=DAILY",
903
+ "project_id": null,
904
+ "labels": [],
905
+ "date_match": null
906
+ }
907
+ },
908
+ {
909
+ "name": "Taxes yearly",
910
+ "text": "Taxes yearly",
911
+ "now": 1672653600000,
912
+ "tz": "UTC",
913
+ "projects": {
914
+ "Groceries": "p-groceries",
915
+ "Work": "p-work"
916
+ },
917
+ "labels": [
918
+ "errand"
919
+ ],
920
+ "expected": {
921
+ "title": "Taxes",
922
+ "priority": null,
923
+ "due_at": 1672703940000,
924
+ "recurrence": "FREQ=YEARLY",
925
+ "project_id": null,
926
+ "labels": [],
927
+ "date_match": null
928
+ }
929
+ },
930
+ {
931
+ "name": "Renew every year jan 31",
932
+ "text": "Renew every year jan 31",
933
+ "now": 1672653600000,
934
+ "tz": "UTC",
935
+ "projects": {
936
+ "Groceries": "p-groceries",
937
+ "Work": "p-work"
938
+ },
939
+ "labels": [
940
+ "errand"
941
+ ],
942
+ "expected": {
943
+ "title": "Renew",
944
+ "priority": null,
945
+ "due_at": 1675209540000,
946
+ "recurrence": "FREQ=YEARLY",
947
+ "project_id": null,
948
+ "labels": [],
949
+ "date_match": {
950
+ "start": 17,
951
+ "end": 23,
952
+ "text": "jan 31"
953
+ }
954
+ }
955
+ },
956
+ {
957
+ "name": "Invoice every month jan 31",
958
+ "text": "Invoice every month jan 31",
959
+ "now": 1672653600000,
960
+ "tz": "UTC",
961
+ "projects": {
962
+ "Groceries": "p-groceries",
963
+ "Work": "p-work"
964
+ },
965
+ "labels": [
966
+ "errand"
967
+ ],
968
+ "expected": {
969
+ "title": "Invoice",
970
+ "priority": null,
971
+ "due_at": 1675209540000,
972
+ "recurrence": "FREQ=MONTHLY;BYMONTHDAY=31",
973
+ "project_id": null,
974
+ "labels": [],
975
+ "date_match": {
976
+ "start": 20,
977
+ "end": 26,
978
+ "text": "jan 31"
979
+ }
980
+ }
981
+ },
982
+ {
983
+ "name": "p1 Urgent thing p3",
984
+ "text": "p1 Urgent thing p3",
985
+ "now": 1672653600000,
986
+ "tz": "UTC",
987
+ "projects": {
988
+ "Groceries": "p-groceries",
989
+ "Work": "p-work"
990
+ },
991
+ "labels": [
992
+ "errand"
993
+ ],
994
+ "expected": {
995
+ "title": "Urgent thing",
996
+ "priority": 3,
997
+ "due_at": null,
998
+ "recurrence": null,
999
+ "project_id": null,
1000
+ "labels": [],
1001
+ "date_match": null
1002
+ }
1003
+ },
1004
+ {
1005
+ "name": "Buy milk #Groceries @errand p2",
1006
+ "text": "Buy milk #Groceries @errand p2",
1007
+ "now": 1672653600000,
1008
+ "tz": "UTC",
1009
+ "projects": {
1010
+ "Groceries": "p-groceries",
1011
+ "Work": "p-work"
1012
+ },
1013
+ "labels": [
1014
+ "errand"
1015
+ ],
1016
+ "expected": {
1017
+ "title": "Buy milk",
1018
+ "priority": 2,
1019
+ "due_at": null,
1020
+ "recurrence": null,
1021
+ "project_id": "p-groceries",
1022
+ "labels": [
1023
+ "errand"
1024
+ ],
1025
+ "date_match": null
1026
+ }
1027
+ },
1028
+ {
1029
+ "name": "Buy milk #Unknown @nolabel",
1030
+ "text": "Buy milk #Unknown @nolabel",
1031
+ "now": 1672653600000,
1032
+ "tz": "UTC",
1033
+ "projects": {
1034
+ "Groceries": "p-groceries",
1035
+ "Work": "p-work"
1036
+ },
1037
+ "labels": [
1038
+ "errand"
1039
+ ],
1040
+ "expected": {
1041
+ "title": "Buy milk #Unknown @nolabel",
1042
+ "priority": null,
1043
+ "due_at": null,
1044
+ "recurrence": null,
1045
+ "project_id": null,
1046
+ "labels": [],
1047
+ "date_match": null
1048
+ }
1049
+ },
1050
+ {
1051
+ "name": "Fix #Work bug @Errand tomorrow at 9:30am",
1052
+ "text": "Fix #Work bug @Errand tomorrow at 9:30am",
1053
+ "now": 1672653600000,
1054
+ "tz": "UTC",
1055
+ "projects": {
1056
+ "Groceries": "p-groceries",
1057
+ "Work": "p-work"
1058
+ },
1059
+ "labels": [
1060
+ "errand"
1061
+ ],
1062
+ "expected": {
1063
+ "title": "Fix bug",
1064
+ "priority": null,
1065
+ "due_at": 1672738200000,
1066
+ "recurrence": null,
1067
+ "project_id": "p-work",
1068
+ "labels": [
1069
+ "Errand"
1070
+ ],
1071
+ "date_match": {
1072
+ "start": 22,
1073
+ "end": 40,
1074
+ "text": "tomorrow at 9:30am"
1075
+ }
1076
+ }
1077
+ },
1078
+ {
1079
+ "name": "Just a title",
1080
+ "text": "Just a title",
1081
+ "now": 1672653600000,
1082
+ "tz": "UTC",
1083
+ "projects": {
1084
+ "Groceries": "p-groceries",
1085
+ "Work": "p-work"
1086
+ },
1087
+ "labels": [
1088
+ "errand"
1089
+ ],
1090
+ "expected": {
1091
+ "title": "Just a title",
1092
+ "priority": null,
1093
+ "due_at": null,
1094
+ "recurrence": null,
1095
+ "project_id": null,
1096
+ "labels": [],
1097
+ "date_match": null
1098
+ }
1099
+ },
1100
+ {
1101
+ "name": " spaced out words ",
1102
+ "text": " spaced out words ",
1103
+ "now": 1672653600000,
1104
+ "tz": "UTC",
1105
+ "projects": {
1106
+ "Groceries": "p-groceries",
1107
+ "Work": "p-work"
1108
+ },
1109
+ "labels": [
1110
+ "errand"
1111
+ ],
1112
+ "expected": {
1113
+ "title": "spaced out words",
1114
+ "priority": null,
1115
+ "due_at": null,
1116
+ "recurrence": null,
1117
+ "project_id": null,
1118
+ "labels": [],
1119
+ "date_match": null
1120
+ }
1121
+ },
1122
+ {
1123
+ "name": "",
1124
+ "text": "",
1125
+ "now": 1672653600000,
1126
+ "tz": "UTC",
1127
+ "projects": {
1128
+ "Groceries": "p-groceries",
1129
+ "Work": "p-work"
1130
+ },
1131
+ "labels": [
1132
+ "errand"
1133
+ ],
1134
+ "expected": {
1135
+ "title": "",
1136
+ "priority": null,
1137
+ "due_at": null,
1138
+ "recurrence": null,
1139
+ "project_id": null,
1140
+ "labels": [],
1141
+ "date_match": null
1142
+ }
1143
+ },
1144
+ {
1145
+ "name": "tomorrow",
1146
+ "text": "tomorrow",
1147
+ "now": 1672653600000,
1148
+ "tz": "UTC",
1149
+ "projects": {
1150
+ "Groceries": "p-groceries",
1151
+ "Work": "p-work"
1152
+ },
1153
+ "labels": [
1154
+ "errand"
1155
+ ],
1156
+ "expected": {
1157
+ "title": "",
1158
+ "priority": null,
1159
+ "due_at": 1672790340000,
1160
+ "recurrence": null,
1161
+ "project_id": null,
1162
+ "labels": [],
1163
+ "date_match": {
1164
+ "start": 0,
1165
+ "end": 8,
1166
+ "text": "tomorrow"
1167
+ }
1168
+ }
1169
+ },
1170
+ {
1171
+ "name": "Ünïcödé ✓ title tomorrow",
1172
+ "text": "Ünïcödé ✓ title tomorrow",
1173
+ "now": 1672653600000,
1174
+ "tz": "UTC",
1175
+ "projects": {
1176
+ "Groceries": "p-groceries",
1177
+ "Work": "p-work"
1178
+ },
1179
+ "labels": [
1180
+ "errand"
1181
+ ],
1182
+ "expected": {
1183
+ "title": "Ünïcödé ✓ title",
1184
+ "priority": null,
1185
+ "due_at": 1672790340000,
1186
+ "recurrence": null,
1187
+ "project_id": null,
1188
+ "labels": [],
1189
+ "date_match": {
1190
+ "start": 16,
1191
+ "end": 24,
1192
+ "text": "tomorrow"
1193
+ }
1194
+ }
1195
+ },
1196
+ {
1197
+ "name": "Call mom fri, 5pm",
1198
+ "text": "Call mom fri, 5pm",
1199
+ "now": 1672653600000,
1200
+ "tz": "UTC",
1201
+ "projects": {
1202
+ "Groceries": "p-groceries",
1203
+ "Work": "p-work"
1204
+ },
1205
+ "labels": [
1206
+ "errand"
1207
+ ],
1208
+ "expected": {
1209
+ "title": "Call mom",
1210
+ "priority": null,
1211
+ "due_at": 1673024400000,
1212
+ "recurrence": null,
1213
+ "project_id": null,
1214
+ "labels": [],
1215
+ "date_match": {
1216
+ "start": 9,
1217
+ "end": 17,
1218
+ "text": "fri, 5pm"
1219
+ }
1220
+ }
1221
+ },
1222
+ {
1223
+ "name": "Deadline 31st of dec",
1224
+ "text": "Deadline 31st of dec",
1225
+ "now": 1672653600000,
1226
+ "tz": "UTC",
1227
+ "projects": {
1228
+ "Groceries": "p-groceries",
1229
+ "Work": "p-work"
1230
+ },
1231
+ "labels": [
1232
+ "errand"
1233
+ ],
1234
+ "expected": {
1235
+ "title": "Deadline",
1236
+ "priority": null,
1237
+ "due_at": 1704067140000,
1238
+ "recurrence": null,
1239
+ "project_id": null,
1240
+ "labels": [],
1241
+ "date_match": {
1242
+ "start": 9,
1243
+ "end": 20,
1244
+ "text": "31st of dec"
1245
+ }
1246
+ }
1247
+ },
1248
+ {
1249
+ "name": "Something on 25 dec at 18:00",
1250
+ "text": "Something on 25 dec at 18:00",
1251
+ "now": 1672653600000,
1252
+ "tz": "UTC",
1253
+ "projects": {
1254
+ "Groceries": "p-groceries",
1255
+ "Work": "p-work"
1256
+ },
1257
+ "labels": [
1258
+ "errand"
1259
+ ],
1260
+ "expected": {
1261
+ "title": "Something",
1262
+ "priority": null,
1263
+ "due_at": 1703527200000,
1264
+ "recurrence": null,
1265
+ "project_id": null,
1266
+ "labels": [],
1267
+ "date_match": {
1268
+ "start": 10,
1269
+ "end": 28,
1270
+ "text": "on 25 dec at 18:00"
1271
+ }
1272
+ }
1273
+ },
1274
+ {
1275
+ "name": "Plan today",
1276
+ "text": "Plan today",
1277
+ "now": 1784116800000,
1278
+ "tz": "America/New_York",
1279
+ "expected": {
1280
+ "title": "Plan",
1281
+ "priority": null,
1282
+ "due_at": 1784174340000,
1283
+ "recurrence": null,
1284
+ "project_id": null,
1285
+ "labels": [],
1286
+ "date_match": {
1287
+ "start": 5,
1288
+ "end": 10,
1289
+ "text": "today"
1290
+ }
1291
+ }
1292
+ },
1293
+ {
1294
+ "name": "Plan today 5pm",
1295
+ "text": "Plan today 5pm",
1296
+ "now": 1784116800000,
1297
+ "tz": "Europe/Copenhagen",
1298
+ "expected": {
1299
+ "title": "Plan",
1300
+ "priority": null,
1301
+ "due_at": 1784127600000,
1302
+ "recurrence": null,
1303
+ "project_id": null,
1304
+ "labels": [],
1305
+ "date_match": {
1306
+ "start": 5,
1307
+ "end": 14,
1308
+ "text": "today 5pm"
1309
+ }
1310
+ }
1311
+ },
1312
+ {
1313
+ "name": "Plan tomorrow 2:30am",
1314
+ "text": "Plan tomorrow 2:30am",
1315
+ "now": 1774699200000,
1316
+ "tz": "Europe/Copenhagen",
1317
+ "expected": {
1318
+ "title": "Plan",
1319
+ "priority": null,
1320
+ "due_at": 1774747800000,
1321
+ "recurrence": null,
1322
+ "project_id": null,
1323
+ "labels": [],
1324
+ "date_match": {
1325
+ "start": 5,
1326
+ "end": 20,
1327
+ "text": "tomorrow 2:30am"
1328
+ }
1329
+ }
1330
+ },
1331
+ {
1332
+ "name": "Weekly every week",
1333
+ "text": "Weekly every week",
1334
+ "now": 1774699200000,
1335
+ "tz": "Asia/Tokyo",
1336
+ "expected": {
1337
+ "title": "",
1338
+ "priority": null,
1339
+ "due_at": 1774709940000,
1340
+ "recurrence": "FREQ=WEEKLY",
1341
+ "project_id": null,
1342
+ "labels": [],
1343
+ "date_match": null
1344
+ }
1345
+ },
1346
+ {
1347
+ "name": "Any #project resolves without a lookup @any",
1348
+ "text": "Any #project resolves without a lookup @any",
1349
+ "now": 1672653600000,
1350
+ "tz": "UTC",
1351
+ "expected": {
1352
+ "title": "Any resolves without a lookup",
1353
+ "priority": null,
1354
+ "due_at": null,
1355
+ "recurrence": null,
1356
+ "project_id": null,
1357
+ "labels": [
1358
+ "any"
1359
+ ],
1360
+ "date_match": null
1361
+ }
1362
+ },
1363
+ {
1364
+ "name": "Køb mælk i morgen kl 17",
1365
+ "text": "Køb mælk i morgen kl 17",
1366
+ "now": 1672653600000,
1367
+ "tz": "Europe/Copenhagen",
1368
+ "language": "da",
1369
+ "expected": {
1370
+ "title": "Køb mælk",
1371
+ "priority": null,
1372
+ "due_at": 1672761600000,
1373
+ "recurrence": null,
1374
+ "project_id": null,
1375
+ "labels": [],
1376
+ "date_match": {
1377
+ "start": 9,
1378
+ "end": 23,
1379
+ "text": "i morgen kl 17"
1380
+ }
1381
+ }
1382
+ },
1383
+ {
1384
+ "name": "Møde hver 2. uge",
1385
+ "text": "Møde hver 2. uge",
1386
+ "now": 1672653600000,
1387
+ "tz": "Europe/Copenhagen",
1388
+ "language": "da",
1389
+ "expected": {
1390
+ "title": "Møde",
1391
+ "priority": null,
1392
+ "due_at": 1672700340000,
1393
+ "recurrence": "FREQ=WEEKLY;INTERVAL=2",
1394
+ "project_id": null,
1395
+ "labels": [],
1396
+ "date_match": null
1397
+ }
1398
+ },
1399
+ {
1400
+ "name": "Ring kl17 på fredag",
1401
+ "text": "Ring kl17 på fredag",
1402
+ "now": 1672653600000,
1403
+ "tz": "Europe/Copenhagen",
1404
+ "language": "da",
1405
+ "expected": {
1406
+ "title": "Ring",
1407
+ "priority": null,
1408
+ "due_at": 1673020800000,
1409
+ "recurrence": null,
1410
+ "project_id": null,
1411
+ "labels": [],
1412
+ "date_match": {
1413
+ "start": 5,
1414
+ "end": 19,
1415
+ "text": "kl17 på fredag"
1416
+ }
1417
+ }
1418
+ },
1419
+ {
1420
+ "name": "Arzt am Montag um 17 Uhr",
1421
+ "text": "Arzt am Montag um 17 Uhr",
1422
+ "now": 1672653600000,
1423
+ "tz": "Europe/Berlin",
1424
+ "language": "de",
1425
+ "expected": {
1426
+ "title": "Arzt",
1427
+ "priority": null,
1428
+ "due_at": 1672675200000,
1429
+ "recurrence": null,
1430
+ "project_id": null,
1431
+ "labels": [],
1432
+ "date_match": {
1433
+ "start": 5,
1434
+ "end": 24,
1435
+ "text": "am montag um 17 uhr"
1436
+ }
1437
+ }
1438
+ },
1439
+ {
1440
+ "name": "Einkaufen übermorgen",
1441
+ "text": "Einkaufen übermorgen",
1442
+ "now": 1672653600000,
1443
+ "tz": "Europe/Berlin",
1444
+ "language": "de",
1445
+ "expected": {
1446
+ "title": "Einkaufen",
1447
+ "priority": null,
1448
+ "due_at": 1672873140000,
1449
+ "recurrence": null,
1450
+ "project_id": null,
1451
+ "labels": [],
1452
+ "date_match": {
1453
+ "start": 10,
1454
+ "end": 20,
1455
+ "text": "übermorgen"
1456
+ }
1457
+ }
1458
+ },
1459
+ {
1460
+ "name": "Bericht alle 2 Wochen",
1461
+ "text": "Bericht alle 2 Wochen",
1462
+ "now": 1672653600000,
1463
+ "tz": "Europe/Vienna",
1464
+ "language": "de-AT",
1465
+ "expected": {
1466
+ "title": "Bericht",
1467
+ "priority": null,
1468
+ "due_at": 1672700340000,
1469
+ "recurrence": "FREQ=WEEKLY;INTERVAL=2",
1470
+ "project_id": null,
1471
+ "labels": [],
1472
+ "date_match": null
1473
+ }
1474
+ },
1475
+ {
1476
+ "name": "Rendez-vous lundi prochain à 17h30",
1477
+ "text": "Rendez-vous lundi prochain à 17h30",
1478
+ "now": 1672653600000,
1479
+ "tz": "Europe/Paris",
1480
+ "language": "fr",
1481
+ "expected": {
1482
+ "title": "Rendez-vous",
1483
+ "priority": null,
1484
+ "due_at": 1673281800000,
1485
+ "recurrence": null,
1486
+ "project_id": null,
1487
+ "labels": [],
1488
+ "date_match": {
1489
+ "start": 12,
1490
+ "end": 34,
1491
+ "text": "lundi prochain à 17h30"
1492
+ }
1493
+ }
1494
+ },
1495
+ {
1496
+ "name": "Réunion le 1er mars",
1497
+ "text": "Réunion le 1er mars",
1498
+ "now": 1672653600000,
1499
+ "tz": "Europe/Paris",
1500
+ "language": "fr",
1501
+ "expected": {
1502
+ "title": "Réunion",
1503
+ "priority": null,
1504
+ "due_at": 1677711540000,
1505
+ "recurrence": null,
1506
+ "project_id": null,
1507
+ "labels": [],
1508
+ "date_match": {
1509
+ "start": 8,
1510
+ "end": 19,
1511
+ "text": "le 1er mars"
1512
+ }
1513
+ }
1514
+ },
1515
+ {
1516
+ "name": "Cita pasado mañana a las 9",
1517
+ "text": "Cita pasado mañana a las 9",
1518
+ "now": 1672653600000,
1519
+ "tz": "Europe/Madrid",
1520
+ "language": "es",
1521
+ "expected": {
1522
+ "title": "Cita",
1523
+ "priority": null,
1524
+ "due_at": 1672819200000,
1525
+ "recurrence": null,
1526
+ "project_id": null,
1527
+ "labels": [],
1528
+ "date_match": {
1529
+ "start": 5,
1530
+ "end": 26,
1531
+ "text": "pasado mañana a las 9"
1532
+ }
1533
+ }
1534
+ },
1535
+ {
1536
+ "name": "Pagar el 3 de marzo",
1537
+ "text": "Pagar el 3 de marzo",
1538
+ "now": 1672653600000,
1539
+ "tz": "Europe/Madrid",
1540
+ "language": "es",
1541
+ "expected": {
1542
+ "title": "Pagar",
1543
+ "priority": null,
1544
+ "due_at": 1677884340000,
1545
+ "recurrence": null,
1546
+ "project_id": null,
1547
+ "labels": [],
1548
+ "date_match": {
1549
+ "start": 6,
1550
+ "end": 19,
1551
+ "text": "el 3 de marzo"
1552
+ }
1553
+ }
1554
+ },
1555
+ {
1556
+ "name": "Riunione lunedi alle 17:30",
1557
+ "text": "Riunione lunedi alle 17:30",
1558
+ "now": 1672653600000,
1559
+ "tz": "Europe/Rome",
1560
+ "language": "it",
1561
+ "expected": {
1562
+ "title": "Riunione",
1563
+ "priority": null,
1564
+ "due_at": 1672677000000,
1565
+ "recurrence": null,
1566
+ "project_id": null,
1567
+ "labels": [],
1568
+ "date_match": {
1569
+ "start": 9,
1570
+ "end": 26,
1571
+ "text": "lunedi alle 17:30"
1572
+ }
1573
+ }
1574
+ },
1575
+ {
1576
+ "name": "Vergadering morgen om 17u",
1577
+ "text": "Vergadering morgen om 17u",
1578
+ "now": 1672653600000,
1579
+ "tz": "Europe/Amsterdam",
1580
+ "language": "nl",
1581
+ "expected": {
1582
+ "title": "Vergadering",
1583
+ "priority": null,
1584
+ "due_at": 1672761600000,
1585
+ "recurrence": null,
1586
+ "project_id": null,
1587
+ "labels": [],
1588
+ "date_match": {
1589
+ "start": 12,
1590
+ "end": 25,
1591
+ "text": "morgen om 17u"
1592
+ }
1593
+ }
1594
+ },
1595
+ {
1596
+ "name": "Spotkanie za tydzień o 17:30",
1597
+ "text": "Spotkanie za tydzień o 17:30",
1598
+ "now": 1672653600000,
1599
+ "tz": "Europe/Warsaw",
1600
+ "language": "pl",
1601
+ "expected": {
1602
+ "title": "Spotkanie",
1603
+ "priority": null,
1604
+ "due_at": 1673281800000,
1605
+ "recurrence": null,
1606
+ "project_id": null,
1607
+ "labels": [],
1608
+ "date_match": {
1609
+ "start": 10,
1610
+ "end": 28,
1611
+ "text": "za tydzień o 17:30"
1612
+ }
1613
+ }
1614
+ },
1615
+ {
1616
+ "name": "Reunião amanhã às 9h",
1617
+ "text": "Reunião amanhã às 9h",
1618
+ "now": 1672653600000,
1619
+ "tz": "America/Sao_Paulo",
1620
+ "language": "pt-BR",
1621
+ "expected": {
1622
+ "title": "Reunião",
1623
+ "priority": null,
1624
+ "due_at": 1672747200000,
1625
+ "recurrence": null,
1626
+ "project_id": null,
1627
+ "labels": [],
1628
+ "date_match": {
1629
+ "start": 8,
1630
+ "end": 20,
1631
+ "text": "amanhã às 9h"
1632
+ }
1633
+ }
1634
+ },
1635
+ {
1636
+ "name": "English still works tomorrow 5pm",
1637
+ "text": "English still works tomorrow 5pm",
1638
+ "now": 1672653600000,
1639
+ "tz": "Europe/Berlin",
1640
+ "language": "de",
1641
+ "expected": {
1642
+ "title": "English still works",
1643
+ "priority": null,
1644
+ "due_at": 1672761600000,
1645
+ "recurrence": null,
1646
+ "project_id": null,
1647
+ "labels": [],
1648
+ "date_match": {
1649
+ "start": 20,
1650
+ "end": 32,
1651
+ "text": "tomorrow 5pm"
1652
+ }
1653
+ }
1654
+ }
1655
+ ]
1656
+ }