@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.
Files changed (74) hide show
  1. package/README.md +4 -4
  2. package/cjs/client.d.ts +3 -2
  3. package/cjs/client.js +5 -3
  4. package/cjs/client.js.map +1 -1
  5. package/cjs/common-internals-web/base64.js +21 -22
  6. package/cjs/common-internals-web/base64.js.map +1 -1
  7. package/cjs/common-internals-web/hex.js +13 -16
  8. package/cjs/common-internals-web/hex.js.map +1 -1
  9. package/cjs/common-internals-web/utf8.js +7 -8
  10. package/cjs/common-internals-web/utf8.js.map +1 -1
  11. package/cjs/crypto.d.ts +3 -2
  12. package/cjs/crypto.js +4 -4
  13. package/cjs/crypto.js.map +1 -1
  14. package/cjs/exit-hook.js +1 -2
  15. package/cjs/exit-hook.js.map +1 -1
  16. package/cjs/idb/driver.js.map +1 -1
  17. package/cjs/idb/index.d.ts +1 -1
  18. package/cjs/idb/index.js.map +1 -1
  19. package/cjs/idb/repository/auth-keys.d.ts +2 -2
  20. package/cjs/idb/repository/auth-keys.js.map +1 -1
  21. package/cjs/idb/repository/kv.d.ts +2 -2
  22. package/cjs/idb/repository/kv.js.map +1 -1
  23. package/cjs/idb/repository/peers.d.ts +2 -2
  24. package/cjs/idb/repository/peers.js.map +1 -1
  25. package/cjs/idb/repository/ref-messages.d.ts +2 -2
  26. package/cjs/idb/repository/ref-messages.js.map +1 -1
  27. package/cjs/idb/utils.js +2 -3
  28. package/cjs/idb/utils.js.map +1 -1
  29. package/cjs/platform.d.ts +1 -1
  30. package/cjs/platform.js +2 -2
  31. package/cjs/platform.js.map +1 -1
  32. package/cjs/wasm.js +5 -6
  33. package/cjs/wasm.js.map +1 -1
  34. package/cjs/websocket.d.ts +6 -5
  35. package/cjs/websocket.js +11 -11
  36. package/cjs/websocket.js.map +1 -1
  37. package/cjs/worker.d.ts +2 -1
  38. package/cjs/worker.js +4 -5
  39. package/cjs/worker.js.map +1 -1
  40. package/esm/client.d.ts +3 -2
  41. package/esm/client.js +5 -3
  42. package/esm/client.js.map +1 -1
  43. package/esm/common-internals-web/base64.js +19 -19
  44. package/esm/common-internals-web/base64.js.map +1 -1
  45. package/esm/common-internals-web/hex.js +11 -13
  46. package/esm/common-internals-web/hex.js.map +1 -1
  47. package/esm/common-internals-web/utf8.js +4 -4
  48. package/esm/common-internals-web/utf8.js.map +1 -1
  49. package/esm/crypto.d.ts +3 -2
  50. package/esm/crypto.js +4 -4
  51. package/esm/crypto.js.map +1 -1
  52. package/esm/idb/driver.js.map +1 -1
  53. package/esm/idb/index.d.ts +1 -1
  54. package/esm/idb/index.js.map +1 -1
  55. package/esm/idb/repository/auth-keys.d.ts +2 -2
  56. package/esm/idb/repository/auth-keys.js.map +1 -1
  57. package/esm/idb/repository/kv.d.ts +2 -2
  58. package/esm/idb/repository/kv.js.map +1 -1
  59. package/esm/idb/repository/peers.d.ts +2 -2
  60. package/esm/idb/repository/peers.js.map +1 -1
  61. package/esm/idb/repository/ref-messages.d.ts +2 -2
  62. package/esm/idb/repository/ref-messages.js.map +1 -1
  63. package/esm/platform.d.ts +1 -1
  64. package/esm/platform.js +2 -2
  65. package/esm/platform.js.map +1 -1
  66. package/esm/wasm.js +4 -4
  67. package/esm/wasm.js.map +1 -1
  68. package/esm/websocket.d.ts +6 -5
  69. package/esm/websocket.js +11 -11
  70. package/esm/websocket.js.map +1 -1
  71. package/esm/worker.d.ts +2 -1
  72. package/esm/worker.js +4 -5
  73. package/esm/worker.js.map +1 -1
  74. package/package.json +5 -5
package/esm/worker.js CHANGED
@@ -48,7 +48,7 @@ export class TelegramWorker extends TelegramWorkerBase {
48
48
  timeout = setTimeout(onTimeout, 60000);
49
49
  return;
50
50
  }
51
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
51
+ // eslint-disable-next-line ts/no-unsafe-argument
52
52
  handler(message.data, respond);
53
53
  });
54
54
  port.start();
@@ -57,7 +57,7 @@ export class TelegramWorker extends TelegramWorkerBase {
57
57
  }
58
58
  if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {
59
59
  const respond = self.postMessage.bind(self);
60
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
60
+ // eslint-disable-next-line ts/no-unsafe-argument
61
61
  self.addEventListener('message', (message) => handler(message.data, respond));
62
62
  return respond;
63
63
  }
@@ -76,7 +76,7 @@ export class TelegramWorkerPort extends TelegramWorkerPortBase {
76
76
  if (worker instanceof Worker) {
77
77
  const send = worker.postMessage.bind(worker);
78
78
  const messageHandler = (ev) => {
79
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
79
+ // eslint-disable-next-line ts/no-unsafe-argument
80
80
  handler(ev.data);
81
81
  };
82
82
  worker.addEventListener('message', messageHandler);
@@ -101,12 +101,11 @@ export class TelegramWorkerPort extends TelegramWorkerPortBase {
101
101
  location.reload();
102
102
  return;
103
103
  }
104
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
104
+ // eslint-disable-next-line ts/no-unsafe-argument
105
105
  handler(ev.data);
106
106
  };
107
107
  worker.port.addEventListener('message', messageHandler);
108
108
  worker.port.start();
109
- // eslint-disable-next-line prefer-const
110
109
  let cancelBeforeExit;
111
110
  const close = () => {
112
111
  clearInterval(pingInterval);
package/esm/worker.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { setPlatform } from '@mtcute/core/platform.js'\nimport {\n ClientMessageHandler,\n RespondFn,\n SendFn,\n SomeWorker,\n TelegramWorker as TelegramWorkerBase,\n TelegramWorkerOptions,\n TelegramWorkerPort as TelegramWorkerPortBase,\n TelegramWorkerPortOptions,\n WorkerCustomMethods,\n WorkerMessageHandler,\n} from '@mtcute/core/worker.js'\n\nimport { WebPlatform } from './platform.js'\n\nexport type { TelegramWorkerOptions, TelegramWorkerPortOptions, WorkerCustomMethods }\n\nlet _registered = false\n\nexport class TelegramWorker<T extends WorkerCustomMethods> extends TelegramWorkerBase<T> {\n registerWorker(handler: WorkerMessageHandler): RespondFn {\n if (_registered) {\n throw new Error('TelegramWorker must be created only once')\n }\n\n _registered = true\n\n if (typeof SharedWorkerGlobalScope !== 'undefined' && self instanceof SharedWorkerGlobalScope) {\n const connections: MessagePort[] = []\n\n const broadcast = (message: unknown) => {\n for (const port of connections) {\n port.postMessage(message)\n }\n }\n\n self.onconnect = (event: MessageEvent) => {\n const port = event.ports[0]\n connections.push(port)\n\n const respond = port.postMessage.bind(port)\n\n // not very reliable, but better than nothing\n // SharedWorker API doesn't provide a way to detect when the client closes the connection\n // so we just assume that the client is done when it sends a 'close' message\n // and keep a timeout for the case when the client closes without sending a 'close' message\n const onClose = () => {\n port.close()\n const idx = connections.indexOf(port)\n\n if (idx >= 0) {\n connections.splice(connections.indexOf(port), 1)\n }\n }\n\n const onTimeout = () => {\n console.warn('some connection timed out!')\n respond({ __type__: 'timeout' })\n onClose()\n }\n\n // 60s should be a reasonable timeout considering that the client should send a ping every 10s\n // so even if the browser has suspended the timers, we should still get a ping within a minute\n let timeout = setTimeout(onTimeout, 60000)\n\n port.addEventListener('message', (message) => {\n if (message.data.__type__ === 'close') {\n onClose()\n\n return\n }\n\n if (message.data.__type__ === 'ping') {\n clearTimeout(timeout)\n timeout = setTimeout(onTimeout, 60000)\n\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n handler(message.data, respond)\n })\n port.start()\n }\n\n return broadcast\n }\n\n if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\n const respond: RespondFn = self.postMessage.bind(self)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n self.addEventListener('message', (message: MessageEvent) => handler(message.data, respond))\n\n return respond\n }\n\n throw new Error('TelegramWorker must be created from a worker')\n }\n}\n\nconst platform = new WebPlatform()\n\nexport class TelegramWorkerPort<T extends WorkerCustomMethods> extends TelegramWorkerPortBase<T> {\n constructor(readonly options: TelegramWorkerPortOptions) {\n setPlatform(platform)\n super(options)\n }\n\n connectToWorker(worker: SomeWorker, handler: ClientMessageHandler): [SendFn, () => void] {\n if (worker instanceof Worker) {\n const send: SendFn = worker.postMessage.bind(worker)\n\n const messageHandler = (ev: MessageEvent) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n handler(ev.data)\n }\n\n worker.addEventListener('message', messageHandler)\n\n return [\n send,\n () => {\n worker.removeEventListener('message', messageHandler)\n },\n ]\n }\n\n if (worker instanceof SharedWorker) {\n const send: SendFn = worker.port.postMessage.bind(worker.port)\n\n const pingInterval = setInterval(() => {\n worker.port.postMessage({ __type__: 'ping' })\n }, 10000)\n\n const messageHandler = (ev: MessageEvent) => {\n if (ev.data.__type__ === 'timeout') {\n // we got disconnected from the worker due to timeout\n // if the page is still alive (which is unlikely), we should reconnect\n // however it's not really possible with SharedWorker API without re-creating the worker\n // so we just reload the page for now\n location.reload()\n\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n handler(ev.data)\n }\n\n worker.port.addEventListener('message', messageHandler)\n worker.port.start()\n\n // eslint-disable-next-line prefer-const\n let cancelBeforeExit: () => void\n\n const close = () => {\n clearInterval(pingInterval)\n worker.port.postMessage({ __type__: 'close' })\n worker.port.removeEventListener('message', messageHandler)\n worker.port.close()\n cancelBeforeExit()\n }\n\n cancelBeforeExit = platform.beforeExit(close)\n\n return [send, close]\n }\n\n throw new Error('Only workers and shared workers are supported')\n }\n}\n"]}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { setPlatform } from '@mtcute/core/platform.js'\nimport type {\n ClientMessageHandler,\n RespondFn,\n SendFn,\n SomeWorker,\n TelegramWorkerOptions,\n TelegramWorkerPortOptions,\n WorkerCustomMethods,\n WorkerMessageHandler,\n} from '@mtcute/core/worker.js'\nimport {\n TelegramWorker as TelegramWorkerBase,\n TelegramWorkerPort as TelegramWorkerPortBase,\n} from '@mtcute/core/worker.js'\n\nimport { WebPlatform } from './platform.js'\n\nexport type { TelegramWorkerOptions, TelegramWorkerPortOptions, WorkerCustomMethods }\n\nlet _registered = false\n\nexport class TelegramWorker<T extends WorkerCustomMethods> extends TelegramWorkerBase<T> {\n registerWorker(handler: WorkerMessageHandler): RespondFn {\n if (_registered) {\n throw new Error('TelegramWorker must be created only once')\n }\n\n _registered = true\n\n if (typeof SharedWorkerGlobalScope !== 'undefined' && self instanceof SharedWorkerGlobalScope) {\n const connections: MessagePort[] = []\n\n const broadcast = (message: unknown) => {\n for (const port of connections) {\n port.postMessage(message)\n }\n }\n\n self.onconnect = (event: MessageEvent) => {\n const port = event.ports[0]\n connections.push(port)\n\n const respond = port.postMessage.bind(port)\n\n // not very reliable, but better than nothing\n // SharedWorker API doesn't provide a way to detect when the client closes the connection\n // so we just assume that the client is done when it sends a 'close' message\n // and keep a timeout for the case when the client closes without sending a 'close' message\n const onClose = () => {\n port.close()\n const idx = connections.indexOf(port)\n\n if (idx >= 0) {\n connections.splice(connections.indexOf(port), 1)\n }\n }\n\n const onTimeout = () => {\n console.warn('some connection timed out!')\n respond({ __type__: 'timeout' })\n onClose()\n }\n\n // 60s should be a reasonable timeout considering that the client should send a ping every 10s\n // so even if the browser has suspended the timers, we should still get a ping within a minute\n let timeout = setTimeout(onTimeout, 60000)\n\n port.addEventListener('message', (message) => {\n if (message.data.__type__ === 'close') {\n onClose()\n\n return\n }\n\n if (message.data.__type__ === 'ping') {\n clearTimeout(timeout)\n timeout = setTimeout(onTimeout, 60000)\n\n return\n }\n\n // eslint-disable-next-line ts/no-unsafe-argument\n handler(message.data, respond)\n })\n port.start()\n }\n\n return broadcast\n }\n\n if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\n const respond: RespondFn = self.postMessage.bind(self)\n\n // eslint-disable-next-line ts/no-unsafe-argument\n self.addEventListener('message', (message: MessageEvent) => handler(message.data, respond))\n\n return respond\n }\n\n throw new Error('TelegramWorker must be created from a worker')\n }\n}\n\nconst platform = new WebPlatform()\n\nexport class TelegramWorkerPort<T extends WorkerCustomMethods> extends TelegramWorkerPortBase<T> {\n constructor(readonly options: TelegramWorkerPortOptions) {\n setPlatform(platform)\n super(options)\n }\n\n connectToWorker(worker: SomeWorker, handler: ClientMessageHandler): [SendFn, () => void] {\n if (worker instanceof Worker) {\n const send: SendFn = worker.postMessage.bind(worker)\n\n const messageHandler = (ev: MessageEvent) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n handler(ev.data)\n }\n\n worker.addEventListener('message', messageHandler)\n\n return [\n send,\n () => {\n worker.removeEventListener('message', messageHandler)\n },\n ]\n }\n\n if (worker instanceof SharedWorker) {\n const send: SendFn = worker.port.postMessage.bind(worker.port)\n\n const pingInterval = setInterval(() => {\n worker.port.postMessage({ __type__: 'ping' })\n }, 10000)\n\n const messageHandler = (ev: MessageEvent) => {\n if (ev.data.__type__ === 'timeout') {\n // we got disconnected from the worker due to timeout\n // if the page is still alive (which is unlikely), we should reconnect\n // however it's not really possible with SharedWorker API without re-creating the worker\n // so we just reload the page for now\n location.reload()\n\n return\n }\n\n // eslint-disable-next-line ts/no-unsafe-argument\n handler(ev.data)\n }\n\n worker.port.addEventListener('message', messageHandler)\n worker.port.start()\n\n let cancelBeforeExit: () => void\n\n const close = () => {\n clearInterval(pingInterval)\n worker.port.postMessage({ __type__: 'close' })\n worker.port.removeEventListener('message', messageHandler)\n worker.port.close()\n cancelBeforeExit()\n }\n\n cancelBeforeExit = platform.beforeExit(close)\n\n return [send, close]\n }\n\n throw new Error('Only workers and shared workers are supported')\n }\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "@mtcute/web",
3
- "version": "0.16.6",
3
+ "type": "module",
4
+ "version": "0.16.7",
4
5
  "description": "Meta-package for the web platform",
5
6
  "author": "alina sireneva <alina@tei.su>",
6
7
  "license": "MIT",
7
- "type": "module",
8
8
  "sideEffects": false,
9
- "scripts": {},
10
9
  "exports": {
11
10
  ".": {
12
11
  "import": "./esm/index.js",
@@ -21,9 +20,10 @@
21
20
  "require": "./cjs/methods.js"
22
21
  }
23
22
  },
23
+ "scripts": {},
24
24
  "dependencies": {
25
- "@mtcute/core": "^0.16.6",
26
- "@mtcute/wasm": "^0.16.0",
25
+ "@mtcute/core": "^0.16.7",
26
+ "@mtcute/wasm": "^0.16.7",
27
27
  "events": "3.2.0"
28
28
  },
29
29
  "denoJson": {