@doist/todoist-cli 1.20.0 → 1.22.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 (64) hide show
  1. package/README.md +9 -1
  2. package/dist/commands/activity.d.ts.map +1 -1
  3. package/dist/commands/activity.js +67 -0
  4. package/dist/commands/activity.js.map +1 -1
  5. package/dist/commands/auth.d.ts.map +1 -1
  6. package/dist/commands/auth.js +37 -15
  7. package/dist/commands/auth.js.map +1 -1
  8. package/dist/commands/completed.d.ts.map +1 -1
  9. package/dist/commands/completed.js +43 -10
  10. package/dist/commands/completed.js.map +1 -1
  11. package/dist/commands/today.d.ts.map +1 -1
  12. package/dist/commands/today.js +2 -1
  13. package/dist/commands/today.js.map +1 -1
  14. package/dist/index.js +7 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/lib/api/core.d.ts +1 -20
  17. package/dist/lib/api/core.d.ts.map +1 -1
  18. package/dist/lib/api/core.js +13 -36
  19. package/dist/lib/api/core.js.map +1 -1
  20. package/dist/lib/api/filters.d.ts +3 -10
  21. package/dist/lib/api/filters.d.ts.map +1 -1
  22. package/dist/lib/api/filters.js +43 -69
  23. package/dist/lib/api/filters.js.map +1 -1
  24. package/dist/lib/api/notifications.d.ts.map +1 -1
  25. package/dist/lib/api/notifications.js +54 -72
  26. package/dist/lib/api/notifications.js.map +1 -1
  27. package/dist/lib/api/reminders.d.ts +1 -1
  28. package/dist/lib/api/reminders.d.ts.map +1 -1
  29. package/dist/lib/api/reminders.js +45 -61
  30. package/dist/lib/api/reminders.js.map +1 -1
  31. package/dist/lib/api/stats.d.ts.map +1 -1
  32. package/dist/lib/api/stats.js +13 -18
  33. package/dist/lib/api/stats.js.map +1 -1
  34. package/dist/lib/api/user-settings.d.ts.map +1 -1
  35. package/dist/lib/api/user-settings.js +42 -74
  36. package/dist/lib/api/user-settings.js.map +1 -1
  37. package/dist/lib/api/workspaces.d.ts.map +1 -1
  38. package/dist/lib/api/workspaces.js +30 -36
  39. package/dist/lib/api/workspaces.js.map +1 -1
  40. package/dist/lib/auth.d.ts +9 -2
  41. package/dist/lib/auth.d.ts.map +1 -1
  42. package/dist/lib/auth.js +142 -32
  43. package/dist/lib/auth.js.map +1 -1
  44. package/dist/lib/collaborators.js +2 -2
  45. package/dist/lib/collaborators.js.map +1 -1
  46. package/dist/lib/dates.d.ts.map +1 -1
  47. package/dist/lib/dates.js +3 -1
  48. package/dist/lib/dates.js.map +1 -1
  49. package/dist/lib/markdown.d.ts +1 -0
  50. package/dist/lib/markdown.d.ts.map +1 -1
  51. package/dist/lib/markdown.js +17 -13
  52. package/dist/lib/markdown.js.map +1 -1
  53. package/dist/lib/output.d.ts.map +1 -1
  54. package/dist/lib/output.js +2 -1
  55. package/dist/lib/output.js.map +1 -1
  56. package/dist/lib/secure-store.d.ts +11 -0
  57. package/dist/lib/secure-store.d.ts.map +1 -0
  58. package/dist/lib/secure-store.js +57 -0
  59. package/dist/lib/secure-store.js.map +1 -0
  60. package/dist/lib/skills/content.d.ts +1 -1
  61. package/dist/lib/skills/content.d.ts.map +1 -1
  62. package/dist/lib/skills/content.js +24 -0
  63. package/dist/lib/skills/content.js.map +1 -1
  64. package/package.json +9 -8
@@ -1,5 +1,6 @@
1
+ import { createCommand } from '@doist/todoist-api-typescript';
1
2
  import { getApiToken } from '../auth.js';
2
- import { executeSyncCommand, generateUuid } from './core.js';
3
+ import { getApi, pickDefined } from './core.js';
3
4
  const defaultStreak = { count: 0, start: '', end: '' };
4
5
  function parseStreak(s) {
5
6
  if (!s || typeof s !== 'object')
@@ -55,25 +56,19 @@ export async function fetchProductivityStats() {
55
56
  };
56
57
  }
57
58
  export async function updateGoals(args) {
58
- const goalsArgs = {};
59
- if (args.dailyGoal !== undefined)
60
- goalsArgs.daily_goal = args.dailyGoal;
61
- if (args.weeklyGoal !== undefined)
62
- goalsArgs.weekly_goal = args.weeklyGoal;
63
- if (args.vacationMode !== undefined)
64
- goalsArgs.vacation_mode = args.vacationMode ? 1 : 0;
65
- if (args.karmaDisabled !== undefined)
66
- goalsArgs.karma_disabled = args.karmaDisabled ? 1 : 0;
67
- if (args.ignoreDays !== undefined)
68
- goalsArgs.ignore_days = args.ignoreDays;
59
+ const goalsArgs = pickDefined({
60
+ dailyGoal: args.dailyGoal,
61
+ weeklyGoal: args.weeklyGoal,
62
+ vacationMode: args.vacationMode !== undefined ? (args.vacationMode ? 1 : 0) : undefined,
63
+ karmaDisabled: args.karmaDisabled !== undefined ? (args.karmaDisabled ? 1 : 0) : undefined,
64
+ ignoreDays: args.ignoreDays,
65
+ });
69
66
  if (Object.keys(goalsArgs).length === 0) {
70
67
  throw new Error('No goals to update');
71
68
  }
72
- const command = {
73
- type: 'update_goals',
74
- uuid: generateUuid(),
75
- args: goalsArgs,
76
- };
77
- await executeSyncCommand([command]);
69
+ const api = await getApi();
70
+ await api.sync({
71
+ commands: [createCommand('update_goals', goalsArgs)],
72
+ });
78
73
  }
79
74
  //# sourceMappingURL=stats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/lib/api/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAoB,MAAM,WAAW,CAAA;AA4B9E,MAAM,aAAa,GAAW,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;AAE9D,SAAS,WAAW,CAAC,CAAU;IAC3B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAA;IACrD,MAAM,GAAG,GAAG,CAA4B,CAAA;IACxC,OAAO;QACH,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;KAC7B,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IACxC,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAA;IACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sDAAsD,EAAE;QACjF,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,KAAK,EAAE;SACnC;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;IAC9B,OAAO;QACH,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;QAC9C,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACpD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QACjD,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAA4C,EAAE,EAAE,CAAC,CAAC;YACtF,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,cAAc,EAAE,CAAC,CAAC,eAAe;SACpC,CAAC,CAAC;QACH,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAClC,CAAC,CAAwD,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,cAAc,EAAE,CAAC,CAAC,eAAe;SACpC,CAAC,CACL;QACD,KAAK,EAAE;YACH,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;YACxC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;YAC1C,kBAAkB,EAAE,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC;YAC3D,mBAAmB,EAAE,WAAW,CAAC,KAAK,CAAC,qBAAqB,CAAC;YAC7D,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC;YACnD,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACrD,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;YAC1C,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YAC5C,UAAU,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAa;SACpD;KACJ,CAAA;AACL,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACnD,MAAM,SAAS,GAA4B,EAAE,CAAA;IAC7C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAA;IACvE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAA;IAC1E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxF,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3F,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAA;IAE1E,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,OAAO,GAAgB;QACzB,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,YAAY,EAAE;QACpB,IAAI,EAAE,SAAS;KAClB,CAAA;IAED,MAAM,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AACvC,CAAC"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/lib/api/stats.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-settings.d.ts","sourceRoot":"","sources":["../../../src/lib/api/user-settings.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,oBAAoB,EAAE,OAAO,CAAA;CAChC;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,CAyC/D;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CpF"}
1
+ {"version":3,"file":"user-settings.d.ts","sourceRoot":"","sources":["../../../src/lib/api/user-settings.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,oBAAoB,EAAE,OAAO,CAAA;CAChC;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,CAyB/D;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCpF"}
@@ -1,90 +1,58 @@
1
- import { getApiToken } from '../auth.js';
2
- import { executeSyncCommand, generateUuid } from './core.js';
1
+ import { createCommand } from '@doist/todoist-api-typescript';
2
+ import { getApi, pickDefined } from './core.js';
3
3
  export async function fetchUserSettings() {
4
- const token = await getApiToken();
5
- const response = await fetch('https://api.todoist.com/api/v1/sync', {
6
- method: 'POST',
7
- headers: {
8
- Authorization: `Bearer ${token}`,
9
- 'Content-Type': 'application/x-www-form-urlencoded',
10
- },
11
- body: new URLSearchParams({
12
- sync_token: '*',
13
- resource_types: '["user","user_settings"]',
14
- }),
4
+ const api = await getApi();
5
+ const response = await api.sync({
6
+ resourceTypes: ['user', 'user_settings'],
7
+ syncToken: '*',
15
8
  });
16
- if (!response.ok) {
17
- throw new Error(`Failed to fetch user settings: ${response.status}`);
18
- }
19
- const data = await response.json();
20
- if (data.error) {
21
- throw new Error(`User settings API error: ${data.error}`);
22
- }
23
- const user = data.user ?? {};
24
- const settings = data.user_settings ?? {};
9
+ const user = response.user;
10
+ const settings = response.userSettings;
25
11
  return {
26
- timezone: String(user.timezone ?? 'UTC'),
27
- timeFormat: Number(user.time_format ?? 0),
28
- dateFormat: Number(user.date_format ?? 0),
29
- startDay: Number(user.start_day ?? 1),
30
- theme: Number(user.theme_id ?? user.theme ?? 0),
31
- autoReminder: Number(user.auto_reminder ?? 0),
32
- nextWeek: Number(user.next_week ?? 1),
33
- startPage: String(user.start_page ?? 'today'),
34
- reminderPush: Boolean(settings.reminder_push ?? true),
35
- reminderDesktop: Boolean(settings.reminder_desktop ?? true),
36
- reminderEmail: Boolean(settings.reminder_email ?? false),
37
- completedSoundDesktop: Boolean(settings.completed_sound_desktop ?? true),
38
- completedSoundMobile: Boolean(settings.completed_sound_mobile ?? true),
12
+ timezone: user?.tzInfo?.timezone ?? 'UTC',
13
+ timeFormat: user?.timeFormat ?? 0,
14
+ dateFormat: user?.dateFormat ?? 0,
15
+ startDay: user?.startDay ?? 1,
16
+ theme: Number(user?.themeId ?? 0),
17
+ autoReminder: user?.autoReminder ?? 0,
18
+ nextWeek: user?.nextWeek ?? 1,
19
+ startPage: user?.startPage ?? 'today',
20
+ reminderPush: settings?.reminderPush ?? true,
21
+ reminderDesktop: settings?.reminderDesktop ?? true,
22
+ reminderEmail: settings?.reminderEmail ?? false,
23
+ completedSoundDesktop: settings?.completedSoundDesktop ?? true,
24
+ completedSoundMobile: settings?.completedSoundMobile ?? true,
39
25
  };
40
26
  }
41
27
  export async function updateUserSettings(args) {
42
28
  const commands = [];
43
- const userArgs = {};
44
- if (args.timezone !== undefined)
45
- userArgs.timezone = args.timezone;
46
- if (args.timeFormat !== undefined)
47
- userArgs.time_format = args.timeFormat;
48
- if (args.dateFormat !== undefined)
49
- userArgs.date_format = args.dateFormat;
50
- if (args.startDay !== undefined)
51
- userArgs.start_day = args.startDay;
52
- if (args.theme !== undefined)
53
- userArgs.theme_id = String(args.theme);
54
- if (args.autoReminder !== undefined)
55
- userArgs.auto_reminder = args.autoReminder;
56
- if (args.nextWeek !== undefined)
57
- userArgs.next_week = args.nextWeek;
58
- if (args.startPage !== undefined)
59
- userArgs.start_page = args.startPage;
29
+ const userArgs = pickDefined({
30
+ timezone: args.timezone,
31
+ time_format: args.timeFormat,
32
+ date_format: args.dateFormat,
33
+ start_day: args.startDay,
34
+ theme_id: args.theme !== undefined ? String(args.theme) : undefined,
35
+ auto_reminder: args.autoReminder,
36
+ next_week: args.nextWeek,
37
+ start_page: args.startPage,
38
+ });
60
39
  if (Object.keys(userArgs).length > 0) {
61
- commands.push({
62
- type: 'user_update',
63
- uuid: generateUuid(),
64
- args: userArgs,
65
- });
40
+ commands.push(createCommand('user_update', userArgs));
66
41
  }
67
- const settingsArgs = {};
68
- if (args.reminderPush !== undefined)
69
- settingsArgs.reminder_push = args.reminderPush;
70
- if (args.reminderDesktop !== undefined)
71
- settingsArgs.reminder_desktop = args.reminderDesktop;
72
- if (args.reminderEmail !== undefined)
73
- settingsArgs.reminder_email = args.reminderEmail;
74
- if (args.completedSoundDesktop !== undefined)
75
- settingsArgs.completed_sound_desktop = args.completedSoundDesktop;
76
- if (args.completedSoundMobile !== undefined)
77
- settingsArgs.completed_sound_mobile = args.completedSoundMobile;
42
+ const settingsArgs = pickDefined({
43
+ reminderPush: args.reminderPush,
44
+ reminderDesktop: args.reminderDesktop,
45
+ reminderEmail: args.reminderEmail,
46
+ completedSoundDesktop: args.completedSoundDesktop,
47
+ completedSoundMobile: args.completedSoundMobile,
48
+ });
78
49
  if (Object.keys(settingsArgs).length > 0) {
79
- commands.push({
80
- type: 'user_settings_update',
81
- uuid: generateUuid(),
82
- args: settingsArgs,
83
- });
50
+ commands.push(createCommand('user_settings_update', settingsArgs));
84
51
  }
85
52
  if (commands.length === 0) {
86
53
  throw new Error('No settings to update');
87
54
  }
88
- await executeSyncCommand(commands);
55
+ const api = await getApi();
56
+ await api.sync({ commands });
89
57
  }
90
58
  //# sourceMappingURL=user-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-settings.js","sourceRoot":"","sources":["../../../src/lib/api/user-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-settings.js","sourceRoot":"","sources":["../../../src/lib/api/user-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAkB/C,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;QAC5B,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;QACxC,SAAS,EAAE,GAAG;KACjB,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAA;IAEtC,OAAO;QACH,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,IAAI,KAAK;QACzC,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC;QACjC,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC;QACjC,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;QACjC,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC;QACrC,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAC;QAC7B,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,OAAO;QACrC,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI;QAC5C,eAAe,EAAE,QAAQ,EAAE,eAAe,IAAI,IAAI;QAClD,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,KAAK;QAC/C,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,IAAI,IAAI;QAC9D,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,IAAI,IAAI;KAC/D,CAAA;AACL,CAAC;AAkBD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA4B;IACjE,MAAM,QAAQ,GAAG,EAAE,CAAA;IAEnB,MAAM,QAAQ,GAAG,WAAW,CAAC;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,UAAU;QAC5B,WAAW,EAAE,IAAI,CAAC,UAAU;QAC5B,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,QAAQ,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,UAAU,EAAE,IAAI,CAAC,SAAS;KAC7B,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;KAClD,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../src/lib/api/workspaces.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;KACrB,CAAA;CACJ;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACtB;AA6DD,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAG5D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAOxE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../src/lib/api/workspaces.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;KACrB,CAAA;CACJ;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACtB;AAsDD,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAG5D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAOxE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
@@ -1,48 +1,42 @@
1
- import { getApiToken } from '../auth.js';
1
+ import { getApi } from './core.js';
2
2
  let workspaceCache = null;
3
3
  let folderCache = null;
4
- async function fetchWorkspaceData() {
5
- if (workspaceCache !== null && folderCache !== null) {
6
- return { workspaces: workspaceCache, folders: folderCache };
7
- }
8
- const token = await getApiToken();
9
- const response = await fetch('https://api.todoist.com/api/v1/sync', {
10
- method: 'POST',
11
- headers: {
12
- Authorization: `Bearer ${token}`,
13
- 'Content-Type': 'application/x-www-form-urlencoded',
14
- },
15
- body: new URLSearchParams({
16
- sync_token: '*',
17
- resource_types: '["workspaces","folders"]',
18
- }),
19
- });
20
- if (!response.ok) {
21
- throw new Error(`Failed to fetch workspace data: ${response.status}`);
22
- }
23
- const data = await response.json();
24
- if (data.error) {
25
- throw new Error(`Workspace API error: ${data.error}`);
26
- }
27
- const workspaces = (data.workspaces ?? []).map((w) => ({
4
+ function toWorkspace(w) {
5
+ const raw = w;
6
+ const memberCounts = raw.member_count_by_type;
7
+ return {
28
8
  id: String(w.id),
29
9
  name: w.name,
30
10
  role: w.role,
31
11
  plan: w.plan,
32
- domainName: w.domain_name ?? null,
33
- currentMemberCount: w.current_member_count ?? 0,
34
- currentActiveProjects: w.current_active_projects ?? 0,
12
+ domainName: w.domainName ?? null,
13
+ currentMemberCount: w.currentMemberCount ?? 0,
14
+ currentActiveProjects: w.currentActiveProjects ?? 0,
35
15
  memberCountByType: {
36
- adminCount: w.member_count_by_type?.admin_count ?? 0,
37
- memberCount: w.member_count_by_type?.member_count ?? 0,
38
- guestCount: w.member_count_by_type?.guest_count ?? 0,
16
+ adminCount: memberCounts?.admin_count ?? 0,
17
+ memberCount: memberCounts?.member_count ?? 0,
18
+ guestCount: memberCounts?.guest_count ?? 0,
39
19
  },
40
- }));
41
- const folders = (data.folders ?? []).map((f) => ({
20
+ };
21
+ }
22
+ function toFolder(f) {
23
+ return {
42
24
  id: String(f.id),
43
- name: String(f.name),
44
- workspaceId: String(f.workspace_id),
45
- }));
25
+ name: f.name,
26
+ workspaceId: f.workspaceId,
27
+ };
28
+ }
29
+ async function fetchWorkspaceData() {
30
+ if (workspaceCache !== null && folderCache !== null) {
31
+ return { workspaces: workspaceCache, folders: folderCache };
32
+ }
33
+ const api = await getApi();
34
+ const response = await api.sync({
35
+ resourceTypes: ['workspaces', 'folders'],
36
+ syncToken: '*',
37
+ });
38
+ const workspaces = (response.workspaces ?? []).map(toWorkspace);
39
+ const folders = (response.folders ?? []).map(toFolder);
46
40
  workspaceCache = workspaces;
47
41
  folderCache = folders;
48
42
  return { workspaces, folders };
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/lib/api/workspaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/lib/api/workspaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAuBlC,IAAI,cAAc,GAAuB,IAAI,CAAA;AAC7C,IAAI,WAAW,GAA6B,IAAI,CAAA;AAEhD,SAAS,WAAW,CAAC,CAAgB;IACjC,MAAM,GAAG,GAAG,CAAuC,CAAA;IACnD,MAAM,YAAY,GAAG,GAAG,CAAC,oBAA0D,CAAA;IACnF,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QAChC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,IAAI,CAAC;QAC7C,qBAAqB,EAAE,CAAC,CAAC,qBAAqB,IAAI,CAAC;QACnD,iBAAiB,EAAE;YACf,UAAU,EAAE,YAAY,EAAE,WAAW,IAAI,CAAC;YAC1C,WAAW,EAAE,YAAY,EAAE,YAAY,IAAI,CAAC;YAC5C,UAAU,EAAE,YAAY,EAAE,WAAW,IAAI,CAAC;SAC7C;KACJ,CAAA;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,CAAY;IAC1B,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;KAC7B,CAAA;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB;IAI7B,IAAI,cAAc,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;IAC/D,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;QAC5B,aAAa,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;QACxC,SAAS,EAAE,GAAG;KACjB,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEtD,cAAc,GAAG,UAAU,CAAA;IAC3B,WAAW,GAAG,OAAO,CAAA;IACrB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAA;IACjD,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACvC,IAAI,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAA;QAC9C,OAAO,OAAO,CAAA;IAClB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,cAAc,GAAG,IAAI,CAAA;IACrB,WAAW,GAAG,IAAI,CAAA;AACtB,CAAC"}
@@ -1,4 +1,11 @@
1
+ export declare const CONFIG_PATH: string;
2
+ export declare const TOKEN_ENV_VAR = "TODOIST_API_TOKEN";
3
+ export type TokenStorageLocation = 'secure-store' | 'config-file';
4
+ export interface TokenStorageResult {
5
+ storage: TokenStorageLocation;
6
+ warning?: string;
7
+ }
1
8
  export declare function getApiToken(): Promise<string>;
2
- export declare function saveApiToken(token: string): Promise<void>;
3
- export declare function clearApiToken(): Promise<void>;
9
+ export declare function saveApiToken(token: string): Promise<TokenStorageResult>;
10
+ export declare function clearApiToken(): Promise<TokenStorageResult>;
4
11
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAUA,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAqBnD;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B/D;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBnD"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW,QAA2D,CAAA;AACnF,eAAO,MAAM,aAAa,sBAAsB,CAAA;AAEhD,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,aAAa,CAAA;AAEjE,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAOD,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAqEnD;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4B7E;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAmBjE"}
package/dist/lib/auth.js CHANGED
@@ -1,66 +1,176 @@
1
1
  import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
2
2
  import { homedir } from 'node:os';
3
3
  import { dirname, join } from 'node:path';
4
- const CONFIG_PATH = join(homedir(), '.config', 'todoist-cli', 'config.json');
4
+ import { createSecureStore, SecureStoreUnavailableError, SECURE_STORE_DESCRIPTION, } from './secure-store.js';
5
+ export const CONFIG_PATH = join(homedir(), '.config', 'todoist-cli', 'config.json');
6
+ export const TOKEN_ENV_VAR = 'TODOIST_API_TOKEN';
5
7
  export async function getApiToken() {
6
8
  // Priority 1: Environment variable
7
- const envToken = process.env.TODOIST_API_TOKEN;
9
+ const envToken = process.env[TOKEN_ENV_VAR];
8
10
  if (envToken) {
9
11
  return envToken;
10
12
  }
11
- // Priority 2: Config file
13
+ const config = await readConfig();
14
+ const configToken = getConfigToken(config);
15
+ const secureStore = createSecureStore();
16
+ if (configToken) {
17
+ try {
18
+ await secureStore.setSecret(configToken);
19
+ const cleanupWarning = await cleanupAuthFallbackState(config, 'Token was migrated to secure storage,');
20
+ if (cleanupWarning) {
21
+ warn(cleanupWarning);
22
+ }
23
+ }
24
+ catch (error) {
25
+ if (error instanceof SecureStoreUnavailableError) {
26
+ warnSecureStoreFallback('using plaintext token from');
27
+ }
28
+ else {
29
+ throw error;
30
+ }
31
+ }
32
+ return configToken;
33
+ }
34
+ if (config.pendingSecureStoreClear) {
35
+ try {
36
+ await secureStore.deleteSecret();
37
+ const cleanupWarning = await cleanupAuthFallbackState(config, 'Secure-store token was removed,');
38
+ if (cleanupWarning) {
39
+ warn(cleanupWarning);
40
+ }
41
+ }
42
+ catch (error) {
43
+ if (!(error instanceof SecureStoreUnavailableError)) {
44
+ throw error;
45
+ }
46
+ }
47
+ throw new Error(`No API token found. Set ${TOKEN_ENV_VAR} or run \`td auth login\` or \`td auth token <token>\`.`);
48
+ }
12
49
  try {
13
- const content = await readFile(CONFIG_PATH, 'utf-8');
14
- const config = JSON.parse(content);
15
- if (config.api_token) {
16
- return config.api_token;
50
+ const storedToken = await secureStore.getSecret();
51
+ if (storedToken?.trim()) {
52
+ return storedToken;
17
53
  }
18
54
  }
19
- catch {
20
- // Config file doesn't exist or is invalid
55
+ catch (error) {
56
+ if (error instanceof SecureStoreUnavailableError) {
57
+ warnSecureStoreFallback('using plaintext token from');
58
+ }
59
+ else {
60
+ throw error;
61
+ }
21
62
  }
22
- throw new Error('No API token found. Set TODOIST_API_TOKEN environment variable or create ~/.config/todoist-cli/config.json with {"api_token": "your-token"}');
63
+ throw new Error(`No API token found. Set ${TOKEN_ENV_VAR} or run \`td auth login\` or \`td auth token <token>\`.`);
23
64
  }
24
65
  export async function saveApiToken(token) {
25
66
  // Validate token (non-empty, reasonable length)
26
67
  if (!token || token.trim().length < 10) {
27
68
  throw new Error('Invalid token: Token must be at least 10 characters');
28
69
  }
29
- // Ensure config directory exists
30
- const configDir = dirname(CONFIG_PATH);
31
- await mkdir(configDir, { recursive: true });
32
- // Read existing config to preserve other settings
33
- let existingConfig = {};
70
+ const trimmedToken = token.trim();
71
+ const secureStore = createSecureStore();
34
72
  try {
35
- const content = await readFile(CONFIG_PATH, 'utf-8');
36
- existingConfig = JSON.parse(content);
73
+ await secureStore.setSecret(trimmedToken);
74
+ const existingConfig = await readConfig();
75
+ const warning = await cleanupAuthFallbackState(existingConfig, 'Token was stored securely,');
76
+ return warning ? { storage: 'secure-store', warning } : { storage: 'secure-store' };
37
77
  }
38
- catch {
39
- // Config doesn't exist - start fresh
78
+ catch (error) {
79
+ if (!(error instanceof SecureStoreUnavailableError)) {
80
+ throw error;
81
+ }
40
82
  }
41
- // Update config with new token
42
- const newConfig = {
43
- ...existingConfig,
44
- api_token: token.trim(),
83
+ const config = await readConfig();
84
+ config.api_token = trimmedToken;
85
+ delete config.pendingSecureStoreClear;
86
+ await writeConfig(config);
87
+ return {
88
+ storage: 'config-file',
89
+ warning: buildFallbackWarning('token saved as plaintext in'),
45
90
  };
46
- // Write config file with proper formatting
47
- await writeFile(CONFIG_PATH, `${JSON.stringify(newConfig, null, 2)}\n`);
48
91
  }
49
92
  export async function clearApiToken() {
50
- let config = {};
93
+ const config = await readConfig();
94
+ const secureStore = createSecureStore();
95
+ try {
96
+ await secureStore.deleteSecret();
97
+ const warning = await cleanupAuthFallbackState(config, 'Secure-store token was removed,');
98
+ return warning ? { storage: 'secure-store', warning } : { storage: 'secure-store' };
99
+ }
100
+ catch (error) {
101
+ if (!(error instanceof SecureStoreUnavailableError)) {
102
+ throw error;
103
+ }
104
+ }
105
+ await writeConfig(withPendingSecureStoreClear(config));
106
+ return {
107
+ storage: 'config-file',
108
+ warning: buildFallbackWarning('local auth state cleared in'),
109
+ };
110
+ }
111
+ async function readConfig() {
51
112
  try {
52
113
  const content = await readFile(CONFIG_PATH, 'utf-8');
53
- config = JSON.parse(content);
114
+ const parsed = JSON.parse(content);
115
+ return isObject(parsed) ? parsed : {};
54
116
  }
55
117
  catch {
56
- return; // Config doesn't exist, nothing to clear
118
+ return {};
57
119
  }
58
- delete config.api_token;
120
+ }
121
+ async function writeConfig(config) {
59
122
  if (Object.keys(config).length === 0) {
60
- await unlink(CONFIG_PATH);
123
+ try {
124
+ await unlink(CONFIG_PATH);
125
+ }
126
+ catch (error) {
127
+ if (!isMissingFileError(error)) {
128
+ throw error;
129
+ }
130
+ }
131
+ return;
61
132
  }
62
- else {
63
- await writeFile(CONFIG_PATH, `${JSON.stringify(config, null, 2)}\n`);
133
+ await mkdir(dirname(CONFIG_PATH), { recursive: true });
134
+ await writeFile(CONFIG_PATH, `${JSON.stringify(config, null, 2)}\n`);
135
+ }
136
+ async function cleanupAuthFallbackState(config, warningPrefix) {
137
+ try {
138
+ await writeConfig(withoutAuthFallbackState(config));
139
+ return undefined;
64
140
  }
141
+ catch (error) {
142
+ return buildConfigCleanupWarning(warningPrefix, error);
143
+ }
144
+ }
145
+ function getConfigToken(config) {
146
+ return typeof config.api_token === 'string' && config.api_token.trim()
147
+ ? config.api_token.trim()
148
+ : null;
149
+ }
150
+ function withoutAuthFallbackState(config) {
151
+ const { api_token: _token, pendingSecureStoreClear: _pending, ...rest } = config;
152
+ return rest;
153
+ }
154
+ function withPendingSecureStoreClear(config) {
155
+ return { ...withoutAuthFallbackState(config), pendingSecureStoreClear: true };
156
+ }
157
+ function isObject(value) {
158
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
159
+ }
160
+ function isMissingFileError(error) {
161
+ return error instanceof Error && 'code' in error && error.code === 'ENOENT';
162
+ }
163
+ function buildFallbackWarning(action) {
164
+ return `${SECURE_STORE_DESCRIPTION} unavailable; ${action} ${CONFIG_PATH}`;
165
+ }
166
+ function buildConfigCleanupWarning(prefix, error) {
167
+ const detail = error instanceof Error && error.message ? ` (${error.message})` : '';
168
+ return `${prefix} but could not remove legacy plaintext token from ${CONFIG_PATH}${detail}`;
169
+ }
170
+ function warn(message) {
171
+ console.error(`Warning: ${message}`);
172
+ }
173
+ function warnSecureStoreFallback(action) {
174
+ warn(buildFallbackWarning(action));
65
175
  }
66
176
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;AAM5E,MAAM,CAAC,KAAK,UAAU,WAAW;IAC7B,mCAAmC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,SAAS,CAAA;QAC3B,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,0CAA0C;IAC9C,CAAC;IAED,MAAM,IAAI,KAAK,CACX,6IAA6I,CAChJ,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa;IAC5C,gDAAgD;IAChD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IAC1E,CAAC;IAED,iCAAiC;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3C,kDAAkD;IAClD,IAAI,cAAc,GAAW,EAAE,CAAA;IAC/B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACpD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,qCAAqC;IACzC,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAW;QACtB,GAAG,cAAc;QACjB,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE;KAC1B,CAAA;IAED,2CAA2C;IAC3C,MAAM,SAAS,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,IAAI,MAAM,GAAW,EAAE,CAAA;IACvB,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACL,OAAM,CAAC,yCAAyC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAA;IAEvB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;IAC7B,CAAC;SAAM,CAAC;QACJ,MAAM,SAAS,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
@@ -108,9 +108,9 @@ export function formatAssignee({ userId, projectId, projects, cache, }) {
108
108
  return null;
109
109
  const name = cache.getUserName({ userId, projectId, projects });
110
110
  if (name) {
111
- return `+${formatUserShortName(name)}`;
111
+ return formatUserShortName(name);
112
112
  }
113
- return `+${userId}`;
113
+ return userId;
114
114
  }
115
115
  async function fetchCollaboratorsForProject(api, project) {
116
116
  if (isWorkspaceProject(project)) {