@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
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /**
3
+ * Calendar Ed-Fi Mapper
4
+ *
5
+ * Converts EdForge Calendar data to Ed-Fi Data Standard format for compliance export.
6
+ * Ed-Fi Data Standard v6.0: https://docs.ed-fi.org/reference/data-exchange/data-standard/
7
+ *
8
+ * Ed-Fi Calendar Domain:
9
+ * - Calendar - School calendar for an academic year
10
+ * - CalendarDate - Individual calendar dates with events
11
+ * - AcademicWeek - Academic weeks within a calendar
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.toEdFiCalendar = toEdFiCalendar;
15
+ exports.toEdFiCalendarDate = toEdFiCalendarDate;
16
+ exports.toEdFiGradingPeriod = toEdFiGradingPeriod;
17
+ exports.toEdFiBellSchedule = toEdFiBellSchedule;
18
+ exports.toEdFiCalendarBatch = toEdFiCalendarBatch;
19
+ exports.toEdFiCalendarDateBatch = toEdFiCalendarDateBatch;
20
+ exports.toEdFiGradingPeriodBatch = toEdFiGradingPeriodBatch;
21
+ // ============================================
22
+ // Mapping Functions
23
+ // ============================================
24
+ /**
25
+ * Map EdForge calendar type to Ed-Fi calendarTypeDescriptor
26
+ */
27
+ function mapCalendarTypeToEdFi(calendarType) {
28
+ const typeMap = {
29
+ 'semester': 'uri://ed-fi.org/CalendarTypeDescriptor#Student Specific',
30
+ 'quarter': 'uri://ed-fi.org/CalendarTypeDescriptor#Student Specific',
31
+ 'trimester': 'uri://ed-fi.org/CalendarTypeDescriptor#Student Specific',
32
+ };
33
+ return typeMap[calendarType] || 'uri://ed-fi.org/CalendarTypeDescriptor#Student Specific';
34
+ }
35
+ /**
36
+ * Map EdForge term type to Ed-Fi gradingPeriodDescriptor
37
+ */
38
+ function mapTermTypeToEdFi(termType) {
39
+ const termMap = {
40
+ 'semester': 'uri://ed-fi.org/GradingPeriodDescriptor#Semester',
41
+ 'quarter': 'uri://ed-fi.org/GradingPeriodDescriptor#Quarter',
42
+ 'trimester': 'uri://ed-fi.org/GradingPeriodDescriptor#Trimester',
43
+ 'year': 'uri://ed-fi.org/GradingPeriodDescriptor#End of Year',
44
+ };
45
+ return termMap[termType] || 'uri://ed-fi.org/GradingPeriodDescriptor#Grading Period';
46
+ }
47
+ /**
48
+ * Map EdForge calendar event type to Ed-Fi calendarEventDescriptor
49
+ */
50
+ function mapCalendarEventToEdFi(eventType) {
51
+ const eventMap = {
52
+ 'instructional': 'uri://ed-fi.org/CalendarEventDescriptor#Instructional day',
53
+ 'holiday': 'uri://ed-fi.org/CalendarEventDescriptor#Holiday',
54
+ 'teacher_workday': 'uri://ed-fi.org/CalendarEventDescriptor#Teacher only day',
55
+ 'professional_development': 'uri://ed-fi.org/CalendarEventDescriptor#Teacher only day',
56
+ 'early_dismissal': 'uri://ed-fi.org/CalendarEventDescriptor#Make-up day',
57
+ 'late_start': 'uri://ed-fi.org/CalendarEventDescriptor#Make-up day',
58
+ 'weather_closure': 'uri://ed-fi.org/CalendarEventDescriptor#Weather day',
59
+ 'emergency_closure': 'uri://ed-fi.org/CalendarEventDescriptor#Emergency day',
60
+ 'parent_conference': 'uri://ed-fi.org/CalendarEventDescriptor#Student late arrival/early dismissal',
61
+ 'testing': 'uri://ed-fi.org/CalendarEventDescriptor#Instructional day',
62
+ 'assembly': 'uri://ed-fi.org/CalendarEventDescriptor#Instructional day',
63
+ 'field_trip': 'uri://ed-fi.org/CalendarEventDescriptor#Instructional day',
64
+ 'other': 'uri://ed-fi.org/CalendarEventDescriptor#Other',
65
+ };
66
+ return eventMap[eventType] || 'uri://ed-fi.org/CalendarEventDescriptor#Other';
67
+ }
68
+ /**
69
+ * Extract school year from date range (e.g., 2024-2025 from Aug 2024 - May 2025)
70
+ */
71
+ function extractSchoolYear(startDate) {
72
+ const start = new Date(startDate);
73
+ const month = start.getMonth();
74
+ // If school starts in fall (July-Dec), use that year; otherwise use previous year
75
+ return month >= 6 ? start.getFullYear() : start.getFullYear() - 1;
76
+ }
77
+ /**
78
+ * Convert EdForge AcademicYear to Ed-Fi Calendar format
79
+ */
80
+ function toEdFiCalendar(academicYear, schoolEdFiId, gradeLevels) {
81
+ const schoolYear = extractSchoolYear(academicYear.startDate);
82
+ const edfiCalendar = {
83
+ calendarCode: `${academicYear.schoolId}-${academicYear.yearId}`,
84
+ schoolReference: {
85
+ schoolId: schoolEdFiId,
86
+ },
87
+ schoolYearTypeReference: {
88
+ schoolYear,
89
+ },
90
+ calendarTypeDescriptor: mapCalendarTypeToEdFi(academicYear.calendarType),
91
+ };
92
+ // Add grade levels if provided
93
+ if (gradeLevels && gradeLevels.length > 0) {
94
+ edfiCalendar.gradeLevels = gradeLevels.map(gl => ({
95
+ gradeLevelDescriptor: `uri://ed-fi.org/GradeLevelDescriptor#${gl}`,
96
+ }));
97
+ }
98
+ // EdForge extension data for round-trip preservation
99
+ edfiCalendar._ext = {
100
+ edforge_yearId: academicYear.yearId,
101
+ edforge_schoolId: academicYear.schoolId,
102
+ edforge_name: academicYear.name,
103
+ edforge_status: academicYear.status,
104
+ edforge_isCurrent: academicYear.isCurrent,
105
+ };
106
+ return edfiCalendar;
107
+ }
108
+ /**
109
+ * Convert EdForge CalendarDate to Ed-Fi CalendarDate format
110
+ */
111
+ function toEdFiCalendarDate(calendarDate, schoolEdFiId, calendarCode, schoolYear) {
112
+ const edfiCalendarDate = {
113
+ calendarReference: {
114
+ calendarCode,
115
+ schoolId: schoolEdFiId,
116
+ schoolYear,
117
+ },
118
+ date: calendarDate.date,
119
+ };
120
+ // Map calendar events
121
+ if (calendarDate.calendarEvents && calendarDate.calendarEvents.length > 0) {
122
+ edfiCalendarDate.calendarEvents = calendarDate.calendarEvents.map(event => ({
123
+ calendarEventDescriptor: mapCalendarEventToEdFi(event.eventType),
124
+ }));
125
+ }
126
+ else if (calendarDate.isInstructionalDay) {
127
+ edfiCalendarDate.calendarEvents = [{
128
+ calendarEventDescriptor: 'uri://ed-fi.org/CalendarEventDescriptor#Instructional day',
129
+ }];
130
+ }
131
+ else if (calendarDate.isHoliday) {
132
+ edfiCalendarDate.calendarEvents = [{
133
+ calendarEventDescriptor: 'uri://ed-fi.org/CalendarEventDescriptor#Holiday',
134
+ }];
135
+ }
136
+ // EdForge extension data
137
+ edfiCalendarDate._ext = {
138
+ edforge_calendarDateId: calendarDate.calendarDateId,
139
+ edforge_isInstructionalDay: calendarDate.isInstructionalDay,
140
+ edforge_isHoliday: calendarDate.isHoliday,
141
+ edforge_isWeekend: calendarDate.isWeekend,
142
+ edforge_dayOfWeek: calendarDate.dayOfWeek,
143
+ edforge_bellScheduleId: calendarDate.bellScheduleId,
144
+ };
145
+ return edfiCalendarDate;
146
+ }
147
+ /**
148
+ * Convert EdForge GradingPeriod to Ed-Fi GradingPeriod format
149
+ */
150
+ function toEdFiGradingPeriod(gradingPeriod, schoolEdFiId, schoolYear) {
151
+ return {
152
+ gradingPeriodDescriptor: mapTermTypeToEdFi(gradingPeriod.termType),
153
+ periodSequence: gradingPeriod.sequence,
154
+ schoolReference: {
155
+ schoolId: schoolEdFiId,
156
+ },
157
+ schoolYearTypeReference: {
158
+ schoolYear,
159
+ },
160
+ beginDate: gradingPeriod.startDate,
161
+ endDate: gradingPeriod.endDate,
162
+ _ext: {
163
+ edforge_termId: gradingPeriod.termId,
164
+ edforge_yearId: gradingPeriod.yearId,
165
+ edforge_schoolId: gradingPeriod.schoolId,
166
+ edforge_name: gradingPeriod.name,
167
+ edforge_gradesDueDate: gradingPeriod.gradesDueDate,
168
+ edforge_reportCardDate: gradingPeriod.reportCardDate,
169
+ },
170
+ };
171
+ }
172
+ /**
173
+ * Convert EdForge BellSchedule to Ed-Fi BellSchedule format
174
+ */
175
+ function toEdFiBellSchedule(bellSchedule, schoolEdFiId) {
176
+ // Calculate total instructional time from class periods
177
+ const instructionalPeriods = bellSchedule.classPeriods.filter(p => p.periodType === 'instructional');
178
+ let totalInstructionalTime = 0;
179
+ for (const period of instructionalPeriods) {
180
+ const [startHour, startMin] = period.startTime.split(':').map(Number);
181
+ const [endHour, endMin] = period.endTime.split(':').map(Number);
182
+ const startMinutes = startHour * 60 + startMin;
183
+ const endMinutes = endHour * 60 + endMin;
184
+ totalInstructionalTime += endMinutes - startMinutes;
185
+ }
186
+ // Find earliest start and latest end times
187
+ const startTimes = bellSchedule.classPeriods.map(p => p.startTime).sort();
188
+ const endTimes = bellSchedule.classPeriods.map(p => p.endTime).sort().reverse();
189
+ return {
190
+ bellScheduleName: bellSchedule.bellScheduleName,
191
+ schoolReference: {
192
+ schoolId: schoolEdFiId,
193
+ },
194
+ classPeriods: bellSchedule.classPeriods.map(p => ({
195
+ classPeriodReference: {
196
+ classPeriodName: p.classPeriodName,
197
+ schoolId: schoolEdFiId,
198
+ },
199
+ })),
200
+ totalInstructionalTime,
201
+ startTime: startTimes[0],
202
+ endTime: endTimes[0],
203
+ _ext: {
204
+ edforge_bellScheduleId: bellSchedule.bellScheduleId,
205
+ edforge_tenantId: bellSchedule.tenantId,
206
+ edforge_schoolId: bellSchedule.schoolId,
207
+ edforge_type: bellSchedule.dayType,
208
+ edforge_isDefault: bellSchedule.isDefault,
209
+ },
210
+ };
211
+ }
212
+ // ============================================
213
+ // Batch Conversion Functions
214
+ // ============================================
215
+ /**
216
+ * Batch convert EdForge AcademicYears to Ed-Fi Calendar format
217
+ */
218
+ function toEdFiCalendarBatch(academicYears, schoolEdFiIdMap) {
219
+ return academicYears
220
+ .filter(ay => schoolEdFiIdMap.has(ay.schoolId))
221
+ .map(ay => toEdFiCalendar(ay, schoolEdFiIdMap.get(ay.schoolId)));
222
+ }
223
+ /**
224
+ * Batch convert EdForge CalendarDates to Ed-Fi CalendarDate format
225
+ */
226
+ function toEdFiCalendarDateBatch(calendarDates, schoolEdFiId, calendarCode, schoolYear) {
227
+ return calendarDates.map(cd => toEdFiCalendarDate(cd, schoolEdFiId, calendarCode, schoolYear));
228
+ }
229
+ /**
230
+ * Batch convert EdForge GradingPeriods to Ed-Fi GradingPeriod format
231
+ */
232
+ function toEdFiGradingPeriodBatch(gradingPeriods, schoolEdFiId, schoolYear) {
233
+ return gradingPeriods.map(gp => toEdFiGradingPeriod(gp, schoolEdFiId, schoolYear));
234
+ }
235
+ //# sourceMappingURL=calendar.mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.mapper.js","sourceRoot":"","sources":["../../../src/mappers/edfi/calendar.mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Credential Ed-Fi Mapper
3
+ *
4
+ * Converts EdForge Credential data to Ed-Fi Data Standard format.
5
+ * Ed-Fi Data Standard v6.0
6
+ */
7
+ import type { CredentialResponseDto } from '../../schemas/identity/credential.schema';
8
+ /**
9
+ * Ed-Fi Credential Resource
10
+ * Based on Ed-Fi Data Standard v6.0 Credential resource
11
+ */
12
+ export interface EdFiCredential {
13
+ credentialIdentifier: string;
14
+ stateOfIssueStateAbbreviationDescriptor?: string;
15
+ credentialFieldDescriptor?: string;
16
+ credentialTypeDescriptor: string;
17
+ issuanceDate: string;
18
+ expirationDate?: string;
19
+ namespace?: string;
20
+ gradeLevels?: EdFiCredentialGradeLevel[];
21
+ academicSubjects?: EdFiCredentialAcademicSubject[];
22
+ endorsements?: EdFiCredentialEndorsement[];
23
+ _ext?: EdForgeCredentialExtension;
24
+ }
25
+ export interface EdFiCredentialGradeLevel {
26
+ gradeLevelDescriptor: string;
27
+ }
28
+ export interface EdFiCredentialAcademicSubject {
29
+ academicSubjectDescriptor: string;
30
+ }
31
+ export interface EdFiCredentialEndorsement {
32
+ credentialEndorsement: string;
33
+ }
34
+ export interface EdForgeCredentialExtension {
35
+ edforge_credentialId: string;
36
+ edforge_staffId: string;
37
+ edforge_tenantId: string;
38
+ edforge_verificationStatus: string;
39
+ edforge_isRenewable: boolean;
40
+ edforge_renewalReminderDays: number;
41
+ }
42
+ /**
43
+ * Convert EdForge Credential to Ed-Fi Credential format
44
+ */
45
+ export declare function toEdFiCredential(credential: CredentialResponseDto): EdFiCredential;
46
+ /**
47
+ * Batch convert EdForge Credentials to Ed-Fi format
48
+ */
49
+ export declare function toEdFiCredentialBatch(credentials: CredentialResponseDto[]): EdFiCredential[];
50
+ //# sourceMappingURL=credential.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential.mapper.d.ts","sourceRoot":"","sources":["../../../src/mappers/edfi/credential.mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uCAAuC,CAAC,EAAE,MAAM,CAAC;IACjD,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,EAAE,MAAM,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,6BAA6B,EAAE,CAAC;IACnD,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,IAAI,CAAC,EAAE,0BAA0B,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA6B;IAC5C,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA0B;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,0BAA0B,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAyED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,GAAG,cAAc,CAsClF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,qBAAqB,EAAE,GAAG,cAAc,EAAE,CAE5F"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * Credential Ed-Fi Mapper
4
+ *
5
+ * Converts EdForge Credential data to Ed-Fi Data Standard format.
6
+ * Ed-Fi Data Standard v6.0
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.toEdFiCredential = toEdFiCredential;
10
+ exports.toEdFiCredentialBatch = toEdFiCredentialBatch;
11
+ /**
12
+ * Map EdForge credential type to Ed-Fi credentialTypeDescriptor
13
+ */
14
+ function mapCredentialTypeToEdFi(type) {
15
+ const typeMap = {
16
+ 'certification': 'uri://ed-fi.org/CredentialTypeDescriptor#Certification',
17
+ 'license': 'uri://ed-fi.org/CredentialTypeDescriptor#Licensure',
18
+ 'endorsement': 'uri://ed-fi.org/CredentialTypeDescriptor#Endorsement',
19
+ 'degree': 'uri://ed-fi.org/CredentialTypeDescriptor#Other',
20
+ 'registration': 'uri://ed-fi.org/CredentialTypeDescriptor#Registration',
21
+ 'permit': 'uri://ed-fi.org/CredentialTypeDescriptor#Other',
22
+ 'clearance': 'uri://ed-fi.org/CredentialTypeDescriptor#Other',
23
+ 'training': 'uri://ed-fi.org/CredentialTypeDescriptor#Other',
24
+ 'other': 'uri://ed-fi.org/CredentialTypeDescriptor#Other',
25
+ };
26
+ return typeMap[type] || 'uri://ed-fi.org/CredentialTypeDescriptor#Other';
27
+ }
28
+ /**
29
+ * Map EdForge credential field to Ed-Fi credentialFieldDescriptor
30
+ */
31
+ function mapCredentialFieldToEdFi(field) {
32
+ if (!field)
33
+ return undefined;
34
+ const fieldMap = {
35
+ 'elementary_education': 'uri://ed-fi.org/CredentialFieldDescriptor#Elementary Education',
36
+ 'secondary_education': 'uri://ed-fi.org/CredentialFieldDescriptor#Secondary Education',
37
+ 'special_education': 'uri://ed-fi.org/CredentialFieldDescriptor#Special Education',
38
+ 'early_childhood': 'uri://ed-fi.org/CredentialFieldDescriptor#Early Childhood Education',
39
+ 'mathematics': 'uri://ed-fi.org/CredentialFieldDescriptor#Mathematics',
40
+ 'science': 'uri://ed-fi.org/CredentialFieldDescriptor#Science',
41
+ 'english_language_arts': 'uri://ed-fi.org/CredentialFieldDescriptor#English Language Arts',
42
+ 'social_studies': 'uri://ed-fi.org/CredentialFieldDescriptor#Social Studies',
43
+ 'foreign_language': 'uri://ed-fi.org/CredentialFieldDescriptor#Foreign Language',
44
+ 'physical_education': 'uri://ed-fi.org/CredentialFieldDescriptor#Physical Education',
45
+ 'music': 'uri://ed-fi.org/CredentialFieldDescriptor#Music',
46
+ 'art': 'uri://ed-fi.org/CredentialFieldDescriptor#Art',
47
+ 'technology': 'uri://ed-fi.org/CredentialFieldDescriptor#Technology Education',
48
+ 'counseling': 'uri://ed-fi.org/CredentialFieldDescriptor#School Counseling',
49
+ 'administration': 'uri://ed-fi.org/CredentialFieldDescriptor#School Administration',
50
+ 'library_media': 'uri://ed-fi.org/CredentialFieldDescriptor#Library/Media',
51
+ 'other': 'uri://ed-fi.org/CredentialFieldDescriptor#Other',
52
+ };
53
+ return fieldMap[field] || 'uri://ed-fi.org/CredentialFieldDescriptor#Other';
54
+ }
55
+ /**
56
+ * Map EdForge grade level to Ed-Fi gradeLevelDescriptor
57
+ */
58
+ function mapGradeLevelToEdFi(gradeLevel) {
59
+ const levelMap = {
60
+ 'pre_k': 'uri://ed-fi.org/GradeLevelDescriptor#Preschool/Prekindergarten',
61
+ 'kindergarten': 'uri://ed-fi.org/GradeLevelDescriptor#Kindergarten',
62
+ 'first': 'uri://ed-fi.org/GradeLevelDescriptor#First grade',
63
+ 'second': 'uri://ed-fi.org/GradeLevelDescriptor#Second grade',
64
+ 'third': 'uri://ed-fi.org/GradeLevelDescriptor#Third grade',
65
+ 'fourth': 'uri://ed-fi.org/GradeLevelDescriptor#Fourth grade',
66
+ 'fifth': 'uri://ed-fi.org/GradeLevelDescriptor#Fifth grade',
67
+ 'sixth': 'uri://ed-fi.org/GradeLevelDescriptor#Sixth grade',
68
+ 'seventh': 'uri://ed-fi.org/GradeLevelDescriptor#Seventh grade',
69
+ 'eighth': 'uri://ed-fi.org/GradeLevelDescriptor#Eighth grade',
70
+ 'ninth': 'uri://ed-fi.org/GradeLevelDescriptor#Ninth grade',
71
+ 'tenth': 'uri://ed-fi.org/GradeLevelDescriptor#Tenth grade',
72
+ 'eleventh': 'uri://ed-fi.org/GradeLevelDescriptor#Eleventh grade',
73
+ 'twelfth': 'uri://ed-fi.org/GradeLevelDescriptor#Twelfth grade',
74
+ 'adult_education': 'uri://ed-fi.org/GradeLevelDescriptor#Adult Education',
75
+ 'ungraded': 'uri://ed-fi.org/GradeLevelDescriptor#Ungraded',
76
+ };
77
+ return levelMap[gradeLevel] || 'uri://ed-fi.org/GradeLevelDescriptor#Other';
78
+ }
79
+ /**
80
+ * Convert EdForge Credential to Ed-Fi Credential format
81
+ */
82
+ function toEdFiCredential(credential) {
83
+ const edfiCredential = {
84
+ credentialIdentifier: credential.credentialIdentifier,
85
+ credentialTypeDescriptor: mapCredentialTypeToEdFi(credential.credentialTypeDescriptor),
86
+ credentialFieldDescriptor: mapCredentialFieldToEdFi(credential.credentialFieldDescriptor),
87
+ issuanceDate: credential.issuanceDate,
88
+ expirationDate: credential.expirationDate,
89
+ stateOfIssueStateAbbreviationDescriptor: credential.issuingState
90
+ ? `uri://ed-fi.org/StateAbbreviationDescriptor#${credential.issuingState}`
91
+ : undefined,
92
+ namespace: 'uri://edforge.io/Credential',
93
+ };
94
+ // Map grade levels
95
+ if (credential.gradeLevels && credential.gradeLevels.length > 0) {
96
+ edfiCredential.gradeLevels = credential.gradeLevels.map(gl => ({
97
+ gradeLevelDescriptor: mapGradeLevelToEdFi(gl),
98
+ }));
99
+ }
100
+ // Map subjects to academic subjects
101
+ if (credential.subjects && credential.subjects.length > 0) {
102
+ edfiCredential.academicSubjects = credential.subjects.map(subject => ({
103
+ academicSubjectDescriptor: `uri://ed-fi.org/AcademicSubjectDescriptor#${subject}`,
104
+ }));
105
+ }
106
+ // EdForge extension data
107
+ edfiCredential._ext = {
108
+ edforge_credentialId: credential.credentialId,
109
+ edforge_staffId: credential.staffId,
110
+ edforge_tenantId: credential.tenantId,
111
+ edforge_verificationStatus: credential.verificationStatus,
112
+ edforge_isRenewable: credential.isRenewable,
113
+ edforge_renewalReminderDays: credential.renewalReminderDays,
114
+ };
115
+ return edfiCredential;
116
+ }
117
+ /**
118
+ * Batch convert EdForge Credentials to Ed-Fi format
119
+ */
120
+ function toEdFiCredentialBatch(credentials) {
121
+ return credentials.map(toEdFiCredential);
122
+ }
123
+ //# sourceMappingURL=credential.mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential.mapper.js","sourceRoot":"","sources":["../../../src/mappers/edfi/credential.mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Ed-Fi Mappers
3
+ *
4
+ * Converts EdForge 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
+ export * from './staff.mapper';
8
+ export * from './credential.mapper';
9
+ export * from './calendar.mapper';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mappers/edfi/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Ed-Fi Mappers
4
+ *
5
+ * Converts EdForge data to Ed-Fi Data Standard format for compliance export.
6
+ * Ed-Fi Data Standard v6.0: https://docs.ed-fi.org/reference/data-exchange/data-standard/
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./staff.mapper"), exports);
24
+ __exportStar(require("./credential.mapper"), exports);
25
+ __exportStar(require("./calendar.mapper"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mappers/edfi/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,sDAAoC;AACpC,oDAAkC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Staff Ed-Fi Mapper
3
+ *
4
+ * Converts EdForge Staff 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
+ import type { StaffResponseDto, StaffSchoolAssignment } from '../../schemas/identity/staff.schema';
8
+ /**
9
+ * Ed-Fi Staff Resource
10
+ * Based on Ed-Fi Data Standard v6.0 Staff resource
11
+ */
12
+ export interface EdFiStaff {
13
+ staffUniqueId: string;
14
+ firstName: string;
15
+ lastSurname: string;
16
+ middleName?: string;
17
+ generationCodeSuffix?: string;
18
+ maidenName?: string;
19
+ birthDate?: string;
20
+ hispanicLatinoEthnicity?: boolean;
21
+ highlyQualifiedTeacher?: boolean;
22
+ yearsOfPriorTeachingExperience?: number;
23
+ yearsOfPriorProfessionalExperience?: number;
24
+ sexDescriptor?: string;
25
+ identificationDocuments?: EdFiIdentificationDocument[];
26
+ addresses?: EdFiStaffAddress[];
27
+ electronicMails?: EdFiElectronicMail[];
28
+ telephones?: EdFiTelephone[];
29
+ _ext?: EdForgeExtension;
30
+ }
31
+ export interface EdFiIdentificationDocument {
32
+ identificationDocumentUseDescriptor: string;
33
+ personalInformationVerificationDescriptor: string;
34
+ issuerDocumentIdentificationCode?: string;
35
+ issuerName?: string;
36
+ }
37
+ export interface EdFiStaffAddress {
38
+ addressTypeDescriptor: string;
39
+ streetNumberName?: string;
40
+ apartmentRoomSuiteNumber?: string;
41
+ city: string;
42
+ stateAbbreviationDescriptor: string;
43
+ postalCode: string;
44
+ nameOfCounty?: string;
45
+ }
46
+ export interface EdFiElectronicMail {
47
+ electronicMailAddress: string;
48
+ electronicMailTypeDescriptor: string;
49
+ primaryEmailAddressIndicator?: boolean;
50
+ }
51
+ export interface EdFiTelephone {
52
+ telephoneNumber: string;
53
+ telephoneNumberTypeDescriptor: string;
54
+ orderOfPriority?: number;
55
+ }
56
+ export interface EdForgeExtension {
57
+ edforge_staffId: string;
58
+ edforge_tenantId: string;
59
+ edforge_role: string;
60
+ edforge_employmentType: string;
61
+ edforge_employmentStatus: string;
62
+ edforge_hireDate: string;
63
+ edforge_primarySchoolId: string;
64
+ }
65
+ /**
66
+ * Ed-Fi StaffEducationOrganizationAssignmentAssociation
67
+ * Represents assignment of staff to schools
68
+ */
69
+ export interface EdFiStaffEducationOrganizationAssignmentAssociation {
70
+ staffReference: {
71
+ staffUniqueId: string;
72
+ };
73
+ educationOrganizationReference: {
74
+ educationOrganizationId: number;
75
+ };
76
+ beginDate: string;
77
+ endDate?: string;
78
+ positionTitle?: string;
79
+ staffClassificationDescriptor: string;
80
+ orderOfAssignment?: number;
81
+ employmentStatusDescriptor?: string;
82
+ fullTimeEquivalency?: number;
83
+ }
84
+ /**
85
+ * Convert EdForge Staff to Ed-Fi Staff format
86
+ */
87
+ export declare function toEdFiStaff(staff: StaffResponseDto): EdFiStaff;
88
+ /**
89
+ * Convert EdForge Staff School Assignment to Ed-Fi StaffEducationOrganizationAssignmentAssociation
90
+ */
91
+ export declare function toEdFiStaffAssignment(staff: StaffResponseDto, assignment: StaffSchoolAssignment, schoolEdFiId: number): EdFiStaffEducationOrganizationAssignmentAssociation;
92
+ /**
93
+ * Batch convert EdForge Staff list to Ed-Fi format
94
+ */
95
+ export declare function toEdFiStaffBatch(staffList: StaffResponseDto[]): EdFiStaff[];
96
+ //# sourceMappingURL=staff.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staff.mapper.d.ts","sourceRoot":"","sources":["../../../src/mappers/edfi/staff.mapper.ts"],"names":[],"mappings":"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"}