Commit 4ebc5848 authored by nanahira's avatar nanahira

bump

parent 901fe03c
......@@ -10,7 +10,7 @@
"license": "MIT",
"dependencies": {
"aragami": "^1.1.1",
"koishi-thirdeye": "^11.0.7"
"koishi-thirdeye": "^11.0.9"
},
"devDependencies": {
"@koishijs/plugin-console": "^4.1.1",
......@@ -37,7 +37,7 @@
"ws": "^8.8.1"
},
"peerDependencies": {
"koishi": "^4.8.3"
"koishi": "^4.8.4"
}
},
"node_modules/@ampproject/remapping": {
......@@ -1139,16 +1139,16 @@
}
},
"node_modules/@koishijs/core": {
"version": "4.8.3",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.8.3.tgz",
"integrity": "sha512-tgj6tv+ZWgJ7FXBEM2piQbLKqVjH3tDPn+EB6M95Ih4+YwU4dz8yunNTXlvE6GL65IwNEMUgjrEY5LScqVg1Ng==",
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.8.4.tgz",
"integrity": "sha512-lkqaS6gVTajxqBszGN5ey0cj52vcdzi5DTh0ZYnfeumjuChUewC/yG5uHh69jzqQ+diRi5jhYygBP13b9aJC6Q==",
"peer": true,
"dependencies": {
"@koishijs/utils": "^6.0.0",
"@satorijs/core": "^1.0.6",
"@satorijs/core": "^1.0.7",
"cordis": "^2.0.6",
"fastest-levenshtein": "^1.0.12",
"minato": "^1.2.3"
"fastest-levenshtein": "^1.0.14",
"minato": "^1.2.4"
}
},
"node_modules/@koishijs/plugin-console": {
......@@ -1265,9 +1265,9 @@
}
},
"node_modules/@satorijs/core": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-1.0.6.tgz",
"integrity": "sha512-TUbBmHWUXiUhWyNbM2tIN/if6VvhS4waF1HfAmZM+omWlZ42V+BY6Dl7JWGKk2zreq+VXsrUri7M4hgKon1QWg==",
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-1.0.9.tgz",
"integrity": "sha512-/Zx33Ufw3bIC9U//Vf2A6KmQ5LTisi4fWn882/euk66sMHyBPsiE0kWQi4OnKxkqEX/0bn5Hyh7cZX7/2cou3g==",
"peer": true,
"dependencies": {
"@satorijs/message": "^1.0.1",
......@@ -1282,13 +1282,13 @@
"peer": true
},
"node_modules/@satorijs/satori": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-1.0.6.tgz",
"integrity": "sha512-+rNi5NWbO6Sny3BjBO9wxsgTn/kqy9OsObQ4p6xMpsnBiNAQnqUnVFQ2ze3Aaru2EJQJIXnNPnY3JMaayebREA==",
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-1.0.9.tgz",
"integrity": "sha512-UU3+1IQjKyzJlmjZ5ir+VSVawGz+m/06kDfokPtjs3Atl20QkBkzAGT6UO4YDlcAu+melWgQYl1HmU5wPo6bIA==",
"peer": true,
"dependencies": {
"@koa/router": "^10.1.1",
"@satorijs/core": "^1.0.6",
"@satorijs/core": "^1.0.9",
"@types/koa": "*",
"@types/koa__router": "*",
"@types/ws": "^8.5.3",
......@@ -1300,8 +1300,8 @@
"portfinder": "^1.0.28",
"proxy-agent": "^5.0.0",
"reggol": "^1.0.3",
"schemastery": "^3.5.0",
"ws": "^8.6.0"
"schemastery": "^3.5.1",
"ws": "^8.8.1"
},
"engines": {
"node": ">=12.0.0"
......@@ -2746,9 +2746,9 @@
}
},
"node_modules/cordis-decorators": {
"version": "1.0.18",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.18.tgz",
"integrity": "sha512-Q18OCfxAoMuG6UnpKDP51aL6CufW2jp22hSJInAgzaB+YPAPRrgdhMs53qCx6hajYuWpgUQ+lipFcVL6TSuxBA==",
"version": "1.0.19",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.19.tgz",
"integrity": "sha512-ELMLhrn1KLEfNDU9P5eF0Ze/tYf0gwvsyGxwS7dA3iR57n6koIL1XMp8ae7RqCzO7bia93f3uTyL3wJfOKkkAQ==",
"dependencies": {
"lodash": "^4.17.21",
"mustache": "^4.2.0",
......@@ -5503,15 +5503,15 @@
}
},
"node_modules/koishi": {
"version": "4.8.3",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.8.3.tgz",
"integrity": "sha512-2FXVGoOn+TicAtV1ZvHpn58h9FRmudcj4VipLt3zvzxS/FIVN766dTu11IhRGCcwOjLEscGsGHAXLAQAJs6giA==",
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.8.4.tgz",
"integrity": "sha512-E8tW5fz0WauUwgRl8siqzO2J6uJPi5CWGgPE8OwaR2MJsQxL06p6kR0hJAvXf3b8ugXRR0Wdsox9A0Mt6WQydQ==",
"peer": true,
"dependencies": {
"@koishijs/core": "^4.8.3",
"@koishijs/core": "^4.8.4",
"@koishijs/utils": "^6.0.0",
"@satorijs/satori": "^1.0.6",
"file-type": "^16.5.3",
"@satorijs/satori": "^1.0.7",
"file-type": "^16.5.4",
"ns-require": "^1.1.4"
},
"engines": {
......@@ -5519,17 +5519,17 @@
}
},
"node_modules/koishi-thirdeye": {
"version": "11.0.7",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.0.7.tgz",
"integrity": "sha512-BltlqU5qCHFgEadmiZOQXR2DYJP7wqSVqtUDklvKSn7J6LJRdEGV63E9OFcC0LIlCpjUautqHku6bvZ4oadlFw==",
"version": "11.0.9",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.0.9.tgz",
"integrity": "sha512-ATPX7VVFs8EDkgpfR59Stn5msVQVmk35+7Ue/+UqxYHifnfWafDK14ydbHx8JvglcjTu8tiR/yjaF1Z/JngLfQ==",
"dependencies": {
"lodash": "^4.17.21",
"minato-decorators": "^2.0.8",
"rxjs": "^7.5.6",
"satori-decorators": "^1.0.11"
"satori-decorators": "^1.0.12"
},
"peerDependencies": {
"koishi": "^4.8.3",
"koishi": "^4.8.4",
"schemastery": "^3.4.3"
}
},
......@@ -5752,9 +5752,9 @@
}
},
"node_modules/minato": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/minato/-/minato-1.2.3.tgz",
"integrity": "sha512-06+ytX+prjYykoaqYe48tAGRbbG5WME1MEpb1WQUPhT6qxGSYmeqJyFX97Hlux4HruJfKpRCzsX6dhYRc9XkTA==",
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minato/-/minato-1.2.4.tgz",
"integrity": "sha512-YnlM7WKTKY1I6cKccpnmnKU7zkCi48xfWxorVdjIAt+Tpv7YwIw/VQNcz1vq9HQJW0Utk5e0mr+nQGoC2ae/yQ==",
"peer": true,
"dependencies": {
"cosmokit": "^1.2.1",
......@@ -6725,13 +6725,13 @@
"peer": true
},
"node_modules/satori-decorators": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/satori-decorators/-/satori-decorators-1.0.11.tgz",
"integrity": "sha512-k58rG/JqiySFEJISBt0yZN2Jo278PYmHI/Q/0kbphTMqORNXkMbtdOao7lYtgosRq/Qntefg87qZCW5OZYv0rg==",
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/satori-decorators/-/satori-decorators-1.0.12.tgz",
"integrity": "sha512-DUfWfkC0+4sS2TUlodoYYxrQYrTIambjL+Y2TwClvPdRHV+BigHPpLT68QVjUiId0a3VuMKLJdbszfb/MQJbDA==",
"dependencies": {
"@types/koa": "^2.13.5",
"@types/koa__router": "^8.0.11",
"cordis-decorators": "^1.0.18",
"cordis-decorators": "^1.0.19",
"lodash": "^4.17.21"
},
"peerDependencies": {
......@@ -8890,16 +8890,16 @@
}
},
"@koishijs/core": {
"version": "4.8.3",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.8.3.tgz",
"integrity": "sha512-tgj6tv+ZWgJ7FXBEM2piQbLKqVjH3tDPn+EB6M95Ih4+YwU4dz8yunNTXlvE6GL65IwNEMUgjrEY5LScqVg1Ng==",
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.8.4.tgz",
"integrity": "sha512-lkqaS6gVTajxqBszGN5ey0cj52vcdzi5DTh0ZYnfeumjuChUewC/yG5uHh69jzqQ+diRi5jhYygBP13b9aJC6Q==",
"peer": true,
"requires": {
"@koishijs/utils": "^6.0.0",
"@satorijs/core": "^1.0.6",
"@satorijs/core": "^1.0.7",
"cordis": "^2.0.6",
"fastest-levenshtein": "^1.0.12",
"minato": "^1.2.3"
"fastest-levenshtein": "^1.0.14",
"minato": "^1.2.4"
}
},
"@koishijs/plugin-console": {
......@@ -8991,9 +8991,9 @@
}
},
"@satorijs/core": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-1.0.6.tgz",
"integrity": "sha512-TUbBmHWUXiUhWyNbM2tIN/if6VvhS4waF1HfAmZM+omWlZ42V+BY6Dl7JWGKk2zreq+VXsrUri7M4hgKon1QWg==",
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-1.0.9.tgz",
"integrity": "sha512-/Zx33Ufw3bIC9U//Vf2A6KmQ5LTisi4fWn882/euk66sMHyBPsiE0kWQi4OnKxkqEX/0bn5Hyh7cZX7/2cou3g==",
"peer": true,
"requires": {
"@satorijs/message": "^1.0.1",
......@@ -9008,13 +9008,13 @@
"peer": true
},
"@satorijs/satori": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-1.0.6.tgz",
"integrity": "sha512-+rNi5NWbO6Sny3BjBO9wxsgTn/kqy9OsObQ4p6xMpsnBiNAQnqUnVFQ2ze3Aaru2EJQJIXnNPnY3JMaayebREA==",
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-1.0.9.tgz",
"integrity": "sha512-UU3+1IQjKyzJlmjZ5ir+VSVawGz+m/06kDfokPtjs3Atl20QkBkzAGT6UO4YDlcAu+melWgQYl1HmU5wPo6bIA==",
"peer": true,
"requires": {
"@koa/router": "^10.1.1",
"@satorijs/core": "^1.0.6",
"@satorijs/core": "^1.0.9",
"@types/koa": "*",
"@types/koa__router": "*",
"@types/ws": "^8.5.3",
......@@ -9026,8 +9026,8 @@
"portfinder": "^1.0.28",
"proxy-agent": "^5.0.0",
"reggol": "^1.0.3",
"schemastery": "^3.5.0",
"ws": "^8.6.0"
"schemastery": "^3.5.1",
"ws": "^8.8.1"
}
},
"@sinclair/typebox": {
......@@ -10214,9 +10214,9 @@
}
},
"cordis-decorators": {
"version": "1.0.18",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.18.tgz",
"integrity": "sha512-Q18OCfxAoMuG6UnpKDP51aL6CufW2jp22hSJInAgzaB+YPAPRrgdhMs53qCx6hajYuWpgUQ+lipFcVL6TSuxBA==",
"version": "1.0.19",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.19.tgz",
"integrity": "sha512-ELMLhrn1KLEfNDU9P5eF0Ze/tYf0gwvsyGxwS7dA3iR57n6koIL1XMp8ae7RqCzO7bia93f3uTyL3wJfOKkkAQ==",
"requires": {
"lodash": "^4.17.21",
"mustache": "^4.2.0",
......@@ -12167,27 +12167,27 @@
}
},
"koishi": {
"version": "4.8.3",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.8.3.tgz",
"integrity": "sha512-2FXVGoOn+TicAtV1ZvHpn58h9FRmudcj4VipLt3zvzxS/FIVN766dTu11IhRGCcwOjLEscGsGHAXLAQAJs6giA==",
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.8.4.tgz",
"integrity": "sha512-E8tW5fz0WauUwgRl8siqzO2J6uJPi5CWGgPE8OwaR2MJsQxL06p6kR0hJAvXf3b8ugXRR0Wdsox9A0Mt6WQydQ==",
"peer": true,
"requires": {
"@koishijs/core": "^4.8.3",
"@koishijs/core": "^4.8.4",
"@koishijs/utils": "^6.0.0",
"@satorijs/satori": "^1.0.6",
"file-type": "^16.5.3",
"@satorijs/satori": "^1.0.7",
"file-type": "^16.5.4",
"ns-require": "^1.1.4"
}
},
"koishi-thirdeye": {
"version": "11.0.7",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.0.7.tgz",
"integrity": "sha512-BltlqU5qCHFgEadmiZOQXR2DYJP7wqSVqtUDklvKSn7J6LJRdEGV63E9OFcC0LIlCpjUautqHku6bvZ4oadlFw==",
"version": "11.0.9",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.0.9.tgz",
"integrity": "sha512-ATPX7VVFs8EDkgpfR59Stn5msVQVmk35+7Ue/+UqxYHifnfWafDK14ydbHx8JvglcjTu8tiR/yjaF1Z/JngLfQ==",
"requires": {
"lodash": "^4.17.21",
"minato-decorators": "^2.0.8",
"rxjs": "^7.5.6",
"satori-decorators": "^1.0.11"
"satori-decorators": "^1.0.12"
}
},
"leven": {
......@@ -12366,9 +12366,9 @@
"dev": true
},
"minato": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/minato/-/minato-1.2.3.tgz",
"integrity": "sha512-06+ytX+prjYykoaqYe48tAGRbbG5WME1MEpb1WQUPhT6qxGSYmeqJyFX97Hlux4HruJfKpRCzsX6dhYRc9XkTA==",
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minato/-/minato-1.2.4.tgz",
"integrity": "sha512-YnlM7WKTKY1I6cKccpnmnKU7zkCi48xfWxorVdjIAt+Tpv7YwIw/VQNcz1vq9HQJW0Utk5e0mr+nQGoC2ae/yQ==",
"peer": true,
"requires": {
"cosmokit": "^1.2.1",
......@@ -13071,13 +13071,13 @@
"peer": true
},
"satori-decorators": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/satori-decorators/-/satori-decorators-1.0.11.tgz",
"integrity": "sha512-k58rG/JqiySFEJISBt0yZN2Jo278PYmHI/Q/0kbphTMqORNXkMbtdOao7lYtgosRq/Qntefg87qZCW5OZYv0rg==",
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/satori-decorators/-/satori-decorators-1.0.12.tgz",
"integrity": "sha512-DUfWfkC0+4sS2TUlodoYYxrQYrTIambjL+Y2TwClvPdRHV+BigHPpLT68QVjUiId0a3VuMKLJdbszfb/MQJbDA==",
"requires": {
"@types/koa": "^2.13.5",
"@types/koa__router": "^8.0.11",
"cordis-decorators": "^1.0.18",
"cordis-decorators": "^1.0.19",
"lodash": "^4.17.21"
}
},
......
......@@ -45,10 +45,10 @@
},
"dependencies": {
"aragami": "^1.1.1",
"koishi-thirdeye": "^11.0.7"
"koishi-thirdeye": "^11.0.9"
},
"peerDependencies": {
"koishi": "^4.8.3"
"koishi": "^4.8.4"
},
"devDependencies": {
"@koishijs/plugin-console": "^4.1.1",
......
......@@ -2,12 +2,13 @@
import { AragamiConfig } from './config';
import {
DefinePlugin,
koishiRegistrar,
LifecycleEvents,
PartialDeep,
PluginSchema,
Provide,
} from 'koishi-thirdeye';
import { Context } from 'koishi';
import { Channel, Command, Context, Session, User } from 'koishi';
import { Aragami, AragamiOptions, WrapDecoratorBuilder } from 'aragami';
export * from './config';
export * from 'aragami';
......@@ -32,8 +33,76 @@ export default class AragamiPlugin extends Aragami implements LifecycleEvents {
onDisconnect() {
return this.destroy();
}
private commandLock<C extends Command>(
cmd: C,
fields: string[],
info: { idFactory: (session: Session) => string; prefix: string },
) {
return cmd.action((argv) => {
if (!argv.session) return argv.next();
const id = info.idFactory(argv.session);
if (!id) return argv.next();
const lockFields = fields.map(
(field) => `koishi:${info.prefix}:${id}:${field}`,
);
return this.lock(lockFields, argv.next);
}, true);
}
commandUserLock<C extends Command>(cmd: C, fields: (keyof User)[]) {
return this.commandLock(cmd.userFields(fields) as C, fields, {
idFactory: (session: Session) => session.userId,
prefix: 'user',
});
}
commandChannelLock<C extends Command>(cmd: C, fields: (keyof Channel)[]) {
return this.commandLock(cmd.channelFields(fields) as C, fields, {
idFactory: (session: Session) => session.channelId,
prefix: 'channel',
});
}
commandGuildLock<C extends Command>(cmd: C, fields: (keyof Channel)[]) {
return this.commandLock(cmd.channelFields(fields) as C, fields, {
idFactory: (session: Session) => session.guildId || session.channelId,
prefix: 'guild',
});
}
}
export const { UseCache, UseLock } = new WrapDecoratorBuilder(
(o) => ((o.ctx || o.__ctx) as Context).aragami,
).build();
export const CommandUserLock = koishiRegistrar.decorateCommandTransformer(
(ctx, cmd, ...fields: (keyof User)[]) =>
ctx.aragami.commandUserLock(cmd, fields),
);
export const CommandChannelLock = koishiRegistrar.decorateCommandTransformer(
(ctx, cmd, ...fields: (keyof Channel)[]) =>
ctx.aragami.commandChannelLock(cmd, fields),
);
export const CommandGuildLock = koishiRegistrar.decorateCommandTransformer(
(ctx, cmd, ...fields: (keyof Channel)[]) =>
ctx.aragami.commandGuildLock(cmd, fields),
);
export const PutLockingUser = koishiRegistrar.decorateCommandPut(
(info, ...fields: (keyof User)[]) => info.argv.session.user,
(info, ...fields) => info.ctx.aragami.commandUserLock(info.command, fields),
);
export const PutLockingChannel = koishiRegistrar.decorateCommandPut(
(info, ...fields: (keyof Channel)[]) => info.argv.session.channel,
(info, ...fields) =>
info.ctx.aragami.commandChannelLock(info.command, fields),
);
export const PutLockingGuild = koishiRegistrar.decorateCommandPut(
(info, ...fields: (keyof Channel)[]) => info.argv.session.guild,
(info, ...fields) => info.ctx.aragami.commandGuildLock(info.command, fields),
);
......@@ -42,6 +42,8 @@ module.exports = {
},
externals: {
koishi: 'koishi',
'@satorijs/satori': '@satorijs/satori',
cordis: 'cordis',
...(packAll ? {} : externalsFromDep()),
},
optimization: {
......
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