maidraw 0.2.0 → 0.3.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 (75) hide show
  1. package/assets/themes/common/finale/achievement/a.png +0 -0
  2. package/assets/themes/common/finale/achievement/aa.png +0 -0
  3. package/assets/themes/common/finale/achievement/aaa.png +0 -0
  4. package/assets/themes/common/finale/achievement/b.png +0 -0
  5. package/assets/themes/common/finale/achievement/c.png +0 -0
  6. package/assets/themes/common/finale/achievement/d.png +0 -0
  7. package/assets/themes/common/finale/achievement/e.png +0 -0
  8. package/assets/themes/common/finale/achievement/f.png +0 -0
  9. package/assets/themes/common/finale/achievement/s.png +0 -0
  10. package/assets/themes/common/finale/achievement/sp.png +0 -0
  11. package/assets/themes/common/finale/achievement/ss.png +0 -0
  12. package/assets/themes/common/finale/achievement/ssp.png +0 -0
  13. package/assets/themes/common/finale/achievement/sss.png +0 -0
  14. package/assets/themes/common/finale/achievement/sssp.png +0 -0
  15. package/assets/themes/common/finale/background.png +0 -0
  16. package/assets/themes/common/finale/background2.png +0 -0
  17. package/assets/themes/common/finale/logo.png +0 -0
  18. package/assets/themes/common/finale/milestone/ap.png +0 -0
  19. package/assets/themes/common/finale/milestone/app.png +0 -0
  20. package/assets/themes/common/finale/milestone/fc.png +0 -0
  21. package/assets/themes/common/finale/milestone/fcp.png +0 -0
  22. package/assets/themes/common/finale/milestone/fdx.png +0 -0
  23. package/assets/themes/common/finale/milestone/fdxp.png +0 -0
  24. package/assets/themes/common/finale/milestone/fsp.png +0 -0
  25. package/assets/themes/common/finale/milestone/sync.png +0 -0
  26. package/assets/themes/common/versionless/void.png +0 -0
  27. package/assets/themes/jp/finaleLandscape/manifest.json +128 -0
  28. package/assets/themes/jp/finalePortrait/manifest.json +128 -0
  29. package/dist/index.d.ts +2 -31
  30. package/dist/index.js +3 -895
  31. package/dist/index.js.map +1 -1
  32. package/dist/mai/best50/index.d.ts +34 -0
  33. package/dist/mai/best50/index.js +890 -0
  34. package/dist/mai/best50/index.js.map +1 -0
  35. package/dist/mai/best50/lib/divingFish/index.d.ts +82 -0
  36. package/dist/{lib → mai/best50/lib}/divingFish/index.js +68 -20
  37. package/dist/mai/best50/lib/divingFish/index.js.map +1 -0
  38. package/dist/{lib → mai/best50/lib}/index.d.ts +3 -3
  39. package/dist/{lib → mai/best50/lib}/index.js +1 -1
  40. package/dist/mai/best50/lib/index.js.map +1 -0
  41. package/dist/mai/best50/lib/kamaiTachi/index.d.ts +170 -0
  42. package/dist/mai/best50/lib/kamaiTachi/index.js +358 -0
  43. package/dist/mai/best50/lib/kamaiTachi/index.js.map +1 -0
  44. package/dist/{lib → mai/best50/lib}/lxns/index.d.ts +15 -7
  45. package/dist/{lib → mai/best50/lib}/lxns/index.js +42 -16
  46. package/dist/mai/best50/lib/lxns/index.js.map +1 -0
  47. package/dist/mai/chart/database.d.ts +11 -0
  48. package/dist/mai/chart/database.js +63 -0
  49. package/dist/mai/chart/database.js.map +1 -0
  50. package/dist/mai/chart/index.d.ts +4 -0
  51. package/dist/mai/chart/index.js +9 -0
  52. package/dist/mai/chart/index.js.map +1 -0
  53. package/dist/mai/index.d.ts +6 -0
  54. package/dist/mai/index.js +11 -0
  55. package/dist/mai/index.js.map +1 -0
  56. package/package.json +1 -1
  57. package/dist/lib/divingFish/index.d.ts +0 -50
  58. package/dist/lib/divingFish/index.js.map +0 -1
  59. package/dist/lib/index.js.map +0 -1
  60. package/dist/lib/kamaiTachi/index.d.ts +0 -111
  61. package/dist/lib/kamaiTachi/index.js +0 -194
  62. package/dist/lib/kamaiTachi/index.js.map +0 -1
  63. package/dist/lib/lxns/index.js.map +0 -1
  64. package/test/cn-2024-landscape.webp +0 -0
  65. package/test/cn-2024-portrait.webp +0 -0
  66. package/test/fetchConvert.js +0 -65
  67. package/test/jp-buddies-landscape.webp +0 -0
  68. package/test/jp-buddies-portrait.webp +0 -0
  69. package/test/jp-buddiesplus-landscape.webp +0 -0
  70. package/test/jp-buddiesplus-portrait.webp +0 -0
  71. package/test/jp-prism-landscape.webp +0 -0
  72. package/test/jp-prism-portrait.webp +0 -0
  73. package/test/jp-prismplus-landscape.webp +0 -0
  74. package/test/jp-prismplus-portrait.webp +0 -0
  75. package/test/testDraw.js +0 -745
package/test/testDraw.js DELETED
@@ -1,745 +0,0 @@
1
- const sharp = require("sharp");
2
- const upath = require("upath");
3
-
4
- (async () => {
5
- const { MaiDraw } = require("../dist");
6
- const maiDraw = new MaiDraw("../maimai-songs-database");
7
-
8
- const fs = require("fs");
9
-
10
- const themes = [
11
- "jp-prismplus-landscape",
12
- "jp-prismplus-portrait",
13
- "jp-prism-landscape",
14
- "jp-prism-portrait",
15
- "jp-buddiesplus-landscape",
16
- "jp-buddiesplus-portrait",
17
- "cn-2024-portrait",
18
- "cn-2024-landscape",
19
- "jp-buddies-landscape",
20
- "jp-buddies-portrait"
21
- ]
22
- for (let theme of themes) {
23
- const result = await maiDraw.draw(
24
- "SALT♪☆*♀∀#&@",
25
- 16384,
26
- [
27
- {
28
- chart: {
29
- id: 11375,
30
- name: "ミルキースター・シューティングスター",
31
- difficulty: 0,
32
- level: 3,
33
- maxDxScore: 123,
34
- },
35
- combo: 0,
36
- sync: 0,
37
- achievement: 51.2345,
38
- dxScore: 12,
39
- dxRating: 8,
40
- },
41
- {
42
- chart: {
43
- id: 647,
44
- name: "エイリアンエイリアン",
45
- difficulty: 1,
46
- level: 8,
47
- maxDxScore: 234,
48
- },
49
- combo: 1,
50
- sync: 1,
51
- achievement: 62.3456,
52
- dxScore: 123,
53
- dxRating: 18,
54
- },
55
- {
56
- chart: {
57
- id: 10690,
58
- name: "ダンスロボットダンス",
59
- difficulty: 2,
60
- level: 11.6,
61
- maxDxScore: 345,
62
- },
63
- combo: 2,
64
- sync: 2,
65
- achievement: 83.4567,
66
- dxScore: 234,
67
- dxRating: 128,
68
- },
69
- {
70
- chart: {
71
- id: 11600,
72
- name: "感情ディシーブ",
73
- difficulty: 3,
74
- level: 13.0,
75
- maxDxScore: 456,
76
- },
77
- combo: 3,
78
- sync: 3,
79
- achievement: 97.8901,
80
- dxScore: 345,
81
- dxRating: 238,
82
- },
83
- {
84
- chart: {
85
- id: 11637,
86
- name: "バグ",
87
- difficulty: 4,
88
- level: 13.9,
89
- maxDxScore: 567,
90
- },
91
- combo: 4,
92
- sync: 4,
93
- achievement: 98.1234,
94
- dxScore: 456,
95
- dxRating: 348,
96
- },
97
- {
98
- chart: {
99
- id: 834,
100
- name: "PANDORA PARADOXXX",
101
- difficulty: 5,
102
- level: 15.9,
103
- maxDxScore: 678,
104
- },
105
- combo: 4,
106
- sync: 5,
107
- achievement: 99.1234,
108
- dxScore: 567,
109
- dxRating: 458,
110
- },
111
- {
112
- chart: {
113
- id: 11555,
114
- name: "ヒバリ",
115
- difficulty: 3,
116
- level: 13.7,
117
- maxDxScore: 6666,
118
- },
119
- combo: 0,
120
- sync: 0,
121
- achievement: 100.1019,
122
- dxScore: 1700,
123
- dxRating: 289.73493936,
124
- },
125
- {
126
- chart: {
127
- id: 11563,
128
- name: "キャットラビング",
129
- difficulty: 3,
130
- level: 13.7,
131
- maxDxScore: 6666,
132
- },
133
- combo: 0,
134
- sync: 0,
135
- achievement: 100.6423,
136
- dxScore: 1687,
137
- dxRating: 288.1536,
138
- },
139
- {
140
- chart: {
141
- id: 11650,
142
- name: "ずんだもんの朝食 〜目覚ましずんラップ〜",
143
- difficulty: 3,
144
- level: 13.7,
145
- maxDxScore: 6666,
146
- },
147
- combo: 1,
148
- sync: 2,
149
- achievement: 100.3416,
150
- dxScore: 2008,
151
- dxRating: 286.09396992,
152
- },
153
- {
154
- chart: {
155
- id: 11596,
156
- name: "Vallista",
157
- difficulty: 2,
158
- level: 13.7,
159
- maxDxScore: 6666,
160
- },
161
- combo: 1,
162
- sync: 0,
163
- achievement: 100.5175,
164
- dxScore: 1395,
165
- dxRating: 281.4,
166
- },
167
- {
168
- chart: {
169
- id: 10315,
170
- name: "深海少女",
171
- difficulty: 3,
172
- level: 13.7,
173
- maxDxScore: 6666,
174
- },
175
- combo: 0,
176
- sync: 0,
177
- achievement: 100.0051,
178
- dxScore: 0,
179
- dxRating: 280.8143208,
180
- },
181
- {
182
- chart: {
183
- id: 11560,
184
- name: "阿修羅ちゃん",
185
- difficulty: 3,
186
- level: 13.7,
187
- maxDxScore: 6666,
188
- },
189
- combo: 0,
190
- sync: 1,
191
- achievement: 99.8646,
192
- dxScore: 1880,
193
- dxRating: 278.14288392,
194
- },
195
- {
196
- chart: {
197
- id: 11589,
198
- name: "DROPS feat. Such",
199
- difficulty: 3,
200
- level: 13.7,
201
- maxDxScore: 6666,
202
- },
203
- combo: 1,
204
- sync: 0,
205
- achievement: 99.8213,
206
- dxScore: 1694,
207
- dxRating: 278.02228476,
208
- },
209
- {
210
- chart: {
211
- id: 11526,
212
- name: "トノサマビーム",
213
- difficulty: 3,
214
- level: 13.7,
215
- maxDxScore: 6666,
216
- },
217
- combo: 1,
218
- sync: 0,
219
- achievement: 100.1681,
220
- dxScore: 2323,
221
- dxRating: 276.94476288,
222
- },
223
- {
224
- chart: {
225
- id: 11592,
226
- name: "花となれ",
227
- difficulty: 3,
228
- level: 13.7,
229
- maxDxScore: 6666,
230
- },
231
- combo: 1,
232
- sync: 0,
233
- achievement: 100.7423,
234
- dxScore: 883,
235
- dxRating: 274.6464,
236
- },
237
- ],
238
- [
239
- {
240
- chart: {
241
- id: 11451,
242
- name: "Transcend Lights",
243
- difficulty: 3,
244
- level: 13.7,
245
- maxDxScore: 6666,
246
- },
247
- combo: 2,
248
- sync: 0,
249
- achievement: 100.7521,
250
- dxScore: 1657,
251
- dxRating: 303.912,
252
- },
253
- {
254
- chart: {
255
- id: 11568,
256
- name: "INTERNET OVERDOSE",
257
- difficulty: 3,
258
- level: 13.7,
259
- maxDxScore: 6666,
260
- },
261
- combo: 0,
262
- sync: 1,
263
- achievement: 100.6577,
264
- dxScore: 2220,
265
- dxRating: 303.912,
266
- },
267
- {
268
- chart: {
269
- id: 11488,
270
- name: "スカーレット警察のゲットーパトロール24時",
271
- difficulty: 3,
272
- level: 13.7,
273
- maxDxScore: 6666,
274
- },
275
- combo: 1,
276
- sync: 0,
277
- achievement: 100.5492,
278
- dxScore: 1939,
279
- dxRating: 303.912,
280
- },
281
- {
282
- chart: {
283
- id: 835,
284
- name: "Believe the Rainbow",
285
- difficulty: 3,
286
- level: 13.7,
287
- maxDxScore: 6666,
288
- },
289
- combo: 2,
290
- sync: 0,
291
- achievement: 100.9224,
292
- dxScore: 1245,
293
- dxRating: 301.6608,
294
- },
295
- {
296
- chart: {
297
- id: 417,
298
- name: "ウミユリ海底譚",
299
- difficulty: 3,
300
- level: 13.7,
301
- maxDxScore: 6666,
302
- },
303
- combo: 2,
304
- sync: 0,
305
- achievement: 100.8178,
306
- dxScore: 1976,
307
- dxRating: 301.6608,
308
- },
309
- {
310
- chart: {
311
- id: 11433,
312
- name: "ヒトガタ",
313
- difficulty: 3,
314
- level: 13.7,
315
- maxDxScore: 6666,
316
- },
317
- combo: 1,
318
- sync: 1,
319
- achievement: 100.6644,
320
- dxScore: 2082,
321
- dxRating: 301.6608,
322
- },
323
- {
324
- chart: {
325
- id: 764,
326
- name: "フィクサ ー",
327
- difficulty: 3,
328
- level: 13.7,
329
- maxDxScore: 6666,
330
- },
331
- combo: 2,
332
- sync: 1,
333
- achievement: 100.6095,
334
- dxScore: 2066,
335
- dxRating: 301.6608,
336
- },
337
- {
338
- chart: {
339
- id: 11504,
340
- name: "ばかみたい【Taxi Driver Edition】",
341
- difficulty: 3,
342
- level: 13.7,
343
- maxDxScore: 6666,
344
- },
345
- combo: 1,
346
- sync: 0,
347
- achievement: 100.5023,
348
- dxScore: 729,
349
- dxRating: 301.6608,
350
- },
351
- {
352
- chart: {
353
- id: 566,
354
- name: "天火明命",
355
- difficulty: 3,
356
- level: 13.7,
357
- maxDxScore: 6666,
358
- },
359
- combo: 1,
360
- sync: 0,
361
- achievement: 100.0184,
362
- dxScore: 1888,
363
- dxRating: 300.29524416,
364
- },
365
- {
366
- chart: {
367
- id: 11437,
368
- name: "三妖精SAY YA!!!",
369
- difficulty: 3,
370
- level: 13.7,
371
- maxDxScore: 6666,
372
- },
373
- combo: 2,
374
- sync: 1,
375
- achievement: 100.7484,
376
- dxScore: 2217,
377
- dxRating: 299.4096,
378
- },
379
- {
380
- chart: {
381
- id: 674,
382
- name: "Magical Flavor",
383
- difficulty: 3,
384
- level: 13.7,
385
- maxDxScore: 6666,
386
- },
387
- combo: 1,
388
- sync: 0,
389
- achievement: 100.5723,
390
- dxScore: 1531,
391
- dxRating: 299.4096,
392
- },
393
- {
394
- chart: {
395
- id: 11355,
396
- name: "ラグトレイン",
397
- difficulty: 3,
398
- level: 13.7,
399
- maxDxScore: 6666,
400
- },
401
- combo: 3,
402
- sync: 0,
403
- achievement: 100.9318,
404
- dxScore: 2162,
405
- dxRating: 297.1584,
406
- },
407
- {
408
- chart: {
409
- id: 11523,
410
- name: "ViRTUS",
411
- difficulty: 2,
412
- level: 13.7,
413
- maxDxScore: 6666,
414
- },
415
- combo: 2,
416
- sync: 0,
417
- achievement: 100.619,
418
- dxScore: 1902,
419
- dxRating: 297.1584,
420
- },
421
- {
422
- chart: {
423
- id: 734,
424
- name: "ENERGY SYNERGY MATRIX",
425
- difficulty: 2,
426
- level: 13.7,
427
- maxDxScore: 6666,
428
- },
429
- combo: 2,
430
- sync: 0,
431
- achievement: 100.7419,
432
- dxScore: 0,
433
- dxRating: 292.656,
434
- },
435
- {
436
- chart: {
437
- id: 11429,
438
- name: "Love's Theme of BADASS ~バッド・アス 愛のテーマ~",
439
- difficulty: 2,
440
- level: 13.7,
441
- maxDxScore: 6666,
442
- },
443
- combo: 1,
444
- sync: 0,
445
- achievement: 100.6013,
446
- dxScore: 2108,
447
- dxRating: 292.656,
448
- },
449
- {
450
- chart: {
451
- id: 11311,
452
- name: "躯樹の墓守",
453
- difficulty: 2,
454
- level: 13.7,
455
- maxDxScore: 6666,
456
- },
457
- combo: 1,
458
- sync: 0,
459
- achievement: 100.553,
460
- dxScore: 0,
461
- dxRating: 292.656,
462
- },
463
- {
464
- chart: {
465
- id: 11401,
466
- name: "コスモポップファンクラブ",
467
- difficulty: 3,
468
- level: 13.7,
469
- maxDxScore: 6666,
470
- },
471
- combo: 1,
472
- sync: 0,
473
- achievement: 100.5111,
474
- dxScore: 0,
475
- dxRating: 292.656,
476
- },
477
- {
478
- chart: {
479
- id: 11289,
480
- name: "ベースラインやってる?笑",
481
- difficulty: 3,
482
- level: 13.7,
483
- maxDxScore: 6666,
484
- },
485
- combo: 1,
486
- sync: 0,
487
- achievement: 100.4342,
488
- dxScore: 1888,
489
- dxRating: 290.69674848,
490
- },
491
- {
492
- chart: {
493
- id: 836,
494
- name: "Good Bye, Mr. Jack",
495
- difficulty: 2,
496
- level: 13.7,
497
- maxDxScore: 6666,
498
- },
499
- combo: 2,
500
- sync: 0,
501
- achievement: 100.6728,
502
- dxScore: 0,
503
- dxRating: 290.4048,
504
- },
505
- {
506
- chart: {
507
- id: 11410,
508
- name: "ヴァンパイア",
509
- difficulty: 4,
510
- level: 13.7,
511
- maxDxScore: 6666,
512
- },
513
- combo: 1,
514
- sync: 0,
515
- achievement: 100.0379,
516
- dxScore: 1974,
517
- dxRating: 289.54969776,
518
- },
519
- {
520
- chart: {
521
- id: 793,
522
- name: "ロキ",
523
- difficulty: 4,
524
- level: 13.7,
525
- maxDxScore: 6666,
526
- },
527
- combo: 0,
528
- sync: 0,
529
- achievement: 100.4615,
530
- dxScore: 2216,
531
- dxRating: 288.6057972,
532
- },
533
- {
534
- chart: {
535
- id: 11485,
536
- name: "フォニイ",
537
- difficulty: 4,
538
- level: 13.7,
539
- maxDxScore: 6666,
540
- },
541
- combo: 0,
542
- sync: 0,
543
- achievement: 100.4614,
544
- dxScore: 1995,
545
- dxRating: 288.60550992,
546
- },
547
- {
548
- chart: {
549
- id: 308,
550
- name: "Back 2 Back",
551
- difficulty: 3,
552
- level: 13.7,
553
- maxDxScore: 6666,
554
- },
555
- combo: 1,
556
- sync: 0,
557
- achievement: 99.8058,
558
- dxScore: 1027,
559
- dxRating: 288.50862606,
560
- },
561
- {
562
- chart: {
563
- id: 11422,
564
- name: " ",
565
- difficulty: 3,
566
- level: 13.7,
567
- maxDxScore: 6666,
568
- },
569
- combo: 2,
570
- sync: 0,
571
- achievement: 100.7672,
572
- dxScore: 1666,
573
- dxRating: 288.1536,
574
- },
575
- {
576
- chart: {
577
- id: 11184,
578
- name: "Virtual to LIVE",
579
- difficulty: 4,
580
- level: 13.7,
581
- maxDxScore: 6666,
582
- },
583
- combo: 1,
584
- sync: 0,
585
- achievement: 100.7657,
586
- dxScore: 1862,
587
- dxRating: 288.1536,
588
- },
589
- {
590
- chart: {
591
- id: 11517,
592
- name: "最強STRONGER",
593
- difficulty: 2,
594
- level: 13.7,
595
- maxDxScore: 6666,
596
- },
597
- combo: 2,
598
- sync: 0,
599
- achievement: 100.7021,
600
- dxScore: 0,
601
- dxRating: 288.1536,
602
- },
603
- {
604
- chart: {
605
- id: 11572,
606
- name: "tape/stop/night",
607
- difficulty: 3,
608
- level: 13.7,
609
- maxDxScore: 6666,
610
- },
611
- combo: 1,
612
- sync: 0,
613
- achievement: 100.686,
614
- dxScore: 1526,
615
- dxRating: 288.1536,
616
- },
617
- {
618
- chart: {
619
- id: 772,
620
- name: "FREEDOM DiVE (tpz Overcute Remix)",
621
- difficulty: 2,
622
- level: 13.7,
623
- maxDxScore: 6666,
624
- },
625
- combo: 2,
626
- sync: 3,
627
- achievement: 100.5016,
628
- dxScore: 1803,
629
- dxRating: 288.1536,
630
- },
631
- {
632
- chart: {
633
- id: 690,
634
- name: "ダンスロボットダンス",
635
- difficulty: 3,
636
- level: 13.7,
637
- maxDxScore: 6666,
638
- },
639
- combo: 1,
640
- sync: 0,
641
- achievement: 100.2329,
642
- dxScore: 2201,
643
- dxRating: 287.94907512,
644
- },
645
- {
646
- chart: {
647
- id: 621,
648
- name: "ARROW",
649
- difficulty: 3,
650
- level: 13.7,
651
- maxDxScore: 6666,
652
- },
653
- combo: 1,
654
- sync: 0,
655
- achievement: 100.1502,
656
- dxScore: 0,
657
- dxRating: 287.71149456,
658
- },
659
- {
660
- chart: {
661
- id: 689,
662
- name: "Credits",
663
- difficulty: 2,
664
- level: 13.7,
665
- maxDxScore: 6666,
666
- },
667
- combo: 1,
668
- sync: 0,
669
- achievement: 100.1448,
670
- dxScore: 861,
671
- dxRating: 287.69598144,
672
- },
673
- {
674
- chart: {
675
- id: 189,
676
- name: "弱虫モンブラン",
677
- difficulty: 3,
678
- level: 13.7,
679
- maxDxScore: 6666,
680
- },
681
- combo: 4,
682
- sync: 0,
683
- achievement: 101,
684
- dxScore: 1312,
685
- dxRating: 285.9024,
686
- },
687
- {
688
- chart: {
689
- id: 11520,
690
- name: "独りんぼ エンヴィー",
691
- difficulty: 3,
692
- level: 13.7,
693
- maxDxScore: 6666,
694
- },
695
- combo: 2,
696
- sync: 0,
697
- achievement: 100.822,
698
- dxScore: 1642,
699
- dxRating: 285.9024,
700
- },
701
- {
702
- chart: {
703
- id: 432,
704
- name: "幸せになれる隠しコマンドがあるらしい",
705
- difficulty: 2,
706
- level: 13.7,
707
- maxDxScore: 6666,
708
- },
709
- combo: 2,
710
- sync: 0,
711
- achievement: 100.719,
712
- dxScore: 1462,
713
- dxRating: 285.9024,
714
- },
715
- {
716
- chart: {
717
- id: 603,
718
- name: "その群青が愛しかったようだった",
719
- difficulty: 3,
720
- level: 13.7,
721
- maxDxScore: 6666,
722
- },
723
- combo: 2,
724
- sync: 0,
725
- achievement: 100.702,
726
- dxScore: 0,
727
- dxRating: 285.9024,
728
- },
729
- ],
730
- {
731
- scale: 2,
732
- theme
733
- }
734
- );
735
- if (result) {
736
- fs.writeFileSync(upath.join(__dirname, `${theme}.webp`), await sharp(result).webp({
737
- quality: 60,
738
- }).toBuffer());
739
- console.log(`${theme} passed.`);
740
- } else {
741
- console.log(`${theme} failed!`);
742
- }
743
- }
744
- process.exit(0);
745
- })();