From 5494ff0553e532325f978d4ee68865d9ab23d444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 14 Nov 2024 11:03:11 +0800 Subject: [PATCH] refactor: build --- package.json | 8 ++-- src/common/event.ts | 95 +++++++++++++++++++++++---------------------- vite.config.ts | 3 +- 3 files changed, 54 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index 70949b4b..3928e3cc 100644 --- a/package.json +++ b/package.json @@ -45,12 +45,12 @@ "vite-plugin-cp": "^4.0.8", "vite-tsconfig-paths": "^5.1.0", "winston": "^3.17.0", - "fluent-ffmpeg": "^2.1.2", - "qrcode-terminal": "^0.12.0" + "fluent-ffmpeg": "^2.1.2" }, "dependencies": { "express": "^5.0.0", "silk-wasm": "^3.6.1", - "ws": "^8.18.0" + "ws": "^8.18.0", + "qrcode-terminal": "^0.12.0" } -} +} \ No newline at end of file diff --git a/src/common/event.ts b/src/common/event.ts index 8a501b4b..821b0eb2 100644 --- a/src/common/event.ts +++ b/src/common/event.ts @@ -181,36 +181,36 @@ export class NTEventWrapper { callbackTimesToWait = 1, timeout = 5000, ) { + const id = randomUUID(); + let complete = 0; + let retData: Parameters | undefined = undefined; + let retEvent: any = {}; + + function sendDataCallback(resolve: any, reject: any) { + if (complete == 0) { + reject( + new Error( + 'Timeout: NTEvent serviceAndMethod:' + + serviceAndMethod + + ' ListenerName:' + + listenerAndMethod + + ' EventRet:\n' + + JSON.stringify(retEvent, null, 4) + + '\n', + ), + ); + } else { + resolve([retEvent as Awaited>, ...retData!]); + } + } + + const ListenerNameList = listenerAndMethod.split('/'); + const ListenerMainName = ListenerNameList[0]; + const ListenerSubName = ListenerNameList[1]; + return new Promise<[EventRet: Awaited>, ...Parameters]>( - async (resolve, reject) => { - const id = randomUUID(); - let complete = 0; - let retData: Parameters | undefined = undefined; - let retEvent: any = {}; - - function sendDataCallback() { - if (complete == 0) { - reject( - new Error( - 'Timeout: NTEvent serviceAndMethod:' + - serviceAndMethod + - ' ListenerName:' + - listenerAndMethod + - ' EventRet:\n' + - JSON.stringify(retEvent, null, 4) + - '\n', - ), - ); - } else { - resolve([retEvent as Awaited>, ...retData!]); - } - } - - const ListenerNameList = listenerAndMethod.split('/'); - const ListenerMainName = ListenerNameList[0]; - const ListenerSubName = ListenerNameList[1]; - - const timeoutRef = setTimeout(sendDataCallback, timeout); + (resolve, reject) => { + const timeoutRef = setTimeout(() => sendDataCallback(resolve, reject), timeout); const eventCallback = { timeout: timeout, @@ -221,7 +221,7 @@ export class NTEventWrapper { retData = args as Parameters; if (complete >= callbackTimesToWait) { clearTimeout(timeoutRef); - sendDataCallback(); + sendDataCallback(resolve, reject); } }, }; @@ -233,23 +233,26 @@ export class NTEventWrapper { } this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.set(id, eventCallback); this.createListenerFunction(ListenerMainName); - const eventFunction = this.createEventFunction(serviceAndMethod); - retEvent = await eventFunction!(...(args)); - if (!checkerEvent(retEvent) && timeoutRef.hasRef()) { - clearTimeout(timeoutRef); - reject( - new Error( - 'EventChecker Failed: NTEvent serviceAndMethod:' + - serviceAndMethod + - ' ListenerName:' + - listenerAndMethod + - ' EventRet:\n' + - JSON.stringify(retEvent, null, 4) + - '\n', - ), - ); - } + this.createEventFunction(serviceAndMethod)!(...(args)) + .then((eventResult: any) => { + retEvent = eventResult; + if (!checkerEvent(retEvent) && timeoutRef.hasRef()) { + clearTimeout(timeoutRef); + reject( + new Error( + 'EventChecker Failed: NTEvent serviceAndMethod:' + + serviceAndMethod + + ' ListenerName:' + + listenerAndMethod + + ' EventRet:\n' + + JSON.stringify(retEvent, null, 4) + + '\n', + ), + ); + } + }) + .catch(reject); }, ); } diff --git a/vite.config.ts b/vite.config.ts index 261801fe..794278d3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,7 +4,7 @@ import { resolve } from 'path'; import nodeResolve from '@rollup/plugin-node-resolve'; import { builtinModules } from 'module'; //依赖排除 -const external = ['silk-wasm', 'ws', 'express']; +const external = ['silk-wasm', 'ws', 'express', 'qrcode-terminal']; const nodeModules = [...builtinModules, builtinModules.map(m => `node:${m}`)].flat(); function genCpModule(module: string) { return { src: `./node_modules/${module}`, dest: `dist/node_modules/${module}`, flatten: false }; @@ -42,7 +42,6 @@ const FrameworkBaseConfigPlugin: PluginOption[] = [ const ShellBaseConfigPlugin: PluginOption[] = [ cp({ targets: [ - { src: './src/native/external', dest: 'dist/native', flatten: false }, { src: './src/native/packet', dest: 'dist/moehoo', flatten: false }, { src: './static/', dest: 'dist/static/', flatten: false }, { src: './src/core/external/napcat.json', dest: 'dist/config/' },