@royalschedule/maps 4.0.31 → 4.0.33

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 (286) hide show
  1. package/dist/Additio/from/courses.js.map +1 -1
  2. package/dist/Additio/from/events.js.map +1 -1
  3. package/dist/Additio/from/groups.js.map +1 -1
  4. package/dist/Additio/from/index.js.map +1 -1
  5. package/dist/Additio/from/locations.js.map +1 -1
  6. package/dist/Additio/from/persons.js.map +1 -1
  7. package/dist/Additio/from/schedules.d.ts +1 -0
  8. package/dist/Additio/from/schedules.js +2 -4
  9. package/dist/Additio/from/schedules.js.map +1 -1
  10. package/dist/Additio/from/teachers.js.map +1 -1
  11. package/dist/Additio/to/index.d.ts +4 -2
  12. package/dist/Additio/to/schedules.js +2 -4
  13. package/dist/Additio/to/schedules.js.map +1 -1
  14. package/dist/Admentum/from/courses.js.map +1 -1
  15. package/dist/Admentum/from/events.js.map +1 -1
  16. package/dist/Admentum/from/groups.js.map +1 -1
  17. package/dist/Admentum/from/index.js.map +1 -1
  18. package/dist/Admentum/from/locations.js.map +1 -1
  19. package/dist/Admentum/from/persons.js.map +1 -1
  20. package/dist/Admentum/from/schedules.d.ts +1 -0
  21. package/dist/Admentum/from/schedules.js +3 -6
  22. package/dist/Admentum/from/schedules.js.map +1 -1
  23. package/dist/Admentum/from/teachers.js.map +1 -1
  24. package/dist/Admentum/to/index.d.ts +1 -0
  25. package/dist/Admentum/to/schedules.js +4 -7
  26. package/dist/Admentum/to/schedules.js.map +1 -1
  27. package/dist/Excel/index.d.ts +1 -0
  28. package/dist/Excel/v1/from/index.js +1 -1
  29. package/dist/Excel/v1/from/index.js.map +1 -1
  30. package/dist/Excel/v1/index.d.ts +4 -3
  31. package/dist/Excel/v2/from/index.js +45 -54
  32. package/dist/Excel/v2/from/index.js.map +1 -1
  33. package/dist/Excel/v2/index.d.ts +4 -3
  34. package/dist/IdunSoft/from/courses.js.map +1 -1
  35. package/dist/IdunSoft/from/events.js +1 -2
  36. package/dist/IdunSoft/from/events.js.map +1 -1
  37. package/dist/IdunSoft/from/groups.js.map +1 -1
  38. package/dist/IdunSoft/from/index.js.map +1 -1
  39. package/dist/IdunSoft/from/locations.js.map +1 -1
  40. package/dist/IdunSoft/from/schedules.d.ts +1 -0
  41. package/dist/IdunSoft/from/schedules.js.map +1 -1
  42. package/dist/IdunSoft/from/teachers.js.map +1 -1
  43. package/dist/IdunSoft/to/index.d.ts +1 -0
  44. package/dist/IdunSoft/to/schedules.js +3 -6
  45. package/dist/IdunSoft/to/schedules.js.map +1 -1
  46. package/dist/InfoMentor/to/index.d.ts +1 -0
  47. package/dist/InfoMentor/to/schedules.js +1 -2
  48. package/dist/InfoMentor/to/schedules.js.map +1 -1
  49. package/dist/PlanDigital/from/index.js.map +1 -1
  50. package/dist/PlanDigital/from/schedules.js +9 -11
  51. package/dist/PlanDigital/from/schedules.js.map +1 -1
  52. package/dist/PlanDigital/index.d.ts +1 -0
  53. package/dist/Quiculum/file/to/index.d.ts +1 -0
  54. package/dist/Quiculum/file/to/schedules.js +5 -9
  55. package/dist/Quiculum/file/to/schedules.js.map +1 -1
  56. package/dist/RS/from/division.d.ts +1 -0
  57. package/dist/RS/from/division.js +1 -2
  58. package/dist/RS/from/division.js.map +1 -1
  59. package/dist/RS/from/index.js.map +1 -1
  60. package/dist/RS/from/schedules.d.ts +1 -0
  61. package/dist/RS/from/schedules.js.map +1 -1
  62. package/dist/RS/make-connected.d.ts +3 -1
  63. package/dist/RS/make-connected.js +34 -42
  64. package/dist/RS/make-connected.js.map +1 -1
  65. package/dist/RS/to/index.js.map +1 -1
  66. package/dist/RS/to/initial-configuration.js +4 -6
  67. package/dist/RS/to/initial-configuration.js.map +1 -1
  68. package/dist/RS/to/input/collections.js.map +1 -1
  69. package/dist/RS/to/input/default.js +1 -2
  70. package/dist/RS/to/input/default.js.map +1 -1
  71. package/dist/RS/to/input/dependencies.js +1 -2
  72. package/dist/RS/to/input/dependencies.js.map +1 -1
  73. package/dist/RS/to/input/dynamic-locked-times.js +1 -2
  74. package/dist/RS/to/input/dynamic-locked-times.js.map +1 -1
  75. package/dist/RS/to/input/events.js.map +1 -1
  76. package/dist/RS/to/input/groups.js.map +1 -1
  77. package/dist/RS/to/input/individuals.js +1 -2
  78. package/dist/RS/to/input/individuals.js.map +1 -1
  79. package/dist/RS/to/input/input.js +1 -2
  80. package/dist/RS/to/input/input.js.map +1 -1
  81. package/dist/RS/to/input/intervals.js +2 -4
  82. package/dist/RS/to/input/intervals.js.map +1 -1
  83. package/dist/RS/to/input/periods.js +2 -4
  84. package/dist/RS/to/input/periods.js.map +1 -1
  85. package/dist/RS/to/input/settings.js.map +1 -1
  86. package/dist/RS/to/input/teachers.js +1 -1
  87. package/dist/RS/to/input/teachers.js.map +1 -1
  88. package/dist/RS/to/input/util/attach-locked-times.js.map +1 -1
  89. package/dist/RS/to/input/util/parse-days.js.map +1 -1
  90. package/dist/RS/to/input/util/parse-group-references.js.map +1 -1
  91. package/dist/RS/to/input/util/parse-intervals.js +2 -4
  92. package/dist/RS/to/input/util/parse-intervals.js.map +1 -1
  93. package/dist/RS/to/input/util/parse-location-references.js +1 -2
  94. package/dist/RS/to/input/util/parse-location-references.js.map +1 -1
  95. package/dist/RS/to/input/util/parse-max-working-hours.js.map +1 -1
  96. package/dist/RS/to/input/util/parse-minimum-break-length.js.map +1 -1
  97. package/dist/RS/to/input/util/util.js +1 -2
  98. package/dist/RS/to/input/util/util.js.map +1 -1
  99. package/dist/RS/to/schedules.js.map +1 -1
  100. package/dist/RS/types/to.d.ts +1 -0
  101. package/dist/SS12000/from/activities.js +1 -2
  102. package/dist/SS12000/from/activities.js.map +1 -1
  103. package/dist/SS12000/from/calendar-events.js.map +1 -1
  104. package/dist/SS12000/from/duties.js.map +1 -1
  105. package/dist/SS12000/from/groups.js.map +1 -1
  106. package/dist/SS12000/from/index.js.map +1 -1
  107. package/dist/SS12000/from/persons.js.map +1 -1
  108. package/dist/SS12000/from/resources.js.map +1 -1
  109. package/dist/SS12000/from/rooms.js.map +1 -1
  110. package/dist/SS12000/from/syllabuses.js.map +1 -1
  111. package/dist/SS12000/index.d.ts +41 -6
  112. package/dist/SS12000/to/activities.js.map +1 -1
  113. package/dist/SS12000/to/calendar-events.js.map +1 -1
  114. package/dist/SS12000/to/common.js.map +1 -1
  115. package/dist/SS12000/to/duties.js.map +1 -1
  116. package/dist/SS12000/to/groups.js.map +1 -1
  117. package/dist/SS12000/to/index.d.ts +1 -0
  118. package/dist/SS12000/to/persons.js.map +1 -1
  119. package/dist/SS12000/to/resources.js.map +1 -1
  120. package/dist/SS12000/to/rooms.js.map +1 -1
  121. package/dist/SS12000/to/syllabuses.js.map +1 -1
  122. package/dist/SchoolSoft/api/from/index.js.map +1 -1
  123. package/dist/SchoolSoft/api/from/schedules.js +8 -12
  124. package/dist/SchoolSoft/api/from/schedules.js.map +1 -1
  125. package/dist/SchoolSoft/api/index.d.ts +6 -5
  126. package/dist/SchoolSoft/file/from/index.js.map +1 -1
  127. package/dist/SchoolSoft/file/from/schedules.js +83 -87
  128. package/dist/SchoolSoft/file/from/schedules.js.map +1 -1
  129. package/dist/SchoolSoft/file/index.d.ts +1 -0
  130. package/dist/SchoolSoft/file/to/index.d.ts +3 -2
  131. package/dist/SchoolSoft/file/to/schedules.js +1 -2
  132. package/dist/SchoolSoft/file/to/schedules.js.map +1 -1
  133. package/dist/SchoolSoft/index.d.ts +1 -0
  134. package/dist/Schoolity/txt/to/index.d.ts +1 -0
  135. package/dist/Schoolity/txt/to/schedules.js +5 -12
  136. package/dist/Schoolity/txt/to/schedules.js.map +1 -1
  137. package/dist/Skola24/mdb/from/course-and-events.js +3 -5
  138. package/dist/Skola24/mdb/from/course-and-events.js.map +1 -1
  139. package/dist/Skola24/mdb/from/groups.js.map +1 -1
  140. package/dist/Skola24/mdb/from/index.js.map +1 -1
  141. package/dist/Skola24/mdb/from/locations.js.map +1 -1
  142. package/dist/Skola24/mdb/from/schedule.d.ts +1 -0
  143. package/dist/Skola24/mdb/from/schedule.js.map +1 -1
  144. package/dist/Skola24/mdb/from/teachers.js.map +1 -1
  145. package/dist/Skola24/txt/from/calendar-exceptions.js +1 -2
  146. package/dist/Skola24/txt/from/calendar-exceptions.js.map +1 -1
  147. package/dist/Skola24/txt/from/division.js.map +1 -1
  148. package/dist/Skola24/txt/from/index.js.map +1 -1
  149. package/dist/Skola24/txt/from/period.js +31 -34
  150. package/dist/Skola24/txt/from/period.js.map +1 -1
  151. package/dist/Skola24/txt/from/schedules.d.ts +1 -0
  152. package/dist/Skola24/txt/from/schedules.js +6 -10
  153. package/dist/Skola24/txt/from/schedules.js.map +1 -1
  154. package/dist/Skola24/txt/from/util.js.map +1 -1
  155. package/dist/Skola24/txt/index.d.ts +1 -0
  156. package/dist/Skola24/txt/to/index.d.ts +1 -0
  157. package/dist/Skola24/txt/to/schedules.js +5 -12
  158. package/dist/Skola24/txt/to/schedules.js.map +1 -1
  159. package/dist/common/constants.js.map +1 -1
  160. package/dist/common/functions.js.map +1 -1
  161. package/dist/common/get-date.js.map +1 -1
  162. package/dist/common/make-chainable/index.js.map +1 -1
  163. package/dist/common/types.d.ts +1 -3
  164. package/dist/core/from/configurations.js.map +1 -1
  165. package/dist/core/from/courses.js.map +1 -1
  166. package/dist/core/from/events.js.map +1 -1
  167. package/dist/core/from/exceptions.js.map +1 -1
  168. package/dist/core/from/groups.js.map +1 -1
  169. package/dist/core/from/index.js.map +1 -1
  170. package/dist/core/from/locations.js.map +1 -1
  171. package/dist/core/from/locked-times.js.map +1 -1
  172. package/dist/core/from/overlap-groups.js.map +1 -1
  173. package/dist/core/from/periods.js.map +1 -1
  174. package/dist/core/from/persons.js.map +1 -1
  175. package/dist/core/from/root-intervals.js.map +1 -1
  176. package/dist/core/from/schedules.js.map +1 -1
  177. package/dist/core/from/settings.js.map +1 -1
  178. package/dist/core/from/syllabuses.js.map +1 -1
  179. package/dist/core/from/teachers.js.map +1 -1
  180. package/dist/core/index.d.ts +1 -0
  181. package/dist/core/interfaces/index.d.ts +23 -0
  182. package/dist/core/interfaces/other/companies.d.ts +1 -0
  183. package/dist/core/interfaces/other/companies.js.map +1 -1
  184. package/dist/core/interfaces/other/index.d.ts +6 -0
  185. package/dist/core/interfaces/other/operations.d.ts +1 -0
  186. package/dist/core/interfaces/vertices/companies.d.ts +1 -0
  187. package/dist/core/interfaces/vertices/configurations.d.ts +1 -0
  188. package/dist/core/interfaces/vertices/courses.d.ts +1 -0
  189. package/dist/core/interfaces/vertices/division-settings.d.ts +2 -0
  190. package/dist/core/interfaces/vertices/divisions.d.ts +1 -0
  191. package/dist/core/interfaces/vertices/events.d.ts +1 -0
  192. package/dist/core/interfaces/vertices/exceptions.d.ts +1 -0
  193. package/dist/core/interfaces/vertices/generations.d.ts +2 -0
  194. package/dist/core/interfaces/vertices/groups.d.ts +1 -0
  195. package/dist/core/interfaces/vertices/index.d.ts +1 -0
  196. package/dist/core/interfaces/vertices/locations.d.ts +1 -0
  197. package/dist/core/interfaces/vertices/locked-times.d.ts +2 -0
  198. package/dist/core/interfaces/vertices/overlap-groups.d.ts +1 -0
  199. package/dist/core/interfaces/vertices/periods.d.ts +3 -0
  200. package/dist/core/interfaces/vertices/persons.d.ts +1 -0
  201. package/dist/core/interfaces/vertices/properties/belongs-to.d.ts +1 -0
  202. package/dist/core/interfaces/vertices/properties/coalesced.d.ts +1 -0
  203. package/dist/core/interfaces/vertices/root-intervals.d.ts +2 -0
  204. package/dist/core/interfaces/vertices/syllabuses.d.ts +1 -0
  205. package/dist/core/interfaces/vertices/teachers.d.ts +1 -0
  206. package/dist/core/interfaces/vertices/threads.d.ts +6 -4
  207. package/dist/core/interfaces/vertices/users.d.ts +1 -0
  208. package/dist/core/interfaces/vertices/util/custom-vertex-export/index.d.ts +6 -6
  209. package/dist/core/interfaces/vertices/util/custom-vertex-export/util.d.ts +4 -4
  210. package/dist/core/interfaces/vertices/util/deep-vertex-export/index.d.ts +9 -9
  211. package/dist/core/interfaces/vertices/util/edges.d.ts +7 -7
  212. package/dist/core/interfaces/vertices/util/index.d.ts +6 -0
  213. package/dist/core/interfaces/vertices/util/util.d.ts +20 -24
  214. package/dist/core/interfaces/vertices/util/vertex-query/index.d.ts +11 -11
  215. package/dist/core/interfaces/vertices/util/vertex.d.ts +1 -1
  216. package/dist/core/interfaces/vertices/vertex-query.d.ts +27 -26
  217. package/dist/core/interfaces/vertices/vertex-query.js.map +1 -1
  218. package/dist/core/to/configurations.js +1 -2
  219. package/dist/core/to/configurations.js.map +1 -1
  220. package/dist/core/to/courses.js +1 -2
  221. package/dist/core/to/courses.js.map +1 -1
  222. package/dist/core/to/division.js.map +1 -1
  223. package/dist/core/to/events.js +1 -2
  224. package/dist/core/to/events.js.map +1 -1
  225. package/dist/core/to/exceptions.js +1 -2
  226. package/dist/core/to/exceptions.js.map +1 -1
  227. package/dist/core/to/groups.js +1 -2
  228. package/dist/core/to/groups.js.map +1 -1
  229. package/dist/core/to/locations.js +1 -2
  230. package/dist/core/to/locations.js.map +1 -1
  231. package/dist/core/to/locked-times.js +1 -2
  232. package/dist/core/to/locked-times.js.map +1 -1
  233. package/dist/core/to/overlap-groups.js +1 -2
  234. package/dist/core/to/overlap-groups.js.map +1 -1
  235. package/dist/core/to/periods.js +1 -2
  236. package/dist/core/to/periods.js.map +1 -1
  237. package/dist/core/to/persons.js +1 -2
  238. package/dist/core/to/persons.js.map +1 -1
  239. package/dist/core/to/root-intervals.js +1 -2
  240. package/dist/core/to/root-intervals.js.map +1 -1
  241. package/dist/core/to/schedules.d.ts +1 -0
  242. package/dist/core/to/schedules.js.map +1 -1
  243. package/dist/core/to/settings.js +1 -2
  244. package/dist/core/to/settings.js.map +1 -1
  245. package/dist/core/to/syllabuses.js +1 -2
  246. package/dist/core/to/syllabuses.js.map +1 -1
  247. package/dist/core/to/teachers.js +1 -2
  248. package/dist/core/to/teachers.js.map +1 -1
  249. package/dist/core/to/util.d.ts +2 -0
  250. package/dist/core/to/util.js +1 -2
  251. package/dist/core/to/util.js.map +1 -1
  252. package/dist/core/types/index.d.ts +6 -0
  253. package/dist/core/util.js +1 -2
  254. package/dist/core/util.js.map +1 -1
  255. package/dist/identify/constants/index.js.map +1 -1
  256. package/dist/identify/index.js +1 -2
  257. package/dist/identify/index.js.map +1 -1
  258. package/dist/sdui/from/classes.js.map +1 -1
  259. package/dist/sdui/from/courses.js.map +1 -1
  260. package/dist/sdui/from/holidays.js.map +1 -1
  261. package/dist/sdui/from/index.js.map +1 -1
  262. package/dist/sdui/from/lessons.js.map +1 -1
  263. package/dist/sdui/from/rooms.js.map +1 -1
  264. package/dist/sdui/from/schedules.d.ts +2 -0
  265. package/dist/sdui/from/schedules.js.map +1 -1
  266. package/dist/sdui/from/school-years.js.map +1 -1
  267. package/dist/sdui/from/substitution-plans.js.map +1 -1
  268. package/dist/sdui/from/teachers.js.map +1 -1
  269. package/dist/sdui/to/classes.js.map +1 -1
  270. package/dist/sdui/to/courses.js.map +1 -1
  271. package/dist/sdui/to/holidays.js.map +1 -1
  272. package/dist/sdui/to/hours.js.map +1 -1
  273. package/dist/sdui/to/index.d.ts +2 -0
  274. package/dist/sdui/to/lessons.js.map +1 -1
  275. package/dist/sdui/to/rooms.js.map +1 -1
  276. package/dist/sdui/to/schedules.js.map +1 -1
  277. package/dist/sdui/to/school-years.js.map +1 -1
  278. package/dist/sdui/to/substitution-plans.js +3 -6
  279. package/dist/sdui/to/substitution-plans.js.map +1 -1
  280. package/dist/sdui/to/teachers.js.map +1 -1
  281. package/dist/vKlass/from/index.js.map +1 -1
  282. package/dist/vKlass/from/schedule.d.ts +1 -0
  283. package/dist/vKlass/from/schedule.js.map +1 -1
  284. package/dist/vKlass/to/schedules.js +6 -17
  285. package/dist/vKlass/to/schedules.js.map +1 -1
  286. package/package.json +1 -1
@@ -23,6 +23,7 @@ import { Resource } from "./types/resources.js";
23
23
  import { CalendarEvent } from "./types/calendar-events.js";
24
24
  import { export_default } from "./to/index.js";
25
25
  import { Types as Types$1 } from "./types/index.js";
26
+ import "../index.js";
26
27
  import * as moment1 from "moment";
27
28
  import * as mongoose0 from "mongoose";
28
29
  import * as bson0 from "bson";
@@ -110,6 +111,7 @@ declare class SS12000Map {
110
111
  dayEnd: string;
111
112
  discretization: number;
112
113
  potentialCenter: string;
114
+ minimizeTeacherGaps?: boolean | undefined;
113
115
  defaultEventMinimumBreakLength?: number | undefined;
114
116
  defaultGroupMinimumBreakLength?: number | undefined;
115
117
  defaultDependencyMinimumBreakLength?: number | undefined;
@@ -185,6 +187,7 @@ declare class SS12000Map {
185
187
  lastModifiedBy?: string | undefined;
186
188
  ranges: Interval<string | moment1.Moment | Date>[];
187
189
  displayIndex?: number | undefined;
190
+ inline?: boolean | undefined;
188
191
  belongsTo?: string | {
189
192
  readonly _bsontype: "ObjectId";
190
193
  id: Uint8Array;
@@ -1475,6 +1478,7 @@ declare class SS12000Map {
1475
1478
  lastModifiedBy?: string | undefined;
1476
1479
  ranges: Interval<string | moment1.Moment | Date>[];
1477
1480
  displayIndex?: number | undefined;
1481
+ inline?: boolean | undefined;
1478
1482
  belongsTo?: any;
1479
1483
  } | undefined;
1480
1484
  overlapSpecies?: string | {
@@ -1860,14 +1864,15 @@ declare class SS12000Map {
1860
1864
  toModel: "events" | "courseevents";
1861
1865
  } | undefined;
1862
1866
  messages: {
1863
- _id: string;
1867
+ id: string;
1864
1868
  content: string;
1865
1869
  edited?: boolean | undefined;
1866
- createdAt: string | Date;
1867
- updatedAt: string | Date;
1870
+ createdAt?: (string | Date) | undefined;
1871
+ updatedAt?: (string | Date) | undefined;
1868
1872
  user: any;
1869
1873
  taggedPersons?: any[] | undefined;
1870
1874
  }[];
1875
+ taggedPersons?: any[] | undefined;
1871
1876
  })[] | undefined;
1872
1877
  })[] | undefined;
1873
1878
  participants?: {
@@ -3162,6 +3167,7 @@ declare class SS12000Map {
3162
3167
  dayEnd: string;
3163
3168
  discretization: number;
3164
3169
  potentialCenter: string;
3170
+ minimizeTeacherGaps?: boolean | undefined;
3165
3171
  defaultEventMinimumBreakLength?: number | undefined;
3166
3172
  defaultGroupMinimumBreakLength?: number | undefined;
3167
3173
  defaultDependencyMinimumBreakLength?: number | undefined;
@@ -3301,6 +3307,7 @@ declare class SS12000Map {
3301
3307
  lastModifiedBy?: string | undefined;
3302
3308
  ranges: Interval<string | moment1.Moment | Date>[];
3303
3309
  displayIndex?: number | undefined;
3310
+ inline?: boolean | undefined;
3304
3311
  belongsTo?: any;
3305
3312
  } | undefined;
3306
3313
  overlapGroup?: string | {
@@ -3739,6 +3746,7 @@ declare class SS12000Map {
3739
3746
  lastModifiedBy?: string | undefined;
3740
3747
  ranges: Interval<string | moment1.Moment | Date>[];
3741
3748
  displayIndex?: number | undefined;
3749
+ inline?: boolean | undefined;
3742
3750
  belongsTo?: string | {
3743
3751
  readonly _bsontype: "ObjectId";
3744
3752
  id: Uint8Array;
@@ -6358,11 +6366,11 @@ declare class SS12000Map {
6358
6366
  toModel: "events" | "courseevents";
6359
6367
  } | undefined;
6360
6368
  messages: {
6361
- _id: string;
6369
+ id: string;
6362
6370
  content: string;
6363
6371
  edited?: boolean | undefined;
6364
- createdAt: string | Date;
6365
- updatedAt: string | Date;
6372
+ createdAt?: (string | Date) | undefined;
6373
+ updatedAt?: (string | Date) | undefined;
6366
6374
  user: IDTypes | {
6367
6375
  id?: string | undefined;
6368
6376
  _id?: mongoose0.Types.ObjectId | undefined;
@@ -6388,6 +6396,28 @@ declare class SS12000Map {
6388
6396
  username: string;
6389
6397
  })[] | undefined;
6390
6398
  }[];
6399
+ taggedPersons?: (string | {
6400
+ readonly _bsontype: "ObjectId";
6401
+ id: Uint8Array;
6402
+ toHexString: () => string;
6403
+ toString: (encoding?: "hex" | "base64") => string;
6404
+ toJSON: () => string;
6405
+ equals: (otherId: string | bson0.ObjectId | bson0.ObjectIdLike | undefined | null) => boolean;
6406
+ getTimestamp: () => Date;
6407
+ inspect: (depth?: number, options?: unknown, inspect?: (x: unknown, options?: unknown) => string) => string;
6408
+ _id: mongoose0.Types.ObjectId;
6409
+ } | {
6410
+ id?: string | undefined;
6411
+ _id?: mongoose0.Types.ObjectId | undefined;
6412
+ ids?: string | undefined;
6413
+ is?: undefined;
6414
+ displayName?: string | undefined;
6415
+ createdAt?: string | undefined;
6416
+ updatedAt?: string | undefined;
6417
+ lastModifiedBy?: string | undefined;
6418
+ color?: string | undefined;
6419
+ username: string;
6420
+ })[] | undefined;
6391
6421
  })[] | undefined;
6392
6422
  }[];
6393
6423
  duties: (duties: Duty[]) => {
@@ -6463,6 +6493,7 @@ declare class SS12000Map {
6463
6493
  dayEnd: string;
6464
6494
  discretization: number;
6465
6495
  potentialCenter: string;
6496
+ minimizeTeacherGaps?: boolean | undefined;
6466
6497
  defaultEventMinimumBreakLength?: number | undefined;
6467
6498
  defaultGroupMinimumBreakLength?: number | undefined;
6468
6499
  defaultDependencyMinimumBreakLength?: number | undefined;
@@ -8155,6 +8186,7 @@ declare class SS12000Map {
8155
8186
  dayEnd: string;
8156
8187
  discretization: number;
8157
8188
  potentialCenter: string;
8189
+ minimizeTeacherGaps?: boolean | undefined;
8158
8190
  defaultEventMinimumBreakLength?: number | undefined;
8159
8191
  defaultGroupMinimumBreakLength?: number | undefined;
8160
8192
  defaultDependencyMinimumBreakLength?: number | undefined;
@@ -10888,6 +10920,7 @@ declare class SS12000Map {
10888
10920
  dayEnd: string;
10889
10921
  discretization: number;
10890
10922
  potentialCenter: string;
10923
+ minimizeTeacherGaps?: boolean | undefined;
10891
10924
  defaultEventMinimumBreakLength?: number | undefined;
10892
10925
  defaultGroupMinimumBreakLength?: number | undefined;
10893
10926
  defaultDependencyMinimumBreakLength?: number | undefined;
@@ -11443,6 +11476,7 @@ declare class SS12000Map {
11443
11476
  dayEnd: string;
11444
11477
  discretization: number;
11445
11478
  potentialCenter: string;
11479
+ minimizeTeacherGaps?: boolean | undefined;
11446
11480
  defaultEventMinimumBreakLength?: number | undefined;
11447
11481
  defaultGroupMinimumBreakLength?: number | undefined;
11448
11482
  defaultDependencyMinimumBreakLength?: number | undefined;
@@ -12711,6 +12745,7 @@ declare class SS12000Map {
12711
12745
  dayEnd: string;
12712
12746
  discretization: number;
12713
12747
  potentialCenter: string;
12748
+ minimizeTeacherGaps?: boolean | undefined;
12714
12749
  defaultEventMinimumBreakLength?: number | undefined;
12715
12750
  defaultGroupMinimumBreakLength?: number | undefined;
12716
12751
  defaultDependencyMinimumBreakLength?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"activities.js","names":["toGroup","toTeacher"],"sources":["../../../src/SS12000/to/activities.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, map } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Activity } from '../types/activities';\nimport type { ActivityType } from '../types/codes';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'syllabus' | 'groups')[];\n\nfunction mapActivityType (type: CoreTypes.Deep.Course['type']): ActivityType {\n switch (type) {\n case 'LUNCH':\n return 'Övrigt';\n default:\n return 'Undervisning';\n }\n}\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n activities: (Extract<CoreTypes.Mixed.Course, { id: string }> | Extract<CoreTypes.Mixed.Event, { id: string }>)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Activity[] => {\n if (!Array.isArray(activities))\n throw new Error('(SS12000::To::Activities) Activities input is not of array type', { cause: 'invalid_input' });\n\n if (!activities.every((activity) => isString(activity) || isString(get(activity, 'id'))))\n throw new Error('(SS12000::To::Activities) Some Activities are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !activities.every((activity) => (isString(activity) && belongsTo) || has(activity, 'belongsTo')))\n throw new Error('(SS12000::To::Activities) Some top layer Activities are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return activities.map((activity): Activity => {\n const division = belongsTo ?? (!isString(activity) ? activity.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Activities) Some events members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Activities) Some events members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(activity, belongsTo) }.${ isString(activity) ? activity : activity.id }`,\n calendarEventsRequired: 'course' in activity, // true for events, false for courses\n activityType: mapActivityType(activity.type),\n startDate: moment(division.start).toISOString(),\n ...typeof activity != 'string' && {\n meta: {\n created: moment(activity.createdAt).toISOString(),\n modified: moment(activity.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: activity.ids,\n displayName: activity.displayName,\n comment: get(activity, 'comment'),\n subject: get(activity, 'subject'),\n }, isNil),\n // @ts-ignore\n ...activity.groups && { groups: toReference(map(activity.groups, 'to'), division, expand?.includes('referenceNames')) },\n // @ts-ignore\n ...activity.teachers && { teachers: activity.teachers.map(({ to }) => ({ duty: toReference([to], belongsTo ?? activity.belongsTo, expand?.includes('referenceNames'))[0] as Duty })) },\n ...'course' in activity && typeof activity.course == 'object' && 'id' in activity.course && activity.course.id && {\n // @ts-ignore\n parentActivity: toReference([activity.course as CoreTypes.Mixed.Course], division, expand?.includes('referenceNames'))[0]\n },\n ...activity.locations && { rooms: activity.locations.map(({ locations, groupIndex }) => ({\n // @ts-ignore\n room: toReference(locations as any, division, expand?.includes('referenceNames'))[0],\n index: groupIndex\n }))\n },\n // syllabus: {\n // id: activity.id!,\n // ...expandReferenceNames && { displayName: activity.displayName }\n // },\n ...expand?.some(x => ['groups', 'teachers', 'syllabus'].includes(x)) && {\n _embedded: {\n ...expand.includes('groups') && {\n // @ts-ignore\n ...activity.groups && { groups: toGroup(map(activity.groups, 'to'), division) }\n },\n ...expand.includes('teachers') && {\n // @ts-ignore\n ...activity.teachers && { teachers: toTeacher(map(activity.teachers, 'to'), division) }\n },\n // ...expand.includes('syllabus') && {\n // syllabus: {\n // id: activity.id!,\n // displayName: activity.displayName,\n // }\n // },\n }\n }\n }\n }\n });\n};"],"mappings":";;;;;;;AAYA,SAAS,gBAAiB,MAAmD;AAC3E,SAAQ,MAAR;EACE,KAAK,QACH,QAAO;EACT,QACE,QAAO;;;;;;AAOb,0BACE,YACA,WACA,WACe;AACf,KAAI,CAAC,MAAM,QAAQ,YACjB,OAAM,IAAI,MAAM,mEAAmE,EAAE,OAAO;AAE9F,KAAI,CAAC,WAAW,OAAO,aAAa,SAAS,aAAa,SAAS,IAAI,UAAU,QAC/E,OAAM,IAAI,MAAM,uEAAqE,EAAE,OAAO;AAEhG,KAAI,CAAC,aAAa,CAAC,WAAW,OAAO,aAAc,SAAS,aAAa,aAAc,IAAI,UAAU,cACnG,OAAM,IAAI,MAAM,wFAAsF,EAAE,OAAO;AAEjH,QAAO,WAAW,KAAK,aAAuB;EAC5C,MAAM,WAAW,cAAc,CAAC,SAAS,YAAY,SAAS,YAAY;AAC1E,MAAI,CAAC,YAAY,SAAS,aAAa,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,kFAAgF,EAAE,OAAO;AAC3G,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,+FAA6F,EAAE,OAAO;AAExH,SAAO;GACL,IAAwB,GAAI,cAAc,UAAU,WAAY,GAAI,SAAS,YAAY,WAAW,SAAS;GAC7G,wBAAwB,YAAY;GACpC,cAAwB,gBAAgB,SAAS;GACjD,WAAwB,OAAO,SAAS,OAAO;GAC/C,GAAG,OAAO,YAAY,YAAY;IAChC,MAAM;KACJ,SAAU,OAAO,SAAS,WAAW;KACrC,UAAU,OAAO,SAAS,WAAW;;IAEvC,GAAG,OAAO;KACR,WAAa,SAAS;KACtB,aAAa,SAAS;KACtB,SAAa,IAAI,UAAU;KAC3B,SAAa,IAAI,UAAU;OAC1B;IAEH,GAAG,SAAS,UAAe,EAAE,QAAe,YAAY,IAAI,SAAS,QAAQ,OAAO,UAAU,QAAQ,SAAS;IAE/G,GAAG,SAAS,YAAe,EAAE,UAAU,SAAS,SAAS,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC,KAAK,aAAa,SAAS,WAAW,QAAQ,SAAS,mBAAmB;IACzK,GAAG,YAAY,YAAY,OAAO,SAAS,UAAU,YAAY,QAAQ,SAAS,UAAU,SAAS,OAAO,MAAM,EAEhH,gBAAgB,YAAY,CAAC,SAAS,SAAmC,UAAU,QAAQ,SAAS,mBAAmB;IAEzH,GAAG,SAAS,aAAc,EAAE,OAAO,SAAS,UAAU,KAAK,EAAE,WAAW,kBAAkB;KAExF,MAAO,YAAY,WAAkB,UAAU,QAAQ,SAAS,mBAAmB;KACnF,OAAO;;IAOT,GAAG,QAAQ,MAAK,MAAK;KAAC;KAAU;KAAY;MAAY,SAAS,OAAO,EACtE,WAAW;KACT,GAAG,OAAO,SAAS,aAAa,EAE9B,GAAG,SAAS,UAAU,EAAE,QAAQA,eAAQ,IAAI,SAAS,QAAQ,OAAO;KAEtE,GAAG,OAAO,SAAS,eAAe,EAEhC,GAAG,SAAS,YAAY,EAAE,UAAUC,eAAU,IAAI,SAAS,UAAU,OAAO"}
1
+ {"version":3,"file":"activities.js","names":["toGroup","toTeacher"],"sources":["../../../src/SS12000/to/activities.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, map } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Activity } from '../types/activities';\nimport type { ActivityType } from '../types/codes';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'syllabus' | 'groups')[];\n\nfunction mapActivityType (type: CoreTypes.Deep.Course['type']): ActivityType {\n switch (type) {\n case 'LUNCH':\n return 'Övrigt';\n default:\n return 'Undervisning';\n }\n}\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n activities: (Extract<CoreTypes.Mixed.Course, { id: string }> | Extract<CoreTypes.Mixed.Event, { id: string }>)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Activity[] => {\n if (!Array.isArray(activities))\n throw new Error('(SS12000::To::Activities) Activities input is not of array type', { cause: 'invalid_input' });\n\n if (!activities.every((activity) => isString(activity) || isString(get(activity, 'id'))))\n throw new Error('(SS12000::To::Activities) Some Activities are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !activities.every((activity) => (isString(activity) && belongsTo) || has(activity, 'belongsTo')))\n throw new Error('(SS12000::To::Activities) Some top layer Activities are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return activities.map((activity): Activity => {\n const division = belongsTo ?? (!isString(activity) ? activity.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Activities) Some events members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Activities) Some events members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(activity, belongsTo) }.${ isString(activity) ? activity : activity.id }`,\n calendarEventsRequired: 'course' in activity, // true for events, false for courses\n activityType: mapActivityType(activity.type),\n startDate: moment(division.start).toISOString(),\n ...typeof activity != 'string' && {\n meta: {\n created: moment(activity.createdAt).toISOString(),\n modified: moment(activity.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: activity.ids,\n displayName: activity.displayName,\n comment: get(activity, 'comment'),\n subject: get(activity, 'subject'),\n }, isNil),\n // @ts-ignore\n ...activity.groups && { groups: toReference(map(activity.groups, 'to'), division, expand?.includes('referenceNames')) },\n // @ts-ignore\n ...activity.teachers && { teachers: activity.teachers.map(({ to }) => ({ duty: toReference([to], belongsTo ?? activity.belongsTo, expand?.includes('referenceNames'))[0] as Duty })) },\n ...'course' in activity && typeof activity.course == 'object' && 'id' in activity.course && activity.course.id && {\n // @ts-ignore\n parentActivity: toReference([activity.course as CoreTypes.Mixed.Course], division, expand?.includes('referenceNames'))[0]\n },\n ...activity.locations && { rooms: activity.locations.map(({ locations, groupIndex }) => ({\n // @ts-ignore\n room: toReference(locations as any, division, expand?.includes('referenceNames'))[0],\n index: groupIndex\n }))\n },\n // syllabus: {\n // id: activity.id!,\n // ...expandReferenceNames && { displayName: activity.displayName }\n // },\n ...expand?.some(x => ['groups', 'teachers', 'syllabus'].includes(x)) && {\n _embedded: {\n ...expand.includes('groups') && {\n // @ts-ignore\n ...activity.groups && { groups: toGroup(map(activity.groups, 'to'), division) }\n },\n ...expand.includes('teachers') && {\n // @ts-ignore\n ...activity.teachers && { teachers: toTeacher(map(activity.teachers, 'to'), division) }\n },\n // ...expand.includes('syllabus') && {\n // syllabus: {\n // id: activity.id!,\n // displayName: activity.displayName,\n // }\n // },\n }\n }\n }\n }\n });\n};"],"mappings":";;;;;;;AAYA,SAAS,gBAAiB,MAAmD;AAC3E,SAAQ,MAAR;EACE,KAAK,QACH,QAAO;EACT,QACE,QAAO;;;;;;AAOb,0BACE,YACA,WACA,WACe;AACf,KAAI,CAAC,MAAM,QAAQ,WAAW,CAC5B,OAAM,IAAI,MAAM,mEAAmE,EAAE,OAAO,iBAAiB,CAAC;AAEhH,KAAI,CAAC,WAAW,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACtF,OAAM,IAAI,MAAM,uEAAqE,EAAE,OAAO,iBAAiB,CAAC;AAElH,KAAI,CAAC,aAAa,CAAC,WAAW,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAChH,OAAM,IAAI,MAAM,wFAAsF,EAAE,OAAO,iBAAiB,CAAC;AAEnI,QAAO,WAAW,KAAK,aAAuB;EAC5C,MAAM,WAAW,cAAc,CAAC,SAAS,SAAS,GAAG,SAAS,YAAY;AAC1E,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,kFAAgF,EAAE,OAAO,iBAAiB,CAAC;AAC7H,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,+FAA6F,EAAE,OAAO,iBAAiB,CAAC;AAE1I,SAAO;GACL,IAAwB,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;GAC7G,wBAAwB,YAAY;GACpC,cAAwB,gBAAgB,SAAS,KAAK;GACtD,WAAwB,OAAO,SAAS,MAAM,CAAC,aAAa;GAC5D,GAAG,OAAO,YAAY,YAAY;IAChC,MAAM;KACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;KAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;KACnD;IACD,GAAG,OAAO;KACR,WAAa,SAAS;KACtB,aAAa,SAAS;KACtB,SAAa,IAAI,UAAU,UAAU;KACrC,SAAa,IAAI,UAAU,UAAU;KACtC,EAAE,MAAM;IAET,GAAG,SAAS,UAAe,EAAE,QAAe,YAAY,IAAI,SAAS,QAAQ,KAAK,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC,EAAE;IAEnI,GAAG,SAAS,YAAe,EAAE,UAAU,SAAS,SAAS,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,aAAa,SAAS,WAAW,QAAQ,SAAS,iBAAiB,CAAC,CAAC,IAAY,EAAE,EAAE;IACzL,GAAG,YAAY,YAAY,OAAO,SAAS,UAAU,YAAY,QAAQ,SAAS,UAAU,SAAS,OAAO,MAAM,EAEhH,gBAAgB,YAAY,CAAC,SAAS,OAAiC,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC,CAAC,IACxH;IACD,GAAG,SAAS,aAAc,EAAE,OAAO,SAAS,UAAU,KAAK,EAAE,WAAW,kBAAkB;KAExF,MAAO,YAAY,WAAkB,UAAU,QAAQ,SAAS,iBAAiB,CAAC,CAAC;KACnF,OAAO;KACR,EAAE,EACF;IAKD,GAAG,QAAQ,MAAK,MAAK;KAAC;KAAU;KAAY;KAAW,CAAC,SAAS,EAAE,CAAC,IAAI,EACtE,WAAW;KACT,GAAG,OAAO,SAAS,SAAS,IAAI,EAE9B,GAAG,SAAS,UAAU,EAAE,QAAQA,eAAQ,IAAI,SAAS,QAAQ,KAAK,EAAE,SAAS,EAAE,EAChF;KACD,GAAG,OAAO,SAAS,WAAW,IAAI,EAEhC,GAAG,SAAS,YAAY,EAAE,UAAUC,eAAU,IAAI,SAAS,UAAU,KAAK,EAAE,SAAS,EAAE,EACxF;KAOF,EACF;IACF;GACF;GACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-events.js","names":["toGroup","toTeacher","toActivities"],"sources":["../../../src/SS12000/to/calendar-events.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, isNull, map, reject } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { CalendarEvent } from '../types/calendar-events';\nimport { getDivisionId, toReference } from './common';\nimport toActivities from './activities';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'activity' | 'groups')[];\n\nexport default (\n events: Extract<CoreTypes.Mixed.Event, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Partial<CalendarEvent>[] => {\n if (!Array.isArray(events))\n throw new Error('(SS12000::To::CalendarEvents) CalendarEvent input is not of array type', { cause: 'invalid_input' });\n\n if (!events.every((event) => isString(event) || isString(get(event, 'id'))))\n throw new Error('(SS12000::To::CalendarEvents) Some CalendarEvents are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !events.every((event) => (isString(event) && belongsTo) || has(event, 'belongsTo')))\n throw new Error('(SS12000::To::CalendarEvents) Some top layer CalendarEvents are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return events.map((event) => {\n const division = belongsTo ?? (!isString(event) ? event.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::CalendarEvents) Some events members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::CalendarEvents) Some events members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n const course = (!isString(event) && event.course && !isString(event.course)) ?\n event.course as Extract<CoreTypes.Mixed.Course, { id: string }>\n : undefined;\n\n return {\n id: `${ getDivisionId(event, belongsTo) }.${ isString(event) ? event : event.id }`,\n ...!isString(event) && {\n meta: {\n created: moment(event.createdAt).toISOString(),\n modified: moment(event.updatedAt).toISOString(),\n ...event.type && { type: event.type },\n },\n ...omitBy({\n foreignId: event.ids,\n color: event.color ?? course?.color,\n }, isNil),\n startTime: event.start?.toString(),\n endTime: event.end?.toString(),\n // Locked times have no course, so we need to check for it\n // @ts-ignore\n ...course && { activity: toReference([course], division, expand?.includes('referenceNames'))[0] },\n // @ts-ignore\n rooms: toReference(reject(event.inLocations, isNull) ?? [], division, expand?.includes('referenceNames')),\n // @ts-ignore\n resources: toReference([], division, expand?.includes('referenceNames')),\n // @ts-ignore\n teachers: toReference(map(event.teachers ?? course?.teachers ?? [], 'to'), division, expand?.includes('referenceNames')),\n // @ts-ignore\n groups: toReference(map(event.groups ?? course?.groups ?? [], 'to'), division, expand?.includes('referenceNames')),\n ...expand?.some(x => ['groups', 'teachers', 'activity'].includes(x)) && {\n _embedded: {\n ...expand.includes('groups') && {\n // @ts-ignore\n groups: toGroup(map(event.groups, 'to'), division)\n },\n ...expand.includes('teachers') && {\n // @ts-ignore\n teachers: toTeacher(map(event.teachers, 'to'), division)\n },\n ...(expand.includes('activity') && course)&& {\n activity: toActivities([course], division as Extract<CoreTypes.Deep.Division, { id: string }>)[0]\n }\n }\n }\n }\n }\n });\n};\n"],"mappings":";;;;;;;;AAWA,+BACE,QACA,WACA,WAC6B;AAC7B,KAAI,CAAC,MAAM,QAAQ,QACjB,OAAM,IAAI,MAAM,0EAA0E,EAAE,OAAO;AAErG,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,UAAU,SAAS,IAAI,OAAO,QAClE,OAAM,IAAI,MAAM,+EAA6E,EAAE,OAAO;AAExG,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,UAAU,aAAc,IAAI,OAAO,cACtF,OAAM,IAAI,MAAM,gGAA8F,EAAE,OAAO;AAEzH,QAAO,OAAO,KAAK,UAAU;EAC3B,MAAM,WAAW,cAAc,CAAC,SAAS,SAAS,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,aAAa,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO;AAC/G,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,mGAAiG,EAAE,OAAO;EAE5H,MAAM,SAAU,CAAC,SAAS,UAAU,MAAM,UAAU,CAAC,SAAS,MAAM,UAClE,MAAM,SACJ;AAEJ,SAAO;GACL,IAAI,GAAI,cAAc,OAAO,WAAY,GAAI,SAAS,SAAS,QAAQ,MAAM;GAC7E,GAAG,CAAC,SAAS,UAAU;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,WAAW;KAClC,UAAU,OAAO,MAAM,WAAW;KAClC,GAAG,MAAM,QAAiB,EAAE,MAAM,MAAM;;IAE1C,GAAG,OAAO;KACR,WAAW,MAAM;KACjB,OAAW,MAAM,SAAS,QAAQ;OACjC;IACH,WAAW,MAAM,OAAO;IACxB,SAAW,MAAM,KAAK;IAGtB,GAAG,UAAU,EAAE,UAAU,YAAY,CAAC,SAAS,UAAU,QAAQ,SAAS,mBAAmB;IAE7F,OAAW,YAAY,OAAO,MAAM,aAAa,WAAW,IAAI,UAAU,QAAQ,SAAS;IAE3F,WAAW,YAAY,IAAI,UAAU,QAAQ,SAAS;IAEtD,UAAW,YAAY,IAAI,MAAM,YAAY,QAAQ,YAAY,IAAI,OAAO,UAAU,QAAQ,SAAS;IAEvG,QAAW,YAAY,IAAI,MAAM,UAAU,QAAQ,UAAU,IAAI,OAAO,UAAU,QAAQ,SAAS;IACnG,GAAG,QAAQ,MAAK,MAAK;KAAC;KAAU;KAAY;MAAY,SAAS,OAAO,EACtE,WAAW;KACT,GAAG,OAAO,SAAS,aAAa,EAE9B,QAAQA,eAAQ,IAAI,MAAM,QAAQ,OAAO;KAE3C,GAAG,OAAO,SAAS,eAAe,EAEhC,UAAUC,eAAU,IAAI,MAAM,UAAU,OAAO;KAEjD,GAAI,OAAO,SAAS,eAAe,UAAU,EAC3C,UAAUC,mBAAa,CAAC,SAAS,UAA8D"}
1
+ {"version":3,"file":"calendar-events.js","names":["toGroup","toTeacher","toActivities"],"sources":["../../../src/SS12000/to/calendar-events.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, isNull, map, reject } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { CalendarEvent } from '../types/calendar-events';\nimport { getDivisionId, toReference } from './common';\nimport toActivities from './activities';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'activity' | 'groups')[];\n\nexport default (\n events: Extract<CoreTypes.Mixed.Event, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Partial<CalendarEvent>[] => {\n if (!Array.isArray(events))\n throw new Error('(SS12000::To::CalendarEvents) CalendarEvent input is not of array type', { cause: 'invalid_input' });\n\n if (!events.every((event) => isString(event) || isString(get(event, 'id'))))\n throw new Error('(SS12000::To::CalendarEvents) Some CalendarEvents are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !events.every((event) => (isString(event) && belongsTo) || has(event, 'belongsTo')))\n throw new Error('(SS12000::To::CalendarEvents) Some top layer CalendarEvents are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return events.map((event) => {\n const division = belongsTo ?? (!isString(event) ? event.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::CalendarEvents) Some events members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::CalendarEvents) Some events members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n const course = (!isString(event) && event.course && !isString(event.course)) ?\n event.course as Extract<CoreTypes.Mixed.Course, { id: string }>\n : undefined;\n\n return {\n id: `${ getDivisionId(event, belongsTo) }.${ isString(event) ? event : event.id }`,\n ...!isString(event) && {\n meta: {\n created: moment(event.createdAt).toISOString(),\n modified: moment(event.updatedAt).toISOString(),\n ...event.type && { type: event.type },\n },\n ...omitBy({\n foreignId: event.ids,\n color: event.color ?? course?.color,\n }, isNil),\n startTime: event.start?.toString(),\n endTime: event.end?.toString(),\n // Locked times have no course, so we need to check for it\n // @ts-ignore\n ...course && { activity: toReference([course], division, expand?.includes('referenceNames'))[0] },\n // @ts-ignore\n rooms: toReference(reject(event.inLocations, isNull) ?? [], division, expand?.includes('referenceNames')),\n // @ts-ignore\n resources: toReference([], division, expand?.includes('referenceNames')),\n // @ts-ignore\n teachers: toReference(map(event.teachers ?? course?.teachers ?? [], 'to'), division, expand?.includes('referenceNames')),\n // @ts-ignore\n groups: toReference(map(event.groups ?? course?.groups ?? [], 'to'), division, expand?.includes('referenceNames')),\n ...expand?.some(x => ['groups', 'teachers', 'activity'].includes(x)) && {\n _embedded: {\n ...expand.includes('groups') && {\n // @ts-ignore\n groups: toGroup(map(event.groups, 'to'), division)\n },\n ...expand.includes('teachers') && {\n // @ts-ignore\n teachers: toTeacher(map(event.teachers, 'to'), division)\n },\n ...(expand.includes('activity') && course)&& {\n activity: toActivities([course], division as Extract<CoreTypes.Deep.Division, { id: string }>)[0]\n }\n }\n }\n }\n }\n });\n};\n"],"mappings":";;;;;;;;AAWA,+BACE,QACA,WACA,WAC6B;AAC7B,KAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0EAA0E,EAAE,OAAO,iBAAiB,CAAC;AAEvH,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,MAAM,IAAI,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CACzE,OAAM,IAAI,MAAM,+EAA6E,EAAE,OAAO,iBAAiB,CAAC;AAE1H,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,MAAM,IAAI,aAAc,IAAI,OAAO,YAAY,CAAC,CACnG,OAAM,IAAI,MAAM,gGAA8F,EAAE,OAAO,iBAAiB,CAAC;AAE3I,QAAO,OAAO,KAAK,UAAU;EAC3B,MAAM,WAAW,cAAc,CAAC,SAAS,MAAM,GAAG,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO,iBAAiB,CAAC;AACjI,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,mGAAiG,EAAE,OAAO,iBAAiB,CAAC;EAE9I,MAAM,SAAU,CAAC,SAAS,MAAM,IAAI,MAAM,UAAU,CAAC,SAAS,MAAM,OAAO,GACzE,MAAM,SACJ;AAEJ,SAAO;GACL,IAAI,GAAI,cAAc,OAAO,UAAU,CAAE,GAAI,SAAS,MAAM,GAAG,QAAQ,MAAM;GAC7E,GAAG,CAAC,SAAS,MAAM,IAAI;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,UAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,GAAG,MAAM,QAAiB,EAAE,MAAM,MAAM,MAAM;KAC/C;IACD,GAAG,OAAO;KACR,WAAW,MAAM;KACjB,OAAW,MAAM,SAAS,QAAQ;KACnC,EAAE,MAAM;IACT,WAAW,MAAM,OAAO,UAAU;IAClC,SAAW,MAAM,KAAK,UAAU;IAGhC,GAAG,UAAU,EAAE,UAAU,YAAY,CAAC,OAAO,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC,CAAC,IAAI;IAEjG,OAAW,YAAY,OAAO,MAAM,aAAa,OAAO,IAAI,EAAE,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IAE7G,WAAW,YAAY,EAAE,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IAExE,UAAW,YAAY,IAAI,MAAM,YAAY,QAAQ,YAAY,EAAE,EAAE,KAAK,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IAEzH,QAAW,YAAY,IAAI,MAAM,UAAU,QAAQ,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IACrH,GAAG,QAAQ,MAAK,MAAK;KAAC;KAAU;KAAY;KAAW,CAAC,SAAS,EAAE,CAAC,IAAI,EACtE,WAAW;KACT,GAAG,OAAO,SAAS,SAAS,IAAI,EAE9B,QAAQA,eAAQ,IAAI,MAAM,QAAQ,KAAK,EAAE,SAAS,EACnD;KACD,GAAG,OAAO,SAAS,WAAW,IAAI,EAEhC,UAAUC,eAAU,IAAI,MAAM,UAAU,KAAK,EAAE,SAAS,EACzD;KACD,GAAI,OAAO,SAAS,WAAW,IAAI,UAAU,EAC3C,UAAUC,mBAAa,CAAC,OAAO,EAAE,SAA6D,CAAC,IAChG;KACF,EACF;IACF;GACF;GACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":[],"sources":["../../../src/SS12000/to/common.ts"],"sourcesContent":["import { isString, omitBy, isNil, isObject } from 'lodash-es';\nimport type { CoreTypes } from '../../core';\n\nexport function toReference<T extends Partial<{\n id: string,\n belongsTo?: CoreTypes.Deep.Division | string,\n ids: string,\n displayName: string\n}>> (\n input: T[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expandReferenceNames?: boolean\n) {\n return input.map((x) => {\n // Bth belongsTo.id and entity.belongsto.id cant be missing\n if (!(belongsTo && 'id' in belongsTo && belongsTo.id) && !isString(x) && (!x.belongsTo || isString(x.belongsTo) || !('id' in x.belongsTo && x.belongsTo.id)))\n throw new Error('(SS12000::To::Reference) Some top layer entities are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(x, belongsTo) }.${ isString(x) ? x : x.id }`,\n ...!isString(x) && {\n ...omitBy({\n foreignId: x.ids,\n ...expandReferenceNames && { displayName: x.displayName }\n }, isNil),\n }\n };\n });\n}\n\nexport function getDivisionId(\n entity: unknown,\n division?: Extract<CoreTypes.Deep.Division, { id: string }>\n) {\n if (division) return division.id;\n\n if (isString(entity)) {\n throw new Error('(SS12000::To::getDivisionId) belongsTo is missing \"id\" value', { cause: 'invalid_input' });\n };\n if (!isObject(entity) || !('belongsTo' in entity) || !entity.belongsTo || !isObject(entity.belongsTo) || !('id' in entity.belongsTo) || !isString(entity.belongsTo.id))\n throw new Error('(SS12000::To::getDivisionId) entity is missing \"belongsTo.id\" value', { cause: 'invalid_input' });\n return entity.belongsTo.id;\n}"],"mappings":";;;AAGA,SAAgB,YAMd,OACA,WACA,sBACA;AACA,QAAO,MAAM,KAAK,MAAM;AAEtB,MAAI,EAAE,aAAa,QAAQ,aAAa,UAAU,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,aAAa,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KACtJ,OAAM,IAAI,MAAM,qFAAmF,EAAE,OAAO;AAE9G,SAAO;GACL,IAAI,GAAI,cAAc,GAAG,WAAY,GAAI,SAAS,KAAK,IAAI,EAAE;GAC7D,GAAG,CAAC,SAAS,MAAM,EACjB,GAAG,OAAO;IACR,WAAW,EAAE;IACb,GAAG,wBAAwB,EAAE,aAAa,EAAE;MAC3C;;;;AAMX,SAAgB,cACd,QACA,UACA;AACA,KAAI,SAAU,QAAO,SAAS;AAE9B,KAAI,SAAS,QACX,OAAM,IAAI,MAAM,kEAAgE,EAAE,OAAO;AAE3F,KAAI,CAAC,SAAS,WAAW,EAAE,eAAe,WAAW,CAAC,OAAO,aAAa,CAAC,SAAS,OAAO,cAAc,EAAE,QAAQ,OAAO,cAAc,CAAC,SAAS,OAAO,UAAU,IACjK,OAAM,IAAI,MAAM,yEAAuE,EAAE,OAAO;AAClG,QAAO,OAAO,UAAU"}
1
+ {"version":3,"file":"common.js","names":[],"sources":["../../../src/SS12000/to/common.ts"],"sourcesContent":["import { isString, omitBy, isNil, isObject } from 'lodash-es';\nimport type { CoreTypes } from '../../core';\n\nexport function toReference<T extends Partial<{\n id: string,\n belongsTo?: CoreTypes.Deep.Division | string,\n ids: string,\n displayName: string\n}>> (\n input: T[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expandReferenceNames?: boolean\n) {\n return input.map((x) => {\n // Bth belongsTo.id and entity.belongsto.id cant be missing\n if (!(belongsTo && 'id' in belongsTo && belongsTo.id) && !isString(x) && (!x.belongsTo || isString(x.belongsTo) || !('id' in x.belongsTo && x.belongsTo.id)))\n throw new Error('(SS12000::To::Reference) Some top layer entities are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(x, belongsTo) }.${ isString(x) ? x : x.id }`,\n ...!isString(x) && {\n ...omitBy({\n foreignId: x.ids,\n ...expandReferenceNames && { displayName: x.displayName }\n }, isNil),\n }\n };\n });\n}\n\nexport function getDivisionId(\n entity: unknown,\n division?: Extract<CoreTypes.Deep.Division, { id: string }>\n) {\n if (division) return division.id;\n\n if (isString(entity)) {\n throw new Error('(SS12000::To::getDivisionId) belongsTo is missing \"id\" value', { cause: 'invalid_input' });\n };\n if (!isObject(entity) || !('belongsTo' in entity) || !entity.belongsTo || !isObject(entity.belongsTo) || !('id' in entity.belongsTo) || !isString(entity.belongsTo.id))\n throw new Error('(SS12000::To::getDivisionId) entity is missing \"belongsTo.id\" value', { cause: 'invalid_input' });\n return entity.belongsTo.id;\n}"],"mappings":";;;AAGA,SAAgB,YAMd,OACA,WACA,sBACA;AACA,QAAO,MAAM,KAAK,MAAM;AAEtB,MAAI,EAAE,aAAa,QAAQ,aAAa,UAAU,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,aAAa,SAAS,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KACtJ,OAAM,IAAI,MAAM,qFAAmF,EAAE,OAAO,iBAAiB,CAAC;AAEhI,SAAO;GACL,IAAI,GAAI,cAAc,GAAG,UAAU,CAAE,GAAI,SAAS,EAAE,GAAG,IAAI,EAAE;GAC7D,GAAG,CAAC,SAAS,EAAE,IAAI,EACjB,GAAG,OAAO;IACR,WAAW,EAAE;IACb,GAAG,wBAAwB,EAAE,aAAa,EAAE,aAAa;IAC1D,EAAE,MAAM,EACV;GACF;GACD;;AAGJ,SAAgB,cACd,QACA,UACA;AACA,KAAI,SAAU,QAAO,SAAS;AAE9B,KAAI,SAAS,OAAO,CAClB,OAAM,IAAI,MAAM,kEAAgE,EAAE,OAAO,iBAAiB,CAAC;AAE7G,KAAI,CAAC,SAAS,OAAO,IAAI,EAAE,eAAe,WAAW,CAAC,OAAO,aAAa,CAAC,SAAS,OAAO,UAAU,IAAI,EAAE,QAAQ,OAAO,cAAc,CAAC,SAAS,OAAO,UAAU,GAAG,CACpK,OAAM,IAAI,MAAM,yEAAuE,EAAE,OAAO,iBAAiB,CAAC;AACpH,QAAO,OAAO,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"duties.js","names":["toPerson"],"sources":["../../../src/SS12000/to/duties.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'person')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n teachers: Extract<CoreTypes.Mixed.Teacher, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Duty[] => {\n if (!Array.isArray(teachers))\n throw new Error('(SS12000::To::Duty) Teacher input is not of array type', { cause: 'invalid_input' });\n\n if (!teachers.every((teacher) => isString(teacher) || isString(get(teacher, 'id'))))\n throw new Error('(SS12000::To::Duty) Some teachers are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !teachers.every((teacher) => (isString(teacher) && belongsTo) || has(teacher, 'belongsTo')))\n throw new Error('(SS12000::To::Duty) Some top layer teachers are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return teachers.map((teacher) => {\n const division = belongsTo ?? (!isString(teacher) ? teacher.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Duty) Some teachers members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Duty) Some teachers members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n const person = (!isString(teacher) && teacher.person && !isString(teacher.person)) ?\n teacher.person as Extract<CoreTypes.Mixed.Person, { id: string }>\n : undefined;\n\n return {\n id: `${ getDivisionId(teacher, belongsTo) }.${ isString(teacher) ? teacher : teacher.id }`,\n dutyRole: 'Lärare' as const,\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...typeof teacher != 'string' && {\n meta: {\n created: moment(teacher.createdAt).toISOString(),\n modified: moment(teacher.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: teacher.ids,\n displayName: teacher.displayName,\n }, isNil),\n ...person && {\n person: {\n // @ts-ignore\n ...toReference([person], belongsTo ?? teacher.belongsTo)[0],\n ...expand?.includes('referenceNames') && {\n displayName: `${ person.firstName ?? '' } ${ person.lastName ?? '' }`\n }\n }\n },\n ...expand?.some(x => ['person'].includes(x)) && {\n _embedded: {\n ...(expand.includes('person') && person) && {\n person: toPerson([person], division as Extract<CoreTypes.Deep.Division, { id: string }>)[0]\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,UACA,WACA,WACW;AACX,KAAI,CAAC,MAAM,QAAQ,UACjB,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO;AAErF,KAAI,CAAC,SAAS,OAAO,YAAY,SAAS,YAAY,SAAS,IAAI,SAAS,QAC1E,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO;AAExF,KAAI,CAAC,aAAa,CAAC,SAAS,OAAO,YAAa,SAAS,YAAY,aAAc,IAAI,SAAS,cAC9F,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO;AAEzG,QAAO,SAAS,KAAK,YAAY;EAC/B,MAAM,WAAW,cAAc,CAAC,SAAS,WAAW,QAAQ,YAAY;AACxE,MAAI,CAAC,YAAY,SAAS,aAAa,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,8EAA4E,EAAE,OAAO;AACvG,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,2FAAyF,EAAE,OAAO;EAEpH,MAAM,SAAU,CAAC,SAAS,YAAY,QAAQ,UAAU,CAAC,SAAS,QAAQ,UACxE,QAAQ,SACN;AAEJ,SAAO;GACL,IAAW,GAAI,cAAc,SAAS,WAAY,GAAI,SAAS,WAAW,UAAU,QAAQ;GAC5F,UAAW;GACX,WAAW,OAAO,SAAS,OAAO;GAClC,SAAW,OAAO,SAAS,KAAK;GAChC,GAAG,OAAO,WAAW,YAAY;IAC/B,MAAM;KACJ,SAAU,OAAO,QAAQ,WAAW;KACpC,UAAU,OAAO,QAAQ,WAAW;;IAEtC,GAAG,OAAO;KACR,WAAa,QAAQ;KACrB,aAAa,QAAQ;OACpB;IACH,GAAG,UAAU,EACX,QAAQ;KAEN,GAAG,YAAY,CAAC,SAAS,aAAa,QAAQ,WAAW;KACzD,GAAG,QAAQ,SAAS,qBAAqB,EACvC,aAAa,GAAI,OAAO,aAAa,GAAI,GAAI,OAAO,YAAY;;IAItE,GAAG,QAAQ,MAAK,MAAK,CAAC,UAAU,SAAS,OAAO,EAC9C,WAAW,EACT,GAAI,OAAO,SAAS,aAAa,UAAW,EAC1C,QAAQA,gBAAS,CAAC,SAAS,UAA8D"}
1
+ {"version":3,"file":"duties.js","names":["toPerson"],"sources":["../../../src/SS12000/to/duties.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'person')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n teachers: Extract<CoreTypes.Mixed.Teacher, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Duty[] => {\n if (!Array.isArray(teachers))\n throw new Error('(SS12000::To::Duty) Teacher input is not of array type', { cause: 'invalid_input' });\n\n if (!teachers.every((teacher) => isString(teacher) || isString(get(teacher, 'id'))))\n throw new Error('(SS12000::To::Duty) Some teachers are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !teachers.every((teacher) => (isString(teacher) && belongsTo) || has(teacher, 'belongsTo')))\n throw new Error('(SS12000::To::Duty) Some top layer teachers are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return teachers.map((teacher) => {\n const division = belongsTo ?? (!isString(teacher) ? teacher.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Duty) Some teachers members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Duty) Some teachers members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n const person = (!isString(teacher) && teacher.person && !isString(teacher.person)) ?\n teacher.person as Extract<CoreTypes.Mixed.Person, { id: string }>\n : undefined;\n\n return {\n id: `${ getDivisionId(teacher, belongsTo) }.${ isString(teacher) ? teacher : teacher.id }`,\n dutyRole: 'Lärare' as const,\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...typeof teacher != 'string' && {\n meta: {\n created: moment(teacher.createdAt).toISOString(),\n modified: moment(teacher.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: teacher.ids,\n displayName: teacher.displayName,\n }, isNil),\n ...person && {\n person: {\n // @ts-ignore\n ...toReference([person], belongsTo ?? teacher.belongsTo)[0],\n ...expand?.includes('referenceNames') && {\n displayName: `${ person.firstName ?? '' } ${ person.lastName ?? '' }`\n }\n }\n },\n ...expand?.some(x => ['person'].includes(x)) && {\n _embedded: {\n ...(expand.includes('person') && person) && {\n person: toPerson([person], division as Extract<CoreTypes.Deep.Division, { id: string }>)[0]\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,UACA,WACA,WACW;AACX,KAAI,CAAC,MAAM,QAAQ,SAAS,CAC1B,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,iBAAiB,CAAC;AAEvG,KAAI,CAAC,SAAS,OAAO,YAAY,SAAS,QAAQ,IAAI,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CACjF,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO,iBAAiB,CAAC;AAE1G,KAAI,CAAC,aAAa,CAAC,SAAS,OAAO,YAAa,SAAS,QAAQ,IAAI,aAAc,IAAI,SAAS,YAAY,CAAC,CAC3G,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO,iBAAiB,CAAC;AAE3H,QAAO,SAAS,KAAK,YAAY;EAC/B,MAAM,WAAW,cAAc,CAAC,SAAS,QAAQ,GAAG,QAAQ,YAAY;AACxE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,8EAA4E,EAAE,OAAO,iBAAiB,CAAC;AACzH,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,2FAAyF,EAAE,OAAO,iBAAiB,CAAC;EAEtI,MAAM,SAAU,CAAC,SAAS,QAAQ,IAAI,QAAQ,UAAU,CAAC,SAAS,QAAQ,OAAO,GAC/E,QAAQ,SACN;AAEJ,SAAO;GACL,IAAW,GAAI,cAAc,SAAS,UAAU,CAAE,GAAI,SAAS,QAAQ,GAAG,UAAU,QAAQ;GAC5F,UAAW;GACX,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;GAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;GAC7C,GAAG,OAAO,WAAW,YAAY;IAC/B,MAAM;KACJ,SAAU,OAAO,QAAQ,UAAU,CAAC,aAAa;KACjD,UAAU,OAAO,QAAQ,UAAU,CAAC,aAAa;KAClD;IACD,GAAG,OAAO;KACR,WAAa,QAAQ;KACrB,aAAa,QAAQ;KACtB,EAAE,MAAM;IACT,GAAG,UAAU,EACX,QAAQ;KAEN,GAAG,YAAY,CAAC,OAAO,EAAE,aAAa,QAAQ,UAAU,CAAC;KACzD,GAAG,QAAQ,SAAS,iBAAiB,IAAI,EACvC,aAAa,GAAI,OAAO,aAAa,GAAI,GAAI,OAAO,YAAY,MACjE;KACF,EACF;IACD,GAAG,QAAQ,MAAK,MAAK,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAC9C,WAAW,EACT,GAAI,OAAO,SAAS,SAAS,IAAI,UAAW,EAC1C,QAAQA,gBAAS,CAAC,OAAO,EAAE,SAA6D,CAAC,IAC1F,EACF,EACF;IACF;GACF;GACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"groups.js","names":["toPerson"],"sources":["../../../src/SS12000/to/groups.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Group } from '../types/groups';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'persons')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n groups: Extract<CoreTypes.Mixed.Group, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Group[] => {\n if (!Array.isArray(groups))\n throw new Error('(SS12000::To::Groups) Group input is not of array type', { cause: 'invalid_input' });\n\n if (!groups.every((group) => isString(group) || isString(get(group, 'id'))))\n throw new Error('(SS12000::To::Groups) Some groups are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !groups.every((group) => (isString(group) && belongsTo) || has(group, 'belongsTo')))\n throw new Error('(SS12000::To::Groups) Some top layer groups are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return groups.map((group) => {\n const members = !isString(group) && Array.isArray(group.members)\n ? (group.members).map((member) => {\n if (isString(member)) return { id: member } as Extract<CoreTypes.Mixed.Person, { id: string }>;\n return member as Extract<CoreTypes.Mixed.Person, { id: string }>;\n })\n : [];\n\n const division = belongsTo ?? (!isString(group) ? group.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(group, belongsTo) }.${ isString(group) ? group : group.id }`,\n groupType: group.species === 'class' ? 'Klass' : 'Undervisning',\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...!isString(group) && {\n meta: {\n created: moment(group.createdAt).toISOString(),\n modified: moment(group.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n ...omitBy({\n foreignId: group.ids,\n displayName: group.displayName,\n }, isNil),\n ...group.members && {\n // @ts-ignore\n groupMemberships: toReference(members, division).map(person => ({\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n person: person\n }))\n },\n ...expand?.some(x => ['persons'].includes(x)) && {\n _embedded: {\n ...expand.includes('persons') && {\n groups: toPerson(members, division as Extract<CoreTypes.Deep.Division, { id: string }>)\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,QACA,WACA,WACY;AACZ,KAAI,CAAC,MAAM,QAAQ,QACjB,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO;AAErF,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,UAAU,SAAS,IAAI,OAAO,QAClE,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO;AAExF,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,UAAU,aAAc,IAAI,OAAO,cACtF,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO;AAEzG,QAAO,OAAO,KAAK,UAAU;EAC3B,MAAM,UAAU,CAAC,SAAS,UAAU,MAAM,QAAQ,MAAM,WACnD,MAAM,QAAS,KAAK,WAAW;AAChC,OAAI,SAAS,QAAS,QAAO,EAAE,IAAI;AACnC,UAAO;OAEP;EAEJ,MAAM,WAAW,cAAc,CAAC,SAAS,SAAS,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,aAAa,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,6EAA2E,EAAE,OAAO;AACtG,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,0FAAwF,EAAE,OAAO;AAEnH,SAAO;GACL,IAAW,GAAI,cAAc,OAAO,WAAY,GAAI,SAAS,SAAS,QAAQ,MAAM;GACpF,WAAW,MAAM,YAAY,UAAU,UAAU;GACjD,WAAW,OAAO,SAAS,OAAO;GAClC,SAAW,OAAO,SAAS,KAAK;GAChC,GAAG,CAAC,SAAS,UAAU;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,WAAW;KAClC,UAAU,OAAO,MAAM,WAAW;;IAKpC,GAAG,OAAO;KACR,WAAa,MAAM;KACnB,aAAa,MAAM;OAClB;IACH,GAAG,MAAM,WAAW,EAElB,kBAAkB,YAAY,SAAS,UAAU,KAAI,YAAW;KAC9D,WAAW,OAAO,SAAS,OAAO;KAClC,SAAW,OAAO,SAAS,KAAK;KACrB;;IAGf,GAAG,QAAQ,MAAK,MAAK,CAAC,WAAW,SAAS,OAAO,EAC/C,WAAW,EACT,GAAG,OAAO,SAAS,cAAc,EAC/B,QAAQA,gBAAS,SAAS"}
1
+ {"version":3,"file":"groups.js","names":["toPerson"],"sources":["../../../src/SS12000/to/groups.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Group } from '../types/groups';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'persons')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n groups: Extract<CoreTypes.Mixed.Group, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Group[] => {\n if (!Array.isArray(groups))\n throw new Error('(SS12000::To::Groups) Group input is not of array type', { cause: 'invalid_input' });\n\n if (!groups.every((group) => isString(group) || isString(get(group, 'id'))))\n throw new Error('(SS12000::To::Groups) Some groups are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !groups.every((group) => (isString(group) && belongsTo) || has(group, 'belongsTo')))\n throw new Error('(SS12000::To::Groups) Some top layer groups are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return groups.map((group) => {\n const members = !isString(group) && Array.isArray(group.members)\n ? (group.members).map((member) => {\n if (isString(member)) return { id: member } as Extract<CoreTypes.Mixed.Person, { id: string }>;\n return member as Extract<CoreTypes.Mixed.Person, { id: string }>;\n })\n : [];\n\n const division = belongsTo ?? (!isString(group) ? group.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(group, belongsTo) }.${ isString(group) ? group : group.id }`,\n groupType: group.species === 'class' ? 'Klass' : 'Undervisning',\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...!isString(group) && {\n meta: {\n created: moment(group.createdAt).toISOString(),\n modified: moment(group.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n ...omitBy({\n foreignId: group.ids,\n displayName: group.displayName,\n }, isNil),\n ...group.members && {\n // @ts-ignore\n groupMemberships: toReference(members, division).map(person => ({\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n person: person\n }))\n },\n ...expand?.some(x => ['persons'].includes(x)) && {\n _embedded: {\n ...expand.includes('persons') && {\n groups: toPerson(members, division as Extract<CoreTypes.Deep.Division, { id: string }>)\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,QACA,WACA,WACY;AACZ,KAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,iBAAiB,CAAC;AAEvG,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,MAAM,IAAI,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CACzE,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO,iBAAiB,CAAC;AAE1G,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,MAAM,IAAI,aAAc,IAAI,OAAO,YAAY,CAAC,CACnG,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO,iBAAiB,CAAC;AAE3H,QAAO,OAAO,KAAK,UAAU;EAC3B,MAAM,UAAU,CAAC,SAAS,MAAM,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAC3D,MAAM,QAAS,KAAK,WAAW;AAChC,OAAI,SAAS,OAAO,CAAE,QAAO,EAAE,IAAI,QAAQ;AAC3C,UAAO;IACP,GACA,EAAE;EAEN,MAAM,WAAW,cAAc,CAAC,SAAS,MAAM,GAAG,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,6EAA2E,EAAE,OAAO,iBAAiB,CAAC;AACxH,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,0FAAwF,EAAE,OAAO,iBAAiB,CAAC;AAErI,SAAO;GACL,IAAW,GAAI,cAAc,OAAO,UAAU,CAAE,GAAI,SAAS,MAAM,GAAG,QAAQ,MAAM;GACpF,WAAW,MAAM,YAAY,UAAU,UAAU;GACjD,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;GAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;GAC7C,GAAG,CAAC,SAAS,MAAM,IAAI;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,UAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAChD;IAID,GAAG,OAAO;KACR,WAAa,MAAM;KACnB,aAAa,MAAM;KACpB,EAAE,MAAM;IACT,GAAG,MAAM,WAAW,EAElB,kBAAkB,YAAY,SAAS,SAAS,CAAC,KAAI,YAAW;KAC9D,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;KAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;KAClC;KACZ,EAAE,EACJ;IACD,GAAG,QAAQ,MAAK,MAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,EAC/C,WAAW,EACT,GAAG,OAAO,SAAS,UAAU,IAAI,EAC/B,QAAQA,gBAAS,SAAS,SAA6D,EACxF,EACF,EACF;IACF;GACF;GACD"}
@@ -7,6 +7,7 @@ import { Syllabus } from "../types/syllabus.js";
7
7
  import { Activity } from "../types/activities.js";
8
8
  import { Resource } from "../types/resources.js";
9
9
  import { CalendarEvent } from "../types/calendar-events.js";
10
+ import "../../index.js";
10
11
 
11
12
  //#region src/SS12000/to/index.d.ts
12
13
  declare class export_default {
@@ -1 +1 @@
1
- {"version":3,"file":"persons.js","names":["SexMap: Record<NonNullable<CoreTypes.Deep.Person['sex']>, Person['sex']>"],"sources":["../../../src/SS12000/to/persons.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Person } from '../types/persons';\nimport { getDivisionId } from './common';\n\nconst SexMap: Record<NonNullable<CoreTypes.Deep.Person['sex']>, Person['sex']> = { Man: 'Man', Woman: 'Kvinna' };\nconst TypeMap: Record<\n NonNullable<\n CoreTypes.Deep.Person['phoneNumbers']\n >[0]['type'],\n NonNullable<\n Person['phoneNumbers']\n >[0]['type']\n> = {\n private: 'Privat',\n organization: 'Arbete övrigt'\n};\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n persons: Extract<CoreTypes.Mixed.Person, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Person[] => {\n if (!Array.isArray(persons))\n throw new Error('(SS12000::To::Persons) Person input is not of array type', { cause: 'invalid_input' });\n\n if (!persons.every((person) => isString(person) || isString(get(person, 'id'))))\n throw new Error('(SS12000::To::Persons) Some persons are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !persons.every((person) => (isString(person) && belongsTo) || has(person, 'belongsTo')))\n throw new Error('(SS12000::To::Persons) Some top layer persons are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return persons.map((person) => ({\n id: `${ getDivisionId(person, belongsTo) }.${ isString(person) ? person : person.id }`,\n ...!isString(person) && {\n meta: {\n created: moment(person.createdAt).toISOString(),\n modified: moment(person.updatedAt).toISOString()\n },\n sex: person.sex ? get(SexMap, person.sex, 'Okänt') : 'Okänt',\n ...omitBy({\n foreignId: person.ids,\n displayName: person.displayName,\n givenName: person.firstName,\n familyName: person.lastName,\n ...person.SSN?.value && { civicNo: person.SSN },\n emails: person.emails,\n phoneNumbers: person.phoneNumbers\n }, isNil)\n }\n }));\n};"],"mappings":";;;;;AAMA,MAAMA,SAA2E;CAAE,KAAK;CAAO,OAAO;;;;;AAgBtG,uBACE,SACA,cACa;AACb,KAAI,CAAC,MAAM,QAAQ,SACjB,OAAM,IAAI,MAAM,4DAA4D,EAAE,OAAO;AAEvF,KAAI,CAAC,QAAQ,OAAO,WAAW,SAAS,WAAW,SAAS,IAAI,QAAQ,QACtE,OAAM,IAAI,MAAM,iEAA+D,EAAE,OAAO;AAE1F,KAAI,CAAC,aAAa,CAAC,QAAQ,OAAO,WAAY,SAAS,WAAW,aAAc,IAAI,QAAQ,cAC1F,OAAM,IAAI,MAAM,kFAAgF,EAAE,OAAO;AAE3G,QAAO,QAAQ,KAAK,YAAY;EAC9B,IAAI,GAAI,cAAc,QAAQ,WAAY,GAAI,SAAS,UAAU,SAAS,OAAO;EACjF,GAAG,CAAC,SAAS,WAAW;GACtB,MAAM;IACJ,SAAU,OAAO,OAAO,WAAW;IACnC,UAAU,OAAO,OAAO,WAAW;;GAErC,KAAK,OAAO,MAAM,IAAI,QAAQ,OAAO,KAAK,WAAW;GACrD,GAAG,OAAO;IACR,WAAc,OAAO;IACrB,aAAc,OAAO;IACrB,WAAc,OAAO;IACrB,YAAc,OAAO;IACrB,GAAG,OAAO,KAAK,SAAS,EAAE,SAAS,OAAO;IAC1C,QAAc,OAAO;IACrB,cAAc,OAAO;MACpB"}
1
+ {"version":3,"file":"persons.js","names":["SexMap: Record<NonNullable<CoreTypes.Deep.Person['sex']>, Person['sex']>"],"sources":["../../../src/SS12000/to/persons.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Person } from '../types/persons';\nimport { getDivisionId } from './common';\n\nconst SexMap: Record<NonNullable<CoreTypes.Deep.Person['sex']>, Person['sex']> = { Man: 'Man', Woman: 'Kvinna' };\nconst TypeMap: Record<\n NonNullable<\n CoreTypes.Deep.Person['phoneNumbers']\n >[0]['type'],\n NonNullable<\n Person['phoneNumbers']\n >[0]['type']\n> = {\n private: 'Privat',\n organization: 'Arbete övrigt'\n};\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n persons: Extract<CoreTypes.Mixed.Person, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Person[] => {\n if (!Array.isArray(persons))\n throw new Error('(SS12000::To::Persons) Person input is not of array type', { cause: 'invalid_input' });\n\n if (!persons.every((person) => isString(person) || isString(get(person, 'id'))))\n throw new Error('(SS12000::To::Persons) Some persons are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !persons.every((person) => (isString(person) && belongsTo) || has(person, 'belongsTo')))\n throw new Error('(SS12000::To::Persons) Some top layer persons are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return persons.map((person) => ({\n id: `${ getDivisionId(person, belongsTo) }.${ isString(person) ? person : person.id }`,\n ...!isString(person) && {\n meta: {\n created: moment(person.createdAt).toISOString(),\n modified: moment(person.updatedAt).toISOString()\n },\n sex: person.sex ? get(SexMap, person.sex, 'Okänt') : 'Okänt',\n ...omitBy({\n foreignId: person.ids,\n displayName: person.displayName,\n givenName: person.firstName,\n familyName: person.lastName,\n ...person.SSN?.value && { civicNo: person.SSN },\n emails: person.emails,\n phoneNumbers: person.phoneNumbers\n }, isNil)\n }\n }));\n};"],"mappings":";;;;;AAMA,MAAMA,SAA2E;CAAE,KAAK;CAAO,OAAO;CAAU;;;;AAgBhH,uBACE,SACA,cACa;AACb,KAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB,OAAM,IAAI,MAAM,4DAA4D,EAAE,OAAO,iBAAiB,CAAC;AAEzG,KAAI,CAAC,QAAQ,OAAO,WAAW,SAAS,OAAO,IAAI,SAAS,IAAI,QAAQ,KAAK,CAAC,CAAC,CAC7E,OAAM,IAAI,MAAM,iEAA+D,EAAE,OAAO,iBAAiB,CAAC;AAE5G,KAAI,CAAC,aAAa,CAAC,QAAQ,OAAO,WAAY,SAAS,OAAO,IAAI,aAAc,IAAI,QAAQ,YAAY,CAAC,CACvG,OAAM,IAAI,MAAM,kFAAgF,EAAE,OAAO,iBAAiB,CAAC;AAE7H,QAAO,QAAQ,KAAK,YAAY;EAC9B,IAAI,GAAI,cAAc,QAAQ,UAAU,CAAE,GAAI,SAAS,OAAO,GAAG,SAAS,OAAO;EACjF,GAAG,CAAC,SAAS,OAAO,IAAI;GACtB,MAAM;IACJ,SAAU,OAAO,OAAO,UAAU,CAAC,aAAa;IAChD,UAAU,OAAO,OAAO,UAAU,CAAC,aAAa;IACjD;GACD,KAAK,OAAO,MAAM,IAAI,QAAQ,OAAO,KAAK,QAAQ,GAAG;GACrD,GAAG,OAAO;IACR,WAAc,OAAO;IACrB,aAAc,OAAO;IACrB,WAAc,OAAO;IACrB,YAAc,OAAO;IACrB,GAAG,OAAO,KAAK,SAAS,EAAE,SAAS,OAAO,KAAK;IAC/C,QAAc,OAAO;IACrB,cAAc,OAAO;IACtB,EAAE,MAAM;GACV;EACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","names":[],"sources":["../../../src/SS12000/to/resources.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Resource } from '../types/resources';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n resources: any[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Resource[] => {\n if (!Array.isArray(resources))\n throw new Error('(SS12000::To::Resources) Resources input is not of array type', { cause: 'invalid_input' });\n\n if (!resources.every((resource) => isString(resource) || isString(get(resource, 'id'))))\n throw new Error('(SS12000::To::Resources) Some resources are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !resources.every((resource) => (isString(resource) && belongsTo) || has(resource, 'belongsTo')))\n throw new Error('(SS12000::To::Resources) Some top layer resources are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return resources.map((resource) => ({\n id: `${ getDivisionId(resource, belongsTo) }.${ isString(resource) ? resource : resource.id }`,\n ...!isString(resource) && {\n meta: {\n created: moment(resource.createdAt).toISOString(),\n modified: moment(resource.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n\n ...omitBy({\n foreignId: resource.ids,\n }, isNil)\n }\n }));\n};\n"],"mappings":";;;;;;;;AASA,yBACE,WACA,cACe;AACf,KAAI,CAAC,MAAM,QAAQ,WACjB,OAAM,IAAI,MAAM,iEAAiE,EAAE,OAAO;AAE5F,KAAI,CAAC,UAAU,OAAO,aAAa,SAAS,aAAa,SAAS,IAAI,UAAU,QAC9E,OAAM,IAAI,MAAM,qEAAmE,EAAE,OAAO;AAE9F,KAAI,CAAC,aAAa,CAAC,UAAU,OAAO,aAAc,SAAS,aAAa,aAAc,IAAI,UAAU,cAClG,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO;AAE/G,QAAO,UAAU,KAAK,cAAc;EAClC,IAAI,GAAI,cAAc,UAAU,WAAY,GAAI,SAAS,YAAY,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,aAAa;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,WAAW;IACrC,UAAU,OAAO,SAAS,WAAW;;GAMvC,GAAG,OAAO,EACR,WAAW,SAAS,OACnB"}
1
+ {"version":3,"file":"resources.js","names":[],"sources":["../../../src/SS12000/to/resources.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Resource } from '../types/resources';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n resources: any[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Resource[] => {\n if (!Array.isArray(resources))\n throw new Error('(SS12000::To::Resources) Resources input is not of array type', { cause: 'invalid_input' });\n\n if (!resources.every((resource) => isString(resource) || isString(get(resource, 'id'))))\n throw new Error('(SS12000::To::Resources) Some resources are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !resources.every((resource) => (isString(resource) && belongsTo) || has(resource, 'belongsTo')))\n throw new Error('(SS12000::To::Resources) Some top layer resources are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return resources.map((resource) => ({\n id: `${ getDivisionId(resource, belongsTo) }.${ isString(resource) ? resource : resource.id }`,\n ...!isString(resource) && {\n meta: {\n created: moment(resource.createdAt).toISOString(),\n modified: moment(resource.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n\n ...omitBy({\n foreignId: resource.ids,\n }, isNil)\n }\n }));\n};\n"],"mappings":";;;;;;;;AASA,yBACE,WACA,cACe;AACf,KAAI,CAAC,MAAM,QAAQ,UAAU,CAC3B,OAAM,IAAI,MAAM,iEAAiE,EAAE,OAAO,iBAAiB,CAAC;AAE9G,KAAI,CAAC,UAAU,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACrF,OAAM,IAAI,MAAM,qEAAmE,EAAE,OAAO,iBAAiB,CAAC;AAEhH,KAAI,CAAC,aAAa,CAAC,UAAU,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAC/G,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO,iBAAiB,CAAC;AAEjI,QAAO,UAAU,KAAK,cAAc;EAClC,IAAI,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,SAAS,IAAI;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IACnD;GAKD,GAAG,OAAO,EACR,WAAW,SAAS,KACrB,EAAE,MAAM;GACV;EACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"rooms.js","names":[],"sources":["../../../src/SS12000/to/rooms.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Room } from '../types/rooms';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n locations: (Extract<CoreTypes.Mixed.Location, { id: string }> | string)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Room[] => {\n if (!Array.isArray(locations))\n throw new Error('(SS12000::To::Room) Room input is not of array type', { cause: 'invalid_input' });\n\n if (!locations.every((location) => isString(location) || isString(get(location, 'id'))))\n throw new Error('(SS12000::To::Room) Some locations are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !locations.every((location) => (isString(location) && belongsTo) || has(location, 'belongsTo')))\n throw new Error('(SS12000::To::Room) Some top layer locations are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return locations.map((location) => ({\n id: `${ getDivisionId(location, belongsTo) }.${ isString(location) ? location : location.id }`,\n ...!isString(location) && {\n meta: {\n created: moment(location.createdAt).toISOString(),\n modified: moment(location.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: location.ids,\n displayName: location.displayName,\n seats: location.maximumCapacity,\n tags: location.tags,\n }, isNil),\n }\n }));\n};"],"mappings":";;;;;;;;AASA,qBACE,WACA,cACW;AACX,KAAI,CAAC,MAAM,QAAQ,WACjB,OAAM,IAAI,MAAM,uDAAuD,EAAE,OAAO;AAElF,KAAI,CAAC,UAAU,OAAO,aAAa,SAAS,aAAa,SAAS,IAAI,UAAU,QAC9E,OAAM,IAAI,MAAM,gEAA8D,EAAE,OAAO;AAEzF,KAAI,CAAC,aAAa,CAAC,UAAU,OAAO,aAAc,SAAS,aAAa,aAAc,IAAI,UAAU,cAClG,OAAM,IAAI,MAAM,iFAA+E,EAAE,OAAO;AAE1G,QAAO,UAAU,KAAK,cAAc;EAClC,IAAI,GAAI,cAAc,UAAU,WAAY,GAAI,SAAS,YAAY,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,aAAa;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,WAAW;IACrC,UAAU,OAAO,SAAS,WAAW;;GAEvC,GAAG,OAAO;IACR,WAAa,SAAS;IACtB,aAAa,SAAS;IACtB,OAAa,SAAS;IACtB,MAAa,SAAS;MACrB"}
1
+ {"version":3,"file":"rooms.js","names":[],"sources":["../../../src/SS12000/to/rooms.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Room } from '../types/rooms';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n locations: (Extract<CoreTypes.Mixed.Location, { id: string }> | string)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Room[] => {\n if (!Array.isArray(locations))\n throw new Error('(SS12000::To::Room) Room input is not of array type', { cause: 'invalid_input' });\n\n if (!locations.every((location) => isString(location) || isString(get(location, 'id'))))\n throw new Error('(SS12000::To::Room) Some locations are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !locations.every((location) => (isString(location) && belongsTo) || has(location, 'belongsTo')))\n throw new Error('(SS12000::To::Room) Some top layer locations are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return locations.map((location) => ({\n id: `${ getDivisionId(location, belongsTo) }.${ isString(location) ? location : location.id }`,\n ...!isString(location) && {\n meta: {\n created: moment(location.createdAt).toISOString(),\n modified: moment(location.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: location.ids,\n displayName: location.displayName,\n seats: location.maximumCapacity,\n tags: location.tags,\n }, isNil),\n }\n }));\n};"],"mappings":";;;;;;;;AASA,qBACE,WACA,cACW;AACX,KAAI,CAAC,MAAM,QAAQ,UAAU,CAC3B,OAAM,IAAI,MAAM,uDAAuD,EAAE,OAAO,iBAAiB,CAAC;AAEpG,KAAI,CAAC,UAAU,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACrF,OAAM,IAAI,MAAM,gEAA8D,EAAE,OAAO,iBAAiB,CAAC;AAE3G,KAAI,CAAC,aAAa,CAAC,UAAU,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAC/G,OAAM,IAAI,MAAM,iFAA+E,EAAE,OAAO,iBAAiB,CAAC;AAE5H,QAAO,UAAU,KAAK,cAAc;EAClC,IAAI,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,SAAS,IAAI;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IACnD;GACD,GAAG,OAAO;IACR,WAAa,SAAS;IACtB,aAAa,SAAS;IACtB,OAAa,SAAS;IACtB,MAAa,SAAS;IACvB,EAAE,MAAM;GACV;EACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"syllabuses.js","names":[],"sources":["../../../src/SS12000/to/syllabuses.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Syllabus } from '../types/syllabus';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n syllabuses: (Extract<CoreTypes.Mixed.Syllabus, { id: string }> | string)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Syllabus[] => {\n if (!Array.isArray(syllabuses))\n throw new Error('(SS12000::To::Syllabus) Syllabus input is not of array type', { cause: 'invalid_input' });\n\n if (!syllabuses.every((location) => isString(location) || isString(get(location, 'id'))))\n throw new Error('(SS12000::To::Syllabus) Some syllabuses are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !syllabuses.every((location) => (isString(location) && belongsTo) || has(location, 'belongsTo')))\n throw new Error('(SS12000::To::Syllabus) Some top layer syllabuses are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return syllabuses.map((syllabus) => ({\n id: `${ getDivisionId(syllabus, belongsTo) }.${ isString(syllabus) ? syllabus : syllabus.id }`,\n ...!isString(syllabus) && {\n meta: {\n created: moment(syllabus.createdAt).toISOString(),\n modified: moment(syllabus.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: syllabus.ids,\n schoolType: syllabus.schoolType,\n subjectDesignation: syllabus.subjectDesignation,\n subjectCode: syllabus.subjectCode,\n subjectName: syllabus.subjectName,\n official: syllabus.official,\n }, isNil),\n }\n }));\n};"],"mappings":";;;;;;;;AASA,0BACE,YACA,cACe;AACf,KAAI,CAAC,MAAM,QAAQ,YACjB,OAAM,IAAI,MAAM,+DAA+D,EAAE,OAAO;AAE1F,KAAI,CAAC,WAAW,OAAO,aAAa,SAAS,aAAa,SAAS,IAAI,UAAU,QAC/E,OAAM,IAAI,MAAM,qEAAmE,EAAE,OAAO;AAE9F,KAAI,CAAC,aAAa,CAAC,WAAW,OAAO,aAAc,SAAS,aAAa,aAAc,IAAI,UAAU,cACnG,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO;AAE/G,QAAO,WAAW,KAAK,cAAc;EACnC,IAAI,GAAI,cAAc,UAAU,WAAY,GAAI,SAAS,YAAY,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,aAAa;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,WAAW;IACrC,UAAU,OAAO,SAAS,WAAW;;GAEvC,GAAG,OAAO;IACR,WAAoB,SAAS;IAC7B,YAAoB,SAAS;IAC7B,oBAAoB,SAAS;IAC7B,aAAoB,SAAS;IAC7B,aAAoB,SAAS;IAC7B,UAAoB,SAAS;MAC5B"}
1
+ {"version":3,"file":"syllabuses.js","names":[],"sources":["../../../src/SS12000/to/syllabuses.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Syllabus } from '../types/syllabus';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n syllabuses: (Extract<CoreTypes.Mixed.Syllabus, { id: string }> | string)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Syllabus[] => {\n if (!Array.isArray(syllabuses))\n throw new Error('(SS12000::To::Syllabus) Syllabus input is not of array type', { cause: 'invalid_input' });\n\n if (!syllabuses.every((location) => isString(location) || isString(get(location, 'id'))))\n throw new Error('(SS12000::To::Syllabus) Some syllabuses are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !syllabuses.every((location) => (isString(location) && belongsTo) || has(location, 'belongsTo')))\n throw new Error('(SS12000::To::Syllabus) Some top layer syllabuses are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return syllabuses.map((syllabus) => ({\n id: `${ getDivisionId(syllabus, belongsTo) }.${ isString(syllabus) ? syllabus : syllabus.id }`,\n ...!isString(syllabus) && {\n meta: {\n created: moment(syllabus.createdAt).toISOString(),\n modified: moment(syllabus.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: syllabus.ids,\n schoolType: syllabus.schoolType,\n subjectDesignation: syllabus.subjectDesignation,\n subjectCode: syllabus.subjectCode,\n subjectName: syllabus.subjectName,\n official: syllabus.official,\n }, isNil),\n }\n }));\n};"],"mappings":";;;;;;;;AASA,0BACE,YACA,cACe;AACf,KAAI,CAAC,MAAM,QAAQ,WAAW,CAC5B,OAAM,IAAI,MAAM,+DAA+D,EAAE,OAAO,iBAAiB,CAAC;AAE5G,KAAI,CAAC,WAAW,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACtF,OAAM,IAAI,MAAM,qEAAmE,EAAE,OAAO,iBAAiB,CAAC;AAEhH,KAAI,CAAC,aAAa,CAAC,WAAW,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAChH,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO,iBAAiB,CAAC;AAEjI,QAAO,WAAW,KAAK,cAAc;EACnC,IAAI,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,SAAS,IAAI;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IACnD;GACD,GAAG,OAAO;IACR,WAAoB,SAAS;IAC7B,YAAoB,SAAS;IAC7B,oBAAoB,SAAS;IAC7B,aAAoB,SAAS;IAC7B,aAAoB,SAAS;IAC7B,UAAoB,SAAS;IAC9B,EAAE,MAAM;GACV;EACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../../src/SchoolSoft/api/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport _schedules from './schedules';\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":";;;AAGA,mBAAe,EACb,WAAWA"}
1
+ {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../../src/SchoolSoft/api/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport _schedules from './schedules';\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":";;;AAGA,mBAAe,EACb,WAAWA,mBACZ"}
@@ -115,7 +115,7 @@ var schedules_default = (data) => {
115
115
  const id = initialTeacherMap.get(y)?.ids;
116
116
  if (id) teacherSet.add(id);
117
117
  });
118
- const teachers$1 = [...teacherSet].map((to) => ({ to }));
118
+ const teachers = [...teacherSet].map((to) => ({ to }));
119
119
  const scheduledGroupIds = [];
120
120
  const groupSet = /* @__PURE__ */ new Set();
121
121
  split(x.group).forEach((y) => {
@@ -131,9 +131,9 @@ var schedules_default = (data) => {
131
131
  course.groups?.forEach((z) => groupSet.add(z.to.toString()));
132
132
  }
133
133
  });
134
- const groups$1 = [...groupSet].map((to) => ({ to }));
135
- const key = courseMapKey(x.subject, groups$1.map(({ to }) => to), teachers$1.map(({ to }) => to));
136
- if (groups$1.length && teachers$1.length && !courseMap.has(key)) {
134
+ const groups = [...groupSet].map((to) => ({ to }));
135
+ const key = courseMapKey(x.subject, groups.map(({ to }) => to), teachers.map(({ to }) => to));
136
+ if (groups.length && teachers.length && !courseMap.has(key)) {
137
137
  const ids = scheduledGroupIds.join(sep);
138
138
  courseMap.set(key, {
139
139
  ids,
@@ -144,16 +144,12 @@ var schedules_default = (data) => {
144
144
  });
145
145
  }
146
146
  });
147
- const teachers = [...initialTeacherMap.values()];
148
- const groups = [...nameGroupMap.values()];
149
- const courses = [...courseMap.values()];
150
- const events = [];
151
147
  return {
152
148
  locations,
153
- teachers,
154
- groups,
155
- courses,
156
- events,
149
+ teachers: [...initialTeacherMap.values()],
150
+ groups: [...nameGroupMap.values()],
151
+ courses: [...courseMap.values()],
152
+ events: [],
157
153
  persons,
158
154
  meta: {
159
155
  ...errors.length ? { errors } : {},
@@ -1 +1 @@
1
- {"version":3,"file":"schedules.js","names":["errors: string[]","warnings: string[]","x","course: OutTypes.course","teachers","scheduledGroupIds: string[]","groups","events: OutTypes.event[]"],"sources":["../../../../src/SchoolSoft/api/from/schedules.ts"],"sourcesContent":["import type { CoreTypes } from '../../../core';\nimport type { PUBLIC_ID_KEY } from '../../../core/interfaces/vertices/util/vertex';\nimport type { Schedule } from '../types/schedule';\n\nconst sep = ',';\nfunction split (val: string): string[] {\n return val.split(sep)\n .map(x => x.trim())\n .filter(x => x.length);\n}\n\nfunction courseMapKey (\n subject: string | undefined,\n groups: string[],\n teachers: string[]\n): string {\n return JSON.stringify({ s: subject, g: groups.sort(), t: teachers.sort() });\n}\n\nnamespace OutTypes {\n export type event = CoreTypes.SerializedWithOptionalId.Event & { [PUBLIC_ID_KEY]: string };\n export type course = CoreTypes.SerializedWithOptionalId.Course & { [PUBLIC_ID_KEY]: string };\n export type location = CoreTypes.SerializedWithOptionalId.Location & { [PUBLIC_ID_KEY]: string };\n export type group = CoreTypes.SerializedWithOptionalId.Group & { [PUBLIC_ID_KEY]: string };\n export type person = CoreTypes.SerializedWithOptionalId.Person & { [PUBLIC_ID_KEY]: string };\n export type teacher = CoreTypes.SerializedWithOptionalId.Teacher & { [PUBLIC_ID_KEY]: string };\n}\ntype Out = {\n locations: OutTypes.location[];\n teachers: OutTypes.teacher[];\n groups: OutTypes.group[];\n courses: OutTypes.course[];\n events: OutTypes.event[];\n persons: OutTypes.person[];\n\n meta: {\n errors?: string[];\n warnings?: string[];\n };\n};\n\nexport default (\n data: Schedule\n): Out => {\n\n // gather all import related warnings/errors\n const errors: string[] = [];\n const warnings: string[] = [];\n\n ////\n //// persons\n ////\n const persons = data.persons\n .map((x): OutTypes.person => ({\n ids: x.id,\n //group: x.class, only name of class\n firstName: x.fname,\n lastName: x.lname,\n sex: ['m', 'p'].includes(x.sex) ? 'Man' : (['f', 'w'].includes(x.sex) ? 'Woman' : undefined),\n ...x.socialnumber && {\n SSN: {\n value: x.socialnumber,\n nationality: 'SE'\n }\n },\n ...x.email && {\n emails: [\n {\n value: x.email,\n type: 'organization'\n }\n ]\n }\n }));\n\n ////\n //// locations\n ////\n const locations = data.locations\n .map((x): OutTypes.location => ({\n ids: x.id,\n displayName: x.name\n }));\n\n\n ////\n //// teachers\n ////\n const initialTeacherMap = new Map(data.teachers\n .map((x): undefined | [string, OutTypes.teacher] => {\n // must be active\n if (x.active != '1') return;\n\n // ensure the initials to be unique\n if (initialTeacherMap.has(x.initial)) {\n warnings.push(`There already exists an active teacher with the initial \"${x.initial}\".`);\n return;\n }\n\n return [x.initial, {\n ids: x.id,\n displayName: x.fname + ' ' + x.lname\n }];\n })\n .filter(x => x != null)\n );\n\n\n\n ////\n //// groups\n ////\n const studentGroupMap = new Map<string, string>();\n const nameGroupMap = new Map<string, OutTypes.group>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a class type\n if (x.classtype != '1') return;\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add to student group map\n const members = split(x.studentid).filter(x => x);\n\n members.forEach(id => {\n if (studentGroupMap.has(id)) {\n errors.push(`The student with id \"${id}\" does already belong to a different group.`);\n return;\n }\n\n studentGroupMap.set(id, x.id);\n });\n\n // add group\n nameGroupMap.set(name, {\n ids: x.id,\n displayName: name,\n species: 'class',\n members\n });\n });\n\n\n ////\n //// create \"scheduled group\" to subject map\n ////\n const groupSubjectMap = new Map<string, string>();\n data.lessons.forEach(x => {\n if (x.subject) {\n groupSubjectMap.set(x.group.trim(), x.subject);\n }\n });\n\n\n ////\n //// courses\n ////\n const courseMap = new Map<string, OutTypes.course>();\n const nameCourseMap = new Map<string, OutTypes.course>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a course type\n if (x.classtype == '1') return;\n\n // find all groups connected to the course\n const groupSet = new Set<string>();\n split(x.studentid)\n .filter(x => x)\n .map(id => {\n const group = studentGroupMap.get(id);\n if (!group) {\n errors.push(`The student with id \"${id}\" does not belong to a group.`);\n return;\n }\n groupSet.add(group);\n });\n\n // find all teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .filter(x => x)\n .map(initial => {\n const teacher = initialTeacherMap.get(initial);\n if (!teacher) {\n errors.push(`The teacher with initial \"${initial}\" does not exist.`);\n return;\n }\n\n teacherSet.add(teacher.ids);\n });\n\n // try to figure out the subject from the group name via its lessons\n const subject = groupSubjectMap.get(name);\n if (!subject) {\n warnings.push(`Could not determine the subject of the course \"${name}\" (${x.id}).`);\n }\n\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add course\n const course: OutTypes.course = {\n ids: x.id,\n displayName: name,\n // groups: [...groupSet].map(to => ({ to })),\n // teachers: [...teacherSet].map(to => ({ to })),\n ...(subject && { subject })\n };\n nameCourseMap.set(name, course);\n courseMap.set(courseMapKey(course.subject, [...groupSet], [...teacherSet]), course);\n });\n\n\n ////\n //// load further courses from lessons\n ////\n data.lessons.forEach(x => {\n\n // fetch its teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .forEach(y => {\n const id = initialTeacherMap.get(y)?.ids;\n if (id) teacherSet.add(id);\n });\n const teachers = [...teacherSet].map(to => ({ to }));\n\n // fetch its groups\n const scheduledGroupIds: string[] = [];\n const groupSet = new Set<string>();\n split(x.group)\n .forEach(y => {\n // is group\n const id = nameGroupMap.get(y)?.ids;\n if (id) {\n scheduledGroupIds.push(id);\n groupSet.add(id);\n return;\n }\n\n // is course\n const course = nameCourseMap.get(y);\n if (course) {\n scheduledGroupIds.push(course.ids);\n course.groups?.forEach(z => groupSet.add(z.to.toString()));\n }\n });\n const groups = [...groupSet].map(to => ({ to }));\n\n // add as course if at least a single groups or teacher is connected\n const key = courseMapKey(x.subject, groups.map(({ to }) => to), teachers.map(({ to }) => to));\n if (groups.length && teachers.length && !courseMap.has(key)) {\n const ids = scheduledGroupIds.join(sep);\n courseMap.set(key, {\n ids: ids,\n displayName: x.subject + ( x.group.length ? ' - ' + x.group : '') + ( x.teacher.length ? ' - ' + x.teacher : ''),\n subject: x.subject,\n groups: [], // Don't assign to course\n teachers: [], // Don't assign to course\n });\n }\n\n });\n\n\n const teachers = [...initialTeacherMap.values()];\n const groups = [...nameGroupMap.values()];\n const courses = [...courseMap.values()];\n const events: OutTypes.event[] = [];\n return { locations, teachers, groups, courses, events, persons,\n meta: {\n ...( errors.length ? { errors: errors } : { } ),\n ...( warnings.length ? { warnings: warnings } : { } )\n }\n };\n};"],"mappings":"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"}
1
+ {"version":3,"file":"schedules.js","names":["errors: string[]","warnings: string[]","x","course: OutTypes.course","scheduledGroupIds: string[]"],"sources":["../../../../src/SchoolSoft/api/from/schedules.ts"],"sourcesContent":["import type { CoreTypes } from '../../../core';\nimport type { PUBLIC_ID_KEY } from '../../../core/interfaces/vertices/util/vertex';\nimport type { Schedule } from '../types/schedule';\n\nconst sep = ',';\nfunction split (val: string): string[] {\n return val.split(sep)\n .map(x => x.trim())\n .filter(x => x.length);\n}\n\nfunction courseMapKey (\n subject: string | undefined,\n groups: string[],\n teachers: string[]\n): string {\n return JSON.stringify({ s: subject, g: groups.sort(), t: teachers.sort() });\n}\n\nnamespace OutTypes {\n export type event = CoreTypes.SerializedWithOptionalId.Event & { [PUBLIC_ID_KEY]: string };\n export type course = CoreTypes.SerializedWithOptionalId.Course & { [PUBLIC_ID_KEY]: string };\n export type location = CoreTypes.SerializedWithOptionalId.Location & { [PUBLIC_ID_KEY]: string };\n export type group = CoreTypes.SerializedWithOptionalId.Group & { [PUBLIC_ID_KEY]: string };\n export type person = CoreTypes.SerializedWithOptionalId.Person & { [PUBLIC_ID_KEY]: string };\n export type teacher = CoreTypes.SerializedWithOptionalId.Teacher & { [PUBLIC_ID_KEY]: string };\n}\ntype Out = {\n locations: OutTypes.location[];\n teachers: OutTypes.teacher[];\n groups: OutTypes.group[];\n courses: OutTypes.course[];\n events: OutTypes.event[];\n persons: OutTypes.person[];\n\n meta: {\n errors?: string[];\n warnings?: string[];\n };\n};\n\nexport default (\n data: Schedule\n): Out => {\n\n // gather all import related warnings/errors\n const errors: string[] = [];\n const warnings: string[] = [];\n\n ////\n //// persons\n ////\n const persons = data.persons\n .map((x): OutTypes.person => ({\n ids: x.id,\n //group: x.class, only name of class\n firstName: x.fname,\n lastName: x.lname,\n sex: ['m', 'p'].includes(x.sex) ? 'Man' : (['f', 'w'].includes(x.sex) ? 'Woman' : undefined),\n ...x.socialnumber && {\n SSN: {\n value: x.socialnumber,\n nationality: 'SE'\n }\n },\n ...x.email && {\n emails: [\n {\n value: x.email,\n type: 'organization'\n }\n ]\n }\n }));\n\n ////\n //// locations\n ////\n const locations = data.locations\n .map((x): OutTypes.location => ({\n ids: x.id,\n displayName: x.name\n }));\n\n\n ////\n //// teachers\n ////\n const initialTeacherMap = new Map(data.teachers\n .map((x): undefined | [string, OutTypes.teacher] => {\n // must be active\n if (x.active != '1') return;\n\n // ensure the initials to be unique\n if (initialTeacherMap.has(x.initial)) {\n warnings.push(`There already exists an active teacher with the initial \"${x.initial}\".`);\n return;\n }\n\n return [x.initial, {\n ids: x.id,\n displayName: x.fname + ' ' + x.lname\n }];\n })\n .filter(x => x != null)\n );\n\n\n\n ////\n //// groups\n ////\n const studentGroupMap = new Map<string, string>();\n const nameGroupMap = new Map<string, OutTypes.group>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a class type\n if (x.classtype != '1') return;\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add to student group map\n const members = split(x.studentid).filter(x => x);\n\n members.forEach(id => {\n if (studentGroupMap.has(id)) {\n errors.push(`The student with id \"${id}\" does already belong to a different group.`);\n return;\n }\n\n studentGroupMap.set(id, x.id);\n });\n\n // add group\n nameGroupMap.set(name, {\n ids: x.id,\n displayName: name,\n species: 'class',\n members\n });\n });\n\n\n ////\n //// create \"scheduled group\" to subject map\n ////\n const groupSubjectMap = new Map<string, string>();\n data.lessons.forEach(x => {\n if (x.subject) {\n groupSubjectMap.set(x.group.trim(), x.subject);\n }\n });\n\n\n ////\n //// courses\n ////\n const courseMap = new Map<string, OutTypes.course>();\n const nameCourseMap = new Map<string, OutTypes.course>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a course type\n if (x.classtype == '1') return;\n\n // find all groups connected to the course\n const groupSet = new Set<string>();\n split(x.studentid)\n .filter(x => x)\n .map(id => {\n const group = studentGroupMap.get(id);\n if (!group) {\n errors.push(`The student with id \"${id}\" does not belong to a group.`);\n return;\n }\n groupSet.add(group);\n });\n\n // find all teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .filter(x => x)\n .map(initial => {\n const teacher = initialTeacherMap.get(initial);\n if (!teacher) {\n errors.push(`The teacher with initial \"${initial}\" does not exist.`);\n return;\n }\n\n teacherSet.add(teacher.ids);\n });\n\n // try to figure out the subject from the group name via its lessons\n const subject = groupSubjectMap.get(name);\n if (!subject) {\n warnings.push(`Could not determine the subject of the course \"${name}\" (${x.id}).`);\n }\n\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add course\n const course: OutTypes.course = {\n ids: x.id,\n displayName: name,\n // groups: [...groupSet].map(to => ({ to })),\n // teachers: [...teacherSet].map(to => ({ to })),\n ...(subject && { subject })\n };\n nameCourseMap.set(name, course);\n courseMap.set(courseMapKey(course.subject, [...groupSet], [...teacherSet]), course);\n });\n\n\n ////\n //// load further courses from lessons\n ////\n data.lessons.forEach(x => {\n\n // fetch its teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .forEach(y => {\n const id = initialTeacherMap.get(y)?.ids;\n if (id) teacherSet.add(id);\n });\n const teachers = [...teacherSet].map(to => ({ to }));\n\n // fetch its groups\n const scheduledGroupIds: string[] = [];\n const groupSet = new Set<string>();\n split(x.group)\n .forEach(y => {\n // is group\n const id = nameGroupMap.get(y)?.ids;\n if (id) {\n scheduledGroupIds.push(id);\n groupSet.add(id);\n return;\n }\n\n // is course\n const course = nameCourseMap.get(y);\n if (course) {\n scheduledGroupIds.push(course.ids);\n course.groups?.forEach(z => groupSet.add(z.to.toString()));\n }\n });\n const groups = [...groupSet].map(to => ({ to }));\n\n // add as course if at least a single groups or teacher is connected\n const key = courseMapKey(x.subject, groups.map(({ to }) => to), teachers.map(({ to }) => to));\n if (groups.length && teachers.length && !courseMap.has(key)) {\n const ids = scheduledGroupIds.join(sep);\n courseMap.set(key, {\n ids: ids,\n displayName: x.subject + ( x.group.length ? ' - ' + x.group : '') + ( x.teacher.length ? ' - ' + x.teacher : ''),\n subject: x.subject,\n groups: [], // Don't assign to course\n teachers: [], // Don't assign to course\n });\n }\n\n });\n\n\n const teachers = [...initialTeacherMap.values()];\n const groups = [...nameGroupMap.values()];\n const courses = [...courseMap.values()];\n const events: OutTypes.event[] = [];\n return { locations, teachers, groups, courses, events, persons,\n meta: {\n ...( errors.length ? { errors: errors } : { } ),\n ...( warnings.length ? { warnings: warnings } : { } )\n }\n };\n};"],"mappings":"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"}
@@ -7,7 +7,8 @@ import { PlannedScheduledDuration } from "../../core/interfaces/vertices/propert
7
7
  import { MinBreakLength } from "../../core/interfaces/vertices/properties/min-break-length.js";
8
8
  import { Schedule } from "./types/schedule.js";
9
9
  import { Types } from "./types/index.js";
10
- import * as moment199 from "moment";
10
+ import "../../index.js";
11
+ import * as moment195 from "moment";
11
12
 
12
13
  //#region src/SchoolSoft/api/index.d.ts
13
14
  declare class Map {
@@ -286,8 +287,8 @@ declare class Map {
286
287
  createdAt?: string | undefined;
287
288
  updatedAt?: string | undefined;
288
289
  lastModifiedBy?: string | undefined;
289
- start?: (moment199.Moment | string) | undefined;
290
- end?: (moment199.Moment | string) | undefined;
290
+ start?: (moment195.Moment | string) | undefined;
291
+ end?: (moment195.Moment | string) | undefined;
291
292
  potentialCenter?: string | undefined;
292
293
  type?: string | undefined;
293
294
  tags?: Tag[] | undefined;
@@ -340,8 +341,8 @@ declare class Map {
340
341
  createdAt?: string | undefined;
341
342
  updatedAt?: string | undefined;
342
343
  lastModifiedBy?: string | undefined;
343
- start?: (moment199.Moment | string) | undefined;
344
- end?: (moment199.Moment | string) | undefined;
344
+ start?: (moment195.Moment | string) | undefined;
345
+ end?: (moment195.Moment | string) | undefined;
345
346
  potentialCenter?: string | undefined;
346
347
  type?: string | undefined;
347
348
  tags?: Tag[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../../src/SchoolSoft/file/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport _schedules from './schedules';\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":";;;AAGA,mBAAe,EACb,WAAWA"}
1
+ {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../../src/SchoolSoft/file/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport _schedules from './schedules';\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":";;;AAGA,mBAAe,EACb,WAAWA,mBACZ"}