misc: Ensure account info is verified before initiation

This commit is contained in:
WJG 2024-02-28 15:49:13 +08:00
parent 0f38e6b9cc
commit 64980c036e
No known key found for this signature in database
GPG Key ID: 258474EF8590014A
4 changed files with 22 additions and 11 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "mi-gpt", "name": "mi-gpt",
"version": "1.2.0", "version": "1.3.0",
"type": "module", "type": "module",
"description": "Seamlessly integrate your XiaoAI speaker and Mi Home devices with ChatGPT for an enhanced smart home experience.", "description": "Seamlessly integrate your XiaoAI speaker and Mi Home devices with ChatGPT for an enhanced smart home experience.",
"license": "MIT", "license": "MIT",
@ -30,7 +30,7 @@
"axios": "^1.6.5", "axios": "^1.6.5",
"fs-extra": "^11.2.0", "fs-extra": "^11.2.0",
"https-proxy-agent": "^7.0.4", "https-proxy-agent": "^7.0.4",
"mi-service-lite": "^2.0.0", "mi-service-lite": "^2.1.0",
"openai": "^4.28.0", "openai": "^4.28.0",
"prisma": "^5.8.1" "prisma": "^5.8.1"
}, },
@ -47,7 +47,9 @@
}, },
"sideEffects": false, "sideEffects": false,
"files": [ "files": [
"dist" "dist",
"prisma/migrations",
"prisma/schema.prisma"
], ],
"main": "dist/index.cjs", "main": "dist/index.cjs",
"module": "dist/index.js", "module": "dist/index.js",

View File

@ -2,6 +2,7 @@ import { AISpeaker, AISpeakerConfig } from "./services/speaker/ai";
import { MyBot, MyBotConfig } from "./services/bot"; import { MyBot, MyBotConfig } from "./services/bot";
import { initDB, runWithDB } from "./services/db"; import { initDB, runWithDB } from "./services/db";
import { kBannerASCII } from "./utils/string"; import { kBannerASCII } from "./utils/string";
import { Logger } from "./utils/log";
export type MiGPTConfig = Omit<MyBotConfig, "speaker"> & { export type MiGPTConfig = Omit<MyBotConfig, "speaker"> & {
speaker: AISpeakerConfig; speaker: AISpeakerConfig;
@ -12,10 +13,15 @@ export class MiGPT {
static reset() { static reset() {
MiGPT.instance = null; MiGPT.instance = null;
} }
static logger = Logger.create({ tag: "MiGPT" });
static create(config: MiGPTConfig) { static create(config: MiGPTConfig) {
const hasAccount = config?.speaker?.userId && config?.speaker?.password;
MiGPT.logger.assert(hasAccount, "Missing userId or password.");
if (MiGPT.instance) { if (MiGPT.instance) {
console.log("🚨 注意MiGPT 是单例,暂不支持多设备、多账号!"); MiGPT.logger.log("🚨 注意MiGPT 是单例,暂不支持多设备、多账号!");
console.log("如果需要切换设备或账号,请先使用 MiGPT.reset() 重置实例。"); MiGPT.logger.log(
"如果需要切换设备或账号,请先使用 MiGPT.reset() 重置实例。"
);
} else { } else {
MiGPT.instance = new MiGPT({ ...config, fromCreate: true }); MiGPT.instance = new MiGPT({ ...config, fromCreate: true });
} }
@ -25,7 +31,10 @@ export class MiGPT {
ai: MyBot; ai: MyBot;
speaker: AISpeaker; speaker: AISpeaker;
constructor(config: MiGPTConfig & { fromCreate?: boolean }) { constructor(config: MiGPTConfig & { fromCreate?: boolean }) {
console.assert(config.fromCreate, "请使用 MiGPT.create() 获取客户端实例!"); MiGPT.logger.assert(
config.fromCreate,
"请使用 MiGPT.create() 获取客户端实例!"
);
const { speaker, ...myBotConfig } = config; const { speaker, ...myBotConfig } = config;
this.speaker = new AISpeaker(speaker); this.speaker = new AISpeaker(speaker);
this.ai = new MyBot({ this.ai = new MyBot({

View File

@ -8,7 +8,7 @@ export default defineConfig(() => ({
format: ["esm", "cjs"], format: ["esm", "cjs"],
sourcemap: false, sourcemap: false,
treeshake: true, treeshake: true,
minify: true, minify: false,
clean: true, clean: true,
shims: true, shims: true,
dts: true, // Generate declaration file dts: true, // Generate declaration file

View File

@ -927,10 +927,10 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
mi-service-lite@^2.0.0: mi-service-lite@^2.1.0:
version "2.0.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/mi-service-lite/-/mi-service-lite-2.0.0.tgz#c043a931574011c154a3113ecabe4fc2a61b328a" resolved "https://registry.yarnpkg.com/mi-service-lite/-/mi-service-lite-2.1.0.tgz#a05d85340f18d3ee5278afc180294273235533c5"
integrity sha512-PqMWtvEHQ7a6mhKee9RAnT6Xh+rqf+RvhlCki/8VsSTnjREAzl/kxZh3U0ogFhN5iQzwlK4YC8Is0rnSljl2og== integrity sha512-yy7q/7sR36PiE+0kIXgGDQ8ZUCrnLpMUxqtpmdIQgKBsyCaxBx0QNEcscwY+2ejx3WLwbB+ObMy6yR9fznx6hg==
dependencies: dependencies:
axios "^1.6.5" axios "^1.6.5"
pako "^2.1.0" pako "^2.1.0"