@royalschedule/maps 3.3.16 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (949) hide show
  1. package/README.md +1 -0
  2. package/dist/Additio/from/courses.js.map +1 -1
  3. package/dist/Additio/from/events.js.map +1 -1
  4. package/dist/Additio/from/groups.js.map +1 -1
  5. package/dist/Additio/from/index.js.map +1 -1
  6. package/dist/Additio/from/locations.js.map +1 -1
  7. package/dist/Additio/from/persons.js +1 -1
  8. package/dist/Additio/from/persons.js.map +1 -1
  9. package/dist/Additio/from/schedules.d.ts +32 -2
  10. package/dist/Additio/from/schedules.js.map +1 -1
  11. package/dist/Additio/from/teachers.js.map +1 -1
  12. package/dist/Additio/index.js.map +1 -1
  13. package/dist/Additio/to/index.d.ts +13 -13
  14. package/dist/Additio/to/index.js.map +1 -1
  15. package/dist/Additio/to/schedules.js +44 -46
  16. package/dist/Additio/to/schedules.js.map +1 -1
  17. package/dist/Additio/types/index.d.ts +2 -0
  18. package/dist/Additio/types/options.d.ts +8 -0
  19. package/dist/Additio/types/schedules.d.ts +1 -5
  20. package/dist/Admentum/from/courses.js.map +1 -1
  21. package/dist/Admentum/from/events.js.map +1 -1
  22. package/dist/Admentum/from/groups.js.map +1 -1
  23. package/dist/Admentum/from/index.js.map +1 -1
  24. package/dist/Admentum/from/locations.js.map +1 -1
  25. package/dist/Admentum/from/persons.js +1 -1
  26. package/dist/Admentum/from/persons.js.map +1 -1
  27. package/dist/Admentum/from/schedules.d.ts +32 -2
  28. package/dist/Admentum/from/schedules.js.map +1 -1
  29. package/dist/Admentum/from/teachers.js.map +1 -1
  30. package/dist/Admentum/index.js.map +1 -1
  31. package/dist/Admentum/to/index.d.ts +11 -10
  32. package/dist/Admentum/to/index.js.map +1 -1
  33. package/dist/Admentum/to/schedules.js +22 -25
  34. package/dist/Admentum/to/schedules.js.map +1 -1
  35. package/dist/Excel/index.d.ts +55 -4
  36. package/dist/Excel/index.js.map +1 -1
  37. package/dist/Excel/v1/from/index.js +7 -7
  38. package/dist/Excel/v1/from/index.js.map +1 -1
  39. package/dist/Excel/v1/index.d.ts +30 -2
  40. package/dist/Excel/v1/index.js.map +1 -1
  41. package/dist/Excel/v2/from/index.js +10 -10
  42. package/dist/Excel/v2/from/index.js.map +1 -1
  43. package/dist/Excel/v2/index.d.ts +53 -2
  44. package/dist/Excel/v2/index.js.map +1 -1
  45. package/dist/IdunSoft/from/courses.js +4 -3
  46. package/dist/IdunSoft/from/courses.js.map +1 -1
  47. package/dist/IdunSoft/from/events.js +43 -32
  48. package/dist/IdunSoft/from/events.js.map +1 -1
  49. package/dist/IdunSoft/from/groups.js +5 -4
  50. package/dist/IdunSoft/from/groups.js.map +1 -1
  51. package/dist/IdunSoft/from/index.js.map +1 -1
  52. package/dist/IdunSoft/from/locations.js +4 -3
  53. package/dist/IdunSoft/from/locations.js.map +1 -1
  54. package/dist/IdunSoft/from/schedules.d.ts +18 -3
  55. package/dist/IdunSoft/from/schedules.js +5 -10
  56. package/dist/IdunSoft/from/schedules.js.map +1 -1
  57. package/dist/IdunSoft/from/teachers.js +4 -3
  58. package/dist/IdunSoft/from/teachers.js.map +1 -1
  59. package/dist/IdunSoft/index.js.map +1 -1
  60. package/dist/IdunSoft/to/index.d.ts +2 -3
  61. package/dist/IdunSoft/to/index.js.map +1 -1
  62. package/dist/IdunSoft/to/schedules.js +22 -21
  63. package/dist/IdunSoft/to/schedules.js.map +1 -1
  64. package/dist/InfoMentor/index.js.map +1 -1
  65. package/dist/InfoMentor/to/index.d.ts +2 -2
  66. package/dist/InfoMentor/to/index.js.map +1 -1
  67. package/dist/InfoMentor/to/schedules.js +26 -27
  68. package/dist/InfoMentor/to/schedules.js.map +1 -1
  69. package/dist/PlanDigital/from/index.js.map +1 -1
  70. package/dist/PlanDigital/from/schedules.js +7 -6
  71. package/dist/PlanDigital/from/schedules.js.map +1 -1
  72. package/dist/PlanDigital/index.d.ts +106 -5
  73. package/dist/PlanDigital/index.js +0 -2
  74. package/dist/PlanDigital/index.js.map +1 -1
  75. package/dist/PlanDigital/types/index.d.ts +12 -11
  76. package/dist/Quiculum/file/to/index.d.ts +1 -1
  77. package/dist/Quiculum/file/to/schedules.js +11 -13
  78. package/dist/Quiculum/file/to/schedules.js.map +1 -1
  79. package/dist/RS/from/division.d.ts +7 -0
  80. package/dist/RS/from/division.js +14 -0
  81. package/dist/RS/from/division.js.map +1 -0
  82. package/dist/RS/from/index.js +12 -0
  83. package/dist/RS/from/index.js.map +1 -0
  84. package/dist/RS/from/schedules.d.ts +8 -0
  85. package/dist/RS/from/schedules.js +36 -0
  86. package/dist/RS/from/schedules.js.map +1 -0
  87. package/dist/RS/index.d.ts +11 -12
  88. package/dist/RS/index.js +4 -8
  89. package/dist/RS/index.js.map +1 -1
  90. package/dist/RS/make-connected.d.ts +24 -0
  91. package/dist/RS/make-connected.js +258 -0
  92. package/dist/RS/make-connected.js.map +1 -0
  93. package/dist/RS/to/index.js +8 -0
  94. package/dist/RS/to/index.js.map +1 -0
  95. package/dist/RS/to/initial-configuration.js +43 -0
  96. package/dist/RS/to/initial-configuration.js.map +1 -0
  97. package/dist/RS/to/input/collections.js +57 -0
  98. package/dist/RS/to/input/collections.js.map +1 -0
  99. package/dist/RS/{v3/to → to/input}/default.js +10 -18
  100. package/dist/RS/to/input/default.js.map +1 -0
  101. package/dist/RS/to/input/dependencies.js +32 -0
  102. package/dist/RS/to/input/dependencies.js.map +1 -0
  103. package/dist/RS/to/input/dynamic-locked-times.js +67 -0
  104. package/dist/RS/to/input/dynamic-locked-times.js.map +1 -0
  105. package/dist/RS/to/input/events.js +84 -0
  106. package/dist/RS/to/input/events.js.map +1 -0
  107. package/dist/RS/to/input/groups.js +36 -0
  108. package/dist/RS/to/input/groups.js.map +1 -0
  109. package/dist/RS/to/input/individuals.js +49 -0
  110. package/dist/RS/to/input/individuals.js.map +1 -0
  111. package/dist/RS/to/input/input.js +40 -0
  112. package/dist/RS/to/input/input.js.map +1 -0
  113. package/dist/RS/to/input/intervals.js +99 -0
  114. package/dist/RS/to/input/intervals.js.map +1 -0
  115. package/dist/RS/to/input/periods.js +44 -0
  116. package/dist/RS/to/input/periods.js.map +1 -0
  117. package/dist/RS/to/input/settings.js +17 -0
  118. package/dist/RS/to/input/settings.js.map +1 -0
  119. package/dist/RS/to/input/teachers.js +36 -0
  120. package/dist/RS/to/input/teachers.js.map +1 -0
  121. package/dist/RS/to/input/util/attach-locked-times.js +27 -0
  122. package/dist/RS/to/input/util/attach-locked-times.js.map +1 -0
  123. package/dist/RS/to/input/util/parse-days.js +10 -0
  124. package/dist/RS/to/input/util/parse-days.js.map +1 -0
  125. package/dist/RS/to/input/util/parse-group-references.js +58 -0
  126. package/dist/RS/to/input/util/parse-group-references.js.map +1 -0
  127. package/dist/RS/to/input/util/parse-intervals.js +55 -0
  128. package/dist/RS/to/input/util/parse-intervals.js.map +1 -0
  129. package/dist/RS/to/input/util/parse-location-references.js +31 -0
  130. package/dist/RS/to/input/util/parse-location-references.js.map +1 -0
  131. package/dist/RS/to/input/util/parse-max-working-hours.js +17 -0
  132. package/dist/RS/to/input/util/parse-max-working-hours.js.map +1 -0
  133. package/dist/RS/to/input/util/parse-minimum-break-length.js +19 -0
  134. package/dist/RS/to/input/util/parse-minimum-break-length.js.map +1 -0
  135. package/dist/RS/to/input/util/util.js +61 -0
  136. package/dist/RS/to/input/util/util.js.map +1 -0
  137. package/dist/RS/to/schedules.d.ts +7 -0
  138. package/dist/RS/to/schedules.js +40 -0
  139. package/dist/RS/to/schedules.js.map +1 -0
  140. package/dist/RS/{v3/types → types}/algorithm-parameters.d.ts +1 -1
  141. package/dist/RS/types/collections.d.ts +26 -0
  142. package/dist/RS/types/configurations.d.ts +10 -0
  143. package/dist/RS/{v3/types → types}/default.d.ts +4 -5
  144. package/dist/RS/types/dependencies.d.ts +16 -0
  145. package/dist/RS/types/event-configuration.d.ts +17 -0
  146. package/dist/RS/types/events.d.ts +27 -0
  147. package/dist/RS/{v2/types → types}/groups.d.ts +11 -12
  148. package/dist/RS/types/index.d.ts +45 -0
  149. package/dist/RS/types/individuals.d.ts +16 -0
  150. package/dist/RS/{v2/types → types}/locked-times.d.ts +2 -1
  151. package/dist/RS/types/root-intervals.d.ts +10 -0
  152. package/dist/RS/types/schedule-data.d.ts +16 -0
  153. package/dist/RS/{v2/types → types}/settings.d.ts +1 -1
  154. package/dist/RS/types/shared.d.ts +27 -0
  155. package/dist/RS/types/to.d.ts +44 -0
  156. package/dist/SchoolSoft/api/from/index.js.map +1 -1
  157. package/dist/SchoolSoft/api/from/schedules.js +31 -37
  158. package/dist/SchoolSoft/api/from/schedules.js.map +1 -1
  159. package/dist/SchoolSoft/api/index.d.ts +14 -2
  160. package/dist/SchoolSoft/api/index.js.map +1 -1
  161. package/dist/SchoolSoft/file/from/index.js.map +1 -1
  162. package/dist/SchoolSoft/file/from/schedules.js +36 -46
  163. package/dist/SchoolSoft/file/from/schedules.js.map +1 -1
  164. package/dist/SchoolSoft/file/index.d.ts +2 -3
  165. package/dist/SchoolSoft/file/index.js.map +1 -1
  166. package/dist/SchoolSoft/file/to/index.d.ts +6 -13
  167. package/dist/SchoolSoft/file/to/schedules.js +40 -42
  168. package/dist/SchoolSoft/file/to/schedules.js.map +1 -1
  169. package/dist/SchoolSoft/index.d.ts +2 -3
  170. package/dist/SchoolSoft/index.js.map +1 -1
  171. package/dist/Schoolity/txt/index.js.map +1 -1
  172. package/dist/Schoolity/txt/to/index.d.ts +3 -3
  173. package/dist/Schoolity/txt/to/index.js.map +1 -1
  174. package/dist/Schoolity/txt/to/schedules.js +78 -96
  175. package/dist/Schoolity/txt/to/schedules.js.map +1 -1
  176. package/dist/Skola24/index.js.map +1 -1
  177. package/dist/Skola24/mdb/from/course-and-events.js +36 -29
  178. package/dist/Skola24/mdb/from/course-and-events.js.map +1 -1
  179. package/dist/Skola24/mdb/from/groups.js.map +1 -1
  180. package/dist/Skola24/mdb/from/index.js.map +1 -1
  181. package/dist/Skola24/mdb/from/locations.js.map +1 -1
  182. package/dist/Skola24/mdb/from/schedule.d.ts +21 -3
  183. package/dist/Skola24/mdb/from/schedule.js +15 -17
  184. package/dist/Skola24/mdb/from/schedule.js.map +1 -1
  185. package/dist/Skola24/mdb/from/teachers.js.map +1 -1
  186. package/dist/Skola24/mdb/index.js.map +1 -1
  187. package/dist/Skola24/mdb/types/index.d.ts +7 -0
  188. package/dist/Skola24/txt/from/calendar-exceptions.js.map +1 -1
  189. package/dist/Skola24/txt/from/division.js.map +1 -1
  190. package/dist/Skola24/txt/from/index.js.map +1 -1
  191. package/dist/Skola24/txt/from/period.js.map +1 -1
  192. package/dist/Skola24/txt/from/schedules.d.ts +16 -0
  193. package/dist/Skola24/txt/from/schedules.js +90 -80
  194. package/dist/Skola24/txt/from/schedules.js.map +1 -1
  195. package/dist/Skola24/txt/index.d.ts +17 -5
  196. package/dist/Skola24/txt/index.js.map +1 -1
  197. package/dist/Skola24/txt/to/index.d.ts +3 -3
  198. package/dist/Skola24/txt/to/index.js.map +1 -1
  199. package/dist/Skola24/txt/to/schedules.js +76 -91
  200. package/dist/Skola24/txt/to/schedules.js.map +1 -1
  201. package/dist/Skola24/txt/types/index.d.ts +5 -2
  202. package/dist/common/constants.js +2 -2
  203. package/dist/common/constants.js.map +1 -1
  204. package/dist/common/functions.js +16 -21
  205. package/dist/common/functions.js.map +1 -1
  206. package/dist/common/get-date.js +5 -6
  207. package/dist/common/get-date.js.map +1 -1
  208. package/dist/common/make-chainable/index.js +36 -0
  209. package/dist/common/make-chainable/index.js.map +1 -0
  210. package/dist/common/types.d.ts +12 -0
  211. package/dist/core/from/courses.js +12 -0
  212. package/dist/core/from/courses.js.map +1 -0
  213. package/dist/core/from/events.js +13 -0
  214. package/dist/core/from/events.js.map +1 -0
  215. package/dist/core/from/exceptions.js +12 -0
  216. package/dist/core/from/exceptions.js.map +1 -0
  217. package/dist/core/from/groups.js +12 -0
  218. package/dist/core/from/groups.js.map +1 -0
  219. package/dist/core/{v2/from → from}/index.js +1 -1
  220. package/dist/core/from/index.js.map +1 -0
  221. package/dist/core/from/locations.js +12 -0
  222. package/dist/core/from/locations.js.map +1 -0
  223. package/dist/core/from/locked-times.js +12 -0
  224. package/dist/core/from/locked-times.js.map +1 -0
  225. package/dist/core/from/overlap-groups.js +12 -0
  226. package/dist/core/from/overlap-groups.js.map +1 -0
  227. package/dist/core/from/periods.js +12 -0
  228. package/dist/core/from/periods.js.map +1 -0
  229. package/dist/core/from/persons.js +12 -0
  230. package/dist/core/from/persons.js.map +1 -0
  231. package/dist/core/from/root-intervals.js +12 -0
  232. package/dist/core/from/root-intervals.js.map +1 -0
  233. package/dist/core/from/schedules.d.ts +7 -0
  234. package/dist/core/from/schedules.js +35 -0
  235. package/dist/core/from/schedules.js.map +1 -0
  236. package/dist/core/{v2/from → from}/syllabuses.js +1 -1
  237. package/dist/core/from/syllabuses.js.map +1 -0
  238. package/dist/core/from/teachers.js +12 -0
  239. package/dist/core/from/teachers.js.map +1 -0
  240. package/dist/core/index.d.ts +6 -12
  241. package/dist/core/index.js +4 -6
  242. package/dist/core/index.js.map +1 -1
  243. package/dist/core/to/courses.js +43 -0
  244. package/dist/core/to/courses.js.map +1 -0
  245. package/dist/core/to/division.js +10 -0
  246. package/dist/core/to/division.js.map +1 -0
  247. package/dist/core/to/events.js +43 -0
  248. package/dist/core/to/events.js.map +1 -0
  249. package/dist/core/to/exceptions.js +27 -0
  250. package/dist/core/to/exceptions.js.map +1 -0
  251. package/dist/core/to/groups.js +23 -0
  252. package/dist/core/to/groups.js.map +1 -0
  253. package/dist/core/{v1/to → to}/index.d.ts +1 -1
  254. package/dist/{RS/v3 → core}/to/index.js +1 -1
  255. package/dist/core/to/index.js.map +1 -0
  256. package/dist/core/to/locations.js +19 -0
  257. package/dist/core/to/locations.js.map +1 -0
  258. package/dist/core/to/locked-times.js +21 -0
  259. package/dist/core/to/locked-times.js.map +1 -0
  260. package/dist/core/to/overlap-groups.js +28 -0
  261. package/dist/core/to/overlap-groups.js.map +1 -0
  262. package/dist/core/to/periods.js +17 -0
  263. package/dist/core/to/periods.js.map +1 -0
  264. package/dist/core/to/persons.js +23 -0
  265. package/dist/core/to/persons.js.map +1 -0
  266. package/dist/core/to/root-intervals.js +17 -0
  267. package/dist/core/to/root-intervals.js.map +1 -0
  268. package/dist/core/to/schedules.d.ts +44 -0
  269. package/dist/core/to/schedules.js +40 -0
  270. package/dist/core/to/schedules.js.map +1 -0
  271. package/dist/core/to/settings.js +16 -0
  272. package/dist/core/to/settings.js.map +1 -0
  273. package/dist/core/to/syllabuses.js +17 -0
  274. package/dist/core/to/syllabuses.js.map +1 -0
  275. package/dist/core/to/teachers.js +24 -0
  276. package/dist/core/to/teachers.js.map +1 -0
  277. package/dist/core/to/util.d.ts +10 -0
  278. package/dist/core/to/util.js +22 -0
  279. package/dist/core/to/util.js.map +1 -0
  280. package/dist/core/types/areas.d.ts +10 -0
  281. package/dist/core/types/common/break-lengths.d.ts +5 -0
  282. package/dist/core/types/common/days.d.ts +8 -0
  283. package/dist/core/types/common/index.d.ts +44 -0
  284. package/dist/core/types/common/intervals.d.ts +14 -0
  285. package/dist/core/{v2/types → types}/common/maximum-schedule-span.d.ts +1 -1
  286. package/dist/core/{v2/types → types/common}/meta.d.ts +1 -1
  287. package/dist/core/types/common/planned-schedule-duration.d.ts +7 -0
  288. package/dist/core/types/common/tag.d.ts +9 -0
  289. package/dist/core/types/courses.d.ts +56 -0
  290. package/dist/core/{v2/types → types}/division-settings.d.ts +12 -19
  291. package/dist/core/types/divisions.d.ts +24 -0
  292. package/dist/core/types/events.d.ts +54 -0
  293. package/dist/core/{v2/types → types}/exceptions.d.ts +14 -23
  294. package/dist/core/types/groups.d.ts +39 -0
  295. package/dist/core/types/index.d.ts +117 -15
  296. package/dist/core/types/locations.d.ts +27 -0
  297. package/dist/core/types/locked-times.d.ts +33 -0
  298. package/dist/core/types/overlap-groups.d.ts +14 -0
  299. package/dist/core/types/periods.d.ts +14 -0
  300. package/dist/core/{v2/types → types}/persons.d.ts +13 -22
  301. package/dist/core/types/root-intervals.d.ts +13 -0
  302. package/dist/core/types/schedules.d.ts +44 -0
  303. package/dist/core/types/syllabus.d.ts +18 -0
  304. package/dist/core/{v2/types → types}/teachers.d.ts +18 -30
  305. package/dist/core/util.js +46 -0
  306. package/dist/core/util.js.map +1 -0
  307. package/dist/core/vertex-mapping.d.ts +56 -0
  308. package/dist/identify/constants/index.d.ts +14 -58
  309. package/dist/identify/constants/index.js +7 -72
  310. package/dist/identify/constants/index.js.map +1 -1
  311. package/dist/identify/index.d.ts +1 -1
  312. package/dist/identify/index.js +38 -29
  313. package/dist/identify/index.js.map +1 -1
  314. package/dist/index.d.ts +23 -29
  315. package/dist/index.js +6 -7
  316. package/dist/sdui/from/classes.js.map +1 -1
  317. package/dist/sdui/from/courses.js.map +1 -1
  318. package/dist/sdui/from/holidays.js.map +1 -1
  319. package/dist/sdui/from/hours.js.map +1 -1
  320. package/dist/sdui/from/lessons.js.map +1 -1
  321. package/dist/sdui/from/rooms.js.map +1 -1
  322. package/dist/sdui/from/schedules.d.ts +19 -0
  323. package/dist/sdui/from/schedules.js +3 -3
  324. package/dist/sdui/from/schedules.js.map +1 -1
  325. package/dist/sdui/from/school-years.js.map +1 -1
  326. package/dist/sdui/from/subjects.js.map +1 -1
  327. package/dist/sdui/from/substitution-plans.js.map +1 -1
  328. package/dist/sdui/from/teachers.js.map +1 -1
  329. package/dist/sdui/index.d.ts +19 -11
  330. package/dist/sdui/index.js.map +1 -1
  331. package/dist/sdui/to/classes.js +4 -2
  332. package/dist/sdui/to/classes.js.map +1 -1
  333. package/dist/sdui/to/courses.js +5 -5
  334. package/dist/sdui/to/courses.js.map +1 -1
  335. package/dist/sdui/to/holidays.js +3 -2
  336. package/dist/sdui/to/holidays.js.map +1 -1
  337. package/dist/sdui/to/hours.js +4 -2
  338. package/dist/sdui/to/hours.js.map +1 -1
  339. package/dist/sdui/to/index.d.ts +11 -12
  340. package/dist/sdui/to/lessons.js +10 -9
  341. package/dist/sdui/to/lessons.js.map +1 -1
  342. package/dist/sdui/to/rooms.js +4 -2
  343. package/dist/sdui/to/rooms.js.map +1 -1
  344. package/dist/sdui/to/schedules.js +9 -9
  345. package/dist/sdui/to/schedules.js.map +1 -1
  346. package/dist/sdui/to/school-years.js +4 -3
  347. package/dist/sdui/to/school-years.js.map +1 -1
  348. package/dist/sdui/to/subjects.js.map +1 -1
  349. package/dist/sdui/to/substitution-plans.js +12 -11
  350. package/dist/sdui/to/substitution-plans.js.map +1 -1
  351. package/dist/sdui/to/teachers.js +4 -4
  352. package/dist/sdui/to/teachers.js.map +1 -1
  353. package/dist/sdui/types/index.d.ts +2 -0
  354. package/dist/vKlass/from/index.js +1 -3
  355. package/dist/vKlass/from/index.js.map +1 -1
  356. package/dist/vKlass/from/schedule.d.ts +18 -3
  357. package/dist/vKlass/from/schedule.js +16 -19
  358. package/dist/vKlass/from/schedule.js.map +1 -1
  359. package/dist/vKlass/index.d.ts +6 -4
  360. package/dist/vKlass/index.js.map +1 -1
  361. package/dist/vKlass/to/schedules.d.ts +1 -1
  362. package/dist/vKlass/to/schedules.js +5 -12
  363. package/dist/vKlass/to/schedules.js.map +1 -1
  364. package/dist/vKlass/types/index.d.ts +5 -5
  365. package/package.json +38 -29
  366. package/dist/PlanDigital/to/index.d.ts +0 -10
  367. package/dist/PlanDigital/to/index.js +0 -10
  368. package/dist/PlanDigital/to/index.js.map +0 -1
  369. package/dist/PlanDigital/to/schedules.js +0 -15
  370. package/dist/PlanDigital/to/schedules.js.map +0 -1
  371. package/dist/RS/v0/from/available-dependencies.js +0 -38
  372. package/dist/RS/v0/from/available-dependencies.js.map +0 -1
  373. package/dist/RS/v0/from/break-lengths.js +0 -15
  374. package/dist/RS/v0/from/break-lengths.js.map +0 -1
  375. package/dist/RS/v0/from/course-events.js +0 -68
  376. package/dist/RS/v0/from/course-events.js.map +0 -1
  377. package/dist/RS/v0/from/courses.js +0 -53
  378. package/dist/RS/v0/from/courses.js.map +0 -1
  379. package/dist/RS/v0/from/days.js +0 -14
  380. package/dist/RS/v0/from/days.js.map +0 -1
  381. package/dist/RS/v0/from/dependencies.js +0 -29
  382. package/dist/RS/v0/from/dependencies.js.map +0 -1
  383. package/dist/RS/v0/from/groups.js +0 -32
  384. package/dist/RS/v0/from/groups.js.map +0 -1
  385. package/dist/RS/v0/from/index.js +0 -32
  386. package/dist/RS/v0/from/index.js.map +0 -1
  387. package/dist/RS/v0/from/intervals.js +0 -15
  388. package/dist/RS/v0/from/intervals.js.map +0 -1
  389. package/dist/RS/v0/from/locked-times.js +0 -23
  390. package/dist/RS/v0/from/locked-times.js.map +0 -1
  391. package/dist/RS/v0/from/placements.js +0 -20
  392. package/dist/RS/v0/from/placements.js.map +0 -1
  393. package/dist/RS/v0/from/schedules.js +0 -44
  394. package/dist/RS/v0/from/schedules.js.map +0 -1
  395. package/dist/RS/v0/from/settings.js +0 -24
  396. package/dist/RS/v0/from/settings.js.map +0 -1
  397. package/dist/RS/v0/from/teachers.js +0 -31
  398. package/dist/RS/v0/from/teachers.js.map +0 -1
  399. package/dist/RS/v0/index.d.ts +0 -43
  400. package/dist/RS/v0/index.js +0 -12
  401. package/dist/RS/v0/index.js.map +0 -1
  402. package/dist/RS/v0/to/available-dependencies.js +0 -17
  403. package/dist/RS/v0/to/available-dependencies.js.map +0 -1
  404. package/dist/RS/v0/to/configurations.js +0 -22
  405. package/dist/RS/v0/to/configurations.js.map +0 -1
  406. package/dist/RS/v0/to/constraints.js +0 -34
  407. package/dist/RS/v0/to/constraints.js.map +0 -1
  408. package/dist/RS/v0/to/course-events/days.js +0 -13
  409. package/dist/RS/v0/to/course-events/days.js.map +0 -1
  410. package/dist/RS/v0/to/course-events/dependencies.js +0 -18
  411. package/dist/RS/v0/to/course-events/dependencies.js.map +0 -1
  412. package/dist/RS/v0/to/course-events/groups.js +0 -39
  413. package/dist/RS/v0/to/course-events/groups.js.map +0 -1
  414. package/dist/RS/v0/to/course-events/in-locations.js +0 -17
  415. package/dist/RS/v0/to/course-events/in-locations.js.map +0 -1
  416. package/dist/RS/v0/to/course-events/index.js +0 -52
  417. package/dist/RS/v0/to/course-events/index.js.map +0 -1
  418. package/dist/RS/v0/to/course-events/intervals.js +0 -12
  419. package/dist/RS/v0/to/course-events/intervals.js.map +0 -1
  420. package/dist/RS/v0/to/course-events/meta.js +0 -21
  421. package/dist/RS/v0/to/course-events/meta.js.map +0 -1
  422. package/dist/RS/v0/to/courses.js +0 -56
  423. package/dist/RS/v0/to/courses.js.map +0 -1
  424. package/dist/RS/v0/to/days.js +0 -11
  425. package/dist/RS/v0/to/days.js.map +0 -1
  426. package/dist/RS/v0/to/dependencies.js +0 -26
  427. package/dist/RS/v0/to/dependencies.js.map +0 -1
  428. package/dist/RS/v0/to/groups.js +0 -32
  429. package/dist/RS/v0/to/groups.js.map +0 -1
  430. package/dist/RS/v0/to/index.d.ts +0 -46
  431. package/dist/RS/v0/to/index.js +0 -34
  432. package/dist/RS/v0/to/index.js.map +0 -1
  433. package/dist/RS/v0/to/intervals.js +0 -17
  434. package/dist/RS/v0/to/intervals.js.map +0 -1
  435. package/dist/RS/v0/to/locked-times.js +0 -43
  436. package/dist/RS/v0/to/locked-times.js.map +0 -1
  437. package/dist/RS/v0/to/schedules.js +0 -16
  438. package/dist/RS/v0/to/schedules.js.map +0 -1
  439. package/dist/RS/v0/to/settings.js +0 -28
  440. package/dist/RS/v0/to/settings.js.map +0 -1
  441. package/dist/RS/v0/to/teachers.js +0 -30
  442. package/dist/RS/v0/to/teachers.js.map +0 -1
  443. package/dist/RS/v0/types/areas.d.ts +0 -8
  444. package/dist/RS/v0/types/available-dependencies.d.ts +0 -8
  445. package/dist/RS/v0/types/break-lengths.d.ts +0 -9
  446. package/dist/RS/v0/types/configurations.d.ts +0 -7
  447. package/dist/RS/v0/types/constraints.d.ts +0 -17
  448. package/dist/RS/v0/types/course-events.d.ts +0 -26
  449. package/dist/RS/v0/types/courses.d.ts +0 -27
  450. package/dist/RS/v0/types/days.d.ts +0 -8
  451. package/dist/RS/v0/types/dependencies.d.ts +0 -17
  452. package/dist/RS/v0/types/groups.d.ts +0 -25
  453. package/dist/RS/v0/types/index.d.ts +0 -31
  454. package/dist/RS/v0/types/intervals.d.ts +0 -8
  455. package/dist/RS/v0/types/locked-times.d.ts +0 -11
  456. package/dist/RS/v0/types/out-options.d.ts +0 -13
  457. package/dist/RS/v0/types/placements.d.ts +0 -12
  458. package/dist/RS/v0/types/schedules.d.ts +0 -15
  459. package/dist/RS/v0/types/settings.d.ts +0 -26
  460. package/dist/RS/v1/from/available-dependencies.js +0 -38
  461. package/dist/RS/v1/from/available-dependencies.js.map +0 -1
  462. package/dist/RS/v1/from/break-lengths.js +0 -15
  463. package/dist/RS/v1/from/break-lengths.js.map +0 -1
  464. package/dist/RS/v1/from/collections.js +0 -55
  465. package/dist/RS/v1/from/collections.js.map +0 -1
  466. package/dist/RS/v1/from/course-events.js +0 -65
  467. package/dist/RS/v1/from/course-events.js.map +0 -1
  468. package/dist/RS/v1/from/days.js +0 -14
  469. package/dist/RS/v1/from/days.js.map +0 -1
  470. package/dist/RS/v1/from/dependencies.js +0 -31
  471. package/dist/RS/v1/from/dependencies.js.map +0 -1
  472. package/dist/RS/v1/from/groups.js +0 -34
  473. package/dist/RS/v1/from/groups.js.map +0 -1
  474. package/dist/RS/v1/from/index.js +0 -32
  475. package/dist/RS/v1/from/index.js.map +0 -1
  476. package/dist/RS/v1/from/intervals.js +0 -18
  477. package/dist/RS/v1/from/intervals.js.map +0 -1
  478. package/dist/RS/v1/from/locked-times.js +0 -21
  479. package/dist/RS/v1/from/locked-times.js.map +0 -1
  480. package/dist/RS/v1/from/placements.js +0 -21
  481. package/dist/RS/v1/from/placements.js.map +0 -1
  482. package/dist/RS/v1/from/schedules.js +0 -44
  483. package/dist/RS/v1/from/schedules.js.map +0 -1
  484. package/dist/RS/v1/from/settings.js +0 -25
  485. package/dist/RS/v1/from/settings.js.map +0 -1
  486. package/dist/RS/v1/from/teachers.js +0 -33
  487. package/dist/RS/v1/from/teachers.js.map +0 -1
  488. package/dist/RS/v1/index.d.ts +0 -45
  489. package/dist/RS/v1/index.js +0 -12
  490. package/dist/RS/v1/index.js.map +0 -1
  491. package/dist/RS/v1/to/available-dependencies.js +0 -25
  492. package/dist/RS/v1/to/available-dependencies.js.map +0 -1
  493. package/dist/RS/v1/to/break-lengths.js +0 -19
  494. package/dist/RS/v1/to/break-lengths.js.map +0 -1
  495. package/dist/RS/v1/to/collections.js +0 -51
  496. package/dist/RS/v1/to/collections.js.map +0 -1
  497. package/dist/RS/v1/to/configurations.js +0 -22
  498. package/dist/RS/v1/to/configurations.js.map +0 -1
  499. package/dist/RS/v1/to/constraints.js +0 -26
  500. package/dist/RS/v1/to/constraints.js.map +0 -1
  501. package/dist/RS/v1/to/course-events/days.js +0 -12
  502. package/dist/RS/v1/to/course-events/days.js.map +0 -1
  503. package/dist/RS/v1/to/course-events/dependencies.js +0 -15
  504. package/dist/RS/v1/to/course-events/dependencies.js.map +0 -1
  505. package/dist/RS/v1/to/course-events/groups.js +0 -30
  506. package/dist/RS/v1/to/course-events/groups.js.map +0 -1
  507. package/dist/RS/v1/to/course-events/in-locations.js +0 -17
  508. package/dist/RS/v1/to/course-events/in-locations.js.map +0 -1
  509. package/dist/RS/v1/to/course-events/index.js +0 -47
  510. package/dist/RS/v1/to/course-events/index.js.map +0 -1
  511. package/dist/RS/v1/to/course-events/intervals.js +0 -11
  512. package/dist/RS/v1/to/course-events/intervals.js.map +0 -1
  513. package/dist/RS/v1/to/course-events/meta.js +0 -21
  514. package/dist/RS/v1/to/course-events/meta.js.map +0 -1
  515. package/dist/RS/v1/to/days.js +0 -11
  516. package/dist/RS/v1/to/days.js.map +0 -1
  517. package/dist/RS/v1/to/dependencies.js +0 -28
  518. package/dist/RS/v1/to/dependencies.js.map +0 -1
  519. package/dist/RS/v1/to/groups.js +0 -34
  520. package/dist/RS/v1/to/groups.js.map +0 -1
  521. package/dist/RS/v1/to/index.d.ts +0 -46
  522. package/dist/RS/v1/to/index.js +0 -34
  523. package/dist/RS/v1/to/index.js.map +0 -1
  524. package/dist/RS/v1/to/intervals.js +0 -17
  525. package/dist/RS/v1/to/intervals.js.map +0 -1
  526. package/dist/RS/v1/to/locked-times.js +0 -49
  527. package/dist/RS/v1/to/locked-times.js.map +0 -1
  528. package/dist/RS/v1/to/schedules.js +0 -16
  529. package/dist/RS/v1/to/schedules.js.map +0 -1
  530. package/dist/RS/v1/to/settings.js +0 -34
  531. package/dist/RS/v1/to/settings.js.map +0 -1
  532. package/dist/RS/v1/to/teachers.js +0 -34
  533. package/dist/RS/v1/to/teachers.js.map +0 -1
  534. package/dist/RS/v1/types/areas.d.ts +0 -8
  535. package/dist/RS/v1/types/available-dependencies.d.ts +0 -8
  536. package/dist/RS/v1/types/break-lengths.d.ts +0 -9
  537. package/dist/RS/v1/types/collections.d.ts +0 -27
  538. package/dist/RS/v1/types/configurations.d.ts +0 -10
  539. package/dist/RS/v1/types/constraints.d.ts +0 -17
  540. package/dist/RS/v1/types/course-events.d.ts +0 -26
  541. package/dist/RS/v1/types/days.d.ts +0 -8
  542. package/dist/RS/v1/types/dependencies.d.ts +0 -17
  543. package/dist/RS/v1/types/groups.d.ts +0 -25
  544. package/dist/RS/v1/types/index.d.ts +0 -31
  545. package/dist/RS/v1/types/intervals.d.ts +0 -8
  546. package/dist/RS/v1/types/locked-times.d.ts +0 -11
  547. package/dist/RS/v1/types/out-options.d.ts +0 -11
  548. package/dist/RS/v1/types/placements.d.ts +0 -12
  549. package/dist/RS/v1/types/schedules.d.ts +0 -16
  550. package/dist/RS/v1/types/settings.d.ts +0 -31
  551. package/dist/RS/v2/from/available-dependencies.js +0 -38
  552. package/dist/RS/v2/from/available-dependencies.js.map +0 -1
  553. package/dist/RS/v2/from/break-lengths.js +0 -15
  554. package/dist/RS/v2/from/break-lengths.js.map +0 -1
  555. package/dist/RS/v2/from/collections.js +0 -57
  556. package/dist/RS/v2/from/collections.js.map +0 -1
  557. package/dist/RS/v2/from/course-events.d.ts +0 -12
  558. package/dist/RS/v2/from/course-events.js +0 -67
  559. package/dist/RS/v2/from/course-events.js.map +0 -1
  560. package/dist/RS/v2/from/days.js +0 -14
  561. package/dist/RS/v2/from/days.js.map +0 -1
  562. package/dist/RS/v2/from/dependencies.js +0 -31
  563. package/dist/RS/v2/from/dependencies.js.map +0 -1
  564. package/dist/RS/v2/from/groups.js +0 -35
  565. package/dist/RS/v2/from/groups.js.map +0 -1
  566. package/dist/RS/v2/from/index.js +0 -32
  567. package/dist/RS/v2/from/index.js.map +0 -1
  568. package/dist/RS/v2/from/intervals.js +0 -18
  569. package/dist/RS/v2/from/intervals.js.map +0 -1
  570. package/dist/RS/v2/from/locked-times.js +0 -21
  571. package/dist/RS/v2/from/locked-times.js.map +0 -1
  572. package/dist/RS/v2/from/placements.js +0 -32
  573. package/dist/RS/v2/from/placements.js.map +0 -1
  574. package/dist/RS/v2/from/schedules.js +0 -78
  575. package/dist/RS/v2/from/schedules.js.map +0 -1
  576. package/dist/RS/v2/from/settings.js +0 -31
  577. package/dist/RS/v2/from/settings.js.map +0 -1
  578. package/dist/RS/v2/from/teachers.js +0 -33
  579. package/dist/RS/v2/from/teachers.js.map +0 -1
  580. package/dist/RS/v2/index.d.ts +0 -63
  581. package/dist/RS/v2/index.js +0 -12
  582. package/dist/RS/v2/index.js.map +0 -1
  583. package/dist/RS/v2/to/available-dependencies.js +0 -25
  584. package/dist/RS/v2/to/available-dependencies.js.map +0 -1
  585. package/dist/RS/v2/to/break-lengths.js +0 -19
  586. package/dist/RS/v2/to/break-lengths.js.map +0 -1
  587. package/dist/RS/v2/to/collections.js +0 -60
  588. package/dist/RS/v2/to/collections.js.map +0 -1
  589. package/dist/RS/v2/to/configurations.js +0 -23
  590. package/dist/RS/v2/to/configurations.js.map +0 -1
  591. package/dist/RS/v2/to/constraints.js +0 -88
  592. package/dist/RS/v2/to/constraints.js.map +0 -1
  593. package/dist/RS/v2/to/course-events/days.js +0 -12
  594. package/dist/RS/v2/to/course-events/days.js.map +0 -1
  595. package/dist/RS/v2/to/course-events/dependencies.js +0 -14
  596. package/dist/RS/v2/to/course-events/dependencies.js.map +0 -1
  597. package/dist/RS/v2/to/course-events/groups.js +0 -38
  598. package/dist/RS/v2/to/course-events/groups.js.map +0 -1
  599. package/dist/RS/v2/to/course-events/in-locations.js +0 -18
  600. package/dist/RS/v2/to/course-events/in-locations.js.map +0 -1
  601. package/dist/RS/v2/to/course-events/index.js +0 -56
  602. package/dist/RS/v2/to/course-events/index.js.map +0 -1
  603. package/dist/RS/v2/to/course-events/intervals.js +0 -11
  604. package/dist/RS/v2/to/course-events/intervals.js.map +0 -1
  605. package/dist/RS/v2/to/course-events/meta.js +0 -21
  606. package/dist/RS/v2/to/course-events/meta.js.map +0 -1
  607. package/dist/RS/v2/to/days.js +0 -11
  608. package/dist/RS/v2/to/days.js.map +0 -1
  609. package/dist/RS/v2/to/default.js +0 -36
  610. package/dist/RS/v2/to/default.js.map +0 -1
  611. package/dist/RS/v2/to/dependencies.js +0 -28
  612. package/dist/RS/v2/to/dependencies.js.map +0 -1
  613. package/dist/RS/v2/to/destructure.js +0 -40
  614. package/dist/RS/v2/to/destructure.js.map +0 -1
  615. package/dist/RS/v2/to/dynamic-locked-times.js +0 -57
  616. package/dist/RS/v2/to/dynamic-locked-times.js.map +0 -1
  617. package/dist/RS/v2/to/groups.js +0 -37
  618. package/dist/RS/v2/to/groups.js.map +0 -1
  619. package/dist/RS/v2/to/index.d.ts +0 -44
  620. package/dist/RS/v2/to/index.js +0 -36
  621. package/dist/RS/v2/to/index.js.map +0 -1
  622. package/dist/RS/v2/to/intervals.js +0 -32
  623. package/dist/RS/v2/to/intervals.js.map +0 -1
  624. package/dist/RS/v2/to/locked-times.js +0 -49
  625. package/dist/RS/v2/to/locked-times.js.map +0 -1
  626. package/dist/RS/v2/to/periods.js +0 -48
  627. package/dist/RS/v2/to/periods.js.map +0 -1
  628. package/dist/RS/v2/to/persons.js +0 -23
  629. package/dist/RS/v2/to/persons.js.map +0 -1
  630. package/dist/RS/v2/to/schedules.js +0 -19
  631. package/dist/RS/v2/to/schedules.js.map +0 -1
  632. package/dist/RS/v2/to/settings.js +0 -18
  633. package/dist/RS/v2/to/settings.js.map +0 -1
  634. package/dist/RS/v2/to/teachers.js +0 -37
  635. package/dist/RS/v2/to/teachers.js.map +0 -1
  636. package/dist/RS/v2/types/areas.d.ts +0 -8
  637. package/dist/RS/v2/types/available-dependencies.d.ts +0 -8
  638. package/dist/RS/v2/types/break-lengths.d.ts +0 -9
  639. package/dist/RS/v2/types/collections.d.ts +0 -29
  640. package/dist/RS/v2/types/configurations.d.ts +0 -10
  641. package/dist/RS/v2/types/constraints.d.ts +0 -21
  642. package/dist/RS/v2/types/course-events.d.ts +0 -30
  643. package/dist/RS/v2/types/days.d.ts +0 -8
  644. package/dist/RS/v2/types/default.d.ts +0 -25
  645. package/dist/RS/v2/types/dependencies.d.ts +0 -17
  646. package/dist/RS/v2/types/index.d.ts +0 -33
  647. package/dist/RS/v2/types/intervals.d.ts +0 -9
  648. package/dist/RS/v2/types/out-options.d.ts +0 -11
  649. package/dist/RS/v2/types/placements.d.ts +0 -12
  650. package/dist/RS/v2/types/schedules.d.ts +0 -18
  651. package/dist/RS/v3/from/division.js +0 -14
  652. package/dist/RS/v3/from/division.js.map +0 -1
  653. package/dist/RS/v3/from/index.js +0 -12
  654. package/dist/RS/v3/from/index.js.map +0 -1
  655. package/dist/RS/v3/from/schedules.js +0 -34
  656. package/dist/RS/v3/from/schedules.js.map +0 -1
  657. package/dist/RS/v3/index.d.ts +0 -21
  658. package/dist/RS/v3/index.js +0 -12
  659. package/dist/RS/v3/index.js.map +0 -1
  660. package/dist/RS/v3/to/available-dependencies.js +0 -26
  661. package/dist/RS/v3/to/available-dependencies.js.map +0 -1
  662. package/dist/RS/v3/to/break-lengths.js +0 -19
  663. package/dist/RS/v3/to/break-lengths.js.map +0 -1
  664. package/dist/RS/v3/to/collections.js +0 -56
  665. package/dist/RS/v3/to/collections.js.map +0 -1
  666. package/dist/RS/v3/to/configurations.js +0 -23
  667. package/dist/RS/v3/to/configurations.js.map +0 -1
  668. package/dist/RS/v3/to/constraints.js +0 -77
  669. package/dist/RS/v3/to/constraints.js.map +0 -1
  670. package/dist/RS/v3/to/course-events/days.js +0 -12
  671. package/dist/RS/v3/to/course-events/days.js.map +0 -1
  672. package/dist/RS/v3/to/course-events/dependencies.js +0 -14
  673. package/dist/RS/v3/to/course-events/dependencies.js.map +0 -1
  674. package/dist/RS/v3/to/course-events/groups.js +0 -44
  675. package/dist/RS/v3/to/course-events/groups.js.map +0 -1
  676. package/dist/RS/v3/to/course-events/in-locations.js +0 -18
  677. package/dist/RS/v3/to/course-events/in-locations.js.map +0 -1
  678. package/dist/RS/v3/to/course-events/index.js +0 -84
  679. package/dist/RS/v3/to/course-events/index.js.map +0 -1
  680. package/dist/RS/v3/to/course-events/intervals.js +0 -11
  681. package/dist/RS/v3/to/course-events/intervals.js.map +0 -1
  682. package/dist/RS/v3/to/course-events/meta.js +0 -21
  683. package/dist/RS/v3/to/course-events/meta.js.map +0 -1
  684. package/dist/RS/v3/to/days.js +0 -11
  685. package/dist/RS/v3/to/days.js.map +0 -1
  686. package/dist/RS/v3/to/default.js.map +0 -1
  687. package/dist/RS/v3/to/dependencies.js +0 -31
  688. package/dist/RS/v3/to/dependencies.js.map +0 -1
  689. package/dist/RS/v3/to/destructure.js +0 -33
  690. package/dist/RS/v3/to/destructure.js.map +0 -1
  691. package/dist/RS/v3/to/dynamic-locked-times.js +0 -97
  692. package/dist/RS/v3/to/dynamic-locked-times.js.map +0 -1
  693. package/dist/RS/v3/to/groups.js +0 -36
  694. package/dist/RS/v3/to/groups.js.map +0 -1
  695. package/dist/RS/v3/to/index.d.ts +0 -266
  696. package/dist/RS/v3/to/index.js.map +0 -1
  697. package/dist/RS/v3/to/individuals.js +0 -49
  698. package/dist/RS/v3/to/individuals.js.map +0 -1
  699. package/dist/RS/v3/to/intervals.js +0 -32
  700. package/dist/RS/v3/to/intervals.js.map +0 -1
  701. package/dist/RS/v3/to/locked-times.js +0 -49
  702. package/dist/RS/v3/to/locked-times.js.map +0 -1
  703. package/dist/RS/v3/to/periods.js +0 -48
  704. package/dist/RS/v3/to/periods.js.map +0 -1
  705. package/dist/RS/v3/to/schedules.js +0 -39
  706. package/dist/RS/v3/to/schedules.js.map +0 -1
  707. package/dist/RS/v3/to/settings.js +0 -18
  708. package/dist/RS/v3/to/settings.js.map +0 -1
  709. package/dist/RS/v3/to/teachers.js +0 -36
  710. package/dist/RS/v3/to/teachers.js.map +0 -1
  711. package/dist/RS/v3/to/util.js +0 -32
  712. package/dist/RS/v3/to/util.js.map +0 -1
  713. package/dist/RS/v3/types/areas.d.ts +0 -8
  714. package/dist/RS/v3/types/available-dependencies.d.ts +0 -8
  715. package/dist/RS/v3/types/break-lengths.d.ts +0 -9
  716. package/dist/RS/v3/types/collections.d.ts +0 -31
  717. package/dist/RS/v3/types/configurations.d.ts +0 -10
  718. package/dist/RS/v3/types/constraints.d.ts +0 -25
  719. package/dist/RS/v3/types/course-events.d.ts +0 -32
  720. package/dist/RS/v3/types/days.d.ts +0 -8
  721. package/dist/RS/v3/types/dependencies.d.ts +0 -17
  722. package/dist/RS/v3/types/groups.d.ts +0 -25
  723. package/dist/RS/v3/types/index.d.ts +0 -33
  724. package/dist/RS/v3/types/individuals.d.ts +0 -13
  725. package/dist/RS/v3/types/intervals.d.ts +0 -9
  726. package/dist/RS/v3/types/locked-times.d.ts +0 -11
  727. package/dist/RS/v3/types/out-options.d.ts +0 -23
  728. package/dist/RS/v3/types/placements.d.ts +0 -12
  729. package/dist/RS/v3/types/root-intervals.d.ts +0 -10
  730. package/dist/RS/v3/types/schedules.d.ts +0 -24
  731. package/dist/RS/v3/types/settings.d.ts +0 -12
  732. package/dist/SS12000/from/activities.js +0 -35
  733. package/dist/SS12000/from/activities.js.map +0 -1
  734. package/dist/SS12000/from/calendar-events.js +0 -20
  735. package/dist/SS12000/from/calendar-events.js.map +0 -1
  736. package/dist/SS12000/from/duties.js +0 -21
  737. package/dist/SS12000/from/duties.js.map +0 -1
  738. package/dist/SS12000/from/groups.js +0 -23
  739. package/dist/SS12000/from/groups.js.map +0 -1
  740. package/dist/SS12000/from/index.js +0 -24
  741. package/dist/SS12000/from/index.js.map +0 -1
  742. package/dist/SS12000/from/persons.js +0 -43
  743. package/dist/SS12000/from/persons.js.map +0 -1
  744. package/dist/SS12000/from/resources.js +0 -9
  745. package/dist/SS12000/from/resources.js.map +0 -1
  746. package/dist/SS12000/from/rooms.js +0 -18
  747. package/dist/SS12000/from/rooms.js.map +0 -1
  748. package/dist/SS12000/from/syllabuses.js +0 -21
  749. package/dist/SS12000/from/syllabuses.js.map +0 -1
  750. package/dist/SS12000/index.d.ts +0 -73
  751. package/dist/SS12000/index.js +0 -12
  752. package/dist/SS12000/index.js.map +0 -1
  753. package/dist/SS12000/to/activities.js +0 -55
  754. package/dist/SS12000/to/activities.js.map +0 -1
  755. package/dist/SS12000/to/calendar-events.js +0 -47
  756. package/dist/SS12000/to/calendar-events.js.map +0 -1
  757. package/dist/SS12000/to/common.js +0 -16
  758. package/dist/SS12000/to/common.js.map +0 -1
  759. package/dist/SS12000/to/duties.js +0 -36
  760. package/dist/SS12000/to/duties.js.map +0 -1
  761. package/dist/SS12000/to/groups.js +0 -37
  762. package/dist/SS12000/to/groups.js.map +0 -1
  763. package/dist/SS12000/to/index.d.ts +0 -25
  764. package/dist/SS12000/to/index.js +0 -24
  765. package/dist/SS12000/to/index.js.map +0 -1
  766. package/dist/SS12000/to/persons.js +0 -36
  767. package/dist/SS12000/to/persons.js.map +0 -1
  768. package/dist/SS12000/to/resources.js +0 -23
  769. package/dist/SS12000/to/resources.js.map +0 -1
  770. package/dist/SS12000/to/rooms.js +0 -28
  771. package/dist/SS12000/to/rooms.js.map +0 -1
  772. package/dist/SS12000/to/syllabuses.js +0 -30
  773. package/dist/SS12000/to/syllabuses.js.map +0 -1
  774. package/dist/SS12000/types/activities.d.ts +0 -41
  775. package/dist/SS12000/types/calendar-events.d.ts +0 -23
  776. package/dist/SS12000/types/codes.d.ts +0 -9
  777. package/dist/SS12000/types/duties.d.ts +0 -23
  778. package/dist/SS12000/types/duty-assignments.d.ts +0 -13
  779. package/dist/SS12000/types/groups.d.ts +0 -23
  780. package/dist/SS12000/types/index.d.ts +0 -21
  781. package/dist/SS12000/types/organisation.d.ts +0 -20
  782. package/dist/SS12000/types/persons.d.ts +0 -30
  783. package/dist/SS12000/types/resources.d.ts +0 -13
  784. package/dist/SS12000/types/rooms.d.ts +0 -17
  785. package/dist/SS12000/types/syllabus.d.ts +0 -19
  786. package/dist/core/v1/from/courses.js +0 -26
  787. package/dist/core/v1/from/courses.js.map +0 -1
  788. package/dist/core/v1/from/events.js +0 -12
  789. package/dist/core/v1/from/events.js.map +0 -1
  790. package/dist/core/v1/from/groups.js +0 -14
  791. package/dist/core/v1/from/groups.js.map +0 -1
  792. package/dist/core/v1/from/index.js +0 -8
  793. package/dist/core/v1/from/index.js.map +0 -1
  794. package/dist/core/v1/from/locations.js +0 -14
  795. package/dist/core/v1/from/locations.js.map +0 -1
  796. package/dist/core/v1/from/locked-times.js +0 -13
  797. package/dist/core/v1/from/locked-times.js.map +0 -1
  798. package/dist/core/v1/from/overlap-groups.js +0 -13
  799. package/dist/core/v1/from/overlap-groups.js.map +0 -1
  800. package/dist/core/v1/from/periods.js +0 -14
  801. package/dist/core/v1/from/periods.js.map +0 -1
  802. package/dist/core/v1/from/schedules.d.ts +0 -139
  803. package/dist/core/v1/from/schedules.js +0 -36
  804. package/dist/core/v1/from/schedules.js.map +0 -1
  805. package/dist/core/v1/from/teachers.js +0 -14
  806. package/dist/core/v1/from/teachers.js.map +0 -1
  807. package/dist/core/v1/index.d.ts +0 -14
  808. package/dist/core/v1/index.js +0 -12
  809. package/dist/core/v1/index.js.map +0 -1
  810. package/dist/core/v1/to/available-locations.js +0 -11
  811. package/dist/core/v1/to/available-locations.js.map +0 -1
  812. package/dist/core/v1/to/courses.js +0 -33
  813. package/dist/core/v1/to/courses.js.map +0 -1
  814. package/dist/core/v1/to/days.js +0 -13
  815. package/dist/core/v1/to/days.js.map +0 -1
  816. package/dist/core/v1/to/events.js +0 -35
  817. package/dist/core/v1/to/events.js.map +0 -1
  818. package/dist/core/v1/to/groups.js +0 -24
  819. package/dist/core/v1/to/groups.js.map +0 -1
  820. package/dist/core/v1/to/index.js +0 -10
  821. package/dist/core/v1/to/index.js.map +0 -1
  822. package/dist/core/v1/to/intervals.js +0 -14
  823. package/dist/core/v1/to/intervals.js.map +0 -1
  824. package/dist/core/v1/to/locations.js +0 -20
  825. package/dist/core/v1/to/locations.js.map +0 -1
  826. package/dist/core/v1/to/locked-times.js +0 -25
  827. package/dist/core/v1/to/locked-times.js.map +0 -1
  828. package/dist/core/v1/to/overlap-groups.js +0 -30
  829. package/dist/core/v1/to/overlap-groups.js.map +0 -1
  830. package/dist/core/v1/to/periods.js +0 -10
  831. package/dist/core/v1/to/periods.js.map +0 -1
  832. package/dist/core/v1/to/persons.js +0 -22
  833. package/dist/core/v1/to/persons.js.map +0 -1
  834. package/dist/core/v1/to/schedules.d.ts +0 -170
  835. package/dist/core/v1/to/schedules.js +0 -32
  836. package/dist/core/v1/to/schedules.js.map +0 -1
  837. package/dist/core/v1/to/settings.js +0 -13
  838. package/dist/core/v1/to/settings.js.map +0 -1
  839. package/dist/core/v1/to/teachers.js +0 -20
  840. package/dist/core/v1/to/teachers.js.map +0 -1
  841. package/dist/core/v1/types/areas.d.ts +0 -16
  842. package/dist/core/v1/types/available-locations.d.ts +0 -13
  843. package/dist/core/v1/types/break-lengths.d.ts +0 -5
  844. package/dist/core/v1/types/common/coalesced.d.ts +0 -10
  845. package/dist/core/v1/types/courses.d.ts +0 -54
  846. package/dist/core/v1/types/days.d.ts +0 -14
  847. package/dist/core/v1/types/division-settings.d.ts +0 -39
  848. package/dist/core/v1/types/divisions.d.ts +0 -45
  849. package/dist/core/v1/types/events.d.ts +0 -60
  850. package/dist/core/v1/types/groups.d.ts +0 -37
  851. package/dist/core/v1/types/index.d.ts +0 -41
  852. package/dist/core/v1/types/intervals.d.ts +0 -17
  853. package/dist/core/v1/types/locations.d.ts +0 -32
  854. package/dist/core/v1/types/locked-times.d.ts +0 -39
  855. package/dist/core/v1/types/meta.d.ts +0 -9
  856. package/dist/core/v1/types/overlap-groups.d.ts +0 -26
  857. package/dist/core/v1/types/periods.d.ts +0 -22
  858. package/dist/core/v1/types/persons.d.ts +0 -40
  859. package/dist/core/v1/types/teachers.d.ts +0 -34
  860. package/dist/core/v2/from/courses.js +0 -13
  861. package/dist/core/v2/from/courses.js.map +0 -1
  862. package/dist/core/v2/from/events.js +0 -12
  863. package/dist/core/v2/from/events.js.map +0 -1
  864. package/dist/core/v2/from/exceptions.js +0 -13
  865. package/dist/core/v2/from/exceptions.js.map +0 -1
  866. package/dist/core/v2/from/groups.js +0 -13
  867. package/dist/core/v2/from/groups.js.map +0 -1
  868. package/dist/core/v2/from/index.js.map +0 -1
  869. package/dist/core/v2/from/locations.js +0 -13
  870. package/dist/core/v2/from/locations.js.map +0 -1
  871. package/dist/core/v2/from/locked-times.js +0 -13
  872. package/dist/core/v2/from/locked-times.js.map +0 -1
  873. package/dist/core/v2/from/overlap-groups.js +0 -13
  874. package/dist/core/v2/from/overlap-groups.js.map +0 -1
  875. package/dist/core/v2/from/periods.js +0 -13
  876. package/dist/core/v2/from/periods.js.map +0 -1
  877. package/dist/core/v2/from/persons.js +0 -12
  878. package/dist/core/v2/from/persons.js.map +0 -1
  879. package/dist/core/v2/from/root-intervals.js +0 -13
  880. package/dist/core/v2/from/root-intervals.js.map +0 -1
  881. package/dist/core/v2/from/schedules.d.ts +0 -245
  882. package/dist/core/v2/from/schedules.js +0 -48
  883. package/dist/core/v2/from/schedules.js.map +0 -1
  884. package/dist/core/v2/from/syllabuses.js.map +0 -1
  885. package/dist/core/v2/from/teachers.js +0 -13
  886. package/dist/core/v2/from/teachers.js.map +0 -1
  887. package/dist/core/v2/index.d.ts +0 -16
  888. package/dist/core/v2/index.js +0 -12
  889. package/dist/core/v2/index.js.map +0 -1
  890. package/dist/core/v2/to/available-locations.js +0 -11
  891. package/dist/core/v2/to/available-locations.js.map +0 -1
  892. package/dist/core/v2/to/courses.js +0 -44
  893. package/dist/core/v2/to/courses.js.map +0 -1
  894. package/dist/core/v2/to/days.js +0 -13
  895. package/dist/core/v2/to/days.js.map +0 -1
  896. package/dist/core/v2/to/division.js +0 -10
  897. package/dist/core/v2/to/division.js.map +0 -1
  898. package/dist/core/v2/to/events.js +0 -47
  899. package/dist/core/v2/to/events.js.map +0 -1
  900. package/dist/core/v2/to/exceptions.js +0 -29
  901. package/dist/core/v2/to/exceptions.js.map +0 -1
  902. package/dist/core/v2/to/groups.js +0 -34
  903. package/dist/core/v2/to/groups.js.map +0 -1
  904. package/dist/core/v2/to/index.d.ts +0 -9
  905. package/dist/core/v2/to/index.js +0 -10
  906. package/dist/core/v2/to/index.js.map +0 -1
  907. package/dist/core/v2/to/intervals.js +0 -13
  908. package/dist/core/v2/to/intervals.js.map +0 -1
  909. package/dist/core/v2/to/locations.js +0 -35
  910. package/dist/core/v2/to/locations.js.map +0 -1
  911. package/dist/core/v2/to/locked-times.js +0 -25
  912. package/dist/core/v2/to/locked-times.js.map +0 -1
  913. package/dist/core/v2/to/overlap-groups.js +0 -30
  914. package/dist/core/v2/to/overlap-groups.js.map +0 -1
  915. package/dist/core/v2/to/periods.js +0 -10
  916. package/dist/core/v2/to/periods.js.map +0 -1
  917. package/dist/core/v2/to/persons.js +0 -25
  918. package/dist/core/v2/to/persons.js.map +0 -1
  919. package/dist/core/v2/to/root-intervals.js +0 -10
  920. package/dist/core/v2/to/root-intervals.js.map +0 -1
  921. package/dist/core/v2/to/schedules.d.ts +0 -249
  922. package/dist/core/v2/to/schedules.js +0 -40
  923. package/dist/core/v2/to/schedules.js.map +0 -1
  924. package/dist/core/v2/to/settings.js +0 -13
  925. package/dist/core/v2/to/settings.js.map +0 -1
  926. package/dist/core/v2/to/syllabuses.js +0 -16
  927. package/dist/core/v2/to/syllabuses.js.map +0 -1
  928. package/dist/core/v2/to/teachers.js +0 -28
  929. package/dist/core/v2/to/teachers.js.map +0 -1
  930. package/dist/core/v2/types/areas.d.ts +0 -16
  931. package/dist/core/v2/types/available-locations.d.ts +0 -13
  932. package/dist/core/v2/types/break-lengths.d.ts +0 -5
  933. package/dist/core/v2/types/common/coalesced.d.ts +0 -10
  934. package/dist/core/v2/types/common/planned-schedule-duration.d.ts +0 -7
  935. package/dist/core/v2/types/courses.d.ts +0 -76
  936. package/dist/core/v2/types/days.d.ts +0 -14
  937. package/dist/core/v2/types/divisions.d.ts +0 -54
  938. package/dist/core/v2/types/events.d.ts +0 -76
  939. package/dist/core/v2/types/groups.d.ts +0 -50
  940. package/dist/core/v2/types/index.d.ts +0 -49
  941. package/dist/core/v2/types/intervals.d.ts +0 -17
  942. package/dist/core/v2/types/locations.d.ts +0 -38
  943. package/dist/core/v2/types/locked-times.d.ts +0 -44
  944. package/dist/core/v2/types/overlap-groups.d.ts +0 -26
  945. package/dist/core/v2/types/periods.d.ts +0 -25
  946. package/dist/core/v2/types/root-intervals.d.ts +0 -23
  947. package/dist/core/v2/types/schedules.d.ts +0 -38
  948. package/dist/core/v2/types/syllabus.d.ts +0 -27
  949. package/dist/vKlass/from/index.d.ts +0 -9
@@ -1,4 +1,6 @@
1
+ import { getDayIndex } from "../../core/util.js";
1
2
  import moment from "moment";
3
+ import { Types } from "mongoose";
2
4
  import { Parser } from "@json2csv/plainjs";
3
5
 
4
6
  //#region src/IdunSoft/to/schedules.ts
@@ -22,34 +24,33 @@ const fields = [
22
24
  ];
23
25
  const delimiter = " ";
24
26
  var schedules_default = (courseEvents) => {
25
- const events = courseEvents.reduce((acc, event) => {
26
- if (event.parked) return acc;
27
- const teachers = event.teachers == null ? event.course.teachers : event.teachers;
28
- const groups = event.groups == null ? event.course.groups : event.groups;
29
- const room = (event.inLocations || []).map((x) => x && typeof x == "object" && "ids" in x ? x.ids : null).filter((x) => !!x).join(",");
30
- return acc.concat({
31
- Ämne: event.course.ids,
32
- Veckodag: days[(moment.utc(event.start).day() + 6) % 7],
27
+ const events = courseEvents.map((event) => {
28
+ if (event.parked) return;
29
+ if (!event.start || !event.end) return;
30
+ const day = days.at(getDayIndex(event.start));
31
+ if (!day) throw new Error("Invalid event day");
32
+ const course = event.course;
33
+ if (!(course && typeof course == "object" && !(course instanceof Types.ObjectId))) throw new Error("Event course not found or invalid");
34
+ const teachers = (event.teachers ?? course.teachers)?.map((x) => x.to);
35
+ const groups = (event.groups ?? course.groups)?.map((x) => x.to);
36
+ const doc = {
37
+ Ämne: course.ids,
38
+ Veckodag: day,
33
39
  Starttid: moment.utc(event.start).format("HH.mm:ss"),
34
40
  Sluttid: moment.utc(event.end).format("HH.mm:ss"),
35
- Lärare: (teachers || []).map((teacher) => teacher.to.ids).join(","),
36
- Klass: (groups || []).map((group) => group.to.ids).join(","),
37
- Klassrum: room,
41
+ Lärare: (teachers ?? []).map((x) => typeof x == "object" && "ids" in x ? x.ids : null).filter((x) => x != null).join(","),
42
+ Klass: (groups ?? []).map((x) => typeof x == "object" && "ids" in x ? x.ids : null).filter((x) => x != null).join(","),
43
+ Klassrum: (event.inLocations ?? []).map((x) => x && typeof x == "object" && "ids" in x ? x.ids : null).filter((x) => x != null).join(","),
38
44
  Halvklass: "Nej"
39
- });
40
- }, []);
45
+ };
46
+ return doc;
47
+ }).filter((x) => x != null);
41
48
  const opts = {
42
49
  fields,
43
50
  delimiter
44
51
  };
45
- let csv = "";
46
- try {
47
- const parser = new Parser(opts);
48
- csv = parser.parse(events);
49
- } catch (err) {
50
- console.warn(err.message);
51
- }
52
- return csv;
52
+ const parser = new Parser(opts);
53
+ return parser.parse(events);
53
54
  };
54
55
 
55
56
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"schedules.js","names":["days: string[]","fields: string[]","delimiter: string","opts: ParserOptions<ToEvent>","csv: string"],"sources":["../../../src/IdunSoft/to/schedules.ts"],"sourcesContent":["import { Parser, ParserOptions } from '@json2csv/plainjs';\nimport moment from 'moment';\n\nimport { ToEvent } from '../types/events';\n\nimport { Deserialized,\n Types } from '../../core/types';\n\nconst days: string[] = ['måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag'];\nconst fields: string[] = ['Veckodag', 'Starttid', 'Sluttid', 'Klass', 'Ämne', 'Kommentar', 'Lärare', 'Klassrum', 'Halvklass'];\nconst delimiter: string = '\\t';\nconst quote: string = '';\n\nexport default (courseEvents: Deserialized<Types.event>[]): string => {\n const events = courseEvents.reduce((acc: ToEvent[], event) => {\n if (event.parked)\n return acc;\n\n const teachers = (event.teachers == null ? event.course!.teachers : event.teachers);\n const groups = (event.groups == null ? event.course!.groups : event.groups);\n\n const room = (event.inLocations || [])\n .map(x => x && typeof x == 'object' && 'ids' in x ? x.ids : null)\n .filter((x): x is NonNullable<typeof x> => !!x)\n .join(',');\n\n return acc.concat({\n Ämne: event.course!.ids,\n Veckodag: days[(moment.utc(event.start).day() + 6) % 7],\n Starttid: moment.utc(event.start).format('HH.mm:ss'),\n Sluttid: moment.utc(event.end).format('HH.mm:ss'),\n Lärare: (teachers || []).map(teacher => teacher.to.ids).join(','),\n Klass: (groups || []).map(group => group.to.ids ).join(','),\n Klassrum: room,\n Halvklass: 'Nej'\n });\n }, []);\n\n const opts: ParserOptions<ToEvent> = { fields, delimiter/* , quote */ };\n let csv: string = '';\n\n try {\n const parser = new Parser(opts);\n csv = parser.parse(events);\n } catch (err) {\n console.warn((err as Error).message);\n }\n return csv;\n};\n"],"mappings":";;;;AAQA,MAAMA,OAAoB;CAAC;CAAU;CAAU;CAAU;CAAW;;AACpE,MAAMC,SAAoB;CAAC;CAAY;CAAY;CAAW;CAAS;CAAQ;CAAa;CAAU;CAAY;;AAClH,MAAMC,YAAoB;AAG1B,yBAAgB,iBAAsD;CACpE,MAAM,SAAS,aAAa,QAAQ,KAAgB,UAAU;AAC5D,MAAI,MAAM,OACR,QAAO;EAET,MAAM,WAAY,MAAM,YAAY,OAAO,MAAM,OAAQ,WAAW,MAAM;EAC1E,MAAM,SAAY,MAAM,UAAU,OAAS,MAAM,OAAQ,SAAS,MAAM;EAExE,MAAM,QAAY,MAAM,eAAe,IACpC,KAAI,MAAK,KAAK,OAAO,KAAK,YAAY,SAAS,IAAI,EAAE,MAAM,MAC3D,QAAQ,MAAkC,CAAC,CAAC,GAC5C,KAAK;AAER,SAAO,IAAI,OAAO;GAChB,MAAW,MAAM,OAAQ;GACzB,UAAW,MAAM,OAAO,IAAI,MAAM,OAAO,QAAQ,KAAK;GACtD,UAAW,OAAO,IAAI,MAAM,OAAO,OAAO;GAC1C,SAAW,OAAO,IAAI,MAAM,KAAK,OAAO;GACxC,SAAY,YAAY,IAAI,KAAI,YAAW,QAAQ,GAAG,KAAK,KAAK;GAChE,QAAY,UAAY,IAAI,KAAI,UAAW,MAAM,GAAG,KAAO,KAAK;GAChE,UAAW;GACX,WAAW;;IAEZ;CAEH,MAAMC,OAA+B;EAAE;EAAQ;;CAC/C,IAAIC,MAA2B;AAE/B,KAAI;EACF,MAAM,SAAS,IAAI,OAAO;AAC1B,QAAM,OAAO,MAAM;UACZ,KAAK;AACZ,UAAQ,KAAM,IAAc;;AAE9B,QAAO"}
1
+ {"version":3,"file":"schedules.js","names":["MongooseTypes","doc: IdunSoftTypes.toEvent","opts: ParserOptions<IdunSoftTypes.toEvent>"],"sources":["../../../src/IdunSoft/to/schedules.ts"],"sourcesContent":["import type { ParserOptions } from '@json2csv/plainjs';\nimport { Parser } from '@json2csv/plainjs';\nimport moment from 'moment';\nimport { Types as MongooseTypes } from 'mongoose';\nimport type { Types as IdunSoftTypes } from '../types';\nimport type { CoreTypes } from '../../core';\nimport { getDayIndex } from '../../core/util';\n\nconst days = ['måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag'];\nconst fields = ['Veckodag', 'Starttid', 'Sluttid', 'Klass', 'Ämne', 'Kommentar', 'Lärare', 'Klassrum', 'Halvklass'];\nconst delimiter = '\\t';\nconst quote = '';\n\nexport default (courseEvents: CoreTypes.mixed.event[]): string => {\n const events = courseEvents\n .map(event => {\n if (event.parked) return;\n if (!event.start || !event.end) return;\n\n const day = days.at(getDayIndex(event.start));\n if (!day) throw new Error('Invalid event day');\n\n const course = event.course;\n if (!(course && typeof course == 'object' && !(course instanceof MongooseTypes.ObjectId)))\n throw new Error('Event course not found or invalid');\n\n const teachers = (event.teachers ?? course.teachers)?.map(x => x.to);\n const groups = (event.groups ?? course.groups )?.map(x => x.to);\n\n const doc: IdunSoftTypes.toEvent = {\n Ämne: course.ids,\n Veckodag: day,\n Starttid: moment.utc(event.start).format('HH.mm:ss'),\n Sluttid: moment.utc(event.end ).format('HH.mm:ss'),\n Lärare: (teachers ?? []).map(x => typeof x == 'object' && 'ids' in x ? x.ids : null).filter(x => x != null).join(','),\n Klass: (groups ?? []).map(x => typeof x == 'object' && 'ids' in x ? x.ids : null).filter(x => x != null).join(','),\n Klassrum: (event.inLocations ?? []).map(x => x && typeof x == 'object' && 'ids' in x ? x.ids : null).filter(x => x != null).join(','),\n Halvklass: 'Nej'\n };\n return doc;\n })\n .filter(x => x != null);\n\n const opts: ParserOptions<IdunSoftTypes.toEvent> = { fields, delimiter/* , quote */ };\n const parser = new Parser(opts);\n return parser.parse(events);\n};\n"],"mappings":";;;;;;AAQA,MAAM,OAAY;CAAC;CAAU;CAAU;CAAU;CAAW;;AAC5D,MAAM,SAAY;CAAC;CAAY;CAAY;CAAW;CAAS;CAAQ;CAAa;CAAU;CAAY;;AAC1G,MAAM,YAAY;AAGlB,yBAAgB,iBAAkD;CAChE,MAAM,SAAS,aACZ,KAAI,UAAS;AACZ,MAAI,MAAM,OAAQ;AAClB,MAAI,CAAC,MAAM,SAAS,CAAC,MAAM,IAAK;EAEhC,MAAM,MAAM,KAAK,GAAG,YAAY,MAAM;AACtC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM;EAE1B,MAAM,SAAS,MAAM;AACrB,MAAI,EAAE,UAAU,OAAO,UAAU,YAAY,EAAE,kBAAkBA,MAAc,WAC7E,OAAM,IAAI,MAAM;EAElB,MAAM,YAAY,MAAM,YAAY,OAAO,WAAW,KAAI,MAAK,EAAE;EACjE,MAAM,UAAY,MAAM,UAAY,OAAO,SAAW,KAAI,MAAK,EAAE;EAEjE,MAAMC,MAA6B;GACjC,MAAW,OAAO;GAClB,UAAW;GACX,UAAW,OAAO,IAAI,MAAM,OAAO,OAAO;GAC1C,SAAW,OAAO,IAAI,MAAM,KAAO,OAAO;GAC1C,SAAY,YAAqB,IAAI,KAAI,MAAU,OAAO,KAAK,YAAY,SAAS,IAAI,EAAE,MAAM,MAAM,QAAO,MAAK,KAAK,MAAM,KAAK;GAClI,QAAY,UAAqB,IAAI,KAAI,MAAU,OAAO,KAAK,YAAY,SAAS,IAAI,EAAE,MAAM,MAAM,QAAO,MAAK,KAAK,MAAM,KAAK;GAClI,WAAY,MAAM,eAAe,IAAI,KAAI,MAAK,KAAK,OAAO,KAAK,YAAY,SAAS,IAAI,EAAE,MAAM,MAAM,QAAO,MAAK,KAAK,MAAM,KAAK;GAClI,WAAW;;AAEb,SAAO;IAER,QAAO,MAAK,KAAK;CAEpB,MAAMC,OAA6C;EAAE;EAAQ;;CAC7D,MAAM,SAAS,IAAI,OAAO;AAC1B,QAAO,OAAO,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_to"],"sources":["../../src/InfoMentor/index.ts"],"sourcesContent":["import _to from './to';\nimport { Types } from './types';\n\nexport class InfoMentorMap {\n static to = _to;\n}\n\nexport type { Types as InfoMentorTypes };"],"mappings":";;;AAGA,IAAa,gBAAb,MAA2B;CACzB,OAAO,KAAOA"}
1
+ {"version":3,"file":"index.js","names":["_to"],"sources":["../../src/InfoMentor/index.ts"],"sourcesContent":["import _to from './to';\nimport type { Types } from './types';\n\nexport class InfoMentorMap {\n static to = _to;\n}\n\nexport { Types as InfoMentorTypes };"],"mappings":";;;AAGA,IAAa,gBAAb,MAA2B;CACzB,OAAO,KAAKA"}
@@ -1,8 +1,8 @@
1
- import { Types } from "../../core/v2/types/index.js";
1
+ import { Types } from "../../core/types/index.js";
2
2
 
3
3
  //#region src/InfoMentor/to/index.d.ts
4
4
  declare class export_default {
5
- static schedules: (courseEvents: Types.event[]) => Buffer | null;
5
+ static schedules: (courseEvents: Types.mixed.event[]) => Buffer;
6
6
  }
7
7
  //#endregion
8
8
  export { export_default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../src/InfoMentor/to/index.ts"],"sourcesContent":["import _schedules from './schedules';\n\nexport default class {\n static schedules = _schedules;\n}"],"mappings":";;;AAEA,uBAAqB;CACnB,OAAO,YAAsBA"}
1
+ {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../src/InfoMentor/to/index.ts"],"sourcesContent":["import _schedules from './schedules';\n\nexport default class {\n static schedules = _schedules;\n}"],"mappings":";;;AAEA,uBAAqB;CACnB,OAAO,YAAYA"}
@@ -1,8 +1,8 @@
1
+ import { getDayIndex } from "../../core/util.js";
1
2
  import moment from "moment";
2
- import { isObject, isString } from "lodash-es";
3
- import Papa from "papaparse";
4
3
  import { Types } from "mongoose";
5
- import * as encode from "iconv-lite";
4
+ import Papa from "papaparse";
5
+ import { encode } from "iconv-lite";
6
6
 
7
7
  //#region src/InfoMentor/to/schedules.ts
8
8
  const days = [
@@ -12,7 +12,7 @@ const days = [
12
12
  "TOR",
13
13
  "FRE"
14
14
  ];
15
- const fields = [
15
+ const columns = [
16
16
  "Ämne",
17
17
  "Dag",
18
18
  "Starttid",
@@ -24,34 +24,33 @@ const fields = [
24
24
  const delimiter = " ";
25
25
  const encoding = "windows-1252";
26
26
  var schedules_default = (courseEvents) => {
27
- const events = courseEvents.reduce((acc, event) => {
28
- if (event.parked || !event.course || !event.start || !event.end) return acc;
29
- if (!isObject(event.course) || event.course instanceof Types.ObjectId) throw new Error("(InfoMentor::To::Schedules) Event course is not an deserialized object");
30
- const teachers = event.teachers == null ? event.course.teachers : event.teachers;
31
- const groups = event.groups == null ? event.course.groups : event.groups;
32
- const room = (event.inLocations || []).filter((x) => x !== null).map((locations) => locations.displayName).join(",");
33
- return acc.concat({
34
- Ämne: event.course.displayName,
35
- Dag: days[(moment.utc(event.start).day() + 6) % 7],
27
+ const events = courseEvents.map((event) => {
28
+ if (event.parked || !event.start || !event.end) return;
29
+ const course = event.course;
30
+ if (!course) return;
31
+ const day = days.at(getDayIndex(event.start));
32
+ if (!day) throw new Error("Invalid event day");
33
+ if (typeof course != "object" || course instanceof Types.ObjectId) throw new Error("(InfoMentor::To::Schedules) Event course is not an deserialized object");
34
+ const Personal = (event.teachers ?? course.teachers ?? []).map(({ to: x }) => typeof x == "object" && "displayName" in x ? x.displayName : null).filter((x) => x != null).join(",");
35
+ const Klasser = (event.groups ?? course.groups ?? []).map(({ to: x }) => typeof x == "object" && "displayName" in x ? x.displayName : null).filter((x) => x != null).join(",");
36
+ const Salar = (event.inLocations ?? []).map((x) => x && typeof x == "object" && "displayName" in x ? x.displayName : null).filter((x) => x != null).join(",");
37
+ const doc = {
38
+ Ämne: course.displayName,
39
+ Dag: day,
36
40
  Starttid: moment.utc(event.start).format("HH.mm"),
37
41
  Längd: moment.utc(event.end).diff(moment.utc(event.start), "minutes"),
38
- Personal: (teachers || []).map(({ to }) => !isString(to) && "displayName" in to ? to.displayName : null).filter(Boolean).join(","),
39
- Klasser: (groups || []).map(({ to }) => !isString(to) && "displayName" in to ? to.displayName : null).filter(Boolean).join(","),
40
- Salar: room
41
- });
42
- }, []);
42
+ Personal,
43
+ Klasser,
44
+ Salar
45
+ };
46
+ return doc;
47
+ });
43
48
  const opts = {
44
- columns: fields,
49
+ columns,
45
50
  delimiter
46
51
  };
47
- try {
48
- let csv = "";
49
- csv = Papa.unparse(events, opts);
50
- return encode.encode(csv, encoding);
51
- } catch (err) {
52
- console.warn(err.message);
53
- }
54
- return null;
52
+ const csv = Papa.unparse(events, opts);
53
+ return encode(csv, encoding);
55
54
  };
56
55
 
57
56
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"schedules.js","names":["days: string[]","fields: string[]","delimiter: string","encoding: string","MongoTypes","room: string","csv: string"],"sources":["../../../src/InfoMentor/to/schedules.ts"],"sourcesContent":["import { Types as MongoTypes } from 'mongoose';\nimport moment from 'moment';\nimport * as encode from 'iconv-lite';\nimport Papa from 'papaparse';\nimport { isObject, isString } from 'lodash-es';\n\nimport { Types } from '../types';\n\nimport { Types as CoreTypes } from '../../core/types';\n\nconst days: string[] = ['MÅN', 'TIS', 'ONS', 'TOR', 'FRE'];\nconst fields: string[] = ['Ämne', 'Dag', 'Starttid', 'Längd', 'Personal', 'Klasser', 'Salar'];\nconst delimiter: string = '\\t';\nconst quote: string = '';\nconst encoding: string = 'windows-1252';\n\nexport default (courseEvents: CoreTypes.event[]): Buffer | null => {\n const events = courseEvents.reduce((acc: Types.event[], event) => {\n if (event.parked || !event.course || !event.start || !event.end)\n return acc;\n\n if (!isObject(event.course) || event.course instanceof MongoTypes.ObjectId)\n throw new Error('(InfoMentor::To::Schedules) Event course is not an deserialized object');\n\n const teachers = event.teachers == null ? event.course.teachers : event.teachers;\n const groups = event.groups == null ? event.course.groups : event.groups;\n\n const room: string = ((event.inLocations || []) as CoreTypes.location[])\n .filter((x: any) => x !== null)\n .map((locations: CoreTypes.location) => locations.displayName)\n .join(',');\n\n return acc.concat({\n Ämne: event.course.displayName,\n Dag: days[(moment.utc(event.start).day() + 6) % 7],\n Starttid: moment.utc(event.start).format('HH.mm'),\n Längd: moment.utc(event.end).diff(moment.utc(event.start), 'minutes'),\n Personal: (teachers || []).map(({ to }) => (!isString(to) && 'displayName' in to) ? to.displayName : null).filter(Boolean)\n .join(','),\n Klasser: (groups || []).map(({ to }) => (!isString(to) && 'displayName' in to) ? to.displayName : null).filter(Boolean)\n .join(','),\n Salar: room,\n });\n }, []);\n\n //const opts = { fields, delimiter, quote };\n const opts = { columns: fields, delimiter };\n try {\n let csv: string = '';\n csv = Papa.unparse(events, opts);\n /*const parser = new Parser(opts);\n csv = parser.parse(events);*/\n\n return encode.encode(csv, encoding);\n } catch (err) {\n console.warn((err as Error).message);\n }\n\n return null;\n};\n"],"mappings":";;;;;;;AAUA,MAAMA,OAAsB;CAAC;CAAO;CAAO;CAAO;CAAO;;AACzD,MAAMC,SAAsB;CAAC;CAAQ;CAAO;CAAY;CAAS;CAAY;CAAW;;AACxF,MAAMC,YAAsB;AAE5B,MAAMC,WAAsB;AAE5B,yBAAgB,iBAAmD;CACjE,MAAM,SAAS,aAAa,QAAQ,KAAoB,UAAU;AAChE,MAAI,MAAM,UAAU,CAAC,MAAM,UAAU,CAAC,MAAM,SAAS,CAAC,MAAM,IAC1D,QAAO;AAET,MAAI,CAAC,SAAS,MAAM,WAAW,MAAM,kBAAkBC,MAAW,SAChE,OAAM,IAAI,MAAM;EAElB,MAAM,WAAW,MAAM,YAAY,OAAO,MAAM,OAAO,WAAW,MAAM;EACxE,MAAM,SAAW,MAAM,UAAU,OAAO,MAAM,OAAO,SAAS,MAAM;EAEpE,MAAMC,QAAwB,MAAM,eAAe,IAChD,QAAQ,MAAW,MAAM,MACzB,KAAK,cAAkC,UAAU,aACjD,KAAK;AAER,SAAO,IAAI,OAAO;GAChB,MAAU,MAAM,OAAO;GACvB,KAAU,MAAM,OAAO,IAAI,MAAM,OAAO,QAAQ,KAAK;GACrD,UAAU,OAAO,IAAI,MAAM,OAAO,OAAO;GACzC,OAAU,OAAO,IAAI,MAAM,KAAK,KAAK,OAAO,IAAI,MAAM,QAAQ;GAC9D,WAAW,YAAY,IAAI,KAAK,EAAE,SAAU,CAAC,SAAS,OAAO,iBAAiB,KAAM,GAAG,cAAc,MAAM,OAAO,SAC/G,KAAK;GACR,UAAU,UAAY,IAAI,KAAK,EAAE,SAAU,CAAC,SAAS,OAAO,iBAAiB,KAAM,GAAG,cAAc,MAAM,OAAO,SAC9G,KAAK;GACR,OAAO;;IAER;CAGH,MAAM,OAAO;EAAE,SAAS;EAAQ;;AAChC,KAAI;EACF,IAAIC,MAAc;AAClB,QAAM,KAAK,QAAQ,QAAQ;AAI3B,SAAO,OAAO,OAAO,KAAK;UACnB,KAAK;AACZ,UAAQ,KAAM,IAAc;;AAG9B,QAAO"}
1
+ {"version":3,"file":"schedules.js","names":["MongooseTypes","doc: InfoMentorTypes.event"],"sources":["../../../src/InfoMentor/to/schedules.ts"],"sourcesContent":["import { Types as MongooseTypes } from 'mongoose';\nimport moment from 'moment';\nimport { encode } from 'iconv-lite';\nimport Papa from 'papaparse';\nimport type { Types as InfoMentorTypes } from '../types';\nimport type { CoreTypes } from '../../core';\nimport { getDayIndex } from '../../core/util';\n\nconst days = ['MÅN', 'TIS', 'ONS', 'TOR', 'FRE'];\nconst columns = ['Ämne', 'Dag', 'Starttid', 'Längd', 'Personal', 'Klasser', 'Salar'];\nconst delimiter = '\\t';\nconst encoding = 'windows-1252';\n\nexport default (courseEvents: CoreTypes.mixed.event[]): Buffer => {\n const events = courseEvents\n .map(event => {\n if (event.parked || !event.start || !event.end) return;\n\n const course = event.course;\n if (!course) return;\n\n const day = days.at(getDayIndex(event.start));\n if (!day) throw new Error('Invalid event day');\n\n if (typeof course != 'object' || course instanceof MongooseTypes.ObjectId)\n throw new Error('(InfoMentor::To::Schedules) Event course is not an deserialized object');\n\n const Personal = (event.teachers ?? course.teachers ?? []).map(({ to: x }) => typeof x == 'object' && 'displayName' in x ? x.displayName : null).filter(x => x != null).join(',');\n const Klasser = (event.groups ?? course.groups ?? []).map(({ to: x }) => typeof x == 'object' && 'displayName' in x ? x.displayName : null).filter(x => x != null).join(',');\n const Salar = (event.inLocations ?? []).map(x => x && typeof x == 'object' && 'displayName' in x ? x.displayName : null).filter(x => x != null).join(',');\n\n const doc: InfoMentorTypes.event ={\n Ämne: course.displayName,\n Dag: day,\n Starttid: moment.utc(event.start).format('HH.mm'),\n Längd: moment.utc(event.end).diff(moment.utc(event.start), 'minutes'),\n Personal,\n Klasser,\n Salar,\n };\n return doc;\n });\n\n const opts = { columns, delimiter };\n const csv = Papa.unparse(events, opts);\n return encode(csv, encoding);\n};\n"],"mappings":";;;;;;;AAQA,MAAM,OAAY;CAAC;CAAO;CAAO;CAAO;CAAO;;AAC/C,MAAM,UAAY;CAAC;CAAQ;CAAO;CAAY;CAAS;CAAY;CAAW;;AAC9E,MAAM,YAAY;AAClB,MAAM,WAAY;AAElB,yBAAgB,iBAAkD;CAChE,MAAM,SAAS,aACZ,KAAI,UAAS;AACZ,MAAI,MAAM,UAAU,CAAC,MAAM,SAAS,CAAC,MAAM,IAAK;EAEhD,MAAM,SAAS,MAAM;AACrB,MAAI,CAAC,OAAQ;EAEb,MAAM,MAAM,KAAK,GAAG,YAAY,MAAM;AACtC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM;AAE1B,MAAI,OAAO,UAAU,YAAY,kBAAkBA,MAAc,SAC/D,OAAM,IAAI,MAAM;EAElB,MAAM,YAAY,MAAM,YAAY,OAAO,YAAY,IAAI,KAAK,EAAE,IAAI,QAAa,OAAO,KAAK,YAAY,iBAAiB,IAAI,EAAE,cAAc,MAAM,QAAO,MAAK,KAAK,MAAM,KAAK;EAClL,MAAM,WAAY,MAAM,UAAY,OAAO,UAAY,IAAI,KAAK,EAAE,IAAI,QAAa,OAAO,KAAK,YAAY,iBAAiB,IAAI,EAAE,cAAc,MAAM,QAAO,MAAK,KAAK,MAAM,KAAK;EAClL,MAAM,SAAY,MAAM,eAA+B,IAAI,KAAI,MAAe,KAAK,OAAO,KAAK,YAAY,iBAAiB,IAAI,EAAE,cAAc,MAAM,QAAO,MAAK,KAAK,MAAM,KAAK;EAElL,MAAMC,MAA4B;GAChC,MAAU,OAAO;GACjB,KAAU;GACV,UAAU,OAAO,IAAI,MAAM,OAAO,OAAO;GACzC,OAAU,OAAO,IAAI,MAAM,KAAK,KAAK,OAAO,IAAI,MAAM,QAAQ;GAC9D;GACA;GACA;;AAEF,SAAO;;CAGX,MAAM,OAAO;EAAE;EAAS;;CACxB,MAAM,MAAM,KAAK,QAAQ,QAAQ;AACjC,QAAO,OAAO,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../src/PlanDigital/from/index.ts"],"sourcesContent":["import { FromInterface } from '../../core/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/PlanDigital/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,4 +1,4 @@
1
- import { countBy, size, sum, trim } from "lodash-es";
1
+ import { countBy, size, sum } from "lodash-es";
2
2
 
3
3
  //#region src/PlanDigital/from/schedules.ts
4
4
  var schedules_default = (input, options) => {
@@ -8,7 +8,8 @@ var schedules_default = (input, options) => {
8
8
  errors.push("The schedule data does not contain any periods.");
9
9
  return { meta: { errors } };
10
10
  }
11
- if (!options.selectedPeriods?.length) {
11
+ const selectedPeriods = options.selectedPeriods;
12
+ if (!selectedPeriods?.length) {
12
13
  errors.push("No periods were selected.");
13
14
  return { meta: { errors } };
14
15
  }
@@ -22,16 +23,16 @@ var schedules_default = (input, options) => {
22
23
  return { meta: { errors } };
23
24
  }
24
25
  const timeUnit = input["Perioder"][0].Tidsenhet;
25
- const courses = [];
26
+ const courses = new Array();
26
27
  const teacherSet = /* @__PURE__ */ new Set();
27
28
  const groupSet = /* @__PURE__ */ new Set();
28
29
  input["Tabell Tjänstefördelning"].forEach((c) => {
29
- const periodTimes = options.selectedPeriods.map((x) => c[`Tid ${x}`] ?? 0);
30
+ const periodTimes = selectedPeriods.map((x) => c[`Tid ${x}`] ?? 0);
30
31
  if (sum(periodTimes) == 0) return;
31
32
  const displayName = c[options.displayName ?? "Gruppnamn"];
32
33
  const subject = c["Kurskod"];
33
- const groups$1 = c["Klass"]?.split(",").map(trim);
34
- const teachers$1 = c["Sign"]?.split(",").map(trim);
34
+ const groups$1 = c["Klass"]?.split(",").map((x) => x.trim());
35
+ const teachers$1 = c["Sign"]?.split(",").map((x) => x.trim());
35
36
  const periodTime = size(countBy(periodTimes)) == 1 ? periodTimes[0] : void 0;
36
37
  const minutesPerWeek = timeUnit == "Minuter/Vecka" ? periodTime : void 0;
37
38
  const expectedTotalHours = timeUnit == "Timmar/Period" ? periodTime : void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"schedules.js","names":["warnings: string[]","errors: string[]","courses: CoreTypes.course[]","groups","teachers"],"sources":["../../../src/PlanDigital/from/schedules.ts"],"sourcesContent":["import { size, countBy, sum, trim } from 'lodash-es';\nimport { Types as CoreTypes } from '../../core/types';\nimport { Types, Options } from '../types';\n\n\nexport default (\n input: Types.schedule,\n options: Options\n): CoreTypes.division => {\n // gather all import related warnings/errors\n const warnings: string[] = [];\n const errors: string[] = [];\n\n // there must be at least a single period\n if (!input['Perioder'].length) {\n errors.push('The schedule data does not contain any periods.');\n return { meta: { errors } };\n }\n\n // ensure that at least one period is selected\n if (!options.selectedPeriods?.length) {\n errors.push('No periods were selected.');\n return { meta: { errors } };\n }\n\n // ensure that the selected periods exist\n for (const x of options.selectedPeriods ?? []) {\n if (!input['Perioder'].some(p => p.Namn == x)) {\n errors.push(`The selected period ${x} does not exist.`);\n return { meta: { errors } };\n }\n }\n\n // ensure that all periods use the same time unit\n const numUnits = size(countBy(input['Perioder'].map(x => x.Tidsenhet)));\n if (numUnits > 1) {\n errors.push('Different time periods used for different periods.');\n return { meta: { errors } };\n }\n const timeUnit = input['Perioder'][0].Tidsenhet;\n\n\n ////\n //// fetch courses, groups, and teachers\n ////\n const courses: CoreTypes.course[] = [];\n const teacherSet = new Set<string>();\n const groupSet = new Set<string>();\n input['Tabell Tjänstefördelning'].forEach(c => {\n // check if the course should be taken into account\n // (the course must then have some scheduled time during the selected periods)\n const periodTimes = options.selectedPeriods!.map(x => (c as any)[`Tid ${x}`] as number ?? 0);\n if (sum(periodTimes) == 0) return;\n\n const displayName = c[options.displayName ?? 'Gruppnamn'];\n const subject = c['Kurskod'];\n const groups = c['Klass']?.split(',').map(trim);\n const teachers = c['Sign']?.split(',').map(trim);\n\n // fetch the expected schedule time in whatever units\n const periodTime = size(countBy(periodTimes)) == 1 ? periodTimes[0] : undefined;\n const minutesPerWeek = timeUnit == 'Minuter/Vecka' ? periodTime : undefined;\n const expectedTotalHours = timeUnit == 'Timmar/Period' ? periodTime : undefined;\n\n // add groups and teachers\n teachers.forEach(x => teacherSet.add(x));\n groups.forEach(x => groupSet.add(x));\n\n // add course\n courses.push({\n displayName,\n subject,\n teachers: teachers.map(to => ({ to })),\n groups: groups.map(to => ({ to })),\n\n ...(minutesPerWeek != undefined && { minutesPerWeek }),\n ...(expectedTotalHours != undefined && { expectedTotalHours })\n });\n\n });\n\n\n\n const teachers = [...teacherSet].map(ids => ({ ids, displayName: ids }));\n const groups = [...groupSet ].map(ids => ({ ids, displayName: ids, species: 'class' }));\n return { groups, teachers, courses,\n meta: {\n ...( errors.length && { errors: errors } ),\n ...( warnings.length && { warnings: warnings } )\n }\n };\n};"],"mappings":";;;AAKA,yBACE,OACA,YACuB;CAEvB,MAAMA,WAAqB;CAC3B,MAAMC,SAAqB;AAG3B,KAAI,CAAC,MAAM,YAAY,QAAQ;AAC7B,SAAO,KAAK;AACZ,SAAO,EAAE,MAAM,EAAE;;AAInB,KAAI,CAAC,QAAQ,iBAAiB,QAAQ;AACpC,SAAO,KAAK;AACZ,SAAO,EAAE,MAAM,EAAE;;AAInB,MAAK,MAAM,KAAK,QAAQ,mBAAmB,GACzC,KAAI,CAAC,MAAM,YAAY,MAAK,MAAK,EAAE,QAAQ,IAAI;AAC7C,SAAO,KAAK,uBAAuB,EAAE;AACrC,SAAO,EAAE,MAAM,EAAE;;CAKrB,MAAM,WAAW,KAAK,QAAQ,MAAM,YAAY,KAAI,MAAK,EAAE;AAC3D,KAAI,WAAW,GAAG;AAChB,SAAO,KAAK;AACZ,SAAO,EAAE,MAAM,EAAE;;CAEnB,MAAM,WAAW,MAAM,YAAY,GAAG;CAMtC,MAAMC,UAA8B;CACpC,MAAM,6BAA8B,IAAI;CACxC,MAAM,2BAA8B,IAAI;AACxC,OAAM,4BAA4B,SAAQ,MAAK;EAG7C,MAAM,cAAc,QAAQ,gBAAiB,KAAI,MAAM,EAAU,OAAO,QAAkB;AAC1F,MAAI,IAAI,gBAAgB,EAAG;EAE3B,MAAM,cAAc,EAAE,QAAQ,eAAe;EAC7C,MAAM,UAAc,EAAE;EACtB,MAAMC,WAAc,EAAE,UAAU,MAAM,KAAK,IAAI;EAC/C,MAAMC,aAAc,EAAE,SAAS,MAAM,KAAK,IAAI;EAG9C,MAAM,aAAqB,KAAK,QAAQ,iBAAiB,IAAI,YAAY,KAAK;EAC9E,MAAM,iBAAqB,YAAY,kBAA0B,aAAiB;EAClF,MAAM,qBAAqB,YAAY,kBAA0B,aAAiB;AAGlF,aAAS,SAAQ,MAAK,WAAW,IAAI;AACrC,WAAO,SAAQ,MAAO,SAAS,IAAI;AAGnC,UAAQ,KAAK;GACX;GACA;GACA,UAAUA,WAAS,KAAI,QAAO,EAAE;GAChC,QAAUD,SAAO,KAAI,QAAO,EAAE;GAE9B,GAAI,kBAAsB,UAAa,EAAE;GACzC,GAAI,sBAAsB,UAAa,EAAE;;;CAO7C,MAAM,WAAW,CAAC,GAAG,YAAY,KAAI,SAAQ;EAAE;EAAK,aAAa;;CACjE,MAAM,SAAW,CAAC,GAAG,UAAY,KAAI,SAAQ;EAAE;EAAK,aAAa;EAAK,SAAS;;AAC/E,QAAO;EAAE;EAAQ;EAAU;EACzB,MAAM;GACJ,GAAK,OAAO,UAAY,EAAY;GACpC,GAAK,SAAS,UAAU,EAAY"}
1
+ {"version":3,"file":"schedules.js","names":["warnings: string[]","errors: string[]","groups","teachers"],"sources":["../../../src/PlanDigital/from/schedules.ts"],"sourcesContent":["import { size, countBy, sum } from 'lodash-es';\nimport type { CoreTypes } from '../../core';\nimport type { Types as PlanDigitalTypes } from '../types';\nimport type { InternalIdKey } from '../../core/types/common';\n\nnamespace OutTypes {\n export type group = Omit<CoreTypes.serialized.group, InternalIdKey>;\n export type teacher = Omit<CoreTypes.serialized.teacher, InternalIdKey>;\n export type course = Omit<CoreTypes.serialized.course, InternalIdKey>;\n}\n\ntype Out = {\n groups?: OutTypes.group[];\n teachers?: OutTypes.teacher[];\n courses?: OutTypes.course[];\n meta?: {\n errors?: string[];\n warnings?: string[];\n };\n};\n\nexport default (\n input: PlanDigitalTypes.schedule,\n options: PlanDigitalTypes.options\n): Out => {\n // gather all import related warnings/errors\n const warnings: string[] = [];\n const errors: string[] = [];\n\n // there must be at least a single period\n if (!input['Perioder'].length) {\n errors.push('The schedule data does not contain any periods.');\n return { meta: { errors } };\n }\n\n // ensure that at least one period is selected\n const selectedPeriods = options.selectedPeriods;\n if (!selectedPeriods?.length) {\n errors.push('No periods were selected.');\n return { meta: { errors } };\n }\n\n // ensure that the selected periods exist\n for (const x of options.selectedPeriods ?? []) {\n if (!input['Perioder'].some(p => p.Namn == x)) {\n errors.push(`The selected period ${x} does not exist.`);\n return { meta: { errors } };\n }\n }\n\n // ensure that all periods use the same time unit\n const numUnits = size(countBy(input['Perioder'].map(x => x.Tidsenhet)));\n if (numUnits > 1) {\n errors.push('Different time periods used for different periods.');\n return { meta: { errors } };\n }\n const timeUnit = input['Perioder'][0].Tidsenhet;\n\n\n ////\n //// fetch courses, groups, and teachers\n ////\n const courses = new Array<OutTypes.course>();\n const teacherSet = new Set<string>();\n const groupSet = new Set<string>();\n input['Tabell Tjänstefördelning'].forEach(c => {\n // check if the course should be taken into account\n // (the course must then have some scheduled time during the selected periods)\n const periodTimes = selectedPeriods.map(x => c[`Tid ${x}`] ?? 0);\n if (sum(periodTimes) == 0) return;\n\n const displayName = c[options.displayName ?? 'Gruppnamn'];\n const subject = c['Kurskod'];\n const groups = c['Klass']?.split(',').map(x => x.trim());\n const teachers = c['Sign'] ?.split(',').map(x => x.trim());\n\n // fetch the expected schedule time in whatever units\n const periodTime = size(countBy(periodTimes)) == 1 ? periodTimes[0] : undefined;\n const minutesPerWeek = timeUnit == 'Minuter/Vecka' ? periodTime : undefined;\n const expectedTotalHours = timeUnit == 'Timmar/Period' ? periodTime : undefined;\n\n // add groups and teachers\n teachers.forEach(x => teacherSet.add(x));\n groups.forEach(x => groupSet.add(x));\n\n // add course\n courses.push({\n displayName,\n subject,\n teachers: teachers.map(to => ({ to })),\n groups: groups .map(to => ({ to })),\n\n ...(minutesPerWeek != undefined && { minutesPerWeek }),\n ...(expectedTotalHours != undefined && { expectedTotalHours })\n });\n\n });\n\n\n const teachers = [...teacherSet].map(ids => ({ ids, displayName: ids }));\n const groups = [...groupSet ].map(ids => ({ ids, displayName: ids, species: 'class' as const }));\n return { groups, teachers, courses,\n meta: {\n ...( errors.length && { errors: errors } ),\n ...( warnings.length && { warnings: warnings } )\n }\n };\n};"],"mappings":";;;AAqBA,yBACE,OACA,YACQ;CAER,MAAMA,WAAqB;CAC3B,MAAMC,SAAqB;AAG3B,KAAI,CAAC,MAAM,YAAY,QAAQ;AAC7B,SAAO,KAAK;AACZ,SAAO,EAAE,MAAM,EAAE;;CAInB,MAAM,kBAAkB,QAAQ;AAChC,KAAI,CAAC,iBAAiB,QAAQ;AAC5B,SAAO,KAAK;AACZ,SAAO,EAAE,MAAM,EAAE;;AAInB,MAAK,MAAM,KAAK,QAAQ,mBAAmB,GACzC,KAAI,CAAC,MAAM,YAAY,MAAK,MAAK,EAAE,QAAQ,IAAI;AAC7C,SAAO,KAAK,uBAAuB,EAAE;AACrC,SAAO,EAAE,MAAM,EAAE;;CAKrB,MAAM,WAAW,KAAK,QAAQ,MAAM,YAAY,KAAI,MAAK,EAAE;AAC3D,KAAI,WAAW,GAAG;AAChB,SAAO,KAAK;AACZ,SAAO,EAAE,MAAM,EAAE;;CAEnB,MAAM,WAAW,MAAM,YAAY,GAAG;CAMtC,MAAM,UAAa,IAAI;CACvB,MAAM,6BAAa,IAAI;CACvB,MAAM,2BAAa,IAAI;AACvB,OAAM,4BAA4B,SAAQ,MAAK;EAG7C,MAAM,cAAc,gBAAgB,KAAI,MAAK,EAAE,OAAO,QAAQ;AAC9D,MAAI,IAAI,gBAAgB,EAAG;EAE3B,MAAM,cAAc,EAAE,QAAQ,eAAe;EAC7C,MAAM,UAAc,EAAE;EACtB,MAAMC,WAAc,EAAE,UAAU,MAAM,KAAK,KAAI,MAAK,EAAE;EACtD,MAAMC,aAAc,EAAE,SAAU,MAAM,KAAK,KAAI,MAAK,EAAE;EAGtD,MAAM,aAAqB,KAAK,QAAQ,iBAAiB,IAAI,YAAY,KAAK;EAC9E,MAAM,iBAAqB,YAAY,kBAA0B,aAAiB;EAClF,MAAM,qBAAqB,YAAY,kBAA0B,aAAiB;AAGlF,aAAS,SAAQ,MAAK,WAAW,IAAI;AACrC,WAAO,SAAQ,MAAO,SAAS,IAAI;AAGnC,UAAQ,KAAK;GACX;GACA;GACA,UAAUA,WAAS,KAAI,QAAO,EAAE;GAChC,QAAUD,SAAS,KAAI,QAAO,EAAE;GAEhC,GAAI,kBAAsB,UAAa,EAAE;GACzC,GAAI,sBAAsB,UAAa,EAAE;;;CAM7C,MAAM,WAAW,CAAC,GAAG,YAAY,KAAI,SAAQ;EAAE;EAAK,aAAa;;CACjE,MAAM,SAAW,CAAC,GAAG,UAAY,KAAI,SAAQ;EAAE;EAAK,aAAa;EAAK,SAAS;;AAC/E,QAAO;EAAE;EAAQ;EAAU;EACzB,MAAM;GACJ,GAAK,OAAO,UAAY,EAAY;GACpC,GAAK,SAAS,UAAU,EAAY"}
@@ -1,13 +1,114 @@
1
- import { Types as Types$1 } from "../core/v2/types/index.js";
2
- import { Options, Types } from "./types/index.js";
3
- import { export_default } from "./to/index.js";
1
+ import { AvailableLocation, GroupReference, ID, PersonReference } from "../core/types/common/index.js";
2
+ import { DateType } from "../common/types.js";
3
+ import { BreakLength } from "../core/types/common/break-lengths.js";
4
+ import { AllowedInterval } from "../core/types/common/intervals.js";
5
+ import { Day } from "../core/types/common/days.js";
6
+ import { MaximumScheduleSpan } from "../core/types/common/maximum-schedule-span.js";
7
+ import { Tag } from "../core/types/common/tag.js";
8
+ import { PlannedScheduledDuration } from "../core/types/common/planned-schedule-duration.js";
9
+ import { Types } from "./types/index.js";
4
10
 
5
11
  //#region src/PlanDigital/index.d.ts
6
12
  declare class PlanDigitalMap {
7
13
  static from: {
8
- schedules: (input: Types.schedule, options: Options) => Types$1.division;
14
+ schedules: (input: Types.schedule, options: Types.options) => {
15
+ groups?: {
16
+ exceptions?: string[] | undefined;
17
+ lockedTimes?: string[] | undefined;
18
+ createdAt?: string | undefined;
19
+ updatedAt?: string | undefined;
20
+ lastModifiedBy?: unknown;
21
+ ids?: ID | undefined;
22
+ belongsTo?: string | undefined;
23
+ rank?: number | undefined;
24
+ displayName?: string | undefined;
25
+ days?: Day[] | undefined;
26
+ intervals?: AllowedInterval[] | undefined;
27
+ minBreakLength?: BreakLength | undefined;
28
+ maximumScheduleSpan?: MaximumScheduleSpan | undefined;
29
+ forbidOverlappingEvents?: boolean | undefined;
30
+ disableDayLengthPunishment?: boolean | undefined;
31
+ weight?: number | undefined;
32
+ species?: "class" | undefined;
33
+ parentGroups?: string[] | undefined;
34
+ subGroups?: string[] | undefined;
35
+ lunch?: string[] | undefined;
36
+ members?: string[] | undefined;
37
+ rootInterval?: string | undefined;
38
+ tags?: Tag[] | undefined;
39
+ maxNumWorkingHours?: number | boolean | undefined;
40
+ maxNumDailyWorkingHours?: number | number[] | boolean | undefined;
41
+ }[];
42
+ teachers?: {
43
+ exceptions?: string[] | undefined;
44
+ lockedTimes?: string[] | undefined;
45
+ createdAt?: string | undefined;
46
+ updatedAt?: string | undefined;
47
+ lastModifiedBy?: unknown;
48
+ ids?: ID | undefined;
49
+ belongsTo?: string | undefined;
50
+ rank?: number | undefined;
51
+ displayName?: string | undefined;
52
+ days?: Day[] | undefined;
53
+ intervals?: AllowedInterval[] | undefined;
54
+ minBreakLength?: BreakLength | undefined;
55
+ maximumScheduleSpan?: MaximumScheduleSpan | undefined;
56
+ forbidOverlappingEvents?: boolean | undefined;
57
+ disableDayLengthPunishment?: boolean | undefined;
58
+ weight?: number | undefined;
59
+ lunch?: string[] | undefined;
60
+ rootInterval?: string | undefined;
61
+ tags?: Tag[] | undefined;
62
+ maxNumWorkingHours?: number | boolean | undefined;
63
+ maxNumDailyWorkingHours?: number | number[] | boolean | undefined;
64
+ plannedScheduledDuration?: PlannedScheduledDuration | undefined;
65
+ person?: string | undefined;
66
+ signature?: string | undefined;
67
+ }[];
68
+ courses?: {
69
+ exceptions?: string[] | undefined;
70
+ groups?: GroupReference<string, string>[] | undefined;
71
+ teachers?: PersonReference<string>[] | undefined;
72
+ locations?: AvailableLocation<string>[] | undefined;
73
+ events?: string[] | undefined;
74
+ lockedTimes?: string[] | undefined;
75
+ createdAt?: string | undefined;
76
+ updatedAt?: string | undefined;
77
+ lastModifiedBy?: unknown;
78
+ ids?: ID | undefined;
79
+ belongsTo?: string | undefined;
80
+ type?: string | undefined;
81
+ displayName?: string | undefined;
82
+ days?: Day[] | undefined;
83
+ weeks?: number[] | undefined;
84
+ period?: string | undefined;
85
+ intervals?: AllowedInterval[] | undefined;
86
+ minBreakLength?: BreakLength | undefined;
87
+ weight?: number | undefined;
88
+ tags?: Tag[] | undefined;
89
+ color?: string | undefined;
90
+ participants?: PersonReference<string>[] | undefined;
91
+ density?: number | undefined;
92
+ subject?: string | undefined;
93
+ eventDurationVariance?: number | undefined;
94
+ totalTime?: string | undefined;
95
+ comment?: string | undefined;
96
+ startDate?: DateType | undefined;
97
+ endDate?: DateType | undefined;
98
+ centerOfAttraction?: string | null | undefined;
99
+ syllabus?: string | undefined;
100
+ overlapGroup?: string | null | undefined;
101
+ overlapSpecies?: string | null | undefined;
102
+ plannedDuration?: string | undefined;
103
+ minutesPerWeek?: number | undefined;
104
+ expectedTotalHours?: number | undefined;
105
+ }[];
106
+ meta?: {
107
+ errors?: string[];
108
+ warnings?: string[];
109
+ };
110
+ };
9
111
  };
10
- static to: typeof export_default;
11
112
  }
12
113
  //#endregion
13
114
  export { PlanDigitalMap };
@@ -1,10 +1,8 @@
1
- import to_default from "./to/index.js";
2
1
  import from_default from "./from/index.js";
3
2
 
4
3
  //#region src/PlanDigital/index.ts
5
4
  var PlanDigitalMap = class {
6
5
  static from = from_default;
7
- static to = to_default;
8
6
  };
9
7
 
10
8
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_from","_to"],"sources":["../../src/PlanDigital/index.ts"],"sourcesContent":["import _to from './to';\nimport _from from './from';\nimport { Types } from './types';\n\nexport class PlanDigitalMap {\n static from = _from;\n static to = _to;\n}\n\nexport type { Types as PlanDigitalTypes };"],"mappings":";;;;AAIA,IAAa,iBAAb,MAA4B;CAC1B,OAAO,OAAOA;CACd,OAAO,KAAOC"}
1
+ {"version":3,"file":"index.js","names":["_from"],"sources":["../../src/PlanDigital/index.ts"],"sourcesContent":["import _from from './from';\nimport type { Types } from './types';\n\nexport class PlanDigitalMap {\n static from = _from;\n}\n\nexport { Types as PlanDigitalTypes };"],"mappings":";;;AAGA,IAAa,iBAAb,MAA4B;CAC1B,OAAO,OAAOA"}
@@ -8,16 +8,16 @@ type Period = {
8
8
  Tidsenhet: 'Timmar/Period' | 'Minuter/Vecka';
9
9
  };
10
10
  type Course = {
11
- 'Gruppnamn': string;
12
- 'Klass': string;
13
- 'Kurskod': string;
14
- 'Sign': string;
15
- 'Poäng': number;
16
- 'Tid ${Period}': number;
17
- 'Anteckningar': string;
18
- 'Antal': number;
19
- 'Ämne': string;
20
- 'Kursnamn': string;
11
+ Gruppnamn: string;
12
+ Klass: string;
13
+ Kurskod: string;
14
+ Sign: string;
15
+ Poäng: number;
16
+ [key: `Tid ${string}`]: number;
17
+ Anteckningar: string;
18
+ Antal: number;
19
+ Ämne: string;
20
+ Kursnamn: string;
21
21
  };
22
22
  type Schedule = {
23
23
  'Perioder': Period[];
@@ -27,7 +27,8 @@ declare namespace Types {
27
27
  type course = Course;
28
28
  type period = Period;
29
29
  type schedule = Schedule;
30
+ type options = Options;
30
31
  }
31
32
  //#endregion
32
- export { Options, Types };
33
+ export { Types };
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import { Types } from "../../../core/v2/types/index.js";
1
+ import { Types } from "../../../core/types/index.js";
2
2
  import * as xlsx0 from "xlsx";
3
3
 
4
4
  //#region src/Quiculum/file/to/index.d.ts
@@ -1,26 +1,24 @@
1
+ import { getVertexId } from "../../../core/util.js";
1
2
  import moment from "moment";
2
3
  import XLSX from "xlsx";
3
4
 
4
5
  //#region src/Quiculum/file/to/schedules.ts
5
- const getId = (ref) => {
6
- if (typeof ref == "string") return ref;
7
- return ref.id.toString();
8
- };
9
6
  var schedules_default = (schedule) => {
10
- const did = schedule.division.id;
7
+ const options = { idKey: "id" };
8
+ const did = getVertexId(schedule.division, options);
11
9
  if (!did) throw new Error("division id is undefined");
12
- const periodsMap = new Map(schedule.periods.map((p) => [getId(p), p]));
10
+ const periodsMap = new Map(schedule.periods?.map((p) => [getVertexId(p, options), p]));
13
11
  const defaultPeriod = { ranges: [{
14
12
  start: schedule.division.start,
15
13
  end: schedule.division.end
16
14
  }] };
17
15
  periodsMap.set(void 0, defaultPeriod);
18
- const coursesMap = new Map(schedule.courses.map((c) => [getId(c), c]));
19
- const locationsMap = new Map(schedule.locations.map((l) => [getId(l), l]));
16
+ const coursesMap = new Map(schedule.courses?.map((c) => [getVertexId(c, options), c]));
17
+ const locationsMap = new Map(schedule.locations?.map((l) => [getVertexId(l, options), l]));
20
18
  const startDate = moment.utc(schedule.division.start).format("YYYY-MM-DD");
21
19
  const endDate = moment.utc(schedule.division.end).format("YYYY-MM-DD");
22
20
  const schoolYear = moment.utc(schedule.division.start).format("YY") + "/" + moment.utc(schedule.division.start).add(1, "year").format("YY");
23
- const holidays = schedule.settings.calendarExceptions?.filter((x) => x.start && x.end);
21
+ const holidays = schedule.settings?.calendarExceptions?.filter((x) => x.start && x.end);
24
22
  const holidaysInDays = [];
25
23
  if (holidays) for (const holiday of holidays) {
26
24
  const start = moment.utc(holiday.start);
@@ -30,18 +28,18 @@ var schedules_default = (schedule) => {
30
28
  start.add(1, "day");
31
29
  }
32
30
  }
33
- const activities = schedule.events.map((e) => {
31
+ const activities = schedule.events?.map((e) => {
34
32
  if (!e.start || !e.end) return null;
35
33
  const start = moment.utc(e.start);
36
34
  const end = moment.utc(e.end);
37
- const course = e.course ? coursesMap.get(getId(e.course)) : void 0;
35
+ const course = e.course ? coursesMap.get(getVertexId(e.course, options)) : void 0;
38
36
  if (!course) return null;
39
37
  const courseName = course.displayName ?? "";
40
38
  const inLocation = e.inLocations?.at(0);
41
- const location = inLocation ? locationsMap.get(getId(inLocation)) : void 0;
39
+ const location = inLocation ? locationsMap.get(getVertexId(inLocation, options)) : void 0;
42
40
  const locationName = location?.displayName;
43
41
  const _period = e.period ?? course.period ?? schedule.settings.period;
44
- const period = periodsMap.get(_period ? getId(_period) : void 0);
42
+ const period = periodsMap.get(_period ? getVertexId(_period, options) : void 0);
45
43
  const weeksInPeriod = period?.ranges.map((x) => {
46
44
  const start$1 = moment.utc(x.start);
47
45
  const end$1 = moment.utc(x.end);
@@ -1 +1 @@
1
- {"version":3,"file":"schedules.js","names":["defaultPeriod: CoreTypes.period","holidaysInDays: moment.Moment[]","start","end"],"sources":["../../../../src/Quiculum/file/to/schedules.ts"],"sourcesContent":["import moment from 'moment';\nimport { Types } from 'mongoose';\nimport XLSX from 'xlsx';\n\nimport { Types as CoreTypes } from '../../../core/types';\n\ntype Schedule = {\n division: CoreTypes.division;\n settings: CoreTypes.divisionSettings;\n groups: CoreTypes.group[];\n teachers: CoreTypes.teacher[];\n locations: CoreTypes.location[];\n courses: CoreTypes.course[];\n events: CoreTypes.event[];\n periods: CoreTypes.period[];\n persons: CoreTypes.person[];\n};\n\nconst getId = (ref: { id?: string } | Types.ObjectId | string): string => {\n if (typeof ref == 'string') return ref;\n return ref.id!.toString();\n};\n\nexport default (schedule: Schedule): XLSX.WorkBook => {\n // must have a division id\n const did = schedule.division.id!;\n if (!did) throw new Error('division id is undefined');\n\n // a map of period id -> period\n const periodsMap = new Map(schedule.periods.map((p) => [getId(p) as string | undefined, p]));\n const defaultPeriod: CoreTypes.period = {\n ranges: [{ start: schedule.division.start, end: schedule.division.end }]\n };\n periodsMap.set(undefined, defaultPeriod);\n\n // a map of course id -> course\n const coursesMap = new Map(schedule.courses.map((c) => [getId(c), c]));\n\n // a map of location id -> location\n const locationsMap = new Map(schedule.locations.map((l) => [getId(l), l]));\n\n // get start and end dates from division in YYYY-MM-DD format\n const startDate = moment.utc(schedule.division.start).format('YYYY-MM-DD');\n const endDate = moment.utc(schedule.division.end).format('YYYY-MM-DD');\n // get schoolyear from division start date in format YY/YY (only considers the start year, for example 2023-01-01 becomes 23/24)\n const schoolYear = moment.utc(schedule.division.start).format('YY') + '/' +\n moment.utc(schedule.division.start).add(1, 'year').format('YY');\n\n const holidays = schedule.settings.calendarExceptions\n ?.filter((x) => x.start && x.end);\n\n\n const holidaysInDays: moment.Moment[] = [];\n\n if (holidays) {\n for (const holiday of holidays) {\n const start = moment.utc(holiday.start);\n const end = moment.utc(holiday.end);\n while (start.isBefore(end)) {\n // Only push weekdays (Monday to Friday)\n if (start.isoWeekday() < 6) {\n holidaysInDays.push(start.clone());\n }\n start.add(1, 'day');\n }\n }\n }\n\n ////\n //// Activities (events)\n ////\n const activities = schedule.events\n .map((e) => {\n // must have start and end\n if (!e.start || !e.end) return null;\n const start = moment.utc(e.start);\n const end = moment.utc(e.end);\n\n // must have course\n const course = e.course ? coursesMap.get(getId(e.course)) : undefined;\n if (!course) return null;\n const courseName = course.displayName ?? '';\n\n // Location\n const inLocation = e.inLocations?.at(0);\n const location = inLocation ? locationsMap.get(getId(inLocation)) : undefined;\n const locationName = location?.displayName;\n\n const _period = e.period ?? course.period ?? schedule.settings.period;\n const period = periodsMap.get(_period ? getId(_period) : undefined);\n\n const weeksInPeriod = period?.ranges\n .map((x) => {\n // fetch all weeks between start and end\n const start = moment.utc(x.start);\n const end = moment.utc(x.end);\n const weeks = new Array<number>();\n while (start.isBefore(end)) {\n weeks.push(start.week());\n start.add(1, 'week');\n }\n return weeks;\n })\n .flat();\n\n const allWeeks = defaultPeriod?.ranges\n .map((x) => {\n // fetch all weeks between start and end\n const start = moment.utc(x.start);\n const end = moment.utc(x.end);\n const weeks = new Array<number>();\n while (start.isBefore(end)) {\n weeks.push(start.week());\n start.add(1, 'week');\n }\n return weeks;\n })\n .flat();\n\n const excludedWeeks = allWeeks\n .filter((x) => !weeksInPeriod?.includes(x))\n .join(', ');\n\n // Get the holidays in the period (don't include holidays that are not in the period)\n const holidaysInPeriod = holidaysInDays\n .filter((x) => {\n return weeksInPeriod?.includes(x.week());\n })\n .map((x) => x.format('YYYY-MM-DD'))\n .join(', ');\n\n return {\n DayOfWeek: (start.day() + 6) % 7,\n Duration: end.diff(start, 'minutes'),\n EndDate: endDate,\n Name: courseName,\n StartDate: startDate,\n StartTime: start.format('HH:mm'),\n ExcludeDates: holidaysInPeriod,\n ExcludeWeeks: excludedWeeks,\n ExternalActivityID: e.ids,\n ExternalLocationID: '',\n ExternalTeachingGroupID: '',\n Location: locationName,\n SchoolYear: schoolYear,\n Teachers: ''\n };\n })\n .filter((x): x is NonNullable<typeof x> => !!x);\n\n ////\n //// store in workbook\n ////\n const wb = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(wb, XLSX.utils.json_to_sheet(activities), 'Activities');\n\n return wb;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"schedules.js","names":["options: BaseOptions","defaultPeriod: Pick<CoreTypes.period, 'ranges'>","holidaysInDays: moment.Moment[]","start","end"],"sources":["../../../../src/Quiculum/file/to/schedules.ts"],"sourcesContent":["import moment from 'moment';\nimport XLSX from 'xlsx';\nimport type { Types as CoreTypes } from '../../../core/types';\nimport type { BaseOptions } from '../../../common/types';\nimport { getVertexId } from '../../../core/util';\n\ntype Schedule = {\n division: CoreTypes.division;\n settings: CoreTypes.divisionSettings;\n groups: CoreTypes.group[];\n teachers: CoreTypes.teacher[];\n locations: CoreTypes.location[];\n courses: CoreTypes.course[];\n events: CoreTypes.event[];\n periods: CoreTypes.period[];\n persons: CoreTypes.person[];\n};\n\n\n\nexport default (\n schedule: Schedule,\n): XLSX.WorkBook => {\n const options: BaseOptions = { idKey: 'id' };\n // must have a division id\n const did = getVertexId(schedule.division, options);\n if (!did) throw new Error('division id is undefined');\n\n // a map of period id -> period\n const periodsMap = new Map(schedule.periods?.map((p) => [getVertexId(p, options) as string | undefined, p as Pick<CoreTypes.period, 'ranges'>]));\n const defaultPeriod: Pick<CoreTypes.period, 'ranges'> = {\n ranges: [{ start: schedule.division.start, end: schedule.division.end }]\n };\n periodsMap.set(undefined, defaultPeriod);\n\n // a map of course id -> course\n const coursesMap = new Map(schedule.courses?.map((c) => [getVertexId(c, options), c]));\n\n // a map of location id -> location\n const locationsMap = new Map(schedule.locations?.map((l) => [getVertexId(l, options), l]));\n\n // get start and end dates from division in YYYY-MM-DD format\n const startDate = moment.utc(schedule.division.start).format('YYYY-MM-DD');\n const endDate = moment.utc(schedule.division.end).format('YYYY-MM-DD');\n // get schoolyear from division start date in format YY/YY (only considers the start year, for example 2023-01-01 becomes 23/24)\n const schoolYear = moment.utc(schedule.division.start).format('YY') + '/' +\n moment.utc(schedule.division.start).add(1, 'year').format('YY');\n\n const holidays = schedule.settings?.calendarExceptions\n ?.filter((x) => x.start && x.end);\n\n\n const holidaysInDays: moment.Moment[] = [];\n\n if (holidays) {\n for (const holiday of holidays) {\n const start = moment.utc(holiday.start);\n const end = moment.utc(holiday.end);\n while (start.isBefore(end)) {\n // Only push weekdays (Monday to Friday)\n if (start.isoWeekday() < 6) {\n holidaysInDays.push(start.clone());\n }\n start.add(1, 'day');\n }\n }\n }\n\n ////\n //// Activities (events)\n ////\n const activities = schedule.events\n ?.map((e) => {\n // must have start and end\n if (!e.start || !e.end) return null;\n const start = moment.utc(e.start);\n const end = moment.utc(e.end);\n\n // must have course\n const course = e.course ? coursesMap.get(getVertexId(e.course, options)) : undefined;\n if (!course) return null;\n const courseName = course.displayName ?? '';\n\n // Location\n const inLocation = e.inLocations?.at(0);\n const location = inLocation ? locationsMap.get(getVertexId(inLocation, options)) : undefined;\n const locationName = location?.displayName;\n\n const _period = e.period ?? course.period ?? schedule.settings.period;\n const period = periodsMap.get(_period ? getVertexId(_period, options) : undefined);\n\n const weeksInPeriod = period?.ranges\n .map((x) => {\n // fetch all weeks between start and end\n const start = moment.utc(x.start);\n const end = moment.utc(x.end);\n const weeks = new Array<number>();\n while (start.isBefore(end)) {\n weeks.push(start.week());\n start.add(1, 'week');\n }\n return weeks;\n })\n .flat();\n\n const allWeeks = defaultPeriod?.ranges\n .map((x) => {\n // fetch all weeks between start and end\n const start = moment.utc(x.start);\n const end = moment.utc(x.end);\n const weeks = new Array<number>();\n while (start.isBefore(end)) {\n weeks.push(start.week());\n start.add(1, 'week');\n }\n return weeks;\n })\n .flat();\n\n const excludedWeeks = allWeeks\n .filter((x) => !weeksInPeriod?.includes(x))\n .join(', ');\n\n // Get the holidays in the period (don't include holidays that are not in the period)\n const holidaysInPeriod = holidaysInDays\n .filter((x) => {\n return weeksInPeriod?.includes(x.week());\n })\n .map((x) => x.format('YYYY-MM-DD'))\n .join(', ');\n\n return {\n DayOfWeek: (start.day() + 6) % 7,\n Duration: end.diff(start, 'minutes'),\n EndDate: endDate,\n Name: courseName,\n StartDate: startDate,\n StartTime: start.format('HH:mm'),\n ExcludeDates: holidaysInPeriod,\n ExcludeWeeks: excludedWeeks,\n ExternalActivityID: e.ids,\n ExternalLocationID: '',\n ExternalTeachingGroupID: '',\n Location: locationName,\n SchoolYear: schoolYear,\n Teachers: ''\n };\n })\n .filter((x): x is NonNullable<typeof x> => !!x);\n\n ////\n //// store in workbook\n ////\n const wb = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(wb, XLSX.utils.json_to_sheet(activities), 'Activities');\n\n return wb;\n};\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Types } from "../../core/types/index.js";
2
+
3
+ //#region src/RS/from/division.d.ts
4
+ declare function division(input: unknown): Pick<Types.division, 'displayName' | 'start' | 'end'>;
5
+ //#endregion
6
+ export { division };
7
+ //# sourceMappingURL=division.d.ts.map
@@ -0,0 +1,14 @@
1
+ //#region src/RS/from/division.ts
2
+ function division(input) {
3
+ const division$1 = {};
4
+ if (!input || typeof input != "object" || !("meta" in input) || !input.meta || typeof input.meta != "object" || !("division" in input.meta) || !input.meta.division || typeof input.meta.division != "object") return division$1;
5
+ const d = input.meta.division;
6
+ if ("displayName" in d && typeof d.displayName == "string") division$1.displayName = d.displayName;
7
+ if ("start" in d && typeof d.start == "string") division$1.start = d.start;
8
+ if ("end" in d && typeof d.end == "string") division$1.end = d.end;
9
+ return division$1;
10
+ }
11
+
12
+ //#endregion
13
+ export { division };
14
+ //# sourceMappingURL=division.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"division.js","names":["division: Pick<CoreTypes.division, 'displayName' | 'start' | 'end'>","division"],"sources":["../../../src/RS/from/division.ts"],"sourcesContent":["import type { CoreTypes } from '../../core';\n\nexport function division (input: unknown): Pick<CoreTypes.division, 'displayName' | 'start' | 'end'> {\n const division: Pick<CoreTypes.division, 'displayName' | 'start' | 'end'> = {};\n\n if ( !input || typeof input != 'object'\n || !('meta' in input ) || !input.meta || typeof input.meta != 'object'\n || !('division' in input.meta) || !input.meta.division || typeof input.meta.division != 'object'\n ) return division;\n\n const d = input.meta.division;\n\n if ('displayName' in d && typeof d.displayName == 'string') division.displayName = d.displayName;\n if ('start' in d && typeof d.start == 'string') division.start = d.start;\n if ('end' in d && typeof d.end == 'string') division.end = d.end;\n\n return division;\n};"],"mappings":";AAEA,SAAgB,SAAU,OAA2E;CACnG,MAAMA,aAAsE;AAE5E,KAAoC,CAAC,SAAuB,OAAO,SAAuB,YACrF,EAAE,UAAc,UAAe,CAAC,MAAM,QAAiB,OAAO,MAAM,QAAiB,YACrF,EAAE,cAAc,MAAM,SAAS,CAAC,MAAM,KAAK,YAAY,OAAO,MAAM,KAAK,YAAY,SACxF,QAAOC;CAET,MAAM,IAAI,MAAM,KAAK;AAErB,KAAI,iBAAiB,KAAK,OAAO,EAAE,eAAe,SAAU,YAAS,cAAc,EAAE;AACrF,KAAI,WAAiB,KAAK,OAAO,EAAE,SAAe,SAAU,YAAS,QAAc,EAAE;AACrF,KAAI,SAAiB,KAAK,OAAO,EAAE,OAAe,SAAU,YAAS,MAAc,EAAE;AAErF,QAAOA"}