-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathindex.js
30 lines (27 loc) · 1.12 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const ConfigSchema = require('./schemas/ConfigSchemas');
const MarzbanAPI = require('./classes/MarzbanAPI');
const Admin = require('./classes/Admin');
const Core = require('./classes/Core');
const Node = require("./classes/Node");
const User = require('./classes/User');
const Template = require('./classes/Template');
const WebSocketClient = require('./classes/WebSocketClient');
const System = require('./classes/System');
module.exports = (config) => {
const { error } = ConfigSchema.validate(config);
if (error) {
throw new Error(`Invalid configuration: ${error.details.map((d) => d.message).join(', ')}`);
}
const api = new MarzbanAPI(config);
const userInstance = new User(api); // Instantiate User separately
return {
api, // Raw API client
system: new System(api), // System operations
admin: new Admin(api), // Admin functionalities
core: new Core(api), // Core functionalities
node: new Node(api), // Node functionalities
user: userInstance, // User management
template: new Template(api), // Template functionalities
wsClient: new WebSocketClient(api), // WebSocket client
};
};