@doist/todoist-sdk 8.4.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/test-utils/test-defaults.js +15 -12
- package/dist/cjs/types/activity/types.js +1 -1
- package/dist/cjs/types/comments/types.js +1 -1
- package/dist/cjs/types/insights/types.js +6 -4
- package/dist/cjs/types/projects/types.js +13 -3
- package/dist/cjs/types/sections/types.js +3 -3
- package/dist/cjs/types/sync/resources/live-notifications.js +1 -1
- package/dist/cjs/types/sync/resources/notes.js +1 -1
- package/dist/cjs/types/sync/resources/user.js +4 -4
- package/dist/cjs/types/sync/resources/workspace-filters.js +2 -2
- package/dist/cjs/types/sync/resources/workspace-goals.js +2 -2
- package/dist/cjs/types/sync/resources/workspaces.js +3 -3
- package/dist/cjs/types/sync/response.js +53 -0
- package/dist/cjs/types/tasks/types.js +3 -3
- package/dist/cjs/types/workspaces/types.js +3 -3
- package/dist/cjs/utils/validators.js +56 -133
- package/dist/esm/test-utils/test-defaults.js +15 -12
- package/dist/esm/types/activity/types.js +1 -1
- package/dist/esm/types/comments/types.js +1 -1
- package/dist/esm/types/insights/types.js +6 -4
- package/dist/esm/types/projects/types.js +12 -2
- package/dist/esm/types/sections/types.js +3 -3
- package/dist/esm/types/sync/resources/live-notifications.js +1 -1
- package/dist/esm/types/sync/resources/notes.js +1 -1
- package/dist/esm/types/sync/resources/user.js +4 -4
- package/dist/esm/types/sync/resources/workspace-filters.js +2 -2
- package/dist/esm/types/sync/resources/workspace-goals.js +2 -2
- package/dist/esm/types/sync/resources/workspaces.js +3 -3
- package/dist/esm/types/sync/response.js +52 -1
- package/dist/esm/types/tasks/types.js +3 -3
- package/dist/esm/types/workspaces/types.js +3 -3
- package/dist/esm/utils/validators.js +54 -129
- package/dist/types/consts/endpoints.d.ts +2 -2
- package/dist/types/test-utils/test-defaults.d.ts +13 -13
- package/dist/types/todoist-api.d.ts +1 -1
- package/dist/types/types/activity/types.d.ts +1 -1
- package/dist/types/types/comments/types.d.ts +4 -4
- package/dist/types/types/folders/requests.d.ts +2 -2
- package/dist/types/types/insights/types.d.ts +9 -9
- package/dist/types/types/projects/requests.d.ts +1 -1
- package/dist/types/types/projects/types.d.ts +69 -14
- package/dist/types/types/sections/types.d.ts +9 -9
- package/dist/types/types/sync/commands/workspaces.d.ts +1 -1
- package/dist/types/types/sync/resources/live-notifications.d.ts +1 -1
- package/dist/types/types/sync/resources/notes.d.ts +1 -1
- package/dist/types/types/sync/resources/user.d.ts +4 -4
- package/dist/types/types/sync/resources/workspace-filters.d.ts +2 -2
- package/dist/types/types/sync/resources/workspace-goals.d.ts +2 -2
- package/dist/types/types/sync/resources/workspaces.d.ts +8 -8
- package/dist/types/types/sync/response.d.ts +917 -51
- package/dist/types/types/tasks/types.d.ts +9 -9
- package/dist/types/types/workspaces/requests.d.ts +7 -7
- package/dist/types/types/workspaces/types.d.ts +6 -6
- package/dist/types/utils/validators.d.ts +187 -117
- package/package.json +1 -1
|
@@ -15,6 +15,9 @@ const DEFAULT_PARENT_ID = '5678';
|
|
|
15
15
|
const DEFAULT_ASSIGNEE = '1234';
|
|
16
16
|
const DEFAULT_CREATOR = '1234';
|
|
17
17
|
const DEFAULT_DATE = '2020-09-08T12:00:00Z';
|
|
18
|
+
function defaultDate() {
|
|
19
|
+
return new Date(DEFAULT_DATE);
|
|
20
|
+
}
|
|
18
21
|
const DEFAULT_ENTITY_COLOR = 'berry_red';
|
|
19
22
|
const DEFAULT_LABELS = ['personal', 'work', 'hobby'];
|
|
20
23
|
const DEFAULT_USER_ID = '5';
|
|
@@ -64,9 +67,9 @@ export const DEFAULT_TASK = {
|
|
|
64
67
|
duration: DEFAULT_DURATION,
|
|
65
68
|
checked: false,
|
|
66
69
|
isDeleted: DEFAULT_IS_DELETED,
|
|
67
|
-
addedAt:
|
|
70
|
+
addedAt: defaultDate(),
|
|
68
71
|
completedAt: null,
|
|
69
|
-
updatedAt:
|
|
72
|
+
updatedAt: defaultDate(),
|
|
70
73
|
due: DEFAULT_DUE_DATE,
|
|
71
74
|
priority: DEFAULT_TASK_PRIORITY,
|
|
72
75
|
childOrder: DEFAULT_ORDER,
|
|
@@ -92,9 +95,9 @@ export const TASK_WITH_OPTIONALS_AS_NULL = {
|
|
|
92
95
|
duration: null,
|
|
93
96
|
checked: false,
|
|
94
97
|
isDeleted: DEFAULT_IS_DELETED,
|
|
95
|
-
addedAt:
|
|
98
|
+
addedAt: defaultDate(),
|
|
96
99
|
completedAt: null,
|
|
97
|
-
updatedAt:
|
|
100
|
+
updatedAt: defaultDate(),
|
|
98
101
|
due: null,
|
|
99
102
|
priority: DEFAULT_TASK_PRIORITY,
|
|
100
103
|
childOrder: DEFAULT_ORDER,
|
|
@@ -119,8 +122,8 @@ export const DEFAULT_PROJECT = {
|
|
|
119
122
|
isArchived: DEFAULT_IS_ARCHIVED,
|
|
120
123
|
isDeleted: DEFAULT_IS_DELETED,
|
|
121
124
|
isFrozen: DEFAULT_IS_FROZEN,
|
|
122
|
-
createdAt:
|
|
123
|
-
updatedAt:
|
|
125
|
+
createdAt: defaultDate(),
|
|
126
|
+
updatedAt: defaultDate(),
|
|
124
127
|
defaultOrder: DEFAULT_ORDER,
|
|
125
128
|
description: '',
|
|
126
129
|
isCollapsed: DEFAULT_IS_COLLAPSED,
|
|
@@ -140,8 +143,8 @@ export const DEFAULT_WORKSPACE_PROJECT = {
|
|
|
140
143
|
isArchived: DEFAULT_IS_ARCHIVED,
|
|
141
144
|
isDeleted: DEFAULT_IS_DELETED,
|
|
142
145
|
isFrozen: DEFAULT_IS_FROZEN,
|
|
143
|
-
createdAt:
|
|
144
|
-
updatedAt:
|
|
146
|
+
createdAt: defaultDate(),
|
|
147
|
+
updatedAt: defaultDate(),
|
|
145
148
|
defaultOrder: DEFAULT_ORDER,
|
|
146
149
|
description: '',
|
|
147
150
|
isCollapsed: DEFAULT_IS_COLLAPSED,
|
|
@@ -158,8 +161,8 @@ export const DEFAULT_SECTION = {
|
|
|
158
161
|
id: DEFAULT_SECTION_ID,
|
|
159
162
|
userId: DEFAULT_USER_ID,
|
|
160
163
|
projectId: DEFAULT_PROJECT_ID,
|
|
161
|
-
addedAt: '2025-03-28T14:01:23.334881Z',
|
|
162
|
-
updatedAt: '2025-03-28T14:01:23.334885Z',
|
|
164
|
+
addedAt: new Date('2025-03-28T14:01:23.334881Z'),
|
|
165
|
+
updatedAt: new Date('2025-03-28T14:01:23.334885Z'),
|
|
163
166
|
archivedAt: null,
|
|
164
167
|
name: DEFAULT_SECTION_NAME,
|
|
165
168
|
sectionOrder: DEFAULT_ORDER,
|
|
@@ -197,7 +200,7 @@ export const DEFAULT_RAW_COMMENT = {
|
|
|
197
200
|
fileAttachment: DEFAULT_ATTACHMENT,
|
|
198
201
|
uidsToNotify: null,
|
|
199
202
|
isDeleted: false,
|
|
200
|
-
postedAt:
|
|
203
|
+
postedAt: defaultDate(),
|
|
201
204
|
reactions: DEFAULT_COMMENT_REACTIONS,
|
|
202
205
|
itemId: DEFAULT_TASK_ID,
|
|
203
206
|
};
|
|
@@ -278,7 +281,7 @@ export const DEFAULT_NOTE = {
|
|
|
278
281
|
id: DEFAULT_COMMENT_ID,
|
|
279
282
|
projectId: DEFAULT_PROJECT_ID,
|
|
280
283
|
content: DEFAULT_COMMENT_CONTENT,
|
|
281
|
-
postedAt:
|
|
284
|
+
postedAt: defaultDate(),
|
|
282
285
|
fileAttachment: DEFAULT_ATTACHMENT,
|
|
283
286
|
postedUid: DEFAULT_USER_ID,
|
|
284
287
|
uidsToNotify: null,
|
|
@@ -12,7 +12,7 @@ export const ActivityEventSchema = z
|
|
|
12
12
|
objectType: z.string(),
|
|
13
13
|
objectId: z.string(),
|
|
14
14
|
eventType: z.string(),
|
|
15
|
-
eventDate: z.
|
|
15
|
+
eventDate: z.coerce.date(),
|
|
16
16
|
id: z
|
|
17
17
|
.union([z.string(), z.number()])
|
|
18
18
|
.transform((val) => { var _a; return (_a = val === null || val === void 0 ? void 0 : val.toString()) !== null && _a !== void 0 ? _a : null; })
|
|
@@ -35,7 +35,7 @@ export const RawCommentSchema = z
|
|
|
35
35
|
itemId: z.string().optional(),
|
|
36
36
|
projectId: z.string().optional(),
|
|
37
37
|
content: z.string(),
|
|
38
|
-
postedAt: z.
|
|
38
|
+
postedAt: z.coerce.date(),
|
|
39
39
|
fileAttachment: AttachmentSchema.nullable(),
|
|
40
40
|
postedUid: z.string(),
|
|
41
41
|
uidsToNotify: z.array(z.string()).nullable(),
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export const DayActivitySchema = z.object({
|
|
3
|
+
// Kept as string: this is a calendar-day bucket (e.g. '2025-01-13'), not a timestamp.
|
|
4
|
+
// Coercing to Date would create UTC midnight, causing day-shift for non-UTC consumers.
|
|
3
5
|
date: z.string(),
|
|
4
6
|
totalCount: z.number().int(),
|
|
5
7
|
});
|
|
@@ -31,7 +33,7 @@ export const ProjectHealthSchema = z.object({
|
|
|
31
33
|
descriptionSummary: z.string().nullable().optional(),
|
|
32
34
|
taskRecommendations: z.array(TaskRecommendationSchema).nullable().optional(),
|
|
33
35
|
projectId: z.string().nullable().optional(),
|
|
34
|
-
updatedAt: z.
|
|
36
|
+
updatedAt: z.coerce.date().nullable().optional(),
|
|
35
37
|
isStale: z.boolean().default(false),
|
|
36
38
|
updateInProgress: z.boolean().default(false),
|
|
37
39
|
});
|
|
@@ -50,9 +52,9 @@ export const TaskContextSchema = z.object({
|
|
|
50
52
|
deadline: z.string().nullable().optional(),
|
|
51
53
|
priority: z.string(),
|
|
52
54
|
isCompleted: z.boolean(),
|
|
53
|
-
createdAt: z.
|
|
54
|
-
updatedAt: z.
|
|
55
|
-
completedAt: z.
|
|
55
|
+
createdAt: z.coerce.date(),
|
|
56
|
+
updatedAt: z.coerce.date(),
|
|
57
|
+
completedAt: z.coerce.date().nullable(),
|
|
56
58
|
completedByUid: z.string().nullable(),
|
|
57
59
|
labels: z.array(z.string()),
|
|
58
60
|
});
|
|
@@ -9,13 +9,13 @@ export const BaseProjectSchema = z.object({
|
|
|
9
9
|
canAssignTasks: z.boolean(),
|
|
10
10
|
childOrder: z.number().int(),
|
|
11
11
|
color: z.string(),
|
|
12
|
-
createdAt: z.
|
|
12
|
+
createdAt: z.coerce.date().nullable(),
|
|
13
13
|
isArchived: z.boolean(),
|
|
14
14
|
isDeleted: z.boolean(),
|
|
15
15
|
isFavorite: z.boolean(),
|
|
16
16
|
isFrozen: z.boolean(),
|
|
17
17
|
name: z.string(),
|
|
18
|
-
updatedAt: z.
|
|
18
|
+
updatedAt: z.coerce.date().nullable(),
|
|
19
19
|
viewStyle: z.string(),
|
|
20
20
|
defaultOrder: z.number().int(),
|
|
21
21
|
description: z.string(),
|
|
@@ -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'];
|
|
@@ -5,9 +5,9 @@ export const SectionSchema = z
|
|
|
5
5
|
id: z.string(),
|
|
6
6
|
userId: z.string(),
|
|
7
7
|
projectId: z.string(),
|
|
8
|
-
addedAt: z.
|
|
9
|
-
updatedAt: z.
|
|
10
|
-
archivedAt: z.
|
|
8
|
+
addedAt: z.coerce.date(),
|
|
9
|
+
updatedAt: z.coerce.date(),
|
|
10
|
+
archivedAt: z.coerce.date().nullable(),
|
|
11
11
|
name: z.string(),
|
|
12
12
|
sectionOrder: z.number().int(),
|
|
13
13
|
isArchived: z.boolean(),
|
|
@@ -9,7 +9,7 @@ export const NoteSchema = z.looseObject({
|
|
|
9
9
|
itemId: z.string().optional(),
|
|
10
10
|
projectId: z.string().optional(),
|
|
11
11
|
content: z.string(),
|
|
12
|
-
postedAt: z.
|
|
12
|
+
postedAt: z.coerce.date(),
|
|
13
13
|
fileAttachment: AttachmentSchema.nullable(),
|
|
14
14
|
postedUid: z.string(),
|
|
15
15
|
uidsToNotify: z.array(z.string()).nullable(),
|
|
@@ -54,7 +54,7 @@ export const SyncUserSchema = z.looseObject({
|
|
|
54
54
|
daysOff: z.array(z.number().int()),
|
|
55
55
|
featureIdentifier: z.string(),
|
|
56
56
|
features: FeaturesSchema,
|
|
57
|
-
freeTrailExpires: z.
|
|
57
|
+
freeTrailExpires: z.coerce.date().optional(),
|
|
58
58
|
hasMagicNumber: z.boolean(),
|
|
59
59
|
hasPassword: z.boolean(),
|
|
60
60
|
hasStartedATrial: z.boolean().optional(),
|
|
@@ -63,7 +63,7 @@ export const SyncUserSchema = z.looseObject({
|
|
|
63
63
|
isCelebrationsEnabled: z.boolean(),
|
|
64
64
|
isPremium: z.boolean(),
|
|
65
65
|
joinableWorkspace: JoinableWorkspaceSchema.nullable(),
|
|
66
|
-
joinedAt: z.
|
|
66
|
+
joinedAt: z.coerce.date(),
|
|
67
67
|
gettingStartedGuideProjects: z.array(GettingStartedGuideProjectSchema).nullable(),
|
|
68
68
|
karma: z.number(),
|
|
69
69
|
karmaTrend: z.string(),
|
|
@@ -81,13 +81,13 @@ export const SyncUserSchema = z.looseObject({
|
|
|
81
81
|
onboardingTeamMode: z.boolean().nullable().optional(),
|
|
82
82
|
onboardingUseCases: z.array(z.string()).nullable().optional(),
|
|
83
83
|
premiumStatus: z.enum(PREMIUM_STATUSES),
|
|
84
|
-
premiumUntil: z.
|
|
84
|
+
premiumUntil: z.coerce.date().nullable(),
|
|
85
85
|
rambleSessionsUsage: z
|
|
86
86
|
.object({
|
|
87
87
|
currentCount: z.number().int(),
|
|
88
88
|
limit: z.number().int(),
|
|
89
89
|
remaining: z.number().int(),
|
|
90
|
-
resetDate: z.
|
|
90
|
+
resetDate: z.coerce.date(),
|
|
91
91
|
})
|
|
92
92
|
.nullable()
|
|
93
93
|
.optional(),
|
|
@@ -18,6 +18,6 @@ export const WorkspaceGoalSchema = z.looseObject({
|
|
|
18
18
|
projectIds: z.array(z.string()),
|
|
19
19
|
progress: WorkspaceGoalProgressSchema.nullable(),
|
|
20
20
|
creatorUid: z.string(),
|
|
21
|
-
createdAt: z.
|
|
22
|
-
updatedAt: z.
|
|
21
|
+
createdAt: z.coerce.date(),
|
|
22
|
+
updatedAt: z.coerce.date(),
|
|
23
23
|
});
|
|
@@ -29,8 +29,8 @@ export const SyncWorkspaceSchema = z
|
|
|
29
29
|
logoSmall: z.string().optional(),
|
|
30
30
|
logoS640: z.string().optional(),
|
|
31
31
|
creatorId: StringOrNumberSchema,
|
|
32
|
-
createdAt: z.
|
|
33
|
-
dateCreated: z.
|
|
32
|
+
createdAt: z.coerce.date().optional(),
|
|
33
|
+
dateCreated: z.coerce.date().optional(),
|
|
34
34
|
isDeleted: z.boolean(),
|
|
35
35
|
isCollapsed: z.boolean(),
|
|
36
36
|
role: WorkspaceRoleSchema.optional(),
|
|
@@ -58,7 +58,7 @@ export const SyncWorkspaceSchema = z
|
|
|
58
58
|
defaultCollaborators: z
|
|
59
59
|
.object({
|
|
60
60
|
predefinedGroupIds: z.array(z.string()),
|
|
61
|
-
userIds: z.array(
|
|
61
|
+
userIds: z.array(StringOrNumberSchema),
|
|
62
62
|
})
|
|
63
63
|
.optional(),
|
|
64
64
|
properties: WorkspacePropertiesSchema.optional(),
|
|
@@ -1 +1,52 @@
|
|
|
1
|
-
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { LabelSchema } from '../labels/types.js';
|
|
3
|
+
import { ProjectSchema } from '../projects/types.js';
|
|
4
|
+
import { SectionSchema } from '../sections/types.js';
|
|
5
|
+
import { TaskSchema } from '../tasks/types.js';
|
|
6
|
+
import { WorkspaceUserSchema } from '../workspaces/types.js';
|
|
7
|
+
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';
|
|
8
|
+
export const SyncErrorSchema = z.object({
|
|
9
|
+
error: z.string(),
|
|
10
|
+
errorCode: z.number(),
|
|
11
|
+
errorExtra: z.record(z.string(), z.unknown()),
|
|
12
|
+
errorTag: z.string(),
|
|
13
|
+
httpCode: z.number(),
|
|
14
|
+
});
|
|
15
|
+
export const SyncResponseSchema = z.looseObject({
|
|
16
|
+
syncToken: z.string().optional(),
|
|
17
|
+
fullSync: z.boolean().optional(),
|
|
18
|
+
syncStatus: z.record(z.string(), z.union([z.literal('ok'), SyncErrorSchema])).optional(),
|
|
19
|
+
tempIdMapping: z.record(z.string(), z.string()).optional(),
|
|
20
|
+
items: z.array(TaskSchema).optional(),
|
|
21
|
+
projects: z.array(ProjectSchema).optional(),
|
|
22
|
+
sections: z.array(SectionSchema).optional(),
|
|
23
|
+
labels: z.array(LabelSchema).optional(),
|
|
24
|
+
notes: z.array(NoteSchema).optional(),
|
|
25
|
+
projectNotes: z.array(NoteSchema).optional(),
|
|
26
|
+
filters: z.array(FilterSchema).optional(),
|
|
27
|
+
reminders: z.array(ReminderSchema).optional(),
|
|
28
|
+
remindersLocation: z.array(LocationReminderSchema).optional(),
|
|
29
|
+
locations: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
30
|
+
user: SyncUserSchema.optional(),
|
|
31
|
+
liveNotifications: z.array(LiveNotificationSchema).optional(),
|
|
32
|
+
collaborators: z.array(CollaboratorSchema).optional(),
|
|
33
|
+
collaboratorStates: z.array(CollaboratorStateSchema).optional(),
|
|
34
|
+
userSettings: UserSettingsSchema.optional(),
|
|
35
|
+
notificationSettings: z.record(z.string(), z.boolean()).optional(),
|
|
36
|
+
userPlanLimits: UserPlanLimitsSchema.optional(),
|
|
37
|
+
completedInfo: z.array(CompletedInfoSchema).optional(),
|
|
38
|
+
stats: z.record(z.string(), z.unknown()).optional(),
|
|
39
|
+
workspaces: z.array(SyncWorkspaceSchema).optional(),
|
|
40
|
+
workspaceUsers: z.array(WorkspaceUserSchema).optional(),
|
|
41
|
+
workspaceFilters: z.array(WorkspaceFilterSchema).optional(),
|
|
42
|
+
viewOptions: z.array(ViewOptionsSchema).optional(),
|
|
43
|
+
projectViewOptionsDefaults: z.array(ProjectViewOptionsDefaultsSchema).optional(),
|
|
44
|
+
roleActions: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
45
|
+
folders: z.array(FolderSchema).optional(),
|
|
46
|
+
workspaceGoals: z.array(WorkspaceGoalSchema).optional(),
|
|
47
|
+
dayOrders: z.record(z.string(), z.number()).optional(),
|
|
48
|
+
calendars: z.array(CalendarSchema).optional(),
|
|
49
|
+
calendarAccounts: z.array(CalendarAccountSchema).optional(),
|
|
50
|
+
suggestions: z.array(SuggestionSchema).optional(),
|
|
51
|
+
tooltips: TooltipsSchema.optional(),
|
|
52
|
+
});
|
|
@@ -37,9 +37,9 @@ export const TaskSchema = z
|
|
|
37
37
|
duration: DurationSchema.nullable(),
|
|
38
38
|
checked: z.boolean(),
|
|
39
39
|
isDeleted: z.boolean(),
|
|
40
|
-
addedAt: z.
|
|
41
|
-
completedAt: z.
|
|
42
|
-
updatedAt: z.
|
|
40
|
+
addedAt: z.coerce.date().nullable(),
|
|
41
|
+
completedAt: z.coerce.date().nullable(),
|
|
42
|
+
updatedAt: z.coerce.date().nullable(),
|
|
43
43
|
due: DueDateSchema.nullable(),
|
|
44
44
|
priority: z.number().int(),
|
|
45
45
|
childOrder: z.number().int(),
|
|
@@ -71,7 +71,7 @@ export const WorkspacePlanDetailsSchema = z.object({
|
|
|
71
71
|
currentActiveProjects: z.number(),
|
|
72
72
|
maximumActiveProjects: z.number(),
|
|
73
73
|
priceList: z.array(FormattedPriceListingSchema),
|
|
74
|
-
workspaceId:
|
|
74
|
+
workspaceId: StringOrNumberSchema,
|
|
75
75
|
isTrialing: z.boolean(),
|
|
76
76
|
trialEndsAt: z.string().nullable(),
|
|
77
77
|
cancelAtPeriodEnd: z.boolean(),
|
|
@@ -122,8 +122,8 @@ export const WorkspaceSchema = z
|
|
|
122
122
|
logoMedium: z.string().nullish(),
|
|
123
123
|
logoSmall: z.string().nullish(),
|
|
124
124
|
logoS640: z.string().nullish(),
|
|
125
|
-
createdAt: z.
|
|
126
|
-
dateCreated: z.
|
|
125
|
+
createdAt: z.coerce.date().optional(),
|
|
126
|
+
dateCreated: z.coerce.date().optional(),
|
|
127
127
|
creatorId: StringOrNumberSchema,
|
|
128
128
|
properties: WorkspacePropertiesSchema,
|
|
129
129
|
})
|
|
@@ -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';
|
|
@@ -5,149 +6,73 @@ import { IdMappingSchema, MovedIdSchema } from '../types/id-mappings/types.js';
|
|
|
5
6
|
import { ProjectActivityStatsSchema, ProjectHealthSchema, ProjectHealthContextSchema, ProjectProgressSchema, WorkspaceInsightsSchema, } from '../types/insights/types.js';
|
|
6
7
|
import { LabelSchema } from '../types/labels/types.js';
|
|
7
8
|
import { ProductivityStatsSchema } from '../types/productivity/types.js';
|
|
8
|
-
import {
|
|
9
|
+
import { WorkspaceProjectSchema, ProjectSchema } from '../types/projects/types.js';
|
|
9
10
|
import { SectionSchema } from '../types/sections/types.js';
|
|
11
|
+
import { SyncResponseSchema } from '../types/sync/response.js';
|
|
10
12
|
import { TaskSchema } from '../types/tasks/types.js';
|
|
11
13
|
import { UserSchema, CurrentUserSchema } from '../types/users/types.js';
|
|
12
14
|
import { WorkspaceUserSchema, WorkspaceInvitationSchema, WorkspacePlanDetailsSchema, JoinWorkspaceResultSchema, WorkspaceSchema, MemberActivityInfoSchema, WorkspaceUserTaskSchema, } from '../types/workspaces/types.js';
|
|
13
15
|
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';
|
|
14
16
|
function createValidator(schema) {
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return (input) => {
|
|
19
|
-
if (!Array.isArray(input)) {
|
|
20
|
-
throw new TypeError(`Expected array, got ${typeof input}`);
|
|
21
|
-
}
|
|
22
|
-
return input.map(validateItem);
|
|
17
|
+
return {
|
|
18
|
+
validate: (input) => schema.parse(input),
|
|
19
|
+
validateArray: (input) => z.array(schema).parse(input),
|
|
23
20
|
};
|
|
24
21
|
}
|
|
25
22
|
// Entity validators
|
|
26
|
-
export const validateTask = createValidator(TaskSchema);
|
|
27
|
-
export const validateTaskArray = createArrayValidator(validateTask);
|
|
23
|
+
export const { validate: validateTask, validateArray: validateTaskArray } = createValidator(TaskSchema);
|
|
28
24
|
/**
|
|
29
25
|
* Validates and parses a project input.
|
|
30
26
|
* @param input The input to validate
|
|
31
27
|
* @returns A validated project (either PersonalProject or WorkspaceProject)
|
|
32
28
|
*/
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
export const
|
|
46
|
-
export const
|
|
47
|
-
export const
|
|
48
|
-
export const
|
|
49
|
-
export const
|
|
50
|
-
export const
|
|
51
|
-
export const
|
|
52
|
-
export const
|
|
53
|
-
export const
|
|
54
|
-
export const
|
|
55
|
-
export const
|
|
56
|
-
export const
|
|
57
|
-
export const
|
|
58
|
-
export const validateActivityEventArray = createArrayValidator(validateActivityEvent);
|
|
59
|
-
export const validateAttachment = createValidator(AttachmentSchema);
|
|
60
|
-
export const validateWorkspaceUser = createValidator(WorkspaceUserSchema);
|
|
61
|
-
export function validateWorkspaceUserArray(input) {
|
|
62
|
-
if (!Array.isArray(input)) {
|
|
63
|
-
throw new Error(`Expected array for workspace users, got ${typeof input}`);
|
|
64
|
-
}
|
|
65
|
-
return input.map(validateWorkspaceUser);
|
|
66
|
-
}
|
|
67
|
-
export const validateWorkspaceInvitation = createValidator(WorkspaceInvitationSchema);
|
|
68
|
-
export const validateWorkspaceInvitationArray = createArrayValidator(validateWorkspaceInvitation);
|
|
69
|
-
export const validateWorkspacePlanDetails = createValidator(WorkspacePlanDetailsSchema);
|
|
70
|
-
export const validateJoinWorkspaceResult = createValidator(JoinWorkspaceResultSchema);
|
|
71
|
-
export const validateWorkspace = createValidator(WorkspaceSchema);
|
|
72
|
-
export const validateWorkspaceArray = createArrayValidator(validateWorkspace);
|
|
73
|
-
export const validateMemberActivityInfo = createValidator(MemberActivityInfoSchema);
|
|
74
|
-
export const validateMemberActivityInfoArray = createArrayValidator(validateMemberActivityInfo);
|
|
75
|
-
export const validateWorkspaceUserTask = createValidator(WorkspaceUserTaskSchema);
|
|
76
|
-
export const validateWorkspaceUserTaskArray = createArrayValidator(validateWorkspaceUserTask);
|
|
77
|
-
export const validateProjectActivityStats = createValidator(ProjectActivityStatsSchema);
|
|
78
|
-
export const validateProjectHealth = createValidator(ProjectHealthSchema);
|
|
79
|
-
export const validateProjectHealthContext = createValidator(ProjectHealthContextSchema);
|
|
80
|
-
export const validateProjectProgress = createValidator(ProjectProgressSchema);
|
|
81
|
-
export const validateWorkspaceInsights = createValidator(WorkspaceInsightsSchema);
|
|
82
|
-
export const validateBackup = createValidator(BackupSchema);
|
|
83
|
-
export const validateBackupArray = createArrayValidator(validateBackup);
|
|
84
|
-
export const validateIdMapping = createValidator(IdMappingSchema);
|
|
85
|
-
export const validateIdMappingArray = createArrayValidator(validateIdMapping);
|
|
86
|
-
export const validateMovedId = createValidator(MovedIdSchema);
|
|
87
|
-
export const validateMovedIdArray = createArrayValidator(validateMovedId);
|
|
29
|
+
export const { validate: validateProject, validateArray: validateProjectArray } = createValidator(ProjectSchema);
|
|
30
|
+
export const { validate: validateWorkspaceProject, validateArray: validateWorkspaceProjectArray } = createValidator(WorkspaceProjectSchema);
|
|
31
|
+
export const { validate: validateSection, validateArray: validateSectionArray } = createValidator(SectionSchema);
|
|
32
|
+
export const { validate: validateLabel, validateArray: validateLabelArray } = createValidator(LabelSchema);
|
|
33
|
+
export const { validate: validateComment, validateArray: validateCommentArray } = createValidator(CommentSchema);
|
|
34
|
+
export const { validate: validateUser, validateArray: validateUserArray } = createValidator(UserSchema);
|
|
35
|
+
export const { validate: validateProductivityStats } = createValidator(ProductivityStatsSchema);
|
|
36
|
+
export const { validate: validateCurrentUser } = createValidator(CurrentUserSchema);
|
|
37
|
+
export const { validate: validateActivityEvent, validateArray: validateActivityEventArray } = createValidator(ActivityEventSchema);
|
|
38
|
+
export const { validate: validateAttachment } = createValidator(AttachmentSchema);
|
|
39
|
+
export const { validate: validateWorkspaceUser, validateArray: validateWorkspaceUserArray } = createValidator(WorkspaceUserSchema);
|
|
40
|
+
export const { validate: validateWorkspaceInvitation, validateArray: validateWorkspaceInvitationArray, } = createValidator(WorkspaceInvitationSchema);
|
|
41
|
+
export const { validate: validateWorkspacePlanDetails } = createValidator(WorkspacePlanDetailsSchema);
|
|
42
|
+
export const { validate: validateJoinWorkspaceResult } = createValidator(JoinWorkspaceResultSchema);
|
|
43
|
+
export const { validate: validateWorkspace, validateArray: validateWorkspaceArray } = createValidator(WorkspaceSchema);
|
|
44
|
+
export const { validate: validateMemberActivityInfo, validateArray: validateMemberActivityInfoArray, } = createValidator(MemberActivityInfoSchema);
|
|
45
|
+
export const { validate: validateWorkspaceUserTask, validateArray: validateWorkspaceUserTaskArray, } = createValidator(WorkspaceUserTaskSchema);
|
|
46
|
+
export const { validate: validateProjectActivityStats } = createValidator(ProjectActivityStatsSchema);
|
|
47
|
+
export const { validate: validateProjectHealth } = createValidator(ProjectHealthSchema);
|
|
48
|
+
export const { validate: validateProjectHealthContext } = createValidator(ProjectHealthContextSchema);
|
|
49
|
+
export const { validate: validateProjectProgress } = createValidator(ProjectProgressSchema);
|
|
50
|
+
export const { validate: validateWorkspaceInsights } = createValidator(WorkspaceInsightsSchema);
|
|
51
|
+
export const { validate: validateBackup, validateArray: validateBackupArray } = createValidator(BackupSchema);
|
|
52
|
+
export const { validate: validateIdMapping, validateArray: validateIdMappingArray } = createValidator(IdMappingSchema);
|
|
53
|
+
export const { validate: validateMovedId, validateArray: validateMovedIdArray } = createValidator(MovedIdSchema);
|
|
88
54
|
// Sync resource validators
|
|
89
|
-
export const validateFilter = createValidator(FilterSchema);
|
|
90
|
-
export const
|
|
91
|
-
export const
|
|
92
|
-
export const
|
|
93
|
-
export const
|
|
94
|
-
export const
|
|
95
|
-
export const
|
|
96
|
-
export const
|
|
97
|
-
export const
|
|
98
|
-
export const
|
|
99
|
-
export const
|
|
100
|
-
export const
|
|
101
|
-
export const
|
|
102
|
-
export const
|
|
103
|
-
export const
|
|
104
|
-
export const
|
|
105
|
-
export const
|
|
106
|
-
export const
|
|
107
|
-
export const
|
|
108
|
-
export const
|
|
109
|
-
export const
|
|
110
|
-
export const validateLocationReminder = createValidator(LocationReminderSchema);
|
|
111
|
-
export const validateLocationReminderArray = createArrayValidator(validateLocationReminder);
|
|
112
|
-
export const validateCompletedInfo = createValidator(CompletedInfoSchema);
|
|
113
|
-
export const validateCompletedInfoArray = createArrayValidator(validateCompletedInfo);
|
|
114
|
-
export const validateViewOptions = createValidator(ViewOptionsSchema);
|
|
115
|
-
export const validateViewOptionsArray = createArrayValidator(validateViewOptions);
|
|
116
|
-
export const validateProjectViewOptionsDefaults = createValidator(ProjectViewOptionsDefaultsSchema);
|
|
117
|
-
export const validateProjectViewOptionsDefaultsArray = createArrayValidator(validateProjectViewOptionsDefaults);
|
|
118
|
-
export const validateUserPlanLimits = createValidator(UserPlanLimitsSchema);
|
|
119
|
-
export const validateLiveNotification = createValidator(LiveNotificationSchema);
|
|
120
|
-
export const validateLiveNotificationArray = createArrayValidator(validateLiveNotification);
|
|
121
|
-
export const validateSyncWorkspace = createValidator(SyncWorkspaceSchema);
|
|
122
|
-
export const validateSyncWorkspaceArray = createArrayValidator(validateSyncWorkspace);
|
|
123
|
-
export const validateSyncUser = createValidator(SyncUserSchema);
|
|
124
|
-
export const validateUserSettings = createValidator(UserSettingsSchema);
|
|
125
|
-
export const validateSuggestion = createValidator(SuggestionSchema);
|
|
126
|
-
export const validateSuggestionArray = createArrayValidator(validateSuggestion);
|
|
55
|
+
export const { validate: validateFilter, validateArray: validateFilterArray } = createValidator(FilterSchema);
|
|
56
|
+
export const { validate: validateCollaborator, validateArray: validateCollaboratorArray } = createValidator(CollaboratorSchema);
|
|
57
|
+
export const { validate: validateCollaboratorState, validateArray: validateCollaboratorStateArray, } = createValidator(CollaboratorStateSchema);
|
|
58
|
+
export const { validate: validateFolder, validateArray: validateFolderArray } = createValidator(FolderSchema);
|
|
59
|
+
export const { validate: validateNote, validateArray: validateNoteArray } = createValidator(NoteSchema);
|
|
60
|
+
export const { validate: validateTooltips } = createValidator(TooltipsSchema);
|
|
61
|
+
export const { validate: validateWorkspaceFilter, validateArray: validateWorkspaceFilterArray } = createValidator(WorkspaceFilterSchema);
|
|
62
|
+
export const { validate: validateWorkspaceGoal, validateArray: validateWorkspaceGoalArray } = createValidator(WorkspaceGoalSchema);
|
|
63
|
+
export const { validate: validateCalendar, validateArray: validateCalendarArray } = createValidator(CalendarSchema);
|
|
64
|
+
export const { validate: validateCalendarAccount, validateArray: validateCalendarAccountArray } = createValidator(CalendarAccountSchema);
|
|
65
|
+
export const { validate: validateReminder, validateArray: validateReminderArray } = createValidator(ReminderSchema);
|
|
66
|
+
export const { validate: validateLocationReminder, validateArray: validateLocationReminderArray } = createValidator(LocationReminderSchema);
|
|
67
|
+
export const { validate: validateCompletedInfo, validateArray: validateCompletedInfoArray } = createValidator(CompletedInfoSchema);
|
|
68
|
+
export const { validate: validateViewOptions, validateArray: validateViewOptionsArray } = createValidator(ViewOptionsSchema);
|
|
69
|
+
export const { validate: validateProjectViewOptionsDefaults, validateArray: validateProjectViewOptionsDefaultsArray, } = createValidator(ProjectViewOptionsDefaultsSchema);
|
|
70
|
+
export const { validate: validateUserPlanLimits } = createValidator(UserPlanLimitsSchema);
|
|
71
|
+
export const { validate: validateLiveNotification, validateArray: validateLiveNotificationArray } = createValidator(LiveNotificationSchema);
|
|
72
|
+
export const { validate: validateSyncWorkspace, validateArray: validateSyncWorkspaceArray } = createValidator(SyncWorkspaceSchema);
|
|
73
|
+
export const { validate: validateSyncUser } = createValidator(SyncUserSchema);
|
|
74
|
+
export const { validate: validateUserSettings } = createValidator(UserSettingsSchema);
|
|
75
|
+
export const { validate: validateSuggestion, validateArray: validateSuggestionArray } = createValidator(SuggestionSchema);
|
|
127
76
|
export function parseSyncResponse(raw) {
|
|
128
|
-
return
|
|
129
|
-
? { remindersLocation: validateLocationReminderArray(raw.remindersLocation) }
|
|
130
|
-
: {})), ('user' in raw ? { user: validateSyncUser(raw.user) } : {})), ('liveNotifications' in raw
|
|
131
|
-
? { liveNotifications: validateLiveNotificationArray(raw.liveNotifications) }
|
|
132
|
-
: {})), ('collaborators' in raw
|
|
133
|
-
? { collaborators: validateCollaboratorArray(raw.collaborators) }
|
|
134
|
-
: {})), ('collaboratorStates' in raw
|
|
135
|
-
? { collaboratorStates: validateCollaboratorStateArray(raw.collaboratorStates) }
|
|
136
|
-
: {})), ('userSettings' in raw ? { userSettings: validateUserSettings(raw.userSettings) } : {})), ('userPlanLimits' in raw
|
|
137
|
-
? { userPlanLimits: validateUserPlanLimits(raw.userPlanLimits) }
|
|
138
|
-
: {})), ('completedInfo' in raw
|
|
139
|
-
? { completedInfo: validateCompletedInfoArray(raw.completedInfo) }
|
|
140
|
-
: {})), ('workspaces' in raw ? { workspaces: validateSyncWorkspaceArray(raw.workspaces) } : {})), ('workspaceUsers' in raw
|
|
141
|
-
? { workspaceUsers: validateWorkspaceUserArray(raw.workspaceUsers) }
|
|
142
|
-
: {})), ('workspaceFilters' in raw
|
|
143
|
-
? { workspaceFilters: validateWorkspaceFilterArray(raw.workspaceFilters) }
|
|
144
|
-
: {})), ('viewOptions' in raw ? { viewOptions: validateViewOptionsArray(raw.viewOptions) } : {})), ('projectViewOptionsDefaults' in raw
|
|
145
|
-
? {
|
|
146
|
-
projectViewOptionsDefaults: validateProjectViewOptionsDefaultsArray(raw.projectViewOptionsDefaults),
|
|
147
|
-
}
|
|
148
|
-
: {})), ('folders' in raw ? { folders: validateFolderArray(raw.folders) } : {})), ('workspaceGoals' in raw
|
|
149
|
-
? { workspaceGoals: validateWorkspaceGoalArray(raw.workspaceGoals) }
|
|
150
|
-
: {})), ('calendars' in raw ? { calendars: validateCalendarArray(raw.calendars) } : {})), ('calendarAccounts' in raw
|
|
151
|
-
? { calendarAccounts: validateCalendarAccountArray(raw.calendarAccounts) }
|
|
152
|
-
: {})), ('suggestions' in raw ? { suggestions: validateSuggestionArray(raw.suggestions) } : {})), ('tooltips' in raw ? { tooltips: validateTooltips(raw.tooltips) } : {}));
|
|
77
|
+
return SyncResponseSchema.parse(raw);
|
|
153
78
|
}
|
|
@@ -78,5 +78,5 @@ export declare const ENDPOINT_WORKSPACE_MEMBERS = "workspaces/members";
|
|
|
78
78
|
export declare function getWorkspaceUserTasksEndpoint(workspaceId: string, userId: string): string;
|
|
79
79
|
export declare function getWorkspaceInviteUsersEndpoint(workspaceId: string): string;
|
|
80
80
|
export declare function getWorkspaceUserEndpoint(workspaceId: string, userId: string): string;
|
|
81
|
-
export declare function getWorkspaceActiveProjectsEndpoint(workspaceId:
|
|
82
|
-
export declare function getWorkspaceArchivedProjectsEndpoint(workspaceId:
|
|
81
|
+
export declare function getWorkspaceActiveProjectsEndpoint(workspaceId: string): string;
|
|
82
|
+
export declare function getWorkspaceArchivedProjectsEndpoint(workspaceId: string): string;
|