@brite-future-schools-contracts/contracts 1.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/README.md +99 -0
- package/dist/chunk-AECTWOHQ.mjs +447 -0
- package/dist/chunk-AECTWOHQ.mjs.map +1 -0
- package/dist/chunk-TV57ZLZQ.mjs +733 -0
- package/dist/chunk-TV57ZLZQ.mjs.map +1 -0
- package/dist/contracts/index.d.mts +6418 -0
- package/dist/contracts/index.d.ts +6418 -0
- package/dist/contracts/index.js +1125 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/index.mjs +36 -0
- package/dist/contracts/index.mjs.map +1 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1229 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +141 -0
- package/dist/index.mjs.map +1 -0
- package/dist/schemas/index.d.mts +697 -0
- package/dist/schemas/index.d.ts +697 -0
- package/dist/schemas/index.js +522 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/index.mjs +109 -0
- package/dist/schemas/index.mjs.map +1 -0
- package/package.json +59 -0
- package/src/contracts/index.ts +941 -0
- package/src/index.ts +2 -0
- package/src/schemas/index.ts +476 -0
package/README.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# @bfs/contracts
|
|
2
|
+
|
|
3
|
+
> Shared oRPC contracts, Zod schemas, and TypeScript types for the **Brite Future Schools** platform.
|
|
4
|
+
|
|
5
|
+
This package is the **single source of truth** for all API shapes across every repo. It is published privately to GitHub Packages and installed by `bfs-api`, `bfs-web`, and `bfs-mobile`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## What's in here
|
|
10
|
+
|
|
11
|
+
| Export path | Contents |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `@bfs/contracts` | Everything (re-exports both below) |
|
|
14
|
+
| `@bfs/contracts/schemas` | All Zod schemas (inputs, outputs, enums) |
|
|
15
|
+
| `@bfs/contracts/contracts` | All oRPC contract definitions + `AppContract` type |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
bfs-contracts ──► published as @bfs/contracts
|
|
23
|
+
▲ │
|
|
24
|
+
│ ┌──────────┼──────────┐
|
|
25
|
+
│ bfs-api bfs-web bfs-mobile
|
|
26
|
+
│ (server) (client) (client)
|
|
27
|
+
│
|
|
28
|
+
oRPC contract-first pattern:
|
|
29
|
+
- Contracts define the shape (input/output Zod schemas)
|
|
30
|
+
- API implements each contract procedure
|
|
31
|
+
- Web/mobile create typed clients from the same contracts
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Why a separate package?
|
|
35
|
+
|
|
36
|
+
Because the three apps live in **separate repos** and are **deployed independently**. Without a shared package you would either:
|
|
37
|
+
|
|
38
|
+
- Duplicate type definitions (gets out of sync immediately), or
|
|
39
|
+
- Import from `bfs-api` directly (creates a runtime dependency)
|
|
40
|
+
|
|
41
|
+
The contract package is **zero runtime** for web/mobile — it is only used for TypeScript types and Zod validation at build time.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Installation (in each app repo)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# .npmrc (root of each repo)
|
|
49
|
+
@bfs:registry=https://npm.pkg.github.com
|
|
50
|
+
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
|
|
51
|
+
|
|
52
|
+
# then
|
|
53
|
+
pnpm add @bfs/contracts
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Local development (without publishing)
|
|
59
|
+
|
|
60
|
+
Use `pnpm link` or point to a local path in each repo's `package.json`:
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"@bfs/contracts": "file:../bfs-contracts"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Adding a new procedure
|
|
73
|
+
|
|
74
|
+
1. Add the Zod schema to `src/schemas/index.ts`
|
|
75
|
+
2. Add the contract procedure to the relevant router in `src/contracts/index.ts`
|
|
76
|
+
3. Bump the version: `pnpm version patch`
|
|
77
|
+
4. Push — GitHub Actions publishes automatically
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Build
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pnpm build # builds to dist/
|
|
85
|
+
pnpm dev # watch mode
|
|
86
|
+
pnpm type-check # TypeScript check without building
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Versioning policy
|
|
92
|
+
|
|
93
|
+
| Change type | Version bump |
|
|
94
|
+
|---|---|
|
|
95
|
+
| New procedure added | `patch` |
|
|
96
|
+
| Input/output schema changed (non-breaking) | `minor` |
|
|
97
|
+
| Breaking schema change | `major` |
|
|
98
|
+
|
|
99
|
+
Always update `bfs-api` first, then `bfs-web` and `bfs-mobile`.
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
// src/schemas/index.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var uuidSchema = z.string().uuid();
|
|
4
|
+
var paginationSchema = z.object({
|
|
5
|
+
page: z.number().int().min(1).default(1),
|
|
6
|
+
limit: z.number().int().min(1).max(100).default(20)
|
|
7
|
+
});
|
|
8
|
+
var dateRangeSchema = z.object({
|
|
9
|
+
from: z.string().datetime().optional(),
|
|
10
|
+
to: z.string().datetime().optional()
|
|
11
|
+
});
|
|
12
|
+
var genderEnum = z.enum(["male", "female"]);
|
|
13
|
+
var userStatusEnum = z.enum(["active", "inactive", "suspended"]);
|
|
14
|
+
var systemRoleEnum = z.enum([
|
|
15
|
+
"DIRECTOR",
|
|
16
|
+
"PRINCIPAL",
|
|
17
|
+
"DEPUTY_PRINCIPAL",
|
|
18
|
+
"HOD",
|
|
19
|
+
"CLASS_TEACHER",
|
|
20
|
+
"SUBJECT_TEACHER",
|
|
21
|
+
"BURSAR",
|
|
22
|
+
"HR_ADMIN",
|
|
23
|
+
"SCHOOL_NURSE",
|
|
24
|
+
"LIBRARIAN",
|
|
25
|
+
"LAB_TECHNICIAN",
|
|
26
|
+
"SPORTS_COACH",
|
|
27
|
+
"COUNSELLOR",
|
|
28
|
+
"CARETAKER",
|
|
29
|
+
"SECURITY",
|
|
30
|
+
"KITCHEN_STAFF",
|
|
31
|
+
"DRIVER",
|
|
32
|
+
"IT_ADMIN",
|
|
33
|
+
"STUDENT",
|
|
34
|
+
"PARENT",
|
|
35
|
+
"ORG_SPONSOR",
|
|
36
|
+
"INDIVIDUAL_SPONSOR"
|
|
37
|
+
]);
|
|
38
|
+
var loginInputSchema = z.object({
|
|
39
|
+
email: z.string().email(),
|
|
40
|
+
password: z.string().min(8),
|
|
41
|
+
deviceFingerprint: z.string().optional()
|
|
42
|
+
});
|
|
43
|
+
var loginOutputSchema = z.object({
|
|
44
|
+
accessToken: z.string(),
|
|
45
|
+
refreshToken: z.string().optional(),
|
|
46
|
+
user: z.object({
|
|
47
|
+
id: uuidSchema,
|
|
48
|
+
firstName: z.string(),
|
|
49
|
+
middleName: z.string().nullable(),
|
|
50
|
+
lastName: z.string(),
|
|
51
|
+
email: z.string().email(),
|
|
52
|
+
avatarUrl: z.string().nullable(),
|
|
53
|
+
roles: z.array(
|
|
54
|
+
z.object({
|
|
55
|
+
id: uuidSchema,
|
|
56
|
+
name: z.string(),
|
|
57
|
+
branchId: uuidSchema.nullable()
|
|
58
|
+
})
|
|
59
|
+
),
|
|
60
|
+
activeBranchId: uuidSchema.nullable(),
|
|
61
|
+
isMfaEnabled: z.boolean()
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
var refreshTokenOutputSchema = z.object({
|
|
65
|
+
accessToken: z.string()
|
|
66
|
+
});
|
|
67
|
+
var refreshInputSchema = z.object({
|
|
68
|
+
refreshToken: z.string().optional()
|
|
69
|
+
});
|
|
70
|
+
var mfaVerifyInputSchema = z.object({
|
|
71
|
+
totp: z.string().length(6)
|
|
72
|
+
});
|
|
73
|
+
var changePasswordInputSchema = z.object({
|
|
74
|
+
currentPassword: z.string().min(8),
|
|
75
|
+
newPassword: z.string().min(8)
|
|
76
|
+
});
|
|
77
|
+
var userSchema = z.object({
|
|
78
|
+
id: uuidSchema,
|
|
79
|
+
firstName: z.string(),
|
|
80
|
+
middleName: z.string().nullable(),
|
|
81
|
+
lastName: z.string(),
|
|
82
|
+
email: z.string().email(),
|
|
83
|
+
phone: z.string().nullable(),
|
|
84
|
+
avatarUrl: z.string().nullable(),
|
|
85
|
+
isActive: z.boolean(),
|
|
86
|
+
isMfaEnabled: z.boolean(),
|
|
87
|
+
lastLoginAt: z.string().datetime().nullable(),
|
|
88
|
+
createdAt: z.string().datetime()
|
|
89
|
+
});
|
|
90
|
+
var branchSchema = z.object({
|
|
91
|
+
id: uuidSchema,
|
|
92
|
+
name: z.string(),
|
|
93
|
+
code: z.string(),
|
|
94
|
+
address: z.string(),
|
|
95
|
+
county: z.string(),
|
|
96
|
+
phone: z.string().nullable(),
|
|
97
|
+
email: z.string().email().nullable(),
|
|
98
|
+
logoUrl: z.string().nullable(),
|
|
99
|
+
motto: z.string().nullable(),
|
|
100
|
+
principalId: uuidSchema.nullable(),
|
|
101
|
+
mpesaPaybill: z.string().nullable(),
|
|
102
|
+
featureFlags: z.record(z.boolean()),
|
|
103
|
+
createdAt: z.string().datetime()
|
|
104
|
+
});
|
|
105
|
+
var createBranchInputSchema = z.object({
|
|
106
|
+
name: z.string().min(2).max(100),
|
|
107
|
+
code: z.string().min(2).max(20),
|
|
108
|
+
address: z.string(),
|
|
109
|
+
county: z.string(),
|
|
110
|
+
phone: z.string().optional(),
|
|
111
|
+
email: z.string().email().optional(),
|
|
112
|
+
motto: z.string().optional()
|
|
113
|
+
});
|
|
114
|
+
var studentStatusEnum = z.enum([
|
|
115
|
+
"active",
|
|
116
|
+
"transferred",
|
|
117
|
+
"graduated",
|
|
118
|
+
"suspended",
|
|
119
|
+
"withdrawn"
|
|
120
|
+
]);
|
|
121
|
+
var studentSchema = z.object({
|
|
122
|
+
id: uuidSchema,
|
|
123
|
+
branchId: uuidSchema,
|
|
124
|
+
admissionNo: z.string(),
|
|
125
|
+
nemisNo: z.string().nullable(),
|
|
126
|
+
firstName: z.string(),
|
|
127
|
+
middleName: z.string().nullable(),
|
|
128
|
+
lastName: z.string(),
|
|
129
|
+
dateOfBirth: z.string(),
|
|
130
|
+
gender: genderEnum,
|
|
131
|
+
photoUrl: z.string().nullable(),
|
|
132
|
+
bloodGroup: z.string().nullable(),
|
|
133
|
+
admissionDate: z.string(),
|
|
134
|
+
status: studentStatusEnum,
|
|
135
|
+
currentClassId: uuidSchema.nullable(),
|
|
136
|
+
createdAt: z.string().datetime()
|
|
137
|
+
});
|
|
138
|
+
var createStudentInputSchema = z.object({
|
|
139
|
+
admissionNo: z.string().min(1),
|
|
140
|
+
nemisNo: z.string().optional(),
|
|
141
|
+
firstName: z.string().min(1).max(100),
|
|
142
|
+
middleName: z.string().max(100).optional(),
|
|
143
|
+
lastName: z.string().min(1).max(100),
|
|
144
|
+
dateOfBirth: z.string(),
|
|
145
|
+
gender: genderEnum,
|
|
146
|
+
admissionDate: z.string(),
|
|
147
|
+
guardianId: uuidSchema.optional()
|
|
148
|
+
});
|
|
149
|
+
var listStudentsInputSchema = paginationSchema.extend({
|
|
150
|
+
branchId: uuidSchema.optional(),
|
|
151
|
+
classId: uuidSchema.optional(),
|
|
152
|
+
search: z.string().optional(),
|
|
153
|
+
status: studentStatusEnum.optional(),
|
|
154
|
+
termId: uuidSchema.optional()
|
|
155
|
+
});
|
|
156
|
+
var guardianSchema = z.object({
|
|
157
|
+
id: uuidSchema,
|
|
158
|
+
userId: uuidSchema,
|
|
159
|
+
firstName: z.string(),
|
|
160
|
+
middleName: z.string().nullable(),
|
|
161
|
+
lastName: z.string(),
|
|
162
|
+
relationship: z.string(),
|
|
163
|
+
phone: z.string(),
|
|
164
|
+
email: z.string().email().nullable(),
|
|
165
|
+
nationalId: z.string().nullable(),
|
|
166
|
+
occupation: z.string().nullable(),
|
|
167
|
+
address: z.string().nullable()
|
|
168
|
+
});
|
|
169
|
+
var sponsorTypeEnum = z.enum(["organisation", "individual"]);
|
|
170
|
+
var sponsorSchema = z.object({
|
|
171
|
+
id: uuidSchema,
|
|
172
|
+
branchId: uuidSchema,
|
|
173
|
+
type: sponsorTypeEnum,
|
|
174
|
+
organisationName: z.string().nullable(),
|
|
175
|
+
firstName: z.string().nullable(),
|
|
176
|
+
middleName: z.string().nullable(),
|
|
177
|
+
lastName: z.string().nullable(),
|
|
178
|
+
contactUserId: uuidSchema.nullable(),
|
|
179
|
+
phone: z.string(),
|
|
180
|
+
email: z.string().email().nullable(),
|
|
181
|
+
address: z.string().nullable()
|
|
182
|
+
});
|
|
183
|
+
var gradeLevelEnum = z.enum([
|
|
184
|
+
"PP1",
|
|
185
|
+
"PP2",
|
|
186
|
+
"G1",
|
|
187
|
+
"G2",
|
|
188
|
+
"G3",
|
|
189
|
+
"G4",
|
|
190
|
+
"G5",
|
|
191
|
+
"G6",
|
|
192
|
+
"G7",
|
|
193
|
+
"G8",
|
|
194
|
+
"G9"
|
|
195
|
+
]);
|
|
196
|
+
var assessmentTypeEnum = z.enum([
|
|
197
|
+
"formative",
|
|
198
|
+
"summative",
|
|
199
|
+
"knec_national",
|
|
200
|
+
"informal"
|
|
201
|
+
]);
|
|
202
|
+
var rubricBandEnum = z.enum(["EE", "ME", "AE", "BE"]);
|
|
203
|
+
var subjectSchema = z.object({
|
|
204
|
+
id: uuidSchema,
|
|
205
|
+
branchId: uuidSchema,
|
|
206
|
+
name: z.string(),
|
|
207
|
+
code: z.string(),
|
|
208
|
+
gradeLevel: gradeLevelEnum,
|
|
209
|
+
departmentId: uuidSchema.nullable()
|
|
210
|
+
});
|
|
211
|
+
var assessmentScoreInputSchema = z.object({
|
|
212
|
+
assessmentId: uuidSchema,
|
|
213
|
+
studentId: uuidSchema,
|
|
214
|
+
subStrandId: uuidSchema,
|
|
215
|
+
numericScore: z.number().min(0).max(100),
|
|
216
|
+
comments: z.string().optional()
|
|
217
|
+
});
|
|
218
|
+
var reportCardStatusEnum = z.enum([
|
|
219
|
+
"draft",
|
|
220
|
+
"hod_review",
|
|
221
|
+
"principal_review",
|
|
222
|
+
"released",
|
|
223
|
+
"blocked"
|
|
224
|
+
]);
|
|
225
|
+
var feeItemCategoryEnum = z.enum([
|
|
226
|
+
"compulsory",
|
|
227
|
+
"class_specific",
|
|
228
|
+
"additive"
|
|
229
|
+
]);
|
|
230
|
+
var paymentMethodEnum = z.enum([
|
|
231
|
+
"mpesa",
|
|
232
|
+
"bank",
|
|
233
|
+
"card",
|
|
234
|
+
"cash",
|
|
235
|
+
"cheque"
|
|
236
|
+
]);
|
|
237
|
+
var invoiceStatusEnum = z.enum([
|
|
238
|
+
"draft",
|
|
239
|
+
"sent",
|
|
240
|
+
"partial",
|
|
241
|
+
"paid",
|
|
242
|
+
"overdue",
|
|
243
|
+
"cancelled"
|
|
244
|
+
]);
|
|
245
|
+
var feeItemSchema = z.object({
|
|
246
|
+
id: uuidSchema,
|
|
247
|
+
branchId: uuidSchema,
|
|
248
|
+
name: z.string(),
|
|
249
|
+
category: feeItemCategoryEnum,
|
|
250
|
+
defaultAmount: z.number(),
|
|
251
|
+
applicableGrades: z.array(gradeLevelEnum),
|
|
252
|
+
isActive: z.boolean()
|
|
253
|
+
});
|
|
254
|
+
var recordPaymentInputSchema = z.object({
|
|
255
|
+
studentId: uuidSchema,
|
|
256
|
+
invoiceId: uuidSchema,
|
|
257
|
+
amount: z.number().positive(),
|
|
258
|
+
method: paymentMethodEnum,
|
|
259
|
+
reference: z.string().optional(),
|
|
260
|
+
mpesaReceipt: z.string().optional(),
|
|
261
|
+
paymentDate: z.string()
|
|
262
|
+
});
|
|
263
|
+
var employmentTypeEnum = z.enum([
|
|
264
|
+
"permanent",
|
|
265
|
+
"contract",
|
|
266
|
+
"temporary",
|
|
267
|
+
"intern"
|
|
268
|
+
]);
|
|
269
|
+
var staffSchema = z.object({
|
|
270
|
+
id: uuidSchema,
|
|
271
|
+
branchId: uuidSchema,
|
|
272
|
+
userId: uuidSchema,
|
|
273
|
+
firstName: z.string(),
|
|
274
|
+
middleName: z.string().nullable(),
|
|
275
|
+
lastName: z.string(),
|
|
276
|
+
tscNumber: z.string().nullable(),
|
|
277
|
+
nationalId: z.string(),
|
|
278
|
+
kraPin: z.string().nullable(),
|
|
279
|
+
nhifNo: z.string().nullable(),
|
|
280
|
+
nssfNo: z.string().nullable(),
|
|
281
|
+
phone: z.string(),
|
|
282
|
+
departmentId: uuidSchema.nullable(),
|
|
283
|
+
designation: z.string(),
|
|
284
|
+
employmentType: employmentTypeEnum,
|
|
285
|
+
contractStart: z.string(),
|
|
286
|
+
contractEnd: z.string().nullable(),
|
|
287
|
+
basicSalary: z.number(),
|
|
288
|
+
houseAllowance: z.number().default(0),
|
|
289
|
+
transportAllowance: z.number().default(0),
|
|
290
|
+
bankName: z.string().nullable(),
|
|
291
|
+
bankAccount: z.string().nullable(),
|
|
292
|
+
status: userStatusEnum
|
|
293
|
+
});
|
|
294
|
+
var leaveStatusEnum = z.enum([
|
|
295
|
+
"pending",
|
|
296
|
+
"approved",
|
|
297
|
+
"rejected",
|
|
298
|
+
"cancelled"
|
|
299
|
+
]);
|
|
300
|
+
var leaveRequestInputSchema = z.object({
|
|
301
|
+
leaveTypeId: uuidSchema,
|
|
302
|
+
startDate: z.string(),
|
|
303
|
+
endDate: z.string(),
|
|
304
|
+
reason: z.string().min(10)
|
|
305
|
+
});
|
|
306
|
+
var vehicleOwnershipEnum = z.enum(["owned", "contracted"]);
|
|
307
|
+
var vehicleTypeEnum = z.enum(["bus", "van", "pickup", "other"]);
|
|
308
|
+
var busRegisterStatusEnum = z.enum(["boarded", "alighted", "absent"]);
|
|
309
|
+
var tripLogInputSchema = z.object({
|
|
310
|
+
vehicleId: uuidSchema,
|
|
311
|
+
routeId: uuidSchema,
|
|
312
|
+
departureTime: z.string().datetime(),
|
|
313
|
+
tripType: z.enum(["morning", "evening", "errand"])
|
|
314
|
+
});
|
|
315
|
+
var busRegisterEntrySchema = z.object({
|
|
316
|
+
studentId: uuidSchema,
|
|
317
|
+
status: busRegisterStatusEnum
|
|
318
|
+
});
|
|
319
|
+
var assetCategoryEnum = z.enum([
|
|
320
|
+
"furniture",
|
|
321
|
+
"lab_equipment",
|
|
322
|
+
"ict_device",
|
|
323
|
+
"vehicle",
|
|
324
|
+
"sports_equipment",
|
|
325
|
+
"kitchen_equipment",
|
|
326
|
+
"musical_instrument",
|
|
327
|
+
"classroom_supply",
|
|
328
|
+
"library_book",
|
|
329
|
+
"other"
|
|
330
|
+
]);
|
|
331
|
+
var assetConditionEnum = z.enum([
|
|
332
|
+
"excellent",
|
|
333
|
+
"good",
|
|
334
|
+
"fair",
|
|
335
|
+
"poor",
|
|
336
|
+
"condemned"
|
|
337
|
+
]);
|
|
338
|
+
var maintenanceTicketStatusEnum = z.enum([
|
|
339
|
+
"open",
|
|
340
|
+
"in_progress",
|
|
341
|
+
"resolved",
|
|
342
|
+
"closed"
|
|
343
|
+
]);
|
|
344
|
+
var borrowingStatusEnum = z.enum([
|
|
345
|
+
"active",
|
|
346
|
+
"returned",
|
|
347
|
+
"overdue",
|
|
348
|
+
"lost"
|
|
349
|
+
]);
|
|
350
|
+
var incidentSeverityEnum = z.enum([
|
|
351
|
+
"minor",
|
|
352
|
+
"moderate",
|
|
353
|
+
"serious",
|
|
354
|
+
"critical"
|
|
355
|
+
]);
|
|
356
|
+
var incidentStatusEnum = z.enum([
|
|
357
|
+
"open",
|
|
358
|
+
"counsellor_review",
|
|
359
|
+
"hod_review",
|
|
360
|
+
"principal_ruling",
|
|
361
|
+
"resolved"
|
|
362
|
+
]);
|
|
363
|
+
var disciplineRulingEnum = z.enum([
|
|
364
|
+
"verbal_warning",
|
|
365
|
+
"written_warning",
|
|
366
|
+
"suspension",
|
|
367
|
+
"expulsion",
|
|
368
|
+
"dismissed"
|
|
369
|
+
]);
|
|
370
|
+
var payrollRunStatusEnum = z.enum(["draft", "approved", "paid"]);
|
|
371
|
+
var notificationTypeEnum = z.enum([
|
|
372
|
+
"report_card",
|
|
373
|
+
"fee_invoice",
|
|
374
|
+
"fee_reminder",
|
|
375
|
+
"fee_block",
|
|
376
|
+
"attendance_absent",
|
|
377
|
+
"bus_departed",
|
|
378
|
+
"bus_arrived",
|
|
379
|
+
"discipline_incident",
|
|
380
|
+
"assignment",
|
|
381
|
+
"notice",
|
|
382
|
+
"leave",
|
|
383
|
+
"payslip"
|
|
384
|
+
]);
|
|
385
|
+
var sendBulkSmsInputSchema = z.object({
|
|
386
|
+
branchId: uuidSchema,
|
|
387
|
+
message: z.string().min(1).max(160),
|
|
388
|
+
recipientType: z.enum(["class", "grade", "whole_school", "custom"]),
|
|
389
|
+
recipientIds: z.array(uuidSchema).optional(),
|
|
390
|
+
scheduleAt: z.string().datetime().optional()
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
export {
|
|
394
|
+
uuidSchema,
|
|
395
|
+
paginationSchema,
|
|
396
|
+
dateRangeSchema,
|
|
397
|
+
genderEnum,
|
|
398
|
+
userStatusEnum,
|
|
399
|
+
systemRoleEnum,
|
|
400
|
+
loginInputSchema,
|
|
401
|
+
loginOutputSchema,
|
|
402
|
+
refreshTokenOutputSchema,
|
|
403
|
+
refreshInputSchema,
|
|
404
|
+
mfaVerifyInputSchema,
|
|
405
|
+
changePasswordInputSchema,
|
|
406
|
+
userSchema,
|
|
407
|
+
branchSchema,
|
|
408
|
+
createBranchInputSchema,
|
|
409
|
+
studentStatusEnum,
|
|
410
|
+
studentSchema,
|
|
411
|
+
createStudentInputSchema,
|
|
412
|
+
listStudentsInputSchema,
|
|
413
|
+
guardianSchema,
|
|
414
|
+
sponsorTypeEnum,
|
|
415
|
+
sponsorSchema,
|
|
416
|
+
gradeLevelEnum,
|
|
417
|
+
assessmentTypeEnum,
|
|
418
|
+
rubricBandEnum,
|
|
419
|
+
subjectSchema,
|
|
420
|
+
assessmentScoreInputSchema,
|
|
421
|
+
reportCardStatusEnum,
|
|
422
|
+
feeItemCategoryEnum,
|
|
423
|
+
paymentMethodEnum,
|
|
424
|
+
invoiceStatusEnum,
|
|
425
|
+
feeItemSchema,
|
|
426
|
+
recordPaymentInputSchema,
|
|
427
|
+
employmentTypeEnum,
|
|
428
|
+
staffSchema,
|
|
429
|
+
leaveStatusEnum,
|
|
430
|
+
leaveRequestInputSchema,
|
|
431
|
+
vehicleOwnershipEnum,
|
|
432
|
+
vehicleTypeEnum,
|
|
433
|
+
busRegisterStatusEnum,
|
|
434
|
+
tripLogInputSchema,
|
|
435
|
+
busRegisterEntrySchema,
|
|
436
|
+
assetCategoryEnum,
|
|
437
|
+
assetConditionEnum,
|
|
438
|
+
maintenanceTicketStatusEnum,
|
|
439
|
+
borrowingStatusEnum,
|
|
440
|
+
incidentSeverityEnum,
|
|
441
|
+
incidentStatusEnum,
|
|
442
|
+
disciplineRulingEnum,
|
|
443
|
+
payrollRunStatusEnum,
|
|
444
|
+
notificationTypeEnum,
|
|
445
|
+
sendBulkSmsInputSchema
|
|
446
|
+
};
|
|
447
|
+
//# sourceMappingURL=chunk-AECTWOHQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schemas/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ─── Primitives ──────────────────────────────────────────────────────────────\n\nexport const uuidSchema = z.string().uuid();\n\nexport const paginationSchema = z.object({\n page: z.number().int().min(1).default(1),\n limit: z.number().int().min(1).max(100).default(20),\n});\n\nexport const dateRangeSchema = z.object({\n from: z.string().datetime().optional(),\n to: z.string().datetime().optional(),\n});\n\n// ─── Enums ───────────────────────────────────────────────────────────────────\n\nexport const genderEnum = z.enum([\"male\", \"female\"]);\n\nexport const userStatusEnum = z.enum([\"active\", \"inactive\", \"suspended\"]);\n\nexport const systemRoleEnum = z.enum([\n \"DIRECTOR\",\n \"PRINCIPAL\",\n \"DEPUTY_PRINCIPAL\",\n \"HOD\",\n \"CLASS_TEACHER\",\n \"SUBJECT_TEACHER\",\n \"BURSAR\",\n \"HR_ADMIN\",\n \"SCHOOL_NURSE\",\n \"LIBRARIAN\",\n \"LAB_TECHNICIAN\",\n \"SPORTS_COACH\",\n \"COUNSELLOR\",\n \"CARETAKER\",\n \"SECURITY\",\n \"KITCHEN_STAFF\",\n \"DRIVER\",\n \"IT_ADMIN\",\n \"STUDENT\",\n \"PARENT\",\n \"ORG_SPONSOR\",\n \"INDIVIDUAL_SPONSOR\",\n]);\n\nexport type SystemRole = z.infer<typeof systemRoleEnum>;\n\n// ─── Auth ─────────────────────────────────────────────────────────────────────\n\nexport const loginInputSchema = z.object({\n email: z.string().email(),\n password: z.string().min(8),\n deviceFingerprint: z.string().optional(),\n});\n\nexport const loginOutputSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string().optional(),\n user: z.object({\n id: uuidSchema,\n firstName: z.string(),\n middleName: z.string().nullable(),\n lastName: z.string(),\n email: z.string().email(),\n avatarUrl: z.string().nullable(),\n roles: z.array(\n z.object({\n id: uuidSchema,\n name: z.string(),\n branchId: uuidSchema.nullable(),\n }),\n ),\n activeBranchId: uuidSchema.nullable(),\n isMfaEnabled: z.boolean(),\n }),\n});\n\nexport const refreshTokenOutputSchema = z.object({\n accessToken: z.string(),\n});\n\nexport const refreshInputSchema = z.object({\n refreshToken: z.string().optional(),\n});\n\nexport const mfaVerifyInputSchema = z.object({\n totp: z.string().length(6),\n});\n\nexport const changePasswordInputSchema = z.object({\n currentPassword: z.string().min(8),\n newPassword: z.string().min(8),\n});\n\n// ─── User / Profile ───────────────────────────────────────────────────────────\n\nexport const userSchema = z.object({\n id: uuidSchema,\n firstName: z.string(),\n middleName: z.string().nullable(),\n lastName: z.string(),\n email: z.string().email(),\n phone: z.string().nullable(),\n avatarUrl: z.string().nullable(),\n isActive: z.boolean(),\n isMfaEnabled: z.boolean(),\n lastLoginAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n});\n\n// ─── Branches & Organisation ─────────────────────────────────────────────────\n\nexport const branchSchema = z.object({\n id: uuidSchema,\n name: z.string(),\n code: z.string(),\n address: z.string(),\n county: z.string(),\n phone: z.string().nullable(),\n email: z.string().email().nullable(),\n logoUrl: z.string().nullable(),\n motto: z.string().nullable(),\n principalId: uuidSchema.nullable(),\n mpesaPaybill: z.string().nullable(),\n featureFlags: z.record(z.boolean()),\n createdAt: z.string().datetime(),\n});\n\nexport const createBranchInputSchema = z.object({\n name: z.string().min(2).max(100),\n code: z.string().min(2).max(20),\n address: z.string(),\n county: z.string(),\n phone: z.string().optional(),\n email: z.string().email().optional(),\n motto: z.string().optional(),\n});\n\n// ─── Students ─────────────────────────────────────────────────────────────────\n\nexport const studentStatusEnum = z.enum([\n \"active\",\n \"transferred\",\n \"graduated\",\n \"suspended\",\n \"withdrawn\",\n]);\n\nexport const studentSchema = z.object({\n id: uuidSchema,\n branchId: uuidSchema,\n admissionNo: z.string(),\n nemisNo: z.string().nullable(),\n firstName: z.string(),\n middleName: z.string().nullable(),\n lastName: z.string(),\n dateOfBirth: z.string(),\n gender: genderEnum,\n photoUrl: z.string().nullable(),\n bloodGroup: z.string().nullable(),\n admissionDate: z.string(),\n status: studentStatusEnum,\n currentClassId: uuidSchema.nullable(),\n createdAt: z.string().datetime(),\n});\n\nexport const createStudentInputSchema = z.object({\n admissionNo: z.string().min(1),\n nemisNo: z.string().optional(),\n firstName: z.string().min(1).max(100),\n middleName: z.string().max(100).optional(),\n lastName: z.string().min(1).max(100),\n dateOfBirth: z.string(),\n gender: genderEnum,\n admissionDate: z.string(),\n guardianId: uuidSchema.optional(),\n});\n\nexport const listStudentsInputSchema = paginationSchema.extend({\n branchId: uuidSchema.optional(),\n classId: uuidSchema.optional(),\n search: z.string().optional(),\n status: studentStatusEnum.optional(),\n termId: uuidSchema.optional(),\n});\n\n// ─── Guardian / Sponsor ───────────────────────────────────────────────────────\n\nexport const guardianSchema = z.object({\n id: uuidSchema,\n userId: uuidSchema,\n firstName: z.string(),\n middleName: z.string().nullable(),\n lastName: z.string(),\n relationship: z.string(),\n phone: z.string(),\n email: z.string().email().nullable(),\n nationalId: z.string().nullable(),\n occupation: z.string().nullable(),\n address: z.string().nullable(),\n});\n\nexport const sponsorTypeEnum = z.enum([\"organisation\", \"individual\"]);\n\nexport const sponsorSchema = z.object({\n id: uuidSchema,\n branchId: uuidSchema,\n type: sponsorTypeEnum,\n organisationName: z.string().nullable(),\n firstName: z.string().nullable(),\n middleName: z.string().nullable(),\n lastName: z.string().nullable(),\n contactUserId: uuidSchema.nullable(),\n phone: z.string(),\n email: z.string().email().nullable(),\n address: z.string().nullable(),\n});\n\n// ─── Academics ────────────────────────────────────────────────────────────────\n\nexport const gradeLevelEnum = z.enum([\n \"PP1\",\n \"PP2\",\n \"G1\",\n \"G2\",\n \"G3\",\n \"G4\",\n \"G5\",\n \"G6\",\n \"G7\",\n \"G8\",\n \"G9\",\n]);\n\nexport const assessmentTypeEnum = z.enum([\n \"formative\",\n \"summative\",\n \"knec_national\",\n \"informal\",\n]);\n\nexport const rubricBandEnum = z.enum([\"EE\", \"ME\", \"AE\", \"BE\"]);\n\nexport const subjectSchema = z.object({\n id: uuidSchema,\n branchId: uuidSchema,\n name: z.string(),\n code: z.string(),\n gradeLevel: gradeLevelEnum,\n departmentId: uuidSchema.nullable(),\n});\n\nexport const assessmentScoreInputSchema = z.object({\n assessmentId: uuidSchema,\n studentId: uuidSchema,\n subStrandId: uuidSchema,\n numericScore: z.number().min(0).max(100),\n comments: z.string().optional(),\n});\n\nexport const reportCardStatusEnum = z.enum([\n \"draft\",\n \"hod_review\",\n \"principal_review\",\n \"released\",\n \"blocked\",\n]);\n\n// ─── Finance ──────────────────────────────────────────────────────────────────\n\nexport const feeItemCategoryEnum = z.enum([\n \"compulsory\",\n \"class_specific\",\n \"additive\",\n]);\n\nexport const paymentMethodEnum = z.enum([\n \"mpesa\",\n \"bank\",\n \"card\",\n \"cash\",\n \"cheque\",\n]);\n\nexport const invoiceStatusEnum = z.enum([\n \"draft\",\n \"sent\",\n \"partial\",\n \"paid\",\n \"overdue\",\n \"cancelled\",\n]);\n\nexport const feeItemSchema = z.object({\n id: uuidSchema,\n branchId: uuidSchema,\n name: z.string(),\n category: feeItemCategoryEnum,\n defaultAmount: z.number(),\n applicableGrades: z.array(gradeLevelEnum),\n isActive: z.boolean(),\n});\n\nexport const recordPaymentInputSchema = z.object({\n studentId: uuidSchema,\n invoiceId: uuidSchema,\n amount: z.number().positive(),\n method: paymentMethodEnum,\n reference: z.string().optional(),\n mpesaReceipt: z.string().optional(),\n paymentDate: z.string(),\n});\n\n// ─── HR / Staff ───────────────────────────────────────────────────────────────\n\nexport const employmentTypeEnum = z.enum([\n \"permanent\",\n \"contract\",\n \"temporary\",\n \"intern\",\n]);\n\nexport const staffSchema = z.object({\n id: uuidSchema,\n branchId: uuidSchema,\n userId: uuidSchema,\n firstName: z.string(),\n middleName: z.string().nullable(),\n lastName: z.string(),\n tscNumber: z.string().nullable(),\n nationalId: z.string(),\n kraPin: z.string().nullable(),\n nhifNo: z.string().nullable(),\n nssfNo: z.string().nullable(),\n phone: z.string(),\n departmentId: uuidSchema.nullable(),\n designation: z.string(),\n employmentType: employmentTypeEnum,\n contractStart: z.string(),\n contractEnd: z.string().nullable(),\n basicSalary: z.number(),\n houseAllowance: z.number().default(0),\n transportAllowance: z.number().default(0),\n bankName: z.string().nullable(),\n bankAccount: z.string().nullable(),\n status: userStatusEnum,\n});\n\nexport const leaveStatusEnum = z.enum([\n \"pending\",\n \"approved\",\n \"rejected\",\n \"cancelled\",\n]);\n\nexport const leaveRequestInputSchema = z.object({\n leaveTypeId: uuidSchema,\n startDate: z.string(),\n endDate: z.string(),\n reason: z.string().min(10),\n});\n\n// ─── Transport ────────────────────────────────────────────────────────────────\n\nexport const vehicleOwnershipEnum = z.enum([\"owned\", \"contracted\"]);\n\nexport const vehicleTypeEnum = z.enum([\"bus\", \"van\", \"pickup\", \"other\"]);\n\nexport const busRegisterStatusEnum = z.enum([\"boarded\", \"alighted\", \"absent\"]);\n\nexport const tripLogInputSchema = z.object({\n vehicleId: uuidSchema,\n routeId: uuidSchema,\n departureTime: z.string().datetime(),\n tripType: z.enum([\"morning\", \"evening\", \"errand\"]),\n});\n\nexport const busRegisterEntrySchema = z.object({\n studentId: uuidSchema,\n status: busRegisterStatusEnum,\n});\n\n// ─── Assets ───────────────────────────────────────────────────────────────────\n\nexport const assetCategoryEnum = z.enum([\n \"furniture\",\n \"lab_equipment\",\n \"ict_device\",\n \"vehicle\",\n \"sports_equipment\",\n \"kitchen_equipment\",\n \"musical_instrument\",\n \"classroom_supply\",\n \"library_book\",\n \"other\",\n]);\n\nexport const assetConditionEnum = z.enum([\n \"excellent\",\n \"good\",\n \"fair\",\n \"poor\",\n \"condemned\",\n]);\n\nexport const maintenanceTicketStatusEnum = z.enum([\n \"open\",\n \"in_progress\",\n \"resolved\",\n \"closed\",\n]);\n\n// ─── Library ──────────────────────────────────────────────────────────────────\n\nexport const borrowingStatusEnum = z.enum([\n \"active\",\n \"returned\",\n \"overdue\",\n \"lost\",\n]);\n\n// ─── Discipline ───────────────────────────────────────────────────────────────\n\nexport const incidentSeverityEnum = z.enum([\n \"minor\",\n \"moderate\",\n \"serious\",\n \"critical\",\n]);\n\nexport const incidentStatusEnum = z.enum([\n \"open\",\n \"counsellor_review\",\n \"hod_review\",\n \"principal_ruling\",\n \"resolved\",\n]);\n\nexport const disciplineRulingEnum = z.enum([\n \"verbal_warning\",\n \"written_warning\",\n \"suspension\",\n \"expulsion\",\n \"dismissed\",\n]);\n\n// ─── Payroll ──────────────────────────────────────────────────────────────────\n\nexport const payrollRunStatusEnum = z.enum([\"draft\", \"approved\", \"paid\"]);\n\n// ─── Communications ───────────────────────────────────────────────────────────\n\nexport const notificationTypeEnum = z.enum([\n \"report_card\",\n \"fee_invoice\",\n \"fee_reminder\",\n \"fee_block\",\n \"attendance_absent\",\n \"bus_departed\",\n \"bus_arrived\",\n \"discipline_incident\",\n \"assignment\",\n \"notice\",\n \"leave\",\n \"payslip\",\n]);\n\nexport const sendBulkSmsInputSchema = z.object({\n branchId: uuidSchema,\n message: z.string().min(1).max(160),\n recipientType: z.enum([\"class\", \"grade\", \"whole_school\", \"custom\"]),\n recipientIds: z.array(uuidSchema).optional(),\n scheduleAt: z.string().datetime().optional(),\n});\n"],"mappings":"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","names":[]}
|