@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
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
export type TaskId = string & {
|
|
2
|
+
readonly __brand: "TaskId";
|
|
3
|
+
};
|
|
4
|
+
export type ProjectId = string & {
|
|
5
|
+
readonly __brand: "ProjectId";
|
|
6
|
+
};
|
|
7
|
+
export type LabelId = string & {
|
|
8
|
+
readonly __brand: "LabelId";
|
|
9
|
+
};
|
|
10
|
+
export type NoteId = string & {
|
|
11
|
+
readonly __brand: "NoteId";
|
|
12
|
+
};
|
|
13
|
+
export type HabitId = string & {
|
|
14
|
+
readonly __brand: "HabitId";
|
|
15
|
+
};
|
|
16
|
+
export type RecurringId = string & {
|
|
17
|
+
readonly __brand: "RecurringId";
|
|
18
|
+
};
|
|
19
|
+
export declare function createTaskId(id: string): TaskId;
|
|
20
|
+
export declare function createProjectId(id: string): ProjectId;
|
|
21
|
+
export declare function createLabelId(id: string): LabelId;
|
|
22
|
+
export declare function createNoteId(id: string): NoteId;
|
|
23
|
+
export declare function createHabitId(id: string): HabitId;
|
|
24
|
+
export declare function createRecurringId(id: string): RecurringId;
|
|
25
|
+
export declare const TASK_STATUSES: readonly ["active", "inprogress", "waiting", "done", "canceled"];
|
|
26
|
+
export type TaskStatus = (typeof TASK_STATUSES)[number];
|
|
27
|
+
export declare function isTaskStatus(value: string): value is TaskStatus;
|
|
28
|
+
export declare const TASK_PRIORITIES: readonly ["low", "medium", "high"];
|
|
29
|
+
export type TaskPriority = (typeof TASK_PRIORITIES)[number];
|
|
30
|
+
export declare function isTaskPriority(value: string): value is TaskPriority;
|
|
31
|
+
export declare const PROJECT_STATUSES: readonly ["active", "done", "canceled"];
|
|
32
|
+
export type ProjectStatus = (typeof PROJECT_STATUSES)[number];
|
|
33
|
+
export declare function isProjectStatus(value: string): value is ProjectStatus;
|
|
34
|
+
export declare const SYNC_STRATEGIES: readonly ["bidirectional", "pull", "push", "none"];
|
|
35
|
+
export type SyncStrategy = (typeof SYNC_STRATEGIES)[number];
|
|
36
|
+
export declare function isSyncStrategy(value: string): value is SyncStrategy;
|
|
37
|
+
export type Result<T, E = ToduError> = {
|
|
38
|
+
ok: true;
|
|
39
|
+
value: T;
|
|
40
|
+
} | {
|
|
41
|
+
ok: false;
|
|
42
|
+
error: E;
|
|
43
|
+
};
|
|
44
|
+
export declare function ok<T>(value: T): Result<T, never>;
|
|
45
|
+
export declare function err<E>(error: E): Result<never, E>;
|
|
46
|
+
export type ToduError = NotFoundError | ValidationError | StorageError;
|
|
47
|
+
export interface NotFoundError {
|
|
48
|
+
type: "not-found";
|
|
49
|
+
entity: string;
|
|
50
|
+
id: string;
|
|
51
|
+
}
|
|
52
|
+
export interface ValidationError {
|
|
53
|
+
type: "validation";
|
|
54
|
+
field: string;
|
|
55
|
+
message: string;
|
|
56
|
+
}
|
|
57
|
+
export interface StorageError {
|
|
58
|
+
type: "storage";
|
|
59
|
+
message: string;
|
|
60
|
+
}
|
|
61
|
+
export declare function notFound(entity: string, id: string): NotFoundError;
|
|
62
|
+
export declare function validationError(field: string, message: string): ValidationError;
|
|
63
|
+
export declare function storageError(message: string): StorageError;
|
|
64
|
+
export interface Project {
|
|
65
|
+
id: ProjectId;
|
|
66
|
+
name: string;
|
|
67
|
+
description?: string;
|
|
68
|
+
status: ProjectStatus;
|
|
69
|
+
priority: TaskPriority;
|
|
70
|
+
externalId?: string;
|
|
71
|
+
systemId?: string;
|
|
72
|
+
syncStrategy: SyncStrategy;
|
|
73
|
+
createdAt: string;
|
|
74
|
+
updatedAt: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ProjectFilter {
|
|
77
|
+
status?: ProjectStatus | ProjectStatus[];
|
|
78
|
+
priority?: TaskPriority;
|
|
79
|
+
search?: string;
|
|
80
|
+
}
|
|
81
|
+
export interface Task {
|
|
82
|
+
id: TaskId;
|
|
83
|
+
title: string;
|
|
84
|
+
status: TaskStatus;
|
|
85
|
+
priority: TaskPriority;
|
|
86
|
+
projectId: ProjectId;
|
|
87
|
+
labels: string[];
|
|
88
|
+
dueDate?: string;
|
|
89
|
+
scheduledDate?: string;
|
|
90
|
+
externalId?: string;
|
|
91
|
+
sourceUrl?: string;
|
|
92
|
+
templateId?: string;
|
|
93
|
+
createdAt: string;
|
|
94
|
+
updatedAt: string;
|
|
95
|
+
}
|
|
96
|
+
/** Task with description loaded from TaskDetailDocument */
|
|
97
|
+
export interface TaskWithDetail extends Task {
|
|
98
|
+
description?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface Label {
|
|
101
|
+
id: LabelId;
|
|
102
|
+
name: string;
|
|
103
|
+
color?: string;
|
|
104
|
+
createdAt: string;
|
|
105
|
+
}
|
|
106
|
+
export declare const NOTE_ENTITY_TYPES: readonly ["task", "project", "habit"];
|
|
107
|
+
export type NoteEntityType = (typeof NOTE_ENTITY_TYPES)[number];
|
|
108
|
+
export declare function isNoteEntityType(value: string): value is NoteEntityType;
|
|
109
|
+
export interface Note {
|
|
110
|
+
id: NoteId;
|
|
111
|
+
content: string;
|
|
112
|
+
author: string;
|
|
113
|
+
entityType?: NoteEntityType;
|
|
114
|
+
entityId?: string;
|
|
115
|
+
tags: string[];
|
|
116
|
+
createdAt: string;
|
|
117
|
+
}
|
|
118
|
+
export interface CreateProjectInput {
|
|
119
|
+
name: string;
|
|
120
|
+
description?: string;
|
|
121
|
+
priority?: TaskPriority;
|
|
122
|
+
}
|
|
123
|
+
export interface UpdateProjectInput {
|
|
124
|
+
name?: string;
|
|
125
|
+
description?: string;
|
|
126
|
+
status?: ProjectStatus;
|
|
127
|
+
priority?: TaskPriority;
|
|
128
|
+
}
|
|
129
|
+
export interface CreateTaskInput {
|
|
130
|
+
title: string;
|
|
131
|
+
projectId: ProjectId;
|
|
132
|
+
priority?: TaskPriority;
|
|
133
|
+
description?: string;
|
|
134
|
+
labels?: string[];
|
|
135
|
+
dueDate?: string;
|
|
136
|
+
scheduledDate?: string;
|
|
137
|
+
}
|
|
138
|
+
export interface UpdateTaskInput {
|
|
139
|
+
title?: string;
|
|
140
|
+
status?: TaskStatus;
|
|
141
|
+
priority?: TaskPriority;
|
|
142
|
+
description?: string;
|
|
143
|
+
labels?: string[];
|
|
144
|
+
dueDate?: string;
|
|
145
|
+
scheduledDate?: string;
|
|
146
|
+
}
|
|
147
|
+
export interface TaskFilter {
|
|
148
|
+
status?: TaskStatus | TaskStatus[];
|
|
149
|
+
priority?: TaskPriority;
|
|
150
|
+
projectId?: ProjectId;
|
|
151
|
+
label?: string;
|
|
152
|
+
dueBefore?: string;
|
|
153
|
+
dueAfter?: string;
|
|
154
|
+
overdue?: boolean;
|
|
155
|
+
today?: boolean;
|
|
156
|
+
}
|
|
157
|
+
export declare const TASK_SORT_FIELDS: readonly ["priority", "dueDate", "createdAt", "updatedAt", "title"];
|
|
158
|
+
export type TaskSortField = (typeof TASK_SORT_FIELDS)[number];
|
|
159
|
+
export declare function isTaskSortField(value: string): value is TaskSortField;
|
|
160
|
+
export interface TaskSortOptions {
|
|
161
|
+
field: TaskSortField;
|
|
162
|
+
direction: "asc" | "desc";
|
|
163
|
+
}
|
|
164
|
+
export interface CreateLabelInput {
|
|
165
|
+
name: string;
|
|
166
|
+
color?: string;
|
|
167
|
+
}
|
|
168
|
+
export interface UpdateLabelInput {
|
|
169
|
+
name?: string;
|
|
170
|
+
color?: string;
|
|
171
|
+
}
|
|
172
|
+
export interface CreateNoteInput {
|
|
173
|
+
content: string;
|
|
174
|
+
author?: string;
|
|
175
|
+
entityType?: NoteEntityType;
|
|
176
|
+
entityId?: string;
|
|
177
|
+
tags?: string[];
|
|
178
|
+
}
|
|
179
|
+
export interface UpdateNoteInput {
|
|
180
|
+
content?: string;
|
|
181
|
+
tags?: string[];
|
|
182
|
+
}
|
|
183
|
+
export interface NoteFilter {
|
|
184
|
+
entityType?: NoteEntityType;
|
|
185
|
+
entityId?: string;
|
|
186
|
+
tag?: string;
|
|
187
|
+
author?: string;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Allowed status transitions. Key = from status, value = allowed targets.
|
|
191
|
+
* "active" is the default starting status.
|
|
192
|
+
*/
|
|
193
|
+
export declare const ALLOWED_STATUS_TRANSITIONS: Record<TaskStatus, TaskStatus[]>;
|
|
194
|
+
export declare function isValidStatusTransition(from: TaskStatus, to: TaskStatus): boolean;
|
|
195
|
+
export interface RecurringTemplate {
|
|
196
|
+
id: RecurringId;
|
|
197
|
+
title: string;
|
|
198
|
+
description?: string;
|
|
199
|
+
projectId: ProjectId;
|
|
200
|
+
labels: string[];
|
|
201
|
+
priority: TaskPriority;
|
|
202
|
+
schedule: string;
|
|
203
|
+
timezone: string;
|
|
204
|
+
startDate: string;
|
|
205
|
+
endDate?: string;
|
|
206
|
+
nextDue: string;
|
|
207
|
+
skippedDates: string[];
|
|
208
|
+
paused: boolean;
|
|
209
|
+
createdAt: string;
|
|
210
|
+
updatedAt: string;
|
|
211
|
+
}
|
|
212
|
+
export interface CreateRecurringInput {
|
|
213
|
+
title: string;
|
|
214
|
+
schedule: string;
|
|
215
|
+
timezone: string;
|
|
216
|
+
startDate: string;
|
|
217
|
+
projectId: ProjectId;
|
|
218
|
+
description?: string;
|
|
219
|
+
labels?: string[];
|
|
220
|
+
priority?: TaskPriority;
|
|
221
|
+
endDate?: string;
|
|
222
|
+
}
|
|
223
|
+
export interface UpdateRecurringInput {
|
|
224
|
+
title?: string;
|
|
225
|
+
schedule?: string;
|
|
226
|
+
timezone?: string;
|
|
227
|
+
projectId?: ProjectId;
|
|
228
|
+
description?: string;
|
|
229
|
+
labels?: string[];
|
|
230
|
+
priority?: TaskPriority;
|
|
231
|
+
endDate?: string;
|
|
232
|
+
paused?: boolean;
|
|
233
|
+
}
|
|
234
|
+
export interface RecurringFilter {
|
|
235
|
+
paused?: boolean;
|
|
236
|
+
projectId?: ProjectId;
|
|
237
|
+
search?: string;
|
|
238
|
+
}
|
|
239
|
+
export interface Habit {
|
|
240
|
+
id: HabitId;
|
|
241
|
+
title: string;
|
|
242
|
+
description?: string;
|
|
243
|
+
schedule: string;
|
|
244
|
+
timezone: string;
|
|
245
|
+
startDate: string;
|
|
246
|
+
endDate?: string;
|
|
247
|
+
nextDue: string;
|
|
248
|
+
paused: boolean;
|
|
249
|
+
createdAt: string;
|
|
250
|
+
updatedAt: string;
|
|
251
|
+
}
|
|
252
|
+
export interface CreateHabitInput {
|
|
253
|
+
title: string;
|
|
254
|
+
schedule: string;
|
|
255
|
+
timezone: string;
|
|
256
|
+
startDate: string;
|
|
257
|
+
description?: string;
|
|
258
|
+
endDate?: string;
|
|
259
|
+
}
|
|
260
|
+
export interface UpdateHabitInput {
|
|
261
|
+
title?: string;
|
|
262
|
+
schedule?: string;
|
|
263
|
+
timezone?: string;
|
|
264
|
+
description?: string;
|
|
265
|
+
endDate?: string;
|
|
266
|
+
}
|
|
267
|
+
export interface HabitFilter {
|
|
268
|
+
paused?: boolean;
|
|
269
|
+
search?: string;
|
|
270
|
+
checkedToday?: boolean;
|
|
271
|
+
}
|
|
272
|
+
export interface HabitEntry {
|
|
273
|
+
date: string;
|
|
274
|
+
completed: boolean;
|
|
275
|
+
checkedAt?: string;
|
|
276
|
+
}
|
|
277
|
+
export interface HabitStreak {
|
|
278
|
+
current: number;
|
|
279
|
+
longest: number;
|
|
280
|
+
completedToday: boolean;
|
|
281
|
+
totalCheckins: number;
|
|
282
|
+
}
|
|
283
|
+
export interface HabitHistoryEntry {
|
|
284
|
+
date: string;
|
|
285
|
+
scheduled: boolean;
|
|
286
|
+
completed: boolean;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Schedule definition for recurring templates and habits.
|
|
290
|
+
* Uses RRULE (RFC 5545) for recurrence patterns.
|
|
291
|
+
*/
|
|
292
|
+
export interface ScheduleDefinition {
|
|
293
|
+
/** RRULE string (e.g., "FREQ=DAILY;INTERVAL=1", "FREQ=WEEKLY;BYDAY=MO,WE,FR") */
|
|
294
|
+
rule: string;
|
|
295
|
+
/** IANA timezone for date calculation (e.g., "America/Chicago") */
|
|
296
|
+
timezone: string;
|
|
297
|
+
/** Start date in YYYY-MM-DD format */
|
|
298
|
+
startDate: string;
|
|
299
|
+
/** Optional end date in YYYY-MM-DD format */
|
|
300
|
+
endDate?: string;
|
|
301
|
+
}
|
|
302
|
+
/** Allowed RRULE frequencies (no sub-daily) */
|
|
303
|
+
export declare const ALLOWED_FREQUENCIES: readonly ["DAILY", "WEEKLY", "MONTHLY", "YEARLY"];
|
|
304
|
+
export type AllowedFrequency = (typeof ALLOWED_FREQUENCIES)[number];
|
|
305
|
+
export interface Settings {
|
|
306
|
+
schemaVersion: number;
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Branded ID types
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export function createTaskId(id) {
|
|
5
|
+
return id;
|
|
6
|
+
}
|
|
7
|
+
export function createProjectId(id) {
|
|
8
|
+
return id;
|
|
9
|
+
}
|
|
10
|
+
export function createLabelId(id) {
|
|
11
|
+
return id;
|
|
12
|
+
}
|
|
13
|
+
export function createNoteId(id) {
|
|
14
|
+
return id;
|
|
15
|
+
}
|
|
16
|
+
export function createHabitId(id) {
|
|
17
|
+
return id;
|
|
18
|
+
}
|
|
19
|
+
export function createRecurringId(id) {
|
|
20
|
+
return id;
|
|
21
|
+
}
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Enums and type guards
|
|
24
|
+
// ============================================================================
|
|
25
|
+
export const TASK_STATUSES = ["active", "inprogress", "waiting", "done", "canceled"];
|
|
26
|
+
export function isTaskStatus(value) {
|
|
27
|
+
return TASK_STATUSES.includes(value);
|
|
28
|
+
}
|
|
29
|
+
export const TASK_PRIORITIES = ["low", "medium", "high"];
|
|
30
|
+
export function isTaskPriority(value) {
|
|
31
|
+
return TASK_PRIORITIES.includes(value);
|
|
32
|
+
}
|
|
33
|
+
export const PROJECT_STATUSES = ["active", "done", "canceled"];
|
|
34
|
+
export function isProjectStatus(value) {
|
|
35
|
+
return PROJECT_STATUSES.includes(value);
|
|
36
|
+
}
|
|
37
|
+
export const SYNC_STRATEGIES = ["bidirectional", "pull", "push", "none"];
|
|
38
|
+
export function isSyncStrategy(value) {
|
|
39
|
+
return SYNC_STRATEGIES.includes(value);
|
|
40
|
+
}
|
|
41
|
+
export function ok(value) {
|
|
42
|
+
return { ok: true, value };
|
|
43
|
+
}
|
|
44
|
+
export function err(error) {
|
|
45
|
+
return { ok: false, error };
|
|
46
|
+
}
|
|
47
|
+
export function notFound(entity, id) {
|
|
48
|
+
return { type: "not-found", entity, id };
|
|
49
|
+
}
|
|
50
|
+
export function validationError(field, message) {
|
|
51
|
+
return { type: "validation", field, message };
|
|
52
|
+
}
|
|
53
|
+
export function storageError(message) {
|
|
54
|
+
return { type: "storage", message };
|
|
55
|
+
}
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Note entity — stored in NotesDocument
|
|
58
|
+
// ============================================================================
|
|
59
|
+
export const NOTE_ENTITY_TYPES = ["task", "project", "habit"];
|
|
60
|
+
export function isNoteEntityType(value) {
|
|
61
|
+
return NOTE_ENTITY_TYPES.includes(value);
|
|
62
|
+
}
|
|
63
|
+
export const TASK_SORT_FIELDS = ["priority", "dueDate", "createdAt", "updatedAt", "title"];
|
|
64
|
+
export function isTaskSortField(value) {
|
|
65
|
+
return TASK_SORT_FIELDS.includes(value);
|
|
66
|
+
}
|
|
67
|
+
// ============================================================================
|
|
68
|
+
// Status transitions
|
|
69
|
+
// ============================================================================
|
|
70
|
+
/**
|
|
71
|
+
* Allowed status transitions. Key = from status, value = allowed targets.
|
|
72
|
+
* "active" is the default starting status.
|
|
73
|
+
*/
|
|
74
|
+
export const ALLOWED_STATUS_TRANSITIONS = {
|
|
75
|
+
active: ["inprogress", "waiting", "done", "canceled"],
|
|
76
|
+
inprogress: ["active", "waiting", "done", "canceled"],
|
|
77
|
+
waiting: ["active", "inprogress", "done", "canceled"],
|
|
78
|
+
done: ["active"], // reopen
|
|
79
|
+
canceled: ["active"], // reopen
|
|
80
|
+
};
|
|
81
|
+
export function isValidStatusTransition(from, to) {
|
|
82
|
+
if (from === to)
|
|
83
|
+
return true;
|
|
84
|
+
return ALLOWED_STATUS_TRANSITIONS[from].includes(to);
|
|
85
|
+
}
|
|
86
|
+
/** Allowed RRULE frequencies (no sub-daily) */
|
|
87
|
+
export const ALLOWED_FREQUENCIES = ["DAILY", "WEEKLY", "MONTHLY", "YEARLY"];
|
|
88
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CreateHabitInput, CreateLabelInput, CreateNoteInput, CreateProjectInput, CreateRecurringInput, CreateTaskInput, TaskStatus, UpdateHabitInput, UpdateLabelInput, UpdateNoteInput, UpdateProjectInput, UpdateRecurringInput, UpdateTaskInput, ValidationError } from "./types.js";
|
|
2
|
+
export declare const MAX_PROJECT_NAME_LENGTH = 100;
|
|
3
|
+
export declare const MAX_TASK_TITLE_LENGTH = 200;
|
|
4
|
+
export declare const MAX_DESCRIPTION_LENGTH = 2000;
|
|
5
|
+
export declare const MAX_LABEL_NAME_LENGTH = 50;
|
|
6
|
+
export declare const MAX_NOTE_CONTENT_LENGTH = 5000;
|
|
7
|
+
export declare const HEX_COLOR_REGEX: RegExp;
|
|
8
|
+
export declare function validateProjectName(name: string): ValidationError | null;
|
|
9
|
+
export declare function validateDescription(description: string): ValidationError | null;
|
|
10
|
+
export declare function validateCreateProjectInput(input: CreateProjectInput): ValidationError | null;
|
|
11
|
+
export declare function validateUpdateProjectInput(input: UpdateProjectInput): ValidationError | null;
|
|
12
|
+
export declare function validateTaskTitle(title: string): ValidationError | null;
|
|
13
|
+
export declare function validateISODate(field: string, value: string): ValidationError | null;
|
|
14
|
+
export declare function validateCreateTaskInput(input: CreateTaskInput): ValidationError | null;
|
|
15
|
+
export declare function validateUpdateTaskInput(input: UpdateTaskInput, currentStatus?: TaskStatus): ValidationError | null;
|
|
16
|
+
export declare function validateLabelName(name: string): ValidationError | null;
|
|
17
|
+
export declare function validateLabelColor(color: string): ValidationError | null;
|
|
18
|
+
export declare function validateCreateLabelInput(input: CreateLabelInput): ValidationError | null;
|
|
19
|
+
export declare function validateUpdateLabelInput(input: UpdateLabelInput): ValidationError | null;
|
|
20
|
+
export declare function validateNoteContent(content: string): ValidationError | null;
|
|
21
|
+
export declare function validateCreateNoteInput(input: CreateNoteInput): ValidationError | null;
|
|
22
|
+
export declare function validateUpdateNoteInput(input: UpdateNoteInput): ValidationError | null;
|
|
23
|
+
export declare function validateCreateRecurringInput(input: CreateRecurringInput): ValidationError | null;
|
|
24
|
+
export declare function validateUpdateRecurringInput(input: UpdateRecurringInput): ValidationError | null;
|
|
25
|
+
export declare const MAX_HABIT_TITLE_LENGTH = 100;
|
|
26
|
+
export declare function validateHabitTitle(title: string): ValidationError | null;
|
|
27
|
+
export declare function validateCreateHabitInput(input: CreateHabitInput): ValidationError | null;
|
|
28
|
+
export declare function validateUpdateHabitInput(input: UpdateHabitInput): ValidationError | null;
|
|
29
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAcpB,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,eAAe,QAAsB,CAAC;AAMnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAWxE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAQ/E;AAMD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,eAAe,GAAG,IAAI,CAc5F;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,eAAe,GAAG,IAAI,CA8B5F;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAWvE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAMpF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI,CAwBtF;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,aAAa,CAAC,EAAE,UAAU,GACzB,eAAe,GAAG,IAAI,CAkDxB;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAWtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAKxE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAUxF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAgBxF;AAMD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAW3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI,CAiBtF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI,CAOtF;AAMD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,GAAG,IAAI,CAgChG;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,GAAG,IAAI,CA6ChG;AAMD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAWxE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CA4BxF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAqCxF"}
|