@robertying/thu-learn-lib 4.1.0 → 5.1.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.
Files changed (72) hide show
  1. package/README.md +41 -7
  2. package/lib/auth.d.ts +1 -1
  3. package/lib/auth.d.ts.map +1 -1
  4. package/lib/auth.js +17 -5
  5. package/lib/auth.js.map +1 -1
  6. package/lib/calendar.d.ts +6 -4
  7. package/lib/calendar.d.ts.map +1 -1
  8. package/lib/calendar.js +21 -8
  9. package/lib/calendar.js.map +1 -1
  10. package/lib/contents.d.ts +4 -4
  11. package/lib/contents.d.ts.map +1 -1
  12. package/lib/contents.js +28 -20
  13. package/lib/contents.js.map +1 -1
  14. package/lib/courses.d.ts +5 -3
  15. package/lib/courses.d.ts.map +1 -1
  16. package/lib/courses.js +24 -12
  17. package/lib/courses.js.map +1 -1
  18. package/lib/discussions.js +2 -2
  19. package/lib/discussions.js.map +1 -1
  20. package/lib/favorites.d.ts.map +1 -1
  21. package/lib/favorites.js +12 -12
  22. package/lib/favorites.js.map +1 -1
  23. package/lib/files.d.ts +1 -1
  24. package/lib/files.d.ts.map +1 -1
  25. package/lib/files.js +10 -8
  26. package/lib/files.js.map +1 -1
  27. package/lib/homework.d.ts +11 -4
  28. package/lib/homework.d.ts.map +1 -1
  29. package/lib/homework.js +46 -43
  30. package/lib/homework.js.map +1 -1
  31. package/lib/index.d.ts +47 -13
  32. package/lib/index.d.ts.map +1 -1
  33. package/lib/index.js +63 -17
  34. package/lib/index.js.map +1 -1
  35. package/lib/notices.d.ts +11 -3
  36. package/lib/notices.d.ts.map +1 -1
  37. package/lib/notices.js +40 -36
  38. package/lib/notices.js.map +1 -1
  39. package/lib/questionnaires.d.ts +6 -3
  40. package/lib/questionnaires.d.ts.map +1 -1
  41. package/lib/questionnaires.js +20 -12
  42. package/lib/questionnaires.js.map +1 -1
  43. package/lib/request.d.ts +66 -10
  44. package/lib/request.d.ts.map +1 -1
  45. package/lib/request.js +234 -50
  46. package/lib/request.js.map +1 -1
  47. package/lib/types.d.ts +52 -3
  48. package/lib/types.d.ts.map +1 -1
  49. package/lib/types.js +1 -0
  50. package/lib/types.js.map +1 -1
  51. package/lib/user.js +1 -1
  52. package/lib/user.js.map +1 -1
  53. package/lib/utils.d.ts +3 -0
  54. package/lib/utils.d.ts.map +1 -1
  55. package/lib/utils.js +11 -3
  56. package/lib/utils.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/auth.ts +18 -5
  59. package/src/calendar.ts +28 -10
  60. package/src/contents.ts +30 -25
  61. package/src/courses.ts +31 -19
  62. package/src/discussions.ts +2 -2
  63. package/src/favorites.ts +22 -32
  64. package/src/files.ts +12 -12
  65. package/src/homework.ts +118 -123
  66. package/src/index.ts +94 -19
  67. package/src/notices.ts +58 -59
  68. package/src/questionnaires.ts +51 -37
  69. package/src/request.ts +260 -48
  70. package/src/types.ts +62 -2
  71. package/src/user.ts +1 -1
  72. package/src/utils.ts +14 -3
package/lib/favorites.js CHANGED
@@ -7,7 +7,7 @@ import { CONTENT_TYPE_MAP_REVERSE, decodeHTML } from './utils.js';
7
7
  * Add an item to favorites. (收藏)
8
8
  */
9
9
  export async function addToFavorites(s, type, id) {
10
- const json = await (await s.fetchWithToken(URLS.LEARN_FAVORITE_ADD(type, id))).json();
10
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FAVORITE_ADD(type, id));
11
11
  if (json.result !== 'success' || !json.msg?.endsWith?.('成功')) {
12
12
  return Promise.reject({
13
13
  reason: FailReason.OPERATION_FAILED,
@@ -19,7 +19,7 @@ export async function addToFavorites(s, type, id) {
19
19
  * Remove an item from favorites. (取消收藏)
20
20
  */
21
21
  export async function removeFromFavorites(s, id) {
22
- const json = await (await s.fetchWithToken(URLS.LEARN_FAVORITE_REMOVE(id))).json();
22
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FAVORITE_REMOVE(id));
23
23
  if (json.result !== 'success' || !json.msg?.endsWith?.('成功')) {
24
24
  return Promise.reject({
25
25
  reason: FailReason.OPERATION_FAILED,
@@ -32,10 +32,10 @@ export async function removeFromFavorites(s, id) {
32
32
  * If `courseID` or `type` is specified, only return favorites of that course or type.
33
33
  */
34
34
  export async function getFavorites(s, courseID, type) {
35
- const json = await (await s.fetchWithToken(URLS.LEARN_FAVORITE_LIST(type), {
35
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FAVORITE_LIST(type), {
36
36
  method: 'POST',
37
37
  body: URLS.LEARN_PAGE_LIST_FORM_DATA(courseID),
38
- })).json();
38
+ });
39
39
  if (json.result !== 'success') {
40
40
  return Promise.reject({
41
41
  reason: FailReason.INVALID_RESPONSE,
@@ -70,10 +70,10 @@ export async function getFavorites(s, courseID, type) {
70
70
  * Pin a favorite item. (置顶)
71
71
  */
72
72
  export async function pinFavoriteItem(s, id) {
73
- const json = await (await s.fetchWithToken(URLS.LEARN_FAVORITE_PIN, {
73
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FAVORITE_PIN, {
74
74
  method: 'POST',
75
75
  body: URLS.LEARN_FAVORITE_PIN_UNPIN_FORM_DATA(id),
76
- })).json();
76
+ });
77
77
  if (json.result !== 'success') {
78
78
  return Promise.reject({
79
79
  reason: FailReason.OPERATION_FAILED,
@@ -85,10 +85,10 @@ export async function pinFavoriteItem(s, id) {
85
85
  * Unpin a favorite item. (取消置顶)
86
86
  */
87
87
  export async function unpinFavoriteItem(s, id) {
88
- const json = await (await s.fetchWithToken(URLS.LEARN_FAVORITE_UNPIN, {
88
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FAVORITE_UNPIN, {
89
89
  method: 'POST',
90
90
  body: URLS.LEARN_FAVORITE_PIN_UNPIN_FORM_DATA(id),
91
- })).json();
91
+ });
92
92
  if (json.result !== 'success') {
93
93
  return Promise.reject({
94
94
  reason: FailReason.OPERATION_FAILED,
@@ -101,10 +101,10 @@ export async function unpinFavoriteItem(s, id) {
101
101
  * Set an empty string to remove the comment.
102
102
  */
103
103
  export async function setComment(s, type, id, content) {
104
- const json = await (await s.fetchWithToken(URLS.LEARN_COMMENT_SET, {
104
+ const json = await s.fetchJsonWithToken(URLS.LEARN_COMMENT_SET, {
105
105
  method: 'POST',
106
106
  body: URLS.LEARN_COMMENT_SET_FORM_DATA(type, id, content),
107
- })).json();
107
+ });
108
108
  if (json.result !== 'success' || !json.msg?.endsWith?.('成功')) {
109
109
  return Promise.reject({
110
110
  reason: FailReason.OPERATION_FAILED,
@@ -117,10 +117,10 @@ export async function setComment(s, type, id, content) {
117
117
  * If `courseID` or `type` is specified, only return favorites of that course or type.
118
118
  */
119
119
  export async function getComments(s, courseID, type) {
120
- const json = await (await s.fetchWithToken(URLS.LEARN_COMMENT_LIST(type), {
120
+ const json = await s.fetchJsonWithToken(URLS.LEARN_COMMENT_LIST(type), {
121
121
  method: 'POST',
122
122
  body: URLS.LEARN_PAGE_LIST_FORM_DATA(courseID),
123
- })).json();
123
+ });
124
124
  if (json.result !== 'success') {
125
125
  return Promise.reject({
126
126
  reason: FailReason.INVALID_RESPONSE,
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.js","sourceRoot":"","sources":["../src/favorites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"favorites.js","sourceRoot":"","sources":["../src/favorites.ts"],"names":[],"mappings":"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"}
package/lib/files.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { Session } from './request.ts';
2
2
  import type { File, FileCategory } from './types.ts';
3
3
  import { CourseType } from './types.ts';
4
- /** Get all files (课程文件) of the specified course. */
4
+ /** Get all files (课程文件) of the specified course; `category` is left out if the categories can't be fetched. */
5
5
  export declare function getFileList(s: Session, courseID: string, courseType?: CourseType): Promise<File[]>;
6
6
  /** Get file categories of the specified course. */
7
7
  export declare function getFileCategoryList(s: Session, courseID: string, courseType?: CourseType): Promise<FileCategory[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAe,UAAU,EAAc,MAAM,YAAY,CAAC;AAIjE,oDAAoD;AACpD,wBAAsB,WAAW,CAC/B,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,UAA+B,GAC1C,OAAO,CAAC,IAAI,EAAE,CAAC,CAoDjB;AAED,mDAAmD;AACnD,wBAAsB,mBAAmB,CACvC,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,UAA+B,GAC1C,OAAO,CAAC,YAAY,EAAE,CAAC,CAmBzB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAA+B,GAC1C,OAAO,CAAC,IAAI,EAAE,CAAC,CA8FjB"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAe,UAAU,EAAc,MAAM,YAAY,CAAC;AAIjE,+GAA+G;AAC/G,wBAAsB,WAAW,CAC/B,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,UAA+B,GAC1C,OAAO,CAAC,IAAI,EAAE,CAAC,CAsDjB;AAED,mDAAmD;AACnD,wBAAsB,mBAAmB,CACvC,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,UAA+B,GAC1C,OAAO,CAAC,YAAY,EAAE,CAAC,CAmBzB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAA+B,GAC1C,OAAO,CAAC,IAAI,EAAE,CAAC,CA4FjB"}
package/lib/files.js CHANGED
@@ -2,9 +2,9 @@
2
2
  import { ContentType, CourseType, FailReason } from './types.js';
3
3
  import * as URLS from './urls.js';
4
4
  import { decodeHTML, formatFileSize } from './utils.js';
5
- /** Get all files (课程文件) of the specified course. */
5
+ /** Get all files (课程文件) of the specified course; `category` is left out if the categories can't be fetched. */
6
6
  export async function getFileList(s, courseID, courseType = CourseType.STUDENT) {
7
- const json = await (await s.fetchWithToken(URLS.LEARN_FILE_LIST(courseID, courseType))).json();
7
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FILE_LIST(courseID, courseType));
8
8
  if (json.result !== 'success') {
9
9
  return Promise.reject({
10
10
  reason: FailReason.INVALID_RESPONSE,
@@ -20,7 +20,9 @@ export async function getFileList(s, courseID, courseType = CourseType.STUDENT)
20
20
  // student
21
21
  result = json.object;
22
22
  }
23
- const categories = new Map((await getFileCategoryList(s, courseID, courseType)).map((c) => [c.id, c]));
23
+ // categories only fill `category`; don't fail the whole list when they can't be fetched
24
+ const categoryList = await getFileCategoryList(s, courseID, courseType).catch(() => []);
25
+ const categories = new Map(categoryList.map((c) => [c.id, c]));
24
26
  return result.map((f) => {
25
27
  const title = decodeHTML(f.bt);
26
28
  const fileId = f.wjid;
@@ -56,7 +58,7 @@ export async function getFileList(s, courseID, courseType = CourseType.STUDENT)
56
58
  }
57
59
  /** Get file categories of the specified course. */
58
60
  export async function getFileCategoryList(s, courseID, courseType = CourseType.STUDENT) {
59
- const json = await (await s.fetchWithToken(URLS.LEARN_FILE_CATEGORY_LIST(courseID, courseType))).json();
61
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FILE_CATEGORY_LIST(courseID, courseType));
60
62
  if (json.result !== 'success') {
61
63
  return Promise.reject({
62
64
  reason: FailReason.INVALID_RESPONSE,
@@ -76,7 +78,7 @@ export async function getFileCategoryList(s, courseID, courseType = CourseType.S
76
78
  */
77
79
  export async function getFileListByCategory(s, courseID, categoryId, courseType = CourseType.STUDENT) {
78
80
  if (courseType === CourseType.STUDENT) {
79
- const json = await (await s.fetchWithToken(URLS.LEARN_FILE_LIST_BY_CATEGORY_STUDENT(courseID, categoryId))).json();
81
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FILE_LIST_BY_CATEGORY_STUDENT(courseID, categoryId));
80
82
  if (json.result !== 'success') {
81
83
  return Promise.reject({
82
84
  reason: FailReason.INVALID_RESPONSE,
@@ -120,17 +122,17 @@ export async function getFileListByCategory(s, courseID, categoryId, courseType
120
122
  });
121
123
  }
122
124
  else {
123
- const json = await (await s.fetchWithToken(URLS.LEARN_FILE_LIST_BY_CATEGORY_TEACHER, {
125
+ const json = await s.fetchJsonWithToken(URLS.LEARN_FILE_LIST_BY_CATEGORY_TEACHER, {
124
126
  method: 'POST',
125
127
  body: URLS.LEARN_FILE_LIST_BY_CATEGORY_TEACHER_FORM_DATA(courseID, categoryId),
126
- })).json();
128
+ });
127
129
  if (json.result !== 'success') {
128
130
  return Promise.reject({
129
131
  reason: FailReason.INVALID_RESPONSE,
130
132
  extra: json,
131
133
  });
132
134
  }
133
- const result = (json.object.aaData ?? []);
135
+ const result = (json.object?.aaData ?? []);
134
136
  return result.map((f) => {
135
137
  const title = decodeHTML(f.bt);
136
138
  const fileId = f.wjid;
package/lib/files.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
package/lib/homework.d.ts CHANGED
@@ -1,9 +1,16 @@
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
- /** Get all homeworks (课程作业) of the specified course. */
5
- export declare function getHomeworkList(s: Session, courseID: string): Promise<Homework[]>;
6
- export declare function getHomeworkList(s: Session, courseID: string, courseType: CourseType.STUDENT): Promise<Homework[]>;
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
+ */
8
+ export declare function getHomeworkList(s: Session, courseID: string, courseType?: CourseType.STUDENT, options?: HomeworkListOptions): Promise<Homework[]>;
7
9
  export declare function getHomeworkList(s: Session, courseID: string, courseType: CourseType.TEACHER): Promise<HomeworkTA[]>;
10
+ /**
11
+ * Get the detail of one homework or excellent homework: its page (answer, submitted content, attachments) and the
12
+ * description JSON (which wins for `description`). 2 requests.
13
+ */
14
+ export declare function getHomeworkDetail(s: Session, homework: Pick<IHomework | IExcellentHomework, 'url' | 'baseId'>): Promise<IHomeworkDetail>;
8
15
  export declare function submitHomework(s: Session, id: string, content?: string, attachment?: IHomeworkSubmitAttachment, removeAttachment?: boolean): Promise<void>;
9
16
  //# sourceMappingURL=homework.d.ts.map
@@ -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,EAKV,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAe,UAAU,EAAc,MAAM,YAAY,CAAC;AAIjE,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEnF,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEnH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAuOrH,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"}
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,CAC7B,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,EAC/B,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;AAoKrH;;;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;AA0CD,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,13 +3,13 @@ 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
- const json = await (await s.fetchWithToken(URLS.LEARN_HOMEWORK_LIST_TEACHER, {
9
+ const json = await s.fetchJsonWithToken(URLS.LEARN_HOMEWORK_LIST_TEACHER, {
10
10
  method: 'POST',
11
11
  body: URLS.LEARN_PAGE_LIST_FORM_DATA(courseID),
12
- })).json();
12
+ });
13
13
  if (json.result !== 'success') {
14
14
  return Promise.reject({
15
15
  reason: FailReason.INVALID_RESPONSE,
@@ -36,14 +36,22 @@ export async function getHomeworkList(s, courseID, courseType = CourseType.STUDE
36
36
  }));
37
37
  }
38
38
  else {
39
- return Promise.all(URLS.LEARN_HOMEWORK_LIST_SOURCE.map((source) => getHomeworkListAtUrl(s, courseID, source.url, source.status))).then((r) => r.flat());
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) {
43
- const json = await (await s.fetchWithToken(url, {
51
+ const json = await s.fetchJsonWithToken(url, {
44
52
  method: 'POST',
45
53
  body: URLS.LEARN_PAGE_LIST_FORM_DATA(courseID),
46
- })).json();
54
+ });
47
55
  if (json.result !== 'success') {
48
56
  return Promise.reject({
49
57
  reason: FailReason.INVALID_RESPONSE,
@@ -51,15 +59,7 @@ async function getHomeworkListAtUrl(s, courseID, url, status) {
51
59
  });
52
60
  }
53
61
  const result = (json.object?.aaData ?? []);
54
- let excellentHomeworkListByHomework = {};
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,20 +80,14 @@ 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
- const json = await (await s.fetchWithToken(URLS.LEARN_HOMEWORK_LIST_EXCELLENT, {
87
+ const json = await s.fetchJsonWithToken(URLS.LEARN_HOMEWORK_LIST_EXCELLENT, {
94
88
  method: 'POST',
95
89
  body: URLS.LEARN_PAGE_LIST_FORM_DATA(courseID),
96
- })).json();
90
+ });
97
91
  if (json.result !== 'success') {
98
92
  return Promise.reject({
99
93
  reason: FailReason.INVALID_RESPONSE,
@@ -101,7 +95,7 @@ async function getExcellentHomeworkListByHomework(s, courseID) {
101
95
  });
102
96
  }
103
97
  const result = (json.object?.aaData ?? []);
104
- return (await Promise.all(result
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
- .map(async (h) => ({
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
  }
@@ -127,8 +117,7 @@ async function getExcellentHomeworkListByHomework(s, courseID) {
127
117
  }, {});
128
118
  }
129
119
  async function parseHomeworkAtUrl(s, url) {
130
- const response = await s.fetchWithToken(url);
131
- const result = $(await response.text());
120
+ const result = $(await s.fetchTextWithToken(url));
132
121
  const fileDivs = result('div.list.fujian.clearfix');
133
122
  return {
134
123
  description: trimAndDefine(result('div.list.calendar.clearfix > div.fl.right > div.c55').slice(0, 1).html()),
@@ -140,11 +129,22 @@ async function parseHomeworkAtUrl(s, url) {
140
129
  gradeAttachment: parseHomeworkFile(s, fileDivs[3]),
141
130
  };
142
131
  }
143
- async function getHomeworkDetail(s, baseId) {
144
- const json = await (await s.fetchWithToken(URLS.LEARN_HOMEWORK_DETAIL, {
132
+ /**
133
+ * Get the detail of one homework or excellent homework: its page (answer, submitted content, attachments) and the
134
+ * description JSON (which wins for `description`). 2 requests.
135
+ */
136
+ export async function getHomeworkDetail(s, homework) {
137
+ const [page, description] = await Promise.all([
138
+ parseHomeworkAtUrl(s, homework.url),
139
+ getHomeworkDescription(s, homework.baseId),
140
+ ]);
141
+ return { ...page, ...description };
142
+ }
143
+ async function getHomeworkDescription(s, baseId) {
144
+ const json = await s.fetchJsonWithToken(URLS.LEARN_HOMEWORK_DETAIL, {
145
145
  method: 'POST',
146
146
  body: URLS.LEARN_HOMEWORK_DETAIL_FORM_DATA(baseId),
147
- })).json();
147
+ });
148
148
  if (json.result !== 'success') {
149
149
  throw {
150
150
  reason: FailReason.INVALID_RESPONSE,
@@ -157,18 +157,19 @@ async function getHomeworkDetail(s, baseId) {
157
157
  }
158
158
  function parseHomeworkFile(s, fileDiv) {
159
159
  const fileNode = $(fileDiv)('.ftitle').children('a')[0] ?? $(fileDiv)('.fl').children('a')[0];
160
- if (fileNode !== undefined) {
161
- const size = trimAndDefine($(fileDiv)('.fl > span[class^="color"]').first().text());
162
- const params = new URLSearchParams(fileNode.attribs.href.split('?').slice(-1)[0]);
160
+ const href = fileNode?.attribs.href;
161
+ if (fileNode !== undefined && href) {
162
+ const size = trimAndDefine($(fileDiv)('.fl > span[class^="color"]').first().text()) ?? '';
163
+ const params = new URLSearchParams(href.split('?').slice(-1)[0]);
163
164
  const attachmentId = params.get('fileId');
164
165
  // so dirty here...
165
- let downloadUrl = URLS.LEARN_PREFIX + fileNode.attribs.href;
166
+ let downloadUrl = URLS.LEARN_PREFIX + href;
166
167
  if (params.has('downloadUrl')) {
167
168
  downloadUrl = URLS.LEARN_PREFIX + params.get('downloadUrl');
168
169
  }
169
170
  return {
170
171
  id: attachmentId,
171
- name: fileNode.children[0].data,
172
+ name: fileNode.children[0]?.data ?? '',
172
173
  downloadUrl,
173
174
  previewUrl: URLS.LEARN_FILE_PREVIEW(ContentType.HOMEWORK, attachmentId, CourseType.STUDENT, s.previewFirstPage),
174
175
  size,
@@ -179,10 +180,12 @@ function parseHomeworkFile(s, fileDiv) {
179
180
  }
180
181
  }
181
182
  export async function submitHomework(s, id, content = '', attachment, removeAttachment = false) {
182
- const json = await (await s.fetchWithToken(URLS.LEARN_HOMEWORK_SUBMIT(), {
183
+ const json = await s.fetchJsonWithToken(URLS.LEARN_HOMEWORK_SUBMIT(), {
183
184
  method: 'POST',
184
185
  body: URLS.LEARN_HOMEWORK_SUBMIT_FORM_DATA(id, content, attachment, removeAttachment),
185
- })).json();
186
+ // the response only starts after the whole upload, which can take longer than `requestTimeout`
187
+ timeout: attachment ? 0 : undefined,
188
+ });
186
189
  if (json.result !== 'success') {
187
190
  return Promise.reject({
188
191
  reason: FailReason.OPERATION_FAILED,
@@ -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;AAatC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AASxE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,CAAU,EACV,QAAgB,EAChB,UAAU,GAAe,UAAU,CAAC,OAAO;IAE3C,IAAI,UAAU,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CACjB,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;SAC/C,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,MAAM,CAAC;gBACpB,MAAM,EAAE,UAAU,CAAC,gBAAgB;gBACnC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAU,CAAC;QAEpD,OAAO,MAAM,CAAC,GAAG,CACf,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;YACC,EAAE,EAAE,CAAC,CAAC,IAAI;YACV,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5C,WAAW,EAAE,CAAC,CAAC,GAAG;YAClB,WAAW,EAAE,CAAC,CAAC,IAAI;YACnB,SAAS,EAAE,CAAC,CAAC,IAAI;YACjB,QAAQ,EAAE,CAAC,CAAC,IAAI;YAChB,sBAAsB,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;YAC7C,GAAG,EAAE,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;YACzD,cAAc,EAAE,CAAC,CAAC,MAAM;YACxB,cAAc,EAAE,CAAC,CAAC,MAAM;YACxB,WAAW,EAAE,CAAC,CAAC,IAAI;YACnB,cAAc,EAAE,CAAC,CAAC,GAAG;YACrB,gBAAgB,EAAE,CAAC,CAAC,GAAG;SACxB,CAAsB,CAC1B,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAC9G,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,CAAU,EACV,QAAgB,EAChB,GAAW,EACX,MAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM,CACjB,MAAM,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE;QAC1B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;KAC/C,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,UAAU,CAAC,gBAAgB;YACnC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAU,CAAC;IAEpD,IAAI,+BAA+B,GAA0C,EAAE,CAAC;IAChF,IAAI,CAAC;QACH,+BAA+B,GAAG,MAAM,kCAAkC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6EAA6E;IAC/E,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAChB,MAAM;SACH,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;QACC,EAAE,EAAE,CAAC,CAAC,MAAM;QACZ,iBAAiB,EAAE,CAAC,CAAC,MAAM;QAC3B,MAAM,EAAE,CAAC,CAAC,IAAI;QACd,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACjD,QAAQ,EAAE,CAAC,CAAC,IAAI;QAChB,sBAAsB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACvD,gBAAgB,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG;QAChC,cAAc,EAAE,CAAC,CAAC,MAAM;QACxB,cAAc,EAAE,CAAC,CAAC,MAAM;QACxB,SAAS,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9D,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAChD,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACvC,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;QAChC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,SAAS,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/C,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG;QAC1B,YAAY,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACpE,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;QAC5B,qBAAqB,EAAE,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,GAAG,MAAM;KACV,CAAqB,CACzB;SACA,GAAG,CACF,KAAK,EAAE,CAAC,EAAE,EAAE,CACV,CAAC;QACC,GAAG,CAAC;QACJ,GAAG,CAAC,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;KAC1C,CAAoB,CACxB,CACJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kCAAkC,CAC/C,CAAU,EACV,QAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,CACjB,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,6BAA6B,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;KAC/C,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,UAAU,CAAC,gBAAgB;YACnC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAU,CAAC;IAEpD,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,MAAM;SACH,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;QACC,EAAE,EAAE,CAAC,CAAC,MAAM;QACZ,MAAM,EAAE,CAAC,CAAC,IAAI;QACd,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,GAAG,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAC3D,cAAc,EAAE,CAAC,CAAC,MAAM;QACxB,MAAM,EAAE;YACN,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,SAAS,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG;SAC1B;KACF,CAA8B,CAClC;SACA,GAAG,CACF,KAAK,EAAE,CAAC,EAAE,EAAE,CACV,CAAC;QACC,GAAG,CAAC;QACJ,GAAG,CAAC,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;KAC1C,CAA6B,CACjC,CACJ,CACF,CAAC,MAAM,CAAwC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,CAAU,EAAE,GAAW;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAEpD,OAAO;QACL,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5G,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9G,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9G,UAAU,EAAE,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7C,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtD,eAAe,EAAE,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,CAAU,EAAE,MAAc;IACzD,MAAM,IAAI,GAAG,MAAM,CACjB,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC;KACnD,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM;YACJ,MAAM,EAAE,UAAU,CAAC,gBAAgB;YACnC,KAAK,EAAE,IAAI;SACA,CAAC;IAChB,CAAC;IACD,OAAO;QACL,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU,EAAE,OAAgB;IACrD,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAE,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAC3C,mBAAmB;QACnB,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5D,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC;QAC/D,CAAC;QACD,OAAO;YACL,EAAE,EAAE,YAAY;YAChB,IAAI,EAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAsB,CAAC,IAAI;YACrD,WAAW;YACX,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC;YAC/G,IAAI;SACL,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,CAAU,EACV,EAAU,EACV,OAAO,GAAG,EAAE,EACZ,UAAsC,EACtC,gBAAgB,GAAG,KAAK;IAExB,MAAM,IAAI,GAAG,MAAM,CACjB,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,+BAA+B,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC;KACtF,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,UAAU,CAAC,gBAAgB;YACnC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;AACH,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, QuestionnaireDetail, QuestionnaireListOptions, 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,18 @@ 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
- /** login is necessary if you do not provide a `CredentialProvider` */
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. Logins never overlap: one with
25
+ * credentials waits for a login in progress, and requests that find the session expired meanwhile wait for it.
26
+ */
23
27
  login(username?: string, password?: string, fingerPrint?: string, fingerGenPrint?: string, fingerGenPrint3?: string): Promise<void>;
28
+ /**
29
+ * Make sure the session is usable without a full SSO login when possible: with a CSRF token (from an earlier login
30
+ * or `setCSRFToken`), make one cheap request and log in again only if the session has expired; without one, log in.
31
+ * Use it when resuming an app instead of `login()`.
32
+ */
33
+ ensureSession(): Promise<void>;
24
34
  /** logout (to make everyone happy) */
25
35
  logout(): Promise<void>;
26
36
  /** get user's name and department */
@@ -28,20 +38,33 @@ export declare class Learn2018Helper {
28
38
  /**
29
39
  * Get calendar items during the specified period (in yyyymmdd format, both inclusive).
30
40
  * Ranges longer than 28 days are fetched in windows and merged; windows that fail even after a retry are listed in
31
- * `failedRanges`. Rejects only when every window fails (usually with `FailReason.INVALID_RESPONSE`).
41
+ * `failedRanges`. Rejects only when every window fails (usually with `FailReason.INVALID_RESPONSE`), or with a
42
+ * `RangeError` for a date that is not a valid yyyymmdd.
32
43
  */
33
44
  getCalendar(startDate: string, endDate: string, options?: CalendarOptions): Promise<CalendarResult>;
34
45
  getSemesterIdList(): Promise<string[]>;
35
46
  getCurrentSemester(): Promise<SemesterInfo>;
36
- /** get all courses in the specified semester */
37
- getCourseList(semesterID: string, courseType?: CourseType, lang?: Language): Promise<CourseInfo[]>;
47
+ /**
48
+ * Get all courses in the specified semester.
49
+ * `timeAndLocation` is only fetched (one request per course) with `options.timeAndLocation`.
50
+ */
51
+ getCourseList(semesterID: string, courseType?: CourseType, lang?: Language, options?: CourseListOptions): Promise<CourseInfo[]>;
52
+ /** Get the time and location of one course. */
53
+ getCourseTimeAndLocation(courseID: string): Promise<string[]>;
38
54
  /**
39
55
  * Get certain type of content of all specified courses.
40
- * It actually wraps around other `getXXX` functions. You can ignore the failure caused by certain courses.
56
+ * It wraps around the `getXXX` list functions; a course that fails is reported in `errors` instead of failing
57
+ * the rest. `options.details` is passed on as homework `details` or notification `attachments`.
58
+ */
59
+ getAllContents<T extends ContentType>(courseIDs: string[], type: T, options?: AllContentsOptions<T>): Promise<AllContentsResult<T>>;
60
+ /**
61
+ * Get all notifications (课程公告) of the specified course.
62
+ * Attachments are only fetched (one request per notice) for the notices `options.attachments` selects;
63
+ * use `getNotificationAttachment` for the others.
41
64
  */
42
- getAllContents<T extends ContentType>(courseIDs: string[], type: T, courseType?: CourseType, allowFailure?: boolean): Promise<import("./types.ts").CourseContent<T>>;
43
- /** Get all notifications (课程公告) of the specified course. */
44
- getNotificationList(courseID: string, courseType?: CourseType): Promise<Notification[]>;
65
+ getNotificationList(courseID: string, courseType?: CourseType, options?: NotificationListOptions): Promise<Notification[]>;
66
+ /** Get the attachment of a notice (one request), `undefined` if it has none. */
67
+ getNotificationAttachment(notification: Pick<Notification, 'url' | 'attachmentName'>, courseType?: CourseType): Promise<RemoteFile | undefined>;
45
68
  /** Get all files (课程文件) of the specified course. */
46
69
  getFileList(courseID: string, courseType?: CourseType): Promise<File[]>;
47
70
  /** Get file categories of the specified course. */
@@ -51,10 +74,17 @@ export declare class Learn2018Helper {
51
74
  * Note: this cannot get correct `visitCount` and `downloadCount` for student
52
75
  */
53
76
  getFileListByCategory(courseID: string, categoryId: string, courseType?: CourseType): Promise<File[]>;
54
- /** Get all homeworks (课程作业) of the specified course. */
55
- getHomeworkList(courseID: string): Promise<Homework[]>;
56
- getHomeworkList(courseID: string, courseType: CourseType.STUDENT): Promise<Homework[]>;
77
+ /**
78
+ * Get all homeworks (课程作业) of the specified course, with the excellent homework list (without details).
79
+ * Details (page + description, two requests per homework) are only fetched for the homework `options.details`
80
+ * selects; use `getHomeworkDetail` for the others.
81
+ */
82
+ getHomeworkList(courseID: string, courseType?: CourseType.STUDENT, options?: HomeworkListOptions): Promise<Homework[]>;
57
83
  getHomeworkList(courseID: string, courseType: CourseType.TEACHER): Promise<HomeworkTA[]>;
84
+ /** Get the detail (page content, attachments and description) of one homework. */
85
+ getHomeworkDetail(item: Pick<Homework, 'url' | 'baseId'>): Promise<IHomeworkDetail>;
86
+ /** Get the detail (page content, attachments and description) of one excellent homework. */
87
+ getExcellentHomeworkDetail(item: Pick<ExcellentHomework, 'url' | 'baseId'>): Promise<IHomeworkDetail>;
58
88
  /** Get all discussions (课程讨论) of the specified course. */
59
89
  getDiscussionList(courseID: string, courseType?: CourseType): Promise<Discussion[]>;
60
90
  /**
@@ -64,8 +94,12 @@ export declare class Learn2018Helper {
64
94
  getAnsweredQuestionList(courseID: string, courseType?: CourseType): Promise<Question[]>;
65
95
  /**
66
96
  * Get all questionnaires (课程问卷/QNR) of the specified course.
97
+ * Questions (`detail`, one request per questionnaire) for the questionnaires `options.details` selects, by default
98
+ * all; use `getQuestionnaireDetail` for the others.
67
99
  */
68
- getQuestionnaireList(courseID: string): Promise<Questionnaire[]>;
100
+ getQuestionnaireList(courseID: string, options?: QuestionnaireListOptions): Promise<Questionnaire[]>;
101
+ /** Get the questions of one questionnaire (one request). */
102
+ getQuestionnaireDetail(courseID: string, questionnaireID: string): Promise<QuestionnaireDetail[]>;
69
103
  /**
70
104
  * Add an item to favorites. (收藏)
71
105
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}