@andrey4emk/npm-app-back-b24 0.9.8 → 1.0.1

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.
@@ -0,0 +1,19 @@
1
+ import type { B24AuthParams, B24Secret, B24Client, TaskData, ApiResult } from "../types/index.js";
2
+ interface ExpressRequest {
3
+ body: Record<string, unknown>;
4
+ }
5
+ interface ExpressResponse {
6
+ status(code: number): ExpressResponse;
7
+ json(data: unknown): void;
8
+ }
9
+ export declare class B24Prepared {
10
+ constructor();
11
+ makeAuthParams(): Promise<ApiResult<{
12
+ AuthParams: B24AuthParams;
13
+ secret: B24Secret;
14
+ }>>;
15
+ save(req?: ExpressRequest | null, res?: ExpressResponse | null, $b24?: B24Client): Promise<ApiResult>;
16
+ }
17
+ export declare function errTask(b24: B24Client, dataTask: TaskData): Promise<ApiResult>;
18
+ export {};
19
+ //# sourceMappingURL=b24.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b24.d.ts","sourceRoot":"","sources":["../../src/bitrix24/b24.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGjH,UAAU,cAAc;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,UAAU,eAAe;IACrB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B;AAgBD,qBAAa,WAAW;;IAGd,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC;QAAE,UAAU,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IA+CtF,IAAI,CAAC,GAAG,GAAE,cAAc,GAAG,IAAW,EAAE,GAAG,GAAE,eAAe,GAAG,IAAW,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;CAiE1H;AAWD,wBAAsB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CA+CpF"}
@@ -1,35 +1,33 @@
1
1
  import { DateTime } from "luxon";
2
2
  import path from "path";
3
3
  import Conf from "conf";
4
-
5
4
  import dotEnv from "dotenv";
6
5
  dotEnv.config();
7
-
8
- let appName = process.env.APP_NAME || "Задай название приложения в .env";
9
- let configDir = process.env.CONFIG_DIR || "../config";
10
- let appEnv = process.env.APP_ENV || "PROD";
11
-
12
- let clientId = appEnv == "DEV" ? process.env.APP_B24_CLIENT_ID_DEV : process.env.APP_B24_CLIENT_ID;
13
- let clientSecret = appEnv == "DEV" ? process.env.APP_B24_CLIENT_SECRET_DEV : process.env.APP_B24_CLIENT_SECRET;
14
-
15
- let confAuthB24 = new Conf({
6
+ const appName = process.env.APP_NAME || "Задай название приложения в .env";
7
+ const configDir = process.env.CONFIG_DIR || "../config";
8
+ const appEnv = process.env.APP_ENV || "PROD";
9
+ const clientId = appEnv === "DEV" ? process.env.APP_B24_CLIENT_ID_DEV : process.env.APP_B24_CLIENT_ID;
10
+ const clientSecret = appEnv === "DEV" ? process.env.APP_B24_CLIENT_SECRET_DEV : process.env.APP_B24_CLIENT_SECRET;
11
+ const confAuthB24 = new Conf({
16
12
  cwd: path.resolve(configDir),
17
13
  configName: "authB24",
18
14
  });
19
-
20
15
  export class B24Prepared {
21
- constructor() {}
22
-
16
+ constructor() { }
23
17
  async makeAuthParams() {
24
18
  // Получаем данные авторизации из конфига
25
- const authConfig = confAuthB24.get()?.[appEnv];
26
-
19
+ const authConfig = confAuthB24.store[appEnv];
27
20
  // Проверяем данные из confAuthB24. Если чего то не хватает, то возвращаем null
28
21
  if (!authConfig || !authConfig.domain || !authConfig.access_token || !authConfig.refresh_token) {
29
- return { error: true, data: null, message: "В конфиге authB24 не хватает данных для авторизации." };
22
+ return { error: true, data: undefined, message: "В конфиге authB24 не хватает данных для авторизации." };
30
23
  }
31
24
  // Формируем параметры авторизации для SDK
32
- let AuthParams = {
25
+ let domain = authConfig.domain;
26
+ // Если authParamB24.domain содержит https://, то удаляем его
27
+ if (domain.startsWith("https://")) {
28
+ domain = domain.replace("https://", "");
29
+ }
30
+ const AuthParams = {
33
31
  applicationToken: "", // если нет — можно '' (см. примечание ниже)
34
32
  userId: 0, // если неизвестен — 0
35
33
  memberId: authConfig.member_id,
@@ -38,30 +36,23 @@ export class B24Prepared {
38
36
  expires: authConfig.expires_in,
39
37
  expiresIn: 1800,
40
38
  scope: "", // если нет строки scope — оставьте пусто
41
- domain: authConfig.domain,
42
- clientEndpoint: `https://${authConfig.domain}/rest/`,
39
+ domain: domain,
40
+ clientEndpoint: `https://${domain}/rest/`,
43
41
  serverEndpoint: "https://oauth.bitrix.info/rest/",
44
42
  status: "L", // Local — для локальных приложений; подставьте свой вариант
45
43
  issuer: "store", // опционально
46
44
  };
47
- // Если authParamB24.domain содержит https://, то удаляем его
48
- if (AuthParams.domain.startsWith("https://")) {
49
- AuthParams.domain = AuthParams.domain.replace("https://", "");
50
- }
51
-
52
45
  // Проверяем секреты приложения
53
46
  if (!clientId || !clientSecret) {
54
- return { error: true, data: null, message: "Не заданы clientId или clientSecret приложения в .env." };
47
+ return { error: true, data: undefined, message: "Не заданы clientId или clientSecret приложения в .env." };
55
48
  }
56
- let secret = {
49
+ const secret = {
57
50
  clientId: clientId,
58
51
  clientSecret: clientSecret,
59
52
  };
60
-
61
53
  // Если все ок, то возвращаем параметры в data
62
54
  return { error: false, data: { AuthParams, secret }, message: "Параметры авторизации сформированы." };
63
55
  }
64
-
65
56
  // Сохраняем токены из фронта
66
57
  async save(req = null, res = null, $b24) {
67
58
  try {
@@ -70,35 +61,36 @@ export class B24Prepared {
70
61
  if (!$b24) {
71
62
  return { error: true, message: "$b24 не инициализирован." };
72
63
  }
73
-
74
64
  // Пробуем получить данные авторизации
75
65
  let newAuth = null;
76
66
  try {
77
67
  newAuth = await $b24.auth.getAuthData();
78
68
  if (!newAuth) {
79
- let refresh = await $b24.auth.refreshAuth();
80
- newAuth = refresh;
69
+ newAuth = await $b24.auth.refreshAuth();
81
70
  }
82
- } catch (error) {
83
- return { error: true, message: `Ошибка при получении данных авторизации из $b24. ${error.message} ` };
84
71
  }
85
-
72
+ catch (error) {
73
+ const err = error;
74
+ return { error: true, message: `Ошибка при получении данных авторизации из $b24. ${err.message} ` };
75
+ }
86
76
  if (!newAuth || !newAuth.access_token) {
87
77
  return { error: true, message: "Не удалось получить новые токены из $b24.auth.getAuthData()." };
88
- } else {
78
+ }
79
+ else {
89
80
  confAuthB24.set(appEnv, newAuth);
90
81
  return { error: false, message: "Токены битрикс24 пересохранены из бэка." };
91
82
  }
92
- } else {
83
+ }
84
+ else {
93
85
  // Вызвали из фронта
94
86
  try {
95
87
  const { access_token, refresh_token, domain, expires_in, member_id } = req.body;
96
88
  if (!access_token || !refresh_token || !domain || !expires_in || !member_id) {
97
- res.status(400).json({ status: "error", message: "Не заполнены обязательные поля." });
98
- return { error: true, message: "Не заполнены обязательные поля." }; // <-- ДОБАВИТЬ
89
+ res?.status(400).json({ status: "error", message: "Не заполнены обязательные поля." });
90
+ return { error: true, message: "Не заполнены обязательные поля." };
99
91
  }
100
92
  // Если домен начинается с https:// или http:// убираем эту часть
101
- let domainClean = domain.replace("https://", "").replace("http://", "");
93
+ const domainClean = domain.replace("https://", "").replace("http://", "");
102
94
  confAuthB24.set(appEnv, {
103
95
  access_token,
104
96
  refresh_token,
@@ -106,45 +98,49 @@ export class B24Prepared {
106
98
  expires_in,
107
99
  member_id,
108
100
  });
109
- res.status(201).json({ status: "ok", message: "Сохранили токены. Перезапустите сервер для применения." });
110
- return { error: false, message: "Токены сохранены из фронта." }; // <-- ДОБАВИТЬ
111
- } catch (error) {
112
- res.status(500).json({ status: "error", message: "Не удалось сохранить токен." });
113
- return { error: true, message: `Не удалось сохранить токен: ${error.message}` }; // <-- ДОБАВИТЬ
101
+ res?.status(201).json({ status: "ok", message: "Сохранили токены. Перезапустите сервер для применения." });
102
+ return { error: false, message: "Токены сохранены из фронта." };
103
+ }
104
+ catch (error) {
105
+ const err = error;
106
+ res?.status(500).json({ status: "error", message: "Не удалось сохранить токен." });
107
+ return { error: true, message: `Не удалось сохранить токен: ${err.message}` };
114
108
  }
115
109
  }
116
- } catch (error) {
117
- return { error: true, message: `Ошибка при сохранении токенов: ${error.message}` };
110
+ }
111
+ catch (error) {
112
+ const err = error;
113
+ return { error: true, message: `Ошибка при сохранении токенов: ${err.message}` };
118
114
  }
119
115
  }
120
116
  }
121
-
122
117
  export async function errTask(b24, dataTask) {
123
118
  try {
124
- let title = dataTask.title;
125
- let description = dataTask.description || "";
126
- let createdBy = dataTask.createdBy || 138;
127
- let responsibleId = dataTask.responsibleId || 1;
128
- let deadline = dataTask.deadline || DateTime.now().plus({ days: 1 }).toISO();
129
- let groupId = dataTask.groupId || null; // Группа
130
- let accomplices = dataTask.accomplices || []; // Соисполнители
131
- let maxTasks = dataTask.maxTasks || 100;
132
- let entityTypeAbbr = dataTask.entityTypeAbbr || "";
119
+ const title = dataTask.title;
120
+ const description = dataTask.description || "";
121
+ const createdBy = dataTask.createdBy || 138;
122
+ const responsibleId = dataTask.responsibleId || 1;
123
+ const deadline = dataTask.deadline || DateTime.now().plus({ days: 1 }).toISO();
124
+ const groupId = dataTask.groupId || null; // Группа
125
+ const accomplices = dataTask.accomplices || []; // Соисполнители
126
+ const maxTasks = dataTask.maxTasks || 100;
127
+ const entityTypeAbbr = dataTask.entityTypeAbbr || "";
133
128
  // Проверяем сколько создано таких задач. Если их уже больше 10, то не создаем новую
134
- let resTasks = await b24.callMethod("tasks.task.list", {
129
+ const resTasks = await b24.callMethod("tasks.task.list", {
135
130
  filter: {
136
131
  TITLE: title,
137
132
  "<STATUS": 4,
138
133
  },
139
134
  select: ["ID", "STATUS"],
140
135
  });
141
- resTasks = resTasks.getData().result.tasks;
142
-
143
- if (resTasks && resTasks.length >= maxTasks) {
136
+ const tasksData = resTasks.getData().result;
137
+ const tasks = tasksData.tasks;
138
+ if (tasks && tasks.length >= maxTasks) {
144
139
  return { error: false, message: `Превышено максимальное количество задач с таким названием (${maxTasks}). Новая задача не создана.` };
145
- } else {
140
+ }
141
+ else {
146
142
  // Создаем задачу в б24 на проверить. Если не смогли получить события
147
- let resCreateTask = await b24.callMethod("tasks.task.add", {
143
+ const resCreateTask = await b24.callMethod("tasks.task.add", {
148
144
  fields: {
149
145
  TITLE: title,
150
146
  DESCRIPTION: `${appName} \n\n ${description}`,
@@ -158,7 +154,9 @@ export async function errTask(b24, dataTask) {
158
154
  });
159
155
  return { error: false, message: "Задача создана в Битрикс24.", result: resCreateTask.getData().result };
160
156
  }
161
- } catch (error) {
162
- return { error: true, message: `Не удалось создать задачу в Битрикс24: ${error.message}` };
157
+ }
158
+ catch (error) {
159
+ const err = error;
160
+ return { error: true, message: `Не удалось создать задачу в Битрикс24: ${err.message}` };
163
161
  }
164
162
  }
@@ -0,0 +1,8 @@
1
+ import type { B24Client, ApiResult, EventsResult, ConnectorEventsResult } from "../types/index.js";
2
+ export declare class Event {
3
+ private b24;
4
+ constructor(b24: B24Client);
5
+ get(eventName: string): Promise<ApiResult<EventsResult | ConnectorEventsResult>>;
6
+ clear(processId: string, messageId: string | string[]): Promise<ApiResult>;
7
+ }
8
+ //# sourceMappingURL=eventGet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventGet.d.ts","sourceRoot":"","sources":["../../src/bitrix24/eventGet.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAgB,qBAAqB,EAAoB,MAAM,mBAAmB,CAAC;AA6BnI,qBAAa,KAAK;IACd,OAAO,CAAC,GAAG,CAAY;gBAEX,GAAG,EAAE,SAAS;IAOpB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,qBAAqB,CAAC,CAAC;IA2EhF,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;CAcnF"}
@@ -0,0 +1,92 @@
1
+ /*
2
+ Как использовать:
3
+ import { Event } from "@andrey4emk/npm-app-back-b24";
4
+ const event = new Event($b24); // $b24 — ваш экземпляр SDK
5
+ await event.get('ONCRMDYNAMICITEMUPDATE_149');
6
+ */
7
+ export class Event {
8
+ b24;
9
+ constructor(b24) {
10
+ if (!b24 || typeof b24.callMethod !== "function") {
11
+ throw new Error("Event: передали херовый b24 или не передали вообще");
12
+ }
13
+ this.b24 = b24;
14
+ }
15
+ async get(eventName) {
16
+ try {
17
+ // Запрашиваем офлайн события сделок через API Bitrix24
18
+ const response = await this.b24.callMethod("event.offline.get", {
19
+ clear: 0,
20
+ filter: { EVENT_NAME: eventName },
21
+ });
22
+ const arrOfflineEvents = response.getData();
23
+ if (eventName === "ONIMCONNECTORMESSAGEADD") {
24
+ // Написали сообщение из битрикс24 в кастомный коннектор
25
+ const events = {
26
+ processId: null,
27
+ message: [],
28
+ };
29
+ if (arrOfflineEvents.result.events.length > 0) {
30
+ events.processId = arrOfflineEvents.result.process_id;
31
+ events.message = arrOfflineEvents.result.events.map((event) => ({
32
+ connectorId: event.EVENT_DATA.CONNECTOR || "",
33
+ lineId: event.EVENT_DATA.LINE || "",
34
+ chatId: event.EVENT_DATA.MESSAGES?.[0]?.chat?.id || 0,
35
+ text: event.EVENT_DATA.MESSAGES?.[0]?.message?.text || null,
36
+ file: event.EVENT_DATA.MESSAGES?.[0]?.message?.files || null,
37
+ attachments: event.EVENT_DATA.MESSAGES?.[0]?.message?.attachments || null,
38
+ im: event.EVENT_DATA.MESSAGES?.[0]?.im || null,
39
+ }));
40
+ }
41
+ return { error: false, data: events, message: "События коннектора получены." };
42
+ }
43
+ else {
44
+ // Пока тут обрабатываем только события сделок и смарт процессов
45
+ const events = {
46
+ processId: null,
47
+ entitysId: [],
48
+ arrMessageIdAndEntityId: [],
49
+ };
50
+ // Очищаем сразу события, у которых EVENT_ADDITIONAL: { user_id: '138' }, их не обрабатываем
51
+ const arrEventsToClear = arrOfflineEvents.result.events.filter((event) => event.EVENT_ADDITIONAL.user_id === "138");
52
+ if (arrEventsToClear.length > 0) {
53
+ const arrMessageIdToClear = arrEventsToClear.map((event) => event.MESSAGE_ID);
54
+ await this.b24.callMethod("event.offline.clear", {
55
+ process_id: arrOfflineEvents.result.process_id,
56
+ message_id: arrMessageIdToClear,
57
+ });
58
+ // Удаляем эти события из основного массива
59
+ arrOfflineEvents.result.events = arrOfflineEvents.result.events.filter((event) => event.EVENT_ADDITIONAL.user_id !== "138");
60
+ }
61
+ if (arrOfflineEvents.result.events.length > 0) {
62
+ events.processId = arrOfflineEvents.result.process_id;
63
+ events.entitysId = arrOfflineEvents.result.events.map((event) => event.EVENT_DATA.FIELDS?.ID || 0);
64
+ events.arrMessageIdAndEntityId = arrOfflineEvents.result.events.map((event) => ({
65
+ messageId: event.MESSAGE_ID,
66
+ entityId: event.EVENT_DATA.FIELDS?.ID || 0,
67
+ }));
68
+ }
69
+ // Возвращаем очищенный результат
70
+ return { error: false, data: events, message: "События получены." };
71
+ }
72
+ }
73
+ catch (error) {
74
+ const err = error;
75
+ return { error: true, status: "error", message: `Не удалось получить события. ${err.message}` };
76
+ }
77
+ }
78
+ async clear(processId, messageId) {
79
+ try {
80
+ // Очищаем офлайн события сделок через API Bitrix24
81
+ await this.b24.callMethod("event.offline.clear", {
82
+ process_id: processId,
83
+ message_id: messageId,
84
+ });
85
+ return { error: false, message: "События очищены." };
86
+ }
87
+ catch (error) {
88
+ const err = error;
89
+ return { error: true, status: "error", message: `Не удалось очистить события. ${err.message}` };
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,9 @@
1
+ export * from "./bitrix24/b24.js";
2
+ export * from "./bitrix24/eventGet.js";
3
+ export * from "./sendMessage/chatApp.js";
4
+ export * from "./sendMessage/smsgold.js";
5
+ export * from "./sendMessage/email.js";
6
+ export * from "./sendMessage/wappi.js";
7
+ export * from "./logs/logs.js";
8
+ export type { ApiResult, B24AuthConfig, B24AuthParams, B24Secret, B24Client, B24Response, TaskData, EventMessage, EventsResult, ConnectorMessage, ConnectorEventsResult, WappiAuth, MessageData, MessengerType, ChatAppMakeParams, ChatAppAuthParams, ChatAppTypeParams, ChatAppMessengerType, EmailAuth, EmailData, SmsgoldAuth, SmsData, LogLevel, LogConfig, LogFullConfig, } from "./types/index.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,gBAAgB,CAAC;AAG/B,YAAY,EAER,SAAS,EAGT,aAAa,EACb,aAAa,EACb,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EAGR,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EAGrB,SAAS,EACT,WAAW,EACX,aAAa,EAGb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EAGpB,SAAS,EACT,SAAS,EAGT,WAAW,EACX,OAAO,EAGP,QAAQ,EACR,SAAS,EACT,aAAa,GAChB,MAAM,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ // index.ts — публичная точка входа
2
+ // Bitrix24
3
+ export * from "./bitrix24/b24.js";
4
+ export * from "./bitrix24/eventGet.js";
5
+ // SendMessage
6
+ export * from "./sendMessage/chatApp.js";
7
+ export * from "./sendMessage/smsgold.js";
8
+ export * from "./sendMessage/email.js";
9
+ export * from "./sendMessage/wappi.js";
10
+ // Logs
11
+ export * from "./logs/logs.js";
@@ -0,0 +1,9 @@
1
+ import type { LogLevel } from "../types/index.js";
2
+ declare class LogsAPI {
3
+ #private;
4
+ constructor();
5
+ add(message: unknown, level?: LogLevel, jsonData?: unknown): void;
6
+ }
7
+ export declare const logs: LogsAPI;
8
+ export {};
9
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/logs/logs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAA4B,MAAM,mBAAmB,CAAC;AAU5E,cAAM,OAAO;;;IAiCT,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI;CA4BpE;AAED,eAAO,MAAM,IAAI,SAAgB,CAAC"}
@@ -2,13 +2,11 @@ import path from "path";
2
2
  import Conf from "conf";
3
3
  import dotEnv from "dotenv";
4
4
  dotEnv.config();
5
-
6
- let configDir = process.env.CONFIG_DIR || "../config";
7
- let confLog = new Conf({
5
+ const configDir = process.env.CONFIG_DIR || "../config";
6
+ const confLog = new Conf({
8
7
  cwd: path.resolve(configDir),
9
8
  configName: "log",
10
9
  });
11
-
12
10
  class LogsAPI {
13
11
  // Дефолтные настройки логирования
14
12
  #defaultConfig = {
@@ -28,11 +26,9 @@ class LogsAPI {
28
26
  json: true,
29
27
  },
30
28
  };
31
-
32
29
  constructor() {
33
30
  this.#initConfig();
34
31
  }
35
-
36
32
  // Проверяем и заполняем конфиг дефолтными значениями если данных нет
37
33
  #initConfig() {
38
34
  for (const level of Object.keys(this.#defaultConfig)) {
@@ -41,35 +37,27 @@ class LogsAPI {
41
37
  }
42
38
  }
43
39
  }
44
-
45
40
  add(message, level, jsonData) {
46
41
  const levelStr = level || "info";
47
-
48
42
  // Проверяем конфиг, и если стоит что логирование отключено, то выходим
49
- const isLoggingEnabled = confLog.get(`${levelStr}.enabled`);
50
- if (!isLoggingEnabled) {
43
+ const config = confLog.get(levelStr);
44
+ if (!config?.enabled) {
51
45
  return;
52
46
  }
53
-
54
47
  const messageText = typeof message === "string" ? message : JSON.stringify(message);
55
-
56
48
  // Цвета для разных уровней
57
49
  const colors = {
58
- info: confLog.get("info.color"), // Зеленый
59
- debug: confLog.get("debug.color"), // Серый
60
- error: confLog.get("error.color"), // Красный
50
+ info: confLog.get("info")?.color || "\x1b[32m",
51
+ debug: confLog.get("debug")?.color || "\x1b[37m",
52
+ error: confLog.get("error")?.color || "\x1b[31m",
61
53
  };
62
-
63
54
  const resetColor = "\x1b[0m"; // Сброс цвета
64
-
65
55
  // Логирование с цветом в консоль
66
- const color = colors[levelStr] || "\x1b[37m"; // По умолчанию серый
56
+ const color = colors[levelStr] || "\x1b[37m";
67
57
  console.log(`${color}${levelStr}: ${messageText}${resetColor}`);
68
-
69
58
  if (jsonData) {
70
59
  console.dir(jsonData, { depth: null, colors: true });
71
60
  }
72
61
  }
73
62
  }
74
-
75
63
  export const logs = new LogsAPI();
@@ -0,0 +1,37 @@
1
+ import type { ChatAppMakeParams, ChatAppAuthParams, ChatAppTypeParams, ChatAppMessengerType, MessageData, ApiResult } from "../types/index.js";
2
+ interface ChatAppResponse {
3
+ success: boolean;
4
+ data?: {
5
+ exist?: boolean;
6
+ accessToken?: string;
7
+ accessTokenEndTime?: string;
8
+ refreshToken?: string;
9
+ refreshTokenEndTime?: string;
10
+ };
11
+ licenses?: unknown[];
12
+ check?: boolean;
13
+ }
14
+ interface ChatAppSendResult extends ApiResult<ChatAppResponse> {
15
+ auth?: ChatAppAuthParams | null;
16
+ }
17
+ export declare class ChatApp {
18
+ /**
19
+ * @param makeParam - объект с параметрами для создания токена
20
+ * @param authParam - объект с параметрами авторизации
21
+ * @param typeParam - объект с типами мессенджеров и их параметрами
22
+ */
23
+ private make;
24
+ private auth;
25
+ private type;
26
+ private updateToken;
27
+ constructor(makeParam: ChatAppMakeParams, authParam: ChatAppAuthParams, typeParam: ChatAppTypeParams);
28
+ sendMessageChatApp(messangerType: ChatAppMessengerType, messageData: MessageData): Promise<ChatAppSendResult>;
29
+ sendFileChatApp(messangerType: ChatAppMessengerType, messageData: MessageData): Promise<ChatAppSendResult>;
30
+ phoneCheckChatApp(messangerType: ChatAppMessengerType, phone: string): Promise<ChatAppSendResult>;
31
+ checkTokenChatApp(): Promise<ApiResult<ChatAppResponse>>;
32
+ makeTokenChatApp(): Promise<ApiResult>;
33
+ refreshTokenChatApp(): Promise<ApiResult>;
34
+ getLicensesChatApp(): Promise<ApiResult<unknown[]>>;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=chatApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatApp.d.ts","sourceRoot":"","sources":["../../src/sendMessage/chatApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE/I,UAAU,eAAe;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,iBAAkB,SAAQ,SAAS,CAAC,eAAe,CAAC;IAC1D,IAAI,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACnC;AAED,qBAAa,OAAO;IAChB;;;;OAIG;IACH,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,WAAW,CAAU;gBAEjB,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;IAO9F,kBAAkB,CAAC,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsD7G,eAAe,CAAC,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0D1G,iBAAiB,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4CjG,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAyBxD,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC;IAmCtC,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAsCzC,kBAAkB,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;CAuB5D"}