@doist/todoist-cli 1.29.4 → 1.30.0
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.
- package/CHANGELOG.md +12 -0
- package/dist/__mocks__/chalk.d.ts +3 -0
- package/dist/__mocks__/chalk.d.ts.map +1 -0
- package/dist/__mocks__/chalk.js +8 -0
- package/dist/__mocks__/chalk.js.map +1 -0
- package/dist/commands/activity.d.ts +3 -0
- package/dist/commands/activity.d.ts.map +1 -0
- package/dist/commands/activity.js +267 -0
- package/dist/commands/activity.js.map +1 -0
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +36 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/attachment.d.ts +3 -0
- package/dist/commands/attachment.d.ts.map +1 -0
- package/dist/commands/attachment.js +156 -0
- package/dist/commands/attachment.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +124 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/changelog.d.ts +8 -0
- package/dist/commands/changelog.d.ts.map +1 -0
- package/dist/commands/changelog.js +92 -0
- package/dist/commands/changelog.js.map +1 -0
- package/dist/commands/comment.d.ts +3 -0
- package/dist/commands/comment.d.ts.map +1 -0
- package/dist/commands/comment.js +301 -0
- package/dist/commands/comment.js.map +1 -0
- package/dist/commands/completed.d.ts +3 -0
- package/dist/commands/completed.d.ts.map +1 -0
- package/dist/commands/completed.js +107 -0
- package/dist/commands/completed.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +107 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/filter.d.ts +5 -0
- package/dist/commands/filter.d.ts.map +1 -0
- package/dist/commands/filter.js +287 -0
- package/dist/commands/filter.js.map +1 -0
- package/dist/commands/inbox.d.ts +3 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +25 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/label.d.ts +5 -0
- package/dist/commands/label.d.ts.map +1 -0
- package/dist/commands/label.js +328 -0
- package/dist/commands/label.js.map +1 -0
- package/dist/commands/notification.d.ts +3 -0
- package/dist/commands/notification.d.ts.map +1 -0
- package/dist/commands/notification.js +274 -0
- package/dist/commands/notification.js.map +1 -0
- package/dist/commands/project.d.ts +7 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +714 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/reminder.d.ts +3 -0
- package/dist/commands/reminder.d.ts.map +1 -0
- package/dist/commands/reminder.js +271 -0
- package/dist/commands/reminder.js.map +1 -0
- package/dist/commands/section.d.ts +3 -0
- package/dist/commands/section.d.ts.map +1 -0
- package/dist/commands/section.js +216 -0
- package/dist/commands/section.js.map +1 -0
- package/dist/commands/settings.d.ts +12 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/settings.js +312 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/skill.d.ts +3 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +127 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +151 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/task.d.ts +5 -0
- package/dist/commands/task.d.ts.map +1 -0
- package/dist/commands/task.js +559 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/today.d.ts +18 -0
- package/dist/commands/today.d.ts.map +1 -0
- package/dist/commands/today.js +108 -0
- package/dist/commands/today.js.map +1 -0
- package/dist/commands/upcoming.d.ts +17 -0
- package/dist/commands/upcoming.d.ts.map +1 -0
- package/dist/commands/upcoming.js +129 -0
- package/dist/commands/upcoming.js.map +1 -0
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +90 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/view.d.ts +3 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +79 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/workspace.d.ts +3 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +309 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +176 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api/core.d.ts +13 -0
- package/dist/lib/api/core.d.ts.map +1 -0
- package/dist/lib/api/core.js +176 -0
- package/dist/lib/api/core.js.map +1 -0
- package/dist/lib/api/filters.d.ts +19 -0
- package/dist/lib/api/filters.d.ts.map +1 -0
- package/dist/lib/api/filters.js +60 -0
- package/dist/lib/api/filters.js.map +1 -0
- package/dist/lib/api/notifications.d.ts +33 -0
- package/dist/lib/api/notifications.d.ts.map +1 -0
- package/dist/lib/api/notifications.js +94 -0
- package/dist/lib/api/notifications.js.map +1 -0
- package/dist/lib/api/reminders.d.ts +30 -0
- package/dist/lib/api/reminders.d.ts.map +1 -0
- package/dist/lib/api/reminders.js +65 -0
- package/dist/lib/api/reminders.js.map +1 -0
- package/dist/lib/api/stats.d.ts +41 -0
- package/dist/lib/api/stats.d.ts.map +1 -0
- package/dist/lib/api/stats.js +74 -0
- package/dist/lib/api/stats.js.map +1 -0
- package/dist/lib/api/uploads.d.ts +10 -0
- package/dist/lib/api/uploads.d.ts.map +1 -0
- package/dist/lib/api/uploads.js +31 -0
- package/dist/lib/api/uploads.js.map +1 -0
- package/dist/lib/api/user-settings.d.ts +34 -0
- package/dist/lib/api/user-settings.d.ts.map +1 -0
- package/dist/lib/api/user-settings.js +58 -0
- package/dist/lib/api/user-settings.js.map +1 -0
- package/dist/lib/api/workspaces.d.ts +23 -0
- package/dist/lib/api/workspaces.d.ts.map +1 -0
- package/dist/lib/api/workspaces.js +61 -0
- package/dist/lib/api/workspaces.js.map +1 -0
- package/dist/lib/auth.d.ts +14 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +182 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/browser.d.ts +2 -0
- package/dist/lib/browser.d.ts.map +1 -0
- package/dist/lib/browser.js +6 -0
- package/dist/lib/browser.js.map +1 -0
- package/dist/lib/collaborators.d.ts +29 -0
- package/dist/lib/collaborators.d.ts.map +1 -0
- package/dist/lib/collaborators.js +184 -0
- package/dist/lib/collaborators.js.map +1 -0
- package/dist/lib/completion.d.ts +41 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +191 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/dates.d.ts +16 -0
- package/dist/lib/dates.d.ts.map +1 -0
- package/dist/lib/dates.js +45 -0
- package/dist/lib/dates.js.map +1 -0
- package/dist/lib/duration.d.ts +14 -0
- package/dist/lib/duration.d.ts.map +1 -0
- package/dist/lib/duration.js +58 -0
- package/dist/lib/duration.js.map +1 -0
- package/dist/lib/logger.d.ts +42 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +227 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/markdown.d.ts +3 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +22 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/oauth-server.d.ts +6 -0
- package/dist/lib/oauth-server.d.ts.map +1 -0
- package/dist/lib/oauth-server.js +773 -0
- package/dist/lib/oauth-server.js.map +1 -0
- package/dist/lib/oauth.d.ts +3 -0
- package/dist/lib/oauth.d.ts.map +1 -0
- package/dist/lib/oauth.js +38 -0
- package/dist/lib/oauth.js.map +1 -0
- package/dist/lib/options.d.ts +16 -0
- package/dist/lib/options.d.ts.map +1 -0
- package/dist/lib/options.js +2 -0
- package/dist/lib/options.js.map +1 -0
- package/dist/lib/output.d.ts +39 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +311 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/pagination.d.ts +23 -0
- package/dist/lib/pagination.d.ts.map +1 -0
- package/dist/lib/pagination.js +26 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/pkce.d.ts +4 -0
- package/dist/lib/pkce.d.ts.map +1 -0
- package/dist/lib/pkce.js +19 -0
- package/dist/lib/pkce.js.map +1 -0
- package/dist/lib/progress.d.ts +29 -0
- package/dist/lib/progress.d.ts.map +1 -0
- package/dist/lib/progress.js +101 -0
- package/dist/lib/progress.js.map +1 -0
- package/dist/lib/refs.d.ts +52 -0
- package/dist/lib/refs.d.ts.map +1 -0
- package/dist/lib/refs.js +225 -0
- package/dist/lib/refs.js.map +1 -0
- package/dist/lib/secure-store.d.ts +11 -0
- package/dist/lib/secure-store.d.ts.map +1 -0
- package/dist/lib/secure-store.js +57 -0
- package/dist/lib/secure-store.js.map +1 -0
- package/dist/lib/skills/content.d.ts +4 -0
- package/dist/lib/skills/content.d.ts.map +1 -0
- package/dist/lib/skills/content.js +429 -0
- package/dist/lib/skills/content.js.map +1 -0
- package/dist/lib/skills/create-installer.d.ts +10 -0
- package/dist/lib/skills/create-installer.d.ts.map +1 -0
- package/dist/lib/skills/create-installer.js +77 -0
- package/dist/lib/skills/create-installer.js.map +1 -0
- package/dist/lib/skills/index.d.ts +6 -0
- package/dist/lib/skills/index.d.ts.map +1 -0
- package/dist/lib/skills/index.js +40 -0
- package/dist/lib/skills/index.js.map +1 -0
- package/dist/lib/skills/types.d.ts +11 -0
- package/dist/lib/skills/types.d.ts.map +1 -0
- package/dist/lib/skills/types.js +2 -0
- package/dist/lib/skills/types.js.map +1 -0
- package/dist/lib/skills/update-installed.d.ts +7 -0
- package/dist/lib/skills/update-installed.d.ts.map +1 -0
- package/dist/lib/skills/update-installed.js +23 -0
- package/dist/lib/skills/update-installed.js.map +1 -0
- package/dist/lib/spinner.d.ts +23 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +138 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/stdin.d.ts +2 -0
- package/dist/lib/stdin.d.ts.map +1 -0
- package/dist/lib/stdin.js +12 -0
- package/dist/lib/stdin.js.map +1 -0
- package/dist/lib/task-list.d.ts +31 -0
- package/dist/lib/task-list.d.ts.map +1 -0
- package/dist/lib/task-list.js +271 -0
- package/dist/lib/task-list.js.map +1 -0
- package/dist/lib/urls.d.ts +8 -0
- package/dist/lib/urls.d.ts.map +1 -0
- package/dist/lib/urls.js +26 -0
- package/dist/lib/urls.js.map +1 -0
- package/dist/postinstall.d.ts +2 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +3 -0
- package/dist/postinstall.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getApi } from '../lib/api/core.js';
|
|
3
|
+
import { CollaboratorCache, formatAssignee } from '../lib/collaborators.js';
|
|
4
|
+
import { getLocalDate, isDueBefore, isDueOnDate } from '../lib/dates.js';
|
|
5
|
+
import { formatNextCursorFooter, formatPaginatedJson, formatPaginatedNdjson, formatTaskRow, } from '../lib/output.js';
|
|
6
|
+
import { LIMITS, paginate } from '../lib/pagination.js';
|
|
7
|
+
import { fetchProjects, filterByWorkspaceOrPersonal } from '../lib/task-list.js';
|
|
8
|
+
export async function showToday(options) {
|
|
9
|
+
const api = await getApi();
|
|
10
|
+
const targetLimit = options.all
|
|
11
|
+
? Number.MAX_SAFE_INTEGER
|
|
12
|
+
: options.limit
|
|
13
|
+
? parseInt(options.limit, 10)
|
|
14
|
+
: LIMITS.tasks;
|
|
15
|
+
const baseQuery = 'today | overdue';
|
|
16
|
+
const query = options.anyAssignee ? baseQuery : `(${baseQuery}) & (assigned to: me | !assigned)`;
|
|
17
|
+
const needsProjects = Boolean(options.workspace || options.personal || (!options.json && !options.ndjson));
|
|
18
|
+
const [{ results: tasks, nextCursor }, projects] = await Promise.all([
|
|
19
|
+
paginate((cursor, limit) => api.getTasksByFilter({
|
|
20
|
+
query,
|
|
21
|
+
cursor: cursor ?? undefined,
|
|
22
|
+
limit,
|
|
23
|
+
}), { limit: targetLimit, startCursor: options.cursor }),
|
|
24
|
+
needsProjects ? fetchProjects(api) : Promise.resolve(new Map()),
|
|
25
|
+
]);
|
|
26
|
+
const today = getLocalDate(0);
|
|
27
|
+
const filterResult = await filterByWorkspaceOrPersonal({
|
|
28
|
+
api,
|
|
29
|
+
tasks,
|
|
30
|
+
workspace: options.workspace,
|
|
31
|
+
personal: options.personal,
|
|
32
|
+
prefetchedProjects: projects,
|
|
33
|
+
});
|
|
34
|
+
const filteredTasks = filterResult.tasks;
|
|
35
|
+
const overdue = filteredTasks.filter((t) => t.due && isDueBefore(t.due.date, today));
|
|
36
|
+
const dueToday = filteredTasks.filter((t) => t.due && isDueOnDate(t.due.date, today));
|
|
37
|
+
const allTodayTasks = [...overdue, ...dueToday];
|
|
38
|
+
if (options.json) {
|
|
39
|
+
console.log(formatPaginatedJson({ results: allTodayTasks, nextCursor }, 'task', options.full, options.showUrls));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (options.ndjson) {
|
|
43
|
+
console.log(formatPaginatedNdjson({ results: allTodayTasks, nextCursor }, 'task', options.full, options.showUrls));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const collaboratorCache = new CollaboratorCache();
|
|
47
|
+
await collaboratorCache.preload(api, allTodayTasks, filterResult.projects);
|
|
48
|
+
if (overdue.length === 0 && dueToday.length === 0) {
|
|
49
|
+
console.log('No tasks due today.');
|
|
50
|
+
console.log(formatNextCursorFooter(nextCursor));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (overdue.length > 0) {
|
|
54
|
+
console.log(chalk.red.bold(`Overdue (${overdue.length})`));
|
|
55
|
+
for (const task of overdue) {
|
|
56
|
+
const assignee = formatAssignee({
|
|
57
|
+
userId: task.responsibleUid,
|
|
58
|
+
projectId: task.projectId,
|
|
59
|
+
projects,
|
|
60
|
+
cache: collaboratorCache,
|
|
61
|
+
});
|
|
62
|
+
console.log(formatTaskRow({
|
|
63
|
+
task,
|
|
64
|
+
projectName: projects.get(task.projectId)?.name,
|
|
65
|
+
assignee: assignee ?? undefined,
|
|
66
|
+
raw: options.raw,
|
|
67
|
+
showUrl: options.showUrls,
|
|
68
|
+
}));
|
|
69
|
+
console.log('');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
console.log(chalk.bold(`Today (${dueToday.length})`));
|
|
73
|
+
for (const task of dueToday) {
|
|
74
|
+
const assignee = formatAssignee({
|
|
75
|
+
userId: task.responsibleUid,
|
|
76
|
+
projectId: task.projectId,
|
|
77
|
+
projects,
|
|
78
|
+
cache: collaboratorCache,
|
|
79
|
+
});
|
|
80
|
+
console.log(formatTaskRow({
|
|
81
|
+
task,
|
|
82
|
+
projectName: projects.get(task.projectId)?.name,
|
|
83
|
+
assignee: assignee ?? undefined,
|
|
84
|
+
raw: options.raw,
|
|
85
|
+
showUrl: options.showUrls,
|
|
86
|
+
}));
|
|
87
|
+
console.log('');
|
|
88
|
+
}
|
|
89
|
+
console.log(formatNextCursorFooter(nextCursor));
|
|
90
|
+
}
|
|
91
|
+
export function registerTodayCommand(program) {
|
|
92
|
+
program
|
|
93
|
+
.command('today')
|
|
94
|
+
.description('Show tasks due today and overdue')
|
|
95
|
+
.option('--limit <n>', 'Limit number of results (default: 300)')
|
|
96
|
+
.option('--cursor <cursor>', 'Continue from cursor')
|
|
97
|
+
.option('--all', 'Fetch all results (no limit)')
|
|
98
|
+
.option('--any-assignee', 'Show tasks assigned to anyone (default: only me/unassigned)')
|
|
99
|
+
.option('--workspace <name>', 'Filter to tasks in workspace')
|
|
100
|
+
.option('--personal', 'Filter to tasks in personal projects')
|
|
101
|
+
.option('--json', 'Output as JSON')
|
|
102
|
+
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
103
|
+
.option('--full', 'Include all fields in JSON output')
|
|
104
|
+
.option('--raw', 'Disable markdown rendering')
|
|
105
|
+
.option('--show-urls', 'Show web app URLs for each task')
|
|
106
|
+
.action(showToday);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=today.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"today.js","sourceRoot":"","sources":["../../src/commands/today.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
interface UpcomingOptions {
|
|
3
|
+
limit?: string;
|
|
4
|
+
cursor?: string;
|
|
5
|
+
all?: boolean;
|
|
6
|
+
anyAssignee?: boolean;
|
|
7
|
+
workspace?: string;
|
|
8
|
+
personal?: boolean;
|
|
9
|
+
json?: boolean;
|
|
10
|
+
ndjson?: boolean;
|
|
11
|
+
full?: boolean;
|
|
12
|
+
showUrls?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function showUpcoming(daysArg: string | undefined, options: UpcomingOptions): Promise<void>;
|
|
15
|
+
export declare function registerUpcomingCommand(program: Command): void;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=upcoming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upcoming.d.ts","sourceRoot":"","sources":["../../src/commands/upcoming.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,UAAU,eAAe;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,wBAAsB,YAAY,CAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CA2If;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe9D"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getApi } from '../lib/api/core.js';
|
|
3
|
+
import { CollaboratorCache, formatAssignee } from '../lib/collaborators.js';
|
|
4
|
+
import { formatDateHeader, getLocalDate, isDueBefore } from '../lib/dates.js';
|
|
5
|
+
import { formatNextCursorFooter, formatPaginatedJson, formatPaginatedNdjson, formatTaskRow, } from '../lib/output.js';
|
|
6
|
+
import { LIMITS, paginate } from '../lib/pagination.js';
|
|
7
|
+
import { fetchProjects, filterByWorkspaceOrPersonal } from '../lib/task-list.js';
|
|
8
|
+
export async function showUpcoming(daysArg, options) {
|
|
9
|
+
const days = daysArg ? parseInt(daysArg, 10) : 7;
|
|
10
|
+
if (Number.isNaN(days) || days < 1) {
|
|
11
|
+
console.error('Days must be a positive number');
|
|
12
|
+
process.exitCode = 1;
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const api = await getApi();
|
|
16
|
+
const targetLimit = options.all
|
|
17
|
+
? Number.MAX_SAFE_INTEGER
|
|
18
|
+
: options.limit
|
|
19
|
+
? parseInt(options.limit, 10)
|
|
20
|
+
: LIMITS.tasks;
|
|
21
|
+
const today = getLocalDate(0);
|
|
22
|
+
const baseQuery = `due before: ${days} days`;
|
|
23
|
+
const query = options.anyAssignee ? baseQuery : `(${baseQuery}) & (assigned to: me | !assigned)`;
|
|
24
|
+
const [{ results: tasks, nextCursor }, projects] = await Promise.all([
|
|
25
|
+
paginate((cursor, limit) => api.getTasksByFilter({
|
|
26
|
+
query,
|
|
27
|
+
cursor: cursor ?? undefined,
|
|
28
|
+
limit,
|
|
29
|
+
}), { limit: targetLimit, startCursor: options.cursor }),
|
|
30
|
+
fetchProjects(api),
|
|
31
|
+
]);
|
|
32
|
+
const filterResult = await filterByWorkspaceOrPersonal({
|
|
33
|
+
api,
|
|
34
|
+
tasks,
|
|
35
|
+
workspace: options.workspace,
|
|
36
|
+
personal: options.personal,
|
|
37
|
+
prefetchedProjects: projects,
|
|
38
|
+
});
|
|
39
|
+
const relevantTasks = filterResult.tasks;
|
|
40
|
+
if (options.json) {
|
|
41
|
+
console.log(formatPaginatedJson({ results: relevantTasks, nextCursor }, 'task', options.full, options.showUrls));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (options.ndjson) {
|
|
45
|
+
console.log(formatPaginatedNdjson({ results: relevantTasks, nextCursor }, 'task', options.full, options.showUrls));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const collaboratorCache = new CollaboratorCache();
|
|
49
|
+
await collaboratorCache.preload(api, relevantTasks, filterResult.projects);
|
|
50
|
+
if (relevantTasks.length === 0) {
|
|
51
|
+
console.log(`No tasks due in the next ${days} day${days === 1 ? '' : 's'}.`);
|
|
52
|
+
console.log(formatNextCursorFooter(nextCursor));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const overdue = [];
|
|
56
|
+
const byDate = new Map();
|
|
57
|
+
for (const task of relevantTasks) {
|
|
58
|
+
const dueDate = task.due?.date;
|
|
59
|
+
if (!dueDate)
|
|
60
|
+
continue; // Skip tasks without due dates
|
|
61
|
+
if (isDueBefore(dueDate, today)) {
|
|
62
|
+
overdue.push(task);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const list = byDate.get(dueDate) || [];
|
|
66
|
+
list.push(task);
|
|
67
|
+
byDate.set(dueDate, list);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (overdue.length > 0) {
|
|
71
|
+
console.log(chalk.red.bold(`Overdue (${overdue.length})`));
|
|
72
|
+
for (const task of overdue) {
|
|
73
|
+
const assignee = formatAssignee({
|
|
74
|
+
userId: task.responsibleUid,
|
|
75
|
+
projectId: task.projectId,
|
|
76
|
+
projects,
|
|
77
|
+
cache: collaboratorCache,
|
|
78
|
+
});
|
|
79
|
+
console.log(formatTaskRow({
|
|
80
|
+
task,
|
|
81
|
+
projectName: projects.get(task.projectId)?.name,
|
|
82
|
+
assignee: assignee ?? undefined,
|
|
83
|
+
showUrl: options.showUrls,
|
|
84
|
+
}));
|
|
85
|
+
console.log('');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const sortedDates = Array.from(byDate.keys()).sort();
|
|
89
|
+
for (const date of sortedDates) {
|
|
90
|
+
const dateTasks = byDate.get(date);
|
|
91
|
+
if (!dateTasks)
|
|
92
|
+
continue; // Should not happen since date comes from keys()
|
|
93
|
+
const header = formatDateHeader(date, today);
|
|
94
|
+
console.log(chalk.bold(`${header} (${dateTasks.length})`));
|
|
95
|
+
for (const task of dateTasks) {
|
|
96
|
+
const assignee = formatAssignee({
|
|
97
|
+
userId: task.responsibleUid,
|
|
98
|
+
projectId: task.projectId,
|
|
99
|
+
projects,
|
|
100
|
+
cache: collaboratorCache,
|
|
101
|
+
});
|
|
102
|
+
console.log(formatTaskRow({
|
|
103
|
+
task,
|
|
104
|
+
projectName: projects.get(task.projectId)?.name,
|
|
105
|
+
assignee: assignee ?? undefined,
|
|
106
|
+
showUrl: options.showUrls,
|
|
107
|
+
}));
|
|
108
|
+
console.log('');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
console.log(formatNextCursorFooter(nextCursor));
|
|
112
|
+
}
|
|
113
|
+
export function registerUpcomingCommand(program) {
|
|
114
|
+
program
|
|
115
|
+
.command('upcoming [days]')
|
|
116
|
+
.description('Show tasks due in the next N days (default: 7)')
|
|
117
|
+
.option('--limit <n>', 'Limit number of results (default: 300)')
|
|
118
|
+
.option('--cursor <cursor>', 'Continue from cursor')
|
|
119
|
+
.option('--all', 'Fetch all results (no limit)')
|
|
120
|
+
.option('--any-assignee', 'Show tasks assigned to anyone (default: only me/unassigned)')
|
|
121
|
+
.option('--workspace <name>', 'Filter to tasks in workspace')
|
|
122
|
+
.option('--personal', 'Filter to tasks in personal projects')
|
|
123
|
+
.option('--json', 'Output as JSON')
|
|
124
|
+
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
125
|
+
.option('--full', 'Include all fields in JSON output')
|
|
126
|
+
.option('--show-urls', 'Show web app URLs for each task')
|
|
127
|
+
.action(showUpcoming);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=upcoming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upcoming.js","sourceRoot":"","sources":["../../src/commands/upcoming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2CnC,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE9E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import packageJson from '../../package.json' with { type: 'json' };
|
|
4
|
+
import { withSpinner } from '../lib/spinner.js';
|
|
5
|
+
const PACKAGE_NAME = '@doist/todoist-cli';
|
|
6
|
+
const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
|
|
7
|
+
async function fetchLatestVersion() {
|
|
8
|
+
const response = await fetch(REGISTRY_URL);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
throw new Error(`Registry request failed (HTTP ${response.status})`);
|
|
11
|
+
}
|
|
12
|
+
const data = (await response.json());
|
|
13
|
+
return data.version;
|
|
14
|
+
}
|
|
15
|
+
function detectPackageManager() {
|
|
16
|
+
const execPath = process.env.npm_execpath ?? '';
|
|
17
|
+
if (execPath.includes('pnpm'))
|
|
18
|
+
return 'pnpm';
|
|
19
|
+
return 'npm';
|
|
20
|
+
}
|
|
21
|
+
function runInstall(pm) {
|
|
22
|
+
const command = pm === 'pnpm' ? 'add' : 'install';
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
const child = spawn(pm, [command, '-g', `${PACKAGE_NAME}@latest`], {
|
|
25
|
+
stdio: 'pipe',
|
|
26
|
+
});
|
|
27
|
+
let stderr = '';
|
|
28
|
+
child.stderr?.on('data', (data) => {
|
|
29
|
+
stderr += data.toString();
|
|
30
|
+
});
|
|
31
|
+
child.on('error', reject);
|
|
32
|
+
child.on('close', (code) => resolve({ exitCode: code ?? 1, stderr }));
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export async function updateAction(options) {
|
|
36
|
+
const currentVersion = packageJson.version;
|
|
37
|
+
let latestVersion;
|
|
38
|
+
try {
|
|
39
|
+
latestVersion = await withSpinner({ text: 'Checking for updates...', color: 'blue' }, fetchLatestVersion);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
43
|
+
console.error(chalk.red('Error:'), `Failed to check for updates: ${message}`);
|
|
44
|
+
process.exitCode = 1;
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (currentVersion === latestVersion) {
|
|
48
|
+
console.log(chalk.green('✓'), `Already up to date (v${currentVersion})`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(`Update available: ${chalk.dim(`v${currentVersion}`)} → ${chalk.green(`v${latestVersion}`)}`);
|
|
52
|
+
if (options.check) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const pm = detectPackageManager();
|
|
56
|
+
let result;
|
|
57
|
+
try {
|
|
58
|
+
result = await withSpinner({ text: `Updating to v${latestVersion}...`, color: 'blue' }, () => runInstall(pm));
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error instanceof Error && 'code' in error && error.code === 'EACCES') {
|
|
62
|
+
console.error(chalk.red('Error:'), 'Permission denied. Try running with sudo:');
|
|
63
|
+
console.error(chalk.dim(` sudo ${pm} ${pm === 'pnpm' ? 'add' : 'install'} -g ${PACKAGE_NAME}@latest`));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
67
|
+
console.error(chalk.red('Error:'), `Install failed: ${message}`);
|
|
68
|
+
}
|
|
69
|
+
process.exitCode = 1;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (result.exitCode !== 0) {
|
|
73
|
+
console.error(chalk.red('Error:'), `${pm} exited with code ${result.exitCode}`);
|
|
74
|
+
if (result.stderr) {
|
|
75
|
+
console.error(chalk.dim(result.stderr.trim()));
|
|
76
|
+
}
|
|
77
|
+
process.exitCode = 1;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
console.log(chalk.green('✓'), `Updated to v${latestVersion}`);
|
|
81
|
+
console.log(chalk.dim(' Run'), chalk.cyan('td changelog'), chalk.dim('to see what changed'));
|
|
82
|
+
}
|
|
83
|
+
export function registerUpdateCommand(program) {
|
|
84
|
+
program
|
|
85
|
+
.command('update')
|
|
86
|
+
.description('Update the CLI to the latest version')
|
|
87
|
+
.option('--check', 'Check for updates without installing')
|
|
88
|
+
.action(updateAction);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8CnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqE1D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { formatError } from '../lib/output.js';
|
|
3
|
+
import { classifyTodoistUrl } from '../lib/refs.js';
|
|
4
|
+
function looksLikeTodoistAppUrl(token) {
|
|
5
|
+
return /^https?:\/\/app\.todoist\.com\/app\/\S+/.test(token);
|
|
6
|
+
}
|
|
7
|
+
function extractViewInvocation(command, parsedUrl, parsedArgs) {
|
|
8
|
+
const parent = command.parent;
|
|
9
|
+
const rawArgs = parent?.rawArgs;
|
|
10
|
+
if (!rawArgs)
|
|
11
|
+
return { url: parsedUrl, passthroughArgs: parsedArgs };
|
|
12
|
+
const viewIndex = rawArgs.findIndex((token, index) => index >= 2 && token === command.name());
|
|
13
|
+
if (viewIndex === -1)
|
|
14
|
+
return { url: parsedUrl, passthroughArgs: parsedArgs };
|
|
15
|
+
const tokensAfterView = rawArgs.slice(viewIndex + 1);
|
|
16
|
+
const urlIndex = tokensAfterView.findIndex((token) => looksLikeTodoistAppUrl(token));
|
|
17
|
+
if (urlIndex === -1)
|
|
18
|
+
return { url: parsedUrl, passthroughArgs: parsedArgs };
|
|
19
|
+
return {
|
|
20
|
+
url: tokensAfterView[urlIndex],
|
|
21
|
+
passthroughArgs: [
|
|
22
|
+
...tokensAfterView.slice(0, urlIndex),
|
|
23
|
+
...tokensAfterView.slice(urlIndex + 1),
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async function runRoutedCommand(loadRegister, argv) {
|
|
28
|
+
const proxy = new Command();
|
|
29
|
+
proxy.exitOverride();
|
|
30
|
+
const register = await loadRegister();
|
|
31
|
+
register(proxy);
|
|
32
|
+
await proxy.parseAsync(['node', 'td', ...argv]);
|
|
33
|
+
}
|
|
34
|
+
export function registerViewCommand(program) {
|
|
35
|
+
program
|
|
36
|
+
.command('view <url> [args...]')
|
|
37
|
+
.description('View a Todoist entity or page by URL')
|
|
38
|
+
.allowUnknownOption(true)
|
|
39
|
+
.addHelpText('after', `
|
|
40
|
+
Route mapping:
|
|
41
|
+
/app/task/... -> td task view <ref>
|
|
42
|
+
/app/project/... -> td project view <ref>
|
|
43
|
+
/app/label/... -> td label view <ref>
|
|
44
|
+
/app/filter/... -> td filter show <ref>
|
|
45
|
+
/app/today -> td today
|
|
46
|
+
/app/upcoming -> td upcoming
|
|
47
|
+
|
|
48
|
+
Examples:
|
|
49
|
+
td view https://app.todoist.com/app/task/buy-milk-abc123
|
|
50
|
+
td view https://app.todoist.com/app/filter/work-tasks-def456 --json
|
|
51
|
+
td view https://app.todoist.com/app/filter/work-tasks-def456 --limit 25 --ndjson`)
|
|
52
|
+
.action(async (url, args, _options, command) => {
|
|
53
|
+
const invocation = extractViewInvocation(command, url, args);
|
|
54
|
+
const route = classifyTodoistUrl(invocation.url);
|
|
55
|
+
if (!route) {
|
|
56
|
+
throw new Error(formatError('INVALID_URL', `Not a recognized Todoist URL: ${invocation.url}`));
|
|
57
|
+
}
|
|
58
|
+
if (route.kind === 'view') {
|
|
59
|
+
switch (route.view) {
|
|
60
|
+
case 'today':
|
|
61
|
+
return runRoutedCommand(async () => (await import('./today.js')).registerTodayCommand, ['today', ...invocation.passthroughArgs]);
|
|
62
|
+
case 'upcoming':
|
|
63
|
+
return runRoutedCommand(async () => (await import('./upcoming.js')).registerUpcomingCommand, ['upcoming', ...invocation.passthroughArgs]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const ref = `id:${route.id}`;
|
|
67
|
+
switch (route.entityType) {
|
|
68
|
+
case 'task':
|
|
69
|
+
return runRoutedCommand(async () => (await import('./task.js')).registerTaskCommand, ['task', 'view', ref, ...invocation.passthroughArgs]);
|
|
70
|
+
case 'project':
|
|
71
|
+
return runRoutedCommand(async () => (await import('./project.js')).registerProjectCommand, ['project', 'view', ref, ...invocation.passthroughArgs]);
|
|
72
|
+
case 'label':
|
|
73
|
+
return runRoutedCommand(async () => (await import('./label.js')).registerLabelCommand, ['label', 'view', ref, ...invocation.passthroughArgs]);
|
|
74
|
+
case 'filter':
|
|
75
|
+
return runRoutedCommand(async () => (await import('./filter.js')).registerFilterCommand, ['filter', 'show', ref, ...invocation.passthroughArgs]);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AA2S3C,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwF/D"}
|