@aibrains/shared-types 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/README.md +170 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/mappers/edfi/calendar.mapper.d.ts +158 -0
- package/dist/mappers/edfi/calendar.mapper.d.ts.map +1 -0
- package/dist/mappers/edfi/calendar.mapper.js +235 -0
- package/dist/mappers/edfi/calendar.mapper.js.map +1 -0
- package/dist/mappers/edfi/credential.mapper.d.ts +50 -0
- package/dist/mappers/edfi/credential.mapper.d.ts.map +1 -0
- package/dist/mappers/edfi/credential.mapper.js +123 -0
- package/dist/mappers/edfi/credential.mapper.js.map +1 -0
- package/dist/mappers/edfi/index.d.ts +10 -0
- package/dist/mappers/edfi/index.d.ts.map +1 -0
- package/dist/mappers/edfi/index.js +26 -0
- package/dist/mappers/edfi/index.js.map +1 -0
- package/dist/mappers/edfi/staff.mapper.d.ts +96 -0
- package/dist/mappers/edfi/staff.mapper.d.ts.map +1 -0
- package/dist/mappers/edfi/staff.mapper.js +138 -0
- package/dist/mappers/edfi/staff.mapper.js.map +1 -0
- package/dist/mappers/index.d.ts +7 -0
- package/dist/mappers/index.d.ts.map +1 -0
- package/dist/mappers/index.js +23 -0
- package/dist/mappers/index.js.map +1 -0
- package/dist/schemas/academics/assignment.schema.d.ts +1463 -0
- package/dist/schemas/academics/assignment.schema.d.ts.map +1 -0
- package/dist/schemas/academics/assignment.schema.js +195 -0
- package/dist/schemas/academics/assignment.schema.js.map +1 -0
- package/dist/schemas/academics/attendance.schema.d.ts +762 -0
- package/dist/schemas/academics/attendance.schema.d.ts.map +1 -0
- package/dist/schemas/academics/attendance.schema.js +250 -0
- package/dist/schemas/academics/attendance.schema.js.map +1 -0
- package/dist/schemas/academics/classroom.schema.d.ts +742 -0
- package/dist/schemas/academics/classroom.schema.d.ts.map +1 -0
- package/dist/schemas/academics/classroom.schema.js +164 -0
- package/dist/schemas/academics/classroom.schema.js.map +1 -0
- package/dist/schemas/academics/course-section.schema.d.ts +388 -0
- package/dist/schemas/academics/course-section.schema.d.ts.map +1 -0
- package/dist/schemas/academics/course-section.schema.js +128 -0
- package/dist/schemas/academics/course-section.schema.js.map +1 -0
- package/dist/schemas/academics/course.schema.d.ts +778 -0
- package/dist/schemas/academics/course.schema.d.ts.map +1 -0
- package/dist/schemas/academics/course.schema.js +207 -0
- package/dist/schemas/academics/course.schema.js.map +1 -0
- package/dist/schemas/academics/grade.schema.d.ts +848 -0
- package/dist/schemas/academics/grade.schema.d.ts.map +1 -0
- package/dist/schemas/academics/grade.schema.js +251 -0
- package/dist/schemas/academics/grade.schema.js.map +1 -0
- package/dist/schemas/academics/index.d.ts +13 -0
- package/dist/schemas/academics/index.d.ts.map +1 -0
- package/dist/schemas/academics/index.js +29 -0
- package/dist/schemas/academics/index.js.map +1 -0
- package/dist/schemas/academics/student.schema.d.ts +2891 -0
- package/dist/schemas/academics/student.schema.d.ts.map +1 -0
- package/dist/schemas/academics/student.schema.js +249 -0
- package/dist/schemas/academics/student.schema.js.map +1 -0
- package/dist/schemas/common.d.ts +183 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +126 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/enrollment/enrollment.schema.d.ts +2799 -0
- package/dist/schemas/enrollment/enrollment.schema.d.ts.map +1 -0
- package/dist/schemas/enrollment/enrollment.schema.js +435 -0
- package/dist/schemas/enrollment/enrollment.schema.js.map +1 -0
- package/dist/schemas/enrollment/index.d.ts +7 -0
- package/dist/schemas/enrollment/index.d.ts.map +1 -0
- package/dist/schemas/enrollment/index.js +23 -0
- package/dist/schemas/enrollment/index.js.map +1 -0
- package/dist/schemas/identity/academic-year.schema.d.ts +546 -0
- package/dist/schemas/identity/academic-year.schema.d.ts.map +1 -0
- package/dist/schemas/identity/academic-year.schema.js +137 -0
- package/dist/schemas/identity/academic-year.schema.js.map +1 -0
- package/dist/schemas/identity/auth.schema.d.ts +670 -0
- package/dist/schemas/identity/auth.schema.d.ts.map +1 -0
- package/dist/schemas/identity/auth.schema.js +126 -0
- package/dist/schemas/identity/auth.schema.js.map +1 -0
- package/dist/schemas/identity/bell-schedule.schema.d.ts +630 -0
- package/dist/schemas/identity/bell-schedule.schema.d.ts.map +1 -0
- package/dist/schemas/identity/bell-schedule.schema.js +143 -0
- package/dist/schemas/identity/bell-schedule.schema.js.map +1 -0
- package/dist/schemas/identity/calendar-date.schema.d.ts +830 -0
- package/dist/schemas/identity/calendar-date.schema.d.ts.map +1 -0
- package/dist/schemas/identity/calendar-date.schema.js +208 -0
- package/dist/schemas/identity/calendar-date.schema.js.map +1 -0
- package/dist/schemas/identity/credential.schema.d.ts +472 -0
- package/dist/schemas/identity/credential.schema.d.ts.map +1 -0
- package/dist/schemas/identity/credential.schema.js +200 -0
- package/dist/schemas/identity/credential.schema.js.map +1 -0
- package/dist/schemas/identity/department.schema.d.ts +567 -0
- package/dist/schemas/identity/department.schema.d.ts.map +1 -0
- package/dist/schemas/identity/department.schema.js +113 -0
- package/dist/schemas/identity/department.schema.js.map +1 -0
- package/dist/schemas/identity/index.d.ts +21 -0
- package/dist/schemas/identity/index.d.ts.map +1 -0
- package/dist/schemas/identity/index.js +39 -0
- package/dist/schemas/identity/index.js.map +1 -0
- package/dist/schemas/identity/leave.schema.d.ts +725 -0
- package/dist/schemas/identity/leave.schema.d.ts.map +1 -0
- package/dist/schemas/identity/leave.schema.js +204 -0
- package/dist/schemas/identity/leave.schema.js.map +1 -0
- package/dist/schemas/identity/role.schema.d.ts +356 -0
- package/dist/schemas/identity/role.schema.d.ts.map +1 -0
- package/dist/schemas/identity/role.schema.js +124 -0
- package/dist/schemas/identity/role.schema.js.map +1 -0
- package/dist/schemas/identity/school-year.schema.d.ts +303 -0
- package/dist/schemas/identity/school-year.schema.d.ts.map +1 -0
- package/dist/schemas/identity/school-year.schema.js +59 -0
- package/dist/schemas/identity/school-year.schema.js.map +1 -0
- package/dist/schemas/identity/school.schema.d.ts +844 -0
- package/dist/schemas/identity/school.schema.d.ts.map +1 -0
- package/dist/schemas/identity/school.schema.js +139 -0
- package/dist/schemas/identity/school.schema.js.map +1 -0
- package/dist/schemas/identity/security.schema.d.ts +422 -0
- package/dist/schemas/identity/security.schema.d.ts.map +1 -0
- package/dist/schemas/identity/security.schema.js +151 -0
- package/dist/schemas/identity/security.schema.js.map +1 -0
- package/dist/schemas/identity/session.schema.d.ts +193 -0
- package/dist/schemas/identity/session.schema.d.ts.map +1 -0
- package/dist/schemas/identity/session.schema.js +59 -0
- package/dist/schemas/identity/session.schema.js.map +1 -0
- package/dist/schemas/identity/staff.schema.d.ts +1037 -0
- package/dist/schemas/identity/staff.schema.d.ts.map +1 -0
- package/dist/schemas/identity/staff.schema.js +251 -0
- package/dist/schemas/identity/staff.schema.js.map +1 -0
- package/dist/schemas/identity/tenant.schema.d.ts +313 -0
- package/dist/schemas/identity/tenant.schema.d.ts.map +1 -0
- package/dist/schemas/identity/tenant.schema.js +81 -0
- package/dist/schemas/identity/tenant.schema.js.map +1 -0
- package/dist/schemas/identity/user.schema.d.ts +921 -0
- package/dist/schemas/identity/user.schema.d.ts.map +1 -0
- package/dist/schemas/identity/user.schema.js +201 -0
- package/dist/schemas/identity/user.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +10 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +26 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/validators/academic-year.d.ts +90 -0
- package/dist/validators/academic-year.d.ts.map +1 -0
- package/dist/validators/academic-year.js +190 -0
- package/dist/validators/academic-year.js.map +1 -0
- package/dist/validators/date-range.d.ts +142 -0
- package/dist/validators/date-range.d.ts.map +1 -0
- package/dist/validators/date-range.js +170 -0
- package/dist/validators/date-range.js.map +1 -0
- package/dist/validators/grade-level.d.ts +80 -0
- package/dist/validators/grade-level.d.ts.map +1 -0
- package/dist/validators/grade-level.js +157 -0
- package/dist/validators/grade-level.js.map +1 -0
- package/dist/validators/index.d.ts +10 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +26 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/password.d.ts +60 -0
- package/dist/validators/password.d.ts.map +1 -0
- package/dist/validators/password.js +81 -0
- package/dist/validators/password.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/identity/user.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* User Schemas - Identity Service
|
|
4
|
+
*
|
|
5
|
+
* Zod schemas for user management DTOs.
|
|
6
|
+
* Single source of truth for user data shapes used by both frontend and backend.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.currentUserProfileSchema = exports.userAssignmentsResponseSchema = exports.schoolAssignmentSchema = exports.schoolRoleSchema = exports.userPreferencesResponseSchema = exports.updatePreferencesSchema = exports.weekStartSchema = exports.timeFormatSchema = exports.themeSchema = exports.flatNotificationsSchema = exports.notificationPreferencesSchema = exports.notificationCategoriesSchema = exports.notificationChannelsSchema = exports.smsChannelSchema = exports.pushChannelSchema = exports.emailChannelSchema = exports.digestFrequencySchema = exports.userListResponseSchema = exports.userResponseSchema = exports.updateUserSchema = exports.createUserSchema = exports.userAddressSchema = exports.userStatusUpdateSchema = exports.userStatusSchema = exports.globalRoleSchema = void 0;
|
|
10
|
+
const zod_1 = require("zod");
|
|
11
|
+
const common_1 = require("../common");
|
|
12
|
+
const staff_schema_1 = require("./staff.schema");
|
|
13
|
+
// ============================================
|
|
14
|
+
// Enums
|
|
15
|
+
// ============================================
|
|
16
|
+
exports.globalRoleSchema = zod_1.z.enum(['TenantAdmin', 'TenantUser']);
|
|
17
|
+
exports.userStatusSchema = zod_1.z.enum(['active', 'inactive', 'pending', 'suspended', 'locked']);
|
|
18
|
+
exports.userStatusUpdateSchema = zod_1.z.enum(['active', 'inactive', 'suspended']);
|
|
19
|
+
// ============================================
|
|
20
|
+
// Address Schema
|
|
21
|
+
// ============================================
|
|
22
|
+
exports.userAddressSchema = zod_1.z.object({
|
|
23
|
+
street: zod_1.z.string().max(100).optional(),
|
|
24
|
+
street2: zod_1.z.string().max(100).optional(),
|
|
25
|
+
city: zod_1.z.string().max(50).optional(),
|
|
26
|
+
state: zod_1.z.string().max(50).optional(),
|
|
27
|
+
postalCode: zod_1.z.string().max(20).optional(),
|
|
28
|
+
country: zod_1.z.string().max(50).optional(),
|
|
29
|
+
});
|
|
30
|
+
// ============================================
|
|
31
|
+
// Create User Schema
|
|
32
|
+
// ============================================
|
|
33
|
+
exports.createUserSchema = zod_1.z.object({
|
|
34
|
+
email: common_1.emailSchema,
|
|
35
|
+
firstName: zod_1.z.string().min(2).max(50),
|
|
36
|
+
lastName: zod_1.z.string().min(2).max(50),
|
|
37
|
+
middleName: zod_1.z.string().max(50).optional(),
|
|
38
|
+
phone: zod_1.z.string().max(30).optional(),
|
|
39
|
+
globalRole: exports.globalRoleSchema.default('TenantUser').optional(),
|
|
40
|
+
temporaryPassword: zod_1.z.string().min(8).optional(),
|
|
41
|
+
// Staff bridge fields — when present, auto-creates a linked Staff record
|
|
42
|
+
schoolId: zod_1.z.string().uuid().optional(),
|
|
43
|
+
staffRole: staff_schema_1.staffRoleSchema.optional(),
|
|
44
|
+
department: zod_1.z.string().max(100).optional(),
|
|
45
|
+
});
|
|
46
|
+
// ============================================
|
|
47
|
+
// Update User Schema
|
|
48
|
+
// ============================================
|
|
49
|
+
exports.updateUserSchema = zod_1.z.object({
|
|
50
|
+
firstName: zod_1.z.string().min(2).max(50).optional(),
|
|
51
|
+
lastName: zod_1.z.string().min(2).max(50).optional(),
|
|
52
|
+
middleName: zod_1.z.string().max(50).optional(),
|
|
53
|
+
displayName: zod_1.z.string().max(100).optional(),
|
|
54
|
+
phone: zod_1.z.string().max(30).optional(),
|
|
55
|
+
avatarUrl: common_1.urlSchema.optional(),
|
|
56
|
+
address: exports.userAddressSchema.optional(),
|
|
57
|
+
status: exports.userStatusUpdateSchema.optional(),
|
|
58
|
+
});
|
|
59
|
+
// ============================================
|
|
60
|
+
// User Response Schema
|
|
61
|
+
// ============================================
|
|
62
|
+
exports.userResponseSchema = zod_1.z.object({
|
|
63
|
+
userId: zod_1.z.string(),
|
|
64
|
+
staffId: zod_1.z.string().uuid().optional(),
|
|
65
|
+
email: zod_1.z.string().email(),
|
|
66
|
+
firstName: zod_1.z.string(),
|
|
67
|
+
lastName: zod_1.z.string(),
|
|
68
|
+
middleName: zod_1.z.string().optional(),
|
|
69
|
+
displayName: zod_1.z.string().optional(),
|
|
70
|
+
phone: zod_1.z.string().optional(),
|
|
71
|
+
avatarUrl: zod_1.z.string().optional(),
|
|
72
|
+
address: exports.userAddressSchema.optional(),
|
|
73
|
+
globalRole: exports.globalRoleSchema,
|
|
74
|
+
status: exports.userStatusSchema,
|
|
75
|
+
lastLoginAt: common_1.isoDateSchema.optional(),
|
|
76
|
+
mfaEnabled: zod_1.z.boolean().optional(),
|
|
77
|
+
createdAt: common_1.isoDateSchema,
|
|
78
|
+
updatedAt: common_1.isoDateSchema,
|
|
79
|
+
});
|
|
80
|
+
// ============================================
|
|
81
|
+
// User List Response Schema
|
|
82
|
+
// ============================================
|
|
83
|
+
exports.userListResponseSchema = (0, common_1.createPaginatedResponseSchema)(exports.userResponseSchema);
|
|
84
|
+
// ============================================
|
|
85
|
+
// Notification Schemas
|
|
86
|
+
// ============================================
|
|
87
|
+
exports.digestFrequencySchema = zod_1.z.enum(['immediate', 'daily', 'weekly', 'never']);
|
|
88
|
+
exports.emailChannelSchema = zod_1.z.object({
|
|
89
|
+
enabled: zod_1.z.boolean().default(true).optional(),
|
|
90
|
+
digest: exports.digestFrequencySchema.default('immediate').optional(),
|
|
91
|
+
});
|
|
92
|
+
exports.pushChannelSchema = zod_1.z.object({
|
|
93
|
+
enabled: zod_1.z.boolean().default(true).optional(),
|
|
94
|
+
});
|
|
95
|
+
exports.smsChannelSchema = zod_1.z.object({
|
|
96
|
+
enabled: zod_1.z.boolean().default(false).optional(),
|
|
97
|
+
phone: zod_1.z.string().optional(),
|
|
98
|
+
});
|
|
99
|
+
exports.notificationChannelsSchema = zod_1.z.object({
|
|
100
|
+
email: exports.emailChannelSchema.optional(),
|
|
101
|
+
push: exports.pushChannelSchema.optional(),
|
|
102
|
+
sms: exports.smsChannelSchema.optional(),
|
|
103
|
+
});
|
|
104
|
+
exports.notificationCategoriesSchema = zod_1.z.object({
|
|
105
|
+
announcements: zod_1.z.boolean().default(true).optional(),
|
|
106
|
+
attendance: zod_1.z.boolean().default(true).optional(),
|
|
107
|
+
grades: zod_1.z.boolean().default(true).optional(),
|
|
108
|
+
messages: zod_1.z.boolean().default(true).optional(),
|
|
109
|
+
calendar: zod_1.z.boolean().default(true).optional(),
|
|
110
|
+
billing: zod_1.z.boolean().default(true).optional(),
|
|
111
|
+
security: zod_1.z.boolean().default(true).optional(), // Cannot be disabled
|
|
112
|
+
});
|
|
113
|
+
exports.notificationPreferencesSchema = zod_1.z.object({
|
|
114
|
+
channels: exports.notificationChannelsSchema.optional(),
|
|
115
|
+
categories: exports.notificationCategoriesSchema.optional(),
|
|
116
|
+
});
|
|
117
|
+
// Flat notification structure for updates (frontend-aligned)
|
|
118
|
+
exports.flatNotificationsSchema = zod_1.z.object({
|
|
119
|
+
email: zod_1.z.boolean().optional(),
|
|
120
|
+
push: zod_1.z.boolean().optional(),
|
|
121
|
+
sms: zod_1.z.boolean().optional(),
|
|
122
|
+
digest: exports.digestFrequencySchema.optional(),
|
|
123
|
+
});
|
|
124
|
+
// ============================================
|
|
125
|
+
// User Preferences Schemas
|
|
126
|
+
// ============================================
|
|
127
|
+
exports.themeSchema = zod_1.z.enum(['light', 'dark', 'system']);
|
|
128
|
+
exports.timeFormatSchema = zod_1.z.enum(['12h', '24h']);
|
|
129
|
+
exports.weekStartSchema = zod_1.z.enum(['sunday', 'monday']);
|
|
130
|
+
exports.updatePreferencesSchema = zod_1.z.object({
|
|
131
|
+
theme: exports.themeSchema.default('system').optional(),
|
|
132
|
+
language: zod_1.z.string().default('en-US').optional(),
|
|
133
|
+
timezone: zod_1.z.string().default('America/New_York').optional(),
|
|
134
|
+
dateFormat: zod_1.z.string().default('MM/DD/YYYY').optional(),
|
|
135
|
+
timeFormat: exports.timeFormatSchema.default('12h').optional(),
|
|
136
|
+
weekStartsOn: exports.weekStartSchema.default('sunday').optional(),
|
|
137
|
+
notifications: exports.flatNotificationsSchema.optional(),
|
|
138
|
+
defaultSchoolId: zod_1.z.string().optional(),
|
|
139
|
+
});
|
|
140
|
+
exports.userPreferencesResponseSchema = zod_1.z.object({
|
|
141
|
+
tenantId: zod_1.z.string(),
|
|
142
|
+
userId: zod_1.z.string(),
|
|
143
|
+
theme: exports.themeSchema,
|
|
144
|
+
language: zod_1.z.string(),
|
|
145
|
+
timezone: zod_1.z.string(),
|
|
146
|
+
dateFormat: zod_1.z.string(),
|
|
147
|
+
timeFormat: exports.timeFormatSchema,
|
|
148
|
+
weekStartsOn: exports.weekStartSchema,
|
|
149
|
+
notifications: exports.flatNotificationsSchema,
|
|
150
|
+
defaultSchoolId: zod_1.z.string().optional(),
|
|
151
|
+
createdAt: common_1.isoDateSchema,
|
|
152
|
+
updatedAt: common_1.isoDateSchema,
|
|
153
|
+
version: zod_1.z.number().int().min(0),
|
|
154
|
+
});
|
|
155
|
+
// ============================================
|
|
156
|
+
// School Assignment Schemas
|
|
157
|
+
// ============================================
|
|
158
|
+
exports.schoolRoleSchema = zod_1.z.enum([
|
|
159
|
+
'Principal',
|
|
160
|
+
'VicePrincipal',
|
|
161
|
+
'Teacher',
|
|
162
|
+
'Accountant',
|
|
163
|
+
'Staff',
|
|
164
|
+
'Counselor',
|
|
165
|
+
'Nurse',
|
|
166
|
+
'Student',
|
|
167
|
+
'Parent',
|
|
168
|
+
]);
|
|
169
|
+
exports.schoolAssignmentSchema = zod_1.z.object({
|
|
170
|
+
schoolId: zod_1.z.string(),
|
|
171
|
+
schoolName: zod_1.z.string(),
|
|
172
|
+
role: zod_1.z.string(), // Allow any string to support custom roles
|
|
173
|
+
});
|
|
174
|
+
exports.userAssignmentsResponseSchema = zod_1.z.object({
|
|
175
|
+
userId: zod_1.z.string(),
|
|
176
|
+
assignments: zod_1.z.array(exports.schoolAssignmentSchema),
|
|
177
|
+
});
|
|
178
|
+
// ============================================
|
|
179
|
+
// Current User Profile Schema (GET /users/me)
|
|
180
|
+
// ============================================
|
|
181
|
+
exports.currentUserProfileSchema = zod_1.z.object({
|
|
182
|
+
userId: zod_1.z.string(),
|
|
183
|
+
email: zod_1.z.string().email(),
|
|
184
|
+
firstName: zod_1.z.string(),
|
|
185
|
+
lastName: zod_1.z.string(),
|
|
186
|
+
middleName: zod_1.z.string().optional(),
|
|
187
|
+
displayName: zod_1.z.string().optional(),
|
|
188
|
+
phone: zod_1.z.string().optional(),
|
|
189
|
+
avatarUrl: zod_1.z.string().optional(),
|
|
190
|
+
address: exports.userAddressSchema.optional(),
|
|
191
|
+
globalRole: exports.globalRoleSchema,
|
|
192
|
+
status: exports.userStatusSchema,
|
|
193
|
+
tenantId: zod_1.z.string(),
|
|
194
|
+
tenantName: zod_1.z.string().optional(),
|
|
195
|
+
assignments: zod_1.z.array(exports.schoolAssignmentSchema),
|
|
196
|
+
lastLoginAt: common_1.isoDateSchema.optional(),
|
|
197
|
+
mfaEnabled: zod_1.z.boolean().optional(),
|
|
198
|
+
createdAt: common_1.isoDateSchema,
|
|
199
|
+
updatedAt: common_1.isoDateSchema,
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=user.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.schema.js","sourceRoot":"","sources":["../../../src/schemas/identity/user.schema.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,6BAAwB;AACxB,sCAMmB;AACnB,iDAAiD;AAEjD,+CAA+C;AAC/C,QAAQ;AACR,+CAA+C;AAElC,QAAA,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;AAGzD,QAAA,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGpF,QAAA,sBAAsB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAGlF,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAElC,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACvC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAIH,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAElC,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,oBAAW;IAClB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACpC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACnC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,wBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IAC7D,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAE/C,yEAAyE;IACzE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,8BAAe,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIH,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAElC,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,kBAAS,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,yBAAiB,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,8BAAsB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAIH,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAElC,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,yBAAiB,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,wBAAgB;IAC5B,MAAM,EAAE,wBAAgB;IACxB,WAAW,EAAE,sBAAa,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,sBAAa;IACxB,SAAS,EAAE,sBAAa;CACzB,CAAC,CAAC;AAIH,+CAA+C;AAC/C,4BAA4B;AAC5B,+CAA+C;AAElC,QAAA,sBAAsB,GAAG,IAAA,sCAA6B,EAAC,0BAAkB,CAAC,CAAC;AAGxF,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAElC,QAAA,qBAAqB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAG1E,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,6BAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAIU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAIU,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAIU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,0BAAkB,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,yBAAiB,CAAC,QAAQ,EAAE;IAClC,GAAG,EAAE,wBAAgB,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIU,QAAA,4BAA4B,GAAG,OAAC,CAAC,MAAM,CAAC;IACnD,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACnD,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAChD,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC9C,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC9C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC7C,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,qBAAqB;CACtE,CAAC,CAAC;AAIU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,QAAQ,EAAE,kCAA0B,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,oCAA4B,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAIH,6DAA6D;AAChD,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,GAAG,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,6BAAqB,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAIH,+CAA+C;AAC/C,2BAA2B;AAC3B,+CAA+C;AAElC,QAAA,WAAW,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGlD,QAAA,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAG1C,QAAA,eAAe,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG/C,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,mBAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IAC/C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;IAChD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IAC3D,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACvD,UAAU,EAAE,wBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACtD,YAAY,EAAE,uBAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IAC1D,aAAa,EAAE,+BAAuB,CAAC,QAAQ,EAAE;IACjD,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAIU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,mBAAW;IAClB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,wBAAgB;IAC5B,YAAY,EAAE,uBAAe;IAC7B,aAAa,EAAE,+BAAuB;IACtC,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,sBAAa;IACxB,SAAS,EAAE,sBAAa;IACxB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC,CAAC,CAAC;AAIH,+CAA+C;AAC/C,4BAA4B;AAC5B,+CAA+C;AAElC,QAAA,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC;IACrC,WAAW;IACX,eAAe;IACf,SAAS;IACT,YAAY;IACZ,OAAO;IACP,WAAW;IACX,OAAO;IACP,SAAS;IACT,QAAQ;CACT,CAAC,CAAC;AAIU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,2CAA2C;CAC9D,CAAC,CAAC;AAIU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,8BAAsB,CAAC;CAC7C,CAAC,CAAC;AAIH,+CAA+C;AAC/C,8CAA8C;AAC9C,+CAA+C;AAElC,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,yBAAiB,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,wBAAgB;IAC5B,MAAM,EAAE,wBAAgB;IACxB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,8BAAsB,CAAC;IAC5C,WAAW,EAAE,sBAAa,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,sBAAa;IACxB,SAAS,EAAE,sBAAa;CACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Schemas Index
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all Zod schemas and their inferred types
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./common"), exports);
|
|
23
|
+
__exportStar(require("./identity"), exports);
|
|
24
|
+
__exportStar(require("./academics"), exports);
|
|
25
|
+
__exportStar(require("./enrollment"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Academic Year Validators
|
|
3
|
+
*
|
|
4
|
+
* Status transitions and business rule validators for academic years.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { type AcademicYearStatus } from '../schemas/identity/academic-year.schema';
|
|
8
|
+
export { academicYearStatusSchema } from '../schemas/identity/academic-year.schema';
|
|
9
|
+
export declare const ACADEMIC_YEAR_STATUSES: readonly ["planning", "active", "completed", "archived"];
|
|
10
|
+
export type AcademicYearStatusType = AcademicYearStatus;
|
|
11
|
+
/**
|
|
12
|
+
* Status display names
|
|
13
|
+
*/
|
|
14
|
+
export declare const ACADEMIC_YEAR_STATUS_NAMES: Record<AcademicYearStatusType, string>;
|
|
15
|
+
/**
|
|
16
|
+
* Status descriptions
|
|
17
|
+
*/
|
|
18
|
+
export declare const ACADEMIC_YEAR_STATUS_DESCRIPTIONS: Record<AcademicYearStatusType, string>;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a status transition is valid
|
|
21
|
+
*/
|
|
22
|
+
export declare function isValidStatusTransition(from: AcademicYearStatusType, to: AcademicYearStatusType): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Get the list of valid next statuses from current status
|
|
25
|
+
*/
|
|
26
|
+
export declare function getNextValidStatuses(current: AcademicYearStatusType): AcademicYearStatusType[];
|
|
27
|
+
/**
|
|
28
|
+
* Check if settings can be modified in the given status
|
|
29
|
+
*/
|
|
30
|
+
export declare function canModifySettings(status: AcademicYearStatusType): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Check if the academic year is currently active (data is being recorded)
|
|
33
|
+
*/
|
|
34
|
+
export declare function isYearActive(status: AcademicYearStatusType): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Check if the academic year is finalized (completed or archived)
|
|
37
|
+
*/
|
|
38
|
+
export declare function isYearFinalized(status: AcademicYearStatusType): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Get the display name for a status
|
|
41
|
+
*/
|
|
42
|
+
export declare function getStatusDisplayName(status: AcademicYearStatusType): string;
|
|
43
|
+
/**
|
|
44
|
+
* Get the description for a status
|
|
45
|
+
*/
|
|
46
|
+
export declare function getStatusDescription(status: AcademicYearStatusType): string;
|
|
47
|
+
/**
|
|
48
|
+
* Settings that are locked when academic year is active or completed
|
|
49
|
+
*/
|
|
50
|
+
export declare const LOCKED_SETTINGS_WHEN_ACTIVE: readonly ["startDate", "endDate", "gradingPeriods", "calendarType"];
|
|
51
|
+
/**
|
|
52
|
+
* Settings that are always modifiable (even when active)
|
|
53
|
+
*/
|
|
54
|
+
export declare const ALWAYS_MODIFIABLE_SETTINGS: readonly ["name", "description", "holidays"];
|
|
55
|
+
export type LockedSetting = typeof LOCKED_SETTINGS_WHEN_ACTIVE[number];
|
|
56
|
+
export type ModifiableSetting = typeof ALWAYS_MODIFIABLE_SETTINGS[number];
|
|
57
|
+
/**
|
|
58
|
+
* Check if a specific setting can be modified given the current status
|
|
59
|
+
*/
|
|
60
|
+
export declare function canModifySetting(setting: string, status: AcademicYearStatusType): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Generate a standard academic year name (e.g., "2024-2025")
|
|
63
|
+
*/
|
|
64
|
+
export declare function generateAcademicYearName(startYear: number): string;
|
|
65
|
+
/**
|
|
66
|
+
* Parse an academic year name to get the start year
|
|
67
|
+
*/
|
|
68
|
+
export declare function parseAcademicYearName(name: string): number | null;
|
|
69
|
+
/**
|
|
70
|
+
* Validate an academic year name format
|
|
71
|
+
*/
|
|
72
|
+
export declare function isValidAcademicYearName(name: string): boolean;
|
|
73
|
+
export declare const statusTransitionSchema: z.ZodEffects<z.ZodObject<{
|
|
74
|
+
currentStatus: z.ZodEnum<["planning", "active", "completed", "archived"]>;
|
|
75
|
+
newStatus: z.ZodEnum<["planning", "active", "completed", "archived"]>;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
currentStatus: "active" | "archived" | "planning" | "completed";
|
|
78
|
+
newStatus: "active" | "archived" | "planning" | "completed";
|
|
79
|
+
}, {
|
|
80
|
+
currentStatus: "active" | "archived" | "planning" | "completed";
|
|
81
|
+
newStatus: "active" | "archived" | "planning" | "completed";
|
|
82
|
+
}>, {
|
|
83
|
+
currentStatus: "active" | "archived" | "planning" | "completed";
|
|
84
|
+
newStatus: "active" | "archived" | "planning" | "completed";
|
|
85
|
+
}, {
|
|
86
|
+
currentStatus: "active" | "archived" | "planning" | "completed";
|
|
87
|
+
newStatus: "active" | "archived" | "planning" | "completed";
|
|
88
|
+
}>;
|
|
89
|
+
export type StatusTransition = z.infer<typeof statusTransitionSchema>;
|
|
90
|
+
//# sourceMappingURL=academic-year.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"academic-year.d.ts","sourceRoot":"","sources":["../../src/validators/academic-year.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAMpF,eAAO,MAAM,sBAAsB,0DAA2D,CAAC;AAC/F,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAiBxD;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAK7E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAKpF,CAAC;AAMF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,sBAAsB,EAC5B,EAAE,EAAE,sBAAsB,GACzB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAE9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAEpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAEvE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAE3E;AAMD;;GAEG;AACH,eAAO,MAAM,2BAA2B,qEAK9B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,0BAA0B,8CAI7B,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAE1E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAuBT;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMjE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAMD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAQlC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Academic Year Validators
|
|
4
|
+
*
|
|
5
|
+
* Status transitions and business rule validators for academic years.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.statusTransitionSchema = exports.ALWAYS_MODIFIABLE_SETTINGS = exports.LOCKED_SETTINGS_WHEN_ACTIVE = exports.ACADEMIC_YEAR_STATUS_DESCRIPTIONS = exports.ACADEMIC_YEAR_STATUS_NAMES = exports.ACADEMIC_YEAR_STATUSES = exports.academicYearStatusSchema = void 0;
|
|
9
|
+
exports.isValidStatusTransition = isValidStatusTransition;
|
|
10
|
+
exports.getNextValidStatuses = getNextValidStatuses;
|
|
11
|
+
exports.canModifySettings = canModifySettings;
|
|
12
|
+
exports.isYearActive = isYearActive;
|
|
13
|
+
exports.isYearFinalized = isYearFinalized;
|
|
14
|
+
exports.getStatusDisplayName = getStatusDisplayName;
|
|
15
|
+
exports.getStatusDescription = getStatusDescription;
|
|
16
|
+
exports.canModifySetting = canModifySetting;
|
|
17
|
+
exports.generateAcademicYearName = generateAcademicYearName;
|
|
18
|
+
exports.parseAcademicYearName = parseAcademicYearName;
|
|
19
|
+
exports.isValidAcademicYearName = isValidAcademicYearName;
|
|
20
|
+
const zod_1 = require("zod");
|
|
21
|
+
const academic_year_schema_1 = require("../schemas/identity/academic-year.schema");
|
|
22
|
+
// Re-export the canonical schema from identity for convenience
|
|
23
|
+
var academic_year_schema_2 = require("../schemas/identity/academic-year.schema");
|
|
24
|
+
Object.defineProperty(exports, "academicYearStatusSchema", { enumerable: true, get: function () { return academic_year_schema_2.academicYearStatusSchema; } });
|
|
25
|
+
// ============================================
|
|
26
|
+
// Academic Year Status
|
|
27
|
+
// ============================================
|
|
28
|
+
exports.ACADEMIC_YEAR_STATUSES = ['planning', 'active', 'completed', 'archived'];
|
|
29
|
+
// ============================================
|
|
30
|
+
// Status Transitions
|
|
31
|
+
// ============================================
|
|
32
|
+
/**
|
|
33
|
+
* Valid status transitions for academic years
|
|
34
|
+
* Key: current status, Value: array of valid next statuses
|
|
35
|
+
*/
|
|
36
|
+
const VALID_STATUS_TRANSITIONS = {
|
|
37
|
+
planning: ['active'],
|
|
38
|
+
active: ['completed'],
|
|
39
|
+
completed: ['archived'],
|
|
40
|
+
archived: [],
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Status display names
|
|
44
|
+
*/
|
|
45
|
+
exports.ACADEMIC_YEAR_STATUS_NAMES = {
|
|
46
|
+
planning: 'Planning',
|
|
47
|
+
active: 'Active',
|
|
48
|
+
completed: 'Completed',
|
|
49
|
+
archived: 'Archived',
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Status descriptions
|
|
53
|
+
*/
|
|
54
|
+
exports.ACADEMIC_YEAR_STATUS_DESCRIPTIONS = {
|
|
55
|
+
planning: 'Academic year is being configured. Settings can be freely modified.',
|
|
56
|
+
active: 'Academic year is in progress. Some settings are locked.',
|
|
57
|
+
completed: 'Academic year has ended. Data is read-only.',
|
|
58
|
+
archived: 'Academic year is archived. May be hidden from default views.',
|
|
59
|
+
};
|
|
60
|
+
// ============================================
|
|
61
|
+
// Utility Functions
|
|
62
|
+
// ============================================
|
|
63
|
+
/**
|
|
64
|
+
* Check if a status transition is valid
|
|
65
|
+
*/
|
|
66
|
+
function isValidStatusTransition(from, to) {
|
|
67
|
+
var _a, _b;
|
|
68
|
+
return (_b = (_a = VALID_STATUS_TRANSITIONS[from]) === null || _a === void 0 ? void 0 : _a.includes(to)) !== null && _b !== void 0 ? _b : false;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the list of valid next statuses from current status
|
|
72
|
+
*/
|
|
73
|
+
function getNextValidStatuses(current) {
|
|
74
|
+
var _a;
|
|
75
|
+
return (_a = VALID_STATUS_TRANSITIONS[current]) !== null && _a !== void 0 ? _a : [];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if settings can be modified in the given status
|
|
79
|
+
*/
|
|
80
|
+
function canModifySettings(status) {
|
|
81
|
+
return status === 'planning';
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if the academic year is currently active (data is being recorded)
|
|
85
|
+
*/
|
|
86
|
+
function isYearActive(status) {
|
|
87
|
+
return status === 'active';
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if the academic year is finalized (completed or archived)
|
|
91
|
+
*/
|
|
92
|
+
function isYearFinalized(status) {
|
|
93
|
+
return status === 'completed' || status === 'archived';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get the display name for a status
|
|
97
|
+
*/
|
|
98
|
+
function getStatusDisplayName(status) {
|
|
99
|
+
return exports.ACADEMIC_YEAR_STATUS_NAMES[status];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get the description for a status
|
|
103
|
+
*/
|
|
104
|
+
function getStatusDescription(status) {
|
|
105
|
+
return exports.ACADEMIC_YEAR_STATUS_DESCRIPTIONS[status];
|
|
106
|
+
}
|
|
107
|
+
// ============================================
|
|
108
|
+
// Temporal Lock Constraint
|
|
109
|
+
// ============================================
|
|
110
|
+
/**
|
|
111
|
+
* Settings that are locked when academic year is active or completed
|
|
112
|
+
*/
|
|
113
|
+
exports.LOCKED_SETTINGS_WHEN_ACTIVE = [
|
|
114
|
+
'startDate',
|
|
115
|
+
'endDate',
|
|
116
|
+
'gradingPeriods',
|
|
117
|
+
'calendarType',
|
|
118
|
+
];
|
|
119
|
+
/**
|
|
120
|
+
* Settings that are always modifiable (even when active)
|
|
121
|
+
*/
|
|
122
|
+
exports.ALWAYS_MODIFIABLE_SETTINGS = [
|
|
123
|
+
'name',
|
|
124
|
+
'description',
|
|
125
|
+
'holidays',
|
|
126
|
+
];
|
|
127
|
+
/**
|
|
128
|
+
* Check if a specific setting can be modified given the current status
|
|
129
|
+
*/
|
|
130
|
+
function canModifySetting(setting, status) {
|
|
131
|
+
// Archived years cannot be modified at all
|
|
132
|
+
if (status === 'archived') {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
// Completed years are mostly read-only
|
|
136
|
+
if (status === 'completed') {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
// Planning status allows all modifications
|
|
140
|
+
if (status === 'planning') {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
// Active status - check if setting is always modifiable
|
|
144
|
+
if (exports.ALWAYS_MODIFIABLE_SETTINGS.includes(setting)) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
// Active status - check if setting is locked
|
|
148
|
+
return !exports.LOCKED_SETTINGS_WHEN_ACTIVE.includes(setting);
|
|
149
|
+
}
|
|
150
|
+
// ============================================
|
|
151
|
+
// Academic Year Naming
|
|
152
|
+
// ============================================
|
|
153
|
+
/**
|
|
154
|
+
* Generate a standard academic year name (e.g., "2024-2025")
|
|
155
|
+
*/
|
|
156
|
+
function generateAcademicYearName(startYear) {
|
|
157
|
+
return `${startYear}-${startYear + 1}`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Parse an academic year name to get the start year
|
|
161
|
+
*/
|
|
162
|
+
function parseAcademicYearName(name) {
|
|
163
|
+
const match = name.match(/^(\d{4})-(\d{4})$/);
|
|
164
|
+
if (!match) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
return parseInt(match[1], 10);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Validate an academic year name format
|
|
171
|
+
*/
|
|
172
|
+
function isValidAcademicYearName(name) {
|
|
173
|
+
const match = name.match(/^(\d{4})-(\d{4})$/);
|
|
174
|
+
if (!match) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
const startYear = parseInt(match[1], 10);
|
|
178
|
+
const endYear = parseInt(match[2], 10);
|
|
179
|
+
return endYear === startYear + 1;
|
|
180
|
+
}
|
|
181
|
+
// ============================================
|
|
182
|
+
// Zod Schema with Status Transition Validation
|
|
183
|
+
// ============================================
|
|
184
|
+
exports.statusTransitionSchema = zod_1.z.object({
|
|
185
|
+
currentStatus: academic_year_schema_1.academicYearStatusSchema,
|
|
186
|
+
newStatus: academic_year_schema_1.academicYearStatusSchema,
|
|
187
|
+
}).refine(data => isValidStatusTransition(data.currentStatus, data.newStatus), data => ({
|
|
188
|
+
message: `Invalid status transition from "${data.currentStatus}" to "${data.newStatus}". Valid transitions from "${data.currentStatus}": ${getNextValidStatuses(data.currentStatus).join(', ') || 'none'}`,
|
|
189
|
+
}));
|
|
190
|
+
//# sourceMappingURL=academic-year.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"academic-year.js","sourceRoot":"","sources":["../../src/validators/academic-year.ts"],"names":[],"mappings":"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"}
|