@juki-team/commons 0.2.10 → 0.2.13

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.
@@ -43,8 +43,8 @@ export interface SessionCycleClassDataResponseDTO {
43
43
  assignments: {
44
44
  [key: string]: AssignmentSessionCycleClassDataResponseDTO;
45
45
  };
46
- startTimestamp: number;
47
- endTimestamp: number;
46
+ startsAt: number;
47
+ endsAt: number;
48
48
  state: EntityState;
49
49
  }
50
50
  export interface CycleClassDataResponseDTO {
@@ -55,8 +55,8 @@ export interface CycleClassDataResponseDTO {
55
55
  [key: string]: SessionCycleClassDataResponseDTO;
56
56
  };
57
57
  tags: ClassCycleTag[];
58
- startTimestamp: number;
59
- endTimestamp: number;
58
+ startsAt: number;
59
+ endsAt: number;
60
60
  state: EntityState;
61
61
  }
62
62
  export interface ClassCycleDataResponseDTO extends ClassSummaryListResponseDTO {
@@ -2,8 +2,8 @@ import type { UserOrganizationBasicInfoResponseDTO } from './user.js';
2
2
  export type ReactionUserResponseData = {
3
3
  key: string;
4
4
  user: UserOrganizationBasicInfoResponseDTO;
5
- createdTimestamp: number;
6
- updatedTimestamp: number;
5
+ createdAt: number;
6
+ updatedAt: number;
7
7
  };
8
8
  export interface CommentDataResponseDTO {
9
9
  id: string;
@@ -16,6 +16,6 @@ export interface CommentDataResponseDTO {
16
16
  };
17
17
  };
18
18
  replies: CommentDataResponseDTO[];
19
- createdTimestamp: number;
20
- updatedTimestamp: number;
19
+ createdAt: number;
20
+ updatedAt: number;
21
21
  }
@@ -21,7 +21,7 @@ export interface ContestSummaryListResponseDTO extends Pick<ContestBaseDocument,
21
21
  user: ContestUser;
22
22
  owner: UserOrganizationBasicInfoResponseDTO;
23
23
  organization: EntityOrganizationSummaryListResponseDTO;
24
- settings: Pick<ContestSettings, 'startTimestamp' | 'endTimestamp' | 'frozenTimestamp' | 'quietTimestamp' | 'penalty' | 'upsolvingEnabled'>;
24
+ settings: Pick<ContestSettings, 'startsAt' | 'endsAt' | 'frozenAt' | 'silencedAt' | 'penalty' | 'upsolvingEnabled'>;
25
25
  totalContestants: number;
26
26
  isLive: boolean;
27
27
  isPast: boolean;
@@ -36,8 +36,8 @@ export interface ContestSystemSummaryListResponseDTO extends ContestSummaryListR
36
36
  id: string;
37
37
  owner: EntityOwnerSystemSummaryListResponseDTO;
38
38
  organization: EntityOrganizationSystemSummaryListResponseDTO;
39
- creationTimestamp: number;
40
- updateTimestamp: number;
39
+ createdAt: number;
40
+ updatedAt: number;
41
41
  }
42
42
  export interface ContestProblemBasicDataResponseDTO extends Omit<ContestProblem, 'id' | 'prerequisites'> {
43
43
  name: string;
@@ -1,4 +1,4 @@
1
- import type { EntityAccess, EntityMembersRank, MemberType } from '../enums/index.js';
1
+ import type { EntityAccess, EntityMembersRank, EntityRole, MemberType, ShareLinkVisibility } from '../enums/index.js';
2
2
  import type { UserOrganizationBasicInfoResponseDTO } from './user.js';
3
3
  export interface EntityMembersDTO {
4
4
  rankAdministrators: EntityMembersRank;
@@ -44,8 +44,8 @@ export interface DocumentMemberResponseDTO extends UserOrganizationBasicInfoResp
44
44
  }
45
45
  export interface DocumentMemberWithTimestampsResponseDTO extends DocumentMemberResponseDTO {
46
46
  type: MemberType;
47
- lastVisitTimestamp: number;
48
- joinedAtTimestamp: number;
47
+ lastVisitedAt: number;
48
+ joinedAt: number;
49
49
  }
50
50
  export interface EntityMembersWithTimestampsResponseDTO {
51
51
  rankAdministrators: EntityMembersRank;
@@ -86,3 +86,54 @@ export interface MetadataResponseDTO {
86
86
  description: string;
87
87
  cover: string;
88
88
  }
89
+ /**
90
+ * Subject of a ReBAC tuple — discriminated union by subject type.
91
+ * Mirrors the EntitySubjectType enum in the database.
92
+ *
93
+ * - USER: a specific user (subjectType=USER, subjectId=userId)
94
+ * - PUBLIC: wildcard — represents "everyone" (subjectType=PUBLIC, subjectId=0)
95
+ * - GROUP can be added later when group subjects are surfaced.
96
+ */
97
+ export type EntityGrantSubjectDTO = {
98
+ type: 'USER';
99
+ id: string;
100
+ user: UserOrganizationBasicInfoResponseDTO;
101
+ } | {
102
+ type: 'PUBLIC';
103
+ };
104
+ /**
105
+ * One ReBAC tuple: (relation, subject) for a single resource.
106
+ * Pure tuple representation — modal renders user lists by filtering on subject.type.
107
+ */
108
+ export interface EntityGrantDTO {
109
+ role: EntityRole;
110
+ subject: EntityGrantSubjectDTO;
111
+ joinedAt: number;
112
+ sourceLinkId?: string;
113
+ }
114
+ /**
115
+ * Summary of a share link, for display in the share modal.
116
+ * Create / revoke / list links use their own endpoints.
117
+ */
118
+ export interface EntityShareLinkSummaryDTO {
119
+ id: string;
120
+ token: string;
121
+ role: EntityRole;
122
+ visibility: ShareLinkVisibility;
123
+ allowedUserIds: string[];
124
+ expiresAt: number | null;
125
+ maxUses: number | null;
126
+ useCount: number;
127
+ isActive: boolean;
128
+ createdBy: string;
129
+ createdAt: number;
130
+ }
131
+ /**
132
+ * Full ReBAC view of a resource — consumed by the share/edit modal.
133
+ * `grants` includes PUBLIC subjects too; the parent `access` field already
134
+ * encodes the same fact as one of PRIVATE/RESTRICTED/PUBLIC/EXPOSED.
135
+ */
136
+ export interface EntitySharingResponseDTO {
137
+ grants: EntityGrantDTO[];
138
+ links: EntityShareLinkSummaryDTO[];
139
+ }
@@ -13,7 +13,7 @@ export interface CreateFileDTO extends FileBasic {
13
13
  }
14
14
  export interface FileSummaryListResponseDTO extends FileBasic {
15
15
  key: string;
16
- updatedAt: Date;
16
+ updatedAt: number;
17
17
  content: SummaryFileContent;
18
18
  user: DocumentUserResponseDTO;
19
19
  owner: UserBasic;
@@ -1,6 +1,6 @@
1
1
  export interface ImageSummaryResponseDTO {
2
2
  imageUrl: string;
3
3
  imageThumbnailUrl: string;
4
- lastModifiedTimestamp: number;
4
+ updatedAt: number;
5
5
  size: number;
6
6
  }
@@ -5,8 +5,8 @@ export interface JudgeSummaryListResponseDTO extends Omit<JudgeBaseDocument, 'ge
5
5
  }
6
6
  export interface JudgeSystemSummaryListResponseDTO extends JudgeSummaryListResponseDTO {
7
7
  id: string;
8
- creationTimestamp: number;
9
- updateTimestamp: number;
8
+ createdAt: number;
9
+ updatedAt: number;
10
10
  getLoginUrl: string;
11
11
  getProfileUrl: string;
12
12
  getSubmitUrl: string;
@@ -18,7 +18,7 @@ export interface OrganizationResponseDTO extends EmailDataResponseDTO {
18
18
  managerUser: UserOrganizationBasicInfoResponseDTO;
19
19
  systemAdminUser: UserOrganizationBasicInfoResponseDTO;
20
20
  plan: OrganizationPlan;
21
- startTimestamp: number;
21
+ startsAt: number;
22
22
  judges: OrganizationJudgeResponseDTO[];
23
23
  trustedOrganizations: OrganizationTrustedOrganizationResponseDTO[];
24
24
  styles: OrganizationStylesResponseDTO;
@@ -1,9 +1,8 @@
1
- import type { EntityState, ProblemScoringMode, ProblemType } from '../enums/index.js';
2
- import type { JudgeBaseDocument, ProblemBaseDocument, ProblemSettings, ProblemStatement, ProblemUser, TextLanguage } from '../types/index.js';
3
- import type { EntityMembersDTO } from './entity.js';
1
+ import type { EntityAccess, EntityState, ProblemScoringMode, ProblemType } from '../enums/index.js';
2
+ import type { JudgeBaseDocument, ProblemBaseDocument, ProblemSettings, ProblemStatement, ProblemUserDTO, TextLanguage } from '../types/index.js';
3
+ import type { EntityMembersDTO, EntitySharingResponseDTO } from './entity.js';
4
4
  import type { EntityOwnerSystemSummaryListResponseDTO, UserOrganizationBasicInfoResponseDTO } from './user.js';
5
5
  export interface ProblemJudgeSummaryListResponseDTO extends Pick<JudgeBaseDocument, 'isExternal' | 'isSubmitSupported' | 'name' | 'key'> {
6
- isCustom: boolean;
7
6
  isMain: boolean;
8
7
  }
9
8
  export interface EntityOrganizationSummaryListResponseDTO {
@@ -22,8 +21,9 @@ export interface ProblemBasicSummaryListResponseDTO {
22
21
  externalUrl: string;
23
22
  }
24
23
  export interface ProblemSummaryListResponseDTO extends ProblemBasicSummaryListResponseDTO {
25
- user: ProblemUser;
26
24
  owner: UserOrganizationBasicInfoResponseDTO;
25
+ access: EntityAccess;
26
+ user: ProblemUserDTO;
27
27
  }
28
28
  export interface ProblemDataResponseDTO extends ProblemSummaryListResponseDTO {
29
29
  author: string;
@@ -32,6 +32,7 @@ export interface ProblemDataResponseDTO extends ProblemSummaryListResponseDTO {
32
32
  settings: ProblemSettings;
33
33
  ownerNickname: string;
34
34
  state: EntityState;
35
+ sharing: EntitySharingResponseDTO;
35
36
  }
36
37
  export interface ProblemJudgeSystemSummaryListResponseDTO extends ProblemJudgeSummaryListResponseDTO {
37
38
  name: string;
@@ -46,8 +47,8 @@ export interface ProblemSystemSummaryListResponseDTO extends ProblemSummaryListR
46
47
  id: string;
47
48
  owner: EntityOwnerSystemSummaryListResponseDTO;
48
49
  judge: ProblemJudgeSystemSummaryListResponseDTO;
49
- creationTimestamp: number;
50
- updateTimestamp: number;
50
+ createdAt: number;
51
+ updatedAt: number;
51
52
  }
52
53
  export interface ProblemTestCaseResponse {
53
54
  testCaseKey: string;
@@ -59,6 +60,6 @@ export interface ProblemTestCaseResponse {
59
60
  }
60
61
  export interface ProblemTestCasesResponseDTO extends Array<ProblemTestCaseResponse> {
61
62
  }
62
- export interface UpsertProblemDTO extends Omit<ProblemBaseDocument, 'testCases' | 'testCasesUpdatedAtTimestamp' | 'key' | 'members' | 'judgeId'> {
63
+ export interface UpsertProblemDTO extends Omit<ProblemBaseDocument, 'testCases' | 'testCasesUpdatedAt' | 'key' | 'members' | 'judgeId'> {
63
64
  members: EntityMembersDTO;
64
65
  }
@@ -4,9 +4,9 @@ export interface SessionBasicResponseDTO {
4
4
  id: string;
5
5
  deviceName: string;
6
6
  osName: string;
7
- validUntilTimestamp: number;
8
- creationTimestamp: number;
9
- updateTimestamp: number;
7
+ expiresAt: number;
8
+ createdAt: number;
9
+ updatedAt: number;
10
10
  }
11
11
  export interface UserSessionSystemSummaryListResponseDTO extends SessionBasicResponseDTO {
12
12
  userId: string;
@@ -101,7 +101,7 @@ export interface WebSocketResponse {
101
101
  event: WebSocketResponseEvent;
102
102
  key: WebSocketResponseEventKey;
103
103
  connectionId: string;
104
- messageTimestamp: number;
104
+ createdAt: number;
105
105
  }
106
106
  export interface PongWebSocketResponseEventDTO extends WebSocketResponse {
107
107
  event: typeof WebSocketResponseEvent.PONG;
@@ -17,7 +17,7 @@ export interface SubmissionProblemSummaryListResponseDTO {
17
17
  export interface SubmissionContestSummaryListResponseDTO {
18
18
  key: string;
19
19
  name: string;
20
- settingsStartTimestamp: number;
20
+ settingsStartsAt: number;
21
21
  isManager: boolean;
22
22
  problemIndex: string;
23
23
  problemColor: string;
@@ -65,8 +65,8 @@ export interface SubmissionSystemSummaryListResponseDTO extends SubmissionSummar
65
65
  problem: SubmissionProblemSystemSummaryListResponseDTO;
66
66
  contest: SubmissionContestSystemSummaryListResponseDTO | null;
67
67
  organization: EntityOrganizationSystemSummaryListResponseDTO;
68
- creationTimestamp: number;
69
- updateTimestamp: number;
68
+ createdAt: number;
69
+ updatedAt: number;
70
70
  state: EntityState;
71
71
  }
72
72
  export type TestCaseResult = DataLog & {
@@ -9,8 +9,8 @@ export interface EcsTask {
9
9
  cpu: string;
10
10
  memory: string;
11
11
  launchType: string;
12
- createdAt: Date;
13
- startedAt: Date;
12
+ createdAt: number;
13
+ startedAt: number;
14
14
  desiredStatus: string;
15
15
  lastStatus: string;
16
16
  containers?: TaskResponseDTOContainer[];
@@ -24,7 +24,7 @@ export interface EcsTaskDefinition {
24
24
  revision: number;
25
25
  cpu: string;
26
26
  memory: string;
27
- registeredAt: Date;
27
+ registeredAt: number;
28
28
  }
29
29
  export interface EcsTaskDefinitionSystemSummaryListResponseDTO extends EcsTaskDefinition {
30
30
  isHighRunnerOrganizationKeys: string[];
@@ -58,8 +58,8 @@ export type SqsProperties = {
58
58
  approximateNumberOfMessages: string;
59
59
  approximateNumberOfMessagesNotVisible: string;
60
60
  approximateNumberOfMessagesDelayed: string;
61
- createdTimestamp: string;
62
- lastModifiedTimestamp: string;
61
+ createdAt: number;
62
+ updatedAt: number;
63
63
  visibilityTimeout: string;
64
64
  maximumMessageSize: string;
65
65
  messageRetentionPeriod: string;
@@ -84,7 +84,7 @@ export type SsmSession = {
84
84
  sessionId: string;
85
85
  target: string;
86
86
  status: 'Connected' | 'Connecting' | 'Disconnected' | 'Failed' | 'Terminating' | 'Terminated' | undefined;
87
- startTimestamps: number;
87
+ startsAt: number;
88
88
  owner: string;
89
89
  maxSessionDuration: number;
90
90
  raw: unknown;
@@ -30,7 +30,7 @@ export interface VirtualUserResponseDTO {
30
30
  submitId: string;
31
31
  attempts: number;
32
32
  workingIn: WorkingIn;
33
- updatedAt: Date;
33
+ updatedAt: number;
34
34
  judgeSubmissionId: string;
35
35
  session: {
36
36
  cookies: Cookie[];
@@ -7,7 +7,7 @@ export interface WorksheetUserResponseDTO {
7
7
  isSpectator: boolean;
8
8
  }
9
9
  export interface WorksheetSummaryListResponseDTO extends Pick<WorksheetBaseDocument, 'key' | 'name' | 'description'> {
10
- updatedAt: Date;
10
+ updatedAt: number;
11
11
  content: SummaryWorksheetsInPages;
12
12
  user: WorksheetUserResponseDTO;
13
13
  owner: UserOrganizationBasicInfoResponseDTO;
@@ -1,5 +1,5 @@
1
1
  import type { ContestSettings } from '../types/index.js';
2
- export declare const isEndlessContest: (settings: Pick<ContestSettings, "startTimestamp" | "frozenTimestamp" | "quietTimestamp" | "endTimestamp" | "penalty"> | undefined) => boolean;
3
- export declare const isGlobalContest: (settings: Pick<ContestSettings, "startTimestamp" | "frozenTimestamp" | "quietTimestamp" | "endTimestamp" | "penalty"> | undefined) => boolean;
4
- export declare const isPastContest: (settings: Pick<ContestSettings, "endTimestamp"> | undefined) => boolean;
5
- export declare const isFutureContest: (settings: Pick<ContestSettings, "startTimestamp"> | undefined) => boolean;
2
+ export declare const isEndlessContest: (settings: Pick<ContestSettings, "startsAt" | "frozenAt" | "silencedAt" | "endsAt" | "penalty"> | undefined) => boolean;
3
+ export declare const isGlobalContest: (settings: Pick<ContestSettings, "startsAt" | "frozenAt" | "silencedAt" | "endsAt" | "penalty"> | undefined) => boolean;
4
+ export declare const isPastContest: (settings: Pick<ContestSettings, "endsAt"> | undefined) => boolean;
5
+ export declare const isFutureContest: (settings: Pick<ContestSettings, "startsAt"> | undefined) => boolean;
@@ -1,21 +1,21 @@
1
1
  import { MAX_DATE, MIN_DATE } from '../constants/index.js';
2
2
  export const isEndlessContest = (settings) => {
3
- return (settings?.startTimestamp === MIN_DATE.getTime() &&
4
- settings?.frozenTimestamp === MAX_DATE.getTime() &&
5
- settings?.quietTimestamp === MAX_DATE.getTime() &&
6
- settings?.endTimestamp === MAX_DATE.getTime() &&
3
+ return (settings?.startsAt === MIN_DATE.getTime() &&
4
+ settings?.frozenAt === MAX_DATE.getTime() &&
5
+ settings?.silencedAt === MAX_DATE.getTime() &&
6
+ settings?.endsAt === MAX_DATE.getTime() &&
7
7
  settings?.penalty === 0);
8
8
  };
9
9
  export const isGlobalContest = (settings) => {
10
- return (settings?.startTimestamp === 0 &&
11
- settings?.frozenTimestamp === 0 &&
12
- settings?.quietTimestamp === 0 &&
13
- settings?.endTimestamp === 0 &&
10
+ return (settings?.startsAt === 0 &&
11
+ settings?.frozenAt === 0 &&
12
+ settings?.silencedAt === 0 &&
13
+ settings?.endsAt === 0 &&
14
14
  settings?.penalty === 0);
15
15
  };
16
16
  export const isPastContest = (settings) => {
17
- return Date.now() > (settings?.endTimestamp ?? 0);
17
+ return Date.now() > (settings?.endsAt ?? 0);
18
18
  };
19
19
  export const isFutureContest = (settings) => {
20
- return (settings?.startTimestamp ?? 0) > Date.now();
20
+ return (settings?.startsAt ?? 0) > Date.now();
21
21
  };
@@ -95,8 +95,8 @@ export const isWebSocketResponseEventDTO = (event) => {
95
95
  return (Object.values(WebSocketResponseEvent).includes(v.event) &&
96
96
  typeof v.key === 'string' &&
97
97
  typeof v.connectionId === 'string' &&
98
- typeof v.messageTimestamp === 'number' &&
99
- !!v.messageTimestamp);
98
+ typeof v.createdAt === 'number' &&
99
+ !!v.createdAt);
100
100
  };
101
101
  export const isPongWebSocketResponseEventDTO = (event) => {
102
102
  if (!isWebSocketResponseEventDTO(event))
@@ -5,8 +5,8 @@ export interface AssignmentBasicInfo {
5
5
  index: number;
6
6
  type: AssignmentClass;
7
7
  points: number;
8
- startTimestamp: number;
9
- endTimestamp: number;
8
+ startsAt: number;
9
+ endsAt: number;
10
10
  title: string;
11
11
  content: BodyWorksheet[];
12
12
  tags: string[];
@@ -6,8 +6,8 @@ interface ClassCycleSession {
6
6
  index: number;
7
7
  name: string;
8
8
  assignments: ClassCycleSessionAssignments;
9
- startTimestamp: number;
10
- endTimestamp: number;
9
+ startsAt: number;
10
+ endsAt: number;
11
11
  state: EntityState;
12
12
  }
13
13
  export interface ClassCycleSessions {
@@ -25,8 +25,8 @@ export type ClassCycle = {
25
25
  name: string;
26
26
  sessions: ClassCycleSessions;
27
27
  tags: ClassCycleTag[];
28
- startTimestamp: number;
29
- endTimestamp: number;
28
+ startsAt: number;
29
+ endsAt: number;
30
30
  state: EntityState;
31
31
  };
32
32
  export interface ClassCycles {
@@ -1,8 +1,8 @@
1
1
  export type ReactionUser = {
2
2
  key: string;
3
3
  userId: string;
4
- createdTimestamp: number;
5
- updatedTimestamp: number;
4
+ createdAt: number;
5
+ updatedAt: number;
6
6
  };
7
7
  export interface CommentBaseDocument {
8
8
  key: string;
@@ -39,9 +39,9 @@ export type ContestClarification = {
39
39
  problemJudgeKey: string;
40
40
  question: string;
41
41
  questionUser: UserOrganizationBasicInfoResponseDTO;
42
- questionTimestamp: number;
42
+ askedAt: number;
43
43
  answer: string;
44
- answerTimestamp: number;
44
+ answeredAt: number;
45
45
  answerUser: UserOrganizationBasicInfoResponseDTO;
46
46
  public: boolean;
47
47
  };
@@ -55,8 +55,8 @@ export type ContestProblem = {
55
55
  index: string;
56
56
  points: number;
57
57
  color: string;
58
- startTimestamp: number;
59
- endTimestamp: number;
58
+ startsAt: number;
59
+ endsAt: number;
60
60
  prerequisites: ContestProblemPrerequisite[];
61
61
  maxAcceptedUsers: number;
62
62
  group: string;
@@ -67,17 +67,17 @@ export type ContestSettings = {
67
67
  languages: CodeLanguage[];
68
68
  penalty: number;
69
69
  timeToSolve: number;
70
- startTimestamp: number;
71
- frozenTimestamp: number;
72
- quietTimestamp: number;
73
- endTimestamp: number;
70
+ startsAt: number;
71
+ frozenAt: number;
72
+ silencedAt: number;
73
+ endsAt: number;
74
74
  scoreboardLocked: boolean;
75
75
  upsolvingEnabled: boolean;
76
76
  };
77
77
  export type MemberUserData = {
78
78
  userId: string;
79
- lastVisitTimestamp: number | null;
80
- joinedAtTimestamp: number;
79
+ lastVisitedAt: number | null;
80
+ joinedAt: number;
81
81
  };
82
82
  export type ContestMembersBasic = {
83
83
  administrators: {
@@ -134,5 +134,5 @@ export type ContestMembersResponse = {
134
134
  };
135
135
  };
136
136
  export type ContestTimeData = Pick<ContestDataResponseDTO, 'isLive' | 'isFrozenTime' | 'isQuietTime' | 'isEndless' | 'isPast' | 'isFuture' | 'isGlobal'> & {
137
- settings: Pick<UpsertContestDTO['settings'], 'penalty' | 'startTimestamp' | 'frozenTimestamp' | 'quietTimestamp' | 'endTimestamp' | 'upsolvingEnabled'>;
137
+ settings: Pick<UpsertContestDTO['settings'], 'penalty' | 'startsAt' | 'frozenAt' | 'silencedAt' | 'endsAt' | 'upsolvingEnabled'>;
138
138
  };
@@ -2,13 +2,13 @@ import type { UserOrganizationBasicInfoResponseDTO } from '../dto/index.js';
2
2
  import type { EntityMembersRank, EntityState, LogOperation } from '../enums/index.js';
3
3
  export type EntityUsersMemberUserData = {
4
4
  userId: string;
5
- lastVisitTimestamp: number | null;
6
- joinedAtTimestamp: number;
5
+ lastVisitedAt: number | null;
6
+ joinedAt: number;
7
7
  };
8
8
  export type EntityTeamsMemberUserData = {
9
9
  teamId: string;
10
- lastVisitTimestamp: number | null;
11
- joinedAtTimestamp: number;
10
+ lastVisitedAt: number | null;
11
+ joinedAt: number;
12
12
  };
13
13
  export type EntityMembersUserData = EntityUsersMemberUserData | EntityTeamsMemberUserData;
14
14
  export interface EntityMembers {
@@ -40,8 +40,8 @@ export interface EntityOrganizationDocument {
40
40
  organizationId: string;
41
41
  }
42
42
  export interface EntityTimestampsDocument {
43
- createdAt: Date;
44
- updatedAt: Date;
43
+ createdAt: number;
44
+ updatedAt: number;
45
45
  }
46
46
  export interface EntityStateDocument {
47
47
  state: EntityState;
@@ -1,4 +1,4 @@
1
- import type { CodeLanguage, ProblemScoringMode, ProblemType } from '../enums/index.js';
1
+ import type { CodeLanguage, EntityAccess, ProblemScoringMode, ProblemType } from '../enums/index.js';
2
2
  import type { EntityMembers } from './entity.js';
3
3
  import type { ProblemTestCase } from './services.js';
4
4
  import type { TextLanguage } from './text.js';
@@ -46,11 +46,8 @@ export type ProblemSettings = {
46
46
  evaluatorSource: string;
47
47
  pointsByGroups: ProblemSettingsPointsByGroups;
48
48
  };
49
- export type ProblemUser = {
50
- isOwner: boolean;
51
- isAdministrator: boolean;
52
- isManager: boolean;
53
- isSpectator: boolean;
49
+ export type ProblemUserDTO = {
50
+ role: EntityAccess;
54
51
  solved: boolean;
55
52
  tried: boolean;
56
53
  };
@@ -65,7 +62,7 @@ export interface ProblemBaseDocument {
65
62
  judgeId: string;
66
63
  key: string;
67
64
  testCases: ProblemTestCase[];
68
- testCasesUpdatedAtTimestamp: number;
65
+ testCasesUpdatedAt: number;
69
66
  members: EntityMembers;
70
67
  costs: {
71
68
  unlockEditorial: number;
@@ -7,8 +7,8 @@ export interface TeamMember {
7
7
  }
8
8
  export interface Assignment {
9
9
  id: number;
10
- createdAt: Date;
11
- updatedAt: Date;
10
+ createdAt: number;
11
+ updatedAt: number;
12
12
  users: [];
13
13
  name: string;
14
14
  type: AssignmentType;
@@ -16,14 +16,14 @@ export interface Assignment {
16
16
  }
17
17
  export interface Comment {
18
18
  id: number;
19
- createdAt: Date;
20
- updatedAt: Date;
19
+ createdAt: number;
20
+ updatedAt: number;
21
21
  comment: string;
22
22
  }
23
23
  export interface Task {
24
24
  id: number;
25
- createdAt: Date;
26
- updatedAt: Date;
25
+ createdAt: number;
26
+ updatedAt: number;
27
27
  comments: Comment[];
28
28
  assigned: UserBasic[];
29
29
  subtasks: [];
@@ -40,7 +40,7 @@ export interface Training {
40
40
  }
41
41
  export interface Team {
42
42
  id: number;
43
- createdAt: Date;
43
+ createdAt: number;
44
44
  name: string;
45
45
  aboutTeam: string;
46
46
  country: string;
@@ -60,7 +60,7 @@ export interface TrainingBasic {
60
60
  }
61
61
  export interface TeamBasic {
62
62
  id: number;
63
- createdAt: Date;
63
+ createdAt: number;
64
64
  name: string;
65
65
  aboutTeam: string;
66
66
  country: string;
@@ -24,7 +24,7 @@ export interface CodeEditorTestCase extends SubmissionTestCase {
24
24
  sample: boolean;
25
25
  hidden: boolean;
26
26
  index: number;
27
- messageTimestamp: number;
27
+ createdAt: number;
28
28
  }
29
29
  export type CodeEditorFile<T> = {
30
30
  description: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juki-team/commons",
3
- "version": "0.2.10",
3
+ "version": "0.2.13",
4
4
  "author": "juki-team",
5
5
  "license": "MIT",
6
6
  "type": "module",