mira-app-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HttpRouter.d.ts +17 -0
- package/dist/HttpRouter.d.ts.map +1 -0
- package/dist/HttpRouter.js +217 -0
- package/dist/HttpRouter.js.map +1 -0
- package/dist/HttpServer.d.ts +24 -0
- package/dist/HttpServer.d.ts.map +1 -0
- package/dist/HttpServer.js +55 -0
- package/dist/HttpServer.js.map +1 -0
- package/dist/ILibraryServerData.d.ts +63 -0
- package/dist/ILibraryServerData.d.ts.map +1 -0
- package/dist/ILibraryServerData.js +3 -0
- package/dist/ILibraryServerData.js.map +1 -0
- package/dist/LibraryList.d.ts +9 -0
- package/dist/LibraryList.d.ts.map +1 -0
- package/dist/LibraryList.js +29 -0
- package/dist/LibraryList.js.map +1 -0
- package/dist/LibraryServerDataSQLite.d.ts +96 -0
- package/dist/LibraryServerDataSQLite.d.ts.map +1 -0
- package/dist/LibraryServerDataSQLite.js +683 -0
- package/dist/LibraryServerDataSQLite.js.map +1 -0
- package/dist/LibraryStorage.d.ts +14 -0
- package/dist/LibraryStorage.d.ts.map +1 -0
- package/dist/LibraryStorage.js +45 -0
- package/dist/LibraryStorage.js.map +1 -0
- package/dist/MessageHandler.d.ts +16 -0
- package/dist/MessageHandler.d.ts.map +1 -0
- package/dist/MessageHandler.js +35 -0
- package/dist/MessageHandler.js.map +1 -0
- package/dist/ServerExample.d.ts +33 -0
- package/dist/ServerExample.d.ts.map +1 -0
- package/dist/ServerExample.js +87 -0
- package/dist/ServerExample.js.map +1 -0
- package/dist/ServerPlugin.d.ts +20 -0
- package/dist/ServerPlugin.d.ts.map +1 -0
- package/dist/ServerPlugin.js +79 -0
- package/dist/ServerPlugin.js.map +1 -0
- package/dist/ServerPluginManager.d.ts +30 -0
- package/dist/ServerPluginManager.d.ts.map +1 -0
- package/dist/ServerPluginManager.js +112 -0
- package/dist/ServerPluginManager.js.map +1 -0
- package/dist/WebSocketRouter.d.ts +18 -0
- package/dist/WebSocketRouter.d.ts.map +1 -0
- package/dist/WebSocketRouter.js +31 -0
- package/dist/WebSocketRouter.js.map +1 -0
- package/dist/WebSocketServer.d.ts +23 -0
- package/dist/WebSocketServer.d.ts.map +1 -0
- package/dist/WebSocketServer.js +162 -0
- package/dist/WebSocketServer.js.map +1 -0
- package/dist/event-manager.d.ts +85 -0
- package/dist/event-manager.d.ts.map +1 -0
- package/dist/event-manager.js +142 -0
- package/dist/event-manager.js.map +1 -0
- package/dist/handlers/FileHandler.d.ts +10 -0
- package/dist/handlers/FileHandler.d.ts.map +1 -0
- package/dist/handlers/FileHandler.js +55 -0
- package/dist/handlers/FileHandler.js.map +1 -0
- package/dist/handlers/FolderHandler.d.ts +10 -0
- package/dist/handlers/FolderHandler.d.ts.map +1 -0
- package/dist/handlers/FolderHandler.js +59 -0
- package/dist/handlers/FolderHandler.js.map +1 -0
- package/dist/handlers/LibraryHandler.d.ts +10 -0
- package/dist/handlers/LibraryHandler.d.ts.map +1 -0
- package/dist/handlers/LibraryHandler.js +49 -0
- package/dist/handlers/LibraryHandler.js.map +1 -0
- package/dist/handlers/MessageHandler.d.ts +15 -0
- package/dist/handlers/MessageHandler.d.ts.map +1 -0
- package/dist/handlers/MessageHandler.js +32 -0
- package/dist/handlers/MessageHandler.js.map +1 -0
- package/dist/handlers/PluginMessageHandler.d.ts +10 -0
- package/dist/handlers/PluginMessageHandler.d.ts.map +1 -0
- package/dist/handlers/PluginMessageHandler.js +21 -0
- package/dist/handlers/PluginMessageHandler.js.map +1 -0
- package/dist/handlers/TagHandler.d.ts +10 -0
- package/dist/handlers/TagHandler.d.ts.map +1 -0
- package/dist/handlers/TagHandler.js +59 -0
- package/dist/handlers/TagHandler.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -0
- package/src/HttpRouter.ts +236 -0
- package/src/HttpServer.ts +72 -0
- package/src/ILibraryServerData.ts +70 -0
- package/src/LibraryList.ts +26 -0
- package/src/LibraryServerDataSQLite.ts +778 -0
- package/src/LibraryStorage.ts +55 -0
- package/src/MessageHandler.ts +41 -0
- package/src/ServerExample.ts +72 -0
- package/src/ServerPlugin.ts +56 -0
- package/src/ServerPluginManager.ts +106 -0
- package/src/WebSocketRouter.ts +46 -0
- package/src/WebSocketServer.ts +206 -0
- package/src/event-manager.ts +191 -0
- package/src/handlers/FileHandler.ts +61 -0
- package/src/handlers/FolderHandler.ts +65 -0
- package/src/handlers/LibraryHandler.ts +55 -0
- package/src/handlers/MessageHandler.ts +37 -0
- package/src/handlers/PluginMessageHandler.ts +27 -0
- package/src/handlers/TagHandler.ts +66 -0
- package/src/index.ts +44 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LibraryServerDataSQLite.js","sourceRoot":"","sources":["../src/LibraryServerDataSQLite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LibraryServerDataSQLite } from "./LibraryServerDataSQLite";
|
|
2
|
+
import { MiraBackend } from "./ServerExample";
|
|
3
|
+
export declare class LibraryStorage {
|
|
4
|
+
libraryServices: LibraryServerDataSQLite[];
|
|
5
|
+
backend: MiraBackend;
|
|
6
|
+
constructor(backend: MiraBackend);
|
|
7
|
+
all(): LibraryServerDataSQLite[];
|
|
8
|
+
load(dbConfig: Record<string, any>): Promise<LibraryServerDataSQLite>;
|
|
9
|
+
loadAll(): Promise<number>;
|
|
10
|
+
get(libraryId: string): LibraryServerDataSQLite | undefined;
|
|
11
|
+
exists(libraryId: string): boolean;
|
|
12
|
+
find(libraryId: string): LibraryServerDataSQLite | undefined;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=LibraryStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LibraryStorage.d.ts","sourceRoot":"","sources":["../src/LibraryStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,cAAc;IACzB,eAAe,EAAE,uBAAuB,EAAE,CAAM;IAChD,OAAO,EAAE,WAAW,CAAC;gBAET,OAAO,EAAE,WAAW;IAIhC,GAAG,IAAI,uBAAuB,EAAE;IAI1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAOrE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAchC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAM3D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMlC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;CAK7D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LibraryStorage = void 0;
|
|
4
|
+
const LibraryServerDataSQLite_1 = require("./LibraryServerDataSQLite");
|
|
5
|
+
const LibraryList_1 = require("./LibraryList");
|
|
6
|
+
class LibraryStorage {
|
|
7
|
+
constructor(backend) {
|
|
8
|
+
this.libraryServices = [];
|
|
9
|
+
this.backend = backend;
|
|
10
|
+
}
|
|
11
|
+
all() {
|
|
12
|
+
return this.libraryServices;
|
|
13
|
+
}
|
|
14
|
+
async load(dbConfig) {
|
|
15
|
+
const dbServer = new LibraryServerDataSQLite_1.LibraryServerDataSQLite(dbConfig, { webSocketServer: this.backend.webSocketServer, httpServer: this.backend.httpServer });
|
|
16
|
+
await dbServer.initialize();
|
|
17
|
+
this.libraryServices.push(dbServer);
|
|
18
|
+
return dbServer;
|
|
19
|
+
}
|
|
20
|
+
async loadAll() {
|
|
21
|
+
let success = 0;
|
|
22
|
+
for (const library of await (0, LibraryList_1.getLibrarysJson)(this.backend.dataPath)) {
|
|
23
|
+
try {
|
|
24
|
+
console.log('loading library ', library.name);
|
|
25
|
+
await this.load(library);
|
|
26
|
+
success++;
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
console.log(err);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return success;
|
|
33
|
+
}
|
|
34
|
+
get(libraryId) {
|
|
35
|
+
return this.libraryServices.find((library) => library.getLibraryId() === libraryId);
|
|
36
|
+
}
|
|
37
|
+
exists(libraryId) {
|
|
38
|
+
return this.libraryServices.some((library) => library.getLibraryId() === libraryId);
|
|
39
|
+
}
|
|
40
|
+
find(libraryId) {
|
|
41
|
+
return this.libraryServices.find((library) => library.getLibraryId() === libraryId);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.LibraryStorage = LibraryStorage;
|
|
45
|
+
//# sourceMappingURL=LibraryStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LibraryStorage.js","sourceRoot":"","sources":["../src/LibraryStorage.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAEpE,+CAAgD;AAEhD,MAAa,cAAc;IAIzB,YAAY,OAAoB;QAHhC,oBAAe,GAA8B,EAAE,CAAC;QAI9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAA6B;QACtC,MAAM,QAAQ,GAAG,IAAI,iDAAuB,CAAC,QAAQ,EAAE,EAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAC,CAAE,CAAC;QAC9I,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,OAAO,IAAI,MAAM,IAAA,6BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,OAAM,GAAG,EAAC,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,SAAS,CAClD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,SAAS,CAClD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,SAAS,CAAC,CAAC;IACtF,CAAC;CAGF;AAlDD,wCAkDC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LibraryServerDataSQLite } from './LibraryServerDataSQLite';
|
|
2
|
+
import { WebSocket } from 'ws';
|
|
3
|
+
import { WebSocketMessage } from './WebSocketRouter';
|
|
4
|
+
export declare abstract class MessageHandler {
|
|
5
|
+
protected dbService: LibraryServerDataSQLite;
|
|
6
|
+
protected ws: WebSocket;
|
|
7
|
+
protected message: WebSocketMessage;
|
|
8
|
+
constructor(dbService: LibraryServerDataSQLite, ws: WebSocket, message: WebSocketMessage);
|
|
9
|
+
abstract handle(): Promise<void>;
|
|
10
|
+
protected sendResponse(data: Record<string, any>): void;
|
|
11
|
+
protected sendError(error: string): void;
|
|
12
|
+
protected getLibraryId(): string;
|
|
13
|
+
protected getAction(): string;
|
|
14
|
+
protected getPayload(): Record<string, any>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=MessageHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageHandler.d.ts","sourceRoot":"","sources":["../src/MessageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,8BAAsB,cAAc;IAEhC,SAAS,CAAC,SAAS,EAAE,uBAAuB;IAC5C,SAAS,CAAC,EAAE,EAAE,SAAS;IACvB,SAAS,CAAC,OAAO,EAAE,gBAAgB;gBAFzB,SAAS,EAAE,uBAAuB,EAClC,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,gBAAgB;IAGrC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAQvD,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAG5C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageHandler = void 0;
|
|
4
|
+
class MessageHandler {
|
|
5
|
+
constructor(dbService, ws, message) {
|
|
6
|
+
this.dbService = dbService;
|
|
7
|
+
this.ws = ws;
|
|
8
|
+
this.message = message;
|
|
9
|
+
}
|
|
10
|
+
sendResponse(data) {
|
|
11
|
+
this.ws.send(JSON.stringify({
|
|
12
|
+
requestId: this.message.requestId,
|
|
13
|
+
status: 'ok',
|
|
14
|
+
data
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
sendError(error) {
|
|
18
|
+
this.ws.send(JSON.stringify({
|
|
19
|
+
requestId: this.message.requestId,
|
|
20
|
+
status: 'error',
|
|
21
|
+
error
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
getLibraryId() {
|
|
25
|
+
return this.message.libraryId;
|
|
26
|
+
}
|
|
27
|
+
getAction() {
|
|
28
|
+
return this.message.action;
|
|
29
|
+
}
|
|
30
|
+
getPayload() {
|
|
31
|
+
return this.message.payload.data || {};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.MessageHandler = MessageHandler;
|
|
35
|
+
//# sourceMappingURL=MessageHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageHandler.js","sourceRoot":"","sources":["../src/MessageHandler.ts"],"names":[],"mappings":";;;AAIA,MAAsB,cAAc;IAClC,YACY,SAAkC,EAClC,EAAa,EACb,OAAyB;QAFzB,cAAS,GAAT,SAAS,CAAyB;QAClC,OAAE,GAAF,EAAE,CAAW;QACb,YAAO,GAAP,OAAO,CAAkB;IAClC,CAAC;IAIM,YAAY,CAAC,IAAyB;QAC9C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,MAAM,EAAE,IAAI;YACZ,IAAI;SACL,CAAC,CAAC,CAAC;IACN,CAAC;IAES,SAAS,CAAC,KAAa;QAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,MAAM,EAAE,OAAO;YACf,KAAK;SACN,CAAC,CAAC,CAAC;IACN,CAAC;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAES,SAAS;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAES,UAAU;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACzC,CAAC;CACF;AApCD,wCAoCC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MiraWebsocketServer } from './WebSocketServer';
|
|
2
|
+
import { MiraHttpServer } from './HttpServer';
|
|
3
|
+
import { LibraryStorage } from './LibraryStorage';
|
|
4
|
+
export declare class MiraBackend {
|
|
5
|
+
webSocketServer: MiraWebsocketServer;
|
|
6
|
+
httpServer: MiraHttpServer;
|
|
7
|
+
libraries: LibraryStorage;
|
|
8
|
+
dataPath: string;
|
|
9
|
+
constructor(options?: {
|
|
10
|
+
dataPath?: string;
|
|
11
|
+
httpPort?: number;
|
|
12
|
+
wsPort?: number;
|
|
13
|
+
autoLoad?: boolean;
|
|
14
|
+
autoStart?: boolean;
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* 手动启动服务器
|
|
18
|
+
*/
|
|
19
|
+
start(): void;
|
|
20
|
+
/**
|
|
21
|
+
* 停止服务器
|
|
22
|
+
*/
|
|
23
|
+
stop(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* 创建并启动服务器的静态方法 (向后兼容)
|
|
26
|
+
*/
|
|
27
|
+
static createAndStart(options?: {
|
|
28
|
+
dataPath?: string;
|
|
29
|
+
httpPort?: number;
|
|
30
|
+
wsPort?: number;
|
|
31
|
+
}): MiraBackend;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ServerExample.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerExample.d.ts","sourceRoot":"","sources":["../src/ServerExample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,qBAAa,WAAW;IACtB,eAAe,EAAE,mBAAmB,CAAC;IACrC,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;gBAEL,OAAO,CAAC,EAAE;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB;IAkBD;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,WAAW;CAOhB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MiraBackend = void 0;
|
|
37
|
+
const WebSocketServer_1 = require("./WebSocketServer");
|
|
38
|
+
const HttpServer_1 = require("./HttpServer");
|
|
39
|
+
const LibraryStorage_1 = require("./LibraryStorage");
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
class MiraBackend {
|
|
42
|
+
constructor(options) {
|
|
43
|
+
this.dataPath = options?.dataPath || process.env.DATA_PATH || path.join(process.cwd(), 'data');
|
|
44
|
+
this.libraries = new LibraryStorage_1.LibraryStorage(this);
|
|
45
|
+
// 只有在明确要求时才自动加载
|
|
46
|
+
if (options?.autoLoad !== false) {
|
|
47
|
+
this.libraries.loadAll().then((loaded) => console.log(`${loaded} Libraries loaded`));
|
|
48
|
+
}
|
|
49
|
+
this.httpServer = new HttpServer_1.MiraHttpServer(options?.httpPort || 3000, this);
|
|
50
|
+
this.webSocketServer = new WebSocketServer_1.MiraWebsocketServer(options?.wsPort || 8081, this);
|
|
51
|
+
// 只有在明确要求时才自动启动
|
|
52
|
+
if (options?.autoStart === true) {
|
|
53
|
+
this.start();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 手动启动服务器
|
|
58
|
+
*/
|
|
59
|
+
start() {
|
|
60
|
+
this.webSocketServer.start('/ws');
|
|
61
|
+
// 处理退出
|
|
62
|
+
process.on('SIGINT', async () => {
|
|
63
|
+
console.log('Shutting down servers...');
|
|
64
|
+
await this.stop();
|
|
65
|
+
process.exit();
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 停止服务器
|
|
70
|
+
*/
|
|
71
|
+
async stop() {
|
|
72
|
+
await this.webSocketServer.stop();
|
|
73
|
+
await this.httpServer.stop();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 创建并启动服务器的静态方法 (向后兼容)
|
|
77
|
+
*/
|
|
78
|
+
static createAndStart(options) {
|
|
79
|
+
return new MiraBackend({
|
|
80
|
+
...options,
|
|
81
|
+
autoLoad: true,
|
|
82
|
+
autoStart: true
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.MiraBackend = MiraBackend;
|
|
87
|
+
//# sourceMappingURL=ServerExample.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerExample.js","sourceRoot":"","sources":["../src/ServerExample.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAwD;AACxD,6CAA8C;AAC9C,qDAAkD;AAClD,2CAA6B;AAE7B,MAAa,WAAW;IAMtB,YAAY,OAMX;QACC,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/F,IAAI,CAAC,SAAS,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;QAE1C,gBAAgB;QAChB,IAAI,OAAO,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,mBAAmB,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,2BAAc,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,IAAI,qCAAmB,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QAE9E,gBAAgB;QAChB,IAAI,OAAO,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAElC,OAAO;QACP,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAIrB;QACC,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,OAAO;YACV,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF;AAlED,kCAkEC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { ServerPluginManager } from './ServerPluginManager';
|
|
3
|
+
import { ILibraryServerData } from './ILibraryServerData';
|
|
4
|
+
import { MiraHttpServer } from './HttpServer';
|
|
5
|
+
export declare abstract class ServerPlugin {
|
|
6
|
+
protected readonly pluginName: string;
|
|
7
|
+
protected configs: Record<string, any>;
|
|
8
|
+
protected readonly eventEmitter: EventEmitter;
|
|
9
|
+
protected readonly pluginDir: string;
|
|
10
|
+
protected readonly pluginDataDir: string;
|
|
11
|
+
constructor(pluginName: string, pluginManager: ServerPluginManager, dbServer: ILibraryServerData, httpServer: MiraHttpServer);
|
|
12
|
+
private ensureDirExists;
|
|
13
|
+
protected writeConfig(key: string, value: any): void;
|
|
14
|
+
protected saveConfig(): void;
|
|
15
|
+
protected readConfig(key: string): any;
|
|
16
|
+
protected loadConfig(defaultConfig?: Record<string, any>): void;
|
|
17
|
+
protected writeJson(filename: string, data: any): void;
|
|
18
|
+
protected readJson(filename: string): any;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ServerPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerPlugin.d.ts","sourceRoot":"","sources":["../src/ServerPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,8BAAsB,YAAY;IAMlB,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM;IALjD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAC5C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEV,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,cAAc;IAO/I,OAAO,CAAC,eAAe;IAMvB,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAK7C,SAAS,CAAC,UAAU;IAIpB,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAItC,SAAS,CAAC,UAAU,CAAC,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAI5D,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAK/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;CAO5C"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ServerPlugin = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class ServerPlugin {
|
|
40
|
+
constructor(pluginName, pluginManager, dbServer, httpServer) {
|
|
41
|
+
this.pluginName = pluginName;
|
|
42
|
+
this.configs = {};
|
|
43
|
+
this.eventEmitter = dbServer.getEventManager();
|
|
44
|
+
this.pluginDir = pluginManager.getPluginDir(pluginName);
|
|
45
|
+
this.pluginDataDir = path.join(this.pluginDir, 'data');
|
|
46
|
+
this.ensureDirExists();
|
|
47
|
+
}
|
|
48
|
+
ensureDirExists() {
|
|
49
|
+
if (!fs.existsSync(this.pluginDataDir)) {
|
|
50
|
+
fs.mkdirSync(this.pluginDataDir, { recursive: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
writeConfig(key, value) {
|
|
54
|
+
this.configs[key] = value;
|
|
55
|
+
this.saveConfig();
|
|
56
|
+
}
|
|
57
|
+
saveConfig() {
|
|
58
|
+
return this.writeJson('config.json', this.configs);
|
|
59
|
+
}
|
|
60
|
+
readConfig(key) {
|
|
61
|
+
return this.configs[key];
|
|
62
|
+
}
|
|
63
|
+
loadConfig(defaultConfig = {}) {
|
|
64
|
+
this.configs = { ...defaultConfig, ...this.readJson('config.json') };
|
|
65
|
+
}
|
|
66
|
+
writeJson(filename, data) {
|
|
67
|
+
const filePath = path.join(this.pluginDataDir, filename);
|
|
68
|
+
fs.writeFileSync(filePath, JSON.stringify(data, null, 2));
|
|
69
|
+
}
|
|
70
|
+
readJson(filename) {
|
|
71
|
+
const filePath = path.join(this.pluginDataDir, filename);
|
|
72
|
+
if (fs.existsSync(filePath)) {
|
|
73
|
+
return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.ServerPlugin = ServerPlugin;
|
|
79
|
+
//# sourceMappingURL=ServerPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerPlugin.js","sourceRoot":"","sources":["../src/ServerPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAyB;AACzB,2CAA6B;AAK7B,MAAsB,YAAY;IAM9B,YAA+B,UAAkB,EAAE,aAAkC,EAAE,QAA4B,EAAE,UAA0B;QAAhH,eAAU,GAAV,UAAU,CAAQ;QALvC,YAAO,GAAwB,EAAE,CAAC;QAMxC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAG,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAEO,eAAe;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAES,WAAW,CAAC,GAAW,EAAE,KAAU;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAES,UAAU;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAES,UAAU,CAAC,gBAAqC,EAAE;QACzD,IAAI,CAAC,OAAO,GAAG,EAAC,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAC,CAAC;IACtE,CAAC;IAES,SAAS,CAAC,QAAgB,EAAE,IAAS;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAES,QAAQ,CAAC,QAAgB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAhDD,oCAgDC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { MiraHttpServer } from './HttpServer';
|
|
2
|
+
import { ILibraryServerData } from './ILibraryServerData';
|
|
3
|
+
import { MiraWebsocketServer } from './WebSocketServer';
|
|
4
|
+
export interface PluginConfig {
|
|
5
|
+
name: string;
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
path: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class ServerPluginManager {
|
|
10
|
+
pluginsDir: string;
|
|
11
|
+
private server;
|
|
12
|
+
private httpServer;
|
|
13
|
+
private dbService;
|
|
14
|
+
private pluginsConfigPath;
|
|
15
|
+
private loadedPlugins;
|
|
16
|
+
fields: Record<string, any>[];
|
|
17
|
+
constructor({ server, dbService, httpServer, pluginsDir }: {
|
|
18
|
+
server: MiraWebsocketServer;
|
|
19
|
+
dbService: ILibraryServerData;
|
|
20
|
+
httpServer: MiraHttpServer;
|
|
21
|
+
pluginsDir?: string;
|
|
22
|
+
});
|
|
23
|
+
getPluginDir(pluginName: string): string;
|
|
24
|
+
loadPlugins(): Promise<void>;
|
|
25
|
+
registerFields(fields: Record<string, any>[]): void;
|
|
26
|
+
registerField(field: Record<string, any>): void;
|
|
27
|
+
getPlugin<T>(name: string): T | undefined;
|
|
28
|
+
addPlugin(config: PluginConfig): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ServerPluginManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerPluginManager.d.ts","sourceRoot":"","sources":["../src/ServerPluginManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,aAAa,CAA+B;IACpD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAM;gBAEvB,EAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAC,EAAE;QAAC,MAAM,EAAE,mBAAmB,CAAC;QAAC,SAAS,EAAE,kBAAkB,CAAC;QAAC,UAAU,EAAE,cAAc,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC;IAmBtK,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIlC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI;IAMnD,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAQ/C,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAInC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBvD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ServerPluginManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class ServerPluginManager {
|
|
40
|
+
constructor({ server, dbService, httpServer, pluginsDir }) {
|
|
41
|
+
this.loadedPlugins = new Map();
|
|
42
|
+
this.fields = [];
|
|
43
|
+
this.pluginsDir = pluginsDir || path.join(__dirname, 'plugins');
|
|
44
|
+
this.server = server;
|
|
45
|
+
this.dbService = dbService;
|
|
46
|
+
this.httpServer = httpServer;
|
|
47
|
+
this.pluginsConfigPath = path.join(this.pluginsDir, 'plugins.json');
|
|
48
|
+
// Ensure plugins directory exists
|
|
49
|
+
if (!fs.existsSync(this.pluginsDir)) {
|
|
50
|
+
fs.mkdirSync(this.pluginsDir, { recursive: true });
|
|
51
|
+
}
|
|
52
|
+
// Initialize plugins.json if it doesn't exist
|
|
53
|
+
if (!fs.existsSync(this.pluginsConfigPath)) {
|
|
54
|
+
fs.writeFileSync(this.pluginsConfigPath, JSON.stringify([], null, 2));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// getPluginDir
|
|
58
|
+
getPluginDir(pluginName) {
|
|
59
|
+
return path.join(this.pluginsDir, pluginName);
|
|
60
|
+
}
|
|
61
|
+
async loadPlugins() {
|
|
62
|
+
const config = JSON.parse(fs.readFileSync(this.pluginsConfigPath, 'utf-8'));
|
|
63
|
+
for (const pluginConfig of config) {
|
|
64
|
+
if (pluginConfig.enabled) {
|
|
65
|
+
try {
|
|
66
|
+
const pluginPath = path.join(this.pluginsDir, pluginConfig.path);
|
|
67
|
+
delete require.cache[require.resolve(pluginPath)];
|
|
68
|
+
const pluginModule = require(pluginPath);
|
|
69
|
+
if (typeof pluginModule.init === 'function') {
|
|
70
|
+
await pluginModule.init({ pluginManager: this, server: this.server, dbService: this.dbService, httpServer: this.httpServer });
|
|
71
|
+
}
|
|
72
|
+
this.loadedPlugins.set(pluginConfig.name, pluginModule);
|
|
73
|
+
console.log(`Loaded plugin: ${pluginConfig.name}`);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error(`Failed to load plugin ${pluginConfig.name}:`, err);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
registerFields(fields) {
|
|
82
|
+
for (const field of fields) {
|
|
83
|
+
this.registerField(field);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
registerField(field) {
|
|
87
|
+
let { action, type, field: fieldName } = field;
|
|
88
|
+
if (!fieldName || !action || !type) {
|
|
89
|
+
throw new Error('Field registration error: action, type, and field are required');
|
|
90
|
+
}
|
|
91
|
+
this.fields.push(field);
|
|
92
|
+
}
|
|
93
|
+
getPlugin(name) {
|
|
94
|
+
return this.loadedPlugins.get(name);
|
|
95
|
+
}
|
|
96
|
+
async addPlugin(config) {
|
|
97
|
+
const currentConfig = JSON.parse(fs.readFileSync(this.pluginsConfigPath, 'utf-8'));
|
|
98
|
+
const existingIndex = currentConfig.findIndex(p => p.name === config.name);
|
|
99
|
+
if (existingIndex >= 0) {
|
|
100
|
+
currentConfig[existingIndex] = config;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
currentConfig.push(config);
|
|
104
|
+
}
|
|
105
|
+
fs.writeFileSync(this.pluginsConfigPath, JSON.stringify(currentConfig, null, 2));
|
|
106
|
+
if (config.enabled) {
|
|
107
|
+
await this.loadPlugins();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.ServerPluginManager = ServerPluginManager;
|
|
112
|
+
//# sourceMappingURL=ServerPluginManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerPluginManager.js","sourceRoot":"","sources":["../src/ServerPluginManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LibraryServerDataSQLite } from './LibraryServerDataSQLite';
|
|
2
|
+
import { WebSocket } from 'ws';
|
|
3
|
+
import { MessageHandler } from './handlers/MessageHandler';
|
|
4
|
+
export interface WebSocketMessage {
|
|
5
|
+
action: string;
|
|
6
|
+
requestId: string;
|
|
7
|
+
libraryId: string;
|
|
8
|
+
clientId: string;
|
|
9
|
+
payload: {
|
|
10
|
+
type: string;
|
|
11
|
+
data: Record<string, any>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class WebSocketRouter {
|
|
15
|
+
static route(server: any, // 修改为any类型避免类型冲突
|
|
16
|
+
dbService: LibraryServerDataSQLite, ws: WebSocket, message: WebSocketMessage): Promise<MessageHandler | null>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=WebSocketRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketRouter.d.ts","sourceRoot":"","sources":["../src/WebSocketRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAmB,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAO3D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC3B,CAAC;CACH;AAED,qBAAa,eAAe;WACb,KAAK,CAChB,MAAM,EAAE,GAAG,EAAG,iBAAiB;IAC/B,SAAS,EAAE,uBAAuB,EAClC,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAmBlC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebSocketRouter = void 0;
|
|
4
|
+
const FileHandler_1 = require("./handlers/FileHandler");
|
|
5
|
+
const TagHandler_1 = require("./handlers/TagHandler");
|
|
6
|
+
const FolderHandler_1 = require("./handlers/FolderHandler");
|
|
7
|
+
const LibraryHandler_1 = require("./handlers/LibraryHandler");
|
|
8
|
+
const PluginMessageHandler_1 = require("./handlers/PluginMessageHandler");
|
|
9
|
+
class WebSocketRouter {
|
|
10
|
+
static async route(server, // 修改为any类型避免类型冲突
|
|
11
|
+
dbService, ws, message) {
|
|
12
|
+
const { payload } = message;
|
|
13
|
+
// 根据资源类型路由到不同的处理器
|
|
14
|
+
switch (payload.type) {
|
|
15
|
+
case 'plugin':
|
|
16
|
+
return new PluginMessageHandler_1.PluginMessageHandler(server, dbService, ws, message);
|
|
17
|
+
case 'file':
|
|
18
|
+
return new FileHandler_1.FileHandler(server, dbService, ws, message);
|
|
19
|
+
case 'tag':
|
|
20
|
+
return new TagHandler_1.TagHandler(server, dbService, ws, message);
|
|
21
|
+
case 'folder':
|
|
22
|
+
return new FolderHandler_1.FolderHandler(server, dbService, ws, message);
|
|
23
|
+
case 'library':
|
|
24
|
+
return new LibraryHandler_1.LibraryHandler(server, dbService, ws, message);
|
|
25
|
+
default:
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.WebSocketRouter = WebSocketRouter;
|
|
31
|
+
//# sourceMappingURL=WebSocketRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketRouter.js","sourceRoot":"","sources":["../src/WebSocketRouter.ts"],"names":[],"mappings":";;;AAGA,wDAAqD;AACrD,sDAAmD;AACnD,4DAAyD;AACzD,8DAA2D;AAC3D,0EAAuE;AAavE,MAAa,eAAe;IAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,MAAW,EAAG,iBAAiB;IAC/B,SAAkC,EAClC,EAAa,EACb,OAAyB;QAEzB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAE5B,kBAAkB;QAClB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,QAAQ;gBACX,OAAO,IAAI,2CAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAClE,KAAK,MAAM;gBACT,OAAO,IAAI,yBAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACzD,KAAK,KAAK;gBACR,OAAO,IAAI,uBAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACxD,KAAK,QAAQ;gBACX,OAAO,IAAI,6BAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC3D,KAAK,SAAS;gBACZ,OAAO,IAAI,+BAAc,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5D;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;CACF;AAzBD,0CAyBC"}
|