@doist/todoist-cli 1.29.2 → 1.29.4

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 (248) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +11 -4
  3. package/scripts/check-skill-sync.js +40 -0
  4. package/scripts/sync-skill.js +28 -0
  5. package/dist/__mocks__/chalk.d.ts +0 -3
  6. package/dist/__mocks__/chalk.d.ts.map +0 -1
  7. package/dist/__mocks__/chalk.js +0 -8
  8. package/dist/__mocks__/chalk.js.map +0 -1
  9. package/dist/commands/activity.d.ts +0 -3
  10. package/dist/commands/activity.d.ts.map +0 -1
  11. package/dist/commands/activity.js +0 -267
  12. package/dist/commands/activity.js.map +0 -1
  13. package/dist/commands/add.d.ts +0 -3
  14. package/dist/commands/add.d.ts.map +0 -1
  15. package/dist/commands/add.js +0 -36
  16. package/dist/commands/add.js.map +0 -1
  17. package/dist/commands/attachment.d.ts +0 -3
  18. package/dist/commands/attachment.d.ts.map +0 -1
  19. package/dist/commands/attachment.js +0 -156
  20. package/dist/commands/attachment.js.map +0 -1
  21. package/dist/commands/auth.d.ts +0 -3
  22. package/dist/commands/auth.d.ts.map +0 -1
  23. package/dist/commands/auth.js +0 -124
  24. package/dist/commands/auth.js.map +0 -1
  25. package/dist/commands/changelog.d.ts +0 -8
  26. package/dist/commands/changelog.d.ts.map +0 -1
  27. package/dist/commands/changelog.js +0 -92
  28. package/dist/commands/changelog.js.map +0 -1
  29. package/dist/commands/comment.d.ts +0 -3
  30. package/dist/commands/comment.d.ts.map +0 -1
  31. package/dist/commands/comment.js +0 -301
  32. package/dist/commands/comment.js.map +0 -1
  33. package/dist/commands/completed.d.ts +0 -3
  34. package/dist/commands/completed.d.ts.map +0 -1
  35. package/dist/commands/completed.js +0 -107
  36. package/dist/commands/completed.js.map +0 -1
  37. package/dist/commands/completion.d.ts +0 -3
  38. package/dist/commands/completion.d.ts.map +0 -1
  39. package/dist/commands/completion.js +0 -107
  40. package/dist/commands/completion.js.map +0 -1
  41. package/dist/commands/filter.d.ts +0 -5
  42. package/dist/commands/filter.d.ts.map +0 -1
  43. package/dist/commands/filter.js +0 -287
  44. package/dist/commands/filter.js.map +0 -1
  45. package/dist/commands/inbox.d.ts +0 -3
  46. package/dist/commands/inbox.d.ts.map +0 -1
  47. package/dist/commands/inbox.js +0 -25
  48. package/dist/commands/inbox.js.map +0 -1
  49. package/dist/commands/label.d.ts +0 -5
  50. package/dist/commands/label.d.ts.map +0 -1
  51. package/dist/commands/label.js +0 -328
  52. package/dist/commands/label.js.map +0 -1
  53. package/dist/commands/notification.d.ts +0 -3
  54. package/dist/commands/notification.d.ts.map +0 -1
  55. package/dist/commands/notification.js +0 -274
  56. package/dist/commands/notification.js.map +0 -1
  57. package/dist/commands/project.d.ts +0 -5
  58. package/dist/commands/project.d.ts.map +0 -1
  59. package/dist/commands/project.js +0 -528
  60. package/dist/commands/project.js.map +0 -1
  61. package/dist/commands/reminder.d.ts +0 -3
  62. package/dist/commands/reminder.d.ts.map +0 -1
  63. package/dist/commands/reminder.js +0 -271
  64. package/dist/commands/reminder.js.map +0 -1
  65. package/dist/commands/section.d.ts +0 -3
  66. package/dist/commands/section.d.ts.map +0 -1
  67. package/dist/commands/section.js +0 -172
  68. package/dist/commands/section.js.map +0 -1
  69. package/dist/commands/settings.d.ts +0 -12
  70. package/dist/commands/settings.d.ts.map +0 -1
  71. package/dist/commands/settings.js +0 -312
  72. package/dist/commands/settings.js.map +0 -1
  73. package/dist/commands/skill.d.ts +0 -3
  74. package/dist/commands/skill.d.ts.map +0 -1
  75. package/dist/commands/skill.js +0 -127
  76. package/dist/commands/skill.js.map +0 -1
  77. package/dist/commands/stats.d.ts +0 -3
  78. package/dist/commands/stats.d.ts.map +0 -1
  79. package/dist/commands/stats.js +0 -151
  80. package/dist/commands/stats.js.map +0 -1
  81. package/dist/commands/task.d.ts +0 -5
  82. package/dist/commands/task.d.ts.map +0 -1
  83. package/dist/commands/task.js +0 -559
  84. package/dist/commands/task.js.map +0 -1
  85. package/dist/commands/today.d.ts +0 -18
  86. package/dist/commands/today.d.ts.map +0 -1
  87. package/dist/commands/today.js +0 -108
  88. package/dist/commands/today.js.map +0 -1
  89. package/dist/commands/upcoming.d.ts +0 -17
  90. package/dist/commands/upcoming.d.ts.map +0 -1
  91. package/dist/commands/upcoming.js +0 -129
  92. package/dist/commands/upcoming.js.map +0 -1
  93. package/dist/commands/update.d.ts +0 -6
  94. package/dist/commands/update.d.ts.map +0 -1
  95. package/dist/commands/update.js +0 -90
  96. package/dist/commands/update.js.map +0 -1
  97. package/dist/commands/view.d.ts +0 -3
  98. package/dist/commands/view.d.ts.map +0 -1
  99. package/dist/commands/view.js +0 -79
  100. package/dist/commands/view.js.map +0 -1
  101. package/dist/commands/workspace.d.ts +0 -3
  102. package/dist/commands/workspace.d.ts.map +0 -1
  103. package/dist/commands/workspace.js +0 -309
  104. package/dist/commands/workspace.js.map +0 -1
  105. package/dist/index.d.ts +0 -3
  106. package/dist/index.d.ts.map +0 -1
  107. package/dist/index.js +0 -176
  108. package/dist/index.js.map +0 -1
  109. package/dist/lib/api/core.d.ts +0 -13
  110. package/dist/lib/api/core.d.ts.map +0 -1
  111. package/dist/lib/api/core.js +0 -170
  112. package/dist/lib/api/core.js.map +0 -1
  113. package/dist/lib/api/filters.d.ts +0 -19
  114. package/dist/lib/api/filters.d.ts.map +0 -1
  115. package/dist/lib/api/filters.js +0 -60
  116. package/dist/lib/api/filters.js.map +0 -1
  117. package/dist/lib/api/notifications.d.ts +0 -33
  118. package/dist/lib/api/notifications.d.ts.map +0 -1
  119. package/dist/lib/api/notifications.js +0 -94
  120. package/dist/lib/api/notifications.js.map +0 -1
  121. package/dist/lib/api/reminders.d.ts +0 -30
  122. package/dist/lib/api/reminders.d.ts.map +0 -1
  123. package/dist/lib/api/reminders.js +0 -65
  124. package/dist/lib/api/reminders.js.map +0 -1
  125. package/dist/lib/api/stats.d.ts +0 -41
  126. package/dist/lib/api/stats.d.ts.map +0 -1
  127. package/dist/lib/api/stats.js +0 -74
  128. package/dist/lib/api/stats.js.map +0 -1
  129. package/dist/lib/api/uploads.d.ts +0 -10
  130. package/dist/lib/api/uploads.d.ts.map +0 -1
  131. package/dist/lib/api/uploads.js +0 -31
  132. package/dist/lib/api/uploads.js.map +0 -1
  133. package/dist/lib/api/user-settings.d.ts +0 -34
  134. package/dist/lib/api/user-settings.d.ts.map +0 -1
  135. package/dist/lib/api/user-settings.js +0 -58
  136. package/dist/lib/api/user-settings.js.map +0 -1
  137. package/dist/lib/api/workspaces.d.ts +0 -23
  138. package/dist/lib/api/workspaces.d.ts.map +0 -1
  139. package/dist/lib/api/workspaces.js +0 -61
  140. package/dist/lib/api/workspaces.js.map +0 -1
  141. package/dist/lib/auth.d.ts +0 -14
  142. package/dist/lib/auth.d.ts.map +0 -1
  143. package/dist/lib/auth.js +0 -182
  144. package/dist/lib/auth.js.map +0 -1
  145. package/dist/lib/browser.d.ts +0 -2
  146. package/dist/lib/browser.d.ts.map +0 -1
  147. package/dist/lib/browser.js +0 -6
  148. package/dist/lib/browser.js.map +0 -1
  149. package/dist/lib/collaborators.d.ts +0 -29
  150. package/dist/lib/collaborators.d.ts.map +0 -1
  151. package/dist/lib/collaborators.js +0 -184
  152. package/dist/lib/collaborators.js.map +0 -1
  153. package/dist/lib/completion.d.ts +0 -41
  154. package/dist/lib/completion.d.ts.map +0 -1
  155. package/dist/lib/completion.js +0 -191
  156. package/dist/lib/completion.js.map +0 -1
  157. package/dist/lib/dates.d.ts +0 -16
  158. package/dist/lib/dates.d.ts.map +0 -1
  159. package/dist/lib/dates.js +0 -45
  160. package/dist/lib/dates.js.map +0 -1
  161. package/dist/lib/duration.d.ts +0 -14
  162. package/dist/lib/duration.d.ts.map +0 -1
  163. package/dist/lib/duration.js +0 -58
  164. package/dist/lib/duration.js.map +0 -1
  165. package/dist/lib/logger.d.ts +0 -42
  166. package/dist/lib/logger.d.ts.map +0 -1
  167. package/dist/lib/logger.js +0 -227
  168. package/dist/lib/logger.js.map +0 -1
  169. package/dist/lib/markdown.d.ts +0 -3
  170. package/dist/lib/markdown.d.ts.map +0 -1
  171. package/dist/lib/markdown.js +0 -22
  172. package/dist/lib/markdown.js.map +0 -1
  173. package/dist/lib/oauth-server.d.ts +0 -6
  174. package/dist/lib/oauth-server.d.ts.map +0 -1
  175. package/dist/lib/oauth-server.js +0 -773
  176. package/dist/lib/oauth-server.js.map +0 -1
  177. package/dist/lib/oauth.d.ts +0 -3
  178. package/dist/lib/oauth.d.ts.map +0 -1
  179. package/dist/lib/oauth.js +0 -38
  180. package/dist/lib/oauth.js.map +0 -1
  181. package/dist/lib/options.d.ts +0 -16
  182. package/dist/lib/options.d.ts.map +0 -1
  183. package/dist/lib/options.js +0 -2
  184. package/dist/lib/options.js.map +0 -1
  185. package/dist/lib/output.d.ts +0 -39
  186. package/dist/lib/output.d.ts.map +0 -1
  187. package/dist/lib/output.js +0 -311
  188. package/dist/lib/output.js.map +0 -1
  189. package/dist/lib/pagination.d.ts +0 -23
  190. package/dist/lib/pagination.d.ts.map +0 -1
  191. package/dist/lib/pagination.js +0 -26
  192. package/dist/lib/pagination.js.map +0 -1
  193. package/dist/lib/pkce.d.ts +0 -4
  194. package/dist/lib/pkce.d.ts.map +0 -1
  195. package/dist/lib/pkce.js +0 -19
  196. package/dist/lib/pkce.js.map +0 -1
  197. package/dist/lib/progress.d.ts +0 -29
  198. package/dist/lib/progress.d.ts.map +0 -1
  199. package/dist/lib/progress.js +0 -101
  200. package/dist/lib/progress.js.map +0 -1
  201. package/dist/lib/refs.d.ts +0 -52
  202. package/dist/lib/refs.d.ts.map +0 -1
  203. package/dist/lib/refs.js +0 -225
  204. package/dist/lib/refs.js.map +0 -1
  205. package/dist/lib/secure-store.d.ts +0 -11
  206. package/dist/lib/secure-store.d.ts.map +0 -1
  207. package/dist/lib/secure-store.js +0 -57
  208. package/dist/lib/secure-store.js.map +0 -1
  209. package/dist/lib/skills/content.d.ts +0 -4
  210. package/dist/lib/skills/content.d.ts.map +0 -1
  211. package/dist/lib/skills/content.js +0 -415
  212. package/dist/lib/skills/content.js.map +0 -1
  213. package/dist/lib/skills/create-installer.d.ts +0 -9
  214. package/dist/lib/skills/create-installer.d.ts.map +0 -1
  215. package/dist/lib/skills/create-installer.js +0 -77
  216. package/dist/lib/skills/create-installer.js.map +0 -1
  217. package/dist/lib/skills/index.d.ts +0 -6
  218. package/dist/lib/skills/index.d.ts.map +0 -1
  219. package/dist/lib/skills/index.js +0 -40
  220. package/dist/lib/skills/index.js.map +0 -1
  221. package/dist/lib/skills/types.d.ts +0 -11
  222. package/dist/lib/skills/types.d.ts.map +0 -1
  223. package/dist/lib/skills/types.js +0 -2
  224. package/dist/lib/skills/types.js.map +0 -1
  225. package/dist/lib/skills/update-installed.d.ts +0 -7
  226. package/dist/lib/skills/update-installed.d.ts.map +0 -1
  227. package/dist/lib/skills/update-installed.js +0 -23
  228. package/dist/lib/skills/update-installed.js.map +0 -1
  229. package/dist/lib/spinner.d.ts +0 -23
  230. package/dist/lib/spinner.d.ts.map +0 -1
  231. package/dist/lib/spinner.js +0 -138
  232. package/dist/lib/spinner.js.map +0 -1
  233. package/dist/lib/stdin.d.ts +0 -2
  234. package/dist/lib/stdin.d.ts.map +0 -1
  235. package/dist/lib/stdin.js +0 -12
  236. package/dist/lib/stdin.js.map +0 -1
  237. package/dist/lib/task-list.d.ts +0 -31
  238. package/dist/lib/task-list.d.ts.map +0 -1
  239. package/dist/lib/task-list.js +0 -271
  240. package/dist/lib/task-list.js.map +0 -1
  241. package/dist/lib/urls.d.ts +0 -8
  242. package/dist/lib/urls.d.ts.map +0 -1
  243. package/dist/lib/urls.js +0 -26
  244. package/dist/lib/urls.js.map +0 -1
  245. package/dist/postinstall.d.ts +0 -2
  246. package/dist/postinstall.d.ts.map +0 -1
  247. package/dist/postinstall.js +0 -3
  248. package/dist/postinstall.js.map +0 -1
@@ -1,170 +0,0 @@
1
- import { createCommand, TodoistApi, } from '@doist/todoist-api-typescript';
2
- import { getApiToken } from '../auth.js';
3
- import { getProgressTracker } from '../progress.js';
4
- import { withSpinner } from '../spinner.js';
5
- let apiClient = null;
6
- // Mapping of API method names to user-friendly spinner messages
7
- const API_SPINNER_MESSAGES = {
8
- getUser: { text: 'Checking authentication...', color: 'blue' },
9
- getTasks: { text: 'Loading tasks...', color: 'blue' },
10
- getProjects: { text: 'Loading projects...', color: 'blue' },
11
- getLabels: { text: 'Loading labels...', color: 'blue' },
12
- getSharedLabels: { text: 'Loading shared labels...', color: 'blue' },
13
- getSections: { text: 'Loading sections...', color: 'blue' },
14
- getComments: { text: 'Loading comments...', color: 'blue' },
15
- addTask: { text: 'Creating task...', color: 'green' },
16
- updateTask: { text: 'Updating task...', color: 'yellow' },
17
- closeTask: { text: 'Completing task...', color: 'green' },
18
- reopenTask: { text: 'Reopening task...', color: 'yellow' },
19
- deleteTask: { text: 'Deleting task...', color: 'yellow' },
20
- addProject: { text: 'Creating project...', color: 'green' },
21
- updateProject: { text: 'Updating project...', color: 'yellow' },
22
- deleteProject: { text: 'Deleting project...', color: 'yellow' },
23
- addLabel: { text: 'Creating label...', color: 'green' },
24
- updateLabel: { text: 'Updating label...', color: 'yellow' },
25
- deleteLabel: { text: 'Deleting label...', color: 'yellow' },
26
- addSection: { text: 'Creating section...', color: 'green' },
27
- updateSection: { text: 'Updating section...', color: 'yellow' },
28
- deleteSection: { text: 'Deleting section...', color: 'yellow' },
29
- quickAddTask: { text: 'Adding task...', color: 'green' },
30
- getTasksByFilter: { text: 'Loading tasks...', color: 'blue' },
31
- moveProjectToWorkspace: { text: 'Moving project to workspace...', color: 'yellow' },
32
- moveProjectToPersonal: { text: 'Moving project to personal...', color: 'yellow' },
33
- sync: { text: 'Syncing...', color: 'blue' },
34
- viewAttachment: { text: 'Fetching attachment...', color: 'blue' },
35
- };
36
- function createSpinnerWrappedApi(api) {
37
- return new Proxy(api, {
38
- get(target, property, receiver) {
39
- const originalMethod = Reflect.get(target, property, receiver);
40
- // Only wrap methods (functions) and only if they're likely async API calls
41
- if (typeof originalMethod === 'function' && typeof property === 'string') {
42
- const spinnerConfig = API_SPINNER_MESSAGES[property];
43
- if (spinnerConfig) {
44
- return (...args) => {
45
- const progressTracker = getProgressTracker();
46
- // Extract cursor from args for paginated methods
47
- let cursor = null;
48
- if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {
49
- const options = args[0];
50
- if ('cursor' in options && typeof options.cursor === 'string') {
51
- cursor = options.cursor;
52
- }
53
- }
54
- // Emit progress event for API call start
55
- if (progressTracker.isEnabled()) {
56
- progressTracker.emitApiCall(property, cursor);
57
- }
58
- const result = originalMethod.apply(target, args);
59
- // If the method returns a Promise, wrap it with spinner and progress tracking
60
- if (result && typeof result.then === 'function') {
61
- const wrappedPromise = result
62
- .then((response) => {
63
- // Emit progress event for successful response
64
- if (progressTracker.isEnabled()) {
65
- analyzeAndEmitApiResponse(progressTracker, response);
66
- }
67
- return response;
68
- })
69
- .catch((error) => {
70
- // Emit progress event for error
71
- if (progressTracker.isEnabled()) {
72
- progressTracker.emitError(error.name || 'API_ERROR', error.message);
73
- }
74
- throw error;
75
- });
76
- return withSpinner(spinnerConfig, () => wrappedPromise);
77
- }
78
- return result;
79
- };
80
- }
81
- }
82
- return originalMethod;
83
- },
84
- });
85
- }
86
- function analyzeAndEmitApiResponse(progressTracker, response) {
87
- // For paginated responses, extract metadata
88
- if (response && typeof response === 'object' && response !== null) {
89
- const resp = response;
90
- // Check if it's a paginated response with results array
91
- if ('results' in resp && Array.isArray(resp.results)) {
92
- progressTracker.emitApiResponse(resp.results.length, Boolean(resp.nextCursor), typeof resp.nextCursor === 'string' ? resp.nextCursor : null);
93
- return;
94
- }
95
- // For array responses (legacy or simple lists)
96
- if (Array.isArray(response)) {
97
- progressTracker.emitApiResponse(response.length, false, null);
98
- return;
99
- }
100
- }
101
- // For other responses, emit minimal info
102
- progressTracker.emitApiResponse(1, false, null);
103
- }
104
- export async function getApi() {
105
- if (!apiClient) {
106
- const token = await getApiToken();
107
- const rawApi = new TodoistApi(token);
108
- apiClient = createSpinnerWrappedApi(rawApi);
109
- }
110
- return apiClient;
111
- }
112
- export function isWorkspaceProject(project) {
113
- return 'workspaceId' in project && project.workspaceId !== undefined;
114
- }
115
- export function isPersonalProject(project) {
116
- return !isWorkspaceProject(project);
117
- }
118
- let currentUserIdCache = null;
119
- export async function getCurrentUserId() {
120
- if (currentUserIdCache)
121
- return currentUserIdCache;
122
- const api = await getApi();
123
- const user = await api.getUser();
124
- currentUserIdCache = user.id;
125
- return currentUserIdCache;
126
- }
127
- export function clearCurrentUserCache() {
128
- currentUserIdCache = null;
129
- }
130
- export async function completeTaskForever(taskId) {
131
- const api = await getApi();
132
- await api.sync({
133
- commands: [
134
- createCommand('item_complete', {
135
- id: taskId,
136
- completedAt: new Date().toISOString(),
137
- }),
138
- ],
139
- });
140
- }
141
- export function buildRescheduleDate(inputDate, existingDue) {
142
- const isInputDateOnly = !inputDate.includes('T');
143
- if (isInputDateOnly && existingDue.datetime) {
144
- const timePart = existingDue.datetime.substring(10);
145
- return inputDate + timePart;
146
- }
147
- return inputDate;
148
- }
149
- export async function rescheduleTask(taskId, newDate, existingDue) {
150
- const api = await getApi();
151
- const finalDate = buildRescheduleDate(newDate, existingDue);
152
- await api.sync({
153
- commands: [
154
- createCommand('item_update', {
155
- id: taskId,
156
- due: {
157
- date: finalDate,
158
- string: existingDue.isRecurring ? existingDue.string : finalDate,
159
- isRecurring: existingDue.isRecurring,
160
- timezone: existingDue.timezone ?? undefined,
161
- lang: existingDue.lang ?? undefined,
162
- },
163
- }),
164
- ],
165
- });
166
- }
167
- export function pickDefined(obj) {
168
- return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined));
169
- }
170
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { type ColorKey, type Filter as SdkFilter } from '@doist/todoist-api-typescript';
2
- export type Filter = SdkFilter;
3
- export interface AddFilterArgs {
4
- name: string;
5
- query: string;
6
- color?: ColorKey;
7
- isFavorite?: boolean;
8
- }
9
- export declare function fetchFilters(): Promise<Filter[]>;
10
- export declare function addFilter(args: AddFilterArgs): Promise<Filter>;
11
- export interface UpdateFilterArgs {
12
- name?: string;
13
- query?: string;
14
- color?: ColorKey;
15
- isFavorite?: boolean;
16
- }
17
- export declare function updateFilter(id: string, args: UpdateFilterArgs): Promise<void>;
18
- export declare function deleteFilter(id: string): Promise<void>;
19
- //# sourceMappingURL=filters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/lib/api/filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,QAAQ,EACb,KAAK,MAAM,IAAI,SAAS,EAC3B,MAAM,+BAA+B,CAAA;AAGtC,MAAM,MAAM,MAAM,GAAG,SAAS,CAAA;AAE9B,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAOtD;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BpE;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAepF;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D"}
@@ -1,60 +0,0 @@
1
- import { createCommand, } from '@doist/todoist-api-typescript';
2
- import { getApi, pickDefined } from './core.js';
3
- export async function fetchFilters() {
4
- const api = await getApi();
5
- const response = await api.sync({
6
- resourceTypes: ['filters'],
7
- syncToken: '*',
8
- });
9
- return (response.filters ?? []).filter((f) => !f.isDeleted);
10
- }
11
- export async function addFilter(args) {
12
- const api = await getApi();
13
- const tempId = crypto.randomUUID();
14
- const response = await api.sync({
15
- commands: [
16
- createCommand('filter_add', {
17
- name: args.name,
18
- query: args.query,
19
- ...pickDefined({
20
- color: args.color,
21
- isFavorite: args.isFavorite,
22
- }),
23
- }, tempId),
24
- ],
25
- });
26
- const id = response.tempIdMapping?.[tempId] ?? tempId;
27
- return {
28
- id,
29
- name: args.name,
30
- query: args.query,
31
- color: args.color ?? 'charcoal',
32
- isFavorite: args.isFavorite ?? false,
33
- isDeleted: false,
34
- isFrozen: false,
35
- itemOrder: 0,
36
- };
37
- }
38
- export async function updateFilter(id, args) {
39
- const api = await getApi();
40
- await api.sync({
41
- commands: [
42
- createCommand('filter_update', {
43
- id,
44
- ...pickDefined({
45
- name: args.name,
46
- query: args.query,
47
- color: args.color,
48
- isFavorite: args.isFavorite,
49
- }),
50
- }),
51
- ],
52
- });
53
- }
54
- export async function deleteFilter(id) {
55
- const api = await getApi();
56
- await api.sync({
57
- commands: [createCommand('filter_delete', { id })],
58
- });
59
- }
60
- //# sourceMappingURL=filters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/lib/api/filters.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,GAGhB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAW/C,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;QAC5B,aAAa,EAAE,CAAC,SAAS,CAAC;QAC1B,SAAS,EAAE,GAAG;KACjB,CAAC,CAAA;IACF,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IAC/C,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;QAC5B,QAAQ,EAAE;YACN,aAAa,CACT,YAAY,EACZ;gBACI,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,WAAW,CAAC;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC9B,CAAC;aACL,EACD,MAAM,CACT;SACJ;KACJ,CAAC,CAAA;IAEF,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,MAAM,CAAA;IACrD,OAAO;QACH,EAAE;QACF,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;QACpC,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,CAAC;KACf,CAAA;AACL,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAU,EAAE,IAAsB;IACjE,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,GAAG,CAAC,IAAI,CAAC;QACX,QAAQ,EAAE;YACN,aAAa,CAAC,eAAe,EAAE;gBAC3B,EAAE;gBACF,GAAG,WAAW,CAAC;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC9B,CAAC;aACL,CAAC;SACL;KACJ,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAU;IACzC,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,GAAG,CAAC,IAAI,CAAC;QACX,QAAQ,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KACrD,CAAC,CAAA;AACN,CAAC"}
@@ -1,33 +0,0 @@
1
- export type NotificationType = 'share_invitation_sent' | 'share_invitation_accepted' | 'share_invitation_rejected' | 'user_left_project' | 'user_removed_from_project' | 'item_assigned' | 'item_completed' | 'item_uncompleted' | 'note_added' | 'project_archived' | 'project_unarchived' | 'karma_daily_goal' | 'karma_weekly_goal' | 'biz_trial_will_end' | 'biz_payment_failed' | 'biz_account_disabled' | string;
2
- export interface NotificationUser {
3
- id: string;
4
- name: string;
5
- email: string;
6
- }
7
- export interface NotificationProject {
8
- id: string;
9
- name: string;
10
- }
11
- export interface NotificationTask {
12
- id: string;
13
- content: string;
14
- }
15
- export interface Notification {
16
- id: string;
17
- type: NotificationType;
18
- isUnread: boolean;
19
- isDeleted: boolean;
20
- createdAt: string;
21
- fromUser?: NotificationUser;
22
- project?: NotificationProject;
23
- task?: NotificationTask;
24
- invitationId?: string;
25
- invitationSecret?: string;
26
- }
27
- export declare function fetchNotifications(): Promise<Notification[]>;
28
- export declare function markNotificationRead(id: string): Promise<void>;
29
- export declare function markNotificationUnread(id: string): Promise<void>;
30
- export declare function markAllNotificationsRead(): Promise<void>;
31
- export declare function acceptInvitation(invitationId: string, secret: string): Promise<void>;
32
- export declare function rejectInvitation(invitationId: string, secret: string): Promise<void>;
33
- //# sourceMappingURL=notifications.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/lib/api/notifications.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GACtB,uBAAuB,GACvB,2BAA2B,GAC3B,2BAA2B,GAC3B,mBAAmB,GACnB,2BAA2B,GAC3B,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,YAAY,GACZ,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,MAAM,CAAA;AAEZ,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,gBAAgB,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AA8CD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBlE;AAED,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpE;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtE;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK9D;AAED,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1F;AAED,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1F"}
@@ -1,94 +0,0 @@
1
- import { createCommand } from '@doist/todoist-api-typescript';
2
- import { getApi } from './core.js';
3
- function parseNotification(n) {
4
- // The SDK type uses passthrough() so extra fields are preserved
5
- const raw = n;
6
- let fromUser;
7
- if (n.fromUid) {
8
- const fromUserData = raw.from_user;
9
- fromUser = {
10
- id: String(n.fromUid),
11
- name: String(fromUserData?.full_name ?? fromUserData?.name ?? ''),
12
- email: String(fromUserData?.email ?? ''),
13
- };
14
- }
15
- let project;
16
- if (n.projectId) {
17
- project = {
18
- id: String(n.projectId),
19
- name: String(raw.project_name ?? ''),
20
- };
21
- }
22
- let task;
23
- if (n.itemId) {
24
- task = {
25
- id: String(n.itemId),
26
- content: String(n.itemContent ?? ''),
27
- };
28
- }
29
- return {
30
- id: String(n.id),
31
- type: n.notificationType,
32
- isUnread: n.isUnread,
33
- isDeleted: Boolean(raw.is_deleted ?? false),
34
- createdAt: n.createdAt,
35
- fromUser,
36
- project,
37
- task,
38
- invitationId: n.invitationId ? String(n.invitationId) : undefined,
39
- invitationSecret: raw.invitation_secret ? String(raw.invitation_secret) : undefined,
40
- };
41
- }
42
- export async function fetchNotifications() {
43
- const api = await getApi();
44
- const response = await api.sync({
45
- resourceTypes: ['live_notifications'],
46
- syncToken: '*',
47
- });
48
- const notifications = (response.liveNotifications ?? [])
49
- .map(parseNotification)
50
- .filter((n) => !n.isDeleted);
51
- notifications.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
52
- return notifications;
53
- }
54
- export async function markNotificationRead(id) {
55
- const api = await getApi();
56
- await api.sync({
57
- commands: [createCommand('live_notifications_mark_read', { ids: [id] })],
58
- });
59
- }
60
- export async function markNotificationUnread(id) {
61
- const api = await getApi();
62
- await api.sync({
63
- commands: [createCommand('live_notifications_mark_unread', { ids: [id] })],
64
- });
65
- }
66
- export async function markAllNotificationsRead() {
67
- const api = await getApi();
68
- await api.sync({
69
- commands: [createCommand('live_notifications_mark_read_all', {})],
70
- });
71
- }
72
- export async function acceptInvitation(invitationId, secret) {
73
- const api = await getApi();
74
- await api.sync({
75
- commands: [
76
- createCommand('accept_invitation', {
77
- invitationId,
78
- invitationSecret: secret,
79
- }),
80
- ],
81
- });
82
- }
83
- export async function rejectInvitation(invitationId, secret) {
84
- const api = await getApi();
85
- await api.sync({
86
- commands: [
87
- createCommand('reject_invitation', {
88
- invitationId,
89
- invitationSecret: secret,
90
- }),
91
- ],
92
- });
93
- }
94
- //# sourceMappingURL=notifications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/lib/api/notifications.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- export interface ReminderDue {
2
- date: string;
3
- timezone?: string;
4
- isRecurring?: boolean;
5
- string?: string;
6
- lang?: string;
7
- }
8
- export interface Reminder {
9
- id: string;
10
- itemId: string;
11
- type: 'absolute' | 'relative' | 'location';
12
- due?: ReminderDue;
13
- minuteOffset?: number;
14
- isDeleted: boolean;
15
- }
16
- export declare function fetchReminders(): Promise<Reminder[]>;
17
- export declare function getTaskReminders(taskId: string): Promise<Reminder[]>;
18
- export interface AddReminderArgs {
19
- itemId: string;
20
- minuteOffset?: number;
21
- due?: ReminderDue;
22
- }
23
- export declare function addReminder(args: AddReminderArgs): Promise<string>;
24
- export interface UpdateReminderArgs {
25
- minuteOffset?: number;
26
- due?: ReminderDue;
27
- }
28
- export declare function updateReminder(id: string, args: UpdateReminderArgs): Promise<void>;
29
- export declare function deleteReminder(id: string): Promise<void>;
30
- //# sourceMappingURL=reminders.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reminders.d.ts","sourceRoot":"","sources":["../../../src/lib/api/reminders.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;IAC1C,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;CACrB;AAcD,wBAAsB,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAO1D;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAG1E;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,WAAW,CAAA;CACpB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBxE;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,WAAW,CAAA;CACpB;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAexF;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9D"}
@@ -1,65 +0,0 @@
1
- import { createCommand } from '@doist/todoist-api-typescript';
2
- import { getApi, pickDefined } from './core.js';
3
- function toReminder(r) {
4
- return {
5
- id: r.id,
6
- itemId: r.itemId,
7
- type: r.type,
8
- due: 'due' in r && r.due ? r.due : undefined,
9
- minuteOffset: 'minuteOffset' in r ? r.minuteOffset : undefined,
10
- isDeleted: r.isDeleted,
11
- };
12
- }
13
- export async function fetchReminders() {
14
- const api = await getApi();
15
- const response = await api.sync({
16
- resourceTypes: ['reminders'],
17
- syncToken: '*',
18
- });
19
- return (response.reminders ?? []).map(toReminder).filter((r) => !r.isDeleted);
20
- }
21
- export async function getTaskReminders(taskId) {
22
- const reminders = await fetchReminders();
23
- return reminders.filter((r) => r.itemId === taskId);
24
- }
25
- export async function addReminder(args) {
26
- const api = await getApi();
27
- const tempId = crypto.randomUUID();
28
- const type = args.minuteOffset !== undefined ? 'relative' : 'absolute';
29
- const response = await api.sync({
30
- commands: [
31
- createCommand('reminder_add', {
32
- type,
33
- itemId: args.itemId,
34
- ...pickDefined({
35
- minuteOffset: args.minuteOffset,
36
- due: args.due,
37
- }),
38
- }, tempId),
39
- ],
40
- });
41
- return response.tempIdMapping?.[tempId] ?? tempId;
42
- }
43
- export async function updateReminder(id, args) {
44
- const api = await getApi();
45
- const type = args.minuteOffset !== undefined ? 'relative' : 'absolute';
46
- await api.sync({
47
- commands: [
48
- createCommand('reminder_update', {
49
- id,
50
- type,
51
- ...pickDefined({
52
- minuteOffset: args.minuteOffset,
53
- due: args.due,
54
- }),
55
- }),
56
- ],
57
- });
58
- }
59
- export async function deleteReminder(id) {
60
- const api = await getApi();
61
- await api.sync({
62
- commands: [createCommand('reminder_delete', { id })],
63
- });
64
- }
65
- //# sourceMappingURL=reminders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reminders.js","sourceRoot":"","sources":["../../../src/lib/api/reminders.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- export interface Streak {
2
- count: number;
3
- start: string;
4
- end: string;
5
- }
6
- export interface ProductivityStats {
7
- karma: number;
8
- karmaTrend: string;
9
- karmaLastUpdate: number;
10
- completedCount: number;
11
- daysItems: Array<{
12
- date: string;
13
- totalCompleted: number;
14
- }>;
15
- weekItems: Array<{
16
- from: string;
17
- to: string;
18
- totalCompleted: number;
19
- }>;
20
- goals: {
21
- dailyGoal: number;
22
- weeklyGoal: number;
23
- currentDailyStreak: Streak;
24
- currentWeeklyStreak: Streak;
25
- maxDailyStreak: Streak;
26
- maxWeeklyStreak: Streak;
27
- vacationMode: boolean;
28
- karmaDisabled: boolean;
29
- ignoreDays: number[];
30
- };
31
- }
32
- export declare function fetchProductivityStats(): Promise<ProductivityStats>;
33
- export interface UpdateGoalsArgs {
34
- dailyGoal?: number;
35
- weeklyGoal?: number;
36
- vacationMode?: boolean;
37
- karmaDisabled?: boolean;
38
- ignoreDays?: number[];
39
- }
40
- export declare function updateGoals(args: UpdateGoalsArgs): Promise<void>;
41
- //# sourceMappingURL=stats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/lib/api/stats.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC1D,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,KAAK,EAAE;QACH,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,mBAAmB,EAAE,MAAM,CAAA;QAC3B,cAAc,EAAE,MAAM,CAAA;QACtB,eAAe,EAAE,MAAM,CAAA;QACvB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,OAAO,CAAA;QACtB,UAAU,EAAE,MAAM,EAAE,CAAA;KACvB,CAAA;CACJ;AAcD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA+CzE;AAED,MAAM,WAAW,eAAe;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtE"}
@@ -1,74 +0,0 @@
1
- import { createCommand } from '@doist/todoist-api-typescript';
2
- import { getApiToken } from '../auth.js';
3
- import { getApi, pickDefined } from './core.js';
4
- const defaultStreak = { count: 0, start: '', end: '' };
5
- function parseStreak(s) {
6
- if (!s || typeof s !== 'object')
7
- return defaultStreak;
8
- const obj = s;
9
- return {
10
- count: Number(obj.count ?? 0),
11
- start: String(obj.start ?? ''),
12
- end: String(obj.end ?? ''),
13
- };
14
- }
15
- export async function fetchProductivityStats() {
16
- const token = await getApiToken();
17
- const response = await fetch('https://api.todoist.com/api/v1/tasks/completed/stats', {
18
- method: 'GET',
19
- headers: {
20
- Authorization: `Bearer ${token}`,
21
- },
22
- });
23
- if (!response.ok) {
24
- throw new Error(`Failed to fetch productivity stats: ${response.status}`);
25
- }
26
- const data = await response.json();
27
- if (data.error) {
28
- throw new Error(`Productivity stats API error: ${data.error}`);
29
- }
30
- const goals = data.goals ?? {};
31
- return {
32
- karma: Number(data.karma ?? 0),
33
- karmaTrend: String(data.karma_trend ?? 'none'),
34
- karmaLastUpdate: Number(data.karma_last_update ?? 0),
35
- completedCount: Number(data.completed_count ?? 0),
36
- daysItems: (data.days_items ?? []).map((d) => ({
37
- date: d.date,
38
- totalCompleted: d.total_completed,
39
- })),
40
- weekItems: (data.week_items ?? []).map((w) => ({
41
- from: w.from,
42
- to: w.to,
43
- totalCompleted: w.total_completed,
44
- })),
45
- goals: {
46
- dailyGoal: Number(goals.daily_goal ?? 0),
47
- weeklyGoal: Number(goals.weekly_goal ?? 0),
48
- currentDailyStreak: parseStreak(goals.current_daily_streak),
49
- currentWeeklyStreak: parseStreak(goals.current_weekly_streak),
50
- maxDailyStreak: parseStreak(goals.max_daily_streak),
51
- maxWeeklyStreak: parseStreak(goals.max_weekly_streak),
52
- vacationMode: Boolean(goals.vacation_mode),
53
- karmaDisabled: Boolean(goals.karma_disabled),
54
- ignoreDays: (goals.ignore_days ?? []),
55
- },
56
- };
57
- }
58
- export async function updateGoals(args) {
59
- const goalsArgs = pickDefined({
60
- dailyGoal: args.dailyGoal,
61
- weeklyGoal: args.weeklyGoal,
62
- vacationMode: args.vacationMode,
63
- karmaDisabled: args.karmaDisabled,
64
- ignoreDays: args.ignoreDays,
65
- });
66
- if (Object.keys(goalsArgs).length === 0) {
67
- throw new Error('No goals to update');
68
- }
69
- const api = await getApi();
70
- await api.sync({
71
- commands: [createCommand('update_goals', goalsArgs)],
72
- });
73
- }
74
- //# sourceMappingURL=stats.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/lib/api/stats.ts"],"names":[],"mappings":"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"}