@doist/todoist-cli 1.29.3 → 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.
- package/CHANGELOG.md +6 -0
- package/package.json +8 -3
- package/dist/__mocks__/chalk.d.ts +0 -3
- package/dist/__mocks__/chalk.d.ts.map +0 -1
- package/dist/__mocks__/chalk.js +0 -8
- package/dist/__mocks__/chalk.js.map +0 -1
- package/dist/commands/activity.d.ts +0 -3
- package/dist/commands/activity.d.ts.map +0 -1
- package/dist/commands/activity.js +0 -267
- package/dist/commands/activity.js.map +0 -1
- package/dist/commands/add.d.ts +0 -3
- package/dist/commands/add.d.ts.map +0 -1
- package/dist/commands/add.js +0 -36
- package/dist/commands/add.js.map +0 -1
- package/dist/commands/attachment.d.ts +0 -3
- package/dist/commands/attachment.d.ts.map +0 -1
- package/dist/commands/attachment.js +0 -156
- package/dist/commands/attachment.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -3
- package/dist/commands/auth.d.ts.map +0 -1
- package/dist/commands/auth.js +0 -124
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/changelog.d.ts +0 -8
- package/dist/commands/changelog.d.ts.map +0 -1
- package/dist/commands/changelog.js +0 -92
- package/dist/commands/changelog.js.map +0 -1
- package/dist/commands/comment.d.ts +0 -3
- package/dist/commands/comment.d.ts.map +0 -1
- package/dist/commands/comment.js +0 -301
- package/dist/commands/comment.js.map +0 -1
- package/dist/commands/completed.d.ts +0 -3
- package/dist/commands/completed.d.ts.map +0 -1
- package/dist/commands/completed.js +0 -107
- package/dist/commands/completed.js.map +0 -1
- package/dist/commands/completion.d.ts +0 -3
- package/dist/commands/completion.d.ts.map +0 -1
- package/dist/commands/completion.js +0 -107
- package/dist/commands/completion.js.map +0 -1
- package/dist/commands/filter.d.ts +0 -5
- package/dist/commands/filter.d.ts.map +0 -1
- package/dist/commands/filter.js +0 -287
- package/dist/commands/filter.js.map +0 -1
- package/dist/commands/inbox.d.ts +0 -3
- package/dist/commands/inbox.d.ts.map +0 -1
- package/dist/commands/inbox.js +0 -25
- package/dist/commands/inbox.js.map +0 -1
- package/dist/commands/label.d.ts +0 -5
- package/dist/commands/label.d.ts.map +0 -1
- package/dist/commands/label.js +0 -328
- package/dist/commands/label.js.map +0 -1
- package/dist/commands/notification.d.ts +0 -3
- package/dist/commands/notification.d.ts.map +0 -1
- package/dist/commands/notification.js +0 -274
- package/dist/commands/notification.js.map +0 -1
- package/dist/commands/project.d.ts +0 -5
- package/dist/commands/project.d.ts.map +0 -1
- package/dist/commands/project.js +0 -528
- package/dist/commands/project.js.map +0 -1
- package/dist/commands/reminder.d.ts +0 -3
- package/dist/commands/reminder.d.ts.map +0 -1
- package/dist/commands/reminder.js +0 -271
- package/dist/commands/reminder.js.map +0 -1
- package/dist/commands/section.d.ts +0 -3
- package/dist/commands/section.d.ts.map +0 -1
- package/dist/commands/section.js +0 -172
- package/dist/commands/section.js.map +0 -1
- package/dist/commands/settings.d.ts +0 -12
- package/dist/commands/settings.d.ts.map +0 -1
- package/dist/commands/settings.js +0 -312
- package/dist/commands/settings.js.map +0 -1
- package/dist/commands/skill.d.ts +0 -3
- package/dist/commands/skill.d.ts.map +0 -1
- package/dist/commands/skill.js +0 -127
- package/dist/commands/skill.js.map +0 -1
- package/dist/commands/stats.d.ts +0 -3
- package/dist/commands/stats.d.ts.map +0 -1
- package/dist/commands/stats.js +0 -151
- package/dist/commands/stats.js.map +0 -1
- package/dist/commands/task.d.ts +0 -5
- package/dist/commands/task.d.ts.map +0 -1
- package/dist/commands/task.js +0 -559
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/today.d.ts +0 -18
- package/dist/commands/today.d.ts.map +0 -1
- package/dist/commands/today.js +0 -108
- package/dist/commands/today.js.map +0 -1
- package/dist/commands/upcoming.d.ts +0 -17
- package/dist/commands/upcoming.d.ts.map +0 -1
- package/dist/commands/upcoming.js +0 -129
- package/dist/commands/upcoming.js.map +0 -1
- package/dist/commands/update.d.ts +0 -6
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -90
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/view.d.ts +0 -3
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js +0 -79
- package/dist/commands/view.js.map +0 -1
- package/dist/commands/workspace.d.ts +0 -3
- package/dist/commands/workspace.d.ts.map +0 -1
- package/dist/commands/workspace.js +0 -309
- package/dist/commands/workspace.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -176
- package/dist/index.js.map +0 -1
- package/dist/lib/api/core.d.ts +0 -13
- package/dist/lib/api/core.d.ts.map +0 -1
- package/dist/lib/api/core.js +0 -170
- package/dist/lib/api/core.js.map +0 -1
- package/dist/lib/api/filters.d.ts +0 -19
- package/dist/lib/api/filters.d.ts.map +0 -1
- package/dist/lib/api/filters.js +0 -60
- package/dist/lib/api/filters.js.map +0 -1
- package/dist/lib/api/notifications.d.ts +0 -33
- package/dist/lib/api/notifications.d.ts.map +0 -1
- package/dist/lib/api/notifications.js +0 -94
- package/dist/lib/api/notifications.js.map +0 -1
- package/dist/lib/api/reminders.d.ts +0 -30
- package/dist/lib/api/reminders.d.ts.map +0 -1
- package/dist/lib/api/reminders.js +0 -65
- package/dist/lib/api/reminders.js.map +0 -1
- package/dist/lib/api/stats.d.ts +0 -41
- package/dist/lib/api/stats.d.ts.map +0 -1
- package/dist/lib/api/stats.js +0 -74
- package/dist/lib/api/stats.js.map +0 -1
- package/dist/lib/api/uploads.d.ts +0 -10
- package/dist/lib/api/uploads.d.ts.map +0 -1
- package/dist/lib/api/uploads.js +0 -31
- package/dist/lib/api/uploads.js.map +0 -1
- package/dist/lib/api/user-settings.d.ts +0 -34
- package/dist/lib/api/user-settings.d.ts.map +0 -1
- package/dist/lib/api/user-settings.js +0 -58
- package/dist/lib/api/user-settings.js.map +0 -1
- package/dist/lib/api/workspaces.d.ts +0 -23
- package/dist/lib/api/workspaces.d.ts.map +0 -1
- package/dist/lib/api/workspaces.js +0 -61
- package/dist/lib/api/workspaces.js.map +0 -1
- package/dist/lib/auth.d.ts +0 -14
- package/dist/lib/auth.d.ts.map +0 -1
- package/dist/lib/auth.js +0 -182
- package/dist/lib/auth.js.map +0 -1
- package/dist/lib/browser.d.ts +0 -2
- package/dist/lib/browser.d.ts.map +0 -1
- package/dist/lib/browser.js +0 -6
- package/dist/lib/browser.js.map +0 -1
- package/dist/lib/collaborators.d.ts +0 -29
- package/dist/lib/collaborators.d.ts.map +0 -1
- package/dist/lib/collaborators.js +0 -184
- package/dist/lib/collaborators.js.map +0 -1
- package/dist/lib/completion.d.ts +0 -41
- package/dist/lib/completion.d.ts.map +0 -1
- package/dist/lib/completion.js +0 -191
- package/dist/lib/completion.js.map +0 -1
- package/dist/lib/dates.d.ts +0 -16
- package/dist/lib/dates.d.ts.map +0 -1
- package/dist/lib/dates.js +0 -45
- package/dist/lib/dates.js.map +0 -1
- package/dist/lib/duration.d.ts +0 -14
- package/dist/lib/duration.d.ts.map +0 -1
- package/dist/lib/duration.js +0 -58
- package/dist/lib/duration.js.map +0 -1
- package/dist/lib/logger.d.ts +0 -42
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/logger.js +0 -227
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/markdown.d.ts +0 -3
- package/dist/lib/markdown.d.ts.map +0 -1
- package/dist/lib/markdown.js +0 -22
- package/dist/lib/markdown.js.map +0 -1
- package/dist/lib/oauth-server.d.ts +0 -6
- package/dist/lib/oauth-server.d.ts.map +0 -1
- package/dist/lib/oauth-server.js +0 -773
- package/dist/lib/oauth-server.js.map +0 -1
- package/dist/lib/oauth.d.ts +0 -3
- package/dist/lib/oauth.d.ts.map +0 -1
- package/dist/lib/oauth.js +0 -38
- package/dist/lib/oauth.js.map +0 -1
- package/dist/lib/options.d.ts +0 -16
- package/dist/lib/options.d.ts.map +0 -1
- package/dist/lib/options.js +0 -2
- package/dist/lib/options.js.map +0 -1
- package/dist/lib/output.d.ts +0 -39
- package/dist/lib/output.d.ts.map +0 -1
- package/dist/lib/output.js +0 -311
- package/dist/lib/output.js.map +0 -1
- package/dist/lib/pagination.d.ts +0 -23
- package/dist/lib/pagination.d.ts.map +0 -1
- package/dist/lib/pagination.js +0 -26
- package/dist/lib/pagination.js.map +0 -1
- package/dist/lib/pkce.d.ts +0 -4
- package/dist/lib/pkce.d.ts.map +0 -1
- package/dist/lib/pkce.js +0 -19
- package/dist/lib/pkce.js.map +0 -1
- package/dist/lib/progress.d.ts +0 -29
- package/dist/lib/progress.d.ts.map +0 -1
- package/dist/lib/progress.js +0 -101
- package/dist/lib/progress.js.map +0 -1
- package/dist/lib/refs.d.ts +0 -52
- package/dist/lib/refs.d.ts.map +0 -1
- package/dist/lib/refs.js +0 -225
- package/dist/lib/refs.js.map +0 -1
- package/dist/lib/secure-store.d.ts +0 -11
- package/dist/lib/secure-store.d.ts.map +0 -1
- package/dist/lib/secure-store.js +0 -57
- package/dist/lib/secure-store.js.map +0 -1
- package/dist/lib/skills/content.d.ts +0 -4
- package/dist/lib/skills/content.d.ts.map +0 -1
- package/dist/lib/skills/content.js +0 -418
- package/dist/lib/skills/content.js.map +0 -1
- package/dist/lib/skills/create-installer.d.ts +0 -10
- package/dist/lib/skills/create-installer.d.ts.map +0 -1
- package/dist/lib/skills/create-installer.js +0 -77
- package/dist/lib/skills/create-installer.js.map +0 -1
- package/dist/lib/skills/index.d.ts +0 -6
- package/dist/lib/skills/index.d.ts.map +0 -1
- package/dist/lib/skills/index.js +0 -40
- package/dist/lib/skills/index.js.map +0 -1
- package/dist/lib/skills/types.d.ts +0 -11
- package/dist/lib/skills/types.d.ts.map +0 -1
- package/dist/lib/skills/types.js +0 -2
- package/dist/lib/skills/types.js.map +0 -1
- package/dist/lib/skills/update-installed.d.ts +0 -7
- package/dist/lib/skills/update-installed.d.ts.map +0 -1
- package/dist/lib/skills/update-installed.js +0 -23
- package/dist/lib/skills/update-installed.js.map +0 -1
- package/dist/lib/spinner.d.ts +0 -23
- package/dist/lib/spinner.d.ts.map +0 -1
- package/dist/lib/spinner.js +0 -138
- package/dist/lib/spinner.js.map +0 -1
- package/dist/lib/stdin.d.ts +0 -2
- package/dist/lib/stdin.d.ts.map +0 -1
- package/dist/lib/stdin.js +0 -12
- package/dist/lib/stdin.js.map +0 -1
- package/dist/lib/task-list.d.ts +0 -31
- package/dist/lib/task-list.d.ts.map +0 -1
- package/dist/lib/task-list.js +0 -271
- package/dist/lib/task-list.js.map +0 -1
- package/dist/lib/urls.d.ts +0 -8
- package/dist/lib/urls.d.ts.map +0 -1
- package/dist/lib/urls.js +0 -26
- package/dist/lib/urls.js.map +0 -1
- package/dist/postinstall.d.ts +0 -2
- package/dist/postinstall.d.ts.map +0 -1
- package/dist/postinstall.js +0 -3
- package/dist/postinstall.js.map +0 -1
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface UploadResult {
|
|
2
|
-
fileName: string;
|
|
3
|
-
fileSize: number;
|
|
4
|
-
fileType: string;
|
|
5
|
-
fileUrl: string;
|
|
6
|
-
resourceType: string;
|
|
7
|
-
uploadState: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function uploadFile(filePath: string): Promise<UploadResult>;
|
|
10
|
-
//# sourceMappingURL=uploads.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../../src/lib/api/uploads.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACtB;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiCxE"}
|
package/dist/lib/api/uploads.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { getApiToken } from '../auth.js';
|
|
2
|
-
export async function uploadFile(filePath) {
|
|
3
|
-
const fs = await import('node:fs');
|
|
4
|
-
const path = await import('node:path');
|
|
5
|
-
const token = await getApiToken();
|
|
6
|
-
const fileName = path.basename(filePath);
|
|
7
|
-
const fileBuffer = fs.readFileSync(filePath);
|
|
8
|
-
const formData = new FormData();
|
|
9
|
-
formData.append('file_name', fileName);
|
|
10
|
-
formData.append('file', new Blob([fileBuffer]), fileName);
|
|
11
|
-
const response = await fetch('https://api.todoist.com/api/v1/uploads', {
|
|
12
|
-
method: 'POST',
|
|
13
|
-
headers: {
|
|
14
|
-
Authorization: `Bearer ${token}`,
|
|
15
|
-
},
|
|
16
|
-
body: formData,
|
|
17
|
-
});
|
|
18
|
-
if (!response.ok) {
|
|
19
|
-
throw new Error(`Upload failed: ${response.status} ${response.statusText}`);
|
|
20
|
-
}
|
|
21
|
-
const data = await response.json();
|
|
22
|
-
return {
|
|
23
|
-
fileName: data.file_name,
|
|
24
|
-
fileSize: data.file_size,
|
|
25
|
-
fileType: data.file_type,
|
|
26
|
-
fileUrl: data.file_url,
|
|
27
|
-
resourceType: data.resource_type,
|
|
28
|
-
uploadState: data.upload_state,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=uploads.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../../src/lib/api/uploads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAWxC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC7C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;IAEtC,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAA;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAE5C,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IACtC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAEzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wCAAwC,EAAE;QACnE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,KAAK,EAAE;SACnC;QACD,IAAI,EAAE,QAAQ;KACjB,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,OAAO;QACH,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;QACtB,YAAY,EAAE,IAAI,CAAC,aAAa;QAChC,WAAW,EAAE,IAAI,CAAC,YAAY;KACjC,CAAA;AACL,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type DateFormat, type DayOfWeek, type TimeFormat } from '@doist/todoist-api-typescript';
|
|
2
|
-
export interface UserSettings {
|
|
3
|
-
timezone: string;
|
|
4
|
-
timeFormat: TimeFormat;
|
|
5
|
-
dateFormat: DateFormat;
|
|
6
|
-
startDay: DayOfWeek;
|
|
7
|
-
theme: number;
|
|
8
|
-
autoReminder: number;
|
|
9
|
-
nextWeek: DayOfWeek;
|
|
10
|
-
startPage: string;
|
|
11
|
-
reminderPush: boolean;
|
|
12
|
-
reminderDesktop: boolean;
|
|
13
|
-
reminderEmail: boolean;
|
|
14
|
-
completedSoundDesktop: boolean;
|
|
15
|
-
completedSoundMobile: boolean;
|
|
16
|
-
}
|
|
17
|
-
export declare function fetchUserSettings(): Promise<UserSettings>;
|
|
18
|
-
export interface UpdateUserSettingsArgs {
|
|
19
|
-
timezone?: string;
|
|
20
|
-
timeFormat?: TimeFormat;
|
|
21
|
-
dateFormat?: DateFormat;
|
|
22
|
-
startDay?: DayOfWeek;
|
|
23
|
-
theme?: number;
|
|
24
|
-
autoReminder?: number;
|
|
25
|
-
nextWeek?: DayOfWeek;
|
|
26
|
-
startPage?: string;
|
|
27
|
-
reminderPush?: boolean;
|
|
28
|
-
reminderDesktop?: boolean;
|
|
29
|
-
reminderEmail?: boolean;
|
|
30
|
-
completedSoundDesktop?: boolean;
|
|
31
|
-
completedSoundMobile?: boolean;
|
|
32
|
-
}
|
|
33
|
-
export declare function updateUserSettings(args: UpdateUserSettingsArgs): Promise<void>;
|
|
34
|
-
//# sourceMappingURL=user-settings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings.d.ts","sourceRoot":"","sources":["../../../src/lib/api/user-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EAIlB,MAAM,+BAA+B,CAAA;AAGtC,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;IACnB,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,UAAU,CAAA;IACvB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,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,CAsCpF"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { createCommand, DATE_FORMAT_TO_API, DAY_OF_WEEK_TO_API, TIME_FORMAT_TO_API, } from '@doist/todoist-api-typescript';
|
|
2
|
-
import { getApi, pickDefined } from './core.js';
|
|
3
|
-
export async function fetchUserSettings() {
|
|
4
|
-
const api = await getApi();
|
|
5
|
-
const response = await api.sync({
|
|
6
|
-
resourceTypes: ['user', 'user_settings'],
|
|
7
|
-
syncToken: '*',
|
|
8
|
-
});
|
|
9
|
-
const user = response.user;
|
|
10
|
-
const settings = response.userSettings;
|
|
11
|
-
return {
|
|
12
|
-
timezone: user?.tzInfo?.timezone ?? 'UTC',
|
|
13
|
-
timeFormat: user?.timeFormat ?? '24h',
|
|
14
|
-
dateFormat: user?.dateFormat ?? 'DD/MM/YYYY',
|
|
15
|
-
startDay: user?.startDay ?? 'Monday',
|
|
16
|
-
theme: Number(user?.themeId ?? 0),
|
|
17
|
-
autoReminder: user?.autoReminder ?? 0,
|
|
18
|
-
nextWeek: user?.nextWeek ?? 'Monday',
|
|
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,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
export async function updateUserSettings(args) {
|
|
28
|
-
const commands = [];
|
|
29
|
-
const userArgs = pickDefined({
|
|
30
|
-
timezone: args.timezone,
|
|
31
|
-
time_format: args.timeFormat !== undefined ? TIME_FORMAT_TO_API[args.timeFormat] : undefined,
|
|
32
|
-
date_format: args.dateFormat !== undefined ? DATE_FORMAT_TO_API[args.dateFormat] : undefined,
|
|
33
|
-
start_day: args.startDay !== undefined ? DAY_OF_WEEK_TO_API[args.startDay] : undefined,
|
|
34
|
-
theme_id: args.theme !== undefined ? String(args.theme) : undefined,
|
|
35
|
-
auto_reminder: args.autoReminder,
|
|
36
|
-
next_week: args.nextWeek !== undefined ? DAY_OF_WEEK_TO_API[args.nextWeek] : undefined,
|
|
37
|
-
start_page: args.startPage,
|
|
38
|
-
});
|
|
39
|
-
if (Object.keys(userArgs).length > 0) {
|
|
40
|
-
commands.push(createCommand('user_update', userArgs));
|
|
41
|
-
}
|
|
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
|
-
});
|
|
49
|
-
if (Object.keys(settingsArgs).length > 0) {
|
|
50
|
-
commands.push(createCommand('user_settings_update', settingsArgs));
|
|
51
|
-
}
|
|
52
|
-
if (commands.length === 0) {
|
|
53
|
-
throw new Error('No settings to update');
|
|
54
|
-
}
|
|
55
|
-
const api = await getApi();
|
|
56
|
-
await api.sync({ commands });
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=user-settings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings.js","sourceRoot":"","sources":["../../../src/lib/api/user-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface Workspace {
|
|
2
|
-
id: string;
|
|
3
|
-
name: string;
|
|
4
|
-
role: 'ADMIN' | 'MEMBER' | 'GUEST';
|
|
5
|
-
plan: string;
|
|
6
|
-
domainName: string | null;
|
|
7
|
-
currentMemberCount: number;
|
|
8
|
-
currentActiveProjects: number;
|
|
9
|
-
memberCountByType: {
|
|
10
|
-
adminCount: number;
|
|
11
|
-
memberCount: number;
|
|
12
|
-
guestCount: number;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
export interface WorkspaceFolder {
|
|
16
|
-
id: string;
|
|
17
|
-
name: string;
|
|
18
|
-
workspaceId: string;
|
|
19
|
-
}
|
|
20
|
-
export declare function fetchWorkspaces(): Promise<Workspace[]>;
|
|
21
|
-
export declare function fetchWorkspaceFolders(): Promise<WorkspaceFolder[]>;
|
|
22
|
-
export declare function clearWorkspaceCache(): void;
|
|
23
|
-
//# sourceMappingURL=workspaces.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,61 +0,0 @@
|
|
|
1
|
-
import { getApi } from './core.js';
|
|
2
|
-
let workspaceCache = null;
|
|
3
|
-
let folderCache = null;
|
|
4
|
-
function toWorkspace(w) {
|
|
5
|
-
const raw = w;
|
|
6
|
-
const memberCounts = raw.member_count_by_type;
|
|
7
|
-
return {
|
|
8
|
-
id: String(w.id),
|
|
9
|
-
name: w.name,
|
|
10
|
-
role: w.role,
|
|
11
|
-
plan: w.plan,
|
|
12
|
-
domainName: w.domainName ?? null,
|
|
13
|
-
currentMemberCount: w.currentMemberCount ?? 0,
|
|
14
|
-
currentActiveProjects: w.currentActiveProjects ?? 0,
|
|
15
|
-
memberCountByType: {
|
|
16
|
-
adminCount: memberCounts?.admin_count ?? 0,
|
|
17
|
-
memberCount: memberCounts?.member_count ?? 0,
|
|
18
|
-
guestCount: memberCounts?.guest_count ?? 0,
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
function toFolder(f) {
|
|
23
|
-
return {
|
|
24
|
-
id: String(f.id),
|
|
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);
|
|
40
|
-
workspaceCache = workspaces;
|
|
41
|
-
folderCache = folders;
|
|
42
|
-
return { workspaces, folders };
|
|
43
|
-
}
|
|
44
|
-
export async function fetchWorkspaces() {
|
|
45
|
-
const { workspaces } = await fetchWorkspaceData();
|
|
46
|
-
return workspaces;
|
|
47
|
-
}
|
|
48
|
-
export async function fetchWorkspaceFolders() {
|
|
49
|
-
try {
|
|
50
|
-
const { folders } = await fetchWorkspaceData();
|
|
51
|
-
return folders;
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
return [];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export function clearWorkspaceCache() {
|
|
58
|
-
workspaceCache = null;
|
|
59
|
-
folderCache = null;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=workspaces.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/lib/auth.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare const CONFIG_PATH: string;
|
|
2
|
-
export declare const TOKEN_ENV_VAR = "TODOIST_API_TOKEN";
|
|
3
|
-
export declare class NoTokenError extends Error {
|
|
4
|
-
constructor();
|
|
5
|
-
}
|
|
6
|
-
export type TokenStorageLocation = 'secure-store' | 'config-file';
|
|
7
|
-
export interface TokenStorageResult {
|
|
8
|
-
storage: TokenStorageLocation;
|
|
9
|
-
warning?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare function getApiToken(): Promise<string>;
|
|
12
|
-
export declare function saveApiToken(token: string): Promise<TokenStorageResult>;
|
|
13
|
-
export declare function clearApiToken(): Promise<TokenStorageResult>;
|
|
14
|
-
//# sourceMappingURL=auth.d.ts.map
|
package/dist/lib/auth.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,qBAAa,YAAa,SAAQ,KAAK;;CAOtC;AAED,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,CAmEnD;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
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { dirname, join } from 'node:path';
|
|
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';
|
|
7
|
-
export class NoTokenError extends Error {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(`No API token found. Set ${TOKEN_ENV_VAR} or run \`td auth login\` or \`td auth token <token>\`.`);
|
|
10
|
-
this.name = 'NoTokenError';
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export async function getApiToken() {
|
|
14
|
-
// Priority 1: Environment variable
|
|
15
|
-
const envToken = process.env[TOKEN_ENV_VAR];
|
|
16
|
-
if (envToken) {
|
|
17
|
-
return envToken;
|
|
18
|
-
}
|
|
19
|
-
const config = await readConfig();
|
|
20
|
-
const configToken = getConfigToken(config);
|
|
21
|
-
const secureStore = createSecureStore();
|
|
22
|
-
if (configToken) {
|
|
23
|
-
try {
|
|
24
|
-
await secureStore.setSecret(configToken);
|
|
25
|
-
const cleanupWarning = await cleanupAuthFallbackState(config, 'Token was migrated to secure storage,');
|
|
26
|
-
if (cleanupWarning) {
|
|
27
|
-
warn(cleanupWarning);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
if (error instanceof SecureStoreUnavailableError) {
|
|
32
|
-
warnSecureStoreFallback('using plaintext token from');
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
throw error;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return configToken;
|
|
39
|
-
}
|
|
40
|
-
if (config.pendingSecureStoreClear) {
|
|
41
|
-
try {
|
|
42
|
-
await secureStore.deleteSecret();
|
|
43
|
-
const cleanupWarning = await cleanupAuthFallbackState(config, 'Secure-store token was removed,');
|
|
44
|
-
if (cleanupWarning) {
|
|
45
|
-
warn(cleanupWarning);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
if (!(error instanceof SecureStoreUnavailableError)) {
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
throw new NoTokenError();
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
const storedToken = await secureStore.getSecret();
|
|
57
|
-
if (storedToken?.trim()) {
|
|
58
|
-
return storedToken;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
if (error instanceof SecureStoreUnavailableError) {
|
|
63
|
-
warnSecureStoreFallback('using plaintext token from');
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
throw error;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
throw new Error(`No API token found. Set ${TOKEN_ENV_VAR} or run \`td auth login\` or \`td auth token <token>\`.`);
|
|
70
|
-
}
|
|
71
|
-
export async function saveApiToken(token) {
|
|
72
|
-
// Validate token (non-empty, reasonable length)
|
|
73
|
-
if (!token || token.trim().length < 10) {
|
|
74
|
-
throw new Error('Invalid token: Token must be at least 10 characters');
|
|
75
|
-
}
|
|
76
|
-
const trimmedToken = token.trim();
|
|
77
|
-
const secureStore = createSecureStore();
|
|
78
|
-
try {
|
|
79
|
-
await secureStore.setSecret(trimmedToken);
|
|
80
|
-
const existingConfig = await readConfig();
|
|
81
|
-
const warning = await cleanupAuthFallbackState(existingConfig, 'Token was stored securely,');
|
|
82
|
-
return warning ? { storage: 'secure-store', warning } : { storage: 'secure-store' };
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
if (!(error instanceof SecureStoreUnavailableError)) {
|
|
86
|
-
throw error;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const config = await readConfig();
|
|
90
|
-
config.api_token = trimmedToken;
|
|
91
|
-
delete config.pendingSecureStoreClear;
|
|
92
|
-
await writeConfig(config);
|
|
93
|
-
return {
|
|
94
|
-
storage: 'config-file',
|
|
95
|
-
warning: buildFallbackWarning('token saved as plaintext in'),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
export async function clearApiToken() {
|
|
99
|
-
const config = await readConfig();
|
|
100
|
-
const secureStore = createSecureStore();
|
|
101
|
-
try {
|
|
102
|
-
await secureStore.deleteSecret();
|
|
103
|
-
const warning = await cleanupAuthFallbackState(config, 'Secure-store token was removed,');
|
|
104
|
-
return warning ? { storage: 'secure-store', warning } : { storage: 'secure-store' };
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
if (!(error instanceof SecureStoreUnavailableError)) {
|
|
108
|
-
throw error;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
await writeConfig(withPendingSecureStoreClear(config));
|
|
112
|
-
return {
|
|
113
|
-
storage: 'config-file',
|
|
114
|
-
warning: buildFallbackWarning('local auth state cleared in'),
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
async function readConfig() {
|
|
118
|
-
try {
|
|
119
|
-
const content = await readFile(CONFIG_PATH, 'utf-8');
|
|
120
|
-
const parsed = JSON.parse(content);
|
|
121
|
-
return isObject(parsed) ? parsed : {};
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return {};
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
async function writeConfig(config) {
|
|
128
|
-
if (Object.keys(config).length === 0) {
|
|
129
|
-
try {
|
|
130
|
-
await unlink(CONFIG_PATH);
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
if (!isMissingFileError(error)) {
|
|
134
|
-
throw error;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
await mkdir(dirname(CONFIG_PATH), { recursive: true });
|
|
140
|
-
await writeFile(CONFIG_PATH, `${JSON.stringify(config, null, 2)}\n`);
|
|
141
|
-
}
|
|
142
|
-
async function cleanupAuthFallbackState(config, warningPrefix) {
|
|
143
|
-
try {
|
|
144
|
-
await writeConfig(withoutAuthFallbackState(config));
|
|
145
|
-
return undefined;
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
return buildConfigCleanupWarning(warningPrefix, error);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
function getConfigToken(config) {
|
|
152
|
-
return typeof config.api_token === 'string' && config.api_token.trim()
|
|
153
|
-
? config.api_token.trim()
|
|
154
|
-
: null;
|
|
155
|
-
}
|
|
156
|
-
function withoutAuthFallbackState(config) {
|
|
157
|
-
const { api_token: _token, pendingSecureStoreClear: _pending, ...rest } = config;
|
|
158
|
-
return rest;
|
|
159
|
-
}
|
|
160
|
-
function withPendingSecureStoreClear(config) {
|
|
161
|
-
return { ...withoutAuthFallbackState(config), pendingSecureStoreClear: true };
|
|
162
|
-
}
|
|
163
|
-
function isObject(value) {
|
|
164
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
165
|
-
}
|
|
166
|
-
function isMissingFileError(error) {
|
|
167
|
-
return error instanceof Error && 'code' in error && error.code === 'ENOENT';
|
|
168
|
-
}
|
|
169
|
-
function buildFallbackWarning(action) {
|
|
170
|
-
return `${SECURE_STORE_DESCRIPTION} unavailable; ${action} ${CONFIG_PATH}`;
|
|
171
|
-
}
|
|
172
|
-
function buildConfigCleanupWarning(prefix, error) {
|
|
173
|
-
const detail = error instanceof Error && error.message ? ` (${error.message})` : '';
|
|
174
|
-
return `${prefix} but could not remove legacy plaintext token from ${CONFIG_PATH}${detail}`;
|
|
175
|
-
}
|
|
176
|
-
function warn(message) {
|
|
177
|
-
console.error(`Warning: ${message}`);
|
|
178
|
-
}
|
|
179
|
-
function warnSecureStoreFallback(action) {
|
|
180
|
-
warn(buildFallbackWarning(action));
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=auth.js.map
|
package/dist/lib/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/browser.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D"}
|
package/dist/lib/browser.js
DELETED
package/dist/lib/browser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAA;IAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,CAAA;AACnB,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { TodoistApi } from '@doist/todoist-api-typescript';
|
|
2
|
-
import { type Project, type Task } from './api/core.js';
|
|
3
|
-
export interface CollaboratorInfo {
|
|
4
|
-
id: string;
|
|
5
|
-
name: string;
|
|
6
|
-
email: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class CollaboratorCache {
|
|
9
|
-
private workspaceUsers;
|
|
10
|
-
private projectCollaborators;
|
|
11
|
-
preload(api: TodoistApi, tasks: Task[], projects: Map<string, Project>): Promise<void>;
|
|
12
|
-
private fetchWorkspaceUsers;
|
|
13
|
-
private fetchProjectCollaborators;
|
|
14
|
-
getUserName({ userId, projectId, projects, }: {
|
|
15
|
-
userId: string;
|
|
16
|
-
projectId: string;
|
|
17
|
-
projects: Map<string, Project>;
|
|
18
|
-
}): string | null;
|
|
19
|
-
}
|
|
20
|
-
export declare function formatUserShortName(fullName: string): string;
|
|
21
|
-
export interface FormatAssigneeOptions {
|
|
22
|
-
userId: string | null;
|
|
23
|
-
projectId: string;
|
|
24
|
-
projects: Map<string, Project>;
|
|
25
|
-
cache: CollaboratorCache;
|
|
26
|
-
}
|
|
27
|
-
export declare function formatAssignee({ userId, projectId, projects, cache, }: FormatAssigneeOptions): string | null;
|
|
28
|
-
export declare function resolveAssigneeId(api: TodoistApi, ref: string, project: Project): Promise<string>;
|
|
29
|
-
//# sourceMappingURL=collaborators.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collaborators.d.ts","sourceRoot":"","sources":["../../src/lib/collaborators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAwC,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAA;AAI7F,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,cAAc,CAAmD;IACzE,OAAO,CAAC,oBAAoB,CAAmD;IAEzE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAyC9E,mBAAmB;YA2BnB,yBAAyB;IAsBvC,WAAW,CAAC,EACR,MAAM,EACN,SAAS,EACT,QAAQ,GACX,EAAE;QACC,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACjC,GAAG,MAAM,GAAG,IAAI;CAcpB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,EAAE,iBAAiB,CAAA;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAC3B,MAAM,EACN,SAAS,EACT,QAAQ,EACR,KAAK,GACR,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAQvC;AA0DD,wBAAsB,iBAAiB,CACnC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
|