@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.
Files changed (158) hide show
  1. package/README.md +170 -0
  2. package/dist/index.d.ts +48 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +74 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/mappers/edfi/calendar.mapper.d.ts +158 -0
  7. package/dist/mappers/edfi/calendar.mapper.d.ts.map +1 -0
  8. package/dist/mappers/edfi/calendar.mapper.js +235 -0
  9. package/dist/mappers/edfi/calendar.mapper.js.map +1 -0
  10. package/dist/mappers/edfi/credential.mapper.d.ts +50 -0
  11. package/dist/mappers/edfi/credential.mapper.d.ts.map +1 -0
  12. package/dist/mappers/edfi/credential.mapper.js +123 -0
  13. package/dist/mappers/edfi/credential.mapper.js.map +1 -0
  14. package/dist/mappers/edfi/index.d.ts +10 -0
  15. package/dist/mappers/edfi/index.d.ts.map +1 -0
  16. package/dist/mappers/edfi/index.js +26 -0
  17. package/dist/mappers/edfi/index.js.map +1 -0
  18. package/dist/mappers/edfi/staff.mapper.d.ts +96 -0
  19. package/dist/mappers/edfi/staff.mapper.d.ts.map +1 -0
  20. package/dist/mappers/edfi/staff.mapper.js +138 -0
  21. package/dist/mappers/edfi/staff.mapper.js.map +1 -0
  22. package/dist/mappers/index.d.ts +7 -0
  23. package/dist/mappers/index.d.ts.map +1 -0
  24. package/dist/mappers/index.js +23 -0
  25. package/dist/mappers/index.js.map +1 -0
  26. package/dist/schemas/academics/assignment.schema.d.ts +1463 -0
  27. package/dist/schemas/academics/assignment.schema.d.ts.map +1 -0
  28. package/dist/schemas/academics/assignment.schema.js +195 -0
  29. package/dist/schemas/academics/assignment.schema.js.map +1 -0
  30. package/dist/schemas/academics/attendance.schema.d.ts +762 -0
  31. package/dist/schemas/academics/attendance.schema.d.ts.map +1 -0
  32. package/dist/schemas/academics/attendance.schema.js +250 -0
  33. package/dist/schemas/academics/attendance.schema.js.map +1 -0
  34. package/dist/schemas/academics/classroom.schema.d.ts +742 -0
  35. package/dist/schemas/academics/classroom.schema.d.ts.map +1 -0
  36. package/dist/schemas/academics/classroom.schema.js +164 -0
  37. package/dist/schemas/academics/classroom.schema.js.map +1 -0
  38. package/dist/schemas/academics/course-section.schema.d.ts +388 -0
  39. package/dist/schemas/academics/course-section.schema.d.ts.map +1 -0
  40. package/dist/schemas/academics/course-section.schema.js +128 -0
  41. package/dist/schemas/academics/course-section.schema.js.map +1 -0
  42. package/dist/schemas/academics/course.schema.d.ts +778 -0
  43. package/dist/schemas/academics/course.schema.d.ts.map +1 -0
  44. package/dist/schemas/academics/course.schema.js +207 -0
  45. package/dist/schemas/academics/course.schema.js.map +1 -0
  46. package/dist/schemas/academics/grade.schema.d.ts +848 -0
  47. package/dist/schemas/academics/grade.schema.d.ts.map +1 -0
  48. package/dist/schemas/academics/grade.schema.js +251 -0
  49. package/dist/schemas/academics/grade.schema.js.map +1 -0
  50. package/dist/schemas/academics/index.d.ts +13 -0
  51. package/dist/schemas/academics/index.d.ts.map +1 -0
  52. package/dist/schemas/academics/index.js +29 -0
  53. package/dist/schemas/academics/index.js.map +1 -0
  54. package/dist/schemas/academics/student.schema.d.ts +2891 -0
  55. package/dist/schemas/academics/student.schema.d.ts.map +1 -0
  56. package/dist/schemas/academics/student.schema.js +249 -0
  57. package/dist/schemas/academics/student.schema.js.map +1 -0
  58. package/dist/schemas/common.d.ts +183 -0
  59. package/dist/schemas/common.d.ts.map +1 -0
  60. package/dist/schemas/common.js +126 -0
  61. package/dist/schemas/common.js.map +1 -0
  62. package/dist/schemas/enrollment/enrollment.schema.d.ts +2799 -0
  63. package/dist/schemas/enrollment/enrollment.schema.d.ts.map +1 -0
  64. package/dist/schemas/enrollment/enrollment.schema.js +435 -0
  65. package/dist/schemas/enrollment/enrollment.schema.js.map +1 -0
  66. package/dist/schemas/enrollment/index.d.ts +7 -0
  67. package/dist/schemas/enrollment/index.d.ts.map +1 -0
  68. package/dist/schemas/enrollment/index.js +23 -0
  69. package/dist/schemas/enrollment/index.js.map +1 -0
  70. package/dist/schemas/identity/academic-year.schema.d.ts +546 -0
  71. package/dist/schemas/identity/academic-year.schema.d.ts.map +1 -0
  72. package/dist/schemas/identity/academic-year.schema.js +137 -0
  73. package/dist/schemas/identity/academic-year.schema.js.map +1 -0
  74. package/dist/schemas/identity/auth.schema.d.ts +670 -0
  75. package/dist/schemas/identity/auth.schema.d.ts.map +1 -0
  76. package/dist/schemas/identity/auth.schema.js +126 -0
  77. package/dist/schemas/identity/auth.schema.js.map +1 -0
  78. package/dist/schemas/identity/bell-schedule.schema.d.ts +630 -0
  79. package/dist/schemas/identity/bell-schedule.schema.d.ts.map +1 -0
  80. package/dist/schemas/identity/bell-schedule.schema.js +143 -0
  81. package/dist/schemas/identity/bell-schedule.schema.js.map +1 -0
  82. package/dist/schemas/identity/calendar-date.schema.d.ts +830 -0
  83. package/dist/schemas/identity/calendar-date.schema.d.ts.map +1 -0
  84. package/dist/schemas/identity/calendar-date.schema.js +208 -0
  85. package/dist/schemas/identity/calendar-date.schema.js.map +1 -0
  86. package/dist/schemas/identity/credential.schema.d.ts +472 -0
  87. package/dist/schemas/identity/credential.schema.d.ts.map +1 -0
  88. package/dist/schemas/identity/credential.schema.js +200 -0
  89. package/dist/schemas/identity/credential.schema.js.map +1 -0
  90. package/dist/schemas/identity/department.schema.d.ts +567 -0
  91. package/dist/schemas/identity/department.schema.d.ts.map +1 -0
  92. package/dist/schemas/identity/department.schema.js +113 -0
  93. package/dist/schemas/identity/department.schema.js.map +1 -0
  94. package/dist/schemas/identity/index.d.ts +21 -0
  95. package/dist/schemas/identity/index.d.ts.map +1 -0
  96. package/dist/schemas/identity/index.js +39 -0
  97. package/dist/schemas/identity/index.js.map +1 -0
  98. package/dist/schemas/identity/leave.schema.d.ts +725 -0
  99. package/dist/schemas/identity/leave.schema.d.ts.map +1 -0
  100. package/dist/schemas/identity/leave.schema.js +204 -0
  101. package/dist/schemas/identity/leave.schema.js.map +1 -0
  102. package/dist/schemas/identity/role.schema.d.ts +356 -0
  103. package/dist/schemas/identity/role.schema.d.ts.map +1 -0
  104. package/dist/schemas/identity/role.schema.js +124 -0
  105. package/dist/schemas/identity/role.schema.js.map +1 -0
  106. package/dist/schemas/identity/school-year.schema.d.ts +303 -0
  107. package/dist/schemas/identity/school-year.schema.d.ts.map +1 -0
  108. package/dist/schemas/identity/school-year.schema.js +59 -0
  109. package/dist/schemas/identity/school-year.schema.js.map +1 -0
  110. package/dist/schemas/identity/school.schema.d.ts +844 -0
  111. package/dist/schemas/identity/school.schema.d.ts.map +1 -0
  112. package/dist/schemas/identity/school.schema.js +139 -0
  113. package/dist/schemas/identity/school.schema.js.map +1 -0
  114. package/dist/schemas/identity/security.schema.d.ts +422 -0
  115. package/dist/schemas/identity/security.schema.d.ts.map +1 -0
  116. package/dist/schemas/identity/security.schema.js +151 -0
  117. package/dist/schemas/identity/security.schema.js.map +1 -0
  118. package/dist/schemas/identity/session.schema.d.ts +193 -0
  119. package/dist/schemas/identity/session.schema.d.ts.map +1 -0
  120. package/dist/schemas/identity/session.schema.js +59 -0
  121. package/dist/schemas/identity/session.schema.js.map +1 -0
  122. package/dist/schemas/identity/staff.schema.d.ts +1037 -0
  123. package/dist/schemas/identity/staff.schema.d.ts.map +1 -0
  124. package/dist/schemas/identity/staff.schema.js +251 -0
  125. package/dist/schemas/identity/staff.schema.js.map +1 -0
  126. package/dist/schemas/identity/tenant.schema.d.ts +313 -0
  127. package/dist/schemas/identity/tenant.schema.d.ts.map +1 -0
  128. package/dist/schemas/identity/tenant.schema.js +81 -0
  129. package/dist/schemas/identity/tenant.schema.js.map +1 -0
  130. package/dist/schemas/identity/user.schema.d.ts +921 -0
  131. package/dist/schemas/identity/user.schema.d.ts.map +1 -0
  132. package/dist/schemas/identity/user.schema.js +201 -0
  133. package/dist/schemas/identity/user.schema.js.map +1 -0
  134. package/dist/schemas/index.d.ts +10 -0
  135. package/dist/schemas/index.d.ts.map +1 -0
  136. package/dist/schemas/index.js +26 -0
  137. package/dist/schemas/index.js.map +1 -0
  138. package/dist/validators/academic-year.d.ts +90 -0
  139. package/dist/validators/academic-year.d.ts.map +1 -0
  140. package/dist/validators/academic-year.js +190 -0
  141. package/dist/validators/academic-year.js.map +1 -0
  142. package/dist/validators/date-range.d.ts +142 -0
  143. package/dist/validators/date-range.d.ts.map +1 -0
  144. package/dist/validators/date-range.js +170 -0
  145. package/dist/validators/date-range.js.map +1 -0
  146. package/dist/validators/grade-level.d.ts +80 -0
  147. package/dist/validators/grade-level.d.ts.map +1 -0
  148. package/dist/validators/grade-level.js +157 -0
  149. package/dist/validators/grade-level.js.map +1 -0
  150. package/dist/validators/index.d.ts +10 -0
  151. package/dist/validators/index.d.ts.map +1 -0
  152. package/dist/validators/index.js +26 -0
  153. package/dist/validators/index.js.map +1 -0
  154. package/dist/validators/password.d.ts +60 -0
  155. package/dist/validators/password.d.ts.map +1 -0
  156. package/dist/validators/password.js +81 -0
  157. package/dist/validators/password.js.map +1 -0
  158. 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
+
@@ -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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"}