@rian8337/osu-strain-graph-generator 4.0.0-beta.2 → 4.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,55 +3,56 @@
3
3
  var osuBase = require('@rian8337/osu-base');
4
4
  var canvas = require('canvas');
5
5
 
6
+ /******************************************************************************
7
+ Copyright (c) Microsoft Corporation.
8
+
9
+ Permission to use, copy, modify, and/or distribute this software for any
10
+ purpose with or without fee is hereby granted.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
13
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
14
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
15
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
17
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18
+ PERFORMANCE OF THIS SOFTWARE.
19
+ ***************************************************************************** */
20
+ /* global Reflect, Promise, SuppressedError, Symbol */
21
+
22
+
23
+ function __awaiter(thisArg, _arguments, P, generator) {
24
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
25
+ return new (P || (P = Promise))(function (resolve, reject) {
26
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
27
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
28
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
29
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
30
+ });
31
+ }
32
+
33
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
34
+ var e = new Error(message);
35
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
36
+ };
37
+
6
38
  /**
7
39
  * Utility to draw a graph with only node-canvas.
8
40
  *
9
41
  * Used for creating strain graph of beatmaps.
10
42
  */
11
43
  class Chart {
12
- /**
13
- * The canvas instance of this chart.
14
- */
15
- canvas;
16
- /**
17
- * The 2D rendering surface for the drawing surface of this chart.
18
- */
19
- context;
20
- graphWidth;
21
- graphHeight;
22
- minX;
23
- minY;
24
- maxX;
25
- maxY;
26
- unitsPerTickX;
27
- unitsPerTickY;
28
- background;
29
- xLabel;
30
- yLabel;
31
- xValueType;
32
- yValueType;
33
- pointRadius;
34
- padding = 10;
35
- tickSize = 10;
36
- axisColor = "#555";
37
- font = "12pt Calibri";
38
- axisLabelFont = "bold 11pt Calibri";
39
- fontHeight = 12;
40
- baseLabelOffset = 15;
41
- rangeX;
42
- rangeY;
43
- numXTicks;
44
- numYTicks;
45
- x;
46
- y;
47
- width;
48
- height;
49
- scaleX;
50
- scaleY;
51
44
  /**
52
45
  * @param values Initializer options for the graph.
53
46
  */
54
47
  constructor(values) {
48
+ var _a;
49
+ this.padding = 10;
50
+ this.tickSize = 10;
51
+ this.axisColor = "#555";
52
+ this.font = "12pt Calibri";
53
+ this.axisLabelFont = "bold 11pt Calibri";
54
+ this.fontHeight = 12;
55
+ this.baseLabelOffset = 15;
55
56
  this.graphWidth = values.graphWidth;
56
57
  this.graphHeight = values.graphHeight;
57
58
  this.canvas = canvas.createCanvas(this.graphWidth, this.graphHeight);
@@ -67,7 +68,7 @@ class Chart {
67
68
  this.yLabel = values.yLabel;
68
69
  this.xValueType = values.xValueType;
69
70
  this.yValueType = values.yValueType;
70
- this.pointRadius = Math.max(0, values.pointRadius ?? 1);
71
+ this.pointRadius = Math.max(0, (_a = values.pointRadius) !== null && _a !== void 0 ? _a : 1);
71
72
  // Relationships
72
73
  this.rangeX = this.maxX - this.minX;
73
74
  this.rangeY = this.maxY - this.minY;
@@ -305,11 +306,25 @@ class Chart {
305
306
  /**
306
307
  * Time string parsing function for axis labels.
307
308
  */
308
- timeString(second) {
309
- return new Date(1000 * Math.ceil(second))
310
- .toISOString()
311
- .substr(11, 8)
312
- .replace(/^[0:]+/, "");
309
+ timeString(seconds) {
310
+ seconds = Math.trunc(seconds);
311
+ const days = Math.floor(seconds / 86400);
312
+ seconds -= days * 86400;
313
+ const hours = Math.floor(seconds / 3600);
314
+ seconds -= hours * 3600;
315
+ const minutes = Math.floor(seconds / 60);
316
+ seconds -= minutes * 60;
317
+ const final = [
318
+ minutes.toString(),
319
+ seconds.toString().padStart(2, "0"),
320
+ ];
321
+ if (hours > 0) {
322
+ final.unshift(hours.toString());
323
+ }
324
+ if (days > 0) {
325
+ final.unshift(days.toString());
326
+ }
327
+ return final.join(":");
313
328
  }
314
329
  }
315
330
 
@@ -320,57 +335,59 @@ class Chart {
320
335
  * @param beatmapsetID The beatmapset ID to get background image from. If omitted, the background will be plain white.
321
336
  * @param color The color of the graph.
322
337
  */
323
- async function getStrainChart(calculator, beatmapsetID, color = "#000000") {
324
- if ([
325
- calculator.strainPeaks.aimWithSliders.length,
326
- calculator.strainPeaks.aimWithoutSliders.length,
327
- calculator.strainPeaks.speed.length,
328
- calculator.strainPeaks.flashlight.length,
329
- ].some((v) => v === 0)) {
330
- return null;
331
- }
332
- const sectionLength = 400;
333
- const currentSectionEnd = Math.ceil(calculator.beatmap.hitObjects.objects[0].startTime / sectionLength) * sectionLength;
334
- const strainInformations = new Array(Math.max(calculator.strainPeaks.aimWithSliders.length, calculator.strainPeaks.speed.length, calculator.strainPeaks.flashlight.length));
335
- for (let i = 0; i < strainInformations.length; ++i) {
336
- const aimStrain = calculator.strainPeaks.aimWithSliders[i] ?? 0;
337
- const speedStrain = calculator.strainPeaks.speed[i] ?? 0;
338
- const flashlightStrain = calculator.strainPeaks.flashlight[i] ?? 0;
339
- strainInformations[i] = {
340
- time: (currentSectionEnd + sectionLength * i) / 1000,
341
- strain: calculator.mods.some((m) => m instanceof osuBase.ModFlashlight)
342
- ? (aimStrain + speedStrain + flashlightStrain) / 3
343
- : (aimStrain + speedStrain) / 2,
344
- };
345
- }
346
- const maxTime = strainInformations.at(-1).time ??
347
- calculator.objects.at(-1).object.endTime / 1000;
348
- const maxStrain = Math.max(...strainInformations.map((v) => {
349
- return v.strain;
350
- }), 1);
351
- const maxXUnits = 10;
352
- const maxYUnits = 10;
353
- const unitsPerTickX = Math.ceil(maxTime / maxXUnits / 10) * 10;
354
- const unitsPerTickY = Math.ceil(maxStrain / maxYUnits / 20) * 20;
355
- const chart = new Chart({
356
- graphWidth: 900,
357
- graphHeight: 250,
358
- minX: 0,
359
- minY: 0,
360
- maxX: Math.ceil(maxTime / unitsPerTickX) * unitsPerTickX,
361
- maxY: Math.ceil(maxStrain / unitsPerTickY) * unitsPerTickY,
362
- unitsPerTickX,
363
- unitsPerTickY,
364
- background: await canvas.loadImage(`https://assets.ppy.sh/beatmaps/${beatmapsetID}/covers/cover.jpg`).catch(() => {
365
- return undefined;
366
- }),
367
- xLabel: "Time",
368
- yLabel: "Strain",
369
- pointRadius: 0,
370
- xValueType: "time",
338
+ function getStrainChart(calculator, beatmapsetID, color = "#000000") {
339
+ var _a, _b, _c, _d;
340
+ return __awaiter(this, void 0, void 0, function* () {
341
+ if ([
342
+ calculator.strainPeaks.aimWithSliders.length,
343
+ calculator.strainPeaks.aimWithoutSliders.length,
344
+ calculator.strainPeaks.speed.length,
345
+ calculator.strainPeaks.flashlight.length,
346
+ ].some((v) => v === 0)) {
347
+ return null;
348
+ }
349
+ const sectionLength = 400;
350
+ const currentSectionEnd = Math.ceil(calculator.beatmap.hitObjects.objects[0].startTime / sectionLength) * sectionLength;
351
+ const strainInformations = new Array(Math.max(calculator.strainPeaks.aimWithSliders.length, calculator.strainPeaks.speed.length, calculator.strainPeaks.flashlight.length));
352
+ for (let i = 0; i < strainInformations.length; ++i) {
353
+ const aimStrain = (_a = calculator.strainPeaks.aimWithSliders[i]) !== null && _a !== void 0 ? _a : 0;
354
+ const speedStrain = (_b = calculator.strainPeaks.speed[i]) !== null && _b !== void 0 ? _b : 0;
355
+ const flashlightStrain = (_c = calculator.strainPeaks.flashlight[i]) !== null && _c !== void 0 ? _c : 0;
356
+ strainInformations[i] = {
357
+ time: (currentSectionEnd + sectionLength * i) / 1000,
358
+ strain: calculator.mods.some((m) => m instanceof osuBase.ModFlashlight)
359
+ ? (aimStrain + speedStrain + flashlightStrain) / 3
360
+ : (aimStrain + speedStrain) / 2,
361
+ };
362
+ }
363
+ const maxTime = (_d = strainInformations.at(-1).time) !== null && _d !== void 0 ? _d : calculator.objects.at(-1).object.endTime / 1000;
364
+ const maxStrain = Math.max(...strainInformations.map((v) => {
365
+ return v.strain;
366
+ }), 1);
367
+ const maxXUnits = 10;
368
+ const maxYUnits = 10;
369
+ const unitsPerTickX = Math.ceil(maxTime / maxXUnits / 10) * 10;
370
+ const unitsPerTickY = Math.ceil(maxStrain / maxYUnits / 20) * 20;
371
+ const chart = new Chart({
372
+ graphWidth: 900,
373
+ graphHeight: 250,
374
+ minX: 0,
375
+ minY: 0,
376
+ maxX: Math.ceil(maxTime / unitsPerTickX) * unitsPerTickX,
377
+ maxY: Math.ceil(maxStrain / unitsPerTickY) * unitsPerTickY,
378
+ unitsPerTickX,
379
+ unitsPerTickY,
380
+ background: yield canvas.loadImage(`https://assets.ppy.sh/beatmaps/${beatmapsetID}/covers/cover.jpg`).catch(() => {
381
+ return undefined;
382
+ }),
383
+ xLabel: "Time",
384
+ yLabel: "Strain",
385
+ pointRadius: 0,
386
+ xValueType: "time",
387
+ });
388
+ chart.drawArea(strainInformations.map((v) => new osuBase.Vector2(v.time, v.strain)), color);
389
+ return chart.getBuffer();
371
390
  });
372
- chart.drawArea(strainInformations.map((v) => new osuBase.Vector2(v.time, v.strain)), color);
373
- return chart.getBuffer();
374
391
  }
375
392
 
376
393
  module.exports = getStrainChart;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rian8337/osu-strain-graph-generator",
3
- "version": "4.0.0-beta.2",
3
+ "version": "4.0.0-beta.20",
4
4
  "description": "A module for generating strain graph of an osu!standard beatmap.",
5
5
  "keywords": [
6
6
  "osu",
@@ -12,9 +12,12 @@
12
12
  "main": "dist/index.js",
13
13
  "types": "typings/index.d.ts",
14
14
  "typedocMain": "src/index.ts",
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
15
18
  "files": [
16
- "dist/**",
17
- "typings/**"
19
+ "dist/index.js",
20
+ "typings/index.d.ts"
18
21
  ],
19
22
  "repository": {
20
23
  "type": "git",
@@ -23,20 +26,20 @@
23
26
  "scripts": {
24
27
  "build": "rollup -c ../../rollup.config.mjs",
25
28
  "lint": "eslint --ext ts",
26
- "prepare": "npm run build",
29
+ "prepublishOnly": "npm run build",
27
30
  "test": "echo \"No tests for this module\""
28
31
  },
29
32
  "bugs": {
30
33
  "url": "https://github.com/Rian8337/osu-droid-module/issues"
31
34
  },
32
35
  "dependencies": {
33
- "@rian8337/osu-base": "^4.0.0-beta.1",
34
- "@rian8337/osu-difficulty-calculator": "^4.0.0-beta.2",
35
- "@rian8337/osu-rebalance-difficulty-calculator": "^4.0.0-beta.2",
36
+ "@rian8337/osu-base": "^4.0.0-beta.19",
37
+ "@rian8337/osu-difficulty-calculator": "^4.0.0-beta.20",
38
+ "@rian8337/osu-rebalance-difficulty-calculator": "^4.0.0-beta.20",
36
39
  "canvas": "^2.9.0"
37
40
  },
38
41
  "publishConfig": {
39
42
  "access": "public"
40
43
  },
41
- "gitHead": "5b11d5b42932012bea2fbee5bfe0eee23db0f1bb"
44
+ "gitHead": "8e6d7449a4a949f0158f10b9130378e7368bd8aa"
42
45
  }
@@ -1,5 +1,5 @@
1
- import { DifficultyCalculator } from '@rian8337/osu-difficulty-calculator';
2
- import { DifficultyCalculator as DifficultyCalculator$1 } from '@rian8337/osu-rebalance-difficulty-calculator';
1
+ import { DifficultyCalculator, DifficultyHitObject, DifficultyAttributes } from '@rian8337/osu-difficulty-calculator';
2
+ import { DifficultyCalculator as DifficultyCalculator$1, DifficultyHitObject as DifficultyHitObject$1, DifficultyAttributes as DifficultyAttributes$1 } from '@rian8337/osu-rebalance-difficulty-calculator';
3
3
 
4
4
  /**
5
5
  * Generates the strain chart of a difficulty calculator and returns the chart as a buffer.
@@ -8,6 +8,6 @@ import { DifficultyCalculator as DifficultyCalculator$1 } from '@rian8337/osu-re
8
8
  * @param beatmapsetID The beatmapset ID to get background image from. If omitted, the background will be plain white.
9
9
  * @param color The color of the graph.
10
10
  */
11
- declare function getStrainChart(calculator: DifficultyCalculator | DifficultyCalculator$1, beatmapsetID?: number, color?: string): Promise<Buffer | null>;
11
+ declare function getStrainChart(calculator: DifficultyCalculator<DifficultyHitObject, DifficultyAttributes> | DifficultyCalculator$1<DifficultyHitObject$1, DifficultyAttributes$1>, beatmapsetID?: number, color?: string): Promise<Buffer | null>;
12
12
 
13
13
  export { getStrainChart as default };
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/Chart.ts","../src/index.ts"],"sourcesContent":[null,null],"names":["createCanvas","ModFlashlight","loadImage","Vector2"],"mappings":"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"}