tglfs 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 (81) hide show
  1. package/README.md +216 -0
  2. package/dist/auth.d.ts +58 -0
  3. package/dist/auth.js +187 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.js +627 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/crypto.d.ts +8 -0
  9. package/dist/crypto.js +45 -0
  10. package/dist/crypto.js.map +1 -0
  11. package/dist/download.d.ts +26 -0
  12. package/dist/download.js +228 -0
  13. package/dist/download.js.map +1 -0
  14. package/dist/errors.d.ts +18 -0
  15. package/dist/errors.js +35 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/file-ops.d.ts +71 -0
  18. package/dist/file-ops.js +234 -0
  19. package/dist/file-ops.js.map +1 -0
  20. package/dist/gramjs.d.ts +14 -0
  21. package/dist/gramjs.js +70 -0
  22. package/dist/gramjs.js.map +1 -0
  23. package/dist/interactive.d.ts +11 -0
  24. package/dist/interactive.js +81 -0
  25. package/dist/interactive.js.map +1 -0
  26. package/dist/json.d.ts +2 -0
  27. package/dist/json.js +4 -0
  28. package/dist/json.js.map +1 -0
  29. package/dist/progress.d.ts +16 -0
  30. package/dist/progress.js +62 -0
  31. package/dist/progress.js.map +1 -0
  32. package/dist/protocol.d.ts +5 -0
  33. package/dist/protocol.js +27 -0
  34. package/dist/protocol.js.map +1 -0
  35. package/dist/search.d.ts +23 -0
  36. package/dist/search.js +81 -0
  37. package/dist/search.js.map +1 -0
  38. package/dist/secrets.d.ts +12 -0
  39. package/dist/secrets.js +29 -0
  40. package/dist/secrets.js.map +1 -0
  41. package/dist/shared/archive.d.ts +9 -0
  42. package/dist/shared/archive.js +95 -0
  43. package/dist/shared/archive.js.map +1 -0
  44. package/dist/shared/constants.d.ts +5 -0
  45. package/dist/shared/constants.js +6 -0
  46. package/dist/shared/constants.js.map +1 -0
  47. package/dist/shared/file-cards.d.ts +31 -0
  48. package/dist/shared/file-cards.js +103 -0
  49. package/dist/shared/file-cards.js.map +1 -0
  50. package/dist/shared/telegram-files.d.ts +84 -0
  51. package/dist/shared/telegram-files.js +137 -0
  52. package/dist/shared/telegram-files.js.map +1 -0
  53. package/dist/shared/upload.d.ts +44 -0
  54. package/dist/shared/upload.js +181 -0
  55. package/dist/shared/upload.js.map +1 -0
  56. package/dist/store.d.ts +15 -0
  57. package/dist/store.js +97 -0
  58. package/dist/store.js.map +1 -0
  59. package/dist/types.d.ts +18 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/ufid.d.ts +8 -0
  63. package/dist/ufid.js +65 -0
  64. package/dist/ufid.js.map +1 -0
  65. package/dist/upload.d.ts +19 -0
  66. package/dist/upload.js +101 -0
  67. package/dist/upload.js.map +1 -0
  68. package/man/tglfs-delete.1 +19 -0
  69. package/man/tglfs-download.1 +42 -0
  70. package/man/tglfs-inspect.1 +34 -0
  71. package/man/tglfs-login.1 +53 -0
  72. package/man/tglfs-logout.1 +17 -0
  73. package/man/tglfs-receive.1 +26 -0
  74. package/man/tglfs-rename.1 +8 -0
  75. package/man/tglfs-search.1 +37 -0
  76. package/man/tglfs-send.1 +22 -0
  77. package/man/tglfs-status.1 +12 -0
  78. package/man/tglfs-unsend.1 +37 -0
  79. package/man/tglfs-upload.1 +28 -0
  80. package/man/tglfs.1 +70 -0
  81. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const ENCRYPTION_CHUNK_SIZE: number;
2
+ export declare function deriveAESKeyFromPassword(password: string, salt: Uint8Array): Promise<CryptoKey>;
3
+ export declare function incrementCounter64By(counter: Uint8Array, blocks: number): Uint8Array;
4
+ export declare function incrementCounter(counter: Uint8Array): Uint8Array;
5
+ export declare function decodeIv(iv: string): {
6
+ salt: Uint8Array;
7
+ counter: Uint8Array;
8
+ };
package/dist/crypto.js ADDED
@@ -0,0 +1,45 @@
1
+ import { CliError, EXIT_CODES } from "./errors.js";
2
+ export const ENCRYPTION_CHUNK_SIZE = 1024 * 1024;
3
+ export async function deriveAESKeyFromPassword(password, salt) {
4
+ const keyMaterial = await globalThis.crypto.subtle.importKey("raw", new TextEncoder().encode(password), { name: "PBKDF2" }, false, ["deriveKey"]);
5
+ return globalThis.crypto.subtle.deriveKey({
6
+ name: "PBKDF2",
7
+ salt,
8
+ iterations: 100000,
9
+ hash: "SHA-256",
10
+ }, keyMaterial, { name: "AES-CTR", length: 256 }, false, ["encrypt", "decrypt"]);
11
+ }
12
+ export function incrementCounter64By(counter, blocks) {
13
+ const result = new Uint8Array(counter);
14
+ let carry = blocks >>> 0;
15
+ for (let i = result.length - 1; i >= result.length - 8; i -= 1) {
16
+ const byteSum = result[i] + (carry & 0xff);
17
+ result[i] = byteSum & 0xff;
18
+ carry = (carry >>> 8) + (byteSum >>> 8);
19
+ if (carry === 0 && i < result.length - 1) {
20
+ break;
21
+ }
22
+ }
23
+ return result;
24
+ }
25
+ export function incrementCounter(counter) {
26
+ const result = new Uint8Array(counter.length);
27
+ let carry = 1;
28
+ for (let index = counter.length - 1; index >= 0; index -= 1) {
29
+ const sum = counter[index] + carry;
30
+ result[index] = sum & 0xff;
31
+ carry = sum >> 8;
32
+ }
33
+ return result;
34
+ }
35
+ export function decodeIv(iv) {
36
+ const bytes = Uint8Array.from(Buffer.from(iv, "base64"));
37
+ if (bytes.length !== 32) {
38
+ throw new CliError("invalid_file_card", "The file card IV is invalid or unsupported.", EXIT_CODES.INVALID_FILE_CARD);
39
+ }
40
+ return {
41
+ salt: bytes.subarray(0, 16),
42
+ counter: bytes.slice(16),
43
+ };
44
+ }
45
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,QAAgB,EAAE,IAAgB;IAC7E,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CACxD,KAAK,EACL,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB,KAAK,EACL,CAAC,WAAW,CAAC,CAChB,CAAA;IAED,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CACrC;QACI,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,SAAS;KAClB,EACD,WAAW,EACX,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAChC,KAAK,EACL,CAAC,SAAS,EAAE,SAAS,CAAC,CACzB,CAAA;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAmB,EAAE,MAAc;IACpE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,KAAK,GAAG,MAAM,KAAK,CAAC,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAA;QAC1B,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAK;QACT,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAChD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;QAClC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAA;QAC1B,KAAK,GAAG,GAAG,IAAI,CAAC,CAAA;IACpB,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxD,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CACd,mBAAmB,EACnB,6CAA6C,EAC7C,UAAU,CAAC,iBAAiB,CAC/B,CAAA;IACL,CAAC;IACD,OAAO;QACH,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;KAC3B,CAAA;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { TelegramClient } from "telegram/client/TelegramClient.js";
2
+ import type { FileCardData } from "./types.js";
3
+ export type DownloadMode = "current" | "legacy";
4
+ type DownloadResult = {
5
+ outputPath: string;
6
+ bytesWritten: number;
7
+ name: string;
8
+ ufid: string;
9
+ };
10
+ export type DownloadProgress = {
11
+ bytesWritten: number;
12
+ totalBytes: number;
13
+ };
14
+ export type DownloadInspectionResult = {
15
+ bytesWritten: number;
16
+ computedUfid: string;
17
+ };
18
+ export declare function coerceTelegramDocumentSize(value: unknown): number | null;
19
+ export declare function resolveChunkDocumentSize(chunkMessage: any, chunkId: number, ufid: string): number;
20
+ export declare function iterateEncryptedFile(client: TelegramClient, data: FileCardData, peer?: string): AsyncGenerator<Uint8Array>;
21
+ export declare function defaultOutputPath(fileName: string): string;
22
+ export declare function ensureOutputDirectory(filePath: string): Promise<void>;
23
+ export declare function inspectFileFromEncryptedParts(data: FileCardData, password: string, encryptedParts: AsyncIterable<Uint8Array>, mode: DownloadMode, onProgress?: (progress: DownloadProgress) => void): Promise<DownloadInspectionResult>;
24
+ export declare function restoreFileFromEncryptedParts(data: FileCardData, password: string, outputPath: string, encryptedParts: AsyncIterable<Uint8Array>, overwrite?: boolean, onProgress?: (progress: DownloadProgress) => void, mode?: DownloadMode): Promise<DownloadResult>;
25
+ export declare function downloadFileCard(client: TelegramClient, data: FileCardData, password: string, outputPath: string, overwrite?: boolean, onProgress?: (progress: DownloadProgress) => void, mode?: DownloadMode): Promise<DownloadResult>;
26
+ export {};
@@ -0,0 +1,228 @@
1
+ import { mkdir, open, rename, rm } from "node:fs/promises";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { decodeIv, deriveAESKeyFromPassword, ENCRYPTION_CHUNK_SIZE, incrementCounter, incrementCounter64By, } from "./crypto.js";
4
+ import { CliError, EXIT_CODES } from "./errors.js";
5
+ import { getGramJs } from "./gramjs.js";
6
+ import { DOWNLOAD_PART_SIZE } from "./shared/constants.js";
7
+ import { UfidAccumulator } from "./ufid.js";
8
+ function isTelegramIntegerLike(value) {
9
+ return Boolean(value) && typeof value === "object" && typeof value.toString === "function";
10
+ }
11
+ export function coerceTelegramDocumentSize(value) {
12
+ if (typeof value === "number") {
13
+ return Number.isSafeInteger(value) && value >= 0 ? value : null;
14
+ }
15
+ if (typeof value === "bigint") {
16
+ return value >= 0n && value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;
17
+ }
18
+ if (isTelegramIntegerLike(value)) {
19
+ const parsed = Number(value.toString());
20
+ return Number.isSafeInteger(parsed) && parsed >= 0 ? parsed : null;
21
+ }
22
+ return null;
23
+ }
24
+ export function resolveChunkDocumentSize(chunkMessage, chunkId, ufid) {
25
+ if (!chunkMessage) {
26
+ throw new CliError("invalid_file_card", `The file card references chunk message ${chunkId}, but it no longer exists in Saved Messages.`, EXIT_CODES.INVALID_FILE_CARD, { ufid, chunkId, reason: "missing_chunk_message" });
27
+ }
28
+ if (!chunkMessage?.media?.document) {
29
+ throw new CliError("invalid_file_card", `The file card references chunk message ${chunkId}, but that Saved Messages entry is not a Telegram document.`, EXIT_CODES.INVALID_FILE_CARD, {
30
+ ufid,
31
+ chunkId,
32
+ reason: "chunk_message_not_document",
33
+ messageType: chunkMessage.className,
34
+ });
35
+ }
36
+ const chunkSize = coerceTelegramDocumentSize(chunkMessage.media.document.size);
37
+ if (chunkSize === null) {
38
+ throw new CliError("invalid_file_card", `The file card references chunk message ${chunkId}, but its document size is invalid.`, EXIT_CODES.INVALID_FILE_CARD, {
39
+ ufid,
40
+ chunkId,
41
+ reason: "invalid_chunk_size",
42
+ size: chunkMessage.media.document.size,
43
+ });
44
+ }
45
+ return chunkSize;
46
+ }
47
+ function normalizeDownloadError(error) {
48
+ if (error instanceof CliError) {
49
+ return error;
50
+ }
51
+ if (error instanceof TypeError) {
52
+ return new CliError("decryption_failed", "Incorrect decryption password or corrupted compressed data.", EXIT_CODES.DECRYPTION_FAILED);
53
+ }
54
+ if (error instanceof Error && error.name === "OperationError") {
55
+ return new CliError("decryption_failed", "Incorrect decryption password or corrupted encrypted data.", EXIT_CODES.DECRYPTION_FAILED);
56
+ }
57
+ if (error instanceof Error) {
58
+ return new CliError("download_failed", error.message, EXIT_CODES.GENERAL_ERROR);
59
+ }
60
+ return new CliError("download_failed", String(error), EXIT_CODES.GENERAL_ERROR);
61
+ }
62
+ export async function* iterateEncryptedFile(client, data, peer = "me") {
63
+ const { Api, getFileInfo } = getGramJs();
64
+ const chunkMessages = await client.getMessages(peer, { ids: data.chunks, waitTime: 0 });
65
+ const chunkMap = new Map();
66
+ for (const message of chunkMessages) {
67
+ if (message?.id !== undefined) {
68
+ chunkMap.set(message.id, message);
69
+ }
70
+ }
71
+ for (const chunkId of data.chunks) {
72
+ const chunkMessage = chunkMap.get(chunkId);
73
+ const chunkSize = resolveChunkDocumentSize(chunkMessage, chunkId, data.ufid);
74
+ let offset = 0;
75
+ while (offset < chunkSize) {
76
+ const part = await client.invoke(new Api.upload.GetFile({
77
+ location: getFileInfo(chunkMessage.media).location,
78
+ offset,
79
+ limit: DOWNLOAD_PART_SIZE,
80
+ precise: false,
81
+ cdnSupported: false,
82
+ }));
83
+ const bytes = part.bytes;
84
+ if (!(bytes instanceof Uint8Array) || bytes.length === 0) {
85
+ throw new CliError("download_failed", `Telegram returned an empty response while downloading chunk message ${chunkId}.`, EXIT_CODES.GENERAL_ERROR, { ufid: data.ufid, chunkId, offset });
86
+ }
87
+ offset += bytes.length;
88
+ yield bytes;
89
+ }
90
+ }
91
+ }
92
+ async function consumeDecompressedStream(readable, filePath, totalBytes, onProgress) {
93
+ const handle = await open(filePath, "w");
94
+ const reader = readable.getReader();
95
+ const ufid = new UfidAccumulator();
96
+ let bytesWritten = 0;
97
+ try {
98
+ while (true) {
99
+ const { done, value } = await reader.read();
100
+ if (done) {
101
+ break;
102
+ }
103
+ if (!value || value.length === 0) {
104
+ continue;
105
+ }
106
+ await handle.write(value);
107
+ bytesWritten += value.length;
108
+ onProgress?.({ bytesWritten, totalBytes });
109
+ await ufid.update(value);
110
+ }
111
+ return {
112
+ bytesWritten,
113
+ computedUfid: await ufid.digest(),
114
+ };
115
+ }
116
+ finally {
117
+ await handle.close();
118
+ }
119
+ }
120
+ async function consumeDecompressedMetadata(readable, totalBytes, onProgress) {
121
+ const reader = readable.getReader();
122
+ const ufid = new UfidAccumulator();
123
+ let bytesWritten = 0;
124
+ while (true) {
125
+ const { done, value } = await reader.read();
126
+ if (done) {
127
+ break;
128
+ }
129
+ if (!value || value.length === 0) {
130
+ continue;
131
+ }
132
+ bytesWritten += value.length;
133
+ onProgress?.({ bytesWritten, totalBytes });
134
+ await ufid.update(value);
135
+ }
136
+ return {
137
+ bytesWritten,
138
+ computedUfid: await ufid.digest(),
139
+ };
140
+ }
141
+ export function defaultOutputPath(fileName) {
142
+ return resolve(process.cwd(), fileName.split(/[\\/]/).pop() ?? fileName);
143
+ }
144
+ export async function ensureOutputDirectory(filePath) {
145
+ await mkdir(dirname(filePath), { recursive: true });
146
+ }
147
+ async function withDecompressedReadable(data, password, encryptedParts, mode, consumeReadable) {
148
+ const { salt, counter } = decodeIv(data.IV);
149
+ const aesKey = await deriveAESKeyFromPassword(password, salt);
150
+ let decryptionCounter = counter;
151
+ let bufferBytes = 0;
152
+ const decryptionBuffer = new Uint8Array(ENCRYPTION_CHUNK_SIZE);
153
+ const decompressionStream = new DecompressionStream("gzip");
154
+ const writer = decompressionStream.writable.getWriter();
155
+ const consumePromise = consumeReadable(decompressionStream.readable);
156
+ try {
157
+ for await (const part of encryptedParts) {
158
+ let partOffset = 0;
159
+ while (partOffset < part.length) {
160
+ const bytesToCopy = Math.min(part.length - partOffset, decryptionBuffer.length - bufferBytes);
161
+ decryptionBuffer.set(part.subarray(partOffset, partOffset + bytesToCopy), bufferBytes);
162
+ bufferBytes += bytesToCopy;
163
+ partOffset += bytesToCopy;
164
+ if (bufferBytes === decryptionBuffer.length) {
165
+ const decrypted = new Uint8Array(await globalThis.crypto.subtle.decrypt({ name: "AES-CTR", counter: decryptionCounter, length: 64 }, aesKey, decryptionBuffer));
166
+ decryptionCounter =
167
+ mode === "legacy"
168
+ ? incrementCounter(decryptionCounter)
169
+ : incrementCounter64By(decryptionCounter, Math.ceil(decryptionBuffer.length / 16));
170
+ bufferBytes = 0;
171
+ await writer.write(decrypted);
172
+ }
173
+ }
174
+ }
175
+ if (bufferBytes > 0) {
176
+ const decrypted = new Uint8Array(await globalThis.crypto.subtle.decrypt({ name: "AES-CTR", counter: decryptionCounter, length: 64 }, aesKey, decryptionBuffer.subarray(0, bufferBytes)));
177
+ decryptionCounter =
178
+ mode === "legacy"
179
+ ? incrementCounter(decryptionCounter)
180
+ : incrementCounter64By(decryptionCounter, Math.ceil(bufferBytes / 16));
181
+ await writer.write(decrypted);
182
+ }
183
+ await writer.close();
184
+ return await consumePromise;
185
+ }
186
+ catch (error) {
187
+ try {
188
+ await writer.abort(error);
189
+ }
190
+ catch { }
191
+ try {
192
+ await consumePromise;
193
+ }
194
+ catch { }
195
+ throw normalizeDownloadError(error);
196
+ }
197
+ }
198
+ export async function inspectFileFromEncryptedParts(data, password, encryptedParts, mode, onProgress) {
199
+ return withDecompressedReadable(data, password, encryptedParts, mode, (readable) => consumeDecompressedMetadata(readable, data.size, onProgress));
200
+ }
201
+ export async function restoreFileFromEncryptedParts(data, password, outputPath, encryptedParts, overwrite = false, onProgress, mode = "current") {
202
+ await ensureOutputDirectory(outputPath);
203
+ const tempPath = join(dirname(outputPath), `.${data.ufid}.part`);
204
+ try {
205
+ const { bytesWritten, computedUfid } = await withDecompressedReadable(data, password, encryptedParts, mode, (readable) => consumeDecompressedStream(readable, tempPath, data.size, onProgress));
206
+ if (computedUfid !== data.ufid) {
207
+ throw new CliError("ufid_mismatch", "The downloaded file did not match the expected UFID.", EXIT_CODES.UFID_MISMATCH);
208
+ }
209
+ if (overwrite) {
210
+ await rm(outputPath, { force: true });
211
+ }
212
+ await rename(tempPath, outputPath);
213
+ return {
214
+ outputPath,
215
+ bytesWritten,
216
+ name: data.name,
217
+ ufid: data.ufid,
218
+ };
219
+ }
220
+ catch (error) {
221
+ await rm(tempPath, { force: true }).catch(() => { });
222
+ throw normalizeDownloadError(error);
223
+ }
224
+ }
225
+ export async function downloadFileCard(client, data, password, outputPath, overwrite = false, onProgress, mode = "current") {
226
+ return restoreFileFromEncryptedParts(data, password, outputPath, iterateEncryptedFile(client, data), overwrite, onProgress, mode);
227
+ }
228
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare const EXIT_CODES: {
2
+ readonly OK: 0;
3
+ readonly GENERAL_ERROR: 1;
4
+ readonly MISSING_AUTH: 10;
5
+ readonly INTERACTIVE_REQUIRED: 11;
6
+ readonly FILE_NOT_FOUND: 12;
7
+ readonly DECRYPTION_FAILED: 13;
8
+ readonly UFID_MISMATCH: 14;
9
+ readonly INVALID_FILE_CARD: 15;
10
+ };
11
+ export declare class CliError extends Error {
12
+ readonly code: string;
13
+ readonly exitCode: number;
14
+ readonly details?: unknown;
15
+ constructor(code: string, message: string, exitCode: number, details?: unknown);
16
+ }
17
+ export declare function isCliError(error: unknown): error is CliError;
18
+ export declare function toCliError(error: unknown): CliError;
package/dist/errors.js ADDED
@@ -0,0 +1,35 @@
1
+ export const EXIT_CODES = {
2
+ OK: 0,
3
+ GENERAL_ERROR: 1,
4
+ MISSING_AUTH: 10,
5
+ INTERACTIVE_REQUIRED: 11,
6
+ FILE_NOT_FOUND: 12,
7
+ DECRYPTION_FAILED: 13,
8
+ UFID_MISMATCH: 14,
9
+ INVALID_FILE_CARD: 15,
10
+ };
11
+ export class CliError extends Error {
12
+ code;
13
+ exitCode;
14
+ details;
15
+ constructor(code, message, exitCode, details) {
16
+ super(message);
17
+ this.name = "CliError";
18
+ this.code = code;
19
+ this.exitCode = exitCode;
20
+ this.details = details;
21
+ }
22
+ }
23
+ export function isCliError(error) {
24
+ return error instanceof CliError;
25
+ }
26
+ export function toCliError(error) {
27
+ if (isCliError(error)) {
28
+ return error;
29
+ }
30
+ if (error instanceof Error) {
31
+ return new CliError("internal_error", error.message, EXIT_CODES.GENERAL_ERROR);
32
+ }
33
+ return new CliError("internal_error", String(error), EXIT_CODES.GENERAL_ERROR);
34
+ }
35
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,EAAE,EAAE,CAAC;IACL,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,EAAE;IAChB,oBAAoB,EAAE,EAAE;IACxB,cAAc,EAAE,EAAE;IAClB,iBAAiB,EAAE,EAAE;IACrB,aAAa,EAAE,EAAE;IACjB,iBAAiB,EAAE,EAAE;CACf,CAAA;AAEV,MAAM,OAAO,QAAS,SAAQ,KAAK;IACtB,IAAI,CAAQ;IACZ,QAAQ,CAAQ;IAChB,OAAO,CAAU;IAE1B,YAAY,IAAY,EAAE,OAAe,EAAE,QAAgB,EAAE,OAAiB;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;CACJ;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,QAAQ,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACrC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;AAClF,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { TelegramClient } from "telegram/client/TelegramClient.js";
2
+ import type { DownloadMode } from "./download.js";
3
+ import type { FileCardData, FileCardRecord } from "./types.js";
4
+ export type ChunkInspection = {
5
+ msgId: number;
6
+ status: "ok" | "missing" | "not_document" | "invalid_size";
7
+ size?: number;
8
+ className?: string;
9
+ };
10
+ export type FileInspectionResult = {
11
+ peer: string;
12
+ msgId: number;
13
+ date: number;
14
+ data: FileCardData;
15
+ chunks: ChunkInspection[];
16
+ format: DownloadMode | "unknown";
17
+ probe?: {
18
+ mode: DownloadMode;
19
+ bytesWritten: number;
20
+ computedUfid: string;
21
+ } | undefined;
22
+ probeError?: string;
23
+ };
24
+ export type FileModeProbe = NonNullable<FileInspectionResult["probe"]>;
25
+ export type FileModeDetectionResult = {
26
+ probe?: FileModeProbe;
27
+ lastError?: string;
28
+ };
29
+ export declare function resolveFileCardRecord(client: TelegramClient, ufid: string, peer?: string): Promise<FileCardRecord>;
30
+ export declare function resolveFileCardRecords(client: TelegramClient, ufids: string[], peer?: string): Promise<FileCardRecord[]>;
31
+ export declare function renameFile(client: TelegramClient, ufid: string, newName: string): Promise<{
32
+ before: FileCardRecord;
33
+ after: {
34
+ data: {
35
+ name: string;
36
+ ufid: string;
37
+ size: number;
38
+ uploadComplete: boolean;
39
+ chunks: number[];
40
+ IV: string;
41
+ };
42
+ msgId: number;
43
+ date: number;
44
+ };
45
+ }>;
46
+ export declare function deleteResolvedFiles(client: TelegramClient, records: FileCardRecord[]): Promise<FileCardRecord[]>;
47
+ export declare function deleteFiles(client: TelegramClient, ufids: string[]): Promise<FileCardRecord[]>;
48
+ export declare function sendFiles(client: TelegramClient, ufids: string[], recipient: string): Promise<{
49
+ source: FileCardRecord;
50
+ recipient: string;
51
+ data: FileCardData;
52
+ }[]>;
53
+ export declare function receiveFiles(client: TelegramClient, source: string, ufids: string[]): Promise<{
54
+ source: string;
55
+ original: FileCardRecord;
56
+ data: FileCardData;
57
+ }[]>;
58
+ export declare function unsendFiles(client: TelegramClient, source: string, ufids: string[]): Promise<FileCardRecord[]>;
59
+ export declare function detectFileMode(expected: {
60
+ size: number;
61
+ ufid: string;
62
+ }, inspectMode: (mode: DownloadMode) => Promise<{
63
+ bytesWritten: number;
64
+ computedUfid: string;
65
+ }>): Promise<FileModeDetectionResult>;
66
+ export declare function inspectFileCard(client: TelegramClient, ufid: string, options?: {
67
+ peer?: string;
68
+ password?: string;
69
+ probe?: boolean;
70
+ }): Promise<FileInspectionResult>;
71
+ export declare function formatDeleteConfirmation(records: FileCardRecord[]): string;