@royalschedule/maps 3.3.17 → 4.0.1

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 (948) 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 +12 -12
  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/options.d.ts +8 -0
  18. package/dist/Admentum/from/courses.js.map +1 -1
  19. package/dist/Admentum/from/events.js.map +1 -1
  20. package/dist/Admentum/from/groups.js.map +1 -1
  21. package/dist/Admentum/from/index.js.map +1 -1
  22. package/dist/Admentum/from/locations.js.map +1 -1
  23. package/dist/Admentum/from/persons.js +1 -1
  24. package/dist/Admentum/from/persons.js.map +1 -1
  25. package/dist/Admentum/from/schedules.d.ts +32 -2
  26. package/dist/Admentum/from/schedules.js.map +1 -1
  27. package/dist/Admentum/from/teachers.js.map +1 -1
  28. package/dist/Admentum/index.js.map +1 -1
  29. package/dist/Admentum/to/index.d.ts +11 -10
  30. package/dist/Admentum/to/index.js.map +1 -1
  31. package/dist/Admentum/to/schedules.js +22 -25
  32. package/dist/Admentum/to/schedules.js.map +1 -1
  33. package/dist/Excel/index.d.ts +55 -4
  34. package/dist/Excel/index.js.map +1 -1
  35. package/dist/Excel/v1/from/index.js +7 -7
  36. package/dist/Excel/v1/from/index.js.map +1 -1
  37. package/dist/Excel/v1/index.d.ts +30 -2
  38. package/dist/Excel/v1/index.js.map +1 -1
  39. package/dist/Excel/v2/from/index.js +10 -10
  40. package/dist/Excel/v2/from/index.js.map +1 -1
  41. package/dist/Excel/v2/index.d.ts +53 -2
  42. package/dist/Excel/v2/index.js.map +1 -1
  43. package/dist/IdunSoft/from/courses.js +4 -3
  44. package/dist/IdunSoft/from/courses.js.map +1 -1
  45. package/dist/IdunSoft/from/events.js +43 -32
  46. package/dist/IdunSoft/from/events.js.map +1 -1
  47. package/dist/IdunSoft/from/groups.js +5 -4
  48. package/dist/IdunSoft/from/groups.js.map +1 -1
  49. package/dist/IdunSoft/from/index.js.map +1 -1
  50. package/dist/IdunSoft/from/locations.js +4 -3
  51. package/dist/IdunSoft/from/locations.js.map +1 -1
  52. package/dist/IdunSoft/from/schedules.d.ts +18 -3
  53. package/dist/IdunSoft/from/schedules.js +5 -10
  54. package/dist/IdunSoft/from/schedules.js.map +1 -1
  55. package/dist/IdunSoft/from/teachers.js +4 -3
  56. package/dist/IdunSoft/from/teachers.js.map +1 -1
  57. package/dist/IdunSoft/index.js.map +1 -1
  58. package/dist/IdunSoft/to/index.d.ts +2 -3
  59. package/dist/IdunSoft/to/index.js.map +1 -1
  60. package/dist/IdunSoft/to/schedules.js +22 -21
  61. package/dist/IdunSoft/to/schedules.js.map +1 -1
  62. package/dist/InfoMentor/index.js.map +1 -1
  63. package/dist/InfoMentor/to/index.d.ts +2 -2
  64. package/dist/InfoMentor/to/index.js.map +1 -1
  65. package/dist/InfoMentor/to/schedules.js +26 -27
  66. package/dist/InfoMentor/to/schedules.js.map +1 -1
  67. package/dist/PlanDigital/from/index.js.map +1 -1
  68. package/dist/PlanDigital/from/schedules.js +7 -6
  69. package/dist/PlanDigital/from/schedules.js.map +1 -1
  70. package/dist/PlanDigital/index.d.ts +106 -5
  71. package/dist/PlanDigital/index.js +0 -2
  72. package/dist/PlanDigital/index.js.map +1 -1
  73. package/dist/PlanDigital/types/index.d.ts +12 -11
  74. package/dist/Quiculum/file/to/index.d.ts +1 -1
  75. package/dist/Quiculum/file/to/schedules.js +11 -13
  76. package/dist/Quiculum/file/to/schedules.js.map +1 -1
  77. package/dist/RS/from/division.d.ts +7 -0
  78. package/dist/RS/from/division.js +14 -0
  79. package/dist/RS/from/division.js.map +1 -0
  80. package/dist/RS/from/index.js +12 -0
  81. package/dist/RS/from/index.js.map +1 -0
  82. package/dist/RS/from/schedules.d.ts +8 -0
  83. package/dist/RS/from/schedules.js +36 -0
  84. package/dist/RS/from/schedules.js.map +1 -0
  85. package/dist/RS/index.d.ts +11 -12
  86. package/dist/RS/index.js +4 -8
  87. package/dist/RS/index.js.map +1 -1
  88. package/dist/RS/make-connected.d.ts +24 -0
  89. package/dist/RS/make-connected.js +258 -0
  90. package/dist/RS/make-connected.js.map +1 -0
  91. package/dist/RS/to/index.js +8 -0
  92. package/dist/RS/to/index.js.map +1 -0
  93. package/dist/RS/to/initial-configuration.js +43 -0
  94. package/dist/RS/to/initial-configuration.js.map +1 -0
  95. package/dist/RS/to/input/collections.js +57 -0
  96. package/dist/RS/to/input/collections.js.map +1 -0
  97. package/dist/RS/{v3/to → to/input}/default.js +10 -18
  98. package/dist/RS/to/input/default.js.map +1 -0
  99. package/dist/RS/to/input/dependencies.js +32 -0
  100. package/dist/RS/to/input/dependencies.js.map +1 -0
  101. package/dist/RS/to/input/dynamic-locked-times.js +67 -0
  102. package/dist/RS/to/input/dynamic-locked-times.js.map +1 -0
  103. package/dist/RS/to/input/events.js +84 -0
  104. package/dist/RS/to/input/events.js.map +1 -0
  105. package/dist/RS/to/input/groups.js +36 -0
  106. package/dist/RS/to/input/groups.js.map +1 -0
  107. package/dist/RS/to/input/individuals.js +49 -0
  108. package/dist/RS/to/input/individuals.js.map +1 -0
  109. package/dist/RS/to/input/input.js +40 -0
  110. package/dist/RS/to/input/input.js.map +1 -0
  111. package/dist/RS/to/input/intervals.js +99 -0
  112. package/dist/RS/to/input/intervals.js.map +1 -0
  113. package/dist/RS/to/input/periods.js +44 -0
  114. package/dist/RS/to/input/periods.js.map +1 -0
  115. package/dist/RS/to/input/settings.js +17 -0
  116. package/dist/RS/to/input/settings.js.map +1 -0
  117. package/dist/RS/to/input/teachers.js +36 -0
  118. package/dist/RS/to/input/teachers.js.map +1 -0
  119. package/dist/RS/to/input/util/attach-locked-times.js +27 -0
  120. package/dist/RS/to/input/util/attach-locked-times.js.map +1 -0
  121. package/dist/RS/to/input/util/parse-days.js +10 -0
  122. package/dist/RS/to/input/util/parse-days.js.map +1 -0
  123. package/dist/RS/to/input/util/parse-group-references.js +58 -0
  124. package/dist/RS/to/input/util/parse-group-references.js.map +1 -0
  125. package/dist/RS/to/input/util/parse-intervals.js +55 -0
  126. package/dist/RS/to/input/util/parse-intervals.js.map +1 -0
  127. package/dist/RS/to/input/util/parse-location-references.js +31 -0
  128. package/dist/RS/to/input/util/parse-location-references.js.map +1 -0
  129. package/dist/RS/to/input/util/parse-max-working-hours.js +17 -0
  130. package/dist/RS/to/input/util/parse-max-working-hours.js.map +1 -0
  131. package/dist/RS/to/input/util/parse-minimum-break-length.js +19 -0
  132. package/dist/RS/to/input/util/parse-minimum-break-length.js.map +1 -0
  133. package/dist/RS/to/input/util/util.js +61 -0
  134. package/dist/RS/to/input/util/util.js.map +1 -0
  135. package/dist/RS/to/schedules.d.ts +7 -0
  136. package/dist/RS/to/schedules.js +40 -0
  137. package/dist/RS/to/schedules.js.map +1 -0
  138. package/dist/RS/{v3/types → types}/algorithm-parameters.d.ts +1 -1
  139. package/dist/RS/types/collections.d.ts +26 -0
  140. package/dist/RS/types/configurations.d.ts +10 -0
  141. package/dist/RS/{v3/types → types}/default.d.ts +4 -5
  142. package/dist/RS/types/dependencies.d.ts +16 -0
  143. package/dist/RS/types/event-configuration.d.ts +20 -0
  144. package/dist/RS/types/events.d.ts +27 -0
  145. package/dist/RS/{v2/types → types}/groups.d.ts +13 -12
  146. package/dist/RS/types/index.d.ts +45 -0
  147. package/dist/RS/types/individuals.d.ts +16 -0
  148. package/dist/RS/{v2/types → types}/locked-times.d.ts +2 -1
  149. package/dist/RS/types/root-intervals.d.ts +10 -0
  150. package/dist/RS/types/schedule-data.d.ts +16 -0
  151. package/dist/RS/{v2/types → types}/settings.d.ts +1 -1
  152. package/dist/RS/types/shared.d.ts +27 -0
  153. package/dist/RS/types/to.d.ts +59 -0
  154. package/dist/SchoolSoft/api/from/index.js.map +1 -1
  155. package/dist/SchoolSoft/api/from/schedules.js +31 -37
  156. package/dist/SchoolSoft/api/from/schedules.js.map +1 -1
  157. package/dist/SchoolSoft/api/index.d.ts +14 -2
  158. package/dist/SchoolSoft/api/index.js.map +1 -1
  159. package/dist/SchoolSoft/file/from/index.js.map +1 -1
  160. package/dist/SchoolSoft/file/from/schedules.js +36 -46
  161. package/dist/SchoolSoft/file/from/schedules.js.map +1 -1
  162. package/dist/SchoolSoft/file/index.d.ts +2 -3
  163. package/dist/SchoolSoft/file/index.js.map +1 -1
  164. package/dist/SchoolSoft/file/to/index.d.ts +6 -13
  165. package/dist/SchoolSoft/file/to/schedules.js +40 -42
  166. package/dist/SchoolSoft/file/to/schedules.js.map +1 -1
  167. package/dist/SchoolSoft/index.d.ts +2 -3
  168. package/dist/SchoolSoft/index.js.map +1 -1
  169. package/dist/Schoolity/txt/index.js.map +1 -1
  170. package/dist/Schoolity/txt/to/index.d.ts +3 -3
  171. package/dist/Schoolity/txt/to/index.js.map +1 -1
  172. package/dist/Schoolity/txt/to/schedules.js +78 -96
  173. package/dist/Schoolity/txt/to/schedules.js.map +1 -1
  174. package/dist/Skola24/index.js.map +1 -1
  175. package/dist/Skola24/mdb/from/course-and-events.js +36 -29
  176. package/dist/Skola24/mdb/from/course-and-events.js.map +1 -1
  177. package/dist/Skola24/mdb/from/groups.js.map +1 -1
  178. package/dist/Skola24/mdb/from/index.js.map +1 -1
  179. package/dist/Skola24/mdb/from/locations.js.map +1 -1
  180. package/dist/Skola24/mdb/from/schedule.d.ts +21 -3
  181. package/dist/Skola24/mdb/from/schedule.js +15 -17
  182. package/dist/Skola24/mdb/from/schedule.js.map +1 -1
  183. package/dist/Skola24/mdb/from/teachers.js.map +1 -1
  184. package/dist/Skola24/mdb/index.js.map +1 -1
  185. package/dist/Skola24/mdb/types/index.d.ts +7 -0
  186. package/dist/Skola24/txt/from/calendar-exceptions.js.map +1 -1
  187. package/dist/Skola24/txt/from/division.js.map +1 -1
  188. package/dist/Skola24/txt/from/index.js.map +1 -1
  189. package/dist/Skola24/txt/from/period.js.map +1 -1
  190. package/dist/Skola24/txt/from/schedules.d.ts +16 -0
  191. package/dist/Skola24/txt/from/schedules.js +90 -80
  192. package/dist/Skola24/txt/from/schedules.js.map +1 -1
  193. package/dist/Skola24/txt/index.d.ts +17 -5
  194. package/dist/Skola24/txt/index.js.map +1 -1
  195. package/dist/Skola24/txt/to/index.d.ts +3 -3
  196. package/dist/Skola24/txt/to/index.js.map +1 -1
  197. package/dist/Skola24/txt/to/schedules.js +76 -91
  198. package/dist/Skola24/txt/to/schedules.js.map +1 -1
  199. package/dist/Skola24/txt/types/index.d.ts +17 -1
  200. package/dist/common/constants.js +2 -2
  201. package/dist/common/constants.js.map +1 -1
  202. package/dist/common/functions.js +16 -21
  203. package/dist/common/functions.js.map +1 -1
  204. package/dist/common/get-date.js +5 -6
  205. package/dist/common/get-date.js.map +1 -1
  206. package/dist/common/make-chainable/index.js +36 -0
  207. package/dist/common/make-chainable/index.js.map +1 -0
  208. package/dist/common/types.d.ts +19 -0
  209. package/dist/core/from/courses.js +12 -0
  210. package/dist/core/from/courses.js.map +1 -0
  211. package/dist/core/from/events.js +13 -0
  212. package/dist/core/from/events.js.map +1 -0
  213. package/dist/core/from/exceptions.js +12 -0
  214. package/dist/core/from/exceptions.js.map +1 -0
  215. package/dist/core/from/groups.js +12 -0
  216. package/dist/core/from/groups.js.map +1 -0
  217. package/dist/core/{v2/from → from}/index.js +1 -1
  218. package/dist/core/from/index.js.map +1 -0
  219. package/dist/core/from/locations.js +12 -0
  220. package/dist/core/from/locations.js.map +1 -0
  221. package/dist/core/from/locked-times.js +12 -0
  222. package/dist/core/from/locked-times.js.map +1 -0
  223. package/dist/core/from/overlap-groups.js +12 -0
  224. package/dist/core/from/overlap-groups.js.map +1 -0
  225. package/dist/core/from/periods.js +12 -0
  226. package/dist/core/from/periods.js.map +1 -0
  227. package/dist/core/from/persons.js +12 -0
  228. package/dist/core/from/persons.js.map +1 -0
  229. package/dist/core/from/root-intervals.js +12 -0
  230. package/dist/core/from/root-intervals.js.map +1 -0
  231. package/dist/core/from/schedules.d.ts +7 -0
  232. package/dist/core/from/schedules.js +35 -0
  233. package/dist/core/from/schedules.js.map +1 -0
  234. package/dist/core/{v2/from → from}/syllabuses.js +1 -1
  235. package/dist/core/from/syllabuses.js.map +1 -0
  236. package/dist/core/from/teachers.js +12 -0
  237. package/dist/core/from/teachers.js.map +1 -0
  238. package/dist/core/index.d.ts +6 -12
  239. package/dist/core/index.js +4 -6
  240. package/dist/core/index.js.map +1 -1
  241. package/dist/core/to/courses.js +43 -0
  242. package/dist/core/to/courses.js.map +1 -0
  243. package/dist/core/to/division.js +10 -0
  244. package/dist/core/to/division.js.map +1 -0
  245. package/dist/core/to/events.js +43 -0
  246. package/dist/core/to/events.js.map +1 -0
  247. package/dist/core/to/exceptions.js +27 -0
  248. package/dist/core/to/exceptions.js.map +1 -0
  249. package/dist/core/to/groups.js +23 -0
  250. package/dist/core/to/groups.js.map +1 -0
  251. package/dist/core/{v1/to → to}/index.d.ts +1 -1
  252. package/dist/{RS/v3 → core}/to/index.js +1 -1
  253. package/dist/core/to/index.js.map +1 -0
  254. package/dist/core/to/locations.js +19 -0
  255. package/dist/core/to/locations.js.map +1 -0
  256. package/dist/core/to/locked-times.js +21 -0
  257. package/dist/core/to/locked-times.js.map +1 -0
  258. package/dist/core/to/overlap-groups.js +28 -0
  259. package/dist/core/to/overlap-groups.js.map +1 -0
  260. package/dist/core/to/periods.js +17 -0
  261. package/dist/core/to/periods.js.map +1 -0
  262. package/dist/core/to/persons.js +23 -0
  263. package/dist/core/to/persons.js.map +1 -0
  264. package/dist/core/to/root-intervals.js +17 -0
  265. package/dist/core/to/root-intervals.js.map +1 -0
  266. package/dist/core/to/schedules.d.ts +44 -0
  267. package/dist/core/to/schedules.js +40 -0
  268. package/dist/core/to/schedules.js.map +1 -0
  269. package/dist/core/to/settings.js +16 -0
  270. package/dist/core/to/settings.js.map +1 -0
  271. package/dist/core/to/syllabuses.js +17 -0
  272. package/dist/core/to/syllabuses.js.map +1 -0
  273. package/dist/core/to/teachers.js +24 -0
  274. package/dist/core/to/teachers.js.map +1 -0
  275. package/dist/core/to/util.d.ts +14 -0
  276. package/dist/core/to/util.js +22 -0
  277. package/dist/core/to/util.js.map +1 -0
  278. package/dist/core/types/areas.d.ts +10 -0
  279. package/dist/core/types/common/break-lengths.d.ts +5 -0
  280. package/dist/core/types/common/days.d.ts +8 -0
  281. package/dist/core/types/common/index.d.ts +45 -0
  282. package/dist/core/types/common/intervals.d.ts +20 -0
  283. package/dist/core/types/common/maximum-schedule-span.d.ts +19 -0
  284. package/dist/core/{v2/types → types/common}/meta.d.ts +1 -1
  285. package/dist/core/types/common/planned-schedule-duration.d.ts +13 -0
  286. package/dist/core/types/common/tag.d.ts +9 -0
  287. package/dist/core/types/courses.d.ts +58 -0
  288. package/dist/core/{v2/types → types}/division-settings.d.ts +14 -19
  289. package/dist/core/types/divisions.d.ts +24 -0
  290. package/dist/core/types/events.d.ts +54 -0
  291. package/dist/core/{v2/types → types}/exceptions.d.ts +14 -23
  292. package/dist/core/types/groups.d.ts +41 -0
  293. package/dist/core/types/index.d.ts +117 -15
  294. package/dist/core/types/locations.d.ts +27 -0
  295. package/dist/core/types/locked-times.d.ts +33 -0
  296. package/dist/core/types/overlap-groups.d.ts +14 -0
  297. package/dist/core/types/periods.d.ts +14 -0
  298. package/dist/core/{v2/types → types}/persons.d.ts +13 -22
  299. package/dist/core/types/root-intervals.d.ts +13 -0
  300. package/dist/core/types/schedules.d.ts +44 -0
  301. package/dist/core/types/syllabus.d.ts +18 -0
  302. package/dist/core/{v2/types → types}/teachers.d.ts +20 -30
  303. package/dist/core/util.js +46 -0
  304. package/dist/core/util.js.map +1 -0
  305. package/dist/core/vertex-mapping.d.ts +69 -0
  306. package/dist/identify/constants/index.d.ts +14 -58
  307. package/dist/identify/constants/index.js +7 -72
  308. package/dist/identify/constants/index.js.map +1 -1
  309. package/dist/identify/index.d.ts +1 -1
  310. package/dist/identify/index.js +38 -29
  311. package/dist/identify/index.js.map +1 -1
  312. package/dist/index.d.ts +23 -29
  313. package/dist/index.js +6 -7
  314. package/dist/sdui/from/classes.js.map +1 -1
  315. package/dist/sdui/from/courses.js.map +1 -1
  316. package/dist/sdui/from/holidays.js.map +1 -1
  317. package/dist/sdui/from/hours.js.map +1 -1
  318. package/dist/sdui/from/lessons.js.map +1 -1
  319. package/dist/sdui/from/rooms.js.map +1 -1
  320. package/dist/sdui/from/schedules.d.ts +19 -0
  321. package/dist/sdui/from/schedules.js +3 -3
  322. package/dist/sdui/from/schedules.js.map +1 -1
  323. package/dist/sdui/from/school-years.js.map +1 -1
  324. package/dist/sdui/from/subjects.js.map +1 -1
  325. package/dist/sdui/from/substitution-plans.js.map +1 -1
  326. package/dist/sdui/from/teachers.js.map +1 -1
  327. package/dist/sdui/index.d.ts +19 -11
  328. package/dist/sdui/index.js.map +1 -1
  329. package/dist/sdui/to/classes.js +4 -2
  330. package/dist/sdui/to/classes.js.map +1 -1
  331. package/dist/sdui/to/courses.js +5 -5
  332. package/dist/sdui/to/courses.js.map +1 -1
  333. package/dist/sdui/to/holidays.js +3 -2
  334. package/dist/sdui/to/holidays.js.map +1 -1
  335. package/dist/sdui/to/hours.js +4 -2
  336. package/dist/sdui/to/hours.js.map +1 -1
  337. package/dist/sdui/to/index.d.ts +11 -12
  338. package/dist/sdui/to/lessons.js +10 -9
  339. package/dist/sdui/to/lessons.js.map +1 -1
  340. package/dist/sdui/to/rooms.js +4 -2
  341. package/dist/sdui/to/rooms.js.map +1 -1
  342. package/dist/sdui/to/schedules.js +9 -9
  343. package/dist/sdui/to/schedules.js.map +1 -1
  344. package/dist/sdui/to/school-years.js +4 -3
  345. package/dist/sdui/to/school-years.js.map +1 -1
  346. package/dist/sdui/to/subjects.js.map +1 -1
  347. package/dist/sdui/to/substitution-plans.js +12 -11
  348. package/dist/sdui/to/substitution-plans.js.map +1 -1
  349. package/dist/sdui/to/teachers.js +4 -4
  350. package/dist/sdui/to/teachers.js.map +1 -1
  351. package/dist/sdui/types/index.d.ts +2 -0
  352. package/dist/vKlass/from/index.js +1 -3
  353. package/dist/vKlass/from/index.js.map +1 -1
  354. package/dist/vKlass/from/schedule.d.ts +18 -3
  355. package/dist/vKlass/from/schedule.js +16 -19
  356. package/dist/vKlass/from/schedule.js.map +1 -1
  357. package/dist/vKlass/index.d.ts +6 -4
  358. package/dist/vKlass/index.js.map +1 -1
  359. package/dist/vKlass/to/schedules.d.ts +1 -1
  360. package/dist/vKlass/to/schedules.js +5 -12
  361. package/dist/vKlass/to/schedules.js.map +1 -1
  362. package/dist/vKlass/types/index.d.ts +5 -5
  363. package/package.json +38 -29
  364. package/dist/PlanDigital/to/index.d.ts +0 -10
  365. package/dist/PlanDigital/to/index.js +0 -10
  366. package/dist/PlanDigital/to/index.js.map +0 -1
  367. package/dist/PlanDigital/to/schedules.js +0 -15
  368. package/dist/PlanDigital/to/schedules.js.map +0 -1
  369. package/dist/RS/v0/from/available-dependencies.js +0 -38
  370. package/dist/RS/v0/from/available-dependencies.js.map +0 -1
  371. package/dist/RS/v0/from/break-lengths.js +0 -15
  372. package/dist/RS/v0/from/break-lengths.js.map +0 -1
  373. package/dist/RS/v0/from/course-events.js +0 -68
  374. package/dist/RS/v0/from/course-events.js.map +0 -1
  375. package/dist/RS/v0/from/courses.js +0 -53
  376. package/dist/RS/v0/from/courses.js.map +0 -1
  377. package/dist/RS/v0/from/days.js +0 -14
  378. package/dist/RS/v0/from/days.js.map +0 -1
  379. package/dist/RS/v0/from/dependencies.js +0 -29
  380. package/dist/RS/v0/from/dependencies.js.map +0 -1
  381. package/dist/RS/v0/from/groups.js +0 -32
  382. package/dist/RS/v0/from/groups.js.map +0 -1
  383. package/dist/RS/v0/from/index.js +0 -32
  384. package/dist/RS/v0/from/index.js.map +0 -1
  385. package/dist/RS/v0/from/intervals.js +0 -15
  386. package/dist/RS/v0/from/intervals.js.map +0 -1
  387. package/dist/RS/v0/from/locked-times.js +0 -23
  388. package/dist/RS/v0/from/locked-times.js.map +0 -1
  389. package/dist/RS/v0/from/placements.js +0 -20
  390. package/dist/RS/v0/from/placements.js.map +0 -1
  391. package/dist/RS/v0/from/schedules.js +0 -44
  392. package/dist/RS/v0/from/schedules.js.map +0 -1
  393. package/dist/RS/v0/from/settings.js +0 -24
  394. package/dist/RS/v0/from/settings.js.map +0 -1
  395. package/dist/RS/v0/from/teachers.js +0 -31
  396. package/dist/RS/v0/from/teachers.js.map +0 -1
  397. package/dist/RS/v0/index.d.ts +0 -43
  398. package/dist/RS/v0/index.js +0 -12
  399. package/dist/RS/v0/index.js.map +0 -1
  400. package/dist/RS/v0/to/available-dependencies.js +0 -17
  401. package/dist/RS/v0/to/available-dependencies.js.map +0 -1
  402. package/dist/RS/v0/to/configurations.js +0 -22
  403. package/dist/RS/v0/to/configurations.js.map +0 -1
  404. package/dist/RS/v0/to/constraints.js +0 -34
  405. package/dist/RS/v0/to/constraints.js.map +0 -1
  406. package/dist/RS/v0/to/course-events/days.js +0 -13
  407. package/dist/RS/v0/to/course-events/days.js.map +0 -1
  408. package/dist/RS/v0/to/course-events/dependencies.js +0 -18
  409. package/dist/RS/v0/to/course-events/dependencies.js.map +0 -1
  410. package/dist/RS/v0/to/course-events/groups.js +0 -39
  411. package/dist/RS/v0/to/course-events/groups.js.map +0 -1
  412. package/dist/RS/v0/to/course-events/in-locations.js +0 -17
  413. package/dist/RS/v0/to/course-events/in-locations.js.map +0 -1
  414. package/dist/RS/v0/to/course-events/index.js +0 -52
  415. package/dist/RS/v0/to/course-events/index.js.map +0 -1
  416. package/dist/RS/v0/to/course-events/intervals.js +0 -12
  417. package/dist/RS/v0/to/course-events/intervals.js.map +0 -1
  418. package/dist/RS/v0/to/course-events/meta.js +0 -21
  419. package/dist/RS/v0/to/course-events/meta.js.map +0 -1
  420. package/dist/RS/v0/to/courses.js +0 -56
  421. package/dist/RS/v0/to/courses.js.map +0 -1
  422. package/dist/RS/v0/to/days.js +0 -11
  423. package/dist/RS/v0/to/days.js.map +0 -1
  424. package/dist/RS/v0/to/dependencies.js +0 -26
  425. package/dist/RS/v0/to/dependencies.js.map +0 -1
  426. package/dist/RS/v0/to/groups.js +0 -32
  427. package/dist/RS/v0/to/groups.js.map +0 -1
  428. package/dist/RS/v0/to/index.d.ts +0 -46
  429. package/dist/RS/v0/to/index.js +0 -34
  430. package/dist/RS/v0/to/index.js.map +0 -1
  431. package/dist/RS/v0/to/intervals.js +0 -17
  432. package/dist/RS/v0/to/intervals.js.map +0 -1
  433. package/dist/RS/v0/to/locked-times.js +0 -43
  434. package/dist/RS/v0/to/locked-times.js.map +0 -1
  435. package/dist/RS/v0/to/schedules.js +0 -16
  436. package/dist/RS/v0/to/schedules.js.map +0 -1
  437. package/dist/RS/v0/to/settings.js +0 -28
  438. package/dist/RS/v0/to/settings.js.map +0 -1
  439. package/dist/RS/v0/to/teachers.js +0 -30
  440. package/dist/RS/v0/to/teachers.js.map +0 -1
  441. package/dist/RS/v0/types/areas.d.ts +0 -8
  442. package/dist/RS/v0/types/available-dependencies.d.ts +0 -8
  443. package/dist/RS/v0/types/break-lengths.d.ts +0 -9
  444. package/dist/RS/v0/types/configurations.d.ts +0 -7
  445. package/dist/RS/v0/types/constraints.d.ts +0 -17
  446. package/dist/RS/v0/types/course-events.d.ts +0 -26
  447. package/dist/RS/v0/types/courses.d.ts +0 -27
  448. package/dist/RS/v0/types/days.d.ts +0 -8
  449. package/dist/RS/v0/types/dependencies.d.ts +0 -17
  450. package/dist/RS/v0/types/groups.d.ts +0 -25
  451. package/dist/RS/v0/types/index.d.ts +0 -31
  452. package/dist/RS/v0/types/intervals.d.ts +0 -8
  453. package/dist/RS/v0/types/locked-times.d.ts +0 -11
  454. package/dist/RS/v0/types/out-options.d.ts +0 -13
  455. package/dist/RS/v0/types/placements.d.ts +0 -12
  456. package/dist/RS/v0/types/schedules.d.ts +0 -15
  457. package/dist/RS/v0/types/settings.d.ts +0 -26
  458. package/dist/RS/v1/from/available-dependencies.js +0 -38
  459. package/dist/RS/v1/from/available-dependencies.js.map +0 -1
  460. package/dist/RS/v1/from/break-lengths.js +0 -15
  461. package/dist/RS/v1/from/break-lengths.js.map +0 -1
  462. package/dist/RS/v1/from/collections.js +0 -55
  463. package/dist/RS/v1/from/collections.js.map +0 -1
  464. package/dist/RS/v1/from/course-events.js +0 -65
  465. package/dist/RS/v1/from/course-events.js.map +0 -1
  466. package/dist/RS/v1/from/days.js +0 -14
  467. package/dist/RS/v1/from/days.js.map +0 -1
  468. package/dist/RS/v1/from/dependencies.js +0 -31
  469. package/dist/RS/v1/from/dependencies.js.map +0 -1
  470. package/dist/RS/v1/from/groups.js +0 -34
  471. package/dist/RS/v1/from/groups.js.map +0 -1
  472. package/dist/RS/v1/from/index.js +0 -32
  473. package/dist/RS/v1/from/index.js.map +0 -1
  474. package/dist/RS/v1/from/intervals.js +0 -18
  475. package/dist/RS/v1/from/intervals.js.map +0 -1
  476. package/dist/RS/v1/from/locked-times.js +0 -21
  477. package/dist/RS/v1/from/locked-times.js.map +0 -1
  478. package/dist/RS/v1/from/placements.js +0 -21
  479. package/dist/RS/v1/from/placements.js.map +0 -1
  480. package/dist/RS/v1/from/schedules.js +0 -44
  481. package/dist/RS/v1/from/schedules.js.map +0 -1
  482. package/dist/RS/v1/from/settings.js +0 -25
  483. package/dist/RS/v1/from/settings.js.map +0 -1
  484. package/dist/RS/v1/from/teachers.js +0 -33
  485. package/dist/RS/v1/from/teachers.js.map +0 -1
  486. package/dist/RS/v1/index.d.ts +0 -45
  487. package/dist/RS/v1/index.js +0 -12
  488. package/dist/RS/v1/index.js.map +0 -1
  489. package/dist/RS/v1/to/available-dependencies.js +0 -25
  490. package/dist/RS/v1/to/available-dependencies.js.map +0 -1
  491. package/dist/RS/v1/to/break-lengths.js +0 -19
  492. package/dist/RS/v1/to/break-lengths.js.map +0 -1
  493. package/dist/RS/v1/to/collections.js +0 -51
  494. package/dist/RS/v1/to/collections.js.map +0 -1
  495. package/dist/RS/v1/to/configurations.js +0 -22
  496. package/dist/RS/v1/to/configurations.js.map +0 -1
  497. package/dist/RS/v1/to/constraints.js +0 -26
  498. package/dist/RS/v1/to/constraints.js.map +0 -1
  499. package/dist/RS/v1/to/course-events/days.js +0 -12
  500. package/dist/RS/v1/to/course-events/days.js.map +0 -1
  501. package/dist/RS/v1/to/course-events/dependencies.js +0 -15
  502. package/dist/RS/v1/to/course-events/dependencies.js.map +0 -1
  503. package/dist/RS/v1/to/course-events/groups.js +0 -30
  504. package/dist/RS/v1/to/course-events/groups.js.map +0 -1
  505. package/dist/RS/v1/to/course-events/in-locations.js +0 -17
  506. package/dist/RS/v1/to/course-events/in-locations.js.map +0 -1
  507. package/dist/RS/v1/to/course-events/index.js +0 -47
  508. package/dist/RS/v1/to/course-events/index.js.map +0 -1
  509. package/dist/RS/v1/to/course-events/intervals.js +0 -11
  510. package/dist/RS/v1/to/course-events/intervals.js.map +0 -1
  511. package/dist/RS/v1/to/course-events/meta.js +0 -21
  512. package/dist/RS/v1/to/course-events/meta.js.map +0 -1
  513. package/dist/RS/v1/to/days.js +0 -11
  514. package/dist/RS/v1/to/days.js.map +0 -1
  515. package/dist/RS/v1/to/dependencies.js +0 -28
  516. package/dist/RS/v1/to/dependencies.js.map +0 -1
  517. package/dist/RS/v1/to/groups.js +0 -34
  518. package/dist/RS/v1/to/groups.js.map +0 -1
  519. package/dist/RS/v1/to/index.d.ts +0 -46
  520. package/dist/RS/v1/to/index.js +0 -34
  521. package/dist/RS/v1/to/index.js.map +0 -1
  522. package/dist/RS/v1/to/intervals.js +0 -17
  523. package/dist/RS/v1/to/intervals.js.map +0 -1
  524. package/dist/RS/v1/to/locked-times.js +0 -49
  525. package/dist/RS/v1/to/locked-times.js.map +0 -1
  526. package/dist/RS/v1/to/schedules.js +0 -16
  527. package/dist/RS/v1/to/schedules.js.map +0 -1
  528. package/dist/RS/v1/to/settings.js +0 -34
  529. package/dist/RS/v1/to/settings.js.map +0 -1
  530. package/dist/RS/v1/to/teachers.js +0 -34
  531. package/dist/RS/v1/to/teachers.js.map +0 -1
  532. package/dist/RS/v1/types/areas.d.ts +0 -8
  533. package/dist/RS/v1/types/available-dependencies.d.ts +0 -8
  534. package/dist/RS/v1/types/break-lengths.d.ts +0 -9
  535. package/dist/RS/v1/types/collections.d.ts +0 -27
  536. package/dist/RS/v1/types/configurations.d.ts +0 -10
  537. package/dist/RS/v1/types/constraints.d.ts +0 -17
  538. package/dist/RS/v1/types/course-events.d.ts +0 -26
  539. package/dist/RS/v1/types/days.d.ts +0 -8
  540. package/dist/RS/v1/types/dependencies.d.ts +0 -17
  541. package/dist/RS/v1/types/groups.d.ts +0 -25
  542. package/dist/RS/v1/types/index.d.ts +0 -31
  543. package/dist/RS/v1/types/intervals.d.ts +0 -8
  544. package/dist/RS/v1/types/locked-times.d.ts +0 -11
  545. package/dist/RS/v1/types/out-options.d.ts +0 -11
  546. package/dist/RS/v1/types/placements.d.ts +0 -12
  547. package/dist/RS/v1/types/schedules.d.ts +0 -16
  548. package/dist/RS/v1/types/settings.d.ts +0 -31
  549. package/dist/RS/v2/from/available-dependencies.js +0 -38
  550. package/dist/RS/v2/from/available-dependencies.js.map +0 -1
  551. package/dist/RS/v2/from/break-lengths.js +0 -15
  552. package/dist/RS/v2/from/break-lengths.js.map +0 -1
  553. package/dist/RS/v2/from/collections.js +0 -57
  554. package/dist/RS/v2/from/collections.js.map +0 -1
  555. package/dist/RS/v2/from/course-events.d.ts +0 -12
  556. package/dist/RS/v2/from/course-events.js +0 -67
  557. package/dist/RS/v2/from/course-events.js.map +0 -1
  558. package/dist/RS/v2/from/days.js +0 -14
  559. package/dist/RS/v2/from/days.js.map +0 -1
  560. package/dist/RS/v2/from/dependencies.js +0 -31
  561. package/dist/RS/v2/from/dependencies.js.map +0 -1
  562. package/dist/RS/v2/from/groups.js +0 -35
  563. package/dist/RS/v2/from/groups.js.map +0 -1
  564. package/dist/RS/v2/from/index.js +0 -32
  565. package/dist/RS/v2/from/index.js.map +0 -1
  566. package/dist/RS/v2/from/intervals.js +0 -18
  567. package/dist/RS/v2/from/intervals.js.map +0 -1
  568. package/dist/RS/v2/from/locked-times.js +0 -21
  569. package/dist/RS/v2/from/locked-times.js.map +0 -1
  570. package/dist/RS/v2/from/placements.js +0 -32
  571. package/dist/RS/v2/from/placements.js.map +0 -1
  572. package/dist/RS/v2/from/schedules.js +0 -78
  573. package/dist/RS/v2/from/schedules.js.map +0 -1
  574. package/dist/RS/v2/from/settings.js +0 -31
  575. package/dist/RS/v2/from/settings.js.map +0 -1
  576. package/dist/RS/v2/from/teachers.js +0 -33
  577. package/dist/RS/v2/from/teachers.js.map +0 -1
  578. package/dist/RS/v2/index.d.ts +0 -63
  579. package/dist/RS/v2/index.js +0 -12
  580. package/dist/RS/v2/index.js.map +0 -1
  581. package/dist/RS/v2/to/available-dependencies.js +0 -25
  582. package/dist/RS/v2/to/available-dependencies.js.map +0 -1
  583. package/dist/RS/v2/to/break-lengths.js +0 -19
  584. package/dist/RS/v2/to/break-lengths.js.map +0 -1
  585. package/dist/RS/v2/to/collections.js +0 -60
  586. package/dist/RS/v2/to/collections.js.map +0 -1
  587. package/dist/RS/v2/to/configurations.js +0 -23
  588. package/dist/RS/v2/to/configurations.js.map +0 -1
  589. package/dist/RS/v2/to/constraints.js +0 -88
  590. package/dist/RS/v2/to/constraints.js.map +0 -1
  591. package/dist/RS/v2/to/course-events/days.js +0 -12
  592. package/dist/RS/v2/to/course-events/days.js.map +0 -1
  593. package/dist/RS/v2/to/course-events/dependencies.js +0 -14
  594. package/dist/RS/v2/to/course-events/dependencies.js.map +0 -1
  595. package/dist/RS/v2/to/course-events/groups.js +0 -38
  596. package/dist/RS/v2/to/course-events/groups.js.map +0 -1
  597. package/dist/RS/v2/to/course-events/in-locations.js +0 -18
  598. package/dist/RS/v2/to/course-events/in-locations.js.map +0 -1
  599. package/dist/RS/v2/to/course-events/index.js +0 -56
  600. package/dist/RS/v2/to/course-events/index.js.map +0 -1
  601. package/dist/RS/v2/to/course-events/intervals.js +0 -11
  602. package/dist/RS/v2/to/course-events/intervals.js.map +0 -1
  603. package/dist/RS/v2/to/course-events/meta.js +0 -21
  604. package/dist/RS/v2/to/course-events/meta.js.map +0 -1
  605. package/dist/RS/v2/to/days.js +0 -11
  606. package/dist/RS/v2/to/days.js.map +0 -1
  607. package/dist/RS/v2/to/default.js +0 -36
  608. package/dist/RS/v2/to/default.js.map +0 -1
  609. package/dist/RS/v2/to/dependencies.js +0 -28
  610. package/dist/RS/v2/to/dependencies.js.map +0 -1
  611. package/dist/RS/v2/to/destructure.js +0 -40
  612. package/dist/RS/v2/to/destructure.js.map +0 -1
  613. package/dist/RS/v2/to/dynamic-locked-times.js +0 -57
  614. package/dist/RS/v2/to/dynamic-locked-times.js.map +0 -1
  615. package/dist/RS/v2/to/groups.js +0 -37
  616. package/dist/RS/v2/to/groups.js.map +0 -1
  617. package/dist/RS/v2/to/index.d.ts +0 -44
  618. package/dist/RS/v2/to/index.js +0 -36
  619. package/dist/RS/v2/to/index.js.map +0 -1
  620. package/dist/RS/v2/to/intervals.js +0 -32
  621. package/dist/RS/v2/to/intervals.js.map +0 -1
  622. package/dist/RS/v2/to/locked-times.js +0 -49
  623. package/dist/RS/v2/to/locked-times.js.map +0 -1
  624. package/dist/RS/v2/to/periods.js +0 -48
  625. package/dist/RS/v2/to/periods.js.map +0 -1
  626. package/dist/RS/v2/to/persons.js +0 -23
  627. package/dist/RS/v2/to/persons.js.map +0 -1
  628. package/dist/RS/v2/to/schedules.js +0 -19
  629. package/dist/RS/v2/to/schedules.js.map +0 -1
  630. package/dist/RS/v2/to/settings.js +0 -18
  631. package/dist/RS/v2/to/settings.js.map +0 -1
  632. package/dist/RS/v2/to/teachers.js +0 -37
  633. package/dist/RS/v2/to/teachers.js.map +0 -1
  634. package/dist/RS/v2/types/areas.d.ts +0 -8
  635. package/dist/RS/v2/types/available-dependencies.d.ts +0 -8
  636. package/dist/RS/v2/types/break-lengths.d.ts +0 -9
  637. package/dist/RS/v2/types/collections.d.ts +0 -29
  638. package/dist/RS/v2/types/configurations.d.ts +0 -10
  639. package/dist/RS/v2/types/constraints.d.ts +0 -21
  640. package/dist/RS/v2/types/course-events.d.ts +0 -30
  641. package/dist/RS/v2/types/days.d.ts +0 -8
  642. package/dist/RS/v2/types/default.d.ts +0 -25
  643. package/dist/RS/v2/types/dependencies.d.ts +0 -17
  644. package/dist/RS/v2/types/index.d.ts +0 -33
  645. package/dist/RS/v2/types/intervals.d.ts +0 -9
  646. package/dist/RS/v2/types/out-options.d.ts +0 -11
  647. package/dist/RS/v2/types/placements.d.ts +0 -12
  648. package/dist/RS/v2/types/schedules.d.ts +0 -18
  649. package/dist/RS/v3/from/division.js +0 -14
  650. package/dist/RS/v3/from/division.js.map +0 -1
  651. package/dist/RS/v3/from/index.js +0 -12
  652. package/dist/RS/v3/from/index.js.map +0 -1
  653. package/dist/RS/v3/from/schedules.js +0 -34
  654. package/dist/RS/v3/from/schedules.js.map +0 -1
  655. package/dist/RS/v3/index.d.ts +0 -21
  656. package/dist/RS/v3/index.js +0 -12
  657. package/dist/RS/v3/index.js.map +0 -1
  658. package/dist/RS/v3/to/available-dependencies.js +0 -26
  659. package/dist/RS/v3/to/available-dependencies.js.map +0 -1
  660. package/dist/RS/v3/to/break-lengths.js +0 -19
  661. package/dist/RS/v3/to/break-lengths.js.map +0 -1
  662. package/dist/RS/v3/to/collections.js +0 -56
  663. package/dist/RS/v3/to/collections.js.map +0 -1
  664. package/dist/RS/v3/to/configurations.js +0 -23
  665. package/dist/RS/v3/to/configurations.js.map +0 -1
  666. package/dist/RS/v3/to/constraints.js +0 -77
  667. package/dist/RS/v3/to/constraints.js.map +0 -1
  668. package/dist/RS/v3/to/course-events/days.js +0 -12
  669. package/dist/RS/v3/to/course-events/days.js.map +0 -1
  670. package/dist/RS/v3/to/course-events/dependencies.js +0 -14
  671. package/dist/RS/v3/to/course-events/dependencies.js.map +0 -1
  672. package/dist/RS/v3/to/course-events/groups.js +0 -44
  673. package/dist/RS/v3/to/course-events/groups.js.map +0 -1
  674. package/dist/RS/v3/to/course-events/in-locations.js +0 -18
  675. package/dist/RS/v3/to/course-events/in-locations.js.map +0 -1
  676. package/dist/RS/v3/to/course-events/index.js +0 -84
  677. package/dist/RS/v3/to/course-events/index.js.map +0 -1
  678. package/dist/RS/v3/to/course-events/intervals.js +0 -11
  679. package/dist/RS/v3/to/course-events/intervals.js.map +0 -1
  680. package/dist/RS/v3/to/course-events/meta.js +0 -21
  681. package/dist/RS/v3/to/course-events/meta.js.map +0 -1
  682. package/dist/RS/v3/to/days.js +0 -11
  683. package/dist/RS/v3/to/days.js.map +0 -1
  684. package/dist/RS/v3/to/default.js.map +0 -1
  685. package/dist/RS/v3/to/dependencies.js +0 -31
  686. package/dist/RS/v3/to/dependencies.js.map +0 -1
  687. package/dist/RS/v3/to/destructure.js +0 -33
  688. package/dist/RS/v3/to/destructure.js.map +0 -1
  689. package/dist/RS/v3/to/dynamic-locked-times.js +0 -97
  690. package/dist/RS/v3/to/dynamic-locked-times.js.map +0 -1
  691. package/dist/RS/v3/to/groups.js +0 -36
  692. package/dist/RS/v3/to/groups.js.map +0 -1
  693. package/dist/RS/v3/to/index.d.ts +0 -266
  694. package/dist/RS/v3/to/index.js.map +0 -1
  695. package/dist/RS/v3/to/individuals.js +0 -49
  696. package/dist/RS/v3/to/individuals.js.map +0 -1
  697. package/dist/RS/v3/to/intervals.js +0 -32
  698. package/dist/RS/v3/to/intervals.js.map +0 -1
  699. package/dist/RS/v3/to/locked-times.js +0 -49
  700. package/dist/RS/v3/to/locked-times.js.map +0 -1
  701. package/dist/RS/v3/to/periods.js +0 -48
  702. package/dist/RS/v3/to/periods.js.map +0 -1
  703. package/dist/RS/v3/to/schedules.js +0 -39
  704. package/dist/RS/v3/to/schedules.js.map +0 -1
  705. package/dist/RS/v3/to/settings.js +0 -18
  706. package/dist/RS/v3/to/settings.js.map +0 -1
  707. package/dist/RS/v3/to/teachers.js +0 -36
  708. package/dist/RS/v3/to/teachers.js.map +0 -1
  709. package/dist/RS/v3/to/util.js +0 -32
  710. package/dist/RS/v3/to/util.js.map +0 -1
  711. package/dist/RS/v3/types/areas.d.ts +0 -8
  712. package/dist/RS/v3/types/available-dependencies.d.ts +0 -8
  713. package/dist/RS/v3/types/break-lengths.d.ts +0 -9
  714. package/dist/RS/v3/types/collections.d.ts +0 -31
  715. package/dist/RS/v3/types/configurations.d.ts +0 -10
  716. package/dist/RS/v3/types/constraints.d.ts +0 -25
  717. package/dist/RS/v3/types/course-events.d.ts +0 -32
  718. package/dist/RS/v3/types/days.d.ts +0 -8
  719. package/dist/RS/v3/types/dependencies.d.ts +0 -17
  720. package/dist/RS/v3/types/groups.d.ts +0 -25
  721. package/dist/RS/v3/types/index.d.ts +0 -33
  722. package/dist/RS/v3/types/individuals.d.ts +0 -13
  723. package/dist/RS/v3/types/intervals.d.ts +0 -9
  724. package/dist/RS/v3/types/locked-times.d.ts +0 -11
  725. package/dist/RS/v3/types/out-options.d.ts +0 -23
  726. package/dist/RS/v3/types/placements.d.ts +0 -12
  727. package/dist/RS/v3/types/root-intervals.d.ts +0 -10
  728. package/dist/RS/v3/types/schedules.d.ts +0 -24
  729. package/dist/RS/v3/types/settings.d.ts +0 -12
  730. package/dist/SS12000/from/activities.js +0 -35
  731. package/dist/SS12000/from/activities.js.map +0 -1
  732. package/dist/SS12000/from/calendar-events.js +0 -20
  733. package/dist/SS12000/from/calendar-events.js.map +0 -1
  734. package/dist/SS12000/from/duties.js +0 -21
  735. package/dist/SS12000/from/duties.js.map +0 -1
  736. package/dist/SS12000/from/groups.js +0 -23
  737. package/dist/SS12000/from/groups.js.map +0 -1
  738. package/dist/SS12000/from/index.js +0 -24
  739. package/dist/SS12000/from/index.js.map +0 -1
  740. package/dist/SS12000/from/persons.js +0 -43
  741. package/dist/SS12000/from/persons.js.map +0 -1
  742. package/dist/SS12000/from/resources.js +0 -9
  743. package/dist/SS12000/from/resources.js.map +0 -1
  744. package/dist/SS12000/from/rooms.js +0 -18
  745. package/dist/SS12000/from/rooms.js.map +0 -1
  746. package/dist/SS12000/from/syllabuses.js +0 -21
  747. package/dist/SS12000/from/syllabuses.js.map +0 -1
  748. package/dist/SS12000/index.d.ts +0 -73
  749. package/dist/SS12000/index.js +0 -12
  750. package/dist/SS12000/index.js.map +0 -1
  751. package/dist/SS12000/to/activities.js +0 -55
  752. package/dist/SS12000/to/activities.js.map +0 -1
  753. package/dist/SS12000/to/calendar-events.js +0 -47
  754. package/dist/SS12000/to/calendar-events.js.map +0 -1
  755. package/dist/SS12000/to/common.js +0 -16
  756. package/dist/SS12000/to/common.js.map +0 -1
  757. package/dist/SS12000/to/duties.js +0 -36
  758. package/dist/SS12000/to/duties.js.map +0 -1
  759. package/dist/SS12000/to/groups.js +0 -37
  760. package/dist/SS12000/to/groups.js.map +0 -1
  761. package/dist/SS12000/to/index.d.ts +0 -25
  762. package/dist/SS12000/to/index.js +0 -24
  763. package/dist/SS12000/to/index.js.map +0 -1
  764. package/dist/SS12000/to/persons.js +0 -36
  765. package/dist/SS12000/to/persons.js.map +0 -1
  766. package/dist/SS12000/to/resources.js +0 -23
  767. package/dist/SS12000/to/resources.js.map +0 -1
  768. package/dist/SS12000/to/rooms.js +0 -28
  769. package/dist/SS12000/to/rooms.js.map +0 -1
  770. package/dist/SS12000/to/syllabuses.js +0 -30
  771. package/dist/SS12000/to/syllabuses.js.map +0 -1
  772. package/dist/SS12000/types/activities.d.ts +0 -41
  773. package/dist/SS12000/types/calendar-events.d.ts +0 -23
  774. package/dist/SS12000/types/codes.d.ts +0 -9
  775. package/dist/SS12000/types/duties.d.ts +0 -23
  776. package/dist/SS12000/types/duty-assignments.d.ts +0 -13
  777. package/dist/SS12000/types/groups.d.ts +0 -23
  778. package/dist/SS12000/types/index.d.ts +0 -21
  779. package/dist/SS12000/types/organisation.d.ts +0 -20
  780. package/dist/SS12000/types/persons.d.ts +0 -30
  781. package/dist/SS12000/types/resources.d.ts +0 -13
  782. package/dist/SS12000/types/rooms.d.ts +0 -17
  783. package/dist/SS12000/types/syllabus.d.ts +0 -19
  784. package/dist/core/v1/from/courses.js +0 -26
  785. package/dist/core/v1/from/courses.js.map +0 -1
  786. package/dist/core/v1/from/events.js +0 -12
  787. package/dist/core/v1/from/events.js.map +0 -1
  788. package/dist/core/v1/from/groups.js +0 -14
  789. package/dist/core/v1/from/groups.js.map +0 -1
  790. package/dist/core/v1/from/index.js +0 -8
  791. package/dist/core/v1/from/index.js.map +0 -1
  792. package/dist/core/v1/from/locations.js +0 -14
  793. package/dist/core/v1/from/locations.js.map +0 -1
  794. package/dist/core/v1/from/locked-times.js +0 -13
  795. package/dist/core/v1/from/locked-times.js.map +0 -1
  796. package/dist/core/v1/from/overlap-groups.js +0 -13
  797. package/dist/core/v1/from/overlap-groups.js.map +0 -1
  798. package/dist/core/v1/from/periods.js +0 -14
  799. package/dist/core/v1/from/periods.js.map +0 -1
  800. package/dist/core/v1/from/schedules.d.ts +0 -139
  801. package/dist/core/v1/from/schedules.js +0 -36
  802. package/dist/core/v1/from/schedules.js.map +0 -1
  803. package/dist/core/v1/from/teachers.js +0 -14
  804. package/dist/core/v1/from/teachers.js.map +0 -1
  805. package/dist/core/v1/index.d.ts +0 -14
  806. package/dist/core/v1/index.js +0 -12
  807. package/dist/core/v1/index.js.map +0 -1
  808. package/dist/core/v1/to/available-locations.js +0 -11
  809. package/dist/core/v1/to/available-locations.js.map +0 -1
  810. package/dist/core/v1/to/courses.js +0 -33
  811. package/dist/core/v1/to/courses.js.map +0 -1
  812. package/dist/core/v1/to/days.js +0 -13
  813. package/dist/core/v1/to/days.js.map +0 -1
  814. package/dist/core/v1/to/events.js +0 -35
  815. package/dist/core/v1/to/events.js.map +0 -1
  816. package/dist/core/v1/to/groups.js +0 -24
  817. package/dist/core/v1/to/groups.js.map +0 -1
  818. package/dist/core/v1/to/index.js +0 -10
  819. package/dist/core/v1/to/index.js.map +0 -1
  820. package/dist/core/v1/to/intervals.js +0 -14
  821. package/dist/core/v1/to/intervals.js.map +0 -1
  822. package/dist/core/v1/to/locations.js +0 -20
  823. package/dist/core/v1/to/locations.js.map +0 -1
  824. package/dist/core/v1/to/locked-times.js +0 -25
  825. package/dist/core/v1/to/locked-times.js.map +0 -1
  826. package/dist/core/v1/to/overlap-groups.js +0 -30
  827. package/dist/core/v1/to/overlap-groups.js.map +0 -1
  828. package/dist/core/v1/to/periods.js +0 -10
  829. package/dist/core/v1/to/periods.js.map +0 -1
  830. package/dist/core/v1/to/persons.js +0 -22
  831. package/dist/core/v1/to/persons.js.map +0 -1
  832. package/dist/core/v1/to/schedules.d.ts +0 -170
  833. package/dist/core/v1/to/schedules.js +0 -32
  834. package/dist/core/v1/to/schedules.js.map +0 -1
  835. package/dist/core/v1/to/settings.js +0 -13
  836. package/dist/core/v1/to/settings.js.map +0 -1
  837. package/dist/core/v1/to/teachers.js +0 -20
  838. package/dist/core/v1/to/teachers.js.map +0 -1
  839. package/dist/core/v1/types/areas.d.ts +0 -16
  840. package/dist/core/v1/types/available-locations.d.ts +0 -13
  841. package/dist/core/v1/types/break-lengths.d.ts +0 -5
  842. package/dist/core/v1/types/common/coalesced.d.ts +0 -10
  843. package/dist/core/v1/types/courses.d.ts +0 -54
  844. package/dist/core/v1/types/days.d.ts +0 -14
  845. package/dist/core/v1/types/division-settings.d.ts +0 -39
  846. package/dist/core/v1/types/divisions.d.ts +0 -45
  847. package/dist/core/v1/types/events.d.ts +0 -60
  848. package/dist/core/v1/types/groups.d.ts +0 -37
  849. package/dist/core/v1/types/index.d.ts +0 -41
  850. package/dist/core/v1/types/intervals.d.ts +0 -17
  851. package/dist/core/v1/types/locations.d.ts +0 -32
  852. package/dist/core/v1/types/locked-times.d.ts +0 -39
  853. package/dist/core/v1/types/meta.d.ts +0 -9
  854. package/dist/core/v1/types/overlap-groups.d.ts +0 -26
  855. package/dist/core/v1/types/periods.d.ts +0 -22
  856. package/dist/core/v1/types/persons.d.ts +0 -40
  857. package/dist/core/v1/types/teachers.d.ts +0 -34
  858. package/dist/core/v2/from/courses.js +0 -13
  859. package/dist/core/v2/from/courses.js.map +0 -1
  860. package/dist/core/v2/from/events.js +0 -12
  861. package/dist/core/v2/from/events.js.map +0 -1
  862. package/dist/core/v2/from/exceptions.js +0 -13
  863. package/dist/core/v2/from/exceptions.js.map +0 -1
  864. package/dist/core/v2/from/groups.js +0 -13
  865. package/dist/core/v2/from/groups.js.map +0 -1
  866. package/dist/core/v2/from/index.js.map +0 -1
  867. package/dist/core/v2/from/locations.js +0 -13
  868. package/dist/core/v2/from/locations.js.map +0 -1
  869. package/dist/core/v2/from/locked-times.js +0 -13
  870. package/dist/core/v2/from/locked-times.js.map +0 -1
  871. package/dist/core/v2/from/overlap-groups.js +0 -13
  872. package/dist/core/v2/from/overlap-groups.js.map +0 -1
  873. package/dist/core/v2/from/periods.js +0 -13
  874. package/dist/core/v2/from/periods.js.map +0 -1
  875. package/dist/core/v2/from/persons.js +0 -12
  876. package/dist/core/v2/from/persons.js.map +0 -1
  877. package/dist/core/v2/from/root-intervals.js +0 -13
  878. package/dist/core/v2/from/root-intervals.js.map +0 -1
  879. package/dist/core/v2/from/schedules.d.ts +0 -245
  880. package/dist/core/v2/from/schedules.js +0 -48
  881. package/dist/core/v2/from/schedules.js.map +0 -1
  882. package/dist/core/v2/from/syllabuses.js.map +0 -1
  883. package/dist/core/v2/from/teachers.js +0 -13
  884. package/dist/core/v2/from/teachers.js.map +0 -1
  885. package/dist/core/v2/index.d.ts +0 -16
  886. package/dist/core/v2/index.js +0 -12
  887. package/dist/core/v2/index.js.map +0 -1
  888. package/dist/core/v2/to/available-locations.js +0 -11
  889. package/dist/core/v2/to/available-locations.js.map +0 -1
  890. package/dist/core/v2/to/courses.js +0 -44
  891. package/dist/core/v2/to/courses.js.map +0 -1
  892. package/dist/core/v2/to/days.js +0 -13
  893. package/dist/core/v2/to/days.js.map +0 -1
  894. package/dist/core/v2/to/division.js +0 -10
  895. package/dist/core/v2/to/division.js.map +0 -1
  896. package/dist/core/v2/to/events.js +0 -47
  897. package/dist/core/v2/to/events.js.map +0 -1
  898. package/dist/core/v2/to/exceptions.js +0 -29
  899. package/dist/core/v2/to/exceptions.js.map +0 -1
  900. package/dist/core/v2/to/groups.js +0 -34
  901. package/dist/core/v2/to/groups.js.map +0 -1
  902. package/dist/core/v2/to/index.d.ts +0 -9
  903. package/dist/core/v2/to/index.js +0 -10
  904. package/dist/core/v2/to/index.js.map +0 -1
  905. package/dist/core/v2/to/intervals.js +0 -13
  906. package/dist/core/v2/to/intervals.js.map +0 -1
  907. package/dist/core/v2/to/locations.js +0 -35
  908. package/dist/core/v2/to/locations.js.map +0 -1
  909. package/dist/core/v2/to/locked-times.js +0 -25
  910. package/dist/core/v2/to/locked-times.js.map +0 -1
  911. package/dist/core/v2/to/overlap-groups.js +0 -30
  912. package/dist/core/v2/to/overlap-groups.js.map +0 -1
  913. package/dist/core/v2/to/periods.js +0 -10
  914. package/dist/core/v2/to/periods.js.map +0 -1
  915. package/dist/core/v2/to/persons.js +0 -25
  916. package/dist/core/v2/to/persons.js.map +0 -1
  917. package/dist/core/v2/to/root-intervals.js +0 -10
  918. package/dist/core/v2/to/root-intervals.js.map +0 -1
  919. package/dist/core/v2/to/schedules.d.ts +0 -249
  920. package/dist/core/v2/to/schedules.js +0 -40
  921. package/dist/core/v2/to/schedules.js.map +0 -1
  922. package/dist/core/v2/to/settings.js +0 -13
  923. package/dist/core/v2/to/settings.js.map +0 -1
  924. package/dist/core/v2/to/syllabuses.js +0 -16
  925. package/dist/core/v2/to/syllabuses.js.map +0 -1
  926. package/dist/core/v2/to/teachers.js +0 -28
  927. package/dist/core/v2/to/teachers.js.map +0 -1
  928. package/dist/core/v2/types/areas.d.ts +0 -16
  929. package/dist/core/v2/types/available-locations.d.ts +0 -13
  930. package/dist/core/v2/types/break-lengths.d.ts +0 -5
  931. package/dist/core/v2/types/common/coalesced.d.ts +0 -10
  932. package/dist/core/v2/types/common/maximum-schedule-span.d.ts +0 -8
  933. package/dist/core/v2/types/common/planned-schedule-duration.d.ts +0 -7
  934. package/dist/core/v2/types/courses.d.ts +0 -76
  935. package/dist/core/v2/types/days.d.ts +0 -14
  936. package/dist/core/v2/types/divisions.d.ts +0 -54
  937. package/dist/core/v2/types/events.d.ts +0 -76
  938. package/dist/core/v2/types/groups.d.ts +0 -50
  939. package/dist/core/v2/types/index.d.ts +0 -49
  940. package/dist/core/v2/types/intervals.d.ts +0 -17
  941. package/dist/core/v2/types/locations.d.ts +0 -38
  942. package/dist/core/v2/types/locked-times.d.ts +0 -44
  943. package/dist/core/v2/types/overlap-groups.d.ts +0 -26
  944. package/dist/core/v2/types/periods.d.ts +0 -25
  945. package/dist/core/v2/types/root-intervals.d.ts +0 -23
  946. package/dist/core/v2/types/schedules.d.ts +0 -38
  947. package/dist/core/v2/types/syllabus.d.ts +0 -27
  948. package/dist/vKlass/from/index.d.ts +0 -9
@@ -1,17 +1,18 @@
1
- import { Types } from "../../core/v2/types/index.js";
1
+ import { BaseOptions } from "../../common/types.js";
2
+ import { Types } from "../../core/types/index.js";
2
3
 
3
4
  //#region src/Admentum/to/index.d.ts
4
5
  declare class export_default {
5
6
  static schedules: (schedule: {
6
- division: Types.division;
7
- settings: Types.divisionSettings;
8
- periods: Types.period[];
9
- locations: Types.location[];
10
- groups: Types.group[];
11
- teachers: Types.teacher[];
12
- courses: Types.course[];
13
- events: Types.event[];
14
- }) => string;
7
+ division: Types.mixed.division;
8
+ settings: Types.mixed.divisionSettings;
9
+ periods: Types.mixed.period[];
10
+ locations: Types.mixed.location[];
11
+ groups: Types.mixed.group[];
12
+ teachers: Types.mixed.teacher[];
13
+ courses: Types.mixed.course[];
14
+ events: Types.mixed.event[];
15
+ }, options: BaseOptions) => string;
15
16
  }
16
17
  //#endregion
17
18
  export { export_default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../src/Admentum/to/index.ts"],"sourcesContent":["import _schedules from './schedules';\n\nexport default class {\n static schedules = _schedules;\n}"],"mappings":";;;AAEA,uBAAqB;CACnB,OAAO,YAAsBA"}
1
+ {"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../src/Admentum/to/index.ts"],"sourcesContent":["import _schedules from './schedules';\n\nexport default class {\n static schedules = _schedules;\n}"],"mappings":";;;AAEA,uBAAqB;CACnB,OAAO,YAAYA"}
@@ -1,15 +1,10 @@
1
+ import { getDayIndex, getVertexId } from "../../core/util.js";
1
2
  import moment from "moment";
2
- import "xlsx";
3
3
 
4
4
  //#region src/Admentum/to/schedules.ts
5
- const getId = (ref) => {
6
- if (!ref) return "";
7
- if (typeof ref == "string") return ref;
8
- return ref.id.toString();
9
- };
10
- var schedules_default = (schedule) => {
11
- const periodsMap = new Map(schedule.periods.map((x) => [getId(x), x]));
12
- periodsMap.set("", { ranges: [{
5
+ var schedules_default = (schedule, options) => {
6
+ const periodsMap = new Map(schedule.periods.map((x) => [getVertexId(x, options), x]));
7
+ periodsMap.set(void 0, { ranges: [{
13
8
  start: schedule.division.start,
14
9
  end: schedule.division.end
15
10
  }] });
@@ -27,27 +22,29 @@ var schedules_default = (schedule) => {
27
22
  }).flat().join(", ");
28
23
  inWeeksMap.set(id, weeks);
29
24
  });
30
- const locationsMap = new Map(schedule.locations.map((x) => [getId(x), x]));
31
- const groupsMap = new Map(schedule.groups.map((x) => [getId(x), x]));
32
- const teachersMap = new Map(schedule.teachers.map((x) => [getId(x), x]));
33
- const coursesMap = new Map(schedule.courses.map((x) => [getId(x), x]));
34
- const events = schedule.events.reduce((acc, event) => {
35
- if (event.parked) return acc;
36
- const course = coursesMap.get(getId(event.course));
37
- if (!course) return acc;
25
+ const locationsMap = new Map(schedule.locations.map((x) => [getVertexId(x, options), x]));
26
+ const groupsMap = new Map(schedule.groups.map((x) => [getVertexId(x, options), x]));
27
+ const teachersMap = new Map(schedule.teachers.map((x) => [getVertexId(x, options), x]));
28
+ const coursesMap = new Map(schedule.courses.map((x) => [getVertexId(x, options), x]));
29
+ const events = schedule.events.map((event) => {
30
+ if (event.parked) return;
31
+ if (!event.start || !event.end) return;
32
+ const course = event.course ? coursesMap.get(getVertexId(event.course, options)) : void 0;
33
+ if (!course) return;
38
34
  const start = moment.utc(event.start);
39
35
  const end = moment.utc(event.end);
40
- const periodId = getId(event.period ?? course.period ?? schedule.settings.period);
36
+ const period = event.period ?? course.period ?? schedule.settings.period;
37
+ const periodId = period ? getVertexId(period, options) : void 0;
41
38
  const inWeeks = inWeeksMap.get(periodId);
42
- const locations = (event.inLocations ?? []).map((x) => x ? locationsMap.get(getId(x)) : null).filter((x) => !!x);
43
- const teachers = (event.teachers ?? course.teachers ?? []).map((x) => teachersMap.get(getId(x.to))).filter((x) => !!x);
44
- const groups = (event.groups ?? course.groups ?? []).map((x) => groupsMap.get(getId(x.to))).filter((x) => !!x);
39
+ const locations = (event.inLocations ?? []).map((x) => x ? locationsMap.get(getVertexId(x, options)) : null).filter((x) => !!x);
40
+ const teachers = (event.teachers ?? course.teachers ?? []).map((x) => teachersMap.get(getVertexId(x.to, options))).filter((x) => !!x);
41
+ const groups = (event.groups ?? course.groups ?? []).map((x) => groupsMap.get(getVertexId(x.to, options))).filter((x) => !!x);
45
42
  const out = {
46
- id: event._id?.toString(),
43
+ id: getVertexId(event, options),
47
44
  externalid: event.ids?.toString(),
48
45
  groupid: course.ids,
49
46
  group: course.displayName,
50
- dayid: (start.day() + 6) % 7,
47
+ dayid: getDayIndex(start),
51
48
  startTime: start.format("HHmm"),
52
49
  length: end.diff(start, "minutes"),
53
50
  subject: course.subject,
@@ -59,8 +56,8 @@ var schedules_default = (schedule) => {
59
56
  classid: groups.map((x) => x.ids).join(", "),
60
57
  class: groups.map((x) => x.displayName).join(", ")
61
58
  };
62
- return acc.concat(out);
63
- }, []);
59
+ return out;
60
+ }).filter((x) => x != null);
64
61
  return toCsv(events);
65
62
  };
66
63
  function toCsv(events) {
@@ -1 +1 @@
1
- {"version":3,"file":"schedules.js","names":["weeks","out: OutEvent"],"sources":["../../../src/Admentum/to/schedules.ts"],"sourcesContent":["import * as XLSX from 'xlsx';\nimport moment from 'moment';\nimport { Types } from 'mongoose';\n\nimport { Types as CoreTypes } from '../../core/types';\n\ntype OutEvent = {\n id?: string;\n externalid?: string;\n groupid?: string;\n group?: string;\n dayid?: number;\n startTime?: string;\n length?: number;\n subject?: string;\n roomid?: string;\n room?: string;\n teacherid?: string;\n teacher?: string;\n classid?: string;\n class?: string;\n inweek?: string;\n};\n\ntype Schedule = {\n division: CoreTypes.division;\n settings: CoreTypes.divisionSettings;\n periods: CoreTypes.period[];\n locations: CoreTypes.location[];\n groups: CoreTypes.group[];\n teachers: CoreTypes.teacher[];\n courses: CoreTypes.course[];\n events: CoreTypes.event[];\n};\n\n\nconst getId = (ref: { id?: string } | Types.ObjectId | string | undefined): string => {\n if (!ref) return '';\n if (typeof ref == 'string') return ref;\n return ref.id!.toString();\n};\n\nexport default (\n schedule: Schedule\n): string => {\n\n // a map of period.id -> period\n const periodsMap = new Map(schedule.periods.map(x => [getId(x), x]));\n periodsMap.set('', { ranges: [{ start: schedule.division.start, end: schedule.division.end }] });\n\n // a map of period.id -> inWeeks\n const inWeeksMap = new Map<string, string>();\n periodsMap.forEach((period, id) => {\n const weeks = period.ranges\n .map(x => {\n // fetch all weeks between start and end\n const start = moment.utc(x.start);\n const end = moment.utc(x.end);\n const weeks = new Array<number>();\n while (start.isBefore(end)) {\n weeks.push(start.week());\n start.add(1, 'week');\n }\n return weeks;\n })\n .flat()\n .join(', ');\n\n inWeeksMap.set(id, weeks);\n });\n\n // a map of location.id -> location\n const locationsMap = new Map(schedule.locations.map(x => [getId(x), x]));\n\n // a map of group.id -> group\n const groupsMap = new Map(schedule.groups.map(x => [getId(x), x]));\n\n // a map of teacher.id -> teacher\n const teachersMap = new Map(schedule.teachers.map(x => [getId(x), x]));\n\n // a map of course.id -> course\n const coursesMap = new Map(schedule.courses.map(x => [getId(x), x]));\n\n\n const events = schedule.events.reduce((acc, event) => {\n // ignore parked events\n if (event.parked) return acc;\n\n // must have a course\n const course = coursesMap.get(getId(event.course));\n if (!course) return acc;\n\n const start = moment.utc(event.start);\n const end = moment.utc(event.end);\n\n const periodId = getId(event.period ?? course.period ?? schedule.settings.period);\n const inWeeks = inWeeksMap.get(periodId);\n\n const locations = (event.inLocations ?? []).map(x => x ? locationsMap.get(getId(x )) : null).filter((x): x is NonNullable<typeof x> => !!x);\n const teachers = (event.teachers ?? course.teachers ?? []).map(x => teachersMap .get(getId(x.to)) ).filter((x): x is NonNullable<typeof x> => !!x);\n const groups = (event.groups ?? course.groups ?? []).map(x => groupsMap .get(getId(x.to)) ).filter((x): x is NonNullable<typeof x> => !!x);\n\n const out: OutEvent = {\n id: event._id?.toString(),\n externalid: event.ids?.toString(),\n groupid: course.ids,\n group: course.displayName,\n dayid: (start.day() + 6) % 7,\n startTime: start.format('HHmm'),\n length: end.diff(start, 'minutes'),\n subject: course.subject,\n inweek: inWeeks,\n roomid: locations.map(x => x.ids ).join(', '),\n room: locations.map(x => x.displayName).join(', '),\n teacherid: teachers .map(x => x.ids ).join(', '),\n teacher: teachers .map(x => x.displayName).join(', '),\n classid: groups .map(x => x.ids ).join(', '),\n class: groups .map(x => x.displayName).join(', ')\n };\n return acc.concat(out);\n }, [] as OutEvent[]);\n\n // return toXlsx(events);\n return toCsv(events);\n};\n\nfunction toXlsx (events: OutEvent[]): XLSX.WorkBook {\n const wb = XLSX.utils.book_new();\n\n XLSX.utils.book_append_sheet(wb, XLSX.utils.json_to_sheet(events), 'royal schedule export');\n\n return wb;\n}\n\nfunction toCsv (events: OutEvent[]): string {\n // CSV header\n const headers = [\n 'id', 'externalid', 'groupid', 'group', 'dayid',\n 'startTime', 'length', 'subject', 'roomid', 'room',\n 'teacherid', 'teacher', 'classid', 'class', 'inweek'\n ];\n\n // Convert events to CSV rows\n const csvRows = events.map(event =>\n headers.map(header => {\n const value = event[header as keyof OutEvent];\n // Handle null/undefined values\n if (value == null) return '';\n\n const stringValue = value.toString();\n // Escape values that contain semicolons, quotes, or newlines\n if (stringValue.includes(';') || stringValue.includes('\"') || stringValue.includes('\\n') || stringValue.includes('\\r')) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`;\n }\n return stringValue;\n }).join(';')\n );\n\n // Combine header and rows with proper line endings\n const csv = [headers.join(';'), ...csvRows].join('\\r\\n');\n\n return csv;\n}"],"mappings":"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"}
1
+ {"version":3,"file":"schedules.js","names":["weeks","out: OutEvent"],"sources":["../../../src/Admentum/to/schedules.ts"],"sourcesContent":["import moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport { getDayIndex, getVertexId } from '../../core/util';\nimport type { BaseOptions } from '../../common/types';\n\n\ntype OutEvent = {\n id?: string;\n externalid?: string;\n groupid?: string;\n group?: string;\n dayid?: number;\n startTime?: string;\n length?: number;\n subject?: string;\n roomid?: string;\n room?: string;\n teacherid?: string;\n teacher?: string;\n classid?: string;\n class?: string;\n inweek?: string;\n};\n\ntype Schedule = {\n division: CoreTypes.mixed.division;\n settings: CoreTypes.mixed.divisionSettings;\n periods: CoreTypes.mixed.period[];\n locations: CoreTypes.mixed.location[];\n groups: CoreTypes.mixed.group[];\n teachers: CoreTypes.mixed.teacher[];\n courses: CoreTypes.mixed.course[];\n events: CoreTypes.mixed.event[];\n};\n\nexport default (\n schedule: Schedule,\n options: BaseOptions\n): string => {\n\n // a map of period.id -> period\n const periodsMap = new Map(schedule.periods.map(x => [getVertexId(x, options) as string | undefined, x as Omit<typeof x, 'id'>] as const));\n periodsMap.set(undefined, { ranges: [{ start: schedule.division.start, end: schedule.division.end }] });\n\n // a map of period.id -> inWeeks\n const inWeeksMap = new Map<string | undefined, string>();\n periodsMap.forEach((period, id) => {\n const weeks = period.ranges\n .map(x => {\n // fetch all weeks between start and end\n const start = moment.utc(x.start);\n const end = moment.utc(x.end);\n const weeks = new Array<number>();\n while (start.isBefore(end)) {\n weeks.push(start.week());\n start.add(1, 'week');\n }\n return weeks;\n })\n .flat()\n .join(', ');\n\n inWeeksMap.set(id, weeks);\n });\n\n // a map of location.id -> location\n const locationsMap = new Map(schedule.locations.map(x => [getVertexId(x, options), x] as const));\n\n // a map of group.id -> group\n const groupsMap = new Map(schedule.groups.map(x => [getVertexId(x, options), x] as const));\n\n // a map of teacher.id -> teacher\n const teachersMap = new Map(schedule.teachers.map(x => [getVertexId(x, options), x] as const));\n\n // a map of course.id -> course\n const coursesMap = new Map(schedule.courses.map(x => [getVertexId(x, options), x] as const));\n\n\n const events = schedule.events\n .map(event => {\n // ignore parked events\n if (event.parked) return;\n if (!event.start || !event.end) return;\n\n // must have a course\n const course = event.course ? coursesMap.get(getVertexId(event.course, options)) : undefined;\n if (!course) return;\n\n const start = moment.utc(event.start);\n const end = moment.utc(event.end);\n\n const period = event.period ?? course.period ?? schedule.settings.period;\n const periodId = period ? getVertexId(period, options) : undefined;\n const inWeeks = inWeeksMap.get(periodId);\n\n const locations = (event.inLocations ?? []).map(x => x ? locationsMap.get(getVertexId(x, options)) : null).filter((x): x is NonNullable<typeof x> => !!x);\n const teachers = (event.teachers ?? course.teachers ?? []).map(x => teachersMap .get(getVertexId(x.to, options)) ).filter((x): x is NonNullable<typeof x> => !!x);\n const groups = (event.groups ?? course.groups ?? []).map(x => groupsMap .get(getVertexId(x.to, options)) ).filter((x): x is NonNullable<typeof x> => !!x);\n\n const out: OutEvent = {\n id: getVertexId(event, options),\n externalid: event.ids?.toString(),\n groupid: course.ids,\n group: course.displayName,\n dayid: getDayIndex(start),\n startTime: start.format('HHmm'),\n length: end.diff(start, 'minutes'),\n subject: course.subject,\n inweek: inWeeks,\n roomid: locations.map(x => x.ids ).join(', '),\n room: locations.map(x => x.displayName).join(', '),\n teacherid: teachers .map(x => x.ids ).join(', '),\n teacher: teachers .map(x => x.displayName).join(', '),\n classid: groups .map(x => x.ids ).join(', '),\n class: groups .map(x => x.displayName).join(', ')\n };\n return out;\n })\n .filter(x => x != null);\n\n\n return toCsv(events);\n};\n\nfunction toCsv (events: OutEvent[]): string {\n // CSV header\n const headers = [\n 'id', 'externalid', 'groupid', 'group', 'dayid',\n 'startTime', 'length', 'subject', 'roomid', 'room',\n 'teacherid', 'teacher', 'classid', 'class', 'inweek'\n ];\n\n // Convert events to CSV rows\n const csvRows = events.map(event =>\n headers.map(header => {\n const value = event[header as keyof OutEvent];\n // Handle null/undefined values\n if (value == null) return '';\n\n const stringValue = value.toString();\n // Escape values that contain semicolons, quotes, or newlines\n if (stringValue.includes(';') || stringValue.includes('\"') || stringValue.includes('\\n') || stringValue.includes('\\r')) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`;\n }\n return stringValue;\n }).join(';')\n );\n\n // Combine header and rows with proper line endings\n const csv = [headers.join(';'), ...csvRows].join('\\r\\n');\n\n return csv;\n}"],"mappings":";;;;AAmCA,yBACE,UACA,YACW;CAGX,MAAM,aAAa,IAAI,IAAI,SAAS,QAAQ,KAAI,MAAK,CAAC,YAAY,GAAG,UAAgC;AACrG,YAAW,IAAI,QAAW,EAAE,QAAQ,CAAC;EAAE,OAAO,SAAS,SAAS;EAAO,KAAK,SAAS,SAAS;;CAG9F,MAAM,6BAAa,IAAI;AACvB,YAAW,SAAS,QAAQ,OAAO;EACjC,MAAM,QAAQ,OAAO,OAClB,KAAI,MAAK;GAER,MAAM,QAAQ,OAAO,IAAI,EAAE;GAC3B,MAAM,MAAQ,OAAO,IAAI,EAAE;GAC3B,MAAMA,UAAQ,IAAI;AAClB,UAAO,MAAM,SAAS,MAAM;AAC1B,YAAM,KAAK,MAAM;AACjB,UAAM,IAAI,GAAG;;AAEf,UAAOA;KAER,OACA,KAAK;AAER,aAAW,IAAI,IAAI;;CAIrB,MAAM,eAAe,IAAI,IAAI,SAAS,UAAU,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAGnF,MAAM,YAAY,IAAI,IAAI,SAAS,OAAO,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAG7E,MAAM,cAAc,IAAI,IAAI,SAAS,SAAS,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAGjF,MAAM,aAAa,IAAI,IAAI,SAAS,QAAQ,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAG/E,MAAM,SAAS,SAAS,OACrB,KAAI,UAAS;AAEZ,MAAI,MAAM,OAAQ;AAClB,MAAI,CAAC,MAAM,SAAS,CAAC,MAAM,IAAK;EAGhC,MAAM,SAAS,MAAM,SAAS,WAAW,IAAI,YAAY,MAAM,QAAQ,YAAY;AACnF,MAAI,CAAC,OAAQ;EAEb,MAAM,QAAQ,OAAO,IAAI,MAAM;EAC/B,MAAM,MAAQ,OAAO,IAAI,MAAM;EAE/B,MAAM,SAAS,MAAM,UAAU,OAAO,UAAU,SAAS,SAAS;EAClE,MAAM,WAAW,SAAS,YAAY,QAAQ,WAAW;EACzD,MAAM,UAAU,WAAW,IAAI;EAE/B,MAAM,aAAa,MAAM,eAA+B,IAAI,KAAI,MAAM,IAAI,aAAa,IAAI,YAAY,GAAM,YAAY,MAAM,QAAQ,MAAkC,CAAC,CAAC;EAC3K,MAAM,YAAa,MAAM,YAAY,OAAO,YAAY,IAAI,KAAI,MAAU,YAAa,IAAI,YAAY,EAAE,IAAI,WAAkB,QAAQ,MAAkC,CAAC,CAAC;EAC3K,MAAM,UAAa,MAAM,UAAY,OAAO,UAAY,IAAI,KAAI,MAAU,UAAa,IAAI,YAAY,EAAE,IAAI,WAAkB,QAAQ,MAAkC,CAAC,CAAC;EAE3K,MAAMC,MAAgB;GACpB,IAAY,YAAY,OAAO;GAC/B,YAAY,MAAM,KAAK;GACvB,SAAY,OAAO;GACnB,OAAY,OAAO;GACnB,OAAY,YAAY;GACxB,WAAY,MAAM,OAAO;GACzB,QAAY,IAAI,KAAK,OAAO;GAC5B,SAAY,OAAO;GACnB,QAAY;GACZ,QAAY,UAAU,KAAI,MAAK,EAAE,KAAa,KAAK;GACnD,MAAY,UAAU,KAAI,MAAK,EAAE,aAAa,KAAK;GACnD,WAAY,SAAU,KAAI,MAAK,EAAE,KAAa,KAAK;GACnD,SAAY,SAAU,KAAI,MAAK,EAAE,aAAa,KAAK;GACnD,SAAY,OAAU,KAAI,MAAK,EAAE,KAAa,KAAK;GACnD,OAAY,OAAU,KAAI,MAAK,EAAE,aAAa,KAAK;;AAErD,SAAO;IAER,QAAO,MAAK,KAAK;AAGpB,QAAO,MAAM;;AAGf,SAAS,MAAO,QAA4B;CAE1C,MAAM,UAAU;EACd;EAAM;EAAc;EAAW;EAAS;EACxC;EAAa;EAAU;EAAW;EAAU;EAC5C;EAAa;EAAW;EAAW;EAAS;;CAI9C,MAAM,UAAU,OAAO,KAAI,UACzB,QAAQ,KAAI,WAAU;EACpB,MAAM,QAAQ,MAAM;AAEpB,MAAI,SAAS,KAAM,QAAO;EAE1B,MAAM,cAAc,MAAM;AAE1B,MAAI,YAAY,SAAS,QAAQ,YAAY,SAAS,SAAQ,YAAY,SAAS,SAAS,YAAY,SAAS,MAC/G,QAAO,IAAI,YAAY,QAAQ,MAAM,QAAM;AAE7C,SAAO;IACN,KAAK;CAIV,MAAM,MAAM,CAAC,QAAQ,KAAK,MAAM,GAAG,SAAS,KAAK;AAEjD,QAAO"}
@@ -1,13 +1,64 @@
1
- import { Types as Types$2 } from "../core/v2/types/index.js";
2
- import { Types as Types$1 } from "./v2/types/index.js";
3
- import { Map as Map$1 } from "./v2/index.js";
1
+ import { Types as Types$2 } from "../core/types/index.js";
4
2
  import { Types } from "./v1/types/index.js";
5
3
  import { Map } from "./v1/index.js";
4
+ import { Types as Types$1 } from "./v2/types/index.js";
5
+ import { Map as Map$1 } from "./v2/index.js";
6
6
 
7
7
  //#region src/Excel/index.d.ts
8
8
  declare class ExcelMap {
9
9
  static from: {
10
- schedules: (source: Types$1.Source) => Types$2.division;
10
+ schedules: (source: Types$1.Source) => {
11
+ settings: {
12
+ discretization: number;
13
+ numDays: number;
14
+ dayStart: string;
15
+ dayEnd: string;
16
+ };
17
+ locations: (Types$2.serialized.location & {
18
+ id: string;
19
+ } & {
20
+ __raw: Types$1.Location;
21
+ })[];
22
+ teachers: (Types$2.serialized.teacher & {
23
+ id: string;
24
+ } & {
25
+ __raw: Types$1.Teacher;
26
+ })[];
27
+ persons: (Types$2.serialized.person & {
28
+ id: string;
29
+ } & {
30
+ __raw: Types$1.Person;
31
+ })[];
32
+ groups: (Types$2.serialized.group & {
33
+ id: string;
34
+ } & {
35
+ __raw: Types$1.Group;
36
+ })[];
37
+ courses: (Types$2.serialized.course & {
38
+ id: string;
39
+ } & {
40
+ __raw: Types$1.Course;
41
+ })[];
42
+ events: (Types$2.serialized.event & {
43
+ id: string;
44
+ } & {
45
+ __raw?: Types$1.Course;
46
+ })[];
47
+ overlapGroups: (Types$2.serialized.overlapGroup & {
48
+ id: string;
49
+ })[];
50
+ syllabuses: (Types$2.serialized.syllabus & {
51
+ id: string;
52
+ } & {
53
+ __raw?: Types$1.Syllabus;
54
+ })[];
55
+ meta: {
56
+ warnings?: {
57
+ code: Types$1.ErrorCode;
58
+ context?: unknown;
59
+ }[];
60
+ };
61
+ };
11
62
  };
12
63
  static V1: typeof Map;
13
64
  static V2: typeof Map$1;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["V2Map","V1Map"],"sources":["../../src/Excel/index.ts"],"sourcesContent":["import { Map as V1Map } from './v1';\nimport { Map as V2Map } from './v2';\n\nexport class ExcelMap {\n // static to = V1Map.to;\n static from = V2Map.from;\n\n static V1 = V1Map;\n static V2 = V2Map;\n}\n\nexport type { Types as ExcelV1Types } from './v1';\nexport type { Types as ExcelV2Types } from './v2';"],"mappings":";;;;AAGA,IAAa,WAAb,MAAsB;CAEpB,OAAO,OAAOA,MAAM;CAEpB,OAAO,KAAOC;CACd,OAAO,KAAOD"}
1
+ {"version":3,"file":"index.js","names":["V2Map","V1Map"],"sources":["../../src/Excel/index.ts"],"sourcesContent":["import { Map as V1Map } from './v1';\nimport { Map as V2Map } from './v2';\n\nexport class ExcelMap {\n // static to = V1Map.to;\n static from = V2Map.from;\n\n static V1 = V1Map;\n static V2 = V2Map;\n}\n\nexport type { Types as ExcelV1Types } from './v1';\nexport type { Types as ExcelV2Types } from './v2';"],"mappings":";;;;AAGA,IAAa,WAAb,MAAsB;CAEpB,OAAO,OAAOA,MAAM;CAEpB,OAAO,KAAOC;CACd,OAAO,KAAOD"}
@@ -2,11 +2,11 @@ import { isNumber, isString, pick } from "lodash-es";
2
2
  import { nanoid } from "nanoid";
3
3
 
4
4
  //#region src/Excel/v1/from/index.ts
5
- function generateId(map$1) {
5
+ function generateId(map) {
6
6
  let id;
7
7
  do
8
8
  id = nanoid();
9
- while (map$1.has(id));
9
+ while (map.has(id));
10
10
  return id;
11
11
  }
12
12
  function toMultipleOf5(val) {
@@ -68,7 +68,7 @@ function _schedules(source) {
68
68
  warnings.push(`The number of days "${numDays}" is not 5 or 7.`);
69
69
  settings.numDays = 5;
70
70
  }
71
- } catch (e) {
71
+ } catch {
72
72
  warnings.push(`Could not parse the number of days "${numDays}" for the settings.`);
73
73
  }
74
74
  }
@@ -174,13 +174,13 @@ function _schedules(source) {
174
174
  let totalHours = void 0;
175
175
  if (x.total_hours) try {
176
176
  totalHours = toInteger(x.total_hours);
177
- } catch (e) {
177
+ } catch {
178
178
  warnings.push(`The total hours "${x.total_hours}" for the course "${displayName}" is not an integer.`);
179
179
  }
180
180
  let minutesPerWeek = void 0;
181
181
  if (x.minutes_per_week) try {
182
182
  minutesPerWeek = toMultipleOf5(x.minutes_per_week);
183
- } catch (e) {
183
+ } catch {
184
184
  warnings.push(`The minutes per week "${x.minutes_per_week}" for the course "${displayName}" is not an integer.`);
185
185
  }
186
186
  if (x.lesson_durations) try {
@@ -190,7 +190,7 @@ function _schedules(source) {
190
190
  durations = durations.map((x$1) => {
191
191
  try {
192
192
  return toMultipleOf5(x$1);
193
- } catch (e) {
193
+ } catch {
194
194
  warnings.push(`The lesson duration "${x$1}" for the course "${displayName}" is not an integer.`);
195
195
  return void 0;
196
196
  }
@@ -210,7 +210,7 @@ function _schedules(source) {
210
210
  };
211
211
  eventsIdMap.set(id, event);
212
212
  });
213
- } catch (e) {
213
+ } catch {
214
214
  warnings.push(`Could not parse the lesson durations "${x.lesson_durations}" for the course "${displayName}".`);
215
215
  }
216
216
  const locationReferences = [];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["id: string","map","warnings: string[]","locationKeys: UnionToAllPossibleTuples<keyof Types.Location>","teacherKeys: UnionToAllPossibleTuples<keyof Types.Teacher>","studentKeys: UnionToAllPossibleTuples<keyof Types.Student>","groupKeys: UnionToAllPossibleTuples<keyof Types.Group>","courseKeys: UnionToAllPossibleTuples<keyof Types.Course>","settings: CoreTypes.divisionSettings","location: C_Location","group: C_Group","teacher: C_Teacher","groupReference: string | undefined","sex: C_Person['sex']","person: C_Person","totalHours: number | undefined","minutesPerWeek: number | undefined","durations: number[]","x","event: C_Event","locationReferences: { groupIndex: number; to: string }[]","groupReferences: { to: string }[]","teacherReferences: { to: string }[]","course: C_Course"],"sources":["../../../../src/Excel/v1/from/index.ts"],"sourcesContent":["import { pick, isString, isNumber } from 'lodash-es';\nimport { nanoid } from 'nanoid';\n\nimport { Types as CoreTypes, FromInterface } from '../../../core/types';\nimport { Types,\n UnionToAllPossibleTuples } from '../types';\n\n\ntype C_Location = CoreTypes.location & { id: string };\ntype C_Group = CoreTypes.group & { id: string };\ntype C_Teacher = CoreTypes.teacher & { id: string };\ntype C_Course = CoreTypes.course & { id: string };\ntype C_Person = CoreTypes.person & { id: string };\ntype C_Event = CoreTypes.event & { id: string };\n\n\nfunction generateId (map: Map<string, any>) {\n // generate a unique id\n let id: string;\n do {\n id = nanoid();\n } while (map.has(id));\n\n return id;\n}\n\nfunction toMultipleOf5 (val: number | string) {\n const num = isString(val) ? parseInt(val) : val;\n\n // throw error if nan\n if (isNaN(num)) throw new Error(`toMultipleOf5: ${val} is not a number`);\n\n return Math.floor(num / 5) * 5;\n}\n\nfunction toInteger (val: number | string) {\n const num = isString(val) ? parseInt(val) : val;\n\n // throw error if nan\n if (isNaN(num)) throw new Error(`toInteger: ${val} is not a number`);\n\n return num;\n}\n\nfunction toString<T extends string | number | undefined, R = T extends undefined ? (string | undefined) : string> (x: T): R {\n if (x == undefined) return undefined as R;\n if (typeof x == 'string' && !x.length) return undefined as R;\n if (isNumber(x)) return x.toString() as R;\n return x.trim() as R;\n}\n\n\nfunction _schedules (\n source: Types.Source\n): CoreTypes.division {\n // gather all import related warnings/errors\n const warnings: string[] = [];\n // let errors: string[] = [];\n\n\n ////\n //// filter to only the fields we need and remove empty rows\n ////\n const locationKeys: UnionToAllPossibleTuples<keyof Types.Location> = ['name'];\n const teacherKeys: UnionToAllPossibleTuples<keyof Types.Teacher> = ['name'];\n const studentKeys: UnionToAllPossibleTuples<keyof Types.Student> = ['first_name', 'last_name', 'SSN', 'sex', 'group'];\n const groupKeys: UnionToAllPossibleTuples<keyof Types.Group> = ['name'];\n const courseKeys: UnionToAllPossibleTuples<keyof Types.Course> = ['name', 'subject', 'groups', 'teachers', 'locations', 'total_hours', 'minutes_per_week', 'lesson_durations'];\n source.locations = source.locations?.map(x => pick(x, locationKeys)).filter(x => Object.values(x).some(y => y !== undefined));\n source.teachers = source.teachers ?.map(x => pick(x, teacherKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n source.students = source.students ?.map(x => pick(x, studentKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n source.groups = source.groups ?.map(x => pick(x, groupKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n source.courses = source.courses ?.map(x => pick(x, courseKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n\n\n ////\n //// settings\n ////\n const settings: CoreTypes.divisionSettings = {\n discretization: 5,\n numDays: 5,\n dayStart: '08:00',\n dayEnd: '17:00',\n };\n if (!source.settings) {\n warnings.push('Could not find the settings tab.');\n }\n if (source.settings?.[0]?.number_of_days) {\n const numDays = source.settings?.[0]?.number_of_days;\n try {\n if (isNumber(numDays)) settings.numDays = numDays;\n else if (isString(numDays)) settings.numDays = parseInt(numDays);\n\n // must be 5 or 7\n if (settings.numDays !== 5 && settings.numDays !== 7) {\n warnings.push(`The number of days \"${numDays}\" is not 5 or 7.`);\n settings.numDays = 5;\n }\n } catch (e) {\n warnings.push(`Could not parse the number of days \"${numDays}\" for the settings.`);\n }\n }\n\n\n ////\n //// locations\n ////\n const locationsIdMap = new Map<string, C_Location>();\n const locationsNameMap = new Map<string, C_Location>();\n if (!source.locations) {\n warnings.push('Could not find the locations tab.');\n }\n source.locations?.forEach(x => {\n const displayName = toString(x.name);\n if (!displayName) {\n warnings.push('Skipping a location without a name.');\n return;\n }\n\n if (locationsNameMap.has(displayName.toLowerCase())) {\n warnings.push(`The location \"${displayName}\" is defined multiple times.`);\n return;\n }\n\n const id = generateId(locationsIdMap);\n const location: C_Location = { id, displayName };\n locationsNameMap.set(displayName.toLowerCase(), location);\n locationsIdMap .set(id, location);\n });\n\n\n ////\n //// groups\n ////\n const groupsIdMap = new Map<string, C_Group>();\n const groupsNameMap = new Map<string, C_Group>();\n if (!source.groups) {\n warnings.push('Could not find the groups tab.');\n }\n source.groups?.forEach(x => {\n const displayName = toString(x.name);\n if (!displayName) {\n warnings.push('Skipping a group without a name.');\n return;\n }\n\n if (groupsNameMap.has(displayName.toLowerCase())) {\n warnings.push(`The group \"${displayName}\" is defined multiple times.`);\n return;\n }\n\n const id = generateId(groupsIdMap);\n const group: C_Group = { id, displayName, species: 'class' };\n groupsNameMap.set(displayName.toLowerCase(), group);\n groupsIdMap .set(id, group);\n });\n\n\n ////\n //// teachers\n ////\n const teachersIdMap = new Map<string, C_Teacher>();\n const teachersNameMap = new Map<string, C_Teacher>();\n if (!source.teachers) {\n warnings.push('Could not find the teachers tab.');\n }\n source.teachers?.forEach(x => {\n const displayName = toString(x.name);\n if (!displayName) {\n warnings.push('Skipping a teacher without a name.');\n return;\n }\n\n if (teachersNameMap.has(displayName.toLowerCase())) {\n warnings.push(`The teacher \"${displayName}\" is defined multiple times.`);\n return;\n }\n\n const id = generateId(teachersIdMap);\n const teacher: C_Teacher = { id, displayName };\n teachersNameMap.set(displayName.toLowerCase(), teacher);\n teachersIdMap .set(id, teacher);\n });\n\n\n ////\n //// students\n ////\n const personsIdMap = new Map<string, C_Person>();\n if (!source.students) {\n warnings.push('Could not find the students tab.');\n }\n source.students?.forEach(x => {\n const firstName = toString(x.first_name);\n const lastName = toString(x.last_name );\n const SSN = toString(x.SSN );\n\n let groupReference: string | undefined = undefined;\n if (x.group) {\n const key = toString(x.group).toLowerCase();\n const ref = groupsNameMap.get(key); /// to lower case only!\n if (!ref) {\n warnings.push(`The group ${x.group} referenced from the student \"${firstName} ${lastName}\" does not exist.`);\n } else {\n groupReference = ref.id;\n }\n }\n\n let sex: C_Person['sex'];\n if (x.sex) {\n if (isString(x.sex) && x.sex.toLowerCase() == 'man') sex = 'Man';\n else if (isString(x.sex) && x.sex.toLowerCase() == 'woman') sex = 'Woman';\n else {\n warnings.push(`Unknown sex \"${ x.sex }\" for the student \"${firstName} ${lastName}\".`);\n }\n }\n\n const id = generateId(personsIdMap);\n const person: C_Person = { id, firstName, lastName, sex, group: groupReference, ...SSN && { SSN: { value: SSN } } };\n personsIdMap.set(id, person);\n });\n\n\n ////\n //// courses\n ////\n const coursesIdMap = new Map<string, C_Course>();\n const eventsIdMap = new Map<string, C_Event>();\n if (!source.courses) {\n warnings.push('Could not find the courses tab.');\n }\n source.courses?.forEach(x => {\n const courseId = generateId(coursesIdMap);\n const displayName = toString(x.name)?.trim();\n const subject = toString(x.subject);\n\n // try to parse the total hours as an integer\n let totalHours: number | undefined = undefined;\n if (x.total_hours) {\n try {\n totalHours = toInteger(x.total_hours);\n } catch (e) {\n warnings.push(`The total hours \"${x.total_hours}\" for the course \"${displayName}\" is not an integer.`);\n }\n }\n\n // try to parse the minutes per week as an multiple of 5\n let minutesPerWeek: number | undefined = undefined;\n if (x.minutes_per_week) {\n try {\n minutesPerWeek = toMultipleOf5(x.minutes_per_week);\n } catch (e) {\n warnings.push(`The minutes per week \"${x.minutes_per_week}\" for the course \"${displayName}\" is not an integer.`);\n }\n }\n\n // try to parse the lesson durations as an array of integers from which we will generate events\n if (x.lesson_durations) {\n try {\n let durations: number[] = [];\n if (isNumber(x.lesson_durations)) durations = [x.lesson_durations];\n else if (isString(x.lesson_durations)) durations = x.lesson_durations.split(',').map(x => x.trim())\n .map(x => parseInt(x));\n\n // truncate to multiple of 5 and filter out zero duration events\n durations = durations\n .map(x => {\n try {\n return toMultipleOf5(x);\n } catch (e) {\n warnings.push(`The lesson duration \"${x}\" for the course \"${displayName}\" is not an integer.`);\n return undefined;\n }\n })\n .filter((x): x is number => {\n if (!x) {\n warnings.push(`The lesson duration for the course \"${displayName}\" becomes 0 when truncated to the nearest multiple of 5.`);\n return false;\n }\n return true;\n });\n\n durations.forEach(x => {\n const id = generateId(eventsIdMap);\n const event: C_Event = { id, course: courseId, preferredDuration: x };\n eventsIdMap.set(id, event);\n });\n } catch (e) {\n warnings.push(`Could not parse the lesson durations \"${x.lesson_durations}\" for the course \"${displayName}\".`);\n }\n }\n\n // locations\n const locationReferences: { groupIndex: number; to: string }[] = [];\n\n toString(x.locations)?.split('+')\n .flatMap((x, i) => x.split(',').map(x => [i, x.trim().toLowerCase()] as [number, string]))\n .forEach(([i, x]) => {\n const ref = locationsNameMap.get(x);\n if (!ref) {\n warnings.push(`The location \"${x}\" referenced from the course \"${displayName}\" does not exist.`);\n return;\n }\n\n if (locationReferences.some(y => y.to == ref.id)) {\n warnings.push(`The location \"${x}\" is referenced multiple times from the course \"${displayName}\".`);\n return;\n }\n\n locationReferences.push({ groupIndex: i, to: ref.id });\n });\n\n // groups\n const groupReferences: { to: string }[] = [];\n toString(x.groups)?.split(',')\n .map(x => x.trim().toLowerCase())\n .forEach(x => {\n const ref = groupsNameMap.get(x);\n if (!ref) {\n warnings.push(`The group \"${x}\" referenced from the course \"${displayName}\" does not exist.`);\n return;\n }\n\n if (groupReferences.some(y => y.to == ref.id)) {\n warnings.push(`The group \"${x}\" is referenced multiple times from the course \"${displayName}\".`);\n return;\n }\n\n groupReferences.push({ to: ref.id });\n });\n\n // teachers\n const teacherReferences: { to: string }[] = [];\n toString(x.teachers)?.split(',')\n .map(x => x.trim().toLowerCase())\n .forEach(x => {\n const ref = teachersNameMap.get(x);\n if (!ref) {\n warnings.push(`The teacher \"${x}\" referenced from the course \"${displayName}\" does not exist.`);\n return;\n }\n\n if (teacherReferences.some(y => y.to == ref.id)) {\n warnings.push(`The teacher \"${x}\" is referenced multiple times from the course \"${displayName}\".`);\n return;\n }\n\n teacherReferences.push({ to: ref.id });\n });\n\n const course: C_Course = {\n id: courseId,\n groups: groupReferences,\n teachers: teacherReferences,\n locations: locationReferences.map(x => ({ groupIndex: x.groupIndex, locations: [x.to] })),\n expectedTotalHours: totalHours,\n displayName, subject, minutesPerWeek,\n };\n coursesIdMap.set(courseId, course);\n });\n\n\n ////\n //// return\n ////\n return {\n settings,\n locations: [...locationsIdMap.values()],\n teachers: [...teachersIdMap .values()],\n persons: [...personsIdMap .values()],\n groups: [...groupsIdMap .values()],\n courses: [...coursesIdMap .values()],\n events: [...eventsIdMap .values()],\n meta: {\n // ...errors .length && { errors: errors },\n ...warnings.length && { warnings: warnings }\n }\n };\n}\n\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["id: string","warnings: string[]","locationKeys: UnionToAllPossibleTuples<keyof Types.Location>","teacherKeys: UnionToAllPossibleTuples<keyof Types.Teacher>","studentKeys: UnionToAllPossibleTuples<keyof Types.Student>","groupKeys: UnionToAllPossibleTuples<keyof Types.Group>","courseKeys: UnionToAllPossibleTuples<keyof Types.Course>","settings: C_Settings","location: C_Location","group: C_Group","teacher: C_Teacher","groupReference: string | undefined","sex: C_Person['sex']","person: C_Person","totalHours: number | undefined","minutesPerWeek: number | undefined","durations: number[]","x","event: C_Event","locationReferences: { groupIndex: number; to: string }[]","groupReferences: { to: string }[]","teacherReferences: { to: string }[]","course: C_Course"],"sources":["../../../../src/Excel/v1/from/index.ts"],"sourcesContent":["import { isString, pick, isNumber } from 'lodash-es';\nimport { nanoid } from 'nanoid';\nimport type { CoreTypes } from '../../../core';\nimport type { Types, UnionToAllPossibleTuples } from '../types';\nimport type { FromInterface } from '../../../common/types';\n\n\ntype C_Settings = Pick<CoreTypes.serialized.divisionSettings, 'discretization' | 'numDays' | 'dayStart' | 'dayEnd'>;\ntype C_Location = CoreTypes.serialized.location & { id: string };\ntype C_Group = CoreTypes.serialized.group & { id: string };\ntype C_Teacher = CoreTypes.serialized.teacher & { id: string };\ntype C_Course = CoreTypes.serialized.course & { id: string };\ntype C_Person = CoreTypes.serialized.person & { id: string };\ntype C_Event = CoreTypes.serialized.event & { id: string };\n\ntype Out = {\n settings: C_Settings;\n locations: C_Location[];\n teachers: C_Teacher[];\n persons: C_Person[];\n groups: C_Group[];\n courses: C_Course[];\n events: C_Event[];\n meta?: {\n warnings?: string[];\n // errors?: string[]; // TODO: implement error handling\n };\n};\n\nfunction generateId<T> (map: Map<string, T>) {\n // generate a unique id\n let id: string;\n do {\n id = nanoid();\n } while (map.has(id));\n\n return id;\n}\n\nfunction toMultipleOf5 (val: number | string) {\n const num = isString(val) ? parseInt(val) : val;\n\n // throw error if nan\n if (isNaN(num)) throw new Error(`toMultipleOf5: ${val} is not a number`);\n\n return Math.floor(num / 5) * 5;\n}\n\nfunction toInteger (val: number | string) {\n const num = isString(val) ? parseInt(val) : val;\n\n // throw error if nan\n if (isNaN(num)) throw new Error(`toInteger: ${val} is not a number`);\n\n return num;\n}\n\nfunction toString<T extends string | number | undefined, R = T extends undefined ? (string | undefined) : string> (x: T): R {\n if (x == undefined) return undefined as R;\n if (typeof x == 'string' && !x.length) return undefined as R;\n if (isNumber(x)) return x.toString() as R;\n return x.trim() as R;\n}\n\n\nfunction _schedules (\n source: Types.Source\n): Out {\n // gather all import related warnings/errors\n const warnings: string[] = [];\n // let errors: string[] = [];\n\n\n ////\n //// filter to only the fields we need and remove empty rows\n ////\n const locationKeys: UnionToAllPossibleTuples<keyof Types.Location> = ['name'];\n const teacherKeys: UnionToAllPossibleTuples<keyof Types.Teacher> = ['name'];\n const studentKeys: UnionToAllPossibleTuples<keyof Types.Student> = ['first_name', 'last_name', 'SSN', 'sex', 'group'];\n const groupKeys: UnionToAllPossibleTuples<keyof Types.Group> = ['name'];\n const courseKeys: UnionToAllPossibleTuples<keyof Types.Course> = ['name', 'subject', 'groups', 'teachers', 'locations', 'total_hours', 'minutes_per_week', 'lesson_durations'];\n source.locations = source.locations?.map(x => pick(x, locationKeys)).filter(x => Object.values(x).some(y => y !== undefined));\n source.teachers = source.teachers ?.map(x => pick(x, teacherKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n source.students = source.students ?.map(x => pick(x, studentKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n source.groups = source.groups ?.map(x => pick(x, groupKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n source.courses = source.courses ?.map(x => pick(x, courseKeys )).filter(x => Object.values(x).some(y => y !== undefined));\n\n\n ////\n //// settings\n ////\n const settings: C_Settings = {\n discretization: 5,\n numDays: 5,\n dayStart: '08:00',\n dayEnd: '17:00',\n };\n if (!source.settings) {\n warnings.push('Could not find the settings tab.');\n }\n if (source.settings?.[0]?.number_of_days) {\n const numDays = source.settings?.[0]?.number_of_days;\n try {\n if (isNumber(numDays)) settings.numDays = numDays;\n else if (isString(numDays)) settings.numDays = parseInt(numDays);\n\n // must be 5 or 7\n if (settings.numDays !== 5 && settings.numDays !== 7) {\n warnings.push(`The number of days \"${numDays}\" is not 5 or 7.`);\n settings.numDays = 5;\n }\n } catch {\n warnings.push(`Could not parse the number of days \"${numDays}\" for the settings.`);\n }\n }\n\n\n ////\n //// locations\n ////\n const locationsIdMap = new Map<string, C_Location>();\n const locationsNameMap = new Map<string, C_Location>();\n if (!source.locations) {\n warnings.push('Could not find the locations tab.');\n }\n source.locations?.forEach(x => {\n const displayName = toString(x.name);\n if (!displayName) {\n warnings.push('Skipping a location without a name.');\n return;\n }\n\n if (locationsNameMap.has(displayName.toLowerCase())) {\n warnings.push(`The location \"${displayName}\" is defined multiple times.`);\n return;\n }\n\n const id = generateId(locationsIdMap);\n const location: C_Location = { id, displayName };\n locationsNameMap.set(displayName.toLowerCase(), location);\n locationsIdMap .set(id, location);\n });\n\n\n ////\n //// groups\n ////\n const groupsIdMap = new Map<string, C_Group>();\n const groupsNameMap = new Map<string, C_Group>();\n if (!source.groups) {\n warnings.push('Could not find the groups tab.');\n }\n source.groups?.forEach(x => {\n const displayName = toString(x.name);\n if (!displayName) {\n warnings.push('Skipping a group without a name.');\n return;\n }\n\n if (groupsNameMap.has(displayName.toLowerCase())) {\n warnings.push(`The group \"${displayName}\" is defined multiple times.`);\n return;\n }\n\n const id = generateId(groupsIdMap);\n const group: C_Group = { id, displayName, species: 'class' };\n groupsNameMap.set(displayName.toLowerCase(), group);\n groupsIdMap .set(id, group);\n });\n\n\n ////\n //// teachers\n ////\n const teachersIdMap = new Map<string, C_Teacher>();\n const teachersNameMap = new Map<string, C_Teacher>();\n if (!source.teachers) {\n warnings.push('Could not find the teachers tab.');\n }\n source.teachers?.forEach(x => {\n const displayName = toString(x.name);\n if (!displayName) {\n warnings.push('Skipping a teacher without a name.');\n return;\n }\n\n if (teachersNameMap.has(displayName.toLowerCase())) {\n warnings.push(`The teacher \"${displayName}\" is defined multiple times.`);\n return;\n }\n\n const id = generateId(teachersIdMap);\n const teacher: C_Teacher = { id, displayName };\n teachersNameMap.set(displayName.toLowerCase(), teacher);\n teachersIdMap .set(id, teacher);\n });\n\n\n ////\n //// students\n ////\n const personsIdMap = new Map<string, C_Person>();\n if (!source.students) {\n warnings.push('Could not find the students tab.');\n }\n source.students?.forEach(x => {\n const firstName = toString(x.first_name);\n const lastName = toString(x.last_name );\n const SSN = toString(x.SSN );\n\n let groupReference: string | undefined = undefined;\n if (x.group) {\n const key = toString(x.group).toLowerCase();\n const ref = groupsNameMap.get(key); /// to lower case only!\n if (!ref) {\n warnings.push(`The group ${x.group} referenced from the student \"${firstName} ${lastName}\" does not exist.`);\n } else {\n groupReference = ref.id;\n }\n }\n\n let sex: C_Person['sex'];\n if (x.sex) {\n if (isString(x.sex) && x.sex.toLowerCase() == 'man') sex = 'Man';\n else if (isString(x.sex) && x.sex.toLowerCase() == 'woman') sex = 'Woman';\n else {\n warnings.push(`Unknown sex \"${ x.sex }\" for the student \"${firstName} ${lastName}\".`);\n }\n }\n\n const id = generateId(personsIdMap);\n const person: C_Person = { id, firstName, lastName, sex, group: groupReference, ...SSN && { SSN: { value: SSN } } };\n personsIdMap.set(id, person);\n });\n\n\n ////\n //// courses\n ////\n const coursesIdMap = new Map<string, C_Course>();\n const eventsIdMap = new Map<string, C_Event>();\n if (!source.courses) {\n warnings.push('Could not find the courses tab.');\n }\n source.courses?.forEach(x => {\n const courseId = generateId(coursesIdMap);\n const displayName = toString(x.name)?.trim();\n const subject = toString(x.subject);\n\n // try to parse the total hours as an integer\n let totalHours: number | undefined = undefined;\n if (x.total_hours) {\n try {\n totalHours = toInteger(x.total_hours);\n } catch {\n warnings.push(`The total hours \"${x.total_hours}\" for the course \"${displayName}\" is not an integer.`);\n }\n }\n\n // try to parse the minutes per week as an multiple of 5\n let minutesPerWeek: number | undefined = undefined;\n if (x.minutes_per_week) {\n try {\n minutesPerWeek = toMultipleOf5(x.minutes_per_week);\n } catch {\n warnings.push(`The minutes per week \"${x.minutes_per_week}\" for the course \"${displayName}\" is not an integer.`);\n }\n }\n\n // try to parse the lesson durations as an array of integers from which we will generate events\n if (x.lesson_durations) {\n try {\n let durations: number[] = [];\n if (isNumber(x.lesson_durations)) durations = [x.lesson_durations];\n else if (isString(x.lesson_durations)) durations = x.lesson_durations.split(',').map(x => x.trim())\n .map(x => parseInt(x));\n\n // truncate to multiple of 5 and filter out zero duration events\n durations = durations\n .map(x => {\n try {\n return toMultipleOf5(x);\n } catch {\n warnings.push(`The lesson duration \"${x}\" for the course \"${displayName}\" is not an integer.`);\n return undefined;\n }\n })\n .filter((x): x is number => {\n if (!x) {\n warnings.push(`The lesson duration for the course \"${displayName}\" becomes 0 when truncated to the nearest multiple of 5.`);\n return false;\n }\n return true;\n });\n\n durations.forEach(x => {\n const id = generateId(eventsIdMap);\n const event: C_Event = { id, course: courseId, preferredDuration: x };\n eventsIdMap.set(id, event);\n });\n } catch {\n warnings.push(`Could not parse the lesson durations \"${x.lesson_durations}\" for the course \"${displayName}\".`);\n }\n }\n\n // locations\n const locationReferences: { groupIndex: number; to: string }[] = [];\n\n toString(x.locations)?.split('+')\n .flatMap((x, i) => x.split(',').map(x => [i, x.trim().toLowerCase()] as [number, string]))\n .forEach(([i, x]) => {\n const ref = locationsNameMap.get(x);\n if (!ref) {\n warnings.push(`The location \"${x}\" referenced from the course \"${displayName}\" does not exist.`);\n return;\n }\n\n if (locationReferences.some(y => y.to == ref.id)) {\n warnings.push(`The location \"${x}\" is referenced multiple times from the course \"${displayName}\".`);\n return;\n }\n\n locationReferences.push({ groupIndex: i, to: ref.id });\n });\n\n // groups\n const groupReferences: { to: string }[] = [];\n toString(x.groups)?.split(',')\n .map(x => x.trim().toLowerCase())\n .forEach(x => {\n const ref = groupsNameMap.get(x);\n if (!ref) {\n warnings.push(`The group \"${x}\" referenced from the course \"${displayName}\" does not exist.`);\n return;\n }\n\n if (groupReferences.some(y => y.to == ref.id)) {\n warnings.push(`The group \"${x}\" is referenced multiple times from the course \"${displayName}\".`);\n return;\n }\n\n groupReferences.push({ to: ref.id });\n });\n\n // teachers\n const teacherReferences: { to: string }[] = [];\n toString(x.teachers)?.split(',')\n .map(x => x.trim().toLowerCase())\n .forEach(x => {\n const ref = teachersNameMap.get(x);\n if (!ref) {\n warnings.push(`The teacher \"${x}\" referenced from the course \"${displayName}\" does not exist.`);\n return;\n }\n\n if (teacherReferences.some(y => y.to == ref.id)) {\n warnings.push(`The teacher \"${x}\" is referenced multiple times from the course \"${displayName}\".`);\n return;\n }\n\n teacherReferences.push({ to: ref.id });\n });\n\n const course: C_Course = {\n id: courseId,\n groups: groupReferences,\n teachers: teacherReferences,\n locations: locationReferences.map(x => ({ groupIndex: x.groupIndex, locations: [x.to] })),\n expectedTotalHours: totalHours,\n displayName, subject, minutesPerWeek,\n };\n coursesIdMap.set(courseId, course);\n });\n\n\n ////\n //// return\n ////\n return {\n settings,\n locations: [...locationsIdMap.values()],\n teachers: [...teachersIdMap .values()],\n persons: [...personsIdMap .values()],\n groups: [...groupsIdMap .values()],\n courses: [...coursesIdMap .values()],\n events: [...eventsIdMap .values()],\n meta: {\n // ...errors .length && { errors: errors },\n ...warnings.length && { warnings: warnings }\n }\n };\n}\n\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":";;;;AA6BA,SAAS,WAAe,KAAqB;CAE3C,IAAIA;AACJ;AACE,OAAK;QACE,IAAI,IAAI;AAEjB,QAAO;;AAGT,SAAS,cAAe,KAAsB;CAC5C,MAAM,MAAM,SAAS,OAAO,SAAS,OAAO;AAG5C,KAAI,MAAM,KAAM,OAAM,IAAI,MAAM,kBAAkB,IAAI;AAEtD,QAAO,KAAK,MAAM,MAAM,KAAK;;AAG/B,SAAS,UAAW,KAAsB;CACxC,MAAM,MAAM,SAAS,OAAO,SAAS,OAAO;AAG5C,KAAI,MAAM,KAAM,OAAM,IAAI,MAAM,cAAc,IAAI;AAElD,QAAO;;AAGT,SAAS,SAA0G,GAAS;AAC1H,KAAI,KAAK,OAAW,QAAO;AAC3B,KAAI,OAAO,KAAK,YAAY,CAAC,EAAE,OAAQ,QAAO;AAC9C,KAAI,SAAS,GAAI,QAAO,EAAE;AAC1B,QAAO,EAAE;;AAIX,SAAS,WACP,QACK;CAEL,MAAMC,WAAqB;CAO3B,MAAMC,eAA+D,CAAC;CACtE,MAAMC,cAA+D,CAAC;CACtE,MAAMC,cAA+D;EAAC;EAAc;EAAa;EAAO;EAAO;;CAC/G,MAAMC,YAA+D,CAAC;CACtE,MAAMC,aAA+D;EAAC;EAAQ;EAAW;EAAU;EAAY;EAAa;EAAe;EAAoB;;AAC/J,QAAO,YAAY,OAAO,WAAW,KAAI,MAAK,KAAK,GAAG,eAAe,QAAO,MAAK,OAAO,OAAO,GAAG,MAAK,MAAK,MAAM;AAClH,QAAO,WAAY,OAAO,UAAW,KAAI,MAAK,KAAK,GAAG,cAAe,QAAO,MAAK,OAAO,OAAO,GAAG,MAAK,MAAK,MAAM;AAClH,QAAO,WAAY,OAAO,UAAW,KAAI,MAAK,KAAK,GAAG,cAAe,QAAO,MAAK,OAAO,OAAO,GAAG,MAAK,MAAK,MAAM;AAClH,QAAO,SAAY,OAAO,QAAW,KAAI,MAAK,KAAK,GAAG,YAAe,QAAO,MAAK,OAAO,OAAO,GAAG,MAAK,MAAK,MAAM;AAClH,QAAO,UAAY,OAAO,SAAW,KAAI,MAAK,KAAK,GAAG,aAAe,QAAO,MAAK,OAAO,OAAO,GAAG,MAAK,MAAK,MAAM;CAMlH,MAAMC,WAAuB;EAC3B,gBAAgB;EAChB,SAAgB;EAChB,UAAgB;EAChB,QAAgB;;AAElB,KAAI,CAAC,OAAO,SACV,UAAS,KAAK;AAEhB,KAAI,OAAO,WAAW,IAAI,gBAAgB;EACxC,MAAM,UAAU,OAAO,WAAW,IAAI;AACtC,MAAI;AACF,OAAS,SAAS,SAAU,UAAS,UAAU;YACtC,SAAS,SAAU,UAAS,UAAU,SAAS;AAGxD,OAAI,SAAS,YAAY,KAAK,SAAS,YAAY,GAAG;AACpD,aAAS,KAAK,uBAAuB,QAAQ;AAC7C,aAAS,UAAU;;UAEf;AACN,YAAS,KAAK,uCAAuC,QAAQ;;;CAQjE,MAAM,iCAAmB,IAAI;CAC7B,MAAM,mCAAmB,IAAI;AAC7B,KAAI,CAAC,OAAO,UACV,UAAS,KAAK;AAEhB,QAAO,WAAW,SAAQ,MAAK;EAC7B,MAAM,cAAc,SAAS,EAAE;AAC/B,MAAI,CAAC,aAAa;AAChB,YAAS,KAAK;AACd;;AAGF,MAAI,iBAAiB,IAAI,YAAY,gBAAgB;AACnD,YAAS,KAAK,iBAAiB,YAAY;AAC3C;;EAGF,MAAM,KAAK,WAAW;EACtB,MAAMC,WAAuB;GAAE;GAAI;;AACnC,mBAAiB,IAAI,YAAY,eAAe;AAChD,iBAAiB,IAAI,IAA2B;;CAOlD,MAAM,8BAAgB,IAAI;CAC1B,MAAM,gCAAgB,IAAI;AAC1B,KAAI,CAAC,OAAO,OACV,UAAS,KAAK;AAEhB,QAAO,QAAQ,SAAQ,MAAK;EAC1B,MAAM,cAAc,SAAS,EAAE;AAC/B,MAAI,CAAC,aAAa;AAChB,YAAS,KAAK;AACd;;AAGF,MAAI,cAAc,IAAI,YAAY,gBAAgB;AAChD,YAAS,KAAK,cAAc,YAAY;AACxC;;EAGF,MAAM,KAAK,WAAW;EACtB,MAAMC,QAAiB;GAAE;GAAI;GAAa,SAAS;;AACnD,gBAAc,IAAI,YAAY,eAAe;AAC7C,cAAc,IAAI,IAA2B;;CAO/C,MAAM,gCAAkB,IAAI;CAC5B,MAAM,kCAAkB,IAAI;AAC5B,KAAI,CAAC,OAAO,SACV,UAAS,KAAK;AAEhB,QAAO,UAAU,SAAQ,MAAK;EAC5B,MAAM,cAAc,SAAS,EAAE;AAC/B,MAAI,CAAC,aAAa;AAChB,YAAS,KAAK;AACd;;AAGF,MAAI,gBAAgB,IAAI,YAAY,gBAAgB;AAClD,YAAS,KAAK,gBAAgB,YAAY;AAC1C;;EAGF,MAAM,KAAK,WAAW;EACtB,MAAMC,UAAqB;GAAE;GAAI;;AACjC,kBAAgB,IAAI,YAAY,eAAe;AAC/C,gBAAgB,IAAI,IAA2B;;CAOjD,MAAM,+BAAe,IAAI;AACzB,KAAI,CAAC,OAAO,SACV,UAAS,KAAK;AAEhB,QAAO,UAAU,SAAQ,MAAK;EAC5B,MAAM,YAAY,SAAS,EAAE;EAC7B,MAAM,WAAY,SAAS,EAAE;EAC7B,MAAM,MAAY,SAAS,EAAE;EAE7B,IAAIC,iBAAqC;AACzC,MAAI,EAAE,OAAO;GACX,MAAM,MAAM,SAAS,EAAE,OAAO;GAC9B,MAAM,MAAM,cAAc,IAAI;AAC9B,OAAI,CAAC,IACH,UAAS,KAAK,aAAa,EAAE,MAAM,gCAAgC,UAAU,GAAG,SAAS;OAEzF,kBAAiB,IAAI;;EAIzB,IAAIC;AACJ,MAAI,EAAE,IACJ,KAAS,SAAS,EAAE,QAAQ,EAAE,IAAI,iBAAiB,MAAS,OAAM;WACzD,SAAS,EAAE,QAAQ,EAAE,IAAI,iBAAiB,QAAS,OAAM;MAEhE,UAAS,KAAK,gBAAiB,EAAE,IAAK,qBAAqB,UAAU,GAAG,SAAS;EAIrF,MAAM,KAAK,WAAW;EACtB,MAAMC,SAAmB;GAAE;GAAI;GAAW;GAAU;GAAK,OAAO;GAAgB,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO;;AAC1G,eAAa,IAAI,IAAI;;CAOvB,MAAM,+BAAe,IAAI;CACzB,MAAM,8BAAe,IAAI;AACzB,KAAI,CAAC,OAAO,QACV,UAAS,KAAK;AAEhB,QAAO,SAAS,SAAQ,MAAK;EAC3B,MAAM,WAAc,WAAW;EAC/B,MAAM,cAAc,SAAS,EAAE,OAAO;EACtC,MAAM,UAAc,SAAS,EAAE;EAG/B,IAAIC,aAAiC;AACrC,MAAI,EAAE,YACJ,KAAI;AACF,gBAAa,UAAU,EAAE;UACnB;AACN,YAAS,KAAK,oBAAoB,EAAE,YAAY,oBAAoB,YAAY;;EAKpF,IAAIC,iBAAqC;AACzC,MAAI,EAAE,iBACJ,KAAI;AACF,oBAAiB,cAAc,EAAE;UAC3B;AACN,YAAS,KAAK,yBAAyB,EAAE,iBAAiB,oBAAoB,YAAY;;AAK9F,MAAI,EAAE,iBACJ,KAAI;GACF,IAAIC,YAAsB;AAC1B,OAAS,SAAS,EAAE,kBAAmB,aAAY,CAAC,EAAE;YAC7C,SAAS,EAAE,kBAAmB,aAAY,EAAE,iBAAiB,MAAM,KAAK,KAAI,QAAKC,IAAE,QACzF,KAAI,QAAK,SAASA;AAGrB,eAAY,UACT,KAAI,QAAK;AACR,QAAI;AACF,YAAO,cAAcA;YACf;AACN,cAAS,KAAK,wBAAwBA,IAAE,oBAAoB,YAAY;AACxE,YAAO;;MAGV,QAAQ,QAAmB;AAC1B,QAAI,CAACA,KAAG;AACN,cAAS,KAAK,uCAAuC,YAAY;AACjE,YAAO;;AAET,WAAO;;AAGX,aAAU,SAAQ,QAAK;IACrB,MAAM,KAAK,WAAW;IACtB,MAAMC,QAAiB;KAAE;KAAI,QAAQ;KAAU,mBAAmBD;;AAClE,gBAAY,IAAI,IAAI;;UAEhB;AACN,YAAS,KAAK,yCAAyC,EAAE,iBAAiB,oBAAoB,YAAY;;EAK9G,MAAME,qBAA2D;AAEjE,WAAS,EAAE,YAAY,MAAM,KAC1B,SAAS,KAAG,MAAMF,IAAE,MAAM,KAAK,KAAI,QAAK,CAAC,GAAGA,IAAE,OAAO,iBACrD,SAAS,CAAC,GAAGA,SAAO;GACnB,MAAM,MAAM,iBAAiB,IAAIA;AACjC,OAAI,CAAC,KAAK;AACR,aAAS,KAAK,iBAAiBA,IAAE,gCAAgC,YAAY;AAC7E;;AAGF,OAAI,mBAAmB,MAAK,MAAK,EAAE,MAAM,IAAI,KAAK;AAChD,aAAS,KAAK,iBAAiBA,IAAE,kDAAkD,YAAY;AAC/F;;AAGF,sBAAmB,KAAK;IAAE,YAAY;IAAG,IAAI,IAAI;;;EAIrD,MAAMG,kBAAoC;AAC1C,WAAS,EAAE,SAAS,MAAM,KACvB,KAAI,QAAKH,IAAE,OAAO,eAClB,SAAQ,QAAK;GACZ,MAAM,MAAM,cAAc,IAAIA;AAC9B,OAAI,CAAC,KAAK;AACR,aAAS,KAAK,cAAcA,IAAE,gCAAgC,YAAY;AAC1E;;AAGF,OAAI,gBAAgB,MAAK,MAAK,EAAE,MAAM,IAAI,KAAK;AAC7C,aAAS,KAAK,cAAcA,IAAE,kDAAkD,YAAY;AAC5F;;AAGF,mBAAgB,KAAK,EAAE,IAAI,IAAI;;EAInC,MAAMI,oBAAsC;AAC5C,WAAS,EAAE,WAAW,MAAM,KACzB,KAAI,QAAKJ,IAAE,OAAO,eAClB,SAAQ,QAAK;GACZ,MAAM,MAAM,gBAAgB,IAAIA;AAChC,OAAI,CAAC,KAAK;AACR,aAAS,KAAK,gBAAgBA,IAAE,gCAAgC,YAAY;AAC5E;;AAGF,OAAI,kBAAkB,MAAK,MAAK,EAAE,MAAM,IAAI,KAAK;AAC/C,aAAS,KAAK,gBAAgBA,IAAE,kDAAkD,YAAY;AAC9F;;AAGF,qBAAkB,KAAK,EAAE,IAAI,IAAI;;EAGrC,MAAMK,SAAmB;GACvB,IAAoB;GACpB,QAAoB;GACpB,UAAoB;GACpB,WAAoB,mBAAmB,KAAI,SAAM;IAAE,YAAYL,IAAE;IAAY,WAAW,CAACA,IAAE;;GAC3F,oBAAoB;GACpB;GAAa;GAAS;;AAExB,eAAa,IAAI,UAAU;;AAO7B,QAAO;EACL;EACA,WAAW,CAAC,GAAG,eAAe;EAC9B,UAAW,CAAC,GAAG,cAAe;EAC9B,SAAW,CAAC,GAAG,aAAe;EAC9B,QAAW,CAAC,GAAG,YAAe;EAC9B,SAAW,CAAC,GAAG,aAAe;EAC9B,QAAW,CAAC,GAAG,YAAe;EAC9B,MAAW,EAET,GAAG,SAAS,UAAU,EAAY;;;AAMxC,mBAAe,EACb,WAAW"}
@@ -1,10 +1,38 @@
1
- import { Types as Types$1 } from "../../core/v2/types/index.js";
1
+ import { Types as Types$1 } from "../../core/types/index.js";
2
2
  import { Types } from "./types/index.js";
3
3
 
4
4
  //#region src/Excel/v1/index.d.ts
5
5
  declare class Map {
6
6
  static from: {
7
- schedules: (source: Types.Source) => Types$1.division;
7
+ schedules: (source: Types.Source) => {
8
+ settings: {
9
+ discretization: number;
10
+ numDays: number;
11
+ dayStart: string;
12
+ dayEnd: string;
13
+ };
14
+ locations: (Types$1.serialized.location & {
15
+ id: string;
16
+ })[];
17
+ teachers: (Types$1.serialized.teacher & {
18
+ id: string;
19
+ })[];
20
+ persons: (Types$1.serialized.person & {
21
+ id: string;
22
+ })[];
23
+ groups: (Types$1.serialized.group & {
24
+ id: string;
25
+ })[];
26
+ courses: (Types$1.serialized.course & {
27
+ id: string;
28
+ })[];
29
+ events: (Types$1.serialized.event & {
30
+ id: string;
31
+ })[];
32
+ meta?: {
33
+ warnings?: string[];
34
+ };
35
+ };
8
36
  };
9
37
  }
10
38
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_from"],"sources":["../../../src/Excel/v1/index.ts"],"sourcesContent":["import _from from './from';\n// import _to from './to';\nimport { Types } from './types';\n\nexport class Map {\n // static to = _to;\n static from = _from;\n}\n\nexport type { Types };"],"mappings":";;;AAIA,IAAa,MAAb,MAAiB;CAEf,OAAO,OAAOA"}
1
+ {"version":3,"file":"index.js","names":["_from"],"sources":["../../../src/Excel/v1/index.ts"],"sourcesContent":["import _from from './from';\n// import _to from './to';\nimport type { Types } from './types';\n\nexport class Map {\n // static to = _to;\n static from = _from;\n}\n\nexport { Types };"],"mappings":";;;AAIA,IAAa,MAAb,MAAiB;CAEf,OAAO,OAAOA"}
@@ -1,12 +1,12 @@
1
- import { countBy, isNumber, isString } from "lodash-es";
1
+ import { chain, isNumber, isString } from "lodash-es";
2
2
  import { nanoid } from "nanoid";
3
3
 
4
4
  //#region src/Excel/v2/from/index.ts
5
- function generateId(map$1) {
5
+ function generateId(map) {
6
6
  let id;
7
7
  do
8
8
  id = nanoid(8);
9
- while (map$1.has(id));
9
+ while (map.has(id));
10
10
  return id;
11
11
  }
12
12
  function toPositiveMultipleOf5(val) {
@@ -145,7 +145,7 @@ function _schedules(source) {
145
145
  });
146
146
  settings.numDays = 5;
147
147
  }
148
- } catch (e) {
148
+ } catch {
149
149
  warnings.push({
150
150
  code: "invalid_number_of_days",
151
151
  context: numDays
@@ -322,7 +322,7 @@ function _schedules(source) {
322
322
  });
323
323
  groupsNameMap.forEach((x) => {
324
324
  let duplicateReported = false;
325
- x.members = Object.entries(countBy((toString(x.__raw.members) ?? "").split(",").map((x$1) => x$1.trim()).filter(Boolean))).map(([ssn, count]) => {
325
+ x.members = chain(toString(x.__raw.members)).split(",").map((x$1) => x$1.trim()).filter(Boolean).countBy().map((count, ssn) => {
326
326
  if (!duplicateReported && count > 1) {
327
327
  warnings.push({
328
328
  code: "duplicate_group_member",
@@ -349,7 +349,7 @@ function _schedules(source) {
349
349
  }
350
350
  }
351
351
  return person.id;
352
- }).filter((x$1) => !!x$1);
352
+ }).filter((x$1) => !!x$1).value();
353
353
  });
354
354
  const coursesIdMap = /* @__PURE__ */ new Map();
355
355
  const eventsIdMap = /* @__PURE__ */ new Map();
@@ -372,7 +372,7 @@ function _schedules(source) {
372
372
  let expectedTotalHours = void 0;
373
373
  if (x.total_hours) try {
374
374
  expectedTotalHours = toPositiveInteger(x.total_hours);
375
- } catch (e) {
375
+ } catch {
376
376
  warnings.push({
377
377
  code: "invalid_total_hours",
378
378
  context: x.total_hours
@@ -381,7 +381,7 @@ function _schedules(source) {
381
381
  let minutesPerWeek = void 0;
382
382
  if (x.minutes_per_week) try {
383
383
  minutesPerWeek = toPositiveMultipleOf5(x.minutes_per_week);
384
- } catch (e) {
384
+ } catch {
385
385
  warnings.push({
386
386
  code: "invalid_minutes_per_week",
387
387
  context: x.minutes_per_week
@@ -397,7 +397,7 @@ function _schedules(source) {
397
397
  const durations = _durations.map((e) => {
398
398
  try {
399
399
  return toPositiveMultipleOf5(e);
400
- } catch (e$1) {
400
+ } catch {
401
401
  warnings.push({
402
402
  code: "invalid_lesson_durations",
403
403
  context: x.lesson_durations
@@ -479,7 +479,7 @@ function _schedules(source) {
479
479
  const durations = _durations.map((e) => {
480
480
  try {
481
481
  return toPositiveMultipleOf5(e);
482
- } catch (e$1) {
482
+ } catch {
483
483
  warnings.push({
484
484
  code: "invalid_lesson_durations",
485
485
  context: x.lesson_durations