@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.
- package/LICENSE +675 -0
- package/README.md +264 -0
- package/README.zh-CN.md +264 -0
- package/dist/account/account-context.js +22 -0
- package/dist/account/account-context.js.map +1 -0
- package/dist/account/account-presets.js +22 -0
- package/dist/account/account-presets.js.map +1 -0
- package/dist/account/account-store.js +225 -0
- package/dist/account/account-store.js.map +1 -0
- package/dist/cli/app.js +21 -0
- package/dist/cli/app.js.map +1 -0
- package/dist/cli/output.js +39 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/commands/account-options.js +55 -0
- package/dist/commands/account-options.js.map +1 -0
- package/dist/commands/account.js +449 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/config.js +63 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/data.js +52 -0
- package/dist/commands/data.js.map +1 -0
- package/dist/commands/query.js +116 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/telegram.js +423 -0
- package/dist/commands/telegram.js.map +1 -0
- package/dist/commands/types.js +12 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/config/credential-store.js +82 -0
- package/dist/config/credential-store.js.map +1 -0
- package/dist/config/env.js +78 -0
- package/dist/config/env.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/presenters/human.js +218 -0
- package/dist/presenters/human.js.map +1 -0
- package/dist/presenters/ink/DetailView.js +14 -0
- package/dist/presenters/ink/DetailView.js.map +1 -0
- package/dist/presenters/ink/TableView.js +9 -0
- package/dist/presenters/ink/TableView.js.map +1 -0
- package/dist/presenters/ink/TimelineView.js +34 -0
- package/dist/presenters/ink/TimelineView.js.map +1 -0
- package/dist/presenters/ink/display-width.js +149 -0
- package/dist/presenters/ink/display-width.js.map +1 -0
- package/dist/presenters/ink/image-preview.js +47 -0
- package/dist/presenters/ink/image-preview.js.map +1 -0
- package/dist/presenters/ink/listen-scroll.js +37 -0
- package/dist/presenters/ink/listen-scroll.js.map +1 -0
- package/dist/presenters/ink/listen-scrollbar.js +49 -0
- package/dist/presenters/ink/listen-scrollbar.js.map +1 -0
- package/dist/presenters/ink/listen.js +542 -0
- package/dist/presenters/ink/listen.js.map +1 -0
- package/dist/presenters/ink/mouse-scroll.js +55 -0
- package/dist/presenters/ink/mouse-scroll.js.map +1 -0
- package/dist/presenters/ink/render.js +45 -0
- package/dist/presenters/ink/render.js.map +1 -0
- package/dist/presenters/listen-message.js +267 -0
- package/dist/presenters/listen-message.js.map +1 -0
- package/dist/presenters/structured.js +30 -0
- package/dist/presenters/structured.js.map +1 -0
- package/dist/services/attachment-download.js +21 -0
- package/dist/services/attachment-download.js.map +1 -0
- package/dist/services/data-service.js +76 -0
- package/dist/services/data-service.js.map +1 -0
- package/dist/services/listen-album-aggregator.js +72 -0
- package/dist/services/listen-album-aggregator.js.map +1 -0
- package/dist/services/message-service.js +102 -0
- package/dist/services/message-service.js.map +1 -0
- package/dist/services/query-service.js +116 -0
- package/dist/services/query-service.js.map +1 -0
- package/dist/services/sync-service.js +134 -0
- package/dist/services/sync-service.js.map +1 -0
- package/dist/storage/chat-resolver.js +9 -0
- package/dist/storage/chat-resolver.js.map +1 -0
- package/dist/storage/message-db.js +246 -0
- package/dist/storage/message-db.js.map +1 -0
- package/dist/telegram/client-factory.js +27 -0
- package/dist/telegram/client-factory.js.map +1 -0
- package/dist/telegram/mtcute-client.js +324 -0
- package/dist/telegram/mtcute-client.js.map +1 -0
- package/dist/telegram/types.js +2 -0
- package/dist/telegram/types.js.map +1 -0
- 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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"}
|