@ueu/ueu-canvas 0.0.4 → 0.0.6
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 +44 -0
- package/dist/Account.js +60 -0
- package/dist/Account.js.map +1 -0
- package/dist/NotImplementedException.js +8 -0
- package/dist/NotImplementedException.js.map +1 -0
- package/dist/__mocks__/Account.d.ts +3 -3
- package/dist/__mocks__/Account.js +51 -0
- package/dist/__mocks__/Account.js.map +1 -0
- package/dist/__mocks__/index.js +25 -0
- package/dist/__mocks__/index.js.map +1 -0
- package/dist/__mocks__/mockAccountData.js +45 -0
- package/dist/__mocks__/mockAccountData.js.map +1 -0
- package/dist/__mocks__/mockEnrollment.d.ts +1 -1
- package/dist/__mocks__/mockEnrollment.js +24 -0
- package/dist/__mocks__/mockEnrollment.js.map +1 -0
- package/dist/__mocks__/mockRubricData.d.ts +1 -1
- package/dist/__mocks__/mockRubricData.js +56 -0
- package/dist/__mocks__/mockRubricData.js.map +1 -0
- package/dist/__mocks__/mockTabData.d.ts +1 -1
- package/dist/__mocks__/mockTabData.js +14 -0
- package/dist/__mocks__/mockTabData.js.map +1 -0
- package/dist/__mocks__/mockTermData.d.ts +1 -1
- package/dist/__mocks__/mockTermData.js +8 -0
- package/dist/__mocks__/mockTermData.js.map +1 -0
- package/dist/__mocks__/mockUserData.js +15 -0
- package/dist/__mocks__/mockUserData.js.map +1 -0
- package/dist/__mocks__/utils.js +14 -0
- package/dist/__mocks__/utils.js.map +1 -0
- package/dist/__tests__/canvasUtils.test.js +431 -0
- package/dist/__tests__/canvasUtils.test.js.map +1 -0
- package/dist/__tests__/fetch.test.js +236 -0
- package/dist/__tests__/fetch.test.js.map +1 -0
- package/dist/__tests__/profile.test.js +17 -0
- package/dist/__tests__/profile.test.js.map +1 -0
- package/dist/__tests__/rubrics.test.js +136 -0
- package/dist/__tests__/rubrics.test.js.map +1 -0
- package/dist/baseCanvasObject.js +115 -0
- package/dist/baseCanvasObject.js.map +1 -0
- package/dist/canvasDataDefs.d.ts +4 -0
- package/dist/canvasDataDefs.d.ts.map +1 -1
- package/dist/canvasDataDefs.js +3 -0
- package/dist/canvasDataDefs.js.map +1 -0
- package/dist/canvasUtils.d.ts +1 -1
- package/dist/canvasUtils.js +358 -0
- package/dist/canvasUtils.js.map +1 -0
- package/dist/consts.js +6 -0
- package/dist/consts.js.map +1 -0
- package/dist/content/BaseContentItem.d.ts +6 -6
- package/dist/content/BaseContentItem.js +182 -0
- package/dist/content/BaseContentItem.js.map +1 -0
- package/dist/content/ContentKind.d.ts +3 -3
- package/dist/content/ContentKind.js +45 -0
- package/dist/content/ContentKind.js.map +1 -0
- package/dist/content/__mocks__/determineContent.d.ts +14 -14
- package/dist/content/__mocks__/determineContent.js +27 -0
- package/dist/content/__mocks__/determineContent.js.map +1 -0
- package/dist/content/__mocks__/mockAssignmentSubmission.d.ts +1 -1
- package/dist/content/__mocks__/mockAssignmentSubmission.js +38 -0
- package/dist/content/__mocks__/mockAssignmentSubmission.js.map +1 -0
- package/dist/content/__mocks__/mockContentData.d.ts +3 -3
- package/dist/content/__mocks__/mockContentData.js +92 -0
- package/dist/content/__mocks__/mockContentData.js.map +1 -0
- package/dist/content/__mocks__/openThisContentInTarget.js +6 -0
- package/dist/content/__mocks__/openThisContentInTarget.js.map +1 -0
- package/dist/content/__testingUtils__/utils.d.ts +1 -1
- package/dist/content/__testingUtils__/utils.js +43 -0
- package/dist/content/__testingUtils__/utils.js.map +1 -0
- package/dist/content/__tests__/determineContent.test.js +115 -0
- package/dist/content/__tests__/determineContent.test.js.map +1 -0
- package/dist/content/__tests__/getContentFuncs.test.js +66 -0
- package/dist/content/__tests__/getContentFuncs.test.js.map +1 -0
- package/dist/content/assignments/Assignment.d.ts +4 -4
- package/dist/content/assignments/Assignment.js +61 -0
- package/dist/content/assignments/Assignment.js.map +1 -0
- package/dist/content/assignments/AssignmentKind.d.ts +3 -3
- package/dist/content/assignments/AssignmentKind.js +24 -0
- package/dist/content/assignments/AssignmentKind.js.map +1 -0
- package/dist/content/assignments/__tests__/AssignmentKind.test.js +56 -0
- package/dist/content/assignments/__tests__/AssignmentKind.test.js.map +1 -0
- package/dist/content/assignments/__tests__/assignments.test.js +95 -0
- package/dist/content/assignments/__tests__/assignments.test.js.map +1 -0
- package/dist/content/assignments/deleteAssignmentGroup.js +17 -0
- package/dist/content/assignments/deleteAssignmentGroup.js.map +1 -0
- package/dist/content/assignments/genAssignmentGroups.d.ts +1 -1
- package/dist/content/assignments/genAssignmentGroups.js +14 -0
- package/dist/content/assignments/genAssignmentGroups.js.map +1 -0
- package/dist/content/assignments/index.d.ts +4 -4
- package/dist/content/assignments/index.js +28 -0
- package/dist/content/assignments/index.js.map +1 -0
- package/dist/content/assignments/legacy.js +12 -0
- package/dist/content/assignments/legacy.js.map +1 -0
- package/dist/content/assignments/updateAssignmentDueDates.d.ts +2 -2
- package/dist/content/assignments/updateAssignmentDueDates.js +22 -0
- package/dist/content/assignments/updateAssignmentDueDates.js.map +1 -0
- package/dist/content/determineContent.d.ts +8 -8
- package/dist/content/determineContent.js +70 -0
- package/dist/content/determineContent.js.map +1 -0
- package/dist/content/discussions/Discussion.d.ts +4 -4
- package/dist/content/discussions/Discussion.js +32 -0
- package/dist/content/discussions/Discussion.js.map +1 -0
- package/dist/content/discussions/DiscussionKind.d.ts +2 -2
- package/dist/content/discussions/DiscussionKind.js +23 -0
- package/dist/content/discussions/DiscussionKind.js.map +1 -0
- package/dist/content/discussions/__tests__/DiscussionKind.test.js +56 -0
- package/dist/content/discussions/__tests__/DiscussionKind.test.js.map +1 -0
- package/dist/content/discussions/genEquivalentDiscussionData.js +97 -0
- package/dist/content/discussions/genEquivalentDiscussionData.js.map +1 -0
- package/dist/content/discussions/index.js +19 -0
- package/dist/content/discussions/index.js.map +1 -0
- package/dist/content/getContentFuncs.js +25 -0
- package/dist/content/getContentFuncs.js.map +1 -0
- package/dist/content/index.js +27 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/openThisContentInTarget.d.ts +1 -1
- package/dist/content/openThisContentInTarget.js +35 -0
- package/dist/content/openThisContentInTarget.js.map +1 -0
- package/dist/content/pages/Page.d.ts +5 -4
- package/dist/content/pages/Page.d.ts.map +1 -1
- package/dist/content/pages/Page.js +39 -0
- package/dist/content/pages/Page.js.map +1 -0
- package/dist/content/pages/PageKind.d.ts +3 -2
- package/dist/content/pages/PageKind.d.ts.map +1 -1
- package/dist/content/pages/PageKind.js +24 -0
- package/dist/content/pages/PageKind.js.map +1 -0
- package/dist/content/pages/__tests__/PageKind.test.js +69 -0
- package/dist/content/pages/__tests__/PageKind.test.js.map +1 -0
- package/dist/content/pages/__tests__/learningMaterialsForModule.js +82 -0
- package/dist/content/pages/__tests__/learningMaterialsForModule.js.map +1 -0
- package/dist/content/pages/index.js +56 -0
- package/dist/content/pages/index.js.map +1 -0
- package/dist/content/pages/learningMaterialsForModule.d.ts +2 -2
- package/dist/content/pages/learningMaterialsForModule.js +16 -0
- package/dist/content/pages/learningMaterialsForModule.js.map +1 -0
- package/dist/content/pages/types.d.ts +2 -1
- package/dist/content/pages/types.d.ts.map +1 -1
- package/dist/content/pages/types.js +3 -0
- package/dist/content/pages/types.js.map +1 -0
- package/dist/content/quizzes/Quiz.d.ts +1 -1
- package/dist/content/quizzes/Quiz.js +27 -0
- package/dist/content/quizzes/Quiz.js.map +1 -0
- package/dist/content/quizzes/QuizKind.d.ts +2 -2
- package/dist/content/quizzes/QuizKind.js +22 -0
- package/dist/content/quizzes/QuizKind.js.map +1 -0
- package/dist/content/quizzes/__tests__/QuizKind.test.js +56 -0
- package/dist/content/quizzes/__tests__/QuizKind.test.js.map +1 -0
- package/dist/content/quizzes/index.js +3 -0
- package/dist/content/quizzes/index.js.map +1 -0
- package/dist/content/quizzes/types.js +3 -0
- package/dist/content/quizzes/types.js.map +1 -0
- package/dist/content/types.d.ts +6 -6
- package/dist/content/types.js +3 -0
- package/dist/content/types.js.map +1 -0
- package/dist/course/Course.d.ts +15 -11
- package/dist/course/Course.d.ts.map +1 -1
- package/dist/course/Course.js +472 -0
- package/dist/course/Course.js.map +1 -0
- package/dist/course/IBlueprintCourse.d.ts +2 -2
- package/dist/course/IBlueprintCourse.js +3 -0
- package/dist/course/IBlueprintCourse.js.map +1 -0
- package/dist/course/__mocks__/blueprint.d.ts +1 -1
- package/dist/course/__mocks__/blueprint.js +28 -0
- package/dist/course/__mocks__/blueprint.js.map +1 -0
- package/dist/course/__mocks__/mockCourseData.d.ts +1 -1
- package/dist/course/__mocks__/mockCourseData.js +50 -0
- package/dist/course/__mocks__/mockCourseData.js.map +1 -0
- package/dist/course/__mocks__/mockLatePolicy.js +15 -0
- package/dist/course/__mocks__/mockLatePolicy.js.map +1 -0
- package/dist/course/__mocks__/mockModuleData.js +55 -0
- package/dist/course/__mocks__/mockModuleData.js.map +1 -0
- package/dist/course/__mocks__/mockProgressData.js +29 -0
- package/dist/course/__mocks__/mockProgressData.js.map +1 -0
- package/dist/course/__tests__/Course.test.js +75 -0
- package/dist/course/__tests__/Course.test.js.map +1 -0
- package/dist/course/__tests__/blueprint.test.js +273 -0
- package/dist/course/__tests__/blueprint.test.js.map +1 -0
- package/dist/course/__tests__/changeStartDate.test.js +240 -0
- package/dist/course/__tests__/changeStartDate.test.js.map +1 -0
- package/dist/course/__tests__/index.test.js +77 -0
- package/dist/course/__tests__/index.test.js.map +1 -0
- package/dist/course/blueprint.d.ts +1 -1
- package/dist/course/blueprint.js +108 -0
- package/dist/course/blueprint.js.map +1 -0
- package/dist/course/cachedGetAssociatedCoursesFunc.d.ts +2 -2
- package/dist/course/cachedGetAssociatedCoursesFunc.js +14 -0
- package/dist/course/cachedGetAssociatedCoursesFunc.js.map +1 -0
- package/dist/course/changeStartDate.d.ts +7 -6
- package/dist/course/changeStartDate.d.ts.map +1 -1
- package/dist/course/changeStartDate.js +182 -0
- package/dist/course/changeStartDate.js.map +1 -0
- package/dist/course/code.js +39 -0
- package/dist/course/code.js.map +1 -0
- package/dist/course/courseTypes.d.ts +5 -5
- package/dist/course/courseTypes.js +3 -0
- package/dist/course/courseTypes.js.map +1 -0
- package/dist/course/getCourseIdFromUrl.js +12 -0
- package/dist/course/getCourseIdFromUrl.js.map +1 -0
- package/dist/course/getSections.d.ts +3 -3
- package/dist/course/getSections.js +10 -0
- package/dist/course/getSections.js.map +1 -0
- package/dist/course/getTermNameFromSections.d.ts +1 -1
- package/dist/course/getTermNameFromSections.js +13 -0
- package/dist/course/getTermNameFromSections.js.map +1 -0
- package/dist/course/index.js +28 -0
- package/dist/course/index.js.map +1 -0
- package/dist/course/migration/__mocks__/mockMigrationData.js +41 -0
- package/dist/course/migration/__mocks__/mockMigrationData.js.map +1 -0
- package/dist/course/migration/__tests__/migration.test.js +141 -0
- package/dist/course/migration/__tests__/migration.test.js.map +1 -0
- package/dist/course/migration/__tests__/migrationCache.test.js +42 -0
- package/dist/course/migration/__tests__/migrationCache.test.js.map +1 -0
- package/dist/course/migration/index.d.ts +2 -2
- package/dist/course/migration/index.js +74 -0
- package/dist/course/migration/index.js.map +1 -0
- package/dist/course/migration/migrationCache.js +44 -0
- package/dist/course/migration/migrationCache.js.map +1 -0
- package/dist/course/modules.d.ts +1 -1
- package/dist/course/modules.js +82 -0
- package/dist/course/modules.js.map +1 -0
- package/dist/course/notABlueprintError.js +8 -0
- package/dist/course/notABlueprintError.js.map +1 -0
- package/dist/course/references/getReferencesForText.d.ts +1 -1
- package/dist/course/references/getReferencesForText.js +14 -0
- package/dist/course/references/getReferencesForText.js.map +1 -0
- package/dist/course/references/getReferencesForText.test.js +21 -0
- package/dist/course/references/getReferencesForText.test.js.map +1 -0
- package/dist/course/references/getReferencesTemplate.d.ts +2 -2
- package/dist/course/references/getReferencesTemplate.js +30 -0
- package/dist/course/references/getReferencesTemplate.js.map +1 -0
- package/dist/course/references/mockCiteAsResponse.js +323 -0
- package/dist/course/references/mockCiteAsResponse.js.map +1 -0
- package/dist/course/retireBlueprint.d.ts +2 -2
- package/dist/course/retireBlueprint.js +21 -0
- package/dist/course/retireBlueprint.js.map +1 -0
- package/dist/course/toolbox.d.ts +3 -3
- package/dist/course/toolbox.js +96 -0
- package/dist/course/toolbox.js.map +1 -0
- package/dist/date.js +119 -0
- package/dist/date.js.map +1 -0
- package/dist/enrollments/EnrollmentTypes.d.ts +2 -2
- package/dist/enrollments/EnrollmentTypes.js +3 -0
- package/dist/enrollments/EnrollmentTypes.js.map +1 -0
- package/dist/enrollments/enrollmentRole.js +7 -0
- package/dist/enrollments/enrollmentRole.js.map +1 -0
- package/dist/enrollments/getEnrollmentGenerator.d.ts +2 -2
- package/dist/enrollments/getEnrollmentGenerator.js +25 -0
- package/dist/enrollments/getEnrollmentGenerator.js.map +1 -0
- package/dist/enrollments/index.js +20 -0
- package/dist/enrollments/index.js.map +1 -0
- package/dist/fetch/__mocks__/fetchJson.js +5 -0
- package/dist/fetch/__mocks__/fetchJson.js.map +1 -0
- package/dist/fetch/__mocks__/getPagedDataGenerator.js +10 -0
- package/dist/fetch/__mocks__/getPagedDataGenerator.js.map +1 -0
- package/dist/fetch/__mocks__/index.js +8 -0
- package/dist/fetch/__mocks__/index.js.map +1 -0
- package/dist/fetch/apiGetConfig.d.ts +1 -1
- package/dist/fetch/apiGetConfig.js +11 -0
- package/dist/fetch/apiGetConfig.js.map +1 -0
- package/dist/fetch/apiWriteConfig.d.ts +2 -2
- package/dist/fetch/apiWriteConfig.js +16 -0
- package/dist/fetch/apiWriteConfig.js.map +1 -0
- package/dist/fetch/canvasDataFetchGenFunc.d.ts +2 -2
- package/dist/fetch/canvasDataFetchGenFunc.js +13 -0
- package/dist/fetch/canvasDataFetchGenFunc.js.map +1 -0
- package/dist/fetch/fetchJson.d.ts +1 -1
- package/dist/fetch/fetchJson.js +19 -0
- package/dist/fetch/fetchJson.js.map +1 -0
- package/dist/fetch/getPagedDataGenerator.d.ts +2 -2
- package/dist/fetch/getPagedDataGenerator.js +145 -0
- package/dist/fetch/getPagedDataGenerator.js.map +1 -0
- package/dist/fetch/index.js +22 -0
- package/dist/fetch/index.js.map +1 -0
- package/dist/fetch/utils.d.ts +1 -1
- package/dist/fetch/utils.js +14 -0
- package/dist/fetch/utils.js.map +1 -0
- package/dist/files.js +33 -0
- package/dist/files.js.map +1 -0
- package/dist/fixes/annotations.d.ts +1 -1
- package/dist/fixes/annotations.js +95 -0
- package/dist/fixes/annotations.js.map +1 -0
- package/dist/fixes/index.js +87 -0
- package/dist/fixes/index.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +60 -8960
- package/dist/index.js.map +1 -0
- package/dist/profile.d.ts +2 -2
- package/dist/profile.js +230 -0
- package/dist/profile.js.map +1 -0
- package/dist/rubricTypes.d.ts +14 -0
- package/dist/rubricTypes.d.ts.map +1 -1
- package/dist/rubricTypes.js +3 -0
- package/dist/rubricTypes.js.map +1 -0
- package/dist/rubrics.d.ts +1 -1
- package/dist/rubrics.js +46 -0
- package/dist/rubrics.js.map +1 -0
- package/dist/term/Term.d.ts +3 -3
- package/dist/term/Term.js +64 -0
- package/dist/term/Term.js.map +1 -0
- package/dist/term/__tests__/dateFromTermName.test.js +26 -0
- package/dist/term/__tests__/dateFromTermName.test.js.map +1 -0
- package/dist/term/__tests__/getTermsGenerator.test.js +19 -0
- package/dist/term/__tests__/getTermsGenerator.test.js.map +1 -0
- package/dist/term/dateFromTermName.js +17 -0
- package/dist/term/dateFromTermName.js.map +1 -0
- package/dist/term/getTermsGenerator.js +15 -0
- package/dist/term/getTermsGenerator.js.map +1 -0
- package/dist/term/index.js +20 -0
- package/dist/term/index.js.map +1 -0
- package/dist/toolbox.js +25 -0
- package/dist/toolbox.js.map +1 -0
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/users/getUserGenerator.d.ts +1 -1
- package/dist/users/getUserGenerator.js +21 -0
- package/dist/users/getUserGenerator.js.map +1 -0
- package/dist/users/index.js +18 -0
- package/dist/users/index.js.map +1 -0
- package/package.json +59 -51
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import {genBlueprintDataForCode} from "../../course/blueprint";
|
|
3
|
+
// import {Course} from "../../course/Course";
|
|
4
|
+
// import AssignmentKind from "../../content/assignments/AssignmentKind";
|
|
5
|
+
// import {ContentData, IAssignmentData, IDiscussionData} from "../../content/types";
|
|
6
|
+
// import {Assignment} from "../../content/assignments/Assignment";
|
|
7
|
+
// import DiscussionKind from "../../content/discussions/DiscussionKind";
|
|
8
|
+
// import {getModuleWeekNumber, moduleGenerator} from "../../course/modules";
|
|
9
|
+
// import {ContentKind} from "../../content/ContentKind";
|
|
10
|
+
// import {
|
|
11
|
+
// CONTENT_KINDS,
|
|
12
|
+
// ContentKindInPractice,
|
|
13
|
+
// ContentDataType,
|
|
14
|
+
// getContentKindFromContent
|
|
15
|
+
// } from "../../content/determineContent";
|
|
16
|
+
// import {getModuleInfo} from "@/ui/speedGrader/modules";
|
|
17
|
+
// import {renderAsyncGen} from "../../canvasUtils";
|
|
18
|
+
// import {IModuleItemData} from "../../canvasDataDefs";
|
|
19
|
+
/**
|
|
20
|
+
* Retrieves the equivalent discussion data for a given assignment across multiple course blueprints.
|
|
21
|
+
*
|
|
22
|
+
* This function searches through the assignments in various blueprints of a course, attempting to find
|
|
23
|
+
* discussions that were originally associated with a given assignment (identified by its `assignmentId`).
|
|
24
|
+
* If a matching discussion is found in any blueprint, the corresponding discussion data (`IDiscussionData`) is yielded.
|
|
25
|
+
* This is useful for recovering lost or missing discussion data when the original discussion ID is not available,
|
|
26
|
+
* but the assignment information is accessible.
|
|
27
|
+
*
|
|
28
|
+
* The function processes the blueprints lazily, yielding results one by one as they are found. This ensures efficient memory usage
|
|
29
|
+
* when dealing with large sets of blueprint data.
|
|
30
|
+
*
|
|
31
|
+
* @param {Course} course - The course from which the blueprint data is being retrieved. This course is used to find
|
|
32
|
+
* the relevant blueprints through the `genBlueprintDataForCode` function.
|
|
33
|
+
* @param {number} assignmentId - The ID of the assignment whose associated discussion data is being retrieved.
|
|
34
|
+
* The function will search across blueprints to find discussions linked to this assignment.
|
|
35
|
+
*
|
|
36
|
+
* @yields {IDiscussionData} - The `IDiscussionData` object that corresponds to the found discussion, if any.
|
|
37
|
+
* This data includes the discussion properties like `discussion_type`, `require_initial_post`, etc.
|
|
38
|
+
*
|
|
39
|
+
* @remarks
|
|
40
|
+
* - If no discussion is found for the given assignment ID across the blueprints, the generator will complete without yielding any values.
|
|
41
|
+
* - If the discussion is found, the function will yield the associated `discussion_topic` object, which can then be processed or restored as needed.
|
|
42
|
+
* - The function operates asynchronously and uses a generator to lazily fetch and yield discussion data, ensuring efficient handling of large datasets.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* const generator = getEquivalentDiscussionData(course, 123);
|
|
46
|
+
* for await (const discussion of generator) {
|
|
47
|
+
* console.log(discussion); // Process each matching discussion found
|
|
48
|
+
* }
|
|
49
|
+
*/
|
|
50
|
+
// export async function* genEquivalentDiscussionData(course: {id: number, courseCode: string, accountId: number }, assignmentId: number): AsyncGenerator {
|
|
51
|
+
// const blueprintGen = genBlueprintDataForCode(course.courseCode, [course.accountId]);
|
|
52
|
+
// if (!blueprintGen) throw new Error("Blueprint generator not found");
|
|
53
|
+
// const assignmentData = await AssignmentKind.get(course.id, assignmentId, { });
|
|
54
|
+
// if(!assignmentData) return;
|
|
55
|
+
// for await (const blueprint of blueprintGen) {
|
|
56
|
+
// const bpModules = await renderAsyncGen(moduleGenerator(blueprint.id));
|
|
57
|
+
// for await (const bpModule of bpModules) {
|
|
58
|
+
// const items = bpModule.items;
|
|
59
|
+
// for(const item of items) {
|
|
60
|
+
// if(item.title == assignmentData.name) {
|
|
61
|
+
// let analogAssignment: IAssignmentData;
|
|
62
|
+
// const contentKind = item.type === 'Assignment' ? AssignmentKind :
|
|
63
|
+
// item.type === 'Discussion' ? DiscussionKind :
|
|
64
|
+
// undefined;
|
|
65
|
+
// if(!contentKind) continue; //this is not a relevant data type
|
|
66
|
+
// const primaryData = await contentKind.get(blueprint.id, item.content_id);
|
|
67
|
+
//
|
|
68
|
+
//
|
|
69
|
+
// if (!analogDiscussionId) return undefined;
|
|
70
|
+
// const analogDiscussionData = await DiscussionKind.get(analogAssignment.courseId, analogDiscussionId);
|
|
71
|
+
//
|
|
72
|
+
//
|
|
73
|
+
// }
|
|
74
|
+
// }
|
|
75
|
+
//
|
|
76
|
+
// }
|
|
77
|
+
// // Iterate through assignments in this blueprint
|
|
78
|
+
// // Find assignments in the blueprint that match the given assignmentId
|
|
79
|
+
// const moduleItem = getModuleInfo(analogAssignment.id);
|
|
80
|
+
// // If a match is found, yield the associated discussion
|
|
81
|
+
// }
|
|
82
|
+
// }
|
|
83
|
+
//
|
|
84
|
+
//
|
|
85
|
+
// async function getByName<Kind extends ContentKindInPractice>(items: AsyncGenerator<ContentDataType<Kind>>, search: string | ((toCheck: string) => boolean)) {
|
|
86
|
+
//
|
|
87
|
+
// const checkFunc = typeof search != 'string' ? search : (toCheck:string) => search == toCheck;
|
|
88
|
+
// for await (const item of items) {
|
|
89
|
+
// const contentKind = getContentKindFromContent(item) as Kind & { getByName: (name:string) => typeof item};
|
|
90
|
+
// if(!contentKind) continue;
|
|
91
|
+
// if(!contentKind.dataIsThisKind(item)) throw new Error("Data constraint violation in getting content by name");
|
|
92
|
+
// const name = (contentKind as { getName: (data:ContentDataType<Kind>) => string|undefined}).getName(item);
|
|
93
|
+
// if(name && checkFunc(name)) return item;
|
|
94
|
+
// }
|
|
95
|
+
// return undefined;
|
|
96
|
+
// }
|
|
97
|
+
//# sourceMappingURL=genEquivalentDiscussionData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genEquivalentDiscussionData.js","sourceRoot":"","sources":["../../../src/content/discussions/genEquivalentDiscussionData.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,gDAAgD;AAChD,2EAA2E;AAC3E,uFAAuF;AACvF,qEAAqE;AACrE,2EAA2E;AAC3E,+EAA+E;AAC/E,2DAA2D;AAC3D,WAAW;AACX,qBAAqB;AACrB,6BAA6B;AAC7B,uBAAuB;AACvB,gCAAgC;AAChC,6CAA6C;AAC7C,0DAA0D;AAC1D,sDAAsD;AACtD,0DAA0D;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,2JAA2J;AAC3J,2FAA2F;AAC3F,2EAA2E;AAC3E,qFAAqF;AACrF,kCAAkC;AAClC,oDAAoD;AACpD,iFAAiF;AACjF,oDAAoD;AACpD,4CAA4C;AAC5C,yCAAyC;AACzC,0DAA0D;AAC1D,6DAA6D;AAC7D,wFAAwF;AACxF,wEAAwE;AACxE,yCAAyC;AACzC,oFAAoF;AACpF,gGAAgG;AAChG,EAAE;AACF,EAAE;AACF,iEAAiE;AACjE,4HAA4H;AAC5H,EAAE;AACF,EAAE;AACF,oBAAoB;AACpB,gBAAgB;AAChB,EAAE;AACF,YAAY;AACZ,2DAA2D;AAC3D,iFAAiF;AACjF,iEAAiE;AACjE,kEAAkE;AAClE,QAAQ;AACR,IAAI;AACJ,EAAE;AACF,EAAE;AACF,gKAAgK;AAChK,EAAE;AACF,kGAAkG;AAClG,sCAAsC;AACtC,gHAAgH;AAChH,iCAAiC;AACjC,qHAAqH;AACrH,gHAAgH;AAChH,+CAA+C;AAC/C,MAAM;AACN,sBAAsB;AACtB,IAAI"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Discussion"), exports);
|
|
18
|
+
__exportStar(require("./DiscussionKind"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content/discussions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,mDAAiC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFileLinks = getFileLinks;
|
|
4
|
+
exports.getExternalLinks = getExternalLinks;
|
|
5
|
+
function getAllLinks(body) {
|
|
6
|
+
const el = bodyAsElement(body);
|
|
7
|
+
const anchors = el.querySelectorAll('a');
|
|
8
|
+
const urls = [];
|
|
9
|
+
for (const link of anchors)
|
|
10
|
+
urls.push(link.href);
|
|
11
|
+
return urls;
|
|
12
|
+
}
|
|
13
|
+
function bodyAsElement(body) {
|
|
14
|
+
const el = document.createElement('div');
|
|
15
|
+
el.innerHTML = body;
|
|
16
|
+
return el;
|
|
17
|
+
}
|
|
18
|
+
function getFileLinks(body, courseId) {
|
|
19
|
+
return getAllLinks(body).filter(a => a.match(/instructure\.com.*files\/\d+/i)).map(a => a.split('?')[0]);
|
|
20
|
+
}
|
|
21
|
+
function getExternalLinks(body, courseId) {
|
|
22
|
+
// Correct regex to exclude unity.instructure.com links properly
|
|
23
|
+
return getAllLinks(body).filter(a => !a.match(/:\/\/unity\.instructure\.com\//i));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=getContentFuncs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getContentFuncs.js","sourceRoot":"","sources":["../../src/content/getContentFuncs.ts"],"names":[],"mappings":";;AAqBA,oCAEC;AAED,4CAIC;AAvBD,SAAS,WAAW,CAAC,IAAW;IAC5B,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AAEhB,CAAC;AAGD,SAAS,aAAa,CAAC,IAAY;IAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC;AACd,CAAC;AACD,SAAgB,YAAY,CAAC,IAAY,EAAE,QAAgB;IACvD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7G,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC3D,gEAAgE;IAChE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAA;AAErF,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./BaseContentItem"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
__exportStar(require("./determineContent"), exports);
|
|
20
|
+
__exportStar(require("./getContentFuncs"), exports);
|
|
21
|
+
__exportStar(require("./ContentKind"), exports);
|
|
22
|
+
__exportStar(require("./openThisContentInTarget"), exports);
|
|
23
|
+
__exportStar(require("./pages"), exports);
|
|
24
|
+
__exportStar(require("./quizzes"), exports);
|
|
25
|
+
__exportStar(require("./discussions"), exports);
|
|
26
|
+
__exportStar(require("./assignments"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,0CAAuB;AACvB,qDAAmC;AACnC,oDAAkC;AAClC,gDAA8B;AAC9B,4DAA0C;AAE1C,0CAAwB;AACxB,4CAA0B;AAC1B,gDAA8B;AAC9B,gDAA8B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Course } from "
|
|
1
|
+
import { Course } from "../course/Course";
|
|
2
2
|
export declare const openThisContentInTarget: (currentCourse: Course | number, target: Course | Course[] | number | number[]) => Promise<void>;
|
|
3
3
|
export default openThisContentInTarget;
|
|
4
4
|
//# sourceMappingURL=openThisContentInTarget.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.openThisContentInTarget = void 0;
|
|
4
|
+
const determineContent_1 = require("../content/determineContent");
|
|
5
|
+
function getIdOrCourse(courseOrId) {
|
|
6
|
+
if (typeof courseOrId === 'object')
|
|
7
|
+
return courseOrId.id;
|
|
8
|
+
return courseOrId;
|
|
9
|
+
}
|
|
10
|
+
const openThisContentInTarget = async function (currentCourse, target) {
|
|
11
|
+
if (!window)
|
|
12
|
+
return;
|
|
13
|
+
const currentCourseId = getIdOrCourse(currentCourse);
|
|
14
|
+
const targetCourseIds = Array.isArray(target) ? target.map(getIdOrCourse) : [getIdOrCourse(target)];
|
|
15
|
+
const currentContentItem = await (0, determineContent_1.getContentItemFromUrl)(document.documentURI);
|
|
16
|
+
const targetInfos = targetCourseIds.map((targetCourseId) => {
|
|
17
|
+
return {
|
|
18
|
+
courseId: targetCourseId,
|
|
19
|
+
contentItemPromise: currentContentItem?.getMeInAnotherCourse(targetCourseId)
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
for (const { courseId, contentItemPromise } of targetInfos) {
|
|
23
|
+
const targetContentItem = await contentItemPromise;
|
|
24
|
+
if (targetContentItem) {
|
|
25
|
+
window.open(targetContentItem.htmlContentUrl);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const url = document.URL.replace(currentCourseId.toString(), courseId.toString());
|
|
29
|
+
window.open(url);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.openThisContentInTarget = openThisContentInTarget;
|
|
34
|
+
exports.default = exports.openThisContentInTarget;
|
|
35
|
+
//# sourceMappingURL=openThisContentInTarget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openThisContentInTarget.js","sourceRoot":"","sources":["../../src/content/openThisContentInTarget.ts"],"names":[],"mappings":";;;AACA,iEAAiE;AAGjE,SAAS,aAAa,CAAC,UAA2B;IAC9C,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC;IACzD,OAAO,UAAU,CAAC;AACtB,CAAC;AAEM,MAAM,uBAAuB,GAAG,KAAK,WACxC,aAA8B,EAC9B,MAA6C;IAE7C,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAGpG,MAAM,kBAAkB,GAA2B,MAAM,IAAA,wCAAqB,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrG,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;QACvD,OAAO;YACH,QAAQ,EAAE,cAAc;YACxB,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,cAAc,CAAC;SAC/E,CAAA;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,EAAC,QAAQ,EAAE,kBAAkB,EAAC,IAAI,WAAW,EAAE,CAAC;QACvD,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC;QACnD,IAAI,iBAAiB,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;YACjF,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AA3BY,QAAA,uBAAuB,2BA2BnC;AAED,kBAAe,+BAAuB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BaseContentItem } from "
|
|
2
|
-
import { ICanvasCallConfig } from "
|
|
3
|
-
import { IPageData } from "
|
|
1
|
+
import { BaseContentItem } from "../../content/BaseContentItem";
|
|
2
|
+
import { ICanvasCallConfig } from "../../canvasUtils";
|
|
3
|
+
import { IPageData } from "../../content/pages/types";
|
|
4
4
|
export declare class Page extends BaseContentItem {
|
|
5
|
-
static kindInfo: Required<import("..").ContentKind<IPageData, import("
|
|
5
|
+
static kindInfo: Required<import("..").ContentKind<IPageData, import("../../content/pages/PageKind").GetPageOptions, import("../../content/pages/PageKind").SavePageOptions>>;
|
|
6
6
|
static idProperty: string;
|
|
7
7
|
static nameProperty: string;
|
|
8
8
|
static bodyProperty: string;
|
|
@@ -10,6 +10,7 @@ export declare class Page extends BaseContentItem {
|
|
|
10
10
|
static allContentUrlTemplate: string;
|
|
11
11
|
constructor(canvasData: IPageData, courseId: number);
|
|
12
12
|
get body(): string;
|
|
13
|
+
get title(): string;
|
|
13
14
|
updateContent(text?: string | null, name?: string | null, config?: ICanvasCallConfig): Promise<import("../..").CanvasData>;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=Page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/content/pages/Page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAGhD,qBAAa,IAAK,SAAQ,eAAe;IACrC,MAAM,CAAC,QAAQ,uJAAW;IAC1B,MAAM,CAAC,UAAU,SAAa;IAC9B,MAAM,CAAC,YAAY,SAAW;IAC9B,MAAM,CAAC,YAAY,SAAU;IAC7B,MAAM,CAAC,kBAAkB,SAAoD;IAC7E,MAAM,CAAC,qBAAqB,SAAuC;gBAEvD,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAInD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,iBAAiB;CAY7F"}
|
|
1
|
+
{"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/content/pages/Page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAGhD,qBAAa,IAAK,SAAQ,eAAe;IACrC,MAAM,CAAC,QAAQ,uJAAW;IAC1B,MAAM,CAAC,UAAU,SAAa;IAC9B,MAAM,CAAC,YAAY,SAAW;IAC9B,MAAM,CAAC,YAAY,SAAU;IAC7B,MAAM,CAAC,kBAAkB,SAAoD;IAC7E,MAAM,CAAC,qBAAqB,SAAuC;gBAEvD,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAInD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAEK,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,iBAAiB;CAY7F"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Page = void 0;
|
|
7
|
+
const BaseContentItem_1 = require("../../content/BaseContentItem");
|
|
8
|
+
const PageKind_1 = __importDefault(require("../../content/pages/PageKind"));
|
|
9
|
+
class Page extends BaseContentItem_1.BaseContentItem {
|
|
10
|
+
static kindInfo = PageKind_1.default;
|
|
11
|
+
static idProperty = 'page_id';
|
|
12
|
+
static nameProperty = 'title';
|
|
13
|
+
static bodyProperty = 'body';
|
|
14
|
+
static contentUrlTemplate = "/api/v1/courses/{course_id}/pages/{content_id}";
|
|
15
|
+
static allContentUrlTemplate = "/api/v1/courses/{course_id}/pages";
|
|
16
|
+
constructor(canvasData, courseId) {
|
|
17
|
+
super(canvasData, courseId);
|
|
18
|
+
}
|
|
19
|
+
get body() {
|
|
20
|
+
return this.canvasData[this.bodyKey];
|
|
21
|
+
}
|
|
22
|
+
get title() {
|
|
23
|
+
return this.canvasData[this.nameKey];
|
|
24
|
+
}
|
|
25
|
+
async updateContent(text, name, config) {
|
|
26
|
+
const data = {};
|
|
27
|
+
if (text) {
|
|
28
|
+
this.canvasData[this.bodyKey] = text;
|
|
29
|
+
data['wiki_page[body]'] = text;
|
|
30
|
+
}
|
|
31
|
+
if (name) {
|
|
32
|
+
this.canvasData[this.nameKey] = name;
|
|
33
|
+
data[this.nameKey] = name;
|
|
34
|
+
}
|
|
35
|
+
return this.saveData(data, config);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.Page = Page;
|
|
39
|
+
//# sourceMappingURL=Page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/content/pages/Page.ts"],"names":[],"mappings":";;;;;;AAAA,+DAA0D;AAE1D,wEAAgD;AAIhD,MAAa,IAAK,SAAQ,iCAAe;IACrC,MAAM,CAAC,QAAQ,GAAG,kBAAQ,CAAA;IAC1B,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC;IAC7B,MAAM,CAAC,kBAAkB,GAAG,gDAAgD,CAAC;IAC7E,MAAM,CAAC,qBAAqB,GAAG,mCAAmC,CAAC;IAEnE,YAAY,UAAqB,EAAE,QAAgB;QAC/C,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAoB,EAAE,IAAoB,EAAE,MAA0B;QACtF,MAAM,IAAI,GAAwB,EAAE,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;;AA/BL,oBAgCC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IPageData } from "
|
|
2
|
-
import { ContentKind } from "
|
|
1
|
+
import { IPageData } from "../../content/pages/types";
|
|
2
|
+
import { ContentKind } from "../../content/ContentKind";
|
|
3
3
|
export declare const PageUrlFuncs: {
|
|
4
4
|
contentUrlPart: string;
|
|
5
5
|
getApiUrl: (courseId: number, contentId: number) => string;
|
|
@@ -10,6 +10,7 @@ export declare const PageUrlFuncs: {
|
|
|
10
10
|
};
|
|
11
11
|
export type GetPageOptions = Record<string, any>;
|
|
12
12
|
export type SavePageOptions = Record<string, any>;
|
|
13
|
+
export type GetByStringIdOptions = Record<string, any>;
|
|
13
14
|
export declare const PageKind: Required<ContentKind<IPageData, GetPageOptions, SavePageOptions>>;
|
|
14
15
|
export default PageKind;
|
|
15
16
|
//# sourceMappingURL=PageKind.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageKind.d.ts","sourceRoot":"","sources":["../../../src/content/pages/PageKind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACH,WAAW,EAKd,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,YAAY;;;;;;;CAA2B,CAAA;AACpD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"PageKind.d.ts","sourceRoot":"","sources":["../../../src/content/pages/PageKind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACH,WAAW,EAKd,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,YAAY;;;;;;;CAA2B,CAAA;AACpD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClD,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAKvD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAC3B,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAiB1D,CAAA;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PageKind = exports.PageUrlFuncs = void 0;
|
|
4
|
+
const fetchJson_1 = require("../../fetch/fetchJson");
|
|
5
|
+
const getPagedDataGenerator_1 = require("../../fetch/getPagedDataGenerator");
|
|
6
|
+
const ContentKind_1 = require("../../content/ContentKind");
|
|
7
|
+
exports.PageUrlFuncs = (0, ContentKind_1.contentUrlFuncs)('pages');
|
|
8
|
+
const getStringApiUrl = (0, ContentKind_1.courseContentUrlFunc)(`/api/v1/courses/{courseId}/pages/{contentId}`);
|
|
9
|
+
exports.PageKind = {
|
|
10
|
+
...exports.PageUrlFuncs,
|
|
11
|
+
dataIsThisKind: (data) => {
|
|
12
|
+
return 'page_id' in data;
|
|
13
|
+
},
|
|
14
|
+
getName: page => page.title,
|
|
15
|
+
getBody: page => page.body,
|
|
16
|
+
getId: page => page.page_id,
|
|
17
|
+
get: (id, courseId, config) => (0, fetchJson_1.fetchJson)(exports.PageUrlFuncs.getApiUrl(courseId, id), config),
|
|
18
|
+
getByString: (courseId, contentId, config) => (0, fetchJson_1.fetchJson)(getStringApiUrl(courseId, contentId), config),
|
|
19
|
+
dataGenerator: (courseId, config = { queryParams: { include: ['body'] } }) => (0, getPagedDataGenerator_1.getPagedDataGenerator)(exports.PageUrlFuncs.getAllApiUrl(courseId), config),
|
|
20
|
+
put: (0, ContentKind_1.putContentFunc)(exports.PageUrlFuncs.getApiUrl),
|
|
21
|
+
post: (0, ContentKind_1.postContentFunc)(exports.PageUrlFuncs.getAllApiUrl),
|
|
22
|
+
};
|
|
23
|
+
exports.default = exports.PageKind;
|
|
24
|
+
//# sourceMappingURL=PageKind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageKind.js","sourceRoot":"","sources":["../../../src/content/pages/PageKind.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAC5C,yEAAoE;AAEpE,uDAM+B;AAElB,QAAA,YAAY,GAAG,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAA;AAMpD,MAAM,eAAe,GAAG,IAAA,kCAAoB,EAAS,8CAA8C,CAAC,CAAA;AAEvF,QAAA,QAAQ,GAElB;IACC,GAAG,oBAAY;IACf,cAAc,EAAE,CAAC,IAAI,EAAqB,EAAE;QACxC,OAAO,SAAS,IAAI,IAAI,CAAA;IAC5B,CAAC;IACD,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;IAC3B,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;IAC1B,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO;IAC3B,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAC1B,IAAA,qBAAS,EAAC,oBAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CACzC,IAAA,qBAAS,EAA8B,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IACxF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,WAAW,EAAE,EAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC,EAAC,EAAE,EAAE,CACtE,IAAA,6CAAqB,EAAC,oBAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACtE,GAAG,EAAE,IAAA,4BAAc,EAAC,oBAAY,CAAC,SAAS,CAAC;IAC3C,IAAI,EAAE,IAAA,6BAAe,EAAC,oBAAY,CAAC,YAAY,CAAC;CACnD,CAAA;AAED,kBAAe,gBAAQ,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fetchJson_1 = require("../../../fetch/fetchJson");
|
|
7
|
+
const getPagedDataGenerator_1 = require("../../../fetch/getPagedDataGenerator");
|
|
8
|
+
const mockContentData_1 = require("../../../content/__mocks__/mockContentData");
|
|
9
|
+
const PageKind_1 = __importDefault(require("../../../content/pages/PageKind"));
|
|
10
|
+
// Mock dependencies
|
|
11
|
+
jest.mock("@/fetch/fetchJson");
|
|
12
|
+
jest.mock("@/fetch/getPagedDataGenerator");
|
|
13
|
+
describe("PageKind", () => {
|
|
14
|
+
const courseId = 123;
|
|
15
|
+
const pageId = 456;
|
|
16
|
+
const contentId = "sample-page";
|
|
17
|
+
const mockConfig = {};
|
|
18
|
+
const localMockPageData = {
|
|
19
|
+
...mockContentData_1.mockPageData,
|
|
20
|
+
id: pageId,
|
|
21
|
+
title: "Sample Page",
|
|
22
|
+
body: "This is a sample page.",
|
|
23
|
+
page_id: pageId,
|
|
24
|
+
};
|
|
25
|
+
beforeEach(() => {
|
|
26
|
+
jest.clearAllMocks();
|
|
27
|
+
});
|
|
28
|
+
it("should return true for dataIsThisKind when data contains page_id", () => {
|
|
29
|
+
expect(PageKind_1.default.dataIsThisKind(localMockPageData)).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
it("should return false for dataIsThisKind when data does not contain page_id", () => {
|
|
32
|
+
const data = { name: "Sample Page", body: "No ID here", ...mockContentData_1.mockDiscussionData };
|
|
33
|
+
expect(PageKind_1.default.dataIsThisKind(data)).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
it("should return the correct name of the page", () => {
|
|
36
|
+
expect(PageKind_1.default.getName(localMockPageData)).toBe(localMockPageData.title);
|
|
37
|
+
});
|
|
38
|
+
it("should return the correct body of the page", () => {
|
|
39
|
+
expect(PageKind_1.default.getBody(localMockPageData)).toBe(localMockPageData.body);
|
|
40
|
+
});
|
|
41
|
+
it("should return the correct id of the page", () => {
|
|
42
|
+
expect(PageKind_1.default.getId(localMockPageData)).toBe(localMockPageData.id);
|
|
43
|
+
});
|
|
44
|
+
it("should fetch page data using get function", async () => {
|
|
45
|
+
fetchJson_1.fetchJson.mockResolvedValue(localMockPageData);
|
|
46
|
+
const result = await PageKind_1.default.get(pageId, courseId, mockConfig);
|
|
47
|
+
expect(fetchJson_1.fetchJson).toHaveBeenCalledWith(PageKind_1.default.getApiUrl(courseId, pageId), mockConfig);
|
|
48
|
+
expect(result).toBe(localMockPageData);
|
|
49
|
+
});
|
|
50
|
+
it("should fetch page data using getByString function", async () => {
|
|
51
|
+
fetchJson_1.fetchJson.mockResolvedValue(localMockPageData);
|
|
52
|
+
const result = await PageKind_1.default.getByString(courseId, contentId, mockConfig);
|
|
53
|
+
expect(result).toBe(localMockPageData);
|
|
54
|
+
});
|
|
55
|
+
it("should generate paged data using dataGenerator function", async () => {
|
|
56
|
+
const mockGenerator = jest.fn();
|
|
57
|
+
getPagedDataGenerator_1.getPagedDataGenerator.mockReturnValue(mockGenerator);
|
|
58
|
+
const result = PageKind_1.default.dataGenerator(courseId, mockConfig);
|
|
59
|
+
expect(getPagedDataGenerator_1.getPagedDataGenerator).toHaveBeenCalledWith(PageKind_1.default.getAllApiUrl(courseId), mockConfig);
|
|
60
|
+
expect(result).toBe(mockGenerator);
|
|
61
|
+
});
|
|
62
|
+
it("should call putContentFunc when put is called", async () => {
|
|
63
|
+
const mockPutResponse = { success: true };
|
|
64
|
+
fetchJson_1.fetchJson.mockResolvedValue(mockPutResponse);
|
|
65
|
+
const result = await PageKind_1.default.put(courseId, pageId, localMockPageData);
|
|
66
|
+
expect(result).toBe(mockPutResponse);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=PageKind.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageKind.test.js","sourceRoot":"","sources":["../../../../src/content/pages/__tests__/PageKind.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const PageKind_1 = __importDefault(require("../../../content/pages/PageKind"));
|
|
40
|
+
const globals_1 = require("@jest/globals");
|
|
41
|
+
const mockModuleData_1 = __importStar(require("../../../course/__mocks__/mockModuleData"));
|
|
42
|
+
const learningMaterialsForModule_1 = __importDefault(require("../learningMaterialsForModule"));
|
|
43
|
+
const canvasUtils_1 = require("../../../canvasUtils");
|
|
44
|
+
jest.mock('@canvas/content/pages/PageKind', () => ({
|
|
45
|
+
get: jest.fn(),
|
|
46
|
+
}));
|
|
47
|
+
const pageGet = PageKind_1.default.get;
|
|
48
|
+
describe('getLearningMaterialsWithModule', () => {
|
|
49
|
+
(0, globals_1.beforeEach)(() => {
|
|
50
|
+
jest.clearAllMocks();
|
|
51
|
+
});
|
|
52
|
+
(0, globals_1.afterEach)(() => {
|
|
53
|
+
jest.clearAllMocks();
|
|
54
|
+
});
|
|
55
|
+
it('Gets learning materials from course pages', async () => {
|
|
56
|
+
const courseId = 123;
|
|
57
|
+
const mockModule = {
|
|
58
|
+
...mockModuleData_1.default,
|
|
59
|
+
id: 1,
|
|
60
|
+
items: [{ title: 'Week 1 Learning Materials', content_id: 101 }]
|
|
61
|
+
};
|
|
62
|
+
pageGet.mockResolvedValueOnce({ id: 101, content: 'Learning materials content' });
|
|
63
|
+
const result = await (0, canvasUtils_1.renderAsyncGen)((0, learningMaterialsForModule_1.default)(courseId, mockModule));
|
|
64
|
+
expect(pageGet).toHaveBeenCalledWith(courseId, 101);
|
|
65
|
+
expect(result).toEqual([{
|
|
66
|
+
item: { content_id: 101, title: 'Week 1 Learning Materials' },
|
|
67
|
+
page: { id: 101, content: 'Learning materials content' }
|
|
68
|
+
}]);
|
|
69
|
+
});
|
|
70
|
+
it('Skips non learning materials', async () => {
|
|
71
|
+
const courseId = 123;
|
|
72
|
+
const mockModule = {
|
|
73
|
+
...mockModuleData_1.default,
|
|
74
|
+
id: 1,
|
|
75
|
+
items: [{ ...mockModuleData_1.mockModuleItemData, title: 'Week 1 Overview', content_id: 101 }]
|
|
76
|
+
.map(a => ({ ...mockModuleData_1.mockModuleItemData, ...a })),
|
|
77
|
+
};
|
|
78
|
+
const result = await (0, canvasUtils_1.renderAsyncGen)((0, learningMaterialsForModule_1.default)(courseId, mockModule));
|
|
79
|
+
expect(result).toEqual([]);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=learningMaterialsForModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learningMaterialsForModule.js","sourceRoot":"","sources":["../../../../src/content/pages/__tests__/learningMaterialsForModule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8EAAsD;AACtD,2CAAoD;AACpD,0FAA2F;AAE3F,+FAAuE;AACvE,qDAAmD;AAGnD,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;CACjB,CAAC,CAAC,CAAC;AAEJ,MAAM,OAAO,GAAG,kBAAQ,CAAC,GAAgB,CAAC;AAE1C,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,IAAA,oBAAU,EAAC,GAAG,EAAE;QACZ,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,IAAA,mBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,QAAQ,GAAG,GAAG,CAAC;QACrB,MAAM,UAAU,GACZ;YACI,GAAG,wBAAc;YACjB,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,GAAG,EAAC,CAAC;SAClE,CAAC;QAEN,OAAO,CAAC,qBAAqB,CAAC,EAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,4BAA4B,EAAC,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAc,EAAC,IAAA,oCAA0B,EAAC,QAAQ,EAAE,UAAyB,CAAC,CAAC,CAAC;QAErG,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAE,CAAC;gBACrB,IAAI,EAAE,EAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,2BAA2B,EAAC;gBAC3D,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,4BAA4B,EAAC;aAC7D,CAAC,CAAE,CAAC;IACL,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC;QACrB,MAAM,UAAU,GACZ;YACI,GAAG,wBAAc;YACjB,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,CAAC,EAAC,GAAG,mCAAkB,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAC,CAAC;iBACtE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,mCAAkB,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;SACjD,CAAC;QAGN,MAAM,MAAM,GAAG,MAAO,IAAA,4BAAc,EAAC,IAAA,oCAA0B,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QAEvF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
36
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
const learningMaterialsForModule_1 = __importDefault(require("./learningMaterialsForModule"));
|
|
43
|
+
const Page_1 = require("./Page");
|
|
44
|
+
const PageKind_1 = __importDefault(require("./PageKind"));
|
|
45
|
+
const pageTypes = __importStar(require("./types"));
|
|
46
|
+
__exportStar(require("./learningMaterialsForModule"), exports);
|
|
47
|
+
__exportStar(require("./Page"), exports);
|
|
48
|
+
__exportStar(require("./PageKind"), exports);
|
|
49
|
+
__exportStar(require("./types"), exports);
|
|
50
|
+
exports.default = {
|
|
51
|
+
learningMaterialsForModule: learningMaterialsForModule_1.default,
|
|
52
|
+
Page: Page_1.Page,
|
|
53
|
+
PageKind: PageKind_1.default,
|
|
54
|
+
...pageTypes,
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content/pages/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8FAAsE;AACtE,iCAA4B;AAC5B,0DAAkC;AAClC,mDAAqC;AAErC,+DAA6C;AAC7C,yCAAuB;AACvB,6CAA2B;AAC3B,0CAAwB;AAExB,kBAAe;IACX,0BAA0B,EAA1B,oCAA0B;IAC1B,IAAI,EAAJ,WAAI;IACJ,QAAQ,EAAR,kBAAQ;IACR,GAAG,SAAS;CAEf,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IModuleData } from "
|
|
1
|
+
import { IModuleData } from "../../canvasDataDefs";
|
|
2
2
|
export declare function learningMaterialsForModule(courseId: number, module: IModuleData): AsyncGenerator<{
|
|
3
|
-
item: import("
|
|
3
|
+
item: import("../../canvasDataDefs").IModuleItemData;
|
|
4
4
|
page: import("./types").IPageData;
|
|
5
5
|
}, void, unknown>;
|
|
6
6
|
export default learningMaterialsForModule;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.learningMaterialsForModule = learningMaterialsForModule;
|
|
7
|
+
const PageKind_1 = __importDefault(require("../../content/pages/PageKind"));
|
|
8
|
+
async function* learningMaterialsForModule(courseId, module) {
|
|
9
|
+
const lmItems = module.items.filter(a => a.title.match(/learning materials/i));
|
|
10
|
+
for await (const item of lmItems) {
|
|
11
|
+
const page = await PageKind_1.default.get(courseId, item.content_id);
|
|
12
|
+
yield { item, page };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = learningMaterialsForModule;
|
|
16
|
+
//# sourceMappingURL=learningMaterialsForModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learningMaterialsForModule.js","sourceRoot":"","sources":["../../../src/content/pages/learningMaterialsForModule.ts"],"names":[],"mappings":";;;;;AAIA,gEAOC;AAVD,8EAAsD;AAG/C,KAAK,SAAS,CAAC,CAAC,0BAA0B,CAAC,QAAgB,EAAE,MAAmB;IAEnF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAC9E,IAAI,KAAK,EAAC,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,kBAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAG,CAAA;IACzB,CAAC;AACL,CAAC;AAED,kBAAe,0BAA0B,CAAC"}
|