@robertying/thu-learn-lib 4.1.0 → 5.0.0
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/lib/contents.d.ts +4 -4
- package/lib/contents.d.ts.map +1 -1
- package/lib/contents.js +18 -19
- package/lib/contents.js.map +1 -1
- package/lib/courses.d.ts +5 -3
- package/lib/courses.d.ts.map +1 -1
- package/lib/courses.js +19 -7
- package/lib/courses.js.map +1 -1
- package/lib/homework.d.ts +11 -3
- package/lib/homework.d.ts.map +1 -1
- package/lib/homework.js +27 -26
- package/lib/homework.js.map +1 -1
- package/lib/index.d.ts +39 -10
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +51 -13
- package/lib/index.js.map +1 -1
- package/lib/notices.d.ts +11 -3
- package/lib/notices.d.ts.map +1 -1
- package/lib/notices.js +31 -23
- package/lib/notices.js.map +1 -1
- package/lib/request.d.ts +32 -6
- package/lib/request.d.ts.map +1 -1
- package/lib/request.js +153 -46
- package/lib/request.js.map +1 -1
- package/lib/types.d.ts +43 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +1 -0
- package/lib/types.js.map +1 -1
- package/lib/utils.d.ts +3 -0
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +2 -0
- package/lib/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/contents.ts +20 -24
- package/src/courses.ts +21 -7
- package/src/homework.ts +89 -84
- package/src/index.ts +77 -14
- package/src/notices.ts +48 -43
- package/src/request.ts +159 -46
- package/src/types.ts +50 -1
- package/src/utils.ts +5 -0
package/lib/contents.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Session } from './request.ts';
|
|
2
|
-
import type {
|
|
3
|
-
import { ContentType
|
|
2
|
+
import type { AllContentsOptions, AllContentsResult } from './types.ts';
|
|
3
|
+
import { ContentType } from './types.ts';
|
|
4
4
|
/**
|
|
5
5
|
* Get certain type of content of all specified courses.
|
|
6
|
-
* It
|
|
6
|
+
* It wraps around the `getXXX` list functions; one course failing doesn't fail the others: its error is in `errors`.
|
|
7
7
|
*/
|
|
8
|
-
export declare function getAllContents<T extends ContentType>(s: Session, courseIDs: string[], type: T,
|
|
8
|
+
export declare function getAllContents<T extends ContentType>(s: Session, courseIDs: string[], type: T, options?: AllContentsOptions<T>): Promise<AllContentsResult<T>>;
|
|
9
9
|
//# sourceMappingURL=contents.d.ts.map
|
package/lib/contents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contents.d.ts","sourceRoot":"","sources":["../src/contents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"contents.d.ts","sourceRoot":"","sources":["../src/contents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAiC,MAAM,YAAY,CAAC;AACvG,OAAO,EAAE,WAAW,EAA0B,MAAM,YAAY,CAAC;AAOjE;;;GAGG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,WAAW,EACxD,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,kBAAkB,CAAC,CAAC,CAAM,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CA0C/B"}
|
package/lib/contents.js
CHANGED
|
@@ -7,17 +7,22 @@ import { getNotificationList } from './notices.js';
|
|
|
7
7
|
import { getQuestionnaireList } from './questionnaires.js';
|
|
8
8
|
/**
|
|
9
9
|
* Get certain type of content of all specified courses.
|
|
10
|
-
* It
|
|
10
|
+
* It wraps around the `getXXX` list functions; one course failing doesn't fail the others: its error is in `errors`.
|
|
11
11
|
*/
|
|
12
|
-
export async function getAllContents(s, courseIDs, type,
|
|
12
|
+
export async function getAllContents(s, courseIDs, type, options = {}) {
|
|
13
|
+
const courseType = options.courseType ?? CourseType.STUDENT;
|
|
13
14
|
const fetchContentForCourse = (id) => {
|
|
14
15
|
switch (type) {
|
|
15
16
|
case ContentType.NOTIFICATION:
|
|
16
|
-
return getNotificationList(s, id, courseType
|
|
17
|
+
return getNotificationList(s, id, courseType, {
|
|
18
|
+
attachments: options.details,
|
|
19
|
+
});
|
|
17
20
|
case ContentType.FILE:
|
|
18
21
|
return getFileList(s, id, courseType);
|
|
19
22
|
case ContentType.HOMEWORK:
|
|
20
|
-
return getHomeworkList(s, id
|
|
23
|
+
return getHomeworkList(s, id, CourseType.STUDENT, {
|
|
24
|
+
details: options.details,
|
|
25
|
+
});
|
|
21
26
|
case ContentType.DISCUSSION:
|
|
22
27
|
return getDiscussionList(s, id, courseType);
|
|
23
28
|
case ContentType.QUESTION:
|
|
@@ -32,21 +37,15 @@ export async function getAllContents(s, courseIDs, type, courseType = CourseType
|
|
|
32
37
|
}
|
|
33
38
|
};
|
|
34
39
|
const contents = {};
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
reason: FailReason.INVALID_RESPONSE,
|
|
43
|
-
extra: {
|
|
44
|
-
reason: r.reason,
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
}
|
|
40
|
+
const errors = {};
|
|
41
|
+
await Promise.all(courseIDs.map(async (id) => {
|
|
42
|
+
try {
|
|
43
|
+
contents[id] = await fetchContentForCourse(id);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
errors[id] = err;
|
|
48
47
|
}
|
|
49
|
-
}
|
|
50
|
-
return contents;
|
|
48
|
+
}));
|
|
49
|
+
return { contents, errors };
|
|
51
50
|
}
|
|
52
51
|
//# sourceMappingURL=contents.js.map
|
package/lib/contents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contents.js","sourceRoot":"","sources":["../src/contents.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAIhD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,CAAU,EACV,SAAmB,EACnB,IAAO,EACP,
|
|
1
|
+
{"version":3,"file":"contents.js","sourceRoot":"","sources":["../src/contents.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAIhD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,CAAU,EACV,SAAmB,EACnB,IAAO,EACP,OAAO,GAA0B,EAAE;IAEnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC;IAC5D,MAAM,qBAAqB,GAAG,CAAC,EAAU,EAAgC,EAAE;QACzE,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,WAAW,CAAC,YAAY;gBAC3B,OAAO,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE;oBAC5C,WAAW,EAAG,OAAwD,CAAC,OAAO;iBAC/E,CAAiC,CAAC;YACrC,KAAK,WAAW,CAAC,IAAI;gBACnB,OAAO,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,CAAiC,CAAC;YACxE,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE;oBAChD,OAAO,EAAG,OAAoD,CAAC,OAAO;iBACvE,CAAiC,CAAC;YACrC,KAAK,WAAW,CAAC,UAAU;gBACzB,OAAO,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,CAAiC,CAAC;YAC9E,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,CAAiC,CAAC;YACpF,KAAK,WAAW,CAAC,aAAa;gBAC5B,OAAO,oBAAoB,CAAC,CAAC,EAAE,EAAE,CAAiC,CAAC;YACrE;gBACE,OAAO,OAAO,CAAC,MAAM,CAAC;oBACpB,MAAM,EAAE,UAAU,CAAC,eAAe;oBAClC,KAAK,EAAE,sBAAsB;iBAC9B,CAAC,CAAC;QACP,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAmC,EAAE,CAAC;IAElD,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
|
package/lib/courses.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { Session } from './request.ts';
|
|
2
|
-
import type { CourseInfo, SemesterInfo } from './types.ts';
|
|
2
|
+
import type { CourseInfo, CourseListOptions, SemesterInfo } from './types.ts';
|
|
3
3
|
import { CourseType } from './types.ts';
|
|
4
4
|
export declare function getSemesterIdList(s: Session): Promise<string[]>;
|
|
5
5
|
export declare function getCurrentSemester(s: Session): Promise<SemesterInfo>;
|
|
6
|
-
/** get all courses in the specified semester */
|
|
7
|
-
export declare function getCourseList(s: Session, semesterID: string, courseType?: CourseType, lang?: import("./types.ts").Language): Promise<CourseInfo[]>;
|
|
6
|
+
/** get all courses in the specified semester; time and location only with `options.timeAndLocation` */
|
|
7
|
+
export declare function getCourseList(s: Session, semesterID: string, courseType?: CourseType, lang?: import("./types.ts").Language, options?: CourseListOptions): Promise<CourseInfo[]>;
|
|
8
|
+
/** get the time and location of one course (1 request) */
|
|
9
|
+
export declare function getCourseTimeAndLocation(s: Session, courseID: string): Promise<string[]>;
|
|
8
10
|
export declare function sortCourses(s: Session, courseIDs: string[]): Promise<void>;
|
|
9
11
|
//# sourceMappingURL=courses.d.ts.map
|
package/lib/courses.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../src/courses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../src/courses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAY,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAIpD,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWrE;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB1E;AAED,uGAAuG;AACvG,wBAAsB,aAAa,CACjC,CAAC,EAAE,OAAO,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAA+B,EAC3C,IAAI,gCAAS,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,CAmCvB;AAED,0DAA0D;AAC1D,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO9F;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhF"}
|
package/lib/courses.js
CHANGED
|
@@ -32,8 +32,8 @@ export async function getCurrentSemester(s) {
|
|
|
32
32
|
type: parseSemesterType(Number(result.xnxq.slice(10, 11))),
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
/** get all courses in the specified semester */
|
|
36
|
-
export async function getCourseList(s, semesterID, courseType = CourseType.STUDENT, lang = s.lang) {
|
|
35
|
+
/** get all courses in the specified semester; time and location only with `options.timeAndLocation` */
|
|
36
|
+
export async function getCourseList(s, semesterID, courseType = CourseType.STUDENT, lang = s.lang, options = {}) {
|
|
37
37
|
const json = await (await s.fetchWithToken(URLS.LEARN_COURSE_LIST(semesterID, courseType, lang))).json();
|
|
38
38
|
if (json.message !== 'success' || !Array.isArray(json.resultList)) {
|
|
39
39
|
return Promise.reject({
|
|
@@ -43,12 +43,15 @@ export async function getCourseList(s, semesterID, courseType = CourseType.STUDE
|
|
|
43
43
|
}
|
|
44
44
|
const result = (json.resultList ?? []);
|
|
45
45
|
return Promise.all(result.map(async (c) => {
|
|
46
|
-
let timeAndLocation
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
let timeAndLocation;
|
|
47
|
+
if (options.timeAndLocation) {
|
|
48
|
+
try {
|
|
49
|
+
timeAndLocation = await getCourseTimeAndLocation(s, c.wlkcid);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
timeAndLocation = [];
|
|
53
|
+
}
|
|
50
54
|
}
|
|
51
|
-
catch (e) { }
|
|
52
55
|
return {
|
|
53
56
|
id: c.wlkcid,
|
|
54
57
|
name: decodeHTML(c.zywkcm),
|
|
@@ -64,6 +67,15 @@ export async function getCourseList(s, semesterID, courseType = CourseType.STUDE
|
|
|
64
67
|
};
|
|
65
68
|
}));
|
|
66
69
|
}
|
|
70
|
+
/** get the time and location of one course (1 request) */
|
|
71
|
+
export async function getCourseTimeAndLocation(s, courseID) {
|
|
72
|
+
// see https://github.com/Harry-Chen/Learn-Helper/issues/145
|
|
73
|
+
const json = await (await s.fetchWithToken(URLS.LEARN_COURSE_TIME_LOCATION(courseID))).json();
|
|
74
|
+
if (!Array.isArray(json)) {
|
|
75
|
+
throw { reason: FailReason.INVALID_RESPONSE, extra: json };
|
|
76
|
+
}
|
|
77
|
+
return json;
|
|
78
|
+
}
|
|
67
79
|
export async function sortCourses(s, courseIDs) {
|
|
68
80
|
const json = await (await s.fetchWithToken(URLS.LEARN_SORT_COURSES, {
|
|
69
81
|
method: 'POST',
|
package/lib/courses.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courses.js","sourceRoot":"","sources":["../src/courses.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAIzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,CAAU;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,UAAU,CAAC,gBAAgB;YACnC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GAAG,IAAgB,CAAC;IACnC,uDAAuD;IACvD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,CAAU;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,UAAU,CAAC,gBAAgB;YACnC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAC,IAAI;QACtB,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"courses.js","sourceRoot":"","sources":["../src/courses.ts"],"names":[],"mappings":"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"}
|
package/lib/homework.d.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { Session } from './request.ts';
|
|
2
|
-
import type { Homework, HomeworkTA, IHomeworkSubmitAttachment } from './types.ts';
|
|
2
|
+
import type { Homework, HomeworkListOptions, HomeworkTA, IExcellentHomework, IHomework, IHomeworkDetail, IHomeworkSubmitAttachment } from './types.ts';
|
|
3
3
|
import { CourseType } from './types.ts';
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Get all homeworks (课程作业) of the specified course: 3 status lists and the excellent homework list.
|
|
6
|
+
* Details (page + description) only for the homework `options.details` selects.
|
|
7
|
+
*/
|
|
5
8
|
export declare function getHomeworkList(s: Session, courseID: string): Promise<Homework[]>;
|
|
6
|
-
export declare function getHomeworkList(s: Session, courseID: string, courseType: CourseType.STUDENT): Promise<Homework[]>;
|
|
9
|
+
export declare function getHomeworkList(s: Session, courseID: string, courseType: CourseType.STUDENT, options?: HomeworkListOptions): Promise<Homework[]>;
|
|
7
10
|
export declare function getHomeworkList(s: Session, courseID: string, courseType: CourseType.TEACHER): Promise<HomeworkTA[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Get the detail of one homework or excellent homework: its page (answer, submitted content, attachments) and the
|
|
13
|
+
* description JSON (which wins for `description`). 2 requests.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getHomeworkDetail(s: Session, homework: Pick<IHomework | IExcellentHomework, 'url' | 'baseId'>): Promise<IHomeworkDetail>;
|
|
8
16
|
export declare function submitHomework(s: Session, id: string, content?: string, attachment?: IHomeworkSubmitAttachment, removeAttachment?: boolean): Promise<void>;
|
|
9
17
|
//# sourceMappingURL=homework.d.ts.map
|
package/lib/homework.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homework.d.ts","sourceRoot":"","sources":["../src/homework.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAGV,QAAQ,EACR,UAAU,
|
|
1
|
+
{"version":3,"file":"homework.d.ts","sourceRoot":"","sources":["../src/homework.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAGV,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,eAAe,EAEf,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAe,UAAU,EAAc,MAAM,YAAY,CAAC;AAIjE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEnF,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,CAAC,OAAO,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEvB,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AA2KrH;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,IAAI,CAAC,SAAS,GAAG,kBAAkB,EAAE,KAAK,GAAG,QAAQ,CAAC,GAC/D,OAAO,CAAC,eAAe,CAAC,CAM1B;AA2CD,wBAAsB,cAAc,CAClC,CAAC,EAAE,OAAO,EACV,EAAE,EAAE,MAAM,EACV,OAAO,SAAK,EACZ,UAAU,CAAC,EAAE,yBAAyB,EACtC,gBAAgB,UAAQ,GACvB,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
package/lib/homework.js
CHANGED
|
@@ -3,8 +3,8 @@ import { Base64 } from 'js-base64';
|
|
|
3
3
|
import { $, YES } from './request.js';
|
|
4
4
|
import { ContentType, CourseType, FailReason } from './types.js';
|
|
5
5
|
import * as URLS from './urls.js';
|
|
6
|
-
import { GRADE_LEVEL_MAP, decodeHTML, trimAndDefine } from './utils.js';
|
|
7
|
-
export async function getHomeworkList(s, courseID, courseType = CourseType.STUDENT) {
|
|
6
|
+
import { GRADE_LEVEL_MAP, decodeHTML, isSelected, trimAndDefine } from './utils.js';
|
|
7
|
+
export async function getHomeworkList(s, courseID, courseType = CourseType.STUDENT, options = {}) {
|
|
8
8
|
if (courseType === CourseType.TEACHER) {
|
|
9
9
|
const json = await (await s.fetchWithToken(URLS.LEARN_HOMEWORK_LIST_TEACHER, {
|
|
10
10
|
method: 'POST',
|
|
@@ -36,7 +36,15 @@ export async function getHomeworkList(s, courseID, courseType = CourseType.STUDE
|
|
|
36
36
|
}));
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
|
|
39
|
+
const [lists, excellentHomeworkListByHomework] = await Promise.all([
|
|
40
|
+
Promise.all(URLS.LEARN_HOMEWORK_LIST_SOURCE.map((source) => getHomeworkListAtUrl(s, courseID, source.url, source.status))),
|
|
41
|
+
// Don't block the whole process if excellent homework list cannot be fetched
|
|
42
|
+
getExcellentHomeworkListByHomework(s, courseID).catch(() => ({})),
|
|
43
|
+
]);
|
|
44
|
+
return Promise.all(lists.flat().map(async (h) => {
|
|
45
|
+
const homework = { ...h, excellentHomeworkList: excellentHomeworkListByHomework[h.baseId] };
|
|
46
|
+
return isSelected(options.details, homework) ? { ...homework, ...(await getHomeworkDetail(s, h)) } : homework;
|
|
47
|
+
}));
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
async function getHomeworkListAtUrl(s, courseID, url, status) {
|
|
@@ -51,15 +59,7 @@ async function getHomeworkListAtUrl(s, courseID, url, status) {
|
|
|
51
59
|
});
|
|
52
60
|
}
|
|
53
61
|
const result = (json.object?.aaData ?? []);
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
excellentHomeworkListByHomework = await getExcellentHomeworkListByHomework(s, courseID);
|
|
57
|
-
}
|
|
58
|
-
catch (e) {
|
|
59
|
-
// Don't block the whole process if excellent homework list cannot be fetched
|
|
60
|
-
}
|
|
61
|
-
return Promise.all(result
|
|
62
|
-
.map((h) => ({
|
|
62
|
+
return result.map((h) => ({
|
|
63
63
|
id: h.xszyid,
|
|
64
64
|
studentHomeworkId: h.xszyid,
|
|
65
65
|
baseId: h.zyid,
|
|
@@ -80,14 +80,8 @@ async function getHomeworkListAtUrl(s, courseID, url, status) {
|
|
|
80
80
|
isFavorite: h.sfsc === YES,
|
|
81
81
|
favoriteTime: h.scsj === null || h.sfsc !== YES ? undefined : h.scsj,
|
|
82
82
|
comment: h.bznr ?? undefined,
|
|
83
|
-
excellentHomeworkList: excellentHomeworkListByHomework[h.zyid],
|
|
84
83
|
...status,
|
|
85
|
-
}))
|
|
86
|
-
.map(async (h) => ({
|
|
87
|
-
...h,
|
|
88
|
-
...(await parseHomeworkAtUrl(s, h.url)),
|
|
89
|
-
...(await getHomeworkDetail(s, h.baseId)),
|
|
90
|
-
})));
|
|
84
|
+
}));
|
|
91
85
|
}
|
|
92
86
|
async function getExcellentHomeworkListByHomework(s, courseID) {
|
|
93
87
|
const json = await (await s.fetchWithToken(URLS.LEARN_HOMEWORK_LIST_EXCELLENT, {
|
|
@@ -101,7 +95,7 @@ async function getExcellentHomeworkListByHomework(s, courseID) {
|
|
|
101
95
|
});
|
|
102
96
|
}
|
|
103
97
|
const result = (json.object?.aaData ?? []);
|
|
104
|
-
return
|
|
98
|
+
return result
|
|
105
99
|
.map((h) => ({
|
|
106
100
|
id: h.xszyid,
|
|
107
101
|
baseId: h.zyid,
|
|
@@ -114,11 +108,7 @@ async function getExcellentHomeworkListByHomework(s, courseID) {
|
|
|
114
108
|
anonymous: h.sfzm === YES,
|
|
115
109
|
},
|
|
116
110
|
}))
|
|
117
|
-
.
|
|
118
|
-
...h,
|
|
119
|
-
...(await parseHomeworkAtUrl(s, h.url)),
|
|
120
|
-
...(await getHomeworkDetail(s, h.baseId)),
|
|
121
|
-
})))).reduce((acc, cur) => {
|
|
111
|
+
.reduce((acc, cur) => {
|
|
122
112
|
if (!acc[cur.baseId]) {
|
|
123
113
|
acc[cur.baseId] = [];
|
|
124
114
|
}
|
|
@@ -140,7 +130,18 @@ async function parseHomeworkAtUrl(s, url) {
|
|
|
140
130
|
gradeAttachment: parseHomeworkFile(s, fileDivs[3]),
|
|
141
131
|
};
|
|
142
132
|
}
|
|
143
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Get the detail of one homework or excellent homework: its page (answer, submitted content, attachments) and the
|
|
135
|
+
* description JSON (which wins for `description`). 2 requests.
|
|
136
|
+
*/
|
|
137
|
+
export async function getHomeworkDetail(s, homework) {
|
|
138
|
+
const [page, description] = await Promise.all([
|
|
139
|
+
parseHomeworkAtUrl(s, homework.url),
|
|
140
|
+
getHomeworkDescription(s, homework.baseId),
|
|
141
|
+
]);
|
|
142
|
+
return { ...page, ...description };
|
|
143
|
+
}
|
|
144
|
+
async function getHomeworkDescription(s, baseId) {
|
|
144
145
|
const json = await (await s.fetchWithToken(URLS.LEARN_HOMEWORK_DETAIL, {
|
|
145
146
|
method: 'POST',
|
|
146
147
|
body: URLS.LEARN_HOMEWORK_DETAIL_FORM_DATA(baseId),
|
package/lib/homework.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homework.js","sourceRoot":"","sources":["../src/homework.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"homework.js","sourceRoot":"","sources":["../src/homework.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CalendarOptions, CalendarResult, CommentItem, CourseInfo, Discussion, FavoriteItem, File, FileCategory, HelperConfig, Homework, HomeworkTA, IHomeworkSubmitAttachment, Language, Notification, Question, Questionnaire, SemesterInfo, UserInfo, ContentType } from './types.ts';
|
|
1
|
+
import type { AllContentsOptions, AllContentsResult, CalendarOptions, CalendarResult, CourseListOptions, ExcellentHomework, HomeworkListOptions, IHomeworkDetail, NotificationListOptions, RemoteFile, CommentItem, CourseInfo, Discussion, FavoriteItem, File, FileCategory, HelperConfig, Homework, HomeworkTA, IHomeworkSubmitAttachment, Language, Notification, Question, Questionnaire, SemesterInfo, UserInfo, ContentType } from './types.ts';
|
|
2
2
|
import { CourseType } from './types.ts';
|
|
3
3
|
export { addCSRFTokenToUrl } from './request.ts';
|
|
4
4
|
export * from './types.ts';
|
|
@@ -19,8 +19,17 @@ export declare class Learn2018Helper {
|
|
|
19
19
|
* be sure to clear id.tsinghua.edu.cn cookies before calling this function
|
|
20
20
|
*/
|
|
21
21
|
getRoamingTicket(username: string, password: string, fingerPrint: string, fingerGenPrint?: string, fingerGenPrint3?: string): Promise<string>;
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Login is necessary if you do not provide a `CredentialProvider`.
|
|
24
|
+
* Without credentials it uses the provider, and concurrent calls share one SSO login.
|
|
25
|
+
*/
|
|
23
26
|
login(username?: string, password?: string, fingerPrint?: string, fingerGenPrint?: string, fingerGenPrint3?: string): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Make sure the session is usable without a full SSO login when possible: with a CSRF token (from an earlier login
|
|
29
|
+
* or `setCSRFToken`), make one cheap request and log in again only if the session has expired; without one, log in.
|
|
30
|
+
* Use it when resuming an app instead of `login()`.
|
|
31
|
+
*/
|
|
32
|
+
ensureSession(): Promise<void>;
|
|
24
33
|
/** logout (to make everyone happy) */
|
|
25
34
|
logout(): Promise<void>;
|
|
26
35
|
/** get user's name and department */
|
|
@@ -33,15 +42,27 @@ export declare class Learn2018Helper {
|
|
|
33
42
|
getCalendar(startDate: string, endDate: string, options?: CalendarOptions): Promise<CalendarResult>;
|
|
34
43
|
getSemesterIdList(): Promise<string[]>;
|
|
35
44
|
getCurrentSemester(): Promise<SemesterInfo>;
|
|
36
|
-
/**
|
|
37
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Get all courses in the specified semester.
|
|
47
|
+
* `timeAndLocation` is only fetched (one request per course) with `options.timeAndLocation`.
|
|
48
|
+
*/
|
|
49
|
+
getCourseList(semesterID: string, courseType?: CourseType, lang?: Language, options?: CourseListOptions): Promise<CourseInfo[]>;
|
|
50
|
+
/** Get the time and location of one course. */
|
|
51
|
+
getCourseTimeAndLocation(courseID: string): Promise<string[]>;
|
|
38
52
|
/**
|
|
39
53
|
* Get certain type of content of all specified courses.
|
|
40
|
-
* It
|
|
54
|
+
* It wraps around the `getXXX` list functions; a course that fails is reported in `errors` instead of failing
|
|
55
|
+
* the rest. `options.details` is passed on as homework `details` or notification `attachments`.
|
|
56
|
+
*/
|
|
57
|
+
getAllContents<T extends ContentType>(courseIDs: string[], type: T, options?: AllContentsOptions<T>): Promise<AllContentsResult<T>>;
|
|
58
|
+
/**
|
|
59
|
+
* Get all notifications (课程公告) of the specified course.
|
|
60
|
+
* Attachments are only fetched (one request per notice) for the notices `options.attachments` selects;
|
|
61
|
+
* use `getNotificationAttachment` for the others.
|
|
41
62
|
*/
|
|
42
|
-
|
|
43
|
-
/** Get
|
|
44
|
-
|
|
63
|
+
getNotificationList(courseID: string, courseType?: CourseType, options?: NotificationListOptions): Promise<Notification[]>;
|
|
64
|
+
/** Get the attachment of a notice (one request), `undefined` if it has none. */
|
|
65
|
+
getNotificationAttachment(notification: Pick<Notification, 'url' | 'attachmentName'>, courseType?: CourseType): Promise<RemoteFile | undefined>;
|
|
45
66
|
/** Get all files (课程文件) of the specified course. */
|
|
46
67
|
getFileList(courseID: string, courseType?: CourseType): Promise<File[]>;
|
|
47
68
|
/** Get file categories of the specified course. */
|
|
@@ -51,10 +72,18 @@ export declare class Learn2018Helper {
|
|
|
51
72
|
* Note: this cannot get correct `visitCount` and `downloadCount` for student
|
|
52
73
|
*/
|
|
53
74
|
getFileListByCategory(courseID: string, categoryId: string, courseType?: CourseType): Promise<File[]>;
|
|
54
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Get all homeworks (课程作业) of the specified course, with the excellent homework list (without details).
|
|
77
|
+
* Details (page + description, two requests per homework) are only fetched for the homework `options.details`
|
|
78
|
+
* selects; use `getHomeworkDetail` for the others.
|
|
79
|
+
*/
|
|
55
80
|
getHomeworkList(courseID: string): Promise<Homework[]>;
|
|
56
|
-
getHomeworkList(courseID: string, courseType: CourseType.STUDENT): Promise<Homework[]>;
|
|
81
|
+
getHomeworkList(courseID: string, courseType: CourseType.STUDENT, options?: HomeworkListOptions): Promise<Homework[]>;
|
|
57
82
|
getHomeworkList(courseID: string, courseType: CourseType.TEACHER): Promise<HomeworkTA[]>;
|
|
83
|
+
/** Get the detail (page content, attachments and description) of one homework. */
|
|
84
|
+
getHomeworkDetail(item: Pick<Homework, 'url' | 'baseId'>): Promise<IHomeworkDetail>;
|
|
85
|
+
/** Get the detail (page content, attachments and description) of one excellent homework. */
|
|
86
|
+
getExcellentHomeworkDetail(item: Pick<ExcellentHomework, 'url' | 'baseId'>): Promise<IHomeworkDetail>;
|
|
58
87
|
/** Get all discussions (课程讨论) of the specified course. */
|
|
59
88
|
getDiscussionList(courseID: string, courseType?: CourseType): Promise<Discussion[]>;
|
|
60
89
|
/**
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,yBAAyB,EACzB,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import * as notices from './notices.js';
|
|
|
10
10
|
import * as questionnaires from './questionnaires.js';
|
|
11
11
|
import { Session } from './request.js';
|
|
12
12
|
import { CourseType } from './types.js';
|
|
13
|
+
import * as URLS from './urls.js';
|
|
13
14
|
import * as user from './user.js';
|
|
14
15
|
export { addCSRFTokenToUrl } from './request.js';
|
|
15
16
|
export * from './types.js';
|
|
@@ -18,7 +19,7 @@ export class Learn2018Helper {
|
|
|
18
19
|
#session;
|
|
19
20
|
/** you can provide a CookieJar and / or CredentialProvider in the configuration */
|
|
20
21
|
constructor(config) {
|
|
21
|
-
this.#session = new Session(config, () =>
|
|
22
|
+
this.#session = new Session(config, () => auth.login(this.#session));
|
|
22
23
|
}
|
|
23
24
|
/** whether preview URLs open the first page only (`HelperConfig.generatePreviewUrlForFirstPage`) */
|
|
24
25
|
get previewFirstPage() {
|
|
@@ -42,10 +43,23 @@ export class Learn2018Helper {
|
|
|
42
43
|
async getRoamingTicket(username, password, fingerPrint, fingerGenPrint = '', fingerGenPrint3 = '') {
|
|
43
44
|
return auth.getRoamingTicket(this.#session, username, password, fingerPrint, fingerGenPrint, fingerGenPrint3);
|
|
44
45
|
}
|
|
45
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Login is necessary if you do not provide a `CredentialProvider`.
|
|
48
|
+
* Without credentials it uses the provider, and concurrent calls share one SSO login.
|
|
49
|
+
*/
|
|
46
50
|
async login(username, password, fingerPrint, fingerGenPrint, fingerGenPrint3) {
|
|
51
|
+
if (!username || !password || !fingerPrint)
|
|
52
|
+
return this.#session.relogin();
|
|
47
53
|
return auth.login(this.#session, username, password, fingerPrint, fingerGenPrint, fingerGenPrint3);
|
|
48
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Make sure the session is usable without a full SSO login when possible: with a CSRF token (from an earlier login
|
|
57
|
+
* or `setCSRFToken`), make one cheap request and log in again only if the session has expired; without one, log in.
|
|
58
|
+
* Use it when resuming an app instead of `login()`.
|
|
59
|
+
*/
|
|
60
|
+
async ensureSession() {
|
|
61
|
+
return this.#session.ensureSession(URLS.LEARN_CURRENT_SEMESTER());
|
|
62
|
+
}
|
|
49
63
|
/** logout (to make everyone happy) */
|
|
50
64
|
async logout() {
|
|
51
65
|
return auth.logout(this.#session);
|
|
@@ -68,20 +82,36 @@ export class Learn2018Helper {
|
|
|
68
82
|
async getCurrentSemester() {
|
|
69
83
|
return courses.getCurrentSemester(this.#session);
|
|
70
84
|
}
|
|
71
|
-
/**
|
|
72
|
-
|
|
73
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Get all courses in the specified semester.
|
|
87
|
+
* `timeAndLocation` is only fetched (one request per course) with `options.timeAndLocation`.
|
|
88
|
+
*/
|
|
89
|
+
async getCourseList(semesterID, courseType = CourseType.STUDENT, lang = this.#session.lang, options) {
|
|
90
|
+
return courses.getCourseList(this.#session, semesterID, courseType, lang, options);
|
|
91
|
+
}
|
|
92
|
+
/** Get the time and location of one course. */
|
|
93
|
+
async getCourseTimeAndLocation(courseID) {
|
|
94
|
+
return courses.getCourseTimeAndLocation(this.#session, courseID);
|
|
74
95
|
}
|
|
75
96
|
/**
|
|
76
97
|
* Get certain type of content of all specified courses.
|
|
77
|
-
* It
|
|
98
|
+
* It wraps around the `getXXX` list functions; a course that fails is reported in `errors` instead of failing
|
|
99
|
+
* the rest. `options.details` is passed on as homework `details` or notification `attachments`.
|
|
100
|
+
*/
|
|
101
|
+
async getAllContents(courseIDs, type, options) {
|
|
102
|
+
return contents.getAllContents(this.#session, courseIDs, type, options);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get all notifications (课程公告) of the specified course.
|
|
106
|
+
* Attachments are only fetched (one request per notice) for the notices `options.attachments` selects;
|
|
107
|
+
* use `getNotificationAttachment` for the others.
|
|
78
108
|
*/
|
|
79
|
-
async
|
|
80
|
-
return
|
|
109
|
+
async getNotificationList(courseID, courseType = CourseType.STUDENT, options) {
|
|
110
|
+
return notices.getNotificationList(this.#session, courseID, courseType, options);
|
|
81
111
|
}
|
|
82
|
-
/** Get
|
|
83
|
-
async
|
|
84
|
-
return notices.
|
|
112
|
+
/** Get the attachment of a notice (one request), `undefined` if it has none. */
|
|
113
|
+
async getNotificationAttachment(notification, courseType = CourseType.STUDENT) {
|
|
114
|
+
return notices.getNotificationAttachment(this.#session, notification, courseType);
|
|
85
115
|
}
|
|
86
116
|
/** Get all files (课程文件) of the specified course. */
|
|
87
117
|
async getFileList(courseID, courseType = CourseType.STUDENT) {
|
|
@@ -98,10 +128,18 @@ export class Learn2018Helper {
|
|
|
98
128
|
async getFileListByCategory(courseID, categoryId, courseType = CourseType.STUDENT) {
|
|
99
129
|
return files.getFileListByCategory(this.#session, courseID, categoryId, courseType);
|
|
100
130
|
}
|
|
101
|
-
async getHomeworkList(courseID, courseType = CourseType.STUDENT) {
|
|
131
|
+
async getHomeworkList(courseID, courseType = CourseType.STUDENT, options) {
|
|
102
132
|
return courseType === CourseType.TEACHER
|
|
103
133
|
? homework.getHomeworkList(this.#session, courseID, CourseType.TEACHER)
|
|
104
|
-
: homework.getHomeworkList(this.#session, courseID, CourseType.STUDENT);
|
|
134
|
+
: homework.getHomeworkList(this.#session, courseID, CourseType.STUDENT, options);
|
|
135
|
+
}
|
|
136
|
+
/** Get the detail (page content, attachments and description) of one homework. */
|
|
137
|
+
async getHomeworkDetail(item) {
|
|
138
|
+
return homework.getHomeworkDetail(this.#session, item);
|
|
139
|
+
}
|
|
140
|
+
/** Get the detail (page content, attachments and description) of one excellent homework. */
|
|
141
|
+
async getExcellentHomeworkDetail(item) {
|
|
142
|
+
return homework.getHomeworkDetail(this.#session, item);
|
|
105
143
|
}
|
|
106
144
|
/** Get all discussions (课程讨论) of the specified course. */
|
|
107
145
|
async getDiscussionList(courseID, courseType = CourseType.STUDENT) {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|