@xcpcio/core 0.46.3 → 0.47.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
@@ -779,6 +779,83 @@ class RatingCalculator {
779
779
  }
780
780
  }
781
781
 
782
+ var RatingLevel = /* @__PURE__ */ ((RatingLevel2) => {
783
+ RatingLevel2["NEWBIE"] = "NEWBIE";
784
+ RatingLevel2["PUPIL"] = "PUPIL";
785
+ RatingLevel2["SPECIALIST"] = "SPECIALIST";
786
+ RatingLevel2["EXPERT"] = "EXPERT";
787
+ RatingLevel2["CANDIDATE_MASTER"] = "CANDIDATE_MASTER";
788
+ RatingLevel2["MASTER"] = "MASTER";
789
+ RatingLevel2["INTERNATIONAL_MASTER"] = "INTERNATIONAL_MASTER";
790
+ RatingLevel2["GRANDMASTER"] = "GRANDMASTER";
791
+ RatingLevel2["INTERNATIONAL_GRANDMASTER"] = "INTERNATIONAL_GRANDMASTER";
792
+ RatingLevel2["LEGENDARY_GRANDMASTER"] = "LEGENDARY_GRANDMASTER";
793
+ return RatingLevel2;
794
+ })(RatingLevel || {});
795
+ const RatingLevelToString = {
796
+ ["NEWBIE" /* NEWBIE */]: "Newbie",
797
+ ["PUPIL" /* PUPIL */]: "Pupil",
798
+ ["SPECIALIST" /* SPECIALIST */]: "Specialist",
799
+ ["EXPERT" /* EXPERT */]: "Expert",
800
+ ["CANDIDATE_MASTER" /* CANDIDATE_MASTER */]: "Candidate Master",
801
+ ["MASTER" /* MASTER */]: "Master",
802
+ ["INTERNATIONAL_MASTER" /* INTERNATIONAL_MASTER */]: "International Master",
803
+ ["GRANDMASTER" /* GRANDMASTER */]: "Grandmaster",
804
+ ["INTERNATIONAL_GRANDMASTER" /* INTERNATIONAL_GRANDMASTER */]: "International Grandmaster",
805
+ ["LEGENDARY_GRANDMASTER" /* LEGENDARY_GRANDMASTER */]: "Legendary Grandmaster"
806
+ };
807
+ class RatingUtility {
808
+ static getRatingLevel(rating) {
809
+ if (rating >= 3e3) {
810
+ return "LEGENDARY_GRANDMASTER" /* LEGENDARY_GRANDMASTER */;
811
+ } else if (rating >= 2600) {
812
+ return "INTERNATIONAL_GRANDMASTER" /* INTERNATIONAL_GRANDMASTER */;
813
+ } else if (rating >= 2400) {
814
+ return "GRANDMASTER" /* GRANDMASTER */;
815
+ } else if (rating >= 2300) {
816
+ return "INTERNATIONAL_MASTER" /* INTERNATIONAL_MASTER */;
817
+ } else if (rating >= 2100) {
818
+ return "MASTER" /* MASTER */;
819
+ } else if (rating >= 1900) {
820
+ return "CANDIDATE_MASTER" /* CANDIDATE_MASTER */;
821
+ } else if (rating >= 1600) {
822
+ return "EXPERT" /* EXPERT */;
823
+ } else if (rating >= 1400) {
824
+ return "SPECIALIST" /* SPECIALIST */;
825
+ } else if (rating >= 1200) {
826
+ return "PUPIL" /* PUPIL */;
827
+ }
828
+ return "NEWBIE" /* NEWBIE */;
829
+ }
830
+ static getRatingLevelClass(ratingLevel) {
831
+ if (typeof ratingLevel === "number") {
832
+ return this.getRatingLevelClass(this.getRatingLevel(ratingLevel));
833
+ }
834
+ switch (ratingLevel) {
835
+ case "NEWBIE" /* NEWBIE */:
836
+ return "user-gray";
837
+ case "PUPIL" /* PUPIL */:
838
+ return "user-green";
839
+ case "SPECIALIST" /* SPECIALIST */:
840
+ return "user-cyan";
841
+ case "EXPERT" /* EXPERT */:
842
+ return "user-blue";
843
+ case "CANDIDATE_MASTER" /* CANDIDATE_MASTER */:
844
+ return "user-violet";
845
+ case "MASTER" /* MASTER */:
846
+ return "user-orange";
847
+ case "INTERNATIONAL_MASTER" /* INTERNATIONAL_MASTER */:
848
+ return "user-orange";
849
+ case "GRANDMASTER" /* GRANDMASTER */:
850
+ return "user-red";
851
+ case "INTERNATIONAL_GRANDMASTER" /* INTERNATIONAL_GRANDMASTER */:
852
+ return "user-red";
853
+ case "LEGENDARY_GRANDMASTER" /* LEGENDARY_GRANDMASTER */:
854
+ return "user-legendary";
855
+ }
856
+ }
857
+ }
858
+
782
859
  class Rating {
783
860
  constructor() {
784
861
  this.id = "";
@@ -2339,7 +2416,10 @@ exports.RankStatistics = RankStatistics;
2339
2416
  exports.Rating = Rating;
2340
2417
  exports.RatingCalculator = RatingCalculator;
2341
2418
  exports.RatingHistory = RatingHistory;
2419
+ exports.RatingLevel = RatingLevel;
2420
+ exports.RatingLevelToString = RatingLevelToString;
2342
2421
  exports.RatingUser = RatingUser;
2422
+ exports.RatingUtility = RatingUtility;
2343
2423
  exports.Resolver = Resolver;
2344
2424
  exports.Submission = Submission;
2345
2425
  exports.Team = Team;
package/dist/index.d.ts CHANGED
@@ -412,6 +412,26 @@ declare class RatingCalculator {
412
412
  private calculateInternal;
413
413
  }
414
414
 
415
+ declare enum RatingLevel {
416
+ NEWBIE = "NEWBIE",
417
+ PUPIL = "PUPIL",
418
+ SPECIALIST = "SPECIALIST",
419
+ EXPERT = "EXPERT",
420
+ CANDIDATE_MASTER = "CANDIDATE_MASTER",
421
+ MASTER = "MASTER",
422
+ INTERNATIONAL_MASTER = "INTERNATIONAL_MASTER",
423
+ GRANDMASTER = "GRANDMASTER",
424
+ INTERNATIONAL_GRANDMASTER = "INTERNATIONAL_GRANDMASTER",
425
+ LEGENDARY_GRANDMASTER = "LEGENDARY_GRANDMASTER"
426
+ }
427
+ declare const RatingLevelToString: {
428
+ [key in RatingLevel]: string;
429
+ };
430
+ declare class RatingUtility {
431
+ static getRatingLevel(rating: number): RatingLevel;
432
+ static getRatingLevelClass(ratingLevel: RatingLevel | number): string;
433
+ }
434
+
415
435
  declare class Rating {
416
436
  id: string;
417
437
  name: string;
@@ -473,4 +493,4 @@ declare function isRejected(status: SubmissionStatus): boolean;
473
493
  declare function isPending(status: SubmissionStatus): boolean;
474
494
  declare function isNotCalculatedPenaltyStatus(status: SubmissionStatus): boolean;
475
495
 
476
- export { Award, Awards, Balloon, Balloons, BattleOfGiants, CodeforcesGymGhostDATConverter, Contest, ContestIndex, ContestIndexConfig, ContestIndexList, ContestOptions, GeneralExcelConverter, Giants, GiantsType, ICPCStandingsCsvConverter, MedalType, Person, Persons, PlaceChartPointData, Problem, ProblemStatistics, Problems, Rank, RankOptions, RankStatistics, Ranks, Rating, RatingCalculator, RatingHistories, RatingHistory, RatingUser, RatingUserMap, RatingUsers, Resolver, SelectOptionItem, Submission, Submissions, Team, TeamProblemStatistics, Teams, calcDirt, createContest, createContestIndex, createContestIndexList, createDayJS, createPersons, createProblem, createProblems, createProblemsByProblemIds, createSubmission, createSubmissions, createTeam, createTeams, getImageSource, getTimeDiff, getTimestamp, getWhiteOrBlackColor, getWhiteOrBlackColorV1, isAccepted, isNotCalculatedPenaltyStatus, isPending, isRejected, isValidMedalType, stringToSubmissionStatus };
496
+ export { Award, Awards, Balloon, Balloons, BattleOfGiants, CodeforcesGymGhostDATConverter, Contest, ContestIndex, ContestIndexConfig, ContestIndexList, ContestOptions, GeneralExcelConverter, Giants, GiantsType, ICPCStandingsCsvConverter, MedalType, Person, Persons, PlaceChartPointData, Problem, ProblemStatistics, Problems, Rank, RankOptions, RankStatistics, Ranks, Rating, RatingCalculator, RatingHistories, RatingHistory, RatingLevel, RatingLevelToString, RatingUser, RatingUserMap, RatingUsers, RatingUtility, Resolver, SelectOptionItem, Submission, Submissions, Team, TeamProblemStatistics, Teams, calcDirt, createContest, createContestIndex, createContestIndexList, createDayJS, createPersons, createProblem, createProblems, createProblemsByProblemIds, createSubmission, createSubmissions, createTeam, createTeams, getImageSource, getTimeDiff, getTimestamp, getWhiteOrBlackColor, getWhiteOrBlackColorV1, isAccepted, isNotCalculatedPenaltyStatus, isPending, isRejected, isValidMedalType, stringToSubmissionStatus };
package/dist/index.mjs CHANGED
@@ -746,6 +746,83 @@ class RatingCalculator {
746
746
  }
747
747
  }
748
748
 
749
+ var RatingLevel = /* @__PURE__ */ ((RatingLevel2) => {
750
+ RatingLevel2["NEWBIE"] = "NEWBIE";
751
+ RatingLevel2["PUPIL"] = "PUPIL";
752
+ RatingLevel2["SPECIALIST"] = "SPECIALIST";
753
+ RatingLevel2["EXPERT"] = "EXPERT";
754
+ RatingLevel2["CANDIDATE_MASTER"] = "CANDIDATE_MASTER";
755
+ RatingLevel2["MASTER"] = "MASTER";
756
+ RatingLevel2["INTERNATIONAL_MASTER"] = "INTERNATIONAL_MASTER";
757
+ RatingLevel2["GRANDMASTER"] = "GRANDMASTER";
758
+ RatingLevel2["INTERNATIONAL_GRANDMASTER"] = "INTERNATIONAL_GRANDMASTER";
759
+ RatingLevel2["LEGENDARY_GRANDMASTER"] = "LEGENDARY_GRANDMASTER";
760
+ return RatingLevel2;
761
+ })(RatingLevel || {});
762
+ const RatingLevelToString = {
763
+ ["NEWBIE" /* NEWBIE */]: "Newbie",
764
+ ["PUPIL" /* PUPIL */]: "Pupil",
765
+ ["SPECIALIST" /* SPECIALIST */]: "Specialist",
766
+ ["EXPERT" /* EXPERT */]: "Expert",
767
+ ["CANDIDATE_MASTER" /* CANDIDATE_MASTER */]: "Candidate Master",
768
+ ["MASTER" /* MASTER */]: "Master",
769
+ ["INTERNATIONAL_MASTER" /* INTERNATIONAL_MASTER */]: "International Master",
770
+ ["GRANDMASTER" /* GRANDMASTER */]: "Grandmaster",
771
+ ["INTERNATIONAL_GRANDMASTER" /* INTERNATIONAL_GRANDMASTER */]: "International Grandmaster",
772
+ ["LEGENDARY_GRANDMASTER" /* LEGENDARY_GRANDMASTER */]: "Legendary Grandmaster"
773
+ };
774
+ class RatingUtility {
775
+ static getRatingLevel(rating) {
776
+ if (rating >= 3e3) {
777
+ return "LEGENDARY_GRANDMASTER" /* LEGENDARY_GRANDMASTER */;
778
+ } else if (rating >= 2600) {
779
+ return "INTERNATIONAL_GRANDMASTER" /* INTERNATIONAL_GRANDMASTER */;
780
+ } else if (rating >= 2400) {
781
+ return "GRANDMASTER" /* GRANDMASTER */;
782
+ } else if (rating >= 2300) {
783
+ return "INTERNATIONAL_MASTER" /* INTERNATIONAL_MASTER */;
784
+ } else if (rating >= 2100) {
785
+ return "MASTER" /* MASTER */;
786
+ } else if (rating >= 1900) {
787
+ return "CANDIDATE_MASTER" /* CANDIDATE_MASTER */;
788
+ } else if (rating >= 1600) {
789
+ return "EXPERT" /* EXPERT */;
790
+ } else if (rating >= 1400) {
791
+ return "SPECIALIST" /* SPECIALIST */;
792
+ } else if (rating >= 1200) {
793
+ return "PUPIL" /* PUPIL */;
794
+ }
795
+ return "NEWBIE" /* NEWBIE */;
796
+ }
797
+ static getRatingLevelClass(ratingLevel) {
798
+ if (typeof ratingLevel === "number") {
799
+ return this.getRatingLevelClass(this.getRatingLevel(ratingLevel));
800
+ }
801
+ switch (ratingLevel) {
802
+ case "NEWBIE" /* NEWBIE */:
803
+ return "user-gray";
804
+ case "PUPIL" /* PUPIL */:
805
+ return "user-green";
806
+ case "SPECIALIST" /* SPECIALIST */:
807
+ return "user-cyan";
808
+ case "EXPERT" /* EXPERT */:
809
+ return "user-blue";
810
+ case "CANDIDATE_MASTER" /* CANDIDATE_MASTER */:
811
+ return "user-violet";
812
+ case "MASTER" /* MASTER */:
813
+ return "user-orange";
814
+ case "INTERNATIONAL_MASTER" /* INTERNATIONAL_MASTER */:
815
+ return "user-orange";
816
+ case "GRANDMASTER" /* GRANDMASTER */:
817
+ return "user-red";
818
+ case "INTERNATIONAL_GRANDMASTER" /* INTERNATIONAL_GRANDMASTER */:
819
+ return "user-red";
820
+ case "LEGENDARY_GRANDMASTER" /* LEGENDARY_GRANDMASTER */:
821
+ return "user-legendary";
822
+ }
823
+ }
824
+ }
825
+
749
826
  class Rating {
750
827
  constructor() {
751
828
  this.id = "";
@@ -2282,4 +2359,4 @@ class Resolver extends Rank {
2282
2359
  }
2283
2360
  }
2284
2361
 
2285
- export { Award, Balloon, BattleOfGiants, CodeforcesGymGhostDATConverter, Contest, ContestIndex, ContestIndexConfig, ContestOptions, GeneralExcelConverter, Giants, GiantsType, ICPCStandingsCsvConverter, MedalType, Person, PlaceChartPointData, Problem, ProblemStatistics, Rank, RankOptions, RankStatistics, Rating, RatingCalculator, RatingHistory, RatingUser, Resolver, Submission, Team, TeamProblemStatistics, calcDirt, createContest, createContestIndex, createContestIndexList, createDayJS, createPersons, createProblem, createProblems, createProblemsByProblemIds, createSubmission, createSubmissions, createTeam, createTeams, getImageSource, getTimeDiff, getTimestamp, getWhiteOrBlackColor, getWhiteOrBlackColorV1, isAccepted, isNotCalculatedPenaltyStatus, isPending, isRejected, isValidMedalType, stringToSubmissionStatus };
2362
+ export { Award, Balloon, BattleOfGiants, CodeforcesGymGhostDATConverter, Contest, ContestIndex, ContestIndexConfig, ContestOptions, GeneralExcelConverter, Giants, GiantsType, ICPCStandingsCsvConverter, MedalType, Person, PlaceChartPointData, Problem, ProblemStatistics, Rank, RankOptions, RankStatistics, Rating, RatingCalculator, RatingHistory, RatingLevel, RatingLevelToString, RatingUser, RatingUtility, Resolver, Submission, Team, TeamProblemStatistics, calcDirt, createContest, createContestIndex, createContestIndexList, createDayJS, createPersons, createProblem, createProblems, createProblemsByProblemIds, createSubmission, createSubmissions, createTeam, createTeams, getImageSource, getTimeDiff, getTimestamp, getWhiteOrBlackColor, getWhiteOrBlackColorV1, isAccepted, isNotCalculatedPenaltyStatus, isPending, isRejected, isValidMedalType, stringToSubmissionStatus };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xcpcio/core",
3
- "version": "0.46.3",
3
+ "version": "0.47.0",
4
4
  "description": "XCPCIO Core",
5
5
  "author": "Dup4 <lyuzhi.pan@gmail.com>",
6
6
  "license": "MIT",
@@ -49,7 +49,7 @@
49
49
  "papaparse": "^5.4.1",
50
50
  "string-width": "^6.1.0",
51
51
  "xlsx-js-style": "^1.2.0",
52
- "@xcpcio/types": "0.46.3"
52
+ "@xcpcio/types": "0.47.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@babel/types": "^7.22.4",
@@ -1,4 +1,5 @@
1
1
  export * from "./rating-calculator";
2
2
  export * from "./rating-history";
3
3
  export * from "./rating-user";
4
+ export * from "./rating-utility";
4
5
  export * from "./rating";
@@ -0,0 +1,80 @@
1
+ export enum RatingLevel {
2
+ NEWBIE = "NEWBIE",
3
+ PUPIL = "PUPIL",
4
+ SPECIALIST = "SPECIALIST",
5
+ EXPERT = "EXPERT",
6
+ CANDIDATE_MASTER = "CANDIDATE_MASTER",
7
+ MASTER = "MASTER",
8
+ INTERNATIONAL_MASTER = "INTERNATIONAL_MASTER",
9
+ GRANDMASTER = "GRANDMASTER",
10
+ INTERNATIONAL_GRANDMASTER = "INTERNATIONAL_GRANDMASTER",
11
+ LEGENDARY_GRANDMASTER = "LEGENDARY_GRANDMASTER",
12
+ }
13
+
14
+ export const RatingLevelToString: { [key in RatingLevel]: string } = {
15
+ [RatingLevel.NEWBIE]: "Newbie",
16
+ [RatingLevel.PUPIL]: "Pupil",
17
+ [RatingLevel.SPECIALIST]: "Specialist",
18
+ [RatingLevel.EXPERT]: "Expert",
19
+ [RatingLevel.CANDIDATE_MASTER]: "Candidate Master",
20
+ [RatingLevel.MASTER]: "Master",
21
+ [RatingLevel.INTERNATIONAL_MASTER]: "International Master",
22
+ [RatingLevel.GRANDMASTER]: "Grandmaster",
23
+ [RatingLevel.INTERNATIONAL_GRANDMASTER]: "International Grandmaster",
24
+ [RatingLevel.LEGENDARY_GRANDMASTER]: "Legendary Grandmaster",
25
+ };
26
+
27
+ export class RatingUtility {
28
+ static getRatingLevel(rating: number): RatingLevel {
29
+ if (rating >= 3000) {
30
+ return RatingLevel.LEGENDARY_GRANDMASTER;
31
+ } else if (rating >= 2600) {
32
+ return RatingLevel.INTERNATIONAL_GRANDMASTER;
33
+ } else if (rating >= 2400) {
34
+ return RatingLevel.GRANDMASTER;
35
+ } else if (rating >= 2300) {
36
+ return RatingLevel.INTERNATIONAL_MASTER;
37
+ } else if (rating >= 2100) {
38
+ return RatingLevel.MASTER;
39
+ } else if (rating >= 1900) {
40
+ return RatingLevel.CANDIDATE_MASTER;
41
+ } else if (rating >= 1600) {
42
+ return RatingLevel.EXPERT;
43
+ } else if (rating >= 1400) {
44
+ return RatingLevel.SPECIALIST;
45
+ } else if (rating >= 1200) {
46
+ return RatingLevel.PUPIL;
47
+ }
48
+
49
+ return RatingLevel.NEWBIE;
50
+ }
51
+
52
+ static getRatingLevelClass(ratingLevel: RatingLevel | number): string {
53
+ if (typeof ratingLevel === "number") {
54
+ return this.getRatingLevelClass(this.getRatingLevel(ratingLevel));
55
+ }
56
+
57
+ switch (ratingLevel) {
58
+ case RatingLevel.NEWBIE:
59
+ return "user-gray";
60
+ case RatingLevel.PUPIL:
61
+ return "user-green";
62
+ case RatingLevel.SPECIALIST:
63
+ return "user-cyan";
64
+ case RatingLevel.EXPERT:
65
+ return "user-blue";
66
+ case RatingLevel.CANDIDATE_MASTER:
67
+ return "user-violet";
68
+ case RatingLevel.MASTER:
69
+ return "user-orange";
70
+ case RatingLevel.INTERNATIONAL_MASTER:
71
+ return "user-orange";
72
+ case RatingLevel.GRANDMASTER:
73
+ return "user-red";
74
+ case RatingLevel.INTERNATIONAL_GRANDMASTER:
75
+ return "user-red";
76
+ case RatingLevel.LEGENDARY_GRANDMASTER:
77
+ return "user-legendary";
78
+ }
79
+ }
80
+ }