maidraw 0.4.5 → 0.4.6

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 (203) hide show
  1. package/assets/themes/chunithm/common/verse/achievement/A.png +0 -0
  2. package/assets/themes/chunithm/common/verse/achievement/AA.png +0 -0
  3. package/assets/themes/chunithm/common/verse/achievement/AAA.png +0 -0
  4. package/assets/themes/chunithm/common/verse/achievement/B.png +0 -0
  5. package/assets/themes/chunithm/common/verse/achievement/BB.png +0 -0
  6. package/assets/themes/chunithm/common/verse/achievement/BBB.png +0 -0
  7. package/assets/themes/chunithm/common/verse/achievement/C.png +0 -0
  8. package/assets/themes/chunithm/common/verse/achievement/D.png +0 -0
  9. package/assets/themes/chunithm/common/verse/achievement/S.png +0 -0
  10. package/assets/themes/chunithm/common/verse/achievement/SS.png +0 -0
  11. package/assets/themes/chunithm/common/verse/achievement/SSP.png +0 -0
  12. package/assets/themes/chunithm/common/verse/achievement/SSS.png +0 -0
  13. package/assets/themes/chunithm/common/verse/achievement/SSSP.png +0 -0
  14. package/assets/themes/chunithm/common/verse/jp/background.png +0 -0
  15. package/assets/themes/chunithm/common/verse/jp/logo.png +0 -0
  16. package/assets/themes/chunithm/common/versionless/icon.png +0 -0
  17. package/assets/themes/chunithm/common/versionless/milestone/aj.png +0 -0
  18. package/assets/themes/chunithm/common/versionless/milestone/ajc.png +0 -0
  19. package/assets/themes/chunithm/common/versionless/milestone/fc.png +0 -0
  20. package/assets/themes/chunithm/common/versionless/nameplate.png +0 -0
  21. package/assets/themes/chunithm/jp/verseLandscape/manifest.json +131 -0
  22. package/assets/themes/maimai/common/versionless/dxRating/numberMap.png +0 -0
  23. package/assets/themes/maimai/common/versionless/void.png +0 -0
  24. package/dist/chu/bests/best50.d.ts +32 -0
  25. package/dist/chu/bests/best50.js +752 -0
  26. package/dist/chu/bests/best50.js.map +1 -0
  27. package/dist/chu/bests/index.d.ts +1 -0
  28. package/dist/chu/bests/index.js +6 -0
  29. package/dist/chu/bests/index.js.map +1 -0
  30. package/dist/chu/bests/lib/index.d.ts +26 -0
  31. package/dist/chu/bests/lib/index.js +60 -0
  32. package/dist/chu/bests/lib/index.js.map +1 -0
  33. package/dist/chu/bests/lib/kamaiTachi/index.d.ts +154 -0
  34. package/dist/chu/bests/lib/kamaiTachi/index.js +315 -0
  35. package/dist/chu/bests/lib/kamaiTachi/index.js.map +1 -0
  36. package/dist/chu/bests/type.d.ts +121 -0
  37. package/dist/chu/bests/type.js +3 -0
  38. package/dist/chu/bests/type.js.map +1 -0
  39. package/dist/chu/chart/database.d.ts +9 -0
  40. package/dist/chu/chart/database.js +64 -0
  41. package/dist/chu/chart/database.js.map +1 -0
  42. package/dist/chu/chart/index.d.ts +4 -0
  43. package/dist/chu/chart/index.js +9 -0
  44. package/dist/chu/chart/index.js.map +1 -0
  45. package/dist/chu/index.d.ts +8 -0
  46. package/dist/chu/index.js +45 -0
  47. package/dist/chu/index.js.map +1 -0
  48. package/dist/chu/type.d.ts +51 -0
  49. package/dist/chu/type.js +42 -0
  50. package/dist/chu/type.js.map +1 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.js +2 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/lib/cache.d.ts +8 -0
  55. package/dist/lib/cache.js +52 -0
  56. package/dist/lib/cache.js.map +1 -0
  57. package/dist/mai/best50/index.d.ts +1 -1
  58. package/dist/mai/best50/index.js +6 -4
  59. package/dist/mai/best50/index.js.map +1 -1
  60. package/dist/mai/best50/lib/divingFish/index.d.ts +1 -1
  61. package/dist/mai/best50/lib/divingFish/index.js +1 -1
  62. package/dist/mai/best50/lib/divingFish/index.js.map +1 -1
  63. package/dist/mai/best50/lib/index.d.ts +2 -12
  64. package/dist/mai/best50/lib/index.js +6 -82
  65. package/dist/mai/best50/lib/index.js.map +1 -1
  66. package/dist/mai/best50/lib/kamaiTachi/index.d.ts +1 -1
  67. package/dist/mai/best50/lib/kamaiTachi/index.js +1 -1
  68. package/dist/mai/best50/lib/kamaiTachi/index.js.map +1 -1
  69. package/dist/mai/best50/lib/lxns/index.d.ts +1 -1
  70. package/dist/mai/best50/lib/lxns/index.js +1 -1
  71. package/dist/mai/best50/lib/lxns/index.js.map +1 -1
  72. package/dist/mai/best50/type.d.ts +1 -1
  73. package/dist/mai/chart/database.d.ts +1 -1
  74. package/dist/mai/chart/database.js +19 -12
  75. package/dist/mai/chart/database.js.map +1 -1
  76. package/dist/mai/index.d.ts +2 -0
  77. package/dist/mai/index.js +34 -0
  78. package/dist/mai/index.js.map +1 -1
  79. package/dist/mai/type.js.map +1 -0
  80. package/package.json +2 -2
  81. package/dist/type.js.map +0 -1
  82. /package/assets/themes/{common/versionless/dxRating → chunithm/common/versionless}/numberMap.png +0 -0
  83. /package/assets/themes/{common → chunithm/common}/versionless/void.png +0 -0
  84. /package/assets/themes/{cn → maimai/cn}/2024Landscape/manifest.json +0 -0
  85. /package/assets/themes/{cn → maimai/cn}/2024Portrait/manifest.json +0 -0
  86. /package/assets/themes/{common → maimai/common}/buddies/achievement/a.png +0 -0
  87. /package/assets/themes/{common → maimai/common}/buddies/achievement/aa.png +0 -0
  88. /package/assets/themes/{common → maimai/common}/buddies/achievement/aaa.png +0 -0
  89. /package/assets/themes/{common → maimai/common}/buddies/achievement/b.png +0 -0
  90. /package/assets/themes/{common → maimai/common}/buddies/achievement/bb.png +0 -0
  91. /package/assets/themes/{common → maimai/common}/buddies/achievement/bbb.png +0 -0
  92. /package/assets/themes/{common → maimai/common}/buddies/achievement/c.png +0 -0
  93. /package/assets/themes/{common → maimai/common}/buddies/achievement/d.png +0 -0
  94. /package/assets/themes/{common → maimai/common}/buddies/achievement/s.png +0 -0
  95. /package/assets/themes/{common → maimai/common}/buddies/achievement/sp.png +0 -0
  96. /package/assets/themes/{common → maimai/common}/buddies/achievement/ss.png +0 -0
  97. /package/assets/themes/{common → maimai/common}/buddies/achievement/ssp.png +0 -0
  98. /package/assets/themes/{common → maimai/common}/buddies/achievement/sss.png +0 -0
  99. /package/assets/themes/{common → maimai/common}/buddies/achievement/sssp.png +0 -0
  100. /package/assets/themes/{common → maimai/common}/buddies/cn/logo.png +0 -0
  101. /package/assets/themes/{common → maimai/common}/buddies/jp/background.png +0 -0
  102. /package/assets/themes/{common → maimai/common}/buddies/jp/chara.png +0 -0
  103. /package/assets/themes/{common → maimai/common}/buddies/jp/laundry.png +0 -0
  104. /package/assets/themes/{common → maimai/common}/buddies/jp/logo.png +0 -0
  105. /package/assets/themes/{common → maimai/common}/buddies/plus/chara.png +0 -0
  106. /package/assets/themes/{common → maimai/common}/buddies/plus/laundry.png +0 -0
  107. /package/assets/themes/{common → maimai/common}/buddies/plus/logo.png +0 -0
  108. /package/assets/themes/{common → maimai/common}/finale/achievement/a.png +0 -0
  109. /package/assets/themes/{common → maimai/common}/finale/achievement/aa.png +0 -0
  110. /package/assets/themes/{common → maimai/common}/finale/achievement/aaa.png +0 -0
  111. /package/assets/themes/{common → maimai/common}/finale/achievement/b.png +0 -0
  112. /package/assets/themes/{common → maimai/common}/finale/achievement/c.png +0 -0
  113. /package/assets/themes/{common → maimai/common}/finale/achievement/d.png +0 -0
  114. /package/assets/themes/{common → maimai/common}/finale/achievement/e.png +0 -0
  115. /package/assets/themes/{common → maimai/common}/finale/achievement/f.png +0 -0
  116. /package/assets/themes/{common → maimai/common}/finale/achievement/s.png +0 -0
  117. /package/assets/themes/{common → maimai/common}/finale/achievement/sp.png +0 -0
  118. /package/assets/themes/{common → maimai/common}/finale/achievement/ss.png +0 -0
  119. /package/assets/themes/{common → maimai/common}/finale/achievement/ssp.png +0 -0
  120. /package/assets/themes/{common → maimai/common}/finale/achievement/sss.png +0 -0
  121. /package/assets/themes/{common → maimai/common}/finale/achievement/sssp.png +0 -0
  122. /package/assets/themes/{common → maimai/common}/finale/background.png +0 -0
  123. /package/assets/themes/{common → maimai/common}/finale/background2.png +0 -0
  124. /package/assets/themes/{common → maimai/common}/finale/logo.png +0 -0
  125. /package/assets/themes/{common → maimai/common}/finale/milestone/ap.png +0 -0
  126. /package/assets/themes/{common → maimai/common}/finale/milestone/app.png +0 -0
  127. /package/assets/themes/{common → maimai/common}/finale/milestone/fc.png +0 -0
  128. /package/assets/themes/{common → maimai/common}/finale/milestone/fcp.png +0 -0
  129. /package/assets/themes/{common → maimai/common}/finale/milestone/fdx.png +0 -0
  130. /package/assets/themes/{common → maimai/common}/finale/milestone/fdxp.png +0 -0
  131. /package/assets/themes/{common → maimai/common}/finale/milestone/fsp.png +0 -0
  132. /package/assets/themes/{common → maimai/common}/finale/milestone/sync.png +0 -0
  133. /package/assets/themes/{common → maimai/common}/prism/achievement/a.png +0 -0
  134. /package/assets/themes/{common → maimai/common}/prism/achievement/aa.png +0 -0
  135. /package/assets/themes/{common → maimai/common}/prism/achievement/aaa.png +0 -0
  136. /package/assets/themes/{common → maimai/common}/prism/achievement/b.png +0 -0
  137. /package/assets/themes/{common → maimai/common}/prism/achievement/bb.png +0 -0
  138. /package/assets/themes/{common → maimai/common}/prism/achievement/bbb.png +0 -0
  139. /package/assets/themes/{common → maimai/common}/prism/achievement/c.png +0 -0
  140. /package/assets/themes/{common → maimai/common}/prism/achievement/d.png +0 -0
  141. /package/assets/themes/{common → maimai/common}/prism/achievement/s.png +0 -0
  142. /package/assets/themes/{common → maimai/common}/prism/achievement/sp.png +0 -0
  143. /package/assets/themes/{common → maimai/common}/prism/achievement/ss.png +0 -0
  144. /package/assets/themes/{common → maimai/common}/prism/achievement/ssp.png +0 -0
  145. /package/assets/themes/{common → maimai/common}/prism/achievement/sss.png +0 -0
  146. /package/assets/themes/{common → maimai/common}/prism/achievement/sssp.png +0 -0
  147. /package/assets/themes/{common → maimai/common}/prism/jp/background.png +0 -0
  148. /package/assets/themes/{common → maimai/common}/prism/jp/chara.png +0 -0
  149. /package/assets/themes/{common → maimai/common}/prism/jp/laundry.png +0 -0
  150. /package/assets/themes/{common → maimai/common}/prism/jp/logo.png +0 -0
  151. /package/assets/themes/{common → maimai/common}/prism/plus/chara.png +0 -0
  152. /package/assets/themes/{common → maimai/common}/prism/plus/laundry.png +0 -0
  153. /package/assets/themes/{common → maimai/common}/prism/plus/logo.png +0 -0
  154. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/blue.png +0 -0
  155. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/bronze.png +0 -0
  156. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/gold.png +0 -0
  157. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/green.png +0 -0
  158. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/platinum.png +0 -0
  159. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/purple.png +0 -0
  160. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/rainbow.png +0 -0
  161. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/red.png +0 -0
  162. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/silver.png +0 -0
  163. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/white.png +0 -0
  164. /package/assets/themes/{common → maimai/common}/versionless/dxRating/cn/yellow.png +0 -0
  165. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/blue.png +0 -0
  166. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/bronze.png +0 -0
  167. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/gold.png +0 -0
  168. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/green.png +0 -0
  169. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/platinum.png +0 -0
  170. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/purple.png +0 -0
  171. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/rainbow.png +0 -0
  172. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/red.png +0 -0
  173. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/silver.png +0 -0
  174. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/white.png +0 -0
  175. /package/assets/themes/{common → maimai/common}/versionless/dxRating/jp/yellow.png +0 -0
  176. /package/assets/themes/{common → maimai/common}/versionless/icon.png +0 -0
  177. /package/assets/themes/{common → maimai/common}/versionless/milestone/ap.png +0 -0
  178. /package/assets/themes/{common → maimai/common}/versionless/milestone/app.png +0 -0
  179. /package/assets/themes/{common → maimai/common}/versionless/milestone/fc.png +0 -0
  180. /package/assets/themes/{common → maimai/common}/versionless/milestone/fcp.png +0 -0
  181. /package/assets/themes/{common → maimai/common}/versionless/milestone/fdx.png +0 -0
  182. /package/assets/themes/{common → maimai/common}/versionless/milestone/fdxp.png +0 -0
  183. /package/assets/themes/{common → maimai/common}/versionless/milestone/fs.png +0 -0
  184. /package/assets/themes/{common → maimai/common}/versionless/milestone/fsp.png +0 -0
  185. /package/assets/themes/{common → maimai/common}/versionless/milestone/none.png +0 -0
  186. /package/assets/themes/{common → maimai/common}/versionless/milestone/sync.png +0 -0
  187. /package/assets/themes/{common → maimai/common}/versionless/mode/cn/dx.png +0 -0
  188. /package/assets/themes/{common → maimai/common}/versionless/mode/cn/standard.png +0 -0
  189. /package/assets/themes/{common → maimai/common}/versionless/mode/jp/dx.png +0 -0
  190. /package/assets/themes/{common → maimai/common}/versionless/mode/jp/standard.png +0 -0
  191. /package/assets/themes/{common → maimai/common}/versionless/nameplate.png +0 -0
  192. /package/assets/themes/{jp → maimai/jp}/buddiesLandscape/manifest.json +0 -0
  193. /package/assets/themes/{jp → maimai/jp}/buddiesPlusLandscape/manifest.json +0 -0
  194. /package/assets/themes/{jp → maimai/jp}/buddiesPlusPortrait/manifest.json +0 -0
  195. /package/assets/themes/{jp → maimai/jp}/buddiesPortrait/manifest.json +0 -0
  196. /package/assets/themes/{jp → maimai/jp}/finaleLandscape/manifest.json +0 -0
  197. /package/assets/themes/{jp → maimai/jp}/finalePortrait/manifest.json +0 -0
  198. /package/assets/themes/{jp → maimai/jp}/prismLandscape/manifest.json +0 -0
  199. /package/assets/themes/{jp → maimai/jp}/prismPlusLandscape/manifest.json +0 -0
  200. /package/assets/themes/{jp → maimai/jp}/prismPlusPortrait/manifest.json +0 -0
  201. /package/assets/themes/{jp → maimai/jp}/prismPortrait/manifest.json +0 -0
  202. /package/dist/{type.d.ts → mai/type.d.ts} +0 -0
  203. /package/dist/{type.js → mai/type.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/chu/bests/lib/kamaiTachi/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import { IScore } from "../../mai/type";
2
+ export interface IThemeManifest {
3
+ displayName: string;
4
+ name: string;
5
+ width: number;
6
+ height: number;
7
+ sprites: IThemeSprites;
8
+ elements: IThemeElements[];
9
+ }
10
+ export interface IThemeSprites {
11
+ achievement: {
12
+ d: string;
13
+ c: string;
14
+ b: string;
15
+ bb: string;
16
+ bbb: string;
17
+ a: string;
18
+ aa: string;
19
+ aaa: string;
20
+ s: string;
21
+ ss: string;
22
+ ssp: string;
23
+ sss: string;
24
+ sssp: string;
25
+ };
26
+ milestone: {
27
+ aj: string;
28
+ ajc: string;
29
+ fc: string;
30
+ none: string;
31
+ };
32
+ ratingNumberMap: string;
33
+ profile: {
34
+ icon: string;
35
+ nameplate: string;
36
+ };
37
+ }
38
+ export type IThemeElements = IThemeProfileElement | IThemeScoreElement | IThemeImageElement | IThemeTextElement;
39
+ export interface IThemeElement {
40
+ type: string;
41
+ x: number;
42
+ y: number;
43
+ }
44
+ export interface IThemeProfileElement extends IThemeElement {
45
+ type: "profile";
46
+ height: number;
47
+ }
48
+ export interface IThemeScoreElement extends IThemeElement {
49
+ type: "score-grid";
50
+ horizontalSize: number;
51
+ verticalSize: number;
52
+ region: "new" | "old";
53
+ index: number;
54
+ scoreBubble: {
55
+ width: number;
56
+ height: number;
57
+ margin: number;
58
+ gap: number;
59
+ color: {
60
+ basic: string;
61
+ advanced: string;
62
+ expert: string;
63
+ master: string;
64
+ ultima: string;
65
+ worldsEnd: string;
66
+ };
67
+ };
68
+ }
69
+ export interface IThemeImageElement extends IThemeElement {
70
+ type: "image";
71
+ width: number;
72
+ height: number;
73
+ /**
74
+ * Relative path from the manifest file to the element file.
75
+ */
76
+ path: string;
77
+ }
78
+ export interface IThemeTextElement extends IThemeElement {
79
+ type: "text";
80
+ size: number;
81
+ content: string;
82
+ /**
83
+ * If width is provied and the text is too long, it will be cut off.
84
+ */
85
+ width?: number;
86
+ /**
87
+ * If height is provied and the text is too big, it will be cut off.
88
+ */
89
+ height?: number;
90
+ /**
91
+ * If true, instead of cutting off the text, it will change to a new line.
92
+ * Height restrictions will still apply.
93
+ */
94
+ linebreak?: boolean;
95
+ /**
96
+ * Text alignment.
97
+ * Defaults to left.
98
+ */
99
+ align?: "left" | "center" | "right";
100
+ /**
101
+ * Text color.
102
+ * Defaults to white (#FFFFFF).
103
+ */
104
+ color?: string;
105
+ /**
106
+ * Text border color.
107
+ * Defaults a darker variant of `color`.
108
+ */
109
+ borderColor?: string;
110
+ /**
111
+ * Text font. Please make sure the font is available in the environment.
112
+ * Defaults to a preconfigured font macro. Check source code for more info.
113
+ */
114
+ font?: string;
115
+ }
116
+ export interface IBest50 {
117
+ new: IScore[];
118
+ old: IScore[];
119
+ username: string;
120
+ rating: number;
121
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/chu/bests/type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export declare class Database {
2
+ private static localDatabasePath;
3
+ static setLocalDatabasePath(path: string): void;
4
+ static hasLocalDatabase(): boolean;
5
+ private static cache;
6
+ static cacheJackets(ids: number[]): Promise<void>;
7
+ static fecthJacket(id: number): Promise<Buffer | null>;
8
+ static downloadJacket(id: number): Promise<Buffer | null>;
9
+ }
@@ -0,0 +1,64 @@
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.Database = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const upath_1 = __importDefault(require("upath"));
9
+ const axios_1 = __importDefault(require("axios"));
10
+ const cache_1 = require("../../lib/cache");
11
+ const __1 = require("..");
12
+ // import { EDifficulty, IChart } from "@maidraw/type";
13
+ class Database {
14
+ static localDatabasePath = "";
15
+ static setLocalDatabasePath(path) {
16
+ this.localDatabasePath = path;
17
+ }
18
+ static hasLocalDatabase() {
19
+ return fs_1.default.existsSync(this.localDatabasePath);
20
+ }
21
+ static cache = new cache_1.Cache();
22
+ static async cacheJackets(ids) {
23
+ const promises = [];
24
+ for (const id of ids) {
25
+ promises.push(this.fecthJacket(id));
26
+ }
27
+ await Promise.all(promises);
28
+ }
29
+ static async fecthJacket(id) {
30
+ const cacheKey = `chuni-jacket-${id}`;
31
+ const cached = await this.cache.get(cacheKey);
32
+ if (cached instanceof Buffer) {
33
+ __1.Chuni.logger.trace(`GET Jacket-${id}, cache HIT`);
34
+ return cached;
35
+ }
36
+ else {
37
+ __1.Chuni.logger.trace(`GET Jacket-${id}, cache MISS`);
38
+ const jacket = await this.downloadJacket(id);
39
+ if (jacket)
40
+ this.cache.put(cacheKey, jacket, 1000 * 60 * 60);
41
+ return jacket;
42
+ }
43
+ }
44
+ static async downloadJacket(id) {
45
+ id = id % 10000;
46
+ const localFilePath = upath_1.default.join(this.localDatabasePath, "assets", "chunithm", "jackets", `${id.toString().padStart(4, "0")}.png`);
47
+ if (fs_1.default.existsSync(localFilePath)) {
48
+ __1.Chuni.logger.trace(`GET Jacket-${id}, database HIT`);
49
+ return fs_1.default.readFileSync(localFilePath);
50
+ }
51
+ const beginTimestamp = Date.now();
52
+ const res = await axios_1.default
53
+ .get(`https://assets2.lxns.net/chunithm/jacket/${id}.png`, {
54
+ responseType: "arraybuffer",
55
+ })
56
+ .then((res) => res.data)
57
+ .catch((e) => null);
58
+ const timeDifference = Date.now() - beginTimestamp;
59
+ __1.Chuni.logger.trace(`GET Jacket-${id}, database MISS, took ${timeDifference}ms`);
60
+ return res;
61
+ }
62
+ }
63
+ exports.Database = Database;
64
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/chu/chart/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Database } from "./database";
2
+ export declare class Chart {
3
+ static Database: typeof Database;
4
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Chart = void 0;
4
+ const database_1 = require("./database");
5
+ class Chart {
6
+ static Database = database_1.Database;
7
+ }
8
+ exports.Chart = Chart;
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chu/chart/index.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC,MAAa,KAAK;IACd,MAAM,CAAC,QAAQ,GAAG,mBAAQ,CAAC;;AAD/B,sBAEC"}
@@ -0,0 +1,8 @@
1
+ import { Best50 } from "./bests";
2
+ import { Chart } from "./chart";
3
+ import Bunyan from "bunyan";
4
+ export declare class Chuni {
5
+ static logger: Bunyan;
6
+ static Best50: typeof Best50;
7
+ static Chart: typeof Chart;
8
+ }
@@ -0,0 +1,45 @@
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.Chuni = void 0;
7
+ const bests_1 = require("./bests");
8
+ const chart_1 = require("./chart");
9
+ const bunyan_1 = __importDefault(require("bunyan"));
10
+ class Chuni {
11
+ static logger = new bunyan_1.default({
12
+ name: "maidraw.chuni",
13
+ streams: [
14
+ {
15
+ stream: process.stdout,
16
+ level: (() => {
17
+ switch (process.env.LOG_LEVEL) {
18
+ case "trace":
19
+ return bunyan_1.default.TRACE;
20
+ case "debug":
21
+ return bunyan_1.default.DEBUG;
22
+ case "info":
23
+ return bunyan_1.default.INFO;
24
+ case "warn":
25
+ return bunyan_1.default.WARN;
26
+ case "error":
27
+ return bunyan_1.default.ERROR;
28
+ case "fatal":
29
+ return bunyan_1.default.FATAL;
30
+ default:
31
+ return bunyan_1.default.INFO;
32
+ }
33
+ })(),
34
+ },
35
+ {
36
+ stream: process.stderr,
37
+ level: bunyan_1.default.ERROR,
38
+ },
39
+ ],
40
+ });
41
+ static Best50 = bests_1.Best50;
42
+ static Chart = chart_1.Chart;
43
+ }
44
+ exports.Chuni = Chuni;
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chu/index.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAiC;AACjC,mCAAgC;AAEhC,oDAA4B;AAE5B,MAAa,KAAK;IACP,MAAM,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;QAC9B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE;YACL;gBACI,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,CAAC,GAAG,EAAE;oBACT,QAAQ,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;wBAC5B,KAAK,OAAO;4BACR,OAAO,gBAAM,CAAC,KAAK,CAAC;wBACxB,KAAK,OAAO;4BACR,OAAO,gBAAM,CAAC,KAAK,CAAC;wBACxB,KAAK,MAAM;4BACP,OAAO,gBAAM,CAAC,IAAI,CAAC;wBACvB,KAAK,MAAM;4BACP,OAAO,gBAAM,CAAC,IAAI,CAAC;wBACvB,KAAK,OAAO;4BACR,OAAO,gBAAM,CAAC,KAAK,CAAC;wBACxB,KAAK,OAAO;4BACR,OAAO,gBAAM,CAAC,KAAK,CAAC;wBACxB;4BACI,OAAO,gBAAM,CAAC,IAAI,CAAC;oBAC3B,CAAC;gBACL,CAAC,CAAC,EAAE;aACP;YACD;gBACI,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,gBAAM,CAAC,KAAK;aACtB;SACJ;KACJ,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,GAAG,cAAM,CAAC;IACvB,MAAM,CAAC,KAAK,GAAG,aAAK,CAAC;;AAhCzB,sBAiCC"}
@@ -0,0 +1,51 @@
1
+ export declare enum EDifficulty {
2
+ BASIC = 0,
3
+ ADVANCED = 1,
4
+ EXPERT = 2,
5
+ MASTER = 3,
6
+ ULTIMA = 4,
7
+ WORLDS_END = 5
8
+ }
9
+ export declare enum EComboTypes {
10
+ NONE = 0,
11
+ FULL_COMBO = 1,
12
+ ALL_JUSTICE = 2,
13
+ ALL_JUSTICE_CRITICAL = 3
14
+ }
15
+ export declare enum ESyncTypes {
16
+ NONE = 0,
17
+ FULL_CHAIN = 1,
18
+ FULL_CHAIN_JUSTICE = 2
19
+ }
20
+ export declare enum EAchievementTypes {
21
+ D = 0,
22
+ C = 1,
23
+ B = 2,
24
+ BB = 3,
25
+ BBB = 4,
26
+ A = 5,
27
+ AA = 6,
28
+ AAA = 7,
29
+ S = 8,
30
+ SS = 9,
31
+ SSP = 10,
32
+ SSS = 11,
33
+ SSSP = 12
34
+ }
35
+ export interface IScore {
36
+ chart: IChart;
37
+ combo: EComboTypes;
38
+ score: number;
39
+ rank: EAchievementTypes;
40
+ rating: number;
41
+ }
42
+ export interface IChart {
43
+ id: number;
44
+ name: string;
45
+ difficulty: EDifficulty;
46
+ /**
47
+ * Chart internal level.
48
+ * `7.0, 11.2, 11.7, 13.2, 14.8, 15.0`
49
+ */
50
+ level: number;
51
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EAchievementTypes = exports.ESyncTypes = exports.EComboTypes = exports.EDifficulty = void 0;
4
+ var EDifficulty;
5
+ (function (EDifficulty) {
6
+ EDifficulty[EDifficulty["BASIC"] = 0] = "BASIC";
7
+ EDifficulty[EDifficulty["ADVANCED"] = 1] = "ADVANCED";
8
+ EDifficulty[EDifficulty["EXPERT"] = 2] = "EXPERT";
9
+ EDifficulty[EDifficulty["MASTER"] = 3] = "MASTER";
10
+ EDifficulty[EDifficulty["ULTIMA"] = 4] = "ULTIMA";
11
+ EDifficulty[EDifficulty["WORLDS_END"] = 5] = "WORLDS_END";
12
+ })(EDifficulty || (exports.EDifficulty = EDifficulty = {}));
13
+ var EComboTypes;
14
+ (function (EComboTypes) {
15
+ EComboTypes[EComboTypes["NONE"] = 0] = "NONE";
16
+ EComboTypes[EComboTypes["FULL_COMBO"] = 1] = "FULL_COMBO";
17
+ EComboTypes[EComboTypes["ALL_JUSTICE"] = 2] = "ALL_JUSTICE";
18
+ EComboTypes[EComboTypes["ALL_JUSTICE_CRITICAL"] = 3] = "ALL_JUSTICE_CRITICAL";
19
+ })(EComboTypes || (exports.EComboTypes = EComboTypes = {}));
20
+ var ESyncTypes;
21
+ (function (ESyncTypes) {
22
+ ESyncTypes[ESyncTypes["NONE"] = 0] = "NONE";
23
+ ESyncTypes[ESyncTypes["FULL_CHAIN"] = 1] = "FULL_CHAIN";
24
+ ESyncTypes[ESyncTypes["FULL_CHAIN_JUSTICE"] = 2] = "FULL_CHAIN_JUSTICE";
25
+ })(ESyncTypes || (exports.ESyncTypes = ESyncTypes = {}));
26
+ var EAchievementTypes;
27
+ (function (EAchievementTypes) {
28
+ EAchievementTypes[EAchievementTypes["D"] = 0] = "D";
29
+ EAchievementTypes[EAchievementTypes["C"] = 1] = "C";
30
+ EAchievementTypes[EAchievementTypes["B"] = 2] = "B";
31
+ EAchievementTypes[EAchievementTypes["BB"] = 3] = "BB";
32
+ EAchievementTypes[EAchievementTypes["BBB"] = 4] = "BBB";
33
+ EAchievementTypes[EAchievementTypes["A"] = 5] = "A";
34
+ EAchievementTypes[EAchievementTypes["AA"] = 6] = "AA";
35
+ EAchievementTypes[EAchievementTypes["AAA"] = 7] = "AAA";
36
+ EAchievementTypes[EAchievementTypes["S"] = 8] = "S";
37
+ EAchievementTypes[EAchievementTypes["SS"] = 9] = "SS";
38
+ EAchievementTypes[EAchievementTypes["SSP"] = 10] = "SSP";
39
+ EAchievementTypes[EAchievementTypes["SSS"] = 11] = "SSS";
40
+ EAchievementTypes[EAchievementTypes["SSSP"] = 12] = "SSSP";
41
+ })(EAchievementTypes || (exports.EAchievementTypes = EAchievementTypes = {}));
42
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/chu/type.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,+CAAK,CAAA;IACL,qDAAQ,CAAA;IACR,iDAAM,CAAA;IACN,iDAAM,CAAA;IACN,iDAAM,CAAA;IACN,yDAAU,CAAA;AACd,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,6CAAI,CAAA;IACJ,yDAAU,CAAA;IACV,2DAAW,CAAA;IACX,6EAAoB,CAAA;AACxB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,2CAAI,CAAA;IACJ,uDAAU,CAAA;IACV,uEAAkB,CAAA;AACtB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAED,IAAY,iBAcX;AAdD,WAAY,iBAAiB;IACzB,mDAAC,CAAA;IACD,mDAAC,CAAA;IACD,mDAAC,CAAA;IACD,qDAAE,CAAA;IACF,uDAAG,CAAA;IACH,mDAAC,CAAA;IACD,qDAAE,CAAA;IACF,uDAAG,CAAA;IACH,mDAAC,CAAA;IACD,qDAAE,CAAA;IACF,wDAAG,CAAA;IACH,wDAAG,CAAA;IACH,0DAAI,CAAA;AACR,CAAC,EAdW,iBAAiB,iCAAjB,iBAAiB,QAc5B"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
+ import { Chuni } from "./chu";
1
2
  import { Maimai } from "./mai";
2
3
  export declare class MaiDraw {
3
4
  static Maimai: typeof Maimai;
5
+ static Chuni: typeof Chuni;
4
6
  }
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MaiDraw = void 0;
4
+ const chu_1 = require("./chu");
4
5
  const mai_1 = require("./mai");
5
6
  class MaiDraw {
6
7
  static Maimai = mai_1.Maimai;
8
+ static Chuni = chu_1.Chuni;
7
9
  }
8
10
  exports.MaiDraw = MaiDraw;
9
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAE/B,MAAa,OAAO;IAChB,MAAM,CAAC,MAAM,GAAG,YAAM,CAAC;;AAD3B,0BAEC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAC9B,+BAA+B;AAE/B,MAAa,OAAO;IAChB,MAAM,CAAC,MAAM,GAAG,YAAM,CAAC;IACvB,MAAM,CAAC,KAAK,GAAG,WAAK,CAAC;;AAFzB,0BAGC"}
@@ -0,0 +1,8 @@
1
+ export declare class Cache {
2
+ private memCache;
3
+ private redisClient;
4
+ private isRedisAvailable;
5
+ constructor();
6
+ get(key: string): Promise<any>;
7
+ put(key: string, value: any, ttl: number): Promise<void>;
8
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cache = void 0;
4
+ const memory_cache_1 = require("memory-cache");
5
+ const redis_1 = require("redis");
6
+ class Cache {
7
+ memCache;
8
+ redisClient;
9
+ isRedisAvailable = true;
10
+ constructor() {
11
+ this.memCache = new memory_cache_1.Cache();
12
+ this.redisClient = (0, redis_1.createClient)();
13
+ this.redisClient.on("error", (e) => {
14
+ console.error("Redis error", e);
15
+ this.isRedisAvailable = false;
16
+ });
17
+ this.redisClient.connect();
18
+ }
19
+ async get(key) {
20
+ if (this.isRedisAvailable) {
21
+ const redisValue = await this.redisClient.get(key);
22
+ if (redisValue) {
23
+ try {
24
+ return JSON.parse(redisValue);
25
+ }
26
+ catch {
27
+ return Buffer.from(redisValue, "base64");
28
+ }
29
+ }
30
+ }
31
+ else
32
+ return this.memCache.get(key);
33
+ }
34
+ async put(key, value, ttl) {
35
+ if (this.isRedisAvailable) {
36
+ if (Buffer.isBuffer(value)) {
37
+ await this.redisClient.set(key, value.toString("base64"), {
38
+ EX: Math.floor(ttl / 1000),
39
+ });
40
+ }
41
+ else {
42
+ await this.redisClient.set(key, JSON.stringify(value), {
43
+ EX: Math.floor(ttl / 1000),
44
+ });
45
+ }
46
+ }
47
+ else
48
+ this.memCache.put(key, value, ttl);
49
+ }
50
+ }
51
+ exports.Cache = Cache;
52
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":";;;AAAA,+CAAiD;AACjD,iCAAqC;AACrC,MAAa,KAAK;IACN,QAAQ,CAAC;IACT,WAAW,CAAC;IAEZ,gBAAgB,GAAG,IAAI,CAAC;IAChC;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,EAAe,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAA,oBAAY,GAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAW;QACjB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC;oBACD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACL,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC7C,CAAC;YACL,CAAC;QACL,CAAC;;YAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,GAAW;QAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACtD,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;iBAC7B,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACnD,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;iBAC7B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;;YAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;CACJ;AAvCD,sBAuCC"}
@@ -1,4 +1,4 @@
1
- import { IScore } from "../../type";
1
+ import { IScore } from "../type";
2
2
  import ScoreTrackerAdapter from "./lib";
3
3
  import { LXNS } from "./lib/lxns";
4
4
  import { KamaiTachi } from "./lib/kamaiTachi";
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Best50 = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const upath_1 = __importDefault(require("upath"));
9
- const type_1 = require("../../type");
9
+ const type_1 = require("../type");
10
10
  const canvas_1 = require("canvas");
11
11
  const color_1 = __importDefault(require("color"));
12
12
  const sharp_1 = __importDefault(require("sharp"));
@@ -62,7 +62,7 @@ class Best50 {
62
62
  return !!this.themes[name];
63
63
  }
64
64
  static {
65
- const manifests = (0, glob_1.globSync)(upath_1.default.join(this.assetsPath, "themes", "**", "manifest.json"));
65
+ const manifests = (0, glob_1.globSync)(upath_1.default.join(this.assetsPath, "themes", "maimai", "**", "manifest.json"));
66
66
  for (const manifestPath of manifests) {
67
67
  const manifest = JSON.parse(fs_1.default.readFileSync(manifestPath, "utf-8"));
68
68
  if (this.validateManifest(manifest, upath_1.default.dirname(manifestPath))) {
@@ -71,7 +71,7 @@ class Best50 {
71
71
  }
72
72
  const loadThemeResult = this.loadTheme(this.DEFAULT_THEME);
73
73
  if (!loadThemeResult) {
74
- console.error("Failed to load theme.");
74
+ console.error("Failed to load default theme.");
75
75
  }
76
76
  (0, canvas_1.registerFont)(upath_1.default.join(this.assetsPath, "fonts", "gen-jyuu-gothic", "GenJyuuGothic-Bold.ttf"), {
77
77
  family: "standard-font-title-jp",
@@ -254,7 +254,7 @@ class Best50 {
254
254
  return false;
255
255
  }
256
256
  static getTheme(path) {
257
- if (!fs_1.default.existsSync(upath_1.default.join(this.assetsPath, path, "manifest.json"))) {
257
+ if (!fs_1.default.existsSync(upath_1.default.join(path, "manifest.json"))) {
258
258
  path = this.themes[path] ?? "";
259
259
  }
260
260
  else
@@ -782,6 +782,8 @@ class Best50 {
782
782
  .sort((a, b) => a - b)[0] || 0);
783
783
  }
784
784
  function getRatingAvg(scores) {
785
+ if (scores.length <= 0)
786
+ return 0;
785
787
  return (scores
786
788
  .map((v) => v.dxRating)
787
789
  .reduce((sum, v) => (sum += v)) /