@juki-team/commons 0.1.31

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 (235) hide show
  1. package/README.md +3 -0
  2. package/biome.shared.json +102 -0
  3. package/dist/constants/commons.d.ts +62 -0
  4. package/dist/constants/commons.js +658 -0
  5. package/dist/constants/company.d.ts +9 -0
  6. package/dist/constants/company.js +24 -0
  7. package/dist/constants/contest.d.ts +15 -0
  8. package/dist/constants/contest.js +29 -0
  9. package/dist/constants/course.d.ts +8 -0
  10. package/dist/constants/course.js +12 -0
  11. package/dist/constants/date.d.ts +9 -0
  12. package/dist/constants/date.js +23 -0
  13. package/dist/constants/email.d.ts +2 -0
  14. package/dist/constants/email.js +34 -0
  15. package/dist/constants/entity.d.ts +3 -0
  16. package/dist/constants/entity.js +18 -0
  17. package/dist/constants/file.d.ts +28 -0
  18. package/dist/constants/file.js +46 -0
  19. package/dist/constants/index.d.ts +18 -0
  20. package/dist/constants/index.js +18 -0
  21. package/dist/constants/judge.d.ts +37 -0
  22. package/dist/constants/judge.js +221 -0
  23. package/dist/constants/problem.d.ts +37 -0
  24. package/dist/constants/problem.js +72 -0
  25. package/dist/constants/routing.d.ts +7 -0
  26. package/dist/constants/routing.js +7 -0
  27. package/dist/constants/services.d.ts +5 -0
  28. package/dist/constants/services.js +131 -0
  29. package/dist/constants/system.d.ts +8 -0
  30. package/dist/constants/system.js +9 -0
  31. package/dist/constants/teams.d.ts +15 -0
  32. package/dist/constants/teams.js +18 -0
  33. package/dist/constants/time.d.ts +9 -0
  34. package/dist/constants/time.js +9 -0
  35. package/dist/constants/user.d.ts +10 -0
  36. package/dist/constants/user.js +35 -0
  37. package/dist/constants/websocket.d.ts +6 -0
  38. package/dist/constants/websocket.js +5 -0
  39. package/dist/constants/worksheet.d.ts +11 -0
  40. package/dist/constants/worksheet.js +66 -0
  41. package/dist/dto/class.d.ts +115 -0
  42. package/dist/dto/class.js +1 -0
  43. package/dist/dto/code.d.ts +13 -0
  44. package/dist/dto/code.js +1 -0
  45. package/dist/dto/comments.d.ts +21 -0
  46. package/dist/dto/comments.js +1 -0
  47. package/dist/dto/contest.d.ts +95 -0
  48. package/dist/dto/contest.js +7 -0
  49. package/dist/dto/course.d.ts +34 -0
  50. package/dist/dto/course.js +1 -0
  51. package/dist/dto/entity.d.ts +92 -0
  52. package/dist/dto/entity.js +5 -0
  53. package/dist/dto/excalidraw.d.ts +12 -0
  54. package/dist/dto/excalidraw.js +1 -0
  55. package/dist/dto/file.d.ts +34 -0
  56. package/dist/dto/file.js +1 -0
  57. package/dist/dto/image.d.ts +6 -0
  58. package/dist/dto/image.js +1 -0
  59. package/dist/dto/index.d.ts +24 -0
  60. package/dist/dto/index.js +24 -0
  61. package/dist/dto/judge.d.ts +16 -0
  62. package/dist/dto/judge.js +1 -0
  63. package/dist/dto/markdown.d.ts +12 -0
  64. package/dist/dto/markdown.js +1 -0
  65. package/dist/dto/mermaid.d.ts +12 -0
  66. package/dist/dto/mermaid.js +1 -0
  67. package/dist/dto/organization.d.ts +102 -0
  68. package/dist/dto/organization.js +1 -0
  69. package/dist/dto/problem.d.ts +67 -0
  70. package/dist/dto/problem.js +1 -0
  71. package/dist/dto/scoreboard.d.ts +35 -0
  72. package/dist/dto/scoreboard.js +1 -0
  73. package/dist/dto/session.d.ts +15 -0
  74. package/dist/dto/session.js +1 -0
  75. package/dist/dto/socket.d.ts +257 -0
  76. package/dist/dto/socket.js +1 -0
  77. package/dist/dto/statistics.d.ts +43 -0
  78. package/dist/dto/statistics.js +1 -0
  79. package/dist/dto/submission.d.ts +95 -0
  80. package/dist/dto/submission.js +1 -0
  81. package/dist/dto/system.d.ts +91 -0
  82. package/dist/dto/system.js +1 -0
  83. package/dist/dto/url.d.ts +8 -0
  84. package/dist/dto/url.js +1 -0
  85. package/dist/dto/user.d.ts +109 -0
  86. package/dist/dto/user.js +1 -0
  87. package/dist/dto/virtual-user.d.ts +39 -0
  88. package/dist/dto/virtual-user.js +1 -0
  89. package/dist/dto/worksheet-submissions.d.ts +64 -0
  90. package/dist/dto/worksheet-submissions.js +1 -0
  91. package/dist/dto/worksheet.d.ts +39 -0
  92. package/dist/dto/worksheet.js +1 -0
  93. package/dist/helpers/class.d.ts +4 -0
  94. package/dist/helpers/class.js +10 -0
  95. package/dist/helpers/comments.d.ts +4 -0
  96. package/dist/helpers/comments.js +4 -0
  97. package/dist/helpers/commons.d.ts +33 -0
  98. package/dist/helpers/commons.js +191 -0
  99. package/dist/helpers/contest.d.ts +5 -0
  100. package/dist/helpers/contest.js +21 -0
  101. package/dist/helpers/document.d.ts +14 -0
  102. package/dist/helpers/document.js +38 -0
  103. package/dist/helpers/file.d.ts +1 -0
  104. package/dist/helpers/file.js +4 -0
  105. package/dist/helpers/index.d.ts +14 -0
  106. package/dist/helpers/index.js +14 -0
  107. package/dist/helpers/interval.d.ts +2 -0
  108. package/dist/helpers/interval.js +22 -0
  109. package/dist/helpers/judging.d.ts +25 -0
  110. package/dist/helpers/judging.js +107 -0
  111. package/dist/helpers/object.d.ts +1 -0
  112. package/dist/helpers/object.js +32 -0
  113. package/dist/helpers/responses.d.ts +8 -0
  114. package/dist/helpers/responses.js +78 -0
  115. package/dist/helpers/socket.d.ts +45 -0
  116. package/dist/helpers/socket.js +238 -0
  117. package/dist/helpers/time.d.ts +13 -0
  118. package/dist/helpers/time.js +101 -0
  119. package/dist/helpers/user.d.ts +11 -0
  120. package/dist/helpers/user.js +14 -0
  121. package/dist/helpers/worksheet.d.ts +10 -0
  122. package/dist/helpers/worksheet.js +131 -0
  123. package/dist/index.d.ts +6 -0
  124. package/dist/index.js +6 -0
  125. package/dist/prisma/enums/AssignmentClassType.d.ts +7 -0
  126. package/dist/prisma/enums/AssignmentClassType.js +6 -0
  127. package/dist/prisma/enums/ContestEventAction.d.ts +10 -0
  128. package/dist/prisma/enums/ContestEventAction.js +9 -0
  129. package/dist/prisma/enums/ContestProblemPrerequisiteType.d.ts +5 -0
  130. package/dist/prisma/enums/ContestProblemPrerequisiteType.js +4 -0
  131. package/dist/prisma/enums/ContestRole.d.ts +11 -0
  132. package/dist/prisma/enums/ContestRole.js +10 -0
  133. package/dist/prisma/enums/ContestStatus.d.ts +6 -0
  134. package/dist/prisma/enums/ContestStatus.js +5 -0
  135. package/dist/prisma/enums/CourseRole.d.ts +12 -0
  136. package/dist/prisma/enums/CourseRole.js +11 -0
  137. package/dist/prisma/enums/EntityObjectType.d.ts +13 -0
  138. package/dist/prisma/enums/EntityObjectType.js +12 -0
  139. package/dist/prisma/enums/EntityRole.d.ts +8 -0
  140. package/dist/prisma/enums/EntityRole.js +7 -0
  141. package/dist/prisma/enums/EntitySubjectType.d.ts +7 -0
  142. package/dist/prisma/enums/EntitySubjectType.js +6 -0
  143. package/dist/prisma/enums/FileRole.d.ts +9 -0
  144. package/dist/prisma/enums/FileRole.js +8 -0
  145. package/dist/prisma/enums/FileType.d.ts +5 -0
  146. package/dist/prisma/enums/FileType.js +4 -0
  147. package/dist/prisma/enums/GroupType.d.ts +5 -0
  148. package/dist/prisma/enums/GroupType.js +4 -0
  149. package/dist/prisma/enums/JudgeType.d.ts +12 -0
  150. package/dist/prisma/enums/JudgeType.js +11 -0
  151. package/dist/prisma/enums/OrganizationPlan.d.ts +7 -0
  152. package/dist/prisma/enums/OrganizationPlan.js +6 -0
  153. package/dist/prisma/enums/ProblemRole.d.ts +11 -0
  154. package/dist/prisma/enums/ProblemRole.js +10 -0
  155. package/dist/prisma/enums/ProblemScoringMode.d.ts +6 -0
  156. package/dist/prisma/enums/ProblemScoringMode.js +5 -0
  157. package/dist/prisma/enums/ProblemType.d.ts +6 -0
  158. package/dist/prisma/enums/ProblemType.js +5 -0
  159. package/dist/prisma/enums/ProblemVerdict.d.ts +14 -0
  160. package/dist/prisma/enums/ProblemVerdict.js +13 -0
  161. package/dist/prisma/enums/ShareLinkVisibility.d.ts +5 -0
  162. package/dist/prisma/enums/ShareLinkVisibility.js +4 -0
  163. package/dist/prisma/enums/SubmissionRunStatus.d.ts +18 -0
  164. package/dist/prisma/enums/SubmissionRunStatus.js +17 -0
  165. package/dist/prisma/enums/SystemRole.d.ts +9 -0
  166. package/dist/prisma/enums/SystemRole.js +8 -0
  167. package/dist/prisma/enums/TeamRole.d.ts +9 -0
  168. package/dist/prisma/enums/TeamRole.js +8 -0
  169. package/dist/prisma/enums/TelemetryType.d.ts +9 -0
  170. package/dist/prisma/enums/TelemetryType.js +8 -0
  171. package/dist/prisma/enums/UserRole.d.ts +10 -0
  172. package/dist/prisma/enums/UserRole.js +9 -0
  173. package/dist/prisma/enums/WorkingIn.d.ts +8 -0
  174. package/dist/prisma/enums/WorkingIn.js +7 -0
  175. package/dist/prisma/enums/WorksheetContentType.d.ts +10 -0
  176. package/dist/prisma/enums/WorksheetContentType.js +9 -0
  177. package/dist/prisma/enums/index.d.ts +26 -0
  178. package/dist/prisma/enums/index.js +26 -0
  179. package/dist/prototypes/Date.d.ts +62 -0
  180. package/dist/prototypes/Date.js +218 -0
  181. package/dist/prototypes/Error.d.ts +10 -0
  182. package/dist/prototypes/Error.js +17 -0
  183. package/dist/prototypes/Number.d.ts +7 -0
  184. package/dist/prototypes/Number.js +8 -0
  185. package/dist/prototypes/index.d.ts +3 -0
  186. package/dist/prototypes/index.js +3 -0
  187. package/dist/types/account.d.ts +9 -0
  188. package/dist/types/account.js +10 -0
  189. package/dist/types/class.d.ts +67 -0
  190. package/dist/types/class.js +7 -0
  191. package/dist/types/comments.d.ts +17 -0
  192. package/dist/types/comments.js +1 -0
  193. package/dist/types/commons.d.ts +84 -0
  194. package/dist/types/commons.js +69 -0
  195. package/dist/types/company.d.ts +6 -0
  196. package/dist/types/company.js +7 -0
  197. package/dist/types/contest.d.ts +144 -0
  198. package/dist/types/contest.js +6 -0
  199. package/dist/types/course.d.ts +13 -0
  200. package/dist/types/course.js +1 -0
  201. package/dist/types/entity.d.ts +116 -0
  202. package/dist/types/entity.js +50 -0
  203. package/dist/types/excalidraw.d.ts +9 -0
  204. package/dist/types/excalidraw.js +1 -0
  205. package/dist/types/file.d.ts +22 -0
  206. package/dist/types/file.js +13 -0
  207. package/dist/types/group.d.ts +9 -0
  208. package/dist/types/group.js +1 -0
  209. package/dist/types/index.d.ts +23 -0
  210. package/dist/types/index.js +23 -0
  211. package/dist/types/judge.d.ts +46 -0
  212. package/dist/types/judge.js +17 -0
  213. package/dist/types/markdown.d.ts +8 -0
  214. package/dist/types/markdown.js +1 -0
  215. package/dist/types/mermaid.d.ts +8 -0
  216. package/dist/types/mermaid.js +1 -0
  217. package/dist/types/notification.d.ts +7 -0
  218. package/dist/types/notification.js +8 -0
  219. package/dist/types/problems.d.ts +93 -0
  220. package/dist/types/problems.js +16 -0
  221. package/dist/types/services.d.ts +214 -0
  222. package/dist/types/services.js +147 -0
  223. package/dist/types/sheet.d.ts +104 -0
  224. package/dist/types/sheet.js +16 -0
  225. package/dist/types/socket.d.ts +49 -0
  226. package/dist/types/socket.js +49 -0
  227. package/dist/types/submission.d.ts +5 -0
  228. package/dist/types/submission.js +1 -0
  229. package/dist/types/teams.d.ts +96 -0
  230. package/dist/types/teams.js +28 -0
  231. package/dist/types/users.d.ts +65 -0
  232. package/dist/types/users.js +33 -0
  233. package/dist/types/worksheet.d.ts +42 -0
  234. package/dist/types/worksheet.js +11 -0
  235. package/package.json +42 -0
@@ -0,0 +1,72 @@
1
+ import { ProblemScoringMode, ProblemType } from '../prisma/enums/index.js';
2
+ import { ProblemInput, ProblemOutput, Role } from '../types/index.js';
3
+ export const PROBLEM_INPUT = {
4
+ [ProblemInput.STANDARD]: { value: ProblemInput.STANDARD, label: 'standard' },
5
+ [ProblemInput.INTERACTIVE]: { value: ProblemInput.INTERACTIVE, label: 'interactive' },
6
+ };
7
+ export const PROBLEM_OUTPUT = {
8
+ [ProblemOutput.STANDARD]: { value: ProblemOutput.STANDARD, label: 'standard' },
9
+ [ProblemOutput.DYNAMIC]: { value: ProblemOutput.DYNAMIC, label: 'dynamic' },
10
+ [ProblemOutput.INTERACTIVE]: { value: ProblemOutput.INTERACTIVE, label: 'interactive' },
11
+ };
12
+ export const PROBLEM_MODES = [ProblemScoringMode.TOTAL, ProblemScoringMode.SUBTASK, ProblemScoringMode.PARTIAL];
13
+ export const PROBLEM_MODE = {
14
+ [ProblemScoringMode.TOTAL]: {
15
+ value: ProblemScoringMode.TOTAL,
16
+ label: 'total',
17
+ description: 'if all test cases are Accepted the result is Accepted ' +
18
+ 'otherwise it will be Runtime Error, Time Limited Exceeded, Memory Limited Exceeded, Wrong Answer or Presentation Error in that order.',
19
+ },
20
+ [ProblemScoringMode.SUBTASK]: {
21
+ value: ProblemScoringMode.SUBTASK,
22
+ label: 'subtask',
23
+ description: 'the test cases are grouped and each group of test cases is assigned a score, ' +
24
+ 'if all test cases in a group are Accepted then the score assigned to that group of test cases is added to total score, ' +
25
+ 'if total score is equal to the sum of the assigned scores of all groups of test cases then the result is Accepted, ' +
26
+ 'otherwise if the total score is greater than zero the result is Partial Accepted with the total accumulated score, ' +
27
+ 'otherwise it will be Runtime Error, Time Limited Exceeded, Memory Limited Exceeded, Wrong Answer or Presentation Error in that order.',
28
+ },
29
+ [ProblemScoringMode.PARTIAL]: {
30
+ value: ProblemScoringMode.PARTIAL,
31
+ label: 'partial',
32
+ description: 'the test cases are grouped and each group is associated with X points, ' +
33
+ 'and each test case in a group scores X points ',
34
+ },
35
+ };
36
+ export const PROBLEM_TYPES = [ProblemType.STANDARD, ProblemType.DYNAMIC, ProblemType.INTERACTIVE];
37
+ export const PROBLEM_TYPE = {
38
+ [ProblemType.STANDARD]: {
39
+ value: ProblemType.STANDARD,
40
+ label: 'standard',
41
+ description: 'The contestant submit a single source code in one of the allowed programming languages. ' +
42
+ 'The source code is either standalone or to be compiled. ' +
43
+ "The resulting user's executable does I/O standard input and output. " +
44
+ "The output produced by the contestant's program is then compared to the correct output using a simple diff algorithm.",
45
+ },
46
+ [ProblemType.INTERACTIVE]: {
47
+ value: ProblemType.INTERACTIVE,
48
+ label: 'interactive',
49
+ description: 'developing..',
50
+ },
51
+ [ProblemType.DYNAMIC]: {
52
+ value: ProblemType.DYNAMIC,
53
+ label: 'dynamic',
54
+ description: 'The contestant submit a single source code in one of the allowed programming languages. ' +
55
+ "The user's source code is either standalone or to be compiled. " +
56
+ "The resulting user's executable does I/O standard input and output. " +
57
+ "The output produced by the contestant's program is saved. " +
58
+ 'The problem editor save a single source code in C++ 17. ' +
59
+ "The editor's source code can read judge input filepath argv[1], judge output filepath argv[2], user's output filepath argv[3], user's error filepath argv[4], user's log filepath argv[5], user's source filepath argv[6] and submission information filepath argv[7] (companyId, submitId, runId, userId, contestId, problemId, language, userNickname, timestamp). " +
60
+ 'The resulting editor\'s executable should be "AC" or a number between 1 and 100 for partial accepted',
61
+ },
62
+ };
63
+ export const PROBLEM_ROLE = {
64
+ [Role.RESTRICTED]: { value: Role.RESTRICTED, label: 'restricted', level: 7 },
65
+ [Role.GUEST]: { value: Role.GUEST, label: 'guest', level: 6 },
66
+ [Role.REGULAR]: { value: Role.REGULAR, label: 'regular', level: 5 },
67
+ [Role.CREATOR]: { value: Role.CREATOR, label: 'creator', level: 4 },
68
+ [Role.MANAGER]: { value: Role.MANAGER, label: 'manager', level: 3 },
69
+ [Role.MASTER]: { value: Role.MASTER, label: 'master', level: 2 },
70
+ [Role.ADMIN]: { value: Role.ADMIN, label: 'admin', level: 1 },
71
+ [Role.SUPER_ADMIN]: { value: Role.SUPER_ADMIN, label: 'super admin', level: 0 },
72
+ };
@@ -0,0 +1,7 @@
1
+ export declare const _TYPE = ":type";
2
+ export declare const _KEY = ":key";
3
+ export declare const _TAB = ":tab";
4
+ export declare const _SUB_TAB = ":subTab?";
5
+ export declare const _SUB_SUB_TAB = ":subSubTab?";
6
+ export declare const PAGE = "page";
7
+ export declare const PAGE_SIZE = "size";
@@ -0,0 +1,7 @@
1
+ export const _TYPE = ':type';
2
+ export const _KEY = ':key';
3
+ export const _TAB = ':tab';
4
+ export const _SUB_TAB = ':subTab?';
5
+ export const _SUB_SUB_TAB = ':subSubTab?';
6
+ export const PAGE = 'page';
7
+ export const PAGE_SIZE = 'size';
@@ -0,0 +1,5 @@
1
+ import { ErrorCode } from '../types/index.js';
2
+ export declare const getErrorMessage: (code: ErrorCode) => string;
3
+ export declare const ERROR_HTTP_STATUS: {
4
+ [Key in ErrorCode]: 500 | 400 | 401 | 403 | 404 | 405;
5
+ };
@@ -0,0 +1,131 @@
1
+ import { ErrorCode } from '../types/index.js';
2
+ export const getErrorMessage = (code) => code.toLowerCase().replace(/_/g, ' ');
3
+ export const ERROR_HTTP_STATUS = {
4
+ // Http Errors
5
+ [ErrorCode.INTERNAL_SERVER_ERROR]: 500,
6
+ [ErrorCode.BAD_REQUEST]: 400,
7
+ [ErrorCode.UNAUTHORIZED]: 401,
8
+ [ErrorCode.FORBIDDEN]: 403,
9
+ [ErrorCode.NOT_FOUND]: 404,
10
+ [ErrorCode.METHOD_NOT_ALLOWED]: 405,
11
+ // UI general errors
12
+ [ErrorCode.ABORTED_REQUEST]: 400,
13
+ [ErrorCode.ERROR_ON_RESPONSE]: 400,
14
+ [ErrorCode.SERVICE_NOT_FOUND]: 404,
15
+ // Company errors
16
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_COMPANY_SERVICE]: 500,
17
+ [ErrorCode.COMPANY_NOT_CREATED]: 500,
18
+ [ErrorCode.COMPANY_NOT_FOUND]: 404,
19
+ [ErrorCode.COMPANY_NOT_UPDATED]: 500,
20
+ [ErrorCode.COMPANY_NOT_DELETED]: 500,
21
+ [ErrorCode.NOT_ALLOWED_TO_CREATE_THE_COMPANY]: 403,
22
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_THE_COMPANY]: 403,
23
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_THE_COMPANY]: 403,
24
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_THE_COMPANY]: 403,
25
+ // User errors
26
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_USERS_SERVICE]: 500,
27
+ [ErrorCode.USER_NOT_CREATED]: 500,
28
+ [ErrorCode.USER_NOT_FOUND]: 404,
29
+ [ErrorCode.USER_NOT_UPDATED]: 500,
30
+ [ErrorCode.USER_NOT_DELETED]: 500,
31
+ [ErrorCode.NOT_ALLOWED_TO_CREATE_THE_USER]: 403,
32
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_THE_USER]: 403,
33
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_THE_USER]: 403,
34
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_THE_USER]: 403,
35
+ [ErrorCode.USER_IS_REPORTED]: 403,
36
+ [ErrorCode.USER_IS_ARCHIVED]: 403,
37
+ [ErrorCode.USER_WITH_EMAIL_REQUESTED_NOT_FOUND]: 404,
38
+ [ErrorCode.USER_WITH_NICKNAME_REQUESTED_NOT_FOUND]: 404,
39
+ [ErrorCode.THE_EMAIL_IS_ALREADY_REGISTERED]: 400,
40
+ [ErrorCode.THE_NICKNAME_IS_ALREADY_TAKEN]: 400,
41
+ [ErrorCode.INCORRECT_PASSWORD]: 401,
42
+ [ErrorCode.USER_SESSION_NOT_CREATED]: 500,
43
+ [ErrorCode.USER_SESSION_NOT_FOUND]: 404,
44
+ [ErrorCode.USER_SESSION_NOT_UPDATED]: 500,
45
+ [ErrorCode.USER_SESSION_NOT_DELETED]: 500,
46
+ // Problem errors
47
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_PROBLEMS_SERVICE]: 500,
48
+ [ErrorCode.PROBLEM_NOT_CREATED]: 500,
49
+ [ErrorCode.PROBLEM_NOT_FOUND]: 404,
50
+ [ErrorCode.PROBLEM_NOT_UPDATED]: 500,
51
+ [ErrorCode.PROBLEM_NOT_DELETED]: 500,
52
+ [ErrorCode.NOT_ALLOWED_TO_CREATE_THE_PROBLEM]: 403,
53
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_THE_PROBLEM]: 403,
54
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_THE_PROBLEM]: 403,
55
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_THE_PROBLEM]: 403,
56
+ [ErrorCode.PROBLEM_MODE_NOT_SUPPORTED]: 400,
57
+ [ErrorCode.PROBLEM_TYPE_NOT_SUPPORTED]: 400,
58
+ [ErrorCode.PROBLEM_TIME_LIMIT_MUST_BE_A_NUMBER]: 400,
59
+ [ErrorCode.PROBLEM_MEMORY_LIMIT_MUST_BE_NUMBER]: 400,
60
+ [ErrorCode.TEST_CASE_FILE_EMPTY]: 400,
61
+ // Contest errors
62
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_CONTESTS_SERVICE]: 500,
63
+ [ErrorCode.CONTEST_NOT_CREATED]: 500,
64
+ [ErrorCode.CONTEST_NOT_FOUND]: 404,
65
+ [ErrorCode.CONTEST_NOT_UPDATED]: 500,
66
+ [ErrorCode.CONTEST_NOT_DELETED]: 500,
67
+ [ErrorCode.NOT_ALLOWED_TO_CREATE_THE_CONTEST]: 403,
68
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_THE_CONTEST]: 403,
69
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_THE_CONTEST]: 403,
70
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_THE_CONTEST]: 403,
71
+ [ErrorCode.NOT_ALLOWED_TO_REGISTER_TO_THE_CONTEST]: 403,
72
+ [ErrorCode.IS_ALREADY_REGISTERED]: 400,
73
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_CONTESTS]: 403,
74
+ [ErrorCode.SCOREBOARD_NOT_CREATED]: 500,
75
+ [ErrorCode.SCOREBOARD_NOT_FOUND]: 404,
76
+ [ErrorCode.SCOREBOARD_NOT_UPDATED]: 500,
77
+ [ErrorCode.SCOREBOARD_NOT_DELETED]: 500,
78
+ [ErrorCode.NOT_ALLOWED_TO_CREATE_THE_SCOREBOARD]: 403,
79
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_THE_SCOREBOARD]: 403,
80
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_THE_SCOREBOARD]: 403,
81
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_THE_SCOREBOARD]: 403,
82
+ [ErrorCode.CLARIFICATION_NOT_CREATED]: 500,
83
+ [ErrorCode.CLARIFICATION_NOT_FOUND]: 404,
84
+ [ErrorCode.CLARIFICATION_NOT_UPDATED]: 500,
85
+ [ErrorCode.CLARIFICATION_NOT_DELETED]: 500,
86
+ [ErrorCode.NOT_ALLOWED_TO_SUBMIT_CLARIFICATION]: 403,
87
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_CLARIFICATION]: 403,
88
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_CLARIFICATION]: 403,
89
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_CLARIFICATION]: 403,
90
+ // Submission errors
91
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_SUBMISSIONS_SERVICE]: 500,
92
+ [ErrorCode.SUBMISSION_NOT_FOUND]: 404,
93
+ [ErrorCode.SUBMISSION_NOT_CREATED]: 500,
94
+ [ErrorCode.SUBMISSION_NOT_UPDATED]: 500,
95
+ [ErrorCode.SOURCE_EMPTY]: 400,
96
+ [ErrorCode.PROGRAMMING_LANGUAGE_NOT_SUPPORTED]: 400,
97
+ [ErrorCode.NOT_ALLOWED_SUBMIT_THE_PROBLEM_IN_THE_CONTEST]: 403,
98
+ [ErrorCode.JUDGEMENT_UNAVAILABLE]: 500,
99
+ // Utils errors
100
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_UTILS_SERVICES]: 500,
101
+ [ErrorCode.EMPTY_IMAGE]: 400,
102
+ [ErrorCode.CODES_ERROR]: 400,
103
+ [ErrorCode.COMPILATION_FAILED]: 400,
104
+ [ErrorCode.FILES_ERROR]: 400,
105
+ [ErrorCode.THE_EMAIL_COULD_NOT_BE_SENT]: 500,
106
+ // Team errors
107
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_TEAMS_SERVICE]: 500,
108
+ [ErrorCode.TEAM_NOT_CREATED]: 500,
109
+ [ErrorCode.TEAM_NOT_FOUND]: 404,
110
+ [ErrorCode.TEAM_NOT_UPDATED]: 500,
111
+ [ErrorCode.TEAM_NOT_DELETED]: 500,
112
+ [ErrorCode.NOT_ALLOWED_TO_CREATE_THE_TEAM]: 403,
113
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_THE_TEAM]: 403,
114
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_THE_TEAM]: 403,
115
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_THE_TEAM]: 403,
116
+ [ErrorCode.TEAM_IS_REPORTED]: 403,
117
+ [ErrorCode.TEAM_IS_ARCHIVED]: 403,
118
+ // File errors
119
+ [ErrorCode.INTERNAL_SERVER_ERROR_ON_FILES_SERVICE]: 500,
120
+ [ErrorCode.FILE_NOT_CREATED]: 500,
121
+ [ErrorCode.FILE_NOT_FOUND]: 404,
122
+ [ErrorCode.FILE_NOT_UPDATED]: 500,
123
+ [ErrorCode.FILE_NOT_DELETED]: 500,
124
+ [ErrorCode.NOT_ALLOWED_TO_CREATE_THE_FILE]: 403,
125
+ [ErrorCode.NOT_ALLOWED_TO_VIEW_THE_FILE]: 403,
126
+ [ErrorCode.NOT_ALLOWED_TO_UPDATE_THE_FILE]: 403,
127
+ [ErrorCode.NOT_ALLOWED_TO_DELETE_THE_FILE]: 403,
128
+ [ErrorCode.FILE_IS_RESERVED]: 403,
129
+ [ErrorCode.FILE_IS_PRIVATE]: 403,
130
+ [ErrorCode.FILE_IS_ARCHIVED]: 403,
131
+ };
@@ -0,0 +1,8 @@
1
+ import { SystemRole } from '../prisma/enums/index.js';
2
+ export declare const SYSTEM_ROLE: {
3
+ [Key in SystemRole]: {
4
+ value: SystemRole;
5
+ label: string;
6
+ level: number;
7
+ };
8
+ };
@@ -0,0 +1,9 @@
1
+ import { SystemRole } from '../prisma/enums/index.js';
2
+ export const SYSTEM_ROLE = {
3
+ [SystemRole.GUEST]: { value: SystemRole.GUEST, label: 'guest', level: 5 },
4
+ [SystemRole.REGULAR]: { value: SystemRole.REGULAR, label: 'regular', level: 4 },
5
+ [SystemRole.MANAGER]: { value: SystemRole.MANAGER, label: 'manager', level: 3 },
6
+ [SystemRole.MASTER]: { value: SystemRole.MASTER, label: 'master', level: 2 },
7
+ [SystemRole.ADMIN]: { value: SystemRole.ADMIN, label: 'admin', level: 1 },
8
+ [SystemRole.SUPER_ADMIN]: { value: SystemRole.SUPER_ADMIN, label: 'super admin', level: 0 },
9
+ };
@@ -0,0 +1,15 @@
1
+ import { TeamRole } from '../prisma/enums/index.js';
2
+ import { MemberRole } from '../types/index.js';
3
+ export declare const MEMBER_ROLE: {
4
+ [Key in MemberRole]: {
5
+ value: MemberRole;
6
+ label: string;
7
+ };
8
+ };
9
+ export declare const TEAM_ROLE: {
10
+ [Key in TeamRole]: {
11
+ value: TeamRole;
12
+ label: string;
13
+ level: number;
14
+ };
15
+ };
@@ -0,0 +1,18 @@
1
+ import { TeamRole } from '../prisma/enums/index.js';
2
+ import { MemberRole } from '../types/index.js';
3
+ export const MEMBER_ROLE = {
4
+ [MemberRole.COACH]: { value: MemberRole.COACH, label: 'coach' },
5
+ [MemberRole.CO_COACH]: { value: MemberRole.CO_COACH, label: 'co-coach' },
6
+ [MemberRole.STAFF]: { value: MemberRole.STAFF, label: 'staff' },
7
+ [MemberRole.ATTENDEE]: { value: MemberRole.ATTENDEE, label: 'attendee' },
8
+ [MemberRole.RESERVE]: { value: MemberRole.RESERVE, label: 'reserve' },
9
+ [MemberRole.CONTESTANT]: { value: MemberRole.CONTESTANT, label: 'contestant' },
10
+ };
11
+ export const TEAM_ROLE = {
12
+ [TeamRole.RESTRICTED]: { value: TeamRole.RESTRICTED, label: 'restricted', level: 5 },
13
+ [TeamRole.GUEST]: { value: TeamRole.GUEST, label: 'guest', level: 4 },
14
+ [TeamRole.REGULAR]: { value: TeamRole.REGULAR, label: 'regular', level: 3 },
15
+ [TeamRole.MANAGER]: { value: TeamRole.MANAGER, label: 'manager', level: 2 },
16
+ [TeamRole.ADMIN]: { value: TeamRole.ADMIN, label: 'admin', level: 1 },
17
+ [TeamRole.SUPER_ADMIN]: { value: TeamRole.SUPER_ADMIN, label: 'super admin', level: 0 },
18
+ };
@@ -0,0 +1,9 @@
1
+ export declare const ONE_SECOND = 1000;
2
+ export declare const SEC_30: number;
3
+ export declare const SEC_60: number;
4
+ export declare const SEC_90: number;
5
+ export declare const SEC_120: number;
6
+ export declare const ONE_MINUTE: number;
7
+ export declare const ONE_HOUR: number;
8
+ export declare const ONE_DAY: number;
9
+ export declare const ONE_WEEK: number;
@@ -0,0 +1,9 @@
1
+ export const ONE_SECOND = 1000;
2
+ export const SEC_30 = ONE_SECOND * 30;
3
+ export const SEC_60 = ONE_SECOND * 60;
4
+ export const SEC_90 = ONE_SECOND * 90;
5
+ export const SEC_120 = ONE_SECOND * 120;
6
+ export const ONE_MINUTE = ONE_SECOND * 60;
7
+ export const ONE_HOUR = ONE_MINUTE * 60;
8
+ export const ONE_DAY = ONE_HOUR * 24;
9
+ export const ONE_WEEK = ONE_DAY * 7;
@@ -0,0 +1,10 @@
1
+ import type { UserPermissionsResponseDTO } from '../dto/index.js';
2
+ import { UserRole } from '../prisma/enums/index.js';
3
+ export declare const USER_ROLE: {
4
+ [Key in UserRole]: {
5
+ value: UserRole;
6
+ label: string;
7
+ level: number;
8
+ };
9
+ };
10
+ export declare const EMPTY_USER_PERMISSIONS: UserPermissionsResponseDTO;
@@ -0,0 +1,35 @@
1
+ import { UserRole } from '../prisma/enums/index.js';
2
+ export const USER_ROLE = {
3
+ [UserRole.RESTRICTED]: { value: UserRole.RESTRICTED, label: 'restricted', level: 6 },
4
+ [UserRole.GUEST]: { value: UserRole.GUEST, label: 'guest', level: 5 },
5
+ [UserRole.LIMITED]: { value: UserRole.LIMITED, label: 'limited', level: 4 },
6
+ [UserRole.REGULAR]: { value: UserRole.REGULAR, label: 'regular', level: 3 },
7
+ [UserRole.MANAGER]: { value: UserRole.MANAGER, label: 'manager', level: 2 },
8
+ [UserRole.ADMIN]: { value: UserRole.ADMIN, label: 'admin', level: 1 },
9
+ [UserRole.SUPER_ADMIN]: { value: UserRole.SUPER_ADMIN, label: 'super admin', level: 0 },
10
+ };
11
+ export const EMPTY_USER_PERMISSIONS = {
12
+ users: {
13
+ create: false,
14
+ manage: false,
15
+ administrate: false,
16
+ },
17
+ problems: {
18
+ create: false,
19
+ manage: false,
20
+ },
21
+ submissions: {
22
+ manage: false,
23
+ },
24
+ contests: {
25
+ create: false,
26
+ manage: false,
27
+ },
28
+ company: {
29
+ manage: false,
30
+ administrate: false,
31
+ },
32
+ services: {
33
+ administrate: false,
34
+ },
35
+ };
@@ -0,0 +1,6 @@
1
+ import type { ClientId } from '../types/index.js';
2
+ export declare const CHANNEL_PUBLISH_SUBSCRIPTIONS = "pub:subscriptions";
3
+ export declare const CHANNEL_SUBSCRIBE_NOTIFICATIONS = "sub:notifications";
4
+ export declare const CHANNEL_SUBSCRIBE_CLIENT: (clientId: ClientId) => string;
5
+ export declare const CHANNEL_PUBLISH_MESSAGES = "pub:messages";
6
+ export declare const CHANNEL_PRESENCE_CLIENT = "pre:client";
@@ -0,0 +1,5 @@
1
+ export const CHANNEL_PUBLISH_SUBSCRIPTIONS = 'pub:subscriptions';
2
+ export const CHANNEL_SUBSCRIBE_NOTIFICATIONS = 'sub:notifications';
3
+ export const CHANNEL_SUBSCRIBE_CLIENT = (clientId) => `sub:client:${clientId}`;
4
+ export const CHANNEL_PUBLISH_MESSAGES = 'pub:messages';
5
+ export const CHANNEL_PRESENCE_CLIENT = 'pre:client';
@@ -0,0 +1,11 @@
1
+ import { AspectRatio, type NewPageSheet } from '../types/index.js';
2
+ export declare const NEW_PAGE_SHEET: () => NewPageSheet;
3
+ export declare const ASPECT_RATIO: {
4
+ [Key in AspectRatio]: {
5
+ aspectRatio: AspectRatio;
6
+ width: number;
7
+ height: number;
8
+ decimal: number;
9
+ label: string;
10
+ };
11
+ };
@@ -0,0 +1,66 @@
1
+ import { v4 } from 'uuid';
2
+ import { AspectRatio, WorksheetType } from '../types/index.js';
3
+ export const NEW_PAGE_SHEET = () => ({
4
+ id: v4(),
5
+ type: WorksheetType.NEW_PAGE,
6
+ title: '',
7
+ points: 0,
8
+ });
9
+ export const ASPECT_RATIO = {
10
+ [AspectRatio.RATIO_21_9]: {
11
+ aspectRatio: AspectRatio.RATIO_21_9,
12
+ width: 2520,
13
+ height: 1080,
14
+ decimal: 21 / 9,
15
+ label: 'ultrawide',
16
+ },
17
+ [AspectRatio.RATIO_20_9]: {
18
+ aspectRatio: AspectRatio.RATIO_20_9,
19
+ width: 2400,
20
+ height: 1080,
21
+ decimal: 20 / 9,
22
+ label: 'mobile wide',
23
+ },
24
+ [AspectRatio.RATIO_16_9]: {
25
+ aspectRatio: AspectRatio.RATIO_16_9,
26
+ width: 1920,
27
+ height: 1080,
28
+ decimal: 16 / 9,
29
+ label: 'widescreen',
30
+ },
31
+ [AspectRatio.RATIO_16_10]: {
32
+ aspectRatio: AspectRatio.RATIO_16_10,
33
+ width: 1920,
34
+ height: 1200,
35
+ decimal: 16 / 10,
36
+ label: 'widescreen tall',
37
+ },
38
+ [AspectRatio.RATIO_3_2]: {
39
+ aspectRatio: AspectRatio.RATIO_3_2,
40
+ width: 1440,
41
+ height: 960,
42
+ decimal: 3 / 2,
43
+ label: 'balanced',
44
+ },
45
+ [AspectRatio.RATIO_4_3]: {
46
+ aspectRatio: AspectRatio.RATIO_4_3,
47
+ width: 1024,
48
+ height: 768,
49
+ decimal: 4 / 3,
50
+ label: 'standard',
51
+ },
52
+ [AspectRatio.RATIO_5_4]: {
53
+ aspectRatio: AspectRatio.RATIO_5_4,
54
+ width: 1280,
55
+ height: 1024,
56
+ decimal: 5 / 4,
57
+ label: 'square old',
58
+ },
59
+ [AspectRatio.RATIO_1_1]: {
60
+ aspectRatio: AspectRatio.RATIO_1_1,
61
+ width: 1000,
62
+ height: 1000,
63
+ decimal: 1,
64
+ label: 'square',
65
+ },
66
+ };
@@ -0,0 +1,115 @@
1
+ import type { AssignmentBasicInfo, AssignmentClass, ClassBaseDocument, ClassCycleTag, EntityState } from '../types/index.js';
2
+ import type { EntityMembersDTO, EntityMembersResponseDTO } from './entity.js';
3
+ import type { UserOrganizationBasicInfoResponseDTO, UserSummaryListResponseDTO } from './user.js';
4
+ interface ClassUserResponseDTO {
5
+ isOwner: boolean;
6
+ isManager: boolean;
7
+ isSpectator: boolean;
8
+ isParticipant: boolean;
9
+ isGuest: boolean;
10
+ }
11
+ export interface ClassSummaryListResponseDTO {
12
+ key: string;
13
+ name: string;
14
+ description: string;
15
+ state: EntityState;
16
+ owner: UserOrganizationBasicInfoResponseDTO;
17
+ user: ClassUserResponseDTO;
18
+ }
19
+ export interface ContestAssignmentSessionCycleClassDataResponseDTO extends AssignmentBasicInfo {
20
+ type: AssignmentClass.CONTEST;
21
+ contestKey: string;
22
+ numberProblems: number;
23
+ }
24
+ export interface CourseAssignmentSessionCycleClassDataResponseDTO extends AssignmentBasicInfo {
25
+ type: AssignmentClass.COURSE;
26
+ courseKey: string;
27
+ numberLessons: number;
28
+ }
29
+ export interface WorksheetAssignmentSessionCycleClassDataResponseDTO extends AssignmentBasicInfo {
30
+ type: AssignmentClass.WORKSHEET;
31
+ worksheetKey: string;
32
+ numberPages: number;
33
+ }
34
+ export interface NoneAssignmentSessionCycleClassDataResponseDTO extends AssignmentBasicInfo {
35
+ type: AssignmentClass.NONE;
36
+ }
37
+ export type AssignmentSessionCycleClassDataResponseDTO = ContestAssignmentSessionCycleClassDataResponseDTO | CourseAssignmentSessionCycleClassDataResponseDTO | WorksheetAssignmentSessionCycleClassDataResponseDTO | NoneAssignmentSessionCycleClassDataResponseDTO;
38
+ export interface SessionCycleClassDataResponseDTO {
39
+ id: string;
40
+ index: number;
41
+ name: string;
42
+ assignments: {
43
+ [key: string]: AssignmentSessionCycleClassDataResponseDTO;
44
+ };
45
+ startTimestamp: number;
46
+ endTimestamp: number;
47
+ state: EntityState;
48
+ }
49
+ export interface CycleClassDataResponseDTO {
50
+ id: string;
51
+ index: number;
52
+ name: string;
53
+ sessions: {
54
+ [key: string]: SessionCycleClassDataResponseDTO;
55
+ };
56
+ tags: ClassCycleTag[];
57
+ startTimestamp: number;
58
+ endTimestamp: number;
59
+ state: EntityState;
60
+ }
61
+ export interface ClassCycleDataResponseDTO extends ClassSummaryListResponseDTO {
62
+ members: EntityMembersResponseDTO;
63
+ cycle: CycleClassDataResponseDTO;
64
+ cycles: {
65
+ [key: string]: {
66
+ name: string;
67
+ index: number;
68
+ id: string;
69
+ };
70
+ };
71
+ }
72
+ export interface ClassCyclesCycleDataResponseDTO extends Omit<CycleClassDataResponseDTO, 'sessions'> {
73
+ sessions: {
74
+ [key: string]: Omit<SessionCycleClassDataResponseDTO, 'assignments'>;
75
+ };
76
+ }
77
+ export interface ClassCyclesDataResponseDTO extends ClassSummaryListResponseDTO {
78
+ members: EntityMembersResponseDTO;
79
+ cycles: {
80
+ [key: string]: ClassCyclesCycleDataResponseDTO;
81
+ };
82
+ }
83
+ export interface AssignmentContestUpsert extends AssignmentBasicInfo {
84
+ type: AssignmentClass.CONTEST;
85
+ contestKey: string;
86
+ }
87
+ export interface AssignmentCourseUpsert extends AssignmentBasicInfo {
88
+ type: AssignmentClass.COURSE;
89
+ courseKey: string;
90
+ }
91
+ export interface AssignmentWorksheetUpsert extends AssignmentBasicInfo {
92
+ type: AssignmentClass.WORKSHEET;
93
+ worksheetKey: string;
94
+ }
95
+ export interface UpsertClassDTO extends Omit<ClassBaseDocument, 'members' | 'key' | 'cycles'> {
96
+ members: EntityMembersDTO;
97
+ }
98
+ export interface UpsertClassCycleDTO extends Omit<ClassBaseDocument['cycles'][string], 'sessions' | 'id'> {
99
+ }
100
+ export interface UpsertClassCycleSessionDTO extends Omit<ClassBaseDocument['cycles'][string]['sessions'][string], 'assignments' | 'id'> {
101
+ }
102
+ export interface UpsertClassCycleSessionAssignmentDTO extends Omit<AssignmentBasicInfo, 'id'> {
103
+ key: string;
104
+ }
105
+ export interface ClassAssignmentBaseDocument {
106
+ userId: string;
107
+ assignmentId: string;
108
+ points: number;
109
+ }
110
+ export interface ClassAssignmentDataResponseDTO {
111
+ user: UserSummaryListResponseDTO;
112
+ assignmentId: string;
113
+ points: number;
114
+ }
115
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { JudgingFile } from '../types/index.js';
2
+ export interface CodeRunDTO {
3
+ runId: string;
4
+ timeLimit: number;
5
+ memoryLimit: number;
6
+ connectionId: string;
7
+ files: (JudgingFile & {
8
+ source: string;
9
+ isInput: boolean;
10
+ isEntryPoint: boolean;
11
+ toCompile: boolean;
12
+ })[];
13
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import type { UserOrganizationBasicInfoResponseDTO } from './user.js';
2
+ export type ReactionUserResponseData = {
3
+ key: string;
4
+ user: UserOrganizationBasicInfoResponseDTO;
5
+ createdTimestamp: number;
6
+ updatedTimestamp: number;
7
+ };
8
+ export interface CommentDataResponseDTO {
9
+ id: string;
10
+ content: string;
11
+ user: UserOrganizationBasicInfoResponseDTO;
12
+ hidden: boolean;
13
+ reactions: {
14
+ [key: string]: {
15
+ [key: string]: ReactionUserResponseData;
16
+ };
17
+ };
18
+ replies: CommentDataResponseDTO[];
19
+ createdTimestamp: number;
20
+ updatedTimestamp: number;
21
+ }
@@ -0,0 +1 @@
1
+ export {};