mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
chore: vite build
Co-Authored-By: Wesley F. Young <25684570+Wesley-Young@users.noreply.github.com>
This commit is contained in:
11
package.json
11
package.json
@@ -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": {
|
||||||
|
@@ -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))
|
||||||
|
}
|
@@ -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'
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
export * from './core';
|
@@ -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 {
|
||||||
|
@@ -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
|
||||||
|
0
src/liteloader/preload.cjs
Normal file
0
src/liteloader/preload.cjs
Normal file
0
src/liteloader/renderer.cjs
Normal file
0
src/liteloader/renderer.cjs
Normal 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 {
|
||||||
|
Reference in New Issue
Block a user