beatsaber-bot-core 0.2.0-dev.5 → 0.2.0-dev.7
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/lib/api/base/blRequset.js +7 -7
- package/lib/api/base/blRequset.js.map +1 -1
- package/lib/utils/cache.d.ts +2 -0
- package/lib/utils/cache.js +30 -0
- package/lib/utils/cache.js.map +1 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.js +79 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/ws/beatsaver.d.ts +3 -1
- package/lib/ws/beatsaver.js +4 -6
- package/lib/ws/beatsaver.js.map +1 -1
- package/package.json +2 -1
- package/lib/utils.d.ts +0 -2
- package/lib/utils.js +0 -25
- package/lib/utils.js.map +0 -1
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.blRequest = void 0;
|
4
|
-
const
|
4
|
+
const utils_1 = require("../../utils");
|
5
5
|
const blRequest = (cfg) => {
|
6
6
|
let host = 'https://api.beatleader.xyz';
|
7
7
|
if (host.endsWith('/')) {
|
@@ -14,11 +14,11 @@ const blRequest = (cfg) => {
|
|
14
14
|
return host + path;
|
15
15
|
};
|
16
16
|
const getPlayerScore = async (req) => {
|
17
|
-
const res = await
|
17
|
+
const res = await (0, utils_1.fetchWithCache)(url(`/score/${req.leaderboardContext}/${req.playerID}/${req.hash}/${req.diff}/${req.mode}`));
|
18
18
|
return res;
|
19
19
|
};
|
20
20
|
const getTokenInfo = async (accessToken) => {
|
21
|
-
return
|
21
|
+
return (0, utils_1.fetchWithCache)(url(`/oauth2/identity`), {
|
22
22
|
headers: {
|
23
23
|
Authorization: `Bearer ${accessToken}`,
|
24
24
|
},
|
@@ -43,16 +43,16 @@ const blRequest = (cfg) => {
|
|
43
43
|
return res;
|
44
44
|
};
|
45
45
|
const getPlayerInfo = async (accountId) => {
|
46
|
-
return
|
46
|
+
return (0, utils_1.fetchWithCache)(url(`/player/${accountId}`));
|
47
47
|
};
|
48
48
|
const getPlayerScores = async (accountId) => {
|
49
|
-
return
|
49
|
+
return (0, utils_1.fetchWithCache)(url(`/player/${accountId}/scores?count=24&sortBy=pp`));
|
50
50
|
};
|
51
51
|
const getPlayerPinnedScores = async (accountId) => {
|
52
|
-
return
|
52
|
+
return (0, utils_1.fetchWithCache)(url(`/player/${accountId}/pinnedScores`));
|
53
53
|
};
|
54
54
|
const getBeatScore = async (scoreId) => {
|
55
|
-
return
|
55
|
+
return (0, utils_1.fetchWithCache)(url(`/score/${scoreId}`));
|
56
56
|
};
|
57
57
|
return {
|
58
58
|
getPlayerScore,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"blRequset.js","sourceRoot":"","sources":["../../../src/api/base/blRequset.ts"],"names":[],"mappings":";;;AASA,
|
1
|
+
{"version":3,"file":"blRequset.js","sourceRoot":"","sources":["../../../src/api/base/blRequset.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.cache = void 0;
|
4
|
+
const lru_cache_1 = require("lru-cache");
|
5
|
+
const options = {
|
6
|
+
max: 500,
|
7
|
+
// for use with tracking overall storage size
|
8
|
+
maxSize: 5000,
|
9
|
+
// sizeCalculation: (value, key) => {
|
10
|
+
// return 1
|
11
|
+
// },
|
12
|
+
// for use when you need to clean up something when objects
|
13
|
+
// are evicted from the cache
|
14
|
+
// dispose: (value, key) => {},
|
15
|
+
// how long to live in ms
|
16
|
+
ttl: 1000 * 60 * 5,
|
17
|
+
// return stale items before removing from cache?
|
18
|
+
allowStale: false,
|
19
|
+
updateAgeOnGet: true,
|
20
|
+
updateAgeOnHas: true,
|
21
|
+
// // async method to use for cache.fetch(), for
|
22
|
+
// // stale-while-revalidate type of behavior
|
23
|
+
// fetchMethod: async (
|
24
|
+
// key,
|
25
|
+
// staleValue,
|
26
|
+
// { options, signal, context }
|
27
|
+
// ) => {},
|
28
|
+
};
|
29
|
+
exports.cache = new lru_cache_1.LRUCache(options);
|
30
|
+
//# sourceMappingURL=cache.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,GAAG;IAER,6CAA6C;IAC7C,OAAO,EAAE,IAAI;IACb,qCAAqC;IACrC,aAAa;IACb,KAAK;IAEL,2DAA2D;IAC3D,6BAA6B;IAC7B,+BAA+B;IAE/B,yBAAyB;IACzB,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC;IAElB,iDAAiD;IAEjD,UAAU,EAAE,KAAK;IAEjB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IAEpB,gDAAgD;IAChD,6CAA6C;IAC7C,uBAAuB;IACvB,SAAS;IACT,gBAAgB;IAChB,iCAAiC;IACjC,WAAW;CACZ,CAAA;AAEY,QAAA,KAAK,GAAG,IAAI,oBAAQ,CAAC,OAAO,CAAC,CAAA"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
export * from './cache';
|
2
|
+
export declare const fetchWithCache: <T>(...args: any[]) => Promise<T>;
|
3
|
+
export declare const handleWSEventWithCache: (fnThat: any, fn: any, ttl: any, eventIdSelector: any, eventParser: any) => (event: any) => Promise<void>;
|
4
|
+
export declare const sleep: (millsec?: number) => Promise<void>;
|
5
|
+
export declare const convertDiff: (diff: string | null) => any;
|
@@ -0,0 +1,79 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
exports.convertDiff = exports.sleep = exports.handleWSEventWithCache = exports.fetchWithCache = void 0;
|
18
|
+
const cache_1 = require("../utils/cache");
|
19
|
+
const lru_cache_1 = require("lru-cache");
|
20
|
+
__exportStar(require("./cache"), exports);
|
21
|
+
const fetchWithCache = async (...args) => {
|
22
|
+
const res = cache_1.cache.get(args);
|
23
|
+
if (res) {
|
24
|
+
return res;
|
25
|
+
}
|
26
|
+
const result = await fetch(args).then((res) => res.json());
|
27
|
+
cache_1.cache.set(args, result);
|
28
|
+
return result;
|
29
|
+
};
|
30
|
+
exports.fetchWithCache = fetchWithCache;
|
31
|
+
// export const fetch = async (...args) => {}
|
32
|
+
const handleWSEventWithCache = (fnThat, fn, ttl, eventIdSelector, eventParser) => {
|
33
|
+
const WSCache = new lru_cache_1.LRUCache({
|
34
|
+
max: 500,
|
35
|
+
size: 50,
|
36
|
+
sizeCalculation: (value, key) => {
|
37
|
+
return 1;
|
38
|
+
},
|
39
|
+
// for use with tracking overall storage size
|
40
|
+
maxSize: 5000,
|
41
|
+
allowStale: false,
|
42
|
+
updateAgeOnGet: false,
|
43
|
+
noUpdateTTL: true,
|
44
|
+
ttl: ttl,
|
45
|
+
});
|
46
|
+
return async function (event) {
|
47
|
+
const data = eventParser(event);
|
48
|
+
const key = eventIdSelector(data);
|
49
|
+
if (WSCache.get(key)) {
|
50
|
+
// console.log(`${key} hit cache, skip it, remainingTTL: `, WSCache.getRemainingTTL(key))
|
51
|
+
return;
|
52
|
+
}
|
53
|
+
WSCache.set(key, true);
|
54
|
+
await fn.apply(fnThat, [data]);
|
55
|
+
};
|
56
|
+
};
|
57
|
+
exports.handleWSEventWithCache = handleWSEventWithCache;
|
58
|
+
const sleep = async (millsec = 5000) => {
|
59
|
+
await new Promise((resolve, reject) => {
|
60
|
+
setTimeout(resolve, millsec);
|
61
|
+
});
|
62
|
+
};
|
63
|
+
exports.sleep = sleep;
|
64
|
+
const diffMap = {
|
65
|
+
E: 'Easy',
|
66
|
+
N: 'Normal',
|
67
|
+
H: 'Hard',
|
68
|
+
EX: 'Expert',
|
69
|
+
EP: 'ExpertPlus',
|
70
|
+
'EX+': 'ExpertPlus',
|
71
|
+
};
|
72
|
+
const convertDiff = (diff) => {
|
73
|
+
if (!diff) {
|
74
|
+
return diff;
|
75
|
+
}
|
76
|
+
return diffMap[diff.toUpperCase()];
|
77
|
+
};
|
78
|
+
exports.convertDiff = convertDiff;
|
79
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAAqC;AACrC,yCAAoC;AAEpC,0CAAuB;AAEhB,MAAM,cAAc,GAAG,KAAK,EAAK,GAAG,IAAI,EAAc,EAAE;IAC7D,MAAM,GAAG,GAAG,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAQ,CAAA;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAO,CAAC,CAAA;IACtE,aAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvB,OAAO,MAAW,CAAA;AACpB,CAAC,CAAA;AARY,QAAA,cAAc,kBAQ1B;AAED,6CAA6C;AAEtC,MAAM,sBAAsB,GAAG,CACpC,MAAM,EACN,EAAE,EACF,GAAG,EACH,eAAe,EACf,WAAW,EACX,EAAE;IACF,MAAM,OAAO,GAAG,IAAI,oBAAQ,CAAC;QAC3B,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,EAAE;QACR,eAAe,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,OAAO,CAAC,CAAA;QACV,CAAC;QACD,6CAA6C;QAC7C,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,WAAW,EAAE,IAAI;QACjB,GAAG,EAAE,GAAG;KACT,CAAC,CAAA;IAEF,OAAO,KAAK,WAAW,KAAU;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,yFAAyF;YACzF,OAAM;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACtB,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAChC,CAAC,CAAA;AACH,CAAC,CAAA;AA/BY,QAAA,sBAAsB,0BA+BlC;AAEM,MAAM,KAAK,GAAG,KAAK,EAAE,UAAkB,IAAI,EAAE,EAAE;IACpD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAJY,QAAA,KAAK,SAIjB;AAED,MAAM,OAAO,GAAG;IACd,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;CACpB,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAE,EAAE;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,WAAW,eAKvB"}
|
package/lib/ws/beatsaver.d.ts
CHANGED
@@ -3,6 +3,7 @@ import { Logger } from '../interface/logger';
|
|
3
3
|
import { RenderService } from '../img-render';
|
4
4
|
import { Config } from '../config';
|
5
5
|
import { DB } from '../interface/db';
|
6
|
+
import { BeatSaverWSEvent } from '../api/interfaces/beatsaver';
|
6
7
|
import { BotService, Session } from '../interface';
|
7
8
|
export declare class BeatSaverWSHandler<T> implements WSHandler {
|
8
9
|
private readonly logger;
|
@@ -14,5 +15,6 @@ export declare class BeatSaverWSHandler<T> implements WSHandler {
|
|
14
15
|
constructor(db: DB<T>, render: RenderService, logger: Logger, config: Config, botService: BotService<T, Session<T>>);
|
15
16
|
onOpen(): void;
|
16
17
|
onClose(): void;
|
17
|
-
|
18
|
+
BSWSHandler(data: BeatSaverWSEvent): Promise<void>;
|
19
|
+
onEvent: (event: any) => Promise<void>;
|
18
20
|
}
|
package/lib/ws/beatsaver.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.BeatSaverWSHandler = void 0;
|
4
|
+
const utils_1 = require("../utils");
|
4
5
|
class BeatSaverWSHandler {
|
5
6
|
logger;
|
6
7
|
render;
|
@@ -21,8 +22,7 @@ class BeatSaverWSHandler {
|
|
21
22
|
onClose() {
|
22
23
|
this.logger.info('BeatsaverWS closed');
|
23
24
|
}
|
24
|
-
async
|
25
|
-
const data = JSON.parse(event.toString());
|
25
|
+
async BSWSHandler(data) {
|
26
26
|
// this.logger.info('Beatsaver message received', data.type, data?.msg?.id)
|
27
27
|
if (data.type === 'MAP_UPDATE') {
|
28
28
|
const bsmap = data.msg;
|
@@ -33,10 +33,7 @@ class BeatSaverWSHandler {
|
|
33
33
|
return;
|
34
34
|
}
|
35
35
|
const userId = bsmap.uploader.id;
|
36
|
-
const subscriptions = await this.db.getAllSubScriptionByUIDAndPlatform
|
37
|
-
userId,
|
38
|
-
'beatsaver',
|
39
|
-
]);
|
36
|
+
const subscriptions = await this.db.getAllSubScriptionByUIDAndPlatform(userId, 'beatsaver');
|
40
37
|
const restSub = subscriptions.filter((it) => it.subscribe.type == 'beatsaver-map' && it.subscribe.enable == true);
|
41
38
|
// cacheService
|
42
39
|
if (restSub.length === 0)
|
@@ -54,6 +51,7 @@ class BeatSaverWSHandler {
|
|
54
51
|
}
|
55
52
|
}
|
56
53
|
}
|
54
|
+
onEvent = (0, utils_1.handleWSEventWithCache)(this, this.BSWSHandler, 1000 * 60 * 15, (data) => `ws.bs.${data.type === 'MAP_DELETE' ? data.msg : data.msg.id}.${data.type}`, (event) => JSON.parse(event.toString()));
|
57
55
|
}
|
58
56
|
exports.BeatSaverWSHandler = BeatSaverWSHandler;
|
59
57
|
//# sourceMappingURL=beatsaver.js.map
|
package/lib/ws/beatsaver.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"beatsaver.js","sourceRoot":"","sources":["../../src/ws/beatsaver.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"beatsaver.js","sourceRoot":"","sources":["../../src/ws/beatsaver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "beatsaber-bot-core",
|
3
3
|
"description": "一个用于新版 Steam 家庭的库存监控 Bot 插件",
|
4
|
-
"version": "0.2.0-dev.
|
4
|
+
"version": "0.2.0-dev.7",
|
5
5
|
"types": "lib/index.d.ts",
|
6
6
|
"files": [
|
7
7
|
"lib"
|
@@ -56,6 +56,7 @@
|
|
56
56
|
"chart.js": "^4.4.3",
|
57
57
|
"country-flag-icons": "^1.5.11",
|
58
58
|
"dayjs": "^1.11.3",
|
59
|
+
"lru-cache": "^11.0.1",
|
59
60
|
"lucide-react": "^0.379.0",
|
60
61
|
"react": "^18.3.1",
|
61
62
|
"react-dom": "^18.3.1"
|
package/lib/utils.d.ts
DELETED
package/lib/utils.js
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.convertDiff = exports.sleep = void 0;
|
4
|
-
const sleep = async (millsec = 5000) => {
|
5
|
-
await new Promise((resolve, reject) => {
|
6
|
-
setTimeout(resolve, millsec);
|
7
|
-
});
|
8
|
-
};
|
9
|
-
exports.sleep = sleep;
|
10
|
-
const diffMap = {
|
11
|
-
E: 'Easy',
|
12
|
-
N: 'Normal',
|
13
|
-
H: 'Hard',
|
14
|
-
EX: 'Expert',
|
15
|
-
EP: 'ExpertPlus',
|
16
|
-
'EX+': 'ExpertPlus',
|
17
|
-
};
|
18
|
-
const convertDiff = (diff) => {
|
19
|
-
if (!diff) {
|
20
|
-
return diff;
|
21
|
-
}
|
22
|
-
return diffMap[diff.toUpperCase()];
|
23
|
-
};
|
24
|
-
exports.convertDiff = convertDiff;
|
25
|
-
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,KAAK,GAAG,KAAK,EAAE,UAAkB,IAAI,EAAE,EAAE;IACpD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAJY,QAAA,KAAK,SAIjB;AAED,MAAM,OAAO,GAAG;IACd,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;CACpB,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAE,EAAE;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,WAAW,eAKvB"}
|