mira-app-core
Version:
Core library for Mira TypeScript project - provides base functionality without auto-execution
115 lines • 4.25 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.MiraBackend = void 0;
const WebSocketServer_1 = require("./WebSocketServer");
const LibraryStorage_1 = require("./LibraryStorage");
const path = __importStar(require("path"));
class MiraBackend {
constructor(options) {
// 确保options有默认值
const config = options || {};
console.log('🎯 MiraBackend constructor received options:', JSON.stringify(config, null, 2));
this.dataPath = config.dataPath || process.env.DATA_PATH || path.join(process.cwd(), 'data');
console.log('📂 Data path resolved to:', this.dataPath);
// WebSocket服务器现在是可选的,由外部服务器管理
if (config.wsPort) {
console.log('🔌 Initializing WebSocket server on port:', config.wsPort);
this.webSocketServer = new WebSocketServer_1.MiraWebsocketServer(config.wsPort, this);
}
this.libraries = new LibraryStorage_1.LibraryStorage(this);
// 只有在明确要求时才自动加载
if (config.autoLoad !== false) {
console.log('📚 Auto-loading libraries...');
this.libraries.loadAll().then((loaded) => console.log(`${loaded} Libraries loaded`));
}
// 只有在明确要求时才自动启动
if (config.autoStart === true) {
console.log('🚀 Auto-starting backend...');
this.start();
}
}
/**
* 手动启动服务器
*/
start() {
if (this.webSocketServer) {
this.webSocketServer.start('/ws');
console.log('📡 WebSocket server started');
}
// 处理退出
process.on('SIGINT', async () => {
console.log('Shutting down backend...');
await this.stop();
process.exit();
});
}
/**
* 停止服务器
*/
async stop() {
if (this.webSocketServer) {
await this.webSocketServer.stop();
}
console.log('🔄 Backend shutdown completed');
}
/**
* 获取数据路径
*/
getDataPath() {
return this.dataPath;
}
/**
* 获取库存储实例
*/
getLibraries() {
return this.libraries;
}
/**
* 创建并启动服务器的静态方法 (向后兼容)
* 注意:HTTP服务器功能已移动到 mira-app-server 包
*/
static createAndStart(options) {
console.warn('⚠️ MiraBackend.createAndStart is deprecated. Use MiraServer from mira-app-server package for full server functionality.');
return new MiraBackend({
dataPath: options?.dataPath,
wsPort: options?.wsPort,
autoLoad: true,
autoStart: true
});
}
}
exports.MiraBackend = MiraBackend;
//# sourceMappingURL=MiraBackend.js.map