@todu/core 0.1.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/browser.d.ts +14 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +14 -0
- package/dist/browser.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +94 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/schedule.d.ts +39 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +114 -0
- package/dist/schedule.js.map +1 -0
- package/dist/schema.d.ts +82 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +46 -0
- package/dist/schema.js.map +1 -0
- package/dist/types.d.ts +308 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +88 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +392 -0
- package/dist/validation.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
import { validateDateString, validateRRule, validateTimezone } from "./schedule.js";
|
|
2
|
+
import { isNoteEntityType, isProjectStatus, isTaskPriority, isTaskStatus, isValidStatusTransition, validationError, } from "./types.js";
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Constants
|
|
5
|
+
// ============================================================================
|
|
6
|
+
export const MAX_PROJECT_NAME_LENGTH = 100;
|
|
7
|
+
export const MAX_TASK_TITLE_LENGTH = 200;
|
|
8
|
+
export const MAX_DESCRIPTION_LENGTH = 2000;
|
|
9
|
+
export const MAX_LABEL_NAME_LENGTH = 50;
|
|
10
|
+
export const MAX_NOTE_CONTENT_LENGTH = 5000;
|
|
11
|
+
export const HEX_COLOR_REGEX = /^#[0-9a-fA-F]{6}$/;
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Field validators
|
|
14
|
+
// ============================================================================
|
|
15
|
+
export function validateProjectName(name) {
|
|
16
|
+
if (!name || name.trim().length === 0) {
|
|
17
|
+
return validationError("name", "Project name is required");
|
|
18
|
+
}
|
|
19
|
+
if (name.trim().length > MAX_PROJECT_NAME_LENGTH) {
|
|
20
|
+
return validationError("name", `Project name must be ${MAX_PROJECT_NAME_LENGTH} characters or less`);
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
export function validateDescription(description) {
|
|
25
|
+
if (description.length > MAX_DESCRIPTION_LENGTH) {
|
|
26
|
+
return validationError("description", `Description must be ${MAX_DESCRIPTION_LENGTH} characters or less`);
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Input validators
|
|
32
|
+
// ============================================================================
|
|
33
|
+
export function validateCreateProjectInput(input) {
|
|
34
|
+
const nameError = validateProjectName(input.name);
|
|
35
|
+
if (nameError)
|
|
36
|
+
return nameError;
|
|
37
|
+
if (input.description !== undefined) {
|
|
38
|
+
const descError = validateDescription(input.description);
|
|
39
|
+
if (descError)
|
|
40
|
+
return descError;
|
|
41
|
+
}
|
|
42
|
+
if (input.priority !== undefined && !isTaskPriority(input.priority)) {
|
|
43
|
+
return validationError("priority", `Invalid priority: ${input.priority}`);
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
export function validateUpdateProjectInput(input) {
|
|
48
|
+
// At least one field must be provided
|
|
49
|
+
if (input.name === undefined &&
|
|
50
|
+
input.description === undefined &&
|
|
51
|
+
input.status === undefined &&
|
|
52
|
+
input.priority === undefined) {
|
|
53
|
+
return validationError("input", "At least one field must be provided");
|
|
54
|
+
}
|
|
55
|
+
if (input.name !== undefined) {
|
|
56
|
+
const nameError = validateProjectName(input.name);
|
|
57
|
+
if (nameError)
|
|
58
|
+
return nameError;
|
|
59
|
+
}
|
|
60
|
+
if (input.description !== undefined) {
|
|
61
|
+
const descError = validateDescription(input.description);
|
|
62
|
+
if (descError)
|
|
63
|
+
return descError;
|
|
64
|
+
}
|
|
65
|
+
if (input.status !== undefined && !isProjectStatus(input.status)) {
|
|
66
|
+
return validationError("status", `Invalid status: ${input.status}`);
|
|
67
|
+
}
|
|
68
|
+
if (input.priority !== undefined && !isTaskPriority(input.priority)) {
|
|
69
|
+
return validationError("priority", `Invalid priority: ${input.priority}`);
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
// ============================================================================
|
|
74
|
+
// Task validators
|
|
75
|
+
// ============================================================================
|
|
76
|
+
export function validateTaskTitle(title) {
|
|
77
|
+
if (!title || title.trim().length === 0) {
|
|
78
|
+
return validationError("title", "Task title is required");
|
|
79
|
+
}
|
|
80
|
+
if (title.trim().length > MAX_TASK_TITLE_LENGTH) {
|
|
81
|
+
return validationError("title", `Task title must be ${MAX_TASK_TITLE_LENGTH} characters or less`);
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
export function validateISODate(field, value) {
|
|
86
|
+
const date = new Date(value);
|
|
87
|
+
if (Number.isNaN(date.getTime())) {
|
|
88
|
+
return validationError(field, `Invalid date: ${value}`);
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
export function validateCreateTaskInput(input) {
|
|
93
|
+
const titleError = validateTaskTitle(input.title);
|
|
94
|
+
if (titleError)
|
|
95
|
+
return titleError;
|
|
96
|
+
if (input.description !== undefined) {
|
|
97
|
+
const descError = validateDescription(input.description);
|
|
98
|
+
if (descError)
|
|
99
|
+
return descError;
|
|
100
|
+
}
|
|
101
|
+
if (input.priority !== undefined && !isTaskPriority(input.priority)) {
|
|
102
|
+
return validationError("priority", `Invalid priority: ${input.priority}`);
|
|
103
|
+
}
|
|
104
|
+
if (input.dueDate !== undefined) {
|
|
105
|
+
const dateError = validateISODate("dueDate", input.dueDate);
|
|
106
|
+
if (dateError)
|
|
107
|
+
return dateError;
|
|
108
|
+
}
|
|
109
|
+
if (input.scheduledDate !== undefined) {
|
|
110
|
+
const dateError = validateISODate("scheduledDate", input.scheduledDate);
|
|
111
|
+
if (dateError)
|
|
112
|
+
return dateError;
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
export function validateUpdateTaskInput(input, currentStatus) {
|
|
117
|
+
if (input.title === undefined &&
|
|
118
|
+
input.status === undefined &&
|
|
119
|
+
input.priority === undefined &&
|
|
120
|
+
input.description === undefined &&
|
|
121
|
+
input.labels === undefined &&
|
|
122
|
+
input.dueDate === undefined &&
|
|
123
|
+
input.scheduledDate === undefined) {
|
|
124
|
+
return validationError("input", "At least one field must be provided");
|
|
125
|
+
}
|
|
126
|
+
if (input.title !== undefined) {
|
|
127
|
+
const titleError = validateTaskTitle(input.title);
|
|
128
|
+
if (titleError)
|
|
129
|
+
return titleError;
|
|
130
|
+
}
|
|
131
|
+
if (input.description !== undefined) {
|
|
132
|
+
const descError = validateDescription(input.description);
|
|
133
|
+
if (descError)
|
|
134
|
+
return descError;
|
|
135
|
+
}
|
|
136
|
+
if (input.status !== undefined) {
|
|
137
|
+
if (!isTaskStatus(input.status)) {
|
|
138
|
+
return validationError("status", `Invalid status: ${input.status}`);
|
|
139
|
+
}
|
|
140
|
+
if (currentStatus !== undefined && !isValidStatusTransition(currentStatus, input.status)) {
|
|
141
|
+
return validationError("status", `Cannot transition from ${currentStatus} to ${input.status}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (input.priority !== undefined && !isTaskPriority(input.priority)) {
|
|
145
|
+
return validationError("priority", `Invalid priority: ${input.priority}`);
|
|
146
|
+
}
|
|
147
|
+
if (input.dueDate !== undefined) {
|
|
148
|
+
const dateError = validateISODate("dueDate", input.dueDate);
|
|
149
|
+
if (dateError)
|
|
150
|
+
return dateError;
|
|
151
|
+
}
|
|
152
|
+
if (input.scheduledDate !== undefined) {
|
|
153
|
+
const dateError = validateISODate("scheduledDate", input.scheduledDate);
|
|
154
|
+
if (dateError)
|
|
155
|
+
return dateError;
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
// ============================================================================
|
|
160
|
+
// Label validators
|
|
161
|
+
// ============================================================================
|
|
162
|
+
export function validateLabelName(name) {
|
|
163
|
+
if (!name || name.trim().length === 0) {
|
|
164
|
+
return validationError("name", "Label name is required");
|
|
165
|
+
}
|
|
166
|
+
if (name.trim().length > MAX_LABEL_NAME_LENGTH) {
|
|
167
|
+
return validationError("name", `Label name must be ${MAX_LABEL_NAME_LENGTH} characters or less`);
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
export function validateLabelColor(color) {
|
|
172
|
+
if (!HEX_COLOR_REGEX.test(color)) {
|
|
173
|
+
return validationError("color", `Invalid hex color: ${color} (expected #RRGGBB)`);
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
export function validateCreateLabelInput(input) {
|
|
178
|
+
const nameError = validateLabelName(input.name);
|
|
179
|
+
if (nameError)
|
|
180
|
+
return nameError;
|
|
181
|
+
if (input.color !== undefined) {
|
|
182
|
+
const colorError = validateLabelColor(input.color);
|
|
183
|
+
if (colorError)
|
|
184
|
+
return colorError;
|
|
185
|
+
}
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
export function validateUpdateLabelInput(input) {
|
|
189
|
+
if (input.name === undefined && input.color === undefined) {
|
|
190
|
+
return validationError("input", "At least one field must be provided");
|
|
191
|
+
}
|
|
192
|
+
if (input.name !== undefined) {
|
|
193
|
+
const nameError = validateLabelName(input.name);
|
|
194
|
+
if (nameError)
|
|
195
|
+
return nameError;
|
|
196
|
+
}
|
|
197
|
+
if (input.color !== undefined) {
|
|
198
|
+
const colorError = validateLabelColor(input.color);
|
|
199
|
+
if (colorError)
|
|
200
|
+
return colorError;
|
|
201
|
+
}
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
// ============================================================================
|
|
205
|
+
// Note validators
|
|
206
|
+
// ============================================================================
|
|
207
|
+
export function validateNoteContent(content) {
|
|
208
|
+
if (!content || content.trim().length === 0) {
|
|
209
|
+
return validationError("content", "Note content is required");
|
|
210
|
+
}
|
|
211
|
+
if (content.trim().length > MAX_NOTE_CONTENT_LENGTH) {
|
|
212
|
+
return validationError("content", `Note content must be ${MAX_NOTE_CONTENT_LENGTH} characters or less`);
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
export function validateCreateNoteInput(input) {
|
|
217
|
+
const contentError = validateNoteContent(input.content);
|
|
218
|
+
if (contentError)
|
|
219
|
+
return contentError;
|
|
220
|
+
if (input.entityType !== undefined && !isNoteEntityType(input.entityType)) {
|
|
221
|
+
return validationError("entityType", `Invalid entity type: ${input.entityType}`);
|
|
222
|
+
}
|
|
223
|
+
// If entityType is set, entityId must also be set (and vice versa)
|
|
224
|
+
if (input.entityType !== undefined && !input.entityId) {
|
|
225
|
+
return validationError("entityId", "Entity ID is required when entity type is specified");
|
|
226
|
+
}
|
|
227
|
+
if (input.entityId !== undefined && !input.entityType) {
|
|
228
|
+
return validationError("entityType", "Entity type is required when entity ID is specified");
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
export function validateUpdateNoteInput(input) {
|
|
233
|
+
if (input.content !== undefined) {
|
|
234
|
+
const contentError = validateNoteContent(input.content);
|
|
235
|
+
if (contentError)
|
|
236
|
+
return contentError;
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
// ============================================================================
|
|
241
|
+
// Recurring template validators
|
|
242
|
+
// ============================================================================
|
|
243
|
+
export function validateCreateRecurringInput(input) {
|
|
244
|
+
const titleError = validateTaskTitle(input.title);
|
|
245
|
+
if (titleError)
|
|
246
|
+
return titleError;
|
|
247
|
+
const ruleError = validateRRule(input.schedule);
|
|
248
|
+
if (ruleError)
|
|
249
|
+
return ruleError;
|
|
250
|
+
const tzError = validateTimezone(input.timezone);
|
|
251
|
+
if (tzError)
|
|
252
|
+
return tzError;
|
|
253
|
+
const startError = validateDateString("startDate", input.startDate);
|
|
254
|
+
if (startError)
|
|
255
|
+
return startError;
|
|
256
|
+
if (input.endDate !== undefined) {
|
|
257
|
+
const endError = validateDateString("endDate", input.endDate);
|
|
258
|
+
if (endError)
|
|
259
|
+
return endError;
|
|
260
|
+
if (input.endDate <= input.startDate) {
|
|
261
|
+
return validationError("endDate", "End date must be after start date");
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
if (input.description !== undefined) {
|
|
265
|
+
const descError = validateDescription(input.description);
|
|
266
|
+
if (descError)
|
|
267
|
+
return descError;
|
|
268
|
+
}
|
|
269
|
+
if (input.priority !== undefined && !isTaskPriority(input.priority)) {
|
|
270
|
+
return validationError("priority", `Invalid priority: ${input.priority}`);
|
|
271
|
+
}
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
export function validateUpdateRecurringInput(input) {
|
|
275
|
+
if (input.title === undefined &&
|
|
276
|
+
input.schedule === undefined &&
|
|
277
|
+
input.timezone === undefined &&
|
|
278
|
+
input.projectId === undefined &&
|
|
279
|
+
input.description === undefined &&
|
|
280
|
+
input.labels === undefined &&
|
|
281
|
+
input.priority === undefined &&
|
|
282
|
+
input.endDate === undefined &&
|
|
283
|
+
input.paused === undefined) {
|
|
284
|
+
return validationError("input", "At least one field must be provided");
|
|
285
|
+
}
|
|
286
|
+
if (input.title !== undefined) {
|
|
287
|
+
const titleError = validateTaskTitle(input.title);
|
|
288
|
+
if (titleError)
|
|
289
|
+
return titleError;
|
|
290
|
+
}
|
|
291
|
+
if (input.schedule !== undefined) {
|
|
292
|
+
const ruleError = validateRRule(input.schedule);
|
|
293
|
+
if (ruleError)
|
|
294
|
+
return ruleError;
|
|
295
|
+
}
|
|
296
|
+
if (input.timezone !== undefined) {
|
|
297
|
+
const tzError = validateTimezone(input.timezone);
|
|
298
|
+
if (tzError)
|
|
299
|
+
return tzError;
|
|
300
|
+
}
|
|
301
|
+
if (input.description !== undefined) {
|
|
302
|
+
const descError = validateDescription(input.description);
|
|
303
|
+
if (descError)
|
|
304
|
+
return descError;
|
|
305
|
+
}
|
|
306
|
+
if (input.priority !== undefined && !isTaskPriority(input.priority)) {
|
|
307
|
+
return validationError("priority", `Invalid priority: ${input.priority}`);
|
|
308
|
+
}
|
|
309
|
+
if (input.endDate !== undefined) {
|
|
310
|
+
const endError = validateDateString("endDate", input.endDate);
|
|
311
|
+
if (endError)
|
|
312
|
+
return endError;
|
|
313
|
+
}
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
// ============================================================================
|
|
317
|
+
// Habit validators
|
|
318
|
+
// ============================================================================
|
|
319
|
+
export const MAX_HABIT_TITLE_LENGTH = 100;
|
|
320
|
+
export function validateHabitTitle(title) {
|
|
321
|
+
if (!title || title.trim().length === 0) {
|
|
322
|
+
return validationError("title", "Habit title is required");
|
|
323
|
+
}
|
|
324
|
+
if (title.trim().length > MAX_HABIT_TITLE_LENGTH) {
|
|
325
|
+
return validationError("title", `Habit title must be ${MAX_HABIT_TITLE_LENGTH} characters or less`);
|
|
326
|
+
}
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
export function validateCreateHabitInput(input) {
|
|
330
|
+
const titleError = validateHabitTitle(input.title);
|
|
331
|
+
if (titleError)
|
|
332
|
+
return titleError;
|
|
333
|
+
const ruleError = validateRRule(input.schedule);
|
|
334
|
+
if (ruleError)
|
|
335
|
+
return ruleError;
|
|
336
|
+
const tzError = validateTimezone(input.timezone);
|
|
337
|
+
if (tzError)
|
|
338
|
+
return tzError;
|
|
339
|
+
const startError = validateDateString("startDate", input.startDate);
|
|
340
|
+
if (startError)
|
|
341
|
+
return startError;
|
|
342
|
+
if (input.endDate !== undefined) {
|
|
343
|
+
const endError = validateDateString("endDate", input.endDate);
|
|
344
|
+
if (endError)
|
|
345
|
+
return endError;
|
|
346
|
+
if (input.endDate <= input.startDate) {
|
|
347
|
+
return validationError("endDate", "End date must be after start date");
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
if (input.description !== undefined) {
|
|
351
|
+
const descError = validateDescription(input.description);
|
|
352
|
+
if (descError)
|
|
353
|
+
return descError;
|
|
354
|
+
}
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
export function validateUpdateHabitInput(input) {
|
|
358
|
+
if (input.title === undefined &&
|
|
359
|
+
input.schedule === undefined &&
|
|
360
|
+
input.timezone === undefined &&
|
|
361
|
+
input.description === undefined &&
|
|
362
|
+
input.endDate === undefined) {
|
|
363
|
+
return validationError("input", "At least one field must be provided");
|
|
364
|
+
}
|
|
365
|
+
if (input.title !== undefined) {
|
|
366
|
+
const titleError = validateHabitTitle(input.title);
|
|
367
|
+
if (titleError)
|
|
368
|
+
return titleError;
|
|
369
|
+
}
|
|
370
|
+
if (input.schedule !== undefined) {
|
|
371
|
+
const ruleError = validateRRule(input.schedule);
|
|
372
|
+
if (ruleError)
|
|
373
|
+
return ruleError;
|
|
374
|
+
}
|
|
375
|
+
if (input.timezone !== undefined) {
|
|
376
|
+
const tzError = validateTimezone(input.timezone);
|
|
377
|
+
if (tzError)
|
|
378
|
+
return tzError;
|
|
379
|
+
}
|
|
380
|
+
if (input.description !== undefined) {
|
|
381
|
+
const descError = validateDescription(input.description);
|
|
382
|
+
if (descError)
|
|
383
|
+
return descError;
|
|
384
|
+
}
|
|
385
|
+
if (input.endDate !== undefined) {
|
|
386
|
+
const endError = validateDateString("endDate", input.endDate);
|
|
387
|
+
if (endError)
|
|
388
|
+
return endError;
|
|
389
|
+
}
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@todu/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Core types, validation, and schemas for todu task management",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./browser": {
|
|
14
|
+
"import": "./dist/browser.js",
|
|
15
|
+
"types": "./dist/browser.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsgo -p tsconfig.build.json",
|
|
23
|
+
"typecheck": "tsgo -p tsconfig.build.json --noEmit"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/evcraddock/todu.git",
|
|
31
|
+
"directory": "packages/core"
|
|
32
|
+
},
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"keywords": [
|
|
35
|
+
"todu",
|
|
36
|
+
"task-management",
|
|
37
|
+
"types",
|
|
38
|
+
"validation"
|
|
39
|
+
],
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=20"
|
|
42
|
+
}
|
|
43
|
+
}
|