@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.
- package/dist/cjs/todoist-api.js +5 -0
- package/dist/cjs/types/projects/types.js +11 -1
- package/dist/cjs/types/sync/response.js +55 -0
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/project-helpers.js +20 -0
- package/dist/cjs/utils/validators.js +57 -153
- package/dist/esm/todoist-api.js +5 -0
- package/dist/esm/types/projects/types.js +10 -0
- package/dist/esm/types/sync/response.js +54 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/project-helpers.js +16 -0
- package/dist/esm/utils/validators.js +55 -147
- package/dist/types/todoist-api.d.ts +5 -0
- package/dist/types/types/projects/types.d.ts +55 -0
- package/dist/types/types/sync/response.d.ts +942 -53
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/project-helpers.d.ts +13 -0
- package/dist/types/utils/validators.d.ts +140 -83
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import { ActivityEventSchema } from '../types/activity/types.js';
|
|
2
3
|
import { BackupSchema } from '../types/backups/types.js';
|
|
3
4
|
import { AttachmentSchema, CommentSchema } from '../types/comments/types.js';
|
|
@@ -6,167 +7,74 @@ import { IdMappingSchema, MovedIdSchema } from '../types/id-mappings/types.js';
|
|
|
6
7
|
import { ProjectActivityStatsSchema, ProjectHealthSchema, ProjectHealthContextSchema, ProjectProgressSchema, WorkspaceInsightsSchema, } from '../types/insights/types.js';
|
|
7
8
|
import { LabelSchema } from '../types/labels/types.js';
|
|
8
9
|
import { ProductivityStatsSchema } from '../types/productivity/types.js';
|
|
9
|
-
import {
|
|
10
|
+
import { WorkspaceProjectSchema, ProjectSchema } from '../types/projects/types.js';
|
|
10
11
|
import { SectionSchema } from '../types/sections/types.js';
|
|
12
|
+
import { SyncResponseSchema } from '../types/sync/response.js';
|
|
11
13
|
import { TaskSchema } from '../types/tasks/types.js';
|
|
12
14
|
import { UserSchema, CurrentUserSchema } from '../types/users/types.js';
|
|
13
15
|
import { WorkspaceUserSchema, WorkspaceInvitationSchema, WorkspacePlanDetailsSchema, JoinWorkspaceResultSchema, WorkspaceSchema, MemberActivityInfoSchema, WorkspaceUserTaskSchema, } from '../types/workspaces/types.js';
|
|
14
16
|
import { FilterSchema, CollaboratorSchema, CollaboratorStateSchema, FolderSchema, NoteSchema, TooltipsSchema, WorkspaceFilterSchema, WorkspaceGoalSchema, CalendarSchema, CalendarAccountSchema, ReminderSchema, LocationReminderSchema, CompletedInfoSchema, ViewOptionsSchema, ProjectViewOptionsDefaultsSchema, UserPlanLimitsSchema, LiveNotificationSchema, SyncWorkspaceSchema, SyncUserSchema, UserSettingsSchema, SuggestionSchema, } from '../types/sync/resources/index.js';
|
|
15
17
|
function createValidator(schema) {
|
|
16
|
-
return
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return (input) => {
|
|
20
|
-
if (!Array.isArray(input)) {
|
|
21
|
-
throw new TypeError(`Expected array, got ${typeof input}`);
|
|
22
|
-
}
|
|
23
|
-
return input.map(validateItem);
|
|
18
|
+
return {
|
|
19
|
+
validate: (input) => schema.parse(input),
|
|
20
|
+
validateArray: (input) => z.array(schema).parse(input),
|
|
24
21
|
};
|
|
25
22
|
}
|
|
26
23
|
// Entity validators
|
|
27
|
-
export const validateTask = createValidator(TaskSchema);
|
|
28
|
-
export const validateTaskArray = createArrayValidator(validateTask);
|
|
29
|
-
/**
|
|
30
|
-
* Type guard to check if a project is a workspace project.
|
|
31
|
-
* @param project The project to check
|
|
32
|
-
* @returns True if the project is a workspace project
|
|
33
|
-
*/
|
|
34
|
-
export function isWorkspaceProject(project) {
|
|
35
|
-
return 'workspaceId' in project;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Type guard to check if a project is a personal project.
|
|
39
|
-
* @param project The project to check
|
|
40
|
-
* @returns True if the project is a personal project
|
|
41
|
-
*/
|
|
42
|
-
export function isPersonalProject(project) {
|
|
43
|
-
return !isWorkspaceProject(project);
|
|
44
|
-
}
|
|
24
|
+
export const { validate: validateTask, validateArray: validateTaskArray } = createValidator(TaskSchema);
|
|
45
25
|
/**
|
|
46
26
|
* Validates and parses a project input.
|
|
47
27
|
* @param input The input to validate
|
|
48
28
|
* @returns A validated project (either PersonalProject or WorkspaceProject)
|
|
49
29
|
*/
|
|
50
|
-
export
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
export
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
export const
|
|
63
|
-
export const
|
|
64
|
-
export const
|
|
65
|
-
export const
|
|
66
|
-
export const
|
|
67
|
-
export const
|
|
68
|
-
export const
|
|
69
|
-
export const
|
|
70
|
-
export const
|
|
71
|
-
export const
|
|
72
|
-
export const
|
|
73
|
-
export const
|
|
74
|
-
export const
|
|
75
|
-
export const validateActivityEventArray = createArrayValidator(validateActivityEvent);
|
|
76
|
-
export const validateAttachment = createValidator(AttachmentSchema);
|
|
77
|
-
export const validateWorkspaceUser = createValidator(WorkspaceUserSchema);
|
|
78
|
-
export function validateWorkspaceUserArray(input) {
|
|
79
|
-
if (!Array.isArray(input)) {
|
|
80
|
-
throw new Error(`Expected array for workspace users, got ${typeof input}`);
|
|
81
|
-
}
|
|
82
|
-
return input.map(validateWorkspaceUser);
|
|
83
|
-
}
|
|
84
|
-
export const validateWorkspaceInvitation = createValidator(WorkspaceInvitationSchema);
|
|
85
|
-
export const validateWorkspaceInvitationArray = createArrayValidator(validateWorkspaceInvitation);
|
|
86
|
-
export const validateWorkspacePlanDetails = createValidator(WorkspacePlanDetailsSchema);
|
|
87
|
-
export const validateJoinWorkspaceResult = createValidator(JoinWorkspaceResultSchema);
|
|
88
|
-
export const validateWorkspace = createValidator(WorkspaceSchema);
|
|
89
|
-
export const validateWorkspaceArray = createArrayValidator(validateWorkspace);
|
|
90
|
-
export const validateMemberActivityInfo = createValidator(MemberActivityInfoSchema);
|
|
91
|
-
export const validateMemberActivityInfoArray = createArrayValidator(validateMemberActivityInfo);
|
|
92
|
-
export const validateWorkspaceUserTask = createValidator(WorkspaceUserTaskSchema);
|
|
93
|
-
export const validateWorkspaceUserTaskArray = createArrayValidator(validateWorkspaceUserTask);
|
|
94
|
-
export const validateProjectActivityStats = createValidator(ProjectActivityStatsSchema);
|
|
95
|
-
export const validateProjectHealth = createValidator(ProjectHealthSchema);
|
|
96
|
-
export const validateProjectHealthContext = createValidator(ProjectHealthContextSchema);
|
|
97
|
-
export const validateProjectProgress = createValidator(ProjectProgressSchema);
|
|
98
|
-
export const validateWorkspaceInsights = createValidator(WorkspaceInsightsSchema);
|
|
99
|
-
export const validateBackup = createValidator(BackupSchema);
|
|
100
|
-
export const validateBackupArray = createArrayValidator(validateBackup);
|
|
101
|
-
export const validateIdMapping = createValidator(IdMappingSchema);
|
|
102
|
-
export const validateIdMappingArray = createArrayValidator(validateIdMapping);
|
|
103
|
-
export const validateMovedId = createValidator(MovedIdSchema);
|
|
104
|
-
export const validateMovedIdArray = createArrayValidator(validateMovedId);
|
|
30
|
+
export const { validate: validateProject, validateArray: validateProjectArray } = createValidator(ProjectSchema);
|
|
31
|
+
export const { validate: validateWorkspaceProject, validateArray: validateWorkspaceProjectArray } = createValidator(WorkspaceProjectSchema);
|
|
32
|
+
export const { validate: validateSection, validateArray: validateSectionArray } = createValidator(SectionSchema);
|
|
33
|
+
export const { validate: validateLabel, validateArray: validateLabelArray } = createValidator(LabelSchema);
|
|
34
|
+
export const { validate: validateComment, validateArray: validateCommentArray } = createValidator(CommentSchema);
|
|
35
|
+
export const { validate: validateUser, validateArray: validateUserArray } = createValidator(UserSchema);
|
|
36
|
+
export const { validate: validateProductivityStats } = createValidator(ProductivityStatsSchema);
|
|
37
|
+
export const { validate: validateCurrentUser } = createValidator(CurrentUserSchema);
|
|
38
|
+
export const { validate: validateActivityEvent, validateArray: validateActivityEventArray } = createValidator(ActivityEventSchema);
|
|
39
|
+
export const { validate: validateAttachment } = createValidator(AttachmentSchema);
|
|
40
|
+
export const { validate: validateWorkspaceUser, validateArray: validateWorkspaceUserArray } = createValidator(WorkspaceUserSchema);
|
|
41
|
+
export const { validate: validateWorkspaceInvitation, validateArray: validateWorkspaceInvitationArray, } = createValidator(WorkspaceInvitationSchema);
|
|
42
|
+
export const { validate: validateWorkspacePlanDetails } = createValidator(WorkspacePlanDetailsSchema);
|
|
43
|
+
export const { validate: validateJoinWorkspaceResult } = createValidator(JoinWorkspaceResultSchema);
|
|
44
|
+
export const { validate: validateWorkspace, validateArray: validateWorkspaceArray } = createValidator(WorkspaceSchema);
|
|
45
|
+
export const { validate: validateMemberActivityInfo, validateArray: validateMemberActivityInfoArray, } = createValidator(MemberActivityInfoSchema);
|
|
46
|
+
export const { validate: validateWorkspaceUserTask, validateArray: validateWorkspaceUserTaskArray, } = createValidator(WorkspaceUserTaskSchema);
|
|
47
|
+
export const { validate: validateProjectActivityStats } = createValidator(ProjectActivityStatsSchema);
|
|
48
|
+
export const { validate: validateProjectHealth } = createValidator(ProjectHealthSchema);
|
|
49
|
+
export const { validate: validateProjectHealthContext } = createValidator(ProjectHealthContextSchema);
|
|
50
|
+
export const { validate: validateProjectProgress } = createValidator(ProjectProgressSchema);
|
|
51
|
+
export const { validate: validateWorkspaceInsights } = createValidator(WorkspaceInsightsSchema);
|
|
52
|
+
export const { validate: validateBackup, validateArray: validateBackupArray } = createValidator(BackupSchema);
|
|
53
|
+
export const { validate: validateIdMapping, validateArray: validateIdMappingArray } = createValidator(IdMappingSchema);
|
|
54
|
+
export const { validate: validateMovedId, validateArray: validateMovedIdArray } = createValidator(MovedIdSchema);
|
|
105
55
|
// Sync resource validators
|
|
106
|
-
export const validateFilter = createValidator(FilterSchema);
|
|
107
|
-
export const
|
|
108
|
-
export const
|
|
109
|
-
export const
|
|
110
|
-
export const
|
|
111
|
-
export const
|
|
112
|
-
export const
|
|
113
|
-
export const
|
|
114
|
-
export const
|
|
115
|
-
export const
|
|
116
|
-
export const
|
|
117
|
-
export const
|
|
118
|
-
export const
|
|
119
|
-
export const
|
|
120
|
-
export const
|
|
121
|
-
export const
|
|
122
|
-
export const
|
|
123
|
-
export const
|
|
124
|
-
export const
|
|
125
|
-
export const
|
|
126
|
-
export const
|
|
127
|
-
export const
|
|
128
|
-
export const validateReminderArray = createArrayValidator(validateReminder);
|
|
129
|
-
export const validateLocationReminder = createValidator(LocationReminderSchema);
|
|
130
|
-
export const validateLocationReminderArray = createArrayValidator(validateLocationReminder);
|
|
131
|
-
export const validateCompletedInfo = createValidator(CompletedInfoSchema);
|
|
132
|
-
export const validateCompletedInfoArray = createArrayValidator(validateCompletedInfo);
|
|
133
|
-
export const validateViewOptions = createValidator(ViewOptionsSchema);
|
|
134
|
-
export const validateViewOptionsArray = createArrayValidator(validateViewOptions);
|
|
135
|
-
export const validateProjectViewOptionsDefaults = createValidator(ProjectViewOptionsDefaultsSchema);
|
|
136
|
-
export const validateProjectViewOptionsDefaultsArray = createArrayValidator(validateProjectViewOptionsDefaults);
|
|
137
|
-
export const validateUserPlanLimits = createValidator(UserPlanLimitsSchema);
|
|
138
|
-
export const validateLiveNotification = createValidator(LiveNotificationSchema);
|
|
139
|
-
export const validateLiveNotificationArray = createArrayValidator(validateLiveNotification);
|
|
140
|
-
export const validateSyncWorkspace = createValidator(SyncWorkspaceSchema);
|
|
141
|
-
export const validateSyncWorkspaceArray = createArrayValidator(validateSyncWorkspace);
|
|
142
|
-
export const validateSyncUser = createValidator(SyncUserSchema);
|
|
143
|
-
export const validateUserSettings = createValidator(UserSettingsSchema);
|
|
144
|
-
export const validateSuggestion = createValidator(SuggestionSchema);
|
|
145
|
-
export const validateSuggestionArray = createArrayValidator(validateSuggestion);
|
|
56
|
+
export const { validate: validateFilter, validateArray: validateFilterArray } = createValidator(FilterSchema);
|
|
57
|
+
export const { validate: validateCollaborator, validateArray: validateCollaboratorArray } = createValidator(CollaboratorSchema);
|
|
58
|
+
export const { validate: validateCollaboratorState, validateArray: validateCollaboratorStateArray, } = createValidator(CollaboratorStateSchema);
|
|
59
|
+
export const { validate: validateFolder, validateArray: validateFolderArray } = createValidator(FolderSchema);
|
|
60
|
+
export const { validate: validateGoal, validateArray: validateGoalArray } = createValidator(GoalSchema);
|
|
61
|
+
export const { validate: validateNote, validateArray: validateNoteArray } = createValidator(NoteSchema);
|
|
62
|
+
export const { validate: validateTooltips } = createValidator(TooltipsSchema);
|
|
63
|
+
export const { validate: validateWorkspaceFilter, validateArray: validateWorkspaceFilterArray } = createValidator(WorkspaceFilterSchema);
|
|
64
|
+
export const { validate: validateWorkspaceGoal, validateArray: validateWorkspaceGoalArray } = createValidator(WorkspaceGoalSchema);
|
|
65
|
+
export const { validate: validateCalendar, validateArray: validateCalendarArray } = createValidator(CalendarSchema);
|
|
66
|
+
export const { validate: validateCalendarAccount, validateArray: validateCalendarAccountArray } = createValidator(CalendarAccountSchema);
|
|
67
|
+
export const { validate: validateReminder, validateArray: validateReminderArray } = createValidator(ReminderSchema);
|
|
68
|
+
export const { validate: validateLocationReminder, validateArray: validateLocationReminderArray } = createValidator(LocationReminderSchema);
|
|
69
|
+
export const { validate: validateCompletedInfo, validateArray: validateCompletedInfoArray } = createValidator(CompletedInfoSchema);
|
|
70
|
+
export const { validate: validateViewOptions, validateArray: validateViewOptionsArray } = createValidator(ViewOptionsSchema);
|
|
71
|
+
export const { validate: validateProjectViewOptionsDefaults, validateArray: validateProjectViewOptionsDefaultsArray, } = createValidator(ProjectViewOptionsDefaultsSchema);
|
|
72
|
+
export const { validate: validateUserPlanLimits } = createValidator(UserPlanLimitsSchema);
|
|
73
|
+
export const { validate: validateLiveNotification, validateArray: validateLiveNotificationArray } = createValidator(LiveNotificationSchema);
|
|
74
|
+
export const { validate: validateSyncWorkspace, validateArray: validateSyncWorkspaceArray } = createValidator(SyncWorkspaceSchema);
|
|
75
|
+
export const { validate: validateSyncUser } = createValidator(SyncUserSchema);
|
|
76
|
+
export const { validate: validateUserSettings } = createValidator(UserSettingsSchema);
|
|
77
|
+
export const { validate: validateSuggestion, validateArray: validateSuggestionArray } = createValidator(SuggestionSchema);
|
|
146
78
|
export function parseSyncResponse(raw) {
|
|
147
|
-
return
|
|
148
|
-
? { remindersLocation: validateLocationReminderArray(raw.remindersLocation) }
|
|
149
|
-
: {})), ('user' in raw ? { user: validateSyncUser(raw.user) } : {})), ('liveNotifications' in raw
|
|
150
|
-
? { liveNotifications: validateLiveNotificationArray(raw.liveNotifications) }
|
|
151
|
-
: {})), ('collaborators' in raw
|
|
152
|
-
? { collaborators: validateCollaboratorArray(raw.collaborators) }
|
|
153
|
-
: {})), ('collaboratorStates' in raw
|
|
154
|
-
? { collaboratorStates: validateCollaboratorStateArray(raw.collaboratorStates) }
|
|
155
|
-
: {})), ('userSettings' in raw ? { userSettings: validateUserSettings(raw.userSettings) } : {})), ('userPlanLimits' in raw
|
|
156
|
-
? { userPlanLimits: validateUserPlanLimits(raw.userPlanLimits) }
|
|
157
|
-
: {})), ('completedInfo' in raw
|
|
158
|
-
? { completedInfo: validateCompletedInfoArray(raw.completedInfo) }
|
|
159
|
-
: {})), ('workspaces' in raw ? { workspaces: validateSyncWorkspaceArray(raw.workspaces) } : {})), ('workspaceUsers' in raw
|
|
160
|
-
? { workspaceUsers: validateWorkspaceUserArray(raw.workspaceUsers) }
|
|
161
|
-
: {})), ('workspaceFilters' in raw
|
|
162
|
-
? { workspaceFilters: validateWorkspaceFilterArray(raw.workspaceFilters) }
|
|
163
|
-
: {})), ('viewOptions' in raw ? { viewOptions: validateViewOptionsArray(raw.viewOptions) } : {})), ('projectViewOptionsDefaults' in raw
|
|
164
|
-
? {
|
|
165
|
-
projectViewOptionsDefaults: validateProjectViewOptionsDefaultsArray(raw.projectViewOptionsDefaults),
|
|
166
|
-
}
|
|
167
|
-
: {})), ('folders' in raw ? { folders: validateFolderArray(raw.folders) } : {})), ('goals' in raw ? { goals: validateGoalArray(raw.goals) } : {})), ('workspaceGoals' in raw
|
|
168
|
-
? { workspaceGoals: validateWorkspaceGoalArray(raw.workspaceGoals) }
|
|
169
|
-
: {})), ('calendars' in raw ? { calendars: validateCalendarArray(raw.calendars) } : {})), ('calendarAccounts' in raw
|
|
170
|
-
? { calendarAccounts: validateCalendarAccountArray(raw.calendarAccounts) }
|
|
171
|
-
: {})), ('suggestions' in raw ? { suggestions: validateSuggestionArray(raw.suggestions) } : {})), ('tooltips' in raw ? { tooltips: validateTooltips(raw.tooltips) } : {}));
|
|
79
|
+
return SyncResponseSchema.parse(raw);
|
|
172
80
|
}
|
|
@@ -260,6 +260,11 @@ export declare class TodoistApi {
|
|
|
260
260
|
/**
|
|
261
261
|
* Deletes a project by its ID.
|
|
262
262
|
*
|
|
263
|
+
* If the project is a workspace project, it must have been
|
|
264
|
+
* archived first before it can be deleted, otherwise calling
|
|
265
|
+
* this function will result in an error. Personal projects can
|
|
266
|
+
* be deleted regardless of their archived status.
|
|
267
|
+
*
|
|
263
268
|
* @param id - The unique identifier of the project to delete.
|
|
264
269
|
* @param requestId - Optional custom identifier for the request.
|
|
265
270
|
* @returns A promise that resolves to `true` if successful.
|
|
@@ -192,6 +192,61 @@ export type PersonalProject = z.infer<typeof PersonalProjectSchema>;
|
|
|
192
192
|
* @see https://developer.todoist.com/api/v1/#tag/Projects
|
|
193
193
|
*/
|
|
194
194
|
export type WorkspaceProject = z.infer<typeof WorkspaceProjectSchema>;
|
|
195
|
+
/**
|
|
196
|
+
* Schema for any project type in Todoist (personal or workspace).
|
|
197
|
+
* Dispatches to WorkspaceProjectSchema when workspaceId is present, PersonalProjectSchema otherwise.
|
|
198
|
+
*/
|
|
199
|
+
export declare const ProjectSchema: z.ZodPipe<z.ZodUnknown, z.ZodTransform<{
|
|
200
|
+
url: string;
|
|
201
|
+
id: string;
|
|
202
|
+
canAssignTasks: boolean;
|
|
203
|
+
childOrder: number;
|
|
204
|
+
color: string;
|
|
205
|
+
createdAt: string | null;
|
|
206
|
+
isArchived: boolean;
|
|
207
|
+
isDeleted: boolean;
|
|
208
|
+
isFavorite: boolean;
|
|
209
|
+
isFrozen: boolean;
|
|
210
|
+
name: string;
|
|
211
|
+
updatedAt: string | null;
|
|
212
|
+
viewStyle: string;
|
|
213
|
+
defaultOrder: number;
|
|
214
|
+
description: string;
|
|
215
|
+
isCollapsed: boolean;
|
|
216
|
+
isShared: boolean;
|
|
217
|
+
parentId: string | null;
|
|
218
|
+
inboxProject: boolean;
|
|
219
|
+
} | {
|
|
220
|
+
url: string;
|
|
221
|
+
id: string;
|
|
222
|
+
canAssignTasks: boolean;
|
|
223
|
+
childOrder: number;
|
|
224
|
+
color: string;
|
|
225
|
+
createdAt: string | null;
|
|
226
|
+
isArchived: boolean;
|
|
227
|
+
isDeleted: boolean;
|
|
228
|
+
isFavorite: boolean;
|
|
229
|
+
isFrozen: boolean;
|
|
230
|
+
name: string;
|
|
231
|
+
updatedAt: string | null;
|
|
232
|
+
viewStyle: string;
|
|
233
|
+
defaultOrder: number;
|
|
234
|
+
description: string;
|
|
235
|
+
isCollapsed: boolean;
|
|
236
|
+
isShared: boolean;
|
|
237
|
+
collaboratorRoleDefault: string;
|
|
238
|
+
folderId: string | null;
|
|
239
|
+
isInviteOnly: boolean | null;
|
|
240
|
+
isLinkSharingEnabled: boolean;
|
|
241
|
+
role: string | null;
|
|
242
|
+
status: string;
|
|
243
|
+
workspaceId: string;
|
|
244
|
+
access?: {
|
|
245
|
+
visibility: "restricted" | "team" | "public";
|
|
246
|
+
} | undefined;
|
|
247
|
+
}, unknown>>;
|
|
248
|
+
/** A project in Todoist — either a {@link PersonalProject} or a {@link WorkspaceProject}. */
|
|
249
|
+
export type Project = z.infer<typeof ProjectSchema>;
|
|
195
250
|
/** Available project view styles. */
|
|
196
251
|
export declare const PROJECT_VIEW_STYLES: readonly ["list", "board", "calendar"];
|
|
197
252
|
/**
|