mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-16 04:45:46 +00:00
Merge branch 'main' into dev/RefactoredMsgParsers
This commit is contained in:
commit
a20a6bc8bb
@ -1,7 +1,7 @@
|
|||||||
import { NodeIQQNTWrapperSession } from '@/core/wrapper/wrapper';
|
import { NodeIQQNTWrapperSession } from '@/core/wrapper/wrapper';
|
||||||
import { randomUUID } from 'crypto';
|
import { randomUUID } from 'crypto';
|
||||||
|
|
||||||
interface Internal_MapKey {
|
interface InternalMapKey {
|
||||||
timeout: number;
|
timeout: number;
|
||||||
createtime: number;
|
createtime: number;
|
||||||
func: (...arg: any[]) => any;
|
func: (...arg: any[]) => any;
|
||||||
@ -11,14 +11,14 @@ interface Internal_MapKey {
|
|||||||
export type ListenerClassBase = Record<string, string>;
|
export type ListenerClassBase = Record<string, string>;
|
||||||
|
|
||||||
export interface ListenerIBase {
|
export interface ListenerIBase {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-new
|
|
||||||
new(listener: any): ListenerClassBase;
|
new(listener: any): ListenerClassBase;
|
||||||
|
[key: string]: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LegacyNTEventWrapper {
|
export class LegacyNTEventWrapper {
|
||||||
private WrapperSession: NodeIQQNTWrapperSession | undefined; //WrapperSession
|
private WrapperSession: NodeIQQNTWrapperSession | undefined; //WrapperSession
|
||||||
private listenerManager: Map<string, ListenerClassBase> = new Map<string, ListenerClassBase>(); //ListenerName-Unique -> Listener实例
|
private listenerManager: Map<string, ListenerClassBase> = new Map<string, ListenerClassBase>(); //ListenerName-Unique -> Listener实例
|
||||||
private EventTask = new Map<string, Map<string, Map<string, Internal_MapKey>>>(); //tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func}
|
private EventTask = new Map<string, Map<string, Map<string, InternalMapKey>>>(); //tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
wrapperSession: NodeIQQNTWrapperSession
|
wrapperSession: NodeIQQNTWrapperSession
|
||||||
@ -33,7 +33,6 @@ export class LegacyNTEventWrapper {
|
|||||||
{},
|
{},
|
||||||
{
|
{
|
||||||
get(target: any, prop: any, receiver: any) {
|
get(target: any, prop: any, receiver: any) {
|
||||||
// console.log('get', prop, typeof target[prop]);
|
|
||||||
if (typeof target[prop] === 'undefined') {
|
if (typeof target[prop] === 'undefined') {
|
||||||
// 如果方法不存在,返回一个函数,这个函数调用existentMethod
|
// 如果方法不存在,返回一个函数,这个函数调用existentMethod
|
||||||
return (...args: any[]) => {
|
return (...args: any[]) => {
|
||||||
@ -84,16 +83,14 @@ export class LegacyNTEventWrapper {
|
|||||||
|
|
||||||
//统一回调清理事件
|
//统一回调清理事件
|
||||||
async dispatcherListener(ListenerMainName: string, ListenerSubName: string, ...args: any[]) {
|
async dispatcherListener(ListenerMainName: string, ListenerSubName: string, ...args: any[]) {
|
||||||
//console.log("[EventDispatcher]",ListenerMainName, ListenerSubName, ...args);
|
|
||||||
this.EventTask.get(ListenerMainName)
|
this.EventTask.get(ListenerMainName)
|
||||||
?.get(ListenerSubName)
|
?.get(ListenerSubName)
|
||||||
?.forEach((task, uuid) => {
|
?.forEach((task, uuid) => {
|
||||||
//console.log(task.func, uuid, task.createtime, task.timeout);
|
|
||||||
if (task.createtime + task.timeout < Date.now()) {
|
if (task.createtime + task.timeout < Date.now()) {
|
||||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.delete(uuid);
|
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.delete(uuid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (task.checker && task.checker(...args)) {
|
if (task?.checker?.(...args)) {
|
||||||
task.func(...args);
|
task.func(...args);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -228,7 +225,7 @@ export class LegacyNTEventWrapper {
|
|||||||
this.createListenerFunction(ListenerMainName);
|
this.createListenerFunction(ListenerMainName);
|
||||||
const EventFunc = this.createEventFunction<EventType>(EventName);
|
const EventFunc = this.createEventFunction<EventType>(EventName);
|
||||||
retEvent = await EventFunc!(...(args as any[]));
|
retEvent = await EventFunc!(...(args as any[]));
|
||||||
if(!checkerEvent(retEvent)){
|
if (!checkerEvent(retEvent)) {
|
||||||
clearTimeout(Timeouter);
|
clearTimeout(Timeouter);
|
||||||
reject(
|
reject(
|
||||||
new Error(
|
new Error(
|
||||||
|
@ -3,7 +3,6 @@ import { LogWrapper } from './log';
|
|||||||
export function proxyHandlerOf(logger: LogWrapper) {
|
export function proxyHandlerOf(logger: LogWrapper) {
|
||||||
return {
|
return {
|
||||||
get(target: any, prop: any, receiver: any) {
|
get(target: any, prop: any, receiver: any) {
|
||||||
// console.log('get', prop, typeof target[prop]);
|
|
||||||
if (typeof target[prop] === 'undefined') {
|
if (typeof target[prop] === 'undefined') {
|
||||||
// 如果方法不存在,返回一个函数,这个函数调用existentMethod
|
// 如果方法不存在,返回一个函数,这个函数调用existentMethod
|
||||||
return (..._args: unknown[]) => {
|
return (..._args: unknown[]) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user