chore: vite build

Co-Authored-By: Wesley F. Young <25684570+Wesley-Young@users.noreply.github.com>
This commit is contained in:
手瓜一十雪
2024-08-08 19:26:27 +08:00
parent c70b2eaa30
commit 0786c608a4
11 changed files with 50 additions and 64 deletions

View File

@@ -4,17 +4,10 @@
"type": "module", "type": "module",
"version": "1.8.3", "version": "1.8.3",
"scripts": { "scripts": {
"watch:dev": "vite --mode development", "build:liteloader": "vite build --mode ",
"watch:prod": "vite --mode production", "build:shell": "vite build --mode production",
"build:dev": "vite build --mode development",
"build:prod": "vite build --mode production",
"build": "npm run build:dev",
"build:core": "cd ./src/core && npm run build && cd ../.. && node ./script/copy-core.cjs",
"build:webui": "cd ./src/webui && vite build", "build:webui": "cd ./src/webui && vite build",
"watch": "npm run watch:dev",
"debug-win": "powershell dist/napcat.ps1",
"lint": "eslint --fix src/**/*.{js,ts}", "lint": "eslint --fix src/**/*.{js,ts}",
"release": "npm run build:prod",
"depend": "cd dist && npm install --omit=dev" "depend": "cd dist && npm install --omit=dev"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -0,0 +1,21 @@
import { LogWrapper } from "./log";
export function proxyHandlerOf(logger: LogWrapper) {
return {
get(target: any, prop: any, receiver: any) {
// console.log('get', prop, typeof target[prop]);
if (typeof target[prop] === 'undefined') {
// 如果方法不存在返回一个函数这个函数调用existentMethod
return (..._args: unknown[]) => {
logger.logDebug(`${target.constructor.name} has no method ${prop}`);
};
}
// 如果方法存在,正常返回
return Reflect.get(target, prop, receiver);
}
};
}
export function proxiedListenerOf<T extends object>(listener: T, logger: LogWrapper) {
return new Proxy<T>(listener, proxyHandlerOf(logger))
}

View File

@@ -3,6 +3,7 @@ import { NodeIQQNTWrapperSession, WrapperNodeApi } from "./wrapper/wrapper";
import path from "node:path"; import path from "node:path";
import fs from "node:fs"; import fs from "node:fs";
import { NodeIKernelLoginService } from "./services"; import { NodeIKernelLoginService } from "./services";
import { SelfInfo } from "./entities";
export enum NapCatCoreWorkingEnv { export enum NapCatCoreWorkingEnv {
Unknown = 0, Unknown = 0,
@@ -20,26 +21,22 @@ export function loadQQWrapper(QQVersion: string): WrapperNodeApi {
return nativemodule.exports; return nativemodule.exports;
} }
export class NapCatCore { export interface InstanceContext {
readonly workingEnv: NapCatCoreWorkingEnv; readonly workingEnv: NapCatCoreWorkingEnv;
readonly core: NapCatCore;
readonly wrapper: WrapperNodeApi; readonly wrapper: WrapperNodeApi;
readonly session: NodeIQQNTWrapperSession; readonly session: NodeIQQNTWrapperSession;
readonly logger: LogWrapper; readonly logger: LogWrapper;
readonly loginService: NodeIKernelLoginService; readonly loginService: NodeIKernelLoginService;
readonly selfInfo: SelfInfo;
readonly QQVersion: string;
}
constructor( export class NapCatCore {
env: NapCatCoreWorkingEnv, readonly context: InstanceContext;
wrapper: WrapperNodeApi,
session: NodeIQQNTWrapperSession, constructor(context: InstanceContext) {
logger: LogWrapper, this.context = context;
loginService: NodeIKernelLoginService,
QQVersion: string
) {
this.workingEnv = env;
this.logger = logger;
this.wrapper = wrapper;
this.session = session;
this.loginService = loginService;
} }
// Renamed from 'InitDataListener' // Renamed from 'InitDataListener'

View File

@@ -0,0 +1 @@
export * from './core';

View File

@@ -77,9 +77,10 @@ async function checkNTIsInit() {
} }
async function NCInit() { async function NCInit() {
console.log("[NapCat] [Info] 开始初始化NapCat"); console.log("[NapCat] [Info] 开始初始化NapCat");
//await import("file://" + path.join(CurrentPath, './napcat.mjs')); const { NCoreInitLiteLoader } = await import("file://" + path.join(CurrentPath, './napcat.mjs'));
//传入LoginService Session 其余自载入 //传入LoginService Session 其余自载入
console.log("[NapCat] [Info] NapCat初始化完成"); await NCoreInitLiteLoader(getWrapperSession(), getWrapperLoginService());
//console.log("[NapCat] [Info] NapCat初始化完成");
} }
(async () => { (async () => {
try { try {

View File

@@ -5,6 +5,7 @@ import { LogWrapper } from "@/common/utils/log";
import { proxiedListenerOf } from "@/common/utils/proxy-handler"; import { proxiedListenerOf } from "@/common/utils/proxy-handler";
import { QQBasicInfoWrapper } from "@/common/utils/QQBasicInfo"; import { QQBasicInfoWrapper } from "@/common/utils/QQBasicInfo";
import { NapCatCoreWorkingEnv, loadQQWrapper } from "@/core/core"; import { NapCatCoreWorkingEnv, loadQQWrapper } from "@/core/core";
import { SelfInfo } from "@/core/entities";
import { LoginListener } from "@/core/listeners"; import { LoginListener } from "@/core/listeners";
import { NodeIKernelLoginService } from "@/core/services"; import { NodeIKernelLoginService } from "@/core/services";
import { selfInfo } from "@/core/wrapper/data"; import { selfInfo } from "@/core/wrapper/data";
@@ -21,9 +22,14 @@ export async function NCoreInitLiteLoader(session: NodeIQQNTWrapperSession, logi
let LLNC = new NapCatLiteLoader(logger, session, loginService, BasicInfo); let LLNC = new NapCatLiteLoader(logger, session, loginService, BasicInfo);
//直到登录成功后,执行下一步 //直到登录成功后,执行下一步
await new Promise<void>((resolve) => { let selfInfo = await new Promise<SelfInfo>((resolve) => {
let OBLoginListener = new LoginListener(); let OBLoginListener = new LoginListener();
OBLoginListener.onQRCodeLoginSucceed = async (arg) => resolve(); OBLoginListener.onQRCodeLoginSucceed = async (loginResult) => resolve({
uid: loginResult.uid,
uin: loginResult.uin,
nick: '', // 获取不到
online: true
});
loginService.addKernelLoginListener(new LLNC.wrapper.NodeIKernelLoginListener(proxiedListenerOf(OBLoginListener, logger))); loginService.addKernelLoginListener(new LLNC.wrapper.NodeIKernelLoginListener(proxiedListenerOf(OBLoginListener, logger)));
}); });
//启动WebUi //启动WebUi

View File

View File

View File

@@ -8,8 +8,6 @@ import nodeResolve from '@rollup/plugin-node-resolve';
import { builtinModules } from 'module'; import { builtinModules } from 'module';
import fs from 'node:fs'; import fs from 'node:fs';
import babel from 'vite-plugin-babel'; import babel from 'vite-plugin-babel';
import { version } from 'os';
// "@rollup/plugin-babel": "^6.0.4",
const external = ['silk-wasm', 'ws', 'express', 'fluent-ffmpeg', 'log4js', 'qrcode-terminal']; const external = ['silk-wasm', 'ws', 'express', 'fluent-ffmpeg', 'log4js', 'qrcode-terminal'];
const nodeModules = [...builtinModules, builtinModules.map(m => `node:${m}`)].flat(); const nodeModules = [...builtinModules, builtinModules.map(m => `node:${m}`)].flat();
@@ -55,7 +53,6 @@ const baseConfigPlugin: PluginOption[] = [
{ src: './package.json', dest: 'dist' }, { src: './package.json', dest: 'dist' },
{ src: './README.md', dest: 'dist' }, { src: './README.md', dest: 'dist' },
{ src: './logo.png', dest: 'dist/logs' }, { src: './logo.png', dest: 'dist/logs' },
// ...MoeHooModule,
...(startScripts.map((startScript) => { ...(startScripts.map((startScript) => {
return { src: startScript, dest: 'dist' }; return { src: startScript, dest: 'dist' };
})), })),
@@ -63,17 +60,13 @@ const baseConfigPlugin: PluginOption[] = [
}), }),
nodeResolve(), nodeResolve(),
]; ];
// if (os.platform() !== 'win32') {
// startScripts = ['./script/napcat.sh'];
// }
let corePath = resolve(__dirname, './src/core/src'); let corePath = resolve(__dirname, './src/core/src');
if (!fs.existsSync(corePath)) { if (!fs.existsSync(corePath)) {
corePath = resolve(__dirname, './src/core.lib/src'); corePath = resolve(__dirname, './src/core.lib/src');
} }
const baseConfig = (mode: string = 'development') => defineConfig({ const baseConfig = (mode: string = 'shell') => defineConfig({
resolve: { resolve: {
conditions: ['node', 'default'], conditions: ['node', 'default'],
alias: { alias: {
@@ -89,7 +82,7 @@ const baseConfig = (mode: string = 'development') => defineConfig({
// 压缩代码出现了未知问题导致无法运行,暂时不启用 // 压缩代码出现了未知问题导致无法运行,暂时不启用
minify: false, minify: false,
lib: { lib: {
entry: 'src/index.ts', entry: mode === "shell" ? 'src/shell/napcat.ts' : "src/liteloader/napcat.ts",
formats: ['es'], formats: ['es'],
fileName: () => 'napcat.mjs', fileName: () => 'napcat.mjs',
}, },
@@ -101,37 +94,11 @@ const baseConfig = (mode: string = 'development') => defineConfig({
}); });
export default defineConfig(({ mode }): UserConfig => { export default defineConfig(({ mode }): UserConfig => {
if (mode === 'production') { if (mode === 'shell') {
return { return {
...baseConfig(mode), ...baseConfig(mode),
plugins: [ plugins: [
...baseConfigPlugin, ...baseConfigPlugin
// {
// ...(obfuscator({
// options: {
// compact: true,
// controlFlowFlattening: true,
// controlFlowFlatteningThreshold: 0.75,
// deadCodeInjection: true,
// deadCodeInjectionThreshold: 0.4,
// debugProtection: false,
// disableConsoleOutput: false,
// identifierNamesGenerator: 'hexadecimal',
// log: false,
// renameGlobals: false,
// rotateStringArray: true,
// selfDefending: true,
// stringArray: true,
// stringArrayEncoding: ['base64'],
// stringArrayThreshold: 0.75,
// transformObjectKeys: true,
// unicodeEscapeSequence: false
// },
// include: ['src/**/*.js', 'src/**/*.ts'],
// }) as Plugin),
// enforce: 'post',
// apply: 'build',
// },
] ]
}; };
} else { } else {