vv-iiko-pp-parser 1.0.6

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 (87) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/README.md +582 -0
  3. package/dist/clients/clients.fetcher.d.ts +102 -0
  4. package/dist/clients/clients.fetcher.d.ts.map +1 -0
  5. package/dist/clients/clients.fetcher.js +196 -0
  6. package/dist/clients/clients.fetcher.js.map +1 -0
  7. package/dist/clients/clients.parser.d.ts +144 -0
  8. package/dist/clients/clients.parser.d.ts.map +1 -0
  9. package/dist/clients/clients.parser.js +473 -0
  10. package/dist/clients/clients.parser.js.map +1 -0
  11. package/dist/clients/clients.service.d.ts +90 -0
  12. package/dist/clients/clients.service.d.ts.map +1 -0
  13. package/dist/clients/clients.service.js +277 -0
  14. package/dist/clients/clients.service.js.map +1 -0
  15. package/dist/clients/clients.types.d.ts +127 -0
  16. package/dist/clients/clients.types.d.ts.map +1 -0
  17. package/dist/clients/clients.types.js +6 -0
  18. package/dist/clients/clients.types.js.map +1 -0
  19. package/dist/clients/index.d.ts +5 -0
  20. package/dist/clients/index.d.ts.map +1 -0
  21. package/dist/clients/index.js +25 -0
  22. package/dist/clients/index.js.map +1 -0
  23. package/dist/core/auth/iiko-auth.service.d.ts +52 -0
  24. package/dist/core/auth/iiko-auth.service.d.ts.map +1 -0
  25. package/dist/core/auth/iiko-auth.service.js +302 -0
  26. package/dist/core/auth/iiko-auth.service.js.map +1 -0
  27. package/dist/core/http/iiko-http.client.d.ts +13 -0
  28. package/dist/core/http/iiko-http.client.d.ts.map +1 -0
  29. package/dist/core/http/iiko-http.client.js +55 -0
  30. package/dist/core/http/iiko-http.client.js.map +1 -0
  31. package/dist/core/iiko-parser.config.d.ts +28 -0
  32. package/dist/core/iiko-parser.config.d.ts.map +1 -0
  33. package/dist/core/iiko-parser.config.js +76 -0
  34. package/dist/core/iiko-parser.config.js.map +1 -0
  35. package/dist/core/parser/iiko-parser.service.d.ts +15 -0
  36. package/dist/core/parser/iiko-parser.service.d.ts.map +1 -0
  37. package/dist/core/parser/iiko-parser.service.js +156 -0
  38. package/dist/core/parser/iiko-parser.service.js.map +1 -0
  39. package/dist/core/session/iiko-session.service.d.ts +68 -0
  40. package/dist/core/session/iiko-session.service.d.ts.map +1 -0
  41. package/dist/core/session/iiko-session.service.js +209 -0
  42. package/dist/core/session/iiko-session.service.js.map +1 -0
  43. package/dist/iiko-parser.d.ts +149 -0
  44. package/dist/iiko-parser.d.ts.map +1 -0
  45. package/dist/iiko-parser.js +209 -0
  46. package/dist/iiko-parser.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +7 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/interfaces/company-profile.interface.d.ts +12 -0
  52. package/dist/interfaces/company-profile.interface.d.ts.map +1 -0
  53. package/dist/interfaces/company-profile.interface.js +3 -0
  54. package/dist/interfaces/company-profile.interface.js.map +1 -0
  55. package/dist/invoices/index.d.ts +6 -0
  56. package/dist/invoices/index.d.ts.map +1 -0
  57. package/dist/invoices/index.js +22 -0
  58. package/dist/invoices/index.js.map +1 -0
  59. package/dist/invoices/invoices.fetcher.d.ts +49 -0
  60. package/dist/invoices/invoices.fetcher.d.ts.map +1 -0
  61. package/dist/invoices/invoices.fetcher.js +141 -0
  62. package/dist/invoices/invoices.fetcher.js.map +1 -0
  63. package/dist/invoices/invoices.filters.d.ts +40 -0
  64. package/dist/invoices/invoices.filters.d.ts.map +1 -0
  65. package/dist/invoices/invoices.filters.js +81 -0
  66. package/dist/invoices/invoices.filters.js.map +1 -0
  67. package/dist/invoices/invoices.parser.d.ts +101 -0
  68. package/dist/invoices/invoices.parser.d.ts.map +1 -0
  69. package/dist/invoices/invoices.parser.js +540 -0
  70. package/dist/invoices/invoices.parser.js.map +1 -0
  71. package/dist/invoices/invoices.service.d.ts +82 -0
  72. package/dist/invoices/invoices.service.d.ts.map +1 -0
  73. package/dist/invoices/invoices.service.js +361 -0
  74. package/dist/invoices/invoices.service.js.map +1 -0
  75. package/dist/invoices/invoices.storage.service.d.ts +30 -0
  76. package/dist/invoices/invoices.storage.service.d.ts.map +1 -0
  77. package/dist/invoices/invoices.storage.service.js +135 -0
  78. package/dist/invoices/invoices.storage.service.js.map +1 -0
  79. package/dist/invoices/invoices.types.d.ts +94 -0
  80. package/dist/invoices/invoices.types.d.ts.map +1 -0
  81. package/dist/invoices/invoices.types.js +3 -0
  82. package/dist/invoices/invoices.types.js.map +1 -0
  83. package/dist/types.d.ts +138 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +4 -0
  86. package/dist/types.js.map +1 -0
  87. package/package.json +52 -0
@@ -0,0 +1,302 @@
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.IikoAuthService = void 0;
37
+ const tough_cookie_1 = require("tough-cookie");
38
+ const fs = __importStar(require("fs/promises"));
39
+ const path = __importStar(require("path"));
40
+ const cheerio = __importStar(require("cheerio"));
41
+ const iiko_parser_config_1 = require("../iiko-parser.config");
42
+ /**
43
+ * Сервис авторизации в iiko Partner Portal.
44
+ *
45
+ * Выполняет form-based авторизацию через Symfony Security:
46
+ * 1. GET запрос на страницу логина для получения CSRF токена
47
+ * 2. POST запрос с credentials и CSRF токеном
48
+ * 3. Сохранение cookies (PHPSESSION, REMEMBERME) в файл
49
+ *
50
+ * Cookies автоматически сохраняются и загружаются для переиспользования.
51
+ */
52
+ class IikoAuthService {
53
+ constructor(login, password, httpClient, cookiesPath, report) {
54
+ this.login = login;
55
+ this.password = password;
56
+ this.httpClient = httpClient;
57
+ this.cookiesPath = cookiesPath;
58
+ this.report = report;
59
+ }
60
+ /**
61
+ * Выполняет полный процесс авторизации в iiko Partner Portal.
62
+ *
63
+ * Шаги авторизации:
64
+ * 1. GET /en/login — получение страницы логина и CSRF токена
65
+ * 2. POST /en/login — отправка формы с credentials
66
+ * 3. Проверка наличия индикаторов успешной авторизации
67
+ * 4. Сохранение cookies в файл
68
+ *
69
+ * Использует Symfony Security форму с полями:
70
+ * - username (не email!)
71
+ * - password
72
+ * - _csrf_token
73
+ * - _remember_me
74
+ * - _target_path
75
+ *
76
+ * @throws Error если авторизация не удалась
77
+ */
78
+ async loginUser() {
79
+ if (!this.login || !this.password) {
80
+ throw new Error('Login и Password должны быть переданы в конструктор');
81
+ }
82
+ this.report?.({ stage: 'auth', message: 'Starting authentication process...' });
83
+ try {
84
+ const client = this.httpClient.getClient();
85
+ // STEP 1: GET login page для получения PHP сессии и CSRF токена
86
+ console.log('📥 Шаг 1/3: Получаем страницу логина для инициализации сессии...');
87
+ const loginPageResponse = await client.get(iiko_parser_config_1.IikoParserConfig.endpoints.login);
88
+ console.log(`✅ Страница логина получена. Статус: ${loginPageResponse.status}`);
89
+ // Debug: показываем cookies после GET
90
+ await this.httpClient.debugCookies();
91
+ // STEP 2: Извлекаем CSRF токен из HTML
92
+ console.log('🔍 Шаг 2/3: Извлекаем CSRF токен из HTML...');
93
+ const csrfToken = this.extractCsrfToken(loginPageResponse.data);
94
+ if (!csrfToken) {
95
+ console.warn('⚠️ CSRF токен не найден в HTML');
96
+ }
97
+ else {
98
+ console.log(`✅ CSRF токен извлечён: ${csrfToken.substring(0, 20)}...`);
99
+ }
100
+ // STEP 3: POST login с полными данными (Symfony Security)
101
+ console.log('📤 Шаг 3/3: Отправляем данные авторизации (Symfony form)...');
102
+ const formData = new URLSearchParams();
103
+ formData.append('username', this.login); // ← Symfony uses "username", not "email"!
104
+ formData.append('password', this.password);
105
+ formData.append('_remember_me', 'on'); // ← Symfony remember me checkbox
106
+ formData.append('_target_path', '/en/cabinet/profile.html'); // ← REQUIRED for Symfony!
107
+ // Добавляем CSRF токен если найден
108
+ if (csrfToken) {
109
+ formData.append('_csrf_token', csrfToken);
110
+ }
111
+ console.debug(`📋 Отправляемые поля: username, password, _remember_me, _target_path${csrfToken ? ', _csrf_token' : ''}`);
112
+ const postResponse = await client.post(iiko_parser_config_1.IikoParserConfig.endpoints.login, formData, {
113
+ headers: {
114
+ 'Content-Type': 'application/x-www-form-urlencoded',
115
+ 'Referer': `${iiko_parser_config_1.IikoParserConfig.baseUrl}${iiko_parser_config_1.IikoParserConfig.endpoints.login}`,
116
+ 'Origin': iiko_parser_config_1.IikoParserConfig.baseUrl,
117
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
118
+ 'Accept-Language': 'en-US,en;q=0.9',
119
+ 'Upgrade-Insecure-Requests': '1',
120
+ },
121
+ maxRedirects: 5,
122
+ validateStatus: () => true, // Allow all statuses (including redirects)
123
+ });
124
+ console.log(`✅ POST запрос выполнен. Статус: ${postResponse.status}`);
125
+ // Если редирект - это нормально для Symfony
126
+ if (postResponse.status === 302 || postResponse.status === 301) {
127
+ console.log(`🔄 Редирект обнаружен на: ${postResponse.headers.location}`);
128
+ }
129
+ // Debug: показываем cookies после POST
130
+ await this.httpClient.debugCookies();
131
+ // Проверяем, что авторизация действительно прошла
132
+ const isAuthenticated = await this.verifyAuthentication();
133
+ if (!isAuthenticated) {
134
+ throw new Error('Авторизация не удалась: сессия создана, но пользователь не аутентифицирован');
135
+ }
136
+ this.report?.({ stage: 'auth', message: 'Authentication completed successfully' });
137
+ // Сохраняем cookies
138
+ await this.saveCookies();
139
+ }
140
+ catch (error) {
141
+ console.error('❌ Ошибка при авторизации:', error.message);
142
+ if (error.response) {
143
+ console.error(`HTTP статус: ${error.response.status}`);
144
+ const preview = typeof error.response.data === 'string'
145
+ ? error.response.data.substring(0, 300)
146
+ : JSON.stringify(error.response.data).substring(0, 300);
147
+ console.error(`Данные ответа: ${preview}`);
148
+ }
149
+ throw error;
150
+ }
151
+ }
152
+ /**
153
+ * Извлекает CSRF токен из HTML страницы логина
154
+ */
155
+ extractCsrfToken(html) {
156
+ try {
157
+ const $ = cheerio.load(html);
158
+ // Ищем по разным возможным селекторам
159
+ const selectors = [
160
+ 'input[name="_csrf_token"]',
161
+ 'input[name="csrf_token"]',
162
+ 'input[name="_token"]',
163
+ 'input[name="token"]',
164
+ 'input[type="hidden"][name*="csrf"]',
165
+ 'input[type="hidden"][name*="token"]',
166
+ ];
167
+ for (const selector of selectors) {
168
+ const token = $(selector).val();
169
+ if (token && typeof token === 'string') {
170
+ console.debug(`CSRF токен найден через селектор: ${selector}`);
171
+ return token;
172
+ }
173
+ }
174
+ // Попробуем regex если селекторы не сработали
175
+ const regexPatterns = [
176
+ /_csrf_token["']?\s*[:=]\s*["']([^"']+)["']/i,
177
+ /csrf[_-]?token["']?\s*[:=]\s*["']([^"']+)["']/i,
178
+ /<input[^>]*name=["']_csrf_token["'][^>]*value=["']([^"']+)["']/i,
179
+ ];
180
+ for (const regex of regexPatterns) {
181
+ const match = html.match(regex);
182
+ if (match && match[1]) {
183
+ console.debug(`CSRF токен найден через regex: ${regex}`);
184
+ return match[1];
185
+ }
186
+ }
187
+ return null;
188
+ }
189
+ catch (error) {
190
+ console.error('Ошибка при извлечении CSRF токена:', error.message);
191
+ return null;
192
+ }
193
+ }
194
+ /**
195
+ * Проверяет, что пользователь действительно аутентифицирован
196
+ */
197
+ async verifyAuthentication() {
198
+ try {
199
+ console.log('🔍 Проверка аутентификации...');
200
+ const client = this.httpClient.getClient();
201
+ const response = await client.get(iiko_parser_config_1.IikoParserConfig.endpoints.profile);
202
+ // Проверяем статус
203
+ if (response.status !== 200) {
204
+ console.warn(`⚠️ Неожиданный статус: ${response.status}`);
205
+ return false;
206
+ }
207
+ const html = response.data || '';
208
+ // Проверяем наличие признаков НЕавторизованности
209
+ if (typeof html === 'string') {
210
+ const errorIndicators = [
211
+ 'Ошибка 403',
212
+ 'Доступ запрещен',
213
+ 'Access denied',
214
+ 'Forbidden',
215
+ '/login',
216
+ 'form-signin',
217
+ 'auth-form',
218
+ 'Please sign in',
219
+ 'Log in',
220
+ 'Sign in',
221
+ 'type="password"', // login form input
222
+ ];
223
+ for (const indicator of errorIndicators) {
224
+ if (html.includes(indicator)) {
225
+ console.warn(`⚠️ Обнаружен индикатор отсутствия авторизации: "${indicator}"`);
226
+ return false;
227
+ }
228
+ }
229
+ // Проверяем наличие признаков успешной авторизации
230
+ const successIndicators = [
231
+ 'profile',
232
+ 'cabinet',
233
+ 'logout',
234
+ 'личный кабинет',
235
+ 'профиль',
236
+ 'sign out',
237
+ 'log out',
238
+ ];
239
+ let foundSuccess = false;
240
+ for (const indicator of successIndicators) {
241
+ if (html.toLowerCase().includes(indicator.toLowerCase())) {
242
+ foundSuccess = true;
243
+ console.debug(`✅ Найден индикатор авторизации: "${indicator}"`);
244
+ break;
245
+ }
246
+ }
247
+ if (!foundSuccess) {
248
+ console.warn('⚠️ Не найдено признаков успешной авторизации');
249
+ return false;
250
+ }
251
+ }
252
+ console.log('✅ Аутентификация подтверждена');
253
+ return true;
254
+ }
255
+ catch (error) {
256
+ console.error('❌ Ошибка при проверке аутентификации:', error.message);
257
+ return false;
258
+ }
259
+ }
260
+ async saveCookies() {
261
+ try {
262
+ const cookieJar = this.httpClient.getCookieJar();
263
+ const cookiesJson = JSON.stringify(cookieJar.toJSON());
264
+ // Убедимся, что директория существует
265
+ const cookiesDir = path.dirname(this.cookiesPath);
266
+ await fs.mkdir(cookiesDir, { recursive: true });
267
+ await fs.writeFile(this.cookiesPath, cookiesJson, 'utf-8');
268
+ console.log(`💾 Cookies сохранены в ${this.cookiesPath}`);
269
+ }
270
+ catch (error) {
271
+ console.error('❌ Ошибка при сохранении cookies:', error.message);
272
+ throw error;
273
+ }
274
+ }
275
+ async loadCookies() {
276
+ try {
277
+ const cookiesData = await fs.readFile(this.cookiesPath, 'utf-8');
278
+ const cookieJar = tough_cookie_1.CookieJar.fromJSON(cookiesData);
279
+ console.log('📂 Cookies загружены из файла');
280
+ return cookieJar;
281
+ }
282
+ catch (error) {
283
+ if (error.code === 'ENOENT') {
284
+ console.log('📂 Файл cookies не найден');
285
+ return null;
286
+ }
287
+ console.error('❌ Ошибка при загрузке cookies:', error.message);
288
+ throw error;
289
+ }
290
+ }
291
+ async cookiesFileExists() {
292
+ try {
293
+ await fs.access(this.cookiesPath);
294
+ return true;
295
+ }
296
+ catch {
297
+ return false;
298
+ }
299
+ }
300
+ }
301
+ exports.IikoAuthService = IikoAuthService;
302
+ //# sourceMappingURL=iiko-auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iiko-auth.service.js","sourceRoot":"","sources":["../../../src/core/auth/iiko-auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { CookieJar } from 'tough-cookie';
3
+ export declare class IikoHttpClient {
4
+ private axiosInstance;
5
+ private cookieJar;
6
+ constructor();
7
+ private createAxiosInstance;
8
+ getClient(): AxiosInstance;
9
+ getCookieJar(): CookieJar;
10
+ setCookieJar(cookieJar: CookieJar): void;
11
+ debugCookies(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=iiko-http.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iiko-http.client.d.ts","sourceRoot":"","sources":["../../../src/core/http/iiko-http.client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,SAAS,CAAY;;IAO7B,OAAO,CAAC,mBAAmB;IAwB3B,SAAS,IAAI,aAAa;IAI1B,YAAY,IAAI,SAAS;IAIzB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAMlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAMpC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IikoHttpClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const axios_cookiejar_support_1 = require("axios-cookiejar-support");
9
+ const tough_cookie_1 = require("tough-cookie");
10
+ const iiko_parser_config_1 = require("../iiko-parser.config");
11
+ class IikoHttpClient {
12
+ constructor() {
13
+ this.cookieJar = new tough_cookie_1.CookieJar();
14
+ this.createAxiosInstance();
15
+ }
16
+ createAxiosInstance() {
17
+ // CRITICAL: jar must be passed BEFORE wrapper()
18
+ const axiosConfig = {
19
+ baseURL: iiko_parser_config_1.IikoParserConfig.baseUrl,
20
+ jar: this.cookieJar, // ← jar MUST be here
21
+ withCredentials: true,
22
+ maxRedirects: 5,
23
+ validateStatus: (status) => status >= 200 && status < 400,
24
+ headers: {
25
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
26
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
27
+ 'Accept-Language': 'en-US,en;q=0.9',
28
+ 'Accept-Encoding': 'gzip, deflate, br',
29
+ 'Connection': 'keep-alive',
30
+ 'Upgrade-Insecure-Requests': '1',
31
+ },
32
+ };
33
+ const instance = axios_1.default.create(axiosConfig);
34
+ this.axiosInstance = (0, axios_cookiejar_support_1.wrapper)(instance);
35
+ }
36
+ getClient() {
37
+ return this.axiosInstance;
38
+ }
39
+ getCookieJar() {
40
+ return this.cookieJar;
41
+ }
42
+ setCookieJar(cookieJar) {
43
+ this.cookieJar = cookieJar;
44
+ // CRITICAL: Recreate axios instance with new CookieJar
45
+ this.createAxiosInstance();
46
+ }
47
+ async debugCookies() {
48
+ const cookies = await this.cookieJar.getCookies(iiko_parser_config_1.IikoParserConfig.baseUrl);
49
+ const cookieString = cookies.map((c) => `${c.key}=${c.value}`).join('; ');
50
+ console.debug(`Current cookies: ${cookieString || '(empty)'}`);
51
+ console.debug(`Total cookies count: ${cookies.length}`);
52
+ }
53
+ }
54
+ exports.IikoHttpClient = IikoHttpClient;
55
+ //# sourceMappingURL=iiko-http.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iiko-http.client.js","sourceRoot":"","sources":["../../../src/core/http/iiko-http.client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA6C;AAC7C,qEAAkD;AAClD,+CAAyC;AACzC,8DAAyD;AAEzD,MAAa,cAAc;IAIzB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,wBAAS,EAAE,CAAC;QACjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB;QACzB,gDAAgD;QAChD,MAAM,WAAW,GAAQ;YACvB,OAAO,EAAE,qCAAgB,CAAC,OAAO;YACjC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB;YAC1C,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;YACjE,OAAO,EAAE;gBACP,YAAY,EACV,iHAAiH;gBACnH,QAAQ,EACN,4EAA4E;gBAC9E,iBAAiB,EAAE,gBAAgB;gBACnC,iBAAiB,EAAE,mBAAmB;gBACtC,YAAY,EAAE,YAAY;gBAC1B,2BAA2B,EAAE,GAAG;aACjC;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAA,iCAAO,EAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,SAAoB;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,uDAAuD;QACvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,qCAAgB,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,IAAI,SAAS,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;CACF;AArDD,wCAqDC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Глобальная конфигурация парсера iiko Partner Portal.
3
+ *
4
+ * Содержит базовые URL, пути к endpoints и утилиты для определения
5
+ * расположения файлов cookies.
6
+ */
7
+ export declare const IikoParserConfig: {
8
+ baseUrl: string;
9
+ endpoints: {
10
+ login: string;
11
+ profile: string;
12
+ };
13
+ /**
14
+ * Определяет директорию для хранения cookies.
15
+ *
16
+ * Порядок приоритета:
17
+ * 1. Если передан customPath — используется он
18
+ * 2. Если задана переменная окружения VV_IIKO_COOKIES_DIR — используется она
19
+ * 3. По умолчанию: {process.cwd()}/.vv-cookies
20
+ *
21
+ * Cookies хранятся в проекте-потребителе, а не внутри node_modules.
22
+ *
23
+ * @param customPath - Пользовательский путь к директории cookies (опционально)
24
+ * @returns Полный путь к файлу cookies
25
+ */
26
+ getCookiesPath: (customPath?: string) => string;
27
+ };
28
+ //# sourceMappingURL=iiko-parser.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iiko-parser.config.d.ts","sourceRoot":"","sources":["../../src/core/iiko-parser.config.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;IAO3B;;;;;;;;;;;;OAYG;kCAC2B,MAAM,KAAG,MAAM;CAc9C,CAAC"}
@@ -0,0 +1,76 @@
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.IikoParserConfig = void 0;
37
+ const path = __importStar(require("path"));
38
+ /**
39
+ * Глобальная конфигурация парсера iiko Partner Portal.
40
+ *
41
+ * Содержит базовые URL, пути к endpoints и утилиты для определения
42
+ * расположения файлов cookies.
43
+ */
44
+ exports.IikoParserConfig = {
45
+ baseUrl: 'https://pp.iiko.ru',
46
+ endpoints: {
47
+ login: '/en/login',
48
+ profile: '/ru/cabinet/profile.html',
49
+ },
50
+ /**
51
+ * Определяет директорию для хранения cookies.
52
+ *
53
+ * Порядок приоритета:
54
+ * 1. Если передан customPath — используется он
55
+ * 2. Если задана переменная окружения VV_IIKO_COOKIES_DIR — используется она
56
+ * 3. По умолчанию: {process.cwd()}/.vv-cookies
57
+ *
58
+ * Cookies хранятся в проекте-потребителе, а не внутри node_modules.
59
+ *
60
+ * @param customPath - Пользовательский путь к директории cookies (опционально)
61
+ * @returns Полный путь к файлу cookies
62
+ */
63
+ getCookiesPath: (customPath) => {
64
+ if (customPath) {
65
+ return customPath;
66
+ }
67
+ // Проверяем переменную окружения
68
+ const envCookiesDir = process.env.VV_IIKO_COOKIES_DIR;
69
+ if (envCookiesDir) {
70
+ return path.join(envCookiesDir, 'iiko.cookies.json');
71
+ }
72
+ // Дефолтный путь: {cwd}/.vv-cookies/iiko.cookies.json
73
+ return path.join(process.cwd(), '.vv-cookies', 'iiko.cookies.json');
74
+ },
75
+ };
76
+ //# sourceMappingURL=iiko-parser.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iiko-parser.config.js","sourceRoot":"","sources":["../../src/core/iiko-parser.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAE7B;;;;;GAKG;AACU,QAAA,gBAAgB,GAAG;IAC9B,OAAO,EAAE,oBAAoB;IAC7B,SAAS,EAAE;QACT,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,0BAA0B;KACpC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,EAAE,CAAC,UAAmB,EAAU,EAAE;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,iCAAiC;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QACvD,CAAC;QAED,sDAAsD;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACtE,CAAC;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { IikoSessionService } from '../session/iiko-session.service';
2
+ import { CompanyProfile } from '../../interfaces/company-profile.interface';
3
+ export declare class IikoParserService {
4
+ private readonly sessionService;
5
+ constructor(sessionService: IikoSessionService);
6
+ /**
7
+ * Парсит профиль компании из /en/cabinet/profile.html
8
+ */
9
+ parseCompanyProfile(): Promise<CompanyProfile>;
10
+ /**
11
+ * Выводит красивые логи профиля компании
12
+ */
13
+ logCompanyProfile(profile: CompanyProfile): void;
14
+ }
15
+ //# sourceMappingURL=iiko-parser.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iiko-parser.service.d.ts","sourceRoot":"","sources":["../../../src/core/parser/iiko-parser.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,kBAAkB;IAE/D;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;IAoGpD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;CAoBjD"}