@ueu/ueu-canvas 0.0.3 → 0.0.5
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.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 +2 -2
- package/dist/content/__mocks__/mockAssignmentSubmission.d.ts.map +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.d.ts +1 -1
- package/dist/content/__mocks__/openThisContentInTarget.d.ts.map +1 -1
- 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 +4 -4
- package/dist/content/assignments/AssignmentKind.d.ts.map +1 -1
- 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.d.ts +2 -1
- package/dist/content/assignments/deleteAssignmentGroup.d.ts.map +1 -1
- package/dist/content/assignments/deleteAssignmentGroup.js +17 -0
- package/dist/content/assignments/deleteAssignmentGroup.js.map +1 -0
- package/dist/content/assignments/genAssignmentGroups.d.ts +3 -2
- package/dist/content/assignments/genAssignmentGroups.d.ts.map +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.d.ts.map +1 -1
- 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 +3 -3
- package/dist/content/discussions/DiscussionKind.d.ts.map +1 -1
- 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 +3 -2
- package/dist/content/openThisContentInTarget.d.ts.map +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 +4 -3
- 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.d.ts +4 -0
- package/dist/content/pages/index.d.ts.map +1 -1
- 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 +3 -3
- package/dist/content/quizzes/QuizKind.d.ts.map +1 -1
- 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 +473 -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.d.ts +1 -1
- package/dist/course/__mocks__/mockLatePolicy.d.ts.map +1 -1
- 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.d.ts +2 -1
- package/dist/course/getCourseIdFromUrl.d.ts.map +1 -1
- 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 +3 -2
- package/dist/course/references/getReferencesForText.d.ts.map +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 +6 -6
- package/dist/course/references/getReferencesTemplate.d.ts.map +1 -1
- package/dist/course/references/getReferencesTemplate.js +30 -0
- package/dist/course/references/getReferencesTemplate.js.map +1 -0
- package/dist/course/references/mockCiteAsResponse.d.ts +2 -2
- package/dist/course/references/mockCiteAsResponse.d.ts.map +1 -1
- 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 -8923
- 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 +16 -10
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EnrollmentRole } from "
|
|
2
|
-
import { EnrollmentData, EnrollmentState, EnrollmentType, EnrollmentUserState } from "
|
|
1
|
+
import { EnrollmentRole } from "../enrollments/enrollmentRole";
|
|
2
|
+
import { EnrollmentData, EnrollmentState, EnrollmentType, EnrollmentUserState } from "../enrollments/EnrollmentTypes";
|
|
3
3
|
export type EnrollmentInclude = 'avatar_url' | 'group_ids' | 'locked' | 'observed_users' | 'can_be_removed' | 'uuid' | 'current_points';
|
|
4
4
|
type EnrollmentGenQueryConfig = {
|
|
5
5
|
type?: EnrollmentType[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getEnrollmentGenerator = void 0;
|
|
4
|
+
const getPagedDataGenerator_1 = require("../fetch/getPagedDataGenerator");
|
|
5
|
+
const getEnrollmentGenerator = (config) => {
|
|
6
|
+
let url;
|
|
7
|
+
const { queryParams, ...internalParams } = config;
|
|
8
|
+
if ('userId' in config) {
|
|
9
|
+
url = `/api/v1/users/${config.userId}/enrollments`;
|
|
10
|
+
}
|
|
11
|
+
else if ('courseId' in config) {
|
|
12
|
+
url = `/api/v1/courses/${config.courseId}/enrollments`;
|
|
13
|
+
}
|
|
14
|
+
else if ('sectionId' in config) {
|
|
15
|
+
url = `/api/v1/sections/${config.sectionId}/enrollments`;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
throw new Error('config type not recognized');
|
|
19
|
+
}
|
|
20
|
+
return (0, getPagedDataGenerator_1.getPagedDataGenerator)(url, {
|
|
21
|
+
queryParams,
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
exports.getEnrollmentGenerator = getEnrollmentGenerator;
|
|
25
|
+
//# sourceMappingURL=getEnrollmentGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getEnrollmentGenerator.js","sourceRoot":"","sources":["../../src/enrollments/getEnrollmentGenerator.ts"],"names":[],"mappings":";;;AAAA,yEAAoE;AA0D7D,MAAM,sBAAsB,GAAG,CAAE,MAA8B,EAAE,EAAE;IACtE,IAAI,GAAW,CAAC;IAGhB,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,CAAC;IAClD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACrB,GAAG,GAAG,iBAAiB,MAAM,CAAC,MAAM,cAAc,CAAC;IACvD,CAAC;SAAM,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QAC9B,GAAG,GAAG,mBAAmB,MAAM,CAAC,QAAQ,cAAc,CAAC;IAC3D,CAAC;SAAO,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;QAChC,GAAG,GAAG,oBAAoB,MAAM,CAAC,SAAS,cAAc,CAAC;IAC7D,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IACjD,CAAC;IAID,OAAO,IAAA,6CAAqB,EAAiB,GAAG,EAAE;QAC9C,WAAW;KACd,CAAC,CAAC;AACP,CAAC,CAAA;AApBY,QAAA,sBAAsB,0BAoBlC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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("./enrollmentRole"), exports);
|
|
18
|
+
__exportStar(require("./getEnrollmentGenerator"), exports);
|
|
19
|
+
__exportStar(require("./EnrollmentTypes"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enrollments/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,2DAAwC;AACxC,oDAAiC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchJson.js","sourceRoot":"","sources":["../../../src/fetch/__mocks__/fetchJson.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergePagedDataGenerators = exports.getPagedData = exports.getPagedDataGenerator = void 0;
|
|
4
|
+
var requireActual = jest.requireActual;
|
|
5
|
+
const utils_1 = require("../../__mocks__/utils");
|
|
6
|
+
const actual = requireActual('../getPagedDataGenerator');
|
|
7
|
+
exports.getPagedDataGenerator = jest.fn(() => (0, utils_1.mockAsyncGen)([]));
|
|
8
|
+
exports.getPagedData = jest.fn();
|
|
9
|
+
exports.mergePagedDataGenerators = jest.fn(actual.mergedPagedDataGenerators);
|
|
10
|
+
//# sourceMappingURL=getPagedDataGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPagedDataGenerator.js","sourceRoot":"","sources":["../../../src/fetch/__mocks__/getPagedDataGenerator.ts"],"names":[],"mappings":";;;AAAA,IAAO,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAC1C,6CAA+C;AAG/C,MAAM,MAAM,GAAG,aAAa,CAAC,0BAA0B,CAAC,CAAC;AAC5C,QAAA,qBAAqB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,oBAAY,EAAC,EAAE,CAAC,CAAC,CAAC;AACxD,QAAA,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACzB,QAAA,wBAAwB,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchGetConfig = exports.canvasDataFetchGenFunc = exports.overrideConfig = void 0;
|
|
4
|
+
const actual = jest.requireActual('../utils');
|
|
5
|
+
exports.overrideConfig = jest.fn(actual.overrideConfig);
|
|
6
|
+
exports.canvasDataFetchGenFunc = jest.fn(actual.canvasDataFetchGenFunc);
|
|
7
|
+
exports.fetchGetConfig = jest.fn(actual.fetchGetConfig);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fetch/__mocks__/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAEjC,QAAA,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/C,QAAA,sBAAsB,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEhE,QAAA,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ICanvasCallConfig, IQueryParams } from "
|
|
1
|
+
import { ICanvasCallConfig, IQueryParams } from "../canvasUtils";
|
|
2
2
|
export declare function apiGetConfig(queryParams: IQueryParams, baseConfig?: ICanvasCallConfig): ICanvasCallConfig<IQueryParams>;
|
|
3
3
|
export default apiGetConfig;
|
|
4
4
|
//# sourceMappingURL=apiGetConfig.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.apiGetConfig = apiGetConfig;
|
|
4
|
+
const utils_1 = require("../fetch/utils");
|
|
5
|
+
function apiGetConfig(queryParams, baseConfig) {
|
|
6
|
+
return (0, utils_1.overrideConfig)({
|
|
7
|
+
queryParams,
|
|
8
|
+
}, baseConfig);
|
|
9
|
+
}
|
|
10
|
+
exports.default = apiGetConfig;
|
|
11
|
+
//# sourceMappingURL=apiGetConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiGetConfig.js","sourceRoot":"","sources":["../../src/fetch/apiGetConfig.ts"],"names":[],"mappings":";;AAGA,oCAIC;AAND,+CAAmD;AAEnD,SAAgB,YAAY,CAAC,WAAyB,EAAE,UAA8B;IAClF,OAAO,IAAA,sBAAc,EAAC;QAClB,WAAW;KACd,EAAE,UAAU,CAAC,CAAC;AACnB,CAAC;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ICanvasCallConfig } from "
|
|
2
|
-
export declare function apiWriteConfig(method: 'POST' | 'PUT', data: Record<string, any>, baseConfig?: ICanvasCallConfig): ICanvasCallConfig<import("
|
|
1
|
+
import { ICanvasCallConfig } from "../canvasUtils";
|
|
2
|
+
export declare function apiWriteConfig(method: 'POST' | 'PUT', data: Record<string, any>, baseConfig?: ICanvasCallConfig): ICanvasCallConfig<import("../canvasUtils").IQueryParams>;
|
|
3
3
|
export default apiWriteConfig;
|
|
4
4
|
//# sourceMappingURL=apiWriteConfig.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.apiWriteConfig = apiWriteConfig;
|
|
4
|
+
const canvasUtils_1 = require("../canvasUtils");
|
|
5
|
+
const utils_1 = require("../fetch/utils");
|
|
6
|
+
function apiWriteConfig(method, data, baseConfig) {
|
|
7
|
+
const body = (0, canvasUtils_1.formDataify)(data);
|
|
8
|
+
return (0, utils_1.overrideConfig)({
|
|
9
|
+
fetchInit: {
|
|
10
|
+
method,
|
|
11
|
+
body,
|
|
12
|
+
}
|
|
13
|
+
}, baseConfig);
|
|
14
|
+
}
|
|
15
|
+
exports.default = apiWriteConfig;
|
|
16
|
+
//# sourceMappingURL=apiWriteConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiWriteConfig.js","sourceRoot":"","sources":["../../src/fetch/apiWriteConfig.ts"],"names":[],"mappings":";;AAGA,wCAQC;AAXD,qDAAmE;AACnE,+CAAmD;AAEnD,SAAgB,cAAc,CAAC,MAAsB,EAAE,IAAyB,EAAE,UAA8B;IAC5G,MAAM,IAAI,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAA,sBAAc,EAAC;QAClB,SAAS,EAAE;YACP,MAAM;YACN,IAAI;SACP;KACJ,EAAE,UAAU,CAAC,CAAC;AACnB,CAAC;AACD,kBAAe,cAAc,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ICanvasCallConfig } from "
|
|
2
|
-
import { CanvasData } from "
|
|
1
|
+
import { ICanvasCallConfig } from "../canvasUtils";
|
|
2
|
+
import { CanvasData } from "../canvasDataDefs";
|
|
3
3
|
type UrlFuncType<UrlParams extends Record<string, any>> = (args: UrlParams, config?: ICanvasCallConfig) => string;
|
|
4
4
|
export declare function canvasDataFetchGenFunc<Content extends CanvasData, UrlParams extends Record<string, any>>(urlFunc: UrlFuncType<UrlParams>, defaultConfig?: ICanvasCallConfig): (args: UrlParams, config?: ICanvasCallConfig) => AsyncGenerator<Content, any, any>;
|
|
5
5
|
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canvasDataFetchGenFunc = canvasDataFetchGenFunc;
|
|
4
|
+
const getPagedDataGenerator_1 = require("../fetch/getPagedDataGenerator");
|
|
5
|
+
const utils_1 = require("../fetch/utils");
|
|
6
|
+
function canvasDataFetchGenFunc(urlFunc, defaultConfig) {
|
|
7
|
+
return function (args, config) {
|
|
8
|
+
config = (0, utils_1.overrideConfig)(defaultConfig, config);
|
|
9
|
+
const url = urlFunc(args, config);
|
|
10
|
+
return (0, getPagedDataGenerator_1.getPagedDataGenerator)(url, config);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=canvasDataFetchGenFunc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasDataFetchGenFunc.js","sourceRoot":"","sources":["../../src/fetch/canvasDataFetchGenFunc.ts"],"names":[],"mappings":";;AAQA,wDAUC;AAhBD,yEAAoE;AACpE,+CAAmD;AAKnD,SAAgB,sBAAsB,CAGpC,OAA+B,EAAE,aAAiC;IAEhE,OAAO,UAAU,IAAe,EAAE,MAA0B;QACxD,MAAM,GAAG,IAAA,sBAAc,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,IAAA,6CAAqB,EAAU,GAAG,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchJson = fetchJson;
|
|
4
|
+
async function fetchJson(url, config = null) {
|
|
5
|
+
const match = url.search(/^(\/|\w+:\/\/)/);
|
|
6
|
+
if (match < 0)
|
|
7
|
+
throw new Error("url does not start with / or http");
|
|
8
|
+
if (config?.queryParams) {
|
|
9
|
+
url += '?' + new URLSearchParams(config.queryParams);
|
|
10
|
+
}
|
|
11
|
+
config ??= {};
|
|
12
|
+
const response = await fetch(url, config.fetchInit);
|
|
13
|
+
const responseJson = await response.json();
|
|
14
|
+
if (!responseJson)
|
|
15
|
+
throw new Error("Could not fetch json");
|
|
16
|
+
responseJson.retrieved_at = new Date().toISOString();
|
|
17
|
+
return responseJson;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=fetchJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchJson.js","sourceRoot":"","sources":["../../src/fetch/fetchJson.ts"],"names":[],"mappings":";;AAEA,8BAiBC;AAjBM,KAAK,UAAU,SAAS,CAC3B,GAAW,EAAE,SAAmC,IAAI;IAEpD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACnE,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,GAAG,IAAI,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,KAAK,EAAE,CAAC;IAGd,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAiD,CAAC;IAC1F,IAAG,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE1D,YAAY,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,OAAO,YAAY,CAAC;AACxB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CanvasData } from "
|
|
2
|
-
import { ICanvasCallConfig } from "
|
|
1
|
+
import { CanvasData } from "../canvasDataDefs";
|
|
2
|
+
import { ICanvasCallConfig } from "../canvasUtils";
|
|
3
3
|
/**
|
|
4
4
|
* @param url The entire path of the url
|
|
5
5
|
* @param config a configuration object of type ICanvasCallConfig
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPagedData = getPagedData;
|
|
4
|
+
exports.mergePagedDataGenerators = mergePagedDataGenerators;
|
|
5
|
+
exports.getPagedDataGenerator = getPagedDataGenerator;
|
|
6
|
+
const canvasUtils_1 = require("../canvasUtils");
|
|
7
|
+
/**
|
|
8
|
+
* @param url The entire path of the url
|
|
9
|
+
* @param config a configuration object of type ICanvasCallConfig
|
|
10
|
+
* @returns {Promise<Record<string, any>[]>}
|
|
11
|
+
*/
|
|
12
|
+
async function getPagedData(url, config = null) {
|
|
13
|
+
const generator = getPagedDataGenerator(url, config);
|
|
14
|
+
const out = [];
|
|
15
|
+
for await (const value of generator) {
|
|
16
|
+
out.push(value);
|
|
17
|
+
}
|
|
18
|
+
return out;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Merges multiple asynchronous paginated data generators into a single generator.
|
|
22
|
+
*
|
|
23
|
+
* This function combines the results of multiple paginated data generators into a unified stream. Each generator
|
|
24
|
+
* is processed sequentially, and its results are yielded one by one as they become available. This allows for
|
|
25
|
+
* easy handling of multiple paginated API requests or data sources in parallel without needing to collect all
|
|
26
|
+
* results in memory at once.
|
|
27
|
+
*
|
|
28
|
+
* The function is particularly useful when dealing with multiple sources of paginated data (e.g., multiple API
|
|
29
|
+
* endpoints) that need to be processed as one continuous stream of results, without waiting for all pages from one
|
|
30
|
+
* source to finish before beginning to process the next.
|
|
31
|
+
*
|
|
32
|
+
* @template T - A type parameter that extends `CanvasData`, ensuring that the data being yielded is in a format consistent
|
|
33
|
+
* with Canvas API data structures.
|
|
34
|
+
* @param {AsyncGenerator<T, T[], void>[]} generators - An array of asynchronous generators, each of which yields paginated
|
|
35
|
+
* results of type `T`. These could represent different paginated data sources that are combined into a single stream.
|
|
36
|
+
*
|
|
37
|
+
* @yields {T} - The function yields items of type `T` as they are retrieved from each generator in sequence.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // Example usage combining two paginated API responses into a single data stream
|
|
41
|
+
* const generator1 = fetchPagedDataFromSource1();
|
|
42
|
+
* const generator2 = fetchPagedDataFromSource2();
|
|
43
|
+
*
|
|
44
|
+
* for await (const data of mergePagedDataGenerators([generator1, generator2])) {
|
|
45
|
+
* console.log(data); // Process each item from both generators as a single stream
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
async function* mergePagedDataGenerators(generators) {
|
|
50
|
+
for (const generator of generators) {
|
|
51
|
+
for await (const result of generator) {
|
|
52
|
+
yield result;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Handles the response data from a Canvas API call, normalizing it into an array of `CanvasData` objects.
|
|
58
|
+
*
|
|
59
|
+
* This function accepts various formats of the data (single object, array of objects, or a keyed object containing arrays of objects),
|
|
60
|
+
* and ensures the result is always an array. If no valid array is found, it returns an empty array and logs a warning.
|
|
61
|
+
*
|
|
62
|
+
* @template T - A type that extends `CanvasData`.
|
|
63
|
+
* @param {T | T[] | { [key: string]: T[] }} data - The response data to process. This can be a single object, an array of objects,
|
|
64
|
+
* or a keyed object where the values are arrays of objects.
|
|
65
|
+
* @param {string} url - The URL from which the data was retrieved, used for logging purposes if no valid data is found.
|
|
66
|
+
* @returns {T[]} An array of `CanvasData` objects, or an empty array if no valid array of data is present.
|
|
67
|
+
*/
|
|
68
|
+
function handleResponseData(data, url) {
|
|
69
|
+
if (typeof data === 'undefined' || data == null) {
|
|
70
|
+
console.warn(`no data found for ${url}`);
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
if (typeof data === 'object' && !Array.isArray(data)) {
|
|
74
|
+
const values = Array.from(Object.values(data));
|
|
75
|
+
if (values) {
|
|
76
|
+
data = values.find((a) => Array.isArray(a));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (!Array.isArray(data)) {
|
|
80
|
+
console.warn(`No valid data found for ${url}`);
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
return data;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Async generator function that retrieves paged data from a Canvas API endpoint.
|
|
87
|
+
* It sends HTTP GET requests to the provided URL, processes the results, and iterates
|
|
88
|
+
* through all pages of data, yielding each individual item.
|
|
89
|
+
*
|
|
90
|
+
* The generator automatically handles pagination by examining the 'Link' header
|
|
91
|
+
* returned in each response and fetching the next page as long as a 'next' link is available.
|
|
92
|
+
*
|
|
93
|
+
* @template T - A generic type parameter extending CanvasData to represent the structure of the data.
|
|
94
|
+
* @param {string} url - The full URL for the API request. If the `queryParams` option is provided in the config, it appends the query parameters to the URL.
|
|
95
|
+
* @param {ICanvasCallConfig | null} [config=null] - Optional configuration object for the request, including query parameters and additional fetch options like headers.
|
|
96
|
+
* @yields {T} - Yields individual items of the retrieved data from each page, one at a time.
|
|
97
|
+
*
|
|
98
|
+
* @throws {Error} - If the request fails or the URL contains "undefined", a warning is logged to the console.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```
|
|
102
|
+
* const generator = getPagedDataGenerator<MyDataType>('https://canvas.example.com/api/data', config);
|
|
103
|
+
* for await (const item of generator) {
|
|
104
|
+
* console.log(item); // Handle each item individually
|
|
105
|
+
* }
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
async function* getPagedDataGenerator(url, config = null) {
|
|
109
|
+
if (config?.queryParams) {
|
|
110
|
+
url += '?' + (0, canvasUtils_1.searchParamsFromObject)(config.queryParams);
|
|
111
|
+
}
|
|
112
|
+
if (url.includes('undefined')) {
|
|
113
|
+
console.warn(url);
|
|
114
|
+
}
|
|
115
|
+
/* Returns a list of data from a GET request, going through multiple pages of data requests as necessary */
|
|
116
|
+
let response = await fetch(url, config?.fetchInit);
|
|
117
|
+
const data = handleResponseData(await response.json(), url);
|
|
118
|
+
if (data.length === 0)
|
|
119
|
+
return data;
|
|
120
|
+
for (const value of data)
|
|
121
|
+
yield value;
|
|
122
|
+
let next_page_link = "!";
|
|
123
|
+
while (next_page_link.length !== 0 &&
|
|
124
|
+
response &&
|
|
125
|
+
response.ok) {
|
|
126
|
+
const nextLink = getNextLink(response);
|
|
127
|
+
if (!nextLink)
|
|
128
|
+
break;
|
|
129
|
+
next_page_link = nextLink.split(";")[0].split("<")[1].split(">")[0];
|
|
130
|
+
response = await fetch(next_page_link, config?.fetchInit);
|
|
131
|
+
const responseData = handleResponseData(await response.json(), url);
|
|
132
|
+
for (const value of responseData) {
|
|
133
|
+
value.retrieved_at = new Date().toISOString();
|
|
134
|
+
yield value;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function getNextLink(response) {
|
|
139
|
+
const link = response.headers.get("Link");
|
|
140
|
+
if (!link)
|
|
141
|
+
return null;
|
|
142
|
+
const paginationLinks = link.split(",");
|
|
143
|
+
return paginationLinks.find((link) => link.includes('next'));
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=getPagedDataGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPagedDataGenerator.js","sourceRoot":"","sources":["../../src/fetch/getPagedDataGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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("./utils"), exports);
|
|
18
|
+
__exportStar(require("./getPagedDataGenerator"), exports);
|
|
19
|
+
__exportStar(require("./apiWriteConfig"), exports);
|
|
20
|
+
__exportStar(require("./apiGetConfig"), exports);
|
|
21
|
+
__exportStar(require("./fetchJson"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0DAAwC;AACxC,mDAAiC;AACjC,iDAA+B;AAC/B,8CAA4B"}
|
package/dist/fetch/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ICanvasCallConfig } from "
|
|
1
|
+
import { ICanvasCallConfig } from "../canvasUtils";
|
|
2
2
|
export declare function overrideConfig<ConfigType extends ICanvasCallConfig | undefined>(source: ConfigType | undefined, override: ConfigType | undefined): ConfigType;
|
|
3
3
|
export declare function fetchGetConfig<CallOptions extends Record<string, any>>(options: CallOptions, baseConfig?: ICanvasCallConfig<CallOptions>): ICanvasCallConfig<CallOptions>;
|
|
4
4
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overrideConfig = overrideConfig;
|
|
4
|
+
exports.fetchGetConfig = fetchGetConfig;
|
|
5
|
+
const canvasUtils_1 = require("../canvasUtils");
|
|
6
|
+
function overrideConfig(source, override) {
|
|
7
|
+
return (0, canvasUtils_1.deepObjectMerge)(source, override) ?? {};
|
|
8
|
+
}
|
|
9
|
+
function fetchGetConfig(options, baseConfig) {
|
|
10
|
+
return overrideConfig(baseConfig, {
|
|
11
|
+
queryParams: options,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/fetch/utils.ts"],"names":[],"mappings":";;AAEA,wCAMC;AAED,wCAIC;AAdD,+CAAiE;AAEjE,SAAgB,cAAc,CAC1B,MAA8B,EAC9B,QAAgC;IAGhC,OAAO,IAAA,6BAAe,EAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACjE,CAAC;AAED,SAAgB,cAAc,CAA0C,OAAoB,EAAE,UAA2C;IACrI,OAAO,cAAc,CAAC,UAAU,EAAE;QAC9B,WAAW,EAAE,OAAO;KACvB,CAAC,CAAC;AACP,CAAC"}
|
package/dist/files.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
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.uploadFile = uploadFile;
|
|
7
|
+
const canvasUtils_1 = require("./canvasUtils");
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
async function uploadFile(file, folder, url) {
|
|
10
|
+
const initialParams = {
|
|
11
|
+
name: file.name,
|
|
12
|
+
no_redirect: true,
|
|
13
|
+
on_duplicate: 'overwrite'
|
|
14
|
+
};
|
|
15
|
+
if (typeof folder === 'number')
|
|
16
|
+
initialParams.parent_folder_id = folder;
|
|
17
|
+
else
|
|
18
|
+
initialParams.parent_folder_path = folder;
|
|
19
|
+
let response = await fetch(url, {
|
|
20
|
+
body: (0, canvasUtils_1.formDataify)(initialParams),
|
|
21
|
+
method: 'POST'
|
|
22
|
+
});
|
|
23
|
+
const data = await response.json();
|
|
24
|
+
const uploadParams = data.upload_params;
|
|
25
|
+
const uploadFormData = (0, canvasUtils_1.formDataify)(uploadParams);
|
|
26
|
+
uploadFormData.append('file', file);
|
|
27
|
+
response = await fetch(data.upload_url, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
body: uploadFormData,
|
|
30
|
+
});
|
|
31
|
+
(0, assert_1.default)(response.ok);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":";;;;;AAkCA,gCAwBC;AA1DD,+CAA0C;AAC1C,oDAA4B;AAiCrB,KAAK,UAAU,UAAU,CAAC,IAAU,EAAE,MAAqB,EAAE,GAAU;IAC1E,MAAM,aAAa,GAAwB;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,WAAW;KAC5B,CAAA;IAED,IAAG,OAAO,MAAM,KAAK,QAAQ;QAAE,aAAa,CAAC,gBAAgB,GAAG,MAAM,CAAC;;QAClE,aAAa,CAAC,kBAAkB,GAAG,MAAM,CAAC;IAC/C,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC5B,IAAI,EAAE,IAAA,yBAAW,EAAC,aAAa,CAAC;QAChC,MAAM,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;IACxC,MAAM,cAAc,GAAG,IAAA,yBAAW,EAAC,YAAY,CAAC,CAAC;IACjD,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAGpC,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;QACpC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,cAAc;KACvB,CAAC,CAAA;IACF,IAAA,gBAAM,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ContentFix } from "./index";
|
|
2
2
|
import { Course } from "../course/Course";
|
|
3
|
-
import { Page } from "
|
|
3
|
+
import { Page } from "../content/pages/Page";
|
|
4
4
|
declare const contentFixes: ContentFix[];
|
|
5
5
|
/**
|
|
6
6
|
* Removes annotation placeholder text from Learning Materials in the course
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.contentFixes = void 0;
|
|
4
|
+
exports.fixLmAnnotations = fixLmAnnotations;
|
|
5
|
+
const index_1 = require("./index");
|
|
6
|
+
const removeMediaPlaceholder = {
|
|
7
|
+
run: (0, index_1.findReplaceFunc)(/<p>\[Text[^\]]*by SME[^\]]*]<\/p>/, ''),
|
|
8
|
+
tests: [(0, index_1.notInTest)(/<p>\[Text[^\]]*by SME[^\]]*]<\/p>/)]
|
|
9
|
+
};
|
|
10
|
+
const removeInsertAnnotationForMedia = {
|
|
11
|
+
run: (0, index_1.findReplaceFunc)(/\[[iI]nsert annotation for media]/, ''),
|
|
12
|
+
tests: [(0, index_1.notInTest)(/\[.*annotation,.*]/)]
|
|
13
|
+
};
|
|
14
|
+
const removeSecondaryMediaTitle = {
|
|
15
|
+
run: (0, index_1.findReplaceFunc)(/<h3>\[Title for <span style="text-decoration: underline;"> optional <\/span>secondary media element\]<\/h3>/, ''),
|
|
16
|
+
tests: [(0, index_1.notInTest)('secondary media element]')]
|
|
17
|
+
};
|
|
18
|
+
const removeBlockQuote = {
|
|
19
|
+
run: function (input) {
|
|
20
|
+
const el = document.createElement('div');
|
|
21
|
+
el.innerHTML = input;
|
|
22
|
+
const bqElement = el.querySelector('blockquote');
|
|
23
|
+
if (bqElement?.innerHTML.includes('SME')) {
|
|
24
|
+
bqElement.parentElement?.parentElement?.remove();
|
|
25
|
+
}
|
|
26
|
+
const output = el.innerHTML;
|
|
27
|
+
el.remove();
|
|
28
|
+
return output;
|
|
29
|
+
},
|
|
30
|
+
tests: [(0, index_1.notInTest)(/\[Pull quote -/)]
|
|
31
|
+
};
|
|
32
|
+
const removeLmNarrativePlaceholder = {
|
|
33
|
+
run: function (input) {
|
|
34
|
+
const el = document.createElement('div');
|
|
35
|
+
el.innerHTML = input;
|
|
36
|
+
const divs = el.querySelectorAll('div.cbt-content');
|
|
37
|
+
const toRemove = Array.from(divs).filter((div) => div.innerHTML.includes('LM Narrative'));
|
|
38
|
+
for (const element of toRemove)
|
|
39
|
+
element.remove();
|
|
40
|
+
const output = el.innerHTML;
|
|
41
|
+
el.remove();
|
|
42
|
+
return output;
|
|
43
|
+
},
|
|
44
|
+
tests: [
|
|
45
|
+
(0, index_1.notInTest)(/LM Narrative/)
|
|
46
|
+
]
|
|
47
|
+
};
|
|
48
|
+
const contentFixes = [
|
|
49
|
+
removeMediaPlaceholder,
|
|
50
|
+
removeLmNarrativePlaceholder,
|
|
51
|
+
removeInsertAnnotationForMedia,
|
|
52
|
+
removeSecondaryMediaTitle,
|
|
53
|
+
removeBlockQuote,
|
|
54
|
+
];
|
|
55
|
+
exports.contentFixes = contentFixes;
|
|
56
|
+
/**
|
|
57
|
+
* Removes annotation placeholder text from Learning Materials in the course
|
|
58
|
+
* @param course
|
|
59
|
+
*/
|
|
60
|
+
async function fixLmAnnotations(course) {
|
|
61
|
+
const pages = await course.getPages({
|
|
62
|
+
queryParams: {
|
|
63
|
+
include: ['body'],
|
|
64
|
+
search_term: 'learning materials'
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
const pendingUpdates = [];
|
|
68
|
+
const fixedPages = [];
|
|
69
|
+
const unchangedPages = [];
|
|
70
|
+
const failedPages = [];
|
|
71
|
+
const failedFixes = [];
|
|
72
|
+
for (const page of pages) {
|
|
73
|
+
const sourceHtml = page.body;
|
|
74
|
+
const fix = (0, index_1.runReplacements)(contentFixes, sourceHtml);
|
|
75
|
+
const fixedValue = fix.output;
|
|
76
|
+
if (fix.failedFixes.length > 0) {
|
|
77
|
+
failedPages.push(page);
|
|
78
|
+
console.log(page);
|
|
79
|
+
console.log(fix);
|
|
80
|
+
}
|
|
81
|
+
if (sourceHtml === fixedValue) {
|
|
82
|
+
console.log(sourceHtml.length - fixedValue.length);
|
|
83
|
+
console.log(`Page unchanged ${page.name}`);
|
|
84
|
+
unchangedPages.push(page);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log(`fixed ${page.name}`);
|
|
88
|
+
pendingUpdates.push(page.updateContent(fixedValue));
|
|
89
|
+
fixedPages.push(page);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
await Promise.all(pendingUpdates);
|
|
93
|
+
return { fixedPages, unchangedPages, failedPages };
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/fixes/annotations.ts"],"names":[],"mappings":"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"}
|