maidraw 0.1.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.
Files changed (103) hide show
  1. package/.prettierrc.json +6 -0
  2. package/LICENSE +21 -0
  3. package/assets/fonts/comfortaa/Comfortaa-Bold.ttf +0 -0
  4. package/assets/fonts/comfortaa/Comfortaa-Regular.ttf +0 -0
  5. package/assets/fonts/comfortaa/OFL.txt +93 -0
  6. package/assets/fonts/gen-jyuu-gothic/GenJyuuGothic-Bold.ttf +0 -0
  7. package/assets/fonts/kosugi-maru/KosugiMaru-Regular.ttf +0 -0
  8. package/assets/fonts/kosugi-maru/LICENSE.txt +202 -0
  9. package/assets/themes/cn/2024Landscape/manifest.json +144 -0
  10. package/assets/themes/cn/2024Portrait/manifest.json +144 -0
  11. package/assets/themes/common/buddies/achievement/a.png +0 -0
  12. package/assets/themes/common/buddies/achievement/aa.png +0 -0
  13. package/assets/themes/common/buddies/achievement/aaa.png +0 -0
  14. package/assets/themes/common/buddies/achievement/b.png +0 -0
  15. package/assets/themes/common/buddies/achievement/bb.png +0 -0
  16. package/assets/themes/common/buddies/achievement/bbb.png +0 -0
  17. package/assets/themes/common/buddies/achievement/c.png +0 -0
  18. package/assets/themes/common/buddies/achievement/d.png +0 -0
  19. package/assets/themes/common/buddies/achievement/s.png +0 -0
  20. package/assets/themes/common/buddies/achievement/sp.png +0 -0
  21. package/assets/themes/common/buddies/achievement/ss.png +0 -0
  22. package/assets/themes/common/buddies/achievement/ssp.png +0 -0
  23. package/assets/themes/common/buddies/achievement/sss.png +0 -0
  24. package/assets/themes/common/buddies/achievement/sssp.png +0 -0
  25. package/assets/themes/common/buddies/cn/logo.png +0 -0
  26. package/assets/themes/common/buddies/jp/background.png +0 -0
  27. package/assets/themes/common/buddies/jp/chara.png +0 -0
  28. package/assets/themes/common/buddies/jp/laundry.png +0 -0
  29. package/assets/themes/common/buddies/jp/logo.png +0 -0
  30. package/assets/themes/common/buddies/plus/chara.png +0 -0
  31. package/assets/themes/common/buddies/plus/laundry.png +0 -0
  32. package/assets/themes/common/buddies/plus/logo.png +0 -0
  33. package/assets/themes/common/versionless/dxRating/cn/blue.png +0 -0
  34. package/assets/themes/common/versionless/dxRating/cn/bronze.png +0 -0
  35. package/assets/themes/common/versionless/dxRating/cn/gold.png +0 -0
  36. package/assets/themes/common/versionless/dxRating/cn/green.png +0 -0
  37. package/assets/themes/common/versionless/dxRating/cn/platinum.png +0 -0
  38. package/assets/themes/common/versionless/dxRating/cn/purple.png +0 -0
  39. package/assets/themes/common/versionless/dxRating/cn/rainbow.png +0 -0
  40. package/assets/themes/common/versionless/dxRating/cn/red.png +0 -0
  41. package/assets/themes/common/versionless/dxRating/cn/silver.png +0 -0
  42. package/assets/themes/common/versionless/dxRating/cn/white.png +0 -0
  43. package/assets/themes/common/versionless/dxRating/cn/yellow.png +0 -0
  44. package/assets/themes/common/versionless/dxRating/jp/blue.png +0 -0
  45. package/assets/themes/common/versionless/dxRating/jp/bronze.png +0 -0
  46. package/assets/themes/common/versionless/dxRating/jp/gold.png +0 -0
  47. package/assets/themes/common/versionless/dxRating/jp/green.png +0 -0
  48. package/assets/themes/common/versionless/dxRating/jp/platinum.png +0 -0
  49. package/assets/themes/common/versionless/dxRating/jp/purple.png +0 -0
  50. package/assets/themes/common/versionless/dxRating/jp/rainbow.png +0 -0
  51. package/assets/themes/common/versionless/dxRating/jp/red.png +0 -0
  52. package/assets/themes/common/versionless/dxRating/jp/silver.png +0 -0
  53. package/assets/themes/common/versionless/dxRating/jp/white.png +0 -0
  54. package/assets/themes/common/versionless/dxRating/jp/yellow.png +0 -0
  55. package/assets/themes/common/versionless/dxRating/numberMap.png +0 -0
  56. package/assets/themes/common/versionless/icon.png +0 -0
  57. package/assets/themes/common/versionless/milestone/ap.png +0 -0
  58. package/assets/themes/common/versionless/milestone/app.png +0 -0
  59. package/assets/themes/common/versionless/milestone/fc.png +0 -0
  60. package/assets/themes/common/versionless/milestone/fcp.png +0 -0
  61. package/assets/themes/common/versionless/milestone/fdx.png +0 -0
  62. package/assets/themes/common/versionless/milestone/fdxp.png +0 -0
  63. package/assets/themes/common/versionless/milestone/fs.png +0 -0
  64. package/assets/themes/common/versionless/milestone/fsp.png +0 -0
  65. package/assets/themes/common/versionless/milestone/none.png +0 -0
  66. package/assets/themes/common/versionless/milestone/sync.png +0 -0
  67. package/assets/themes/common/versionless/mode/cn/dx.png +0 -0
  68. package/assets/themes/common/versionless/mode/cn/standard.png +0 -0
  69. package/assets/themes/common/versionless/mode/jp/dx.png +0 -0
  70. package/assets/themes/common/versionless/mode/jp/standard.png +0 -0
  71. package/assets/themes/common/versionless/nameplate.png +0 -0
  72. package/assets/themes/jp/buddiesLandscape/manifest.json +144 -0
  73. package/assets/themes/jp/buddiesPlusLandscape/manifest.json +144 -0
  74. package/assets/themes/jp/buddiesPlusPortrait/manifest.json +144 -0
  75. package/assets/themes/jp/buddiesPortrait/manifest.json +144 -0
  76. package/dist/index.d.ts +33 -0
  77. package/dist/index.js +901 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/lib/divingFish/index.d.ts +50 -0
  80. package/dist/lib/divingFish/index.js +174 -0
  81. package/dist/lib/divingFish/index.js.map +1 -0
  82. package/dist/lib/index.d.ts +13 -0
  83. package/dist/lib/index.js +9 -0
  84. package/dist/lib/index.js.map +1 -0
  85. package/dist/lib/kamaiTachi/index.d.ts +107 -0
  86. package/dist/lib/kamaiTachi/index.js +187 -0
  87. package/dist/lib/kamaiTachi/index.js.map +1 -0
  88. package/dist/lib/lxns/index.d.ts +210 -0
  89. package/dist/lib/lxns/index.js +287 -0
  90. package/dist/lib/lxns/index.js.map +1 -0
  91. package/dist/type.d.ts +165 -0
  92. package/dist/type.js +47 -0
  93. package/dist/type.js.map +1 -0
  94. package/package.json +49 -0
  95. package/test/cn-2024-landscape.webp +0 -0
  96. package/test/cn-2024-portrait.webp +0 -0
  97. package/test/fetchConvert.js +65 -0
  98. package/test/jp-buddies-landscape.webp +0 -0
  99. package/test/jp-buddies-portrait.webp +0 -0
  100. package/test/jp-buddiesplus-landscape.webp +0 -0
  101. package/test/jp-buddiesplus-portrait.webp +0 -0
  102. package/test/testDraw.js +741 -0
  103. package/tsconfig.json +33 -0
@@ -0,0 +1,210 @@
1
+ import { IChart, IScore } from "../../type";
2
+ import ScoreTrackerAdapter from "..";
3
+ import { MaiDraw } from "../../index";
4
+ export declare class LXNS implements ScoreTrackerAdapter {
5
+ private maiDraw;
6
+ private auth;
7
+ private baseURL;
8
+ private cache;
9
+ private axios;
10
+ constructor(maiDraw: MaiDraw, auth: string, baseURL?: string);
11
+ private get;
12
+ private post;
13
+ getPlayerBest50(username: string): Promise<{
14
+ new: IScore[];
15
+ old: IScore[];
16
+ } | null>;
17
+ getPlayerInfo(username: string): Promise<{
18
+ name: string;
19
+ rating: number;
20
+ } | null>;
21
+ getPlayerRawBest50(friendCode: string): Promise<LXNS.IAPIResponse<LXNS.IBest50Response> | undefined>;
22
+ getPlayerRawProfile(friendCode: string): Promise<LXNS.IAPIResponse<LXNS.IPlayer> | undefined>;
23
+ getSong(songId: number): Promise<LXNS.ISong>;
24
+ getSongList(): Promise<LXNS.ISongListResponse>;
25
+ getMaiDrawChartList(): Promise<IChart[]>;
26
+ private toMaiDrawScore;
27
+ }
28
+ export declare namespace LXNS {
29
+ /**
30
+ * Utage charts uses `ELevelIndex.BASIC`,
31
+ */
32
+ enum ELevelIndex {
33
+ BASIC = 0,
34
+ ADVANCED = 1,
35
+ EXPERT = 2,
36
+ MASTER = 3,
37
+ REMASTER = 4
38
+ }
39
+ enum EFCTypes {
40
+ FULL_COMBO = "fc",
41
+ FULL_COMBO_PLUS = "fcp",
42
+ ALL_PERFECT = "ap",
43
+ ALL_PERFECT_PLUS = "app"
44
+ }
45
+ enum EFSTypes {
46
+ SYNC = "sync",
47
+ FULL_SYNC = "fs",
48
+ FULL_SYNC_PLUS = "fsp",
49
+ FULL_SYNC_DX = "fdx",
50
+ FULL_SYNC_DX_PLUS = "fdxp"
51
+ }
52
+ enum ERateTypes {
53
+ D = "d",
54
+ C = "c",
55
+ B = "b",
56
+ BB = "bb",
57
+ BBB = "bbb",
58
+ A = "a",
59
+ AA = "aa",
60
+ AAA = "aaa",
61
+ S = "s",
62
+ SP = "sp",
63
+ SS = "ss",
64
+ SSP = "ssp",
65
+ SSS = "sss",
66
+ SSSP = "sssp"
67
+ }
68
+ enum ESongTypes {
69
+ UTAGE = "utage",
70
+ STANDARD = "standard",
71
+ DX = "dx"
72
+ }
73
+ interface ISimpleScore {
74
+ id: number;
75
+ song_name: string;
76
+ /**
77
+ * Chart difficulty string.
78
+ * `"7", "11+", "13", "14+", "15"`
79
+ */
80
+ level: string;
81
+ level_index: ELevelIndex;
82
+ fc: EFCTypes | null;
83
+ fs: EFSTypes | null;
84
+ rate: ERateTypes;
85
+ type: ESongTypes;
86
+ }
87
+ interface IScore extends ISimpleScore {
88
+ achievements: number;
89
+ dx_score: number;
90
+ dx_rating: number;
91
+ play_time: string;
92
+ upload_time: string;
93
+ }
94
+ interface ISong {
95
+ id: number;
96
+ title: string;
97
+ artist: string;
98
+ genre: string;
99
+ bpm: number;
100
+ version: number;
101
+ rights: string;
102
+ disabled: boolean;
103
+ difficulties: {
104
+ standard: ISongDifficultyNormal[];
105
+ dx: ISongDifficultyNormal[];
106
+ utage?: (ISongDifficultyUtageNormal | ISongDifficultyUtageBuddy)[];
107
+ };
108
+ }
109
+ interface ISongDifficulty {
110
+ type: ESongTypes;
111
+ difficulty: ELevelIndex;
112
+ level: string;
113
+ level_value: number;
114
+ note_designer: string;
115
+ version: number;
116
+ notes?: INotes | IBuddyNotes;
117
+ }
118
+ interface ISongDifficultyNormal extends ISongDifficulty {
119
+ type: ESongTypes.STANDARD | ESongTypes.DX;
120
+ notes?: INotes;
121
+ }
122
+ interface ISongDifficultyUtage extends ISongDifficulty {
123
+ type: ESongTypes.UTAGE;
124
+ kanji: string;
125
+ description: string;
126
+ }
127
+ interface ISongDifficultyUtageNormal extends ISongDifficultyUtage {
128
+ is_buddy: false;
129
+ notes?: INotes;
130
+ }
131
+ interface ISongDifficultyUtageBuddy extends ISongDifficultyUtage {
132
+ is_buddy: true;
133
+ notes?: IBuddyNotes;
134
+ }
135
+ interface INotes {
136
+ total: number;
137
+ tap: number;
138
+ hold: number;
139
+ slide: number;
140
+ touch: number;
141
+ break: number;
142
+ }
143
+ interface IBuddyNotes {
144
+ left: INotes;
145
+ right: INotes;
146
+ }
147
+ interface IPlayer {
148
+ name: string;
149
+ rating: number;
150
+ friend_code: number;
151
+ trophy: any;
152
+ trophy_name: string;
153
+ course_rank: string;
154
+ class_rank: string;
155
+ star: number;
156
+ icon: any;
157
+ name_plate: any;
158
+ frame: any;
159
+ upload_time: any;
160
+ }
161
+ interface IBest50Response {
162
+ /**
163
+ * Old versions total rating.
164
+ */
165
+ standard_total: number;
166
+ /**
167
+ * New version total rating.
168
+ */
169
+ dx_total: number;
170
+ /**
171
+ * Old versions top 35 scores.
172
+ */
173
+ standard: IScore[];
174
+ /**
175
+ * New version top 15 scores.
176
+ */
177
+ dx: IScore[];
178
+ }
179
+ interface IGenre {
180
+ id: number;
181
+ /**
182
+ * Chinese name of the genre.
183
+ */
184
+ title: string;
185
+ /**
186
+ * Japanese name of the genre.
187
+ */
188
+ genre: string;
189
+ }
190
+ /**
191
+ * All versions are Chinese.
192
+ * Versions before Finale is the same as the Japanese version.
193
+ */
194
+ interface IVersion {
195
+ id: 0;
196
+ title: string;
197
+ version: number;
198
+ }
199
+ interface ISongListResponse {
200
+ songs: ISong[];
201
+ genres: IGenre[];
202
+ versions: IVersion[];
203
+ }
204
+ interface IAPIResponse<T extends any> {
205
+ success: boolean;
206
+ code: number;
207
+ message: string;
208
+ data: T;
209
+ }
210
+ }
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LXNS = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const memory_cache_1 = require("memory-cache");
9
+ const type_1 = require("../../type");
10
+ class LXNS {
11
+ maiDraw;
12
+ auth;
13
+ baseURL;
14
+ cache = new memory_cache_1.Cache();
15
+ axios;
16
+ constructor(maiDraw, auth, baseURL = "https://maimai.lxns.net/api/v0/maimai") {
17
+ this.maiDraw = maiDraw;
18
+ this.auth = auth;
19
+ this.baseURL = baseURL;
20
+ this.maiDraw = maiDraw;
21
+ this.auth = auth;
22
+ this.axios = axios_1.default.create({
23
+ baseURL: this.baseURL,
24
+ headers: {
25
+ Authorization: this.auth,
26
+ },
27
+ });
28
+ }
29
+ async get(endpoint, data) {
30
+ return await this.axios
31
+ .get(endpoint, { params: data })
32
+ .then((r) => {
33
+ console.log(r.data);
34
+ return r.data;
35
+ })
36
+ .catch((e) => {
37
+ e.response?.data
38
+ ? console.log(e.response?.data)
39
+ : console.log(e);
40
+ return e.response?.data;
41
+ });
42
+ }
43
+ async post(endpoint, data) {
44
+ return await this.axios
45
+ .post(endpoint, data)
46
+ .then((r) => r.data)
47
+ .catch((e) => e.response?.data);
48
+ }
49
+ async getPlayerBest50(username) {
50
+ const b50 = await this.getPlayerRawBest50(username);
51
+ if (!b50?.data)
52
+ return null;
53
+ let chartList;
54
+ if (this.maiDraw.hasLocalDatabase()) {
55
+ chartList = [...b50.data.dx, ...b50.data.standard]
56
+ .map((chart) => {
57
+ return this.maiDraw.getLocalChart(chart.id +
58
+ (chart.type == LXNS.ESongTypes.DX ? 10000 : 0), chart.level_index);
59
+ })
60
+ .filter((v) => v !== null);
61
+ }
62
+ else {
63
+ chartList = await this.getMaiDrawChartList();
64
+ }
65
+ return {
66
+ new: this.toMaiDrawScore(b50.data.dx, chartList),
67
+ old: this.toMaiDrawScore(b50.data.standard, chartList),
68
+ };
69
+ }
70
+ async getPlayerInfo(username) {
71
+ const profile = await this.getPlayerRawProfile(username);
72
+ if (!profile?.data)
73
+ return null;
74
+ return {
75
+ name: profile.data.name,
76
+ rating: profile.data.rating,
77
+ };
78
+ }
79
+ async getPlayerRawBest50(friendCode) {
80
+ return await this.get(`/player/${friendCode}/bests`);
81
+ }
82
+ async getPlayerRawProfile(friendCode) {
83
+ return await this.get(`/player/${friendCode}`);
84
+ }
85
+ async getSong(songId) {
86
+ const songList = await this.getSongList();
87
+ return songList.songs.filter((song) => song.id === songId)[0];
88
+ }
89
+ async getSongList() {
90
+ const cached = this.cache.get("lxns-songList");
91
+ if (cached)
92
+ return cached;
93
+ const res = (await this.get(`/song/list`, { notes: true }).catch((e) => {
94
+ return {
95
+ songs: [],
96
+ genres: [],
97
+ versions: [],
98
+ };
99
+ }));
100
+ this.cache.put("lxns-songList", res, 1000 * 60 * 60);
101
+ return res;
102
+ }
103
+ async getMaiDrawChartList() {
104
+ const songList = await this.getSongList();
105
+ const std = songList.songs.flatMap((song) => {
106
+ return song.difficulties.standard.map((chart) => {
107
+ return {
108
+ id: song.id,
109
+ name: song.title,
110
+ level: chart.level_value,
111
+ difficulty: chart.level_value,
112
+ maxDxScore: (chart.notes?.total ?? 0) * 3,
113
+ };
114
+ });
115
+ });
116
+ const dx = songList.songs.flatMap((song) => {
117
+ return song.difficulties.dx.map((chart) => {
118
+ return {
119
+ id: song.id + 100000,
120
+ name: song.title,
121
+ level: chart.level_value,
122
+ difficulty: chart.level_value,
123
+ maxDxScore: (chart.notes?.total ?? 0) * 3,
124
+ };
125
+ });
126
+ });
127
+ const utage = songList.songs
128
+ .flatMap((song) => {
129
+ return song.difficulties.utage?.map((chart) => {
130
+ if (chart.is_buddy) {
131
+ return {
132
+ id: song.id,
133
+ name: song.title,
134
+ level: chart.level_value,
135
+ difficulty: chart.level_value,
136
+ maxDxScore: ((chart.notes?.left.total ?? 0) +
137
+ (chart.notes?.right.total ?? 0)) *
138
+ 3,
139
+ };
140
+ }
141
+ else {
142
+ return {
143
+ id: song.id + 100000,
144
+ name: song.title,
145
+ level: chart.level_value,
146
+ difficulty: chart.level_value,
147
+ maxDxScore: (chart.notes?.total ?? 0) * 3,
148
+ };
149
+ }
150
+ });
151
+ })
152
+ .filter((v) => v !== undefined);
153
+ return [...std, ...dx, ...utage];
154
+ }
155
+ toMaiDrawScore(scores, chartList) {
156
+ return scores
157
+ .map((chart) => {
158
+ const chartDetail = chartList.find((v) => v.id ===
159
+ chart.id +
160
+ (chart.type == LXNS.ESongTypes.DX ? 10000 : 0));
161
+ if (!chartDetail)
162
+ return null;
163
+ return {
164
+ chart: chartDetail,
165
+ achievement: chart.achievements,
166
+ achievementRank: (() => {
167
+ switch (chart.rate) {
168
+ case LXNS.ERateTypes.C:
169
+ return type_1.EAchievementTypes.C;
170
+ case LXNS.ERateTypes.B:
171
+ return type_1.EAchievementTypes.B;
172
+ case LXNS.ERateTypes.BB:
173
+ return type_1.EAchievementTypes.BB;
174
+ case LXNS.ERateTypes.BBB:
175
+ return type_1.EAchievementTypes.BBB;
176
+ case LXNS.ERateTypes.A:
177
+ return type_1.EAchievementTypes.A;
178
+ case LXNS.ERateTypes.AA:
179
+ return type_1.EAchievementTypes.AA;
180
+ case LXNS.ERateTypes.AAA:
181
+ return type_1.EAchievementTypes.AAA;
182
+ case LXNS.ERateTypes.S:
183
+ return type_1.EAchievementTypes.S;
184
+ case LXNS.ERateTypes.SP:
185
+ return type_1.EAchievementTypes.SP;
186
+ case LXNS.ERateTypes.SS:
187
+ return type_1.EAchievementTypes.SS;
188
+ case LXNS.ERateTypes.SSP:
189
+ return type_1.EAchievementTypes.SSP;
190
+ case LXNS.ERateTypes.SSS:
191
+ return type_1.EAchievementTypes.SSS;
192
+ case LXNS.ERateTypes.SSSP:
193
+ return type_1.EAchievementTypes.SSSP;
194
+ default:
195
+ return type_1.EAchievementTypes.D;
196
+ }
197
+ })(),
198
+ combo: (() => {
199
+ switch (chart.fc) {
200
+ case LXNS.EFCTypes.FULL_COMBO:
201
+ return type_1.EComboTypes.FULL_COMBO;
202
+ case LXNS.EFCTypes.FULL_COMBO_PLUS:
203
+ return type_1.EComboTypes.FULL_COMBO_PLUS;
204
+ case LXNS.EFCTypes.ALL_PERFECT:
205
+ return type_1.EComboTypes.ALL_PERFECT;
206
+ case LXNS.EFCTypes.ALL_PERFECT_PLUS:
207
+ return type_1.EComboTypes.ALL_PERFECT_PLUS;
208
+ default:
209
+ return type_1.EComboTypes.NONE;
210
+ }
211
+ })(),
212
+ sync: (() => {
213
+ switch (chart.fs) {
214
+ case LXNS.EFSTypes.SYNC:
215
+ return type_1.ESyncTypes.SYNC_PLAY;
216
+ case LXNS.EFSTypes.FULL_SYNC:
217
+ return type_1.ESyncTypes.FULL_SYNC;
218
+ case LXNS.EFSTypes.FULL_SYNC_PLUS:
219
+ return type_1.ESyncTypes.FULL_SYNC_PLUS;
220
+ case LXNS.EFSTypes.FULL_SYNC_DX:
221
+ return type_1.ESyncTypes.FULL_SYNC_DX;
222
+ case LXNS.EFSTypes.FULL_SYNC_DX_PLUS:
223
+ return type_1.ESyncTypes.FULL_SYNC_DX_PLUS;
224
+ default:
225
+ return type_1.ESyncTypes.NONE;
226
+ }
227
+ })(),
228
+ dxRating: chart.dx_rating,
229
+ dxScore: chart.dx_score,
230
+ };
231
+ })
232
+ .filter((v) => v !== null);
233
+ }
234
+ }
235
+ exports.LXNS = LXNS;
236
+ (function (LXNS) {
237
+ /**
238
+ * Utage charts uses `ELevelIndex.BASIC`,
239
+ */
240
+ let ELevelIndex;
241
+ (function (ELevelIndex) {
242
+ ELevelIndex[ELevelIndex["BASIC"] = 0] = "BASIC";
243
+ ELevelIndex[ELevelIndex["ADVANCED"] = 1] = "ADVANCED";
244
+ ELevelIndex[ELevelIndex["EXPERT"] = 2] = "EXPERT";
245
+ ELevelIndex[ELevelIndex["MASTER"] = 3] = "MASTER";
246
+ ELevelIndex[ELevelIndex["REMASTER"] = 4] = "REMASTER";
247
+ })(ELevelIndex = LXNS.ELevelIndex || (LXNS.ELevelIndex = {}));
248
+ let EFCTypes;
249
+ (function (EFCTypes) {
250
+ EFCTypes["FULL_COMBO"] = "fc";
251
+ EFCTypes["FULL_COMBO_PLUS"] = "fcp";
252
+ EFCTypes["ALL_PERFECT"] = "ap";
253
+ EFCTypes["ALL_PERFECT_PLUS"] = "app";
254
+ })(EFCTypes = LXNS.EFCTypes || (LXNS.EFCTypes = {}));
255
+ let EFSTypes;
256
+ (function (EFSTypes) {
257
+ EFSTypes["SYNC"] = "sync";
258
+ EFSTypes["FULL_SYNC"] = "fs";
259
+ EFSTypes["FULL_SYNC_PLUS"] = "fsp";
260
+ EFSTypes["FULL_SYNC_DX"] = "fdx";
261
+ EFSTypes["FULL_SYNC_DX_PLUS"] = "fdxp";
262
+ })(EFSTypes = LXNS.EFSTypes || (LXNS.EFSTypes = {}));
263
+ let ERateTypes;
264
+ (function (ERateTypes) {
265
+ ERateTypes["D"] = "d";
266
+ ERateTypes["C"] = "c";
267
+ ERateTypes["B"] = "b";
268
+ ERateTypes["BB"] = "bb";
269
+ ERateTypes["BBB"] = "bbb";
270
+ ERateTypes["A"] = "a";
271
+ ERateTypes["AA"] = "aa";
272
+ ERateTypes["AAA"] = "aaa";
273
+ ERateTypes["S"] = "s";
274
+ ERateTypes["SP"] = "sp";
275
+ ERateTypes["SS"] = "ss";
276
+ ERateTypes["SSP"] = "ssp";
277
+ ERateTypes["SSS"] = "sss";
278
+ ERateTypes["SSSP"] = "sssp";
279
+ })(ERateTypes = LXNS.ERateTypes || (LXNS.ERateTypes = {}));
280
+ let ESongTypes;
281
+ (function (ESongTypes) {
282
+ ESongTypes["UTAGE"] = "utage";
283
+ ESongTypes["STANDARD"] = "standard";
284
+ ESongTypes["DX"] = "dx";
285
+ })(ESongTypes = LXNS.ESongTypes || (LXNS.ESongTypes = {}));
286
+ })(LXNS || (exports.LXNS = LXNS = {}));
287
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/lxns/index.ts"],"names":[],"mappings":"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"}
package/dist/type.d.ts ADDED
@@ -0,0 +1,165 @@
1
+ export declare enum EDifficulty {
2
+ BASIC = 0,
3
+ ADVANCED = 1,
4
+ EXPERT = 2,
5
+ MASTER = 3,
6
+ REMASTER = 4,
7
+ UTAGE = 5
8
+ }
9
+ export declare enum EComboTypes {
10
+ NONE = 0,
11
+ FULL_COMBO = 1,
12
+ FULL_COMBO_PLUS = 2,
13
+ ALL_PERFECT = 3,
14
+ ALL_PERFECT_PLUS = 4
15
+ }
16
+ export declare enum ESyncTypes {
17
+ NONE = 0,
18
+ SYNC_PLAY = 1,
19
+ FULL_SYNC = 2,
20
+ FULL_SYNC_PLUS = 3,
21
+ FULL_SYNC_DX = 4,
22
+ FULL_SYNC_DX_PLUS = 5
23
+ }
24
+ export declare enum EAchievementTypes {
25
+ D = 0,
26
+ C = 1,
27
+ B = 2,
28
+ BB = 3,
29
+ BBB = 4,
30
+ A = 5,
31
+ AA = 6,
32
+ AAA = 7,
33
+ S = 8,
34
+ SP = 9,
35
+ SS = 10,
36
+ SSP = 11,
37
+ SSS = 12,
38
+ SSSP = 13
39
+ }
40
+ export interface IScore {
41
+ chart: IChart;
42
+ combo: EComboTypes;
43
+ sync: ESyncTypes;
44
+ achievement: number;
45
+ achievementRank: EAchievementTypes;
46
+ dxRating: number;
47
+ dxScore: number;
48
+ }
49
+ export interface IChart {
50
+ id: number;
51
+ name: string;
52
+ difficulty: EDifficulty;
53
+ /**
54
+ * Chart internal level.
55
+ * `7.0, 11.2, 11.7, 13.2, 14.8, 15.0`
56
+ */
57
+ level: number;
58
+ maxDxScore: number;
59
+ }
60
+ export interface IThemeManifest {
61
+ displayName: string;
62
+ name: string;
63
+ width: number;
64
+ height: number;
65
+ sprites: IThemeSprites;
66
+ elements: IThemeElements[];
67
+ }
68
+ export interface IThemeSprites {
69
+ achievement: {
70
+ d: string;
71
+ c: string;
72
+ b: string;
73
+ bb: string;
74
+ bbb: string;
75
+ a: string;
76
+ aa: string;
77
+ aaa: string;
78
+ s: string;
79
+ sp: string;
80
+ ss: string;
81
+ ssp: string;
82
+ sss: string;
83
+ sssp: string;
84
+ };
85
+ mode: {
86
+ standard: string;
87
+ dx: string;
88
+ };
89
+ milestone: {
90
+ ap: string;
91
+ app: string;
92
+ fc: string;
93
+ fcp: string;
94
+ fdx: string;
95
+ fdxp: string;
96
+ fs: string;
97
+ fsp: string;
98
+ sync: string;
99
+ none: string;
100
+ };
101
+ dxRating: {
102
+ white: string;
103
+ blue: string;
104
+ green: string;
105
+ yellow: string;
106
+ red: string;
107
+ purple: string;
108
+ bronze: string;
109
+ silver: string;
110
+ gold: string;
111
+ platinum: string;
112
+ rainbow: string;
113
+ };
114
+ dxRatingNumberMap: string;
115
+ profile: {
116
+ icon: string;
117
+ nameplate: string;
118
+ };
119
+ }
120
+ export type IThemeElements = IThemeProfileElement | IThemeScoreElement | IThemeImageElement;
121
+ export interface IThemeElement {
122
+ type: string;
123
+ x: number;
124
+ y: number;
125
+ }
126
+ export interface IThemeProfileElement extends IThemeElement {
127
+ type: "profile";
128
+ height: number;
129
+ }
130
+ export interface IThemeScoreElement extends IThemeElement {
131
+ type: "score-grid";
132
+ horizontalSize: number;
133
+ verticalSize: number;
134
+ region: "new" | "old";
135
+ index: number;
136
+ scoreBubble: {
137
+ width: number;
138
+ height: number;
139
+ margin: number;
140
+ gap: number;
141
+ color: {
142
+ basic: string;
143
+ advanced: string;
144
+ expert: string;
145
+ master: string;
146
+ remaster: string;
147
+ utage: string;
148
+ };
149
+ };
150
+ }
151
+ export interface IThemeImageElement extends IThemeElement {
152
+ type: "image";
153
+ width: number;
154
+ height: number;
155
+ /**
156
+ * Relative path from the manifest file to the element file.
157
+ */
158
+ path: string;
159
+ }
160
+ export interface IBest50 {
161
+ new: IScore[];
162
+ old: IScore[];
163
+ username: string;
164
+ rating: number;
165
+ }