@mtcute/web 0.16.6 → 0.16.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +4 -4
  2. package/{cjs/client.d.ts → client.d.ts} +1 -1
  3. package/{esm/crypto.d.ts → crypto.d.ts} +1 -1
  4. package/idb/idb.test.d.ts +1 -0
  5. package/index.cjs +961 -0
  6. package/index.d.ts +7 -1
  7. package/index.js +951 -1
  8. package/methods.cjs +14 -0
  9. package/methods.d.ts +1 -1
  10. package/methods.js +1 -1
  11. package/package.json +56 -40
  12. package/utils.cjs +14 -0
  13. package/utils.d.ts +1 -1
  14. package/utils.js +1 -1
  15. package/{esm/websocket.d.ts → websocket.d.ts} +3 -3
  16. package/websocket.test.d.ts +1 -0
  17. package/{cjs/worker.d.ts → worker.d.ts} +1 -1
  18. package/cjs/client.js +0 -41
  19. package/cjs/client.js.map +0 -1
  20. package/cjs/common-internals-web/base64.js +0 -112
  21. package/cjs/common-internals-web/base64.js.map +0 -1
  22. package/cjs/common-internals-web/hex.js +0 -69
  23. package/cjs/common-internals-web/hex.js.map +0 -1
  24. package/cjs/common-internals-web/logging.js +0 -35
  25. package/cjs/common-internals-web/logging.js.map +0 -1
  26. package/cjs/common-internals-web/utf8.js +0 -29
  27. package/cjs/common-internals-web/utf8.js.map +0 -1
  28. package/cjs/crypto.d.ts +0 -21
  29. package/cjs/crypto.js +0 -73
  30. package/cjs/crypto.js.map +0 -1
  31. package/cjs/exit-hook.js +0 -24
  32. package/cjs/exit-hook.js.map +0 -1
  33. package/cjs/idb/driver.js +0 -139
  34. package/cjs/idb/driver.js.map +0 -1
  35. package/cjs/idb/index.js +0 -34
  36. package/cjs/idb/index.js.map +0 -1
  37. package/cjs/idb/repository/auth-keys.js +0 -71
  38. package/cjs/idb/repository/auth-keys.js.map +0 -1
  39. package/cjs/idb/repository/kv.js +0 -35
  40. package/cjs/idb/repository/kv.js.map +0 -1
  41. package/cjs/idb/repository/peers.js +0 -39
  42. package/cjs/idb/repository/peers.js.map +0 -1
  43. package/cjs/idb/repository/ref-messages.js +0 -62
  44. package/cjs/idb/repository/ref-messages.js.map +0 -1
  45. package/cjs/idb/utils.js +0 -18
  46. package/cjs/idb/utils.js.map +0 -1
  47. package/cjs/index.js +0 -30
  48. package/cjs/index.js.map +0 -1
  49. package/cjs/methods.js +0 -24
  50. package/cjs/methods.js.map +0 -1
  51. package/cjs/package.json +0 -3
  52. package/cjs/platform.js +0 -49
  53. package/cjs/platform.js.map +0 -1
  54. package/cjs/utils.js +0 -24
  55. package/cjs/utils.js.map +0 -1
  56. package/cjs/wasm.js +0 -36
  57. package/cjs/wasm.js.map +0 -1
  58. package/cjs/websocket.d.ts +0 -46
  59. package/cjs/websocket.js +0 -132
  60. package/cjs/websocket.js.map +0 -1
  61. package/cjs/worker.js +0 -129
  62. package/cjs/worker.js.map +0 -1
  63. package/esm/client.d.ts +0 -30
  64. package/esm/client.js +0 -36
  65. package/esm/client.js.map +0 -1
  66. package/esm/common-internals-web/base64.d.ts +0 -2
  67. package/esm/common-internals-web/base64.js +0 -107
  68. package/esm/common-internals-web/base64.js.map +0 -1
  69. package/esm/common-internals-web/hex.d.ts +0 -2
  70. package/esm/common-internals-web/hex.js +0 -64
  71. package/esm/common-internals-web/hex.js.map +0 -1
  72. package/esm/common-internals-web/logging.d.ts +0 -2
  73. package/esm/common-internals-web/logging.js +0 -31
  74. package/esm/common-internals-web/logging.js.map +0 -1
  75. package/esm/common-internals-web/utf8.d.ts +0 -3
  76. package/esm/common-internals-web/utf8.js +0 -23
  77. package/esm/common-internals-web/utf8.js.map +0 -1
  78. package/esm/crypto.js +0 -69
  79. package/esm/crypto.js.map +0 -1
  80. package/esm/exit-hook.d.ts +0 -1
  81. package/esm/exit-hook.js +0 -20
  82. package/esm/exit-hook.js.map +0 -1
  83. package/esm/idb/driver.d.ts +0 -18
  84. package/esm/idb/driver.js +0 -135
  85. package/esm/idb/driver.js.map +0 -1
  86. package/esm/idb/index.d.ts +0 -22
  87. package/esm/idb/index.js +0 -29
  88. package/esm/idb/index.js.map +0 -1
  89. package/esm/idb/repository/auth-keys.d.ts +0 -14
  90. package/esm/idb/repository/auth-keys.js +0 -67
  91. package/esm/idb/repository/auth-keys.js.map +0 -1
  92. package/esm/idb/repository/kv.d.ts +0 -11
  93. package/esm/idb/repository/kv.js +0 -31
  94. package/esm/idb/repository/kv.js.map +0 -1
  95. package/esm/idb/repository/peers.d.ts +0 -12
  96. package/esm/idb/repository/peers.js +0 -35
  97. package/esm/idb/repository/peers.js.map +0 -1
  98. package/esm/idb/repository/ref-messages.d.ts +0 -12
  99. package/esm/idb/repository/ref-messages.js +0 -58
  100. package/esm/idb/repository/ref-messages.js.map +0 -1
  101. package/esm/idb/utils.d.ts +0 -2
  102. package/esm/idb/utils.js +0 -13
  103. package/esm/idb/utils.js.map +0 -1
  104. package/esm/index.d.ts +0 -7
  105. package/esm/index.js +0 -8
  106. package/esm/index.js.map +0 -1
  107. package/esm/methods.d.ts +0 -1
  108. package/esm/methods.js +0 -2
  109. package/esm/methods.js.map +0 -1
  110. package/esm/platform.d.ts +0 -21
  111. package/esm/platform.js +0 -45
  112. package/esm/platform.js.map +0 -1
  113. package/esm/utils.d.ts +0 -1
  114. package/esm/utils.js +0 -2
  115. package/esm/utils.js.map +0 -1
  116. package/esm/wasm.d.ts +0 -2
  117. package/esm/wasm.js +0 -32
  118. package/esm/wasm.js.map +0 -1
  119. package/esm/websocket.js +0 -124
  120. package/esm/websocket.js.map +0 -1
  121. package/esm/worker.d.ts +0 -10
  122. package/esm/worker.js +0 -124
  123. package/esm/worker.js.map +0 -1
  124. /package/{cjs/common-internals-web → common-internals-web}/base64.d.ts +0 -0
  125. /package/{cjs/common-internals-web → common-internals-web}/hex.d.ts +0 -0
  126. /package/{cjs/common-internals-web → common-internals-web}/logging.d.ts +0 -0
  127. /package/{cjs/common-internals-web → common-internals-web}/utf8.d.ts +0 -0
  128. /package/{cjs/exit-hook.d.ts → exit-hook.d.ts} +0 -0
  129. /package/{cjs/idb → idb}/driver.d.ts +0 -0
  130. /package/{cjs/idb → idb}/index.d.ts +0 -0
  131. /package/{cjs/idb → idb}/repository/auth-keys.d.ts +0 -0
  132. /package/{cjs/idb → idb}/repository/kv.d.ts +0 -0
  133. /package/{cjs/idb → idb}/repository/peers.d.ts +0 -0
  134. /package/{cjs/idb → idb}/repository/ref-messages.d.ts +0 -0
  135. /package/{cjs/idb → idb}/utils.d.ts +0 -0
  136. /package/{cjs/index.d.ts → index.d.cts} +0 -0
  137. /package/{cjs/methods.d.ts → methods.d.cts} +0 -0
  138. /package/{cjs/platform.d.ts → platform.d.ts} +0 -0
  139. /package/{cjs/utils.d.ts → utils.d.cts} +0 -0
  140. /package/{cjs/wasm.d.ts → wasm.d.ts} +0 -0
package/cjs/exit-hook.js DELETED
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.beforeExit = void 0;
4
- const callbacks = new Set();
5
- let registered = false;
6
- function beforeExit(fn) {
7
- if (typeof window === 'undefined') {
8
- return () => { };
9
- }
10
- if (!registered) {
11
- registered = true;
12
- window.addEventListener('beforeunload', () => {
13
- for (const callback of callbacks) {
14
- callback();
15
- }
16
- });
17
- }
18
- callbacks.add(fn);
19
- return () => {
20
- callbacks.delete(fn);
21
- };
22
- }
23
- exports.beforeExit = beforeExit;
24
- //# sourceMappingURL=exit-hook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-hook.js","sourceRoot":"","sources":["../../src/exit-hook.ts"],"names":[],"mappings":";;;AAAA,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;AAnBD,gCAmBC","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 DELETED
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdbStorageDriver = void 0;
4
- const core_1 = require("@mtcute/core");
5
- const utils_js_1 = require("./utils.js");
6
- const REPO_VERSION_PREFIX = '__version:';
7
- class IdbStorageDriver extends core_1.BaseStorageDriver {
8
- _dbName;
9
- db;
10
- constructor(_dbName) {
11
- super();
12
- this._dbName = _dbName;
13
- if (typeof indexedDB === 'undefined') {
14
- throw new core_1.MtUnsupportedError('IndexedDB is not available');
15
- }
16
- }
17
- _pendingWrites = [];
18
- _pendingWritesOses = new Set();
19
- _migrations = new Map();
20
- _maxVersion = new Map();
21
- registerMigration(repo, version, migration) {
22
- if (this.loaded) {
23
- throw new Error('Cannot register migrations after loading');
24
- }
25
- let map = this._migrations.get(repo);
26
- if (!map) {
27
- map = new Map();
28
- this._migrations.set(repo, map);
29
- }
30
- if (map.has(version)) {
31
- throw new Error(`Migration for ${repo} version ${version} is already registered`);
32
- }
33
- map.set(version, migration);
34
- const prevMax = this._maxVersion.get(repo) ?? 0;
35
- if (version > prevMax) {
36
- this._maxVersion.set(repo, version);
37
- }
38
- }
39
- writeLater(os, obj) {
40
- this._pendingWrites.push([os, obj]);
41
- this._pendingWritesOses.add(os);
42
- }
43
- async _load() {
44
- this.db = await new Promise((resolve, reject) => {
45
- // indexed db fucking sucks - we can't create tables once we have loaded
46
- // and making an ever-incrementing version number is pretty hard
47
- // since migrations are added dynamically.
48
- //
49
- // force the database to always emit `upgradeneeded` by passing current time
50
- const req = indexedDB.open(this._dbName, Date.now());
51
- req.onerror = () => reject(req.error);
52
- const postUpgrade = [];
53
- req.onsuccess = async () => {
54
- try {
55
- for (const cb of postUpgrade) {
56
- await cb(req.result);
57
- }
58
- resolve(req.result);
59
- }
60
- catch (e) {
61
- reject(e);
62
- }
63
- };
64
- req.onupgradeneeded = () => {
65
- // indexed db still fucking sucks. we can't fetch anything from here,
66
- // since migrations must be sync, and any fetch is inherently async
67
- // what we do have, however, is the list of object stores.
68
- // we can abuse them to store the current migrations status as plain strings
69
- const db = req.result;
70
- const didUpgrade = new Set();
71
- const doUpgrade = (repo, fromVersion) => {
72
- const migrations = this._migrations.get(repo);
73
- if (!migrations)
74
- return;
75
- const targetVer = this._maxVersion.get(repo);
76
- while (fromVersion < targetVer) {
77
- const nextVersion = fromVersion + 1;
78
- const migration = migrations.get(nextVersion);
79
- if (!migration) {
80
- throw new Error(`No migration for ${repo} to version ${nextVersion}`);
81
- }
82
- const result = migration(db);
83
- if (result) {
84
- // guess what? IDB still. fucking. sucks!
85
- // if we want to do something except creating/removing
86
- // databases, we should do this outside of migration
87
- postUpgrade.push(result);
88
- }
89
- fromVersion = nextVersion;
90
- }
91
- didUpgrade.add(repo);
92
- db.createObjectStore(`${REPO_VERSION_PREFIX}${repo}:${targetVer}`);
93
- };
94
- for (const key of db.objectStoreNames) {
95
- if (!key.startsWith(REPO_VERSION_PREFIX))
96
- continue;
97
- const [, repo, version] = key.split(':');
98
- const currentVer = Number(version);
99
- db.deleteObjectStore(key);
100
- doUpgrade(repo, currentVer);
101
- didUpgrade.add(repo);
102
- }
103
- for (const repo of this._migrations.keys()) {
104
- if (didUpgrade.has(repo))
105
- continue;
106
- doUpgrade(repo, 0);
107
- }
108
- };
109
- });
110
- }
111
- async _save() {
112
- if (this._pendingWritesOses.size === 0)
113
- return;
114
- const writes = this._pendingWrites;
115
- const oses = this._pendingWritesOses;
116
- this._pendingWrites = [];
117
- this._pendingWritesOses = new Set();
118
- const tx = this.db.transaction(oses, 'readwrite');
119
- const osMap = new Map();
120
- for (const table of oses) {
121
- osMap.set(table, tx.objectStore(table));
122
- }
123
- for (const [table, obj] of writes) {
124
- const os = osMap.get(table);
125
- if (obj === null) {
126
- os.delete(table);
127
- }
128
- else {
129
- os.put(obj);
130
- }
131
- }
132
- await (0, utils_js_1.txToPromise)(tx);
133
- }
134
- _destroy() {
135
- this.db.close();
136
- }
137
- }
138
- exports.IdbStorageDriver = IdbStorageDriver;
139
- //# sourceMappingURL=driver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/idb/driver.ts"],"names":[],"mappings":";;;AAAA,uCAAoE;AAEpE,yCAAwC;AAKxC,MAAM,mBAAmB,GAAG,YAAY,CAAA;AAExC,MAAa,gBAAiB,SAAQ,wBAAiB;IAG9B;IAFrB,EAAE,CAAc;IAEhB,YAAqB,OAAe;QAChC,KAAK,EAAE,CAAA;QADU,YAAO,GAAP,OAAO,CAAQ;QAGhC,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,yBAAkB,CAAC,4BAA4B,CAAC,CAAA;QAC9D,CAAC;IACL,CAAC;IAEO,cAAc,GAAwB,EAAE,CAAA;IACxC,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;IACtC,WAAW,GAAgD,IAAI,GAAG,EAAE,CAAA;IACpE,WAAW,GAAwB,IAAI,GAAG,EAAE,CAAA;IAEpD,iBAAiB,CAAC,IAAY,EAAE,OAAe,EAAE,SAA4B;QACzE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;YACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnC,CAAC;QAED,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,YAAY,OAAO,wBAAwB,CAAC,CAAA;QACrF,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/C,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,EAAU,EAAE,GAAY;QAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,wEAAwE;YACxE,gEAAgE;YAChE,0CAA0C;YAC1C,EAAE;YACF,4EAA4E;YAC5E,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YAEpD,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAErC,MAAM,WAAW,GAA4B,EAAE,CAAA;YAE/C,GAAG,CAAC,SAAS,GAAG,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC;oBACD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;wBAC3B,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;oBACxB,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACvB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,MAAM,CAAC,CAAC,CAAC,CAAA;gBACb,CAAC;YACL,CAAC,CAAA;YACD,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE;gBACvB,qEAAqE;gBACrE,mEAAmE;gBACnE,0DAA0D;gBAC1D,4EAA4E;gBAC5E,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;gBAErB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;gBAEpC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAE,EAAE;oBACpD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBAC7C,IAAI,CAAC,UAAU;wBAAE,OAAM;oBAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;oBAE7C,OAAO,WAAW,GAAG,SAAS,EAAE,CAAC;wBAC7B,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,CAAA;wBACnC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;wBAE7C,IAAI,CAAC,SAAS,EAAE,CAAC;4BACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,eAAe,WAAW,EAAE,CAAC,CAAA;wBACzE,CAAC;wBAED,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;wBAE5B,IAAI,MAAM,EAAE,CAAC;4BACT,yCAAyC;4BACzC,sDAAsD;4BACtD,oDAAoD;4BACpD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBAC5B,CAAC;wBAED,WAAW,GAAG,WAAW,CAAA;oBAC7B,CAAC;oBAED,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACpB,EAAE,CAAC,iBAAiB,CAAC,GAAG,mBAAmB,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAA;gBACtE,CAAC,CAAA;gBAED,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC;oBACpC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;wBAAE,SAAQ;oBAClD,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAExC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;oBAClC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;oBACzB,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;oBAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACxB,CAAC;gBAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;oBACzC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;wBAAE,SAAQ;oBAElC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtB,CAAC;YACL,CAAC,CAAA;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC;YAAE,OAAM;QAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAA;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAA;QACpC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;QAEnC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAEjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAA;QAE/C,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;YAE5B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACf,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACJ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACf,CAAC;QACL,CAAC;QAED,MAAM,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAA;IACzB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC;CACJ;AA/JD,4CA+JC","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"]}
package/cjs/idb/index.js DELETED
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdbStorage = exports.IdbStorageDriver = void 0;
4
- const driver_js_1 = require("./driver.js");
5
- const auth_keys_js_1 = require("./repository/auth-keys.js");
6
- const kv_js_1 = require("./repository/kv.js");
7
- const peers_js_1 = require("./repository/peers.js");
8
- const ref_messages_js_1 = require("./repository/ref-messages.js");
9
- var driver_js_2 = require("./driver.js");
10
- Object.defineProperty(exports, "IdbStorageDriver", { enumerable: true, get: function () { return driver_js_2.IdbStorageDriver; } });
11
- /**
12
- * mtcute storage that uses IndexedDB as a backend.
13
- *
14
- * This storage is the default one for browsers, and is generally
15
- * recommended over local storage based one.
16
- */
17
- class IdbStorage {
18
- dbName;
19
- driver;
20
- kv;
21
- authKeys;
22
- peers;
23
- refMessages;
24
- constructor(dbName) {
25
- this.dbName = dbName;
26
- this.driver = new driver_js_1.IdbStorageDriver(this.dbName);
27
- this.kv = new kv_js_1.IdbKvRepository(this.driver);
28
- this.authKeys = new auth_keys_js_1.IdbAuthKeysRepository(this.driver);
29
- this.peers = new peers_js_1.IdbPeersRepository(this.driver);
30
- this.refMessages = new ref_messages_js_1.IdbRefMsgRepository(this.driver);
31
- }
32
- }
33
- exports.IdbStorage = IdbStorage;
34
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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,CAAA;IACN,EAAE,CAAA;IACF,QAAQ,CAAA;IACR,KAAK,CAAA;IACL,WAAW,CAAA;IAEpB,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 { 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\n readonly kv\n readonly authKeys\n readonly peers\n readonly refMessages\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,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdbAuthKeysRepository = void 0;
4
- const utils_js_1 = require("../utils.js");
5
- const TABLE_AUTH_KEYS = 'authKeys';
6
- const TABLE_TEMP_AUTH_KEYS = 'tempAuthKeys';
7
- class IdbAuthKeysRepository {
8
- _driver;
9
- constructor(_driver) {
10
- this._driver = _driver;
11
- _driver.registerMigration(TABLE_AUTH_KEYS, 1, (db) => {
12
- db.createObjectStore(TABLE_AUTH_KEYS, { keyPath: 'dc' });
13
- db.createObjectStore(TABLE_TEMP_AUTH_KEYS, { keyPath: ['dc', 'idx'] });
14
- });
15
- }
16
- os(mode) {
17
- return this._driver.db.transaction(TABLE_AUTH_KEYS, mode).objectStore(TABLE_AUTH_KEYS);
18
- }
19
- async set(dc, key) {
20
- const os = this.os('readwrite');
21
- if (key === null) {
22
- return (0, utils_js_1.reqToPromise)(os.delete(dc));
23
- }
24
- await (0, utils_js_1.reqToPromise)(os.put({ dc, key }));
25
- }
26
- async get(dc) {
27
- const os = this.os();
28
- const it = await (0, utils_js_1.reqToPromise)(os.get(dc));
29
- if (it === undefined)
30
- return null;
31
- return it.key;
32
- }
33
- osTemp(mode) {
34
- return this._driver.db.transaction(TABLE_TEMP_AUTH_KEYS, mode).objectStore(TABLE_TEMP_AUTH_KEYS);
35
- }
36
- async setTemp(dc, idx, key, expires) {
37
- const os = this.osTemp('readwrite');
38
- if (!key) {
39
- return (0, utils_js_1.reqToPromise)(os.delete([dc, idx]));
40
- }
41
- await (0, utils_js_1.reqToPromise)(os.put({ dc, idx, key, expiresAt: expires }));
42
- }
43
- async getTemp(dc, idx, now) {
44
- const os = this.osTemp();
45
- const row = await (0, utils_js_1.reqToPromise)(os.get([dc, idx]));
46
- if (row === undefined || row.expiresAt < now)
47
- return null;
48
- return row.key;
49
- }
50
- async deleteByDc(dc) {
51
- const tx = this._driver.db.transaction([TABLE_AUTH_KEYS, TABLE_TEMP_AUTH_KEYS], 'readwrite');
52
- tx.objectStore(TABLE_AUTH_KEYS).delete(dc);
53
- // IndexedDB sucks
54
- const tempOs = tx.objectStore(TABLE_TEMP_AUTH_KEYS);
55
- const keys = await (0, utils_js_1.reqToPromise)(tempOs.getAllKeys());
56
- for (const key of keys) {
57
- if (key[0] === dc) {
58
- tempOs.delete(key);
59
- }
60
- }
61
- await (0, utils_js_1.txToPromise)(tx);
62
- }
63
- deleteAll() {
64
- const tx = this._driver.db.transaction([TABLE_AUTH_KEYS, TABLE_TEMP_AUTH_KEYS], 'readwrite');
65
- tx.objectStore(TABLE_AUTH_KEYS).clear();
66
- tx.objectStore(TABLE_TEMP_AUTH_KEYS).clear();
67
- return (0, utils_js_1.txToPromise)(tx);
68
- }
69
- }
70
- exports.IdbAuthKeysRepository = IdbAuthKeysRepository;
71
- //# sourceMappingURL=auth-keys.js.map
@@ -1 +0,0 @@
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,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdbKvRepository = void 0;
4
- const utils_js_1 = require("../utils.js");
5
- const KV_TABLE = 'kv';
6
- class IdbKvRepository {
7
- _driver;
8
- constructor(_driver) {
9
- this._driver = _driver;
10
- _driver.registerMigration(KV_TABLE, 1, (db) => {
11
- db.createObjectStore(KV_TABLE, { keyPath: 'key' });
12
- });
13
- }
14
- set(key, value) {
15
- this._driver.writeLater(KV_TABLE, { key, value });
16
- }
17
- os(mode) {
18
- return this._driver.db.transaction(KV_TABLE, mode).objectStore(KV_TABLE);
19
- }
20
- async get(key) {
21
- const os = this.os();
22
- const res = await (0, utils_js_1.reqToPromise)(os.get(key));
23
- if (res === undefined)
24
- return null;
25
- return res.value;
26
- }
27
- async delete(key) {
28
- await (0, utils_js_1.reqToPromise)(this.os('readwrite').delete(key));
29
- }
30
- async deleteAll() {
31
- await (0, utils_js_1.reqToPromise)(this.os('readwrite').clear());
32
- }
33
- }
34
- exports.IdbKvRepository = IdbKvRepository;
35
- //# sourceMappingURL=kv.js.map
@@ -1 +0,0 @@
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,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdbPeersRepository = void 0;
4
- const utils_js_1 = require("../utils.js");
5
- const TABLE = 'peers';
6
- class IdbPeersRepository {
7
- _driver;
8
- constructor(_driver) {
9
- this._driver = _driver;
10
- _driver.registerMigration(TABLE, 1, (db) => {
11
- const os = db.createObjectStore(TABLE, { keyPath: 'id' });
12
- os.createIndex('by_username', 'usernames', { unique: true, multiEntry: true });
13
- os.createIndex('by_phone', 'phone', { unique: true });
14
- });
15
- }
16
- store(peer) {
17
- this._driver.writeLater(TABLE, peer);
18
- }
19
- os(mode) {
20
- return this._driver.db.transaction(TABLE, mode).objectStore(TABLE);
21
- }
22
- async getById(id) {
23
- const it = await (0, utils_js_1.reqToPromise)(this.os().get(id));
24
- return it ?? null;
25
- }
26
- async getByUsername(username) {
27
- const it = await (0, utils_js_1.reqToPromise)(this.os().index('by_username').get(username));
28
- return it ?? null;
29
- }
30
- async getByPhone(phone) {
31
- const it = await (0, utils_js_1.reqToPromise)(this.os().index('by_phone').get(phone));
32
- return it ?? null;
33
- }
34
- deleteAll() {
35
- return (0, utils_js_1.reqToPromise)(this.os('readwrite').clear());
36
- }
37
- }
38
- exports.IdbPeersRepository = IdbPeersRepository;
39
- //# sourceMappingURL=peers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../../src/idb/repository/peers.ts"],"names":[],"mappings":";;;AAGA,0CAA0C;AAE1C,MAAM,KAAK,GAAG,OAAO,CAAA;AAErB,MAAa,kBAAkB;IACN;IAArB,YAAqB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAC1C,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACzD,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9E,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,IAA+B;QACjC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAEO,EAAE,CAAC,IAAyB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAA0C,CAAC,CAAA;QAEzF,OAAO,EAAE,IAAI,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAChC,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAY,EACzB,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,QAAQ,CAA0C,CACxF,CAAA;QAED,OAAO,EAAE,IAAI,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa;QAC1B,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAA0C,CAAC,CAAA;QAE9G,OAAO,EAAE,IAAI,IAAI,CAAA;IACrB,CAAC;IAED,SAAS;QACL,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACrD,CAAC;CACJ;AAxCD,gDAwCC","sourcesContent":["import { IPeersRepository } from '@mtcute/core'\n\nimport { IdbStorageDriver } from '../driver.js'\nimport { reqToPromise } from '../utils.js'\n\nconst TABLE = 'peers'\n\nexport class IdbPeersRepository implements IPeersRepository {\n constructor(readonly _driver: IdbStorageDriver) {\n _driver.registerMigration(TABLE, 1, (db) => {\n const os = db.createObjectStore(TABLE, { keyPath: 'id' })\n os.createIndex('by_username', 'usernames', { unique: true, multiEntry: true })\n os.createIndex('by_phone', 'phone', { unique: true })\n })\n }\n\n store(peer: IPeersRepository.PeerInfo): void {\n this._driver.writeLater(TABLE, peer)\n }\n\n private os(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(TABLE, mode).objectStore(TABLE)\n }\n\n async getById(id: number): Promise<IPeersRepository.PeerInfo | null> {\n const it = await reqToPromise(this.os().get(id) as IDBRequest<IPeersRepository.PeerInfo>)\n\n return it ?? null\n }\n\n async getByUsername(username: string): Promise<IPeersRepository.PeerInfo | null> {\n const it = await reqToPromise(\n this.os().index('by_username').get(username) as IDBRequest<IPeersRepository.PeerInfo>,\n )\n\n return it ?? null\n }\n\n async getByPhone(phone: string): Promise<IPeersRepository.PeerInfo | null> {\n const it = await reqToPromise(this.os().index('by_phone').get(phone) as IDBRequest<IPeersRepository.PeerInfo>)\n\n return it ?? null\n }\n\n deleteAll(): Promise<void> {\n return reqToPromise(this.os('readwrite').clear())\n }\n}\n"]}
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdbRefMsgRepository = void 0;
4
- const utils_js_1 = require("../utils.js");
5
- const TABLE = 'messageRefs';
6
- class IdbRefMsgRepository {
7
- _driver;
8
- constructor(_driver) {
9
- this._driver = _driver;
10
- _driver.registerMigration(TABLE, 1, (db) => {
11
- const os = db.createObjectStore(TABLE, { keyPath: ['peerId', 'chatId', 'msgId'] });
12
- os.createIndex('by_peer', 'peerId');
13
- os.createIndex('by_msg', ['chatId', 'msgId']);
14
- });
15
- }
16
- os(mode) {
17
- return this._driver.db.transaction(TABLE, mode).objectStore(TABLE);
18
- }
19
- async store(peerId, chatId, msgId) {
20
- const os = this.os('readwrite');
21
- await (0, utils_js_1.reqToPromise)(os.put({ peerId, chatId, msgId }));
22
- }
23
- async getByPeer(peerId) {
24
- const os = this.os();
25
- const index = os.index('by_peer');
26
- const it = await (0, utils_js_1.reqToPromise)(index.get(peerId));
27
- if (!it)
28
- return null;
29
- return [it.chatId, it.msgId];
30
- }
31
- async delete(chatId, msgIds) {
32
- const tx = this._driver.db.transaction(TABLE, 'readwrite');
33
- const os = tx.objectStore(TABLE);
34
- const index = os.index('by_msg');
35
- for (const msgId of msgIds) {
36
- const keys = await (0, utils_js_1.reqToPromise)(index.getAllKeys([chatId, msgId]));
37
- // there are never that many keys, so we can avoid using cursor
38
- for (const key of keys) {
39
- os.delete(key);
40
- }
41
- }
42
- return (0, utils_js_1.txToPromise)(tx);
43
- }
44
- async deleteByPeer(peerId) {
45
- const tx = this._driver.db.transaction(TABLE, 'readwrite');
46
- const os = tx.objectStore(TABLE);
47
- const index = os.index('by_peer');
48
- const req = index.openCursor(peerId);
49
- let cursor = await (0, utils_js_1.reqToPromise)(req);
50
- while (cursor) {
51
- cursor.delete();
52
- cursor.continue();
53
- cursor = await (0, utils_js_1.reqToPromise)(req);
54
- }
55
- return (0, utils_js_1.txToPromise)(tx);
56
- }
57
- async deleteAll() {
58
- await (0, utils_js_1.reqToPromise)(this.os('readwrite').clear());
59
- }
60
- }
61
- exports.IdbRefMsgRepository = IdbRefMsgRepository;
62
- //# sourceMappingURL=ref-messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref-messages.js","sourceRoot":"","sources":["../../../../src/idb/repository/ref-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { IReferenceMessagesRepository } from '@mtcute/core'\n\nimport { IdbStorageDriver } from '../driver.js'\nimport { reqToPromise, txToPromise } from '../utils.js'\n\nconst TABLE = 'messageRefs'\n\ninterface MessageRefDto {\n peerId: number\n chatId: number\n msgId: number\n}\n\nexport class IdbRefMsgRepository implements IReferenceMessagesRepository {\n constructor(readonly _driver: IdbStorageDriver) {\n _driver.registerMigration(TABLE, 1, (db) => {\n const os = db.createObjectStore(TABLE, { keyPath: ['peerId', 'chatId', 'msgId'] })\n os.createIndex('by_peer', 'peerId')\n os.createIndex('by_msg', ['chatId', 'msgId'])\n })\n }\n\n private os(mode?: IDBTransactionMode): IDBObjectStore {\n return this._driver.db.transaction(TABLE, mode).objectStore(TABLE)\n }\n\n async store(peerId: number, chatId: number, msgId: number): Promise<void> {\n const os = this.os('readwrite')\n\n await reqToPromise(os.put({ peerId, chatId, msgId } satisfies MessageRefDto))\n }\n\n async getByPeer(peerId: number): Promise<[number, number] | null> {\n const os = this.os()\n const index = os.index('by_peer')\n\n const it = await reqToPromise<MessageRefDto>(index.get(peerId) as IDBRequest<MessageRefDto>)\n if (!it) return null\n\n return [it.chatId, it.msgId]\n }\n\n async delete(chatId: number, msgIds: number[]): Promise<void> {\n const tx = this._driver.db.transaction(TABLE, 'readwrite')\n const os = tx.objectStore(TABLE)\n const index = os.index('by_msg')\n\n for (const msgId of msgIds) {\n const keys = await reqToPromise(index.getAllKeys([chatId, msgId]))\n\n // there are never that many keys, so we can avoid using cursor\n for (const key of keys) {\n os.delete(key)\n }\n }\n\n return txToPromise(tx)\n }\n\n async deleteByPeer(peerId: number): Promise<void> {\n const tx = this._driver.db.transaction(TABLE, 'readwrite')\n const os = tx.objectStore(TABLE)\n const index = os.index('by_peer')\n\n const req = index.openCursor(peerId)\n\n let cursor = await reqToPromise(req)\n\n while (cursor) {\n cursor.delete()\n cursor.continue()\n cursor = await reqToPromise(req)\n }\n\n return txToPromise(tx)\n }\n\n async deleteAll(): Promise<void> {\n await reqToPromise(this.os('readwrite').clear())\n }\n}\n"]}
package/cjs/idb/utils.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reqToPromise = exports.txToPromise = void 0;
4
- function txToPromise(tx) {
5
- return new Promise((resolve, reject) => {
6
- tx.oncomplete = () => resolve();
7
- tx.onerror = () => reject(tx.error);
8
- });
9
- }
10
- exports.txToPromise = txToPromise;
11
- function reqToPromise(req) {
12
- return new Promise((resolve, reject) => {
13
- req.onsuccess = () => resolve(req.result);
14
- req.onerror = () => reject(req.error);
15
- });
16
- }
17
- exports.reqToPromise = reqToPromise;
18
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/idb/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,EAAkB;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,EAAE,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;QAC/B,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACN,CAAC;AALD,kCAKC;AAED,SAAgB,YAAY,CAAI,GAAkB;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACzC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACN,CAAC;AALD,oCAKC","sourcesContent":["export function txToPromise(tx: IDBTransaction): Promise<void> {\n return new Promise((resolve, reject) => {\n tx.oncomplete = () => resolve()\n tx.onerror = () => reject(tx.error)\n })\n}\n\nexport function reqToPromise<T>(req: IDBRequest<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n req.onsuccess = () => resolve(req.result)\n req.onerror = () => reject(req.error)\n })\n}\n"]}
package/cjs/index.js DELETED
@@ -1,30 +0,0 @@
1
- "use strict";
2
- if (typeof globalThis !== 'undefined' && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
3
- globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true
4
- console.warn("[@mtcute/web] CommonJS support is deprecated and will be removed soon. Please consider switching to ESM, it's "+(new Date()).getFullYear()+" already.")
5
- console.warn("[@mtcute/web] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c")
6
- }
7
- "use strict";
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- __exportStar(require("./client.js"), exports);
24
- __exportStar(require("./crypto.js"), exports);
25
- __exportStar(require("./idb/index.js"), exports);
26
- __exportStar(require("./platform.js"), exports);
27
- __exportStar(require("./websocket.js"), exports);
28
- __exportStar(require("./worker.js"), exports);
29
- __exportStar(require("@mtcute/core"), exports);
30
- //# sourceMappingURL=index.js.map
package/cjs/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,8CAA2B;AAC3B,iDAA8B;AAC9B,gDAA6B;AAC7B,iDAA8B;AAC9B,8CAA2B;AAC3B,+CAA4B","sourcesContent":["export * from './client.js'\nexport * from './crypto.js'\nexport * from './idb/index.js'\nexport * from './platform.js'\nexport * from './websocket.js'\nexport * from './worker.js'\nexport * from '@mtcute/core'\n"]}
package/cjs/methods.js DELETED
@@ -1,24 +0,0 @@
1
- "use strict";
2
- if (typeof globalThis !== 'undefined' && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
3
- globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true
4
- console.warn("[@mtcute/web] CommonJS support is deprecated and will be removed soon. Please consider switching to ESM, it's "+(new Date()).getFullYear()+" already.")
5
- console.warn("[@mtcute/web] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c")
6
- }
7
- "use strict";
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- __exportStar(require("@mtcute/core/methods.js"), exports);
24
- //# sourceMappingURL=methods.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/methods.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC","sourcesContent":["export * from '@mtcute/core/methods.js'\n"]}
package/cjs/package.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
package/cjs/platform.js DELETED
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebPlatform = void 0;
4
- const base64_js_1 = require("./common-internals-web/base64.js");
5
- const hex_js_1 = require("./common-internals-web/hex.js");
6
- const logging_js_1 = require("./common-internals-web/logging.js");
7
- const utf8_js_1 = require("./common-internals-web/utf8.js");
8
- const exit_hook_js_1 = require("./exit-hook.js");
9
- class WebPlatform {
10
- getDeviceModel() {
11
- if (typeof navigator === 'undefined')
12
- return 'Browser';
13
- return navigator.userAgent;
14
- }
15
- getDefaultLogLevel() {
16
- if (typeof localStorage !== 'undefined') {
17
- const localLogLevel = parseInt(localStorage.MTCUTE_LOG_LEVEL);
18
- if (!isNaN(localLogLevel)) {
19
- return localLogLevel;
20
- }
21
- }
22
- return null;
23
- }
24
- onNetworkChanged(fn) {
25
- if (!('onLine' in navigator))
26
- return () => { };
27
- const onlineHandler = () => fn(navigator.onLine);
28
- window.addEventListener('online', onlineHandler);
29
- window.addEventListener('offline', onlineHandler);
30
- return () => {
31
- window.removeEventListener('online', onlineHandler);
32
- window.removeEventListener('offline', onlineHandler);
33
- };
34
- }
35
- isOnline() {
36
- return navigator.onLine;
37
- }
38
- }
39
- exports.WebPlatform = WebPlatform;
40
- WebPlatform.prototype.log = logging_js_1.defaultLoggingHandler;
41
- WebPlatform.prototype.beforeExit = exit_hook_js_1.beforeExit;
42
- WebPlatform.prototype.utf8ByteLength = utf8_js_1.utf8ByteLength;
43
- WebPlatform.prototype.utf8Encode = utf8_js_1.utf8Encode;
44
- WebPlatform.prototype.utf8Decode = utf8_js_1.utf8Decode;
45
- WebPlatform.prototype.hexEncode = hex_js_1.hexEncode;
46
- WebPlatform.prototype.hexDecode = hex_js_1.hexDecode;
47
- WebPlatform.prototype.base64Encode = base64_js_1.base64Encode;
48
- WebPlatform.prototype.base64Decode = base64_js_1.base64Decode;
49
- //# sourceMappingURL=platform.js.map