@xcpcio/core 0.77.4 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -494,6 +494,7 @@ class Submission {
494
494
  time;
495
495
  language;
496
496
  reaction;
497
+ externalUrl;
497
498
  status = types.SubmissionStatus.UNKNOWN;
498
499
  isIgnore = false;
499
500
  isSolved = false;
@@ -600,6 +601,9 @@ function createSubmission(submissionJSON, contest) {
600
601
  url: contest.options.reactionVideoUrlTemplate.replace(/\$\{submission_id\}/, s.id)
601
602
  };
602
603
  }
604
+ if (contest?.options.submissionExternalUrlTemplate) {
605
+ s.externalUrl = contest.options.submissionExternalUrlTemplate.replace(/\$\{submission_id\}/, s.id);
606
+ }
603
607
  return s;
604
608
  }
605
609
  function createSubmissions(submissionsJSON, contest) {
@@ -1055,7 +1059,9 @@ class ContestOptions {
1055
1059
  submissionHasLanguageField;
1056
1060
  submissionEnableActionField;
1057
1061
  submissionHasReactionField;
1062
+ submissionHasExternalUrlField;
1058
1063
  reactionVideoUrlTemplate;
1064
+ submissionExternalUrlTemplate;
1059
1065
  teamPhotoTemplate;
1060
1066
  teamWebcamStreamUrlTemplate;
1061
1067
  teamScreenStreamUrlTemplate;
@@ -1066,6 +1072,7 @@ class ContestOptions {
1066
1072
  this.submissionHasLanguageField = false;
1067
1073
  this.submissionEnableActionField = false;
1068
1074
  this.submissionHasReactionField = false;
1075
+ this.submissionHasExternalUrlField = false;
1069
1076
  }
1070
1077
  }
1071
1078
  function createContestOptions(contestOptionsJSON = {}) {
@@ -1080,7 +1087,11 @@ function createContestOptions(contestOptionsJSON = {}) {
1080
1087
  if (j.has_reaction_videos) {
1081
1088
  o.submissionHasReactionField = true;
1082
1089
  }
1083
- o.submissionEnableActionField = o.submissionHasReactionField;
1090
+ if (j.submission_external_url_template) {
1091
+ o.submissionHasExternalUrlField = true;
1092
+ o.submissionExternalUrlTemplate = j.submission_external_url_template;
1093
+ }
1094
+ o.submissionEnableActionField = o.submissionHasReactionField || o.submissionHasExternalUrlField;
1084
1095
  o.reactionVideoUrlTemplate = j.reaction_video_url_template;
1085
1096
  o.teamPhotoTemplate = j.team_photo_url_template;
1086
1097
  o.teamWebcamStreamUrlTemplate = j.team_webcam_stream_url_template;
package/dist/index.d.cts CHANGED
@@ -45,7 +45,9 @@ declare class ContestOptions {
45
45
  submissionHasLanguageField: boolean;
46
46
  submissionEnableActionField: boolean;
47
47
  submissionHasReactionField: boolean;
48
+ submissionHasExternalUrlField: boolean;
48
49
  reactionVideoUrlTemplate?: string;
50
+ submissionExternalUrlTemplate?: string;
49
51
  teamPhotoTemplate?: Image;
50
52
  teamWebcamStreamUrlTemplate?: string;
51
53
  teamScreenStreamUrlTemplate?: string;
@@ -123,6 +125,7 @@ declare class Submission {
123
125
  time?: number;
124
126
  language?: string;
125
127
  reaction?: SubmissionReaction;
128
+ externalUrl?: string;
126
129
  status: SubmissionStatus;
127
130
  isIgnore: boolean;
128
131
  isSolved: boolean;
package/dist/index.d.mts CHANGED
@@ -45,7 +45,9 @@ declare class ContestOptions {
45
45
  submissionHasLanguageField: boolean;
46
46
  submissionEnableActionField: boolean;
47
47
  submissionHasReactionField: boolean;
48
+ submissionHasExternalUrlField: boolean;
48
49
  reactionVideoUrlTemplate?: string;
50
+ submissionExternalUrlTemplate?: string;
49
51
  teamPhotoTemplate?: Image;
50
52
  teamWebcamStreamUrlTemplate?: string;
51
53
  teamScreenStreamUrlTemplate?: string;
@@ -123,6 +125,7 @@ declare class Submission {
123
125
  time?: number;
124
126
  language?: string;
125
127
  reaction?: SubmissionReaction;
128
+ externalUrl?: string;
126
129
  status: SubmissionStatus;
127
130
  isIgnore: boolean;
128
131
  isSolved: boolean;
package/dist/index.d.ts CHANGED
@@ -45,7 +45,9 @@ declare class ContestOptions {
45
45
  submissionHasLanguageField: boolean;
46
46
  submissionEnableActionField: boolean;
47
47
  submissionHasReactionField: boolean;
48
+ submissionHasExternalUrlField: boolean;
48
49
  reactionVideoUrlTemplate?: string;
50
+ submissionExternalUrlTemplate?: string;
49
51
  teamPhotoTemplate?: Image;
50
52
  teamWebcamStreamUrlTemplate?: string;
51
53
  teamScreenStreamUrlTemplate?: string;
@@ -123,6 +125,7 @@ declare class Submission {
123
125
  time?: number;
124
126
  language?: string;
125
127
  reaction?: SubmissionReaction;
128
+ externalUrl?: string;
126
129
  status: SubmissionStatus;
127
130
  isIgnore: boolean;
128
131
  isSolved: boolean;
package/dist/index.mjs CHANGED
@@ -463,6 +463,7 @@ class Submission {
463
463
  time;
464
464
  language;
465
465
  reaction;
466
+ externalUrl;
466
467
  status = SubmissionStatus.UNKNOWN;
467
468
  isIgnore = false;
468
469
  isSolved = false;
@@ -569,6 +570,9 @@ function createSubmission(submissionJSON, contest) {
569
570
  url: contest.options.reactionVideoUrlTemplate.replace(/\$\{submission_id\}/, s.id)
570
571
  };
571
572
  }
573
+ if (contest?.options.submissionExternalUrlTemplate) {
574
+ s.externalUrl = contest.options.submissionExternalUrlTemplate.replace(/\$\{submission_id\}/, s.id);
575
+ }
572
576
  return s;
573
577
  }
574
578
  function createSubmissions(submissionsJSON, contest) {
@@ -1024,7 +1028,9 @@ class ContestOptions {
1024
1028
  submissionHasLanguageField;
1025
1029
  submissionEnableActionField;
1026
1030
  submissionHasReactionField;
1031
+ submissionHasExternalUrlField;
1027
1032
  reactionVideoUrlTemplate;
1033
+ submissionExternalUrlTemplate;
1028
1034
  teamPhotoTemplate;
1029
1035
  teamWebcamStreamUrlTemplate;
1030
1036
  teamScreenStreamUrlTemplate;
@@ -1035,6 +1041,7 @@ class ContestOptions {
1035
1041
  this.submissionHasLanguageField = false;
1036
1042
  this.submissionEnableActionField = false;
1037
1043
  this.submissionHasReactionField = false;
1044
+ this.submissionHasExternalUrlField = false;
1038
1045
  }
1039
1046
  }
1040
1047
  function createContestOptions(contestOptionsJSON = {}) {
@@ -1049,7 +1056,11 @@ function createContestOptions(contestOptionsJSON = {}) {
1049
1056
  if (j.has_reaction_videos) {
1050
1057
  o.submissionHasReactionField = true;
1051
1058
  }
1052
- o.submissionEnableActionField = o.submissionHasReactionField;
1059
+ if (j.submission_external_url_template) {
1060
+ o.submissionHasExternalUrlField = true;
1061
+ o.submissionExternalUrlTemplate = j.submission_external_url_template;
1062
+ }
1063
+ o.submissionEnableActionField = o.submissionHasReactionField || o.submissionHasExternalUrlField;
1053
1064
  o.reactionVideoUrlTemplate = j.reaction_video_url_template;
1054
1065
  o.teamPhotoTemplate = j.team_photo_url_template;
1055
1066
  o.teamWebcamStreamUrlTemplate = j.team_webcam_stream_url_template;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xcpcio/core",
3
3
  "type": "module",
4
- "version": "0.77.4",
4
+ "version": "0.78.0",
5
5
  "description": "The core library for XCPCIO",
6
6
  "author": "Dup4 <hi@dup4.com>",
7
7
  "license": "MIT",
@@ -42,7 +42,7 @@
42
42
  "papaparse": "^5.5.3",
43
43
  "string-width": "^8.1.0",
44
44
  "xlsx-js-style": "^1.2.0",
45
- "@xcpcio/types": "0.77.4"
45
+ "@xcpcio/types": "0.78.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@babel/types": "^7.28.6",