@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.
- package/README.md +1 -0
- package/dist/Additio/from/courses.js.map +1 -1
- package/dist/Additio/from/events.js.map +1 -1
- package/dist/Additio/from/groups.js.map +1 -1
- package/dist/Additio/from/index.js.map +1 -1
- package/dist/Additio/from/locations.js.map +1 -1
- package/dist/Additio/from/persons.js +1 -1
- package/dist/Additio/from/persons.js.map +1 -1
- package/dist/Additio/from/schedules.d.ts +32 -2
- package/dist/Additio/from/schedules.js.map +1 -1
- package/dist/Additio/from/teachers.js.map +1 -1
- package/dist/Additio/index.js.map +1 -1
- package/dist/Additio/to/index.d.ts +12 -12
- package/dist/Additio/to/index.js.map +1 -1
- package/dist/Additio/to/schedules.js +44 -46
- package/dist/Additio/to/schedules.js.map +1 -1
- package/dist/Additio/types/options.d.ts +8 -0
- package/dist/Admentum/from/courses.js.map +1 -1
- package/dist/Admentum/from/events.js.map +1 -1
- package/dist/Admentum/from/groups.js.map +1 -1
- package/dist/Admentum/from/index.js.map +1 -1
- package/dist/Admentum/from/locations.js.map +1 -1
- package/dist/Admentum/from/persons.js +1 -1
- package/dist/Admentum/from/persons.js.map +1 -1
- package/dist/Admentum/from/schedules.d.ts +32 -2
- package/dist/Admentum/from/schedules.js.map +1 -1
- package/dist/Admentum/from/teachers.js.map +1 -1
- package/dist/Admentum/index.js.map +1 -1
- package/dist/Admentum/to/index.d.ts +11 -10
- package/dist/Admentum/to/index.js.map +1 -1
- package/dist/Admentum/to/schedules.js +22 -25
- package/dist/Admentum/to/schedules.js.map +1 -1
- package/dist/Excel/index.d.ts +55 -4
- package/dist/Excel/index.js.map +1 -1
- package/dist/Excel/v1/from/index.js +7 -7
- package/dist/Excel/v1/from/index.js.map +1 -1
- package/dist/Excel/v1/index.d.ts +30 -2
- package/dist/Excel/v1/index.js.map +1 -1
- package/dist/Excel/v2/from/index.js +10 -10
- package/dist/Excel/v2/from/index.js.map +1 -1
- package/dist/Excel/v2/index.d.ts +53 -2
- package/dist/Excel/v2/index.js.map +1 -1
- package/dist/IdunSoft/from/courses.js +4 -3
- package/dist/IdunSoft/from/courses.js.map +1 -1
- package/dist/IdunSoft/from/events.js +43 -32
- package/dist/IdunSoft/from/events.js.map +1 -1
- package/dist/IdunSoft/from/groups.js +5 -4
- package/dist/IdunSoft/from/groups.js.map +1 -1
- package/dist/IdunSoft/from/index.js.map +1 -1
- package/dist/IdunSoft/from/locations.js +4 -3
- package/dist/IdunSoft/from/locations.js.map +1 -1
- package/dist/IdunSoft/from/schedules.d.ts +18 -3
- package/dist/IdunSoft/from/schedules.js +5 -10
- package/dist/IdunSoft/from/schedules.js.map +1 -1
- package/dist/IdunSoft/from/teachers.js +4 -3
- package/dist/IdunSoft/from/teachers.js.map +1 -1
- package/dist/IdunSoft/index.js.map +1 -1
- package/dist/IdunSoft/to/index.d.ts +2 -3
- package/dist/IdunSoft/to/index.js.map +1 -1
- package/dist/IdunSoft/to/schedules.js +22 -21
- package/dist/IdunSoft/to/schedules.js.map +1 -1
- package/dist/InfoMentor/index.js.map +1 -1
- package/dist/InfoMentor/to/index.d.ts +2 -2
- package/dist/InfoMentor/to/index.js.map +1 -1
- package/dist/InfoMentor/to/schedules.js +26 -27
- package/dist/InfoMentor/to/schedules.js.map +1 -1
- package/dist/PlanDigital/from/index.js.map +1 -1
- package/dist/PlanDigital/from/schedules.js +7 -6
- package/dist/PlanDigital/from/schedules.js.map +1 -1
- package/dist/PlanDigital/index.d.ts +106 -5
- package/dist/PlanDigital/index.js +0 -2
- package/dist/PlanDigital/index.js.map +1 -1
- package/dist/PlanDigital/types/index.d.ts +12 -11
- package/dist/Quiculum/file/to/index.d.ts +1 -1
- package/dist/Quiculum/file/to/schedules.js +11 -13
- package/dist/Quiculum/file/to/schedules.js.map +1 -1
- package/dist/RS/from/division.d.ts +7 -0
- package/dist/RS/from/division.js +14 -0
- package/dist/RS/from/division.js.map +1 -0
- package/dist/RS/from/index.js +12 -0
- package/dist/RS/from/index.js.map +1 -0
- package/dist/RS/from/schedules.d.ts +8 -0
- package/dist/RS/from/schedules.js +36 -0
- package/dist/RS/from/schedules.js.map +1 -0
- package/dist/RS/index.d.ts +11 -12
- package/dist/RS/index.js +4 -8
- package/dist/RS/index.js.map +1 -1
- package/dist/RS/make-connected.d.ts +24 -0
- package/dist/RS/make-connected.js +258 -0
- package/dist/RS/make-connected.js.map +1 -0
- package/dist/RS/to/index.js +8 -0
- package/dist/RS/to/index.js.map +1 -0
- package/dist/RS/to/initial-configuration.js +43 -0
- package/dist/RS/to/initial-configuration.js.map +1 -0
- package/dist/RS/to/input/collections.js +57 -0
- package/dist/RS/to/input/collections.js.map +1 -0
- package/dist/RS/{v3/to → to/input}/default.js +10 -18
- package/dist/RS/to/input/default.js.map +1 -0
- package/dist/RS/to/input/dependencies.js +32 -0
- package/dist/RS/to/input/dependencies.js.map +1 -0
- package/dist/RS/to/input/dynamic-locked-times.js +67 -0
- package/dist/RS/to/input/dynamic-locked-times.js.map +1 -0
- package/dist/RS/to/input/events.js +84 -0
- package/dist/RS/to/input/events.js.map +1 -0
- package/dist/RS/to/input/groups.js +36 -0
- package/dist/RS/to/input/groups.js.map +1 -0
- package/dist/RS/to/input/individuals.js +49 -0
- package/dist/RS/to/input/individuals.js.map +1 -0
- package/dist/RS/to/input/input.js +40 -0
- package/dist/RS/to/input/input.js.map +1 -0
- package/dist/RS/to/input/intervals.js +99 -0
- package/dist/RS/to/input/intervals.js.map +1 -0
- package/dist/RS/to/input/periods.js +44 -0
- package/dist/RS/to/input/periods.js.map +1 -0
- package/dist/RS/to/input/settings.js +17 -0
- package/dist/RS/to/input/settings.js.map +1 -0
- package/dist/RS/to/input/teachers.js +36 -0
- package/dist/RS/to/input/teachers.js.map +1 -0
- package/dist/RS/to/input/util/attach-locked-times.js +27 -0
- package/dist/RS/to/input/util/attach-locked-times.js.map +1 -0
- package/dist/RS/to/input/util/parse-days.js +10 -0
- package/dist/RS/to/input/util/parse-days.js.map +1 -0
- package/dist/RS/to/input/util/parse-group-references.js +58 -0
- package/dist/RS/to/input/util/parse-group-references.js.map +1 -0
- package/dist/RS/to/input/util/parse-intervals.js +55 -0
- package/dist/RS/to/input/util/parse-intervals.js.map +1 -0
- package/dist/RS/to/input/util/parse-location-references.js +31 -0
- package/dist/RS/to/input/util/parse-location-references.js.map +1 -0
- package/dist/RS/to/input/util/parse-max-working-hours.js +17 -0
- package/dist/RS/to/input/util/parse-max-working-hours.js.map +1 -0
- package/dist/RS/to/input/util/parse-minimum-break-length.js +19 -0
- package/dist/RS/to/input/util/parse-minimum-break-length.js.map +1 -0
- package/dist/RS/to/input/util/util.js +61 -0
- package/dist/RS/to/input/util/util.js.map +1 -0
- package/dist/RS/to/schedules.d.ts +7 -0
- package/dist/RS/to/schedules.js +40 -0
- package/dist/RS/to/schedules.js.map +1 -0
- package/dist/RS/{v3/types → types}/algorithm-parameters.d.ts +1 -1
- package/dist/RS/types/collections.d.ts +26 -0
- package/dist/RS/types/configurations.d.ts +10 -0
- package/dist/RS/{v3/types → types}/default.d.ts +4 -5
- package/dist/RS/types/dependencies.d.ts +16 -0
- package/dist/RS/types/event-configuration.d.ts +20 -0
- package/dist/RS/types/events.d.ts +27 -0
- package/dist/RS/{v2/types → types}/groups.d.ts +13 -12
- package/dist/RS/types/index.d.ts +45 -0
- package/dist/RS/types/individuals.d.ts +16 -0
- package/dist/RS/{v2/types → types}/locked-times.d.ts +2 -1
- package/dist/RS/types/root-intervals.d.ts +10 -0
- package/dist/RS/types/schedule-data.d.ts +16 -0
- package/dist/RS/{v2/types → types}/settings.d.ts +1 -1
- package/dist/RS/types/shared.d.ts +27 -0
- package/dist/RS/types/to.d.ts +59 -0
- package/dist/SchoolSoft/api/from/index.js.map +1 -1
- package/dist/SchoolSoft/api/from/schedules.js +31 -37
- package/dist/SchoolSoft/api/from/schedules.js.map +1 -1
- package/dist/SchoolSoft/api/index.d.ts +14 -2
- package/dist/SchoolSoft/api/index.js.map +1 -1
- package/dist/SchoolSoft/file/from/index.js.map +1 -1
- package/dist/SchoolSoft/file/from/schedules.js +36 -46
- package/dist/SchoolSoft/file/from/schedules.js.map +1 -1
- package/dist/SchoolSoft/file/index.d.ts +2 -3
- package/dist/SchoolSoft/file/index.js.map +1 -1
- package/dist/SchoolSoft/file/to/index.d.ts +6 -13
- package/dist/SchoolSoft/file/to/schedules.js +40 -42
- package/dist/SchoolSoft/file/to/schedules.js.map +1 -1
- package/dist/SchoolSoft/index.d.ts +2 -3
- package/dist/SchoolSoft/index.js.map +1 -1
- package/dist/Schoolity/txt/index.js.map +1 -1
- package/dist/Schoolity/txt/to/index.d.ts +3 -3
- package/dist/Schoolity/txt/to/index.js.map +1 -1
- package/dist/Schoolity/txt/to/schedules.js +78 -96
- package/dist/Schoolity/txt/to/schedules.js.map +1 -1
- package/dist/Skola24/index.js.map +1 -1
- package/dist/Skola24/mdb/from/course-and-events.js +36 -29
- package/dist/Skola24/mdb/from/course-and-events.js.map +1 -1
- package/dist/Skola24/mdb/from/groups.js.map +1 -1
- package/dist/Skola24/mdb/from/index.js.map +1 -1
- package/dist/Skola24/mdb/from/locations.js.map +1 -1
- package/dist/Skola24/mdb/from/schedule.d.ts +21 -3
- package/dist/Skola24/mdb/from/schedule.js +15 -17
- package/dist/Skola24/mdb/from/schedule.js.map +1 -1
- package/dist/Skola24/mdb/from/teachers.js.map +1 -1
- package/dist/Skola24/mdb/index.js.map +1 -1
- package/dist/Skola24/mdb/types/index.d.ts +7 -0
- package/dist/Skola24/txt/from/calendar-exceptions.js.map +1 -1
- package/dist/Skola24/txt/from/division.js.map +1 -1
- package/dist/Skola24/txt/from/index.js.map +1 -1
- package/dist/Skola24/txt/from/period.js.map +1 -1
- package/dist/Skola24/txt/from/schedules.d.ts +16 -0
- package/dist/Skola24/txt/from/schedules.js +90 -80
- package/dist/Skola24/txt/from/schedules.js.map +1 -1
- package/dist/Skola24/txt/index.d.ts +17 -5
- package/dist/Skola24/txt/index.js.map +1 -1
- package/dist/Skola24/txt/to/index.d.ts +3 -3
- package/dist/Skola24/txt/to/index.js.map +1 -1
- package/dist/Skola24/txt/to/schedules.js +76 -91
- package/dist/Skola24/txt/to/schedules.js.map +1 -1
- package/dist/Skola24/txt/types/index.d.ts +17 -1
- package/dist/common/constants.js +2 -2
- package/dist/common/constants.js.map +1 -1
- package/dist/common/functions.js +16 -21
- package/dist/common/functions.js.map +1 -1
- package/dist/common/get-date.js +5 -6
- package/dist/common/get-date.js.map +1 -1
- package/dist/common/make-chainable/index.js +36 -0
- package/dist/common/make-chainable/index.js.map +1 -0
- package/dist/common/types.d.ts +19 -0
- package/dist/core/from/courses.js +12 -0
- package/dist/core/from/courses.js.map +1 -0
- package/dist/core/from/events.js +13 -0
- package/dist/core/from/events.js.map +1 -0
- package/dist/core/from/exceptions.js +12 -0
- package/dist/core/from/exceptions.js.map +1 -0
- package/dist/core/from/groups.js +12 -0
- package/dist/core/from/groups.js.map +1 -0
- package/dist/core/{v2/from → from}/index.js +1 -1
- package/dist/core/from/index.js.map +1 -0
- package/dist/core/from/locations.js +12 -0
- package/dist/core/from/locations.js.map +1 -0
- package/dist/core/from/locked-times.js +12 -0
- package/dist/core/from/locked-times.js.map +1 -0
- package/dist/core/from/overlap-groups.js +12 -0
- package/dist/core/from/overlap-groups.js.map +1 -0
- package/dist/core/from/periods.js +12 -0
- package/dist/core/from/periods.js.map +1 -0
- package/dist/core/from/persons.js +12 -0
- package/dist/core/from/persons.js.map +1 -0
- package/dist/core/from/root-intervals.js +12 -0
- package/dist/core/from/root-intervals.js.map +1 -0
- package/dist/core/from/schedules.d.ts +7 -0
- package/dist/core/from/schedules.js +35 -0
- package/dist/core/from/schedules.js.map +1 -0
- package/dist/core/{v2/from → from}/syllabuses.js +1 -1
- package/dist/core/from/syllabuses.js.map +1 -0
- package/dist/core/from/teachers.js +12 -0
- package/dist/core/from/teachers.js.map +1 -0
- package/dist/core/index.d.ts +6 -12
- package/dist/core/index.js +4 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/to/courses.js +43 -0
- package/dist/core/to/courses.js.map +1 -0
- package/dist/core/to/division.js +10 -0
- package/dist/core/to/division.js.map +1 -0
- package/dist/core/to/events.js +43 -0
- package/dist/core/to/events.js.map +1 -0
- package/dist/core/to/exceptions.js +27 -0
- package/dist/core/to/exceptions.js.map +1 -0
- package/dist/core/to/groups.js +23 -0
- package/dist/core/to/groups.js.map +1 -0
- package/dist/core/{v1/to → to}/index.d.ts +1 -1
- package/dist/{RS/v3 → core}/to/index.js +1 -1
- package/dist/core/to/index.js.map +1 -0
- package/dist/core/to/locations.js +19 -0
- package/dist/core/to/locations.js.map +1 -0
- package/dist/core/to/locked-times.js +21 -0
- package/dist/core/to/locked-times.js.map +1 -0
- package/dist/core/to/overlap-groups.js +28 -0
- package/dist/core/to/overlap-groups.js.map +1 -0
- package/dist/core/to/periods.js +17 -0
- package/dist/core/to/periods.js.map +1 -0
- package/dist/core/to/persons.js +23 -0
- package/dist/core/to/persons.js.map +1 -0
- package/dist/core/to/root-intervals.js +17 -0
- package/dist/core/to/root-intervals.js.map +1 -0
- package/dist/core/to/schedules.d.ts +44 -0
- package/dist/core/to/schedules.js +40 -0
- package/dist/core/to/schedules.js.map +1 -0
- package/dist/core/to/settings.js +16 -0
- package/dist/core/to/settings.js.map +1 -0
- package/dist/core/to/syllabuses.js +17 -0
- package/dist/core/to/syllabuses.js.map +1 -0
- package/dist/core/to/teachers.js +24 -0
- package/dist/core/to/teachers.js.map +1 -0
- package/dist/core/to/util.d.ts +14 -0
- package/dist/core/to/util.js +22 -0
- package/dist/core/to/util.js.map +1 -0
- package/dist/core/types/areas.d.ts +10 -0
- package/dist/core/types/common/break-lengths.d.ts +5 -0
- package/dist/core/types/common/days.d.ts +8 -0
- package/dist/core/types/common/index.d.ts +45 -0
- package/dist/core/types/common/intervals.d.ts +20 -0
- package/dist/core/types/common/maximum-schedule-span.d.ts +19 -0
- package/dist/core/{v2/types → types/common}/meta.d.ts +1 -1
- package/dist/core/types/common/planned-schedule-duration.d.ts +13 -0
- package/dist/core/types/common/tag.d.ts +9 -0
- package/dist/core/types/courses.d.ts +58 -0
- package/dist/core/{v2/types → types}/division-settings.d.ts +14 -19
- package/dist/core/types/divisions.d.ts +24 -0
- package/dist/core/types/events.d.ts +54 -0
- package/dist/core/{v2/types → types}/exceptions.d.ts +14 -23
- package/dist/core/types/groups.d.ts +41 -0
- package/dist/core/types/index.d.ts +117 -15
- package/dist/core/types/locations.d.ts +27 -0
- package/dist/core/types/locked-times.d.ts +33 -0
- package/dist/core/types/overlap-groups.d.ts +14 -0
- package/dist/core/types/periods.d.ts +14 -0
- package/dist/core/{v2/types → types}/persons.d.ts +13 -22
- package/dist/core/types/root-intervals.d.ts +13 -0
- package/dist/core/types/schedules.d.ts +44 -0
- package/dist/core/types/syllabus.d.ts +18 -0
- package/dist/core/{v2/types → types}/teachers.d.ts +20 -30
- package/dist/core/util.js +46 -0
- package/dist/core/util.js.map +1 -0
- package/dist/core/vertex-mapping.d.ts +69 -0
- package/dist/identify/constants/index.d.ts +14 -58
- package/dist/identify/constants/index.js +7 -72
- package/dist/identify/constants/index.js.map +1 -1
- package/dist/identify/index.d.ts +1 -1
- package/dist/identify/index.js +38 -29
- package/dist/identify/index.js.map +1 -1
- package/dist/index.d.ts +23 -29
- package/dist/index.js +6 -7
- package/dist/sdui/from/classes.js.map +1 -1
- package/dist/sdui/from/courses.js.map +1 -1
- package/dist/sdui/from/holidays.js.map +1 -1
- package/dist/sdui/from/hours.js.map +1 -1
- package/dist/sdui/from/lessons.js.map +1 -1
- package/dist/sdui/from/rooms.js.map +1 -1
- package/dist/sdui/from/schedules.d.ts +19 -0
- package/dist/sdui/from/schedules.js +3 -3
- package/dist/sdui/from/schedules.js.map +1 -1
- package/dist/sdui/from/school-years.js.map +1 -1
- package/dist/sdui/from/subjects.js.map +1 -1
- package/dist/sdui/from/substitution-plans.js.map +1 -1
- package/dist/sdui/from/teachers.js.map +1 -1
- package/dist/sdui/index.d.ts +19 -11
- package/dist/sdui/index.js.map +1 -1
- package/dist/sdui/to/classes.js +4 -2
- package/dist/sdui/to/classes.js.map +1 -1
- package/dist/sdui/to/courses.js +5 -5
- package/dist/sdui/to/courses.js.map +1 -1
- package/dist/sdui/to/holidays.js +3 -2
- package/dist/sdui/to/holidays.js.map +1 -1
- package/dist/sdui/to/hours.js +4 -2
- package/dist/sdui/to/hours.js.map +1 -1
- package/dist/sdui/to/index.d.ts +11 -12
- package/dist/sdui/to/lessons.js +10 -9
- package/dist/sdui/to/lessons.js.map +1 -1
- package/dist/sdui/to/rooms.js +4 -2
- package/dist/sdui/to/rooms.js.map +1 -1
- package/dist/sdui/to/schedules.js +9 -9
- package/dist/sdui/to/schedules.js.map +1 -1
- package/dist/sdui/to/school-years.js +4 -3
- package/dist/sdui/to/school-years.js.map +1 -1
- package/dist/sdui/to/subjects.js.map +1 -1
- package/dist/sdui/to/substitution-plans.js +12 -11
- package/dist/sdui/to/substitution-plans.js.map +1 -1
- package/dist/sdui/to/teachers.js +4 -4
- package/dist/sdui/to/teachers.js.map +1 -1
- package/dist/sdui/types/index.d.ts +2 -0
- package/dist/vKlass/from/index.js +1 -3
- package/dist/vKlass/from/index.js.map +1 -1
- package/dist/vKlass/from/schedule.d.ts +18 -3
- package/dist/vKlass/from/schedule.js +16 -19
- package/dist/vKlass/from/schedule.js.map +1 -1
- package/dist/vKlass/index.d.ts +6 -4
- package/dist/vKlass/index.js.map +1 -1
- package/dist/vKlass/to/schedules.d.ts +1 -1
- package/dist/vKlass/to/schedules.js +5 -12
- package/dist/vKlass/to/schedules.js.map +1 -1
- package/dist/vKlass/types/index.d.ts +5 -5
- package/package.json +38 -29
- package/dist/PlanDigital/to/index.d.ts +0 -10
- package/dist/PlanDigital/to/index.js +0 -10
- package/dist/PlanDigital/to/index.js.map +0 -1
- package/dist/PlanDigital/to/schedules.js +0 -15
- package/dist/PlanDigital/to/schedules.js.map +0 -1
- package/dist/RS/v0/from/available-dependencies.js +0 -38
- package/dist/RS/v0/from/available-dependencies.js.map +0 -1
- package/dist/RS/v0/from/break-lengths.js +0 -15
- package/dist/RS/v0/from/break-lengths.js.map +0 -1
- package/dist/RS/v0/from/course-events.js +0 -68
- package/dist/RS/v0/from/course-events.js.map +0 -1
- package/dist/RS/v0/from/courses.js +0 -53
- package/dist/RS/v0/from/courses.js.map +0 -1
- package/dist/RS/v0/from/days.js +0 -14
- package/dist/RS/v0/from/days.js.map +0 -1
- package/dist/RS/v0/from/dependencies.js +0 -29
- package/dist/RS/v0/from/dependencies.js.map +0 -1
- package/dist/RS/v0/from/groups.js +0 -32
- package/dist/RS/v0/from/groups.js.map +0 -1
- package/dist/RS/v0/from/index.js +0 -32
- package/dist/RS/v0/from/index.js.map +0 -1
- package/dist/RS/v0/from/intervals.js +0 -15
- package/dist/RS/v0/from/intervals.js.map +0 -1
- package/dist/RS/v0/from/locked-times.js +0 -23
- package/dist/RS/v0/from/locked-times.js.map +0 -1
- package/dist/RS/v0/from/placements.js +0 -20
- package/dist/RS/v0/from/placements.js.map +0 -1
- package/dist/RS/v0/from/schedules.js +0 -44
- package/dist/RS/v0/from/schedules.js.map +0 -1
- package/dist/RS/v0/from/settings.js +0 -24
- package/dist/RS/v0/from/settings.js.map +0 -1
- package/dist/RS/v0/from/teachers.js +0 -31
- package/dist/RS/v0/from/teachers.js.map +0 -1
- package/dist/RS/v0/index.d.ts +0 -43
- package/dist/RS/v0/index.js +0 -12
- package/dist/RS/v0/index.js.map +0 -1
- package/dist/RS/v0/to/available-dependencies.js +0 -17
- package/dist/RS/v0/to/available-dependencies.js.map +0 -1
- package/dist/RS/v0/to/configurations.js +0 -22
- package/dist/RS/v0/to/configurations.js.map +0 -1
- package/dist/RS/v0/to/constraints.js +0 -34
- package/dist/RS/v0/to/constraints.js.map +0 -1
- package/dist/RS/v0/to/course-events/days.js +0 -13
- package/dist/RS/v0/to/course-events/days.js.map +0 -1
- package/dist/RS/v0/to/course-events/dependencies.js +0 -18
- package/dist/RS/v0/to/course-events/dependencies.js.map +0 -1
- package/dist/RS/v0/to/course-events/groups.js +0 -39
- package/dist/RS/v0/to/course-events/groups.js.map +0 -1
- package/dist/RS/v0/to/course-events/in-locations.js +0 -17
- package/dist/RS/v0/to/course-events/in-locations.js.map +0 -1
- package/dist/RS/v0/to/course-events/index.js +0 -52
- package/dist/RS/v0/to/course-events/index.js.map +0 -1
- package/dist/RS/v0/to/course-events/intervals.js +0 -12
- package/dist/RS/v0/to/course-events/intervals.js.map +0 -1
- package/dist/RS/v0/to/course-events/meta.js +0 -21
- package/dist/RS/v0/to/course-events/meta.js.map +0 -1
- package/dist/RS/v0/to/courses.js +0 -56
- package/dist/RS/v0/to/courses.js.map +0 -1
- package/dist/RS/v0/to/days.js +0 -11
- package/dist/RS/v0/to/days.js.map +0 -1
- package/dist/RS/v0/to/dependencies.js +0 -26
- package/dist/RS/v0/to/dependencies.js.map +0 -1
- package/dist/RS/v0/to/groups.js +0 -32
- package/dist/RS/v0/to/groups.js.map +0 -1
- package/dist/RS/v0/to/index.d.ts +0 -46
- package/dist/RS/v0/to/index.js +0 -34
- package/dist/RS/v0/to/index.js.map +0 -1
- package/dist/RS/v0/to/intervals.js +0 -17
- package/dist/RS/v0/to/intervals.js.map +0 -1
- package/dist/RS/v0/to/locked-times.js +0 -43
- package/dist/RS/v0/to/locked-times.js.map +0 -1
- package/dist/RS/v0/to/schedules.js +0 -16
- package/dist/RS/v0/to/schedules.js.map +0 -1
- package/dist/RS/v0/to/settings.js +0 -28
- package/dist/RS/v0/to/settings.js.map +0 -1
- package/dist/RS/v0/to/teachers.js +0 -30
- package/dist/RS/v0/to/teachers.js.map +0 -1
- package/dist/RS/v0/types/areas.d.ts +0 -8
- package/dist/RS/v0/types/available-dependencies.d.ts +0 -8
- package/dist/RS/v0/types/break-lengths.d.ts +0 -9
- package/dist/RS/v0/types/configurations.d.ts +0 -7
- package/dist/RS/v0/types/constraints.d.ts +0 -17
- package/dist/RS/v0/types/course-events.d.ts +0 -26
- package/dist/RS/v0/types/courses.d.ts +0 -27
- package/dist/RS/v0/types/days.d.ts +0 -8
- package/dist/RS/v0/types/dependencies.d.ts +0 -17
- package/dist/RS/v0/types/groups.d.ts +0 -25
- package/dist/RS/v0/types/index.d.ts +0 -31
- package/dist/RS/v0/types/intervals.d.ts +0 -8
- package/dist/RS/v0/types/locked-times.d.ts +0 -11
- package/dist/RS/v0/types/out-options.d.ts +0 -13
- package/dist/RS/v0/types/placements.d.ts +0 -12
- package/dist/RS/v0/types/schedules.d.ts +0 -15
- package/dist/RS/v0/types/settings.d.ts +0 -26
- package/dist/RS/v1/from/available-dependencies.js +0 -38
- package/dist/RS/v1/from/available-dependencies.js.map +0 -1
- package/dist/RS/v1/from/break-lengths.js +0 -15
- package/dist/RS/v1/from/break-lengths.js.map +0 -1
- package/dist/RS/v1/from/collections.js +0 -55
- package/dist/RS/v1/from/collections.js.map +0 -1
- package/dist/RS/v1/from/course-events.js +0 -65
- package/dist/RS/v1/from/course-events.js.map +0 -1
- package/dist/RS/v1/from/days.js +0 -14
- package/dist/RS/v1/from/days.js.map +0 -1
- package/dist/RS/v1/from/dependencies.js +0 -31
- package/dist/RS/v1/from/dependencies.js.map +0 -1
- package/dist/RS/v1/from/groups.js +0 -34
- package/dist/RS/v1/from/groups.js.map +0 -1
- package/dist/RS/v1/from/index.js +0 -32
- package/dist/RS/v1/from/index.js.map +0 -1
- package/dist/RS/v1/from/intervals.js +0 -18
- package/dist/RS/v1/from/intervals.js.map +0 -1
- package/dist/RS/v1/from/locked-times.js +0 -21
- package/dist/RS/v1/from/locked-times.js.map +0 -1
- package/dist/RS/v1/from/placements.js +0 -21
- package/dist/RS/v1/from/placements.js.map +0 -1
- package/dist/RS/v1/from/schedules.js +0 -44
- package/dist/RS/v1/from/schedules.js.map +0 -1
- package/dist/RS/v1/from/settings.js +0 -25
- package/dist/RS/v1/from/settings.js.map +0 -1
- package/dist/RS/v1/from/teachers.js +0 -33
- package/dist/RS/v1/from/teachers.js.map +0 -1
- package/dist/RS/v1/index.d.ts +0 -45
- package/dist/RS/v1/index.js +0 -12
- package/dist/RS/v1/index.js.map +0 -1
- package/dist/RS/v1/to/available-dependencies.js +0 -25
- package/dist/RS/v1/to/available-dependencies.js.map +0 -1
- package/dist/RS/v1/to/break-lengths.js +0 -19
- package/dist/RS/v1/to/break-lengths.js.map +0 -1
- package/dist/RS/v1/to/collections.js +0 -51
- package/dist/RS/v1/to/collections.js.map +0 -1
- package/dist/RS/v1/to/configurations.js +0 -22
- package/dist/RS/v1/to/configurations.js.map +0 -1
- package/dist/RS/v1/to/constraints.js +0 -26
- package/dist/RS/v1/to/constraints.js.map +0 -1
- package/dist/RS/v1/to/course-events/days.js +0 -12
- package/dist/RS/v1/to/course-events/days.js.map +0 -1
- package/dist/RS/v1/to/course-events/dependencies.js +0 -15
- package/dist/RS/v1/to/course-events/dependencies.js.map +0 -1
- package/dist/RS/v1/to/course-events/groups.js +0 -30
- package/dist/RS/v1/to/course-events/groups.js.map +0 -1
- package/dist/RS/v1/to/course-events/in-locations.js +0 -17
- package/dist/RS/v1/to/course-events/in-locations.js.map +0 -1
- package/dist/RS/v1/to/course-events/index.js +0 -47
- package/dist/RS/v1/to/course-events/index.js.map +0 -1
- package/dist/RS/v1/to/course-events/intervals.js +0 -11
- package/dist/RS/v1/to/course-events/intervals.js.map +0 -1
- package/dist/RS/v1/to/course-events/meta.js +0 -21
- package/dist/RS/v1/to/course-events/meta.js.map +0 -1
- package/dist/RS/v1/to/days.js +0 -11
- package/dist/RS/v1/to/days.js.map +0 -1
- package/dist/RS/v1/to/dependencies.js +0 -28
- package/dist/RS/v1/to/dependencies.js.map +0 -1
- package/dist/RS/v1/to/groups.js +0 -34
- package/dist/RS/v1/to/groups.js.map +0 -1
- package/dist/RS/v1/to/index.d.ts +0 -46
- package/dist/RS/v1/to/index.js +0 -34
- package/dist/RS/v1/to/index.js.map +0 -1
- package/dist/RS/v1/to/intervals.js +0 -17
- package/dist/RS/v1/to/intervals.js.map +0 -1
- package/dist/RS/v1/to/locked-times.js +0 -49
- package/dist/RS/v1/to/locked-times.js.map +0 -1
- package/dist/RS/v1/to/schedules.js +0 -16
- package/dist/RS/v1/to/schedules.js.map +0 -1
- package/dist/RS/v1/to/settings.js +0 -34
- package/dist/RS/v1/to/settings.js.map +0 -1
- package/dist/RS/v1/to/teachers.js +0 -34
- package/dist/RS/v1/to/teachers.js.map +0 -1
- package/dist/RS/v1/types/areas.d.ts +0 -8
- package/dist/RS/v1/types/available-dependencies.d.ts +0 -8
- package/dist/RS/v1/types/break-lengths.d.ts +0 -9
- package/dist/RS/v1/types/collections.d.ts +0 -27
- package/dist/RS/v1/types/configurations.d.ts +0 -10
- package/dist/RS/v1/types/constraints.d.ts +0 -17
- package/dist/RS/v1/types/course-events.d.ts +0 -26
- package/dist/RS/v1/types/days.d.ts +0 -8
- package/dist/RS/v1/types/dependencies.d.ts +0 -17
- package/dist/RS/v1/types/groups.d.ts +0 -25
- package/dist/RS/v1/types/index.d.ts +0 -31
- package/dist/RS/v1/types/intervals.d.ts +0 -8
- package/dist/RS/v1/types/locked-times.d.ts +0 -11
- package/dist/RS/v1/types/out-options.d.ts +0 -11
- package/dist/RS/v1/types/placements.d.ts +0 -12
- package/dist/RS/v1/types/schedules.d.ts +0 -16
- package/dist/RS/v1/types/settings.d.ts +0 -31
- package/dist/RS/v2/from/available-dependencies.js +0 -38
- package/dist/RS/v2/from/available-dependencies.js.map +0 -1
- package/dist/RS/v2/from/break-lengths.js +0 -15
- package/dist/RS/v2/from/break-lengths.js.map +0 -1
- package/dist/RS/v2/from/collections.js +0 -57
- package/dist/RS/v2/from/collections.js.map +0 -1
- package/dist/RS/v2/from/course-events.d.ts +0 -12
- package/dist/RS/v2/from/course-events.js +0 -67
- package/dist/RS/v2/from/course-events.js.map +0 -1
- package/dist/RS/v2/from/days.js +0 -14
- package/dist/RS/v2/from/days.js.map +0 -1
- package/dist/RS/v2/from/dependencies.js +0 -31
- package/dist/RS/v2/from/dependencies.js.map +0 -1
- package/dist/RS/v2/from/groups.js +0 -35
- package/dist/RS/v2/from/groups.js.map +0 -1
- package/dist/RS/v2/from/index.js +0 -32
- package/dist/RS/v2/from/index.js.map +0 -1
- package/dist/RS/v2/from/intervals.js +0 -18
- package/dist/RS/v2/from/intervals.js.map +0 -1
- package/dist/RS/v2/from/locked-times.js +0 -21
- package/dist/RS/v2/from/locked-times.js.map +0 -1
- package/dist/RS/v2/from/placements.js +0 -32
- package/dist/RS/v2/from/placements.js.map +0 -1
- package/dist/RS/v2/from/schedules.js +0 -78
- package/dist/RS/v2/from/schedules.js.map +0 -1
- package/dist/RS/v2/from/settings.js +0 -31
- package/dist/RS/v2/from/settings.js.map +0 -1
- package/dist/RS/v2/from/teachers.js +0 -33
- package/dist/RS/v2/from/teachers.js.map +0 -1
- package/dist/RS/v2/index.d.ts +0 -63
- package/dist/RS/v2/index.js +0 -12
- package/dist/RS/v2/index.js.map +0 -1
- package/dist/RS/v2/to/available-dependencies.js +0 -25
- package/dist/RS/v2/to/available-dependencies.js.map +0 -1
- package/dist/RS/v2/to/break-lengths.js +0 -19
- package/dist/RS/v2/to/break-lengths.js.map +0 -1
- package/dist/RS/v2/to/collections.js +0 -60
- package/dist/RS/v2/to/collections.js.map +0 -1
- package/dist/RS/v2/to/configurations.js +0 -23
- package/dist/RS/v2/to/configurations.js.map +0 -1
- package/dist/RS/v2/to/constraints.js +0 -88
- package/dist/RS/v2/to/constraints.js.map +0 -1
- package/dist/RS/v2/to/course-events/days.js +0 -12
- package/dist/RS/v2/to/course-events/days.js.map +0 -1
- package/dist/RS/v2/to/course-events/dependencies.js +0 -14
- package/dist/RS/v2/to/course-events/dependencies.js.map +0 -1
- package/dist/RS/v2/to/course-events/groups.js +0 -38
- package/dist/RS/v2/to/course-events/groups.js.map +0 -1
- package/dist/RS/v2/to/course-events/in-locations.js +0 -18
- package/dist/RS/v2/to/course-events/in-locations.js.map +0 -1
- package/dist/RS/v2/to/course-events/index.js +0 -56
- package/dist/RS/v2/to/course-events/index.js.map +0 -1
- package/dist/RS/v2/to/course-events/intervals.js +0 -11
- package/dist/RS/v2/to/course-events/intervals.js.map +0 -1
- package/dist/RS/v2/to/course-events/meta.js +0 -21
- package/dist/RS/v2/to/course-events/meta.js.map +0 -1
- package/dist/RS/v2/to/days.js +0 -11
- package/dist/RS/v2/to/days.js.map +0 -1
- package/dist/RS/v2/to/default.js +0 -36
- package/dist/RS/v2/to/default.js.map +0 -1
- package/dist/RS/v2/to/dependencies.js +0 -28
- package/dist/RS/v2/to/dependencies.js.map +0 -1
- package/dist/RS/v2/to/destructure.js +0 -40
- package/dist/RS/v2/to/destructure.js.map +0 -1
- package/dist/RS/v2/to/dynamic-locked-times.js +0 -57
- package/dist/RS/v2/to/dynamic-locked-times.js.map +0 -1
- package/dist/RS/v2/to/groups.js +0 -37
- package/dist/RS/v2/to/groups.js.map +0 -1
- package/dist/RS/v2/to/index.d.ts +0 -44
- package/dist/RS/v2/to/index.js +0 -36
- package/dist/RS/v2/to/index.js.map +0 -1
- package/dist/RS/v2/to/intervals.js +0 -32
- package/dist/RS/v2/to/intervals.js.map +0 -1
- package/dist/RS/v2/to/locked-times.js +0 -49
- package/dist/RS/v2/to/locked-times.js.map +0 -1
- package/dist/RS/v2/to/periods.js +0 -48
- package/dist/RS/v2/to/periods.js.map +0 -1
- package/dist/RS/v2/to/persons.js +0 -23
- package/dist/RS/v2/to/persons.js.map +0 -1
- package/dist/RS/v2/to/schedules.js +0 -19
- package/dist/RS/v2/to/schedules.js.map +0 -1
- package/dist/RS/v2/to/settings.js +0 -18
- package/dist/RS/v2/to/settings.js.map +0 -1
- package/dist/RS/v2/to/teachers.js +0 -37
- package/dist/RS/v2/to/teachers.js.map +0 -1
- package/dist/RS/v2/types/areas.d.ts +0 -8
- package/dist/RS/v2/types/available-dependencies.d.ts +0 -8
- package/dist/RS/v2/types/break-lengths.d.ts +0 -9
- package/dist/RS/v2/types/collections.d.ts +0 -29
- package/dist/RS/v2/types/configurations.d.ts +0 -10
- package/dist/RS/v2/types/constraints.d.ts +0 -21
- package/dist/RS/v2/types/course-events.d.ts +0 -30
- package/dist/RS/v2/types/days.d.ts +0 -8
- package/dist/RS/v2/types/default.d.ts +0 -25
- package/dist/RS/v2/types/dependencies.d.ts +0 -17
- package/dist/RS/v2/types/index.d.ts +0 -33
- package/dist/RS/v2/types/intervals.d.ts +0 -9
- package/dist/RS/v2/types/out-options.d.ts +0 -11
- package/dist/RS/v2/types/placements.d.ts +0 -12
- package/dist/RS/v2/types/schedules.d.ts +0 -18
- package/dist/RS/v3/from/division.js +0 -14
- package/dist/RS/v3/from/division.js.map +0 -1
- package/dist/RS/v3/from/index.js +0 -12
- package/dist/RS/v3/from/index.js.map +0 -1
- package/dist/RS/v3/from/schedules.js +0 -34
- package/dist/RS/v3/from/schedules.js.map +0 -1
- package/dist/RS/v3/index.d.ts +0 -21
- package/dist/RS/v3/index.js +0 -12
- package/dist/RS/v3/index.js.map +0 -1
- package/dist/RS/v3/to/available-dependencies.js +0 -26
- package/dist/RS/v3/to/available-dependencies.js.map +0 -1
- package/dist/RS/v3/to/break-lengths.js +0 -19
- package/dist/RS/v3/to/break-lengths.js.map +0 -1
- package/dist/RS/v3/to/collections.js +0 -56
- package/dist/RS/v3/to/collections.js.map +0 -1
- package/dist/RS/v3/to/configurations.js +0 -23
- package/dist/RS/v3/to/configurations.js.map +0 -1
- package/dist/RS/v3/to/constraints.js +0 -77
- package/dist/RS/v3/to/constraints.js.map +0 -1
- package/dist/RS/v3/to/course-events/days.js +0 -12
- package/dist/RS/v3/to/course-events/days.js.map +0 -1
- package/dist/RS/v3/to/course-events/dependencies.js +0 -14
- package/dist/RS/v3/to/course-events/dependencies.js.map +0 -1
- package/dist/RS/v3/to/course-events/groups.js +0 -44
- package/dist/RS/v3/to/course-events/groups.js.map +0 -1
- package/dist/RS/v3/to/course-events/in-locations.js +0 -18
- package/dist/RS/v3/to/course-events/in-locations.js.map +0 -1
- package/dist/RS/v3/to/course-events/index.js +0 -84
- package/dist/RS/v3/to/course-events/index.js.map +0 -1
- package/dist/RS/v3/to/course-events/intervals.js +0 -11
- package/dist/RS/v3/to/course-events/intervals.js.map +0 -1
- package/dist/RS/v3/to/course-events/meta.js +0 -21
- package/dist/RS/v3/to/course-events/meta.js.map +0 -1
- package/dist/RS/v3/to/days.js +0 -11
- package/dist/RS/v3/to/days.js.map +0 -1
- package/dist/RS/v3/to/default.js.map +0 -1
- package/dist/RS/v3/to/dependencies.js +0 -31
- package/dist/RS/v3/to/dependencies.js.map +0 -1
- package/dist/RS/v3/to/destructure.js +0 -33
- package/dist/RS/v3/to/destructure.js.map +0 -1
- package/dist/RS/v3/to/dynamic-locked-times.js +0 -97
- package/dist/RS/v3/to/dynamic-locked-times.js.map +0 -1
- package/dist/RS/v3/to/groups.js +0 -36
- package/dist/RS/v3/to/groups.js.map +0 -1
- package/dist/RS/v3/to/index.d.ts +0 -266
- package/dist/RS/v3/to/index.js.map +0 -1
- package/dist/RS/v3/to/individuals.js +0 -49
- package/dist/RS/v3/to/individuals.js.map +0 -1
- package/dist/RS/v3/to/intervals.js +0 -32
- package/dist/RS/v3/to/intervals.js.map +0 -1
- package/dist/RS/v3/to/locked-times.js +0 -49
- package/dist/RS/v3/to/locked-times.js.map +0 -1
- package/dist/RS/v3/to/periods.js +0 -48
- package/dist/RS/v3/to/periods.js.map +0 -1
- package/dist/RS/v3/to/schedules.js +0 -39
- package/dist/RS/v3/to/schedules.js.map +0 -1
- package/dist/RS/v3/to/settings.js +0 -18
- package/dist/RS/v3/to/settings.js.map +0 -1
- package/dist/RS/v3/to/teachers.js +0 -36
- package/dist/RS/v3/to/teachers.js.map +0 -1
- package/dist/RS/v3/to/util.js +0 -32
- package/dist/RS/v3/to/util.js.map +0 -1
- package/dist/RS/v3/types/areas.d.ts +0 -8
- package/dist/RS/v3/types/available-dependencies.d.ts +0 -8
- package/dist/RS/v3/types/break-lengths.d.ts +0 -9
- package/dist/RS/v3/types/collections.d.ts +0 -31
- package/dist/RS/v3/types/configurations.d.ts +0 -10
- package/dist/RS/v3/types/constraints.d.ts +0 -25
- package/dist/RS/v3/types/course-events.d.ts +0 -32
- package/dist/RS/v3/types/days.d.ts +0 -8
- package/dist/RS/v3/types/dependencies.d.ts +0 -17
- package/dist/RS/v3/types/groups.d.ts +0 -25
- package/dist/RS/v3/types/index.d.ts +0 -33
- package/dist/RS/v3/types/individuals.d.ts +0 -13
- package/dist/RS/v3/types/intervals.d.ts +0 -9
- package/dist/RS/v3/types/locked-times.d.ts +0 -11
- package/dist/RS/v3/types/out-options.d.ts +0 -23
- package/dist/RS/v3/types/placements.d.ts +0 -12
- package/dist/RS/v3/types/root-intervals.d.ts +0 -10
- package/dist/RS/v3/types/schedules.d.ts +0 -24
- package/dist/RS/v3/types/settings.d.ts +0 -12
- package/dist/SS12000/from/activities.js +0 -35
- package/dist/SS12000/from/activities.js.map +0 -1
- package/dist/SS12000/from/calendar-events.js +0 -20
- package/dist/SS12000/from/calendar-events.js.map +0 -1
- package/dist/SS12000/from/duties.js +0 -21
- package/dist/SS12000/from/duties.js.map +0 -1
- package/dist/SS12000/from/groups.js +0 -23
- package/dist/SS12000/from/groups.js.map +0 -1
- package/dist/SS12000/from/index.js +0 -24
- package/dist/SS12000/from/index.js.map +0 -1
- package/dist/SS12000/from/persons.js +0 -43
- package/dist/SS12000/from/persons.js.map +0 -1
- package/dist/SS12000/from/resources.js +0 -9
- package/dist/SS12000/from/resources.js.map +0 -1
- package/dist/SS12000/from/rooms.js +0 -18
- package/dist/SS12000/from/rooms.js.map +0 -1
- package/dist/SS12000/from/syllabuses.js +0 -21
- package/dist/SS12000/from/syllabuses.js.map +0 -1
- package/dist/SS12000/index.d.ts +0 -73
- package/dist/SS12000/index.js +0 -12
- package/dist/SS12000/index.js.map +0 -1
- package/dist/SS12000/to/activities.js +0 -55
- package/dist/SS12000/to/activities.js.map +0 -1
- package/dist/SS12000/to/calendar-events.js +0 -47
- package/dist/SS12000/to/calendar-events.js.map +0 -1
- package/dist/SS12000/to/common.js +0 -16
- package/dist/SS12000/to/common.js.map +0 -1
- package/dist/SS12000/to/duties.js +0 -36
- package/dist/SS12000/to/duties.js.map +0 -1
- package/dist/SS12000/to/groups.js +0 -37
- package/dist/SS12000/to/groups.js.map +0 -1
- package/dist/SS12000/to/index.d.ts +0 -25
- package/dist/SS12000/to/index.js +0 -24
- package/dist/SS12000/to/index.js.map +0 -1
- package/dist/SS12000/to/persons.js +0 -36
- package/dist/SS12000/to/persons.js.map +0 -1
- package/dist/SS12000/to/resources.js +0 -23
- package/dist/SS12000/to/resources.js.map +0 -1
- package/dist/SS12000/to/rooms.js +0 -28
- package/dist/SS12000/to/rooms.js.map +0 -1
- package/dist/SS12000/to/syllabuses.js +0 -30
- package/dist/SS12000/to/syllabuses.js.map +0 -1
- package/dist/SS12000/types/activities.d.ts +0 -41
- package/dist/SS12000/types/calendar-events.d.ts +0 -23
- package/dist/SS12000/types/codes.d.ts +0 -9
- package/dist/SS12000/types/duties.d.ts +0 -23
- package/dist/SS12000/types/duty-assignments.d.ts +0 -13
- package/dist/SS12000/types/groups.d.ts +0 -23
- package/dist/SS12000/types/index.d.ts +0 -21
- package/dist/SS12000/types/organisation.d.ts +0 -20
- package/dist/SS12000/types/persons.d.ts +0 -30
- package/dist/SS12000/types/resources.d.ts +0 -13
- package/dist/SS12000/types/rooms.d.ts +0 -17
- package/dist/SS12000/types/syllabus.d.ts +0 -19
- package/dist/core/v1/from/courses.js +0 -26
- package/dist/core/v1/from/courses.js.map +0 -1
- package/dist/core/v1/from/events.js +0 -12
- package/dist/core/v1/from/events.js.map +0 -1
- package/dist/core/v1/from/groups.js +0 -14
- package/dist/core/v1/from/groups.js.map +0 -1
- package/dist/core/v1/from/index.js +0 -8
- package/dist/core/v1/from/index.js.map +0 -1
- package/dist/core/v1/from/locations.js +0 -14
- package/dist/core/v1/from/locations.js.map +0 -1
- package/dist/core/v1/from/locked-times.js +0 -13
- package/dist/core/v1/from/locked-times.js.map +0 -1
- package/dist/core/v1/from/overlap-groups.js +0 -13
- package/dist/core/v1/from/overlap-groups.js.map +0 -1
- package/dist/core/v1/from/periods.js +0 -14
- package/dist/core/v1/from/periods.js.map +0 -1
- package/dist/core/v1/from/schedules.d.ts +0 -139
- package/dist/core/v1/from/schedules.js +0 -36
- package/dist/core/v1/from/schedules.js.map +0 -1
- package/dist/core/v1/from/teachers.js +0 -14
- package/dist/core/v1/from/teachers.js.map +0 -1
- package/dist/core/v1/index.d.ts +0 -14
- package/dist/core/v1/index.js +0 -12
- package/dist/core/v1/index.js.map +0 -1
- package/dist/core/v1/to/available-locations.js +0 -11
- package/dist/core/v1/to/available-locations.js.map +0 -1
- package/dist/core/v1/to/courses.js +0 -33
- package/dist/core/v1/to/courses.js.map +0 -1
- package/dist/core/v1/to/days.js +0 -13
- package/dist/core/v1/to/days.js.map +0 -1
- package/dist/core/v1/to/events.js +0 -35
- package/dist/core/v1/to/events.js.map +0 -1
- package/dist/core/v1/to/groups.js +0 -24
- package/dist/core/v1/to/groups.js.map +0 -1
- package/dist/core/v1/to/index.js +0 -10
- package/dist/core/v1/to/index.js.map +0 -1
- package/dist/core/v1/to/intervals.js +0 -14
- package/dist/core/v1/to/intervals.js.map +0 -1
- package/dist/core/v1/to/locations.js +0 -20
- package/dist/core/v1/to/locations.js.map +0 -1
- package/dist/core/v1/to/locked-times.js +0 -25
- package/dist/core/v1/to/locked-times.js.map +0 -1
- package/dist/core/v1/to/overlap-groups.js +0 -30
- package/dist/core/v1/to/overlap-groups.js.map +0 -1
- package/dist/core/v1/to/periods.js +0 -10
- package/dist/core/v1/to/periods.js.map +0 -1
- package/dist/core/v1/to/persons.js +0 -22
- package/dist/core/v1/to/persons.js.map +0 -1
- package/dist/core/v1/to/schedules.d.ts +0 -170
- package/dist/core/v1/to/schedules.js +0 -32
- package/dist/core/v1/to/schedules.js.map +0 -1
- package/dist/core/v1/to/settings.js +0 -13
- package/dist/core/v1/to/settings.js.map +0 -1
- package/dist/core/v1/to/teachers.js +0 -20
- package/dist/core/v1/to/teachers.js.map +0 -1
- package/dist/core/v1/types/areas.d.ts +0 -16
- package/dist/core/v1/types/available-locations.d.ts +0 -13
- package/dist/core/v1/types/break-lengths.d.ts +0 -5
- package/dist/core/v1/types/common/coalesced.d.ts +0 -10
- package/dist/core/v1/types/courses.d.ts +0 -54
- package/dist/core/v1/types/days.d.ts +0 -14
- package/dist/core/v1/types/division-settings.d.ts +0 -39
- package/dist/core/v1/types/divisions.d.ts +0 -45
- package/dist/core/v1/types/events.d.ts +0 -60
- package/dist/core/v1/types/groups.d.ts +0 -37
- package/dist/core/v1/types/index.d.ts +0 -41
- package/dist/core/v1/types/intervals.d.ts +0 -17
- package/dist/core/v1/types/locations.d.ts +0 -32
- package/dist/core/v1/types/locked-times.d.ts +0 -39
- package/dist/core/v1/types/meta.d.ts +0 -9
- package/dist/core/v1/types/overlap-groups.d.ts +0 -26
- package/dist/core/v1/types/periods.d.ts +0 -22
- package/dist/core/v1/types/persons.d.ts +0 -40
- package/dist/core/v1/types/teachers.d.ts +0 -34
- package/dist/core/v2/from/courses.js +0 -13
- package/dist/core/v2/from/courses.js.map +0 -1
- package/dist/core/v2/from/events.js +0 -12
- package/dist/core/v2/from/events.js.map +0 -1
- package/dist/core/v2/from/exceptions.js +0 -13
- package/dist/core/v2/from/exceptions.js.map +0 -1
- package/dist/core/v2/from/groups.js +0 -13
- package/dist/core/v2/from/groups.js.map +0 -1
- package/dist/core/v2/from/index.js.map +0 -1
- package/dist/core/v2/from/locations.js +0 -13
- package/dist/core/v2/from/locations.js.map +0 -1
- package/dist/core/v2/from/locked-times.js +0 -13
- package/dist/core/v2/from/locked-times.js.map +0 -1
- package/dist/core/v2/from/overlap-groups.js +0 -13
- package/dist/core/v2/from/overlap-groups.js.map +0 -1
- package/dist/core/v2/from/periods.js +0 -13
- package/dist/core/v2/from/periods.js.map +0 -1
- package/dist/core/v2/from/persons.js +0 -12
- package/dist/core/v2/from/persons.js.map +0 -1
- package/dist/core/v2/from/root-intervals.js +0 -13
- package/dist/core/v2/from/root-intervals.js.map +0 -1
- package/dist/core/v2/from/schedules.d.ts +0 -245
- package/dist/core/v2/from/schedules.js +0 -48
- package/dist/core/v2/from/schedules.js.map +0 -1
- package/dist/core/v2/from/syllabuses.js.map +0 -1
- package/dist/core/v2/from/teachers.js +0 -13
- package/dist/core/v2/from/teachers.js.map +0 -1
- package/dist/core/v2/index.d.ts +0 -16
- package/dist/core/v2/index.js +0 -12
- package/dist/core/v2/index.js.map +0 -1
- package/dist/core/v2/to/available-locations.js +0 -11
- package/dist/core/v2/to/available-locations.js.map +0 -1
- package/dist/core/v2/to/courses.js +0 -44
- package/dist/core/v2/to/courses.js.map +0 -1
- package/dist/core/v2/to/days.js +0 -13
- package/dist/core/v2/to/days.js.map +0 -1
- package/dist/core/v2/to/division.js +0 -10
- package/dist/core/v2/to/division.js.map +0 -1
- package/dist/core/v2/to/events.js +0 -47
- package/dist/core/v2/to/events.js.map +0 -1
- package/dist/core/v2/to/exceptions.js +0 -29
- package/dist/core/v2/to/exceptions.js.map +0 -1
- package/dist/core/v2/to/groups.js +0 -34
- package/dist/core/v2/to/groups.js.map +0 -1
- package/dist/core/v2/to/index.d.ts +0 -9
- package/dist/core/v2/to/index.js +0 -10
- package/dist/core/v2/to/index.js.map +0 -1
- package/dist/core/v2/to/intervals.js +0 -13
- package/dist/core/v2/to/intervals.js.map +0 -1
- package/dist/core/v2/to/locations.js +0 -35
- package/dist/core/v2/to/locations.js.map +0 -1
- package/dist/core/v2/to/locked-times.js +0 -25
- package/dist/core/v2/to/locked-times.js.map +0 -1
- package/dist/core/v2/to/overlap-groups.js +0 -30
- package/dist/core/v2/to/overlap-groups.js.map +0 -1
- package/dist/core/v2/to/periods.js +0 -10
- package/dist/core/v2/to/periods.js.map +0 -1
- package/dist/core/v2/to/persons.js +0 -25
- package/dist/core/v2/to/persons.js.map +0 -1
- package/dist/core/v2/to/root-intervals.js +0 -10
- package/dist/core/v2/to/root-intervals.js.map +0 -1
- package/dist/core/v2/to/schedules.d.ts +0 -249
- package/dist/core/v2/to/schedules.js +0 -40
- package/dist/core/v2/to/schedules.js.map +0 -1
- package/dist/core/v2/to/settings.js +0 -13
- package/dist/core/v2/to/settings.js.map +0 -1
- package/dist/core/v2/to/syllabuses.js +0 -16
- package/dist/core/v2/to/syllabuses.js.map +0 -1
- package/dist/core/v2/to/teachers.js +0 -28
- package/dist/core/v2/to/teachers.js.map +0 -1
- package/dist/core/v2/types/areas.d.ts +0 -16
- package/dist/core/v2/types/available-locations.d.ts +0 -13
- package/dist/core/v2/types/break-lengths.d.ts +0 -5
- package/dist/core/v2/types/common/coalesced.d.ts +0 -10
- package/dist/core/v2/types/common/maximum-schedule-span.d.ts +0 -8
- package/dist/core/v2/types/common/planned-schedule-duration.d.ts +0 -7
- package/dist/core/v2/types/courses.d.ts +0 -76
- package/dist/core/v2/types/days.d.ts +0 -14
- package/dist/core/v2/types/divisions.d.ts +0 -54
- package/dist/core/v2/types/events.d.ts +0 -76
- package/dist/core/v2/types/groups.d.ts +0 -50
- package/dist/core/v2/types/index.d.ts +0 -49
- package/dist/core/v2/types/intervals.d.ts +0 -17
- package/dist/core/v2/types/locations.d.ts +0 -38
- package/dist/core/v2/types/locked-times.d.ts +0 -44
- package/dist/core/v2/types/overlap-groups.d.ts +0 -26
- package/dist/core/v2/types/periods.d.ts +0 -25
- package/dist/core/v2/types/root-intervals.d.ts +0 -23
- package/dist/core/v2/types/schedules.d.ts +0 -38
- package/dist/core/v2/types/syllabus.d.ts +0 -27
- package/dist/vKlass/from/index.d.ts +0 -9
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
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
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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) => [
|
|
31
|
-
const groupsMap = new Map(schedule.groups.map((x) => [
|
|
32
|
-
const teachersMap = new Map(schedule.teachers.map((x) => [
|
|
33
|
-
const coursesMap = new Map(schedule.courses.map((x) => [
|
|
34
|
-
const events = schedule.events.
|
|
35
|
-
if (event.parked) return
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
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(
|
|
43
|
-
const teachers = (event.teachers ?? course.teachers ?? []).map((x) => teachersMap.get(
|
|
44
|
-
const groups = (event.groups ?? course.groups ?? []).map((x) => groupsMap.get(
|
|
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
|
|
43
|
+
id: getVertexId(event, options),
|
|
47
44
|
externalid: event.ids?.toString(),
|
|
48
45
|
groupid: course.ids,
|
|
49
46
|
group: course.displayName,
|
|
50
|
-
dayid: (start
|
|
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
|
|
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
|
|
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":"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"}
|
package/dist/Excel/index.d.ts
CHANGED
|
@@ -1,13 +1,64 @@
|
|
|
1
|
-
import { Types as Types$2 } from "../core/
|
|
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) =>
|
|
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;
|
package/dist/Excel/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["V2Map","V1Map"],"sources":["../../src/Excel/index.ts"],"sourcesContent":["import { Map as V1Map
|
|
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
|
|
5
|
+
function generateId(map) {
|
|
6
6
|
let id;
|
|
7
7
|
do
|
|
8
8
|
id = nanoid();
|
|
9
|
-
while (map
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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":"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"}
|
package/dist/Excel/v1/index.d.ts
CHANGED
|
@@ -1,10 +1,38 @@
|
|
|
1
|
-
import { Types as Types$1 } from "../../core/
|
|
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) =>
|
|
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
|
|
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 {
|
|
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
|
|
5
|
+
function generateId(map) {
|
|
6
6
|
let id;
|
|
7
7
|
do
|
|
8
8
|
id = nanoid(8);
|
|
9
|
-
while (map
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
482
|
+
} catch {
|
|
483
483
|
warnings.push({
|
|
484
484
|
code: "invalid_lesson_durations",
|
|
485
485
|
context: x.lesson_durations
|