gcm-database-local 1.1.1 → 1.1.2

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.
@@ -5,7 +5,7 @@ export declare class Database implements BaseDatabase<Chart> {
5
5
  constructor(_localDatabasePath: string);
6
6
  setLocalDatabasePath(path: string): boolean;
7
7
  hasLocalDatabase(): boolean;
8
- private cache;
8
+ private charts;
9
9
  private getLocalFilePath;
10
10
  getJacket(identifier: string, variant?: "DX" | "EX" | "CN"): Promise<{
11
11
  data: NonSharedBuffer;
@@ -21,7 +21,6 @@ export declare class Database implements BaseDatabase<Chart> {
21
21
  err: string;
22
22
  data?: undefined;
23
23
  }>;
24
- private getAllCharts;
25
24
  searchChart(payload: {
26
25
  title: string;
27
26
  level: number;
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Database = void 0;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
+ const chartStore_1 = require("../lib/chartStore");
9
10
  const getInternalLevelFromPresences_1 = require("../lib/getInternalLevelFromPresences");
10
- const cache_1 = require("@saltcute/cache");
11
11
  class Database {
12
12
  _localDatabasePath;
13
13
  constructor(_localDatabasePath) {
@@ -16,6 +16,7 @@ class Database {
16
16
  setLocalDatabasePath(path) {
17
17
  if (node_fs_1.default.existsSync(path)) {
18
18
  this._localDatabasePath = path;
19
+ this.charts.invalidate();
19
20
  return true;
20
21
  }
21
22
  else {
@@ -25,7 +26,7 @@ class Database {
25
26
  hasLocalDatabase() {
26
27
  return node_fs_1.default.existsSync(this._localDatabasePath);
27
28
  }
28
- cache = new cache_1.Cache("gcm-database-local/chunithm");
29
+ charts = new chartStore_1.ChartStore(() => node_path_1.default.join(this._localDatabasePath, "assets", "chunithm", "charts"));
29
30
  getLocalFilePath(identifier) {
30
31
  return node_path_1.default.join(this._localDatabasePath, "assets", "chunithm", "jackets", `${identifier}.png`);
31
32
  }
@@ -69,30 +70,10 @@ class Database {
69
70
  err: `Cannot find a chart with identifier ${identifier}.`,
70
71
  };
71
72
  }
72
- async getAllCharts() {
73
- const cached = await this.cache.get("all-charts");
74
- if (cached)
75
- return cached;
76
- const localFolderPath = node_path_1.default.join(this._localDatabasePath, "assets", "chunithm", "charts");
77
- const chartFolders = node_fs_1.default.readdirSync(localFolderPath);
78
- const songs = [];
79
- for (const folder of chartFolders) {
80
- const charts = node_fs_1.default.readdirSync(node_path_1.default.join(localFolderPath, folder));
81
- for (const chart of charts) {
82
- try {
83
- songs.push(require(node_path_1.default.join(localFolderPath, folder, chart)));
84
- }
85
- catch { }
86
- }
87
- }
88
- await this.cache.put("all-charts", songs, 15 * 60 * 1000); // 15 minutes.
89
- return songs;
90
- }
91
73
  async searchChart(payload, options) {
92
- const allSongs = await this.getAllCharts();
93
- const sortedCandidates = allSongs
94
- .filter((v) => v.title === payload.title &&
95
- v.difficulty === payload.difficulty)
74
+ const byTitle = await this.charts.get();
75
+ const sortedCandidates = (byTitle.get(payload.title) ?? [])
76
+ .filter((v) => v.difficulty === payload.difficulty)
96
77
  .map((v) => {
97
78
  const internalLevel = v.internalLevel ??
98
79
  (0, getInternalLevelFromPresences_1.getInternalLevelFromPresences)(v.optionalData.presences);
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/chunithm/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/chunithm/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Every chart of a game, loaded from the local database and kept in memory, indexed by title.
3
+ *
4
+ * Concurrent callers share a single load, so a cold store reads the database once.
5
+ */
6
+ export declare class ChartStore<C extends {
7
+ title: string;
8
+ }> {
9
+ private getFolderPath;
10
+ private ttl;
11
+ private loading?;
12
+ private loadedAt;
13
+ /**
14
+ * @param getFolderPath Path to the folder holding one subfolder of chart files per song.
15
+ * @param ttl Charts are reloaded from disk after this many milliseconds.
16
+ */
17
+ constructor(getFolderPath: () => string, ttl?: number);
18
+ get(): Promise<Map<string, C[]>>;
19
+ /**
20
+ * Drop the loaded charts, so the next call reads the database again.
21
+ */
22
+ invalidate(): void;
23
+ private load;
24
+ }
@@ -0,0 +1,71 @@
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.ChartStore = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ /**
10
+ * Every chart of a game, loaded from the local database and kept in memory, indexed by title.
11
+ *
12
+ * Concurrent callers share a single load, so a cold store reads the database once.
13
+ */
14
+ class ChartStore {
15
+ getFolderPath;
16
+ ttl;
17
+ loading;
18
+ loadedAt = 0;
19
+ /**
20
+ * @param getFolderPath Path to the folder holding one subfolder of chart files per song.
21
+ * @param ttl Charts are reloaded from disk after this many milliseconds.
22
+ */
23
+ constructor(getFolderPath, ttl = 15 * 60 * 1000) {
24
+ this.getFolderPath = getFolderPath;
25
+ this.ttl = ttl;
26
+ }
27
+ get() {
28
+ if (!this.loading || Date.now() - this.loadedAt > this.ttl) {
29
+ this.loadedAt = Date.now();
30
+ const loading = this.load();
31
+ this.loading = loading;
32
+ loading.catch(() => {
33
+ if (this.loading === loading)
34
+ this.loading = undefined;
35
+ });
36
+ }
37
+ return this.loading;
38
+ }
39
+ /**
40
+ * Drop the loaded charts, so the next call reads the database again.
41
+ */
42
+ invalidate() {
43
+ this.loading = undefined;
44
+ }
45
+ async load() {
46
+ const folderPath = this.getFolderPath();
47
+ const byTitle = new Map();
48
+ for (const folder of await node_fs_1.default.promises.readdir(folderPath)) {
49
+ const songPath = node_path_1.default.join(folderPath, folder);
50
+ for (const file of await node_fs_1.default.promises.readdir(songPath)) {
51
+ if (!file.endsWith(".json"))
52
+ continue;
53
+ let chart;
54
+ try {
55
+ chart = JSON.parse(await node_fs_1.default.promises.readFile(node_path_1.default.join(songPath, file), "utf-8"));
56
+ }
57
+ catch {
58
+ continue;
59
+ }
60
+ const charts = byTitle.get(chart.title);
61
+ if (charts)
62
+ charts.push(chart);
63
+ else
64
+ byTitle.set(chart.title, [chart]);
65
+ }
66
+ }
67
+ return byTitle;
68
+ }
69
+ }
70
+ exports.ChartStore = ChartStore;
71
+ //# sourceMappingURL=chartStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartStore.js","sourceRoot":"","sources":["../../src/lib/chartStore.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAE7B;;;;GAIG;AACH,MAAa,UAAU;IASP;IACA;IATJ,OAAO,CAA6B;IACpC,QAAQ,GAAG,CAAC,CAAC;IAErB;;;OAGG;IACH,YACY,aAA2B,EAC3B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;QADpB,kBAAa,GAAb,aAAa,CAAc;QAC3B,QAAG,GAAH,GAAG,CAAiB;IAC7B,CAAC;IAEG,GAAG;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBACf,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;oBAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YAC3D,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,UAAU;QACb,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,IAAI;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,MAAM,iBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,iBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACtC,IAAI,KAAQ,CAAC;gBACb,IAAI,CAAC;oBACD,KAAK,GAAG,IAAI,CAAC,KAAK,CACd,MAAM,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CACtB,mBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EACzB,OAAO,CACV,CACJ,CAAC;gBACN,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,MAAM;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;oBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAzDD,gCAyDC"}
@@ -5,7 +5,7 @@ export declare class Database implements BaseDatabase<Chart> {
5
5
  constructor(_localDatabasePath: string);
6
6
  setLocalDatabasePath(path: string): boolean;
7
7
  hasLocalDatabase(): boolean;
8
- private cache;
8
+ private charts;
9
9
  private getLocalFilePath;
10
10
  getJacket(identifier: string, variant?: "DX" | "EX" | "CN"): Promise<{
11
11
  data: NonSharedBuffer;
@@ -21,7 +21,6 @@ export declare class Database implements BaseDatabase<Chart> {
21
21
  err: string;
22
22
  data?: undefined;
23
23
  }>;
24
- private getAllCharts;
25
24
  searchChart(payload: {
26
25
  title: string;
27
26
  level: number;
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Database = void 0;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
+ const chartStore_1 = require("../lib/chartStore");
9
10
  const getInternalLevelFromPresences_1 = require("../lib/getInternalLevelFromPresences");
10
- const cache_1 = require("@saltcute/cache");
11
11
  class Database {
12
12
  _localDatabasePath;
13
13
  constructor(_localDatabasePath) {
@@ -16,6 +16,7 @@ class Database {
16
16
  setLocalDatabasePath(path) {
17
17
  if (node_fs_1.default.existsSync(path)) {
18
18
  this._localDatabasePath = path;
19
+ this.charts.invalidate();
19
20
  return true;
20
21
  }
21
22
  else {
@@ -25,7 +26,7 @@ class Database {
25
26
  hasLocalDatabase() {
26
27
  return node_fs_1.default.existsSync(this._localDatabasePath);
27
28
  }
28
- cache = new cache_1.Cache("gcm-database-local/maimai");
29
+ charts = new chartStore_1.ChartStore(() => node_path_1.default.join(this._localDatabasePath, "assets", "maimai", "charts"));
29
30
  getLocalFilePath(identifier) {
30
31
  return node_path_1.default.join(this._localDatabasePath, "assets", "maimai", "jackets", `${identifier}.png`);
31
32
  }
@@ -69,30 +70,10 @@ class Database {
69
70
  err: `Cannot find a chart with identifier ${identifier}.`,
70
71
  };
71
72
  }
72
- async getAllCharts() {
73
- const cached = await this.cache.get("all-charts");
74
- if (cached)
75
- return cached;
76
- const localFolderPath = node_path_1.default.join(this._localDatabasePath, "assets", "maimai", "charts");
77
- const chartFolders = node_fs_1.default.readdirSync(localFolderPath);
78
- const songs = [];
79
- for (const folder of chartFolders) {
80
- const charts = node_fs_1.default.readdirSync(node_path_1.default.join(localFolderPath, folder));
81
- for (const chart of charts) {
82
- try {
83
- songs.push(require(node_path_1.default.join(localFolderPath, folder, chart)));
84
- }
85
- catch { }
86
- }
87
- }
88
- await this.cache.put("all-charts", songs, 15 * 60 * 1000); // 15 minutes.
89
- return songs;
90
- }
91
73
  async searchChart(payload, options) {
92
- const allSongs = await this.getAllCharts();
93
- const sortedCandidates = allSongs
94
- .filter((v) => v.title === payload.title &&
95
- v.type === payload.type &&
74
+ const byTitle = await this.charts.get();
75
+ const sortedCandidates = (byTitle.get(payload.title) ?? [])
76
+ .filter((v) => v.type === payload.type &&
96
77
  v.difficulty === payload.difficulty)
97
78
  .map((v) => {
98
79
  const internalLevel = v.internalLevel ??
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/maimai/database.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAC7B,sFAAmF;AACnF,2CAAwC;AAQxC,MAAa,QAAQ;IACG;IAApB,YAAoB,kBAA0B;QAA1B,uBAAkB,GAAlB,kBAAkB,CAAQ;IAAG,CAAC;IAE3C,oBAAoB,CAAC,IAAY;QACpC,IAAI,iBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEM,gBAAgB;QACnB,OAAO,iBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,GAAG,IAAI,aAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,gBAAgB,CAAC,UAAkB;QACvC,OAAO,mBAAI,CAAC,IAAI,CACZ,IAAI,CAAC,kBAAkB,EACvB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,GAAG,UAAU,MAAM,CACtB,CAAC;IACN,CAAC;IACM,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,OAA4B;QACnE,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,iBAAiB,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YAClE,IACI,OAAO;gBACP,iBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,EACzD,CAAC;gBACC,UAAU,GAAG,iBAAiB,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACJ,4DAA4D;gBAC5D,UAAU,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,CAAC;QACL,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,MAAM,GACR,iBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,iBAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,EAAE,GAAG,EAAE,6BAA6B,UAAU,GAAG,EAAE,CAAC;QAC/D,CAAC;IACL,CAAC;IACM,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,UAAsB;QAC5D,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAC3B,IAAI,CAAC,kBAAkB,EACvB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAC3B,GAAG,UAAU,OAAO,CACvB,CAAC;QACF,IAAI,iBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACD,OAAO;oBACH,IAAI,EAAE,IAAI,CAAC,KAAK,CACZ,iBAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CACjC;iBACb,CAAC;YACN,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO;oBACH,GAAG,EAAE,mBAAmB,UAAU,IAAI,UAAU,GAAG;iBACtD,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO;YACH,GAAG,EAAE,uCAAuC,UAAU,GAAG;SAC5D,CAAC;IACN,CAAC;IACO,KAAK,CAAC,YAAY;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,MAAM;YAAE,OAAO,MAAiB,CAAC;QACrC,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAC7B,IAAI,CAAC,kBAAkB,EACvB,QAAQ,EACR,QAAQ,EACR,QAAQ,CACX,CAAC;QACF,MAAM,YAAY,GAAG,iBAAE,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACrD,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,iBAAE,CAAC,WAAW,CAAC,mBAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YAClE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACD,KAAK,CAAC,IAAI,CACN,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CACrD,CAAC;gBACN,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACd,CAAC;QACL,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc;QACzE,OAAO,KAAK,CAAC;IACjB,CAAC;IACM,KAAK,CAAC,WAAW,CACpB,OAKC,EACD,OAEE;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,gBAAgB,GAAG,QAAQ;aAC5B,MAAM,CACH,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;YACzB,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;YACvB,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAC1C;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACP,MAAM,aAAa,GACf,CAAC,CAAC,aAAa;gBACf,IAAA,6DAA6B,EAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,aAAa,EAAE,CAAC;gBAChB,OAAO;oBACH,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;iBAClD,CAAC;YACN,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAyC,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC;aACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO;YACH,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,IAAI,EAAE,CAAC;SACjE,CAAC;IACN,CAAC;CACJ;AAxID,4BAwIC"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/maimai/database.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export declare class Database implements BaseDatabase<Chart> {
5
5
  constructor(_localDatabasePath: string);
6
6
  setLocalDatabasePath(path: string): boolean;
7
7
  hasLocalDatabase(): boolean;
8
- private cache;
8
+ private charts;
9
9
  private getLocalFilePath;
10
10
  getJacket(identifier: string, variant?: "DX" | "EX" | "CN"): Promise<{
11
11
  data: NonSharedBuffer;
@@ -21,7 +21,6 @@ export declare class Database implements BaseDatabase<Chart> {
21
21
  err: string;
22
22
  data?: undefined;
23
23
  }>;
24
- private getAllCharts;
25
24
  searchChart(payload: {
26
25
  title: string;
27
26
  level: number;
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Database = void 0;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
+ const chartStore_1 = require("../lib/chartStore");
9
10
  const getInternalLevelFromPresences_1 = require("../lib/getInternalLevelFromPresences");
10
- const cache_1 = require("@saltcute/cache");
11
11
  class Database {
12
12
  _localDatabasePath;
13
13
  constructor(_localDatabasePath) {
@@ -16,6 +16,7 @@ class Database {
16
16
  setLocalDatabasePath(path) {
17
17
  if (node_fs_1.default.existsSync(path)) {
18
18
  this._localDatabasePath = path;
19
+ this.charts.invalidate();
19
20
  return true;
20
21
  }
21
22
  else {
@@ -25,7 +26,7 @@ class Database {
25
26
  hasLocalDatabase() {
26
27
  return node_fs_1.default.existsSync(this._localDatabasePath);
27
28
  }
28
- cache = new cache_1.Cache("gcm-database-local/ongeki");
29
+ charts = new chartStore_1.ChartStore(() => node_path_1.default.join(this._localDatabasePath, "assets", "ongeki", "charts"));
29
30
  getLocalFilePath(identifier) {
30
31
  return node_path_1.default.join(this._localDatabasePath, "assets", "ongeki", "jackets", `${identifier}.png`);
31
32
  }
@@ -69,30 +70,10 @@ class Database {
69
70
  err: `Cannot find a chart with identifier ${identifier}.`,
70
71
  };
71
72
  }
72
- async getAllCharts() {
73
- const cached = await this.cache.get("all-charts");
74
- if (cached)
75
- return cached;
76
- const localFolderPath = node_path_1.default.join(this._localDatabasePath, "assets", "ongeki", "charts");
77
- const chartFolders = node_fs_1.default.readdirSync(localFolderPath);
78
- const songs = [];
79
- for (const folder of chartFolders) {
80
- const charts = node_fs_1.default.readdirSync(node_path_1.default.join(localFolderPath, folder));
81
- for (const chart of charts) {
82
- try {
83
- songs.push(require(node_path_1.default.join(localFolderPath, folder, chart)));
84
- }
85
- catch { }
86
- }
87
- }
88
- await this.cache.put("all-charts", songs, 15 * 60 * 1000); // 15 minutes.
89
- return songs;
90
- }
91
73
  async searchChart(payload, options) {
92
- const allSongs = await this.getAllCharts();
93
- const sortedCandidates = allSongs
94
- .filter((v) => v.title === payload.title &&
95
- v.difficulty === payload.difficulty)
74
+ const byTitle = await this.charts.get();
75
+ const sortedCandidates = (byTitle.get(payload.title) ?? [])
76
+ .filter((v) => v.difficulty === payload.difficulty)
96
77
  .map((v) => {
97
78
  const internalLevel = v.internalLevel ??
98
79
  (0, getInternalLevelFromPresences_1.getInternalLevelFromPresences)(v.optionalData.presences);
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/ongeki/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/ongeki/database.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gcm-database-local",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "A GekiChuMai Metadata database",
5
5
  "homepage": "https://github.com/saltcute/gcm-database-local#readme",
6
6
  "bugs": {
@@ -31,7 +31,6 @@
31
31
  },
32
32
  "devDependencies": {
33
33
  "@biomejs/biome": "^2.5.0",
34
- "@types/memory-cache": "^0.2.6",
35
34
  "@types/node": "^25.9.3",
36
35
  "rimraf": "^6.1.3",
37
36
  "tsc-alias": "^1.8.17",
@@ -39,8 +38,5 @@
39
38
  },
40
39
  "peerDependencies": {
41
40
  "gcm-database": "^1.0.3"
42
- },
43
- "dependencies": {
44
- "@saltcute/cache": "^1.0.2"
45
41
  }
46
42
  }