@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
package/README.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# @aibrains/shared-types
|
|
2
|
+
|
|
3
|
+
Shared TypeScript types for EdForge monorepo.
|
|
4
|
+
|
|
5
|
+
This package provides type-safe interfaces for DTOs and entities shared between microservices and frontend applications.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
packages/shared-types/
|
|
11
|
+
├── src/
|
|
12
|
+
│ ├── school/
|
|
13
|
+
│ │ ├── dto.ts # Request/Response DTOs
|
|
14
|
+
│ │ ├── entity.ts # Entity types
|
|
15
|
+
│ │ └── index.ts
|
|
16
|
+
│ └── index.ts
|
|
17
|
+
└── dist/ # Compiled output
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
### In Microservices (NestJS)
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import type { CreateSchoolRequest } from '@aibrains/shared-types';
|
|
26
|
+
|
|
27
|
+
// Use in DTOs - types match exactly
|
|
28
|
+
const dto: CreateSchoolRequest = {
|
|
29
|
+
schoolName: 'Example School',
|
|
30
|
+
// ...
|
|
31
|
+
};
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### In Frontend (Next.js)
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import type { School, CreateSchoolRequest } from '@aibrains/shared-types';
|
|
38
|
+
|
|
39
|
+
// Use in server actions - no manual mapping needed
|
|
40
|
+
export async function createSchool(data: CreateSchoolRequest): Promise<School> {
|
|
41
|
+
const response = await api.post('/schools', data);
|
|
42
|
+
return response;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Development
|
|
47
|
+
|
|
48
|
+
### Build
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm run build
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Watch Mode (for development)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm run watch
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Validate Sync with Backend DTOs
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm run validate:sync
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
This script checks that shared types match the NestJS DTO classes in the microservices.
|
|
67
|
+
|
|
68
|
+
## Adding New Types
|
|
69
|
+
|
|
70
|
+
When adding new DTOs or entities:
|
|
71
|
+
|
|
72
|
+
1. **Extract from NestJS DTO**: Copy the DTO class from the microservice
|
|
73
|
+
2. **Convert to Interface**: Remove all decorators (`@IsString()`, etc.)
|
|
74
|
+
3. **Add JSDoc**: Document validation rules in comments
|
|
75
|
+
4. **Update Index**: Export from `src/school/index.ts` and `src/index.ts`
|
|
76
|
+
5. **Validate**: Run `npm run validate:sync` to ensure types match
|
|
77
|
+
|
|
78
|
+
### Example: Extracting a DTO
|
|
79
|
+
|
|
80
|
+
**Backend DTO (NestJS)**:
|
|
81
|
+
```typescript
|
|
82
|
+
export class CreateGradingPeriodDto {
|
|
83
|
+
@IsString()
|
|
84
|
+
periodName: string;
|
|
85
|
+
|
|
86
|
+
@IsEnum(['semester', 'quarter', 'trimester', 'custom'])
|
|
87
|
+
periodType: 'semester' | 'quarter' | 'trimester' | 'custom';
|
|
88
|
+
|
|
89
|
+
@IsOptional()
|
|
90
|
+
@IsString()
|
|
91
|
+
gradesDueDate?: string;
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Shared Type**:
|
|
96
|
+
```typescript
|
|
97
|
+
/**
|
|
98
|
+
* Create Grading Period Request
|
|
99
|
+
* @validation - periodName: required, string
|
|
100
|
+
* @validation - periodType: required, enum ['semester', 'quarter', 'trimester', 'custom']
|
|
101
|
+
* @validation - gradesDueDate: optional, string (YYYY-MM-DD format)
|
|
102
|
+
*/
|
|
103
|
+
export interface CreateGradingPeriodRequest {
|
|
104
|
+
periodName: string;
|
|
105
|
+
periodType: 'semester' | 'quarter' | 'trimester' | 'custom';
|
|
106
|
+
gradesDueDate?: string;
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Rules for Extraction
|
|
111
|
+
|
|
112
|
+
1. **Remove all decorators** - Keep only type information
|
|
113
|
+
2. **Preserve property names** - Must match backend DTO exactly
|
|
114
|
+
3. **Keep optional modifiers** - Use `?` for optional fields
|
|
115
|
+
4. **Preserve union types** - Keep enums and union types as-is
|
|
116
|
+
5. **Add JSDoc comments** - Document validation rules for reference
|
|
117
|
+
|
|
118
|
+
## Sync Process
|
|
119
|
+
|
|
120
|
+
1. Make changes to DTO in microservice
|
|
121
|
+
2. Update corresponding interface in this package
|
|
122
|
+
3. Run `npm run validate:sync` to verify
|
|
123
|
+
4. Build package: `npm run build`
|
|
124
|
+
5. Update frontend/server actions to use new types
|
|
125
|
+
|
|
126
|
+
## Type Safety
|
|
127
|
+
|
|
128
|
+
This package ensures:
|
|
129
|
+
- ✅ Zero manual type mapping in server actions
|
|
130
|
+
- ✅ TypeScript errors if backend DTO changes without updating shared types
|
|
131
|
+
- ✅ Frontend types always match backend DTOs
|
|
132
|
+
- ✅ Single source of truth for API contracts
|
|
133
|
+
|
|
134
|
+
## Build Integration
|
|
135
|
+
|
|
136
|
+
The package is automatically built:
|
|
137
|
+
- Before microservice builds (via `scripts/build-application.sh`)
|
|
138
|
+
- Before frontend builds (via `prebuild` script in `client/edforgewebclient/package.json`)
|
|
139
|
+
- In Docker builds (multi-stage build in `Dockerfile.school`)
|
|
140
|
+
|
|
141
|
+
## Versioning
|
|
142
|
+
|
|
143
|
+
Currently using version `1.0.0`. When APIs change significantly, consider:
|
|
144
|
+
- Incrementing version number
|
|
145
|
+
- Documenting breaking changes
|
|
146
|
+
- Tagging releases for external consumers
|
|
147
|
+
|
|
148
|
+
## Troubleshooting
|
|
149
|
+
|
|
150
|
+
### Type errors after DTO changes
|
|
151
|
+
|
|
152
|
+
1. Run `npm run validate:sync` to find mismatches
|
|
153
|
+
2. Update shared types to match DTOs
|
|
154
|
+
3. Rebuild: `npm run build`
|
|
155
|
+
4. Restart TypeScript server in your IDE
|
|
156
|
+
|
|
157
|
+
### Build fails in Docker
|
|
158
|
+
|
|
159
|
+
Ensure:
|
|
160
|
+
- Shared-types is built before microservice build
|
|
161
|
+
- Docker build context includes `packages/` directory
|
|
162
|
+
- Path mappings in `tsconfig.json` are correct
|
|
163
|
+
|
|
164
|
+
### Import errors
|
|
165
|
+
|
|
166
|
+
Check:
|
|
167
|
+
- TypeScript path mappings in `tsconfig.json`
|
|
168
|
+
- Package is built (`dist/` exists)
|
|
169
|
+
- Workspace is properly configured in root `package.json`
|
|
170
|
+
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @aibrains/shared-types
|
|
3
|
+
*
|
|
4
|
+
* Shared Zod schemas, TypeScript types, and validators for EdForge monorepo.
|
|
5
|
+
*
|
|
6
|
+
* This package is the SINGLE SOURCE OF TRUTH for data validation and types
|
|
7
|
+
* used by both frontend and backend.
|
|
8
|
+
*
|
|
9
|
+
* ## Usage
|
|
10
|
+
*
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // Import schemas for validation
|
|
13
|
+
* import {
|
|
14
|
+
* updateUserSchema,
|
|
15
|
+
* passwordSchema,
|
|
16
|
+
* loginSchema
|
|
17
|
+
* } from '@aibrains/shared-types';
|
|
18
|
+
*
|
|
19
|
+
* // Import inferred types
|
|
20
|
+
* import type {
|
|
21
|
+
* UpdateUserDto,
|
|
22
|
+
* LoginDto,
|
|
23
|
+
* UserResponseDto
|
|
24
|
+
* } from '@aibrains/shared-types';
|
|
25
|
+
*
|
|
26
|
+
* // Validate data
|
|
27
|
+
* const result = updateUserSchema.safeParse(userData);
|
|
28
|
+
* if (!result.success) {
|
|
29
|
+
* console.log(result.error.flatten());
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* ## Backend (NestJS) Usage
|
|
34
|
+
*
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import { createZodDto } from 'nestjs-zod';
|
|
37
|
+
* import { updateUserSchema } from '@aibrains/shared-types';
|
|
38
|
+
*
|
|
39
|
+
* class UpdateUserDtoClass extends createZodDto(updateUserSchema) {}
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export { z } from 'zod';
|
|
43
|
+
export type { ZodSchema, ZodType, ZodError } from 'zod';
|
|
44
|
+
export * from './validators';
|
|
45
|
+
export * from './schemas';
|
|
46
|
+
export * from './mappers';
|
|
47
|
+
export type { BaseEntity, RequestContext, Address, EntityStatus, PaginationQuery, ErrorResponse, } from './schemas/common';
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAMxD,cAAc,cAAc,CAAC;AAM7B,cAAc,WAAW,CAAC;AAM1B,cAAc,WAAW,CAAC;AAQ1B,YAAY,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,YAAY,EACZ,eAAe,EACf,aAAa,GACd,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @aibrains/shared-types
|
|
4
|
+
*
|
|
5
|
+
* Shared Zod schemas, TypeScript types, and validators for EdForge monorepo.
|
|
6
|
+
*
|
|
7
|
+
* This package is the SINGLE SOURCE OF TRUTH for data validation and types
|
|
8
|
+
* used by both frontend and backend.
|
|
9
|
+
*
|
|
10
|
+
* ## Usage
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // Import schemas for validation
|
|
14
|
+
* import {
|
|
15
|
+
* updateUserSchema,
|
|
16
|
+
* passwordSchema,
|
|
17
|
+
* loginSchema
|
|
18
|
+
* } from '@aibrains/shared-types';
|
|
19
|
+
*
|
|
20
|
+
* // Import inferred types
|
|
21
|
+
* import type {
|
|
22
|
+
* UpdateUserDto,
|
|
23
|
+
* LoginDto,
|
|
24
|
+
* UserResponseDto
|
|
25
|
+
* } from '@aibrains/shared-types';
|
|
26
|
+
*
|
|
27
|
+
* // Validate data
|
|
28
|
+
* const result = updateUserSchema.safeParse(userData);
|
|
29
|
+
* if (!result.success) {
|
|
30
|
+
* console.log(result.error.flatten());
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* ## Backend (NestJS) Usage
|
|
35
|
+
*
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { createZodDto } from 'nestjs-zod';
|
|
38
|
+
* import { updateUserSchema } from '@aibrains/shared-types';
|
|
39
|
+
*
|
|
40
|
+
* class UpdateUserDtoClass extends createZodDto(updateUserSchema) {}
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
44
|
+
if (k2 === undefined) k2 = k;
|
|
45
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
46
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
47
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
48
|
+
}
|
|
49
|
+
Object.defineProperty(o, k2, desc);
|
|
50
|
+
}) : (function(o, m, k, k2) {
|
|
51
|
+
if (k2 === undefined) k2 = k;
|
|
52
|
+
o[k2] = m[k];
|
|
53
|
+
}));
|
|
54
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
55
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
56
|
+
};
|
|
57
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
+
exports.z = void 0;
|
|
59
|
+
// Re-export Zod for convenience
|
|
60
|
+
var zod_1 = require("zod");
|
|
61
|
+
Object.defineProperty(exports, "z", { enumerable: true, get: function () { return zod_1.z; } });
|
|
62
|
+
// ============================================
|
|
63
|
+
// Validators
|
|
64
|
+
// ============================================
|
|
65
|
+
__exportStar(require("./validators"), exports);
|
|
66
|
+
// ============================================
|
|
67
|
+
// All Schemas and Types
|
|
68
|
+
// ============================================
|
|
69
|
+
__exportStar(require("./schemas"), exports);
|
|
70
|
+
// ============================================
|
|
71
|
+
// Ed-Fi Mappers (for compliance export)
|
|
72
|
+
// ============================================
|
|
73
|
+
__exportStar(require("./mappers"), exports);
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;;;;;;;;;;;;;;;AAEH,gCAAgC;AAChC,2BAAwB;AAAf,wFAAA,CAAC,OAAA;AAGV,+CAA+C;AAC/C,aAAa;AACb,+CAA+C;AAE/C,+CAA6B;AAE7B,+CAA+C;AAC/C,wBAAwB;AACxB,+CAA+C;AAE/C,4CAA0B;AAE1B,+CAA+C;AAC/C,wCAAwC;AACxC,+CAA+C;AAE/C,4CAA0B"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar Ed-Fi Mapper
|
|
3
|
+
*
|
|
4
|
+
* Converts EdForge Calendar data to Ed-Fi Data Standard format for compliance export.
|
|
5
|
+
* Ed-Fi Data Standard v6.0: https://docs.ed-fi.org/reference/data-exchange/data-standard/
|
|
6
|
+
*
|
|
7
|
+
* Ed-Fi Calendar Domain:
|
|
8
|
+
* - Calendar - School calendar for an academic year
|
|
9
|
+
* - CalendarDate - Individual calendar dates with events
|
|
10
|
+
* - AcademicWeek - Academic weeks within a calendar
|
|
11
|
+
*/
|
|
12
|
+
import type { AcademicYearResponseDto, GradingPeriodResponseDto } from '../../schemas/identity/academic-year.schema';
|
|
13
|
+
import type { CalendarDateResponseDto } from '../../schemas/identity/calendar-date.schema';
|
|
14
|
+
import type { BellScheduleResponseDto } from '../../schemas/identity/bell-schedule.schema';
|
|
15
|
+
/**
|
|
16
|
+
* Ed-Fi Calendar Resource
|
|
17
|
+
* Based on Ed-Fi Data Standard v6.0 Calendar resource
|
|
18
|
+
*/
|
|
19
|
+
export interface EdFiCalendar {
|
|
20
|
+
calendarCode: string;
|
|
21
|
+
schoolReference: {
|
|
22
|
+
schoolId: number;
|
|
23
|
+
};
|
|
24
|
+
schoolYearTypeReference: {
|
|
25
|
+
schoolYear: number;
|
|
26
|
+
};
|
|
27
|
+
calendarTypeDescriptor: string;
|
|
28
|
+
gradeLevels?: EdFiCalendarGradeLevel[];
|
|
29
|
+
_ext?: EdForgeCalendarExtension;
|
|
30
|
+
}
|
|
31
|
+
export interface EdFiCalendarGradeLevel {
|
|
32
|
+
gradeLevelDescriptor: string;
|
|
33
|
+
}
|
|
34
|
+
export interface EdForgeCalendarExtension {
|
|
35
|
+
edforge_yearId: string;
|
|
36
|
+
edforge_tenantId?: string;
|
|
37
|
+
edforge_schoolId: string;
|
|
38
|
+
edforge_name: string;
|
|
39
|
+
edforge_status: string;
|
|
40
|
+
edforge_isCurrent: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Ed-Fi CalendarDate Resource
|
|
44
|
+
* Based on Ed-Fi Data Standard v6.0 CalendarDate resource
|
|
45
|
+
*/
|
|
46
|
+
export interface EdFiCalendarDate {
|
|
47
|
+
calendarReference: {
|
|
48
|
+
calendarCode: string;
|
|
49
|
+
schoolId: number;
|
|
50
|
+
schoolYear: number;
|
|
51
|
+
};
|
|
52
|
+
date: string;
|
|
53
|
+
calendarEvents?: EdFiCalendarDateCalendarEvent[];
|
|
54
|
+
_ext?: EdForgeCalendarDateExtension;
|
|
55
|
+
}
|
|
56
|
+
export interface EdFiCalendarDateCalendarEvent {
|
|
57
|
+
calendarEventDescriptor: string;
|
|
58
|
+
}
|
|
59
|
+
export interface EdForgeCalendarDateExtension {
|
|
60
|
+
edforge_calendarDateId: string;
|
|
61
|
+
edforge_tenantId?: string;
|
|
62
|
+
edforge_isInstructionalDay: boolean;
|
|
63
|
+
edforge_isHoliday: boolean;
|
|
64
|
+
edforge_isWeekend: boolean;
|
|
65
|
+
edforge_dayOfWeek: string;
|
|
66
|
+
edforge_bellScheduleId?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Ed-Fi GradingPeriod Resource
|
|
70
|
+
* Based on Ed-Fi Data Standard v6.0 GradingPeriod resource
|
|
71
|
+
*/
|
|
72
|
+
export interface EdFiGradingPeriod {
|
|
73
|
+
gradingPeriodDescriptor: string;
|
|
74
|
+
periodSequence: number;
|
|
75
|
+
schoolReference: {
|
|
76
|
+
schoolId: number;
|
|
77
|
+
};
|
|
78
|
+
schoolYearTypeReference: {
|
|
79
|
+
schoolYear: number;
|
|
80
|
+
};
|
|
81
|
+
beginDate: string;
|
|
82
|
+
endDate: string;
|
|
83
|
+
totalInstructionalDays?: number;
|
|
84
|
+
_ext?: EdForgeGradingPeriodExtension;
|
|
85
|
+
}
|
|
86
|
+
export interface EdForgeGradingPeriodExtension {
|
|
87
|
+
edforge_termId: string;
|
|
88
|
+
edforge_yearId: string;
|
|
89
|
+
edforge_schoolId: string;
|
|
90
|
+
edforge_name: string;
|
|
91
|
+
edforge_gradesDueDate?: string;
|
|
92
|
+
edforge_reportCardDate?: string;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Ed-Fi BellSchedule Resource
|
|
96
|
+
* Based on Ed-Fi Data Standard v6.0 BellSchedule resource
|
|
97
|
+
*/
|
|
98
|
+
export interface EdFiBellSchedule {
|
|
99
|
+
bellScheduleName: string;
|
|
100
|
+
schoolReference: {
|
|
101
|
+
schoolId: number;
|
|
102
|
+
};
|
|
103
|
+
classPeriods?: EdFiClassPeriod[];
|
|
104
|
+
dates?: EdFiBellScheduleDate[];
|
|
105
|
+
gradeLevels?: EdFiBellScheduleGradeLevel[];
|
|
106
|
+
totalInstructionalTime?: number;
|
|
107
|
+
startTime?: string;
|
|
108
|
+
endTime?: string;
|
|
109
|
+
_ext?: EdForgeBellScheduleExtension;
|
|
110
|
+
}
|
|
111
|
+
export interface EdFiClassPeriod {
|
|
112
|
+
classPeriodReference: {
|
|
113
|
+
classPeriodName: string;
|
|
114
|
+
schoolId: number;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export interface EdFiBellScheduleDate {
|
|
118
|
+
date: string;
|
|
119
|
+
}
|
|
120
|
+
export interface EdFiBellScheduleGradeLevel {
|
|
121
|
+
gradeLevelDescriptor: string;
|
|
122
|
+
}
|
|
123
|
+
export interface EdForgeBellScheduleExtension {
|
|
124
|
+
edforge_bellScheduleId: string;
|
|
125
|
+
edforge_tenantId?: string;
|
|
126
|
+
edforge_schoolId: string;
|
|
127
|
+
edforge_type: string;
|
|
128
|
+
edforge_isDefault: boolean;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Convert EdForge AcademicYear to Ed-Fi Calendar format
|
|
132
|
+
*/
|
|
133
|
+
export declare function toEdFiCalendar(academicYear: AcademicYearResponseDto, schoolEdFiId: number, gradeLevels?: string[]): EdFiCalendar;
|
|
134
|
+
/**
|
|
135
|
+
* Convert EdForge CalendarDate to Ed-Fi CalendarDate format
|
|
136
|
+
*/
|
|
137
|
+
export declare function toEdFiCalendarDate(calendarDate: CalendarDateResponseDto, schoolEdFiId: number, calendarCode: string, schoolYear: number): EdFiCalendarDate;
|
|
138
|
+
/**
|
|
139
|
+
* Convert EdForge GradingPeriod to Ed-Fi GradingPeriod format
|
|
140
|
+
*/
|
|
141
|
+
export declare function toEdFiGradingPeriod(gradingPeriod: GradingPeriodResponseDto, schoolEdFiId: number, schoolYear: number): EdFiGradingPeriod;
|
|
142
|
+
/**
|
|
143
|
+
* Convert EdForge BellSchedule to Ed-Fi BellSchedule format
|
|
144
|
+
*/
|
|
145
|
+
export declare function toEdFiBellSchedule(bellSchedule: BellScheduleResponseDto, schoolEdFiId: number): EdFiBellSchedule;
|
|
146
|
+
/**
|
|
147
|
+
* Batch convert EdForge AcademicYears to Ed-Fi Calendar format
|
|
148
|
+
*/
|
|
149
|
+
export declare function toEdFiCalendarBatch(academicYears: AcademicYearResponseDto[], schoolEdFiIdMap: Map<string, number>): EdFiCalendar[];
|
|
150
|
+
/**
|
|
151
|
+
* Batch convert EdForge CalendarDates to Ed-Fi CalendarDate format
|
|
152
|
+
*/
|
|
153
|
+
export declare function toEdFiCalendarDateBatch(calendarDates: CalendarDateResponseDto[], schoolEdFiId: number, calendarCode: string, schoolYear: number): EdFiCalendarDate[];
|
|
154
|
+
/**
|
|
155
|
+
* Batch convert EdForge GradingPeriods to Ed-Fi GradingPeriod format
|
|
156
|
+
*/
|
|
157
|
+
export declare function toEdFiGradingPeriodBatch(gradingPeriods: GradingPeriodResponseDto[], schoolEdFiId: number, schoolYear: number): EdFiGradingPeriod[];
|
|
158
|
+
//# sourceMappingURL=calendar.mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.mapper.d.ts","sourceRoot":"","sources":["../../../src/mappers/edfi/calendar.mapper.ts"],"names":[],"mappings":"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"}
|