@will-17173/telegram-cli 0.1.0 → 0.2.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 (54) hide show
  1. package/README.md +109 -6
  2. package/README.zh-CN.md +110 -7
  3. package/dist/cli/app.js +3 -1
  4. package/dist/cli/app.js.map +1 -1
  5. package/dist/commands/account.js +3 -1
  6. package/dist/commands/account.js.map +1 -1
  7. package/dist/commands/config.js +96 -13
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/group.js +107 -0
  10. package/dist/commands/group.js.map +1 -0
  11. package/dist/commands/telegram-runner.js +84 -0
  12. package/dist/commands/telegram-runner.js.map +1 -0
  13. package/dist/commands/telegram.js +98 -130
  14. package/dist/commands/telegram.js.map +1 -1
  15. package/dist/config/credential-store.js +76 -22
  16. package/dist/config/credential-store.js.map +1 -1
  17. package/dist/config/env.js +12 -1
  18. package/dist/config/env.js.map +1 -1
  19. package/dist/index.js +0 -0
  20. package/dist/presenters/group.js +106 -0
  21. package/dist/presenters/group.js.map +1 -0
  22. package/dist/presenters/human.js +7 -9
  23. package/dist/presenters/human.js.map +1 -1
  24. package/dist/presenters/ink/listen.js +381 -145
  25. package/dist/presenters/ink/listen.js.map +1 -1
  26. package/dist/presenters/listen-message.js +6 -237
  27. package/dist/presenters/listen-message.js.map +1 -1
  28. package/dist/services/attachment-download.js +5 -2
  29. package/dist/services/attachment-download.js.map +1 -1
  30. package/dist/services/auto-download-coordinator.js +214 -0
  31. package/dist/services/auto-download-coordinator.js.map +1 -0
  32. package/dist/services/group-service.js +164 -0
  33. package/dist/services/group-service.js.map +1 -0
  34. package/dist/services/listen-attachment.js +248 -0
  35. package/dist/services/listen-attachment.js.map +1 -0
  36. package/dist/services/message-service.js +54 -4
  37. package/dist/services/message-service.js.map +1 -1
  38. package/dist/services/query-service.js +37 -32
  39. package/dist/services/query-service.js.map +1 -1
  40. package/dist/services/sync-service.js +18 -6
  41. package/dist/services/sync-service.js.map +1 -1
  42. package/dist/telegram/client-factory.js +4 -2
  43. package/dist/telegram/client-factory.js.map +1 -1
  44. package/dist/telegram/fake-group-management.js +264 -0
  45. package/dist/telegram/fake-group-management.js.map +1 -0
  46. package/dist/telegram/group-types.js +19 -0
  47. package/dist/telegram/group-types.js.map +1 -0
  48. package/dist/telegram/mtcute-client.js +73 -8
  49. package/dist/telegram/mtcute-client.js.map +1 -1
  50. package/dist/telegram/mtcute-group-management.js +464 -0
  51. package/dist/telegram/mtcute-group-management.js.map +1 -0
  52. package/dist/telegram/proxy.js +27 -0
  53. package/dist/telegram/proxy.js.map +1 -0
  54. package/package.json +10 -12
@@ -3,41 +3,35 @@ import { createTelegramClient } from '../telegram/client-factory.js';
3
3
  import { MessageService } from '../services/message-service.js';
4
4
  import { SyncService } from '../services/sync-service.js';
5
5
  import { ListenAlbumAggregator } from '../services/listen-album-aggregator.js';
6
+ import { AutoDownloadCoordinator } from '../services/auto-download-coordinator.js';
6
7
  import { actionDetail, chatTable, recordDetail, syncSummary, userDetail } from '../presenters/human.js';
7
8
  import { formatListenLine } from '../presenters/listen-message.js';
8
9
  import { renderInteractiveListen } from '../presenters/ink/listen.js';
9
10
  import { runWithAccountContext } from './account-options.js';
11
+ import { hideBenignUpdateWarnings, runTelegramCommand } from './telegram-runner.js';
10
12
  export function registerTelegramCommands(app) {
11
13
  app.command('status')
12
14
  .description('Show Telegram authentication status')
13
15
  .option('--json')
14
16
  .option('--yaml')
15
17
  .action(async (options) => {
16
- await renderTelegramResult(options, async (client) => {
17
- try {
18
- const user = await client.getCurrentUser();
19
- return {
20
- ok: true,
21
- data: {
22
- authenticated: true,
23
- user: normalizeTelegramUser(user),
24
- },
25
- human: {
26
- kind: 'summary',
27
- title: 'Telegram status',
28
- fields: [
29
- { label: 'Authenticated', value: 'Yes', tone: 'success' },
30
- ...userDetail(normalizeTelegramUser(user)).fields,
31
- ],
32
- },
33
- };
34
- }
35
- catch (error) {
36
- return {
37
- ok: false,
38
- error: { code: 'auth_error', message: errorMessage(error) },
39
- };
40
- }
18
+ await runTelegramCommand(options, async (client) => {
19
+ const user = await client.getCurrentUser();
20
+ return {
21
+ ok: true,
22
+ data: {
23
+ authenticated: true,
24
+ user: normalizeTelegramUser(user),
25
+ },
26
+ human: {
27
+ kind: 'summary',
28
+ title: 'Telegram status',
29
+ fields: [
30
+ { label: 'Authenticated', value: 'Yes', tone: 'success' },
31
+ ...userDetail(normalizeTelegramUser(user)).fields,
32
+ ],
33
+ },
34
+ };
41
35
  });
42
36
  });
43
37
  app.command('whoami')
@@ -45,21 +39,13 @@ export function registerTelegramCommands(app) {
45
39
  .option('--json')
46
40
  .option('--yaml')
47
41
  .action(async (options) => {
48
- await renderTelegramResult(options, async (client) => {
49
- try {
50
- const user = normalizeTelegramUser(await client.getCurrentUser());
51
- return {
52
- ok: true,
53
- data: { user },
54
- human: userDetail(user),
55
- };
56
- }
57
- catch (error) {
58
- return {
59
- ok: false,
60
- error: { code: 'auth_error', message: errorMessage(error) },
61
- };
62
- }
42
+ await runTelegramCommand(options, async (client) => {
43
+ const user = normalizeTelegramUser(await client.getCurrentUser());
44
+ return {
45
+ ok: true,
46
+ data: { user },
47
+ human: userDetail(user),
48
+ };
63
49
  });
64
50
  });
65
51
  app.command('chats')
@@ -68,7 +54,7 @@ export function registerTelegramCommands(app) {
68
54
  .option('--json')
69
55
  .option('--yaml')
70
56
  .action(async (options) => {
71
- await renderTelegramResult(options, async (client) => {
57
+ await runTelegramCommand(options, async (client) => {
72
58
  const chats = await client.listChats(options.type);
73
59
  return { ok: true, data: chats, human: chatTable(chats) };
74
60
  });
@@ -77,21 +63,25 @@ export function registerTelegramCommands(app) {
77
63
  .description('Fetch chat history and store it locally')
78
64
  .argument('<chat>')
79
65
  .option('-n, --limit <limit>', 'Max messages to fetch', '1000')
66
+ .option('--delay <delay>', 'Seconds between history pages', '1')
80
67
  .option('--json')
81
68
  .option('--yaml')
82
69
  .action(async (chat, options) => {
83
70
  const limit = Number.parseInt(options.limit ?? '0', 10);
84
- await renderSyncResult(options, async (service) => service.history({ chat, limit }));
71
+ const pageDelay = parsePageDelay(options.delay);
72
+ await renderSyncResult(options, async (service) => service.history({ chat, limit, pageDelay }));
85
73
  });
86
74
  app.command('sync')
87
75
  .description('Sync new messages from a Telegram chat')
88
76
  .argument('<chat>')
89
77
  .option('-n, --limit <limit>', 'Max messages to fetch', '5000')
78
+ .option('--delay <delay>', 'Seconds between history pages', '1')
90
79
  .option('--json')
91
80
  .option('--yaml')
92
81
  .action(async (chat, options) => {
93
82
  const limit = Number.parseInt(options.limit ?? '0', 10);
94
- await renderSyncResult(options, async (service) => service.sync({ chat, limit }));
83
+ const pageDelay = parsePageDelay(options.delay);
84
+ await renderSyncResult(options, async (service) => service.sync({ chat, limit, pageDelay }));
95
85
  });
96
86
  app.command('sync-all')
97
87
  .description('Sync messages from all Telegram chats')
@@ -138,7 +128,7 @@ export function registerTelegramCommands(app) {
138
128
  .option('--json')
139
129
  .option('--yaml')
140
130
  .action(async (chat, options) => {
141
- await renderTelegramResult(options, async (client) => {
131
+ await runTelegramCommand(options, async (client) => {
142
132
  const info = await client.getChatInfo(parseChat(chat));
143
133
  if (!info)
144
134
  return { ok: false, error: { code: 'chat_not_found', message: `Chat '${chat}' not found on Telegram.` } };
@@ -148,16 +138,18 @@ export function registerTelegramCommands(app) {
148
138
  app.command('send')
149
139
  .description('Send a message to a Telegram chat')
150
140
  .argument('<chat>')
151
- .argument('<message>')
141
+ .argument('[message]')
142
+ .option('-f, --file <path>', 'File to attach (repeatable)', collectOption, [])
152
143
  .option('-r, --reply <reply>', 'Message ID to reply to')
153
144
  .option('--no-preview')
154
145
  .option('--json')
155
146
  .option('--yaml')
156
147
  .action(async (chat, message, options) => {
157
- const reply = options.reply == null ? undefined : Number.parseInt(options.reply, 10);
148
+ const reply = options.reply == null ? undefined : Number(options.reply);
158
149
  await renderMessageResult(options, 'Message sent', (service) => service.send({
159
150
  chat,
160
151
  message,
152
+ files: options.file,
161
153
  reply,
162
154
  linkPreview: options.preview,
163
155
  }));
@@ -198,23 +190,30 @@ export function registerTelegramCommands(app) {
198
190
  .option('--retry-seconds <seconds>', 'Reconnect delay', '5')
199
191
  .option('--send-to <chat>', 'Set default outgoing chat for interactive mode')
200
192
  .option('--no-media', 'Hide attachment summary for incoming messages')
193
+ .option('--auto-download', 'Download incoming attachments automatically')
201
194
  .option('--no-interactive', 'Use plain text listen output')
202
195
  .action(async (chats, options) => {
203
196
  const persist = Boolean(options.persist);
204
197
  const retrySeconds = Number.parseFloat(options.retrySeconds ?? '5');
205
198
  const parsedChats = parseChats(chats)?.map(parseChat);
206
199
  const showMedia = options.media !== false;
200
+ const autoDownload = Boolean(options.autoDownload);
201
+ const showChatName = parsedChats == null;
207
202
  const useInteractive = options.interactive !== false && process.stdin.isTTY === true && process.stdout.isTTY === true;
208
203
  const sendTo = options.sendTo == null ? resolveSingleSendTarget(parsedChats) : parseChat(options.sendTo);
209
204
  const seenMessages = new Set();
210
205
  const seenMessageOrder = [];
211
206
  const controller = new AbortController();
212
207
  const stopListening = () => controller.abort();
213
- const restoreUpdateWarnings = hideBenignUpdateWarnings(process.stdout.write.bind(process.stdout), process.stdout);
214
- const restoreUpdateErrors = hideBenignUpdateWarnings(process.stderr.write.bind(process.stderr), process.stderr);
208
+ const restoreUpdateWarnings = hideBenignUpdateWarnings(process.stdout);
209
+ const restoreUpdateErrors = hideBenignUpdateWarnings(process.stderr);
215
210
  const albumAggregator = new ListenAlbumAggregator({
216
- emit: (messages) => process.stdout.write(formatListenLine(messages, { showMedia })),
211
+ emit: (messages) => process.stdout.write(formatListenLine(messages, {
212
+ showMedia,
213
+ showChatName,
214
+ })),
217
215
  });
216
+ let autoDownloader;
218
217
  process.on('SIGINT', stopListening);
219
218
  process.on('SIGTERM', stopListening);
220
219
  try {
@@ -227,15 +226,30 @@ export function registerTelegramCommands(app) {
227
226
  retrySeconds,
228
227
  sendTo,
229
228
  showMedia,
229
+ autoDownload,
230
+ showChatName,
230
231
  createClient,
231
232
  stopSignal: controller.signal,
232
233
  onRequestStop: stopListening,
233
234
  });
234
235
  return;
235
236
  }
237
+ if (autoDownload) {
238
+ autoDownloader = new AutoDownloadCoordinator({
239
+ onEvent: printAutoDownloadEvent,
240
+ });
241
+ }
236
242
  while (true) {
237
243
  const client = createClient();
238
244
  let retry = false;
245
+ let clientClosed = false;
246
+ const closeClient = async () => {
247
+ if (clientClosed)
248
+ return;
249
+ clientClosed = true;
250
+ await client.close().catch(() => undefined);
251
+ };
252
+ autoDownloader?.setClient(client);
239
253
  try {
240
254
  const result = await client.listen({
241
255
  chats: parsedChats,
@@ -251,6 +265,7 @@ export function registerTelegramCommands(app) {
251
265
  if (oldest != null)
252
266
  seenMessages.delete(oldest);
253
267
  }
268
+ autoDownloader?.enqueue(message);
254
269
  albumAggregator.add(message);
255
270
  },
256
271
  });
@@ -267,7 +282,22 @@ export function registerTelegramCommands(app) {
267
282
  }
268
283
  finally {
269
284
  albumAggregator.flush();
270
- await client.close().catch(() => undefined);
285
+ if (autoDownloader != null) {
286
+ if (controller.signal.aborted) {
287
+ autoDownloader.stop();
288
+ await closeClient();
289
+ await autoDownloader.waitForActive();
290
+ }
291
+ else if (retry) {
292
+ autoDownloader.setClient(null);
293
+ await autoDownloader.waitForActive();
294
+ }
295
+ else {
296
+ await autoDownloader.waitForIdle();
297
+ autoDownloader.setClient(null);
298
+ }
299
+ }
300
+ await closeClient();
271
301
  }
272
302
  if (retry) {
273
303
  await sleep(retrySeconds);
@@ -282,11 +312,23 @@ export function registerTelegramCommands(app) {
282
312
  process.off('SIGTERM', stopListening);
283
313
  restoreUpdateWarnings();
284
314
  restoreUpdateErrors();
315
+ autoDownloader?.stop();
285
316
  albumAggregator.dispose();
286
317
  }
287
318
  process.stdout.write('listening completed\n');
288
319
  });
289
320
  }
321
+ function collectOption(value, previous) {
322
+ return [...previous, value];
323
+ }
324
+ function printAutoDownloadEvent(event) {
325
+ if (event.status === 'completed') {
326
+ process.stdout.write(`downloaded: ${event.path}\n`);
327
+ }
328
+ else if (event.status === 'failed') {
329
+ process.stdout.write(`download failed: ${event.key.split(':').slice(0, -1).join(':')}: ${event.error}\n`);
330
+ }
331
+ }
290
332
  function parseChats(values) {
291
333
  if (!values || values.length === 0)
292
334
  return undefined;
@@ -295,12 +337,16 @@ function parseChats(values) {
295
337
  function resolveSingleSendTarget(chats) {
296
338
  return chats?.length === 1 ? chats[0] : undefined;
297
339
  }
340
+ function parsePageDelay(value) {
341
+ const raw = value ?? '0';
342
+ return raw.trim() === '' ? Number.NaN : Number(raw);
343
+ }
298
344
  function parseChat(chat) {
299
345
  const parsed = Number.parseInt(chat, 10);
300
346
  return Number.isNaN(parsed) || String(parsed) !== chat.trim() ? chat : parsed;
301
347
  }
302
348
  async function renderSyncResult(options, handler) {
303
- await renderTelegramResult(options, async (client, context) => {
349
+ await runTelegramCommand(options, async (client, context) => {
304
350
  const result = await runWithSync(client, context.dbPath, handler);
305
351
  return result.ok && result.human == null
306
352
  ? { ...result, human: syncSummary(result.data) }
@@ -316,30 +362,8 @@ async function runWithSync(client, dbPath, handler) {
316
362
  service.close();
317
363
  }
318
364
  }
319
- const BENIGN_UPDATE_WARNINGS = [
320
- 'pts_before does not match local_pts',
321
- 'local pts not available for postponed updateNewChannelMessage',
322
- 'error fetching common difference',
323
- 'error fetching difference for',
324
- 'Session is reset',
325
- 'MtprotoSession.resetState',
326
- ];
327
- function hideBenignUpdateWarnings(write, stream) {
328
- stream.write = ((chunk, encoding, cb) => {
329
- const rendered = typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString();
330
- const isBenignUpdateWarning = BENIGN_UPDATE_WARNINGS.some((warning) => rendered.includes(warning))
331
- || (rendered.includes('error fetching difference for') && rendered.includes('400 CHANNEL_INVALID'));
332
- if (isBenignUpdateWarning) {
333
- return true;
334
- }
335
- return write.call(stream, chunk, encoding, cb);
336
- });
337
- return () => {
338
- stream.write = write;
339
- };
340
- }
341
365
  async function renderMessageResult(options, title, handler) {
342
- await renderTelegramResult(options, async (client) => {
366
+ await runTelegramCommand(options, async (client) => {
343
367
  const service = new MessageService(client);
344
368
  const result = await handler(service);
345
369
  return result.ok && result.human == null
@@ -347,59 +371,6 @@ async function renderMessageResult(options, title, handler) {
347
371
  : result;
348
372
  });
349
373
  }
350
- async function renderTelegramResult(options, handler) {
351
- await runWithAccountContext(options, async (context) => {
352
- const restoreStdoutWarnings = hideBenignUpdateWarnings(process.stdout.write.bind(process.stdout), process.stdout);
353
- const restoreStderrWarnings = hideBenignUpdateWarnings(process.stderr.write.bind(process.stderr), process.stderr);
354
- let client;
355
- try {
356
- client = createTelegramClient(context.sessionPath);
357
- }
358
- catch (error) {
359
- restoreStdoutWarnings();
360
- restoreStderrWarnings();
361
- return commandFailure('config_error', error);
362
- }
363
- try {
364
- return await handler(client, context);
365
- }
366
- catch (error) {
367
- const authError = toAuthSessionError(error, context.account.name);
368
- return authError ?? commandFailure('telegram_error', error);
369
- }
370
- finally {
371
- restoreStdoutWarnings();
372
- restoreStderrWarnings();
373
- await client.close().catch(() => undefined);
374
- }
375
- });
376
- }
377
- function toAuthSessionError(error, accountName) {
378
- if (isAuthKeyUnregistered(error)) {
379
- return {
380
- ok: false,
381
- error: {
382
- code: 'telegram_account_session_expired',
383
- message: `Session for account "${accountName}" is no longer valid. Re-add the account: tg account remove ${accountName} --force && tg account add.`,
384
- },
385
- };
386
- }
387
- return null;
388
- }
389
- function isAuthKeyUnregistered(error) {
390
- const candidate = error;
391
- const text = typeof candidate.text === 'string'
392
- ? candidate.text
393
- : undefined;
394
- if (text === 'AUTH_KEY_UNREGISTERED')
395
- return true;
396
- const code = typeof candidate.code === 'number' ? candidate.code : undefined;
397
- const message = typeof candidate.message === 'string' ? candidate.message : '';
398
- return message.includes('AUTH_KEY_UNREGISTERED') && code === 401;
399
- }
400
- function commandFailure(code, error) {
401
- return { ok: false, error: { code, message: errorMessage(error) } };
402
- }
403
374
  function normalizeTelegramUser(user) {
404
375
  const name = [user.first_name, user.last_name].filter(Boolean).join(' ');
405
376
  return {
@@ -411,9 +382,6 @@ function normalizeTelegramUser(user) {
411
382
  phone: user.phone,
412
383
  };
413
384
  }
414
- function errorMessage(error) {
415
- return error instanceof Error ? error.message : String(error);
416
- }
417
385
  function sleep(seconds) {
418
386
  const delay = Number.isFinite(seconds) && seconds > 0 ? seconds * 1000 : 0;
419
387
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/commands/telegram.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAA8B,MAAM,sBAAsB,CAAA;AAiCxF,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;SAClB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAA;gBAC1C,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE;wBACJ,aAAa,EAAE,IAAI;wBACnB,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;qBAClC;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,iBAAiB;wBACxB,MAAM,EAAE;4BACN,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;4BACzD,GAAG,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;yBAClD;qBACF;iBACF,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE;iBAC5D,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;SAClB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;gBACjE,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,EAAE,IAAI,EAAE;oBACd,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC;iBACxB,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE;iBAC5D,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,eAAe,CAAC;SACvB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,OAA2C,EAAE,EAAE;QAC5D,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAW,CAAC,CAAA;YACzD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAA;QAC3D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;SACnB,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CAAC,QAAQ,CAAC;SAClB,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC9D,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAkB,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;SAChB,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,QAAQ,CAAC;SAClB,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC9D,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAkB,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;SACpB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,GAAG,CAAC;SACvD,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;SACzD,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAA;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7F,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;YAChE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAA;YAC7B,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE;oBACJ,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;oBACtC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;oBACxB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;iBAC7B;gBACD,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;aAChC,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;SACnB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,GAAG,CAAC;SACvD,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;SACzD,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAA;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7F,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;IACjG,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;SAChB,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,QAAQ,CAAC;SAClB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAuB,EAAE,EAAE;QACtD,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YACtD,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,IAAI,0BAA0B,EAAE,EAAE,CAAA;YACpH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAA;QACzE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;SAChB,WAAW,CAAC,mCAAmC,CAAC;SAChD,QAAQ,CAAC,QAAQ,CAAC;SAClB,QAAQ,CAAC,WAAW,CAAC;SACrB,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SACvD,MAAM,CAAC,cAAc,CAAC;SACtB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAe,EAAE,OAAkB,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACpF,MAAM,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAC3E,IAAI;YACJ,OAAO;YACP,KAAK;YACL,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;SAChB,WAAW,CAAC,yBAAyB,CAAC;SACtC,QAAQ,CAAC,QAAQ,CAAC;SAClB,QAAQ,CAAC,SAAS,CAAC;SACnB,QAAQ,CAAC,QAAQ,CAAC;SAClB,MAAM,CAAC,cAAc,CAAC;SACtB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,OAAkB,EAAE,EAAE;QAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAC3C,MAAM,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAC7E,IAAI;YACJ,KAAK,EAAE,QAAQ;YACf,IAAI;YACJ,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;SAClB,WAAW,CAAC,0BAA0B,CAAC;SACvC,QAAQ,CAAC,QAAQ,CAAC;SAClB,QAAQ,CAAC,aAAa,CAAC;SACvB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,MAAgB,EAAE,OAAoB,EAAE,EAAE;QACrE,MAAM,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACjF,IAAI;YACJ,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACpD,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEJ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;SAClB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,YAAY,CAAC;SACtB,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;SAC9C,MAAM,CAAC,2BAA2B,EAAE,iBAAiB,EAAE,GAAG,CAAC;SAC3D,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,CAAC;SAC5E,MAAM,CAAC,YAAY,EAAE,+CAA+C,CAAC;SACrE,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,OAAsB,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,CAAA;QACnE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QACrD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAA;QACzC,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAA;QACrH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACxG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;QACtC,MAAM,gBAAgB,GAAa,EAAE,CAAA;QACrC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC9C,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACjH,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/G,MAAM,eAAe,GAAG,IAAI,qBAAqB,CAAC;YAChD,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;SACpF,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACnC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QAEpC,IAAI,CAAC;YACH,MAAM,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBACrD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBAEpE,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,uBAAuB,CAAC;wBAC5B,KAAK,EAAE,WAAW;wBAClB,OAAO;wBACP,YAAY;wBACZ,MAAM;wBACN,SAAS;wBACT,YAAY;wBACZ,UAAU,EAAE,UAAU,CAAC,MAAM;wBAC7B,aAAa,EAAE,aAAa;qBAC7B,CAAC,CAAA;oBACF,OAAM;gBACR,CAAC;gBAED,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;oBAC7B,IAAI,KAAK,GAAG,KAAK,CAAA;oBACjB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;4BACjC,KAAK,EAAE,WAAW;4BAClB,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gCACrB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAA;gCAClD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;oCAAE,OAAM;gCACjC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gCACrB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gCAC1B,IAAI,YAAY,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;oCAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAA;oCACvC,IAAI,MAAM,IAAI,IAAI;wCAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gCACjD,CAAC;gCACD,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;4BAC9B,CAAC;yBACF,CAAC,CAAA;wBACF,IAAI,CAAC,OAAO,IAAI,MAAM,KAAK,SAAS;4BAAE,MAAK;wBAC3C,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;4BAC9B,KAAK,GAAG,IAAI,CAAA;wBACd,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,OAAO;4BAAE,MAAM,KAAK,CAAA;wBACzB,KAAK,GAAG,IAAI,CAAA;oBACd,CAAC;4BAAS,CAAC;wBACT,eAAe,CAAC,KAAK,EAAE,CAAA;wBACvB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;oBAC7C,CAAC;oBACD,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;wBACzB,SAAQ;oBACV,CAAC;oBACD,MAAK;gBACP,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;YACpC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;YACrC,qBAAqB,EAAE,CAAA;YACvB,mBAAmB,EAAE,CAAA;YACrB,eAAe,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,UAAU,CAAC,MAA4B;IAC9C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACpD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAyC;IACxE,OAAO,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;AAC/E,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAkB,EAAE,OAAyD;IAC3G,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjE,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;YACtC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAyC,CAAC,EAAE;YACrF,CAAC,CAAC,MAAM,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,MAA6B,EAC7B,MAAc,EACd,OAAyD;IAEzD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9D,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC;AACH,CAAC;AAID,MAAM,sBAAsB,GAAG;IAC7B,qCAAqC;IACrC,+DAA+D;IAC/D,kCAAkC;IAClC,+BAA+B;IAC/B,kBAAkB;IAClB,2BAA2B;CACnB,CAAA;AAEV,SAAS,wBAAwB,CAAC,KAAkB,EAAE,MAA6B;IACjF,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAiC,EAAE,QAAqC,EAAE,EAA+B,EAAE,EAAE;QAC5H,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;QAClF,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;eAC7F,CAAC,QAAQ,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAA;QACrG,IAAI,qBAAqB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC,CAAgB,CAAA;IAEjB,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC,CAAA;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,OAAuB,EACvB,KAAa,EACb,OAA4D;IAE5D,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;QACrC,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;YACtC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,IAA+B,CAAC,EAAE;YACnF,CAAC,CAAC,MAAM,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAAuB,EACvB,OAA2F;IAE3F,MAAM,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACrD,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACjH,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAEjH,IAAI,MAA6B,CAAA;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB,EAAE,CAAA;YACvB,qBAAqB,EAAE,CAAA;YACvB,OAAO,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACjE,OAAO,SAAS,IAAI,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QAC7D,CAAC;gBAAS,CAAC;YACT,qBAAqB,EAAE,CAAA;YACvB,qBAAqB,EAAE,CAAA;YACvB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,WAAmB;IAC7D,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,kCAAkC;gBACxC,OAAO,EAAE,wBAAwB,WAAW,+DAA+D,WAAW,6BAA6B;aACpJ;SACF,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,SAAS,GAAG,KAA8D,CAAA;IAChF,MAAM,IAAI,GAAG,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAC7C,CAAC,CAAC,SAAS,CAAC,IAAI;QAChB,CAAC,CAAC,SAAS,CAAA;IAEb,IAAI,IAAI,KAAK,uBAAuB;QAAE,OAAO,IAAI,CAAA;IAEjD,MAAM,IAAI,GAAG,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5E,MAAM,OAAO,GAAG,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9E,OAAO,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,IAAI,KAAK,GAAG,CAAA;AAClE,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAc;IAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAA;AACrE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAkB;IAQ/C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxE,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/commands/telegram.ts"],"names":[],"mappings":"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"}
@@ -23,35 +23,98 @@ export function validateCredentials(input) {
23
23
  return { apiId, apiHash };
24
24
  }
25
25
  export function readCredentials(path) {
26
+ const configuration = readStoredConfiguration(path);
27
+ if (!configuration?.credentials) {
28
+ throw new MissingCredentialsError();
29
+ }
30
+ return configuration.credentials;
31
+ }
32
+ export function readProxy(path) {
33
+ return readStoredConfiguration(path)?.proxy;
34
+ }
35
+ export function writeConfiguration(path, update) {
36
+ const existing = readStoredConfiguration(path) ?? {};
37
+ const credentials = update.credentials === undefined
38
+ ? existing.credentials
39
+ : validateCredentials(update.credentials);
40
+ const proxy = update.proxy === undefined ? existing.proxy : normalizeProxy(update.proxy);
41
+ if (!credentials && !proxy) {
42
+ throw new Error(INVALID_CREDENTIALS_MESSAGE);
43
+ }
44
+ writeDocument(path, createDocument({ credentials, proxy }));
45
+ }
46
+ export function writeCredentials(path, credentials) {
47
+ const normalized = validateCredentials(credentials);
48
+ writeConfiguration(path, { credentials: normalized });
49
+ }
50
+ function readStoredConfiguration(path) {
26
51
  let contents;
27
52
  try {
28
53
  contents = readFileSync(path, 'utf8');
29
54
  }
30
55
  catch (error) {
31
- if (isNodeError(error) && error.code === 'ENOENT') {
32
- throw new MissingCredentialsError();
33
- }
56
+ if (isNodeError(error) && error.code === 'ENOENT')
57
+ return undefined;
34
58
  throw new Error(INVALID_CREDENTIALS_MESSAGE);
35
59
  }
36
60
  try {
37
- const parsed = JSON.parse(contents);
38
- if (!isCredentialDocument(parsed)) {
61
+ return parseDocument(JSON.parse(contents));
62
+ }
63
+ catch {
64
+ throw new Error(INVALID_CREDENTIALS_MESSAGE);
65
+ }
66
+ }
67
+ function parseDocument(value) {
68
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
69
+ throw new Error(INVALID_CREDENTIALS_MESSAGE);
70
+ }
71
+ const document = value;
72
+ const hasApiId = Object.prototype.hasOwnProperty.call(document, 'api_id');
73
+ const hasApiHash = Object.prototype.hasOwnProperty.call(document, 'api_hash');
74
+ const hasProxy = Object.prototype.hasOwnProperty.call(document, 'proxy');
75
+ if (hasApiId !== hasApiHash) {
76
+ throw new Error(INVALID_CREDENTIALS_MESSAGE);
77
+ }
78
+ let credentials;
79
+ if (hasApiId) {
80
+ if (!Number.isSafeInteger(document.api_id) ||
81
+ document.api_id <= 0 ||
82
+ typeof document.api_hash !== 'string' ||
83
+ document.api_hash.trim().length === 0) {
39
84
  throw new Error(INVALID_CREDENTIALS_MESSAGE);
40
85
  }
41
- return validateCredentials({ apiId: parsed.api_id, apiHash: parsed.api_hash });
86
+ credentials = validateCredentials({
87
+ apiId: document.api_id,
88
+ apiHash: document.api_hash,
89
+ });
42
90
  }
43
- catch {
91
+ const proxy = hasProxy ? normalizeProxy(document.proxy) : undefined;
92
+ if (!credentials && !proxy) {
44
93
  throw new Error(INVALID_CREDENTIALS_MESSAGE);
45
94
  }
95
+ return { credentials, proxy };
46
96
  }
47
- export function writeCredentials(path, credentials) {
48
- const normalized = validateCredentials(credentials);
97
+ function normalizeProxy(value) {
98
+ if (typeof value !== 'string' || value.trim().length === 0) {
99
+ throw new Error(INVALID_CREDENTIALS_MESSAGE);
100
+ }
101
+ return value.trim();
102
+ }
103
+ function createDocument(configuration) {
104
+ const document = {};
105
+ if (configuration.credentials) {
106
+ document.api_id = configuration.credentials.apiId;
107
+ document.api_hash = configuration.credentials.apiHash;
108
+ }
109
+ if (configuration.proxy) {
110
+ document.proxy = configuration.proxy;
111
+ }
112
+ return document;
113
+ }
114
+ function writeDocument(path, value) {
49
115
  const parent = dirname(path);
50
116
  const temporaryPath = join(parent, `.${randomUUID()}.tmp`);
51
- const document = `${JSON.stringify({
52
- api_id: normalized.apiId,
53
- api_hash: normalized.apiHash,
54
- }, null, 2)}\n`;
117
+ const document = `${JSON.stringify(value, null, 2)}\n`;
55
118
  mkdirSync(parent, { recursive: true });
56
119
  let renamed = false;
57
120
  try {
@@ -67,15 +130,6 @@ export function writeCredentials(path, credentials) {
67
130
  }
68
131
  }
69
132
  }
70
- function isCredentialDocument(value) {
71
- if (typeof value !== 'object' || value === null || Array.isArray(value))
72
- return false;
73
- const document = value;
74
- return (Number.isSafeInteger(document.api_id) &&
75
- document.api_id > 0 &&
76
- typeof document.api_hash === 'string' &&
77
- document.api_hash.trim().length > 0);
78
- }
79
133
  function isNodeError(error) {
80
134
  return error instanceof Error && 'code' in error;
81
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/config/credential-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/config/credential-store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { mkdirSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { isAbsolute, join, resolve } from 'node:path';
4
- import { MissingCredentialsError, readCredentials, validateCredentials, } from './credential-store.js';
4
+ import { MissingCredentialsError, readCredentials, readProxy, validateCredentials, } from './credential-store.js';
5
5
  const APP_NAME = 'tg-cli';
6
6
  const DEFAULT_API_ID = 2040;
7
7
  const DEFAULT_API_HASH = 'b18441a1ff607e10a989891a5462e627';
@@ -34,6 +34,17 @@ export function getTelegramCredentials() {
34
34
  };
35
35
  }
36
36
  }
37
+ export function getTelegramProxyConfiguration() {
38
+ const proxy = process.env.TG_PROXY?.trim();
39
+ if (proxy) {
40
+ return { url: proxy, source: 'environment' };
41
+ }
42
+ const storedProxy = readProxy(getConfigPath());
43
+ return storedProxy ? { url: storedProxy, source: 'stored' } : undefined;
44
+ }
45
+ export function getTelegramProxy() {
46
+ return getTelegramProxyConfiguration()?.url;
47
+ }
37
48
  export function getSessionName() {
38
49
  const raw = process.env.TG_SESSION_NAME;
39
50
  return raw && raw.trim() ? raw.trim() : 'tg_cli';