@doist/todoist-sdk 8.4.0-next.2 → 8.5.0-next.1

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.
@@ -632,6 +632,11 @@ class TodoistApi {
632
632
  /**
633
633
  * Deletes a project by its ID.
634
634
  *
635
+ * If the project is a workspace project, it must have been
636
+ * archived first before it can be deleted, otherwise calling
637
+ * this function will result in an error. Personal projects can
638
+ * be deleted regardless of their archived status.
639
+ *
635
640
  * @param id - The unique identifier of the project to delete.
636
641
  * @param requestId - Optional custom identifier for the request.
637
642
  * @returns A promise that resolves to `true` if successful.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PROJECT_VIEW_STYLES = exports.WorkspaceProjectSchema = exports.ProjectVisibilitySchema = exports.PROJECT_VISIBILITIES = exports.PersonalProjectSchema = exports.BaseProjectSchema = void 0;
3
+ exports.PROJECT_VIEW_STYLES = exports.ProjectSchema = exports.WorkspaceProjectSchema = exports.ProjectVisibilitySchema = exports.PROJECT_VISIBILITIES = exports.PersonalProjectSchema = exports.BaseProjectSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const url_helpers_1 = require("../../utils/url-helpers");
6
6
  /**
@@ -52,5 +52,15 @@ exports.WorkspaceProjectSchema = exports.BaseProjectSchema.extend({
52
52
  }).transform((data) => {
53
53
  return Object.assign(Object.assign({}, data), { url: (0, url_helpers_1.getProjectUrl)(data.id, data.name) });
54
54
  });
55
+ /**
56
+ * Schema for any project type in Todoist (personal or workspace).
57
+ * Dispatches to WorkspaceProjectSchema when workspaceId is present, PersonalProjectSchema otherwise.
58
+ */
59
+ exports.ProjectSchema = zod_1.z.unknown().transform((val) => {
60
+ if (typeof val === 'object' && val !== null && 'workspaceId' in val) {
61
+ return exports.WorkspaceProjectSchema.parse(val);
62
+ }
63
+ return exports.PersonalProjectSchema.parse(val);
64
+ });
55
65
  /** Available project view styles. */
56
66
  exports.PROJECT_VIEW_STYLES = ['list', 'board', 'calendar'];
@@ -1,2 +1,57 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyncResponseSchema = exports.SyncErrorSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const types_1 = require("../goals/types");
6
+ const types_2 = require("../labels/types");
7
+ const types_3 = require("../projects/types");
8
+ const types_4 = require("../sections/types");
9
+ const types_5 = require("../tasks/types");
10
+ const types_6 = require("../workspaces/types");
11
+ const resources_1 = require("./resources");
12
+ exports.SyncErrorSchema = zod_1.z.object({
13
+ error: zod_1.z.string(),
14
+ errorCode: zod_1.z.number(),
15
+ errorExtra: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
16
+ errorTag: zod_1.z.string(),
17
+ httpCode: zod_1.z.number(),
18
+ });
19
+ exports.SyncResponseSchema = zod_1.z.looseObject({
20
+ syncToken: zod_1.z.string().optional(),
21
+ fullSync: zod_1.z.boolean().optional(),
22
+ syncStatus: zod_1.z.record(zod_1.z.string(), zod_1.z.union([zod_1.z.literal('ok'), exports.SyncErrorSchema])).optional(),
23
+ tempIdMapping: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
24
+ items: zod_1.z.array(types_5.TaskSchema).optional(),
25
+ projects: zod_1.z.array(types_3.ProjectSchema).optional(),
26
+ sections: zod_1.z.array(types_4.SectionSchema).optional(),
27
+ labels: zod_1.z.array(types_2.LabelSchema).optional(),
28
+ notes: zod_1.z.array(resources_1.NoteSchema).optional(),
29
+ projectNotes: zod_1.z.array(resources_1.NoteSchema).optional(),
30
+ filters: zod_1.z.array(resources_1.FilterSchema).optional(),
31
+ reminders: zod_1.z.array(resources_1.ReminderSchema).optional(),
32
+ remindersLocation: zod_1.z.array(resources_1.LocationReminderSchema).optional(),
33
+ locations: zod_1.z.array(zod_1.z.record(zod_1.z.string(), zod_1.z.unknown())).optional(),
34
+ user: resources_1.SyncUserSchema.optional(),
35
+ liveNotifications: zod_1.z.array(resources_1.LiveNotificationSchema).optional(),
36
+ collaborators: zod_1.z.array(resources_1.CollaboratorSchema).optional(),
37
+ collaboratorStates: zod_1.z.array(resources_1.CollaboratorStateSchema).optional(),
38
+ userSettings: resources_1.UserSettingsSchema.optional(),
39
+ notificationSettings: zod_1.z.record(zod_1.z.string(), zod_1.z.boolean()).optional(),
40
+ userPlanLimits: resources_1.UserPlanLimitsSchema.optional(),
41
+ completedInfo: zod_1.z.array(resources_1.CompletedInfoSchema).optional(),
42
+ stats: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
43
+ workspaces: zod_1.z.array(resources_1.SyncWorkspaceSchema).optional(),
44
+ workspaceUsers: zod_1.z.array(types_6.WorkspaceUserSchema).optional(),
45
+ workspaceFilters: zod_1.z.array(resources_1.WorkspaceFilterSchema).optional(),
46
+ viewOptions: zod_1.z.array(resources_1.ViewOptionsSchema).optional(),
47
+ projectViewOptionsDefaults: zod_1.z.array(resources_1.ProjectViewOptionsDefaultsSchema).optional(),
48
+ roleActions: zod_1.z.array(zod_1.z.record(zod_1.z.string(), zod_1.z.unknown())).optional(),
49
+ folders: zod_1.z.array(resources_1.FolderSchema).optional(),
50
+ goals: zod_1.z.array(types_1.GoalSchema).optional(),
51
+ workspaceGoals: zod_1.z.array(resources_1.WorkspaceGoalSchema).optional(),
52
+ dayOrders: zod_1.z.record(zod_1.z.string(), zod_1.z.number()).optional(),
53
+ calendars: zod_1.z.array(resources_1.CalendarSchema).optional(),
54
+ calendarAccounts: zod_1.z.array(resources_1.CalendarAccountSchema).optional(),
55
+ suggestions: zod_1.z.array(resources_1.SuggestionSchema).optional(),
56
+ tooltips: resources_1.TooltipsSchema.optional(),
57
+ });
@@ -23,3 +23,4 @@ Object.defineProperty(exports, "getProjectUrl", { enumerable: true, get: functio
23
23
  Object.defineProperty(exports, "getSectionUrl", { enumerable: true, get: function () { return url_helpers_1.getSectionUrl; } });
24
24
  var sync_helpers_1 = require("./sync-helpers");
25
25
  Object.defineProperty(exports, "createCommand", { enumerable: true, get: function () { return sync_helpers_1.createCommand; } });
26
+ __exportStar(require("./project-helpers"), exports);
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isWorkspaceProject = isWorkspaceProject;
4
+ exports.isPersonalProject = isPersonalProject;
5
+ /**
6
+ * Type guard to check if a project is a workspace project.
7
+ * @param project The project to check
8
+ * @returns True if the project is a workspace project
9
+ */
10
+ function isWorkspaceProject(project) {
11
+ return 'workspaceId' in project;
12
+ }
13
+ /**
14
+ * Type guard to check if a project is a personal project.
15
+ * @param project The project to check
16
+ * @returns True if the project is a personal project
17
+ */
18
+ function isPersonalProject(project) {
19
+ return !isWorkspaceProject(project);
20
+ }
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateNote = exports.validateGoalArray = exports.validateGoal = exports.validateFolderArray = exports.validateFolder = exports.validateCollaboratorStateArray = exports.validateCollaboratorState = exports.validateCollaboratorArray = exports.validateCollaborator = exports.validateFilterArray = exports.validateFilter = exports.validateMovedIdArray = exports.validateMovedId = exports.validateIdMappingArray = exports.validateIdMapping = exports.validateBackupArray = exports.validateBackup = exports.validateWorkspaceInsights = exports.validateProjectProgress = exports.validateProjectHealthContext = exports.validateProjectHealth = exports.validateProjectActivityStats = exports.validateWorkspaceUserTaskArray = exports.validateWorkspaceUserTask = exports.validateMemberActivityInfoArray = exports.validateMemberActivityInfo = exports.validateWorkspaceArray = exports.validateWorkspace = exports.validateJoinWorkspaceResult = exports.validateWorkspacePlanDetails = exports.validateWorkspaceInvitationArray = exports.validateWorkspaceInvitation = exports.validateWorkspaceUser = exports.validateAttachment = exports.validateActivityEventArray = exports.validateActivityEvent = exports.validateCurrentUser = exports.validateProductivityStats = exports.validateUserArray = exports.validateUser = exports.validateCommentArray = exports.validateComment = exports.validateLabelArray = exports.validateLabel = exports.validateSectionArray = exports.validateSection = exports.validateWorkspaceProjectArray = exports.validateWorkspaceProject = exports.validateTaskArray = exports.validateTask = void 0;
4
- exports.validateSuggestionArray = exports.validateSuggestion = exports.validateUserSettings = exports.validateSyncUser = exports.validateSyncWorkspaceArray = exports.validateSyncWorkspace = exports.validateLiveNotificationArray = exports.validateLiveNotification = exports.validateUserPlanLimits = exports.validateProjectViewOptionsDefaultsArray = exports.validateProjectViewOptionsDefaults = exports.validateViewOptionsArray = exports.validateViewOptions = exports.validateCompletedInfoArray = exports.validateCompletedInfo = exports.validateLocationReminderArray = exports.validateLocationReminder = exports.validateReminderArray = exports.validateReminder = exports.validateCalendarAccountArray = exports.validateCalendarAccount = exports.validateCalendarArray = exports.validateCalendar = exports.validateWorkspaceGoalArray = exports.validateWorkspaceGoal = exports.validateWorkspaceFilterArray = exports.validateWorkspaceFilter = exports.validateTooltips = exports.validateNoteArray = void 0;
5
- exports.isWorkspaceProject = isWorkspaceProject;
6
- exports.isPersonalProject = isPersonalProject;
7
- exports.validateProject = validateProject;
8
- exports.validateProjectArray = validateProjectArray;
9
- exports.validateWorkspaceUserArray = validateWorkspaceUserArray;
4
+ exports.validateFolderArray = exports.validateFolder = exports.validateCollaboratorStateArray = exports.validateCollaboratorState = exports.validateCollaboratorArray = exports.validateCollaborator = exports.validateFilterArray = exports.validateFilter = exports.validateMovedIdArray = exports.validateMovedId = exports.validateIdMappingArray = exports.validateIdMapping = exports.validateBackupArray = exports.validateBackup = exports.validateWorkspaceInsights = exports.validateProjectProgress = exports.validateProjectHealthContext = exports.validateProjectHealth = exports.validateProjectActivityStats = exports.validateWorkspaceUserTaskArray = exports.validateWorkspaceUserTask = exports.validateMemberActivityInfoArray = exports.validateMemberActivityInfo = exports.validateWorkspaceArray = exports.validateWorkspace = exports.validateJoinWorkspaceResult = exports.validateWorkspacePlanDetails = exports.validateWorkspaceInvitationArray = exports.validateWorkspaceInvitation = exports.validateWorkspaceUserArray = exports.validateWorkspaceUser = exports.validateAttachment = exports.validateActivityEventArray = exports.validateActivityEvent = exports.validateCurrentUser = exports.validateProductivityStats = exports.validateUserArray = exports.validateUser = exports.validateCommentArray = exports.validateComment = exports.validateLabelArray = exports.validateLabel = exports.validateSectionArray = exports.validateSection = exports.validateWorkspaceProjectArray = exports.validateWorkspaceProject = exports.validateProjectArray = exports.validateProject = exports.validateTaskArray = exports.validateTask = void 0;
5
+ exports.validateSuggestionArray = exports.validateSuggestion = exports.validateUserSettings = exports.validateSyncUser = exports.validateSyncWorkspaceArray = exports.validateSyncWorkspace = exports.validateLiveNotificationArray = exports.validateLiveNotification = exports.validateUserPlanLimits = exports.validateProjectViewOptionsDefaultsArray = exports.validateProjectViewOptionsDefaults = exports.validateViewOptionsArray = exports.validateViewOptions = exports.validateCompletedInfoArray = exports.validateCompletedInfo = exports.validateLocationReminderArray = exports.validateLocationReminder = exports.validateReminderArray = exports.validateReminder = exports.validateCalendarAccountArray = exports.validateCalendarAccount = exports.validateCalendarArray = exports.validateCalendar = exports.validateWorkspaceGoalArray = exports.validateWorkspaceGoal = exports.validateWorkspaceFilterArray = exports.validateWorkspaceFilter = exports.validateTooltips = exports.validateNoteArray = exports.validateNote = exports.validateGoalArray = exports.validateGoal = void 0;
10
6
  exports.parseSyncResponse = parseSyncResponse;
7
+ const zod_1 = require("zod");
11
8
  const types_1 = require("../types/activity/types");
12
9
  const types_2 = require("../types/backups/types");
13
10
  const types_3 = require("../types/comments/types");
@@ -18,165 +15,72 @@ const types_7 = require("../types/labels/types");
18
15
  const types_8 = require("../types/productivity/types");
19
16
  const types_9 = require("../types/projects/types");
20
17
  const types_10 = require("../types/sections/types");
18
+ const response_1 = require("../types/sync/response");
21
19
  const types_11 = require("../types/tasks/types");
22
20
  const types_12 = require("../types/users/types");
23
21
  const types_13 = require("../types/workspaces/types");
24
22
  const resources_1 = require("../types/sync/resources");
25
23
  function createValidator(schema) {
26
- return (input) => schema.parse(input);
27
- }
28
- function createArrayValidator(validateItem) {
29
- return (input) => {
30
- if (!Array.isArray(input)) {
31
- throw new TypeError(`Expected array, got ${typeof input}`);
32
- }
33
- return input.map(validateItem);
24
+ return {
25
+ validate: (input) => schema.parse(input),
26
+ validateArray: (input) => zod_1.z.array(schema).parse(input),
34
27
  };
35
28
  }
36
29
  // Entity validators
37
- exports.validateTask = createValidator(types_11.TaskSchema);
38
- exports.validateTaskArray = createArrayValidator(exports.validateTask);
39
- /**
40
- * Type guard to check if a project is a workspace project.
41
- * @param project The project to check
42
- * @returns True if the project is a workspace project
43
- */
44
- function isWorkspaceProject(project) {
45
- return 'workspaceId' in project;
46
- }
47
- /**
48
- * Type guard to check if a project is a personal project.
49
- * @param project The project to check
50
- * @returns True if the project is a personal project
51
- */
52
- function isPersonalProject(project) {
53
- return !isWorkspaceProject(project);
54
- }
30
+ _a = createValidator(types_11.TaskSchema), exports.validateTask = _a.validate, exports.validateTaskArray = _a.validateArray;
55
31
  /**
56
32
  * Validates and parses a project input.
57
33
  * @param input The input to validate
58
34
  * @returns A validated project (either PersonalProject or WorkspaceProject)
59
35
  */
60
- function validateProject(input) {
61
- if ('workspaceId' in input) {
62
- return types_9.WorkspaceProjectSchema.parse(input);
63
- }
64
- return types_9.PersonalProjectSchema.parse(input);
65
- }
66
- function validateProjectArray(input) {
67
- if (!Array.isArray(input)) {
68
- throw new TypeError(`Expected array, got ${typeof input}`);
69
- }
70
- return input.map(validateProject);
71
- }
72
- exports.validateWorkspaceProject = createValidator(types_9.WorkspaceProjectSchema);
73
- exports.validateWorkspaceProjectArray = createArrayValidator(exports.validateWorkspaceProject);
74
- exports.validateSection = createValidator(types_10.SectionSchema);
75
- exports.validateSectionArray = createArrayValidator(exports.validateSection);
76
- exports.validateLabel = createValidator(types_7.LabelSchema);
77
- exports.validateLabelArray = createArrayValidator(exports.validateLabel);
78
- exports.validateComment = createValidator(types_3.CommentSchema);
79
- exports.validateCommentArray = createArrayValidator(exports.validateComment);
80
- exports.validateUser = createValidator(types_12.UserSchema);
81
- exports.validateUserArray = createArrayValidator(exports.validateUser);
82
- exports.validateProductivityStats = createValidator(types_8.ProductivityStatsSchema);
83
- exports.validateCurrentUser = createValidator(types_12.CurrentUserSchema);
84
- exports.validateActivityEvent = createValidator(types_1.ActivityEventSchema);
85
- exports.validateActivityEventArray = createArrayValidator(exports.validateActivityEvent);
86
- exports.validateAttachment = createValidator(types_3.AttachmentSchema);
87
- exports.validateWorkspaceUser = createValidator(types_13.WorkspaceUserSchema);
88
- function validateWorkspaceUserArray(input) {
89
- if (!Array.isArray(input)) {
90
- throw new Error(`Expected array for workspace users, got ${typeof input}`);
91
- }
92
- return input.map(exports.validateWorkspaceUser);
93
- }
94
- exports.validateWorkspaceInvitation = createValidator(types_13.WorkspaceInvitationSchema);
95
- exports.validateWorkspaceInvitationArray = createArrayValidator(exports.validateWorkspaceInvitation);
96
- exports.validateWorkspacePlanDetails = createValidator(types_13.WorkspacePlanDetailsSchema);
97
- exports.validateJoinWorkspaceResult = createValidator(types_13.JoinWorkspaceResultSchema);
98
- exports.validateWorkspace = createValidator(types_13.WorkspaceSchema);
99
- exports.validateWorkspaceArray = createArrayValidator(exports.validateWorkspace);
100
- exports.validateMemberActivityInfo = createValidator(types_13.MemberActivityInfoSchema);
101
- exports.validateMemberActivityInfoArray = createArrayValidator(exports.validateMemberActivityInfo);
102
- exports.validateWorkspaceUserTask = createValidator(types_13.WorkspaceUserTaskSchema);
103
- exports.validateWorkspaceUserTaskArray = createArrayValidator(exports.validateWorkspaceUserTask);
104
- exports.validateProjectActivityStats = createValidator(types_6.ProjectActivityStatsSchema);
105
- exports.validateProjectHealth = createValidator(types_6.ProjectHealthSchema);
106
- exports.validateProjectHealthContext = createValidator(types_6.ProjectHealthContextSchema);
107
- exports.validateProjectProgress = createValidator(types_6.ProjectProgressSchema);
108
- exports.validateWorkspaceInsights = createValidator(types_6.WorkspaceInsightsSchema);
109
- exports.validateBackup = createValidator(types_2.BackupSchema);
110
- exports.validateBackupArray = createArrayValidator(exports.validateBackup);
111
- exports.validateIdMapping = createValidator(types_5.IdMappingSchema);
112
- exports.validateIdMappingArray = createArrayValidator(exports.validateIdMapping);
113
- exports.validateMovedId = createValidator(types_5.MovedIdSchema);
114
- exports.validateMovedIdArray = createArrayValidator(exports.validateMovedId);
36
+ _b = createValidator(types_9.ProjectSchema), exports.validateProject = _b.validate, exports.validateProjectArray = _b.validateArray;
37
+ _c = createValidator(types_9.WorkspaceProjectSchema), exports.validateWorkspaceProject = _c.validate, exports.validateWorkspaceProjectArray = _c.validateArray;
38
+ _d = createValidator(types_10.SectionSchema), exports.validateSection = _d.validate, exports.validateSectionArray = _d.validateArray;
39
+ _e = createValidator(types_7.LabelSchema), exports.validateLabel = _e.validate, exports.validateLabelArray = _e.validateArray;
40
+ _f = createValidator(types_3.CommentSchema), exports.validateComment = _f.validate, exports.validateCommentArray = _f.validateArray;
41
+ _g = createValidator(types_12.UserSchema), exports.validateUser = _g.validate, exports.validateUserArray = _g.validateArray;
42
+ exports.validateProductivityStats = createValidator(types_8.ProductivityStatsSchema).validate;
43
+ exports.validateCurrentUser = createValidator(types_12.CurrentUserSchema).validate;
44
+ _h = createValidator(types_1.ActivityEventSchema), exports.validateActivityEvent = _h.validate, exports.validateActivityEventArray = _h.validateArray;
45
+ exports.validateAttachment = createValidator(types_3.AttachmentSchema).validate;
46
+ _j = createValidator(types_13.WorkspaceUserSchema), exports.validateWorkspaceUser = _j.validate, exports.validateWorkspaceUserArray = _j.validateArray;
47
+ _k = createValidator(types_13.WorkspaceInvitationSchema), exports.validateWorkspaceInvitation = _k.validate, exports.validateWorkspaceInvitationArray = _k.validateArray;
48
+ exports.validateWorkspacePlanDetails = createValidator(types_13.WorkspacePlanDetailsSchema).validate;
49
+ exports.validateJoinWorkspaceResult = createValidator(types_13.JoinWorkspaceResultSchema).validate;
50
+ _l = createValidator(types_13.WorkspaceSchema), exports.validateWorkspace = _l.validate, exports.validateWorkspaceArray = _l.validateArray;
51
+ _m = createValidator(types_13.MemberActivityInfoSchema), exports.validateMemberActivityInfo = _m.validate, exports.validateMemberActivityInfoArray = _m.validateArray;
52
+ _o = createValidator(types_13.WorkspaceUserTaskSchema), exports.validateWorkspaceUserTask = _o.validate, exports.validateWorkspaceUserTaskArray = _o.validateArray;
53
+ exports.validateProjectActivityStats = createValidator(types_6.ProjectActivityStatsSchema).validate;
54
+ exports.validateProjectHealth = createValidator(types_6.ProjectHealthSchema).validate;
55
+ exports.validateProjectHealthContext = createValidator(types_6.ProjectHealthContextSchema).validate;
56
+ exports.validateProjectProgress = createValidator(types_6.ProjectProgressSchema).validate;
57
+ exports.validateWorkspaceInsights = createValidator(types_6.WorkspaceInsightsSchema).validate;
58
+ _p = createValidator(types_2.BackupSchema), exports.validateBackup = _p.validate, exports.validateBackupArray = _p.validateArray;
59
+ _q = createValidator(types_5.IdMappingSchema), exports.validateIdMapping = _q.validate, exports.validateIdMappingArray = _q.validateArray;
60
+ _r = createValidator(types_5.MovedIdSchema), exports.validateMovedId = _r.validate, exports.validateMovedIdArray = _r.validateArray;
115
61
  // Sync resource validators
116
- exports.validateFilter = createValidator(resources_1.FilterSchema);
117
- exports.validateFilterArray = createArrayValidator(exports.validateFilter);
118
- exports.validateCollaborator = createValidator(resources_1.CollaboratorSchema);
119
- exports.validateCollaboratorArray = createArrayValidator(exports.validateCollaborator);
120
- exports.validateCollaboratorState = createValidator(resources_1.CollaboratorStateSchema);
121
- exports.validateCollaboratorStateArray = createArrayValidator(exports.validateCollaboratorState);
122
- exports.validateFolder = createValidator(resources_1.FolderSchema);
123
- exports.validateFolderArray = createArrayValidator(exports.validateFolder);
124
- exports.validateGoal = createValidator(types_4.GoalSchema);
125
- exports.validateGoalArray = createArrayValidator(exports.validateGoal);
126
- exports.validateNote = createValidator(resources_1.NoteSchema);
127
- exports.validateNoteArray = createArrayValidator(exports.validateNote);
128
- exports.validateTooltips = createValidator(resources_1.TooltipsSchema);
129
- exports.validateWorkspaceFilter = createValidator(resources_1.WorkspaceFilterSchema);
130
- exports.validateWorkspaceFilterArray = createArrayValidator(exports.validateWorkspaceFilter);
131
- exports.validateWorkspaceGoal = createValidator(resources_1.WorkspaceGoalSchema);
132
- exports.validateWorkspaceGoalArray = createArrayValidator(exports.validateWorkspaceGoal);
133
- exports.validateCalendar = createValidator(resources_1.CalendarSchema);
134
- exports.validateCalendarArray = createArrayValidator(exports.validateCalendar);
135
- exports.validateCalendarAccount = createValidator(resources_1.CalendarAccountSchema);
136
- exports.validateCalendarAccountArray = createArrayValidator(exports.validateCalendarAccount);
137
- exports.validateReminder = createValidator(resources_1.ReminderSchema);
138
- exports.validateReminderArray = createArrayValidator(exports.validateReminder);
139
- exports.validateLocationReminder = createValidator(resources_1.LocationReminderSchema);
140
- exports.validateLocationReminderArray = createArrayValidator(exports.validateLocationReminder);
141
- exports.validateCompletedInfo = createValidator(resources_1.CompletedInfoSchema);
142
- exports.validateCompletedInfoArray = createArrayValidator(exports.validateCompletedInfo);
143
- exports.validateViewOptions = createValidator(resources_1.ViewOptionsSchema);
144
- exports.validateViewOptionsArray = createArrayValidator(exports.validateViewOptions);
145
- exports.validateProjectViewOptionsDefaults = createValidator(resources_1.ProjectViewOptionsDefaultsSchema);
146
- exports.validateProjectViewOptionsDefaultsArray = createArrayValidator(exports.validateProjectViewOptionsDefaults);
147
- exports.validateUserPlanLimits = createValidator(resources_1.UserPlanLimitsSchema);
148
- exports.validateLiveNotification = createValidator(resources_1.LiveNotificationSchema);
149
- exports.validateLiveNotificationArray = createArrayValidator(exports.validateLiveNotification);
150
- exports.validateSyncWorkspace = createValidator(resources_1.SyncWorkspaceSchema);
151
- exports.validateSyncWorkspaceArray = createArrayValidator(exports.validateSyncWorkspace);
152
- exports.validateSyncUser = createValidator(resources_1.SyncUserSchema);
153
- exports.validateUserSettings = createValidator(resources_1.UserSettingsSchema);
154
- exports.validateSuggestion = createValidator(resources_1.SuggestionSchema);
155
- exports.validateSuggestionArray = createArrayValidator(exports.validateSuggestion);
62
+ _s = createValidator(resources_1.FilterSchema), exports.validateFilter = _s.validate, exports.validateFilterArray = _s.validateArray;
63
+ _t = createValidator(resources_1.CollaboratorSchema), exports.validateCollaborator = _t.validate, exports.validateCollaboratorArray = _t.validateArray;
64
+ _u = createValidator(resources_1.CollaboratorStateSchema), exports.validateCollaboratorState = _u.validate, exports.validateCollaboratorStateArray = _u.validateArray;
65
+ _v = createValidator(resources_1.FolderSchema), exports.validateFolder = _v.validate, exports.validateFolderArray = _v.validateArray;
66
+ _w = createValidator(types_4.GoalSchema), exports.validateGoal = _w.validate, exports.validateGoalArray = _w.validateArray;
67
+ _x = createValidator(resources_1.NoteSchema), exports.validateNote = _x.validate, exports.validateNoteArray = _x.validateArray;
68
+ exports.validateTooltips = createValidator(resources_1.TooltipsSchema).validate;
69
+ _y = createValidator(resources_1.WorkspaceFilterSchema), exports.validateWorkspaceFilter = _y.validate, exports.validateWorkspaceFilterArray = _y.validateArray;
70
+ _z = createValidator(resources_1.WorkspaceGoalSchema), exports.validateWorkspaceGoal = _z.validate, exports.validateWorkspaceGoalArray = _z.validateArray;
71
+ _0 = createValidator(resources_1.CalendarSchema), exports.validateCalendar = _0.validate, exports.validateCalendarArray = _0.validateArray;
72
+ _1 = createValidator(resources_1.CalendarAccountSchema), exports.validateCalendarAccount = _1.validate, exports.validateCalendarAccountArray = _1.validateArray;
73
+ _2 = createValidator(resources_1.ReminderSchema), exports.validateReminder = _2.validate, exports.validateReminderArray = _2.validateArray;
74
+ _3 = createValidator(resources_1.LocationReminderSchema), exports.validateLocationReminder = _3.validate, exports.validateLocationReminderArray = _3.validateArray;
75
+ _4 = createValidator(resources_1.CompletedInfoSchema), exports.validateCompletedInfo = _4.validate, exports.validateCompletedInfoArray = _4.validateArray;
76
+ _5 = createValidator(resources_1.ViewOptionsSchema), exports.validateViewOptions = _5.validate, exports.validateViewOptionsArray = _5.validateArray;
77
+ _6 = createValidator(resources_1.ProjectViewOptionsDefaultsSchema), exports.validateProjectViewOptionsDefaults = _6.validate, exports.validateProjectViewOptionsDefaultsArray = _6.validateArray;
78
+ exports.validateUserPlanLimits = createValidator(resources_1.UserPlanLimitsSchema).validate;
79
+ _7 = createValidator(resources_1.LiveNotificationSchema), exports.validateLiveNotification = _7.validate, exports.validateLiveNotificationArray = _7.validateArray;
80
+ _8 = createValidator(resources_1.SyncWorkspaceSchema), exports.validateSyncWorkspace = _8.validate, exports.validateSyncWorkspaceArray = _8.validateArray;
81
+ exports.validateSyncUser = createValidator(resources_1.SyncUserSchema).validate;
82
+ exports.validateUserSettings = createValidator(resources_1.UserSettingsSchema).validate;
83
+ _9 = createValidator(resources_1.SuggestionSchema), exports.validateSuggestion = _9.validate, exports.validateSuggestionArray = _9.validateArray;
156
84
  function parseSyncResponse(raw) {
157
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, raw), ('items' in raw ? { items: (0, exports.validateTaskArray)(raw.items) } : {})), ('projects' in raw ? { projects: validateProjectArray(raw.projects) } : {})), ('sections' in raw ? { sections: (0, exports.validateSectionArray)(raw.sections) } : {})), ('labels' in raw ? { labels: (0, exports.validateLabelArray)(raw.labels) } : {})), ('notes' in raw ? { notes: (0, exports.validateNoteArray)(raw.notes) } : {})), ('projectNotes' in raw ? { projectNotes: (0, exports.validateNoteArray)(raw.projectNotes) } : {})), ('filters' in raw ? { filters: (0, exports.validateFilterArray)(raw.filters) } : {})), ('reminders' in raw ? { reminders: (0, exports.validateReminderArray)(raw.reminders) } : {})), ('remindersLocation' in raw
158
- ? { remindersLocation: (0, exports.validateLocationReminderArray)(raw.remindersLocation) }
159
- : {})), ('user' in raw ? { user: (0, exports.validateSyncUser)(raw.user) } : {})), ('liveNotifications' in raw
160
- ? { liveNotifications: (0, exports.validateLiveNotificationArray)(raw.liveNotifications) }
161
- : {})), ('collaborators' in raw
162
- ? { collaborators: (0, exports.validateCollaboratorArray)(raw.collaborators) }
163
- : {})), ('collaboratorStates' in raw
164
- ? { collaboratorStates: (0, exports.validateCollaboratorStateArray)(raw.collaboratorStates) }
165
- : {})), ('userSettings' in raw ? { userSettings: (0, exports.validateUserSettings)(raw.userSettings) } : {})), ('userPlanLimits' in raw
166
- ? { userPlanLimits: (0, exports.validateUserPlanLimits)(raw.userPlanLimits) }
167
- : {})), ('completedInfo' in raw
168
- ? { completedInfo: (0, exports.validateCompletedInfoArray)(raw.completedInfo) }
169
- : {})), ('workspaces' in raw ? { workspaces: (0, exports.validateSyncWorkspaceArray)(raw.workspaces) } : {})), ('workspaceUsers' in raw
170
- ? { workspaceUsers: validateWorkspaceUserArray(raw.workspaceUsers) }
171
- : {})), ('workspaceFilters' in raw
172
- ? { workspaceFilters: (0, exports.validateWorkspaceFilterArray)(raw.workspaceFilters) }
173
- : {})), ('viewOptions' in raw ? { viewOptions: (0, exports.validateViewOptionsArray)(raw.viewOptions) } : {})), ('projectViewOptionsDefaults' in raw
174
- ? {
175
- projectViewOptionsDefaults: (0, exports.validateProjectViewOptionsDefaultsArray)(raw.projectViewOptionsDefaults),
176
- }
177
- : {})), ('folders' in raw ? { folders: (0, exports.validateFolderArray)(raw.folders) } : {})), ('goals' in raw ? { goals: (0, exports.validateGoalArray)(raw.goals) } : {})), ('workspaceGoals' in raw
178
- ? { workspaceGoals: (0, exports.validateWorkspaceGoalArray)(raw.workspaceGoals) }
179
- : {})), ('calendars' in raw ? { calendars: (0, exports.validateCalendarArray)(raw.calendars) } : {})), ('calendarAccounts' in raw
180
- ? { calendarAccounts: (0, exports.validateCalendarAccountArray)(raw.calendarAccounts) }
181
- : {})), ('suggestions' in raw ? { suggestions: (0, exports.validateSuggestionArray)(raw.suggestions) } : {})), ('tooltips' in raw ? { tooltips: (0, exports.validateTooltips)(raw.tooltips) } : {}));
85
+ return response_1.SyncResponseSchema.parse(raw);
182
86
  }
@@ -629,6 +629,11 @@ export class TodoistApi {
629
629
  /**
630
630
  * Deletes a project by its ID.
631
631
  *
632
+ * If the project is a workspace project, it must have been
633
+ * archived first before it can be deleted, otherwise calling
634
+ * this function will result in an error. Personal projects can
635
+ * be deleted regardless of their archived status.
636
+ *
632
637
  * @param id - The unique identifier of the project to delete.
633
638
  * @param requestId - Optional custom identifier for the request.
634
639
  * @returns A promise that resolves to `true` if successful.
@@ -49,5 +49,15 @@ export const WorkspaceProjectSchema = BaseProjectSchema.extend({
49
49
  }).transform((data) => {
50
50
  return Object.assign(Object.assign({}, data), { url: getProjectUrl(data.id, data.name) });
51
51
  });
52
+ /**
53
+ * Schema for any project type in Todoist (personal or workspace).
54
+ * Dispatches to WorkspaceProjectSchema when workspaceId is present, PersonalProjectSchema otherwise.
55
+ */
56
+ export const ProjectSchema = z.unknown().transform((val) => {
57
+ if (typeof val === 'object' && val !== null && 'workspaceId' in val) {
58
+ return WorkspaceProjectSchema.parse(val);
59
+ }
60
+ return PersonalProjectSchema.parse(val);
61
+ });
52
62
  /** Available project view styles. */
53
63
  export const PROJECT_VIEW_STYLES = ['list', 'board', 'calendar'];
@@ -1 +1,54 @@
1
- export {};
1
+ import { z } from 'zod';
2
+ import { GoalSchema } from '../goals/types.js';
3
+ import { LabelSchema } from '../labels/types.js';
4
+ import { ProjectSchema } from '../projects/types.js';
5
+ import { SectionSchema } from '../sections/types.js';
6
+ import { TaskSchema } from '../tasks/types.js';
7
+ import { WorkspaceUserSchema } from '../workspaces/types.js';
8
+ import { FilterSchema, CollaboratorSchema, CollaboratorStateSchema, FolderSchema, NoteSchema, TooltipsSchema, WorkspaceFilterSchema, WorkspaceGoalSchema, CalendarSchema, CalendarAccountSchema, ReminderSchema, LocationReminderSchema, CompletedInfoSchema, ViewOptionsSchema, ProjectViewOptionsDefaultsSchema, UserPlanLimitsSchema, LiveNotificationSchema, SyncWorkspaceSchema, SyncUserSchema, UserSettingsSchema, SuggestionSchema, } from './resources/index.js';
9
+ export const SyncErrorSchema = z.object({
10
+ error: z.string(),
11
+ errorCode: z.number(),
12
+ errorExtra: z.record(z.string(), z.unknown()),
13
+ errorTag: z.string(),
14
+ httpCode: z.number(),
15
+ });
16
+ export const SyncResponseSchema = z.looseObject({
17
+ syncToken: z.string().optional(),
18
+ fullSync: z.boolean().optional(),
19
+ syncStatus: z.record(z.string(), z.union([z.literal('ok'), SyncErrorSchema])).optional(),
20
+ tempIdMapping: z.record(z.string(), z.string()).optional(),
21
+ items: z.array(TaskSchema).optional(),
22
+ projects: z.array(ProjectSchema).optional(),
23
+ sections: z.array(SectionSchema).optional(),
24
+ labels: z.array(LabelSchema).optional(),
25
+ notes: z.array(NoteSchema).optional(),
26
+ projectNotes: z.array(NoteSchema).optional(),
27
+ filters: z.array(FilterSchema).optional(),
28
+ reminders: z.array(ReminderSchema).optional(),
29
+ remindersLocation: z.array(LocationReminderSchema).optional(),
30
+ locations: z.array(z.record(z.string(), z.unknown())).optional(),
31
+ user: SyncUserSchema.optional(),
32
+ liveNotifications: z.array(LiveNotificationSchema).optional(),
33
+ collaborators: z.array(CollaboratorSchema).optional(),
34
+ collaboratorStates: z.array(CollaboratorStateSchema).optional(),
35
+ userSettings: UserSettingsSchema.optional(),
36
+ notificationSettings: z.record(z.string(), z.boolean()).optional(),
37
+ userPlanLimits: UserPlanLimitsSchema.optional(),
38
+ completedInfo: z.array(CompletedInfoSchema).optional(),
39
+ stats: z.record(z.string(), z.unknown()).optional(),
40
+ workspaces: z.array(SyncWorkspaceSchema).optional(),
41
+ workspaceUsers: z.array(WorkspaceUserSchema).optional(),
42
+ workspaceFilters: z.array(WorkspaceFilterSchema).optional(),
43
+ viewOptions: z.array(ViewOptionsSchema).optional(),
44
+ projectViewOptionsDefaults: z.array(ProjectViewOptionsDefaultsSchema).optional(),
45
+ roleActions: z.array(z.record(z.string(), z.unknown())).optional(),
46
+ folders: z.array(FolderSchema).optional(),
47
+ goals: z.array(GoalSchema).optional(),
48
+ workspaceGoals: z.array(WorkspaceGoalSchema).optional(),
49
+ dayOrders: z.record(z.string(), z.number()).optional(),
50
+ calendars: z.array(CalendarSchema).optional(),
51
+ calendarAccounts: z.array(CalendarAccountSchema).optional(),
52
+ suggestions: z.array(SuggestionSchema).optional(),
53
+ tooltips: TooltipsSchema.optional(),
54
+ });
@@ -2,3 +2,4 @@ export * from './colors.js';
2
2
  export * from './sanitization.js';
3
3
  export { getTaskUrl, getProjectUrl, getSectionUrl } from './url-helpers.js';
4
4
  export { createCommand } from './sync-helpers.js';
5
+ export * from './project-helpers.js';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Type guard to check if a project is a workspace project.
3
+ * @param project The project to check
4
+ * @returns True if the project is a workspace project
5
+ */
6
+ export function isWorkspaceProject(project) {
7
+ return 'workspaceId' in project;
8
+ }
9
+ /**
10
+ * Type guard to check if a project is a personal project.
11
+ * @param project The project to check
12
+ * @returns True if the project is a personal project
13
+ */
14
+ export function isPersonalProject(project) {
15
+ return !isWorkspaceProject(project);
16
+ }