@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 +1 @@
1
- {"version":3,"file":"course-and-events.js","names":["weeks: number[]","matches: RegExpExecArray | null","intervals: Types.interval[]","courseMap: Map<number, Types.course>","subject: string | undefined","event: Types.event","l","classes: Set<string>","days: Types.day[]","idss: string[]","displayNames: string[]","groups","newCourse: Types.course","iterate: ValueIteratee<any[] | undefined> | '0.locations'"],"sources":["../../../../src/Skola24/mdb/from/course-and-events.ts"],"sourcesContent":["import moment from 'moment';\nimport { identity, groupBy, isEqual, size }from 'lodash-es';\n\nimport { Types } from '../../../core/types';\nimport { Plan } from '../types/Plan';\nimport { Group } from '../types/Group';\nimport { Lesson } from '../types/Lesson';\nimport { Options } from '../types/Options';\nimport type { ValueIteratee } from 'lodash';\n\n\nconst separator = ', ';\nconst arbetstid = 'Arbetstid'.toLowerCase();\nconst firstDay = '1970-01-05';\nconst numDays = 5;\nconst defaultDayStart = [8, 0];\nconst defaultDayEnd = [17, 0];\n\nfunction generateDate (\n days: number,\n hours: number,\n minutes: number\n) {\n return moment.utc(firstDay)\n .add(days, 'days')\n .add(hours, 'hours')\n .add(minutes, 'minutes');\n}\n\nfunction startAndEnd (\n lesson: Lesson\n): {} | { start: moment.Moment, end: moment.Moment, parked: false } {\n if ('Length' in lesson && 'DayOfWeek' in lesson && 'StartTime' in lesson) {\n const dateTimeDate = moment(lesson.StartTime, 'MM/DD/YY hh:mm:ss');\n const hours = dateTimeDate.get('hours');\n const minutes = dateTimeDate.get('minutes');\n\n // let start = moment.utc(firstDay)\n // .add(lesson.DayOfWeek, \"days\")\n // .add(hours, \"hours\")\n // .add(minutes, \"minutes\");\n const start = generateDate(lesson.DayOfWeek!, hours, minutes);\n const end = start.clone().add(lesson.Length, 'minute');\n return { start: start, end: end, parked: false };\n } else {\n return { };\n }\n}\n\nfunction parseActualWeeks (val?: string) {\n if (!val) return [];\n\n const weeks: number[] = [];\n\n val\n .split(',')\n .forEach(x => {\n if (x.includes('-')) {\n // multiple weeks\n const [start, end] = x.split('-');\n for (let i = parseInt(start); i <= parseInt(end); i++)\n weeks.push(i);\n } else {\n // single week\n weeks.push(parseInt(x));\n }\n });\n\n return weeks;\n}\n\nfunction addGroupsFromName (\n name: string,\n groupSet: Set<string>,\n groupNamePkMap: Map<string, string>\n) {\n // assumes course names of the type \"10IDS01-EK20C-LAG\"\n const regex = /-([^\\s-]+)/gi;\n\n let matches: RegExpExecArray | null;\n while (matches = regex.exec(name)) {\n if (groupNamePkMap.has(matches[1])) {\n const PK = groupNamePkMap.get(matches[1])!;\n groupSet.add(PK);\n }\n }\n}\n\nfunction getDay (mnt: moment.Moment) {\n return mnt.dayOfYear() - moment.utc(firstDay).dayOfYear();\n}\n\nfunction createDefaultIntervals () {\n const intervals: Types.interval[] = [];\n\n for (let d = 0; d < numDays; d++) {\n intervals.push({\n start: generateDate(d, defaultDayStart[0], defaultDayStart[1]),\n end: generateDate(d, defaultDayEnd[0], defaultDayEnd[1])\n });\n }\n\n return intervals;\n}\n\n\n\n\nexport default function (\n groups: Group[],\n lessons: Lesson[],\n meta: Options | undefined,\n\n groupPlansMap: Map<number, Set<string> >,\n planMap: Map<number, Plan>,\n\n subjectMap: Map<number, string>,\n planTeachersMap: Map<number, Set<string> >,\n groupClassesMap: Map<string, Set<string> >,\n RSgroups: Types.group[],\n\n groupMap: Map<number, Group>,\n lessonRoomsMap: Map<number, Set<string> >,\n lessonTeachersMap: Map<number, Set<string> >,\n lessonGroupsMap: Map<number, Set<string> >,\n RSteachers: Types.teacher[],\n\n warnings: string[],\n errors: string[]\n): { courses: Types.course[], events: Types.event[] } {\n\n // used when deducing groups from the course name\n const groupNamePkMap = new Map(RSgroups.map(g => [g.displayName!, g.ids!]));\n\n ////\n //// courses\n ////\n let courseMap: Map<number, Types.course> = new Map();\n groups.forEach(x => {\n // need to be a scheduled group\n if (x.bClass) return;\n\n // check if at least one plan intersects our period\n const plans = groupPlansMap.get(x.PK);\n\n // fetch subject via first plan\n let subject: string | undefined;\n if (plans) {\n const subjPK = planMap.get(parseInt([...plans][0]))?.FKSubject;\n if (subjPK) subject = subjectMap.get(subjPK);\n }\n // if (subject) console.log(subject)\n\n const groupSet = groupClassesMap.get(x.PK.toString()) ?? new Set<string>();\n\n // attempt to deduce groups by analyzing the course name\n if (meta?.deduceGroupsFromCourseName && x.ID) {\n addGroupsFromName(x.ID, groupSet, groupNamePkMap);\n }\n\n\n\n // if (groups) console.log(groups)\n\n const teacherSet = new Set<string>();\n groupPlansMap.get(x.PK)?.forEach(p => {\n planTeachersMap.get(parseInt(p))?.forEach(t => teacherSet.add(t));\n });\n // if (teacherSet) console.log(teacherSet)\n\n\n courseMap.set(x.PK, {\n ids: x.PK.toString(),\n displayName: x.ID,\n\n ...( subject && { subject } ),\n ...( groupSet?.size && { groups: [...groupSet].map(to => ({ to })) } ),\n ...( teacherSet.size && { teachers: [...teacherSet].map(to => ({ to })) } )\n });\n });\n\n\n\n ////\n //// events\n ////\n let numAdditionalCourses = 0;\n const eventMap = new Map<string, Types.event[]>();\n const intervalMap = new Map<string, Map<number, Types.interval> >();\n lessons.forEach(l => {\n // ignore all lessons which are not scheduled on the week of interest\n if (meta?.week == undefined || !parseActualWeeks(l.CalcActualWeeks).includes(meta.week)) return;\n\n\n const coursesIds = [...(lessonGroupsMap.get(l.PK) ?? new Set())]\n .map(id => groupMap.get(parseInt(id)))\n .filter((g): g is Group => g?.bClass == false)\n .sort((g1, g2) => g1.PK - g2.PK)\n .map(g => g.PK);\n\n const event: Types.event = {\n ids: l.PK.toString(),\n\n duration: l.Length,\n preferredDuration: l.Length,\n ...startAndEnd(l)\n };\n\n // try add room\n const rooms = lessonRoomsMap.get(l.PK);\n if (rooms?.size) {\n event.inLocations = [...rooms];\n event.locations = [...rooms].map(l => ({ locations: [l] }));\n }\n\n // try add teachers\n const teachers = lessonTeachersMap.get(l.PK);\n if (teachers?.size) event.teachers = [...teachers].map(to => ({ to }));\n\n // fetch groups\n const classes: Set<string> = new Set();\n lessonGroupsMap.get(l.PK)?.forEach(scheduleGroupId => {\n groupClassesMap.get(scheduleGroupId)?.forEach(classId => {\n classes.add(classId);\n });\n });\n\n // attempt to deduce groups by analyzing the course name\n // (but only if the event explicitly has groups or its course has none)\n const courseHasGroups = coursesIds.some(x => courseMap.get(x)?.groups);\n if (meta?.deduceGroupsFromCourseName && (!courseHasGroups || classes.size)) {\n coursesIds.map(x => courseMap.get(x)?.displayName)\n .filter((x): x is string => !!x)\n .forEach(x => addGroupsFromName(x, classes, groupNamePkMap));\n }\n\n // try add groups\n if (classes.size) event.groups = [...classes].map(to => ({ to }));\n\n\n const subject = subjectMap.get(l.FKSubject!);\n if (subject?.toLowerCase() == arbetstid) {\n // is an interval\n\n // ensure start and end is set\n if (!event.start || !event.end) {\n warnings.push('Start or end not set on interval event');\n return;\n }\n\n // interval day\n const day = getDay(event.start as moment.Moment);\n\n if (0 > day || day > numDays - 1) {\n warnings.push('Interval day out of bounds');\n return;\n }\n\n // add interval\n teachers?.forEach(t => {\n if (!intervalMap.has(t)) intervalMap.set(t, new Map());\n intervalMap.get(t)?.set(day, { start: event.start, end: event.end });\n });\n\n } else {\n // is an event\n\n ////\n //// if there is no course, create it\n //// (can also be interval)\n ////\n if (!coursesIds.length) {\n const id = --numAdditionalCourses;\n\n courseMap.set(id, {\n ids: id.toString(),\n\n ...( subject && { displayName: subject } ),\n ...( subject && { subject } ),\n\n // // makes it easier to se in the table\n // ...( teachers?.size && { teachers: [...teachers] } ),\n // ...( classes?.size && { groups: [...classes] } ),\n });\n\n coursesIds.push(id);\n }\n\n\n // add\n const key = coursesIds.join(separator);\n if (!eventMap.has(key)) eventMap.set(key, []);\n eventMap.get(key)?.push(event);\n }\n\n });\n\n\n ////\n //// set teacher days and intervals\n ////\n intervalMap.forEach((v, k) => {\n // fetch teacher\n const teacher = RSteachers.find(t => t.ids == k);\n if (!teacher) {\n warnings.push(`An interval referred to the unknown teacher with PK = ${k}`);\n return;\n }\n\n // construct\n const intervals = createDefaultIntervals();\n const days: Types.day[] = [];\n v.forEach((i, d) => {\n days.push({ day: d });\n intervals[d] = i;\n });\n\n // set\n // (set days only if not all are permitted)\n teacher.intervals = intervals;\n if (days.length != numDays) teacher.days = days;\n });\n\n\n ////\n //// merge courses\n ////\n eventMap.forEach((events, key) => {\n const courseIds = key.split(separator).map(x => parseInt(x));\n\n if (courseIds.length > 1) {\n const idss: string[] = [];\n const displayNames: string[] = [];\n\n const subjects = new Set<string>();\n const groups = new Set<string>();\n const teachers = new Set<string>();\n\n // merge courses\n courseIds.map(x => courseMap.get(x))\n .filter((c): c is Types.course => !!c)\n .forEach(c => {\n c.ids && idss.push(c.ids);\n c.displayName && displayNames.push(c.displayName);\n\n c.subject && subjects.add(c.subject);\n c.groups && c.groups.forEach(({ to }) => groups.add(to.toString()));\n c.teachers && c.teachers.forEach(({ to }) => teachers.add(to.toString()));\n });\n\n const newKey = --numAdditionalCourses;\n const newCourse: Types.course = {\n ids: idss.join(separator),\n displayName: displayNames.join(separator),\n\n ...( subjects.size && { subject: [...subjects].join(separator) } ),\n\n ...( groups.size && { groups: [...groups].map(to => ({ to })) } ),\n ...( teachers.size && { teachers: [...teachers].map(to => ({ to })) } )\n };\n\n // add courses\n // (leave old courses if they have events) <-- WTF!?\n courseMap.set(newKey, newCourse);\n\n // link events to new course\n eventMap.set(newKey.toString(), [...events]);\n events.length = 0;\n\n // console.log(`The courses with PKs [${courseIds.join(separator)}] needed to be merged.`);\n warnings.push(`The courses with PKs [${courseIds.join(separator)}] needed to be merged.`);\n }\n });\n\n\n\n ////\n //// link events with courses\n ////\n const populatedCourses = new Set<number>();\n eventMap.forEach((events, key) => {\n // need to contain events\n if (!events.length) return;\n\n const courseIds = key.split(separator).map(x => parseInt(x));\n\n if (courseIds.length != 1 && events.length) throw 'Well this was unexpected...';\n\n const courseId = courseIds[0];\n const PK = courseMap.get(courseId)?.ids;\n\n if (PK == undefined) {\n // console.log(courseIds, PK, key, events)\n // throw \"Well this was also unexpected...\";\n // console.log(`The events with PKs ${events.map(e => e.ids)} were ignored since their course was not found.`);\n errors.push(`The events with PKs ${events.map(e => e.ids)} were ignored since their course was not found.`);\n events.length = 0;\n return;\n }\n\n // link\n events.forEach(e => e.course = PK);\n\n populatedCourses.add(courseId);\n });\n\n\n\n ////\n //// try remove empty courses\n ////\n if (meta?.ignoreEmptyCourses) {\n // filter in place\n const courses = [...courseMap].filter(([k]) => populatedCourses.has(k));\n courseMap = new Map(courses);\n }\n\n\n ////\n //// try promote groups, teachers and locations to the parent course\n //// (if the course has none and all sibling events have the same)\n ////\n const keys = ['groups', 'teachers', 'locations'];\n for (const key of keys) {\n\n // how to fetch the value in group by\n let iterate: ValueIteratee<any[] | undefined> | '0.locations';\n if (key == 'groups' || key == 'teachers') iterate = identity;\n if (key == 'locations') iterate = '0.locations';\n\n courseMap.forEach((c, courseKey) => {\n // need to use the \"courseKey\" as it is different from the \"c.ids\" if the course has been merged\n const events = eventMap.get(courseKey.toString());\n\n // fetch entries\n const courseEntry = (c as any)[key]?.sort() as undefined | any[];\n const eventEntries = events?.map(e => (e as any)[key]?.sort() as undefined | any[]);\n\n if (\n // identical and defined event entries\n eventEntries?.[0] && size(groupBy(eventEntries, iterate)) == 1\n // and undefined or empty course entry, or identical course ant event entries\n && (!courseEntry || courseEntry.length == 0 || isEqual(courseEntry, eventEntries[0]))\n ) {\n // update\n (c as any)[key] = eventEntries[0];\n events?.forEach(e => delete (e as any)[key]);\n }\n });\n }\n\n\n // let eventsArray: Types.courseEvent[] = [];\n return { courses: [...courseMap.values()], events: [...eventMap.values()].flat() };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"course-and-events.js","names":["weeks: number[]","matches: RegExpExecArray | null","intervals: CoreTypes.interval[]","courseMap: Map<number, OutTypes.course>","subject: string | undefined","event: OutTypes.event","l","classes: Set<string>","days: CoreTypes.day[]","idss: string[]","displayNames: string[]","groups","newCourse: OutTypes.course","x"],"sources":["../../../../src/Skola24/mdb/from/course-and-events.ts"],"sourcesContent":["import moment from 'moment';\nimport { uniqBy } from 'lodash-es';\nimport type { CoreTypes } from '../../../core';\nimport type { OutTypes } from './schedule';\nimport type { Types as Skal24Types } from '../types';\nimport type { BaseOptions } from '../../../common/types';\nimport { makeChainable } from '../../../common/make-chainable';\n\n\nconst separator = ', ';\nconst arbetstid = 'Arbetstid'.toLowerCase();\nconst firstDay = '1970-01-05';\nconst numDays = 5;\nconst defaultDayStart = [8, 0];\nconst defaultDayEnd = [17, 0];\n\nfunction generateDate (\n days: number,\n hours: number,\n minutes: number\n) {\n return moment.utc(firstDay)\n .add(days, 'days')\n .add(hours, 'hours')\n .add(minutes, 'minutes');\n}\n\nfunction startAndEnd (\n lesson: Skal24Types.lesson\n): undefined | { start: moment.Moment, end: moment.Moment, parked: false } {\n if ('Length' in lesson && 'DayOfWeek' in lesson && 'StartTime' in lesson) {\n const dateTimeDate = moment(lesson.StartTime, 'MM/DD/YY hh:mm:ss');\n const hours = dateTimeDate.get('hours');\n const minutes = dateTimeDate.get('minutes');\n\n // let start = moment.utc(firstDay)\n // .add(lesson.DayOfWeek, \"days\")\n // .add(hours, \"hours\")\n // .add(minutes, \"minutes\");\n const start = generateDate(lesson.DayOfWeek!, hours, minutes);\n const end = start.clone().add(lesson.Length, 'minute');\n return { start: start, end: end, parked: false };\n }\n\n return;\n}\n\nfunction parseActualWeeks (val?: string) {\n if (!val) return [];\n\n const weeks: number[] = [];\n\n val\n .split(',')\n .forEach(x => {\n if (x.includes('-')) {\n // multiple weeks\n const [start, end] = x.split('-');\n for (let i = parseInt(start); i <= parseInt(end); i++)\n weeks.push(i);\n } else {\n // single week\n weeks.push(parseInt(x));\n }\n });\n\n return weeks;\n}\n\nfunction addGroupsFromName (\n name: string,\n groupSet: Set<string>,\n groupNamePkMap: Map<string, string>\n) {\n // assumes course names of the type \"10IDS01-EK20C-LAG\"\n const regex = /-([^\\s-]+)/gi;\n\n let matches: RegExpExecArray | null;\n while ((matches = regex.exec(name)) !== null) {\n if (groupNamePkMap.has(matches[1])) {\n const PK = groupNamePkMap.get(matches[1])!;\n groupSet.add(PK);\n }\n }\n}\n\nfunction getDay (mnt: moment.Moment) {\n return mnt.dayOfYear() - moment.utc(firstDay).dayOfYear();\n}\n\nfunction createDefaultIntervals () {\n const intervals: CoreTypes.interval[] = [];\n\n for (let d = 0; d < numDays; d++) {\n intervals.push({\n start: generateDate(d, defaultDayStart[0], defaultDayStart[1]),\n end: generateDate(d, defaultDayEnd[0], defaultDayEnd[1])\n });\n }\n\n return intervals;\n}\n\n\n\n\nexport default function (\n groups: Skal24Types.group[],\n lessons: Skal24Types.lesson[],\n meta: Skal24Types.options & BaseOptions | undefined,\n\n groupPlansMap: Map<number, Set<string> >,\n planMap: Map<number, Skal24Types.plan>,\n\n subjectMap: Map<number, string>,\n planTeachersMap: Map<number, Set<string> >,\n groupClassesMap: Map<string, Set<string> >,\n RSgroups: OutTypes.group[],\n\n groupMap: Map<number, Skal24Types.group>,\n lessonRoomsMap: Map<number, Set<string> >,\n lessonTeachersMap: Map<number, Set<string> >,\n lessonGroupsMap: Map<number, Set<string> >,\n RSteachers: OutTypes.teacher[],\n\n warnings: string[],\n errors: string[]\n): { courses: OutTypes.course[], events: OutTypes.event[] } {\n\n // used when deducing groups from the course name\n const groupNamePkMap = new Map(RSgroups.map(g => [g.displayName!, g.ids!]));\n\n ////\n //// courses\n ////\n let courseMap: Map<number, OutTypes.course> = new Map();\n groups.forEach(x => {\n // need to be a scheduled group\n if (x.bClass) return;\n\n // check if at least one plan intersects our period\n const plans = groupPlansMap.get(x.PK);\n\n // fetch subject via first plan\n let subject: string | undefined;\n if (plans) {\n const subjPK = planMap.get(parseInt([...plans][0]))?.FKSubject;\n if (subjPK) subject = subjectMap.get(subjPK);\n }\n // if (subject) console.log(subject)\n\n const groupSet = groupClassesMap.get(x.PK.toString()) ?? new Set<string>();\n\n // attempt to deduce groups by analyzing the course name\n if (meta?.deduceGroupsFromCourseName && x.ID) {\n addGroupsFromName(x.ID, groupSet, groupNamePkMap);\n }\n\n\n\n // if (groups) console.log(groups)\n\n const teacherSet = new Set<string>();\n groupPlansMap.get(x.PK)?.forEach(p => {\n planTeachersMap.get(parseInt(p))?.forEach(t => teacherSet.add(t));\n });\n // if (teacherSet) console.log(teacherSet)\n\n\n courseMap.set(x.PK, {\n ids: x.PK.toString(),\n displayName: x.ID,\n\n ...( subject && { subject } ),\n ...( groupSet?.size && { groups: [...groupSet ].map(to => ({ to })) } ),\n ...( teacherSet.size && { teachers: [...teacherSet].map(to => ({ to })) } )\n });\n });\n\n\n\n ////\n //// events\n ////\n let numAdditionalCourses = 0;\n const eventMap = new Map<string, OutTypes.event[]>();\n const intervalMap = new Map<string, Map<number, CoreTypes.interval> >();\n lessons.forEach(l => {\n // ignore all lessons which are not scheduled on the week of interest\n if (meta?.week == undefined || !parseActualWeeks(l.CalcActualWeeks).includes(meta.week)) return;\n\n\n const coursesIds = [...(lessonGroupsMap.get(l.PK) ?? new Set())]\n .map(id => groupMap.get(parseInt(id)))\n .filter((g): g is NonNullable<typeof g> => g?.bClass == false)\n .sort((g1, g2) => g1.PK - g2.PK)\n .map(g => g.PK);\n\n const event: OutTypes.event = {\n ids: l.PK.toString(),\n\n duration: l.Length,\n preferredDuration: l.Length,\n ...startAndEnd(l)\n };\n\n // try add room\n const rooms = lessonRoomsMap.get(l.PK);\n if (rooms?.size) {\n event.inLocations = [...rooms];\n event.locations = [...rooms].map(l => ({ locations: [l] }));\n }\n\n // try add teachers\n const teachers = lessonTeachersMap.get(l.PK);\n if (teachers?.size) event.teachers = [...teachers].map(to => ({ to }));\n\n // fetch groups\n const classes: Set<string> = new Set();\n lessonGroupsMap.get(l.PK)?.forEach(scheduleGroupId => {\n groupClassesMap.get(scheduleGroupId)?.forEach(classId => {\n classes.add(classId);\n });\n });\n\n // attempt to deduce groups by analyzing the course name\n // (but only if the event explicitly has groups or its course has none)\n const courseHasGroups = coursesIds.some(x => courseMap.get(x)?.groups);\n if (meta?.deduceGroupsFromCourseName && (!courseHasGroups || classes.size)) {\n coursesIds.map(x => courseMap.get(x)?.displayName)\n .filter(x => x != null)\n .forEach(x => addGroupsFromName(x, classes, groupNamePkMap));\n }\n\n // try add groups\n if (classes.size) event.groups = [...classes].map(to => ({ to }));\n\n\n const subject = subjectMap.get(l.FKSubject!);\n if (subject?.toLowerCase() == arbetstid) {\n // is an interval\n\n // ensure start and end is set\n const start = event.start;\n const end = event.end;\n if (!start || !end) {\n warnings.push('Start or end not set on interval event');\n return;\n }\n\n // interval day\n const day = getDay(moment.utc(start));\n\n if (0 > day || day > numDays - 1) {\n warnings.push('Interval day out of bounds');\n return;\n }\n\n // add interval\n teachers?.forEach(t => {\n if (!intervalMap.has(t)) intervalMap.set(t, new Map());\n intervalMap.get(t)?.set(day, { start, end });\n });\n\n } else {\n // is an event\n\n ////\n //// if there is no course, create it\n //// (can also be interval)\n ////\n if (!coursesIds.length) {\n const id = --numAdditionalCourses;\n\n courseMap.set(id, {\n ids: id.toString(),\n\n ...( subject && { displayName: subject } ),\n ...( subject && { subject } ),\n\n // // makes it easier to se in the table\n // ...( teachers?.size && { teachers: [...teachers] } ),\n // ...( classes?.size && { groups: [...classes] } ),\n });\n\n coursesIds.push(id);\n }\n\n\n // add\n const key = coursesIds.join(separator);\n if (!eventMap.has(key)) eventMap.set(key, []);\n eventMap.get(key)?.push(event);\n }\n\n });\n\n\n ////\n //// set teacher days and intervals\n ////\n intervalMap.forEach((v, k) => {\n // fetch teacher\n const teacher = RSteachers.find(t => t.ids == k);\n if (!teacher) {\n warnings.push(`An interval referred to the unknown teacher with PK = ${k}`);\n return;\n }\n\n // construct\n const intervals = createDefaultIntervals();\n const days: CoreTypes.day[] = [];\n v.forEach((i, d) => {\n days.push({ day: d });\n intervals[d] = i;\n });\n\n // set\n // (set days only if not all are permitted)\n teacher.intervals = intervals;\n if (days.length != numDays) teacher.days = days;\n });\n\n\n ////\n //// merge courses\n ////\n eventMap.forEach((events, key) => {\n const courseIds = key.split(separator).map(x => parseInt(x));\n\n if (courseIds.length > 1) {\n const idss: string[] = [];\n const displayNames: string[] = [];\n\n const subjects = new Set<string>();\n const groups = new Set<string>();\n const teachers = new Set<string>();\n\n // merge courses\n courseIds.map(x => courseMap.get(x))\n .filter(c => c != undefined)\n .forEach(c => {\n if (c.ids) idss.push(c.ids);\n if (c.displayName) displayNames.push(c.displayName);\n\n if (c.subject) subjects.add(c.subject);\n if (c.groups) c.groups.forEach(({ to }) => groups.add(to.toString()));\n if (c.teachers) c.teachers.forEach(({ to }) => teachers.add(to.toString()));\n });\n\n const newKey = --numAdditionalCourses;\n const newCourse: OutTypes.course = {\n ids: idss.join(separator),\n displayName: displayNames.join(separator),\n\n ...( subjects.size && { subject: [...subjects].join(separator) } ),\n\n ...( groups.size && { groups: [...groups].map(to => ({ to })) } ),\n ...( teachers.size && { teachers: [...teachers].map(to => ({ to })) } )\n };\n\n // add courses\n // (leave old courses if they have events) <-- WTF!?\n courseMap.set(newKey, newCourse);\n\n // link events to new course\n eventMap.set(newKey.toString(), [...events]);\n events.length = 0;\n\n // console.log(`The courses with PKs [${courseIds.join(separator)}] needed to be merged.`);\n warnings.push(`The courses with PKs [${courseIds.join(separator)}] needed to be merged.`);\n }\n });\n\n\n\n ////\n //// link events with courses\n ////\n const populatedCourses = new Set<number>();\n eventMap.forEach((events, key) => {\n // need to contain events\n if (!events.length) return;\n\n const courseIds = key.split(separator).map(x => parseInt(x));\n\n if (courseIds.length != 1 && events.length) throw new Error('Well this was unexpected...');\n\n const courseId = courseIds[0];\n const PK = courseMap.get(courseId)?.ids;\n\n if (PK == undefined) {\n // console.log(courseIds, PK, key, events)\n // throw \"Well this was also unexpected...\";\n // console.log(`The events with PKs ${events.map(e => e.ids)} were ignored since their course was not found.`);\n errors.push(`The events with PKs ${events.map(e => e.ids).join(', ')} were ignored since their course was not found.`);\n events.length = 0;\n return;\n }\n\n // link\n events.forEach(e => e.course = PK);\n\n populatedCourses.add(courseId);\n });\n\n\n\n ////\n //// try remove empty courses\n ////\n if (meta?.ignoreEmptyCourses) {\n // filter in place\n const courses = [...courseMap].filter(([k]) => populatedCourses.has(k));\n courseMap = new Map(courses);\n }\n\n\n ////\n //// try promote groups, teachers and locations to the parent course\n //// (if the course has none and all sibling events have the same)\n ////\n const keys = ['groups', 'teachers', 'locations'] as const;\n for (const key of keys) {\n courseMap.forEach((c, courseKey) => {\n // need to use the \"courseKey\" as it is different from the \"c.ids\" if the course has been merged\n const events = eventMap.get(courseKey.toString());\n\n const eventEntries = makeChainable(events ?? [])\n .chain(\n x => x\n .map(e => e[key] ?? c[key])\n .filter(x => x != null),\n x => uniqBy(x, x => x\n .map(x => 'to' in x ? x.to : x.locations[0])\n .sort()\n .join('.')\n )\n )\n .value;\n\n // the event entries must be exactly one\n if (eventEntries.length != 1) return;\n\n // update\n switch (key) {\n case 'groups': c[key] = eventEntries[0] as (typeof c)[typeof key]; break;\n case 'teachers': c[key] = eventEntries[0] as (typeof c)[typeof key]; break;\n case 'locations': c[key] = eventEntries[0] as (typeof c)[typeof key]; break;\n default: throw new Error(`Unknown key \"${key satisfies never as string}\"`);\n }\n events?.forEach(e => delete e[key]);\n });\n }\n\n\n // let eventsArray: Types.courseEvent[] = [];\n return { courses: [...courseMap.values()], events: [...eventMap.values()].flat() };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"groups.js","names":[],"sources":["../../../../src/Skola24/mdb/from/groups.ts"],"sourcesContent":["import { Types } from '../../../core/types';\nimport { Group } from '../types/Group';\n\n\nexport default function (\n groups: Group[],\n warnings: string[],\n errors: string[]\n): Types.group[] {\n return groups.filter(x => x.bClass)\n .map(x => ({\n ids: x.PK.toString(),\n displayName: x.ID,\n species: 'class',\n }));\n}\n"],"mappings":";AAIA,wBACE,QACA,UACA,QACe;AACf,QAAO,OAAO,QAAO,MAAK,EAAE,QACzB,KAAI,OAAM;EACT,KAAa,EAAE,GAAG;EAClB,aAAa,EAAE;EACf,SAAa"}
1
+ {"version":3,"file":"groups.js","names":[],"sources":["../../../../src/Skola24/mdb/from/groups.ts"],"sourcesContent":["import type { Types as Skola24Types } from '../types';\nimport type { OutTypes } from './schedule';\n\nexport default function (\n groups: Skola24Types.group[],\n warnings: string[],\n errors: string[]\n): OutTypes.group[] {\n return groups.filter(x => x.bClass)\n .map(x => ({\n ids: x.PK.toString(),\n displayName: x.ID,\n species: 'class',\n }));\n}\n"],"mappings":";AAGA,wBACE,QACA,UACA,QACkB;AAClB,QAAO,OAAO,QAAO,MAAK,EAAE,QACzB,KAAI,OAAM;EACT,KAAa,EAAE,GAAG;EAClB,aAAa,EAAE;EACf,SAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_schedule"],"sources":["../../../../src/Skola24/mdb/from/index.ts"],"sourcesContent":["import { FromInterface } from '../../../core/types';\nimport _schedule from './schedule';\n\n\nexport default {\n schedules: _schedule\n} satisfies FromInterface;\n"],"mappings":";;;AAIA,mBAAe,EACb,WAAWA"}
1
+ {"version":3,"file":"index.js","names":["_schedule"],"sources":["../../../../src/Skola24/mdb/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport _schedule from './schedule';\n\nexport default {\n schedules: _schedule\n} satisfies FromInterface;\n"],"mappings":";;;AAGA,mBAAe,EACb,WAAWA"}
@@ -1 +1 @@
1
- {"version":3,"file":"locations.js","names":[],"sources":["../../../../src/Skola24/mdb/from/locations.ts"],"sourcesContent":["import { Types } from '../../../core/types';\nimport { Room } from '../types/Room';\n\n\nexport default function (\n rooms: Room[],\n warnings: string[],\n errors: string[]\n): Types.location[] {\n\n return rooms.map(x => ({\n ids: x.PK.toString(),\n displayName: x.ID\n }));\n}\n"],"mappings":";AAIA,2BACE,OACA,UACA,QACkB;AAElB,QAAO,MAAM,KAAI,OAAM;EACrB,KAAa,EAAE,GAAG;EAClB,aAAa,EAAE"}
1
+ {"version":3,"file":"locations.js","names":[],"sources":["../../../../src/Skola24/mdb/from/locations.ts"],"sourcesContent":["import type { Types as Skola24Types } from '../types';\nimport type { OutTypes } from './schedule';\n\nexport default function (\n rooms: Skola24Types.room[],\n warnings: string[],\n errors: string[]\n): OutTypes.location[] {\n return rooms.map(x => ({\n ids: x.PK.toString(),\n displayName: x.ID\n }));\n}\n"],"mappings":";AAGA,2BACE,OACA,UACA,QACqB;AACrB,QAAO,MAAM,KAAI,OAAM;EACrB,KAAa,EAAE,GAAG;EAClB,aAAa,EAAE"}
@@ -1,9 +1,27 @@
1
- import { Types } from "../../../core/v2/types/index.js";
2
- import { Options } from "../types/Options.js";
1
+ import { InternalIdKey } from "../../../core/types/common/index.js";
2
+ import { Types } from "../../../core/types/index.js";
3
3
  import { Types as Types$1 } from "../types/index.js";
4
4
 
5
5
  //#region src/Skola24/mdb/from/schedule.d.ts
6
- declare function export_default(src: Types$1.schedule, options?: Options): Types.division;
6
+ declare namespace OutTypes {
7
+ type location = Omit<Types.serialized.location, InternalIdKey>;
8
+ type teacher = Omit<Types.serialized.teacher, InternalIdKey>;
9
+ type group = Omit<Types.serialized.group, InternalIdKey>;
10
+ type course = Omit<Types.serialized.course, InternalIdKey>;
11
+ type event = Omit<Types.serialized.event, InternalIdKey>;
12
+ }
13
+ type Out = {
14
+ locations: OutTypes.location[];
15
+ teachers: OutTypes.teacher[];
16
+ groups: OutTypes.group[];
17
+ courses: OutTypes.course[];
18
+ events: OutTypes.event[];
19
+ meta?: {
20
+ errors?: string[];
21
+ warnings?: string[];
22
+ };
23
+ };
24
+ declare function export_default(src: Types$1.schedule, _options?: Types$1.options): Out;
7
25
  //#endregion
8
26
  export { export_default };
9
27
  //# sourceMappingURL=schedule.d.ts.map
@@ -1,21 +1,19 @@
1
+ import { getVertexId } from "../../../core/util.js";
1
2
  import locations_default from "./locations.js";
2
3
  import teachers_default from "./teachers.js";
3
4
  import groups_default from "./groups.js";
4
5
  import course_and_events_default from "./course-and-events.js";
5
6
 
6
7
  //#region src/Skola24/mdb/from/schedule.ts
7
- function schedule_default(src, options) {
8
+ function schedule_default(src, _options = {}) {
9
+ const options = Object.assign(_options, { dKey: "ids" });
8
10
  const warnings = [];
9
11
  const errors = [];
10
12
  if (options?.week == void 0) warnings.push("No events will be imported since no import week was provided");
11
- const groupMap = /* @__PURE__ */ new Map();
12
- src.school_tblgroup.forEach((x) => groupMap.set(x.PK, x));
13
- const courseMap = /* @__PURE__ */ new Map();
14
- src.school_tblcourse.forEach((x) => courseMap.set(x.PK, x));
15
- const planMap = /* @__PURE__ */ new Map();
16
- src.school_tblplan.forEach((x) => planMap.set(x.PK, x));
17
- const subjectMap = /* @__PURE__ */ new Map();
18
- src.school_tblsubject.forEach((x) => subjectMap.set(x.PK, x.ID));
13
+ const groupMap = new Map(src.school_tblgroup.map((x) => [x.PK, x]));
14
+ new Map(src.school_tblcourse.map((x) => [x.PK, x]));
15
+ const planMap = new Map(src.school_tblplan.map((x) => [x.PK, x]));
16
+ const subjectMap = new Map(src.school_tblsubject.map((x) => [x.PK, x.ID]));
19
17
  const planTeachersMap = /* @__PURE__ */ new Map();
20
18
  src.school_tblplan_teacher.forEach((x) => {
21
19
  if (!planTeachersMap.has(x.FKPlan)) planTeachersMap.set(x.FKPlan, /* @__PURE__ */ new Set());
@@ -62,24 +60,24 @@ function schedule_default(src, options) {
62
60
  let groups = groups_default(src.school_tblgroup, warnings, errors);
63
61
  const { courses, events } = course_and_events_default(src.school_tblgroup, src.school_tblschedule, options, groupPlansMap, planMap, subjectMap, planTeachersMap, groupClassesMap, groups, groupMap, lessonRoomsMap, lessonTeachersMap, lessonGroupsMap, teachers, warnings, errors);
64
62
  if (options?.removeUnreferencedTeachers) {
65
- const unreferencedTeacherSet = new Set(teachers.map((t) => t.ids)) ?? /* @__PURE__ */ new Set();
63
+ const unreferencedTeacherSet = new Set(teachers.map((x) => getVertexId(x, options)));
66
64
  events.forEach((e) => {
67
- e.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(to.toString()));
65
+ e.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(getVertexId(to, options)));
68
66
  });
69
67
  courses.forEach((c) => {
70
- c.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(to.toString()));
68
+ c.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(getVertexId(to, options)));
71
69
  });
72
- teachers = teachers.filter((t) => !unreferencedTeacherSet.has(t.ids));
70
+ teachers = teachers.filter((x) => !unreferencedTeacherSet.has(getVertexId(x, options)));
73
71
  }
74
72
  if (options?.removeUnreferencedGroups) {
75
- const unreferencedGroupSet = new Set(groups.map((t) => t.ids)) ?? /* @__PURE__ */ new Set();
73
+ const unreferencedGroupSet = new Set(groups.map((x) => getVertexId(x, options)));
76
74
  events.forEach((e) => {
77
- e.groups?.forEach(({ to }) => unreferencedGroupSet.delete(to.toString()));
75
+ e.groups?.forEach(({ to }) => unreferencedGroupSet.delete(getVertexId(to, options)));
78
76
  });
79
77
  courses.forEach((c) => {
80
- c.groups?.forEach(({ to }) => unreferencedGroupSet.delete(to.toString()));
78
+ c.groups?.forEach(({ to }) => unreferencedGroupSet.delete(getVertexId(to, options)));
81
79
  });
82
- groups = groups.filter((g) => !unreferencedGroupSet.has(g.ids));
80
+ groups = groups.filter((x) => !unreferencedGroupSet.has(getVertexId(x, options)));
83
81
  }
84
82
  return {
85
83
  locations,
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","names":["warnings: string[]","errors: string[]","_locations","_teachers","_groups","coursesAndEvents"],"sources":["../../../../src/Skola24/mdb/from/schedule.ts"],"sourcesContent":["import { Types as CoreTypes } from '../../../core/types';\nimport { Options, Types } from '../types';\n\nimport _locations from './locations';\nimport _teachers from './teachers';\nimport _groups from './groups';\nimport coursesAndEvents from './course-and-events';\n\nexport default function (\n src: Types.schedule,\n options?: Options\n): CoreTypes.division {\n\n // gather all import related warnings/errors\n const warnings: string[] = [];\n const errors: string[] = [];\n\n // check which weeks this schedule concern\n if (options?.week == undefined) {\n warnings.push('No events will be imported since no import week was provided');\n }\n\n ////\n //// construct maps\n ////\n\n // groups\n const groupMap = new Map<number, Types.group>();\n src.school_tblgroup.forEach(x => groupMap.set(x.PK, x));\n\n // courses\n const courseMap = new Map<number, Types.course>();\n src.school_tblcourse.forEach(x => courseMap.set(x.PK, x));\n\n // plan\n const planMap = new Map<number, Types.plan>();\n src.school_tblplan.forEach(x => planMap.set(x.PK, x));\n\n // subject\n const subjectMap = new Map<number, string>();\n src.school_tblsubject.forEach(x => subjectMap.set(x.PK, x.ID));\n\n\n // plan-teacher\n const planTeachersMap = new Map<number, Set<string> >();\n src.school_tblplan_teacher.forEach(x => {\n if (!planTeachersMap.has(x.FKPlan)) planTeachersMap.set(x.FKPlan, new Set());\n planTeachersMap.get(x.FKPlan)!.add(x.FKTeacher.toString());\n });\n\n // plan-group\n const planGroupsMap = new Map<number, Set<string> >();\n src.school_tblplan_group.forEach(x => {\n if (!planGroupsMap.has(x.FKPlan)) planGroupsMap.set(x.FKPlan, new Set());\n planGroupsMap.get(x.FKPlan)!.add(x.FKGroup.toString());\n });\n\n // group-plan\n const groupPlansMap = new Map<number, Set<string> >();\n src.school_tblplan_group.forEach(x => {\n if (!groupPlansMap.has(x.FKGroup)) groupPlansMap.set(x.FKGroup, new Set());\n groupPlansMap.get(x.FKGroup)!.add(x.FKPlan.toString());\n });\n\n // lesson-rooms\n const lessonRoomsMap = new Map<number, Set<string> >();\n src.school_tblschedule_room.forEach(x => {\n if (!lessonRoomsMap.has(x.FKSchedule)) lessonRoomsMap.set(x.FKSchedule, new Set());\n lessonRoomsMap.get(x.FKSchedule)!.add(x.FKRoom.toString());\n });\n\n // lesson-teacher\n const lessonTeachersMap = new Map<number, Set<string> >();\n src.school_tblschedule_teacher.forEach(x => {\n if (!lessonTeachersMap.has(x.FKSchedule)) lessonTeachersMap.set(x.FKSchedule, new Set());\n lessonTeachersMap.get(x.FKSchedule)!.add(x.FKTeacher.toString());\n });\n\n // lesson-group\n const lessonGroupsMap = new Map<number, Set<string> >();\n src.school_tblschedule_group.forEach(x => {\n if (!lessonGroupsMap.has(x.FKSchedule)) lessonGroupsMap.set(x.FKSchedule, new Set());\n lessonGroupsMap.get(x.FKSchedule)!.add(x.FKGroup.toString());\n });\n\n // construct a group (= course) to class map\n const groupClassesMap = new Map<string, Set<string> >();\n src.school_tblgroup_group.forEach(x => {\n if (!groupClassesMap.has(x.FKGroup.toString())) groupClassesMap.set(x.FKGroup.toString(), new Set());\n groupClassesMap.get(x.FKGroup.toString())!.add(x.FKGroupCon.toString());\n });\n // class-class not present in the \"school_tblgroup_group\" table, so add manually\n src.school_tblgroup.forEach(x => {\n if (x.bClass) {\n if (!groupClassesMap.has(x.PK.toString())) groupClassesMap.set(x.PK.toString(), new Set());\n groupClassesMap.get(x.PK.toString())!.add(x.PK.toString());\n }\n });\n\n\n ////\n //// map entities\n ////\n const locations = _locations(src.unit_tblroom, warnings, errors);\n let teachers = _teachers( src.school_tblteacher, warnings, errors);\n let groups = _groups( src.school_tblgroup, warnings, errors);\n\n const { courses, events }\n = coursesAndEvents(src.school_tblgroup,\n src.school_tblschedule,\n options,\n\n groupPlansMap,\n planMap,\n\n subjectMap,\n planTeachersMap,\n groupClassesMap,\n groups,\n\n groupMap,\n lessonRoomsMap,\n lessonTeachersMap,\n lessonGroupsMap,\n teachers,\n\n warnings, errors);\n\n\n ////\n //// try filter unreferenced groups and teachers\n ////\n if (options?.removeUnreferencedTeachers) {\n const unreferencedTeacherSet = new Set(teachers.map(t => t.ids!)) ?? new Set<string>();\n events.forEach(e => {\n e.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(to.toString()));\n });\n courses.forEach(c => {\n c.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(to.toString()));\n });\n teachers = teachers.filter(t => !unreferencedTeacherSet.has(t.ids!));\n }\n\n if (options?.removeUnreferencedGroups) {\n const unreferencedGroupSet = new Set(groups.map(t => t.ids!)) ?? new Set<string>();\n events.forEach(e => {\n e.groups?.forEach(({ to }) => unreferencedGroupSet.delete(to.toString()));\n });\n courses.forEach(c => {\n c.groups?.forEach(({ to }) => unreferencedGroupSet.delete(to.toString()));\n });\n groups = groups.filter(g => !unreferencedGroupSet.has(g.ids!));\n }\n\n\n return { locations, teachers, groups, courses, events,\n meta: {\n ...( errors.length ? { errors: errors } : { } ),\n ...( warnings.length ? { warnings: warnings } : { } )\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"schedule.js","names":["warnings: string[]","errors: string[]","_locations","_teachers","_groups","coursesAndEvents"],"sources":["../../../../src/Skola24/mdb/from/schedule.ts"],"sourcesContent":["import type { CoreTypes } from '../../../core';\nimport type { Types as Skola24Types } from '../types';\nimport type { InternalIdKey } from '../../../core/types/common';\nimport { getVertexId } from '../../../core/util';\nimport _locations from './locations';\nimport _teachers from './teachers';\nimport _groups from './groups';\nimport coursesAndEvents from './course-and-events';\nimport type { BaseOptions } from '../../../common/types';\n\nexport namespace OutTypes {\n export type location = Omit<CoreTypes.serialized.location, InternalIdKey>;\n export type teacher = Omit<CoreTypes.serialized.teacher, InternalIdKey>;\n export type group = Omit<CoreTypes.serialized.group, InternalIdKey>;\n export type course = Omit<CoreTypes.serialized.course, InternalIdKey>;\n export type event = Omit<CoreTypes.serialized.event, InternalIdKey>;\n}\n\ntype Out = {\n locations: OutTypes.location[];\n teachers: OutTypes.teacher[];\n groups: OutTypes.group[];\n courses: OutTypes.course[];\n events: OutTypes.event[];\n meta?: {\n errors?: string[];\n warnings?: string[];\n };\n};\n\nexport default function (\n src: Skola24Types.schedule,\n _options: Skola24Types.options = { }\n): Out {\n const options = Object.assign(_options, { dKey: 'ids' } as BaseOptions);\n\n // gather all import related warnings/errors\n const warnings: string[] = [];\n const errors: string[] = [];\n\n // check which weeks this schedule concern\n if (options?.week == undefined) {\n warnings.push('No events will be imported since no import week was provided');\n }\n\n ////\n //// construct maps\n ////\n\n // groups\n const groupMap = new Map(src.school_tblgroup.map(x => [x.PK, x]));\n\n // courses\n const courseMap = new Map(src.school_tblcourse.map(x => [x.PK, x]));\n\n // plan\n const planMap = new Map(src.school_tblplan.map(x => [x.PK, x]));\n\n // subject\n const subjectMap = new Map(src.school_tblsubject.map(x => [x.PK, x.ID]));\n\n\n // plan-teacher\n const planTeachersMap = new Map<number, Set<string>>();\n src.school_tblplan_teacher.forEach(x => {\n if (!planTeachersMap.has(x.FKPlan)) planTeachersMap.set(x.FKPlan, new Set());\n planTeachersMap.get(x.FKPlan)!.add(x.FKTeacher.toString());\n });\n\n // plan-group\n const planGroupsMap = new Map<number, Set<string>>();\n src.school_tblplan_group.forEach(x => {\n if (!planGroupsMap.has(x.FKPlan)) planGroupsMap.set(x.FKPlan, new Set());\n planGroupsMap.get(x.FKPlan)!.add(x.FKGroup.toString());\n });\n\n // group-plan\n const groupPlansMap = new Map<number, Set<string>>();\n src.school_tblplan_group.forEach(x => {\n if (!groupPlansMap.has(x.FKGroup)) groupPlansMap.set(x.FKGroup, new Set());\n groupPlansMap.get(x.FKGroup)!.add(x.FKPlan.toString());\n });\n\n // lesson-rooms\n const lessonRoomsMap = new Map<number, Set<string> >();\n src.school_tblschedule_room.forEach(x => {\n if (!lessonRoomsMap.has(x.FKSchedule)) lessonRoomsMap.set(x.FKSchedule, new Set());\n lessonRoomsMap.get(x.FKSchedule)!.add(x.FKRoom.toString());\n });\n\n // lesson-teacher\n const lessonTeachersMap = new Map<number, Set<string> >();\n src.school_tblschedule_teacher.forEach(x => {\n if (!lessonTeachersMap.has(x.FKSchedule)) lessonTeachersMap.set(x.FKSchedule, new Set());\n lessonTeachersMap.get(x.FKSchedule)!.add(x.FKTeacher.toString());\n });\n\n // lesson-group\n const lessonGroupsMap = new Map<number, Set<string> >();\n src.school_tblschedule_group.forEach(x => {\n if (!lessonGroupsMap.has(x.FKSchedule)) lessonGroupsMap.set(x.FKSchedule, new Set());\n lessonGroupsMap.get(x.FKSchedule)!.add(x.FKGroup.toString());\n });\n\n // construct a group (= course) to class map\n const groupClassesMap = new Map<string, Set<string> >();\n src.school_tblgroup_group.forEach(x => {\n if (!groupClassesMap.has(x.FKGroup.toString())) groupClassesMap.set(x.FKGroup.toString(), new Set());\n groupClassesMap.get(x.FKGroup.toString())!.add(x.FKGroupCon.toString());\n });\n // class-class not present in the \"school_tblgroup_group\" table, so add manually\n src.school_tblgroup.forEach(x => {\n if (x.bClass) {\n if (!groupClassesMap.has(x.PK.toString())) groupClassesMap.set(x.PK.toString(), new Set());\n groupClassesMap.get(x.PK.toString())!.add(x.PK.toString());\n }\n });\n\n\n ////\n //// map entities\n ////\n const locations = _locations(src.unit_tblroom, warnings, errors);\n let teachers = _teachers (src.school_tblteacher, warnings, errors);\n let groups = _groups (src.school_tblgroup, warnings, errors);\n\n const { courses, events }\n = coursesAndEvents(src.school_tblgroup,\n src.school_tblschedule,\n options,\n\n groupPlansMap,\n planMap,\n\n subjectMap,\n planTeachersMap,\n groupClassesMap,\n groups,\n\n groupMap,\n lessonRoomsMap,\n lessonTeachersMap,\n lessonGroupsMap,\n teachers,\n\n warnings, errors);\n\n\n ////\n //// try filter unreferenced groups and teachers\n ////\n if (options?.removeUnreferencedTeachers) {\n const unreferencedTeacherSet = new Set(teachers.map(x => getVertexId(x, options)));\n events.forEach(e => {\n e.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(getVertexId(to, options)));\n });\n courses.forEach(c => {\n c.teachers?.forEach(({ to }) => unreferencedTeacherSet.delete(getVertexId(to, options)));\n });\n teachers = teachers.filter(x => !unreferencedTeacherSet.has(getVertexId(x, options)));\n }\n\n if (options?.removeUnreferencedGroups) {\n const unreferencedGroupSet = new Set(groups.map(x => getVertexId(x, options)));\n events.forEach(e => {\n e.groups?.forEach(({ to }) => unreferencedGroupSet.delete(getVertexId(to, options)));\n });\n courses.forEach(c => {\n c.groups?.forEach(({ to }) => unreferencedGroupSet.delete(getVertexId(to, options)));\n });\n groups = groups.filter(x => !unreferencedGroupSet.has(getVertexId(x, options)));\n }\n\n\n return { locations, teachers, groups, courses, events,\n meta: {\n ...( errors.length ? { errors: errors } : { } ),\n ...( warnings.length ? { warnings: warnings } : { } )\n }\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"teachers.js","names":[],"sources":["../../../../src/Skola24/mdb/from/teachers.ts"],"sourcesContent":["import { Types } from '../../../core/types';\nimport { Teacher } from '../types/Teacher';\n\n\nexport default function (\n teachers: Teacher[],\n warnings: string[],\n errors: string[]\n): Types.teacher[] {\n\n return teachers.map(x => ({\n ids: x.PK.toString(),\n displayName: x.FirstName && x.LastName ? x.FirstName + ' ' + x.LastName : x.ID\n }));\n}\n"],"mappings":";AAIA,0BACE,UACA,UACA,QACiB;AAEjB,QAAO,SAAS,KAAI,OAAM;EACxB,KAAa,EAAE,GAAG;EAClB,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,MAAM,EAAE,WAAW,EAAE"}
1
+ {"version":3,"file":"teachers.js","names":[],"sources":["../../../../src/Skola24/mdb/from/teachers.ts"],"sourcesContent":["import type { Types as Skola24Types } from '../types';\nimport type { OutTypes } from './schedule';\n\nexport default function (\n teachers: Skola24Types.teacher[],\n warnings: string[],\n errors: string[]\n): OutTypes.teacher[] {\n\n return teachers.map(x => ({\n ids: x.PK.toString(),\n displayName: x.FirstName && x.LastName ? x.FirstName + ' ' + x.LastName : x.ID\n }));\n}\n"],"mappings":";AAGA,0BACE,UACA,UACA,QACoB;AAEpB,QAAO,SAAS,KAAI,OAAM;EACxB,KAAa,EAAE,GAAG;EAClB,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,MAAM,EAAE,WAAW,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_from"],"sources":["../../../src/Skola24/mdb/index.ts"],"sourcesContent":["import _from from './from';\nimport { Types } from './types';\n\nexport class Map {\n static from = _from;\n}\n\nexport type { Types };"],"mappings":";;;AAGA,IAAa,MAAb,MAAiB;CACf,OAAO,OAAOA"}
1
+ {"version":3,"file":"index.js","names":["_from"],"sources":["../../../src/Skola24/mdb/index.ts"],"sourcesContent":["import _from from './from';\nimport type { Types } from './types';\n\nexport class Map {\n static from = _from;\n}\n\nexport { Types };"],"mappings":";;;AAGA,IAAa,MAAb,MAAiB;CACf,OAAO,OAAOA"}
@@ -1,6 +1,9 @@
1
+ import { Room } from "./Room.js";
2
+ import { Teacher } from "./Teacher.js";
1
3
  import { Group } from "./Group.js";
2
4
  import { Plan } from "./Plan.js";
3
5
  import { Course } from "./Course.js";
6
+ import { Lesson } from "./Lesson.js";
4
7
  import { Schedule } from "./Schedule.js";
5
8
  import { Options } from "./Options.js";
6
9
 
@@ -10,6 +13,10 @@ declare namespace Types {
10
13
  type course = Course;
11
14
  type group = Group;
12
15
  type plan = Plan;
16
+ type lesson = Lesson;
17
+ type room = Room;
18
+ type teacher = Teacher;
19
+ type options = Options;
13
20
  }
14
21
  //#endregion
15
22
  export { Types };
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-exceptions.js","names":["exceptions: { start: moment.Moment, end: moment.Moment }[]"],"sources":["../../../../src/Skola24/txt/from/calendar-exceptions.ts"],"sourcesContent":["import moment from 'moment';\nimport { Types, Warning } from '../types';\nimport { Types as CoreTypes } from '../../../core/types';\n\nexport function parseCalendarExceptions (\n period: Types.periodGeneral | undefined,\n startYear: number,\n warnings: Warning[]\n): CoreTypes.divisionSettings['calendarExceptions'] {\n if (!period) return [];\n\n // should warn only once\n let warned = false;\n\n // parse range\n const allowedRanges = (period.SchoolYear ?? '')\n .split(',')\n // parse each range\n .map(x => {\n // date ranges on the form \"20/8-23/8\"\n const [_start, _end] = x.split('-');\n if (!_start || !_end) return;\n\n const start = moment.utc(`${_start}/${startYear}`, 'DD/MM/YYYY').startOf('day');\n const end = moment.utc(`${_end}/${startYear}`, 'DD/MM/YYYY').endOf ('day');\n if (!start.isValid() || !end.isValid()) {\n if (warned) return;\n warned = true;\n warnings.push({\n code: 'calendarExceptions.problem_parsing_range',\n context: period\n });\n return;\n }\n\n return { start, end };\n })\n .filter((x): x is NonNullable<typeof x> => !!x)\n // make the ranges ordered by incrementing by a year if needed\n .reduce<{ start: moment.Moment, end: moment.Moment }[]>((acc, x) => {\n const prev = acc.at(-1);\n if (!prev) {\n acc.push(x);\n } else {\n while (prev.end.isAfter(x.start)) {\n x.start.add(1, 'year');\n x.end .add(1, 'year');\n }\n acc.push(x);\n }\n return acc;\n }, []);\n\n // extend the range to whole week if the end is a friday\n for (let i = 1; i < allowedRanges.length - 1; i++) {\n const x = allowedRanges[i];\n\n if (x.end.isoWeekday() === 5) {\n x.end = x.end.add(2, 'days');\n }\n };\n\n // merge ranges if they are adjacent or overlapping (the latter is not expected)\n for (let i = 0; i < allowedRanges.length - 1; i++) {\n const x = allowedRanges[i];\n const y = allowedRanges[i + 1];\n\n const diff = y.start.diff(x.end); // 1 ms if adjacent, negative if overlapping\n if (diff <= 2) {\n x.end = moment.max(x.end, y.end);\n allowedRanges.splice(i + 1, 1);\n i--;\n }\n }\n\n // invert the allowed ranges to get the exceptions\n const exceptions: { start: moment.Moment, end: moment.Moment }[] = [];\n for (let i = 0; i < allowedRanges.length - 1; i++) {\n const x = allowedRanges[i];\n const y = allowedRanges[i + 1];\n exceptions.push({\n start: x.end .add (1, 'day').startOf('day'),\n end: y.start.subtract(1, 'day').endOf ('day'),\n });\n }\n\n return exceptions.map(x => ({\n start: x.start.toISOString(),\n end: x.end .toISOString(),\n }));\n}"],"mappings":";;;AAIA,SAAgB,wBACd,QACA,WACA,UACkD;AAClD,KAAI,CAAC,OAAQ,QAAO;CAGpB,IAAI,SAAS;CAGb,MAAM,iBAAiB,OAAO,cAAc,IACzC,MAAM,KAEN,KAAI,MAAK;EAER,MAAM,CAAC,QAAQ,QAAQ,EAAE,MAAM;AAC/B,MAAI,CAAC,UAAU,CAAC,KAAM;EAEtB,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,GAAG,aAAa,cAAc,QAAQ;EACzE,MAAM,MAAQ,OAAO,IAAI,GAAG,KAAK,GAAG,aAAe,cAAc,MAAQ;AACzE,MAAI,CAAC,MAAM,aAAa,CAAC,IAAI,WAAW;AACtC,OAAI,OAAQ;AACZ,YAAS;AACT,YAAS,KAAK;IACZ,MAAS;IACT,SAAS;;AAEX;;AAGF,SAAO;GAAE;GAAO;;IAEjB,QAAQ,MAAkC,CAAC,CAAC,GAE5C,QAAwD,KAAK,MAAM;EAClE,MAAM,OAAO,IAAI,GAAG;AACpB,MAAI,CAAC,KACH,KAAI,KAAK;OACJ;AACL,UAAO,KAAK,IAAI,QAAQ,EAAE,QAAQ;AAChC,MAAE,MAAM,IAAI,GAAG;AACf,MAAE,IAAM,IAAI,GAAG;;AAEjB,OAAI,KAAK;;AAEX,SAAO;IACN;AAGL,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,SAAS,GAAG,KAAK;EACjD,MAAM,IAAI,cAAc;AAExB,MAAI,EAAE,IAAI,iBAAiB,EACzB,GAAE,MAAM,EAAE,IAAI,IAAI,GAAG;;AAKzB,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,SAAS,GAAG,KAAK;EACjD,MAAM,IAAI,cAAc;EACxB,MAAM,IAAI,cAAc,IAAI;EAE5B,MAAM,OAAO,EAAE,MAAM,KAAK,EAAE;AAC5B,MAAI,QAAQ,GAAG;AACb,KAAE,MAAM,OAAO,IAAI,EAAE,KAAK,EAAE;AAC5B,iBAAc,OAAO,IAAI,GAAG;AAC5B;;;CAKJ,MAAMA,aAA6D;AACnE,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,SAAS,GAAG,KAAK;EACjD,MAAM,IAAI,cAAc;EACxB,MAAM,IAAI,cAAc,IAAI;AAC5B,aAAW,KAAK;GACd,OAAO,EAAE,IAAM,IAAS,GAAG,OAAO,QAAQ;GAC1C,KAAO,EAAE,MAAM,SAAS,GAAG,OAAO,MAAQ;;;AAI9C,QAAO,WAAW,KAAI,OAAM;EAC1B,OAAO,EAAE,MAAM;EACf,KAAO,EAAE,IAAM"}
1
+ {"version":3,"file":"calendar-exceptions.js","names":["exceptions: { start: moment.Moment, end: moment.Moment }[]"],"sources":["../../../../src/Skola24/txt/from/calendar-exceptions.ts"],"sourcesContent":["import moment from 'moment';\nimport type { Types, Warning } from '../types';\nimport type { OutTypes } from './schedules';\n\nexport function parseCalendarExceptions (\n period: Types.periodGeneral | undefined,\n startYear: number,\n warnings: Warning[]\n): OutTypes.settings['calendarExceptions'] {\n if (!period) return [];\n\n // should warn only once\n let warned = false;\n\n // parse range\n const allowedRanges = (period.SchoolYear ?? '')\n .split(',')\n // parse each range\n .map(x => {\n // date ranges on the form \"20/8-23/8\"\n const [_start, _end] = x.split('-');\n if (!_start || !_end) return;\n\n const start = moment.utc(`${_start}/${startYear}`, 'DD/MM/YYYY').startOf('day');\n const end = moment.utc(`${_end}/${startYear}`, 'DD/MM/YYYY').endOf ('day');\n if (!start.isValid() || !end.isValid()) {\n if (warned) return;\n warned = true;\n warnings.push({\n code: 'calendarExceptions.problem_parsing_range',\n context: period\n });\n return;\n }\n\n return { start, end };\n })\n .filter((x): x is NonNullable<typeof x> => !!x)\n // make the ranges ordered by incrementing by a year if needed\n .reduce<{ start: moment.Moment, end: moment.Moment }[]>((acc, x) => {\n const prev = acc.at(-1);\n if (!prev) {\n acc.push(x);\n } else {\n while (prev.end.isAfter(x.start)) {\n x.start.add(1, 'year');\n x.end .add(1, 'year');\n }\n acc.push(x);\n }\n return acc;\n }, []);\n\n // extend the range to whole week if the end is a friday\n for (let i = 1; i < allowedRanges.length - 1; i++) {\n const x = allowedRanges[i];\n\n if (x.end.isoWeekday() === 5) {\n x.end = x.end.add(2, 'days');\n }\n };\n\n // merge ranges if they are adjacent or overlapping (the latter is not expected)\n for (let i = 0; i < allowedRanges.length - 1; i++) {\n const x = allowedRanges[i];\n const y = allowedRanges[i + 1];\n\n const diff = y.start.diff(x.end); // 1 ms if adjacent, negative if overlapping\n if (diff <= 2) {\n x.end = moment.max(x.end, y.end);\n allowedRanges.splice(i + 1, 1);\n i--;\n }\n }\n\n // invert the allowed ranges to get the exceptions\n const exceptions: { start: moment.Moment, end: moment.Moment }[] = [];\n for (let i = 0; i < allowedRanges.length - 1; i++) {\n const x = allowedRanges[i];\n const y = allowedRanges[i + 1];\n exceptions.push({\n start: x.end .add (1, 'day').startOf('day'),\n end: y.start.subtract(1, 'day').endOf ('day'),\n });\n }\n\n return exceptions.map(x => ({\n start: x.start.toISOString(),\n end: x.end .toISOString(),\n }));\n}"],"mappings":";;;AAIA,SAAgB,wBACd,QACA,WACA,UACyC;AACzC,KAAI,CAAC,OAAQ,QAAO;CAGpB,IAAI,SAAS;CAGb,MAAM,iBAAiB,OAAO,cAAc,IACzC,MAAM,KAEN,KAAI,MAAK;EAER,MAAM,CAAC,QAAQ,QAAQ,EAAE,MAAM;AAC/B,MAAI,CAAC,UAAU,CAAC,KAAM;EAEtB,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,GAAG,aAAa,cAAc,QAAQ;EACzE,MAAM,MAAQ,OAAO,IAAI,GAAG,KAAK,GAAG,aAAe,cAAc,MAAQ;AACzE,MAAI,CAAC,MAAM,aAAa,CAAC,IAAI,WAAW;AACtC,OAAI,OAAQ;AACZ,YAAS;AACT,YAAS,KAAK;IACZ,MAAS;IACT,SAAS;;AAEX;;AAGF,SAAO;GAAE;GAAO;;IAEjB,QAAQ,MAAkC,CAAC,CAAC,GAE5C,QAAwD,KAAK,MAAM;EAClE,MAAM,OAAO,IAAI,GAAG;AACpB,MAAI,CAAC,KACH,KAAI,KAAK;OACJ;AACL,UAAO,KAAK,IAAI,QAAQ,EAAE,QAAQ;AAChC,MAAE,MAAM,IAAI,GAAG;AACf,MAAE,IAAM,IAAI,GAAG;;AAEjB,OAAI,KAAK;;AAEX,SAAO;IACN;AAGL,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,SAAS,GAAG,KAAK;EACjD,MAAM,IAAI,cAAc;AAExB,MAAI,EAAE,IAAI,iBAAiB,EACzB,GAAE,MAAM,EAAE,IAAI,IAAI,GAAG;;AAKzB,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,SAAS,GAAG,KAAK;EACjD,MAAM,IAAI,cAAc;EACxB,MAAM,IAAI,cAAc,IAAI;EAE5B,MAAM,OAAO,EAAE,MAAM,KAAK,EAAE;AAC5B,MAAI,QAAQ,GAAG;AACb,KAAE,MAAM,OAAO,IAAI,EAAE,KAAK,EAAE;AAC5B,iBAAc,OAAO,IAAI,GAAG;AAC5B;;;CAKJ,MAAMA,aAA6D;AACnE,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,SAAS,GAAG,KAAK;EACjD,MAAM,IAAI,cAAc;EACxB,MAAM,IAAI,cAAc,IAAI;AAC5B,aAAW,KAAK;GACd,OAAO,EAAE,IAAM,IAAS,GAAG,OAAO,QAAQ;GAC1C,KAAO,EAAE,MAAM,SAAS,GAAG,OAAO,MAAQ;;;AAI9C,QAAO,WAAW,KAAI,OAAM;EAC1B,OAAO,EAAE,MAAM;EACf,KAAO,EAAE,IAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"division.js","names":["division: DivisionBare","division"],"sources":["../../../../src/Skola24/txt/from/division.ts"],"sourcesContent":["import { DivisionBare } from '../../../core/v2/types/divisions';\nimport moment from 'moment';\nimport { getStartYear } from './util';\n\n\nexport function extractDivisionName (input: string): undefined | Pick<DivisionBare, 'displayName'> {\n // extract base and offset year\n const displayName = input.match(/^School=(.+)$/m)\n ?.at(1)\n ?.trim();\n\n return displayName ? { displayName } : undefined;\n}\n\nexport function extractStartAndEnd (input: string): undefined | Pick<DivisionBare, 'start' | 'end'> {\n\n // extract the PeriodGeneral table content\n const match = input.match(/PeriodGeneral \\((?:\\d+)\\)(?:\\r\\n|\\r|\\n)\\[Rows\\](?:\\r\\n|\\r|\\n)SchoolYear \\((?:\\d+)\\)(?:\\r\\n|\\r|\\n)([^\\n]*)/);\n if (!match) return;\n\n // date rangers on the form \"20/8-23/8, 26/8-30/8, ..., 9/6-13/6\"\n const dateRanges = match.at(1)?.trim();\n if (!dateRanges) return;\n\n // extract the first date of the first range and the last date of the last range\n const _start = dateRanges.match(/(\\d{1,2}\\/\\d{1,2})/) ?.at(1);\n const _end = dateRanges.match(/(\\d{1,2}\\/\\d{1,2})$/)?.at(1);\n if (!_start || !_end) return;\n\n // format the dates to YYYY-MM-DD using moment\n const startYear = getStartYear(input);\n if (!startYear) return;\n const start = moment.utc(`${_start}/${startYear}`, 'DD/MM/YYYY').startOf('day');\n const end = moment.utc(`${_end}/${startYear}`, 'DD/MM/YYYY') .endOf ('day');\n if (!start.isValid() || !end.isValid()) return;\n\n // if the start date is after the end date, increase the year of the end date\n while (start.isAfter(end)) end.add(1, 'year');\n\n return { start, end };\n}\n\nexport const division = (input: unknown): DivisionBare => {\n const division: DivisionBare = {};\n if (typeof input !== 'string') return division;\n\n // division name\n {\n const x = extractDivisionName(input);\n if (x) Object.assign(division, x);\n }\n\n // division range\n {\n const x = extractStartAndEnd(input);\n if (x) Object.assign(division, x);\n }\n\n return division;\n};"],"mappings":";;;;AAKA,SAAgB,oBAAqB,OAA8D;CAEjG,MAAM,cAAc,MAAM,MAAM,mBAC5B,GAAG,IACH;AAEJ,QAAO,cAAc,EAAE,gBAAgB;;AAGzC,SAAgB,mBAAoB,OAAgE;CAGlG,MAAM,QAAQ,MAAM,MAAM;AAC1B,KAAI,CAAC,MAAO;CAGZ,MAAM,aAAa,MAAM,GAAG,IAAI;AAChC,KAAI,CAAC,WAAY;CAGjB,MAAM,SAAS,WAAW,MAAM,uBAAwB,GAAG;CAC3D,MAAM,OAAS,WAAW,MAAM,wBAAwB,GAAG;AAC3D,KAAI,CAAC,UAAU,CAAC,KAAM;CAGtB,MAAM,YAAY,aAAa;AAC/B,KAAI,CAAC,UAAW;CAChB,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,GAAG,aAAa,cAAc,QAAQ;CACzE,MAAM,MAAQ,OAAO,IAAI,GAAG,KAAK,GAAG,aAAa,cAAgB,MAAQ;AACzE,KAAI,CAAC,MAAM,aAAa,CAAC,IAAI,UAAW;AAGxC,QAAO,MAAM,QAAQ,KAAM,KAAI,IAAI,GAAG;AAEtC,QAAO;EAAE;EAAO;;;AAGlB,MAAa,YAAY,UAAiC;CACxD,MAAMA,aAAyB;AAC/B,KAAI,OAAO,UAAU,SAAU,QAAOC;CAGtC;EACE,MAAM,IAAI,oBAAoB;AAC9B,MAAI,EAAG,QAAO,OAAOA,YAAU;;CAIjC;EACE,MAAM,IAAI,mBAAmB;AAC7B,MAAI,EAAG,QAAO,OAAOA,YAAU;;AAGjC,QAAOA"}
1
+ {"version":3,"file":"division.js","names":["division: Pick<CoreTypes.serialized.division, 'displayName' | 'start' | 'end'>","division"],"sources":["../../../../src/Skola24/txt/from/division.ts"],"sourcesContent":["import moment from 'moment';\nimport type { CoreTypes } from '../../../core';\nimport { getStartYear } from './util';\n\n\nexport function extractDivisionName (input: string): undefined | Pick<CoreTypes.serialized.division, 'displayName'> {\n // extract base and offset year\n const displayName = input.match(/^School=(.+)$/m)\n ?.at(1)\n ?.trim();\n\n return displayName ? { displayName } : undefined;\n}\n\nexport function extractStartAndEnd (input: string): undefined | Pick<CoreTypes.serialized.division, 'start' | 'end'> {\n\n // extract the PeriodGeneral table content\n const match = input.match(/PeriodGeneral \\((?:\\d+)\\)(?:\\r\\n|\\r|\\n)\\[Rows\\](?:\\r\\n|\\r|\\n)SchoolYear \\((?:\\d+)\\)(?:\\r\\n|\\r|\\n)([^\\n]*)/);\n if (!match) return;\n\n // date rangers on the form \"20/8-23/8, 26/8-30/8, ..., 9/6-13/6\"\n const dateRanges = match.at(1)?.trim();\n if (!dateRanges) return;\n\n // extract the first date of the first range and the last date of the last range\n const _start = dateRanges.match(/(\\d{1,2}\\/\\d{1,2})/) ?.at(1);\n const _end = dateRanges.match(/(\\d{1,2}\\/\\d{1,2})$/)?.at(1);\n if (!_start || !_end) return;\n\n // format the dates to YYYY-MM-DD using moment\n const startYear = getStartYear(input);\n if (!startYear) return;\n const start = moment.utc(`${_start}/${startYear}`, 'DD/MM/YYYY').startOf('day');\n const end = moment.utc(`${_end}/${startYear}`, 'DD/MM/YYYY') .endOf ('day');\n if (!start.isValid() || !end.isValid()) return;\n\n // if the start date is after the end date, increase the year of the end date\n while (start.isAfter(end)) end.add(1, 'year');\n\n return { start, end };\n}\n\nexport const division = (input: unknown): Pick<CoreTypes.serialized.division, 'displayName' | 'start' | 'end'> => {\n const division: Pick<CoreTypes.serialized.division, 'displayName' | 'start' | 'end'> = {};\n if (typeof input !== 'string') return division;\n\n // division name\n {\n const x = extractDivisionName(input);\n if (x) Object.assign(division, x);\n }\n\n // division range\n {\n const x = extractStartAndEnd(input);\n if (x) Object.assign(division, x);\n }\n\n return division;\n};"],"mappings":";;;;AAKA,SAAgB,oBAAqB,OAA+E;CAElH,MAAM,cAAc,MAAM,MAAM,mBAC5B,GAAG,IACH;AAEJ,QAAO,cAAc,EAAE,gBAAgB;;AAGzC,SAAgB,mBAAoB,OAAiF;CAGnH,MAAM,QAAQ,MAAM,MAAM;AAC1B,KAAI,CAAC,MAAO;CAGZ,MAAM,aAAa,MAAM,GAAG,IAAI;AAChC,KAAI,CAAC,WAAY;CAGjB,MAAM,SAAS,WAAW,MAAM,uBAAwB,GAAG;CAC3D,MAAM,OAAS,WAAW,MAAM,wBAAwB,GAAG;AAC3D,KAAI,CAAC,UAAU,CAAC,KAAM;CAGtB,MAAM,YAAY,aAAa;AAC/B,KAAI,CAAC,UAAW;CAChB,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,GAAG,aAAa,cAAc,QAAQ;CACzE,MAAM,MAAQ,OAAO,IAAI,GAAG,KAAK,GAAG,aAAa,cAAgB,MAAQ;AACzE,KAAI,CAAC,MAAM,aAAa,CAAC,IAAI,UAAW;AAGxC,QAAO,MAAM,QAAQ,KAAM,KAAI,IAAI,GAAG;AAEtC,QAAO;EAAE;EAAO;;;AAGlB,MAAa,YAAY,UAAyF;CAChH,MAAMA,aAAiF;AACvF,KAAI,OAAO,UAAU,SAAU,QAAOC;CAGtC;EACE,MAAM,IAAI,oBAAoB;AAC9B,MAAI,EAAG,QAAO,OAAOA,YAAU;;CAIjC;EACE,MAAM,IAAI,mBAAmB;AAC7B,MAAI,EAAG,QAAO,OAAOA,YAAU;;AAGjC,QAAOA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/Skola24/txt/from/index.ts"],"sourcesContent":["import { FromInterface } from '../../../core/types';\nimport { division } from './division';\nimport { schedules } from './schedules';\n\nexport default {\n division: division,\n schedules: schedules\n} satisfies FromInterface;"],"mappings":";;;;AAIA,mBAAe;CACF;CACA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/Skola24/txt/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport { division } from './division';\nimport { schedules } from './schedules';\n\nexport default {\n division: division,\n schedules: schedules\n} satisfies FromInterface;"],"mappings":";;;;AAIA,mBAAe;CACF;CACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"period.js","names":["x"],"sources":["../../../../src/Skola24/txt/from/period.ts"],"sourcesContent":["import moment from 'moment';\nimport { Types as CoreTypes } from '../../../core/types';\nimport { Types, Warning } from '../types';\nimport { extractId } from './util';\n\nexport function parsePeriod (\n period: Types.period,\n scheduleStart: moment.Moment,\n warnings: Warning[]\n): CoreTypes.period {\n // should warn only once\n let warned = false;\n\n // parse range\n const ranges = (period.Calendar ?? '')\n .split(',')\n // parse each range\n .map(x => {\n // date ranges on the form \"20/8-23/8\"\n const [_start, _end] = x.split('-');\n if (!_start || !_end) return;\n\n const start = moment.utc(`${_start}/${scheduleStart.year()}`, 'DD/MM/YYYY');\n const end = moment.utc(`${_end}/${scheduleStart.year()}`, 'DD/MM/YYYY');\n if (!start.isValid() || !end.isValid()) {\n if (warned) return;\n warned = true;\n warnings.push({\n code: 'period.problem_parsing_range',\n context: period\n });\n return;\n }\n\n // add one year to the range if it is before the schedule start\n if (start.isBefore(scheduleStart)) {\n start.add(1, 'year');\n end .add(1, 'year');\n }\n\n return { start, end };\n })\n .filter((x): x is NonNullable<typeof x> => !!x)\n // make the ranges ordered by incrementing by a year if needed\n .reduce<{ start: moment.Moment, end: moment.Moment }[]>((acc, x) => {\n const prev = acc.at(-1);\n if (!prev) {\n acc.push(x);\n } else {\n while (prev.end.isAfter(x.start)) {\n x.start.add(1, 'year');\n x.end .add(1, 'year');\n }\n acc.push(x);\n }\n return acc;\n }, [])\n // convert to whole week\n .map(x => {\n const start = x.start.startOf('isoWeek');\n const end = x.end .endOf ('isoWeek');\n return { start, end };\n })\n // remove duplicates (if a week was split into two ranges)\n .filter((x, i, arr) => {\n for (let j = i + 1; j < arr.length; j++) {\n if (x.start.isSame(arr[j].start) && x.end.isSame(arr[j].end)) return false;\n }\n return true;\n });\n\n return {\n ids: extractId(period.GUID),\n displayName: period.TextBelowSchedule,\n ranges\n };\n}\n\n\nexport function fromWeekNumberRange (\n ids: string,\n weekNumberRange: string,\n scheduleStart: moment.Moment\n): CoreTypes.period {\n const startYear = scheduleStart.year();\n const scheduleStartWeek = scheduleStart.startOf('isoWeek');\n\n const ranges = weekNumberRange\n // parse the range to positive intervals that lie after the schedule start\n .split(',')\n .map(x => {\n const interval = x.split('-').map(x => parseInt(x.trim()));\n const startWeekNumber = interval[0];\n const endWeekNumber = interval[1] ?? startWeekNumber;\n\n const start = moment.utc()\n .isoWeekYear(startYear)\n .isoWeek(startWeekNumber)\n .startOf('isoWeek');\n if (start.isBefore(scheduleStartWeek)) {\n start.add(1, 'year')\n .isoWeek(startWeekNumber)\n .startOf('isoWeek');\n }\n\n const end = moment.utc()\n .isoWeekYear(start.year())\n .isoWeek(endWeekNumber)\n .endOf('isoWeek');\n if (end.isBefore(start)) {\n end.add(1, 'year')\n .isoWeek(endWeekNumber)\n .endOf('isoWeek');\n }\n\n return [ start, end ];\n })\n // make the ranges ordered by incrementing by a year if needed\n .reduce<{ start: moment.Moment, end: moment.Moment }[]>((acc, x) => {\n const prev = acc.at(-1);\n if (!prev) {\n acc.push({ start: x[0], end: x[1] });\n } else {\n while (prev.end.isAfter(x[0])) {\n const startWeekNumber = x[0].isoWeek();\n const endWeekNumber = x[1].isoWeek();\n // preserve the week number\n x[0].add(1, 'year').isoWeek(startWeekNumber).startOf('isoWeek'); \n x[1].add(1, 'year').isoWeek(endWeekNumber ).endOf ('isoWeek'); \n }\n acc.push({ start: x[0], end: x[1] });\n }\n return acc;\n }, []);\n\n return {\n ids,\n displayName: weekNumberRange,\n ranges: ranges\n };\n}"],"mappings":";;;;AAKA,SAAgB,YACd,QACA,eACA,UACkB;CAElB,IAAI,SAAS;CAGb,MAAM,UAAU,OAAO,YAAY,IAChC,MAAM,KAEN,KAAI,MAAK;EAER,MAAM,CAAC,QAAQ,QAAQ,EAAE,MAAM;AAC/B,MAAI,CAAC,UAAU,CAAC,KAAM;EAEtB,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,GAAG,cAAc,UAAU;EAC9D,MAAM,MAAQ,OAAO,IAAI,GAAG,KAAK,GAAG,cAAc,UAAY;AAC9D,MAAI,CAAC,MAAM,aAAa,CAAC,IAAI,WAAW;AACtC,OAAI,OAAQ;AACZ,YAAS;AACT,YAAS,KAAK;IACZ,MAAS;IACT,SAAS;;AAEX;;AAIF,MAAI,MAAM,SAAS,gBAAgB;AACjC,SAAM,IAAI,GAAG;AACb,OAAM,IAAI,GAAG;;AAGf,SAAO;GAAE;GAAO;;IAEjB,QAAQ,MAAkC,CAAC,CAAC,GAE5C,QAAwD,KAAK,MAAM;EAClE,MAAM,OAAO,IAAI,GAAG;AACpB,MAAI,CAAC,KACH,KAAI,KAAK;OACJ;AACL,UAAO,KAAK,IAAI,QAAQ,EAAE,QAAQ;AAChC,MAAE,MAAM,IAAI,GAAG;AACf,MAAE,IAAM,IAAI,GAAG;;AAEjB,OAAI,KAAK;;AAEX,SAAO;IACN,IAEF,KAAI,MAAK;EACR,MAAM,QAAQ,EAAE,MAAM,QAAQ;EAC9B,MAAM,MAAQ,EAAE,IAAM,MAAQ;AAC9B,SAAO;GAAE;GAAO;;IAGjB,QAAQ,GAAG,GAAG,QAAQ;AACrB,OAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAClC,KAAI,EAAE,MAAM,OAAO,IAAI,GAAG,UAAU,EAAE,IAAI,OAAO,IAAI,GAAG,KAAM,QAAO;AAEvE,SAAO;;AAGX,QAAO;EACL,KAAa,UAAU,OAAO;EAC9B,aAAa,OAAO;EACpB;;;AAKJ,SAAgB,oBACd,KACA,iBACA,eACkB;CAClB,MAAM,YAAoB,cAAc;CACxC,MAAM,oBAAoB,cAAc,QAAQ;CAEhD,MAAM,SAAS,gBAEZ,MAAM,KACN,KAAI,MAAK;EACR,MAAM,WAAW,EAAE,MAAM,KAAK,KAAI,QAAK,SAASA,IAAE;EAClD,MAAM,kBAAkB,SAAS;EACjC,MAAM,gBAAkB,SAAS,MAAM;EAEvC,MAAM,QAAQ,OAAO,MAClB,YAAY,WACZ,QAAQ,iBACR,QAAQ;AACX,MAAI,MAAM,SAAS,mBACjB,OAAM,IAAI,GAAG,QACV,QAAQ,iBACR,QAAQ;EAGb,MAAM,MAAM,OAAO,MAChB,YAAY,MAAM,QAClB,QAAQ,eACR,MAAM;AACT,MAAI,IAAI,SAAS,OACf,KAAI,IAAI,GAAG,QACR,QAAQ,eACR,MAAM;AAGX,SAAO,CAAE,OAAO;IAGjB,QAAwD,KAAK,MAAM;EAClE,MAAM,OAAO,IAAI,GAAG;AACpB,MAAI,CAAC,KACH,KAAI,KAAK;GAAE,OAAO,EAAE;GAAI,KAAK,EAAE;;OAC1B;AACL,UAAO,KAAK,IAAI,QAAQ,EAAE,KAAK;IAC7B,MAAM,kBAAkB,EAAE,GAAG;IAC7B,MAAM,gBAAkB,EAAE,GAAG;AAE7B,MAAE,GAAG,IAAI,GAAG,QAAQ,QAAQ,iBAAiB,QAAQ;AACrD,MAAE,GAAG,IAAI,GAAG,QAAQ,QAAQ,eAAiB,MAAQ;;AAEvD,OAAI,KAAK;IAAE,OAAO,EAAE;IAAI,KAAK,EAAE;;;AAEjC,SAAO;IACN;AAEL,QAAO;EACL;EACA,aAAa;EACA"}
1
+ {"version":3,"file":"period.js","names":["x"],"sources":["../../../../src/Skola24/txt/from/period.ts"],"sourcesContent":["import moment from 'moment';\nimport type { Types, Warning } from '../types';\nimport { extractId } from './util';\nimport type { OutTypes } from './schedules';\n\nexport function parsePeriod (\n period: Types.period,\n scheduleStart: moment.Moment,\n warnings: Warning[]\n): OutTypes.period {\n // should warn only once\n let warned = false;\n\n // parse range\n const ranges = (period.Calendar ?? '')\n .split(',')\n // parse each range\n .map(x => {\n // date ranges on the form \"20/8-23/8\"\n const [_start, _end] = x.split('-');\n if (!_start || !_end) return;\n\n const start = moment.utc(`${_start}/${scheduleStart.year()}`, 'DD/MM/YYYY');\n const end = moment.utc(`${_end}/${scheduleStart.year()}`, 'DD/MM/YYYY');\n if (!start.isValid() || !end.isValid()) {\n if (warned) return;\n warned = true;\n warnings.push({\n code: 'period.problem_parsing_range',\n context: period\n });\n return;\n }\n\n // add one year to the range if it is before the schedule start\n if (start.isBefore(scheduleStart)) {\n start.add(1, 'year');\n end .add(1, 'year');\n }\n\n return { start, end };\n })\n .filter((x): x is NonNullable<typeof x> => !!x)\n // make the ranges ordered by incrementing by a year if needed\n .reduce<{ start: moment.Moment, end: moment.Moment }[]>((acc, x) => {\n const prev = acc.at(-1);\n if (!prev) {\n acc.push(x);\n } else {\n while (prev.end.isAfter(x.start)) {\n x.start.add(1, 'year');\n x.end .add(1, 'year');\n }\n acc.push(x);\n }\n return acc;\n }, [])\n // convert to whole week\n .map(x => {\n const start = x.start.startOf('isoWeek');\n const end = x.end .endOf ('isoWeek');\n return { start, end };\n })\n // remove duplicates (if a week was split into two ranges)\n .filter((x, i, arr) => {\n for (let j = i + 1; j < arr.length; j++) {\n if (x.start.isSame(arr[j].start) && x.end.isSame(arr[j].end)) return false;\n }\n return true;\n });\n\n return {\n ids: extractId(period.GUID),\n displayName: period.TextBelowSchedule,\n ranges\n };\n}\n\n\nexport function fromWeekNumberRange (\n ids: string,\n weekNumberRange: string,\n scheduleStart: moment.Moment\n): OutTypes.period {\n const startYear = scheduleStart.year();\n const scheduleStartWeek = scheduleStart.startOf('isoWeek');\n\n const ranges = weekNumberRange\n // parse the range to positive intervals that lie after the schedule start\n .split(',')\n .map(x => {\n const interval = x.split('-').map(x => parseInt(x.trim()));\n const startWeekNumber = interval[0];\n const endWeekNumber = interval[1] ?? startWeekNumber;\n\n const start = moment.utc()\n .isoWeekYear(startYear)\n .isoWeek(startWeekNumber)\n .startOf('isoWeek');\n if (start.isBefore(scheduleStartWeek)) {\n start.add(1, 'year')\n .isoWeek(startWeekNumber)\n .startOf('isoWeek');\n }\n\n const end = moment.utc()\n .isoWeekYear(start.year())\n .isoWeek(endWeekNumber)\n .endOf('isoWeek');\n if (end.isBefore(start)) {\n end.add(1, 'year')\n .isoWeek(endWeekNumber)\n .endOf('isoWeek');\n }\n\n return [ start, end ];\n })\n // make the ranges ordered by incrementing by a year if needed\n .reduce<{ start: moment.Moment, end: moment.Moment }[]>((acc, x) => {\n const prev = acc.at(-1);\n if (!prev) {\n acc.push({ start: x[0], end: x[1] });\n } else {\n while (prev.end.isAfter(x[0])) {\n const startWeekNumber = x[0].isoWeek();\n const endWeekNumber = x[1].isoWeek();\n // preserve the week number\n x[0].add(1, 'year').isoWeek(startWeekNumber).startOf('isoWeek');\n x[1].add(1, 'year').isoWeek(endWeekNumber ).endOf ('isoWeek');\n }\n acc.push({ start: x[0], end: x[1] });\n }\n return acc;\n }, []);\n\n return {\n ids,\n displayName: weekNumberRange,\n ranges: ranges\n };\n}"],"mappings":";;;;AAKA,SAAgB,YACd,QACA,eACA,UACiB;CAEjB,IAAI,SAAS;CAGb,MAAM,UAAU,OAAO,YAAY,IAChC,MAAM,KAEN,KAAI,MAAK;EAER,MAAM,CAAC,QAAQ,QAAQ,EAAE,MAAM;AAC/B,MAAI,CAAC,UAAU,CAAC,KAAM;EAEtB,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,GAAG,cAAc,UAAU;EAC9D,MAAM,MAAQ,OAAO,IAAI,GAAG,KAAK,GAAG,cAAc,UAAY;AAC9D,MAAI,CAAC,MAAM,aAAa,CAAC,IAAI,WAAW;AACtC,OAAI,OAAQ;AACZ,YAAS;AACT,YAAS,KAAK;IACZ,MAAS;IACT,SAAS;;AAEX;;AAIF,MAAI,MAAM,SAAS,gBAAgB;AACjC,SAAM,IAAI,GAAG;AACb,OAAM,IAAI,GAAG;;AAGf,SAAO;GAAE;GAAO;;IAEjB,QAAQ,MAAkC,CAAC,CAAC,GAE5C,QAAwD,KAAK,MAAM;EAClE,MAAM,OAAO,IAAI,GAAG;AACpB,MAAI,CAAC,KACH,KAAI,KAAK;OACJ;AACL,UAAO,KAAK,IAAI,QAAQ,EAAE,QAAQ;AAChC,MAAE,MAAM,IAAI,GAAG;AACf,MAAE,IAAM,IAAI,GAAG;;AAEjB,OAAI,KAAK;;AAEX,SAAO;IACN,IAEF,KAAI,MAAK;EACR,MAAM,QAAQ,EAAE,MAAM,QAAQ;EAC9B,MAAM,MAAQ,EAAE,IAAM,MAAQ;AAC9B,SAAO;GAAE;GAAO;;IAGjB,QAAQ,GAAG,GAAG,QAAQ;AACrB,OAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAClC,KAAI,EAAE,MAAM,OAAO,IAAI,GAAG,UAAU,EAAE,IAAI,OAAO,IAAI,GAAG,KAAM,QAAO;AAEvE,SAAO;;AAGX,QAAO;EACL,KAAa,UAAU,OAAO;EAC9B,aAAa,OAAO;EACpB;;;AAKJ,SAAgB,oBACd,KACA,iBACA,eACiB;CACjB,MAAM,YAAoB,cAAc;CACxC,MAAM,oBAAoB,cAAc,QAAQ;CAEhD,MAAM,SAAS,gBAEZ,MAAM,KACN,KAAI,MAAK;EACR,MAAM,WAAW,EAAE,MAAM,KAAK,KAAI,QAAK,SAASA,IAAE;EAClD,MAAM,kBAAkB,SAAS;EACjC,MAAM,gBAAkB,SAAS,MAAM;EAEvC,MAAM,QAAQ,OAAO,MAClB,YAAY,WACZ,QAAQ,iBACR,QAAQ;AACX,MAAI,MAAM,SAAS,mBACjB,OAAM,IAAI,GAAG,QACV,QAAQ,iBACR,QAAQ;EAGb,MAAM,MAAM,OAAO,MAChB,YAAY,MAAM,QAClB,QAAQ,eACR,MAAM;AACT,MAAI,IAAI,SAAS,OACf,KAAI,IAAI,GAAG,QACR,QAAQ,eACR,MAAM;AAGX,SAAO,CAAE,OAAO;IAGjB,QAAwD,KAAK,MAAM;EAClE,MAAM,OAAO,IAAI,GAAG;AACpB,MAAI,CAAC,KACH,KAAI,KAAK;GAAE,OAAO,EAAE;GAAI,KAAK,EAAE;;OAC1B;AACL,UAAO,KAAK,IAAI,QAAQ,EAAE,KAAK;IAC7B,MAAM,kBAAkB,EAAE,GAAG;IAC7B,MAAM,gBAAkB,EAAE,GAAG;AAE7B,MAAE,GAAG,IAAI,GAAG,QAAQ,QAAQ,iBAAiB,QAAQ;AACrD,MAAE,GAAG,IAAI,GAAG,QAAQ,QAAQ,eAAiB,MAAQ;;AAEvD,OAAI,KAAK;IAAE,OAAO,EAAE;IAAI,KAAK,EAAE;;;AAEjC,SAAO;IACN;AAEL,QAAO;EACL;EACA,aAAa;EACA"}
@@ -0,0 +1,16 @@
1
+ import { Types } from "../../../core/types/index.js";
2
+
3
+ //#region src/Skola24/txt/from/schedules.d.ts
4
+ declare namespace OutTypes {
5
+ type settings = Types.serializedWithoutInternalId.divisionSettings;
6
+ type teacher = Types.serializedWithoutInternalId.teacher;
7
+ type person = Types.serializedWithoutInternalId.person;
8
+ type group = Types.serializedWithoutInternalId.group;
9
+ type course = Types.serializedWithoutInternalId.course;
10
+ type location = Types.serializedWithoutInternalId.location;
11
+ type event = Types.serializedWithoutInternalId.event;
12
+ type period = Types.serializedWithoutInternalId.period;
13
+ }
14
+ //#endregion
15
+ export { OutTypes };
16
+ //# sourceMappingURL=schedules.d.ts.map