@quesmed/types 1.6.0 → 2.0.1

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 (123) hide show
  1. package/dist/cjs/models/Card.d.ts +2 -2
  2. package/dist/cjs/models/Chapter.d.ts +5 -3
  3. package/dist/cjs/models/Concept.d.ts +2 -10
  4. package/dist/cjs/models/File.d.ts +2 -2
  5. package/dist/cjs/models/Marksheet.d.ts +17 -28
  6. package/dist/cjs/models/Marksheet.js +0 -7
  7. package/dist/cjs/models/MockTest.d.ts +1 -0
  8. package/dist/cjs/models/OsceMarksheet.d.ts +2 -2
  9. package/dist/cjs/models/OsceStation.d.ts +11 -9
  10. package/dist/cjs/models/Picture.d.ts +0 -33
  11. package/dist/cjs/models/Question.d.ts +27 -2
  12. package/dist/cjs/models/Question.js +7 -1
  13. package/dist/cjs/models/Todo.d.ts +10 -1
  14. package/dist/cjs/models/Token.d.ts +2 -0
  15. package/dist/cjs/models/Topic.d.ts +16 -1
  16. package/dist/cjs/models/User.d.ts +34 -20
  17. package/dist/cjs/models/Video.d.ts +1 -0
  18. package/dist/cjs/resolvers/fragments/chapter.d.ts +0 -1
  19. package/dist/cjs/resolvers/fragments/chapter.js +8 -14
  20. package/dist/cjs/resolvers/fragments/osce.js +5 -6
  21. package/dist/cjs/resolvers/fragments/picture.d.ts +0 -2
  22. package/dist/cjs/resolvers/fragments/picture.js +1 -23
  23. package/dist/cjs/resolvers/fragments/user.js +13 -0
  24. package/dist/cjs/resolvers/fragments/video.js +3 -2
  25. package/dist/cjs/resolvers/mutation/admin/algoliaSync.d.ts +5 -6
  26. package/dist/cjs/resolvers/mutation/admin/token.d.ts +3 -2
  27. package/dist/cjs/resolvers/mutation/restricted/contactUs.d.ts +6 -5
  28. package/dist/cjs/resolvers/mutation/restricted/marksheet.d.ts +9 -11
  29. package/dist/cjs/resolvers/mutation/restricted/mockTest.d.ts +5 -4
  30. package/dist/cjs/resolvers/mutation/restricted/questionDiscussion.d.ts +6 -10
  31. package/dist/cjs/resolvers/mutation/restricted/todo.d.ts +6 -22
  32. package/dist/cjs/resolvers/mutation/restricted/todo.js +0 -26
  33. package/dist/cjs/resolvers/mutation/restricted/token.d.ts +5 -5
  34. package/dist/cjs/resolvers/mutation/restricted/users.d.ts +5 -8
  35. package/dist/cjs/resolvers/mutation/restricted/video.d.ts +3 -5
  36. package/dist/cjs/resolvers/mutation/stripe.d.ts +3 -2
  37. package/dist/cjs/resolvers/mutation/users.d.ts +5 -4
  38. package/dist/cjs/resolvers/mutation/validUserToken/user.d.ts +11 -5
  39. package/dist/cjs/resolvers/query/admin/getUserToken.d.ts +2 -1
  40. package/dist/cjs/resolvers/query/author.d.ts +2 -2
  41. package/dist/cjs/resolvers/query/book.d.ts +4 -2
  42. package/dist/cjs/resolvers/query/feedback.d.ts +2 -2
  43. package/dist/cjs/resolvers/query/restricted/index.d.ts +0 -1
  44. package/dist/cjs/resolvers/query/restricted/index.js +0 -1
  45. package/dist/cjs/resolvers/query/restricted/marksheet.d.ts +15 -29
  46. package/dist/cjs/resolvers/query/restricted/mockTests.d.ts +4 -4
  47. package/dist/cjs/resolvers/query/restricted/osce.d.ts +3 -3
  48. package/dist/cjs/resolvers/query/restricted/quesBook.d.ts +1 -1
  49. package/dist/cjs/resolvers/query/restricted/replication.d.ts +2 -3
  50. package/dist/cjs/resolvers/query/restricted/todos.d.ts +6 -5
  51. package/dist/cjs/resolvers/query/restricted/topics.d.ts +3 -13
  52. package/dist/cjs/resolvers/query/restricted/university.d.ts +2 -2
  53. package/dist/cjs/resolvers/query/restricted/user.d.ts +5 -17
  54. package/dist/cjs/resolvers/query/restricted/video.d.ts +3 -2
  55. package/dist/cjs/resolvers/query/subscription.d.ts +2 -2
  56. package/dist/cjs/resolvers/query/university.d.ts +2 -1
  57. package/dist/cjs/resolvers/query/user.d.ts +4 -3
  58. package/dist/cjs/resolvers/query/video.d.ts +4 -3
  59. package/dist/cjs/utils/lightgallery.js +1 -1
  60. package/dist/mjs/models/Card.d.ts +2 -2
  61. package/dist/mjs/models/Chapter.d.ts +5 -3
  62. package/dist/mjs/models/Concept.d.ts +2 -10
  63. package/dist/mjs/models/File.d.ts +2 -2
  64. package/dist/mjs/models/Marksheet.d.ts +17 -28
  65. package/dist/mjs/models/Marksheet.js +1 -6
  66. package/dist/mjs/models/MockTest.d.ts +1 -0
  67. package/dist/mjs/models/OsceMarksheet.d.ts +2 -2
  68. package/dist/mjs/models/OsceStation.d.ts +11 -9
  69. package/dist/mjs/models/Picture.d.ts +0 -33
  70. package/dist/mjs/models/Question.d.ts +27 -2
  71. package/dist/mjs/models/Question.js +6 -0
  72. package/dist/mjs/models/Todo.d.ts +10 -1
  73. package/dist/mjs/models/Token.d.ts +2 -0
  74. package/dist/mjs/models/Topic.d.ts +16 -1
  75. package/dist/mjs/models/User.d.ts +34 -20
  76. package/dist/mjs/models/Video.d.ts +1 -0
  77. package/dist/mjs/resolvers/fragments/chapter.d.ts +0 -1
  78. package/dist/mjs/resolvers/fragments/chapter.js +8 -14
  79. package/dist/mjs/resolvers/fragments/osce.js +6 -7
  80. package/dist/mjs/resolvers/fragments/picture.d.ts +0 -2
  81. package/dist/mjs/resolvers/fragments/picture.js +0 -22
  82. package/dist/mjs/resolvers/fragments/user.js +13 -0
  83. package/dist/mjs/resolvers/fragments/video.js +4 -3
  84. package/dist/mjs/resolvers/mutation/admin/algoliaSync.d.ts +5 -6
  85. package/dist/mjs/resolvers/mutation/admin/token.d.ts +3 -2
  86. package/dist/mjs/resolvers/mutation/restricted/contactUs.d.ts +6 -5
  87. package/dist/mjs/resolvers/mutation/restricted/marksheet.d.ts +9 -11
  88. package/dist/mjs/resolvers/mutation/restricted/mockTest.d.ts +5 -4
  89. package/dist/mjs/resolvers/mutation/restricted/questionDiscussion.d.ts +6 -10
  90. package/dist/mjs/resolvers/mutation/restricted/todo.d.ts +6 -22
  91. package/dist/mjs/resolvers/mutation/restricted/todo.js +1 -24
  92. package/dist/mjs/resolvers/mutation/restricted/token.d.ts +5 -5
  93. package/dist/mjs/resolvers/mutation/restricted/users.d.ts +5 -8
  94. package/dist/mjs/resolvers/mutation/restricted/video.d.ts +3 -5
  95. package/dist/mjs/resolvers/mutation/stripe.d.ts +3 -2
  96. package/dist/mjs/resolvers/mutation/users.d.ts +5 -4
  97. package/dist/mjs/resolvers/mutation/validUserToken/user.d.ts +11 -5
  98. package/dist/mjs/resolvers/query/admin/getUserToken.d.ts +2 -1
  99. package/dist/mjs/resolvers/query/author.d.ts +2 -2
  100. package/dist/mjs/resolvers/query/book.d.ts +4 -2
  101. package/dist/mjs/resolvers/query/feedback.d.ts +2 -2
  102. package/dist/mjs/resolvers/query/restricted/index.d.ts +0 -1
  103. package/dist/mjs/resolvers/query/restricted/index.js +0 -1
  104. package/dist/mjs/resolvers/query/restricted/marksheet.d.ts +15 -29
  105. package/dist/mjs/resolvers/query/restricted/mockTests.d.ts +4 -4
  106. package/dist/mjs/resolvers/query/restricted/osce.d.ts +3 -3
  107. package/dist/mjs/resolvers/query/restricted/quesBook.d.ts +1 -1
  108. package/dist/mjs/resolvers/query/restricted/replication.d.ts +2 -3
  109. package/dist/mjs/resolvers/query/restricted/todos.d.ts +6 -5
  110. package/dist/mjs/resolvers/query/restricted/topics.d.ts +3 -13
  111. package/dist/mjs/resolvers/query/restricted/university.d.ts +2 -2
  112. package/dist/mjs/resolvers/query/restricted/user.d.ts +5 -17
  113. package/dist/mjs/resolvers/query/restricted/video.d.ts +3 -2
  114. package/dist/mjs/resolvers/query/subscription.d.ts +2 -2
  115. package/dist/mjs/resolvers/query/university.d.ts +2 -1
  116. package/dist/mjs/resolvers/query/user.d.ts +4 -3
  117. package/dist/mjs/resolvers/query/video.d.ts +4 -3
  118. package/dist/mjs/utils/lightgallery.js +1 -1
  119. package/package.json +8 -1
  120. package/dist/cjs/resolvers/query/restricted/anatomy.d.ts +0 -3
  121. package/dist/cjs/resolvers/query/restricted/anatomy.js +0 -2
  122. package/dist/mjs/resolvers/query/restricted/anatomy.d.ts +0 -3
  123. package/dist/mjs/resolvers/query/restricted/anatomy.js +0 -1
@@ -1,25 +1,13 @@
1
- import { ISubscription, IUser } from '../../../models';
1
+ import { IUser } from '../../../models';
2
+ import { graphqlNormalize, RestrictedData } from '../../types';
2
3
  export declare type IDashboardUserVar = null;
3
- export interface IDashboardUserData {
4
- examDate: number | Date;
5
- totalQuestions: number;
6
- completedQuestionsCount: number;
7
- completedCorrectQuestionsCount: number;
8
- completedIncorrectQuestionsCount: number;
9
- totalCards: number;
10
- completedCardsCount: number;
11
- completedCardsConfidentCount: number;
12
- completedCardsReviewCount: number;
13
- completedCardsLearnCount: number;
14
- subscription: ISubscription;
15
- }
4
+ export declare type IDashboardUserData = RestrictedData<graphqlNormalize & IUser, 'dashboardUser'>;
16
5
  export declare type IUserVar = null;
17
- export interface IUserData extends IUser {
18
- }
6
+ export declare type IUserData = RestrictedData<graphqlNormalize & IUser, 'user'>;
19
7
  export declare type IDailyProgressVar = null;
20
8
  export interface IDailyProgressInfo {
21
9
  totalCount: number;
22
10
  totalTrue: number;
23
11
  dateString: string;
24
12
  }
25
- export declare type IDailyProgressData = IDailyProgressInfo[];
13
+ export declare type IDailyProgressData = RestrictedData<(graphqlNormalize & IDailyProgressInfo)[], 'dailyProgress'>;
@@ -1,10 +1,11 @@
1
1
  import { Id, IVideo } from '../../../models';
2
+ import { graphqlNormalize, RestrictedData } from '../../types';
2
3
  export interface IVideoVar {
3
4
  id: Id;
4
5
  }
5
- export declare type IVideoData = IVideo;
6
+ export declare type IVideoData = RestrictedData<graphqlNormalize & IVideo, 'video'>;
6
7
  export interface IVideosVar {
7
8
  filter: 'new' | 'popular' | 'personal' | 'live' | 'osce';
8
9
  limit: number;
9
10
  }
10
- export declare type IVideosData = IVideo[];
11
+ export declare type IVideosData = RestrictedData<(graphqlNormalize & IVideo)[], 'videos'>;
@@ -1,3 +1,3 @@
1
1
  import { ISubscription } from '../../models';
2
- export interface ISubscriptionData extends ISubscription {
3
- }
2
+ import { graphqlNormalize, RootData } from '../types';
3
+ export declare type ISubscriptionsData = RootData<(graphqlNormalize & ISubscription)[], 'subscriptions'>;
@@ -1,5 +1,6 @@
1
1
  import { Id, IUniversity } from '../../models';
2
+ import { graphqlNormalize, RootData } from '../types';
2
3
  export interface IUniversitiesVar {
3
4
  id: Id;
4
5
  }
5
- export declare type IUniversitiesData = IUniversity[];
6
+ export declare type IUniversitiesData = RootData<graphqlNormalize & IUniversity[], 'universities'>;
@@ -1,12 +1,13 @@
1
+ import { RootData } from '../types';
1
2
  export interface IUsernameAvailableVar {
2
3
  username: string;
3
4
  }
4
- export declare type IUsernameAvailableData = boolean;
5
+ export declare type IUsernameAvailableData = RootData<boolean, 'usernameAvailable'>;
5
6
  export interface IUsernameProvisionedVar {
6
7
  username: string;
7
8
  }
8
- export declare type IUsernameProvisionedData = boolean;
9
+ export declare type IUsernameProvisionedData = RootData<boolean, 'usernameProvisioned'>;
9
10
  export interface IValidateResetPasswordTokenVar {
10
11
  token: string;
11
12
  }
12
- export declare type IValidateResetPasswordTokenData = string;
13
+ export declare type IValidateResetPasswordTokenData = RootData<string, 'validateResetPasswordToken'>;
@@ -1,14 +1,15 @@
1
1
  import { Id, IVideo } from '../../models';
2
+ import { graphqlNormalize, RootData } from '../types';
2
3
  export interface IVideosVar {
3
4
  filter: 'new' | 'popular' | 'personal' | 'live';
4
5
  limit: number;
5
6
  }
6
- export declare type IVideosData = IVideo[];
7
+ export declare type IVideosData = RootData<(graphqlNormalize & IVideo)[], 'videos'>;
7
8
  export interface IVideoVar {
8
9
  id: Id;
9
10
  }
10
- export declare type IVideoData = IVideo;
11
+ export declare type IVideoData = RootData<graphqlNormalize & IVideo, 'video'>;
11
12
  export interface IZoomSignatureVar {
12
13
  meetingNumber: string;
13
14
  }
14
- export declare type IZoomSignatureData = string;
15
+ export declare type IZoomSignatureData = RootData<graphqlNormalize & string, 'zoomSignature'>;
@@ -56,7 +56,7 @@ const lightgalleryMutation = async (text, pictures, cache) => {
56
56
  return text;
57
57
  }
58
58
  const picturesHTML = [];
59
- for (const { picture } of pictures) {
59
+ for (const picture of pictures) {
60
60
  const pic = picture.path;
61
61
  const uri = `https://app.quesmed.com/${pic}`;
62
62
  let file = '';
@@ -1,5 +1,5 @@
1
1
  import { IConcept } from './Concept';
2
- import { ICardPicture } from './Picture';
2
+ import { IPicture } from './Picture';
3
3
  import { ITopic } from './Topic';
4
4
  import { Id } from './Type';
5
5
  export interface ICard {
@@ -12,5 +12,5 @@ export interface ICard {
12
12
  question: string;
13
13
  explanation: string;
14
14
  public: boolean;
15
- pictures: ICardPicture[];
15
+ pictures: IPicture[];
16
16
  }
@@ -1,13 +1,15 @@
1
1
  import { IFile } from './File';
2
- import { IChapterPicture } from './Picture';
2
+ import { IPicture } from './Picture';
3
3
  import { ETopicType } from './Topic';
4
4
  import { Id } from './Type';
5
+ import { IVideo } from './Video';
5
6
  export interface IChapter {
6
7
  id: Id;
7
8
  createdAt: number | Date;
8
9
  updatedAt: number | Date;
9
10
  explanation: string | null;
10
11
  typeId: ETopicType | null;
11
- pictures: IChapterPicture[];
12
- files: IFile[];
12
+ pictures?: IPicture[];
13
+ videos?: IVideo[];
14
+ files?: IFile[];
13
15
  }
@@ -7,17 +7,9 @@ export interface IConcept {
7
7
  createdAt: number | Date;
8
8
  updatedAt: number | Date;
9
9
  name: string;
10
- chapterId: Id;
11
- chapter: IChapter;
12
10
  topicId: Id;
13
11
  topic?: ITopic;
12
+ chapterId: Id;
13
+ chapter?: IChapter;
14
14
  videos?: IVideo[];
15
15
  }
16
- export interface IAnatomyConcept {
17
- id: number;
18
- name: string;
19
- totalCards: number;
20
- ConfidentCards: number;
21
- ReviewCards: number;
22
- LearnCards: number;
23
- }
@@ -5,6 +5,6 @@ export interface IFile {
5
5
  updatedAt: number | Date;
6
6
  title: string;
7
7
  url: string;
8
- videoId?: number;
9
- chapterId?: number;
8
+ videoId: Id | null;
9
+ chapterId: Id | null;
10
10
  }
@@ -1,47 +1,36 @@
1
- import { IPrescribeMark, IQuestion, IQuestionQAAnswer } from './Question';
1
+ import { IPrescribeAnswer, IPrescribeMark, IQuestion, IQuestionChoice, IQuestionQAAnswer } from './Question';
2
2
  import { Id } from './Type';
3
+ import { IUser } from './User';
3
4
  export interface IMarksheet {
4
5
  id: Id;
5
6
  createdAt: number | Date;
7
+ updatedAt: number | Date;
8
+ startedAt: number | Date;
6
9
  endedAt: number | Date;
10
+ topicIds: number[];
11
+ topicNames?: string[];
7
12
  source: string;
13
+ userId: Id;
14
+ user?: IUser;
8
15
  marks: IMarksheetMark[];
9
16
  mockTestId: number | null;
17
+ correct?: number;
18
+ incorrect?: number;
19
+ totalQuestions?: number;
20
+ isTestMarksheet?: boolean;
10
21
  }
11
- export declare enum EQuestionLike {
12
- NONE = 0,
13
- LIKE = 1,
14
- DISLIKE = 2
15
- }
16
- export declare type IMarksheetMarkJSONB = string | [string] | [IQuestionQAAnswer] | [string[], string[]] | [IPrescribeMark] | null;
22
+ export declare type IMarksheetMarkJSONB = string | [string] | [IQuestionQAAnswer] | [string[], string[]] | [IPrescribeMark] | IPrescribeAnswer | null;
17
23
  export interface IMarksheetMark {
18
24
  id: Id;
25
+ createdAt: number | Date;
26
+ updatedAt: number | Date;
19
27
  index: number;
20
28
  marksheetId: Id;
21
- questionChoiceId: Id;
29
+ questionChoiceId: Id | null;
30
+ questionChoices?: IQuestionChoice;
22
31
  timeTaken: number;
23
32
  flagged: boolean;
24
33
  questionId: Id;
25
34
  question: IQuestion;
26
35
  mark: IMarksheetMarkJSONB;
27
- like: number;
28
- dislike: number;
29
- isLikeByMe: EQuestionLike;
30
- discussion: IDiscussion[];
31
- }
32
- export interface IDiscussion {
33
- username: string;
34
- userId: Id;
35
- createdAt: number | Date;
36
- comment: string;
37
- like: number;
38
- dislike: number;
39
- isLikeByMe: EQuestionLike;
40
- commentId: number;
41
- questionId: number;
42
- reply: IDiscussion[];
43
- }
44
- export interface ILikeDislikeCount {
45
- like: number;
46
- dislike: number;
47
36
  }
@@ -1,6 +1 @@
1
- export var EQuestionLike;
2
- (function (EQuestionLike) {
3
- EQuestionLike[EQuestionLike["NONE"] = 0] = "NONE";
4
- EQuestionLike[EQuestionLike["LIKE"] = 1] = "LIKE";
5
- EQuestionLike[EQuestionLike["DISLIKE"] = 2] = "DISLIKE";
6
- })(EQuestionLike || (EQuestionLike = {}));
1
+ export {};
@@ -3,6 +3,7 @@ import { ETopicType } from './Topic';
3
3
  import { Id } from './Type';
4
4
  export interface IMockTest {
5
5
  id: Id;
6
+ createdAt: number | Date;
6
7
  title: string;
7
8
  typeId: ETopicType | null;
8
9
  passingMark: number;
@@ -7,7 +7,7 @@ export interface IOsceMarksheetUser {
7
7
  osceMarksheetId: Id;
8
8
  userId: Id | null;
9
9
  user: IUser | null;
10
- role: EOsceRoles;
10
+ role: EOsceRoles | null;
11
11
  }
12
12
  export interface IOsceMarksheetMark {
13
13
  id: Id;
@@ -74,7 +74,7 @@ export interface IOsceMarksheet {
74
74
  }
75
75
  export interface IDashboardOsce {
76
76
  lastAgoraId: string;
77
- types: IOsceTypeDashboard[];
77
+ types: IOsceType[];
78
78
  avgScore: number;
79
79
  completed: number;
80
80
  total: number;
@@ -1,14 +1,18 @@
1
1
  import { EDifficultyType } from './Difficulty';
2
- import { IOsceActorPicture, IOsceCandidatePicture, IOsceExaminerPicture, IOsceWalkthroughPicture } from './Picture';
2
+ import { IPicture } from './Picture';
3
3
  import { ITopic } from './Topic';
4
4
  import { Id } from './Type';
5
5
  import { IVideo } from './Video';
6
6
  export interface IOsceType {
7
7
  id: Id;
8
8
  name: string;
9
+ completed: number;
10
+ total: number;
11
+ avgScore: number;
9
12
  }
10
13
  export interface IOsceStationMark {
11
14
  id: Id;
15
+ updatedAt: number | Date;
12
16
  index: number;
13
17
  osceStationId: Id;
14
18
  header: string;
@@ -37,15 +41,13 @@ export interface IOsceStation {
37
41
  explanation: string;
38
42
  marks: IOsceStationMark[];
39
43
  topics?: ITopic[];
40
- candidatePictures?: IOsceCandidatePicture[];
41
- actorPictures?: IOsceActorPicture[];
42
- examinerPictures?: IOsceExaminerPicture[];
43
- walkthroughPictures?: IOsceWalkthroughPicture[];
44
+ candidatePictures?: IPicture[];
45
+ actorPictures?: IPicture[];
46
+ examinerPictures?: IPicture[];
47
+ walkthroughPictures?: IPicture[];
44
48
  videos?: IVideo[];
45
- }
46
- export interface IOsceStationItem extends IOsceStation {
47
- lastOsceMarksheetId: Id;
48
- score: number;
49
+ lastOsceMarksheetId?: Id;
50
+ score?: number;
49
51
  }
50
52
  export declare const OSCE_GLOBAL_RATING: {
51
53
  [key: number]: string;
@@ -12,36 +12,3 @@ export interface IPicture {
12
12
  topicId: Id;
13
13
  topic: ITopic;
14
14
  }
15
- export interface IQuestionPicture {
16
- id: Id;
17
- pictureId: Id;
18
- questionId: Id;
19
- choiceId: Id | null;
20
- picture: IPicture;
21
- }
22
- export interface ICardPicture {
23
- id: Id;
24
- pictureId: Id;
25
- cardId: Id;
26
- picture: IPicture;
27
- }
28
- export interface IChapterPicture {
29
- id: Id;
30
- pictureId: Id;
31
- chapterId: Id;
32
- picture: IPicture;
33
- }
34
- export interface IOscePicture {
35
- id: Id;
36
- osceStationId: Id;
37
- pictureId: Id;
38
- picture: IPicture;
39
- }
40
- export interface IOsceCandidatePicture extends IOscePicture {
41
- }
42
- export interface IOsceActorPicture extends IOscePicture {
43
- }
44
- export interface IOsceExaminerPicture extends IOscePicture {
45
- }
46
- export interface IOsceWalkthroughPicture extends IOscePicture {
47
- }
@@ -1,7 +1,8 @@
1
1
  import { IConcept } from './Concept';
2
2
  import { EDifficultyType } from './Difficulty';
3
- import { IQuestionPicture } from './Picture';
3
+ import { IPicture } from './Picture';
4
4
  import { Id } from './Type';
5
+ import { IUser } from './User';
5
6
  export declare enum EPsaSectionType {
6
7
  PRESCRIBING = 1,
7
8
  PRESCRIPTION_REVIEW = 2,
@@ -18,6 +19,25 @@ export declare enum EQuestionType {
18
19
  MULTIPLE_ANSWERS = 3,
19
20
  PRESCRIPTION_ANSWER = 4
20
21
  }
22
+ export declare enum EQuestionLike {
23
+ NONE = 0,
24
+ LIKE = 1,
25
+ DISLIKE = 2
26
+ }
27
+ export interface IQuestionComment {
28
+ id: Id;
29
+ createdAt: number | Date;
30
+ updatedAt: number | Date;
31
+ userId: Id;
32
+ user?: IUser;
33
+ username?: string | null;
34
+ questionId: number;
35
+ comment: string;
36
+ replies?: IQuestionComment[];
37
+ likes?: number;
38
+ dislikes?: number;
39
+ isLikedByMe?: EQuestionLike;
40
+ }
21
41
  export declare type IQuestionAnswer = string | [string] | [IQuestionQAAnswer] | [string[], string[]] | IPrescribeAnswer[];
22
42
  export declare type IQuestionAll = IQuestion | IQuestionSBA | IQuestionQA | IQuestionMultiQ | IQuestionPrescribe;
23
43
  export interface IQuestion {
@@ -31,10 +51,14 @@ export interface IQuestion {
31
51
  answer: IQuestionAnswer;
32
52
  totalVotes: number;
33
53
  choices: IQuestionChoice[];
34
- pictures: IQuestionPicture[];
54
+ pictures?: IPicture[];
35
55
  difficulty: EDifficultyType;
36
56
  elo: number;
37
57
  psaSectionId: EPsaSectionType;
58
+ likes?: number;
59
+ dislikes?: number;
60
+ isLikedByMe?: EQuestionLike;
61
+ comments?: IQuestionComment[];
38
62
  }
39
63
  export interface IQuestionChoice {
40
64
  id: Id;
@@ -43,6 +67,7 @@ export interface IQuestionChoice {
43
67
  label: string;
44
68
  answer: boolean;
45
69
  votes: number;
70
+ picture?: IPicture | null;
46
71
  }
47
72
  export declare function isQuestionSBA(data: IQuestionAll): data is IQuestionSBA;
48
73
  export interface IQuestionSBA extends IQuestion {
@@ -16,6 +16,12 @@ export var EQuestionType;
16
16
  EQuestionType[EQuestionType["MULTIPLE_ANSWERS"] = 3] = "MULTIPLE_ANSWERS";
17
17
  EQuestionType[EQuestionType["PRESCRIPTION_ANSWER"] = 4] = "PRESCRIPTION_ANSWER";
18
18
  })(EQuestionType || (EQuestionType = {}));
19
+ export var EQuestionLike;
20
+ (function (EQuestionLike) {
21
+ EQuestionLike[EQuestionLike["NONE"] = 0] = "NONE";
22
+ EQuestionLike[EQuestionLike["LIKE"] = 1] = "LIKE";
23
+ EQuestionLike[EQuestionLike["DISLIKE"] = 2] = "DISLIKE";
24
+ })(EQuestionLike || (EQuestionLike = {}));
19
25
  export function isQuestionSBA(data) {
20
26
  return data.typeId === EQuestionType.SINGLE_BEST_ANSWER;
21
27
  }
@@ -1,19 +1,28 @@
1
1
  import { ICard } from './Card';
2
+ import { ITopic } from './Topic';
2
3
  import { Id } from './Type';
4
+ import { IUser } from './User';
3
5
  export interface ITodo {
4
6
  id: Id;
5
7
  createdAt: number | Date;
6
8
  updatedAt: number | Date;
7
9
  userId: Id;
10
+ user?: IUser;
8
11
  dailyTask: boolean;
9
12
  marks: ITodoMark[];
10
13
  source: string;
14
+ topics?: ITopic[];
15
+ redCards?: number | null;
16
+ yellowCards?: number | null;
17
+ greenCards?: number | null;
11
18
  }
12
19
  export interface ITodoMark {
13
20
  id: Id;
21
+ createdAt: number | Date;
22
+ updatedAt: number | Date;
14
23
  todoId: Id;
15
24
  cardId: Id;
16
- card: ICard;
25
+ card?: ICard;
17
26
  score: number;
18
27
  timeTaken: number;
19
28
  }
@@ -1,6 +1,8 @@
1
1
  import { Id } from './Type';
2
2
  export interface IToken {
3
3
  id: Id;
4
+ createdAt: number | Date;
5
+ updatedAt: number | Date;
4
6
  userId: Id;
5
7
  token: string;
6
8
  deviceId: string;
@@ -9,9 +9,24 @@ export declare enum ETopicType {
9
9
  PSA = 5,
10
10
  OSCE = 6
11
11
  }
12
+ export interface ITopicType {
13
+ id: ETopicType;
14
+ name: string;
15
+ }
12
16
  export interface ITopic {
13
17
  id: Id;
18
+ createdAt: number | Date;
19
+ updatedAt: number | Date;
14
20
  name: string;
15
- typeId: ETopicType | null;
16
21
  concepts?: IConcept[];
22
+ typeId: ETopicType | null;
23
+ type?: ITopicType | null;
24
+ totalQuestions?: number | null;
25
+ correctQuestions?: number | null;
26
+ incorrectQuestions?: number | null;
27
+ totalCards?: number | null;
28
+ greenCards?: number | null;
29
+ yellowCards?: number | null;
30
+ redCards?: number | null;
31
+ dailyFeedCards?: number | null;
17
32
  }
@@ -1,10 +1,10 @@
1
1
  import { ICard } from './Card';
2
2
  import { IConcept } from './Concept';
3
- import { IMarksheetMark } from './Marksheet';
3
+ import { IMarksheet, IMarksheetMark } from './Marksheet';
4
4
  import { IQuestion } from './Question';
5
5
  import { ISubscription } from './Subscription';
6
- import { ITopic } from './Topic';
7
6
  import { Id } from './Type';
7
+ import { IUniversity } from './University';
8
8
  export declare type IAccessLevel = 'subscriber' | 'administrator' | 'tutor';
9
9
  export declare type IClassYear = 'Year 1' | 'Year 2' | 'Year 3' | 'Year 4' | 'Year 5' | 'Graduated' | 'PhD' | 'BSc' | 'MSc' | 'Beta Tester';
10
10
  export declare const classYears: IClassYear[];
@@ -24,13 +24,14 @@ export interface IPayload {
24
24
  accessLevel: IAccessLevel;
25
25
  tocAccepted: boolean;
26
26
  exp: number;
27
- stripeSubscriptionEndDate: number | null;
28
27
  stripeQBankSubscriptionEndDate: number | null;
29
28
  stripeOsceSubscriptionEndDate: number | null;
30
29
  stripeBundleSubscriptionEndDate: number | null;
31
30
  }
32
31
  export interface IUser {
33
32
  id: Id;
33
+ createdAt: number | Date;
34
+ updatedAt: number | Date;
34
35
  displayName: string;
35
36
  username: string;
36
37
  firstName: string;
@@ -38,24 +39,39 @@ export interface IUser {
38
39
  tocAccepted: boolean;
39
40
  dailyFeedResetTime: number;
40
41
  dailyFeedMax: number;
41
- classYear: IClassYear;
42
- graduationYear: number;
43
- universityId: number;
44
- examDate: number | Date | null;
45
42
  stripeCustomerId: string;
46
- qBankSubscriptionId: Id | null;
43
+ stripeLastSyncAt: number | Date | null;
44
+ qBankSubscriptionId: Id;
47
45
  qBankSubscription: ISubscription | null;
48
- stripeQBankSubscriptionEndDate: number | Date | null;
49
- osceSubscriptionId: Id | null;
46
+ stripeQBankSubscriptionId: string;
47
+ stripeQBankSubscriptionEndDate: number | Date;
48
+ osceSubscriptionId: Id;
50
49
  osceSubscription: ISubscription | null;
51
- stripeOsceSubscriptionEndDate: number | Date | null;
52
- bundleSubscriptionId: Id | null;
50
+ stripeOsceSubscriptionId: string;
51
+ stripeOsceSubscriptionEndDate: number | Date;
52
+ bundleSubscriptionId: Id;
53
53
  bundleSubscription: ISubscription | null;
54
- stripeBundleSubscriptionEndDate: number | Date | null;
55
- subscriptionId: Id | null;
56
- subscription?: ISubscription | null;
57
- stripeSubscriptionEndDate: number | Date | null;
58
- stripePriceNickname: string | null;
54
+ stripeBundleSubscriptionId: string;
55
+ stripeBundleSubscriptionEndDate: number | Date;
56
+ referralCount: number;
57
+ classYear: IClassYear;
58
+ graduationYear: number;
59
+ universityId: Id;
60
+ university: IUniversity;
61
+ examDate: number | Date | null;
62
+ accessLevel: IAccessLevel;
63
+ elo: number;
64
+ marksheets: IMarksheet[];
65
+ completedQuestions: IUserCompletedQuestions[];
66
+ completedCards: IUserCompletedCards[];
67
+ marksheetsCount?: number | null;
68
+ completedQuestionsCount?: number | null;
69
+ completedCorrectQuestionsCount?: number | null;
70
+ completedIncorrectQuestionsCount?: number | null;
71
+ completedCardsCount?: number | null;
72
+ completedGreenCardsCount?: number | null;
73
+ completedYellowCardsCount?: number | null;
74
+ completedRedCardsCount?: number | null;
59
75
  }
60
76
  export declare function currentClassYear(createdAtUnix: number, classYear: IClassYear): IClassYear;
61
77
  export declare function currentClassGroup(createdAtUnix: number, classYear: IClassYear): EClassYearGroup;
@@ -67,7 +83,6 @@ export interface IUserCompletedQuestions {
67
83
  userId: Id;
68
84
  correct: boolean;
69
85
  question: IQuestion;
70
- topic: ITopic;
71
86
  concept: IConcept;
72
87
  }
73
88
  export interface IUserCompletedCards {
@@ -77,14 +92,13 @@ export interface IUserCompletedCards {
77
92
  cardId: Id;
78
93
  card: ICard;
79
94
  userId: Id;
80
- topic: ITopic;
81
95
  concept: IConcept;
82
96
  lastSeen: number | Date;
83
97
  score: number;
84
98
  iteration: number;
85
99
  optimalFactor: number;
86
100
  }
87
- export interface IUserFlaggedQuestions {
101
+ export interface IUserFlaggedQuestion {
88
102
  id: Id;
89
103
  createdAt: number | Date;
90
104
  updatedAt: number | Date;
@@ -22,4 +22,5 @@ export interface IVideo {
22
22
  sent1hrPushAt: number | Date | null;
23
23
  send24hrPushAt: number | Date | null;
24
24
  sent24hrPushAt: number | Date | null;
25
+ viewsToday?: number | null;
25
26
  }
@@ -1,2 +1 @@
1
- export declare const CHAPTER_FILE_FIELDS: import("@apollo/client").DocumentNode;
2
1
  export declare const CHAPTER_FIELDS: import("@apollo/client").DocumentNode;
@@ -1,17 +1,7 @@
1
1
  import { gql } from '@apollo/client';
2
- import { CHAPTER_PICTURE_FIELDS } from './picture';
3
- export const CHAPTER_FILE_FIELDS = gql `
4
- fragment ChapterFileFields on File {
5
- id
6
- title
7
- url
8
- videoId
9
- conceptId
10
- }
11
- `;
2
+ import { PICTURE_FIELDS } from './picture';
12
3
  export const CHAPTER_FIELDS = gql `
13
- ${CHAPTER_FILE_FIELDS}
14
- ${CHAPTER_PICTURE_FIELDS}
4
+ ${PICTURE_FIELDS}
15
5
  fragment ChapterFields on Chapter {
16
6
  id
17
7
  createdAt
@@ -19,10 +9,14 @@ export const CHAPTER_FIELDS = gql `
19
9
  explanation
20
10
  typeId
21
11
  pictures {
22
- ...ChapterPictureFields
12
+ ...PictureFields
23
13
  }
24
14
  files {
25
- ...ChapterFileFields
15
+ id
16
+ title
17
+ url
18
+ videoId
19
+ conceptId
26
20
  }
27
21
  }
28
22
  `;