maidraw 0.9.5 → 0.10.1

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 (167) hide show
  1. package/assets/themes/chunithm/best/luminousLandscape/new/manifest.json +58 -32
  2. package/assets/themes/chunithm/best/luminousLandscape/recents/manifest.json +57 -31
  3. package/assets/themes/chunithm/best/luminousPlusLandscape/new/manifest.json +57 -31
  4. package/assets/themes/chunithm/best/luminousPlusLandscape/recents/manifest.json +57 -31
  5. package/assets/themes/chunithm/best/verseLandscape/new/manifest.json +57 -31
  6. package/assets/themes/chunithm/best/verseLandscape/recents/manifest.json +57 -31
  7. package/assets/themes/chunithm/chart/jp/verse/manifest.json +73 -71
  8. package/assets/themes/maimai/best50/cn/2024Landscape/manifest.json +90 -54
  9. package/assets/themes/maimai/best50/cn/2024Portrait/manifest.json +89 -53
  10. package/assets/themes/maimai/best50/cn/2025Landscape/manifest.json +90 -54
  11. package/assets/themes/maimai/best50/cn/2025Portrait/manifest.json +89 -53
  12. package/assets/themes/maimai/best50/common/prism/plus/background.png +0 -0
  13. package/assets/themes/maimai/best50/jp/buddiesLandscape/manifest.json +89 -53
  14. package/assets/themes/maimai/best50/jp/buddiesPlusLandscape/manifest.json +89 -53
  15. package/assets/themes/maimai/best50/jp/buddiesPlusPortrait/manifest.json +89 -53
  16. package/assets/themes/maimai/best50/jp/buddiesPortrait/manifest.json +89 -53
  17. package/assets/themes/maimai/best50/jp/finaleLandscape/manifest.json +89 -53
  18. package/assets/themes/maimai/best50/jp/finalePortrait/manifest.json +89 -53
  19. package/assets/themes/maimai/best50/jp/prismLandscape/manifest.json +90 -54
  20. package/assets/themes/maimai/best50/jp/prismPlusLandscape/manifest.json +90 -54
  21. package/assets/themes/maimai/best50/jp/prismPlusPortrait/manifest.json +92 -55
  22. package/assets/themes/maimai/best50/jp/prismPortrait/manifest.json +89 -53
  23. package/assets/themes/maimai/best50/salt/2026landscape/manifest.json +89 -53
  24. package/assets/themes/maimai/chart/jp/prism/manifest.json +100 -96
  25. package/assets/themes/ongeki/jp/brightMemoryLandscape/classic/manifest.json +101 -30
  26. package/assets/themes/ongeki/jp/brightMemoryLandscape/refresh/manifest.json +78 -30
  27. package/assets/themes/ongeki/jp/refreshLandscape/classic/manifest.json +101 -2
  28. package/assets/themes/ongeki/jp/refreshLandscape/refresh/manifest.json +78 -30
  29. package/dist/chu/index.d.ts +14 -4
  30. package/dist/chu/index.js +16 -4
  31. package/dist/chu/index.js.map +1 -1
  32. package/dist/chu/lib/{index.d.ts → adapter/index.d.ts} +1 -1
  33. package/dist/chu/lib/{index.js → adapter/index.js} +1 -1
  34. package/dist/chu/lib/adapter/index.js.map +1 -0
  35. package/dist/chu/lib/{kamaiTachi → adapter/kamaiTachi}/index.d.ts +1 -1
  36. package/dist/chu/lib/{kamaiTachi → adapter/kamaiTachi}/index.js +5 -5
  37. package/dist/chu/lib/adapter/kamaiTachi/index.js.map +1 -0
  38. package/dist/chu/lib/{lxns → adapter/lxns}/index.d.ts +1 -1
  39. package/dist/chu/lib/{lxns → adapter/lxns}/index.js +4 -4
  40. package/dist/chu/lib/adapter/lxns/index.js.map +1 -0
  41. package/dist/chu/{chart → lib}/database.d.ts +3 -3
  42. package/dist/chu/{chart → lib}/database.js +2 -2
  43. package/dist/chu/lib/database.js.map +1 -0
  44. package/dist/chu/lib/util.d.ts +149 -0
  45. package/dist/chu/lib/util.js +270 -0
  46. package/dist/chu/lib/util.js.map +1 -0
  47. package/dist/chu/painter/best50/index.d.ts +120 -0
  48. package/dist/chu/painter/best50/index.js +158 -0
  49. package/dist/chu/painter/best50/index.js.map +1 -0
  50. package/dist/chu/painter/chart/index.d.ts +170 -0
  51. package/dist/chu/painter/chart/index.js +116 -0
  52. package/dist/chu/painter/chart/index.js.map +1 -0
  53. package/dist/chu/painter/index.d.ts +194 -0
  54. package/dist/chu/painter/index.js +1105 -0
  55. package/dist/chu/painter/index.js.map +1 -0
  56. package/dist/geki/index.d.ts +10 -4
  57. package/dist/geki/index.js +12 -4
  58. package/dist/geki/index.js.map +1 -1
  59. package/dist/geki/lib/adapter/index.js.map +1 -0
  60. package/dist/geki/lib/adapter/kamaiTachi/index.js.map +1 -0
  61. package/dist/geki/{chart → lib}/database.d.ts +1 -1
  62. package/dist/geki/{chart → lib}/database.js +2 -2
  63. package/dist/geki/lib/database.js.map +1 -0
  64. package/dist/geki/painter/best50/index.d.ts +122 -0
  65. package/dist/geki/painter/best50/index.js +197 -0
  66. package/dist/geki/painter/best50/index.js.map +1 -0
  67. package/dist/geki/painter/index.d.ts +88 -0
  68. package/dist/geki/painter/index.js +448 -0
  69. package/dist/geki/painter/index.js.map +1 -0
  70. package/dist/lib/cache.d.ts +1 -0
  71. package/dist/lib/cache.js +6 -1
  72. package/dist/lib/cache.js.map +1 -1
  73. package/dist/lib/painter.d.ts +100 -0
  74. package/dist/lib/painter.js +216 -0
  75. package/dist/lib/painter.js.map +1 -0
  76. package/dist/lib/util.d.ts +6 -282
  77. package/dist/lib/util.js +50 -540
  78. package/dist/lib/util.js.map +1 -1
  79. package/dist/mai/index.d.ts +22 -6
  80. package/dist/mai/index.js +24 -6
  81. package/dist/mai/index.js.map +1 -1
  82. package/dist/mai/lib/{divingFish → adapter/divingFish}/index.d.ts +6 -6
  83. package/dist/mai/lib/{divingFish → adapter/divingFish}/index.js +29 -30
  84. package/dist/mai/lib/adapter/divingFish/index.js.map +1 -0
  85. package/dist/mai/lib/{index.d.ts → adapter/index.d.ts} +11 -11
  86. package/dist/mai/lib/{index.js → adapter/index.js} +2 -2
  87. package/dist/{geki/bests/lib → mai/lib/adapter}/index.js.map +1 -1
  88. package/dist/mai/lib/{kamaiTachi → adapter/kamaiTachi}/index.d.ts +84 -42
  89. package/dist/mai/lib/{kamaiTachi → adapter/kamaiTachi}/index.js +36 -29
  90. package/dist/mai/lib/adapter/kamaiTachi/index.js.map +1 -0
  91. package/dist/mai/lib/{lxns → adapter/lxns}/index.d.ts +12 -12
  92. package/dist/mai/lib/{lxns → adapter/lxns}/index.js +29 -30
  93. package/dist/mai/lib/adapter/lxns/index.js.map +1 -0
  94. package/dist/mai/lib/{maishift → adapter/maishift}/index.d.ts +4 -4
  95. package/dist/mai/lib/{maishift → adapter/maishift}/index.js +20 -20
  96. package/dist/mai/lib/adapter/maishift/index.js.map +1 -0
  97. package/dist/mai/{chart → lib}/database.d.ts +4 -5
  98. package/dist/mai/{chart → lib}/database.js +12 -6
  99. package/dist/mai/lib/database.js.map +1 -0
  100. package/dist/mai/lib/util.d.ts +134 -0
  101. package/dist/mai/lib/util.js +264 -0
  102. package/dist/mai/lib/util.js.map +1 -0
  103. package/dist/mai/painter/best50/index.d.ts +140 -0
  104. package/dist/mai/painter/best50/index.js +176 -0
  105. package/dist/mai/painter/best50/index.js.map +1 -0
  106. package/dist/mai/painter/chart/index.d.ts +195 -0
  107. package/dist/mai/painter/chart/index.js +115 -0
  108. package/dist/mai/painter/chart/index.js.map +1 -0
  109. package/dist/mai/painter/index.d.ts +237 -0
  110. package/dist/mai/painter/index.js +1431 -0
  111. package/dist/mai/painter/index.js.map +1 -0
  112. package/dist/mai/painter/level50/index.d.ts +28 -0
  113. package/dist/mai/painter/level50/index.js +129 -0
  114. package/dist/mai/painter/level50/index.js.map +1 -0
  115. package/dist/mai/type.d.ts +110 -0
  116. package/dist/mai/type.js +73 -1
  117. package/dist/mai/type.js.map +1 -1
  118. package/package.json +56 -55
  119. package/dist/chu/bests/best50.d.ts +0 -37
  120. package/dist/chu/bests/best50.js +0 -742
  121. package/dist/chu/bests/best50.js.map +0 -1
  122. package/dist/chu/bests/index.d.ts +0 -1
  123. package/dist/chu/bests/index.js +0 -6
  124. package/dist/chu/bests/index.js.map +0 -1
  125. package/dist/chu/bests/type.d.ts +0 -122
  126. package/dist/chu/bests/type.js +0 -3
  127. package/dist/chu/bests/type.js.map +0 -1
  128. package/dist/chu/chart/database.js.map +0 -1
  129. package/dist/chu/chart/index.d.ts +0 -212
  130. package/dist/chu/chart/index.js +0 -1064
  131. package/dist/chu/chart/index.js.map +0 -1
  132. package/dist/chu/lib/index.js.map +0 -1
  133. package/dist/chu/lib/kamaiTachi/index.js.map +0 -1
  134. package/dist/chu/lib/lxns/index.js.map +0 -1
  135. package/dist/geki/bests/best50.d.ts +0 -35
  136. package/dist/geki/bests/best50.js +0 -821
  137. package/dist/geki/bests/best50.js.map +0 -1
  138. package/dist/geki/bests/index.d.ts +0 -1
  139. package/dist/geki/bests/index.js +0 -6
  140. package/dist/geki/bests/index.js.map +0 -1
  141. package/dist/geki/bests/lib/kamaiTachi/index.js.map +0 -1
  142. package/dist/geki/bests/type.d.ts +0 -122
  143. package/dist/geki/bests/type.js +0 -3
  144. package/dist/geki/bests/type.js.map +0 -1
  145. package/dist/geki/chart/database.js.map +0 -1
  146. package/dist/geki/chart/index.d.ts +0 -4
  147. package/dist/geki/chart/index.js +0 -32
  148. package/dist/geki/chart/index.js.map +0 -1
  149. package/dist/mai/best50/index.d.ts +0 -271
  150. package/dist/mai/best50/index.js +0 -915
  151. package/dist/mai/best50/index.js.map +0 -1
  152. package/dist/mai/chart/database.js.map +0 -1
  153. package/dist/mai/chart/index.d.ts +0 -238
  154. package/dist/mai/chart/index.js +0 -1281
  155. package/dist/mai/chart/index.js.map +0 -1
  156. package/dist/mai/level50/index.d.ts +0 -28
  157. package/dist/mai/level50/index.js +0 -774
  158. package/dist/mai/level50/index.js.map +0 -1
  159. package/dist/mai/lib/divingFish/index.js.map +0 -1
  160. package/dist/mai/lib/index.js.map +0 -1
  161. package/dist/mai/lib/kamaiTachi/index.js.map +0 -1
  162. package/dist/mai/lib/lxns/index.js.map +0 -1
  163. package/dist/mai/lib/maishift/index.js.map +0 -1
  164. /package/dist/geki/{bests/lib → lib/adapter}/index.d.ts +0 -0
  165. /package/dist/geki/{bests/lib → lib/adapter}/index.js +0 -0
  166. /package/dist/geki/{bests/lib → lib/adapter}/kamaiTachi/index.d.ts +0 -0
  167. /package/dist/geki/{bests/lib → lib/adapter}/kamaiTachi/index.js +0 -0
@@ -0,0 +1,195 @@
1
+ import { z } from "zod/v4";
2
+ import { IScore } from "../../type";
3
+ import ScoreTrackerAdapter from "../../lib/adapter";
4
+ import { MaimaiPainter } from "..";
5
+ export declare class ChartPainter extends MaimaiPainter<typeof ChartPainter.Theme> {
6
+ static readonly Theme: z.ZodObject<{
7
+ name: z.ZodString;
8
+ displayName: z.ZodString;
9
+ width: z.ZodNumber;
10
+ height: z.ZodNumber;
11
+ elements: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
12
+ x: z.ZodNumber;
13
+ y: z.ZodNumber;
14
+ type: z.ZodLiteral<"chart-grid">;
15
+ width: z.ZodNumber;
16
+ height: z.ZodNumber;
17
+ margin: z.ZodNumber;
18
+ gap: z.ZodNumber;
19
+ bubble: z.ZodObject<{
20
+ margin: z.ZodNumber;
21
+ color: z.ZodObject<{
22
+ basic: z.ZodString;
23
+ advanced: z.ZodString;
24
+ expert: z.ZodString;
25
+ master: z.ZodString;
26
+ remaster: z.ZodString;
27
+ utage: z.ZodString;
28
+ }, z.core.$strip>;
29
+ }, z.core.$strip>;
30
+ color: z.ZodObject<{
31
+ card: z.ZodString;
32
+ }, z.core.$strip>;
33
+ sprites: z.ZodObject<{
34
+ achievement: z.ZodObject<{
35
+ d: z.ZodString;
36
+ c: z.ZodString;
37
+ b: z.ZodString;
38
+ bb: z.ZodString;
39
+ bbb: z.ZodString;
40
+ a: z.ZodString;
41
+ aa: z.ZodString;
42
+ aaa: z.ZodString;
43
+ s: z.ZodString;
44
+ sp: z.ZodString;
45
+ ss: z.ZodString;
46
+ ssp: z.ZodString;
47
+ sss: z.ZodString;
48
+ sssp: z.ZodString;
49
+ }, z.core.$strip>;
50
+ milestone: z.ZodObject<{
51
+ ap: z.ZodString;
52
+ app: z.ZodString;
53
+ fc: z.ZodString;
54
+ fcp: z.ZodString;
55
+ fdx: z.ZodString;
56
+ fdxp: z.ZodString;
57
+ fs: z.ZodString;
58
+ fsp: z.ZodString;
59
+ sync: z.ZodString;
60
+ none: z.ZodString;
61
+ }, z.core.$strip>;
62
+ versions: z.ZodObject<{
63
+ OLD: z.ZodObject<{
64
+ "0": z.ZodString;
65
+ "10": z.ZodString;
66
+ "20": z.ZodString;
67
+ "30": z.ZodString;
68
+ "40": z.ZodString;
69
+ "50": z.ZodString;
70
+ "60": z.ZodString;
71
+ "70": z.ZodString;
72
+ "80": z.ZodString;
73
+ "85": z.ZodString;
74
+ "90": z.ZodString;
75
+ "95": z.ZodString;
76
+ "99": z.ZodString;
77
+ }, z.core.$strip>;
78
+ DX: z.ZodObject<{
79
+ "0": z.ZodString;
80
+ "5": z.ZodString;
81
+ "10": z.ZodString;
82
+ "15": z.ZodString;
83
+ "20": z.ZodString;
84
+ "25": z.ZodString;
85
+ "30": z.ZodString;
86
+ "35": z.ZodString;
87
+ "40": z.ZodString;
88
+ "45": z.ZodString;
89
+ "50": z.ZodString;
90
+ "55": z.ZodString;
91
+ }, z.core.$strip>;
92
+ EX: z.ZodObject<{
93
+ "10": z.ZodString;
94
+ "15": z.ZodString;
95
+ }, z.core.$strip>;
96
+ CN: z.ZodObject<{
97
+ "0": z.ZodString;
98
+ "10": z.ZodString;
99
+ "20": z.ZodString;
100
+ "30": z.ZodString;
101
+ "40": z.ZodString;
102
+ "50": z.ZodString;
103
+ }, z.core.$strip>;
104
+ }, z.core.$strip>;
105
+ }, z.core.$strip>;
106
+ }, z.core.$strip>, z.ZodObject<{
107
+ x: z.ZodNumber;
108
+ y: z.ZodNumber;
109
+ type: z.ZodLiteral<"detail-info">;
110
+ width: z.ZodNumber;
111
+ height: z.ZodNumber;
112
+ margin: z.ZodNumber;
113
+ color: z.ZodObject<{
114
+ card: z.ZodString;
115
+ }, z.core.$strip>;
116
+ sprites: z.ZodObject<{
117
+ mode: z.ZodObject<{
118
+ standard: z.ZodString;
119
+ dx: z.ZodString;
120
+ }, z.core.$strip>;
121
+ }, z.core.$strip>;
122
+ }, z.core.$strip>, z.ZodObject<{
123
+ x: z.ZodNumber;
124
+ y: z.ZodNumber;
125
+ type: z.ZodLiteral<"profile">;
126
+ height: z.ZodNumber;
127
+ sprites: z.ZodObject<{
128
+ dxRating: z.ZodObject<{
129
+ white: z.ZodString;
130
+ blue: z.ZodString;
131
+ green: z.ZodString;
132
+ yellow: z.ZodString;
133
+ red: z.ZodString;
134
+ purple: z.ZodString;
135
+ bronze: z.ZodString;
136
+ silver: z.ZodString;
137
+ gold: z.ZodString;
138
+ platinum: z.ZodString;
139
+ rainbow: z.ZodString;
140
+ }, z.core.$strip>;
141
+ dxRatingNumberMap: z.ZodString;
142
+ profile: z.ZodObject<{
143
+ nameplate: z.ZodString;
144
+ icon: z.ZodString;
145
+ }, z.core.$strip>;
146
+ }, z.core.$strip>;
147
+ }, z.core.$strip>, z.ZodObject<{
148
+ x: z.ZodNumber;
149
+ y: z.ZodNumber;
150
+ type: z.ZodLiteral<"image">;
151
+ width: z.ZodNumber;
152
+ height: z.ZodNumber;
153
+ path: z.ZodString;
154
+ }, z.core.$strip>, z.ZodObject<{
155
+ x: z.ZodNumber;
156
+ y: z.ZodNumber;
157
+ type: z.ZodLiteral<"text">;
158
+ size: z.ZodNumber;
159
+ content: z.ZodString;
160
+ width: z.ZodOptional<z.ZodNumber>;
161
+ height: z.ZodOptional<z.ZodNumber>;
162
+ linebreak: z.ZodOptional<z.ZodBoolean>;
163
+ align: z.ZodOptional<z.ZodEnum<{
164
+ left: "left";
165
+ center: "center";
166
+ right: "right";
167
+ }>>;
168
+ color: z.ZodOptional<z.ZodString>;
169
+ borderColor: z.ZodOptional<z.ZodString>;
170
+ font: z.ZodOptional<z.ZodString>;
171
+ }, z.core.$strip>], "type">>;
172
+ }, z.core.$strip>;
173
+ private static readonly DEFAULT_THEME;
174
+ constructor();
175
+ draw(variables: {
176
+ username: string;
177
+ rating: number;
178
+ chartId: number;
179
+ scores: (IScore | null)[];
180
+ }, options?: {
181
+ scale?: number;
182
+ theme?: string;
183
+ profilePicture?: Buffer;
184
+ region?: "DX" | "EX" | "CN";
185
+ }): Promise<Buffer | null>;
186
+ drawWithScoreSource(source: ScoreTrackerAdapter, variables: {
187
+ username: string;
188
+ chartId: number;
189
+ }, options: {
190
+ scale?: number;
191
+ theme?: string;
192
+ profilePicture?: Buffer | null;
193
+ region?: "DX" | "EX" | "CN";
194
+ }): Promise<Buffer | null>;
195
+ }
@@ -0,0 +1,115 @@
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.ChartPainter = void 0;
7
+ const upath_1 = __importDefault(require("upath"));
8
+ const v4_1 = require("zod/v4");
9
+ const canvas_1 = require("canvas");
10
+ const database_1 = require("../../lib/database");
11
+ const type_1 = require("../../type");
12
+ const __1 = require("..");
13
+ const util_1 = require("../../../lib/util");
14
+ const painter_1 = require("../../../lib/painter");
15
+ class ChartPainter extends __1.MaimaiPainter {
16
+ static Theme = painter_1.ThemeManager.BaseTheme.extend({
17
+ elements: v4_1.z.array(v4_1.z.discriminatedUnion("type", [
18
+ __1.MaimaiPainterModule.Chart.ChartGrid.schema,
19
+ __1.MaimaiPainterModule.Chart.DetailInfo.schema,
20
+ __1.MaimaiPainterModule.Profile.schema,
21
+ painter_1.PainterModule.Image.schema,
22
+ painter_1.PainterModule.Text.schema,
23
+ ])),
24
+ });
25
+ static DEFAULT_THEME = "jp-prism";
26
+ constructor() {
27
+ super({
28
+ theme: {
29
+ schema: ChartPainter.Theme,
30
+ searchPaths: [
31
+ upath_1.default.join(ChartPainter.assetsPath, "themes", "maimai", "chart"),
32
+ ],
33
+ defaultTheme: ChartPainter.DEFAULT_THEME,
34
+ },
35
+ });
36
+ }
37
+ async draw(variables, options) {
38
+ let currentTheme = this.theme.get(this.theme.defaultTheme);
39
+ if (options?.theme) {
40
+ const theme = this.theme.get(options.theme);
41
+ if (theme) {
42
+ currentTheme = theme;
43
+ }
44
+ }
45
+ const chart = database_1.Database.getLocalChart(variables.chartId, type_1.EDifficulty.BASIC);
46
+ if (!chart)
47
+ return null;
48
+ if (currentTheme) {
49
+ await database_1.Database.cacheJackets([variables.chartId]);
50
+ const canvas = new canvas_1.Canvas(currentTheme.content.width * (options?.scale ?? 1), currentTheme.content.height * (options?.scale ?? 1));
51
+ const ctx = canvas.getContext("2d");
52
+ if (options?.scale)
53
+ ctx.scale(options.scale, options.scale);
54
+ ctx.imageSmoothingEnabled = true;
55
+ for (const element of currentTheme.content.elements) {
56
+ switch (element.type) {
57
+ case "image": {
58
+ await painter_1.PainterModule.Image.draw(ctx, currentTheme, element);
59
+ break;
60
+ }
61
+ case "chart-grid": {
62
+ await __1.MaimaiPainterModule.Chart.ChartGrid.draw(ctx, currentTheme, element, variables.chartId, variables.scores, options?.region);
63
+ break;
64
+ }
65
+ case "detail-info": {
66
+ await __1.MaimaiPainterModule.Chart.DetailInfo.draw(ctx, currentTheme, element, variables.chartId, options?.region);
67
+ break;
68
+ }
69
+ case "profile": {
70
+ await __1.MaimaiPainterModule.Profile.draw(ctx, currentTheme, element, variables.username, variables.rating, options?.profilePicture);
71
+ break;
72
+ }
73
+ case "text": {
74
+ await painter_1.PainterModule.Text.draw(ctx, element, {
75
+ username: util_1.Util.HalfFullWidthConvert.toFullWidth(variables.username),
76
+ rating: util_1.Util.truncate(variables.rating, 0),
77
+ });
78
+ break;
79
+ }
80
+ }
81
+ }
82
+ return canvas.toBuffer();
83
+ }
84
+ else
85
+ return null;
86
+ }
87
+ async drawWithScoreSource(source, variables, options) {
88
+ const profile = await source.getPlayerInfo(variables.username);
89
+ const score = await source.getPlayerScore(variables.username, variables.chartId);
90
+ if (!profile || !score)
91
+ return null;
92
+ return this.draw({
93
+ username: profile.name,
94
+ rating: profile.rating,
95
+ chartId: variables.chartId,
96
+ scores: [
97
+ score.basic,
98
+ score.advanced,
99
+ score.expert,
100
+ score.master,
101
+ score.remaster,
102
+ score.utage,
103
+ ],
104
+ }, {
105
+ ...options,
106
+ profilePicture: options?.profilePicture === null
107
+ ? undefined
108
+ : options?.profilePicture ||
109
+ (await source.getPlayerProfilePicture(variables.username)) ||
110
+ undefined,
111
+ });
112
+ }
113
+ }
114
+ exports.ChartPainter = ChartPainter;
115
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mai/painter/chart/index.ts"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAC1B,+BAA2B;AAC3B,mCAAgC;AAEhC,iDAA8C;AAC9C,qCAAiD;AAEjD,0BAAwD;AAExD,4CAAyC;AACzC,kDAAmE;AAEnE,MAAa,YAAa,SAAQ,iBAAwC;IAC/D,MAAM,CAAU,KAAK,GAAG,sBAAY,CAAC,SAAS,CAAC,MAAM,CAAC;QACzD,QAAQ,EAAE,MAAC,CAAC,KAAK,CACb,MAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;YACzB,uBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;YAC1C,uBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;YAC3C,uBAAmB,CAAC,OAAO,CAAC,MAAM;YAClC,uBAAa,CAAC,KAAK,CAAC,MAAM;YAC1B,uBAAa,CAAC,IAAI,CAAC,MAAM;SAC5B,CAAC,CACL;KACJ,CAAC,CAAC;IAEK,MAAM,CAAU,aAAa,GAAG,UAAU,CAAC;IACnD;QACI,KAAK,CAAC;YACF,KAAK,EAAE;gBACH,MAAM,EAAE,YAAY,CAAC,KAAK;gBAC1B,WAAW,EAAE;oBACT,eAAK,CAAC,IAAI,CACN,YAAY,CAAC,UAAU,EACvB,QAAQ,EACR,QAAQ,EACR,OAAO,CACV;iBACJ;gBACD,YAAY,EAAE,YAAY,CAAC,aAAa;aAC3C;SACJ,CAAC,CAAC;IACP,CAAC;IACM,KAAK,CAAC,IAAI,CACb,SAKC,EACD,OAKC;QAED,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACR,YAAY,GAAG,KAAK,CAAC;YACzB,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GAAG,mBAAQ,CAAC,aAAa,CAChC,SAAS,CAAC,OAAO,EACjB,kBAAW,CAAC,KAAK,CACpB,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,mBAAQ,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,eAAM,CACrB,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,EAClD,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CACtD,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO,EAAE,KAAK;gBAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5D,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACjC,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,MAAM,uBAAa,CAAC,KAAK,CAAC,IAAI,CAC1B,GAAG,EACH,YAAY,EACZ,OAAO,CACV,CAAC;wBACF,MAAM;oBACV,CAAC;oBACD,KAAK,YAAY,CAAC,CAAC,CAAC;wBAChB,MAAM,uBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAC1C,GAAG,EACH,YAAY,EACZ,OAAO,EACP,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,MAAM,EAChB,OAAO,EAAE,MAAM,CAClB,CAAC;wBACF,MAAM;oBACV,CAAC;oBACD,KAAK,aAAa,CAAC,CAAC,CAAC;wBACjB,MAAM,uBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAC3C,GAAG,EACH,YAAY,EACZ,OAAO,EACP,SAAS,CAAC,OAAO,EACjB,OAAO,EAAE,MAAM,CAClB,CAAC;wBACF,MAAM;oBACV,CAAC;oBACD,KAAK,SAAS,CAAC,CAAC,CAAC;wBACb,MAAM,uBAAmB,CAAC,OAAO,CAAC,IAAI,CAClC,GAAG,EACH,YAAY,EACZ,OAAO,EACP,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,MAAM,EAChB,OAAO,EAAE,cAAc,CAC1B,CAAC;wBACF,MAAM;oBACV,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACV,MAAM,uBAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;4BACxC,QAAQ,EAAE,WAAI,CAAC,oBAAoB,CAAC,WAAW,CAC3C,SAAS,CAAC,QAAQ,CACrB;4BACD,MAAM,EAAE,WAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;yBAC7C,CAAC,CAAC;wBACH,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;;YAAM,OAAO,IAAI,CAAC;IACvB,CAAC;IACM,KAAK,CAAC,mBAAmB,CAC5B,MAA2B,EAC3B,SAGC,EACD,OAKC;QAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,CACrC,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,OAAO,CACpB,CAAC;QACF,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,CACZ;YACI,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,MAAM,EAAE;gBACJ,KAAK,CAAC,KAAK;gBACX,KAAK,CAAC,QAAQ;gBACd,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,QAAQ;gBACd,KAAK,CAAC,KAAK;aACd;SACJ,EACD;YACI,GAAG,OAAO;YACV,cAAc,EACV,OAAO,EAAE,cAAc,KAAK,IAAI;gBAC5B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,OAAO,EAAE,cAAc;oBACvB,CAAC,MAAM,MAAM,CAAC,uBAAuB,CACjC,SAAS,CAAC,QAAQ,CACrB,CAAC;oBACF,SAAS;SACtB,CACJ,CAAC;IACN,CAAC;;AAtKL,oCAuKC"}
@@ -0,0 +1,237 @@
1
+ import { z } from "zod/v4";
2
+ import { CanvasRenderingContext2D } from "canvas";
3
+ import { IScore } from "../type";
4
+ import ScoreTrackerAdapter from "../lib/adapter";
5
+ import { Painter, Theme, ThemeManager } from "../../lib/painter";
6
+ export declare abstract class MaimaiPainter<Schema extends typeof ThemeManager.BaseObject> extends Painter<ScoreTrackerAdapter, Schema> {
7
+ constructor({ theme: { schema, searchPaths, defaultTheme }, }: {
8
+ theme: {
9
+ schema: Schema;
10
+ searchPaths: string[];
11
+ defaultTheme: string;
12
+ };
13
+ });
14
+ }
15
+ export declare namespace MaimaiPainterModule {
16
+ namespace Profile {
17
+ const schema: z.ZodObject<{
18
+ x: z.ZodNumber;
19
+ y: z.ZodNumber;
20
+ type: z.ZodLiteral<"profile">;
21
+ height: z.ZodNumber;
22
+ sprites: z.ZodObject<{
23
+ dxRating: z.ZodObject<{
24
+ white: z.ZodString;
25
+ blue: z.ZodString;
26
+ green: z.ZodString;
27
+ yellow: z.ZodString;
28
+ red: z.ZodString;
29
+ purple: z.ZodString;
30
+ bronze: z.ZodString;
31
+ silver: z.ZodString;
32
+ gold: z.ZodString;
33
+ platinum: z.ZodString;
34
+ rainbow: z.ZodString;
35
+ }, z.core.$strip>;
36
+ dxRatingNumberMap: z.ZodString;
37
+ profile: z.ZodObject<{
38
+ nameplate: z.ZodString;
39
+ icon: z.ZodString;
40
+ }, z.core.$strip>;
41
+ }, z.core.$strip>;
42
+ }, z.core.$strip>;
43
+ function draw(ctx: CanvasRenderingContext2D, theme: Theme<any>, element: z.infer<typeof schema>, username: string, rating: number, profilePicture?: Buffer): Promise<void>;
44
+ }
45
+ namespace Best50 {
46
+ namespace ScoreGrid {
47
+ const schema: z.ZodObject<{
48
+ x: z.ZodNumber;
49
+ y: z.ZodNumber;
50
+ type: z.ZodLiteral<"score-grid">;
51
+ horizontalSize: z.ZodNumber;
52
+ verticalSize: z.ZodNumber;
53
+ region: z.ZodEnum<{
54
+ new: "new";
55
+ old: "old";
56
+ }>;
57
+ index: z.ZodNumber;
58
+ scoreBubble: z.ZodObject<{
59
+ width: z.ZodNumber;
60
+ height: z.ZodNumber;
61
+ margin: z.ZodNumber;
62
+ gap: z.ZodNumber;
63
+ color: z.ZodObject<{
64
+ basic: z.ZodString;
65
+ advanced: z.ZodString;
66
+ expert: z.ZodString;
67
+ master: z.ZodString;
68
+ remaster: z.ZodString;
69
+ utage: z.ZodString;
70
+ }, z.core.$strip>;
71
+ }, z.core.$strip>;
72
+ sprites: z.ZodObject<{
73
+ achievement: z.ZodObject<{
74
+ d: z.ZodString;
75
+ c: z.ZodString;
76
+ b: z.ZodString;
77
+ bb: z.ZodString;
78
+ bbb: z.ZodString;
79
+ a: z.ZodString;
80
+ aa: z.ZodString;
81
+ aaa: z.ZodString;
82
+ s: z.ZodString;
83
+ sp: z.ZodString;
84
+ ss: z.ZodString;
85
+ ssp: z.ZodString;
86
+ sss: z.ZodString;
87
+ sssp: z.ZodString;
88
+ }, z.core.$strip>;
89
+ mode: z.ZodObject<{
90
+ standard: z.ZodString;
91
+ dx: z.ZodString;
92
+ }, z.core.$strip>;
93
+ milestone: z.ZodObject<{
94
+ ap: z.ZodString;
95
+ app: z.ZodString;
96
+ fc: z.ZodString;
97
+ fcp: z.ZodString;
98
+ fdx: z.ZodString;
99
+ fdxp: z.ZodString;
100
+ fs: z.ZodString;
101
+ fsp: z.ZodString;
102
+ sync: z.ZodString;
103
+ none: z.ZodString;
104
+ }, z.core.$strip>;
105
+ }, z.core.$strip>;
106
+ }, z.core.$strip>;
107
+ function draw(ctx: CanvasRenderingContext2D, theme: Theme<any>, element: z.infer<typeof schema>, { x, y, index, score, scale, }: {
108
+ x: number;
109
+ y: number;
110
+ index: number;
111
+ score: IScore;
112
+ scale?: number;
113
+ }): Promise<void>;
114
+ }
115
+ }
116
+ namespace Chart {
117
+ namespace ChartGrid {
118
+ const schema: z.ZodObject<{
119
+ x: z.ZodNumber;
120
+ y: z.ZodNumber;
121
+ type: z.ZodLiteral<"chart-grid">;
122
+ width: z.ZodNumber;
123
+ height: z.ZodNumber;
124
+ margin: z.ZodNumber;
125
+ gap: z.ZodNumber;
126
+ bubble: z.ZodObject<{
127
+ margin: z.ZodNumber;
128
+ color: z.ZodObject<{
129
+ basic: z.ZodString;
130
+ advanced: z.ZodString;
131
+ expert: z.ZodString;
132
+ master: z.ZodString;
133
+ remaster: z.ZodString;
134
+ utage: z.ZodString;
135
+ }, z.core.$strip>;
136
+ }, z.core.$strip>;
137
+ color: z.ZodObject<{
138
+ card: z.ZodString;
139
+ }, z.core.$strip>;
140
+ sprites: z.ZodObject<{
141
+ achievement: z.ZodObject<{
142
+ d: z.ZodString;
143
+ c: z.ZodString;
144
+ b: z.ZodString;
145
+ bb: z.ZodString;
146
+ bbb: z.ZodString;
147
+ a: z.ZodString;
148
+ aa: z.ZodString;
149
+ aaa: z.ZodString;
150
+ s: z.ZodString;
151
+ sp: z.ZodString;
152
+ ss: z.ZodString;
153
+ ssp: z.ZodString;
154
+ sss: z.ZodString;
155
+ sssp: z.ZodString;
156
+ }, z.core.$strip>;
157
+ milestone: z.ZodObject<{
158
+ ap: z.ZodString;
159
+ app: z.ZodString;
160
+ fc: z.ZodString;
161
+ fcp: z.ZodString;
162
+ fdx: z.ZodString;
163
+ fdxp: z.ZodString;
164
+ fs: z.ZodString;
165
+ fsp: z.ZodString;
166
+ sync: z.ZodString;
167
+ none: z.ZodString;
168
+ }, z.core.$strip>;
169
+ versions: z.ZodObject<{
170
+ OLD: z.ZodObject<{
171
+ "0": z.ZodString;
172
+ "10": z.ZodString;
173
+ "20": z.ZodString;
174
+ "30": z.ZodString;
175
+ "40": z.ZodString;
176
+ "50": z.ZodString;
177
+ "60": z.ZodString;
178
+ "70": z.ZodString;
179
+ "80": z.ZodString;
180
+ "85": z.ZodString;
181
+ "90": z.ZodString;
182
+ "95": z.ZodString;
183
+ "99": z.ZodString;
184
+ }, z.core.$strip>;
185
+ DX: z.ZodObject<{
186
+ "0": z.ZodString;
187
+ "5": z.ZodString;
188
+ "10": z.ZodString;
189
+ "15": z.ZodString;
190
+ "20": z.ZodString;
191
+ "25": z.ZodString;
192
+ "30": z.ZodString;
193
+ "35": z.ZodString;
194
+ "40": z.ZodString;
195
+ "45": z.ZodString;
196
+ "50": z.ZodString;
197
+ "55": z.ZodString;
198
+ }, z.core.$strip>;
199
+ EX: z.ZodObject<{
200
+ "10": z.ZodString;
201
+ "15": z.ZodString;
202
+ }, z.core.$strip>;
203
+ CN: z.ZodObject<{
204
+ "0": z.ZodString;
205
+ "10": z.ZodString;
206
+ "20": z.ZodString;
207
+ "30": z.ZodString;
208
+ "40": z.ZodString;
209
+ "50": z.ZodString;
210
+ }, z.core.$strip>;
211
+ }, z.core.$strip>;
212
+ }, z.core.$strip>;
213
+ }, z.core.$strip>;
214
+ function draw(ctx: CanvasRenderingContext2D, theme: Theme<any>, element: z.infer<typeof schema>, chartId: number, scores: (IScore | null)[], region?: "DX" | "EX" | "CN"): Promise<void>;
215
+ }
216
+ namespace DetailInfo {
217
+ const schema: z.ZodObject<{
218
+ x: z.ZodNumber;
219
+ y: z.ZodNumber;
220
+ type: z.ZodLiteral<"detail-info">;
221
+ width: z.ZodNumber;
222
+ height: z.ZodNumber;
223
+ margin: z.ZodNumber;
224
+ color: z.ZodObject<{
225
+ card: z.ZodString;
226
+ }, z.core.$strip>;
227
+ sprites: z.ZodObject<{
228
+ mode: z.ZodObject<{
229
+ standard: z.ZodString;
230
+ dx: z.ZodString;
231
+ }, z.core.$strip>;
232
+ }, z.core.$strip>;
233
+ }, z.core.$strip>;
234
+ function draw(ctx: CanvasRenderingContext2D, theme: Theme<any>, element: z.infer<typeof schema>, chartId: number, region?: "DX" | "EX" | "CN"): Promise<void>;
235
+ }
236
+ }
237
+ }