@doist/todoist-cli 1.40.0-next.1 → 1.41.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.
Files changed (131) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/commands/activity.d.ts.map +1 -1
  3. package/dist/commands/activity.js +6 -8
  4. package/dist/commands/activity.js.map +1 -1
  5. package/dist/commands/auth/login.d.ts.map +1 -1
  6. package/dist/commands/auth/login.js +6 -3
  7. package/dist/commands/auth/login.js.map +1 -1
  8. package/dist/commands/comment/list.js +1 -1
  9. package/dist/commands/comment/list.js.map +1 -1
  10. package/dist/commands/label/helpers.d.ts +1 -0
  11. package/dist/commands/label/helpers.d.ts.map +1 -1
  12. package/dist/commands/label/helpers.js +12 -0
  13. package/dist/commands/label/helpers.js.map +1 -1
  14. package/dist/commands/label/index.d.ts.map +1 -1
  15. package/dist/commands/label/index.js +32 -2
  16. package/dist/commands/label/index.js.map +1 -1
  17. package/dist/commands/label/list.d.ts +4 -1
  18. package/dist/commands/label/list.d.ts.map +1 -1
  19. package/dist/commands/label/list.js +8 -2
  20. package/dist/commands/label/list.js.map +1 -1
  21. package/dist/commands/label/remove-shared.d.ts +5 -0
  22. package/dist/commands/label/remove-shared.d.ts.map +1 -0
  23. package/dist/commands/label/remove-shared.js +21 -0
  24. package/dist/commands/label/remove-shared.js.map +1 -0
  25. package/dist/commands/label/rename-shared.d.ts +5 -0
  26. package/dist/commands/label/rename-shared.d.ts.map +1 -0
  27. package/dist/commands/label/rename-shared.js +16 -0
  28. package/dist/commands/label/rename-shared.js.map +1 -0
  29. package/dist/commands/notification/helpers.d.ts +1 -1
  30. package/dist/commands/notification/helpers.d.ts.map +1 -1
  31. package/dist/commands/notification/helpers.js +1 -2
  32. package/dist/commands/notification/helpers.js.map +1 -1
  33. package/dist/commands/notification/view.d.ts.map +1 -1
  34. package/dist/commands/notification/view.js +1 -2
  35. package/dist/commands/notification/view.js.map +1 -1
  36. package/dist/commands/project/archived-count.js +1 -1
  37. package/dist/commands/project/archived-count.js.map +1 -1
  38. package/dist/commands/project/archived.d.ts +3 -0
  39. package/dist/commands/project/archived.d.ts.map +1 -0
  40. package/dist/commands/project/archived.js +94 -0
  41. package/dist/commands/project/archived.js.map +1 -0
  42. package/dist/commands/project/collaborators.d.ts.map +1 -1
  43. package/dist/commands/project/collaborators.js +3 -3
  44. package/dist/commands/project/collaborators.js.map +1 -1
  45. package/dist/commands/project/create.d.ts +1 -1
  46. package/dist/commands/project/create.d.ts.map +1 -1
  47. package/dist/commands/project/create.js +2 -1
  48. package/dist/commands/project/create.js.map +1 -1
  49. package/dist/commands/project/delete.d.ts.map +1 -1
  50. package/dist/commands/project/delete.js +4 -0
  51. package/dist/commands/project/delete.js.map +1 -1
  52. package/dist/commands/project/index.d.ts.map +1 -1
  53. package/dist/commands/project/index.js +14 -1
  54. package/dist/commands/project/index.js.map +1 -1
  55. package/dist/commands/project/list.d.ts +1 -0
  56. package/dist/commands/project/list.d.ts.map +1 -1
  57. package/dist/commands/project/list.js +13 -2
  58. package/dist/commands/project/list.js.map +1 -1
  59. package/dist/commands/project/move.d.ts.map +1 -1
  60. package/dist/commands/project/move.js +2 -2
  61. package/dist/commands/project/move.js.map +1 -1
  62. package/dist/commands/project/view.d.ts.map +1 -1
  63. package/dist/commands/project/view.js +2 -1
  64. package/dist/commands/project/view.js.map +1 -1
  65. package/dist/commands/section/index.d.ts.map +1 -1
  66. package/dist/commands/section/index.js +3 -2
  67. package/dist/commands/section/index.js.map +1 -1
  68. package/dist/commands/section/list.d.ts +6 -1
  69. package/dist/commands/section/list.d.ts.map +1 -1
  70. package/dist/commands/section/list.js +12 -2
  71. package/dist/commands/section/list.js.map +1 -1
  72. package/dist/commands/workspace/insights.js +1 -1
  73. package/dist/commands/workspace/insights.js.map +1 -1
  74. package/dist/commands/workspace/projects.d.ts.map +1 -1
  75. package/dist/commands/workspace/projects.js +2 -1
  76. package/dist/commands/workspace/projects.js.map +1 -1
  77. package/dist/commands/workspace/users.d.ts.map +1 -1
  78. package/dist/commands/workspace/users.js +1 -2
  79. package/dist/commands/workspace/users.js.map +1 -1
  80. package/dist/index.js +0 -1
  81. package/dist/index.js.map +1 -1
  82. package/dist/lib/api/core.d.ts +0 -2
  83. package/dist/lib/api/core.d.ts.map +1 -1
  84. package/dist/lib/api/core.js +6 -6
  85. package/dist/lib/api/core.js.map +1 -1
  86. package/dist/lib/api/notifications.d.ts +1 -1
  87. package/dist/lib/api/notifications.d.ts.map +1 -1
  88. package/dist/lib/collaborators.d.ts +1 -1
  89. package/dist/lib/collaborators.d.ts.map +1 -1
  90. package/dist/lib/collaborators.js +4 -5
  91. package/dist/lib/collaborators.js.map +1 -1
  92. package/dist/lib/oauth-server.d.ts +5 -3
  93. package/dist/lib/oauth-server.d.ts.map +1 -1
  94. package/dist/lib/oauth-server.js +49 -19
  95. package/dist/lib/oauth-server.js.map +1 -1
  96. package/dist/lib/oauth.d.ts +2 -1
  97. package/dist/lib/oauth.d.ts.map +1 -1
  98. package/dist/lib/oauth.js +5 -4
  99. package/dist/lib/oauth.js.map +1 -1
  100. package/dist/lib/output.d.ts +1 -1
  101. package/dist/lib/output.d.ts.map +1 -1
  102. package/dist/lib/output.js +0 -14
  103. package/dist/lib/output.js.map +1 -1
  104. package/dist/lib/pagination.d.ts +0 -1
  105. package/dist/lib/pagination.d.ts.map +1 -1
  106. package/dist/lib/pagination.js +0 -1
  107. package/dist/lib/pagination.js.map +1 -1
  108. package/dist/lib/permissions.d.ts.map +1 -1
  109. package/dist/lib/permissions.js +4 -0
  110. package/dist/lib/permissions.js.map +1 -1
  111. package/dist/lib/refs.d.ts +1 -2
  112. package/dist/lib/refs.d.ts.map +1 -1
  113. package/dist/lib/refs.js +0 -5
  114. package/dist/lib/refs.js.map +1 -1
  115. package/dist/lib/skills/content.d.ts +1 -1
  116. package/dist/lib/skills/content.d.ts.map +1 -1
  117. package/dist/lib/skills/content.js +9 -22
  118. package/dist/lib/skills/content.js.map +1 -1
  119. package/dist/lib/task-list.d.ts +1 -1
  120. package/dist/lib/task-list.d.ts.map +1 -1
  121. package/dist/lib/task-list.js +2 -1
  122. package/dist/lib/task-list.js.map +1 -1
  123. package/dist/lib/urls.d.ts +0 -2
  124. package/dist/lib/urls.d.ts.map +1 -1
  125. package/dist/lib/urls.js +0 -6
  126. package/dist/lib/urls.js.map +1 -1
  127. package/package.json +3 -3
  128. package/dist/commands/goal.d.ts +0 -3
  129. package/dist/commands/goal.d.ts.map +0 -1
  130. package/dist/commands/goal.js +0 -344
  131. package/dist/commands/goal.js.map +0 -1
@@ -1,344 +0,0 @@
1
- import chalk from 'chalk';
2
- import { getApi } from '../lib/api/core.js';
3
- import { CollaboratorCache, formatAssignee } from '../lib/collaborators.js';
4
- import { isAccessible } from '../lib/global-args.js';
5
- import { formatJson, formatNextCursorFooter, formatPaginatedJson, formatPaginatedNdjson, formatProgressBar, formatTaskRow, printDryRun, } from '../lib/output.js';
6
- import { LIMITS, paginate } from '../lib/pagination.js';
7
- import { resolveGoalRef } from '../lib/refs.js';
8
- import { resolveWorkspaceRef } from '../lib/refs.js';
9
- import { resolveTaskRef } from '../lib/refs.js';
10
- function formatOwnerType(ownerType) {
11
- return ownerType === 'WORKSPACE' ? 'Workspace' : 'User';
12
- }
13
- // ── List ──
14
- async function listGoals(options) {
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.goals;
21
- let workspaceId;
22
- if (options.workspace) {
23
- const ws = await resolveWorkspaceRef(options.workspace);
24
- workspaceId = String(ws.id);
25
- }
26
- const { results: goals, nextCursor } = await paginate((cursor, limit) => api.getGoals({
27
- ownerType: workspaceId ? 'WORKSPACE' : undefined,
28
- workspaceId,
29
- cursor: cursor ?? undefined,
30
- limit,
31
- }), { limit: targetLimit });
32
- if (options.json) {
33
- console.log(formatPaginatedJson({ results: goals, nextCursor }, 'goal', options.full));
34
- return;
35
- }
36
- if (options.ndjson) {
37
- console.log(formatPaginatedNdjson({ results: goals, nextCursor }, 'goal', options.full));
38
- return;
39
- }
40
- if (goals.length === 0) {
41
- console.log('No goals found.');
42
- return;
43
- }
44
- for (const goal of goals) {
45
- const id = chalk.dim(goal.id.slice(0, 8));
46
- const name = goal.isCompleted ? chalk.strikethrough(goal.name) : goal.name;
47
- const progress = formatProgressBar(goal.progress?.percentage ?? 0, 10);
48
- const deadline = goal.isCompleted
49
- ? chalk.dim('completed')
50
- : goal.deadline
51
- ? chalk.green(goal.deadline)
52
- : '';
53
- console.log(`${id} ${name} ${progress} ${deadline}`);
54
- }
55
- console.log(formatNextCursorFooter(nextCursor));
56
- }
57
- // ── View ──
58
- async function viewGoal(ref, options) {
59
- const api = await getApi();
60
- const goal = await resolveGoalRef(api, ref);
61
- const targetLimit = options.all
62
- ? Number.MAX_SAFE_INTEGER
63
- : options.limit
64
- ? parseInt(options.limit, 10)
65
- : LIMITS.tasks;
66
- const { results: tasks, nextCursor } = await paginate((cursor, limit) => api.getTasks({ goalId: goal.id, cursor: cursor ?? undefined, limit }), { limit: targetLimit });
67
- if (options.json) {
68
- const goalJson = JSON.parse(formatJson(goal, 'goal', options.full));
69
- const tasksJson = JSON.parse(formatPaginatedJson({ results: tasks, nextCursor }, 'task', options.full));
70
- console.log(JSON.stringify({ goal: goalJson, tasks: tasksJson }, null, 2));
71
- return;
72
- }
73
- if (options.ndjson) {
74
- console.log(JSON.stringify({
75
- _type: 'goal',
76
- ...JSON.parse(formatJson(goal, 'goal', options.full)),
77
- }));
78
- console.log(formatPaginatedNdjson({ results: tasks, nextCursor }, 'task', options.full));
79
- return;
80
- }
81
- // Header
82
- console.log(chalk.bold(goal.name));
83
- console.log(chalk.dim(`ID: ${goal.id}`));
84
- console.log(chalk.dim(`Owner: ${formatOwnerType(goal.ownerType)}`));
85
- if (goal.description)
86
- console.log(`Desc: ${goal.description}`);
87
- if (goal.deadline)
88
- console.log(`Deadline: ${chalk.green(goal.deadline)}`);
89
- console.log(`Progress: ${formatProgressBar(goal.progress?.percentage ?? 0)} (${goal.progress?.completedItemCount ?? 0}/${goal.progress?.totalItemCount ?? 0})`);
90
- if (goal.isCompleted) {
91
- console.log(chalk.green(isAccessible() ? 'Goal completed' : '✓ Completed'));
92
- }
93
- console.log('');
94
- if (tasks.length === 0) {
95
- console.log('No linked tasks.');
96
- console.log(formatNextCursorFooter(nextCursor));
97
- return;
98
- }
99
- const { results: projects } = await api.getProjects();
100
- const projectMap = new Map();
101
- for (const p of projects) {
102
- projectMap.set(p.id, p);
103
- }
104
- const collaboratorCache = new CollaboratorCache();
105
- await collaboratorCache.preload(api, tasks, projectMap);
106
- for (const task of tasks) {
107
- const assignee = formatAssignee({
108
- userId: task.responsibleUid,
109
- projectId: task.projectId,
110
- projects: projectMap,
111
- cache: collaboratorCache,
112
- });
113
- console.log(formatTaskRow({
114
- task,
115
- projectName: projectMap.get(task.projectId)?.name,
116
- assignee: assignee ?? undefined,
117
- }));
118
- console.log('');
119
- }
120
- console.log(formatNextCursorFooter(nextCursor));
121
- }
122
- async function createGoal(options) {
123
- if (options.dryRun) {
124
- printDryRun('create goal', {
125
- Name: options.name,
126
- Workspace: options.workspace,
127
- Description: options.description,
128
- Deadline: options.deadline,
129
- Responsible: options.responsible,
130
- });
131
- return;
132
- }
133
- const api = await getApi();
134
- let workspaceId;
135
- if (options.workspace) {
136
- const ws = await resolveWorkspaceRef(options.workspace);
137
- workspaceId = String(ws.id);
138
- }
139
- const goal = await api.addGoal({
140
- name: options.name,
141
- workspaceId,
142
- description: options.description ?? null,
143
- deadline: options.deadline ?? null,
144
- responsibleUid: options.responsible ?? null,
145
- });
146
- if (options.json) {
147
- console.log(formatJson(goal, 'goal'));
148
- return;
149
- }
150
- console.log(`Created: ${goal.name}`);
151
- console.log(chalk.dim(`ID: ${goal.id}`));
152
- }
153
- async function updateGoal(ref, options) {
154
- const { name, description, deadline, responsible, json, dryRun } = options;
155
- if (!name && !description && !deadline && !responsible) {
156
- throw new Error('No update fields specified. Use --name, --description, --deadline, or --responsible.');
157
- }
158
- if (dryRun) {
159
- printDryRun('update goal', {
160
- Ref: ref,
161
- Name: name,
162
- Description: description,
163
- Deadline: deadline,
164
- Responsible: responsible,
165
- });
166
- return;
167
- }
168
- const api = await getApi();
169
- const goal = await resolveGoalRef(api, ref);
170
- const args = {};
171
- if (name)
172
- args.name = name;
173
- if (description)
174
- args.description = description;
175
- if (deadline)
176
- args.deadline = deadline;
177
- if (responsible)
178
- args.responsibleUid = responsible;
179
- const updated = await api.updateGoal(goal.id, args);
180
- if (json) {
181
- console.log(formatJson(updated, 'goal'));
182
- return;
183
- }
184
- console.log(`Updated: ${goal.name} → ${updated.name}`);
185
- }
186
- // ── Delete ──
187
- async function deleteGoal(ref, options) {
188
- const api = await getApi();
189
- const goal = await resolveGoalRef(api, ref);
190
- if (options.dryRun) {
191
- printDryRun('delete goal', { Goal: goal.name });
192
- return;
193
- }
194
- if (!options.yes) {
195
- console.log(`Would delete goal: ${goal.name}`);
196
- console.log('Use --yes to confirm.');
197
- return;
198
- }
199
- await api.deleteGoal(goal.id);
200
- console.log(`Deleted goal: ${goal.name}`);
201
- }
202
- // ── Complete / Uncomplete ──
203
- async function completeGoal(ref) {
204
- const api = await getApi();
205
- const goal = await resolveGoalRef(api, ref);
206
- await api.completeGoal(goal.id);
207
- console.log(`Completed: ${goal.name}`);
208
- }
209
- async function uncompleteGoal(ref) {
210
- const api = await getApi();
211
- const goal = await resolveGoalRef(api, ref);
212
- await api.uncompleteGoal(goal.id);
213
- console.log(`Reopened: ${goal.name}`);
214
- }
215
- // ── Link / Unlink ──
216
- async function linkGoal(ref, options) {
217
- const api = await getApi();
218
- const goal = await resolveGoalRef(api, ref);
219
- const task = await resolveTaskRef(api, options.task);
220
- await api.linkTaskToGoal({ goalId: goal.id, taskId: task.id });
221
- console.log(`Linked task "${task.content}" to goal "${goal.name}"`);
222
- }
223
- async function unlinkGoal(ref, options) {
224
- const api = await getApi();
225
- const goal = await resolveGoalRef(api, ref);
226
- const task = await resolveTaskRef(api, options.task);
227
- await api.unlinkTaskFromGoal({ goalId: goal.id, taskId: task.id });
228
- console.log(`Unlinked task "${task.content}" from goal "${goal.name}"`);
229
- }
230
- // ── Register ──
231
- export function registerGoalCommand(program) {
232
- const goal = program.command('goal').description('Manage goals');
233
- goal.command('view [ref]', { isDefault: true })
234
- .description('View goal details and linked tasks')
235
- .option('--limit <n>', 'Limit number of results (default: 300)')
236
- .option('--all', 'Fetch all results (no limit)')
237
- .option('--json', 'Output as JSON')
238
- .option('--ndjson', 'Output as newline-delimited JSON')
239
- .option('--full', 'Include all fields in JSON output')
240
- .action((ref, options) => {
241
- if (!ref) {
242
- goal.help();
243
- return;
244
- }
245
- return viewGoal(ref, options);
246
- });
247
- goal.command('list')
248
- .description('List all accessible goals')
249
- .option('--workspace <ref>', 'Filter to a workspace')
250
- .option('--limit <n>', 'Limit number of results (default: 200)')
251
- .option('--all', 'Fetch all results (no limit)')
252
- .option('--json', 'Output as JSON')
253
- .option('--ndjson', 'Output as newline-delimited JSON')
254
- .option('--full', 'Include all fields in JSON output')
255
- .action(listGoals);
256
- const createCmd = goal
257
- .command('create')
258
- .description('Create a goal')
259
- .option('--name <name>', 'Goal name (required)')
260
- .option('--workspace <ref>', 'Workspace (omit for personal goal)')
261
- .option('--description <desc>', 'Goal description')
262
- .option('--deadline <date>', 'Target date (YYYY-MM-DD)')
263
- .option('--responsible <uid>', 'Responsible user ID')
264
- .option('--json', 'Output the created goal as JSON')
265
- .option('--dry-run', 'Preview what would happen without executing')
266
- .action((options) => {
267
- if (!options.name) {
268
- createCmd.help();
269
- return;
270
- }
271
- return createGoal(options);
272
- });
273
- const updateCmd = goal
274
- .command('update [ref]')
275
- .description('Update a goal')
276
- .option('--name <name>', 'New name')
277
- .option('--description <desc>', 'New description')
278
- .option('--deadline <date>', 'New deadline (YYYY-MM-DD)')
279
- .option('--responsible <uid>', 'New responsible user ID')
280
- .option('--json', 'Output the updated goal as JSON')
281
- .option('--dry-run', 'Preview what would happen without executing')
282
- .action((ref, options) => {
283
- if (!ref) {
284
- updateCmd.help();
285
- return;
286
- }
287
- return updateGoal(ref, options);
288
- });
289
- const deleteCmd = goal
290
- .command('delete [ref]')
291
- .description('Delete a goal')
292
- .option('--yes', 'Confirm deletion')
293
- .option('--dry-run', 'Preview what would happen without executing')
294
- .action((ref, options) => {
295
- if (!ref) {
296
- deleteCmd.help();
297
- return;
298
- }
299
- return deleteGoal(ref, options);
300
- });
301
- const completeCmd = goal
302
- .command('complete [ref]')
303
- .description('Mark a goal as completed')
304
- .action((ref) => {
305
- if (!ref) {
306
- completeCmd.help();
307
- return;
308
- }
309
- return completeGoal(ref);
310
- });
311
- const uncompleteCmd = goal
312
- .command('uncomplete [ref]')
313
- .description('Reopen a completed goal')
314
- .action((ref) => {
315
- if (!ref) {
316
- uncompleteCmd.help();
317
- return;
318
- }
319
- return uncompleteGoal(ref);
320
- });
321
- const linkCmd = goal
322
- .command('link [ref]')
323
- .description('Link a task to a goal')
324
- .option('--task <ref>', 'Task to link (required)')
325
- .action((ref, options) => {
326
- if (!ref || !options.task) {
327
- linkCmd.help();
328
- return;
329
- }
330
- return linkGoal(ref, options);
331
- });
332
- const unlinkCmd = goal
333
- .command('unlink [ref]')
334
- .description('Unlink a task from a goal')
335
- .option('--task <ref>', 'Task to unlink (required)')
336
- .action((ref, options) => {
337
- if (!ref || !options.task) {
338
- unlinkCmd.help();
339
- return;
340
- }
341
- return unlinkGoal(ref, options);
342
- });
343
- }
344
- //# sourceMappingURL=goal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"goal.js","sourceRoot":"","sources":["../../src/commands/goal.ts"],"names":[],"mappings":"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"}