Commit c8ae1051 authored by nanahira's avatar nanahira

catchup

parent e46d7037
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
"@aws-sdk/util-format-url": "^3.38.0", "@aws-sdk/util-format-url": "^3.38.0",
"class-transformer": "^0.4.0", "class-transformer": "^0.4.0",
"moment": "^2.29.1", "moment": "^2.29.1",
"schemastery-gen": "^2.0.0", "schemastery-gen": "^2.2.4",
"source-map-support": "^0.5.20" "source-map-support": "^0.5.20"
}, },
"devDependencies": { "devDependencies": {
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.1", "eslint-plugin-prettier": "^3.4.1",
"koishi": "^4.0.0-beta.3", "koishi": "^4.0.0-beta.4",
"prettier": "^2.4.1", "prettier": "^2.4.1",
"raw-loader": "^4.0.2", "raw-loader": "^4.0.2",
"ts-loader": "^9.2.6", "ts-loader": "^9.2.6",
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
"webpack-cli": "^4.9.1" "webpack-cli": "^4.9.1"
}, },
"peerDependencies": { "peerDependencies": {
"koishi": "^4.0.0-beta.3" "koishi": "^4.0.0-beta.4"
} }
}, },
"node_modules/@aws-crypto/crc32": { "node_modules/@aws-crypto/crc32": {
...@@ -1308,31 +1308,19 @@ ...@@ -1308,31 +1308,19 @@
} }
}, },
"node_modules/@koishijs/core": { "node_modules/@koishijs/core": {
"version": "4.0.0-beta.3", "version": "4.0.0-beta.4",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-beta.3.tgz", "resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-beta.4.tgz",
"integrity": "sha512-ZCdjZOQ4yNN49/LdOzHKo61j/S+GwqckM116tXrZYF7gNHRZ5486HFJqJjYDCYO3n2AZvQ4nV6w8OSaoIXIPEQ==", "integrity": "sha512-i+66ZR3mSAIm1pJmC21QID8QhqJDdJ7zmZ8pCn3mPcfZFGiwL8MDMvwuDvG2ceCyILmtzmXwstURrc2tjB+QPg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@koishijs/utils": "^5.0.0-beta.1", "@koishijs/utils": "^5.0.0-beta.1",
"fastest-levenshtein": "^1.0.12", "fastest-levenshtein": "^1.0.12",
"schemastery": "^2.0.0" "schemastery": "^2.1.0"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/@koishijs/plugin-cache-lru": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-cache-lru/-/plugin-cache-lru-1.0.0-beta.2.tgz",
"integrity": "sha512-RkLf6Gb+bvJcfBv9ZtfsEFo7NcCr+buQgiKccllfU5rANvUW5uXlPmjcTmV6AaKAr7fDZsCR3GRusiJtzS7STQ==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
"peerDependencies": {
"koishi": "^4.0.0-beta.3"
}
},
"node_modules/@koishijs/utils": { "node_modules/@koishijs/utils": {
"version": "5.0.0-beta.1", "version": "5.0.0-beta.1",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-beta.1.tgz", "resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-beta.1.tgz",
...@@ -4821,14 +4809,13 @@ ...@@ -4821,14 +4809,13 @@
} }
}, },
"node_modules/koishi": { "node_modules/koishi": {
"version": "4.0.0-beta.3", "version": "4.0.0-beta.4",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-beta.3.tgz", "resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-beta.4.tgz",
"integrity": "sha512-sWTOU4maJnsRU7w8Upw8rBT1aZ0zEfN9Cs02tR2UP7qdmZiRTyrjWWFElaMhmnoj+6nTH7Udihmwb4MwbBimfA==", "integrity": "sha512-H0ci/bZ+wHDCnNmLFM125RI+cdprz3McJLEbyK43tGsGuf2y13BuFb+j1ovb6FBRuT3SXlDqH+BpVMlCV2ZaVg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@koa/router": "^10.1.1", "@koa/router": "^10.1.1",
"@koishijs/core": "^4.0.0-beta.3", "@koishijs/core": "^4.0.0-beta.4",
"@koishijs/plugin-cache-lru": "^1.0.0-beta.2",
"@koishijs/utils": "^5.0.0-beta.1", "@koishijs/utils": "^5.0.0-beta.1",
"@types/koa": "*", "@types/koa": "*",
"@types/koa__router": "*", "@types/koa__router": "*",
...@@ -6034,21 +6021,21 @@ ...@@ -6034,21 +6021,21 @@
} }
}, },
"node_modules/schemastery": { "node_modules/schemastery": {
"version": "2.0.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-2.0.0.tgz", "resolved": "https://registry.npmjs.org/schemastery/-/schemastery-2.1.0.tgz",
"integrity": "sha512-g628Fvc8cY3Laoyz+v45qZGiClwhTj0MsiGF+tSVlUh+hqYf6kVkTaWdIHNGhfj11h9QzRrs0A4wfvQZuHg3iA==" "integrity": "sha512-D5wGNn5lc8GnhTzSl2ClH6RwUB69NMUrIXn6qWJVZSSq1fJtEodL9zXoJUbzoLQlL7rGMuO6entajhZvJY25Tw=="
}, },
"node_modules/schemastery-gen": { "node_modules/schemastery-gen": {
"version": "2.0.0", "version": "2.2.4",
"resolved": "https://registry.npmjs.org/schemastery-gen/-/schemastery-gen-2.0.0.tgz", "resolved": "https://registry.npmjs.org/schemastery-gen/-/schemastery-gen-2.2.4.tgz",
"integrity": "sha512-lTttqIWwNM8nizqUpUvJOERtb+Su4qkNe5Lp0ruINiZlCuN/HBCAOmf+OcdAlWLW8BRAY+xIzf4o1Kl043HVVQ==", "integrity": "sha512-WHneTi+RSo28DRMV/Nxspw/Vyv0c2vExBNskxRTdf/Dik6ZTwF4cC5y9eSas+99kctqgxJKBBBcf9vp9mqPYzQ==",
"dependencies": { "dependencies": {
"lodash": "^4.17.21", "lodash": "^4.17.21",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"typed-reflector": "^1.0.5" "typed-reflector": "^1.0.8"
}, },
"peerDependencies": { "peerDependencies": {
"schemastery": "^2.0.0" "schemastery": "^2.1.0"
} }
}, },
"node_modules/semver": { "node_modules/semver": {
...@@ -6674,9 +6661,9 @@ ...@@ -6674,9 +6661,9 @@
} }
}, },
"node_modules/typed-reflector": { "node_modules/typed-reflector": {
"version": "1.0.5", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.5.tgz", "resolved": "https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.8.tgz",
"integrity": "sha512-uVXjRyfia44NftErLxahyXgXN2C9GhLtFvVnUxdjwU4fRn0dFI+MbqEKy8oYAMdVkC8xRh8xm3r4w/C1aYZMXg==", "integrity": "sha512-Gc2y1jdXpBrRDhTth80ABcmZjL/4Jmx+GrBf7uvn4BXW4J+kj5V3IjA+GQl/n+3ye7SgoEO6HOiDhac1H+mKgw==",
"dependencies": { "dependencies": {
"reflect-metadata": "^0.1.13" "reflect-metadata": "^0.1.13"
} }
...@@ -8372,23 +8359,14 @@ ...@@ -8372,23 +8359,14 @@
} }
}, },
"@koishijs/core": { "@koishijs/core": {
"version": "4.0.0-beta.3", "version": "4.0.0-beta.4",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-beta.3.tgz", "resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-beta.4.tgz",
"integrity": "sha512-ZCdjZOQ4yNN49/LdOzHKo61j/S+GwqckM116tXrZYF7gNHRZ5486HFJqJjYDCYO3n2AZvQ4nV6w8OSaoIXIPEQ==", "integrity": "sha512-i+66ZR3mSAIm1pJmC21QID8QhqJDdJ7zmZ8pCn3mPcfZFGiwL8MDMvwuDvG2ceCyILmtzmXwstURrc2tjB+QPg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@koishijs/utils": "^5.0.0-beta.1", "@koishijs/utils": "^5.0.0-beta.1",
"fastest-levenshtein": "^1.0.12", "fastest-levenshtein": "^1.0.12",
"schemastery": "^2.0.0" "schemastery": "^2.1.0"
}
},
"@koishijs/plugin-cache-lru": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-cache-lru/-/plugin-cache-lru-1.0.0-beta.2.tgz",
"integrity": "sha512-RkLf6Gb+bvJcfBv9ZtfsEFo7NcCr+buQgiKccllfU5rANvUW5uXlPmjcTmV6AaKAr7fDZsCR3GRusiJtzS7STQ==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
} }
}, },
"@koishijs/utils": { "@koishijs/utils": {
...@@ -11089,14 +11067,13 @@ ...@@ -11089,14 +11067,13 @@
} }
}, },
"koishi": { "koishi": {
"version": "4.0.0-beta.3", "version": "4.0.0-beta.4",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-beta.3.tgz", "resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-beta.4.tgz",
"integrity": "sha512-sWTOU4maJnsRU7w8Upw8rBT1aZ0zEfN9Cs02tR2UP7qdmZiRTyrjWWFElaMhmnoj+6nTH7Udihmwb4MwbBimfA==", "integrity": "sha512-H0ci/bZ+wHDCnNmLFM125RI+cdprz3McJLEbyK43tGsGuf2y13BuFb+j1ovb6FBRuT3SXlDqH+BpVMlCV2ZaVg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@koa/router": "^10.1.1", "@koa/router": "^10.1.1",
"@koishijs/core": "^4.0.0-beta.3", "@koishijs/core": "^4.0.0-beta.4",
"@koishijs/plugin-cache-lru": "^1.0.0-beta.2",
"@koishijs/utils": "^5.0.0-beta.1", "@koishijs/utils": "^5.0.0-beta.1",
"@types/koa": "*", "@types/koa": "*",
"@types/koa__router": "*", "@types/koa__router": "*",
...@@ -12019,18 +11996,18 @@ ...@@ -12019,18 +11996,18 @@
} }
}, },
"schemastery": { "schemastery": {
"version": "2.0.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-2.0.0.tgz", "resolved": "https://registry.npmjs.org/schemastery/-/schemastery-2.1.0.tgz",
"integrity": "sha512-g628Fvc8cY3Laoyz+v45qZGiClwhTj0MsiGF+tSVlUh+hqYf6kVkTaWdIHNGhfj11h9QzRrs0A4wfvQZuHg3iA==" "integrity": "sha512-D5wGNn5lc8GnhTzSl2ClH6RwUB69NMUrIXn6qWJVZSSq1fJtEodL9zXoJUbzoLQlL7rGMuO6entajhZvJY25Tw=="
}, },
"schemastery-gen": { "schemastery-gen": {
"version": "2.0.0", "version": "2.2.4",
"resolved": "https://registry.npmjs.org/schemastery-gen/-/schemastery-gen-2.0.0.tgz", "resolved": "https://registry.npmjs.org/schemastery-gen/-/schemastery-gen-2.2.4.tgz",
"integrity": "sha512-lTttqIWwNM8nizqUpUvJOERtb+Su4qkNe5Lp0ruINiZlCuN/HBCAOmf+OcdAlWLW8BRAY+xIzf4o1Kl043HVVQ==", "integrity": "sha512-WHneTi+RSo28DRMV/Nxspw/Vyv0c2vExBNskxRTdf/Dik6ZTwF4cC5y9eSas+99kctqgxJKBBBcf9vp9mqPYzQ==",
"requires": { "requires": {
"lodash": "^4.17.21", "lodash": "^4.17.21",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"typed-reflector": "^1.0.5" "typed-reflector": "^1.0.8"
} }
}, },
"semver": { "semver": {
...@@ -12491,9 +12468,9 @@ ...@@ -12491,9 +12468,9 @@
} }
}, },
"typed-reflector": { "typed-reflector": {
"version": "1.0.5", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.5.tgz", "resolved": "https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.8.tgz",
"integrity": "sha512-uVXjRyfia44NftErLxahyXgXN2C9GhLtFvVnUxdjwU4fRn0dFI+MbqEKy8oYAMdVkC8xRh8xm3r4w/C1aYZMXg==", "integrity": "sha512-Gc2y1jdXpBrRDhTth80ABcmZjL/4Jmx+GrBf7uvn4BXW4J+kj5V3IjA+GQl/n+3ye7SgoEO6HOiDhac1H+mKgw==",
"requires": { "requires": {
"reflect-metadata": "^0.1.13" "reflect-metadata": "^0.1.13"
} }
......
...@@ -36,11 +36,11 @@ ...@@ -36,11 +36,11 @@
"@aws-sdk/util-format-url": "^3.38.0", "@aws-sdk/util-format-url": "^3.38.0",
"class-transformer": "^0.4.0", "class-transformer": "^0.4.0",
"moment": "^2.29.1", "moment": "^2.29.1",
"schemastery-gen": "^2.0.0", "schemastery-gen": "^2.2.4",
"source-map-support": "^0.5.20" "source-map-support": "^0.5.20"
}, },
"peerDependencies": { "peerDependencies": {
"koishi": "^4.0.0-beta.3" "koishi": "^4.0.0-beta.4"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^16.11.6", "@types/node": "^16.11.6",
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.1", "eslint-plugin-prettier": "^3.4.1",
"koishi": "^4.0.0-beta.3", "koishi": "^4.0.0-beta.4",
"prettier": "^2.4.1", "prettier": "^2.4.1",
"raw-loader": "^4.0.2", "raw-loader": "^4.0.2",
"ts-loader": "^9.2.6", "ts-loader": "^9.2.6",
......
...@@ -21,21 +21,21 @@ export const s3Schema = Schema.object({ ...@@ -21,21 +21,21 @@ export const s3Schema = Schema.object({
credentials: credentialsSchema, credentials: credentialsSchema,
}); });
@RegisterSchema({ desc: '发送卡组的置' }) @RegisterSchema({ description: '发送卡组的置' })
export class DeckFetchConfig { export class DeckFetchConfig {
@DefineSchema({ desc: 'S3 配置', schema: s3Schema }) @DefineSchema({ description: 'S3 配置', type: s3Schema })
s3: S3ClientConfig; s3: S3ClientConfig;
@DefineSchema({ desc: '请求的 Host 字段' }) @DefineSchema({ description: '请求的 Host 字段' })
host: string; host: string;
@DefineSchema({ desc: '存储桶' }) @DefineSchema({ description: '存储桶' })
bucket: string; bucket: string;
@DefineSchema({ desc: '卡组路径前缀', default: '' }) @DefineSchema({ description: '卡组路径前缀', default: '' })
prefix: string; prefix: string;
@DefineSchema({ desc: 'URL 有效期', default: 600 }) @DefineSchema({ description: 'URL 有效期', default: 600 })
urlAge: number; urlAge: number;
S3Client(): S3Client { S3Client(): S3Client {
...@@ -62,37 +62,37 @@ export class DeckFetchConfig { ...@@ -62,37 +62,37 @@ export class DeckFetchConfig {
} }
} }
@RegisterSchema({ desc: '比赛过程的设置' }) @RegisterSchema({ description: '比赛过程的设置' })
export class TournamentConfig { export class TournamentConfig {
@DefineSchema({ @DefineSchema({
desc: '服务器 API 连接后台,不带任何路径和尾随斜杠', description: '服务器 API 连接后台,不带任何路径和尾随斜杠',
}) })
endpoint: string; endpoint: string;
@DefineSchema({ desc: '服务器后台用户名' }) @DefineSchema({ description: '服务器后台用户名' })
username: string; username: string;
@DefineSchema({ desc: '服务器后台密码' }) @DefineSchema({ description: '服务器后台密码' })
password: string; password: string;
@DefineSchema({ @DefineSchema({
desc: 'Challonge API Key', description: 'Challonge API Key',
}) })
challongeKey: string; challongeKey: string;
@DefineSchema({ @DefineSchema({
desc: 'Challonge 比赛 ID', description: 'Challonge 比赛 ID',
}) })
challongeTournamentId: string; challongeTournamentId: string;
@DefineSchema({ @DefineSchema({
desc: 'Challonge 缓存时间', description: 'Challonge 缓存时间',
default: 30000, default: 30000,
}) })
challongeCacheTTL: number; challongeCacheTTL: number;
@DefineSchema({ @DefineSchema({
desc: 'Challonge URL 前缀', description: 'Challonge URL 前缀',
default: 'https://api.challonge.com/v1/tournaments/', default: 'https://api.challonge.com/v1/tournaments/',
}) })
challongeUrlPrefix: string; challongeUrlPrefix: string;
...@@ -124,8 +124,7 @@ export class TournamentConfig { ...@@ -124,8 +124,7 @@ export class TournamentConfig {
export class YGOTournamentPluginConfig { export class YGOTournamentPluginConfig {
@DefineSchema({ @DefineSchema({
type: 'object', type: 'object',
allowUnknown: true, description: '裁判接口作用域',
desc: '裁判接口作用域',
required: true, required: true,
}) })
judgeSelection: Selection; judgeSelection: Selection;
......
...@@ -14,6 +14,7 @@ declare module 'koishi' { ...@@ -14,6 +14,7 @@ declare module 'koishi' {
export const name = 'ygotournament'; export const name = 'ygotournament';
const plugin = new YGOTournamentPlugin(); const plugin = new YGOTournamentPlugin();
export const schema = plugin.schema; export const schema = plugin.schema;
export const using = ['cache'];
export function apply(ctx: Context, config: YGOTournamentPluginConfig) { export function apply(ctx: Context, config: YGOTournamentPluginConfig) {
ctx.plugin(plugin, config); ctx.plugin(plugin, config);
} }
...@@ -300,9 +300,7 @@ export class YGOTournamentPlugin { ...@@ -300,9 +300,7 @@ export class YGOTournamentPlugin {
if (!this.config.isTournamentEnabled()) { if (!this.config.isTournamentEnabled()) {
return; return;
} }
this.ctx.on('service/cache', () => { this.ctx.cache.table('lateDeclarationTime', { maxAge: 3600 * 1000 });
this.ctx.cache.table('lateDeclarationTime', { maxAge: 3600 * 1000 });
});
this.ctx this.ctx
.command('tournament/currentmatch', '获取当前对局') .command('tournament/currentmatch', '获取当前对局')
.shortcut('获取当前对局') .shortcut('获取当前对局')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment