@mtcute/web 0.16.6 → 0.16.7
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/README.md +4 -4
- package/cjs/client.d.ts +3 -2
- package/cjs/client.js +5 -3
- package/cjs/client.js.map +1 -1
- package/cjs/common-internals-web/base64.js +21 -22
- package/cjs/common-internals-web/base64.js.map +1 -1
- package/cjs/common-internals-web/hex.js +13 -16
- package/cjs/common-internals-web/hex.js.map +1 -1
- package/cjs/common-internals-web/utf8.js +7 -8
- package/cjs/common-internals-web/utf8.js.map +1 -1
- package/cjs/crypto.d.ts +3 -2
- package/cjs/crypto.js +4 -4
- package/cjs/crypto.js.map +1 -1
- package/cjs/exit-hook.js +1 -2
- package/cjs/exit-hook.js.map +1 -1
- package/cjs/idb/driver.js.map +1 -1
- package/cjs/idb/index.d.ts +1 -1
- package/cjs/idb/index.js.map +1 -1
- package/cjs/idb/repository/auth-keys.d.ts +2 -2
- package/cjs/idb/repository/auth-keys.js.map +1 -1
- package/cjs/idb/repository/kv.d.ts +2 -2
- package/cjs/idb/repository/kv.js.map +1 -1
- package/cjs/idb/repository/peers.d.ts +2 -2
- package/cjs/idb/repository/peers.js.map +1 -1
- package/cjs/idb/repository/ref-messages.d.ts +2 -2
- package/cjs/idb/repository/ref-messages.js.map +1 -1
- package/cjs/idb/utils.js +2 -3
- package/cjs/idb/utils.js.map +1 -1
- package/cjs/platform.d.ts +1 -1
- package/cjs/platform.js +2 -2
- package/cjs/platform.js.map +1 -1
- package/cjs/wasm.js +5 -6
- package/cjs/wasm.js.map +1 -1
- package/cjs/websocket.d.ts +6 -5
- package/cjs/websocket.js +11 -11
- package/cjs/websocket.js.map +1 -1
- package/cjs/worker.d.ts +2 -1
- package/cjs/worker.js +4 -5
- package/cjs/worker.js.map +1 -1
- package/esm/client.d.ts +3 -2
- package/esm/client.js +5 -3
- package/esm/client.js.map +1 -1
- package/esm/common-internals-web/base64.js +19 -19
- package/esm/common-internals-web/base64.js.map +1 -1
- package/esm/common-internals-web/hex.js +11 -13
- package/esm/common-internals-web/hex.js.map +1 -1
- package/esm/common-internals-web/utf8.js +4 -4
- package/esm/common-internals-web/utf8.js.map +1 -1
- package/esm/crypto.d.ts +3 -2
- package/esm/crypto.js +4 -4
- package/esm/crypto.js.map +1 -1
- package/esm/idb/driver.js.map +1 -1
- package/esm/idb/index.d.ts +1 -1
- package/esm/idb/index.js.map +1 -1
- package/esm/idb/repository/auth-keys.d.ts +2 -2
- package/esm/idb/repository/auth-keys.js.map +1 -1
- package/esm/idb/repository/kv.d.ts +2 -2
- package/esm/idb/repository/kv.js.map +1 -1
- package/esm/idb/repository/peers.d.ts +2 -2
- package/esm/idb/repository/peers.js.map +1 -1
- package/esm/idb/repository/ref-messages.d.ts +2 -2
- package/esm/idb/repository/ref-messages.js.map +1 -1
- package/esm/platform.d.ts +1 -1
- package/esm/platform.js +2 -2
- package/esm/platform.js.map +1 -1
- package/esm/wasm.js +4 -4
- package/esm/wasm.js.map +1 -1
- package/esm/websocket.d.ts +6 -5
- package/esm/websocket.js +11 -11
- package/esm/websocket.js.map +1 -1
- package/esm/worker.d.ts +2 -1
- package/esm/worker.js +4 -5
- package/esm/worker.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -31,6 +31,9 @@ You can also use this package with web workers to offload most of the heavy lift
|
|
|
31
31
|
// worker.ts
|
|
32
32
|
import { BaseTelegramClient, TelegramWorker } from '@mtcute/web'
|
|
33
33
|
|
|
34
|
+
// main.ts
|
|
35
|
+
import { TelegramClient, TelegramWorkerPort } from '@mtcute/web'
|
|
36
|
+
|
|
34
37
|
const client = new BaseTelegramClient({
|
|
35
38
|
apiId: 12345,
|
|
36
39
|
apiHash: 'abcdef',
|
|
@@ -39,13 +42,10 @@ const client = new BaseTelegramClient({
|
|
|
39
42
|
|
|
40
43
|
new TelegramWorker({ client })
|
|
41
44
|
|
|
42
|
-
// main.ts
|
|
43
|
-
import { TelegramClient, TelegramWorkerPort } from '@mtcute/web'
|
|
44
|
-
|
|
45
45
|
const worker = new Worker(new URL('./worker.ts', import.meta.url), { type: 'module' }) // or SharedWorker
|
|
46
46
|
const port = new TelegramWorkerPort({ worker })
|
|
47
47
|
const tg = new TelegramClient({ client: port })
|
|
48
48
|
|
|
49
49
|
const self = await tg.start()
|
|
50
50
|
console.log(`✨ logged in as ${user.displayName}`)
|
|
51
|
-
```
|
|
51
|
+
```
|
package/cjs/client.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ITelegramStorageProvider, PartialOnly } from '@mtcute/core';
|
|
2
|
-
import {
|
|
1
|
+
import type { ITelegramStorageProvider, PartialOnly } from '@mtcute/core';
|
|
2
|
+
import type { BaseTelegramClientOptions as BaseTelegramClientOptionsBase, TelegramClientOptions } from '@mtcute/core/client.js';
|
|
3
|
+
import { BaseTelegramClient as BaseTelegramClientBase, TelegramClient as TelegramClientBase } from '@mtcute/core/client.js';
|
|
3
4
|
export type { TelegramClientOptions };
|
|
4
5
|
export interface BaseTelegramClientOptions extends PartialOnly<Omit<BaseTelegramClientOptionsBase, 'storage'>, 'transport' | 'crypto'> {
|
|
5
6
|
/**
|
package/cjs/client.js
CHANGED
|
@@ -15,9 +15,9 @@ class BaseTelegramClient extends client_js_1.BaseTelegramClient {
|
|
|
15
15
|
crypto: new crypto_js_1.WebCryptoProvider(),
|
|
16
16
|
transport: () => new websocket_js_1.WebSocketTransport(),
|
|
17
17
|
...opts,
|
|
18
|
-
storage: typeof opts.storage === 'string'
|
|
19
|
-
new index_js_1.IdbStorage(opts.storage)
|
|
20
|
-
opts.storage ?? new index_js_1.IdbStorage('client.session'),
|
|
18
|
+
storage: typeof opts.storage === 'string'
|
|
19
|
+
? new index_js_1.IdbStorage(opts.storage)
|
|
20
|
+
: opts.storage ?? new index_js_1.IdbStorage('client.session'),
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -34,6 +34,8 @@ class TelegramClient extends client_js_1.TelegramClient {
|
|
|
34
34
|
super({
|
|
35
35
|
client: new BaseTelegramClient(opts),
|
|
36
36
|
disableUpdates: opts.disableUpdates,
|
|
37
|
+
skipConversationUpdates: opts.skipConversationUpdates,
|
|
38
|
+
updates: opts.updates,
|
|
37
39
|
});
|
|
38
40
|
}
|
|
39
41
|
}
|
package/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;AAKA,sDAG+B;AAC/B,0DAAsD;AAEtD,2CAA+C;AAC/C,6CAA2C;AAC3C,+CAA2C;AAC3C,iDAAmD;AAyBnD,MAAa,kBAAmB,SAAQ,8BAAsB;IAC1D,YAAY,IAA+B;QACvC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAA,yBAAW,EAAC,IAAI,yBAAW,EAAE,CAAC,CAAA;QAEtD,KAAK,CAAC;YACF,MAAM,EAAE,IAAI,6BAAiB,EAAE;YAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,iCAAkB,EAAE;YACzC,GAAG,IAAI;YACP,OAAO,EACH,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAC5B,CAAC,CAAC,IAAI,qBAAU,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,qBAAU,CAAC,gBAAgB,CAAC;SAC7D,CAAC,CAAA;IACN,CAAC;CACJ;AAdD,gDAcC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,0BAAkB;IAClD,YAAY,IAA2B;QACnC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,CAAA;YAEX,OAAM;QACV,CAAC;QAED,KAAK,CAAC;YACF,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;YACpC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC,CAAA;IACN,CAAC;CACJ;AAfD,wCAeC","sourcesContent":["import type { ITelegramStorageProvider, PartialOnly } from '@mtcute/core'\nimport type {\n BaseTelegramClientOptions as BaseTelegramClientOptionsBase,\n TelegramClientOptions,\n} from '@mtcute/core/client.js'\nimport {\n BaseTelegramClient as BaseTelegramClientBase,\n TelegramClient as TelegramClientBase,\n} from '@mtcute/core/client.js'\nimport { setPlatform } from '@mtcute/core/platform.js'\n\nimport { WebCryptoProvider } from './crypto.js'\nimport { IdbStorage } from './idb/index.js'\nimport { WebPlatform } from './platform.js'\nimport { WebSocketTransport } from './websocket.js'\n\nexport type { TelegramClientOptions }\n\nexport interface BaseTelegramClientOptions\n extends PartialOnly<Omit<BaseTelegramClientOptionsBase, 'storage'>, 'transport' | 'crypto'> {\n /**\n * Storage to use for this client.\n *\n * If a string is passed, it will be used as\n * a name for an IndexedDB database.\n *\n * @default `\"client.session\"`\n */\n storage?: string | ITelegramStorageProvider\n\n /**\n * **ADVANCED USE ONLY**\n *\n * Whether to not set up the platform.\n * This is useful if you call `setPlatform` yourself.\n */\n platformless?: boolean\n}\n\nexport class BaseTelegramClient extends BaseTelegramClientBase {\n constructor(opts: BaseTelegramClientOptions) {\n if (!opts.platformless) setPlatform(new WebPlatform())\n\n super({\n crypto: new WebCryptoProvider(),\n transport: () => new WebSocketTransport(),\n ...opts,\n storage:\n typeof opts.storage === 'string'\n ? new IdbStorage(opts.storage)\n : opts.storage ?? new IdbStorage('client.session'),\n })\n }\n}\n\n/**\n * Telegram client for use in Node.js\n */\nexport class TelegramClient extends TelegramClientBase {\n constructor(opts: TelegramClientOptions) {\n if ('client' in opts) {\n super(opts)\n\n return\n }\n\n super({\n client: new BaseTelegramClient(opts),\n disableUpdates: opts.disableUpdates,\n skipConversationUpdates: opts.skipConversationUpdates,\n updates: opts.updates,\n })\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.base64Encode = base64Encode;
|
|
4
|
+
exports.base64Decode = base64Decode;
|
|
4
5
|
/// Based on https://github.com/beatgammit/base64-js, MIT license
|
|
5
6
|
const lookup = [];
|
|
6
7
|
const revLookup = [];
|
|
@@ -35,37 +36,37 @@ function toByteArray(b64, arr) {
|
|
|
35
36
|
const len = placeHoldersLen > 0 ? validLen - 4 : validLen;
|
|
36
37
|
let i;
|
|
37
38
|
for (i = 0; i < len; i += 4) {
|
|
38
|
-
tmp
|
|
39
|
-
(revLookup[b64.charCodeAt(i)] << 18)
|
|
40
|
-
(revLookup[b64.charCodeAt(i + 1)] << 12)
|
|
41
|
-
(revLookup[b64.charCodeAt(i + 2)] << 6)
|
|
42
|
-
revLookup[b64.charCodeAt(i + 3)];
|
|
43
|
-
arr[curByte++] = (tmp >> 16) &
|
|
44
|
-
arr[curByte++] = (tmp >> 8) &
|
|
45
|
-
arr[curByte++] = tmp &
|
|
39
|
+
tmp
|
|
40
|
+
= (revLookup[b64.charCodeAt(i)] << 18)
|
|
41
|
+
| (revLookup[b64.charCodeAt(i + 1)] << 12)
|
|
42
|
+
| (revLookup[b64.charCodeAt(i + 2)] << 6)
|
|
43
|
+
| revLookup[b64.charCodeAt(i + 3)];
|
|
44
|
+
arr[curByte++] = (tmp >> 16) & 0xFF;
|
|
45
|
+
arr[curByte++] = (tmp >> 8) & 0xFF;
|
|
46
|
+
arr[curByte++] = tmp & 0xFF;
|
|
46
47
|
}
|
|
47
48
|
if (placeHoldersLen === 2) {
|
|
48
49
|
tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);
|
|
49
|
-
arr[curByte++] = tmp &
|
|
50
|
+
arr[curByte++] = tmp & 0xFF;
|
|
50
51
|
}
|
|
51
52
|
if (placeHoldersLen === 1) {
|
|
52
|
-
tmp
|
|
53
|
-
(revLookup[b64.charCodeAt(i)] << 10)
|
|
54
|
-
(revLookup[b64.charCodeAt(i + 1)] << 4)
|
|
55
|
-
(revLookup[b64.charCodeAt(i + 2)] >> 2);
|
|
56
|
-
arr[curByte++] = (tmp >> 8) &
|
|
57
|
-
arr[curByte++] = tmp &
|
|
53
|
+
tmp
|
|
54
|
+
= (revLookup[b64.charCodeAt(i)] << 10)
|
|
55
|
+
| (revLookup[b64.charCodeAt(i + 1)] << 4)
|
|
56
|
+
| (revLookup[b64.charCodeAt(i + 2)] >> 2);
|
|
57
|
+
arr[curByte++] = (tmp >> 8) & 0xFF;
|
|
58
|
+
arr[curByte++] = tmp & 0xFF;
|
|
58
59
|
}
|
|
59
60
|
return arr;
|
|
60
61
|
}
|
|
61
62
|
function tripletToBase64(num) {
|
|
62
|
-
return lookup[(num >> 18) &
|
|
63
|
+
return lookup[(num >> 18) & 0x3F] + lookup[(num >> 12) & 0x3F] + lookup[(num >> 6) & 0x3F] + lookup[num & 0x3F];
|
|
63
64
|
}
|
|
64
65
|
function encodeChunk(uint8, start, end) {
|
|
65
66
|
let tmp;
|
|
66
67
|
const output = [];
|
|
67
68
|
for (let i = start; i < end; i += 3) {
|
|
68
|
-
tmp = ((uint8[i] << 16) &
|
|
69
|
+
tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF);
|
|
69
70
|
output.push(tripletToBase64(tmp));
|
|
70
71
|
}
|
|
71
72
|
return output.join('');
|
|
@@ -83,11 +84,11 @@ function fromByteArray(uint8) {
|
|
|
83
84
|
// pad the end with zeros, but make sure to not forget the extra bytes
|
|
84
85
|
if (extraBytes === 1) {
|
|
85
86
|
tmp = uint8[len - 1];
|
|
86
|
-
parts.push(lookup[tmp >> 2] + lookup[(tmp << 4) &
|
|
87
|
+
parts.push(`${lookup[tmp >> 2] + lookup[(tmp << 4) & 0x3F]}==`);
|
|
87
88
|
}
|
|
88
89
|
else if (extraBytes === 2) {
|
|
89
90
|
tmp = (uint8[len - 2] << 8) + uint8[len - 1];
|
|
90
|
-
parts.push(lookup[tmp >> 10] + lookup[(tmp >> 4) &
|
|
91
|
+
parts.push(`${lookup[tmp >> 10] + lookup[(tmp >> 4) & 0x3F] + lookup[(tmp << 2) & 0x3F]}=`);
|
|
91
92
|
}
|
|
92
93
|
return parts.join('');
|
|
93
94
|
}
|
|
@@ -97,7 +98,6 @@ function base64Encode(buf, url = false) {
|
|
|
97
98
|
return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
98
99
|
return str;
|
|
99
100
|
}
|
|
100
|
-
exports.base64Encode = base64Encode;
|
|
101
101
|
function base64Decode(string, url = false) {
|
|
102
102
|
if (url) {
|
|
103
103
|
string = string.replace(/-/g, '+').replace(/_/g, '/');
|
|
@@ -108,5 +108,4 @@ function base64Decode(string, url = false) {
|
|
|
108
108
|
toByteArray(string, buf);
|
|
109
109
|
return buf;
|
|
110
110
|
}
|
|
111
|
-
exports.base64Decode = base64Decode;
|
|
112
111
|
//# sourceMappingURL=base64.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../src/common-internals-web/base64.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../src/common-internals-web/base64.ts"],"names":[],"mappings":"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","sourcesContent":["/// Based on https://github.com/beatgammit/base64-js, MIT license\nconst lookup: string[] = []\nconst revLookup: number[] = []\n\nconst code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\nfor (let i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nfunction getLens(b64: string): [number, number] {\n const len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n let validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n const placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\nfunction _byteLength(b64: string, validLen: number, placeHoldersLen: number) {\n return ((validLen + placeHoldersLen) * 3) / 4 - placeHoldersLen\n}\n\nfunction toByteArray(b64: string, arr: Uint8Array) {\n let tmp\n const lens = getLens(b64)\n const validLen = lens[0]\n const placeHoldersLen = lens[1]\n\n let curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n const len = placeHoldersLen > 0 ? validLen - 4 : validLen\n\n let i\n\n for (i = 0; i < len; i += 4) {\n tmp\n = (revLookup[b64.charCodeAt(i)] << 18)\n | (revLookup[b64.charCodeAt(i + 1)] << 12)\n | (revLookup[b64.charCodeAt(i + 2)] << 6)\n | revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp\n = (revLookup[b64.charCodeAt(i)] << 10)\n | (revLookup[b64.charCodeAt(i + 1)] << 4)\n | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64(num: number) {\n return lookup[(num >> 18) & 0x3F] + lookup[(num >> 12) & 0x3F] + lookup[(num >> 6) & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk(uint8: Uint8Array, start: number, end: number) {\n let tmp\n const output = []\n\n for (let i = start; i < end; i += 3) {\n tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n\n return output.join('')\n}\n\nfunction fromByteArray(uint8: Uint8Array) {\n let tmp\n const len = uint8.length\n const extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n const parts = []\n const maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (let i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(`${lookup[tmp >> 2] + lookup[(tmp << 4) & 0x3F]}==`)\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(`${lookup[tmp >> 10] + lookup[(tmp >> 4) & 0x3F] + lookup[(tmp << 2) & 0x3F]}=`)\n }\n\n return parts.join('')\n}\n\nexport function base64Encode(buf: Uint8Array, url: boolean = false): string {\n const str = fromByteArray(buf)\n if (url) return str.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n\n return str\n}\n\nexport function base64Decode(string: string, url: boolean = false): Uint8Array {\n if (url) {\n string = string.replace(/-/g, '+').replace(/_/g, '/')\n while (string.length % 4) string += '='\n }\n\n const buf = new Uint8Array(_byteLength(string, ...getLens(string)))\n\n toByteArray(string, buf)\n\n return buf\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/// Based on https://github.com/feross/buffer, MIT license
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.hexEncode = hexEncode;
|
|
5
|
+
exports.hexDecode = hexDecode;
|
|
5
6
|
const hexSliceLookupTable = (function () {
|
|
6
7
|
const alphabet = '0123456789abcdef';
|
|
7
|
-
|
|
8
|
-
const table = new Array(256);
|
|
8
|
+
const table = Array.from({ length: 256 });
|
|
9
9
|
for (let i = 0; i < 16; ++i) {
|
|
10
10
|
const i16 = i * 16;
|
|
11
11
|
for (let j = 0; j < 16; ++j) {
|
|
@@ -15,16 +15,16 @@ const hexSliceLookupTable = (function () {
|
|
|
15
15
|
return table;
|
|
16
16
|
})();
|
|
17
17
|
const hexCharValueTable = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
0: 0,
|
|
19
|
+
1: 1,
|
|
20
|
+
2: 2,
|
|
21
|
+
3: 3,
|
|
22
|
+
4: 4,
|
|
23
|
+
5: 5,
|
|
24
|
+
6: 6,
|
|
25
|
+
7: 7,
|
|
26
|
+
8: 8,
|
|
27
|
+
9: 9,
|
|
28
28
|
a: 10,
|
|
29
29
|
b: 11,
|
|
30
30
|
c: 12,
|
|
@@ -45,7 +45,6 @@ function hexEncode(buf) {
|
|
|
45
45
|
}
|
|
46
46
|
return out;
|
|
47
47
|
}
|
|
48
|
-
exports.hexEncode = hexEncode;
|
|
49
48
|
function hexDecodeInner(buf, string) {
|
|
50
49
|
const strLen = string.length;
|
|
51
50
|
const length = Math.min(buf.length, strLen / 2);
|
|
@@ -58,12 +57,10 @@ function hexDecodeInner(buf, string) {
|
|
|
58
57
|
}
|
|
59
58
|
buf[i] = (a << 4) | b;
|
|
60
59
|
}
|
|
61
|
-
return;
|
|
62
60
|
}
|
|
63
61
|
function hexDecode(string) {
|
|
64
62
|
const buf = new Uint8Array(Math.ceil(string.length / 2));
|
|
65
63
|
hexDecodeInner(buf, string);
|
|
66
64
|
return buf;
|
|
67
65
|
}
|
|
68
|
-
exports.hexDecode = hexDecode;
|
|
69
66
|
//# sourceMappingURL=hex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../../src/common-internals-web/hex.ts"],"names":[],"mappings":";AAAA,0DAA0D
|
|
1
|
+
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../../src/common-internals-web/hex.ts"],"names":[],"mappings":";AAAA,0DAA0D;;AA0C1D,8BAQC;AAmBD,8BAKC;AAxED,MAAM,mBAAmB,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,kBAAkB,CAAA;IACnC,MAAM,KAAK,GAAa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;QAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC,CAAC,EAAE,CAAA;AAEJ,MAAM,iBAAiB,GAA2B;IAC9C,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;CACR,CAAA;AAED,SAAgB,SAAS,CAAC,GAAe;IACrC,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAC,GAAe,EAAE,MAAc;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;IAE/C,IAAI,CAAC,CAAA;IAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAE9C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACrC,OAAM;QACV,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACL,CAAC;AAED,SAAgB,SAAS,CAAC,MAAc;IACpC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACxD,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAE3B,OAAO,GAAG,CAAA;AACd,CAAC","sourcesContent":["/// Based on https://github.com/feross/buffer, MIT license\n\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table: string[] = Array.from({ length: 256 })\n\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n\n return table\n})()\n\nconst hexCharValueTable: Record<string, number> = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n}\n\nexport function hexEncode(buf: Uint8Array): string {\n let out = ''\n\n for (let i = 0; i < buf.byteLength; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n\n return out\n}\n\nfunction hexDecodeInner(buf: Uint8Array, string: string): void {\n const strLen = string.length\n const length = Math.min(buf.length, strLen / 2)\n\n let i\n\n for (i = 0; i < length; ++i) {\n const a = hexCharValueTable[string[i * 2]]\n const b = hexCharValueTable[string[i * 2 + 1]]\n\n if (a === undefined || b === undefined) {\n return\n }\n buf[i] = (a << 4) | b\n }\n}\n\nexport function hexDecode(string: string): Uint8Array {\n const buf = new Uint8Array(Math.ceil(string.length / 2))\n hexDecodeInner(buf, string)\n\n return buf\n}\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.utf8ByteLength = utf8ByteLength;
|
|
4
|
+
exports.utf8Decode = utf8Decode;
|
|
5
|
+
exports.utf8Encode = utf8Encode;
|
|
4
6
|
const sharedEncoder = new TextEncoder();
|
|
5
7
|
const sharedDecoder = new TextDecoder('utf8');
|
|
6
8
|
function utf8ByteLength(str) {
|
|
@@ -8,22 +10,19 @@ function utf8ByteLength(str) {
|
|
|
8
10
|
let s = str.length;
|
|
9
11
|
for (let i = str.length - 1; i >= 0; i--) {
|
|
10
12
|
const code = str.charCodeAt(i);
|
|
11
|
-
if (code >
|
|
13
|
+
if (code > 0x7F && code <= 0x7FF)
|
|
12
14
|
s++;
|
|
13
|
-
else if (code >
|
|
15
|
+
else if (code > 0x7FF && code <= 0xFFFF)
|
|
14
16
|
s += 2;
|
|
15
|
-
if (code >=
|
|
16
|
-
i--; //trail surrogate
|
|
17
|
+
if (code >= 0xDC00 && code <= 0xDFFF)
|
|
18
|
+
i--; // trail surrogate
|
|
17
19
|
}
|
|
18
20
|
return s;
|
|
19
21
|
}
|
|
20
|
-
exports.utf8ByteLength = utf8ByteLength;
|
|
21
22
|
function utf8Decode(buf) {
|
|
22
23
|
return sharedDecoder.decode(buf);
|
|
23
24
|
}
|
|
24
|
-
exports.utf8Decode = utf8Decode;
|
|
25
25
|
function utf8Encode(str) {
|
|
26
26
|
return sharedEncoder.encode(str);
|
|
27
27
|
}
|
|
28
|
-
exports.utf8Encode = utf8Encode;
|
|
29
28
|
//# sourceMappingURL=utf8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../../src/common-internals-web/utf8.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../../src/common-internals-web/utf8.ts"],"names":[],"mappings":";;AAGA,wCAYC;AAED,gCAEC;AAED,gCAEC;AAvBD,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAA;AACvC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;AAE7C,SAAgB,cAAc,CAAC,GAAW;IACtC,uCAAuC;IACvC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAA;IAElB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK;YAAE,CAAC,EAAE,CAAA;aAChC,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,MAAM;YAAE,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM;YAAE,CAAC,EAAE,CAAA,CAAC,kBAAkB;IAChE,CAAC;IAED,OAAO,CAAC,CAAA;AACZ,CAAC;AAED,SAAgB,UAAU,CAAC,GAAe;IACtC,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACpC,CAAC;AAED,SAAgB,UAAU,CAAC,GAAW;IAClC,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACpC,CAAC","sourcesContent":["const sharedEncoder = new TextEncoder()\nconst sharedDecoder = new TextDecoder('utf8')\n\nexport function utf8ByteLength(str: string): number {\n // https://stackoverflow.com/a/23329386\n let s = str.length\n\n for (let i = str.length - 1; i >= 0; i--) {\n const code = str.charCodeAt(i)\n if (code > 0x7F && code <= 0x7FF) s++\n else if (code > 0x7FF && code <= 0xFFFF) s += 2\n if (code >= 0xDC00 && code <= 0xDFFF) i-- // trail surrogate\n }\n\n return s\n}\n\nexport function utf8Decode(buf: Uint8Array): string {\n return sharedDecoder.decode(buf)\n}\n\nexport function utf8Encode(str: string): Uint8Array {\n return sharedEncoder.encode(str)\n}\n"]}
|
package/cjs/crypto.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { IAesCtr, ICryptoProvider, IEncryptionScheme } from '@mtcute/core/utils.js';
|
|
2
|
+
import { BaseCryptoProvider } from '@mtcute/core/utils.js';
|
|
3
|
+
import type { WasmInitInput } from './wasm.js';
|
|
3
4
|
export interface WebCryptoProviderOptions {
|
|
4
5
|
crypto?: Crypto;
|
|
5
6
|
wasmInput?: WasmInitInput;
|
package/cjs/crypto.js
CHANGED
|
@@ -21,14 +21,14 @@ class WebCryptoProvider extends utils_js_1.BaseCryptoProvider {
|
|
|
21
21
|
createAesCtr(key, iv) {
|
|
22
22
|
const ctx = (0, wasm_1.createCtr256)(key, iv);
|
|
23
23
|
return {
|
|
24
|
-
process:
|
|
24
|
+
process: data => (0, wasm_1.ctr256)(ctx, data),
|
|
25
25
|
close: () => (0, wasm_1.freeCtr256)(ctx),
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
createAesIge(key, iv) {
|
|
29
29
|
return {
|
|
30
|
-
encrypt:
|
|
31
|
-
decrypt:
|
|
30
|
+
encrypt: data => (0, wasm_1.ige256Encrypt)(data, key, iv),
|
|
31
|
+
decrypt: data => (0, wasm_1.ige256Decrypt)(data, key, iv),
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
gzip(data, maxSize) {
|
|
@@ -58,7 +58,7 @@ class WebCryptoProvider extends utils_js_1.BaseCryptoProvider {
|
|
|
58
58
|
iterations,
|
|
59
59
|
hash: algo ? ALGO_TO_SUBTLE[algo] : 'SHA-512',
|
|
60
60
|
}, keyMaterial, (keylen || 64) * 8)
|
|
61
|
-
.then(
|
|
61
|
+
.then(result => new Uint8Array(result));
|
|
62
62
|
}
|
|
63
63
|
async hmacSha256(data, key) {
|
|
64
64
|
const keyMaterial = await this.crypto.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);
|
package/cjs/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IAesCtr, ICryptoProvider, IEncryptionScheme } from '@mtcute/core/utils.js'\nimport { BaseCryptoProvider } from '@mtcute/core/utils.js'\nimport {\n createCtr256,\n ctr256,\n deflateMaxSize,\n freeCtr256,\n gunzip,\n ige256Decrypt,\n ige256Encrypt,\n initSync,\n sha1,\n sha256,\n} from '@mtcute/wasm'\n\nimport type { WasmInitInput } from './wasm.js'\nimport { loadWasmBinary } from './wasm.js'\n\nconst ALGO_TO_SUBTLE: Record<string, string> = {\n sha256: 'SHA-256',\n sha1: 'SHA-1',\n sha512: 'SHA-512',\n}\n\nexport interface WebCryptoProviderOptions {\n crypto?: Crypto\n wasmInput?: WasmInitInput\n}\n\nexport class WebCryptoProvider extends BaseCryptoProvider implements ICryptoProvider {\n readonly crypto: Crypto\n private _wasmInput?: WasmInitInput\n\n sha1(data: Uint8Array): Uint8Array {\n return sha1(data)\n }\n\n sha256(data: Uint8Array): Uint8Array {\n return sha256(data)\n }\n\n createAesCtr(key: Uint8Array, iv: Uint8Array): IAesCtr {\n const ctx = createCtr256(key, iv)\n\n return {\n process: data => ctr256(ctx, data),\n close: () => freeCtr256(ctx),\n }\n }\n\n createAesIge(key: Uint8Array, iv: Uint8Array): IEncryptionScheme {\n return {\n encrypt: data => ige256Encrypt(data, key, iv),\n decrypt: data => ige256Decrypt(data, key, iv),\n }\n }\n\n gzip(data: Uint8Array, maxSize: number): Uint8Array | null {\n return deflateMaxSize(data, maxSize)\n }\n\n gunzip(data: Uint8Array): Uint8Array {\n return gunzip(data)\n }\n\n constructor(params?: WebCryptoProviderOptions) {\n super()\n const crypto = params?.crypto ?? globalThis.crypto\n\n if (!crypto || !crypto.subtle) {\n throw new Error('WebCrypto is not available')\n }\n this.crypto = crypto\n this._wasmInput = params?.wasmInput\n }\n\n async initialize(): Promise<void> {\n initSync(await loadWasmBinary(this._wasmInput))\n }\n\n async pbkdf2(\n password: Uint8Array,\n salt: Uint8Array,\n iterations: number,\n keylen?: number | undefined,\n algo?: string | undefined,\n ): Promise<Uint8Array> {\n const keyMaterial = await this.crypto.subtle.importKey('raw', password, 'PBKDF2', false, ['deriveBits'])\n\n return this.crypto.subtle\n .deriveBits(\n {\n name: 'PBKDF2',\n salt,\n iterations,\n hash: algo ? ALGO_TO_SUBTLE[algo] : 'SHA-512',\n },\n keyMaterial,\n (keylen || 64) * 8,\n )\n .then(result => new Uint8Array(result))\n }\n\n async hmacSha256(data: Uint8Array, key: Uint8Array): Promise<Uint8Array> {\n const keyMaterial = await this.crypto.subtle.importKey(\n 'raw',\n key,\n { name: 'HMAC', hash: { name: 'SHA-256' } },\n false,\n ['sign'],\n )\n\n const res = await this.crypto.subtle.sign({ name: 'HMAC' }, keyMaterial, data)\n\n return new Uint8Array(res)\n }\n\n randomFill(buf: Uint8Array): void {\n this.crypto.getRandomValues(buf)\n }\n}\n"]}
|
package/cjs/exit-hook.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.beforeExit =
|
|
3
|
+
exports.beforeExit = beforeExit;
|
|
4
4
|
const callbacks = new Set();
|
|
5
5
|
let registered = false;
|
|
6
6
|
function beforeExit(fn) {
|
|
@@ -20,5 +20,4 @@ function beforeExit(fn) {
|
|
|
20
20
|
callbacks.delete(fn);
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
exports.beforeExit = beforeExit;
|
|
24
23
|
//# sourceMappingURL=exit-hook.js.map
|
package/cjs/exit-hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit-hook.js","sourceRoot":"","sources":["../../src/exit-hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exit-hook.js","sourceRoot":"","sources":["../../src/exit-hook.ts"],"names":[],"mappings":";;AAIA,gCAmBC;AAvBD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;AAEvC,IAAI,UAAU,GAAG,KAAK,CAAA;AAEtB,SAAgB,UAAU,CAAC,EAAc;IACrC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACnB,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,UAAU,GAAG,IAAI,CAAA;QAEjB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,GAAG,EAAE;YACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAC/B,QAAQ,EAAE,CAAA;YACd,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEjB,OAAO,GAAG,EAAE;QACR,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC,CAAA;AACL,CAAC","sourcesContent":["const callbacks = new Set<() => void>()\n\nlet registered = false\n\nexport function beforeExit(fn: () => void): () => void {\n if (typeof window === 'undefined') {\n return () => {}\n }\n if (!registered) {\n registered = true\n\n window.addEventListener('beforeunload', () => {\n for (const callback of callbacks) {\n callback()\n }\n })\n }\n\n callbacks.add(fn)\n\n return () => {\n callbacks.delete(fn)\n }\n}\n"]}
|
package/cjs/idb/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/idb/driver.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseStorageDriver, MtUnsupportedError } from '@mtcute/core'\n\nimport { txToPromise } from './utils.js'\n\nexport type PostMigrationFunction = (db: IDBDatabase) => Promise<void>\ntype MigrationFunction = (db: IDBDatabase) => void | PostMigrationFunction\n\nconst REPO_VERSION_PREFIX = '__version:'\n\nexport class IdbStorageDriver extends BaseStorageDriver {\n db!: IDBDatabase\n\n constructor(readonly _dbName: string) {\n super()\n\n if (typeof indexedDB === 'undefined') {\n throw new MtUnsupportedError('IndexedDB is not available')\n }\n }\n\n private _pendingWrites: [string, unknown][] = []\n private _pendingWritesOses = new Set<string>()\n private _migrations: Map<string, Map<number, MigrationFunction>> = new Map()\n private _maxVersion: Map<string, number> = new Map()\n\n registerMigration(repo: string, version: number, migration: MigrationFunction): void {\n if (this.loaded) {\n throw new Error('Cannot register migrations after loading')\n }\n\n let map = this._migrations.get(repo)\n\n if (!map) {\n map = new Map()\n this._migrations.set(repo, map)\n }\n\n if (map.has(version)) {\n throw new Error(`Migration for ${repo} version ${version} is already registered`)\n }\n\n map.set(version, migration)\n\n const prevMax = this._maxVersion.get(repo) ?? 0\n\n if (version > prevMax) {\n this._maxVersion.set(repo, version)\n }\n }\n\n writeLater(os: string, obj: unknown): void {\n this._pendingWrites.push([os, obj])\n this._pendingWritesOses.add(os)\n }\n\n async _load(): Promise<void> {\n this.db = await new Promise((resolve, reject) => {\n // indexed db fucking sucks - we can't create tables once we have loaded\n // and making an ever-incrementing version number is pretty hard\n // since migrations are added dynamically.\n //\n // force the database to always emit `upgradeneeded` by passing current time\n const req = indexedDB.open(this._dbName, Date.now())\n\n req.onerror = () => reject(req.error)\n\n const postUpgrade: PostMigrationFunction[] = []\n\n req.onsuccess = async () => {\n try {\n for (const cb of postUpgrade) {\n await cb(req.result)\n }\n resolve(req.result)\n } catch (e) {\n reject(e)\n }\n }\n req.onupgradeneeded = () => {\n // indexed db still fucking sucks. we can't fetch anything from here,\n // since migrations must be sync, and any fetch is inherently async\n // what we do have, however, is the list of object stores.\n // we can abuse them to store the current migrations status as plain strings\n const db = req.result\n\n const didUpgrade = new Set<string>()\n\n const doUpgrade = (repo: string, fromVersion: number) => {\n const migrations = this._migrations.get(repo)\n if (!migrations) return\n\n const targetVer = this._maxVersion.get(repo)!\n\n while (fromVersion < targetVer) {\n const nextVersion = fromVersion + 1\n const migration = migrations.get(nextVersion)\n\n if (!migration) {\n throw new Error(`No migration for ${repo} to version ${nextVersion}`)\n }\n\n const result = migration(db)\n\n if (result) {\n // guess what? IDB still. fucking. sucks!\n // if we want to do something except creating/removing\n // databases, we should do this outside of migration\n postUpgrade.push(result)\n }\n\n fromVersion = nextVersion\n }\n\n didUpgrade.add(repo)\n db.createObjectStore(`${REPO_VERSION_PREFIX}${repo}:${targetVer}`)\n }\n\n for (const key of db.objectStoreNames) {\n if (!key.startsWith(REPO_VERSION_PREFIX)) continue\n const [, repo, version] = key.split(':')\n\n const currentVer = Number(version)\n db.deleteObjectStore(key)\n doUpgrade(repo, currentVer)\n didUpgrade.add(repo)\n }\n\n for (const repo of this._migrations.keys()) {\n if (didUpgrade.has(repo)) continue\n\n doUpgrade(repo, 0)\n }\n }\n })\n }\n\n async _save() {\n if (this._pendingWritesOses.size === 0) return\n\n const writes = this._pendingWrites\n const oses = this._pendingWritesOses\n this._pendingWrites = []\n this._pendingWritesOses = new Set()\n\n const tx = this.db.transaction(oses, 'readwrite')\n\n const osMap = new Map<string, IDBObjectStore>()\n\n for (const table of oses) {\n osMap.set(table, tx.objectStore(table))\n }\n\n for (const [table, obj] of writes) {\n const os = osMap.get(table)!\n\n if (obj === null) {\n os.delete(table)\n } else {\n os.put(obj)\n }\n }\n\n await txToPromise(tx)\n }\n\n _destroy(): void {\n this.db.close()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/idb/driver.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseStorageDriver, MtUnsupportedError } from '@mtcute/core'\n\nimport { txToPromise } from './utils.js'\n\nexport type PostMigrationFunction = (db: IDBDatabase) => Promise<void>\ntype MigrationFunction = (db: IDBDatabase) => void | PostMigrationFunction\n\nconst REPO_VERSION_PREFIX = '__version:'\n\nexport class IdbStorageDriver extends BaseStorageDriver {\n db!: IDBDatabase\n\n constructor(readonly _dbName: string) {\n super()\n\n if (typeof indexedDB === 'undefined') {\n throw new MtUnsupportedError('IndexedDB is not available')\n }\n }\n\n private _pendingWrites: [string, unknown][] = []\n private _pendingWritesOses = new Set<string>()\n private _migrations: Map<string, Map<number, MigrationFunction>> = new Map()\n private _maxVersion: Map<string, number> = new Map()\n\n registerMigration(repo: string, version: number, migration: MigrationFunction): void {\n if (this.loaded) {\n throw new Error('Cannot register migrations after loading')\n }\n\n let map = this._migrations.get(repo)\n\n if (!map) {\n map = new Map()\n this._migrations.set(repo, map)\n }\n\n if (map.has(version)) {\n throw new Error(`Migration for ${repo} version ${version} is already registered`)\n }\n\n map.set(version, migration)\n\n const prevMax = this._maxVersion.get(repo) ?? 0\n\n if (version > prevMax) {\n this._maxVersion.set(repo, version)\n }\n }\n\n writeLater(os: string, obj: unknown): void {\n this._pendingWrites.push([os, obj])\n this._pendingWritesOses.add(os)\n }\n\n async _load(): Promise<void> {\n this.db = await new Promise((resolve, reject) => {\n // indexed db fucking sucks - we can't create tables once we have loaded\n // and making an ever-incrementing version number is pretty hard\n // since migrations are added dynamically.\n //\n // force the database to always emit `upgradeneeded` by passing current time\n const req = indexedDB.open(this._dbName, Date.now())\n\n req.onerror = () => reject(req.error)\n\n const postUpgrade: PostMigrationFunction[] = []\n\n req.onsuccess = async () => {\n try {\n for (const cb of postUpgrade) {\n await cb(req.result)\n }\n resolve(req.result)\n } catch (e) {\n reject(e)\n }\n }\n req.onupgradeneeded = () => {\n // indexed db still fucking sucks. we can't fetch anything from here,\n // since migrations must be sync, and any fetch is inherently async\n // what we do have, however, is the list of object stores.\n // we can abuse them to store the current migrations status as plain strings\n const db = req.result\n\n const didUpgrade = new Set<string>()\n\n const doUpgrade = (repo: string, fromVersion: number) => {\n const migrations = this._migrations.get(repo)\n if (!migrations) return\n\n const targetVer = this._maxVersion.get(repo)!\n\n while (fromVersion < targetVer) {\n const nextVersion = fromVersion + 1\n const migration = migrations.get(nextVersion)\n\n if (!migration) {\n throw new Error(`No migration for ${repo} to version ${nextVersion}`)\n }\n\n const result = migration(db)\n\n if (result) {\n // guess what? IDB still. fucking. sucks!\n // if we want to do something except creating/removing\n // databases, we should do this outside of migration\n postUpgrade.push(result)\n }\n\n fromVersion = nextVersion\n }\n\n didUpgrade.add(repo)\n db.createObjectStore(`${REPO_VERSION_PREFIX}${repo}:${targetVer}`)\n }\n\n for (const key of db.objectStoreNames) {\n if (!key.startsWith(REPO_VERSION_PREFIX)) continue\n const [, repo, version] = key.split(':')\n\n const currentVer = Number(version)\n db.deleteObjectStore(key)\n doUpgrade(repo, currentVer)\n didUpgrade.add(repo)\n }\n\n for (const repo of this._migrations.keys()) {\n if (didUpgrade.has(repo)) continue\n\n doUpgrade(repo, 0)\n }\n }\n })\n }\n\n async _save(): Promise<void> {\n if (this._pendingWritesOses.size === 0) return\n\n const writes = this._pendingWrites\n const oses = this._pendingWritesOses\n this._pendingWrites = []\n this._pendingWritesOses = new Set()\n\n const tx = this.db.transaction(oses, 'readwrite')\n\n const osMap = new Map<string, IDBObjectStore>()\n\n for (const table of oses) {\n osMap.set(table, tx.objectStore(table))\n }\n\n for (const [table, obj] of writes) {\n const os = osMap.get(table)!\n\n if (obj === null) {\n os.delete(table)\n } else {\n os.put(obj)\n }\n }\n\n await txToPromise(tx)\n }\n\n _destroy(): void {\n this.db.close()\n }\n}\n"]}
|
package/cjs/idb/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IMtStorageProvider } from '@mtcute/core';
|
|
1
|
+
import type { IMtStorageProvider } from '@mtcute/core';
|
|
2
2
|
import { IdbStorageDriver } from './driver.js';
|
|
3
3
|
import { IdbAuthKeysRepository } from './repository/auth-keys.js';
|
|
4
4
|
import { IdbKvRepository } from './repository/kv.js';
|
package/cjs/idb/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/idb/index.ts"],"names":[],"mappings":";;;AAEA,2CAA8C;AAC9C,4DAAiE;AACjE,8CAAoD;AACpD,oDAA0D;AAC1D,kEAAkE;AAElE,yCAA8C;AAArC,6GAAA,gBAAgB,OAAA;AAEzB;;;;;GAKG;AACH,MAAa,UAAU;IAOE;IANZ,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/idb/index.ts"],"names":[],"mappings":";;;AAEA,2CAA8C;AAC9C,4DAAiE;AACjE,8CAAoD;AACpD,oDAA0D;AAC1D,kEAAkE;AAElE,yCAA8C;AAArC,6GAAA,gBAAgB,OAAA;AAEzB;;;;;GAKG;AACH,MAAa,UAAU;IAOE;IANZ,MAAM,CAAkB;IACxB,EAAE,CAAiB;IACnB,QAAQ,CAAuB;IAC/B,KAAK,CAAoB;IACzB,WAAW,CAAqB;IAEzC,YAAqB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,EAAE,GAAG,IAAI,uBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,oCAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,qCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;CACJ;AAdD,gCAcC","sourcesContent":["import type { IMtStorageProvider } from '@mtcute/core'\n\nimport { IdbStorageDriver } from './driver.js'\nimport { IdbAuthKeysRepository } from './repository/auth-keys.js'\nimport { IdbKvRepository } from './repository/kv.js'\nimport { IdbPeersRepository } from './repository/peers.js'\nimport { IdbRefMsgRepository } from './repository/ref-messages.js'\n\nexport { IdbStorageDriver } from './driver.js'\n\n/**\n * mtcute storage that uses IndexedDB as a backend.\n *\n * This storage is the default one for browsers, and is generally\n * recommended over local storage based one.\n */\nexport class IdbStorage implements IMtStorageProvider {\n readonly driver: IdbStorageDriver\n readonly kv: IdbKvRepository\n readonly authKeys: IdbAuthKeysRepository\n readonly peers: IdbPeersRepository\n readonly refMessages: IdbRefMsgRepository\n\n constructor(readonly dbName: string) {\n this.driver = new IdbStorageDriver(this.dbName)\n this.kv = new IdbKvRepository(this.driver)\n this.authKeys = new IdbAuthKeysRepository(this.driver)\n this.peers = new IdbPeersRepository(this.driver)\n this.refMessages = new IdbRefMsgRepository(this.driver)\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IAuthKeysRepository } from '@mtcute/core';
|
|
2
|
-
import { IdbStorageDriver } from '../driver.js';
|
|
1
|
+
import type { IAuthKeysRepository } from '@mtcute/core';
|
|
2
|
+
import type { IdbStorageDriver } from '../driver.js';
|
|
3
3
|
export declare class IdbAuthKeysRepository implements IAuthKeysRepository {
|
|
4
4
|
readonly _driver: IdbStorageDriver;
|
|
5
5
|
constructor(_driver: IdbStorageDriver);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-keys.js","sourceRoot":"","sources":["../../../../src/idb/repository/auth-keys.ts"],"names":[],"mappings":"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","sourcesContent":["import { IAuthKeysRepository } from '@mtcute/core'\n\nimport { IdbStorageDriver } from '../driver.js'\nimport { reqToPromise, txToPromise } from '../utils.js'\n\nconst TABLE_AUTH_KEYS = 'authKeys'\nconst TABLE_TEMP_AUTH_KEYS = 'tempAuthKeys'\n\ninterface AuthKeyDto {\n dc: number\n key: Uint8Array\n}\ninterface TempAuthKeyDto extends AuthKeyDto {\n expiresAt?: number\n idx?: number\n}\n\nexport class IdbAuthKeysRepository implements IAuthKeysRepository {\n constructor(readonly _driver: IdbStorageDriver) {\n _driver.registerMigration(TABLE_AUTH_KEYS, 1, (db) => {\n db.createObjectStore(TABLE_AUTH_KEYS, { keyPath: 'dc' })\n db.createObjectStore(TABLE_TEMP_AUTH_KEYS, { keyPath: ['dc', 'idx'] })\n })\n }\n\n private os(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(TABLE_AUTH_KEYS, mode).objectStore(TABLE_AUTH_KEYS)\n }\n\n async set(dc: number, key: Uint8Array | null): Promise<void> {\n const os = this.os('readwrite')\n\n if (key === null) {\n return reqToPromise(os.delete(dc))\n }\n\n await reqToPromise(os.put({ dc, key } satisfies AuthKeyDto))\n }\n\n async get(dc: number): Promise<Uint8Array | null> {\n const os = this.os()\n\n const it = await reqToPromise<AuthKeyDto>(os.get(dc) as IDBRequest<AuthKeyDto>)\n if (it === undefined) return null\n\n return it.key\n }\n\n private osTemp(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(TABLE_TEMP_AUTH_KEYS, mode).objectStore(TABLE_TEMP_AUTH_KEYS)\n }\n\n async setTemp(dc: number, idx: number, key: Uint8Array | null, expires: number): Promise<void> {\n const os = this.osTemp('readwrite')\n\n if (!key) {\n return reqToPromise(os.delete([dc, idx]))\n }\n\n await reqToPromise(os.put({ dc, idx, key, expiresAt: expires } satisfies TempAuthKeyDto))\n }\n\n async getTemp(dc: number, idx: number, now: number): Promise<Uint8Array | null> {\n const os = this.osTemp()\n const row = await reqToPromise<TempAuthKeyDto>(os.get([dc, idx]) as IDBRequest<TempAuthKeyDto>)\n\n if (row === undefined || row.expiresAt! < now) return null\n\n return row.key\n }\n\n async deleteByDc(dc: number): Promise<void> {\n const tx = this._driver.db.transaction([TABLE_AUTH_KEYS, TABLE_TEMP_AUTH_KEYS], 'readwrite')\n\n tx.objectStore(TABLE_AUTH_KEYS).delete(dc)\n\n // IndexedDB sucks\n const tempOs = tx.objectStore(TABLE_TEMP_AUTH_KEYS)\n const keys = await reqToPromise(tempOs.getAllKeys())\n\n for (const key of keys) {\n if ((key as [number, number])[0] === dc) {\n tempOs.delete(key)\n }\n }\n\n await txToPromise(tx)\n }\n\n deleteAll(): Promise<void> {\n const tx = this._driver.db.transaction([TABLE_AUTH_KEYS, TABLE_TEMP_AUTH_KEYS], 'readwrite')\n tx.objectStore(TABLE_AUTH_KEYS).clear()\n tx.objectStore(TABLE_TEMP_AUTH_KEYS).clear()\n\n return txToPromise(tx)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"auth-keys.js","sourceRoot":"","sources":["../../../../src/idb/repository/auth-keys.ts"],"names":[],"mappings":";;;AAGA,0CAAuD;AAEvD,MAAM,eAAe,GAAG,UAAU,CAAA;AAClC,MAAM,oBAAoB,GAAG,cAAc,CAAA;AAW3C,MAAa,qBAAqB;IACT;IAArB,YAAqB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAC1C,OAAO,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YACjD,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACxD,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,EAAE,CAAC,IAAyB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,GAAsB;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;QAE/B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,IAAA,uBAAY,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,CAAC;QAED,MAAM,IAAA,uBAAY,EAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAuB,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QAEpB,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAY,EAAa,EAAE,CAAC,GAAG,CAAC,EAAE,CAA2B,CAAC,CAAA;QAC/E,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEjC,OAAO,EAAE,CAAC,GAAG,CAAA;IACjB,CAAC;IAEO,MAAM,CAAC,IAAyB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAA;IACpG,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,GAAW,EAAE,GAAsB,EAAE,OAAe;QAC1E,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEnC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAA,uBAAY,EAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,IAAA,uBAAY,EAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAA2B,CAAC,CAAC,CAAA;IAC7F,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,GAAW,EAAE,GAAW;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QACxB,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAY,EAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAA+B,CAAC,CAAA;QAE/F,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,SAAU,GAAG,GAAG;YAAE,OAAO,IAAI,CAAA;QAE1D,OAAO,GAAG,CAAC,GAAG,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAAE,WAAW,CAAC,CAAA;QAE5F,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAE1C,kBAAkB;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;QAEpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAK,GAAwB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACtB,CAAC;QACL,CAAC;QAED,MAAM,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAA;IACzB,CAAC;IAED,SAAS;QACL,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAAE,WAAW,CAAC,CAAA;QAC5F,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAA;QACvC,EAAE,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAA;QAE5C,OAAO,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;CACJ;AA/ED,sDA+EC","sourcesContent":["import type { IAuthKeysRepository } from '@mtcute/core'\n\nimport type { IdbStorageDriver } from '../driver.js'\nimport { reqToPromise, txToPromise } from '../utils.js'\n\nconst TABLE_AUTH_KEYS = 'authKeys'\nconst TABLE_TEMP_AUTH_KEYS = 'tempAuthKeys'\n\ninterface AuthKeyDto {\n dc: number\n key: Uint8Array\n}\ninterface TempAuthKeyDto extends AuthKeyDto {\n expiresAt?: number\n idx?: number\n}\n\nexport class IdbAuthKeysRepository implements IAuthKeysRepository {\n constructor(readonly _driver: IdbStorageDriver) {\n _driver.registerMigration(TABLE_AUTH_KEYS, 1, (db) => {\n db.createObjectStore(TABLE_AUTH_KEYS, { keyPath: 'dc' })\n db.createObjectStore(TABLE_TEMP_AUTH_KEYS, { keyPath: ['dc', 'idx'] })\n })\n }\n\n private os(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(TABLE_AUTH_KEYS, mode).objectStore(TABLE_AUTH_KEYS)\n }\n\n async set(dc: number, key: Uint8Array | null): Promise<void> {\n const os = this.os('readwrite')\n\n if (key === null) {\n return reqToPromise(os.delete(dc))\n }\n\n await reqToPromise(os.put({ dc, key } satisfies AuthKeyDto))\n }\n\n async get(dc: number): Promise<Uint8Array | null> {\n const os = this.os()\n\n const it = await reqToPromise<AuthKeyDto>(os.get(dc) as IDBRequest<AuthKeyDto>)\n if (it === undefined) return null\n\n return it.key\n }\n\n private osTemp(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(TABLE_TEMP_AUTH_KEYS, mode).objectStore(TABLE_TEMP_AUTH_KEYS)\n }\n\n async setTemp(dc: number, idx: number, key: Uint8Array | null, expires: number): Promise<void> {\n const os = this.osTemp('readwrite')\n\n if (!key) {\n return reqToPromise(os.delete([dc, idx]))\n }\n\n await reqToPromise(os.put({ dc, idx, key, expiresAt: expires } satisfies TempAuthKeyDto))\n }\n\n async getTemp(dc: number, idx: number, now: number): Promise<Uint8Array | null> {\n const os = this.osTemp()\n const row = await reqToPromise<TempAuthKeyDto>(os.get([dc, idx]) as IDBRequest<TempAuthKeyDto>)\n\n if (row === undefined || row.expiresAt! < now) return null\n\n return row.key\n }\n\n async deleteByDc(dc: number): Promise<void> {\n const tx = this._driver.db.transaction([TABLE_AUTH_KEYS, TABLE_TEMP_AUTH_KEYS], 'readwrite')\n\n tx.objectStore(TABLE_AUTH_KEYS).delete(dc)\n\n // IndexedDB sucks\n const tempOs = tx.objectStore(TABLE_TEMP_AUTH_KEYS)\n const keys = await reqToPromise(tempOs.getAllKeys())\n\n for (const key of keys) {\n if ((key as [number, number])[0] === dc) {\n tempOs.delete(key)\n }\n }\n\n await txToPromise(tx)\n }\n\n deleteAll(): Promise<void> {\n const tx = this._driver.db.transaction([TABLE_AUTH_KEYS, TABLE_TEMP_AUTH_KEYS], 'readwrite')\n tx.objectStore(TABLE_AUTH_KEYS).clear()\n tx.objectStore(TABLE_TEMP_AUTH_KEYS).clear()\n\n return txToPromise(tx)\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IKeyValueRepository } from '@mtcute/core';
|
|
2
|
-
import { IdbStorageDriver } from '../driver.js';
|
|
1
|
+
import type { IKeyValueRepository } from '@mtcute/core';
|
|
2
|
+
import type { IdbStorageDriver } from '../driver.js';
|
|
3
3
|
export declare class IdbKvRepository implements IKeyValueRepository {
|
|
4
4
|
readonly _driver: IdbStorageDriver;
|
|
5
5
|
constructor(_driver: IdbStorageDriver);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kv.js","sourceRoot":"","sources":["../../../../src/idb/repository/kv.ts"],"names":[],"mappings":";;;AAGA,0CAA0C;AAE1C,MAAM,QAAQ,GAAG,IAAI,CAAA;AAMrB,MAAa,eAAe;IACH;IAArB,YAAqB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAC1C,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YAC1C,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAiB;QAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAwB,CAAC,CAAA;IAC3E,CAAC;IAEO,EAAE,CAAC,IAAyB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QACpB,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAY,EAAc,EAAE,CAAC,GAAG,CAAC,GAAG,CAA4B,CAAC,CAAA;QACnF,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAElC,OAAO,GAAG,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACpB,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACpD,CAAC;CACJ;AA9BD,0CA8BC","sourcesContent":["import { IKeyValueRepository } from '@mtcute/core'\n\nimport { IdbStorageDriver } from '../driver.js'\nimport { reqToPromise } from '../utils.js'\n\nconst KV_TABLE = 'kv'\ninterface KeyValueDto {\n key: string\n value: Uint8Array\n}\n\nexport class IdbKvRepository implements IKeyValueRepository {\n constructor(readonly _driver: IdbStorageDriver) {\n _driver.registerMigration(KV_TABLE, 1, (db) => {\n db.createObjectStore(KV_TABLE, { keyPath: 'key' })\n })\n }\n\n set(key: string, value: Uint8Array): void {\n this._driver.writeLater(KV_TABLE, { key, value } satisfies KeyValueDto)\n }\n\n private os(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(KV_TABLE, mode).objectStore(KV_TABLE)\n }\n\n async get(key: string): Promise<Uint8Array | null> {\n const os = this.os()\n const res = await reqToPromise<KeyValueDto>(os.get(key) as IDBRequest<KeyValueDto>)\n if (res === undefined) return null\n\n return res.value\n }\n\n async delete(key: string): Promise<void> {\n await reqToPromise(this.os('readwrite').delete(key))\n }\n\n async deleteAll(): Promise<void> {\n await reqToPromise(this.os('readwrite').clear())\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"kv.js","sourceRoot":"","sources":["../../../../src/idb/repository/kv.ts"],"names":[],"mappings":";;;AAGA,0CAA0C;AAE1C,MAAM,QAAQ,GAAG,IAAI,CAAA;AAMrB,MAAa,eAAe;IACH;IAArB,YAAqB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAC1C,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YAC1C,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAiB;QAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAwB,CAAC,CAAA;IAC3E,CAAC;IAEO,EAAE,CAAC,IAAyB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QACpB,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAY,EAAc,EAAE,CAAC,GAAG,CAAC,GAAG,CAA4B,CAAC,CAAA;QACnF,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAElC,OAAO,GAAG,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACpB,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACpD,CAAC;CACJ;AA9BD,0CA8BC","sourcesContent":["import type { IKeyValueRepository } from '@mtcute/core'\n\nimport type { IdbStorageDriver } from '../driver.js'\nimport { reqToPromise } from '../utils.js'\n\nconst KV_TABLE = 'kv'\ninterface KeyValueDto {\n key: string\n value: Uint8Array\n}\n\nexport class IdbKvRepository implements IKeyValueRepository {\n constructor(readonly _driver: IdbStorageDriver) {\n _driver.registerMigration(KV_TABLE, 1, (db) => {\n db.createObjectStore(KV_TABLE, { keyPath: 'key' })\n })\n }\n\n set(key: string, value: Uint8Array): void {\n this._driver.writeLater(KV_TABLE, { key, value } satisfies KeyValueDto)\n }\n\n private os(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(KV_TABLE, mode).objectStore(KV_TABLE)\n }\n\n async get(key: string): Promise<Uint8Array | null> {\n const os = this.os()\n const res = await reqToPromise<KeyValueDto>(os.get(key) as IDBRequest<KeyValueDto>)\n if (res === undefined) return null\n\n return res.value\n }\n\n async delete(key: string): Promise<void> {\n await reqToPromise(this.os('readwrite').delete(key))\n }\n\n async deleteAll(): Promise<void> {\n await reqToPromise(this.os('readwrite').clear())\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IPeersRepository } from '@mtcute/core';
|
|
2
|
-
import { IdbStorageDriver } from '../driver.js';
|
|
1
|
+
import type { IPeersRepository } from '@mtcute/core';
|
|
2
|
+
import type { IdbStorageDriver } from '../driver.js';
|
|
3
3
|
export declare class IdbPeersRepository implements IPeersRepository {
|
|
4
4
|
readonly _driver: IdbStorageDriver;
|
|
5
5
|
constructor(_driver: IdbStorageDriver);
|