evogram-gramjs 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.
Files changed (64) hide show
  1. package/.evogram/7878190870/database.db +0 -0
  2. package/lib/EvogramGramJS.d.ts +51 -0
  3. package/lib/EvogramGramJS.js +99 -0
  4. package/lib/commands/Accounts.command.d.ts +6 -0
  5. package/lib/commands/Accounts.command.js +90 -0
  6. package/lib/commands/AddAccount.command.d.ts +6 -0
  7. package/lib/commands/AddAccount.command.js +170 -0
  8. package/lib/commands/index.d.ts +0 -0
  9. package/lib/commands/index.js +1 -0
  10. package/lib/commands/managment/DeleteAccount.command.d.ts +0 -0
  11. package/lib/commands/managment/DeleteAccount.command.js +12 -0
  12. package/lib/config/database.config.d.ts +26 -0
  13. package/lib/config/database.config.js +31 -0
  14. package/lib/entities/Session.entity.d.ts +28 -0
  15. package/lib/entities/Session.entity.js +71 -0
  16. package/lib/entities/SessionEventLog.entity.d.ts +22 -0
  17. package/lib/entities/SessionEventLog.entity.js +50 -0
  18. package/lib/examples/auth.example.d.ts +10 -0
  19. package/lib/examples/auth.example.js +126 -0
  20. package/lib/examples/database.example.d.ts +13 -0
  21. package/lib/examples/database.example.js +109 -0
  22. package/lib/examples/usage.example.d.ts +13 -0
  23. package/lib/examples/usage.example.js +127 -0
  24. package/lib/index.d.ts +7 -0
  25. package/lib/index.js +10 -0
  26. package/lib/services/DatabaseService.d.ts +30 -0
  27. package/lib/services/DatabaseService.js +93 -0
  28. package/lib/services/ImageUploadService.d.ts +15 -0
  29. package/lib/services/ImageUploadService.js +56 -0
  30. package/lib/sessions/Session.d.ts +13 -0
  31. package/lib/sessions/Session.js +25 -0
  32. package/lib/sessions/SessionAuth.d.ts +62 -0
  33. package/lib/sessions/SessionAuth.js +165 -0
  34. package/lib/sessions/SessionLogger.d.ts +84 -0
  35. package/lib/sessions/SessionLogger.js +196 -0
  36. package/lib/sessions/SessionManager.d.ts +79 -0
  37. package/lib/sessions/SessionManager.js +184 -0
  38. package/lib/types/auth.types.d.ts +90 -0
  39. package/lib/types/auth.types.js +19 -0
  40. package/lib/types/session.types.d.ts +87 -0
  41. package/lib/types/session.types.js +21 -0
  42. package/lib/utils/Deferrer.d.ts +6 -0
  43. package/lib/utils/Deferrer.js +14 -0
  44. package/package-lock.json +6 -0
  45. package/package.json +27 -0
  46. package/src/EvogramGramJS.ts +98 -0
  47. package/src/commands/Accounts.command.ts +84 -0
  48. package/src/commands/AddAccount.command.ts +171 -0
  49. package/src/commands/index.ts +0 -0
  50. package/src/commands/managment/DeleteAccount.command.ts +13 -0
  51. package/src/config/database.config.ts +75 -0
  52. package/src/entities/Session.entity.ts +58 -0
  53. package/src/entities/SessionEventLog.entity.ts +41 -0
  54. package/src/index.ts +7 -0
  55. package/src/services/DatabaseService.ts +82 -0
  56. package/src/services/ImageUploadService.ts +49 -0
  57. package/src/sessions/Session.ts +21 -0
  58. package/src/sessions/SessionAuth.ts +173 -0
  59. package/src/sessions/SessionLogger.ts +208 -0
  60. package/src/sessions/SessionManager.ts +190 -0
  61. package/src/types/auth.types.ts +94 -0
  62. package/src/types/session.types.ts +96 -0
  63. package/src/utils/Deferrer.ts +12 -0
  64. package/tsconfig.json +17 -0
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionEventLog = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const Session_entity_1 = require("./Session.entity");
7
+ /**
8
+ * Сущность для логирования событий сессии
9
+ */
10
+ let SessionEventLog = class SessionEventLog {
11
+ };
12
+ exports.SessionEventLog = SessionEventLog;
13
+ tslib_1.__decorate([
14
+ (0, typeorm_1.PrimaryGeneratedColumn)(),
15
+ tslib_1.__metadata("design:type", Number)
16
+ ], SessionEventLog.prototype, "id", void 0);
17
+ tslib_1.__decorate([
18
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255 }),
19
+ tslib_1.__metadata("design:type", String)
20
+ ], SessionEventLog.prototype, "sessionId", void 0);
21
+ tslib_1.__decorate([
22
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
23
+ tslib_1.__metadata("design:type", String)
24
+ ], SessionEventLog.prototype, "eventType", void 0);
25
+ tslib_1.__decorate([
26
+ (0, typeorm_1.Column)({ type: 'varchar', length: 20, default: 'INFO' }),
27
+ tslib_1.__metadata("design:type", String)
28
+ ], SessionEventLog.prototype, "level", void 0);
29
+ tslib_1.__decorate([
30
+ (0, typeorm_1.Column)({ type: 'text' }),
31
+ tslib_1.__metadata("design:type", String)
32
+ ], SessionEventLog.prototype, "message", void 0);
33
+ tslib_1.__decorate([
34
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
35
+ tslib_1.__metadata("design:type", String)
36
+ ], SessionEventLog.prototype, "data", void 0);
37
+ tslib_1.__decorate([
38
+ (0, typeorm_1.CreateDateColumn)(),
39
+ tslib_1.__metadata("design:type", Date
40
+ /** Связь с сессией */
41
+ )
42
+ ], SessionEventLog.prototype, "createdAt", void 0);
43
+ tslib_1.__decorate([
44
+ (0, typeorm_1.ManyToOne)(() => Session_entity_1.Session, (session) => session.eventLogs, { onDelete: 'CASCADE' }),
45
+ (0, typeorm_1.JoinColumn)({ name: 'sessionId' }),
46
+ tslib_1.__metadata("design:type", Session_entity_1.Session)
47
+ ], SessionEventLog.prototype, "session", void 0);
48
+ exports.SessionEventLog = SessionEventLog = tslib_1.__decorate([
49
+ (0, typeorm_1.Entity)('session_event_logs')
50
+ ], SessionEventLog);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Пример использования авторизации через сессию
3
+ *
4
+ * Демонстрирует пошаговую авторизацию с обработкой кодов и паролей
5
+ * Структура: session.auth.start(), session.auth.setCode() и т.д.
6
+ */
7
+ declare function authorizeAccount(): Promise<void>;
8
+ declare function cancelAuth(): Promise<void>;
9
+ declare function clearAuth(): Promise<void>;
10
+ export { authorizeAccount, cancelAuth, clearAuth };
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * Пример использования авторизации через сессию
4
+ *
5
+ * Демонстрирует пошаговую авторизацию с обработкой кодов и паролей
6
+ * Структура: session.auth.start(), session.auth.setCode() и т.д.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.authorizeAccount = authorizeAccount;
10
+ exports.cancelAuth = cancelAuth;
11
+ exports.clearAuth = clearAuth;
12
+ const tslib_1 = require("tslib");
13
+ const index_1 = require("../index");
14
+ // Инициализируем EvogramGramJS (статический класс)
15
+ index_1.EvogramGramJS.initialize(12345678, // TELEGRAM_APP_ID
16
+ 'your-api-hash', // TELEGRAM_APP_HASH
17
+ {
18
+ type: 'sqlite',
19
+ database: './data/evogram.db',
20
+ synchronize: true,
21
+ });
22
+ // Пример: Полный процесс авторизации
23
+ function authorizeAccount() {
24
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
+ var _a, _b;
26
+ const sessionId = 'user1';
27
+ const phoneNumber = '+1234567890';
28
+ try {
29
+ // Шаг 1: Создаем сессию
30
+ const session = yield index_1.EvogramGramJS.sessionManager.addSession({
31
+ sessionId,
32
+ logging: {
33
+ enabled: true,
34
+ logsDirectory: './logs',
35
+ },
36
+ });
37
+ // Настраиваем обработчики событий авторизации для этой сессии
38
+ session.auth.on(index_1.SessionAuthEvent.CODE_SENT, (data) => {
39
+ console.log(`📱 Код отправлен на номер: ${data.phoneNumber}`);
40
+ });
41
+ session.auth.on(index_1.SessionAuthEvent.CODE_RECEIVED, (data) => {
42
+ console.log(`✅ Код получен: ${data.code}`);
43
+ });
44
+ session.auth.on(index_1.SessionAuthEvent.PASSWORD_REQUIRED, () => {
45
+ console.log(`🔐 Требуется пароль (2FA)`);
46
+ });
47
+ session.auth.on(index_1.SessionAuthEvent.AUTH_SUCCESS, (data) => {
48
+ var _a;
49
+ console.log(`🎉 Авторизация успешна!`);
50
+ console.log(`Строка сессии: ${(_a = data.sessionString) === null || _a === void 0 ? void 0 : _a.substring(0, 20)}...`);
51
+ });
52
+ session.auth.on(index_1.SessionAuthEvent.AUTH_ERROR, (data) => {
53
+ console.error(`❌ Ошибка авторизации: ${data.error}`);
54
+ });
55
+ // Шаг 2: Начинаем авторизацию (отправка кода)
56
+ const sendCodeResult = yield session.auth.start(phoneNumber);
57
+ if (!sendCodeResult.success) {
58
+ console.error('Ошибка отправки кода:', sendCodeResult.error);
59
+ return;
60
+ }
61
+ console.log('Код отправлен, ожидаем ввода...');
62
+ // Шаг 3: Вводим код (в реальном приложении это будет из пользовательского ввода)
63
+ const code = '12345'; // В реальности получаем от пользователя
64
+ const signInResult = yield session.auth.setCode(code);
65
+ if (!signInResult.success) {
66
+ if (signInResult.isRequiredPassword) {
67
+ // Шаг 4: Требуется пароль (2FA)
68
+ console.log('Требуется пароль (2FA)');
69
+ // Проверяем, требуется ли пароль
70
+ const isRequired = yield session.auth.isRequiredPassword();
71
+ console.log('Требуется пароль:', isRequired);
72
+ // Получаем код (если нужно)
73
+ const savedCode = session.auth.getCode();
74
+ console.log('Сохраненный код:', savedCode);
75
+ // Вводим пароль (в реальном приложении это будет из пользовательского ввода)
76
+ const password = 'my2FAPassword'; // В реальности получаем от пользователя
77
+ const passwordResult = yield session.auth.setPassword(password);
78
+ if (passwordResult.success) {
79
+ console.log('Авторизация с паролем успешна!');
80
+ console.log('Строка сессии:', ((_a = passwordResult.sessionString) === null || _a === void 0 ? void 0 : _a.substring(0, 20)) + '...');
81
+ }
82
+ else {
83
+ console.error('Ошибка авторизации с паролем:', passwordResult.error);
84
+ }
85
+ }
86
+ else {
87
+ console.error('Ошибка авторизации:', signInResult.error);
88
+ }
89
+ }
90
+ else {
91
+ console.log('Авторизация успешна без пароля!');
92
+ console.log('Строка сессии:', ((_b = signInResult.sessionString) === null || _b === void 0 ? void 0 : _b.substring(0, 20)) + '...');
93
+ }
94
+ // Получаем информацию об авторизации
95
+ const authInfo = session.auth.getInfo();
96
+ console.log('Информация об авторизации:', {
97
+ state: authInfo === null || authInfo === void 0 ? void 0 : authInfo.state,
98
+ phoneNumber: authInfo === null || authInfo === void 0 ? void 0 : authInfo.phoneNumber,
99
+ isRequiredPassword: authInfo === null || authInfo === void 0 ? void 0 : authInfo.isRequiredPassword,
100
+ });
101
+ }
102
+ catch (error) {
103
+ console.error('Ошибка в процессе авторизации:', error);
104
+ }
105
+ });
106
+ }
107
+ // Пример: Отмена авторизации
108
+ function cancelAuth() {
109
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
110
+ const session = index_1.EvogramGramJS.sessionManager.getSession('user1');
111
+ if (session) {
112
+ session.auth.cancel();
113
+ console.log('Авторизация отменена');
114
+ }
115
+ });
116
+ }
117
+ // Пример: Очистка информации об авторизации
118
+ function clearAuth() {
119
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
120
+ const session = index_1.EvogramGramJS.sessionManager.getSession('user1');
121
+ if (session) {
122
+ session.auth.clear();
123
+ console.log('Информация об авторизации очищена');
124
+ }
125
+ });
126
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Пример использования EvogramGramJS с TypeORM
3
+ *
4
+ * Демонстрирует работу с базой данных для сохранения сессий
5
+ */
6
+ declare function initializeDatabase(): Promise<void>;
7
+ declare function loadSessions(): Promise<void>;
8
+ declare function addSession(): Promise<void>;
9
+ declare function getSessionEvents(): Promise<void>;
10
+ declare function getAllSessionsFromDB(): Promise<void>;
11
+ declare function closeDatabase(): Promise<void>;
12
+ declare function example(): Promise<void>;
13
+ export { addSession, closeDatabase, example, getAllSessionsFromDB, getSessionEvents, initializeDatabase, loadSessions };
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Пример использования EvogramGramJS с TypeORM
4
+ *
5
+ * Демонстрирует работу с базой данных для сохранения сессий
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.addSession = addSession;
9
+ exports.closeDatabase = closeDatabase;
10
+ exports.example = example;
11
+ exports.getAllSessionsFromDB = getAllSessionsFromDB;
12
+ exports.getSessionEvents = getSessionEvents;
13
+ exports.initializeDatabase = initializeDatabase;
14
+ exports.loadSessions = loadSessions;
15
+ const tslib_1 = require("tslib");
16
+ const index_1 = require("../index");
17
+ // Конфигурация базы данных
18
+ const databaseConfig = {
19
+ type: 'sqlite', // Используем SQLite (можно также 'postgres', 'mysql', 'mariadb')
20
+ database: './data/evogram.db', // Путь к файлу БД
21
+ synchronize: true, // Автоматически создавать/обновлять схему (только для разработки!)
22
+ logging: false, // Логировать SQL запросы
23
+ };
24
+ // Для PostgreSQL/MySQL можно использовать:
25
+ // const databaseConfig: DatabaseConfig = {
26
+ // type: 'postgres',
27
+ // host: 'localhost',
28
+ // port: 5432,
29
+ // username: 'user',
30
+ // password: 'password',
31
+ // database: 'evogram',
32
+ // synchronize: true,
33
+ // logging: false,
34
+ // }
35
+ // Инициализируем EvogramGramJS с поддержкой БД (статический класс)
36
+ index_1.EvogramGramJS.initialize(12345678, // TELEGRAM_APP_ID
37
+ 'your-api-hash', // TELEGRAM_APP_HASH
38
+ databaseConfig // Конфигурация БД
39
+ );
40
+ // Инициализируем базу данных (если не передали при инициализации)
41
+ function initializeDatabase() {
42
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
43
+ yield index_1.EvogramGramJS.initializeDatabase(databaseConfig);
44
+ console.log('База данных инициализирована');
45
+ });
46
+ }
47
+ // Загружаем сессии из базы данных при старте
48
+ function loadSessions() {
49
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
50
+ const loadedCount = yield index_1.EvogramGramJS.sessionManager.loadSessionsFromDatabase();
51
+ console.log(`Загружено сессий из БД: ${loadedCount}`);
52
+ });
53
+ }
54
+ // Добавляем новую сессию (автоматически сохранится в БД)
55
+ function addSession() {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ const session = yield index_1.EvogramGramJS.sessionManager.addSession({
58
+ sessionId: 'user1',
59
+ logging: {
60
+ enabled: true,
61
+ logsDirectory: './logs',
62
+ },
63
+ });
64
+ console.log('Сессия добавлена и сохранена в БД:', session.sessionId);
65
+ });
66
+ }
67
+ // Получаем события сессии из БД
68
+ function getSessionEvents() {
69
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
70
+ const events = yield index_1.EvogramGramJS.databaseService.getEventLogs('user1', 10);
71
+ console.log('Последние события сессии:', events);
72
+ });
73
+ }
74
+ // Получаем все сессии из БД
75
+ function getAllSessionsFromDB() {
76
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
77
+ const sessions = yield index_1.EvogramGramJS.databaseService.getAllSessions();
78
+ console.log('Все сессии в БД:', sessions.map((s) => s.sessionId));
79
+ });
80
+ }
81
+ // Закрываем подключение к БД
82
+ function closeDatabase() {
83
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
84
+ yield index_1.EvogramGramJS.closeDatabase();
85
+ console.log('Подключение к БД закрыто');
86
+ });
87
+ }
88
+ // Пример полного цикла работы
89
+ function example() {
90
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
91
+ try {
92
+ // Инициализируем БД
93
+ yield initializeDatabase();
94
+ // Загружаем существующие сессии
95
+ yield loadSessions();
96
+ // Добавляем новую сессию
97
+ yield addSession();
98
+ // Получаем события
99
+ yield getSessionEvents();
100
+ // Получаем все сессии
101
+ yield getAllSessionsFromDB();
102
+ // Закрываем БД
103
+ yield closeDatabase();
104
+ }
105
+ catch (error) {
106
+ console.error('Ошибка:', error);
107
+ }
108
+ });
109
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Пример использования SessionManager для управления множеством сессий Telegram
3
+ *
4
+ * Этот файл демонстрирует основные возможности сервиса управления сессиями
5
+ */
6
+ declare function addNewSession(): Promise<void>;
7
+ declare function connectSession(): Promise<void>;
8
+ declare function getSessionInfo(): void;
9
+ declare function getClient(): void;
10
+ declare function getAllSessions(): void;
11
+ declare function removeSession(): Promise<void>;
12
+ declare function bulkOperations(): Promise<void>;
13
+ export { addNewSession, bulkOperations, connectSession, getAllSessions, getClient, getSessionInfo, removeSession };
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * Пример использования SessionManager для управления множеством сессий Telegram
4
+ *
5
+ * Этот файл демонстрирует основные возможности сервиса управления сессиями
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.addNewSession = addNewSession;
9
+ exports.bulkOperations = bulkOperations;
10
+ exports.connectSession = connectSession;
11
+ exports.getAllSessions = getAllSessions;
12
+ exports.getClient = getClient;
13
+ exports.getSessionInfo = getSessionInfo;
14
+ exports.removeSession = removeSession;
15
+ const tslib_1 = require("tslib");
16
+ const index_1 = require("../index");
17
+ // Инициализируем EvogramGramJS (статический класс)
18
+ index_1.EvogramGramJS.initialize(12345678, // Ваш TELEGRAM_APP_ID
19
+ 'your-api-hash' // Ваш TELEGRAM_APP_HASH
20
+ );
21
+ // Получаем менеджер сессий
22
+ const sessionManager = index_1.EvogramGramJS.sessionManager;
23
+ // Настраиваем обработчики событий
24
+ sessionManager.on(index_1.SessionEvent.SESSION_ADDED, (data) => {
25
+ console.log(`✅ Сессия добавлена: ${data.sessionId}`);
26
+ });
27
+ sessionManager.on(index_1.SessionEvent.SESSION_REMOVED, (data) => {
28
+ console.log(`❌ Сессия удалена: ${data.sessionId}`);
29
+ });
30
+ sessionManager.on(index_1.SessionEvent.SESSION_CONNECTED, (data) => {
31
+ console.log(`🔌 Сессия подключена: ${data.sessionId}`);
32
+ });
33
+ sessionManager.on(index_1.SessionEvent.SESSION_DISCONNECTED, (data) => {
34
+ console.log(`🔌 Сессия отключена: ${data.sessionId}`);
35
+ });
36
+ sessionManager.on(index_1.SessionEvent.SESSION_ERROR, (data) => {
37
+ console.error(`⚠️ Ошибка в сессии ${data.sessionId}:`, data.error);
38
+ });
39
+ // Пример: Добавление новой сессии
40
+ function addNewSession() {
41
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
42
+ var _a;
43
+ try {
44
+ const sessionInfo = yield sessionManager.addSession({
45
+ sessionId: 'user1',
46
+ // apiId и apiHash опциональны, если переданы в конструктор SessionManager
47
+ // sessionString: "1BVtsOHwBu..." // Опционально: существующая строка сессии
48
+ logging: {
49
+ enabled: true, // Включить логирование (по умолчанию true)
50
+ logsDirectory: './logs', // Директория для логов (по умолчанию './logs')
51
+ },
52
+ });
53
+ console.log('Сессия создана:', sessionInfo);
54
+ console.log('Файл лога:', (_a = sessionInfo.logger) === null || _a === void 0 ? void 0 : _a.getLogFilePath());
55
+ }
56
+ catch (error) {
57
+ console.error('Ошибка при добавлении сессии:', error);
58
+ }
59
+ });
60
+ }
61
+ // Пример: Подключение сессии
62
+ function connectSession() {
63
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
64
+ try {
65
+ yield sessionManager.connectSession('user1');
66
+ console.log('Сессия успешно подключена');
67
+ }
68
+ catch (error) {
69
+ console.error('Ошибка при подключении:', error);
70
+ }
71
+ });
72
+ }
73
+ // Пример: Получение информации о сессии
74
+ function getSessionInfo() {
75
+ const sessionInfo = sessionManager.getSession('user1');
76
+ if (sessionInfo) {
77
+ console.log('Информация о сессии:', {
78
+ sessionId: sessionInfo.sessionId,
79
+ createdAt: sessionInfo.createdAt,
80
+ lastUsedAt: sessionInfo.lastUsedAt,
81
+ isConnected: sessionInfo.isConnected,
82
+ });
83
+ }
84
+ else {
85
+ console.log('Сессия не найдена');
86
+ }
87
+ }
88
+ // Пример: Получение клиента для работы с Telegram API
89
+ function getClient() {
90
+ const client = sessionManager.getClient('user1');
91
+ if (client) {
92
+ // Теперь можно использовать client для работы с Telegram API
93
+ // Например: client.sendMessage(...)
94
+ console.log('Клиент получен');
95
+ }
96
+ }
97
+ // Пример: Получение всех сессий
98
+ function getAllSessions() {
99
+ const allSessions = sessionManager.getAllSessions();
100
+ console.log(`Всего сессий: ${allSessions.length}`);
101
+ allSessions.forEach((session) => {
102
+ console.log(`- ${session.sessionId} (${session.isConnected ? 'подключена' : 'отключена'})`);
103
+ });
104
+ }
105
+ // Пример: Удаление сессии
106
+ function removeSession() {
107
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
108
+ try {
109
+ yield sessionManager.removeSession('user1');
110
+ console.log('Сессия успешно удалена');
111
+ }
112
+ catch (error) {
113
+ console.error('Ошибка при удалении:', error);
114
+ }
115
+ });
116
+ }
117
+ // Пример: Массовые операции
118
+ function bulkOperations() {
119
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
120
+ // Подключить все сессии
121
+ yield sessionManager.connectAllSessions();
122
+ // Отключить все сессии
123
+ yield sessionManager.disconnectAllSessions();
124
+ // Удалить все сессии
125
+ yield sessionManager.removeAllSessions();
126
+ });
127
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from './EvogramGramJS';
2
+ export * from './config/database.config';
3
+ export * from './entities/Session.entity';
4
+ export * from './entities/SessionEventLog.entity';
5
+ export * from './services/DatabaseService';
6
+ export * from './types/auth.types';
7
+ export * from './types/session.types';
package/lib/index.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./EvogramGramJS"), exports);
5
+ tslib_1.__exportStar(require("./config/database.config"), exports);
6
+ tslib_1.__exportStar(require("./entities/Session.entity"), exports);
7
+ tslib_1.__exportStar(require("./entities/SessionEventLog.entity"), exports);
8
+ tslib_1.__exportStar(require("./services/DatabaseService"), exports);
9
+ tslib_1.__exportStar(require("./types/auth.types"), exports);
10
+ tslib_1.__exportStar(require("./types/session.types"), exports);
@@ -0,0 +1,30 @@
1
+ import { DatabaseConfig } from '../config/database.config';
2
+ import { Session as SessionEntity } from '../entities/Session.entity';
3
+ /**
4
+ * Сервис для работы с базой данных
5
+ * Управляет сохранением и загрузкой сессий и их событий
6
+ */
7
+ export declare class DatabaseService {
8
+ private dataSource;
9
+ private sessionRepository;
10
+ private eventLogRepository;
11
+ private isInitialized;
12
+ /**
13
+ * Инициализирует подключение к базе данных
14
+ *
15
+ * @param config Конфигурация базы данных
16
+ */
17
+ initialize(config?: DatabaseConfig): Promise<void>;
18
+ saveSession(session: Partial<SessionEntity>): Promise<SessionEntity | null>;
19
+ updateSession(sessionId: string, session: Partial<SessionEntity>): Promise<SessionEntity | null>;
20
+ getSession(sessionId: string): Promise<SessionEntity | null>;
21
+ getSessions(): Promise<SessionEntity[]>;
22
+ /**
23
+ * Закрывает подключение к базе данных
24
+ */
25
+ close(): Promise<void>;
26
+ /**
27
+ * Проверяет, инициализирована ли база данных
28
+ */
29
+ isReady(): boolean;
30
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const database_config_1 = require("../config/database.config");
7
+ const Session_entity_1 = require("../entities/Session.entity");
8
+ const SessionEventLog_entity_1 = require("../entities/SessionEventLog.entity");
9
+ /**
10
+ * Сервис для работы с базой данных
11
+ * Управляет сохранением и загрузкой сессий и их событий
12
+ */
13
+ class DatabaseService {
14
+ constructor() {
15
+ this.isInitialized = false;
16
+ }
17
+ /**
18
+ * Инициализирует подключение к базе данных
19
+ *
20
+ * @param config Конфигурация базы данных
21
+ */
22
+ initialize() {
23
+ return tslib_1.__awaiter(this, arguments, void 0, function* (config = {}) {
24
+ if (this.isInitialized)
25
+ return;
26
+ const options = (0, database_config_1.createDataSourceOptions)(config);
27
+ this.dataSource = new typeorm_1.DataSource(options);
28
+ try {
29
+ yield this.dataSource.initialize();
30
+ this.sessionRepository = this.dataSource.getRepository(Session_entity_1.Session);
31
+ this.eventLogRepository = this.dataSource.getRepository(SessionEventLog_entity_1.SessionEventLog);
32
+ this.isInitialized = true;
33
+ }
34
+ catch (error) {
35
+ console.error('Ошибка инициализации базы данных:', error);
36
+ throw error;
37
+ }
38
+ });
39
+ }
40
+ saveSession(session) {
41
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
42
+ if (!this.isReady())
43
+ throw new Error('База данных не инициализирована');
44
+ const existingSession = yield this.sessionRepository.findOne({ where: { sessionId: session.sessionId } });
45
+ if (existingSession)
46
+ yield this.sessionRepository.update({ sessionId: existingSession.sessionId }, session);
47
+ else
48
+ yield this.sessionRepository.save(session);
49
+ return this.getSession(session.sessionId);
50
+ });
51
+ }
52
+ updateSession(sessionId, session) {
53
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
54
+ if (!this.isReady())
55
+ throw new Error('База данных не инициализирована');
56
+ yield this.sessionRepository.update({ sessionId }, session);
57
+ return this.getSession(sessionId);
58
+ });
59
+ }
60
+ getSession(sessionId) {
61
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
62
+ if (!this.isReady())
63
+ throw new Error('База данных не инициализирована');
64
+ return yield this.sessionRepository.findOne({ where: { sessionId } });
65
+ });
66
+ }
67
+ getSessions() {
68
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
69
+ if (!this.isReady())
70
+ throw new Error('База данных не инициализирована');
71
+ return yield this.sessionRepository.find({ order: { createdAt: 'DESC' } });
72
+ });
73
+ }
74
+ /**
75
+ * Закрывает подключение к базе данных
76
+ */
77
+ close() {
78
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
79
+ if (this.dataSource && this.dataSource.isInitialized) {
80
+ yield this.dataSource.destroy();
81
+ this.isInitialized = false;
82
+ }
83
+ });
84
+ }
85
+ /**
86
+ * Проверяет, инициализирована ли база данных
87
+ */
88
+ isReady() {
89
+ var _a;
90
+ return this.isInitialized && ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.isInitialized);
91
+ }
92
+ }
93
+ exports.DatabaseService = DatabaseService;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Сервис для загрузки изображений на внешние хостинги
3
+ */
4
+ export declare class ImageUploadService {
5
+ static readonly UPLOAD_URL = "https://imgbox.vu/uploads";
6
+ /**
7
+ * Загружает изображение на imgbox.vu/uploads
8
+ *
9
+ * @param imageBuffer Буфер изображения
10
+ * @param filename Имя файла (опционально)
11
+ * @returns Promise с URL загруженного изображения
12
+ * @throws Error если загрузка не удалась
13
+ */
14
+ static uploadToImgbox(imageBuffer: Buffer, filename?: string): Promise<string>;
15
+ }