@ueu/ueu-canvas 0.0.2 → 0.0.4
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/dist/Account.d.ts +22 -0
- package/dist/Account.d.ts.map +1 -0
- package/dist/NotImplementedException.d.ts +4 -0
- package/dist/NotImplementedException.d.ts.map +1 -0
- package/dist/__mocks__/Account.d.ts +17 -0
- package/dist/__mocks__/Account.d.ts.map +1 -0
- package/dist/__mocks__/index.d.ts +9 -0
- package/dist/__mocks__/index.d.ts.map +1 -0
- package/dist/__mocks__/mockAccountData.d.ts +6 -0
- package/dist/__mocks__/mockAccountData.d.ts.map +1 -0
- package/dist/__mocks__/mockEnrollment.d.ts +3 -0
- package/dist/__mocks__/mockEnrollment.d.ts.map +1 -0
- package/dist/__mocks__/mockRubricData.d.ts +20 -0
- package/dist/__mocks__/mockRubricData.d.ts.map +1 -0
- package/dist/__mocks__/mockTabData.d.ts +4 -0
- package/dist/__mocks__/mockTabData.d.ts.map +1 -0
- package/dist/__mocks__/mockTermData.d.ts +3 -0
- package/dist/__mocks__/mockTermData.d.ts.map +1 -0
- package/dist/__mocks__/mockUserData.d.ts +3 -0
- package/dist/__mocks__/mockUserData.d.ts.map +1 -0
- package/dist/__mocks__/utils.d.ts +3 -0
- package/dist/__mocks__/utils.d.ts.map +1 -0
- package/dist/__tests__/canvasUtils.test.d.ts +2 -0
- package/dist/__tests__/canvasUtils.test.d.ts.map +1 -0
- package/dist/__tests__/fetch.test.d.ts +2 -0
- package/dist/__tests__/fetch.test.d.ts.map +1 -0
- package/dist/__tests__/profile.test.d.ts +2 -0
- package/dist/__tests__/profile.test.d.ts.map +1 -0
- package/dist/__tests__/rubrics.test.d.ts +2 -0
- package/dist/__tests__/rubrics.test.d.ts.map +1 -0
- package/dist/baseCanvasObject.d.ts +41 -0
- package/dist/baseCanvasObject.d.ts.map +1 -0
- package/dist/canvasDataDefs.d.ts +97 -0
- package/dist/canvasDataDefs.d.ts.map +1 -0
- package/dist/canvasUtils.d.ts +65 -0
- package/dist/canvasUtils.d.ts.map +1 -0
- package/dist/consts.d.ts +3 -0
- package/dist/consts.d.ts.map +1 -0
- package/dist/content/BaseContentItem.d.ts +32 -0
- package/dist/content/BaseContentItem.d.ts.map +1 -0
- package/dist/content/ContentKind.d.ts +28 -0
- package/dist/content/ContentKind.d.ts.map +1 -0
- package/dist/content/__mocks__/determineContent.d.ts +65 -0
- package/dist/content/__mocks__/determineContent.d.ts.map +1 -0
- package/dist/content/__mocks__/mockAssignmentSubmission.d.ts +4 -0
- package/dist/content/__mocks__/mockAssignmentSubmission.d.ts.map +1 -0
- package/dist/content/__mocks__/mockContentData.d.ts +8 -0
- package/dist/content/__mocks__/mockContentData.d.ts.map +1 -0
- package/dist/content/__mocks__/openThisContentInTarget.d.ts +3 -0
- package/dist/content/__mocks__/openThisContentInTarget.d.ts.map +1 -0
- package/dist/content/__testingUtils__/utils.d.ts +6 -0
- package/dist/content/__testingUtils__/utils.d.ts.map +1 -0
- package/dist/content/__tests__/determineContent.test.d.ts +2 -0
- package/dist/content/__tests__/determineContent.test.d.ts.map +1 -0
- package/dist/content/__tests__/getContentFuncs.test.d.ts +2 -0
- package/dist/content/__tests__/getContentFuncs.test.d.ts.map +1 -0
- package/dist/content/assignments/Assignment.d.ts +15 -0
- package/dist/content/assignments/Assignment.d.ts.map +1 -0
- package/dist/content/assignments/AssignmentKind.d.ts +14 -0
- package/dist/content/assignments/AssignmentKind.d.ts.map +1 -0
- package/dist/content/assignments/__tests__/AssignmentKind.test.d.ts +2 -0
- package/dist/content/assignments/__tests__/AssignmentKind.test.d.ts.map +1 -0
- package/dist/content/assignments/__tests__/assignments.test.d.ts +2 -0
- package/dist/content/assignments/__tests__/assignments.test.d.ts.map +1 -0
- package/dist/content/assignments/deleteAssignmentGroup.d.ts +3 -0
- package/dist/content/assignments/deleteAssignmentGroup.d.ts.map +1 -0
- package/dist/content/assignments/genAssignmentGroups.d.ts +5 -0
- package/dist/content/assignments/genAssignmentGroups.d.ts.map +1 -0
- package/dist/content/assignments/index.d.ts +11 -0
- package/dist/content/assignments/index.d.ts.map +1 -0
- package/dist/content/assignments/legacy.d.ts +4 -0
- package/dist/content/assignments/legacy.d.ts.map +1 -0
- package/dist/content/assignments/updateAssignmentDueDates.d.ts +7 -0
- package/dist/content/assignments/updateAssignmentDueDates.d.ts.map +1 -0
- package/dist/content/determineContent.d.ts +19 -0
- package/dist/content/determineContent.d.ts.map +1 -0
- package/dist/content/discussions/Discussion.d.ts +13 -0
- package/dist/content/discussions/Discussion.d.ts.map +1 -0
- package/dist/content/discussions/DiscussionKind.d.ts +14 -0
- package/dist/content/discussions/DiscussionKind.d.ts.map +1 -0
- package/dist/content/discussions/__tests__/DiscussionKind.test.d.ts +2 -0
- package/dist/content/discussions/__tests__/DiscussionKind.test.d.ts.map +1 -0
- package/dist/content/discussions/genEquivalentDiscussionData.d.ts +32 -0
- package/dist/content/discussions/genEquivalentDiscussionData.d.ts.map +1 -0
- package/{src/content/discussions/index.ts → dist/content/discussions/index.d.ts} +1 -0
- package/dist/content/discussions/index.d.ts.map +1 -0
- package/dist/content/getContentFuncs.d.ts +3 -0
- package/dist/content/getContentFuncs.d.ts.map +1 -0
- package/{src/content/index.ts → dist/content/index.d.ts} +3 -3
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/openThisContentInTarget.d.ts +4 -0
- package/dist/content/openThisContentInTarget.d.ts.map +1 -0
- package/dist/content/pages/Page.d.ts +15 -0
- package/dist/content/pages/Page.d.ts.map +1 -0
- package/dist/content/pages/PageKind.d.ts +15 -0
- package/dist/content/pages/PageKind.d.ts.map +1 -0
- package/dist/content/pages/__tests__/PageKind.test.d.ts +2 -0
- package/dist/content/pages/__tests__/PageKind.test.d.ts.map +1 -0
- package/dist/content/pages/__tests__/learningMaterialsForModule.d.ts +2 -0
- package/dist/content/pages/__tests__/learningMaterialsForModule.d.ts.map +1 -0
- package/dist/content/pages/index.d.ts +14 -0
- package/dist/content/pages/index.d.ts.map +1 -0
- package/dist/content/pages/learningMaterialsForModule.d.ts +7 -0
- package/dist/content/pages/learningMaterialsForModule.d.ts.map +1 -0
- package/dist/content/pages/types.d.ts +11 -0
- package/dist/content/pages/types.d.ts.map +1 -0
- package/dist/content/quizzes/Quiz.d.ts +9 -0
- package/dist/content/quizzes/Quiz.d.ts.map +1 -0
- package/dist/content/quizzes/QuizKind.d.ts +13 -0
- package/dist/content/quizzes/QuizKind.d.ts.map +1 -0
- package/dist/content/quizzes/__tests__/QuizKind.test.d.ts +2 -0
- package/dist/content/quizzes/__tests__/QuizKind.test.d.ts.map +1 -0
- package/dist/content/quizzes/index.d.ts +2 -0
- package/dist/content/quizzes/index.d.ts.map +1 -0
- package/dist/content/quizzes/types.d.ts +45 -0
- package/dist/content/quizzes/types.d.ts.map +1 -0
- package/dist/content/types.d.ts +229 -0
- package/dist/content/types.d.ts.map +1 -0
- package/dist/course/Course.d.ts +87 -0
- package/dist/course/Course.d.ts.map +1 -0
- package/dist/course/IBlueprintCourse.d.ts +7 -0
- package/dist/course/IBlueprintCourse.d.ts.map +1 -0
- package/dist/course/__mocks__/blueprint.d.ts +14 -0
- package/dist/course/__mocks__/blueprint.d.ts.map +1 -0
- package/dist/course/__mocks__/mockCourseData.d.ts +3 -0
- package/dist/course/__mocks__/mockCourseData.d.ts.map +1 -0
- package/dist/course/__mocks__/mockLatePolicy.d.ts +4 -0
- package/dist/course/__mocks__/mockLatePolicy.d.ts.map +1 -0
- package/dist/course/__mocks__/mockModuleData.d.ts +7 -0
- package/dist/course/__mocks__/mockModuleData.d.ts.map +1 -0
- package/dist/course/__mocks__/mockProgressData.d.ts +3 -0
- package/dist/course/__mocks__/mockProgressData.d.ts.map +1 -0
- package/dist/course/__tests__/Course.test.d.ts +2 -0
- package/dist/course/__tests__/Course.test.d.ts.map +1 -0
- package/dist/course/__tests__/blueprint.test.d.ts +2 -0
- package/dist/course/__tests__/blueprint.test.d.ts.map +1 -0
- package/dist/course/__tests__/changeStartDate.test.d.ts +2 -0
- package/dist/course/__tests__/changeStartDate.test.d.ts.map +1 -0
- package/dist/course/__tests__/index.test.d.ts +2 -0
- package/dist/course/__tests__/index.test.d.ts.map +1 -0
- package/dist/course/blueprint.d.ts +21 -0
- package/dist/course/blueprint.d.ts.map +1 -0
- package/dist/course/cachedGetAssociatedCoursesFunc.d.ts +4 -0
- package/dist/course/cachedGetAssociatedCoursesFunc.d.ts.map +1 -0
- package/dist/course/changeStartDate.d.ts +25 -0
- package/dist/course/changeStartDate.d.ts.map +1 -0
- package/dist/course/code.d.ts +9 -0
- package/dist/course/code.d.ts.map +1 -0
- package/dist/course/courseTypes.d.ts +102 -0
- package/dist/course/courseTypes.d.ts.map +1 -0
- package/dist/course/getCourseIdFromUrl.d.ts +3 -0
- package/dist/course/getCourseIdFromUrl.d.ts.map +1 -0
- package/dist/course/getSections.d.ts +5 -0
- package/dist/course/getSections.d.ts.map +1 -0
- package/dist/course/getTermNameFromSections.d.ts +3 -0
- package/dist/course/getTermNameFromSections.d.ts.map +1 -0
- package/dist/course/index.d.ts +12 -0
- package/dist/course/index.d.ts.map +1 -0
- package/dist/course/migration/__mocks__/mockMigrationData.d.ts +6 -0
- package/dist/course/migration/__mocks__/mockMigrationData.d.ts.map +1 -0
- package/dist/course/migration/__tests__/migration.test.d.ts +2 -0
- package/dist/course/migration/__tests__/migration.test.d.ts.map +1 -0
- package/dist/course/migration/__tests__/migrationCache.test.d.ts +2 -0
- package/dist/course/migration/__tests__/migrationCache.test.d.ts.map +1 -0
- package/dist/course/migration/index.d.ts +47 -0
- package/dist/course/migration/index.d.ts.map +1 -0
- package/dist/course/migration/migrationCache.d.ts +12 -0
- package/dist/course/migration/migrationCache.d.ts.map +1 -0
- package/dist/course/modules.d.ts +35 -0
- package/dist/course/modules.d.ts.map +1 -0
- package/dist/course/notABlueprintError.d.ts +4 -0
- package/dist/course/notABlueprintError.d.ts.map +1 -0
- package/dist/course/references/getReferencesForText.d.ts +4 -0
- package/dist/course/references/getReferencesForText.d.ts.map +1 -0
- package/dist/course/references/getReferencesForText.test.d.ts +2 -0
- package/dist/course/references/getReferencesForText.test.d.ts.map +1 -0
- package/dist/course/references/getReferencesTemplate.d.ts +13 -0
- package/dist/course/references/getReferencesTemplate.d.ts.map +1 -0
- package/dist/course/references/mockCiteAsResponse.d.ts +127 -0
- package/dist/course/references/mockCiteAsResponse.d.ts.map +1 -0
- package/dist/course/retireBlueprint.d.ts +4 -0
- package/dist/course/retireBlueprint.d.ts.map +1 -0
- package/dist/course/toolbox.d.ts +18 -0
- package/dist/course/toolbox.d.ts.map +1 -0
- package/dist/date.d.ts +18 -0
- package/dist/date.d.ts.map +1 -0
- package/dist/enrollments/EnrollmentTypes.d.ts +60 -0
- package/dist/enrollments/EnrollmentTypes.d.ts.map +1 -0
- package/dist/enrollments/enrollmentRole.d.ts +5 -0
- package/dist/enrollments/enrollmentRole.d.ts.map +1 -0
- package/dist/enrollments/getEnrollmentGenerator.d.ts +40 -0
- package/dist/enrollments/getEnrollmentGenerator.d.ts.map +1 -0
- package/dist/enrollments/index.d.ts +4 -0
- package/dist/enrollments/index.d.ts.map +1 -0
- package/dist/fetch/__mocks__/fetchJson.d.ts +4 -0
- package/dist/fetch/__mocks__/fetchJson.d.ts.map +1 -0
- package/dist/fetch/__mocks__/getPagedDataGenerator.d.ts +4 -0
- package/dist/fetch/__mocks__/getPagedDataGenerator.d.ts.map +1 -0
- package/dist/fetch/__mocks__/index.d.ts +4 -0
- package/dist/fetch/__mocks__/index.d.ts.map +1 -0
- package/dist/fetch/apiGetConfig.d.ts +4 -0
- package/dist/fetch/apiGetConfig.d.ts.map +1 -0
- package/dist/fetch/apiWriteConfig.d.ts +4 -0
- package/dist/fetch/apiWriteConfig.d.ts.map +1 -0
- package/dist/fetch/canvasDataFetchGenFunc.d.ts +6 -0
- package/dist/fetch/canvasDataFetchGenFunc.d.ts.map +1 -0
- package/dist/fetch/fetchJson.d.ts +3 -0
- package/dist/fetch/fetchJson.d.ts.map +1 -0
- package/dist/fetch/getPagedDataGenerator.d.ts +63 -0
- package/dist/fetch/getPagedDataGenerator.d.ts.map +1 -0
- package/{src/fetch/index.ts → dist/fetch/index.d.ts} +1 -0
- package/dist/fetch/index.d.ts.map +1 -0
- package/dist/fetch/utils.d.ts +4 -0
- package/dist/fetch/utils.d.ts.map +1 -0
- package/dist/files.d.ts +29 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/fixes/annotations.d.ts +15 -0
- package/dist/fixes/annotations.d.ts.map +1 -0
- package/dist/fixes/index.d.ts +36 -0
- package/dist/fixes/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.d.ts} +5 -10
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8966 -0
- package/dist/profile.d.ts +24 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/rubricTypes.d.ts +71 -0
- package/dist/rubricTypes.d.ts.map +1 -0
- package/dist/rubrics.d.ts +9 -0
- package/dist/rubrics.d.ts.map +1 -0
- package/dist/term/Term.d.ts +21 -0
- package/dist/term/Term.d.ts.map +1 -0
- package/dist/term/__tests__/dateFromTermName.test.d.ts +2 -0
- package/dist/term/__tests__/dateFromTermName.test.d.ts.map +1 -0
- package/dist/term/__tests__/getTermsGenerator.test.d.ts +2 -0
- package/dist/term/__tests__/getTermsGenerator.test.d.ts.map +1 -0
- package/dist/term/dateFromTermName.d.ts +4 -0
- package/dist/term/dateFromTermName.d.ts.map +1 -0
- package/dist/term/getTermsGenerator.d.ts +7 -0
- package/dist/term/getTermsGenerator.d.ts.map +1 -0
- package/dist/term/index.d.ts +4 -0
- package/dist/term/index.d.ts.map +1 -0
- package/dist/toolbox.d.ts +5 -0
- package/dist/toolbox.d.ts.map +1 -0
- package/dist/types.d.ts +120 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/users/getUserGenerator.d.ts +19 -0
- package/dist/users/getUserGenerator.d.ts.map +1 -0
- package/dist/users/index.d.ts +2 -0
- package/dist/users/index.d.ts.map +1 -0
- package/package.json +51 -45
- package/LICENSE +0 -21
- package/html-loader.js +0 -7
- package/jest.config.js +0 -20
- package/src/Account.ts +0 -69
- package/src/NotImplementedException.ts +0 -3
- package/src/__mocks__/Account.ts +0 -55
- package/src/__mocks__/index.ts +0 -8
- package/src/__mocks__/mockAccountData.ts +0 -43
- package/src/__mocks__/mockEnrollment.ts +0 -22
- package/src/__mocks__/mockRubricData.ts +0 -71
- package/src/__mocks__/mockTabData.ts +0 -13
- package/src/__mocks__/mockTermData.ts +0 -7
- package/src/__mocks__/mockUserData.ts +0 -14
- package/src/__mocks__/utils.ts +0 -9
- package/src/__tests__/canvasUtils.test.ts +0 -527
- package/src/__tests__/fetch.test.ts +0 -310
- package/src/__tests__/profile.test.ts +0 -19
- package/src/__tests__/rubrics.test.ts +0 -131
- package/src/baseCanvasObject.ts +0 -139
- package/src/canvasDataDefs.ts +0 -124
- package/src/canvasUtils.ts +0 -420
- package/src/consts.ts +0 -2
- package/src/content/BaseContentItem.ts +0 -219
- package/src/content/ContentKind.ts +0 -85
- package/src/content/__mocks__/determineContent.ts +0 -27
- package/src/content/__mocks__/mockAssignmentSubmission.ts +0 -37
- package/src/content/__mocks__/mockContentData.ts +0 -98
- package/src/content/__mocks__/openThisContentInTarget.ts +0 -2
- package/src/content/__testingUtils__/utils.ts +0 -47
- package/src/content/__tests__/determineContent.test.ts +0 -101
- package/src/content/__tests__/getContentFuncs.test.ts +0 -78
- package/src/content/assignments/Assignment.ts +0 -69
- package/src/content/assignments/AssignmentKind.ts +0 -29
- package/src/content/assignments/__tests__/AssignmentKind.test.ts +0 -31
- package/src/content/assignments/__tests__/assignments.test.ts +0 -72
- package/src/content/assignments/deleteAssignmentGroup.ts +0 -15
- package/src/content/assignments/genAssignmentGroups.ts +0 -15
- package/src/content/assignments/index.ts +0 -31
- package/src/content/assignments/legacy.ts +0 -11
- package/src/content/assignments/updateAssignmentDueDates.ts +0 -25
- package/src/content/determineContent.ts +0 -72
- package/src/content/discussions/Discussion.ts +0 -32
- package/src/content/discussions/DiscussionKind.ts +0 -30
- package/src/content/discussions/__tests__/DiscussionKind.test.ts +0 -31
- package/src/content/discussions/genEquivalentDiscussionData.ts +0 -97
- package/src/content/getContentFuncs.ts +0 -30
- package/src/content/openThisContentInTarget.ts +0 -38
- package/src/content/pages/Page.ts +0 -35
- package/src/content/pages/PageKind.ts +0 -39
- package/src/content/pages/__tests__/PageKind.test.ts +0 -86
- package/src/content/pages/__tests__/learningMaterialsForModule.ts +0 -57
- package/src/content/pages/index.ts +0 -12
- package/src/content/pages/learningMaterialsForModule.ts +0 -16
- package/src/content/pages/types.ts +0 -11
- package/src/content/quizzes/Quiz.ts +0 -25
- package/src/content/quizzes/QuizKind.ts +0 -23
- package/src/content/quizzes/__tests__/QuizKind.test.ts +0 -30
- package/src/content/quizzes/index.ts +0 -3
- package/src/content/quizzes/types.ts +0 -101
- package/src/content/types.ts +0 -302
- package/src/course/Course.ts +0 -538
- package/src/course/IBlueprintCourse.ts +0 -8
- package/src/course/__mocks__/blueprint.ts +0 -31
- package/src/course/__mocks__/mockCourseData.ts +0 -49
- package/src/course/__mocks__/mockLatePolicy.ts +0 -14
- package/src/course/__mocks__/mockModuleData.ts +0 -60
- package/src/course/__mocks__/mockProgressData.ts +0 -28
- package/src/course/__mocks__/syllabus.gallant.html +0 -302
- package/src/course/__mocks__/syllabus.goofus.html +0 -288
- package/src/course/__mocks__/syllabus.grad.html +0 -282
- package/src/course/__tests__/Course.test.ts +0 -91
- package/src/course/__tests__/blueprint.test.ts +0 -292
- package/src/course/__tests__/changeStartDate.test.ts +0 -180
- package/src/course/__tests__/index.test.ts +0 -104
- package/src/course/blueprint.ts +0 -116
- package/src/course/cachedGetAssociatedCoursesFunc.ts +0 -13
- package/src/course/changeStartDate.ts +0 -139
- package/src/course/code.ts +0 -32
- package/src/course/courseTypes.ts +0 -161
- package/src/course/getCourseIdFromUrl.ts +0 -7
- package/src/course/getSections.ts +0 -9
- package/src/course/getTermNameFromSections.ts +0 -9
- package/src/course/index.ts +0 -12
- package/src/course/migration/__mocks__/mockMigrationData.ts +0 -39
- package/src/course/migration/__tests__/migration.test.ts +0 -173
- package/src/course/migration/__tests__/migrationCache.test.ts +0 -45
- package/src/course/migration/index.ts +0 -134
- package/src/course/migration/migrationCache.ts +0 -56
- package/src/course/modules.ts +0 -113
- package/src/course/notABlueprintError.ts +0 -3
- package/src/course/references/getReferencesForText.test.ts +0 -18
- package/src/course/references/getReferencesForText.ts +0 -12
- package/src/course/references/getReferencesTemplate.ts +0 -28
- package/src/course/references/mockCiteAsResponse.ts +0 -320
- package/src/course/retireBlueprint.ts +0 -21
- package/src/course/toolbox.ts +0 -107
- package/src/date.ts +0 -119
- package/src/enrollments/EnrollmentTypes.ts +0 -76
- package/src/enrollments/enrollmentRole.ts +0 -6
- package/src/enrollments/getEnrollmentGenerator.ts +0 -79
- package/src/enrollments/index.ts +0 -3
- package/src/fetch/__mocks__/fetchJson.ts +0 -1
- package/src/fetch/__mocks__/getPagedDataGenerator.ts +0 -8
- package/src/fetch/__mocks__/index.ts +0 -6
- package/src/fetch/apiGetConfig.ts +0 -10
- package/src/fetch/apiWriteConfig.ts +0 -13
- package/src/fetch/canvasDataFetchGenFunc.ts +0 -20
- package/src/fetch/fetchJson.ts +0 -22
- package/src/fetch/getPagedDataGenerator.ts +0 -157
- package/src/fetch/utils.ts +0 -16
- package/src/files.ts +0 -60
- package/src/fixes/annotations.ts +0 -105
- package/src/fixes/index.ts +0 -81
- package/src/profile.ts +0 -253
- package/src/rubricTypes.ts +0 -82
- package/src/rubrics.ts +0 -48
- package/src/term/Term.ts +0 -77
- package/src/term/__tests__/dateFromTermName.test.ts +0 -22
- package/src/term/__tests__/getTermsGenerator.test.ts +0 -24
- package/src/term/dateFromTermName.ts +0 -17
- package/src/term/getTermsGenerator.ts +0 -21
- package/src/term/index.ts +0 -3
- package/src/toolbox.ts +0 -19
- package/src/types.ts +0 -134
- package/src/users/getUserGenerator.ts +0 -39
- package/src/users/index.ts +0 -1
- package/tsconfig.json +0 -46
- package/webpack.config.js +0 -122
package/src/course/blueprint.ts
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import {formDataify, getItemTypeAndId, ICanvasCallConfig, renderAsyncGen} from "../canvasUtils";
|
|
2
|
-
import {IModuleData, IModuleItemData} from "../canvasDataDefs";
|
|
3
|
-
import {getCourseDataGenerator, getCourseGenerator} from "./toolbox";
|
|
4
|
-
import {GetCoursesFromAccountOptions} from "./courseTypes";
|
|
5
|
-
import {baseCourseCode} from "@/course/code";
|
|
6
|
-
import {ICourseData, SectionData} from "@/types";
|
|
7
|
-
import {getPagedDataGenerator} from "@/fetch/getPagedDataGenerator";
|
|
8
|
-
import {fetchGetConfig} from "@/fetch/utils";
|
|
9
|
-
import {fetchJson} from "@/fetch/fetchJson";
|
|
10
|
-
import apiWriteConfig from "@/fetch/apiWriteConfig";
|
|
11
|
-
|
|
12
|
-
export function isBlueprint({blueprint}: { blueprint?: boolean | undefined }) {
|
|
13
|
-
return !!blueprint;
|
|
14
|
-
}
|
|
15
|
-
//W
|
|
16
|
-
export function genBlueprintDataForCode(courseCode:string | null, accountIds:number[], queryParams?: GetCoursesFromAccountOptions) {
|
|
17
|
-
if(!courseCode) {
|
|
18
|
-
console.warn("Course code not present")
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
const baseCode = baseCourseCode(courseCode);
|
|
22
|
-
if(!baseCode) {
|
|
23
|
-
console.warn(`Code ${courseCode} invalid`);
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return getCourseDataGenerator(baseCode, accountIds, undefined, fetchGetConfig<GetCoursesFromAccountOptions>({
|
|
28
|
-
blueprint: true,
|
|
29
|
-
include: ['concluded'],
|
|
30
|
-
}, {queryParams}));
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function sectionDataGenerator(courseId:number, config?: ICanvasCallConfig<GetCoursesFromAccountOptions>) {
|
|
34
|
-
const url = `/api/v1/courses/${courseId}/blueprint_templates/default/associated_courses`;
|
|
35
|
-
return getPagedDataGenerator<SectionData>(url, config);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
type BeginSyncOptions = {
|
|
40
|
-
config?: ICanvasCallConfig,
|
|
41
|
-
copy_settings?: boolean,
|
|
42
|
-
message?: string,
|
|
43
|
-
}
|
|
44
|
-
export async function beginBpSync(courseId:number, {message, copy_settings, config
|
|
45
|
-
}:BeginSyncOptions) {
|
|
46
|
-
const url = `/api/v1/courses/${courseId}/blueprint_templates/default/migrations`;
|
|
47
|
-
if(typeof copy_settings === 'undefined') copy_settings = true;
|
|
48
|
-
return await fetchJson(url, apiWriteConfig('POST', {
|
|
49
|
-
message,
|
|
50
|
-
copy_settings
|
|
51
|
-
}, config))
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
export async function getBlueprintsFromCode(code: string, accountIds: number[], config?: ICanvasCallConfig<GetCoursesFromAccountOptions>) {
|
|
56
|
-
const [_, baseCode] = code.match(/_(\w{4}\d{3})$/) || [];
|
|
57
|
-
if (!baseCode) return null;
|
|
58
|
-
const bps = getCourseGenerator(`BP_${baseCode}`, accountIds, undefined, config);
|
|
59
|
-
return (await renderAsyncGen(bps)).toSorted((a, b) => b.name.length - a.name.length);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export async function lockBlueprint(courseId:number, modules: IModuleData[]) {
|
|
63
|
-
let items: IModuleItemData[] = [];
|
|
64
|
-
|
|
65
|
-
items = items.concat(...modules.map(a => (<IModuleItemData[]>[]).concat(...a.items)));
|
|
66
|
-
const promises = items.map(async (item) => {
|
|
67
|
-
const url = `/api/v1/courses/${courseId}/blueprint_templates/default/restrict_item`;
|
|
68
|
-
const {type, id} = await getItemTypeAndId(item);
|
|
69
|
-
if ( typeof id === 'undefined') return;
|
|
70
|
-
const body = {
|
|
71
|
-
"content_type": type,
|
|
72
|
-
"content_id": id,
|
|
73
|
-
"restricted": true,
|
|
74
|
-
"_method": 'PUT'
|
|
75
|
-
}
|
|
76
|
-
await fetchJson(url, {
|
|
77
|
-
fetchInit: {
|
|
78
|
-
method: 'PUT',
|
|
79
|
-
body: formDataify(body)
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
});
|
|
84
|
-
await Promise.all(promises);
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export async function setAsBlueprint(courseId: number, config?: ICanvasCallConfig) {
|
|
89
|
-
const url = `/api/v1/courses/${courseId}`;
|
|
90
|
-
const payload = {
|
|
91
|
-
course: {
|
|
92
|
-
blueprint: true,
|
|
93
|
-
use_blueprint_restrictions_by_object_type: 0,
|
|
94
|
-
blueprint_restrictions: {
|
|
95
|
-
content: 1,
|
|
96
|
-
points: 1,
|
|
97
|
-
due_dates: 1,
|
|
98
|
-
availability_dates: 1,
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return await fetchJson(url, apiWriteConfig('PUT', payload, config)) as ICourseData;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
export async function unSetAsBlueprint(courseId: number, config?: ICanvasCallConfig) {
|
|
107
|
-
const url = `/api/v1/courses/${courseId}`;
|
|
108
|
-
const payload = {
|
|
109
|
-
course: {
|
|
110
|
-
blueprint: false
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
return await fetchJson(url, apiWriteConfig("PUT", payload, config)) as ICourseData;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {IBlueprintCourse} from "@canvas/course/IBlueprintCourse";
|
|
2
|
-
import {Course} from "@canvas/course/Course";
|
|
3
|
-
|
|
4
|
-
import {getSections} from "@canvas/course/getSections";
|
|
5
|
-
|
|
6
|
-
export function cachedGetAssociatedCoursesFunc(course: IBlueprintCourse) {
|
|
7
|
-
let cache: Course[] | null = null;
|
|
8
|
-
return async (redownload = false) => {
|
|
9
|
-
if (!redownload && cache) return cache;
|
|
10
|
-
cache = await getSections(course.id);
|
|
11
|
-
return cache;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import {Temporal} from "temporal-polyfill";
|
|
2
|
-
import {IModuleData} from "../canvasDataDefs";
|
|
3
|
-
import {findDateRange, oldDateToPlainDate} from "@/date";
|
|
4
|
-
|
|
5
|
-
import {Assignment} from "@/content/assignments/Assignment";
|
|
6
|
-
|
|
7
|
-
import {IAssignmentData} from "@canvas/content/types";
|
|
8
|
-
|
|
9
|
-
const DEFAULT_LOCALE = 'en-US';
|
|
10
|
-
|
|
11
|
-
export function getModuleUnlockStartDate(modules: IModuleData[]) {
|
|
12
|
-
if (modules.length == 0) throw new NoOverviewModuleFoundError();
|
|
13
|
-
const overviewModule = modules[0];
|
|
14
|
-
const unlockDateString = overviewModule.unlock_at;
|
|
15
|
-
if(!unlockDateString) return null;
|
|
16
|
-
const oldDate = new Date(unlockDateString);
|
|
17
|
-
return oldDateToPlainDate(oldDate);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function sortAssignmentsByDueDate(assignments:Assignment[]|IAssignmentData[]) {
|
|
21
|
-
return assignments
|
|
22
|
-
.toSorted((a, b) =>
|
|
23
|
-
{
|
|
24
|
-
a = a instanceof Assignment ? a.rawData : a;
|
|
25
|
-
b = b instanceof Assignment ? b.rawData : b;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if(a.due_at && b.due_at) {
|
|
29
|
-
|
|
30
|
-
return oldDateToPlainDate(new Date(b.due_at)).until(oldDateToPlainDate(new Date(a.due_at))).days;
|
|
31
|
-
}
|
|
32
|
-
if(a.due_at) return -1;
|
|
33
|
-
if(b.due_at) return 1;
|
|
34
|
-
return 0;
|
|
35
|
-
}
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function getStartDateAssignments(assignments:Assignment[]|IAssignmentData[]) {
|
|
41
|
-
const sorted = sortAssignmentsByDueDate(assignments).map(a => a.rawData ?? a).filter(a => a.due_at);
|
|
42
|
-
if (sorted.length == 0) throw new NoAssignmentsWithDueDatesError();
|
|
43
|
-
const firstAssignmentDue = new Date(sorted[0].due_at);
|
|
44
|
-
|
|
45
|
-
//Set to monday of that week.
|
|
46
|
-
const plainDateDue = oldDateToPlainDate(firstAssignmentDue);
|
|
47
|
-
const dayOfWeekOffset = 1 - plainDateDue.dayOfWeek;
|
|
48
|
-
return plainDateDue.add({days: dayOfWeekOffset});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function getUpdatedStyleTermName(termStart:Temporal.PlainDate, weekCount:string|number, locale=DEFAULT_LOCALE) {
|
|
52
|
-
const month = termStart.toLocaleString(locale, { month: '2-digit'})
|
|
53
|
-
const day = termStart.toLocaleString(locale, { day: '2-digit'})
|
|
54
|
-
const year = termStart.toLocaleString(locale, { year: '2-digit'})
|
|
55
|
-
return `DE${weekCount}W${month}.${day}.${year}`;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export function getOldUgTermName(termStart:Temporal.PlainDate, locale=DEFAULT_LOCALE) {
|
|
59
|
-
const year = termStart.toLocaleString(DEFAULT_LOCALE, { year: '2-digit'})
|
|
60
|
-
const month = termStart.toLocaleString(DEFAULT_LOCALE, { month: 'short'})
|
|
61
|
-
return `DE-${year}-${month}`;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export function getNewTermName(oldTermName:string, newTermStart:Temporal.PlainDate, locale= DEFAULT_LOCALE) {
|
|
65
|
-
const [termName, weekCount] = oldTermName.match(/DE(\d)W\d\d\.\d\d\.\d\d/) || [];
|
|
66
|
-
if (termName) return getUpdatedStyleTermName(newTermStart, weekCount);
|
|
67
|
-
const termNameUg = oldTermName.match(/(DE(?:.HL|)-\d\d)-(\w+)\w{2}?/i);
|
|
68
|
-
if (termNameUg) return getUpdatedStyleTermName(newTermStart, 5);
|
|
69
|
-
throw new MalformedSyllabusError(`Can't Recognize Term Name ${oldTermName}`)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function updatedDateSyllabusHtml(html: string, newStartDate: Temporal.PlainDate, locale = DEFAULT_LOCALE) {
|
|
73
|
-
const syllabusBody = document.createElement('div');
|
|
74
|
-
syllabusBody.innerHTML = html;
|
|
75
|
-
const syllabusCalloutBox = syllabusBody.querySelector('div.cbt-callout-box');
|
|
76
|
-
if(!syllabusCalloutBox) throw new MalformedSyllabusError("Can't find syllabus callout box");
|
|
77
|
-
|
|
78
|
-
const paras = Array.from(syllabusCalloutBox.querySelectorAll('p'));
|
|
79
|
-
const strongParas = paras.filter((para) => para.querySelector('strong'));
|
|
80
|
-
if (strongParas.length < 5) throw new MalformedSyllabusError(`Missing syllabus headers\n${strongParas}`);
|
|
81
|
-
|
|
82
|
-
const [
|
|
83
|
-
_courseNameEl,
|
|
84
|
-
termNameEl,
|
|
85
|
-
datesEl,
|
|
86
|
-
_instructorNameEl,
|
|
87
|
-
_instructorContactInfoEl,
|
|
88
|
-
_creditsEl
|
|
89
|
-
] = strongParas;
|
|
90
|
-
|
|
91
|
-
const changedText: string[] = [];
|
|
92
|
-
|
|
93
|
-
const oldTermName = termNameEl.textContent || '';
|
|
94
|
-
const oldDates = datesEl.textContent || '';
|
|
95
|
-
const dateRange = findDateRange(datesEl.innerHTML, locale);
|
|
96
|
-
if (!dateRange) throw new MalformedSyllabusError("Date range not found in syllabus");
|
|
97
|
-
|
|
98
|
-
const courseDuration = dateRange.start.until(dateRange.end);
|
|
99
|
-
const newEndDate = newStartDate.add(courseDuration);
|
|
100
|
-
const newTermName = getNewTermName(oldTermName, newStartDate)
|
|
101
|
-
|
|
102
|
-
const dateRangeText = `${dateToSyllabusString(newStartDate)} - ${dateToSyllabusString(newEndDate)}`;
|
|
103
|
-
|
|
104
|
-
termNameEl.innerHTML = `<strong>${syllabusHeaderName(termNameEl)}:</strong><span> ${newTermName}</span>`;
|
|
105
|
-
datesEl.innerHTML = `<strong>${syllabusHeaderName(datesEl)}:</strong><span> ${dateRangeText}</span>`;
|
|
106
|
-
|
|
107
|
-
changedText.push(`${oldTermName} -> ${termNameEl.textContent}`)
|
|
108
|
-
changedText.push(`${oldDates} -> ${datesEl.textContent}`)
|
|
109
|
-
|
|
110
|
-
const output = {
|
|
111
|
-
html : syllabusBody.innerHTML.replaceAll(/<p>\s*( )?<\/p>/ig, ''),
|
|
112
|
-
changedText,
|
|
113
|
-
}
|
|
114
|
-
syllabusBody.remove();
|
|
115
|
-
return output;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function dateToSyllabusString(date:Temporal.PlainDate) {
|
|
119
|
-
return `${date.toLocaleString(DEFAULT_LOCALE, { month: 'long', day: 'numeric' })}`;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export function syllabusHeaderName(el:HTMLElement) {
|
|
123
|
-
|
|
124
|
-
let [_, head] = /([^:]*):/.exec(el.innerHTML) ?? [];
|
|
125
|
-
head = head?.replaceAll(/<[^>]*>/g, '')
|
|
126
|
-
return head;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export class NoOverviewModuleFoundError extends Error {
|
|
130
|
-
public name = "NoOverviewModuleFoundError"
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export class MalformedSyllabusError extends Error {
|
|
134
|
-
public name="MalformedSyllabusError"
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
export class NoAssignmentsWithDueDatesError extends Error {
|
|
138
|
-
public name = "NoAssignmentsWithDueDatesError"
|
|
139
|
-
}
|
package/src/course/code.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import {COURSE_CODE_REGEX} from "@/course/Course";
|
|
2
|
-
|
|
3
|
-
export function parseCourseCode(code: string) {
|
|
4
|
-
const match = COURSE_CODE_REGEX.exec(code);
|
|
5
|
-
if (!match) return null;
|
|
6
|
-
const prefix = match[1] || "";
|
|
7
|
-
const courseCode = match[2] || "";
|
|
8
|
-
if (prefix.length > 0) {
|
|
9
|
-
return `${prefix}_${courseCode}`;
|
|
10
|
-
}
|
|
11
|
-
return courseCode;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function baseCourseCode(code: string) {
|
|
15
|
-
const match = COURSE_CODE_REGEX.exec(code);
|
|
16
|
-
if (!match) return null;
|
|
17
|
-
return match[2];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function stringIsCourseCode(code: string) {
|
|
21
|
-
return COURSE_CODE_REGEX.exec(code);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export class MalformedCourseCodeError extends Error {
|
|
25
|
-
name = "MalformedCourseCodeError";
|
|
26
|
-
courseCode:string|null;
|
|
27
|
-
constructor(courseCode:string|null, message?: string, options?:ErrorOptions) {
|
|
28
|
-
if(!message) message = `${courseCode} is not a valid course code`;
|
|
29
|
-
super(message, options);
|
|
30
|
-
this.courseCode = courseCode;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
//const HOMETILE_WIDTH = 500;
|
|
2
|
-
import {ICanvasCallConfig} from "../canvasUtils";
|
|
3
|
-
import {ILatePolicyData, IModuleData} from "../canvasDataDefs";
|
|
4
|
-
|
|
5
|
-
import {ICourseData, ICourseSettings} from "@/types";
|
|
6
|
-
import {Quiz} from "@/content/quizzes/Quiz";
|
|
7
|
-
import {Page} from "@/content/pages/Page";
|
|
8
|
-
import {Discussion} from "@/content/discussions/Discussion";
|
|
9
|
-
import {Assignment} from "@/content/assignments/Assignment";
|
|
10
|
-
|
|
11
|
-
export interface IIdHaver<IdType = number> {
|
|
12
|
-
id: IdType,
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface ICourseDataHaver {
|
|
16
|
-
rawData: ICourseData,
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface ICourseCodeHaver {
|
|
20
|
-
name: string,
|
|
21
|
-
parsedCourseCode: string | null,
|
|
22
|
-
courseCode: string | null,
|
|
23
|
-
baseCode: string | null,
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface ISyllabusHaver extends IIdHaver {
|
|
27
|
-
getSyllabus: (config?: ICanvasCallConfig<GetCourseOptions>) => Promise<string>,
|
|
28
|
-
changeSyllabus: (this:ISyllabusHaver, newHtml: string, config?: ICanvasCallConfig) => any
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface ICourseSettingsHaver extends IIdHaver {
|
|
32
|
-
id: number,
|
|
33
|
-
getSettings: (config?: ICanvasCallConfig) => Promise<ICourseSettings>
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface ILatePolicyHaver extends IIdHaver {
|
|
37
|
-
id: number,
|
|
38
|
-
getLatePolicy: (config?: ICanvasCallConfig) => Promise<ILatePolicyData | undefined>
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface IAssignmentsHaver extends IIdHaver {
|
|
42
|
-
getAssignments: (config?: ICanvasCallConfig) => Promise<Assignment[]>;
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export interface IPagesHaver extends IIdHaver {
|
|
47
|
-
id: number,
|
|
48
|
-
|
|
49
|
-
getPages(config?: ICanvasCallConfig): Promise<Page[]>
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface IDiscussionsHaver extends IIdHaver {
|
|
53
|
-
id: number,
|
|
54
|
-
|
|
55
|
-
getDiscussions(config?: ICanvasCallConfig): Promise<Discussion[]>
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface IQuizzesHaver extends IIdHaver {
|
|
59
|
-
getQuizzes(config?: ICanvasCallConfig): Promise<Quiz[]>
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface IModulesHaver extends IIdHaver {
|
|
63
|
-
getModules(config?: ICanvasCallConfig): Promise<IModuleData[]>,
|
|
64
|
-
|
|
65
|
-
getModulesByWeekNumber(config?: ICanvasCallConfig): Promise<Record<number | string, IModuleData>>
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export interface IGradingStandardsHaver extends IIdHaver {
|
|
69
|
-
getAvailableGradingStandards(config?: ICanvasCallConfig): Promise<IGradingStandardData[]>,
|
|
70
|
-
|
|
71
|
-
getCurrentGradingStandard(config?: ICanvasCallConfig): Promise<IGradingStandardData | null>
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export interface IGradingStandardData {
|
|
75
|
-
id: number,
|
|
76
|
-
title: string,
|
|
77
|
-
context_type: 'Course' | 'Account',
|
|
78
|
-
grading_scheme: IGradingSchemeEntry[]
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export interface IGradingSchemeEntry {
|
|
82
|
-
name: string,
|
|
83
|
-
value: number
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
export interface IContentHaver extends IAssignmentsHaver, IPagesHaver, IDiscussionsHaver, ISyllabusHaver, IQuizzesHaver {
|
|
88
|
-
name: string,
|
|
89
|
-
|
|
90
|
-
getContent(config?: ICanvasCallConfig<Record<string, any>>, refresh?: boolean): Promise<(Discussion | Assignment | Page | Quiz)[]>,
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
export type GetOptions = {
|
|
96
|
-
per_page?: number
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
export type GetCoursesFromAccountOptions = GetOptions & {
|
|
101
|
-
with_enrollments?: boolean;
|
|
102
|
-
enrollment_type?: ('teacher' | 'student' | 'ta' | 'observer' | 'designer')[];
|
|
103
|
-
published?: boolean;
|
|
104
|
-
completed?: boolean;
|
|
105
|
-
blueprint?: boolean;
|
|
106
|
-
blueprint_associated?: boolean;
|
|
107
|
-
public?: boolean;
|
|
108
|
-
by_teachers?: number[];
|
|
109
|
-
by_subaccounts?: number[];
|
|
110
|
-
hide_enrollmentless_courses?: boolean;
|
|
111
|
-
state?: ('created' | 'claimed' | 'available' | 'completed' | 'deleted' | 'all')[];
|
|
112
|
-
enrollment_term_id?: number;
|
|
113
|
-
search_term?: string;
|
|
114
|
-
include?: (
|
|
115
|
-
| 'syllabus_body'
|
|
116
|
-
| 'term'
|
|
117
|
-
| 'course_progress'
|
|
118
|
-
| 'storage_quota_used_mb'
|
|
119
|
-
| 'total_students'
|
|
120
|
-
| 'teachers'
|
|
121
|
-
| 'account_name'
|
|
122
|
-
| 'concluded'
|
|
123
|
-
)[];
|
|
124
|
-
sort?: 'course_name' | 'sis_course_id' | 'teacher' | 'account_name';
|
|
125
|
-
order?: 'asc' | 'desc';
|
|
126
|
-
search_by?: 'course' | 'teacher';
|
|
127
|
-
starts_before?: string; // Date formatted as yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ
|
|
128
|
-
ends_after?: string; // Date formatted as yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ
|
|
129
|
-
homeroom?: boolean;
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
export type GetCourseOptions = {
|
|
133
|
-
enrollment_type?: 'teacher' | 'student' | 'ta' | 'observer' | 'designer';
|
|
134
|
-
enrollment_role?: string; // Deprecated
|
|
135
|
-
enrollment_role_id?: number;
|
|
136
|
-
enrollment_state?: 'active' | 'invited_or_pending' | 'completed';
|
|
137
|
-
exclude_blueprint_courses?: boolean;
|
|
138
|
-
include?: (
|
|
139
|
-
| 'needs_grading_count'
|
|
140
|
-
| 'syllabus_body'
|
|
141
|
-
| 'public_description'
|
|
142
|
-
| 'total_scores'
|
|
143
|
-
| 'current_grading_period_scores'
|
|
144
|
-
| 'grading_periods'
|
|
145
|
-
| 'term'
|
|
146
|
-
| 'account'
|
|
147
|
-
| 'course_progress'
|
|
148
|
-
| 'sections'
|
|
149
|
-
| 'storage_quota_used_mb'
|
|
150
|
-
| 'total_students'
|
|
151
|
-
| 'passback_status'
|
|
152
|
-
| 'favorites'
|
|
153
|
-
| 'teachers'
|
|
154
|
-
| 'observed_users'
|
|
155
|
-
| 'tabs'
|
|
156
|
-
| 'course_image'
|
|
157
|
-
| 'banner_image'
|
|
158
|
-
| 'concluded'
|
|
159
|
-
)[];
|
|
160
|
-
state?: ('unpublished' | 'available' | 'completed' | 'deleted')[];
|
|
161
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import {ICanvasCallConfig, renderAsyncGen} from "@canvas/canvasUtils";
|
|
2
|
-
import {GetCoursesFromAccountOptions} from "@canvas/course/courseTypes";
|
|
3
|
-
import {Course} from "@canvas/course/Course";
|
|
4
|
-
import {ICourseData} from "@/types";
|
|
5
|
-
import {sectionDataGenerator} from "@canvas/course/blueprint";
|
|
6
|
-
|
|
7
|
-
export async function getSections(courseId: number, config?: ICanvasCallConfig<GetCoursesFromAccountOptions>) {
|
|
8
|
-
return (await renderAsyncGen(sectionDataGenerator(courseId, config))).map(section => new Course(section as ICourseData));
|
|
9
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import {Course} from "@canvas/course/Course";
|
|
2
|
-
|
|
3
|
-
export async function getTermNameFromSections(sections: Course[]) {
|
|
4
|
-
const [section] = sections;
|
|
5
|
-
if (!section) throw new Error("Cannot determine term name by sections; there are no sections.")
|
|
6
|
-
const sectionTerm = await section.getTerm();
|
|
7
|
-
if (!sectionTerm) throw new Error("Section does not have associated term: " + section.name);
|
|
8
|
-
return sectionTerm.name;
|
|
9
|
-
}
|
package/src/course/index.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export * from './blueprint'
|
|
2
|
-
export * from './toolbox'
|
|
3
|
-
export * from './Course'
|
|
4
|
-
|
|
5
|
-
export * from './courseTypes'
|
|
6
|
-
export * from './getCourseIdFromUrl'
|
|
7
|
-
export * from './getSections'
|
|
8
|
-
export * from './getTermNameFromSections'
|
|
9
|
-
export * from './IBlueprintCourse'
|
|
10
|
-
export * from './modules'
|
|
11
|
-
export * from './notABlueprintError'
|
|
12
|
-
export * from './retireBlueprint'
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import {IMigrationData} from "../index";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* From canvas api docs
|
|
5
|
-
*/
|
|
6
|
-
export const mockMigrationData: IMigrationData = {
|
|
7
|
-
// the unique identifier for the migration
|
|
8
|
-
"id": 370663,
|
|
9
|
-
// the type of content migration
|
|
10
|
-
"migration_type": "course_copy_importer",
|
|
11
|
-
// the name of the content migration type
|
|
12
|
-
"migration_type_title": "Canvas Cartridge Importer",
|
|
13
|
-
// API url to the content migration's issues
|
|
14
|
-
"migration_issues_url": "https://example.com/api/v1/courses/1/content_migrations/1/migration_issues",
|
|
15
|
-
// attachment api object for the uploaded file may not be present for all
|
|
16
|
-
// migrations
|
|
17
|
-
"attachment": {"url": "https://example.com/api/v1/courses/1/content_migrations/1/download_archive"},
|
|
18
|
-
// The api endpoint for polling the current progress
|
|
19
|
-
"progress_url": "https://example.com/api/v1/progress/4",
|
|
20
|
-
// The user who started the migration
|
|
21
|
-
"user_id": 4,
|
|
22
|
-
// Current state of the content migration: pre_processing, pre_processed,
|
|
23
|
-
// running, waiting_for_select, completed, failed
|
|
24
|
-
"workflow_state": "running",
|
|
25
|
-
// timestamp
|
|
26
|
-
"started_at": "2012-06-01T00:00:00-06:00",
|
|
27
|
-
// timestamp
|
|
28
|
-
"finished_at": "2012-06-01T00:00:00-06:00",
|
|
29
|
-
// file uploading data, see {file:file_uploads.html File Upload Documentation}
|
|
30
|
-
// for file upload workflow This works a little differently in that all the file
|
|
31
|
-
// data is in the pre_attachment hash if there is no upload_url then there was
|
|
32
|
-
// an attachment pre-processing error, the error message will be in the message
|
|
33
|
-
// key This data will only be here after a create or update call
|
|
34
|
-
"pre_attachment": {
|
|
35
|
-
upload_url: '',
|
|
36
|
-
"message": "file exceeded quota",
|
|
37
|
-
"upload_params": {}
|
|
38
|
-
}
|
|
39
|
-
}
|