@will-17173/telegram-cli 0.1.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 (82) hide show
  1. package/LICENSE +675 -0
  2. package/README.md +264 -0
  3. package/README.zh-CN.md +264 -0
  4. package/dist/account/account-context.js +22 -0
  5. package/dist/account/account-context.js.map +1 -0
  6. package/dist/account/account-presets.js +22 -0
  7. package/dist/account/account-presets.js.map +1 -0
  8. package/dist/account/account-store.js +225 -0
  9. package/dist/account/account-store.js.map +1 -0
  10. package/dist/cli/app.js +21 -0
  11. package/dist/cli/app.js.map +1 -0
  12. package/dist/cli/output.js +39 -0
  13. package/dist/cli/output.js.map +1 -0
  14. package/dist/commands/account-options.js +55 -0
  15. package/dist/commands/account-options.js.map +1 -0
  16. package/dist/commands/account.js +449 -0
  17. package/dist/commands/account.js.map +1 -0
  18. package/dist/commands/config.js +63 -0
  19. package/dist/commands/config.js.map +1 -0
  20. package/dist/commands/data.js +52 -0
  21. package/dist/commands/data.js.map +1 -0
  22. package/dist/commands/query.js +116 -0
  23. package/dist/commands/query.js.map +1 -0
  24. package/dist/commands/telegram.js +423 -0
  25. package/dist/commands/telegram.js.map +1 -0
  26. package/dist/commands/types.js +12 -0
  27. package/dist/commands/types.js.map +1 -0
  28. package/dist/config/credential-store.js +82 -0
  29. package/dist/config/credential-store.js.map +1 -0
  30. package/dist/config/env.js +78 -0
  31. package/dist/config/env.js.map +1 -0
  32. package/dist/index.js +4 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/presenters/human.js +218 -0
  35. package/dist/presenters/human.js.map +1 -0
  36. package/dist/presenters/ink/DetailView.js +14 -0
  37. package/dist/presenters/ink/DetailView.js.map +1 -0
  38. package/dist/presenters/ink/TableView.js +9 -0
  39. package/dist/presenters/ink/TableView.js.map +1 -0
  40. package/dist/presenters/ink/TimelineView.js +34 -0
  41. package/dist/presenters/ink/TimelineView.js.map +1 -0
  42. package/dist/presenters/ink/display-width.js +149 -0
  43. package/dist/presenters/ink/display-width.js.map +1 -0
  44. package/dist/presenters/ink/image-preview.js +47 -0
  45. package/dist/presenters/ink/image-preview.js.map +1 -0
  46. package/dist/presenters/ink/listen-scroll.js +37 -0
  47. package/dist/presenters/ink/listen-scroll.js.map +1 -0
  48. package/dist/presenters/ink/listen-scrollbar.js +49 -0
  49. package/dist/presenters/ink/listen-scrollbar.js.map +1 -0
  50. package/dist/presenters/ink/listen.js +542 -0
  51. package/dist/presenters/ink/listen.js.map +1 -0
  52. package/dist/presenters/ink/mouse-scroll.js +55 -0
  53. package/dist/presenters/ink/mouse-scroll.js.map +1 -0
  54. package/dist/presenters/ink/render.js +45 -0
  55. package/dist/presenters/ink/render.js.map +1 -0
  56. package/dist/presenters/listen-message.js +267 -0
  57. package/dist/presenters/listen-message.js.map +1 -0
  58. package/dist/presenters/structured.js +30 -0
  59. package/dist/presenters/structured.js.map +1 -0
  60. package/dist/services/attachment-download.js +21 -0
  61. package/dist/services/attachment-download.js.map +1 -0
  62. package/dist/services/data-service.js +76 -0
  63. package/dist/services/data-service.js.map +1 -0
  64. package/dist/services/listen-album-aggregator.js +72 -0
  65. package/dist/services/listen-album-aggregator.js.map +1 -0
  66. package/dist/services/message-service.js +102 -0
  67. package/dist/services/message-service.js.map +1 -0
  68. package/dist/services/query-service.js +116 -0
  69. package/dist/services/query-service.js.map +1 -0
  70. package/dist/services/sync-service.js +134 -0
  71. package/dist/services/sync-service.js.map +1 -0
  72. package/dist/storage/chat-resolver.js +9 -0
  73. package/dist/storage/chat-resolver.js.map +1 -0
  74. package/dist/storage/message-db.js +246 -0
  75. package/dist/storage/message-db.js.map +1 -0
  76. package/dist/telegram/client-factory.js +27 -0
  77. package/dist/telegram/client-factory.js.map +1 -0
  78. package/dist/telegram/mtcute-client.js +324 -0
  79. package/dist/telegram/mtcute-client.js.map +1 -0
  80. package/dist/telegram/types.js +2 -0
  81. package/dist/telegram/types.js.map +1 -0
  82. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-width.js","sourceRoot":"","sources":["../../../src/presenters/ink/display-width.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import jpeg from 'jpeg-js';
2
+ const MAX_ENCODED_JPEG_BYTES = 64 * 1024;
3
+ const MAX_RESOLUTION_IN_MP = 1;
4
+ const MAX_MEMORY_USAGE_IN_MB = 16;
5
+ function pixelColor(data, width, x, y) {
6
+ const offset = (y * width + x) * 4;
7
+ return `#${data[offset].toString(16).padStart(2, '0')}${data[offset + 1].toString(16).padStart(2, '0')}${data[offset + 2].toString(16).padStart(2, '0')}`;
8
+ }
9
+ export function decodeImagePreview(base64, maxWidth) {
10
+ if (base64.length === 0 || maxWidth < 1) {
11
+ return null;
12
+ }
13
+ try {
14
+ const encoded = Buffer.from(base64, 'base64');
15
+ if (encoded.length > MAX_ENCODED_JPEG_BYTES) {
16
+ return null;
17
+ }
18
+ const decoded = jpeg.decode(encoded, {
19
+ useTArray: true,
20
+ maxResolutionInMP: MAX_RESOLUTION_IN_MP,
21
+ maxMemoryUsageInMB: MAX_MEMORY_USAGE_IN_MB,
22
+ });
23
+ const width = Math.min(decoded.width, Math.floor(maxWidth));
24
+ const height = Math.max(1, Math.round(decoded.height * (width / decoded.width)));
25
+ const rows = [];
26
+ for (let y = 0; y < height; y += 2) {
27
+ const upperSourceY = Math.min(decoded.height - 1, Math.floor(y * decoded.height / height));
28
+ const lowerY = Math.min(y + 1, height - 1);
29
+ const lowerSourceY = Math.min(decoded.height - 1, Math.floor(lowerY * decoded.height / height));
30
+ const row = [];
31
+ for (let x = 0; x < width; x += 1) {
32
+ const sourceX = Math.min(decoded.width - 1, Math.floor(x * decoded.width / width));
33
+ row.push({
34
+ glyph: '▀',
35
+ foreground: pixelColor(decoded.data, decoded.width, sourceX, upperSourceY),
36
+ background: pixelColor(decoded.data, decoded.width, sourceX, lowerSourceY),
37
+ });
38
+ }
39
+ rows.push(row);
40
+ }
41
+ return { width, rows };
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ //# sourceMappingURL=image-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-preview.js","sourceRoot":"","sources":["../../../src/presenters/ink/image-preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ function messageLines(message) {
2
+ return 2 + (message.content == null ? 0 : 1) + message.media.reduce((lines, attachment) => lines + 1 + (attachment.previewRows ?? 0), 0);
3
+ }
4
+ export function takeListenViewport(messages, maxLines, offset) {
5
+ const visible = [];
6
+ let usedLines = 0;
7
+ const lastIndex = Math.max(-1, messages.length - 1 - Math.max(0, offset));
8
+ for (let index = lastIndex; index >= 0; index -= 1) {
9
+ const message = messages[index];
10
+ if (message == null)
11
+ continue;
12
+ const lineCount = messageLines(message);
13
+ if (usedLines + lineCount > maxLines) {
14
+ if (visible.length === 0)
15
+ visible.unshift(message);
16
+ break;
17
+ }
18
+ visible.unshift(message);
19
+ usedLines += lineCount;
20
+ }
21
+ return visible;
22
+ }
23
+ export function applyScroll(state, direction, maxOffset) {
24
+ const offset = direction === 'up'
25
+ ? Math.min(maxOffset, state.offset + 1)
26
+ : Math.max(0, state.offset - 1);
27
+ return {
28
+ offset,
29
+ unseenCount: offset === 0 ? 0 : state.unseenCount,
30
+ };
31
+ }
32
+ export function applyMessageArrival(state) {
33
+ return state.offset === 0
34
+ ? state
35
+ : { offset: state.offset + 1, unseenCount: state.unseenCount + 1 };
36
+ }
37
+ //# sourceMappingURL=listen-scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen-scroll.js","sourceRoot":"","sources":["../../../src/presenters/ink/listen-scroll.ts"],"names":[],"mappings":"AAOA,SAAS,YAAY,CAAC,OAAyB;IAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CACjE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC,EAChE,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAa,EACb,QAAgB,EAChB,MAAc;IAEd,MAAM,OAAO,GAAQ,EAAE,CAAA;IACvB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IAEzE,KAAK,IAAI,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,OAAO,IAAI,IAAI;YAAE,SAAQ;QAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAClD,MAAK;QACP,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACxB,SAAS,IAAI,SAAS,CAAA;IACxB,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAwB,EACxB,SAAwB,EACxB,SAAiB;IAEjB,MAAM,MAAM,GAAG,SAAS,KAAK,IAAI;QAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACjC,OAAO;QACL,MAAM;QACN,WAAW,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;KAClD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAwB;IAC1D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAA;AACtE,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { Box, Text } from 'ink';
4
+ export function listenContentWidth(terminalWidth) {
5
+ return Math.max(1, terminalWidth - 1);
6
+ }
7
+ export function createTransientVisibility(setVisible, delayMs) {
8
+ let timer;
9
+ return {
10
+ show: () => {
11
+ if (timer != null)
12
+ clearTimeout(timer);
13
+ setVisible(true);
14
+ timer = setTimeout(() => {
15
+ timer = undefined;
16
+ setVisible(false);
17
+ }, delayMs);
18
+ },
19
+ dispose: () => {
20
+ if (timer != null)
21
+ clearTimeout(timer);
22
+ timer = undefined;
23
+ },
24
+ };
25
+ }
26
+ export function useTransientScrollbar(delayMs = 1500) {
27
+ const [visible, setVisible] = useState(false);
28
+ const controller = useRef(null);
29
+ useEffect(() => {
30
+ controller.current = createTransientVisibility(setVisible, delayMs);
31
+ return () => controller.current?.dispose();
32
+ }, [delayMs]);
33
+ const show = useCallback(() => controller.current?.show(), []);
34
+ return { visible, show };
35
+ }
36
+ export function calculateScrollbar(input) {
37
+ if (input.height <= 0 || input.total <= input.visible || input.visible <= 0)
38
+ return null;
39
+ const size = Math.max(1, Math.min(input.height, Math.floor(input.height * input.visible / input.total)));
40
+ const maxTop = input.height - size;
41
+ const maxOffset = input.total - input.visible;
42
+ const normalizedOffset = Math.min(Math.max(0, input.offset), maxOffset);
43
+ const top = Math.round(maxTop * (1 - normalizedOffset / maxOffset));
44
+ return { top, size };
45
+ }
46
+ export function ListenScrollbar({ height, visible, geometry, }) {
47
+ return (_jsx(Box, { width: 1, height: height, flexDirection: "column", children: Array.from({ length: height }, (_, row) => (_jsx(Text, { dimColor: true, children: visible && geometry != null && row >= geometry.top && row < geometry.top + geometry.size ? '┃' : ' ' }, row))) }));
48
+ }
49
+ //# sourceMappingURL=listen-scrollbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen-scrollbar.js","sourceRoot":"","sources":["../../../src/presenters/ink/listen-scrollbar.tsx"],"names":[],"mappings":"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"}