@mtkruto/node 0.1.127 → 0.1.128
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/esm/4_constants.d.ts +1 -1
- package/esm/4_constants.js +1 -1
- package/esm/client/5_client.js +35 -3
- package/esm/storage/0_storage.d.ts +6 -0
- package/esm/storage/0_storage.js +32 -0
- package/esm/storage/1_storage_indexed_db.d.ts +5 -2
- package/esm/storage/1_storage_indexed_db.js +50 -8
- package/esm/storage/1_storage_local_storage.d.ts +4 -1
- package/esm/storage/1_storage_local_storage.js +24 -6
- package/esm/storage/1_storage_memory.d.ts +2 -0
- package/esm/storage/1_storage_memory.js +29 -2
- package/esm/storage/1_storage_session_storage.d.ts +4 -1
- package/esm/storage/1_storage_session_storage.js +24 -6
- package/package.json +1 -1
- package/script/4_constants.d.ts +1 -1
- package/script/4_constants.js +1 -1
- package/script/client/5_client.js +35 -3
- package/script/storage/0_storage.d.ts +6 -0
- package/script/storage/0_storage.js +32 -0
- package/script/storage/1_storage_indexed_db.d.ts +5 -2
- package/script/storage/1_storage_indexed_db.js +50 -8
- package/script/storage/1_storage_local_storage.d.ts +4 -1
- package/script/storage/1_storage_local_storage.js +24 -6
- package/script/storage/1_storage_memory.d.ts +2 -0
- package/script/storage/1_storage_memory.js +29 -2
- package/script/storage/1_storage_session_storage.d.ts +4 -1
- package/script/storage/1_storage_session_storage.js +24 -6
package/esm/4_constants.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type PublicKeys = readonly [bigint, [bigint, bigint]][];
|
|
|
4
4
|
export declare const PUBLIC_KEYS: PublicKeys;
|
|
5
5
|
export declare const INITIAL_DC: DC;
|
|
6
6
|
export declare const LAYER = 167;
|
|
7
|
-
export declare const APP_VERSION = "MTKruto 0.1.
|
|
7
|
+
export declare const APP_VERSION = "MTKruto 0.1.128";
|
|
8
8
|
export declare const DEVICE_MODEL: string;
|
|
9
9
|
export declare const LANG_CODE: string;
|
|
10
10
|
export declare const LANG_PACK = "";
|
package/esm/4_constants.js
CHANGED
|
@@ -53,7 +53,7 @@ export const PUBLIC_KEYS = Object.freeze([
|
|
|
53
53
|
]);
|
|
54
54
|
export const INITIAL_DC = "2";
|
|
55
55
|
export const LAYER = 167;
|
|
56
|
-
export const APP_VERSION = "MTKruto 0.1.
|
|
56
|
+
export const APP_VERSION = "MTKruto 0.1.128";
|
|
57
57
|
// @ts-ignore: lib
|
|
58
58
|
export const DEVICE_MODEL = typeof dntShim.Deno === "undefined" ? typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : process.platform + "-" + process.arch : navigator.userAgent.split(" ")[0] : dntShim.Deno.build.os + "-" + dntShim.Deno.build.arch;
|
|
59
59
|
export const LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
|
package/esm/client/5_client.js
CHANGED
|
@@ -1645,12 +1645,21 @@ export class Client extends ClientAbstract {
|
|
|
1645
1645
|
}
|
|
1646
1646
|
}
|
|
1647
1647
|
async [(_Client_downloadInner = async function* _Client_downloadInner(location, dcId, params) {
|
|
1648
|
+
const id = "id" in location ? location.id : "photo_id" in location ? location.photo_id : null;
|
|
1649
|
+
if (id != null) {
|
|
1650
|
+
const partCount = await this.storage.getFile(id);
|
|
1651
|
+
if (partCount != null && partCount > 0) {
|
|
1652
|
+
for await (const part of this.storage.iterFileParts(id, partCount)) {
|
|
1653
|
+
yield part;
|
|
1654
|
+
}
|
|
1655
|
+
return;
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1648
1658
|
const chunkSize = params?.chunkSize ?? 1024 * 1024;
|
|
1649
1659
|
if (mod(chunkSize, 1024) != 0) {
|
|
1650
1660
|
throw new Error("chunkSize must be divisible by 1024");
|
|
1651
1661
|
}
|
|
1652
|
-
const
|
|
1653
|
-
const client = new _a(new StorageMemory(), this.apiId, this.apiHash, {
|
|
1662
|
+
const client = new _a(dcId == this.dcId ? this.storage : this.storage.branch(`download_client_${dcId}`), this.apiId, this.apiHash, {
|
|
1654
1663
|
transportProvider: this.transportProvider,
|
|
1655
1664
|
appVersion: this.appVersion,
|
|
1656
1665
|
deviceModel: this.deviceModel,
|
|
@@ -1666,14 +1675,37 @@ export class Client extends ClientAbstract {
|
|
|
1666
1675
|
}
|
|
1667
1676
|
await client.setDc(dc);
|
|
1668
1677
|
await client.connect();
|
|
1669
|
-
await client.
|
|
1678
|
+
await __classPrivateFieldGet(client, _Client_instances, "m", _Client_initConnection).call(client);
|
|
1679
|
+
client.invoke.use(async (ctx, next) => {
|
|
1680
|
+
if (ctx.error instanceof AuthKeyUnregistered) {
|
|
1681
|
+
try {
|
|
1682
|
+
const exportedAuth = await this.invoke(new functions.auth.exportAuthorization({ dc_id: dcId }));
|
|
1683
|
+
await client.authorize(exportedAuth);
|
|
1684
|
+
return true;
|
|
1685
|
+
}
|
|
1686
|
+
catch (err) {
|
|
1687
|
+
throw err;
|
|
1688
|
+
}
|
|
1689
|
+
}
|
|
1690
|
+
else {
|
|
1691
|
+
return await next();
|
|
1692
|
+
}
|
|
1693
|
+
});
|
|
1670
1694
|
const limit = chunkSize;
|
|
1671
1695
|
let offset = 0n;
|
|
1696
|
+
let part = 0;
|
|
1672
1697
|
while (true) {
|
|
1673
1698
|
const file = await (client ?? this).invoke(new functions.upload.getFile({ location, offset, limit }));
|
|
1674
1699
|
if (file instanceof types.upload.File) {
|
|
1675
1700
|
yield file.bytes;
|
|
1701
|
+
if (id != null) {
|
|
1702
|
+
await this.storage.saveFilePart(id, part, file.bytes);
|
|
1703
|
+
}
|
|
1704
|
+
++part;
|
|
1676
1705
|
if (file.bytes.length < limit) {
|
|
1706
|
+
if (id != null) {
|
|
1707
|
+
await this.storage.setFilePartCount(id, part + 1);
|
|
1708
|
+
}
|
|
1677
1709
|
break;
|
|
1678
1710
|
}
|
|
1679
1711
|
else {
|
|
@@ -18,6 +18,8 @@ export declare abstract class Storage {
|
|
|
18
18
|
limit?: number;
|
|
19
19
|
reverse?: boolean;
|
|
20
20
|
}): MaybePromise<Generator<[readonly StorageKeyPart[], T]> | AsyncGenerator<[readonly StorageKeyPart[], T]>>;
|
|
21
|
+
abstract get supportsFiles(): boolean;
|
|
22
|
+
abstract branch(id: string): Storage;
|
|
21
23
|
setDc(dc: DC | null): MaybePromise<void>;
|
|
22
24
|
getDc(): MaybePromise<DC | null>;
|
|
23
25
|
getAuthKey(): Promise<Uint8Array | null>;
|
|
@@ -66,4 +68,8 @@ export declare abstract class Storage {
|
|
|
66
68
|
setPinnedChats(listId: number, chatIds: number[] | null): Promise<void>;
|
|
67
69
|
getPinnedChats(listId: number): Promise<number[] | null>;
|
|
68
70
|
getHistory(chatId: number, offsetId: number, limit: number): Promise<enums.Message[]>;
|
|
71
|
+
getFile(id: bigint): Promise<number | null>;
|
|
72
|
+
iterFileParts(id: bigint, partCount: number): AsyncGenerator<Uint8Array, void, unknown>;
|
|
73
|
+
saveFilePart(id: bigint, index: number, bytes: Uint8Array): Promise<void>;
|
|
74
|
+
setFilePartCount(id: bigint, partCount: number): Promise<void>;
|
|
69
75
|
}
|
package/esm/storage/0_storage.js
CHANGED
|
@@ -30,6 +30,8 @@ const KPARTS_CHATS = (listId) => ["chats", listId];
|
|
|
30
30
|
const KPARTS_CHAT = (listId, chatId) => ["chats", listId, chatId];
|
|
31
31
|
const KPARTS_PINNED_CHATS = (listId) => ["pinnedChats", listId];
|
|
32
32
|
const KPARTS_SERVER_SALT = ["serverSalt"];
|
|
33
|
+
const KPARTS_FILE = (fileId) => ["files", fileId];
|
|
34
|
+
const KPARTS_FILE_PART = (fileId, n) => ["fileParts", fileId, n];
|
|
33
35
|
export class Storage {
|
|
34
36
|
constructor() {
|
|
35
37
|
_Storage_instances.add(this);
|
|
@@ -219,6 +221,36 @@ export class Storage {
|
|
|
219
221
|
}
|
|
220
222
|
return messages;
|
|
221
223
|
}
|
|
224
|
+
async getFile(id) {
|
|
225
|
+
if (!this.supportsFiles) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
return await this.get(KPARTS_FILE(id));
|
|
229
|
+
}
|
|
230
|
+
async *iterFileParts(id, partCount) {
|
|
231
|
+
if (!this.supportsFiles) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
for (let i = 0; i < partCount; i++) {
|
|
235
|
+
const part = await this.get(KPARTS_FILE_PART(id, i));
|
|
236
|
+
if (part == null) {
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
yield part;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
async saveFilePart(id, index, bytes) {
|
|
243
|
+
if (!this.supportsFiles) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
await this.set(KPARTS_FILE_PART(id, index), bytes);
|
|
247
|
+
}
|
|
248
|
+
async setFilePartCount(id, partCount) {
|
|
249
|
+
if (!this.supportsFiles) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
await this.set(KPARTS_FILE(id), partCount);
|
|
253
|
+
}
|
|
222
254
|
}
|
|
223
255
|
_Storage__authKeyId = new WeakMap(), _Storage_instances = new WeakSet(), _Storage_resetAuthKeyId = async function _Storage_resetAuthKeyId(authKey) {
|
|
224
256
|
if (authKey != null) {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { GetManyFilter, Storage, StorageKeyPart } from "./0_storage.js";
|
|
2
2
|
export declare class StorageIndexedDB extends Storage {
|
|
3
|
-
|
|
3
|
+
#private;
|
|
4
4
|
database: IDBDatabase | null;
|
|
5
5
|
constructor(name: string);
|
|
6
|
+
get name(): string;
|
|
7
|
+
branch(id: string): StorageIndexedDB;
|
|
6
8
|
init(): Promise<void>;
|
|
9
|
+
get supportsFiles(): boolean;
|
|
7
10
|
set(k: readonly StorageKeyPart[], v: unknown, tx_?: IDBTransaction): Promise<void>;
|
|
8
|
-
get<T>(k: readonly StorageKeyPart[], tx_?: IDBTransaction): Promise<T | null>;
|
|
11
|
+
get<T>(k: readonly StorageKeyPart[], tx_?: IDBTransaction | null, fix?: boolean): Promise<T | null>;
|
|
9
12
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
10
13
|
limit?: number;
|
|
11
14
|
reverse?: boolean;
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _StorageIndexedDB_instances, _StorageIndexedDB_name, _StorageIndexedDB_id, _StorageIndexedDB_fixKey;
|
|
1
13
|
import { Storage } from "./0_storage.js";
|
|
2
14
|
import { fixKey, getPrefixKeyRange, restoreKey } from "./0_utilities.js";
|
|
3
15
|
const VERSION = 1;
|
|
@@ -8,18 +20,24 @@ export class StorageIndexedDB extends Storage {
|
|
|
8
20
|
throw new Error("Unavailable in current environment");
|
|
9
21
|
}
|
|
10
22
|
super();
|
|
11
|
-
|
|
12
|
-
enumerable: true,
|
|
13
|
-
configurable: true,
|
|
14
|
-
writable: true,
|
|
15
|
-
value: name
|
|
16
|
-
});
|
|
23
|
+
_StorageIndexedDB_instances.add(this);
|
|
17
24
|
Object.defineProperty(this, "database", {
|
|
18
25
|
enumerable: true,
|
|
19
26
|
configurable: true,
|
|
20
27
|
writable: true,
|
|
21
28
|
value: null
|
|
22
29
|
});
|
|
30
|
+
_StorageIndexedDB_name.set(this, void 0);
|
|
31
|
+
_StorageIndexedDB_id.set(this, null);
|
|
32
|
+
__classPrivateFieldSet(this, _StorageIndexedDB_name, name, "f");
|
|
33
|
+
}
|
|
34
|
+
get name() {
|
|
35
|
+
return __classPrivateFieldGet(this, _StorageIndexedDB_name, "f");
|
|
36
|
+
}
|
|
37
|
+
branch(id) {
|
|
38
|
+
const storage = new StorageIndexedDB(this.name);
|
|
39
|
+
__classPrivateFieldSet(storage, _StorageIndexedDB_id, id, "f");
|
|
40
|
+
return storage;
|
|
23
41
|
}
|
|
24
42
|
init() {
|
|
25
43
|
const db = indexedDB.open(this.name, VERSION);
|
|
@@ -35,7 +53,11 @@ export class StorageIndexedDB extends Storage {
|
|
|
35
53
|
};
|
|
36
54
|
});
|
|
37
55
|
}
|
|
56
|
+
get supportsFiles() {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
38
59
|
set(k, v, tx_) {
|
|
60
|
+
k = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, k);
|
|
39
61
|
if (!this.database) {
|
|
40
62
|
throw new Error("Not initialized");
|
|
41
63
|
}
|
|
@@ -57,7 +79,10 @@ export class StorageIndexedDB extends Storage {
|
|
|
57
79
|
};
|
|
58
80
|
});
|
|
59
81
|
}
|
|
60
|
-
get(k, tx_) {
|
|
82
|
+
get(k, tx_, fix = true) {
|
|
83
|
+
if (fix) {
|
|
84
|
+
k = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, k);
|
|
85
|
+
}
|
|
61
86
|
if (!this.database) {
|
|
62
87
|
throw new Error("Not initialized");
|
|
63
88
|
}
|
|
@@ -73,6 +98,15 @@ export class StorageIndexedDB extends Storage {
|
|
|
73
98
|
});
|
|
74
99
|
}
|
|
75
100
|
async *getMany(filter, params, tx_) {
|
|
101
|
+
if ("prefix" in filter && __classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
102
|
+
filter.prefix = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, filter.prefix);
|
|
103
|
+
}
|
|
104
|
+
if ("start" in filter && __classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
105
|
+
filter.start = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, filter.start);
|
|
106
|
+
}
|
|
107
|
+
if ("end" in filter && __classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
108
|
+
filter.end = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, filter.end);
|
|
109
|
+
}
|
|
76
110
|
if (!this.database) {
|
|
77
111
|
throw new Error("Not initialized");
|
|
78
112
|
}
|
|
@@ -108,7 +142,7 @@ export class StorageIndexedDB extends Storage {
|
|
|
108
142
|
};
|
|
109
143
|
});
|
|
110
144
|
for (const key of keys) {
|
|
111
|
-
yield [key, await this.get(key)];
|
|
145
|
+
yield [key, await this.get(key, null, false)];
|
|
112
146
|
}
|
|
113
147
|
}
|
|
114
148
|
async incr(key, by) {
|
|
@@ -121,3 +155,11 @@ export class StorageIndexedDB extends Storage {
|
|
|
121
155
|
await this.set(key, (currentValue || 0) + by, tx);
|
|
122
156
|
}
|
|
123
157
|
}
|
|
158
|
+
_StorageIndexedDB_name = new WeakMap(), _StorageIndexedDB_id = new WeakMap(), _StorageIndexedDB_instances = new WeakSet(), _StorageIndexedDB_fixKey = function _StorageIndexedDB_fixKey(key) {
|
|
159
|
+
if (__classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
160
|
+
return ["__S" + __classPrivateFieldGet(this, _StorageIndexedDB_id, "f"), ...key];
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
return key;
|
|
164
|
+
}
|
|
165
|
+
};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { GetManyFilter, Storage, StorageKeyPart } from "./0_storage.js";
|
|
2
2
|
export declare class StorageLocalStorage extends Storage implements Storage {
|
|
3
|
-
private
|
|
3
|
+
#private;
|
|
4
4
|
constructor(prefix: string);
|
|
5
|
+
get prefix(): string;
|
|
6
|
+
branch(id: string): StorageLocalStorage;
|
|
5
7
|
init(): void;
|
|
8
|
+
get supportsFiles(): boolean;
|
|
6
9
|
get<T>(key_: readonly StorageKeyPart[]): T | null;
|
|
7
10
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
8
11
|
limit?: number;
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _StorageLocalStorage_prefix;
|
|
1
13
|
import { Storage } from "./0_storage.js";
|
|
2
14
|
import { fromString, isInRange, toString } from "./0_utilities.js";
|
|
3
15
|
export class StorageLocalStorage extends Storage {
|
|
@@ -12,15 +24,20 @@ export class StorageLocalStorage extends Storage {
|
|
|
12
24
|
throw new Error("Unallowed prefix");
|
|
13
25
|
}
|
|
14
26
|
super();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
_StorageLocalStorage_prefix.set(this, void 0);
|
|
28
|
+
__classPrivateFieldSet(this, _StorageLocalStorage_prefix, prefix, "f");
|
|
29
|
+
}
|
|
30
|
+
get prefix() {
|
|
31
|
+
return __classPrivateFieldGet(this, _StorageLocalStorage_prefix, "f");
|
|
32
|
+
}
|
|
33
|
+
branch(id) {
|
|
34
|
+
return new StorageLocalStorage(this.prefix + "S__" + id);
|
|
21
35
|
}
|
|
22
36
|
init() {
|
|
23
37
|
}
|
|
38
|
+
get supportsFiles() {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
24
41
|
get(key_) {
|
|
25
42
|
const key = this.prefix + toString(key_);
|
|
26
43
|
const value = localStorage.getItem(key);
|
|
@@ -74,3 +91,4 @@ export class StorageLocalStorage extends Storage {
|
|
|
74
91
|
this.set(key, (this.get(key) || 0) + by);
|
|
75
92
|
}
|
|
76
93
|
}
|
|
94
|
+
_StorageLocalStorage_prefix = new WeakMap();
|
|
@@ -4,6 +4,8 @@ export declare class StorageMemory extends Storage implements Storage {
|
|
|
4
4
|
#private;
|
|
5
5
|
protected map: Map<string, unknown>;
|
|
6
6
|
init(): void;
|
|
7
|
+
branch(id: string): Storage;
|
|
8
|
+
get supportsFiles(): boolean;
|
|
7
9
|
get<T>(key: readonly StorageKeyPart[]): NonNullable<T> | null;
|
|
8
10
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
9
11
|
limit?: number;
|
|
@@ -3,7 +3,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
3
3
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
|
-
var
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _StorageMemory_instances, _StorageMemory_id, _StorageMemory_fixKey, _StorageMemory_getEntries;
|
|
7
13
|
import { Storage } from "./0_storage.js";
|
|
8
14
|
import { fromString, isInRange, toString } from "./0_utilities.js";
|
|
9
15
|
export class StorageMemory extends Storage {
|
|
@@ -16,10 +22,20 @@ export class StorageMemory extends Storage {
|
|
|
16
22
|
writable: true,
|
|
17
23
|
value: new Map()
|
|
18
24
|
});
|
|
25
|
+
_StorageMemory_id.set(this, null);
|
|
19
26
|
}
|
|
20
27
|
init() {
|
|
21
28
|
}
|
|
29
|
+
branch(id) {
|
|
30
|
+
const storage = new StorageMemory();
|
|
31
|
+
__classPrivateFieldSet(storage, _StorageMemory_id, id, "f");
|
|
32
|
+
return storage;
|
|
33
|
+
}
|
|
34
|
+
get supportsFiles() {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
22
37
|
get(key) {
|
|
38
|
+
key = __classPrivateFieldGet(this, _StorageMemory_instances, "m", _StorageMemory_fixKey).call(this, key);
|
|
23
39
|
return this.map.get(toString(key)) ?? null;
|
|
24
40
|
}
|
|
25
41
|
*getMany(filter, params) {
|
|
@@ -50,6 +66,7 @@ export class StorageMemory extends Storage {
|
|
|
50
66
|
}
|
|
51
67
|
}
|
|
52
68
|
set(key_, value) {
|
|
69
|
+
key_ = __classPrivateFieldGet(this, _StorageMemory_instances, "m", _StorageMemory_fixKey).call(this, key_);
|
|
53
70
|
const key = toString(key_);
|
|
54
71
|
if (value != null) {
|
|
55
72
|
this.map.set(key, value);
|
|
@@ -62,9 +79,19 @@ export class StorageMemory extends Storage {
|
|
|
62
79
|
this.set(key, (this.get(key) || 0) + by);
|
|
63
80
|
}
|
|
64
81
|
}
|
|
65
|
-
_StorageMemory_instances = new WeakSet(),
|
|
82
|
+
_StorageMemory_id = new WeakMap(), _StorageMemory_instances = new WeakSet(), _StorageMemory_fixKey = function _StorageMemory_fixKey(key) {
|
|
83
|
+
if (__classPrivateFieldGet(this, _StorageMemory_id, "f") !== null) {
|
|
84
|
+
return ["__S" + __classPrivateFieldGet(this, _StorageMemory_id, "f"), ...key];
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return key;
|
|
88
|
+
}
|
|
89
|
+
}, _StorageMemory_getEntries = function _StorageMemory_getEntries() {
|
|
66
90
|
const entries = new Array();
|
|
67
91
|
for (const entry of this.map.entries()) {
|
|
92
|
+
if (__classPrivateFieldGet(this, _StorageMemory_id, "f") !== null && !entry[0].startsWith("__S" + __classPrivateFieldGet(this, _StorageMemory_id, "f"))) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
68
95
|
entries.push(entry);
|
|
69
96
|
}
|
|
70
97
|
return entries;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { MaybePromise } from "../1_utilities.js";
|
|
2
2
|
import { GetManyFilter, Storage, StorageKeyPart } from "./0_storage.js";
|
|
3
3
|
export declare class StorageSessionStorage extends Storage implements Storage {
|
|
4
|
-
private
|
|
4
|
+
#private;
|
|
5
5
|
constructor(prefix: string);
|
|
6
|
+
get prefix(): string;
|
|
7
|
+
branch(id: string): StorageSessionStorage;
|
|
6
8
|
init(): void;
|
|
9
|
+
get supportsFiles(): boolean;
|
|
7
10
|
get<T>(key_: readonly StorageKeyPart[]): T | null;
|
|
8
11
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
9
12
|
limit?: number;
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _StorageSessionStorage_prefix;
|
|
1
13
|
import { Storage } from "./0_storage.js";
|
|
2
14
|
import { fromString, isInRange, toString } from "./0_utilities.js";
|
|
3
15
|
export class StorageSessionStorage extends Storage {
|
|
@@ -12,15 +24,20 @@ export class StorageSessionStorage extends Storage {
|
|
|
12
24
|
throw new Error("Unallowed prefix");
|
|
13
25
|
}
|
|
14
26
|
super();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
_StorageSessionStorage_prefix.set(this, void 0);
|
|
28
|
+
__classPrivateFieldSet(this, _StorageSessionStorage_prefix, prefix, "f");
|
|
29
|
+
}
|
|
30
|
+
get prefix() {
|
|
31
|
+
return __classPrivateFieldGet(this, _StorageSessionStorage_prefix, "f");
|
|
32
|
+
}
|
|
33
|
+
branch(id) {
|
|
34
|
+
return new StorageSessionStorage(this.prefix + "S__" + id);
|
|
21
35
|
}
|
|
22
36
|
init() {
|
|
23
37
|
}
|
|
38
|
+
get supportsFiles() {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
24
41
|
get(key_) {
|
|
25
42
|
const key = this.prefix + toString(key_);
|
|
26
43
|
const value = sessionStorage.getItem(key);
|
|
@@ -74,3 +91,4 @@ export class StorageSessionStorage extends Storage {
|
|
|
74
91
|
this.set(key, (this.get(key) || 0) + by);
|
|
75
92
|
}
|
|
76
93
|
}
|
|
94
|
+
_StorageSessionStorage_prefix = new WeakMap();
|
package/package.json
CHANGED
package/script/4_constants.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type PublicKeys = readonly [bigint, [bigint, bigint]][];
|
|
|
4
4
|
export declare const PUBLIC_KEYS: PublicKeys;
|
|
5
5
|
export declare const INITIAL_DC: DC;
|
|
6
6
|
export declare const LAYER = 167;
|
|
7
|
-
export declare const APP_VERSION = "MTKruto 0.1.
|
|
7
|
+
export declare const APP_VERSION = "MTKruto 0.1.128";
|
|
8
8
|
export declare const DEVICE_MODEL: string;
|
|
9
9
|
export declare const LANG_CODE: string;
|
|
10
10
|
export declare const LANG_PACK = "";
|
package/script/4_constants.js
CHANGED
|
@@ -79,7 +79,7 @@ exports.PUBLIC_KEYS = Object.freeze([
|
|
|
79
79
|
]);
|
|
80
80
|
exports.INITIAL_DC = "2";
|
|
81
81
|
exports.LAYER = 167;
|
|
82
|
-
exports.APP_VERSION = "MTKruto 0.1.
|
|
82
|
+
exports.APP_VERSION = "MTKruto 0.1.128";
|
|
83
83
|
// @ts-ignore: lib
|
|
84
84
|
exports.DEVICE_MODEL = typeof dntShim.Deno === "undefined" ? typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : process.platform + "-" + process.arch : navigator.userAgent.split(" ")[0] : dntShim.Deno.build.os + "-" + dntShim.Deno.build.arch;
|
|
85
85
|
exports.LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
|
|
@@ -1650,12 +1650,21 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
|
|
|
1650
1650
|
}
|
|
1651
1651
|
}
|
|
1652
1652
|
async [(_Client_downloadInner = async function* _Client_downloadInner(location, dcId, params) {
|
|
1653
|
+
const id = "id" in location ? location.id : "photo_id" in location ? location.photo_id : null;
|
|
1654
|
+
if (id != null) {
|
|
1655
|
+
const partCount = await this.storage.getFile(id);
|
|
1656
|
+
if (partCount != null && partCount > 0) {
|
|
1657
|
+
for await (const part of this.storage.iterFileParts(id, partCount)) {
|
|
1658
|
+
yield part;
|
|
1659
|
+
}
|
|
1660
|
+
return;
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1653
1663
|
const chunkSize = params?.chunkSize ?? 1024 * 1024;
|
|
1654
1664
|
if ((0, _1_utilities_js_1.mod)(chunkSize, 1024) != 0) {
|
|
1655
1665
|
throw new Error("chunkSize must be divisible by 1024");
|
|
1656
1666
|
}
|
|
1657
|
-
const
|
|
1658
|
-
const client = new _a(new _3_storage_js_1.StorageMemory(), this.apiId, this.apiHash, {
|
|
1667
|
+
const client = new _a(dcId == this.dcId ? this.storage : this.storage.branch(`download_client_${dcId}`), this.apiId, this.apiHash, {
|
|
1659
1668
|
transportProvider: this.transportProvider,
|
|
1660
1669
|
appVersion: this.appVersion,
|
|
1661
1670
|
deviceModel: this.deviceModel,
|
|
@@ -1671,14 +1680,37 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
|
|
|
1671
1680
|
}
|
|
1672
1681
|
await client.setDc(dc);
|
|
1673
1682
|
await client.connect();
|
|
1674
|
-
await client.
|
|
1683
|
+
await __classPrivateFieldGet(client, _Client_instances, "m", _Client_initConnection).call(client);
|
|
1684
|
+
client.invoke.use(async (ctx, next) => {
|
|
1685
|
+
if (ctx.error instanceof _4_errors_js_1.AuthKeyUnregistered) {
|
|
1686
|
+
try {
|
|
1687
|
+
const exportedAuth = await this.invoke(new _2_tl_js_1.functions.auth.exportAuthorization({ dc_id: dcId }));
|
|
1688
|
+
await client.authorize(exportedAuth);
|
|
1689
|
+
return true;
|
|
1690
|
+
}
|
|
1691
|
+
catch (err) {
|
|
1692
|
+
throw err;
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1695
|
+
else {
|
|
1696
|
+
return await next();
|
|
1697
|
+
}
|
|
1698
|
+
});
|
|
1675
1699
|
const limit = chunkSize;
|
|
1676
1700
|
let offset = 0n;
|
|
1701
|
+
let part = 0;
|
|
1677
1702
|
while (true) {
|
|
1678
1703
|
const file = await (client ?? this).invoke(new _2_tl_js_1.functions.upload.getFile({ location, offset, limit }));
|
|
1679
1704
|
if (file instanceof _2_tl_js_1.types.upload.File) {
|
|
1680
1705
|
yield file.bytes;
|
|
1706
|
+
if (id != null) {
|
|
1707
|
+
await this.storage.saveFilePart(id, part, file.bytes);
|
|
1708
|
+
}
|
|
1709
|
+
++part;
|
|
1681
1710
|
if (file.bytes.length < limit) {
|
|
1711
|
+
if (id != null) {
|
|
1712
|
+
await this.storage.setFilePartCount(id, part + 1);
|
|
1713
|
+
}
|
|
1682
1714
|
break;
|
|
1683
1715
|
}
|
|
1684
1716
|
else {
|
|
@@ -18,6 +18,8 @@ export declare abstract class Storage {
|
|
|
18
18
|
limit?: number;
|
|
19
19
|
reverse?: boolean;
|
|
20
20
|
}): MaybePromise<Generator<[readonly StorageKeyPart[], T]> | AsyncGenerator<[readonly StorageKeyPart[], T]>>;
|
|
21
|
+
abstract get supportsFiles(): boolean;
|
|
22
|
+
abstract branch(id: string): Storage;
|
|
21
23
|
setDc(dc: DC | null): MaybePromise<void>;
|
|
22
24
|
getDc(): MaybePromise<DC | null>;
|
|
23
25
|
getAuthKey(): Promise<Uint8Array | null>;
|
|
@@ -66,4 +68,8 @@ export declare abstract class Storage {
|
|
|
66
68
|
setPinnedChats(listId: number, chatIds: number[] | null): Promise<void>;
|
|
67
69
|
getPinnedChats(listId: number): Promise<number[] | null>;
|
|
68
70
|
getHistory(chatId: number, offsetId: number, limit: number): Promise<enums.Message[]>;
|
|
71
|
+
getFile(id: bigint): Promise<number | null>;
|
|
72
|
+
iterFileParts(id: bigint, partCount: number): AsyncGenerator<Uint8Array, void, unknown>;
|
|
73
|
+
saveFilePart(id: bigint, index: number, bytes: Uint8Array): Promise<void>;
|
|
74
|
+
setFilePartCount(id: bigint, partCount: number): Promise<void>;
|
|
69
75
|
}
|
|
@@ -33,6 +33,8 @@ const KPARTS_CHATS = (listId) => ["chats", listId];
|
|
|
33
33
|
const KPARTS_CHAT = (listId, chatId) => ["chats", listId, chatId];
|
|
34
34
|
const KPARTS_PINNED_CHATS = (listId) => ["pinnedChats", listId];
|
|
35
35
|
const KPARTS_SERVER_SALT = ["serverSalt"];
|
|
36
|
+
const KPARTS_FILE = (fileId) => ["files", fileId];
|
|
37
|
+
const KPARTS_FILE_PART = (fileId, n) => ["fileParts", fileId, n];
|
|
36
38
|
class Storage {
|
|
37
39
|
constructor() {
|
|
38
40
|
_Storage_instances.add(this);
|
|
@@ -222,6 +224,36 @@ class Storage {
|
|
|
222
224
|
}
|
|
223
225
|
return messages;
|
|
224
226
|
}
|
|
227
|
+
async getFile(id) {
|
|
228
|
+
if (!this.supportsFiles) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
return await this.get(KPARTS_FILE(id));
|
|
232
|
+
}
|
|
233
|
+
async *iterFileParts(id, partCount) {
|
|
234
|
+
if (!this.supportsFiles) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
for (let i = 0; i < partCount; i++) {
|
|
238
|
+
const part = await this.get(KPARTS_FILE_PART(id, i));
|
|
239
|
+
if (part == null) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
yield part;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async saveFilePart(id, index, bytes) {
|
|
246
|
+
if (!this.supportsFiles) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
await this.set(KPARTS_FILE_PART(id, index), bytes);
|
|
250
|
+
}
|
|
251
|
+
async setFilePartCount(id, partCount) {
|
|
252
|
+
if (!this.supportsFiles) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
await this.set(KPARTS_FILE(id), partCount);
|
|
256
|
+
}
|
|
225
257
|
}
|
|
226
258
|
exports.Storage = Storage;
|
|
227
259
|
_Storage__authKeyId = new WeakMap(), _Storage_instances = new WeakSet(), _Storage_resetAuthKeyId = async function _Storage_resetAuthKeyId(authKey) {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { GetManyFilter, Storage, StorageKeyPart } from "./0_storage.js";
|
|
2
2
|
export declare class StorageIndexedDB extends Storage {
|
|
3
|
-
|
|
3
|
+
#private;
|
|
4
4
|
database: IDBDatabase | null;
|
|
5
5
|
constructor(name: string);
|
|
6
|
+
get name(): string;
|
|
7
|
+
branch(id: string): StorageIndexedDB;
|
|
6
8
|
init(): Promise<void>;
|
|
9
|
+
get supportsFiles(): boolean;
|
|
7
10
|
set(k: readonly StorageKeyPart[], v: unknown, tx_?: IDBTransaction): Promise<void>;
|
|
8
|
-
get<T>(k: readonly StorageKeyPart[], tx_?: IDBTransaction): Promise<T | null>;
|
|
11
|
+
get<T>(k: readonly StorageKeyPart[], tx_?: IDBTransaction | null, fix?: boolean): Promise<T | null>;
|
|
9
12
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
10
13
|
limit?: number;
|
|
11
14
|
reverse?: boolean;
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _StorageIndexedDB_instances, _StorageIndexedDB_name, _StorageIndexedDB_id, _StorageIndexedDB_fixKey;
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.StorageIndexedDB = void 0;
|
|
4
16
|
const _0_storage_js_1 = require("./0_storage.js");
|
|
@@ -11,18 +23,24 @@ class StorageIndexedDB extends _0_storage_js_1.Storage {
|
|
|
11
23
|
throw new Error("Unavailable in current environment");
|
|
12
24
|
}
|
|
13
25
|
super();
|
|
14
|
-
|
|
15
|
-
enumerable: true,
|
|
16
|
-
configurable: true,
|
|
17
|
-
writable: true,
|
|
18
|
-
value: name
|
|
19
|
-
});
|
|
26
|
+
_StorageIndexedDB_instances.add(this);
|
|
20
27
|
Object.defineProperty(this, "database", {
|
|
21
28
|
enumerable: true,
|
|
22
29
|
configurable: true,
|
|
23
30
|
writable: true,
|
|
24
31
|
value: null
|
|
25
32
|
});
|
|
33
|
+
_StorageIndexedDB_name.set(this, void 0);
|
|
34
|
+
_StorageIndexedDB_id.set(this, null);
|
|
35
|
+
__classPrivateFieldSet(this, _StorageIndexedDB_name, name, "f");
|
|
36
|
+
}
|
|
37
|
+
get name() {
|
|
38
|
+
return __classPrivateFieldGet(this, _StorageIndexedDB_name, "f");
|
|
39
|
+
}
|
|
40
|
+
branch(id) {
|
|
41
|
+
const storage = new StorageIndexedDB(this.name);
|
|
42
|
+
__classPrivateFieldSet(storage, _StorageIndexedDB_id, id, "f");
|
|
43
|
+
return storage;
|
|
26
44
|
}
|
|
27
45
|
init() {
|
|
28
46
|
const db = indexedDB.open(this.name, VERSION);
|
|
@@ -38,7 +56,11 @@ class StorageIndexedDB extends _0_storage_js_1.Storage {
|
|
|
38
56
|
};
|
|
39
57
|
});
|
|
40
58
|
}
|
|
59
|
+
get supportsFiles() {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
41
62
|
set(k, v, tx_) {
|
|
63
|
+
k = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, k);
|
|
42
64
|
if (!this.database) {
|
|
43
65
|
throw new Error("Not initialized");
|
|
44
66
|
}
|
|
@@ -60,7 +82,10 @@ class StorageIndexedDB extends _0_storage_js_1.Storage {
|
|
|
60
82
|
};
|
|
61
83
|
});
|
|
62
84
|
}
|
|
63
|
-
get(k, tx_) {
|
|
85
|
+
get(k, tx_, fix = true) {
|
|
86
|
+
if (fix) {
|
|
87
|
+
k = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, k);
|
|
88
|
+
}
|
|
64
89
|
if (!this.database) {
|
|
65
90
|
throw new Error("Not initialized");
|
|
66
91
|
}
|
|
@@ -76,6 +101,15 @@ class StorageIndexedDB extends _0_storage_js_1.Storage {
|
|
|
76
101
|
});
|
|
77
102
|
}
|
|
78
103
|
async *getMany(filter, params, tx_) {
|
|
104
|
+
if ("prefix" in filter && __classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
105
|
+
filter.prefix = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, filter.prefix);
|
|
106
|
+
}
|
|
107
|
+
if ("start" in filter && __classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
108
|
+
filter.start = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, filter.start);
|
|
109
|
+
}
|
|
110
|
+
if ("end" in filter && __classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
111
|
+
filter.end = __classPrivateFieldGet(this, _StorageIndexedDB_instances, "m", _StorageIndexedDB_fixKey).call(this, filter.end);
|
|
112
|
+
}
|
|
79
113
|
if (!this.database) {
|
|
80
114
|
throw new Error("Not initialized");
|
|
81
115
|
}
|
|
@@ -111,7 +145,7 @@ class StorageIndexedDB extends _0_storage_js_1.Storage {
|
|
|
111
145
|
};
|
|
112
146
|
});
|
|
113
147
|
for (const key of keys) {
|
|
114
|
-
yield [key, await this.get(key)];
|
|
148
|
+
yield [key, await this.get(key, null, false)];
|
|
115
149
|
}
|
|
116
150
|
}
|
|
117
151
|
async incr(key, by) {
|
|
@@ -125,3 +159,11 @@ class StorageIndexedDB extends _0_storage_js_1.Storage {
|
|
|
125
159
|
}
|
|
126
160
|
}
|
|
127
161
|
exports.StorageIndexedDB = StorageIndexedDB;
|
|
162
|
+
_StorageIndexedDB_name = new WeakMap(), _StorageIndexedDB_id = new WeakMap(), _StorageIndexedDB_instances = new WeakSet(), _StorageIndexedDB_fixKey = function _StorageIndexedDB_fixKey(key) {
|
|
163
|
+
if (__classPrivateFieldGet(this, _StorageIndexedDB_id, "f") !== null) {
|
|
164
|
+
return ["__S" + __classPrivateFieldGet(this, _StorageIndexedDB_id, "f"), ...key];
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
return key;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { GetManyFilter, Storage, StorageKeyPart } from "./0_storage.js";
|
|
2
2
|
export declare class StorageLocalStorage extends Storage implements Storage {
|
|
3
|
-
private
|
|
3
|
+
#private;
|
|
4
4
|
constructor(prefix: string);
|
|
5
|
+
get prefix(): string;
|
|
6
|
+
branch(id: string): StorageLocalStorage;
|
|
5
7
|
init(): void;
|
|
8
|
+
get supportsFiles(): boolean;
|
|
6
9
|
get<T>(key_: readonly StorageKeyPart[]): T | null;
|
|
7
10
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
8
11
|
limit?: number;
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _StorageLocalStorage_prefix;
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.StorageLocalStorage = void 0;
|
|
4
16
|
const _0_storage_js_1 = require("./0_storage.js");
|
|
@@ -15,15 +27,20 @@ class StorageLocalStorage extends _0_storage_js_1.Storage {
|
|
|
15
27
|
throw new Error("Unallowed prefix");
|
|
16
28
|
}
|
|
17
29
|
super();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
_StorageLocalStorage_prefix.set(this, void 0);
|
|
31
|
+
__classPrivateFieldSet(this, _StorageLocalStorage_prefix, prefix, "f");
|
|
32
|
+
}
|
|
33
|
+
get prefix() {
|
|
34
|
+
return __classPrivateFieldGet(this, _StorageLocalStorage_prefix, "f");
|
|
35
|
+
}
|
|
36
|
+
branch(id) {
|
|
37
|
+
return new StorageLocalStorage(this.prefix + "S__" + id);
|
|
24
38
|
}
|
|
25
39
|
init() {
|
|
26
40
|
}
|
|
41
|
+
get supportsFiles() {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
27
44
|
get(key_) {
|
|
28
45
|
const key = this.prefix + (0, _0_utilities_js_1.toString)(key_);
|
|
29
46
|
const value = localStorage.getItem(key);
|
|
@@ -78,3 +95,4 @@ class StorageLocalStorage extends _0_storage_js_1.Storage {
|
|
|
78
95
|
}
|
|
79
96
|
}
|
|
80
97
|
exports.StorageLocalStorage = StorageLocalStorage;
|
|
98
|
+
_StorageLocalStorage_prefix = new WeakMap();
|
|
@@ -4,6 +4,8 @@ export declare class StorageMemory extends Storage implements Storage {
|
|
|
4
4
|
#private;
|
|
5
5
|
protected map: Map<string, unknown>;
|
|
6
6
|
init(): void;
|
|
7
|
+
branch(id: string): Storage;
|
|
8
|
+
get supportsFiles(): boolean;
|
|
7
9
|
get<T>(key: readonly StorageKeyPart[]): NonNullable<T> | null;
|
|
8
10
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
9
11
|
limit?: number;
|
|
@@ -4,7 +4,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
5
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
6
|
};
|
|
7
|
-
var
|
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
+
};
|
|
13
|
+
var _StorageMemory_instances, _StorageMemory_id, _StorageMemory_fixKey, _StorageMemory_getEntries;
|
|
8
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
15
|
exports.StorageMemory = void 0;
|
|
10
16
|
const _0_storage_js_1 = require("./0_storage.js");
|
|
@@ -19,10 +25,20 @@ class StorageMemory extends _0_storage_js_1.Storage {
|
|
|
19
25
|
writable: true,
|
|
20
26
|
value: new Map()
|
|
21
27
|
});
|
|
28
|
+
_StorageMemory_id.set(this, null);
|
|
22
29
|
}
|
|
23
30
|
init() {
|
|
24
31
|
}
|
|
32
|
+
branch(id) {
|
|
33
|
+
const storage = new StorageMemory();
|
|
34
|
+
__classPrivateFieldSet(storage, _StorageMemory_id, id, "f");
|
|
35
|
+
return storage;
|
|
36
|
+
}
|
|
37
|
+
get supportsFiles() {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
25
40
|
get(key) {
|
|
41
|
+
key = __classPrivateFieldGet(this, _StorageMemory_instances, "m", _StorageMemory_fixKey).call(this, key);
|
|
26
42
|
return this.map.get((0, _0_utilities_js_1.toString)(key)) ?? null;
|
|
27
43
|
}
|
|
28
44
|
*getMany(filter, params) {
|
|
@@ -53,6 +69,7 @@ class StorageMemory extends _0_storage_js_1.Storage {
|
|
|
53
69
|
}
|
|
54
70
|
}
|
|
55
71
|
set(key_, value) {
|
|
72
|
+
key_ = __classPrivateFieldGet(this, _StorageMemory_instances, "m", _StorageMemory_fixKey).call(this, key_);
|
|
56
73
|
const key = (0, _0_utilities_js_1.toString)(key_);
|
|
57
74
|
if (value != null) {
|
|
58
75
|
this.map.set(key, value);
|
|
@@ -66,9 +83,19 @@ class StorageMemory extends _0_storage_js_1.Storage {
|
|
|
66
83
|
}
|
|
67
84
|
}
|
|
68
85
|
exports.StorageMemory = StorageMemory;
|
|
69
|
-
_StorageMemory_instances = new WeakSet(),
|
|
86
|
+
_StorageMemory_id = new WeakMap(), _StorageMemory_instances = new WeakSet(), _StorageMemory_fixKey = function _StorageMemory_fixKey(key) {
|
|
87
|
+
if (__classPrivateFieldGet(this, _StorageMemory_id, "f") !== null) {
|
|
88
|
+
return ["__S" + __classPrivateFieldGet(this, _StorageMemory_id, "f"), ...key];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return key;
|
|
92
|
+
}
|
|
93
|
+
}, _StorageMemory_getEntries = function _StorageMemory_getEntries() {
|
|
70
94
|
const entries = new Array();
|
|
71
95
|
for (const entry of this.map.entries()) {
|
|
96
|
+
if (__classPrivateFieldGet(this, _StorageMemory_id, "f") !== null && !entry[0].startsWith("__S" + __classPrivateFieldGet(this, _StorageMemory_id, "f"))) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
72
99
|
entries.push(entry);
|
|
73
100
|
}
|
|
74
101
|
return entries;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { MaybePromise } from "../1_utilities.js";
|
|
2
2
|
import { GetManyFilter, Storage, StorageKeyPart } from "./0_storage.js";
|
|
3
3
|
export declare class StorageSessionStorage extends Storage implements Storage {
|
|
4
|
-
private
|
|
4
|
+
#private;
|
|
5
5
|
constructor(prefix: string);
|
|
6
|
+
get prefix(): string;
|
|
7
|
+
branch(id: string): StorageSessionStorage;
|
|
6
8
|
init(): void;
|
|
9
|
+
get supportsFiles(): boolean;
|
|
7
10
|
get<T>(key_: readonly StorageKeyPart[]): T | null;
|
|
8
11
|
getMany<T>(filter: GetManyFilter, params?: {
|
|
9
12
|
limit?: number;
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _StorageSessionStorage_prefix;
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.StorageSessionStorage = void 0;
|
|
4
16
|
const _0_storage_js_1 = require("./0_storage.js");
|
|
@@ -15,15 +27,20 @@ class StorageSessionStorage extends _0_storage_js_1.Storage {
|
|
|
15
27
|
throw new Error("Unallowed prefix");
|
|
16
28
|
}
|
|
17
29
|
super();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
_StorageSessionStorage_prefix.set(this, void 0);
|
|
31
|
+
__classPrivateFieldSet(this, _StorageSessionStorage_prefix, prefix, "f");
|
|
32
|
+
}
|
|
33
|
+
get prefix() {
|
|
34
|
+
return __classPrivateFieldGet(this, _StorageSessionStorage_prefix, "f");
|
|
35
|
+
}
|
|
36
|
+
branch(id) {
|
|
37
|
+
return new StorageSessionStorage(this.prefix + "S__" + id);
|
|
24
38
|
}
|
|
25
39
|
init() {
|
|
26
40
|
}
|
|
41
|
+
get supportsFiles() {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
27
44
|
get(key_) {
|
|
28
45
|
const key = this.prefix + (0, _0_utilities_js_1.toString)(key_);
|
|
29
46
|
const value = sessionStorage.getItem(key);
|
|
@@ -78,3 +95,4 @@ class StorageSessionStorage extends _0_storage_js_1.Storage {
|
|
|
78
95
|
}
|
|
79
96
|
}
|
|
80
97
|
exports.StorageSessionStorage = StorageSessionStorage;
|
|
98
|
+
_StorageSessionStorage_prefix = new WeakMap();
|